/*
	Global variabelen die op diverse plekken in de code
	uitleesbaar en aanpasbaar moeten zijn
*/
var infoSummaryHeight;					// Om te onthouden wat de hoogte van het rechterpaneel is
var summObjectsScrollHeight;
var slideArray = new Array();		// Array voor timerobject voor het sliden van diverse elementen
var toFast = 780;								// Wanneer een element meer dan deze waarde wil sliden,
																// wordt de eerste slide-stap heel groot

var selectionInsertPos = 0;			// Welke positie is vrij voor "Voeg toe aan selectie": min 1, max 5
var selectTimer = new Array();	// Timer voor het verplaatsen van de "Mijn selectie" fotootjes
var searchDetailTimer;					// Timer voor het in en uitklappen van "Meer zoekvelden"
var searchResultTotalPages;			// Hoeveel pagina's nemen de zoekresultaten in beslag
var searchResultCurrentPage;		// Welke zoekresultaten-pagina is nu actief
var searchResultContentSlide;		// De huidige scrollpositie van de zoekresultaten-wrapper
var activeSearchItem;						// Welk zoekresultaat is geselecteerd (donkere achtergrond + pijltje)
var infoDetailTotalPages;				// Hoeveel detailinfo pagina's zijn er (woning, wijk, foto's, etc.)
var infoDetailCurrentPage;			// Welke detailinfo-pagina is nu actief
var infoDetailContentSlide;			// De huidige scrollpositie van de detailinfo-wrapper
var fotoFadeTimer = new Array();// Timer voor het faden van de foto
var adresScrollTimer;						// Timer voor het scrollen van het adreslijstje
var browserIE6 = false;					// Om bij te houden of browser IE6 wordt gebruikt.
var ComplexId;									// Wordt gevuld indien via querystring aangeroepen
var jumpToMeer = 0;							// Om bij te houden naar welke pagina hij moet springen na klikken op "toon alles" 

/*
	Wordt aangeroepen in body onload
*/
function init(firstTimeSubmit, vComplexId) {
	ComplexId = vComplexId;
	
	// Browser check
	if ( (navigator.appVersion).toUpperCase().indexOf("MSIE 6.0") != -1 ) {
		browserIE6 = true;
	}
	
	// Hoogte site berekenen
	calcHeight();
	
	// Pagina wordt voor het eerst opgeroepen, dus zoekopdracht automatisch uitvoeren
	if (firstTimeSubmit == true) {
		AjaxNS.AR('zoekBT', '', 'RadAjaxManager1', event);
	}
	
	// Meer zoekvelden toenen als de sessie "extended search" true is
	if (document.getElementById('extendedSearch').value == 1) {
		showMoreSearchFields();
  }
}

/*
	Om de insert positie vanuit .NET te laten communiceren met Javascript
*/
function initInsertPos() {
	selectionInsertPos = document.getElementById('selectionInsertPos').value;
}

/*
	Wordt aangeroepen _na_ AJAX-functionaliteit om
	"enkele" instellingen weer op "default" te zetten.
*/
function ajaxEnd(sender, arguments) {
	infoDetailTotalPages = 9;
	infoDetailContentSlide = 0;
	
	// Fix checboxes aan/uit
	initInsertPos();
	var checkboxes = document.getElementsByTagName("input");
	for (i=0; i < checkboxes.length; i++) {
		if (checkboxes[i].name.substring(0,11) == "selecteerCB") {
			if (checkboxes[i].checked == false) {
				if (selectionInsertPos > 4)
					checkboxes[i].disabled = true;
				else {
					checkboxes[i].disabled = false;
				}
			}
		}
	}
	
	// Hoogte rechterpaneel, scrolldiv en scroller goed instellen
	if (document.getElementById('InfoSummaryContent') != null) {
		document.getElementById('InfoSummaryContent').style.height = infoSummaryHeight + "px";
	}
	
	if (document.getElementById('WoningAanbodInfoSummary1_summObjectsScroll') != null) {
		summObjectsScrollHeight = infoSummaryHeight-269;
		document.getElementById('WoningAanbodInfoSummary1_summObjectsScroll').style.height = summObjectsScrollHeight + "px";
		if (document.getElementById('WoningAanbodInfoSummary1_objScrollContainer') != null) {
			var scrollContainerHeight = summObjectsScrollHeight-6;
			document.getElementById('WoningAanbodInfoSummary1_objScrollContainer').style.height = scrollContainerHeight + "px";
			document.getElementById('scrollDown').style.marginTop = (scrollContainerHeight-9)+"px";
		}
	}
	
	//Alleen uitvoeren als er op een VHE is geklikt
	if (arguments.EventTarget.substring(0,28) == "WoningAanbodInfoSummary1$VHE") {
		 showDetailPane(9);
		 document.getElementById('infoDetailContent').className = "";
	}
	
	// Alleen uitvoeren als er op een popup geklikt is
	if (arguments.EventTarget.substring(0,12) == "SelectionPop" && arguments.EventTarget.substring(14) == "popLink") {
	    showDetailPane(1);
	}
	
	// Alleen uitvoeren als er op een verwijder link in popup geklikt is
	if (arguments.EventTarget.substring(0,12) == "SelectionPop" && arguments.EventTarget.substring(14) == "verwijderBtn") {
	   startSlideNoScroll('searchResultsContent', searchResultContentSlide, searchResultContentBrowse(searchResultCurrentPage), true);
	}
	
	// Alleen uitvoeren als op de zoek knop geklikt wordt
	if (arguments.EventTarget == "zoekBT") {
		searchResultTotalPages = document.getElementById('aantalPaginasField').value;
		searchResultCurrentPage = 1;
		searchResultContentSlide = 0;
		infoDetailCurrentPage = 1;
		
		var doDetail = true;	
		if (jumpToMeer > 0) {
			startSlide('searchResultsContent', searchResultContentSlide, searchResultContentBrowse(jumpToMeer), true);
			jumpToMeer = -1;
			doDetail = false;
		}
		else {
			activeSearchItem = '';
		}
		
		// Na het zoeken het eerste resultaat weergeven 
		// en dit actief maken
		if (document.getElementById('titleLink1') != null) { // betekent: minimaal 1 zoekresultaat
			if (doDetail) {
				AjaxNS.AR('titleLink1', '', 'RadAjaxManager1', event);
				startSlideNoScroll('wrapperRight', 0, -260, true);
				searchItemClick('searchItem1');
			}
			else {
				document.getElementById(activeSearchItem).style.backgroundColor = '#f1f6fb';
			}
			
			// Indien querystring gevuld met complex, selecteren!
			if (ComplexId != 0 && document.getElementById('hoofdComplexGetoond').value==0)
			{
				document.getElementById('selecteerCB'+ComplexId).checked=true;
				AjaxNS.AR('selecteerCB'+ComplexId,'', 'RadAjaxManager1', event);
			}
		}
		else { // betekent: geen zoekresultaten
			// Open Huis label verbergen (ivm position absolute)
			if (document.getElementById('WoningAanbodInfoSummary1_openHuis') != null) {
				document.getElementById('WoningAanbodInfoSummary1_openHuis').style.display = 'none';
			}
			
			// Scrollbar VHE's verbergen (ivm position absolute)
			if (document.getElementById('WoningAanbodInfoSummary1_objScrollContainer') != null) {
				document.getElementById('WoningAanbodInfoSummary1_objScrollContainer').style.visibility = 'hidden';
			}
			
			startSlideNoScroll('wrapperRight', -260, 0, true);
		}
	}
	
	// Alleen uitvoeren als op een selecteer vinkje geklikt wordt
	if (arguments.EventTarget.substring(0,11) == "selecteerCB") {
		if (document.getElementById(arguments.EventTarget).checked == true) { // check
			addToSelection();
		}
		
		// Gehighlighte item herstellen
		if (document.getElementById(activeSearchItem) != null) {
			document.getElementById(activeSearchItem).className = 'searchResultsItemPnlClick';
		}
		
		// Nodig om na checkbox-click de bladerfunctie (1 | 2 | 3) weer in orde te maken
		startSlideNoScroll('searchResultsContent', searchResultContentSlide, searchResultContentBrowse(searchResultCurrentPage), true);
	}
	
	// Check of scrollbalk voor adressen getoond moet worden
	activeObjScrollBar();
	
	// Omdat de volgende button soms onterecht verscheen/verdween, een extra Javascript controle;
	if (document.getElementById('searchResultsNavNext') != null) {
		if (searchResultTotalPages < 2 || searchResultCurrentPage == searchResultTotalPages) {
			if (document.getElementById('browseLink_'+(searchResultTotalPages * 1 + 1)) != null && searchResultCurrentPage == searchResultTotalPages) {
				document.getElementById('searchResultsNavNext').style.visibility = 'visible';
			}
			else {
				document.getElementById('searchResultsNavNext').style.visibility = 'hidden';
			}
		}
		else {
			document.getElementById('searchResultsNavNext').style.visibility = 'visible';
		}
	}
}

/*
	Berekent onload de hoogte van het contentscherm van de browser.
	Moet minimaal "minClientHeight" bedragen.
	Vervolgens krijgt het omvattende .NET form deze hoogte en
	wordt de hoogte in een hidden input field geschreven voor verder
	gebruik in C#
*/
function calcHeight() {
	var minClientHeight = 615;
	var clientHeight = document.body.clientHeight - 25;
	
	// Indien IE6
	if (browserIE6) clientHeight = clientHeight - 25;
	
	// Minimale hoogte die nodig is voor de interface
	if (clientHeight < minClientHeight) { clientHeight = minClientHeight; }

	document.getElementById('contentHeight').value = clientHeight;
	document.getElementById('form1').style.height = clientHeight + "px";
	
	// rechterpaneel (met complexinformatie) ook op lengte aanpassen
	infoSummaryHeight = clientHeight-196-30;
	if (document.getElementById('InfoSummaryContent') != null) {
		document.getElementById('InfoSummaryContent').style.height = infoSummaryHeight+"px";
	}
}

/*
	Wordt aangeroepen onclick bij "Meer zoekvelden".
	Verbergt "Meer zoekvelden"-link, toont "Minder zoekvelden"-link
	en roept de functie aan om de zoekvelden vloeiend te tonen.
*/
function showMoreSearchFields() {
	var more = document.getElementById('hrefMoreFields');
	var less = document.getElementById('hrefLessFields');
	doChangeSearchHeight('searchPanelDetail', 0, 130, false);
	more.style.display = 'none';
	less.style.display = '';
	// doorgeven aan C#
	document.getElementById('extendedSearch').value = 1;	
}

/*
	Wordt aangeroepen onclick bij "Minder zoekvelden".
	Verbergt "Minder zoekvelden"-link, toont "Meer zoekvelden"-link
	en roept de functie aan om de zoekvelden vloeiend te verbergen.
*/
function showLessSearchFields() {
	var more = document.getElementById('hrefMoreFields');
	var less = document.getElementById('hrefLessFields');
	doChangeSearchHeight('searchPanelDetail', 130, 0, true);
	more.style.display = '';
	less.style.display = 'none';
	// doorgeven aan C#
	document.getElementById('extendedSearch').value = 0;
}

/*
	Functie om vloeiend de geavanceerde zoekvelden te tonen of te
	verbergen. Roept zichzelf steeds aan, tot een bepaald punt.
	Cleart daarna de gebruikte timer. Div is het id van het
	betreffende div, from en to bepalen af te leggen weg.
*/
function doChangeSearchHeight(div, from, to, setIndexToZero) {
	var newFrom;
	if ((Math.abs(from - to)) > 0.1) {
		newFrom = (to-from)/4;
		document.getElementById(div).style.height = Math.round(from + newFrom) + 'px';
		searchDetailTimer = setTimeout("doChangeSearchHeight('"+div+"', "+(from+newFrom)+", "+to+", "+setIndexToZero+")", 15);
	}
	else {
		clearTimeout(searchDetailTimer);
		if (setIndexToZero) {
			document.getElementById('veOppervlakte').selectedIndex = 0;
			document.getElementById('veSlaapkamers').selectedIndex = 0;
			document.getElementById('veWoningtype').selectedIndex = 0;
		}
	}
}

/*
	Wordt aangeroepen na onclick selecteer checkbox.
	Kijkt of er nog plek is voor toevoegen, plaatst het bijbehorende
	plaatje van het item in het plaatje in het selectie-divje en start
	met "doMoveSelection" de beweging. Verandert tevens linktekst.
*/
function addToSelection() {
	doMoveSelection(selectionInsertPos, 57, 0);
}

/*
	Voert het daadwerkelijk omhoogschuiven van een selectie-div
	uit. Cleart daarna de gebruikte timer. Pos is het nummer (1 t/m 5),
	from en to bepalen de af te leggen weg.
*/
function doMoveSelection(pos, from, to) {
	var newFrom;
	if ((Math.abs(from - to)) > 0.1) {
		newFrom = (to-from)/4;
		document.getElementById('selected'+pos).style.marginTop = Math.round(from + newFrom) + 'px';
		selectTimer[pos] = setTimeout("doMoveSelection("+pos+", "+(from+newFrom)+", "+to+")", 15);
	}
	else {
		clearTimeout(selectTimer[pos]);
	}
}

/*
	Toont of verbergt een popup behorende bij het geselecteerde
	project. Id loopt van 1 t/m 5, show is true of false
*/
function selectionPopup(id, show) {
	var obj = document.getElementById(id);
	if (show) {
		obj.style.display = 'block';
	}
	else {
		obj.style.display = 'none';
	}
}

/*
	Loopt een rijtje elementen langs van ele t/m checkVar en wanneer
	i == pageNr, dan Bold, anders Normal. Elementen moeten opeenvolgende
	namen hebben als "div1", "div2, ..., "div25".
*/
function makeBold(pageNr, ele, checkVar) {
	for (i=1; i<=checkVar; i++) {
		if (document.getElementById(ele+i)) {
			if (i == pageNr) {
				document.getElementById(ele+i).style.fontWeight = 'bold';
			}
			else {
				document.getElementById(ele+i).style.fontWeight = 'normal';
			}
		}
	}
}

/*
	Klasse om een slide van een element te beheersen. SliderClass objecten
	worden geplaatst in de global var "sliderArray" om zo simultane slides
	te realiseren en toch het timerbeheer goed te laten verlopen.
	obj		= DOM object
	from	= scrollen vanaf
	to		= scrollen naar
	timer	= timerobject van de betreffende slide
	allowRepeat = mag het element naar zichzelf blijven scrollen
*/
function SliderClass() {
	this.obj = null;
	this.from = 0;
	this.to = 0;
	this.timer = null;
	this.allowRepeat = true;
}

///*
//	Startfunctie voor het sliden van een element.
//	Checkt eerst of de afstand niet te groot is (toFast)
//	en indien nodig past hij de afstand aan.
//	Dan maakt hij een SliderClass object aan en plaatt
//	dit in het slideArray (indien voldaan aan voorwaarden).
//*/
//function startSlide(ele, from, to, allowRepeat) {
//	if (Math.abs(from-to) > toFast) {
//		if (from < to) from = to - toFast;
//		if (from > to) from = to + toFast;
//	}
//	
//	var mySlider	= new SliderClass();
//	mySlider.obj	= document.getElementById(ele);
//	mySlider.from	= from;
//	mySlider.to		= to;
//	mySlider.allowRepeat = allowRepeat;
//	
//	if (Math.round((mySlider.obj.style.marginLeft).replace("px", "")) != mySlider.to || mySlider.allowRepeat) {
//		slideArray[ele] = mySlider;
//		doSlide(ele);
//	}
//	
//	mySlider = null;
//}

///*
//	Uitgeklede versie van "startSlide": sliden zonder beweging.
//	Het element springt meteen naar de opgegeven "to"-positie.
//	From en allowRepeat zijn overbodig, maar vanwege de gebruikte
//	aanroep in de code blijven ze gehandhaafd in de parameters.
//*/
//function startSlideNoScroll(ele, from, to, allowRepeat) {
//	if (document.getElementById(ele))
//		document.getElementById(ele).style.marginLeft = to + "px";
//}

///*
//	Voert het daadwerkelijke sliden van element uit. Haalt het
//	slideObject op uit het sliderArray, op basis van de elementId.
//	Voert het sliden uit tot een bepaald punt, cleart daarna de
//	gebruikte	timer en maakt het slideArray op deze positie null.
//*/
//function doSlide(ele) {
//	var mySlider = slideArray[ele];
//	if (mySlider != null) {
//		if ((Math.abs(mySlider.from - mySlider.to)) > 0.1) {
//			mySlider.from += (mySlider.to-mySlider.from)/8;
//			mySlider.obj.style.marginLeft = Math.round(mySlider.from) + 'px';
//			slideArray[ele] = mySlider;
//			slideArray[ele].timer = setTimeout("doSlide('"+ele+"')", 15);
//		}
//		else {
//			mySlider.timer = clearTimeout(mySlider.timer);
//			slideArray[ele] = null;
//		}
//		mySlider = null;
//	}
//}

/*
	Wordt aangeroepen als bij zoekresultaten op "Vorige" wordt geklikt.
	searchResultCurrentPage met 1 verlagen, actieve paginanummer vet maken
	met makeBold functie, "volgende" tonen (mag altijd, na een klik op "vorige"!),
	bekijken of "vorige" nog getoond mag worden, de slide-positie global var
	met 390 verhogen (=naar rechts schuiven), nieuwe slide-positie returnen
*/
function searchResultContentPrev() {
	searchResultCurrentPage--;
	makeBold(searchResultCurrentPage, 'browseLink_', searchResultTotalPages);
	// volgende tonen
	document.getElementById('searchResultsNavNext').style.visibility = 'visible';
	if (searchResultCurrentPage == 1) {
		// vorige verbergen
		document.getElementById('searchResultsNavPrev').style.visibility = 'hidden';
	}
	searchResultContentSlide += 390;
	
	fixBladerFunctie();
	
	return searchResultContentSlide;
}

/*
	Wordt aangeroepen als bij zoekresultaten op "Volgende" wordt geklikt.
	searchResultCurrentPage met 1 verhogen, actieve paginanummer vet maken
	met makeBold functie, "vorige" tonen (mag altijd, na een klik op "volgende"!),
	bekijken of "volgende" nog getoond mag worden, de slide-positie global var
	met 390 verlagen (=naar links schuiven), nieuwe slide-positie returnen
*/
function searchResultContentNext() {
	searchResultCurrentPage++;
	makeBold(searchResultCurrentPage, 'browseLink_', searchResultTotalPages);
	// vorige tonen
	document.getElementById('searchResultsNavPrev').style.visibility = 'visible';
	if (searchResultCurrentPage == searchResultTotalPages) {
		// volgende verbergen
		document.getElementById('searchResultsNavNext').style.visibility = 'hidden';
	}
	searchResultContentSlide -= 390;
	
	fixBladerFunctie();
	
	return searchResultContentSlide;
}

/*
	Regelt de gebeurtenissen wanneer op een zoekresultaten-paginanummer
	(1 | 2 | 3 | ... | x) wordt geklikt. Bekijkt of "vorige" en/of "volgende
	getoond of verborgen moeten worden, berekent dan de nieuwe slide positie
	en retourneert deze. Maakt ook het geklikte paginanummer vet.
*/
function searchResultContentBrowse(pageNr) {
	var elePrev = document.getElementById('searchResultsNavPrev');
	var eleNext = document.getElementById('searchResultsNavNext');
	if (pageNr == 1) {
		// vorige verbergen
		elePrev.style.visibility = 'hidden';
		// volgende tonen
		eleNext.style.visibility = 'visible';
	}
	else if (pageNr == searchResultTotalPages) {
		// vorige tonen
		elePrev.style.visibility = 'visible';
		// volgende verbergen
		eleNext.style.visibility = 'hidden';
	}
	else {
		// vorige tonen
		elePrev.style.visibility = 'visible';
		// volgende tonen
		eleNext.style.visibility = 'visible';
	}
	
	searchResultContentSlide = -((pageNr-1) * 390);
	searchResultCurrentPage = pageNr;
	makeBold(searchResultCurrentPage, 'browseLink_', searchResultTotalPages);
	
	fixBladerFunctie();
	
	return searchResultContentSlide;
}

function defaultNext() {
	startSlide('searchResultsContent', searchResultContentSlide, searchResultContentNext(), true);
}

function advancedNext() {
	var loadingObj = document.getElementById('searchResultsLoading');
	document.getElementById('searchResultsNav').style.display = 'none';
	loadingObj.style.display = 'block';
	loadingObj.innerHTML = loadingObj.innerHTML;
	jumpToMeer = searchResultTotalPages * 1 + 1;
	document.getElementById('showAllResults').value = 1;
	AjaxNS.AR('zoekBT', '', 'RadAjaxManager1', event);
}

/*
	Maakt een mooie bladerfunctie over 1 regel en regelt het veranderen
*/
function fixBladerFunctie() {
	var nextDiv = document.getElementById('searchResultsNavNext');
	var moreLink = document.getElementById('browseLink_'+(searchResultTotalPages * 1 + 1));
	var nextLink = document.getElementById('searchResultsNavNextLink');
	
	if (moreLink != null && searchResultCurrentPage == searchResultTotalPages) {
		nextDiv.style.visibility = 'visible';
		nextLink.onclick = advancedNext;
	}
	else {
		nextLink.onclick = defaultNext;
	}
	
	var hoeveelErnaast = 3;
	var labelFrom = searchResultCurrentPage-hoeveelErnaast;
	var labelTo = searchResultCurrentPage+hoeveelErnaast;
	if (labelFrom < 1) labelTo = labelTo + (1 - labelFrom);
	if (labelTo > searchResultTotalPages) labelFrom = labelFrom + (searchResultTotalPages - labelTo);
	
	var moreLeft = document.getElementById('moreLeft');
	var moreRight = document.getElementById('moreRight');
	if (labelFrom > 1) moreLeft.style.display = '';
	else moreLeft.style.display = 'none';
	if (labelTo < searchResultTotalPages) moreRight.style.display = '';
	else moreRight.style.display = 'none';
	
	for (i=1; i<=searchResultTotalPages; i++) {
		var ele = document.getElementById('bladerLabel_'+i);
		var sep = document.getElementById('bladerSep_'+i);
		if (ele != null) {
			// label regelen
			if (i >= labelFrom && i <= labelTo)
				ele.style.display = '';
			else
				ele.style.display = 'none';
			// separator regelen
			if (sep != null) {
				if (i == labelTo)
					sep.style.display = 'none';
				else
					sep.style.display = '';
			}
		}
	}
}

/*
	Hightlight wanneer cursor over een zoekresultaat-item gaat,
	behalve als het item het actieve (geklikte) item is.
*/
function searchItemOver(ele) {
	if (ele != activeSearchItem) {
		//document.getElementById(ele).className = 'searchResultsItemPnl';
		document.getElementById(ele).style.backgroundColor = '#e3edf6';
	}
}

/*
	Un-hightlight wanneer cursor uit een zoekresultaat-item gaat,
	behalve als het item het actieve (geklikte) item is.
*/
function searchItemOut(ele) {
	if (ele != activeSearchItem && document.getElementById(ele) != null) {
		//document.getElementById(ele).className = 'searchResultsItemPnl';
		document.getElementById(ele).style.backgroundColor = '';
	}
}

/*
	Wanneer een zoekresultaat-item wordt geklikt, wordt het evt.
	vorige active zoekresultaat-item normaal gemaakt, en daarna
	het geklikte zoekresultaat-item actief gemaakt.
*/
function searchItemClick(ele) {
	summaryFadeOut();
	var temp = activeSearchItem;
	activeSearchItem = ele;
	if (temp != '')
		searchItemOut(temp);
	//document.getElementById(ele).className = 'searchResultsItemPnlClick';
	document.getElementById(ele).style.backgroundColor = '#f1f6fb';
}

/*
	Maak de samenvattingspagina van een complex 20% opacity
*/
function summaryFadeOut() {
	var obj1 = document.getElementById('infoSummaryContent');
	var obj2 = document.getElementById('woningAanbodInfoSummary1_objScrollContainer');
	var obj3 = document.getElementById('woningAanbodInfoSummary1_openHuis');
	
	if (obj1 != null) {
		obj1.className = 'fadeOut';
	}
	if (obj2 != null) {
		obj2.className = 'objScrollContainerFadeOut';
		document.getElementById('scrollUp').className = 'fadeOut';
		document.getElementById('scrollPos').className = 'fadeOut';
		document.getElementById('scrollDown').className = 'fadeOut';
	}
	if (obj3 != null) {
		obj3.className = 'fadeOut';
	}
}

/*
	Maak de detailpagina van een complex 20% opacity
*/
function vheDetailFadeOut() {
	document.getElementById('infoDetailContent').className = "fadeOut";
}

/*
	Functie om linkje "terug naar ovezicht" te tonen
*/
function showInfoSummaryNav() {
	document.getElementById('infoSummaryNav').style.visibility = 'visible';
}

/*
	Functie om linkje "terug naar ovezicht" te verbergen
	en tevens evt. vette pagina-linkjes normaal te maken.
*/
function hideInfoSummaryNav() {
	makeBold(0, 'WoningAanbodInfoSummary1_infoDetailLink_', infoDetailTotalPages);
	document.getElementById('infoSummaryNav').style.visibility = 'hidden';
}

/*
	Regelt de gebeurtenissen wanneer op het projectoverzicht-scherm op een "snel naar"
	linkje wordt geklikt. Toont het "terug naar overzicht" linkje. Berekent de nieuwe
	slide positieen en retourneert deze.	Maakt ook het geklikte linkje vet.
*/
function infoDetailContentBrowse(pageNr) {
	showInfoSummaryNav();
	
	infoDetailContentSlide = -((pageNr-1) * 520);
	infoDetailCurrentPage = pageNr;
	makeBold(infoDetailCurrentPage, 'WoningAanbodInfoSummary1_infoDetailLink_', infoDetailTotalPages);
	
	return infoDetailContentSlide;
}

/*
	Extra functie om als het project-overzichtspaneel van
	rechts naar links aan het scrollen is, de gebruiker door
	2 snelle kliks achter elkaar op een "snel naar" linkje, het
	scrollen in de war brengt. Roept tevens als de juist detailinfo-
	pagina op.
*/
function showDetailPane(pageNr) {
	var mySlider = slideArray['wrapperLeft'];
	startSlideNoScroll('infoDetailContent', infoDetailContentSlide, infoDetailContentBrowse(pageNr), true);
	if (mySlider == null || (mySlider.from < mySlider.to))
		startSlide('wrapperLeft', 0, -520, false);
}

/*
	Functie om bij de detailinfo-schermen de grote foto
	te veranderen na een klik op een thumbnail, gebeurt via
	fade, roept functie changeInfoDetailFotoOpac aan
*/
function changeInfoDetailFoto(pos, url) {
	var img = document.getElementById('WoningAanbodInfoDetail1_infoDetailFoto');
	var div = document.getElementById('infoDetailFotoDiv');
	
	div.style.backgroundImage = 'url('+img.src+')';
	img.style.opacity = 0;
	img.style.filter = 'alpha(opacity=0)';
	img.src = url;
	
	changeInfoDetailFotoOpac(pos, 0, 100);
}

/*
	Functie die voor het infaden van de detail-info foto's
	zorgt. Vergelijkbaar met andere slide/fade functies.
*/
function changeInfoDetailFotoOpac(pos, from, to) {
	var newFrom;
	var newOpac;
	var img = document.getElementById('WoningAanbodInfoDetail1_infoDetailFoto').style;
	if ((Math.abs(from - to)) > 0.1) {
		newFrom = (to-from)/4;
		newOpac = Math.round(from + newFrom);
		img.filter = 'alpha(opacity='+newOpac+')';
		img.opacity = newOpac / 100;
		img.MozOpacity = newOpac / 100;
		img.KhtmlOpacity = newOpac / 100;
		fotoFadeTimer[pos] = setTimeout("changeInfoDetailFotoOpac("+pos+", "+(from+newFrom)+", "+to+")", 12);
	}
	else {
		clearTimeout(fotoFadeTimer[pos]);
	}
}

/*
	Opent een popupje met ASP bestand waar a.d.h.v.
	querystring een image in getoond wordt.
*/
function openPlattegrond(img, text) {
	var opts;
	opts += "status=0,";
	opts += "toolbar=0,";
	opts += "location=0,";
	opts += "directories=0,";
	opts += "resizable=1,";
	opts += "scrollbars=1,";
	opts += "width=640,";
	opts += "height=560,";
	opts += "top="+(screen.height-560)/2+",";
	opts += "left="+(screen.width-640)/2+"";
	
	var platWin = window.open('woningaanbod_plattegrond.aspx?img='+img+'&text='+text, 'plattegrond_detail', opts);
	platWin.focus();
}

/*
	Opent een popupje met berekenformulier maximale huurprijs
*/
function maximaleHuurprijs() {
	var opts;
	opts += "status=0,";
	opts += "toolbar=0,";
	opts += "location=0,";
	opts += "directories=0,";
	opts += "resizable=1,";
	opts += "scrollbars=1,";
	opts += "width=530,";
	opts += "height=450,";
	opts += "top="+(screen.height-450)/2+",";
	opts += "left="+(screen.width-530)/2+"";
	
	var maxWin = window.open('http://www.vesteda.com/module/huurrekmod/rekenmodel.asp', 'maximale_huurprijs', opts);
	maxWin.focus();
}

/*
	Opent een popup met het routeformulier van locatienet.com.
	Route wordt bepaald aan de hand van querystring, die o.a.
	wordt opgebouwd uit 3 form-velden op de pagina.
	Opmerking: werkt niet goed in Firefox. Oorzaakt lijkt op
	manier van behandelen querystring in Firefox-Javascript
*/
function planRoute() {
	var postcodeFrom	= (document.getElementById('postcodeRoute').value).toUpperCase();
	var cityTo				= (document.getElementById('WoningAanbodInfoDetail1_cityTo').value);
	var postcodeTo		= (document.getElementById('WoningAanbodInfoDetail1_postcodeTo').value).toUpperCase();
	
	var pcRegExp = /^[0-9]{4}[\s]{0,1}[a-z]{2}$/i;
	if (!(pcRegExp.test(postcodeFrom))) {
		alert('U heeft geen (geldige) postcode ingevuld.');
		return;
	}
	
	var opts = "";
	opts += "status=0,";
	opts += "toolbar=0,";
	opts += "location=1,";
	opts += "directories=0,";
	opts += "resizable=1,";
	opts += "scrollbars=1,";
	opts += "width=780,";
	opts += "height=555,";
	opts += "top="+(screen.height-555)/2+",";
	opts += "left="+(screen.width-780)/2+"";
	
	var url = "http://tms.tensing.com/tms/scripts/tgigw.dll?pc1=[pc]&seltype2=1&countryid2=0&pc2=[hcpc]&CONFIG=[CONFIG]&REDIRURL=%2Ftms%2Fscripts%2Ftgigw.dll%3Fapp%3Dtms%26cmd%3Droute%26output%3Dhtml%26rmode%3Dfast%26&CMD=RESOLVE2&ACTION=1&APP=resolve";
  url = url.replace("[CONFIG]" ,"vesteda");
  url = url.replace("[pc]", postcodeFrom);
  url = url.replace("[hcpc]", postcodeTo);
	
	var routeWin = window.open(url, 'locatienet_route', opts);
	routeWin.focus();
}

/*
	Start het scrollen bij click op een VHE
*/
function adresKaderScroll(direction) {
	var scrollDiv = document.getElementById('WoningAanbodInfoSummary1_summObjectsScrollInner');
	var scrollBar = document.getElementById('scrollPos');
	
	var scrollDivOuterHeight = summObjectsScrollHeight; // hoogte van het omvattende scrolldivje
	var scrollDivHeight = scrollDiv.scrollHeight; // hoogte van het binnenste scrolldivje (dat dus daadwerkelijk gaat scrollen)
	var scrollBarHeight = scrollDivOuterHeight-24; // hoogte van de scrollbalk excl. de pijltjes
	
	var scrollDivStep = 7; // aantal pixels dat scrollDiv moet scrollen per loop
	var scrollDivDistance = scrollDivHeight - scrollDivOuterHeight; // aantal pixels dat dat scrollDiv moet scrollen
	
	var scrollBarStep = Math.round(scrollBarHeight / (scrollDivDistance / scrollDivStep)); // aantal pixels dat scrollBar moet scrollen per loop

	var scrollBarOld = scrollBar.style.marginTop.replace("px", "") * 1;
	var scrollBarNew = scrollBarOld + (direction * scrollBarStep);
	
	var scrollDivOld = scrollDiv.style.marginTop.replace("px", "") * 1;
	var scrollDivNew = scrollDivOld + (-direction * scrollDivStep);
	
	if (scrollBarNew <= 9 || scrollDivNew >= 0) // bovenaan
	{
		scrollBarNew = 9;
		scrollDivNew = 0;
	}
	else if (scrollBarNew >= scrollBarHeight + 9 || scrollDivNew <= -scrollDivDistance) // onderaan
	{
		scrollBarNew = scrollBarHeight + 7;
		scrollDivNew = -scrollDivDistance;
	}
	
	scrollDiv.style.marginTop = scrollDivNew + "px";
	scrollBar.style.marginTop = scrollBarNew + "px";
	
	adresScrollTimer = setTimeout("adresKaderScroll("+direction+")", 35);
}

/*
	Stopt het scrollen dat in gang is gezet
	door adresKaderScroll(direction)
*/
function adresKaderStopScroll() {
	clearTimeout(adresScrollTimer);
}

/*
	Bepaalt of het aantal adressen (projecten) hoger is dan het
	DIVje dat hiervoor gereserveerd is, zo ja, dan wordt de scrollbar
	aan de zijkant van het DIVje getoond.
*/
function activeObjScrollBar() {
	var outerDiv = document.getElementById('WoningAanbodInfoSummary1_summObjectsScroll');
	var scrollDiv = document.getElementById('WoningAanbodInfoSummary1_summObjectsScrollInner');
	var scroller = document.getElementById('WoningAanbodInfoSummary1_objScrollContainer');
	
	if (outerDiv != null && scrollDiv != null) {
		if (scrollDiv.scrollHeight > summObjectsScrollHeight) {
			scroller.style.display = 'block';
		}
		else {
			scroller.style.display = 'none';
		}
	}
}

/*
	Disable enter key by input fields (gebruikt bij "Kaart & route")
*/
function disableEnter(field, event) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13) {
		for (var i = 0; i < field.form.elements.length; i++)
			if (field == field.form.elements[i])
				break;
			return false;
		} 
	else
		return true;
}
