var locationDIV;
var searchForm;
var xml;
var xslt;
var src_doc;
var isIE = (navigator.appName == "Microsoft Internet Explorer");
var isNav = (navigator.appName == "Netscape" || navigator.appName == "Opera");
var jsCountry = '';
var jsState = '';
var jsRegion = '';
var jsSubRegion = '';
var jsGeograph = '';
var jsRegions = '';
var jsPlace = '';
var jsLanguage = 'de';
var jsLevel1 = '';
var jsLevel2 = '';
var jsLevel3 = '';
var jsLevel1Changed = false;
var jsLevel2Changed = false;
var jsLevel3Changed = false;
var jsPortal = '1';
var jsRequestMethode = '';
var jsSelects = '';
var jsPreselected = '';
var pathAdd = ''; //portal%2F
var waitWindowPosition = '';

//alert('search included');

var searchPath = '/xmlRequest/';

function showImage(imageUrl)
{
	imageBig = new Image();
	imageBig.src = imageUrl;

	document.getElementById('imageBig').src = imageUrl;
	document.getElementById('imageBigDiv').style.visibility = 'visisble';

	//alert(imageBig.height + ' ' + imageBig.width);
}

function showImage(imageUrl)
{
	imageBig = new Image();
	imageBig.src = imageUrl;

	document.getElementById('imageBig').src = imageUrl;
	document.getElementById('imageBigDiv').style.visibility = 'visisble';

	//alert(imageBig.height + ' ' + imageBig.width);
}

function loadlocations(xslfile)
{

	var locationDIV = document.getElementById("locationDIV");

	if (document.getElementsByName('place')[0])
	{
		if (jsPlace == '')
		{
			document.getElementsByName('place')[0].selectedIndex = 0;
		}
	}

	if (jsCountry != '')
	{
		var requestXML = "/xml/regions_" + jsCountry + ".xml";
	}
	else
		{
			var requestXML = "/xml/countries.xml";
		}


		if (isIE)
		{
			// Load XML
			xml = new ActiveXObject("Microsoft.XMLDOM");
			xml.async = false;
			xml.load(requestXML);

			// Load XSL
			xsl = new ActiveXObject("Microsoft.XMLDOM");
			xsl.async = false;
			xsl.load(searchPath + xslfile);

			// Transform
			output = xml.transformNode(xsl);
		}

		if (isNav)
		{
			//for mozilla/netscape
			processor = new XSLTProcessor();
			xslt = document.implementation.createDocument("", "", null);
			xslt.async = false;
			xslt.load(searchPath + xslfile);
			processor.importStylesheet(xslt);

			src_doc = document.implementation.createDocument("","", null);
			src_doc.async = false;
			src_doc.load(requestXML);
			result = processor.transformToDocument(src_doc);
			xmls = new XMLSerializer();
			output = xmls.serializeToString(result);
		}

		locationDIV.innerHTML = output;

	}


	function loadlocations2(xslfile)
	{

		var locationDIV = document.getElementById("locationDIV");

		/* var requestXML = "/xmlRequest/xmlRequest.php?method=locations&country="+jsCountry+"&state="+jsState+"&region="+jsRegion+"&regions="+jsRegions; */

		if (jsCountry != '')
		{
			var requestXML = "/xml/regions_predefine_" + jsCountry + ".xml";
		}
		else
			{
				var requestXML = "/xml/countries_predefine.xml";
			}

			jsState = '';
			jsRegion = '';
			jsSubRegion = '';

			// set location parameters
			if (jsLevel1)
			{
				var idLevel1 = jsLevel1.split('|')[0];
				var typeLevel1 = jsLevel1.split('|')[1];
				switch (typeLevel1)
				{
					case 'S' : jsState = idLevel1; break;
					case 'R,G' : jsRegion = idLevel1; break;
					case 'SR' : jsSubRegion = idLevel1; break;
				}
			}
			if (jsLevel2)
			{
				var idLevel2 = jsLevel2.split('|')[0];
				var typeLevel2 = jsLevel2.split('|')[1];
				switch (typeLevel2)
				{
					case 'S' : jsState = idLevel2; break;
					case 'R,G' : jsRegion = idLevel2; break;
					case 'SR' : jsSubRegion = idLevel2; break;
				}
			}
			if (jsLevel3)
			{
				var idLevel3 = jsLevel3.split('|')[0];
				var typeLevel3 = jsLevel3.split('|')[1];
				switch (typeLevel3)
				{
					case 'S' : jsState = idLevel3; break;
					case 'R,G' : jsRegion = idLevel3; break;
					case 'SR' : jsSubRegion = idLevel3; break;
				}
			}

			if (isIE)
			{


				// Load XML
				xml = new ActiveXObject("Microsoft.XMLDOM");
				xml.async = false;
				xml.load(requestXML);

				// Load XSL
				xsl = new ActiveXObject("Microsoft.XMLDOM");
				xsl.async = false;
				xsl.load(searchPath + xslfile);


				output = xml.transformNode(xsl);

			}

			if (isNav)
			{
				//for mozilla/netscape
				processor = new XSLTProcessor();
				//alert(jsCountry+'|'+jsState+'|'+jsRegion+'|'+jsSubRegion);
				processor.setParameter('', 'isolang', jsLanguage);
				processor.setParameter('', 'country', jsCountry);
				processor.setParameter('', 'state', jsState);
				processor.setParameter('', 'region', jsRegion);
				processor.setParameter('', 'subregion', jsSubRegion);
				xslt = document.implementation.createDocument("", "", null);
				xslt.async = false;
				xslt.load(searchPath + xslfile);
				processor.importStylesheet(xslt);

				src_doc = document.implementation.createDocument("","", null);
				src_doc.async = false;
				src_doc.load(requestXML);
				result = processor.transformToDocument(src_doc);
				xmls = new XMLSerializer();
				output = xmls.serializeToString(result);
			}

			locationDIV.innerHTML = output;

		}


/*

 third version

*/

var xmlDoc = null;

function loadlocations3()
{
	// get search form
	var searchForm = document.getElementById("searchForm");

	document.getElementById("searchForm").style.cursor = 'wait';
	for(i=0;i<document.getElementsByTagName("select").length;i++)
	{
		document.getElementsByTagName("select")[i].style.cursor = 'wait';
	}


  // decide xml data to parse
	if (jsCountry == 'C2mTVqfRD')
	{
		// country is predefine
		var requestXML = "xml%2F" + pathAdd + "predefine%2Fregions_predefine_" + jsCountry + ".xml";
		var requestXSL = "xmlRequest%2FsearchLocationPredefine.xsl";
	}
	else
	{
    // country is not predefine
		if (jsCountry != '')
		{
			var requestXML = "xml%2F" + pathAdd + "regions_" + jsCountry + ".xml";
		}
		else
		{
			var requestXML = "xml%2F" + pathAdd + "regions_" + jsCountry + ".xml"; //countries.xml";
		}

		var requestXSL = "xmlRequest%2FsearchLocationNoPredefine.xsl";

	}

	// set/reset location parameters

	if (jsLevel1Changed == true) // LEVEL 1 changed (reset unneeded)
	{
		var idLevel1 = jsLevel1.split('|')[0];
		var typeLevel1 = jsLevel1.split('|')[1];
		switch (typeLevel1)
		{
			case 'S' : jsState = idLevel1; jsRegion = ''; jsSubRegion = ''; jsPlace = ''; break;
			case 'R,G' : jsRegion = idLevel1; jsState = ''; jsSubRegion = ''; jsPlace = ''; break;
			case 'SR' : jsSubRegion = idLevel1; jsState = ''; jsRegion = ''; jsPlace = ''; break;
			default   : jsState = ''; jsRegion = ''; jsSubRegion = ''; jsPlace = ''; break;
		}
		jsLevel1Changed = false;
	}

	if (jsLevel2Changed == true) // LEVEL 2 changed (reset unneeded)
	{
		var idLevel2 = jsLevel2.split('|')[0];
		var typeLevel2 = jsLevel2.split('|')[1];
		switch (typeLevel2)
		{
			case 'S' : jsState = idLevel2; jsRegion = ''; jsSubRegion = ''; jsPlace = ''; break;
			case 'R,G' : jsRegion = idLevel2; jsSubRegion = ''; jsPlace = '';break;
			case 'SR' : jsSubRegion = idLevel2; jsRegion = ''; jsPlace = ''; break;
			default   : jsRegion = ''; jsSubRegion = ''; jsPlace = ''; break;
		}
		jsLevel2Changed = false;
	}

	if (jsLevel3Changed == true) // LEVEL 3 changed (reset unneeded)
	{
		var idLevel3 = jsLevel3.split('|')[0];
		var typeLevel3 = jsLevel3.split('|')[1];
		switch (typeLevel3)
		{
			case 'S' : jsState = idLevel3; jsRegion = ''; jsSubRegion = ''; jsPlace = ''; break;
			case 'R,G' : jsRegion = idLevel3; jsSubRegion = ''; jsPlace = ''; break;
			case 'SR' : jsSubRegion = idLevel3; jsPlace = ''; break;
			default   : jsSubRegion = ''; jsPlace = ''; break;
		}
		jsLevel3Changed = false;
	}

  // reset place
	if (document.getElementsByName('place')[0])
	{
		if (jsPlace == '')
		{
			document.getElementsByName('place')[0].selectedIndex = 0;
		}
	}


	// get other select values
	if (document.getElementsByTagName("select"))
	{
		selectArray = new Array();
		for(i=0; i < document.getElementsByTagName("select").length; i++)
		{
			selectName = document.getElementsByTagName("select")[i].name;
			selectIndex = document.getElementsByTagName("select")[i].selectedIndex;
			selectValue = document.getElementsByTagName("select")[i].options[selectIndex].value;
			if (selectValue)
			{
			  selectArray.push(selectName + "=" + selectValue);
			}
		}
		jsSelects = selectArray.join("%26");
	}

	// reformat startDate
	if (document.getElementsByName("startDate_day")[0] && document.getElementsByName("startDate_month")[0])
	{
		jsStartDateMonth = document.getElementsByName("startDate_month")[0].options[document.getElementsByName("startDate_month")[0].selectedIndex].value;
		jsStartDateDay = document.getElementsByName("startDate_day")[0].options[document.getElementsByName("startDate_day")[0].selectedIndex].value;
	  jsStartDate = jsStartDateMonth.substring(0,4) + "-" + jsStartDateMonth.substring(4,6) + "-" + jsStartDateDay;
	  jsSelects += "%26startDate=" + jsStartDate;
	}

	//alert(jsSelects);

  // add needed location parameters
	requestXML += "%3F"+"portal="+jsPortal+"%26isolang="+jsLanguage+"%26country="+jsCountry+"%26state="+jsState+"%26region="+jsRegion+"%26subregion="+jsSubRegion+"%26"+jsSelects+"%26preselected="+jsPreselected;

	// initialize http request
	if (window.ActiveXObject)
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLHTTP"); // Mircosoft
		xmlDoc.onreadystatechange = process ;
	}
	else
	{
		xmlDoc = new XMLHttpRequest(); // Others
		xmlDoc.onload = process ;
	}

	// parse xml data true xsl preprocessor
	if (jsRequestMethode == 'local')
	{
		// local request
		xmlDoc.open("GET", "index.php?method=xslt&xml=.."+requestXML+"&xsl=.."+requestXSL+"&output=html", true);
		//xmlDoc.setRequestHeader( "Content-type", "text/html;charset=ISO-8859-1" );
		xmlDoc.send( null );

		//document.write("/xmlRequest/xmlRequest2.php?method=xslt&xml="+requestXML+"&xsl="+requestXSL+"&output=html");

	}
	else
	{
		// xsl server
		//tobi, bitte  hier korrigieren auf www.tourist-online oder IP wo arxkit geht
		//alert(searchPath + "get.php?url=http%3A%2F%2Fwww.tourist-online.de%3A8000%2F" + requestXML);
		//geandert auf hosting18 IP, arxkit auf 23er und 24er geht nicht
		//diese Woche Felix Form einarbeiten, 27.07.2009
		xmlDoc.open( "GET", searchPath + "get.php?url=http%3A%2F%2F91.190.147.92%3A8000%2F"+requestXML, true);
		xmlDoc.send( null );
	}
}

function process()
{
	// document is parsed, refresh form data
	if ( xmlDoc.readyState != 4 ) return ;
	document.getElementById("searchForm").innerHTML = xmlDoc.responseText;
	checkDays('startDate');

	document.getElementById("searchForm").style.cursor = 'default';
	for(i=0;i<document.getElementsByTagName("select").length;i++)
	{
		document.getElementsByTagName("select")[i].style.cursor = 'default';
	}

}

function daysOfMonth(month, year) {
	for(var x=28; x<=31; ++x) {
		if(new Date(year,month-1,x).getMonth()
		!=new Date(year,month-1,1).getMonth())
		break;
	}
	return x-1;
}

function checkDays(name)
{
	if (document.getElementsByName(name + "_month").length && document.getElementsByName(name + "_day").length)
	{
	 maxDays = daysOfMonth((document.getElementsByName(name + "_month")[0].options[document.getElementsByName(name + "_month")[0].selectedIndex].value.substring(4,6)*1), (document.getElementsByName(name + "_month")[0].options[document.getElementsByName(name + "_month")[0].selectedIndex].value.substring(0,4)*1));
	 if (document.getElementsByName(name + "_day")[0].value > maxDays)
	   document.getElementsByName(name + "_day")[0].value = maxDays;
	 if ((document.getElementsByName(name + "_month")[0].selectedIndex > 0) && (document.getElementsByName(name + "_day")[0].value == 0))
	   document.getElementsByName(name + "_day")[0].selectedIndex = 1;
	 if (document.getElementsByName(name + "_weekday").length)
	 {
	 	 if ((document.getElementsByName(name + "_month")[0].selectedIndex > 0) && (document.getElementsByName(name + "_day")[0].selectedIndex > 0))
	 	 {
	 	   year  = (document.getElementsByName(name + "_month")[0].options[document.getElementsByName(name + "_month")[0].selectedIndex].value.substr(0, 4));
	 	   month = (document.getElementsByName(name + "_month")[0].options[document.getElementsByName(name + "_month")[0].selectedIndex].value.substr(4));
	 	   day   = (document.getElementsByName(name + "_day")[0].options[document.getElementsByName(name + "_day")[0].selectedIndex].value);
	 	   selectedDate = new Date(year, month - 1, day);
	 	   if (typeof weekDays != 'undefined')
	 	   {
	 	     document.getElementsByName(name + "_weekday")[0].value = weekDays[selectedDate.getDay()];
	 	   }
	   }
	   else
	   {
	     document.getElementsByName(name + "_weekday")[0].value = '';
	   }
	 }
	}
}




			function waitWindow(waitingMessage, waitingID, waitingVisibility)
			{
				if (waitingVisibility == '')
				waitingVisibility = 'hidden';

				var windowWidth, windowHeight;
				if (navigator.appName == 'Microsoft Internet Explorer')
				{
					if (document.body && document.body.offsetWidth)
					{
						windowWidth = document.body.offsetWidth;
					}
					else windowWidth = 1024;
						if ((document.body && document.body.offsetHeight))
						{
							windowHeight = document.body.offsetHeight;
						}
						else windowHeight = 600;
						}
						else
							{
								windowWidth = window.innerWidth;
								windowHeight = window.innerHeight;
							}

							document.write('<div id="'+waitingID+'" class="waitWindow" style="top:');
							var position = (windowHeight - 150) / 2-30;
							if (waitWindowPosition == 'portal')
							{
								position = (windowHeight + 200) / 2 - 30;
							}
							document.write(position);
							document.write('px;left:');
							position = (windowWidth-400)/2;
							if (waitWindowPosition == 'portal')
							{
								position = 220;
							}
							document.write(position);
							document.write('px;');
							document.write('visibility:'+waitingVisibility+'">');
							document.write(waitingMessage+'</div>');

						}

						function showWindow(waitingID)
						{
							if (document.getElementById(waitingID))
							document.getElementById(waitingID).style.visibility = "visible";
						}

						function hideWindow(waitingID)
						{
							if (document.getElementById(waitingID))
							document.getElementById(waitingID).style.visibility = "hidden";
						}

						function hidePlaces()
						{
							if(document.getElementsByName('place')[0] && document.getElementById('tab3'))
							{
								if(!document.getElementById("browseTop") && !document.getElementById("browseSides"))
								{
									if (document.getElementsByName('place')[0].options[document.getElementsByName('place')[0].selectedIndex].value == '')
									{
										document.getElementById('tab3').innerHTML = '';
									}
								}
							}
						}



/*
fooImage = new Image();
fooImage.src = "/img/shw.gif";
*/

function unloadImage()
{
	if (document.getElementById) {
		document.getElementById("imgPrv").style.visibility = 'hidden';
		document.getElementById("imgPrv").style.display = 'none';
		document.getElementById("imgPrv").innerHTML = '';
		document.getElementById("imgPrv").style.left  = '1px';
		document.getElementById("imgPrv").style.top = '1px';
	} else if (document.all) {
		document.all.imgPrv.style.visibility = 'hidden';
		document.all.imgPrv.style.display = 'none';
		document.all.imgPrv.innerHTML = '';
		document.all.imgPrv.style.left = '1px';
		document.all.imgPrv.style.top = '1px';
	}
}

function loadImage(evt, imageUrl)
{
	// get event
	if (!evt)
	evt = window.event;

	// get current cursor position
	positionX = mouseX(evt);
	positionY = mouseY(evt);

	// set image and display
	if (document.getElementById) {
		document.getElementById("imgPrv").style.visibility = 'visible';
		document.getElementById("imgPrv").style.display = 'block';
		document.getElementById("imgPrv").innerHTML = '<div class="imgBorder"><img src="' + imageUrl + '" alt=""></div>';
		document.getElementById("imgPrv").style.left  = (positionX + 10) + 'px';
		document.getElementById("imgPrv").style.top = (positionY + 10) + 'px';
	} else if (document.all) {
		document.all.imgPrv.style.visibility = 'visible';
		document.all.imgPrv.style.display = 'block';
		document.all.imgPrv.innerHTML = '<div class="imgBorder"><img src="' + imageUrl + '" alt=""></div>';
		document.all.imgPrv.style.left  = (positionX + 10) + 'px';
		document.all.imgPrv.style.top = (positionY + 10) + 'px';
	}
}

function mouseX(evt)
{
	if (evt.pageX) return evt.pageX;
	else if (evt.clientX)
	return evt.clientX + (document.documentElement.scrollLeft ?
	document.documentElement.scrollLeft :
	document.body.scrollLeft);
	else return null;
}

function mouseY(evt)
{
	if (evt.pageY) return evt.pageY;
	else if (evt.clientY)
	return evt.clientY + (document.documentElement.scrollTop ?
	document.documentElement.scrollTop :
	document.body.scrollTop);
	else return null;
}