/*
javascripts für alle geo-relevanten funktionen
*/

/*
sucht nach bestimmtem ort
*/
/*
function goForLocation()
{
	/*
	document.getElementById('ort').value = arguments[0];
	document.getElementById('lat').value = arguments[1];
	document.getElementById('lng').value = arguments[2];
	document.getElementById('km').selectedIndex = gDefaultKmIndex;
	document.getElementById('stichwort').value = '';
	
	document.getElementById('ort').value = '';
	document.getElementById('lat').value = 0;
	document.getElementById('lng').value = 0;
	document.getElementById('km').selectedIndex = 0;
	document.getElementById('stichwort').value = arguments[0];
	
	suchen(document.forms['eingabeform']);
	*/
/*
	top.location.href = 'morgen.php?ortsid='+arguments[3];
}
*/

/*
findet die absolute position eines elementes
wird für die postionierung der orte-results verwendet
*/
function findPos(obj) {
	var curleft = curtop = 0;
	
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return new Array(curleft,curtop);
}



/*
gibt eine liste mit allen orten/plz/kanton zurück
*/
var locationInput;
var lastHit = 0;
var an;
function getLocations()
{
	if(gSuchtag == 'heute' || gSuchtag == 'morgen')
	{
		document.getElementById('ort').style.color		= '#000';
		document.getElementById('km').style.color	 	= '#000';
		document.getElementById('sterne').style.color 	= '#000';
		document.getElementById('stichwort').style.color = '#000';
	}

	if(arguments[0]) locationInput = arguments[0];
	v = arguments[0].value;
	n = arguments[0].id;
	// bestimmte eindeutige zahl (wenn profiles?)
	if(arguments.length > 1) z = arguments[1];
	else z = '';
	
	if(document.location.href.indexOf('account') > -1) feed = '../';
	//else if(document.location.href.indexOf('myprofiles') > -1) feed = '../';
	else feed='';
	
	feed += 'xml/locations.xml.php?q='+v;
	if(z) feed += '&z='+z;
	
	// top-treffer als link?
	//if(arguments[2]) feed+= '&t=1';
	
	resultdiv = document.getElementById('results');
	pos = findPos(arguments[0]);
	resultdiv.style.left = pos[0]+'px';
	resultdiv.style.top = (pos[1]+18)+'px';
	overlaydiv = document.getElementById('overlay');

	if(v.length < 2) 
	{
		resultdiv.style.display = 'none';
		overlaydiv.style.display = 'none';
		if(document.eingabeform || document.newprofilsform)
			document.getElementById('km'+z).selectedIndex = 0;
		return;
	}
	
	// zeitpunkt der Tastatureingabe
	now = Date.parse(new Date());
	// verstrichene Zeit seit der letzten Eingabe
	passed = now - lastHit;
	
	if(passed < 1000) 
	{
		lastHit = now;
		if(an) window.clearTimeout(an);
		an = window.setTimeout(function() { getLocations(locationInput); }, 100);
		return;	
		
	}
	
	lastHit = now;



	r = makeRequest();
	r.open('GET', feed, true);
	r.onreadystatechange = function()
	{
		switch(r.readyState) 
	    { 
    	  case 0:
	      case 1: 
    	  case 2: 
	      case 3: return; 
    	  case 4: break; 
	    }
		if(r.readyState == 4 && r.status == 200)
		{
			// nichts
			if(r.responseText == 'none')
			{
				resultdiv.style.display = 'none';
				overlaydiv.style.display = 'none';
				document.getElementById('km'+z).selectedIndex = 0;
				//suchen(document.forms['eingabeform']);
				
				if(document.all && document.forms['profilform'])
					document.forms['profilform'].style.display = 'block';

			}
			// toptreffer
			else if(r.responseText.indexOf('<p class="top">') > 0)
			{
				temp = r.responseText.split('|');
				document.getElementById('ort'+z).value = temp[1];
				if(document.eingabeform || document.newprofilesform)
				{
					document.getElementById('lat'+z).value = temp[2];
					document.getElementById('lng'+z).value = temp[3];
					document.getElementById('km'+z).selectedIndex = gDefaultKmIndex;
					// results automatisch nach ein paar sekunden ausblenden
					if(an) window.clearTimeout(an);
					an = window.setTimeout(function() 
					{
						resultdiv.style.display = 'none';
						overlaydiv.style.display = 'none';
					}, 
					4000);
				}
				else
				{
					document.getElementById('ortsid').value = temp[0];
				}

				//ie6 div/select/z-index-bug
				if(document.all && document.forms['profilform'])
					document.forms['profilform'].style.display = 'none';

				resultdiv.style.display = 'block';
				resultdiv.innerHTML = temp[4];
				overlaydiv.style.display = 'block';
				if(document.all)
				{
					overlaydiv.style.height = (document.getElementById('inhalt').offsetHeight+document.getElementById('inhalt').offsetTop)+'px';
				}
				else
				{
					overlaydiv.style.height = window.innerHeight+'px';
					overlaydiv.style.top = window.pageYOffset+'px';
				}
				overlaydiv.onclick = function()
				{
					overlaydiv.style.display = 'none';
					resultdiv.style.display = 'none';
					//ie6 div/select/z-index-bug
					if(document.all && document.forms['profilform'])
						document.forms['profilform'].style.display = 'block';
				}
				
				if(document.forms['eingabeform']) suchen(document.forms['eingabeform']);
			}
			// diverse gefunden
			else
			{
				//ie6 div/select/z-index-bug
				if(document.all && document.forms['profilform'])
					document.forms['profilform'].style.display = 'block';

				resultdiv.innerHTML = r.responseText;
				resultdiv.style.display = 'block';
				
				if(document.forms['eingabeform'])
				{
					document.getElementById('lat'+z).value = 0;
					document.getElementById('lng'+z).value = 0;
					document.getElementById('km'+z).selectedIndex = 0;
				}
				overlaydiv.style.display = 'block';
				if(document.all)
				{
					overlaydiv.style.height = (document.getElementById('inhalt').offsetHeight+document.getElementById('inhalt').offsetTop)+'px';
				}
				else
				{
					overlaydiv.style.height = window.innerHeight+'px';
					overlaydiv.style.top = window.pageYOffset+'px';
				}

				overlaydiv.onclick = function()
				{
					overlaydiv.style.display = 'none';
					resultdiv.style.display = 'none';
					//ie6 div/select/z-index-bug
					if(document.all && document.forms['profilform'])
						document.forms['profilform'].style.display = 'block';
				}
			}
			hasStarted = 0;
		}
	}
	r.send(null);
}


/*
wählt eine gewünschte location
*/

function selectLocation()
{
	locationInput.value = arguments[1];
	document.getElementById('results').style.display = 'none';
	document.getElementById('overlay').style.display = 'none';
	
	// falls eingabeformular
	if(document.forms['eingabeform'])
	{
		document.getElementById('lat').value = arguments[2];
		document.getElementById('lng').value = arguments[3];
		document.getElementById('km').selectedIndex = gDefaultKmIndex;
		suchen(document.forms['eingabeform']);
	}
	
	// falls profil-erfassungs-formular
	else if(document.forms['newprofilesform'])
	{
		z = arguments[4];
		document.getElementById('lat'+z).value = arguments[2];
		document.getElementById('lng'+z).value = arguments[3];
		document.getElementById('km'+z).selectedIndex = gDefaultKmIndex;
	}
	
	// falls myaccount
	else
	{
		document.getElementById('ortsid').value = arguments[0];
	}
	
	//ie6 div/select/z-index-bug
	if(document.all && document.forms['profilform'])
		document.forms['profilform'].style.display = 'block';
}