/* Global html id names */
var mapName = 'map';
var contentName = 'content';
var contentDivName = 'contentDiv';
var tableBodyName = 'campingsfoundbody';
var mapInfo = 'mapInfo';
var searchFormName = 'searchForm';
var usearchFormName = 'usearchForm';
var usearchFormBttn = 'usearchbutton';
var uSearchDivName = 'uSearchDiv';

var campingName = 'camping';

var tabcontentName = 'tabcontent';

var contentTabDivName = 'contenttabDiv';

var campingInfoArray = 'campingInfoArray';
var lastVisitedCampingsList = 'lastVisitedCampingsList';
var lastVisitedCampings = new Array();

/* Functions */
function checkUsearch()
{
	var usearchForm = document.getElementById(usearchFormName);
	if(usearchForm != null)
	{
		document.getElementById(usearchFormBttn).click();
		return false;
	}
	return true;
}

function encrypt(form_name) {
	form_name.password.value = hex_sha1(form_name.pass.value);
	form_name.pass.value = '';
	if(typeof form_name.pass2 != 'undefined' && form_name.pass2.value != '')
	{
		form_name.password2.value = hex_sha1(form_name.pass2.value);
		form_name.pass2.value = '';
	}
	if(typeof form_name.opass != 'undefined' && form_name.opass.value != '')
	{
		form_name.opassword.value = hex_sha1(form_name.opass.value);
		form_name.opass.value = '';
	}
}

function printCamping(camping_arr, dest)
{
	var campingList = document.getElementById(dest);
	if(campingList && camping_arr)
	{
		var lastVisitedCampingsHtml = "";
		for(var i = 0; i < camping_arr.length; i++)
		{
			lastVisitedCampingsHtml += '<li><a href="?campingID='+camping_arr[i][0]+'" onclick="reloadCamping('+"'"+camping_arr[i][0]+"', '', false);changeScreen('0'); return false"+'">'+camping_arr[i][1]+'</a></li>';
		}
		campingList.innerHTML = lastVisitedCampingsHtml;
	}
}

function pushCamping(camping, camping_arr)
{
	if(camping_arr.length == 0 || camping_arr[0][0] != camping[0])
	{
		for(var i = 0; i < camping_arr.length; i++) {
			if(camping_arr[i][0] == camping[0])
				camping_arr.splice(i, 1);
		}
		
		var campingname = camping[1];
		if(campingname.length > 20) {
			campingname = campingname.substr(0, 20) + '...';
		}
		
		camping_arr.splice(0, 0, new Array(camping[0], campingname));
		camping_arr.splice(5, 1);
	}
}

function showpreview(previewid, src, width, height) {
	if(showpreview.preview) {
		showpreview.preview.style.visibility = 'hidden';
		showpreview.preview.style.display = 'none';
	}
	if(previewid) {
		showpreview.preview = document.getElementById(previewid);
		showpreview.preview.innerHTML = '<img src="'+src+'" alt="" width="'+width+'" height="'+height+'" style="border:0px;margin:1px;">';
		showpreview.preview.style.width = (width+2)+"px";
		showpreview.preview.style.height = (height+2)+"px";
		showpreview.preview.style.visibility = 'visible';
		showpreview.preview.style.display = 'block';
	}
	return false;
}

function set_new_window_links() {
	var anchors = document.getElementsByTagName("a");
	for (var i=0; i < anchors.length; i++) {
		var anchor = anchors[i];
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")
			anchor.target = "_blank";
	}
}

function clickSort(sort) {
	var form = document.getElementById(searchFormName);
	var searchSort = form.searchSort;
	var searchOrder = form.searchOrder;
	if(searchSort.options[searchSort.selectedIndex].value != sort) {
		searchOrder.options[0].selected = true;
	}
	else {
		if(searchOrder.options[1].selected)
			searchOrder.options[0].selected = true;
		else
			searchOrder.options[1].selected = true;
	}
	searchSort.options[sort].selected = true;
}

function changeContentDivSize(largeScreen) {
	var tablebody = null;
	var uSearchDiv = document.getElementById(uSearchDivName);
	var contentDiv = document.getElementById(contentDivName).style;
	if(document.getElementById(tableBodyName) != null)
	{
		if(!(navigator.appVersion.match('MSIE 6')))
			tablebody = document.getElementById(tableBodyName).style;
	}
	
	switch(largeScreen)
	{
		case  0 :
		case '0':	if(contentDiv.height == CONTENT_SCREEN_SIZE_MIN.toString()+'px') return ;
					contentDiv.height = CONTENT_SCREEN_SIZE_MIN.toString()+'px';
					if(tablebody) tablebody.height = (CONTENT_SCREEN_SIZE_MIN-18).toString()+'px';
					if(uSearchDiv) uSearchDiv.style.height = (CONTENT_SCREEN_SIZE_MIN-88).toString()+'px';
					break;
		case  1 :
		case '1':	if(contentDiv.height == CONTENT_SCREEN_SIZE_MAX.toString()+'px') return ;
					contentDiv.height = CONTENT_SCREEN_SIZE_MAX.toString()+'px';
					if(tablebody) tablebody.height = (CONTENT_SCREEN_SIZE_MAX-18).toString()+'px';
					if(uSearchDiv) uSearchDiv.style.height = (CONTENT_SCREEN_SIZE_MAX-88).toString()+'px';
					break;
		case  -1 :
		case '-1':
					contentDiv.height = '1px';
		default : 	break;
	}
}

function changeTabcontentSize(height) {
	var tabcontent = document.getElementById(contentTabDivName).style;
	switch(height)
	{
		case  0 :
		case '0':	if(tabcontent.height == (CONTENT_SCREEN_SIZE_MIN-LOGIN_SCREEN_LESS_SIZE).toString()+'px')
						return ;
					tabcontent.height = (CONTENT_SCREEN_SIZE_MIN-LOGIN_SCREEN_LESS_SIZE).toString()+'px';
					break;
		case  1 :
		case '1':	if(tabcontent.height == (CONTENT_SCREEN_SIZE_MAX-LOGIN_SCREEN_LESS_SIZE).toString()+'px')
						return ;
					tabcontent.height = (CONTENT_SCREEN_SIZE_MAX-LOGIN_SCREEN_LESS_SIZE).toString()+'px';
					break;
		case  -1 :
		case '-1':	tabcontent.height = '0px';
					tabcontent.display = 'block';
					document.getElementById(campingName).style.height = (CAMPING_SCREEN_SIZE_MAX-LOGIN_SCREEN_LESS_SIZE).toString()+'px'; 
					break;
		default : break;
	}
}

function resizeScreen(largeScreen) {
	var camping = document.getElementById(campingName).style;
	var contentLike = (document.getElementById(mapName) || document.getElementById(contentTabDivName) || document.getElementById(contentDivName));
	if(contentLike != null)
		contentLike = contentLike.style;
	if(largeScreen == 0)
	{
		camping.height = CAMPING_SCREEN_SIZE_MIN.toString()+'px';
		camping.display = 'block';
		camping.visibility = 'visible';
		
		if(contentLike != null)
		{	/*Visible*/
			contentLike.display = 'block';
			contentLike.visibility = 'visible';
		}
	}
	else if(largeScreen == -1)
	{
		camping.display = 'block';
		camping.height = CAMPING_SCREEN_SIZE_MAX.toString()+'px';
		camping.visibility = 'visible';
		
		if(contentLike != null)
		{	/*Invisible*/
			contentLike.display = 'none';
			contentLike.visibility = 'hidden';
		}
	}
	else if(largeScreen == 1)
	{
		camping.display = 'none';
		camping.visibility = 'hidden';
		camping.height = '1px';

		if(contentLike != null)
		{	/*Visible*/
			contentLike.display = 'block';
			contentLike.visibility = 'visible';
		}
	}
	
	if(document.getElementById(mapName) != null)
		changeMapSize(largeScreen);
	else if(document.getElementById(contentDivName) != null)
		changeContentDivSize(largeScreen);
	else if(document.getElementById(contentTabDivName) != null)
		changeTabcontentSize(largeScreen);
}

function MO_image(imagename, imagesrc) {
	if (document.images) {
		if(typeof imagename != 'undefined' && typeof imagesrc != 'undefined')
		{
			if(image = document.images[imagename])
			{
				MO_image.oldimagename = image.name;
				MO_image.oldimagesrc = image.src;
				image.src = imagesrc;
			}
		}
		else if(MO_image.oldimagename != null && MO_image.oldimagesrc != null)
		{
			document.images[MO_image.oldimagename].src = MO_image.oldimagesrc;
			MO_image.oldimagename = null;
			MO_image.oldimagesrc = null;
		}
	}
}


function newXmlHttp() {
	var xmlHttp;
	try	/* Firefox, Opera 8.0+, Safari */
	{
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		try	/* Internet Explorer 7 or higher */
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try	/* Internet Explorer 6 or lower */
			{	
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{
				try	/* Wild card, this works always */
				{
					xmlHttp=GXmlHttp.create();
				}
				catch (e)
				{
					alert("Your browser does not support AJAX!");
					return false;
				}
			}
		}
	}
	return xmlHttp;
}

function reloadCamping(campingId, additional, refresh) {
	var xmlHttp;
	try {
		xmlHttp = newXmlHttp();
		if(xmlHttp == false)
			return;
	} catch(e) {	/* Voor IE 6, omdat die moeizaam ajax ondersteund */
	}
	
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			document.getElementById(campingName).innerHTML = xmlHttp.responseText;
			set_new_window_links();
			
			if(typeof refresh == 'undefined')
			{
				eval(document.getElementById(campingInfoArray).innerHTML);	/* Update CAMPING_INFO */
				pushCamping(CAMPING_INFO, lastVisitedCampings);
				printCamping(lastVisitedCampings, lastVisitedCampingsList);
			}
		}
	}
	var url = '/camping.ajax.php?campingID='+campingId.toString();
	if(typeof additional != "undefined") url += additional;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function changeScreen(largeScreen) {
	var xmlHttp;
	try {
		xmlHttp = newXmlHttp();
		if(xmlHttp == false)
			return;
	} catch(e) {	/* Voor IE 6, omdat die moeizaam ondersteund */
	}
	
	if(largeScreen != -1 && largeScreen != 0 && largeScreen != 1)
		return;
	
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			/* document.write(xmlHttp.responseText); */
			
			if(xmlHttp.responseText != true)
				return;
		}
	}
	resizeScreen(largeScreen);
	var url = "/large_screen.ajax.php?largeScreen="+largeScreen.toString();
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}



function reloadProv(control, controlToPopulate, text) { /* text MAY be undefined */
	var xmlHttp;
	try {
		xmlHttp = newXmlHttp();
		if(xmlHttp == false)
			return;
	} catch(e) {	/* Voor IE 6, omdat die moeizaam/geen ajax ondersteund */
	}
	
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			/* document.write(xmlHttp.responseText); */
			removeProv(controlToPopulate, text);
			
			var ItemArray=new String(xmlHttp.responseText);
			var myEle;
			var x;
			var splitValues = ItemArray.split(";");
			for ( x = 1 ; x < splitValues.length; x++ ) {
				var option = splitValues[x].split(":");
				
				myEle = document.createElement("option");
				myEle.setAttribute('value',option[0]);
				myEle.setAttribute('text',option[1]);
				/* set Text */
				var txt = document.createTextNode(option[1]);
				myEle.appendChild(txt);
				/* controlToPopulate.add(myEle); */
				controlToPopulate.appendChild(myEle);
				/* splitValues = ItemArray.split(";"); */
			}
		}
	}
	if(control.value.toString() != '0')
	{	
		var url = '/get_prov.ajax.php?land='+control.value.toString();
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
	}
	else
		removeProv(controlToPopulate, text);
}

function removeProv(controlToPopulate, text) {
	for (var q=controlToPopulate.options.length;q>=0;q--) controlToPopulate.options[q]=null;
	myEle = document.createElement('option');
	myEle.setAttribute('value', '0');
	if (typeof text == 'undefined') {
		text = 'Geen voorkeur';
	}
	var txt = document.createTextNode(text);
	myEle.appendChild(txt);
	controlToPopulate.appendChild(myEle);
}

function sendSearch(targetmap, keepzoom, reload) {
	var form = document.getElementById(searchFormName);
	
	if(typeof reload == 'undefined')
		reload = false;
	
	if(reload || (document.getElementById(mapName)==null && document.getElementById(tableBodyName)==null))	/* this will refresh after nothing is found */
	{
		form.submit();
		return ;
	}
	
	var xmlHttp;
	try {
		xmlHttp = newXmlHttp();
		if(xmlHttp == false)
			return;
	} catch(e) {	/* Voor IE 6, omdat die moeizaam ondersteund */
	}
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState == 4)
		{
			if(targetmap) {
				switch(LANGUAGE) {
					case 'EN':	var showDesc = 'Showing campings'; break;
					case 'NL':
					default  :	var showDesc = 'Campings weergeven...'; break;
				}
				document.getElementById(mapInfo).innerHTML = showDesc;
				loadMap('49.00:7.5:5', xmlHttp.responseText, false, false);	/* this is a not used mapCenter */
			}
			else
				document.getElementById(contentName).innerHTML = xmlHttp.responseText;
		}
	}
	
	
	var params = "";
	var elements = form.elements;
	for(var i = 0; i < elements.length; i++)
	{
		if(elements[i].type=='checkbox')
		{
			if(elements[i].checked == true)
				params = params+elements[i].name.toString()+'='+elements[i].value.toString()+'&';
		}
		else
			params += elements[i].name.toString()+'='+elements[i].value.toString()+'&';
	}
	if(document.getElementById(mapName) == null)
		params += 'returnHtml=true&';
	/*else if(getBoundParams != null)
		params += getBoundParams()+'&';*/
	
	if(typeof keepzoom != 'undefined')
		params += 'keepzoom=true';
	
	xmlHttp.open("POST", '/found.ajax.php',true);
	/* Send the proper header information along with the request */
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");
	xmlHttp.send(params);
	
	if(targetmap && document.getElementById(mapInfo))
	{
		switch(LANGUAGE) {
			case 'EN':	var waitDesc = 'Please wait...'; break;
			case 'NL':
			default  :	var waitDesc = 'Een moment geduld...'; break;
		}
		document.getElementById(mapInfo).innerHTML = waitDesc;
	}
}
