function unobfuscatedEmail(email) {
	email = email.replace('!', '@');
	email = email.replace('#', '.');
	document.write('<a href="mailto:'+ email + '">'+ email + '</a>');
}



function mouseover_highlight(ev) {	
	var elem = ev.target ? ev.target : ev.srcElement;
	
	while (elem.nodeName == 'A') {
		elem = elem.parentNode;	
	}
	
	if ( ev.type == 'mouseout' ) {
		elem.className = elem.className.replace(/hover/g, '');
	} else {		
		elem.className = elem.className + ' hover';
	}
}




function toggle_visible(elem) {
	if ( elem.className.match(/hidden/g) )   elem.className = elem.className.replace(/hidden/g, '');
	else elem.className = elem.className + ' hidden';
}




function listselect_init(list) {

	var items   = list.getElementsByTagName('li');
	for (var i=0 ; i<items.length ; i++) {
		if (window.attachEvent) {
			items[i].attachEvent('onmouseover', 		mouseover_highlight);
      items[i].attachEvent('onmouseout', 			mouseover_highlight);
      items[i].attachEvent('onclick',         listselect_select);
    } else {
     	items[i].addEventListener('mouseover', 	mouseover_highlight, false);
     	items[i].addEventListener('mouseout', 	mouseover_highlight, false);
     	items[i].addEventListener('click',      listselect_select, false);
    }
	}
}


function listselect_select(e) {
	
	var itemsel = e.target ? e.target : e.srcElement;	
	// open?
	if (itemsel.parentNode.className == 'listselect')  {
		itemsel.parentNode.className = 'listselectFolded';
		return;
	}	
	// select one & close	
	var list    = itemsel.parentNode;
	var items   = list.getElementsByTagName('li');
	for (var i=0 ; i<items.length ; i++) items[i].className = '';
	itemsel.className = 'selected';
	itemsel.parentNode.className = 'listselect';
	
	// actions
	if (list.id == 'ls_dest') searchEventChangedCountry();
	if (list.id == 'ls_type') searchEventChangedCategory();
}

function listselect_fold(e) {
	var list = e.target ? e.target : e.srcElement;	
	
	//if (list.className == 'listselectFolded') list.className = 'listselect';
}




// Initialize a left-menu block (mouseovers on li's)
function init_menublock(ul_menu) {
	var items = ul_menu.getElementsByTagName('li');
	for (var i=0 ; i<items.length ; i++) {
		if (window.attachEvent) {
			items[i].attachEvent('onmouseover', 		mouseover_highlight);
      items[i].attachEvent('onmouseout', 			mouseover_highlight);
      items[i].attachEvent('onclick', 				menublock_click);
    } else {
     	items[i].addEventListener('mouseover', 	mouseover_highlight, false);
     	items[i].addEventListener('mouseout', 	mouseover_highlight, false);
     	items[i].addEventListener('click', 			menublock_click, false);
    }
    // also set on children-hrefs
		for (var j=0 ; j<items[i].childNodes.length  ; j++) {
			if (items[i].childNodes[j].nodeName != 'A') continue;

			if (window.attachEvent) {
				items[i].childNodes[j].attachEvent('onmouseover', 		mouseover_highlight);
	      items[i].childNodes[j].attachEvent('onmouseout', 			mouseover_highlight);
	    } else {
	     	items[i].childNodes[j].addEventListener('mouseover', 	mouseover_highlight, false);
	     	items[i].childNodes[j].addEventListener('mouseout', 	mouseover_highlight, false);
	    }
	  }
	}
}

function menublock_click(ev) {	
	var item = ev.target ? ev.target : ev.srcElement;	
	
	// find A-tag, follow the href
	for (var i=0 ; i<item.childNodes.length  ; i++) {
		if (item.childNodes[i].nodeName == 'A') {
			
			// target=new window?
			if (item.childNodes[i].target != '')
				window.open(item.childNodes[i].href,'gmt_second',"");
			else 
				location.href = item.childNodes[i].href;
				
			return;
		}
	}	
}




function swap_a_visible(e) {
	var elem = e.target ? e.target : e.srcElement;	
	
	while (elem.nodeName != 'A') { elem = elem.parentNode;	}
	
	var imgs = elem.getElementsByTagName('IMG');	
	for (var i=0 ; i<imgs.length ; i++) toggle_visible(imgs[i]);
}

function swap_a_init(item) {
	if (window.attachEvent) {
		item.attachEvent('onmouseover', 		swap_a_visible);
		item.attachEvent('onmouseout', 			swap_a_visible);
	} else {
		item.addEventListener('mouseover', 	swap_a_visible, false);
		item.addEventListener('mouseout', 	swap_a_visible, false);
	}
}




function init_blockmenubar(parent) {
	var elements = parent.getElementsByTagName('li');
	var totalWidth = 0;
	var maxHeight = 0;
	
	for (var i=0 ; i<elements.length ; i++) {
		elements[i].style.cssText + " float:left;"
		if (elements[i].offsetHeight > maxHeight) maxHeight = elements[i].offsetHeight;
		totalWidth += elements[i].offsetWidth;	
	}
	
	parent.style.height = maxHeight + 'px';

	var containerSize = parent.offsetWidth;
	var toPad = containerSize - totalWidth;
	var addPerElement = Math.floor(toPad / (elements.length - 1) );

	for (i=0 ; i<(elements.length - 1) ; i++) {
		elements[i].style.paddingRight = addPerElement + 'px';		
	}	

	return;			
}



function add_toplink() {
	
	var contentdiv = document.getElementById('d_middle_content');
	
	if (contentdiv.offsetHeight > 450) {
		contentdiv.innerHTML = contentdiv.innerHTML + '<div id="toplinkfinal"><a href="#top">Naar boven<img src="/webinclude/common/images/top_bullet.png" style="padding-left: 5px;" border="0" /></a></div>';
	}	
	
}



window.onload = function() {	
	
	//add_toplink();
	
	var allElements = document.getElementsByTagName('*');
	
	for (var i=0 ; i<allElements.length ; i++) {
		if (allElements[i].className == '') continue;
		
		// select dropdowns
		if (/listselect/.test(allElements[i].className)) 				listselect_init(allElements[i]);
		
		if (/swapchild_link/.test(allElements[i].className)) 		swap_a_init(allElements[i]); 
		
		if (/menu_list/.test(allElements[i].className)) 				init_menublock(allElements[i]); 
		
		if (/blockmenu/.test(allElements[i].className)) 				init_blockmenubar(allElements[i]); 
		
	}
	
	

}


/* menu_listinit:
 *
 * Initialize labels corresponding to a list. Labels are organised in a list, and their id contains the country code.
*/
function map_listinit(list) {
	if (!list) return;

	var labels = list.getElementsByTagName('li');
	map_init_labels(labels);
	
	return;
}



/* menu_listinit:
 *
 * Initialize labels corresponding to a list. Labels are organised in a table, and a single label is contained by a div containing the country code in its id
*/
function map_tableinit(table) {
	if (!table) return;	
	
	var labels = table.getElementsByTagName('div');
	map_init_labels(labels);
	
	return;
}


/* map_init_labels:
 *
 * Set the mouseover/mouseout actions
*/
function map_init_labels(labels) {
	if (!labels) return;
	
	for (var i=0 ; i<labels.length ; i++) {
		
		if (window.attachEvent) {
			labels[i].attachEvent('onmouseover', 		map_label_mouseover);
      labels[i].attachEvent('onmouseout', 		map_label_mouseout);
      labels[i].attachEvent('onclick', 				menublock_click);
    } else {
     	labels[i].addEventListener('mouseover', map_label_mouseover, false);
     	labels[i].addEventListener('mouseout', 	map_label_mouseout, false);
     	labels[i].addEventListener('click', 		menublock_click, false);
    }
    
    // and also set event for the Anchors
		for (var j=0 ; j<labels[i].childNodes.length  ; j++) {
			if (labels[i].childNodes[j].nodeName != 'A') continue;

			if (window.attachEvent) {
				labels[i].childNodes[j].attachEvent('onmouseover', 		map_label_mouseover);
	      labels[i].childNodes[j].attachEvent('onmouseout', 		map_label_mouseout);
	    } else {
	     	labels[i].childNodes[j].addEventListener('mouseover', map_label_mouseover, false);
	     	labels[i].childNodes[j].addEventListener('mouseout', 	map_label_mouseout, false);
	    }
	  }
	}
}



function map_label_mouseover(e) {
	var target = e.target ? e.target : e.srcElement;	
	
	// event on Anchor: find label
	while (target.nodeName == 'A') {
		target = target.parentNode;	
	}
	
	// highlight label
	target.className = target.className + ' hover';
	
	// get country countrycode: id has format mapselect1_countrycode
	var id_split = target.id.split("_");
	var country_code = id_split[(id_split.length - 1)];
	
	var id_flashproxy = '';
	for (var i=0 ; i<(id_split.length - 1) ; i++) {
		id_flashproxy += id_split[i] + '_';
	}
	
	if (!country_code) return;
	if (!id_flashproxy) return;
	
	country_code = country_code.toUpperCase();

	// wait small amount of time: browser will eval changes first
	setTimeout(id_flashproxy+"flashProxy.call('ExternalCountryOn', '"+country_code+"')", 5);
}


function map_label_mouseout(e) {
	var target = e.target ? e.target : e.srcElement;	
	
	// event on Anchor: find label
	while (target.nodeName == 'A') {
		target = target.parentNode;	
	}
	
	// highlight label
	target.className = target.className.replace(/hover/g, '');
	
	// get country countrycode: id has format mapselect1_countrycode
	var id_split = target.id.split("_");
	var country_code = id_split[(id_split.length - 1)];
	
	var id_flashproxy = '';
	for (var i=0 ; i<(id_split.length - 1) ; i++) {
		id_flashproxy += id_split[i] + '_';
	}
	
	if (!country_code) return;
	if (!id_flashproxy) return;
	
	country_code = country_code.toUpperCase();

	// wait small amount of time: browser will eval changes first
	setTimeout(id_flashproxy+"flashProxy.call('ExternalCountryOff', '"+country_code+"')", 5);
}

function map_labelfocus(id) {
	var label = document.getElementById(id.toLowerCase());
	if (!label) return;	
	
	// IE has some troubles: first de-hover all other ones, so we won't highlight 2 at the same time
	if (label.tagName == 'LI') {
		// list
		var labels = label.parentNode.getElementsByTagName('LI');
		for (var i=0 ; i < labels.length ; i++) {
			labels[i].className = labels[i].className.replace(/hover/g, '');
		}
	} else {
		// table: todo
	}
	
	
	label.className = label.className + ' hover';
}

function map_labelblur(id) {
	var label = document.getElementById(id.toLowerCase());
	if (!label) return;
	
	label.className = label.className.replace(/hover/g, '');
}

function map_labelclick(id) { 
	var label = document.getElementById(id.toLowerCase());
	
	var anchors = label.getElementsByTagName('a');
	if (!anchors) return;
	
	location.href = anchors[0].href;
	
	
}





function searchbar_other_click() {
	var list = document.getElementById('ls_other');

	var items   = list.getElementsByTagName('li');
	
	for (var i=0 ; i<items.length ; i++) {

		if (items[i].className == 'selected') {
		
			if (items[i].id == 'ls_other_all') return false;
			
			domain = items[i].innerHTML.replace(' ', '');	
			
			var w_url = 'http://www.'+domain+'/';
			
			var other_a = document.getElementById('searchbar_other_link');
			other_a.href = w_url;

			return true;
			
			/*
			var day = new Date();
			var w_name = day.getTime();
			
			window.open(w_url, w_name, '');
			*/
		}
	}
	
	return false;
}




function contact_validateform() {
	
	if (
					(document.getElementById('form_name').value == '')		|| 
					(document.getElementById('form_email').value == '') 	||
					(document.getElementById('form_phonenumber').value == '') 	||
					(document.getElementById('form_message').value == '') 		|| 
					(! /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(  document.getElementById('form_email').value  ) ) ||
					(document.getElementById('form_travelbudget').selectedIndex < 0)
					
			) {
				
		alert('Je hebt niet alle verplichte velden volledig en correct ingevuld. Controleer de gegevens en druk opnieuw op "verzenden".');
		
		return false;
	}
	
	document.getElementById('form_spamcheck').value = 1;
	return true;	
}






function mailing_validateform() {
	if (
					(! /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(  document.getElementById('form_email').value  ) )
			) {
				
		alert('Je hebt je e-mail adres niet (correct) ingevuld. Vul je e-mail adres (correct) in en druk opnieuw op "verzenden".');
		return false;
	}
	return true;	
}




function makeRequest(url, onreadyHandler) {
	var http_request = false;

	if (window.XMLHttpRequest) { 
		// normal, neat way
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) {
		// IE :)
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Jouw browser ondersteund bepaalde methoden niet. Gebruik de onderstaande menus.');
		return false;
	}
	
	http_request.onreadystatechange = function() { 
		if ( (http_request.readyState == 4) && (http_request.status == 200) ) { onreadyHandler(http_request.responseXML); }
	};
	
	http_request.open('GET', url, true);
	http_request.send(null);
}


function searchChangeCountries(xmltree) {
	
	var olist = document.getElementById('ls_dest');
	var olist_elem = olist.getElementsByTagName('li');
	
	// remember active one
	var olist_elem_active = false;
	for (var i=0 ; i<olist_elem.length ; i++) {
		if (olist_elem[i].className.match(/selected/g)) 
			olist_elem_active = olist_elem[i].id.replace('ls_dest_', '');
	}
	
	// empty list, re-add default
	while (olist.childNodes.length > 0) olist.removeChild( olist.childNodes.item(0) );
	var newli = document.createElement("LI");
	newli.innerHTML = 'Alle bestemmingen';
	newli.id = 'ls_dest_all';
	if (window.attachEvent) {
		newli.attachEvent('onmouseover', 			mouseover_highlight);
    newli.attachEvent('onmouseout', 			mouseover_highlight);
    newli.attachEvent('onclick',         	listselect_select);
  } else {
   	newli.addEventListener('mouseover', 	mouseover_highlight, false);
   	newli.addEventListener('mouseout', 		mouseover_highlight, false);
   	newli.addEventListener('click',      	listselect_select, false);
  }
	olist.appendChild(newli);
	
	
	// readd new ones
	var countries = xmltree.getElementsByTagName('country');
	var activeset = false;
	for (var i=0 ; i<countries.length ; i++) {
		var newli = document.createElement("LI");
		newli.innerHTML = countries[i].getAttribute('name');
		newli.id = 'ls_dest_'+countries[i].getAttribute('code');
		
		if (olist_elem_active == countries[i].getAttribute('code')) {
			newli.className = 'selected';
			activeset = true;
		}
		
		if (window.attachEvent) {
			newli.attachEvent('onmouseover', 		mouseover_highlight);
      newli.attachEvent('onmouseout', 		mouseover_highlight);
      newli.attachEvent('onclick',        listselect_select);
    } else {
     	newli.addEventListener('mouseover', mouseover_highlight, false);
     	newli.addEventListener('mouseout', 	mouseover_highlight, false);
     	newli.addEventListener('click',     listselect_select, false);
    }
		
		olist.appendChild(newli);
	}
	
	if (!activeset)  olist.childNodes[0].className = 'selected';
}

function searchChangeCategories(xmltree) {
	var olist = document.getElementById('ls_type');
	var olist_elem = olist.getElementsByTagName('li');
	
	// remember active one
	var olist_elem_active = false;
	for (var i=0 ; i<olist_elem.length ; i++) {
		if (olist_elem[i].className.match(/selected/g)) 
			olist_elem_active = olist_elem[i].id.replace('ls_type_', '');
	}

	// empty list, re-add default
	while (olist.childNodes.length > 0) olist.removeChild( olist.childNodes.item(0) );
	var newli = document.createElement("LI");
	newli.innerHTML = 'Elk reistype';
	newli.id = 'ls_type_all';
	if (window.attachEvent) {
		newli.attachEvent('onmouseover', 			mouseover_highlight);
     newli.attachEvent('onmouseout', 			mouseover_highlight);
     newli.attachEvent('onclick',         	listselect_select);
   } else {
   	newli.addEventListener('mouseover', 	mouseover_highlight, false);
   	newli.addEventListener('mouseout', 		mouseover_highlight, false);
   	newli.addEventListener('click',      	listselect_select, false);
  }
	olist.appendChild(newli);
	
	
	// readd new ones
	var categories = xmltree.getElementsByTagName('category');	
	var activeset = false;
	for (var i=0 ; i<categories.length ; i++) {
		var newli = document.createElement("LI");
		newli.innerHTML = categories[i].getAttribute('name');
		newli.id = 'ls_type_'+categories[i].getAttribute('code');
		
		if (olist_elem_active == categories[i].getAttribute('code')) {
			newli.className = 'selected';
			activeset = true;
		}
		
		if (window.attachEvent) {
			newli.attachEvent('onmouseover', 			mouseover_highlight);
      newli.attachEvent('onmouseout', 			mouseover_highlight);
      newli.attachEvent('onclick',         	listselect_select);
    } else {
     	newli.addEventListener('mouseover', 	mouseover_highlight, false);
     	newli.addEventListener('mouseout', 		mouseover_highlight, false);
     	newli.addEventListener('click',      	listselect_select, false);
    }
    
		olist.appendChild(newli);
	}
	
	if (!activeset)  olist.childNodes[0].className = 'selected';

}



function searchEventChangedCountry() {
	var list = document.getElementById('ls_dest');
	var items = list.getElementsByTagName('li');
	
	var chosen = false;	
	for (var i=0 ; i<items.length ; i++) {
		if (items[i].className.match(/selected/g)) 
			chosen = items[i].id.replace('ls_dest_', '');
	}
	
	makeRequest('/aanbodxml/?country='+chosen, searchChangeCategories);
}

function searchEventChangedCategory() {
	var list = document.getElementById('ls_type');
	var items = list.getElementsByTagName('li');
	
	var chosen = false;	
	for (var i=0 ; i<items.length ; i++) {
		if (items[i].className.match(/selected/g)) 
			chosen = items[i].id.replace('ls_type_', '');
	}
	
	makeRequest('/aanbodxml/?category='+chosen, searchChangeCountries);
}


function searchEventGo() {
	
	var list_typeul = document.getElementById('ls_type');	
	var list_type = list_typeul.getElementsByTagName('li');
	var chosen_type = false;	
	for (var i=0 ; i<list_type.length ; i++) {
		if (list_type[i].className.match(/selected/g)) 
			chosen_type = list_type[i].id.replace('ls_type_', '');
	}
	
	var list_destul = document.getElementById('ls_dest');
	var list_dest = list_destul.getElementsByTagName('li');
	var chosen_dest = false;	
	for (var i=0 ; i<list_dest.length ; i++) {
		if (list_dest[i].className.match(/selected/g)) 
			chosen_dest = list_dest[i].id.replace('ls_dest_', '');
	}
	
	if (!chosen_type || !chosen_dest) return true;
	window.location = '/zoekbargo/?type='+ chosen_type +'&dest=' + chosen_dest;
	return false;	
	
}






/* SEARCHBAR */


