// JavaScript Document
var last_dd = null;
var searchpl_entered = false;
var searchpl_txt = "";
var zoekuriv6 = "/zoek";
var searchurl = zoekuriv6+"/#";
var pageclick = null;
var fprocessed = false;
var lastdocwindow = null;
var mainsearchtext = false;
var mainsearchtext_orig = null;

document.observe("dom:loaded", function() {   
	if (Prototype.Browser.IE) { maploader = window.map8; }
	else { maploader = window.document.map8; }
	
	$$('span[title]').each(function(elem) {
			if(!elem.hasClassName('noclick')) {
				elem.onclick = dospanclick;
			}
			elem.className = 'spanclick';
			elem.onmouseover = dospanmouseover;
			elem.onmouseout = dospanmouseout;
	});
	
	if ($('kws')) {
		$('kws').observe('keypress',function (e) {
			if (e.keyCode == Event.KEY_RETURN) {
				chkstxt = checkMainSearchText('enter');
				if (chkstxt) { investigateKeyword(); }
				else { alert(gentrans["mssgvulkeyw"]); }
			}
		}).observe('focus',function (e) { checkMainSearchText('focus'); }).observe('blur',function (e) { checkMainSearchText('blur'); });
	}
	
	if (sitesection == "search") { $j.historyInit(historypageload); }
});

function dospanclick() {
	if (this.title.startsWith('blank_')) {
		title = this.title.substring(6);
		window.open(title,"_blank");
	}
	else {
		redirQPage(this.title);
	}
	
}

function dospanmouseover() {
	this.addClassName('spanclick-hover');
}

function dospanmouseout() {
	this.removeClassName('spanclick-hover');
}

function loadDropdown(ddname,param,source) {
	Event.observe(document.body,'click',checkMouseClick);
	if (param == "changeA") {
		params = getDdParamList(ddname,false,false);
		$('dd_a_top').update("<div class='dd_loading'><img src='/img/loading/loadpagewhite_16.gif' /></div>");
		new Ajax.Request("/ajax/aj_dropdowncount", { onSuccess: returnLoadDropdown, method: "post", parameters: "list="+params });
	}
	else {
		if (isLayerDisplayed("list_dd_"+ddname)) {
			$('list_dd_'+ddname).hide();
		}
		else {
			params = "list="+getDdParamList(ddname,false,false);
			hideLastDropdown();
			last_dd = ddname;
			$('list_dd_'+ddname).show();
			if (ddname == "pl" && source != 'button') {
				if (searchpl_txt == "") { searchpl_txt = $("dd_pl").value; }
				
				if (searchpl_entered) { 
					$("dd_pl").select();
					/* if (dd.pl != '0' && dd.pl != '')
					params += "&keyword="+$("dd_pl").value; */
				}
				else  {
					$("dd_pl").value = "";
				}
				
			}
			else {
				if (ddname == "ad") { limg = "/img/main/loader/a_trans_16.gif"; }
				else { limg = "/img/main/loader/a_trans_16.gif"; } 
				$('list_dd_'+ddname).update("<div class='dd_loading'><img src='"+limg+"' /></div>");
			}
			new Ajax.Request("/ajax/aj_dropdowncount", { onSuccess: returnLoadDropdown, method: "post", parameters: params });
		}
	}
}
function hideLastDropdown() {
	if (last_dd != null) {
		$("list_dd_"+last_dd).hide();
	}
}

function investigateKeyword() {
	if (mainsearchtext == false || $('kws').value == "") { alert(gentrans["mssgvulkeyw"]); }
	else {
		var params = "section=1&keyword="+$('kws').value;
		new Ajax.Request("/ajax/investigatekeyword", { onSuccess: returnInvestigateKeyword, method: "post", parameters: params });
	}
}
function returnInvestigateKeyword(data) {
	var obj = data.responseJSON;
	if (!Object.isUndefined(obj.error)) {
		alert(obj.error);
	}
	else {
		/*if (!Object.isUndefined(obj.sc_keyword) && checkSc()) { 
			searchprops = [{"prop": "prop2", "val" : obj.sc_keyword}];
			setScTracking(searchprops,"prop2","event2");
		}*/
		if (!Object.isUndefined(obj.multicors)) {
			$("ajloadermssg").show();
			$("ajloadermssg").update(obj.multicors);
		}
		else {
			if (!Object.isUndefined(obj.redir)) {
				redir = obj.redir;
				//$("maincontent").innerHTML = gentrans["bezigladen"]+" <img src='/img/loading/loadingpoints4.gif' width='15' height='9'>";
				if (sitesection == "search") { $j.historyLoad(redir,true); }
				else { redirQPage(obj.domain+zoekuriv6+"/#"+redir); }
			}
			else if (!Object.isUndefined(obj.pageredir)) {
				redirQPage(obj.pageredir);
			}
		}
	}
	$("ajloader").hide();
}



function updateDdPlace() {
	params = "list="+getDdParamList("pl",false,false)+"&keyword="+$("dd_pl").value;
	setSearchPlEntered();
	new Ajax.Request("/ajax/aj_dropdowncount", { onSuccess: returnLoadDropdown, method: "post", parameters: params });
}

function returnLoadDropdown(data) {
	var obj = data.responseJSON;
	elem = $(obj.dropdowndata.id).update(obj.dropdowndata.content);
	if (obj.dropdowndata.dropdown == "ad" && dd.mnd != '0') {
		dd.mnd = '0';
		updateDdName("mnd","- "+gentrans['allmnd']+" -");
	}
	if (!Object.isUndefined(obj.debug)) { 
		$('crumbsbar').update(obj.debug); 
	}
	if (!Object.isUndefined(obj.apers_list)) { 
		apers_list = obj.apers_list;
	} 
	//hideshow(dropdownid,'show');
}

function checkMouseClick(event) {
	var element = $(Event.element(event));
	ename = element.identify();
	piece3 = ename.substring(0,3);
	piece7 = ename.substring(0,7);
	if (piece3 != "dd_" && piece3 != "a__" && piece7 != "list_dd") {
		hideLastDropdown();
		Event.stopObserving(document.body,'click',checkMouseClick);
	}
}

function isLayerDisplayed(dropdownid) {
	display = $(dropdownid).getStyle('display');
	if (display == "" || display == "none") {
		return false;
	}
	else {
		return true;
	}
}

function setSearchPlEntered() {
	if (searchpl_entered == false) { searchpl_entered = true; }
}

function checkSearchPlEntered() {
	if (searchpl_entered == false) { $("dd_pl").value = searchpl_txt; }
}

function highlightPlaceInput() {
	new Effect.Highlight('dd_pl',{ startcolor: "#479000", endcolor:"#FFFFFF", keepBackgroundImage:true });
	return false;
}

function rollArPlace(placeid,dir) {
	if (!Object.isUndefined(maploader)) {
		maploader.doRoll(placeid,dir,false);
	}
}

function selectArPlace(placeid) {
	if (!Object.isUndefined(maploader)) {
		maploader.selectPlace(placeid, false);
	}
}

function getDdParamList(ddname,forcename,delval) {
	var list = Object.clone(dd);
	list.dropdown = ddname;
	list.forcename = forcename;
	if (delval != false) {
		list.delval = delval;
	}
	return Object.toJSON(list);
}

function selectItem(param, val, itemtxt, source) { 
	if (param == "pl" && val.startsWith('pl=')) {
		pl = val.toQueryParams("_");
		if (!Object.isUndefined(pl.pl)) dd.pl = pl.pl;
		
		if (!Object.isUndefined(pl.subpl)) dd.subpl = pl.subpl;
		else dd.subpl = '0';
		dd.area = '0';
	}
	else {
		dd[param] = val;
		checkUnsetDdVals(param,val);
	}
	forcename = false;
	if (itemtxt != "" && itemtxt != "null" && itemtxt != null) { updateDdValue(param,itemtxt); }
	else if ($("a__"+param+"_"+val) != null) { updateDdValue(param, $("a__"+param+"_"+val).innerHTML); }
	else { forcename = true;  }
	params = getDdParamList(param,forcename,false);
	hideLastDropdown();
	switch (param) {
		case "pl":	
			if (source == "ddcount") { selectArPlace(val); }
			else if (source == "flash") { highlightPlaceInput(); }
			break;
		case "area":
			if (source == "flash") { highlightPlaceInput(); }
			break;
		case "mnd": deleteSearchParam('ad','x','n'); break;
	}
	new Ajax.Request("/ajaxshare/engine6/aj_handleparameters", { onSuccess: returnSelectItem, method: "post", parameters: "list="+params });
}

function checkUnsetDdVals(param,val) {
	switch (param) {
		case 'area': dd['pl'] = '0'; dd['subpl'] = '0'; break;
		case 'pl': dd['area'] = '0'; dd['subpl'] = '0'; break;
		case 'subpl': dd['area'] = '0'; break;
		case 'rgo' : dd['page'] = '0'; dd['sup'] = '0'; dd['rgsk'] = '0'; break;
		case 'page': 
			if (val == 1) { dd['page'] = '0'; }
			break;
		default: dd['page'] = '0'; dd['orgkw'] = '0'; break;
	}
}

function updateDdValue(param,val) {
	if (param == "nig") { param = "verb" }
	if (param == "area") { param = "pl" }
	if ($("dd_"+param)) {
		val = String(val);
		
		if (param == "pl") { $('dd_pl').value = val; }
		else { 
			if (val.length > 22) val = val.substring(0,22)+"&hellip;";
			$("dd_"+param).update(val); 
		}
	}
}

function deleteSearchParam(param,delval,reloadit) {
	params = getDdParamList(param,false,delval);
	new Ajax.Request("/ajaxshare/engine6/aj_handleparameters", { onSuccess: returnSelectItem, method: "post", parameters: "reload="+reloadit+"&list="+params });
}

function returnSelectItem(data) {
	obj = data.responseJSON;
	//if (!Object.isUndefined(obj.time)) alert(obj.time);
	if (!Object.isUndefined(obj.set)) {
		obj.set.each(function(itm) {
			dd[itm.param] = itm.val;
			if (!Object.isUndefined(itm.text)) {
				updateDdName(itm.param,itm.text);
			}
			if (!Object.isUndefined(itm.pulsate)) {
				if ($("dd_"+itm.param)) { pulsateDd("dd_"+itm.param); }
			}
		});
	}
	
	if (!Object.isUndefined(obj.ddname)) {
		obj.ddname.each(function(itm) { 
			updateDdName(itm.param,itm.value);				 
		});
	}
	
	if (!Object.isUndefined(obj.flashmap)) { loadFlashMap(obj.flashmap,''); }
	
	if (obj.reloadsearch == "y") { goSearch("json","y",0); }
}

function selectDay(param, val, itemtxt) {
	if ($("a__chkdaydiff")) {
		if ($("a__chkdaydiff").checked) {
			txtdaydiff = $("a__txtdaydiff").value;
			if (Object.isNumber(Number(txtdaydiff))) {
				if (txtdaydiff > 0) { val += txtdaydiff; }
			}
		}
	}
	selectItem(param, val, itemtxt)
}

function goSearch(type,sethistory,onlydd) {
	//type = "normal";
	var jsonlist = getSearchParameters(type,sethistory);
	params = "list="+jsonlist;
	if (onlydd == 1) { 
		params += "&onlydd=1";
		if ($('resbar_top')) {
			Effect.ScrollTo('resbar_top');
		}
	}
	//onlydd => only dropdowns, no other params
	new Ajax.Request("/ajaxshare/engine6/aj_searchuri", { onSuccess: returnGoSearch, method: "post", parameters: params });
}

function returnGoSearch(data) {
	obj = data.responseJSON;
	if (sitesection == "search") { 
		hashouses = (Object.isUndefined(obj.nohouses)) ? "1" : "0";
		//setHbxValues(hashouses); 
	}
	if (obj.output == "json") {
		if (obj.sethistory == "y") {
			$j.historyLoad(obj.crunchparams,false);
		}
		reloadResults(obj.crunchparams);
	}
	else {
		searchurl = zoekuriv6+"/#"+obj.crunchparams;
		redirQPage(searchurl);
	}
}

function getSearchParameters(output,sethistory) {
	var list = Object.clone(dd);
	if (!Object.isUndefined(list.dropdown)) {
		delete list.dropdown;
	}
	if (output != "") {
		list.output = output;
	}
	if (sethistory != "") {
		list.sethistory = sethistory; 
	}
	return Object.toJSON(list);
}

function reloadResults(params) {
	showLoadingResults();
	new Ajax.Request('/ajaxshare/engine6/aj_search', { onSuccess: returnReloadResults, method: "post", parameters: params });
}

function returnReloadResults(data) {
	obj = data.responseJSON;
	if (forceddnames) {
		forceddnames = false;
		if (!Object.isUndefined(obj.varnames)) {
			obj.varnames.each(function(varname) { updateDdName(varname.k,varname.v); });
		}
	}
	if (!Object.isUndefined(obj.nohouses)) { 
		$('nohouses').show(); 
		$('resultcontainer').update("");
	}
	else { 
		$('nohouses').hide(); 
		listcontent = (!Object.isUndefined(obj.listcontent)) ? obj.listcontent : "&nbsp;";
		$('resultcontainer').update(listcontent);
	}
	leftbarcontent = (!Object.isUndefined(obj.leftbarcontent)) ? obj.leftbarcontent : "&nbsp;";
	mysearchcontent = (!Object.isUndefined(obj.mysearchcontent)) ? obj.mysearchcontent : "&nbsp;";
	if (!Object.isUndefined(obj.orgkw)) { 
		$('kws').value = obj.orgkw;
		mainsearchtext = true;
	};
	$('as_selection_container').update(leftbarcontent);
	$('ysearch').update(mysearchcontent);
	if (!Object.isUndefined(obj.funct)) {  obj.funct.each(function(f) {  eval(f); }); }
	//if (isMapVisible()) { populateMap({}); }
	//else { hideLoadingResults(); } 
	hideLoadingResults();
	checkEnq();
	
	offtop = document.viewport.getScrollOffsets().top;
	containerbottom = ($("resultcontainer").positionedOffset().top + $('resultcontainer').getDimensions().height - 50);
	if ((offtop > containerbottom) || pageclick == "down") { 
		pageclick = null;
		Effect.ScrollTo('contentcontainer');
	}
	
	/*if (!Object.isUndefined(obj.sc) && checkSc()) {
		setScTracking(obj.sc,obj.scprop,"event2");
	} */
	
}

function showLoadingResults() {
	$('as_selection_container').setOpacity(0.3);
	$('maincontent').setOpacity(0.3);
	toppx = (document.viewport.getDimensions().height/2) - 24 + document.viewport.getScrollOffsets().top;
	leftpx = $('resultcontainer').getWidth();
	$('searchloading').setStyle({top:toppx+' px',left:leftpx+' px'});
	$('searchloading').show();
}

function hideLoadingResults() {
	$('searchloading').hide();
	$('maincontent').setOpacity(1);
	$('as_selection_container').setOpacity(1);
	$('resultcontainer').highlight({duration:1, startcolor:"#EAF0CE", restorecolor:"#FFFFFF"});
}

function redirQPage(uri) {
	window.location = uri;
}

function historypageload(hash) {
	if(!hash) {
		hash = "";
	}
	historyReload(hash);
}

function historyReload(data) {
	if (!Object.isUndefined(orgdd)) {
		params = Object.toJSON(orgdd);
		pardata = "list="+params+"&"+data;
		new Ajax.Request("/ajaxshare/engine6/aj_decode_param", { onSuccess: returnHistoryReload, method: "post", parameters: pardata });
	}
}

function returnHistoryReload(data) {
	var obj = data.responseJSON;
	dd = obj.newdd;
	forceddnames = true;
	goSearch("json","n",0);
	if (dd.corsmap == "open") {
		if (!Object.isUndefined(obj.mapstate)) {
			mapstate = obj.mapstate;
		}
		else {
			mapstate = '';
		}
		checkInitGMap(true,false,mapstate);
	}
	return true;
}

function updateDdName(param,text) {
	if (param == "nig") { param = "verb"; }
	else if (param == "area") { param = "pl"; }
	if ($("dd_"+param) && text != "") {
		if ($("dd_"+param).hasClassName('text')) { $("dd_"+param).value = text; }
		else { $("dd_"+param).update(text);  }
	}
}

function isMapVisible() {
	return ($('mapcontainer').style.display != "none");
}

function createStarSlider(min_ster,max_ster) {
	starmin = 1;
	starmax = 5;
	totrange = $R(starmin,starmax);
	starslider = new Control.Slider(['starslider1','starslider2'],'startrack',{ 
		sliderValue:[min_ster,max_ster], range:totrange, 
		onSlide:function(v){ 
			if (v[0] > starmin && $('starslider1').getStyle('z-index') != 2) { $('starslider1').style.zIndex = 2; $('starslider2').style.zIndex = 1; }
			if (v[1] < starmax && $('starslider2').getStyle('z-index') != 2) { $('starslider1').style.zIndex = 1; $('starslider2').style.zIndex = 2; }
			currange = $R(v[0],v[1]);
			totrange.each(function(star) {
				modus = (currange.include(star)) ? "on" : "off";
				if ($('star'+star)) { $('star'+star).src = "/img/main/search/slider/st"+star+"_"+modus+".gif"; }
			});
		}, 
		onChange:function(v){
			if (v[0] == starmax) { $('starslider1').style.zIndex = 2; $('starslider2').style.zIndex = 1; }
			if (v[1] == 1) { $('starslider1').style.zIndex = 1; $('starslider2').style.zIndex = 2; }
			if (v[0] != min_ster || v[1] != max_ster) { changeSearchParam(dd,'st',v); }
		}, 
		values:[1,2,3,4,5], 
		restricted:true
	});
}
strr = "";
function createSleepSlider(rooms) {
	roommin = 0;
	roommax = 6;
	totrange = $R(roommin,roommax);
	sleepslider = new Control.Slider('sleepslider1','sleeptrack',{ 
		sliderValue: rooms,range:totrange, 
		values:[0,1,2,3,4,5,6],
		onSlide:function(v){ 
			totrange.each(function(i) {
				modus = (rooms == i) ? "on" : "off";
				$('sleep'+i).src = "/img/main/search/slider/sl"+i+"_"+modus+".gif";
			});
		},
		onChange:function(v){
			changeSearchParam(dd,'sl',v);
		}
	});
}

function changeSearchParam(obj,param, val) {
	if (!Object.isUndefined(dd[param])) {
		if (Object.isArray(dd[param]) && param != "st") {
			var inarray = false;
			for (i=0; i < dd[param].length; i++) {
				if (dd[param][i] == val) {
					dd[param].splice(i,1);
					inarray = true;
					break;
				}
			}
			if (!inarray) {
				dd[param].push(val);
			}
		}
		else {
			dd[param] = val;
		}
		if (param != "page") {
			dd.page = '0';
		}
		dd.orgkw = '0';
		goSearch("json","y",0);
	}
}

function goToPage(page,place) {
	pageclick = place;
	changeSearchParam(dd,'page',page);
}
function setEnqTip(id,content) {
	//get title from basicparams
	new Tip(id, content, {
		title: "Gastenbeoordeling",
		style: 'protogrey',
		stem: 'bottomMiddle',
		hook: { target: 'topMiddle', tip: 'bottomMiddle' }
	});
}
function checkEnq() {
	$$('.enquete').each(function(elem) { setEnqTip(elem.id,elem.rel); });
}

function changeSort() {
	val = $('sort').getValue();
	changeSearchParam(dd,'sort',val);
}

function in_array (needle, haystack, argStrict) {
    var key = '', strict = !!argStrict; 
    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) { return true; }
        }
    } 
	else {
        for (key in haystack) {
            if (haystack[key] == needle) { return true; }
        }
    }
	return false;
}

function showMoreNearby(bool) {
	if (bool) {
		$("nearby_hide").show();
		$("nearby_more").hide();
	}
	else {
		$("nearby_hide").hide();
		$("nearby_more").show();
	}
}

function updatePlSelect(text, li) {
	dd.pl = li.id
	checkUnsetDdVals("pl",dd.pl)
	subid = li.readAttribute('subid');
	if (subid != "") {
		dd.subpl = subid;
		checkUnsetDdVals("subpl",subid);
	}
	else dd.subpl = '0';
}

function loadCal(mnd,modus,monthname) {
	if (mnd == '' && dd.mnd != '0') {
		mnd = dd.mnd;
	}
	dd.mnd = mnd;
	loadDropdown('ad','changeA','');
}

function handleDayDiff() {
	if ($("a__chkdaydiff").checked == true) { var chkdaydiff = 1; }
	else { var chkdaydiff = 0; }
	var txtdaydiff = $("a__txtdaydiff").value;
	new Ajax.Request("/ajaxshare/engine6/aj_calendar_daydiff", { method: "post", parameters: "chkdaydiff="+chkdaydiff+"&txtdaydiff="+txtdaydiff });
}

function autoCheckDayDiff() {
	$("a__chkdaydiff").checked = true;
	handleDayDiff();

}

function checkSendContactForm(){
	formdata = $('frm_contact').serialize();
	if (fprocessed == false) {
		fprocessed = true;
		new Ajax.Request('/content/ajax/aj_process_contactform.php', { onSuccess: returnCheckSendContactForm, method: "post", parameters: formdata });
	}
}

function returnCheckSendContactForm(data) {
	fprocessed = false;
	obj = data.responseJSON;
	if (!Object.isUndefined(obj.error)) {
		$('form_errors').update(obj.error);
		$('form_errors').show();
		$('form_message').hide();
		$('form_errors').scrollTo();
	}
	else if (!Object.isUndefined(obj.mssg)) {
		$('form_message').update(obj.mssg);
		$('form_errors').hide();
		$('form_message').show();
		$('frm_contact').reset();
	}
	
}

function checkSendNewsletterForm(dir){
	formdata = $('frm_nl').serialize();
	formdata += "&dir="+dir;
	if (fprocessed == false) {
		fprocessed = true;
		new Ajax.Request('/content/ajax/aj_process_newsletterform.php', { onSuccess: returnCheckSendNewsletterForm, method: "post", parameters: formdata });
	}
}

function returnCheckSendNewsletterForm(data) {
	fprocessed = false;
	obj = data.responseJSON;
	if (!Object.isUndefined(obj.error)) {
		$('form_errors').update(obj.error);
		$('form_errors').show();
		$('form_message').hide();
		$('form_errors').scrollTo();
	}
	else if (!Object.isUndefined(obj.mssg)) {
		$('form_message').update(obj.mssg);
		$('form_errors').hide();
		$('form_message').show();
		$('form_message').scrollTo();
		$('frm_nl').reset();
	}
	
}

function toggleDockWindow(type) {
	elem = "dockwindow_"+type;
	if (elem != lastdocwindow && lastdocwindow != null) { $(lastdocwindow).hide(); }
	Effect.toggle(elem, 'blind', { duration: 0.5 });
	lastdocwindow = elem;
}

function highlightDockItem(elem) {
	Effect.Pulsate(elem,{duration:1, pulses: 3});
}

function checkMainSearchText(state) {
	if (state == 'focus') {
		if (mainsearchtext == false) { 
			mainsearchtext_orig = $('kws').value;
			$('kws').value = "";
		}
		else { $('kws').select(); }
	}
	else if (state == 'blur') {
		if ($('kws').value == "") { $('kws').value = mainsearchtext_orig; }
		else { mainsearchtext = true; }
	}
	else if (state == 'enter' && $('kws').value != "") { mainsearchtext = true; }
	return mainsearchtext;
}