﻿ function setbillede(i) { 
	if (i==1){
		var o =  document.getElementById ("img1");
		o.src="/media/dam_profil.jpg";
	}
	if (i==2){
		var o =  document.getElementById ("img1");
		o.src="/media/dam_kunder.jpg";
	}
	if (i==3){
		var o =  document.getElementById ("img1");
		o.src="/media/dam_oversattelser.jpg";
	}
	if (i==4){
		var o =  document.getElementById ("img1");
		o.src="/media/dam_andreydelser.jpg";
	}
	if (i==5){
		var o =  document.getElementById ("img1");
		o.src="/media/dam_konsulentydelser.jpg";
	}
	if (i==6){
		var o =  document.getElementById ("img1");
		o.src="/media/dam_kontakt.jpg";
	}
	if (i==7){
		var o =  document.getElementById ("img1");
		o.src="/media/dam_nyheder.jpg";
	}
	if (i==8){
		var o =  document.getElementById ("img1");
		o.src="/media/dam_kurser.jpg";
	}
	if (i==9){
		var o =  document.getElementById ("img1");
		o.src="/media/dam_presse.jpg";
	}
	if (i==10){
		var o =  document.getElementById ("img1");
		o.src="/media/dam_tom1.jpg";
	}
	if (i==11){
		var o =  document.getElementById ("img1");
		o.src="/media/dam_tom2.jpg";
	}
	if (i==12){
		var o =  document.getElementById ("img1");
		o.src="/media/dam_tom3.jpg";
	}
	if (i==13){
		var o =  document.getElementById ("img1");
		o.src="/media/dam_tom4.jpg";
	}
	if (i==14){
		var o =  document.getElementById ("img1");
		o.src="/media/dam_tom5.jpg";
	}


}



// 
// variable, der styrer den grafiske visning af reservationer
//

// side der viser den pågældende reservation
var B_EditPage="/page123.aspx";

//
// definer bredde og farver 
//
// NB: B_SpaceBeforeFirstItem bruges til at justere markeringerne 
//     ifht. klokkeslæt
var B_DefaultWidth=550;
var B_SpaceBeforeFirstItem=7;
var B_DefaultColor="#cccccc";
var B_DefaultTextColor="#000000";
//var B_DefaultStartTime="8:00";
//var B_DefaultEndTime="24:00";
var B_DefaultStartHour=8;
var B_DefaultEndHour=24;

// definer farver for hvert sprog
var B_Colors=new Array();
B_Colors["Fransk"]="#880000";
B_Colors["Tysk"]="#aa3300";
B_Colors["Engelsk"]="#660000";

var B_TextColors=new Array();
B_TextColors["Fransk"]="#ffffff";
B_TextColors["Tysk"]="#000000";
B_TextColors["Engelsk"]="#ffffff";

// Sprog
var B_Languages=[ "Engelsk", "Tysk", "Fransk", "Spansk", "Hollandsk", "Fransk", "Italiensk", "Tjekkisk", "Polsk", "Svensk", "Andet"  ];



// Byer og lokaler
// 
// Bemærk: Angives med semikolon mellem by og lokale
var B_Locations=new Array(
	"Aalborg;Lokale 1",
	"Aalborg;Lokale 2",
	"Aalborg;Lokale 3",
	"Aalborg;Lokale 4",
	"Aalborg;Ude af huset",
	"Århus;Lokale 1",
	"Århus;Lokale 2",
	"Århus;Lokale 3",
	"Århus;Lokale 4",
	"Århus;Ude af huset",
	"Støvring 1",
	"Støvring 2",
	"Støvring 3",
	 "Støvring;Ude af huset",
	"Ude af huset",
"I virksomheden",
	""
);


// 
// Funktioner til grafisk visning af bookninger
//
// Bemærk at alle funktioner starter med B_ for at undgå, at
// navnene på funktionerne kolliderer med andre funktioner
//

// Sæt B_ShowBoxText=true, hvis klokkeslæt skal vises inden i "reservationskasserne"
var B_ShowBoxText=false;

function B_AddLocation(bookingid, name, startdate, starttime, endtime, language, location, city, customer, relatedresource) {
	// call B_AddLocation with the flag isLocation=true (last parameter)
			   if (relatedresource && relatedresource!="") {
			     location=relatedresource;
			   }
	B_AddTeacher(bookingid, name, startdate, starttime, endtime, language, location, city, customer, true);
}

function B_AddTeacher(bookingid, name, startdate, starttime, endtime, language, location, city, customer, isLocation, relatedresource) {
if (relatedresource && relatedresource!="") {
			     location=relatedresource;
			   }
	// convert dates and times to the correct format 
	startdate=B_ConvertDateString(startdate);
	starttime=B_ConvertTimeString(starttime);
	endtime=B_ConvertTimeString(endtime);
	
	//var boxtext=starttime.replace(":00","")+"-"+endtime.replace(":00","");
	var boxtext=starttime+"-"+endtime;
	var hovertext=starttime+"-"+endtime;
	hovertext+="\nSprog: "+language;
	if (isLocation) {
		hovertext+="\nLærer: "+name;
	} else {
		hovertext+="\nSted: "+city;
		if (location) { hovertext+=" - "+location; }
	}
	if (customer) {
		hovertext+="\nKunde: "+customer;
	}

	var ressource=(isLocation?city+" - "+location:name);
	var link="";
	//var link=B_EditPage+"?recordid="+bookingid;
	var color=B_Colors[language];
	if (!color) color=B_DefaultColor;
	var textcolor=B_TextColors[language];
	if (!textcolor) textcolor=B_DefaultTextColor;
	B_AddItem(bookingid, ressource, startdate, starttime, endtime, hovertext, link, color, boxtext, textcolor);
}


// 
// Generelle funktioner
//

var B_Items=new Array();
var B_Groups=new Array();
var B_Scale;
var B_ShowWeek;
var B_WeekFilterControlFrom, B_WeekFilterControlTo;
var B_PageId;
var B_StartDate;
var B_StartDateOffset;
var B_StartTimeOffset;
var B_TimeCodeOffset=B_ConvertDateToMinutes(null, null);
var B_StartHour;
var B_EndHour;
//var B_MaxTimeCode;
var B_DaysToShow;
var B_FirstDayToShow;
var B_MinutesPerDay;
var B_HourIncrement;

var B_AdminLink="/admin/module.aspx?modid=18&refpath=bookinglists/-700000/reservationlist/reservation&id=-700000&reservationid={recordid}&action=edit";


function B_Reset() {
	// reset the most important variables (used when showing
	// several booking tables per page)
	B_Items=new Array();
	B_Groups=new Array();
	B_StartDate=null;
	B_StartDateOffset=null;
	B_DaysToShow=0;
	B_ShowWeek=false;
	B_InitWeekTable(null, null);
}

function B_InitWeekTable(pageid, filterCtrlId) {
	// Denne funktion skal kaldes før B_ShowWeekTable, hvis siden automatisk skal reloades,
	// hvis der er angivet et datointerval i filterkontrollerne, som ikke dækker hele den
	// uge, der skal vises (i modsat fald vil nogle dage kunne se tomme ud, selv om der 
	// er foretaget bookinger)

	if (pageid && filterCtrlId) {
		B_PageId=pageid;
		var str="control" + pageid + "" + filterCtrlId;
		B_WeekFilterControlFrom="filterfrom" + str;
		B_WeekFilterControlTo="filterto" + str;
	} else {
		B_PageId=null;
		B_WeekFilterControlFrom=null;
		B_WeekFilterControlTo=null;
	}
}

function B_ShowWeekTable(startdate, enddate, starthour, endhour, pixelwidth, hourincrement) {
	// Funktionen viser en ugeoversigt (viser den uge, som startdate falder inden for)
	//
	// Bemærk at listesiden selvfølgelig skal returnere samtlige bookinger i den pågældende
	// uge (eller et større interval) for at det virker efter hensigten... 
	
	B_ShowWeek=true;
	B_ShowTable(startdate, enddate, starthour, endhour, pixelwidth, hourincrement);
}

function B_ShowTable(startdate, enddate, starthour, endhour, pixelwidth, hourincrement) {
	// Funktionen skriver selve tabellen med alle bookingerne 
	// (dvs. selve den grafiske visning)

	B_Init(startdate, enddate, starthour, endhour, pixelwidth, hourincrement);
	if (B_Groups.length==0) {
		// der er ingen reservationer i det pågældende interval
		return;
	}
	
	var html="", groupname, days, items, item, style, mstyle, width, hw;
	var i, k, j, h;
	
	html+="<"+"table border=0 cellspacing=0 cellpadding=2 class=bookingtable>";

	// Generer HTML til klokkeslæt og markeringer
	var hours=B_GetHoursHTML();

	// write header row
	var d=B_ParseDate(B_StartDate);
	hw=60 * B_Scale;
	html+="<tr><td>&"+"nbsp;</td>";
	for (i=0; i < B_DaysToShow; i++) {
		width=Math.round(B_MinutesPerDay * B_Scale);
		html+="<td align=left nowrap>";
		html+=B_GetElemHTML(B_FormatDate(d), width, "text-align:center", "bookingheader");
		d=new Date(d.getTime() + 24*60*60*1000);
		
		// write hours and markers
		html+=hours+"</td>";
	}
	// write end of header row
	html+="</tr>";


	// write bookings
	for (i=0; i<B_Groups.length; i++) {
		groupname=B_Groups[i];
		days=B_Items[groupname];
		html+="<tr valign=middle>";
		html+="<td nowrap>"+groupname+"</td>";

		for (k=0; k<B_DaysToShow; k++) {
			items=days[k-B_FirstDayToShow];
			html+="<td nowrap>";

			if (!items) {
				html+="&"+"nbsp;";
			} else {
				var timeoffset=B_StartTimeOffset;
				for (j=0; j<items.length; j++) {
					item=items[j];
					
					// space before this item?
					width=j ? 0 : B_SpaceBeforeFirstItem;
					if (item.timecode > timeoffset) {
						width+=Math.round((item.timecode - timeoffset) * B_Scale);
					}
					if (width) {
						html+=B_GetElemHTML(null, width);
					}
					timeoffset=item.timecode + item.duration;
					
					width=Math.round(item.duration * B_Scale);
					style="display:inline; background-color:"+item.color+";";
					style+="width:" + width + "px; cursor: hand; overflow: hidden; height:15px;";
					style+="color:" + item.textcolor + ";";
					if (item.link) {
						html+="<a href='" + item.link + "' title='" + item.text + "'";
						html+=" onclick='return false;'>";
					}
					html+="<div class=bookingitem style='" + style + "'";
					if (!item.link) { 
						html+=" title='" + item.text + "'";
					}
					html+=" ondblclick='B_EditBooking(" + item.id + "); return false;'>";
					html+="&"+"nbsp;";
					if (B_ShowBoxText) {
						html+=item.boxtext;
					}
					html+="</div>";
					if (item.link) {
						html+="</a>";
					}
				}
			}
			html+="</td>";
		}
		html+="</tr>";
	}
	html+="</"+"table>";
	
	document.write(html);
}

function B_Init(startdate, enddate, starthour, endhour, pixelwidth, hourincrement) {
	// funktionen skal kaldes før man begynder at tilføje emner
	// og bruges til at beregne skaleringsfaktor m.m. 
	var prev_startdate=startdate, prev_enddate=enddate;

	// anvend defaults
	if (!pixelwidth) { pixelwidth = B_DefaultWidth; }
	//if (!starttime) { starttime = B_DefaultStartTime; }
	//if (!endtime) { endtime = B_DefaultEndTime; }
	if (!starthour) { starthour = B_DefaultStartHour; }
	if (!endhour) { endhour = B_DefaultEndHour; }
	if (!startdate) { startdate=enddate?enddate:B_FormatDate(new Date()); }
	if (!enddate) { enddate=startdate; }

	// ugeoversigt?
	if (B_ShowWeek) {
		var w=B_GetWeekInterval(startdate);
		startdate=w[0];
		enddate=w[1];
		
		// check om intervallet indeholder oplysninger om alle reservationer 
		// for denne uge (ellers reloades siden med det rigtige interval)
		B_CheckWeekInterval(prev_startdate, prev_enddate, startdate, enddate);
	}

	// beregn antal dage som visningen strækker sig over
	var offset1=B_ConvertDateToMinutes(startdate);
	var offset2=B_ConvertDateToMinutes(enddate)+1440;
	var days=(offset2-offset1)/1440;

	// beregn antal minutter pr. dag
	//var minutes = B_GetDuration(starttime, endtime);
	var minutes = (endhour - starthour) * 60;
	
	// initialiser skaleringsfaktor m.m.
	if (B_StartDate) {
		// B_StartDate og B_StartDateOffset bliver automatisk 
		// sat i funktionen B_GetGroupItem, hvis funktionen 
		// kaldes uden at de på forhånd er initialiseret
		B_FirstDayToShow=Math.round((B_StartDateOffset-offset1)/1440);
	} else {
		B_StartDateOffset=offset1;
		B_FirstDayToShow=0;
	}
	B_StartDate=startdate;
	B_Scale=1.0*pixelwidth/(days*minutes);
	B_StartTimeOffset=starthour * 60;

	// enheder for tidsskalaen (om alle klokkeslæt skal vises eller 
	// fx kun hvert andet eller tredje
	if (!hourincrement) { 
		var hours=endhour-starthour;
		var pixels=(pixelwidth/(days*hours));
		hourincrement = Math.ceil(20/pixels); 
	}

	// beregn hvordan tidspunkter skal vises
	B_StartHour=starthour;
	B_EndHour=endhour;
	B_HourIncrement=hourincrement;

	// antal minutter på oversigten
	//B_MaxTimeCode=B_GetTimeCode(endhour+":00");

	// andre variable, der bruges til beregningerne
	B_DaysToShow=days;
	B_MinutesPerDay=minutes;
}

function B_GetElemHTML(text, width, extrastyle, cssclass) {
	var style="width:"+width+"px; display:inline;", cssstr="";
	if (!text) { text="<"+"!-- -->"; }
	if (extrastyle) { style+=extrastyle; }
	if (cssclass) { cssstr=" class='"+cssclass+"'"; }
	return "<div style='" + style + "'" + cssstr + "><span class=section>" + text + "</span></div>";
}

function B_GetHoursHTML() {
	// generate HTML for hours and markers
	var html="", hours="", markers="";

	// space before first marker of each day
	markers+=B_GetElemHTML(null, B_SpaceBeforeFirstItem);

	var pixels=0, tmp, text, width, hwidth=0, mh;
	var hw=60 * B_Scale;
	for (h=B_StartHour; h <= B_EndHour; h++) {
		tmp=Math.round((h-B_StartHour+1)*hw)-1;
		width=(h < B_EndHour) ? tmp-pixels : 0;

		//style="text-align:left;";
		//if (h!=B_EndHour) { style+="overflow:hidden;" }

		if ((h - B_StartHour) % B_HourIncrement == 0) {
			// write previous hour label
			if (text && hwidth) {
				hours+=B_GetElemHTML(text, hwidth, "text-align:left;");
				hwidth=0;
			}
			// save text for next write
			text=(h < 10 ? "&"+"nbsp;"+h : h);
			mh=4;
		} else {
			mh=2;
		}
		hwidth+=width;

		markers+=B_GetElemHTML(null, width, "height:"+mh+"px; border-left: 1px solid black;");
		pixels=tmp;
	}
	// write last hour label
	if (text) {
		hours+=B_GetElemHTML(text, hwidth, "text-align:left;");
	}

	html+="<div class=bookinghours>"+hours+"</div>";
	html+="<div>"+markers+"</div>";
	return html;
}

function B_AddItem(bookingid, groupname, startdate, starttime, endtime, hovertext, link, color, boxtext, textcolor) {
	// calculate timecodes relative to B_StartDate, not startdate (this is necessary
	// because each day is shown in a separate table cell)
	
	// convert dates and times to the correct format 
	startdate=B_ConvertDateString(startdate);
	starttime=B_ConvertTimeString(starttime);
	endtime=B_ConvertTimeString(endtime);
	
	//var timecode=B_GetTimeCode(startdate, starttime);
	var timecode=B_GetTimeCode(starttime);
	var duration=B_GetDuration(starttime, endtime);
	var groupitem=B_GetGroupItem(groupname, startdate);
	
	var item = new Array();
	item["id"] = bookingid;
	item["timecode"] = timecode;
	item["duration"] = duration;
	item["text"] = hovertext;
	item["boxtext"] = boxtext ? boxtext : "";
	item["link"] = link ? link : "";
	item["color"] = color;
	item["textcolor"] = textcolor ? textcolor : B_DefaultTextColor;
	
	// tilføj item
	groupitem[groupitem.length]=item;
}

function B_GetGroupItem(groupname, startdate) {
	// funktionen tilføjer gruppen, hvis den ikke allerede eksisterer og returnerer
	// et array, som kan bruges til at tilføje items til gruppen
	
	var offset2=B_ConvertDateToMinutes(startdate);
	if (!B_StartDateOffset) {
		// start date has not been initialised yet, so we
		// use the current value as our offset (requires the
		// elements to be sorted in date order)
		B_StartDate=startdate;
		B_StartDateOffset=offset2;
	}

	// we have to round the dayIndex result due to daylight savings time
	var dayIndex=Math.round((offset2-B_StartDateOffset)/1440);
	if (!B_Items[groupname]) {
		// tilføj gruppen til B_Groups (NB: bevarer sorteringsrækkefølge)
		B_Groups[B_Groups.length]=groupname;
		// lav nyt array til gruppen i B_Items
		B_Items[groupname] = new Array();
	}
	if (!B_Items[groupname][dayIndex]) {
		B_Items[groupname][dayIndex] = new Array();
	}
	return B_Items[groupname][dayIndex];
}

function B_GetTimeCode(starttime) {
	// convert startdate+starttime to minutes (relative to 0:00)
	
	var min=B_ConvertDateToMinutes(null, starttime);
	min=min-B_TimeCodeOffset;
	return min;
}

function B_GetDuration(starttime, endtime) {
	// convert time span to minutes
	
	var t1=B_ArrayParseInt(starttime.split(':'));
	var t2=B_ArrayParseInt(endtime.split(':'));
	var time=(t2[0]-t1[0])*60 + (t2[1]-t1[1]);
	return time;
}

function B_ConvertDateToMinutes(datestr, timestr) {
	// convert date+time string to minutes
	
	var d=B_ParseDate(datestr, timestr);
	var time=d.getTime();
	return Math.round(time/60000);
}

function B_ParseDate(datestr, timestr) {
	// convert date+time string to a date object
  
	if (!datestr) { datestr="01-01-1970"; }
	if (!timestr) { timestr="00:00"; }
	var da=B_ArrayParseInt(datestr.split('-'));
	var dt=B_ArrayParseInt(timestr.split(':'));
	if (da[2]<100) {
		da[2]+=2000;
	}
	var d=new Date (da[2], da[1]-1, da[0], dt[0], dt[1]);
	return d;
}

function B_ConvertDateString(str) {
	// convert strings such as "Apr 1 2004 1:00PM" to "01-04-2004"
	if (str.indexOf("-")>0) {
		// string is already in correct format
		return str;
	} 
	var d=ConvertDanishStringToDate(str);
	return B_FormatDate(d);
}

function B_ConvertTimeString(str) {
	// convert strings such as "Apr 1 2004 1:00PM" to "13:00"
	if (str.indexOf(" ")==-1) {
		// string is already in correct format
		return str;
	} 
	var d=ConvertDanishStringToDate(str);
	return B_FormatTime(d);
}

function ConvertDanishStringToDate(str) {
	// Convert Danish month abbreviations to English
	if (str) {
	  str=str.replace(/maj/i, "May");
	  str=str.replace(/okt/i, "Oct");
	}
	return new Date(str);
}

function B_GetWeekInterval(startdate) {
	var d=B_ParseDate(startdate);
    var dayIndex=d.getDay();
    if (dayIndex<1) {	
    	// special case for søndag
    	dayIndex+=7;
    }
    d=B_AddDays(d, 1-dayIndex);
	startdate=B_FormatDate(d);
	enddate=B_FormatDate(B_AddDays(d, 6));
	return new Array(startdate, enddate);
}

function B_CheckWeekInterval(prev_startdate, prev_enddate, startdate, enddate) {
	// check om intervallet indeholder oplysninger om alle reservationer 
	// for denne uge (ellers reloades siden med det rigtige interval)
	
	var reload=false, reloadparams="";
	if (prev_startdate && B_ConvertDateToMinutes(prev_startdate) != B_ConvertDateToMinutes(startdate)) {
		reload=true;
		reloadparams+="&" + B_WeekFilterControlFrom + "=" + startdate;
	}
	if (prev_enddate && B_ConvertDateToMinutes(prev_enddate) != B_ConvertDateToMinutes(enddate)) {
		reload=true;
		reloadparams+="&" + B_WeekFilterControlTo + "=" + startdate;
	}
	if (reload && B_PageId && location.href.indexOf("reload=week")==-1) {
		// only reload if the "reload=week" flag isn't set (to avoid endless loops)
		var str=location.pathname + "?doshow" + B_PageId + "=1&reload=week" + reloadparams;
		location.href=str;
	}
}

function B_ArrayParseInt(arrayobj) {
	// convert each item in an array to integers
	
	var tmp=new Array();
	for (i=0; i<arrayobj.length; i++) {
		tmp[i]=parseInt(arrayobj[i],10);
	}
	return tmp;
}

function B_FormatDate(d) {
  // return date as string (dd-mm-yyyy)
  return d.getDate()+'-'+(d.getMonth()+1)+'-'+d.getFullYear();
}

function B_FormatTime(d) {
  // return time as string (hh:mm)
  var h=d.getHours();
  var m=d.getMinutes();
  if (m<10) { m="0"+m; }
  return h+":"+m;
}

function B_GetFilterValue(pageid, ctrl) {
  var frm=document["rediger"+pageid];
  if (frm && frm[ctrl]) {
	return frm[ctrl].value;
  }  	
  return ""; 
}

function B_EditBooking(id) {
	var link=B_AdminLink;
	link=link.replace("{recordid}", (id ? id : ""));
	var win=window.open(link, "edit_booking");
	if (win) {
		win.focus();
	}
	if (window.event) {
		window.event.cancelBubble=true;
		window.event.returnValue=false;
	}
}

function B_CreateDropDowns(pageid) {
	B_CreateLanguageDropdown(pageid, "address3");
	B_CreateLocationDropdown(pageid, "city", "comment");
}

function B_CreateLocationDropdown(pageid, ctrlname_city, ctrlname_location) {
	var html="", i, str, obj;
	var frm=document.forms["reservation"];
	var obj1=(frm ? frm[ctrlname_city] : null);
	var obj2=(frm ? frm[ctrlname_location] : null);
	var parent=(obj2 ? obj2.parentNode : null);
	if (obj1 && obj2 && parent) {
		html+="<select onchange='B_LocationChange(this, \""+ctrlname_city+"\", \""+ctrlname_location+"\")'>";
		html+="<option>(vælg)";
		for (i=0; i < B_Locations.length; i++) {
			var str=B_Locations[i];
			if (str) {
				var sp=str.split(";");
				html+="<option value='"+str+"'>"+sp[0]+(sp[1] ? " - "+sp[1] : "");
			}
		}
		html+="</select>";

		// hide input field
		obj1.value="";
		obj1.style.display="none";
		obj2.value="";
		obj2.style.display="none";
		// add drop down box
		parent.innerHTML+=html;
	}
}

function B_LocationChange(obj, ctrlname_city, ctrlname_location) {
  var frm=document.forms["reservation"];
  if (obj && frm && frm[ctrlname_city] && frm[ctrlname_location]) {
    var sp, opt=obj.options[obj.selectedIndex];
    if (opt) {
    	sp=opt.value.split(";");
    } else {
    	sp=["", ""];
    }
    frm[ctrlname_city].value=sp[0];
    frm[ctrlname_location].value=sp[1]?sp[1]:"";
  }
}

function B_CreateLanguageDropdown(pageid, ctrlname) {
	var html="", i, str, obj;
	var frm=document.forms["reservation"];
	var obj=(frm ? frm[ctrlname] : null);
	var parent=(obj ? obj.parentNode : null);
	if (obj && parent) {
		html+="<select onchange='B_LanguageChange(this, \""+ctrlname+"\")'>";
		html+="<option>(vælg)";
		for (i=0; i < B_Languages.length; i++) {
			str=B_Languages[i];
			html+="<option value='"+str+"'>"+str;
		}
		html+="</select>";

		// hide input field
		obj.style.display="none";
		// add drop down box
		parent.innerHTML+=html;
	}
}

function B_LanguageChange(obj, ctrlname) {
  var frm=document.forms["reservation"];
  if (obj && frm && frm[ctrlname]) {
    var opt=obj.options[obj.selectedIndex];
    frm[ctrlname].value=(opt ? opt.value : "");
  }
}

function B_AddDays(startdate, numdays) {
  var day=startdate.getDate();
  var d=new Date(startdate);
  return new Date(d.setDate(day+numdays));
}

function B_Navigate(pageid, days, filterCtrlId) {
	// jump x days in the calendar
	B_NavigateFunc(pageid, days, 1, "filtercontrol" + pageid + "" + filterCtrlId);
}

function B_NavigateWeek(pageid, weeks, filterCtrlId) {
	B_NavigateInterval(pageid, weeks*7, null, filterCtrlId);
}

function B_NavigateInterval(pageid, days, daysToShow, filterCtrlId) {
	var str="control" + pageid + "" + filterCtrlId;
	B_NavigateFunc(pageid, days, daysToShow, "filterfrom" + str, "filterto" + str);
}

function B_NavigateCurrentDay(pageid, filterCtrlId) {
	// jump to current week
	var startdate=B_FormatDate(new Date());
	B_StartDate=startdate;
	B_Navigate(pageid, 0, filterCtrlId);
}

function B_NavigateCurrentWeek(pageid, filterCtrlId) {
	// jump to current week
	var startdate=B_FormatDate(new Date());
	var w=B_GetWeekInterval(startdate);
	B_StartDate=w[0];
	B_NavigateInterval(pageid, 0, 7, filterCtrlId);
}

function B_NavigateFunc(pageid, days, daysToShow, ctrlnamefrom, ctrlnameto) {
	// jump x days in the calendar
	
	if (!days) { days=0; }
	var d=B_ParseDate(B_StartDate);
	d=B_AddDays(d, days);
	var startdate=B_FormatDate(d);
	
	if (!daysToShow && B_DaysToShow>1) {
		daysToShow = B_DaysToShow;
	}
	
	// compose link
	var link="/page"+pageid+".aspx?doshow"+pageid+"=1&"+ctrlnamefrom+"="+startdate;
	if (ctrlnameto && daysToShow>1) {
		d=B_AddDays(d, daysToShow-1);
		var enddate=B_FormatDate(d);
		link+="&"+ctrlnameto+"="+enddate;
	}
	location.href=link;
}