function toggleExtended(link, el, force) {
	if(el.style.display == 'block' || force === false) {
		el.style.display = 'none';
		link.innerHTML = 'Toon extra zoekopties';
		var selects = el.getElementsByTagName('select');
		for(var i = 0; i < selects.length; i++) {
			selects[i].disabled = true;
		}
		var inputs = el.getElementsByTagName('input');
		for(var i = 0; i < inputs.length; i++) {
			inputs[i].disabled = true;
		}
	} else if(el.style.display == 'none' || force === true) {
		var selects = el.getElementsByTagName('select');
		for(var i = 0; i < selects.length; i++) {
			selects[i].disabled = false;
		}
		var inputs = el.getElementsByTagName('input');
		for(var i = 0; i < inputs.length; i++) {
			inputs[i].disabled = false;
		}
		el.style.display = 'block';
		link.innerHTML = 'Extra zoekopties verbergen';
	}
	if(force == null) {
		//var conn = new whf_ajax('/service/extendedSearchFields.html?r='+ Math.random(), function(xmlHttp){});
		var conn = new whf_ajax('/service/extendedSearchFields.html?r='+ Math.random(), function(xmlHttp){});
		conn.send();
	}
}

function getPosition(el) {
	var position = {};
	position['x'] = 0;
	position['y'] = 0;
	while(el != null) {
		position['x'] += parseInt(el['offsetLeft']);
		position['y'] += parseInt(el['offsetTop']);
		el = el.offsetParent;
	}
	return position;
}

var sliderMarks = {'A': 5, 'B': 24, 'C': 42, 'D': 62, 'E': 80, 'F': 98, 'G': 116};
var labelTranslation = {'': 0, 'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7};
var reverseLabelTranslation = ['','A','B','C','D','E','F','G'];
var currentPointer = null;
var otherPointer = null;
var pointer1 = null;
var pointer2 = null;
var sliderBarPosition = null;
var minField_energylabel = null;
var maxField_energylabel = null;
var scrollTop = null;

function sliderOnMouseMove(event) {
	if(!event) {
		event = window.event;
	}

	var sliderBarTop = sliderBarPosition['y'];
	var currentPointerPosition = event.clientY + scrollTop - 7;

	if(currentPointerPosition - sliderBarTop >= sliderMarks['A'] && currentPointerPosition - sliderBarTop <= sliderMarks['G']) {
		currentPointer.style.top = (currentPointerPosition - sliderBarTop) +'px';
	}
	colorRange(otherPointer.style.top.replace(/px/, ''), currentPointerPosition - sliderBarTop);

	if(event.stopPropagation) {
		event.stopPropagation();
	} else {
		event.cancelBubble = true;
	}
	return false;
}

function sliderOnMouseDown(event) {
	if(!event) {
		event = window.event;
	}
	scrollTop = (document.documentElement.scrollTop > 0 ? document.documentElement.scrollTop : document.body.scrollTop);
	document.body.onmousemove = sliderOnMouseMove;
	document.body.onmouseup = sliderOnMouseUp;
	if(event.srcElement) {
		currentPointer = event.srcElement;
	} else {
		currentPointer = event.target;
	}
	if(currentPointer.id == 'sliderPointer1') {
		otherPointer = document.getElementById('sliderPointer2');
	} else {
		otherPointer = document.getElementById('sliderPointer1');
	}
	currentPointer.style.zIndex = 100;
	otherPointer.style.zIndex = 99;
}

function sliderOnMouseUp(event) {
	if(!event) {
		event = window.event;
	}
	eLabel = getEnergyLabel(event.clientY + scrollTop);
	document.body.style.backgroundColor = '';
	document.body.onmousemove = null;
	document.body.onmouseup = null;
	setSliderTo(currentPointer, eLabel);

	colorRange();

	if(pointer1.eLabel < pointer2.eLabel) {
		if(pointer1.eLabel == 'A' && pointer2.eLabel == 'G') {
			minField_energylabel.options.selectedIndex = 0;
			maxField_energylabel.options.selectedIndex = 0;
		} else {
			minField_energylabel.options.selectedIndex = labelTranslation[pointer1.eLabel];
			maxField_energylabel.options.selectedIndex = labelTranslation[nextLabel(pointer2.eLabel)];
		}
		postAjaxEnergyLabel();
	} else {
		if(pointer2.eLabel == 'A' && pointer1.eLabel == 'G') {
			minField_energylabel.options.selectedIndex = 0;
			maxField_energylabel.options.selectedIndex = 0;
		} else {
			minField_energylabel.options.selectedIndex = labelTranslation[pointer2.eLabel];
			maxField_energylabel.options.selectedIndex = labelTranslation[nextLabel(pointer1.eLabel)];
		}

		postAjaxEnergyLabel();
	}

	currentPointer = null;
	otherPointer = null;
}

function nextLabel(eLabel) {
	var labels = {'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6};
	var reverseLabels = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];

	var nextLabel = labels[eLabel] + 1;

	if(reverseLabels[nextLabel]) {
		return reverseLabels[nextLabel];
	} else {
		return '';
	}
}

function prevLabel(eLabel) {
	var labels = {'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6};
	var reverseLabels = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];

	var prevLabel = labels[eLabel] - 1;

	if(reverseLabels[prevLabel]) {
		return reverseLabels[prevLabel];
	} else {
		return '';
	}
}

function setSliderTo(el, eLabel) {
	if(eLabel && sliderMarks[eLabel]) {
		el.style.top = sliderMarks[eLabel] +'px';
		el.eLabel = eLabel;
	}
}

function energyLabelClicked(el) {
	var labels = {'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6};
	var clicked = labels[el.getAttribute('label')];
	var p1 = labels[pointer1.eLabel];
	var p2 = labels[pointer2.eLabel];

	if(clicked <= p1) {
		setSliderTo(pointer1, el.getAttribute('label'));
	} else if(clicked >= p2) {
		setSliderTo(pointer2, el.getAttribute('label'));
	} else {
		diffP1 = Math.abs(clicked - p1);
		diffP2 = Math.abs(clicked - p2);
		if(diffP2 <= diffP1) {
			setSliderTo(pointer2, el.getAttribute('label'));
		} else {
			setSliderTo(pointer1, el.getAttribute('label'));
		}
	}

	postAjaxEnergyLabel();
	colorRange();
}

function getEnergyLabel(y) {
	var smallestDiff = null;
	var eLabel = null;
	for(i in sliderMarks) {
		var diff = Math.abs((y - sliderBarPosition['y'] - 7) - sliderMarks[i]);
		if(!smallestDiff || diff < smallestDiff) {
			smallestDiff = diff;
			eLabel = i;
		}
	}
	return eLabel;
}

function colorRange(h1, h2) {
	var el = document.getElementById('sliderbackground');

	if(!h1 && !h2) {
		eLabel1 = sliderMarks[pointer1.eLabel];
		eLabel2 = sliderMarks[pointer2.eLabel];
	} else {
		if(h1 < h2) {
			eLabel1 = h1;
			eLabel2 = h2;
		} else {
			eLabel1 = h2;
			eLabel2 = h1;
		}
	}

	if(eLabel1 < sliderMarks['A']) {
		eLabel1 = sliderMarks['A'];
	} else if(eLabel1 > sliderMarks['G']) {
		eLabel1 = sliderMarks['G'];
	}
	if(eLabel2 < sliderMarks['A']) {
		eLabel2 = sliderMarks['A'];
	} else if(eLabel2 > sliderMarks['G']) {
		eLabel2 = sliderMarks['G'];
	}

	var scrollTop = document.documentElement.scrollTop;
	if(eLabel1 < eLabel2) {
		el.style.top = eLabel1 +'px';
		el.style.height = (eLabel2 - eLabel1) +'px';
	} else {
		el.style.top = eLabel2 +'px';
		el.style.height = (eLabel1 - eLabel2) +'px';
	}
}

function initEnergyLabel() {
	minField_energylabel = document.getElementById('search_energy_label_low');
	maxField_energylabel = document.getElementById('search_energy_label_high');
	
	pointer1 = document.getElementById('sliderPointer1');
	pointer2 = document.getElementById('sliderPointer2');

	if(!reverseLabelTranslation[minField_energylabel.value]) {
		var lo = 'A';
	} else {
		var lo = reverseLabelTranslation[minField_energylabel.value];
	}
	if(!reverseLabelTranslation[parseInt(maxField_energylabel.value)]) {
		var hi = 'G';
	} else {
		var hi = reverseLabelTranslation[parseInt(maxField_energylabel.value)];
	}

	setSliderTo(pointer2, hi);
	setSliderTo(pointer1, lo);
	colorRange();

	pointer1.onmousedown = sliderOnMouseDown;
	pointer2.onmousedown = sliderOnMouseDown;

	sliderBarPosition = getPosition(document.getElementById('sliderBar'));
}

function submitForm(el, otherSubmitButtonId) {
	var el2 = document.getElementById(otherSubmitButtonId);
	el2.click();
	el.disabled = true;
}

// FastSearch functionaliteit:
var fs_req = null;
var fs_timer = null;
var fs_timerId = null;
var fs_status = 0;
var fs_IE = document.all?true:false;
var fs_xmlhttp;
function xmlhttpChange() {
	if(fs_xmlhttp.readyState == 4) {
		if (fs_xmlhttp.status == 200) {
			responseText = fs_xmlhttp.responseText;

			// reset object (firefox gets recursive xmlhttprequests!)
			fs_xmlhttp.onreadystatechange = new Function ('return true;');
			fs_xmlhttp.abort();
			fs_xmlhttp = null;

		   	eval(responseText);
			fs_status = 0;
			hideWait();			
		} else {
			window.status = "There was a problem retrieving data from the server:<BR>\n" + fs_xmlhttp.statusText;
		}
	}
}

function postAjax(name, value){
	if (fs_status != 0){// nog bezig
		setTimeout('postAjax(\''+name+'\',\''+value+'\')',100);
		return;
	}
	fs_status = 1;
	var uri = "./?ajax=1&rnd="+ parseInt(Math.random() * 99999) +"&search_" + name + "=" + value;
	fs_timerId = setTimeout('loadXMLDoc("'+uri+'")',100);
	showWait();
}

function postAjaxEnergyLabel() {
	if(fs_status != 0){
		// nog bezig
		setTimeout('postAjaxEnergyLabel()',100);
		return;
	}
	fs_status = 1;	

	var p1 = labelTranslation[pointer1.eLabel];
	var p2 = labelTranslation[pointer2.eLabel];
	if(p1 > p2) {
		var valueLow = p2;
		var valueHigh = p1;
	} else {
		var valueLow = p1;
		var valueHigh = p2;
	}

	minField_energylabel.selectedIndex = valueLow;
	maxField_energylabel.selectedIndex = Math.min(7, valueHigh + 1);

	var uri = "./?ajax=1&rnd="+ parseInt(Math.random() * 99999) +"&search_energy_label_low=" + valueLow+"&search_energy_label_high=" + valueHigh;
	fs_timerId = setTimeout('loadXMLDoc("'+uri+'")',100);
	showWait();
}

function showWait(){
	
	
	if (!((BrowserDetect.browser == "Explorer") && (BrowserDetect.version < 7 ))) {
	
		document.getElementById('momentaub').className = 'momentaub_overlay';
		document.getElementById('momentaub').innerHTML = 'Een moment aub ...';			
	}
}

function hideWait(){
	document.getElementById('momentaub').className = 'momentaub_overlay_hidden';
	document.getElementById('momentaub').innerHTML = '';
}

function postFull(){
	document.forms['fsearch'].submit();
}

function loadXMLDoc(url) {
//	if (fs_status == 1){ // delay request when queue is not ready yet.
//		setTimeout("loadXMLDoc(\""+url+"\")",10);
//		return false;
//   }

	fs_status = 1;
	// code for Mozilla, etc.
	if (window.XMLHttpRequest) {
	fs_xmlhttp=new XMLHttpRequest();
	fs_xmlhttp.onreadystatechange=xmlhttpChange;
	fs_xmlhttp.open("GET", url, true);
	fs_xmlhttp.send(null);
	} else if (window.ActiveXObject)  {
	fs_xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	if (fs_xmlhttp)
		{
		fs_xmlhttp.onreadystatechange=xmlhttpChange;
		fs_status =1;
		fs_xmlhttp.open("GET",url,true);
		fs_xmlhttp.send();
		}
	}
}

function getXMLHTTP(){
  var nak_A=null;
  try{
	nak_A=new ActiveXObject("Msxml2.XMLHTTP")
  }catch(e){
	try{
	 nak_A=new ActiveXObject("Microsoft.XMLHTTP")
	} catch(oc){
	  nak_A=null
	}
  }
  if(!nak_A && typeof XMLHttpRequest != "undefined") {
	nak_A=new XMLHttpRequest();
	
	}
	return nak_A;  
}


// function fsearchCheckResultAmount() kijkt of er resultaten worden teruggegeven

function fsearchCheckResultAmount(){
	if (!fs_resultAmount == undefined){
		if (fs_resultAmount == 0){
			return confirm('Er zijn geen voertuigen die aan de voorwaarden voldoen');
		}
	}	
	return true;
}


// update functies

var fs_currentFieldName;
var fs_mode = 'create';
var fs_currentNode = 0;

// fieldName: field to update, nrValues: amount of times updateField will be called
function initializeUpdateField(fieldName,nrValues,fieldType){
	
	if (fieldType == 'select' && (document.forms['fsearch'][fieldName] != undefined)){
		fs_currentFieldName = fieldName;
		fs_currentNode = 0;

		//standaard zitten er al twee waarden in!
		if(document.forms['fsearch'][fieldName].options.length == nrValues && (nrValues > 2)){
//			alert (fieldName + ' .. ' + document.forms['fsearch'][fieldName].options.length+ ' '+nrValues);
			fs_mode = 'update';
		} else {
			fs_mode = 'create';
			document.forms['fsearch'][fieldName].options.length = 0;
		}
	} else {
		fs_mode = 'skip';
	}
}

function updateField(_value,_label,_selected,_enabled){

	if(fs_mode == 'skip'){
		return;
	}
	
	if(fs_mode == 'update'){
//		if (document.forms['fsearch'][fs_currentFieldName].options[fs_currentNode].innerHTML != _label){
			document.forms['fsearch'][fs_currentFieldName].options[fs_currentNode].value = _value;
			document.forms['fsearch'][fs_currentFieldName].options[fs_currentNode].innerHTML = _label;
			if (!_enabled){
				document.forms['fsearch'][fs_currentFieldName].options[fs_currentNode].style.color = '#aaaaaa';
			} else {
				document.forms['fsearch'][fs_currentFieldName].options[fs_currentNode].style.color = '#000000';
			}
//		}
		if (_selected){
			document.forms['fsearch'][fs_currentFieldName].options[fs_currentNode].selected = true;			
		}
	} else {
		var oOption = document.createElement('option');
		 oOption.innerHTML = _label;
		 oOption.value = _value;
		 if(!_enabled){
		 	oOption.style.color = '#aaaaaa';
		 }
		 if(_selected){
		 	oOption.selected = true;
		 }
		 document.forms['fsearch'][fs_currentFieldName].appendChild(oOption);

	}
	fs_currentNode++;
}
//
