var http_request = false;
var browser = navigator.appName;
var out = new Array();
var speedstest_updateobj = false;

var providerSelected = false;
var speedSelected = false;
var zipFilled = false;
var streetFilled = false;
var zipChanged = false;
var streetChanged = false;

var streetResultLon = "";
var streetresultLat = "";
var streetresultChk = "";
var streetResultReady = false;



function newRequest()
{
	var ro;

	if(browser == "Microsoft Internet Explorer"){
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		ro = new XMLHttpRequest();
	}
	return ro;
} // function


function showZipNextBtn()
{
	if(typeof speedtester != "undefined" && speedtester) 
	{
		return;
	}
	document.getElementById('city_result').innerHTML = '<a href="javascript:void(0);" onclick="getCityByZIP(document.getElementById(\'speedtest_plz\')); return false;">weiter</a>';
}


function setCityByZIP()
{
	if (http_request.readyState == 4) 
	{
		if (http_request.status == 200) 
		{	
			var xmldoc = "";
			var city = "";
			if(browser == "Microsoft Internet Explorer")
			{
				xmldoc = http_request.responseText;
				if(xmldoc.indexOf("result city=\"false\"") < 0)
				{
					
					city = xmldoc.substr(xmldoc.indexOf("city=")+6,xmldoc.indexOf("/",xmldoc.indexOf("city="))-(xmldoc.indexOf("city=")+6)-1);
					document.getElementById('city_by_plz').value = city;
					document.getElementById('city_result').innerHTML = city;
					document.getElementById('city_result').style.display = 'block';
					document.getElementById('speedtest_plz').setAttribute("onfocus", "onZipFocus();");
				}
				else
				{
					setAlertMessage(3, 'Bitte geben Sie eine gültige PLZ an.', false);
				}
			}
			else
			{
				
				xmldoc = http_request.responseXML;
				var root = xmldoc.childNodes[0];
				city = root.getElementsByTagName('result').item(0).attributes.city.nodeValue;
				if(city !== null && city != "false")
				{
					
					document.getElementById('city_by_plz').value = city;
					document.getElementById('city_result').innerHTML = city;
					document.getElementById('city_result').style.display = 'block';
					document.getElementById('speedtest_plz').setAttribute("onfocus", "onZipFocus();");
				} // if
				else
				{
					setAlertMessage(3, 'Bitte geben Sie eine gültige PLZ an.', false);
				}
			}
		}
	}
}

function getCityByZIP(obj)
{
	if(typeof speedtester != "undefined" && speedtester) 
	{
		return;
	}
	if(obj.value.length < 5 || obj.value.indexOf(".") >= 0 || obj.value.indexOf(",") >= 0 || isNaN(obj.value))
	{
		alert('Bitte geben Sie eine gültige PLZ an.');
		return false;
	}	
	else
	{
		//hideElement('speedtest_alert_step3');
		//clearAlertBorders();
		document.getElementById('city_result').innerHTML = "<img src=\"/fileadmin/images/speedtest/ajax-loader-gmaps.gif\" alt=\"\" />";
		url = "fileadmin/scripts/getCityByZIP.php?zip="+obj.value;
		http_request = newRequest();
		http_request.open("GET", url, true);
		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');  
		http_request.onreadystatechange = setCityByZIP;
		http_request.send(null);
	}
} // function

function countPress()
{
	if(typeof speedtester != "undefined" && speedtester) 
	{
		return;
	}
	var chars = document.getElementById('speedtest_plz').value;
	if(chars.length == 5)
	{
		getCityByZIP(document.getElementById('speedtest_plz'));
	}
	else
	{
		return false;
	}
}

function checkStreetResponce() 
{
	if (http_request.readyState == 4) 
	{
		if (http_request.status == 200) 
		{	
			var xmldoc = http_request.responseXML;
			var root = xmldoc.documentElement;
			var result = "";
			if(browser == "Microsoft Internet Explorer")
			{
				result = root.firstChild;
			}
			else
			{
				result = root.childNodes[1];
			}
			if(result.getAttribute('address') == "true")
			{
				streetResultLon = result.getAttribute('lon');
				streetResultLat = result.getAttribute('lat');
				streetResultChk = result.getAttribute('chk');
				streetResultReady = true;
				document.getElementById('speedtest_strasse').setAttribute("onfocus", "onStreetFocus();");	
				setAuswertung(streetResultLon,streetResultLat,streetResultChk);
				var frm = document.forms.frm_speedtest;
				frm.submit();
				return true;
			} 
			else 
			{
				alert("Ihre Adresse konnte Anhand Ihrer Angaben nicht ermittelt werden. Bitte geben Sie Ihre korrekte Adresse ein.");
				return false;
			}// else

			alert("Ihre Adresse konnte Anhand Ihrer Angaben nicht ermittelt werden. Bitte geben Sie Ihre korrekte Adresse ein.");
			document.getElementById('speedtest_plz').focus();	
			return false;		
		} else {
			alert("Ihre Adresse konnte Anhand Ihrer Angaben nicht ermittelt werden. Bitte geben Sie Ihre korrekte Adresse ein.");
			//document.getElementById('speedtest_plz').focus();
			return false;
		}// if
	} // if
}

function checkStreet()
{
	if(typeof speedtester != "undefined" && speedtester) 
	{
		return;
	}
	var frm = document.forms.frm_speedtest;
	if(frm.cat.value == -1) {
		//setAlertMessage(4, "Bitte geben Sie Ihren Provider an.", false);
		frm.cat.focus();
		alert("Bitte wählen Sie einen Internetanbieter.");
		return false;		
	}
	if(frm.tariffspeed.value == -1) {
		alert("Bitte wälhen Sie Ihre DSL Geschwindigkeit.");
		frm.tariffspeed.focus();
		return false;		
	}
	if(frm.plz.value =="" || frm.speedtest_plz.value =="PLZ") {
		alert("Bitte geben Sie Ihre Postleitzahl an.");
		frm.plz.focus();
		return false;		
	}
	if(frm.plz.value.length < 5 || frm.plz.value.match(/[a-zA-Z]/)) {
		alert("Bitte geben Sie eine gültige PLZ ein.");
		frm.plz.focus();
		return false;
	}	
	if(frm.city_by_plz.value=="") {
		alert("Bitte geben Sie eine gültige PLZ ein.");
		frm.plz.focus();
		return false;
	}
	if(frm.strasse.value == "Straße & Hausnummer" || frm.strasse.value.length < 2) {
		alert("Bitte geben Sie Ihre Strasse und Hausnummer ein, dann kann der Test beginnen.");
		frm.strasse.focus();
		return false;
	}
	//clearAlertBorders();
	//document.getElementById('street_next').innerHTML = "<img src=\"/fileadmin/images/speedtest/ajax-loader-gmaps.gif\" alt=\"\" />";

  var search = new Array('Ö', 'Ä', 'Ü', 'ö', 'ä', 'ü','ß'); 
  var replace = new Array('oe', 'ae', 'ue', 'oe', 'ae', 'ue','ss'); 
  var strasse = str_replace(search, replace, frm.strasse.value); 
   
	url = "fileadmin/scripts/getCoordByAdress.php?step=1&strasse="+strasse+"&plz="+frm.plz.value+"&stadt="+frm.stadt.value;
	
	http_request = newRequest();
	http_request.open("GET", url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');  
	http_request.onreadystatechange = checkStreetResponce;
	http_request.send(null);
	
}

function createNewOneSpeedTest()
{
	var objOneSpeedTest = new OneSpeedTest(null);
}

function setAuswertung(lon,lat,chk)
{
	document.getElementById('hidden_inputs').innerHTML += '<input type="hidden" name="lon" value="'+lon+'"/>';
	document.getElementById('hidden_inputs').innerHTML += '<input type="hidden" name="lat" value="'+lat+'"/>';
	document.getElementById('hidden_inputs').innerHTML += '<input type="hidden" name="chk" value="'+chk+'"/>';
	document.getElementById('hidden_inputs').innerHTML += '<input type="hidden" name="user_cat" value="'+document.forms.frm_speedtest.cat[document.forms.frm_speedtest.cat.selectedIndex].value+'"/>';
	document.getElementById('hidden_inputs').innerHTML += '<input type="hidden" name="user_tariffspeed" value="'+document.forms.frm_speedtest.tariffspeed[document.forms.frm_speedtest.tariffspeed.selectedIndex].value+'"/>';
	document.getElementById('hidden_inputs').innerHTML += '<input type="hidden" name="user_plz" value="'+document.forms.frm_speedtest.plz.value+'"/>';
	document.getElementById('hidden_inputs').innerHTML += '<input type="hidden" name="user_stadt" value="'+document.forms.frm_speedtest.stadt.value+'"/>';
	document.getElementById('hidden_inputs').innerHTML += '<input type="hidden" name="user_strasse" value="'+document.forms.frm_speedtest.strasse.value+'"/>';	
  /*
	document.getElementById('user_provider').innerHTML = document.getElementById('speedtest_kategorie').options[document.getElementById('speedtest_kategorie').selectedIndex].innerHTML;
	document.getElementById('user_download_speed').innerHTML = document.getElementById('speedtest_tariffspeed').options[document.getElementById('speedtest_tariffspeed').selectedIndex].innerHTML;
	document.getElementById('user_city').innerHTML = document.getElementById('city_by_plz').value;
	document.getElementById('speedtest_result_provider').innerHTML = document.getElementById('provider_by_ip').value;
	document.getElementById('speedtest_result_city').innerHTML = document.getElementById('city_by_ip').value;
	*/
}



/* logged in user functions */

var undo_provider = "";
var undo_tariff = "";
var undo_zip = "";
var undo_city = "";
var undo_street = "";

String.prototype.trim = function()
{
	return this.replace(/^\s*([^ ]*)\s*$/, "$1");
};

function speedtest_saveUndo(elementId)
{
	var value = document.getElementById(elementId).value.trim();
	switch(elementId)
	{
		case "speedtest_kategorie":
			undo_provider = value;
		break;
		case "speedtest_tariffspeed":
			undo_tariff = value;
		break;
		case "speedtest_plz":
			undo_zip = value;
			undo_city = document.getElementById('city_result').innerHTML.trim();
		break;
		case "speedtest_strasse":
			undo_street = value;
		break;
	}
}

function speedtest_undo(elementId)
{
	var element = document.getElementById(elementId);
	switch(elementId)
	{
		case "speedtest_kategorie":
			element.value = undo_provider;
		break;
		case "speedtest_tariffspeed":
			element.value = undo_tariff;
		break;
		case "speedtest_plz":
			element.value = undo_zip;
			document.getElementById('city_result').innerHTML = undo_city;
		break;
		case "speedtest_strasse":
			element.value = undo_street;
		break;
	}
}

function change(textobj,linkobj,div)
{
	speedtest_saveUndo(textobj);
	document.getElementById(textobj).disabled = false;
	if(textobj == "speedtest_strasse")
	{
		document.getElementById('speedtest_plz').disabled = false;
		speedtest_saveUndo('speedtest_plz');
	}
	document.getElementById(linkobj).innerHTML = "<img src=\"fileadmin/images/speedtest/btn-save.gif\" alt=\"\" class=\"haken\" />";
	document.getElementById(linkobj).href = "javascript:save('"+textobj+"','"+linkobj+"','"+div+"')";
} // function

function checkupdate(textobj,linkobj,div)
{
	if (http_request.readyState == 4) 
	{
		if (http_request.status == 200) 
		{	
			var xmldoc = http_request.responseXML;
			var root = xmldoc.documentElement;
			var result = "";
			if(browser == "Microsoft Internet Explorer")
			{
				result = root.firstChild;
			}
			else
			{
				result = root.childNodes[1];
			}
			if(result.getAttribute('update') == "false")
			{
				speedtest_undo(textobj);
				switch(textobj)
				{
				case "speedtest_kategorie":
					alert("Die Änderung des Anbieters ist fehlgeschlagen!");
					//showBlockElement('speedtest_alert_step1');
				break;
				case "speedtest_tariffspeed":
					alert("Die Änderung der Geschwindigkeit ist fehlgeschlagen!");
				break;
				case "speedtest_strasse":
					speedtest_undo('speedtest_plz');
					alert("Die Änderung der Strasse ist fehlgeschlagen!");
					//showBlockElement('speedtest_alert_step4');
				break;
				}
			} 
			else 
			{	
				if(result.getAttribute('city') != "false")
				{
					document.getElementById('city_result').innerHTML = result.getAttribute('city');
				}
			}// else
			
		} // if
	}
}

function save(textobj,linkobj,div)
{
	document.getElementById(linkobj).innerHTML = "<img src=\"fileadmin/images/speedtest/icon-ajax-loader.gif\" alt=\"\" class=\"haken\" />";
	document.getElementById(textobj).disabled = true;
	speedtest_updateobj = linkobj;
	
	var getParameter = textobj+"="+document.getElementById(textobj).value;

	if(textobj == "speedtest_strasse") 
	{
		var zip_value = document.getElementById('speedtest_plz').value;
		document.getElementById('speedtest_plz').setAttribute("disabled", "disabled");
		if(zip_value.lenght < 5 || zip_value.indexOf(".") >= 0 || zip_value.indexOf(",") >= 0 || isNaN(zip_value))
		{
			speedtest_undo(textobj);
			alert("Die Änderung der Postleitzahl ist fehlgeschlagen!");
			//showBlockElement('speedtest_alert_step3');
			setTimeout(hideAlerts,2000);
			return;
		}
		if(document.getElementById(textobj).value.lenght < 5)
		{
			speedtest_undo(textobj);
			alert("Die Änderung der Strasse ist fehlgeschlagen!");
			//showBlockElement('speedtest_alert_step4');
			setTimeout(hideAlerts,2000);
			return;
		}
		else
		{
			getParameter = getParameter + "&speedtest_plz=" + zip_value;
		}
	}

	url = "fileadmin/scripts/setData.php?"+getParameter;
	http_request = newRequest();
	http_request.open("GET", url, true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');  
	http_request.onreadystatechange = function() { checkupdate(textobj,linkobj,div); };
	http_request.send(null);

	document.getElementById(linkobj).innerHTML = "<img src=\"fileadmin/images/speedtest/btn-edit.gif\" alt=\"\" class=\"haken\" />";
	document.getElementById(linkobj).href = "javascript:change('"+textobj+"','"+linkobj+"','"+div+"')";
} // function


function is_array(value) 
{ 
   var s = typeof value; 
   if (s === 'object') 
   { 
      if (value) 
      { 
         if (value instanceof Array) 
         { 
            s = 'array'; 
         } 
      } 
      else 
      { 
         s = 'null'; 
      } 
   } 
   return s; 
} 

function str_replace(search, replace, subject) 
{ 
   if ( is_array(search) == 'array' ) 
   {
      for(i=0; i<search.length; i++) 
      { 
         subject = subject.split(search[i]).join(replace[i]); 
      } 
   } 
   else 
   { 
      subject = subject.split(search).join(replace); 
   } 
   return subject; 
}