// JSONscriptRequest
// Author: Jason Levitt
// Date: December 7th, 2005
function JSONscriptRequest(fullUrl) {
	this.fullUrl = fullUrl;
	this.noCacheIE = '&noCacheIE=' + (new Date()).getTime();
	this.headLoc = document.getElementsByTagName("head").item(0);
	this.scriptId = 'YJscriptId' + JSONscriptRequest.scriptCounter++;
}
JSONscriptRequest.scriptCounter = 1;
JSONscriptRequest.prototype.buildScriptTag = function () {
	this.scriptObj = document.createElement("script");
	this.scriptObj.setAttribute("type", "text/javascript");
	this.scriptObj.setAttribute("src", this.fullUrl + this.noCacheIE);
	this.scriptObj.setAttribute("id", this.scriptId);
}
JSONscriptRequest.prototype.removeScriptTag = function () {
	this.headLoc.removeChild(this.scriptObj);
}
JSONscriptRequest.prototype.addScriptTag = function () {
	this.headLoc.appendChild(this.scriptObj);
}
// Geonames.org
// Author: geonames.org
var geonamesPostalCodeCountries = ["AD","AT","AU","AR","AS","BE","BD","BG","CA","CH","CZ","DE","DK","ES","FI","FO","FR","GB","GG","GL","GP","GU","GY","HR","HU","IM","IN","IS","JE","IT","LI","LK","LU","MC","MH","MK","MP","MQ","MX","NL","NO","NZ","PK","PM","PR","PT","PL","RE","SE","SI","SK","SM","TH","TR","US","VA","VI","YT","ZA"];
var geonamesUserIpCountryCode='ES';
var postalcodes;
var postalurl1;
var postalurl2;
var cnt = 0;
if (window.location.protocol == 'file:') {
	postalurl1 = "http://www.dw-formmailer.de/geodata/";
	postalurl2 = "http://www.dw-formmailer.de/geodata/";
} else {
	postalurl1 = "//www.dw-formmailer.de/geodata/";
	postalurl2 = "//www.dw-formmailer.de/geodata/";
}
function getLocation(jData) {
	if (jData == null) {
		return;
	}
	postalcodes = jData.postalcodes;
	closeMapBox();closeSuggestBox();
	if (postalcodes.length > 1) {
		document.getElementById('suggestBoxElement').style.visibility = 'visible';
		var suggestBoxHTML  = '';
		for (i=0;i< jData.postalcodes.length;i++) {
			suggestBoxHTML += "<div class='suggestions' id=pcId" + i + " onmousedown='suggestBoxMouseDown(" + i +")' onmouseover='suggestBoxMouseOver(" +  i +")' onmouseout='suggestBoxMouseOut(" + i +")'> " + postalcodes[i].countrycode + ' ' + postalcodes[i].postalcode + '    ' + postalcodes[i].placename  +'</div>';
		}
		document.getElementById('suggestBoxElement').innerHTML = suggestBoxHTML;
	} else {
		if (postalcodes.length == 1) {
			if (document.getElementById("postalInput")) {
				var postalInput = document.getElementById("postalInput");
				postalInput.value = postalcodes[0].postalcode;
			}
			if (document.getElementById("placeInput")) {
				var placeInput = document.getElementById("placeInput");
				placeInput.value = postalcodes[0].placename;
			}
			if (document.getElementById("landInput")) {
				var landInput = document.getElementById("landInput");
				landInput.value = postalcodes[0].landname;
				landInput.focus();
			}
			if (document.getElementById("land2Input")) {
				var land2Input = document.getElementById("land2Input");
				land2Input.value = postalcodes[0].landname2;
				land2Input.focus();
			}
			if (document.getElementById("telInput")) {
				var telInput = document.getElementById("telInput");
				telInput.value = postalcodes[0].telcode;
				telInput.focus();
			}
			if (document.getElementById("telInput2")) {
				var telInput2 = document.getElementById("telInput2");
				telInput2.value = postalcodes[0].vorwahl;
				telInput2.focus();
			}
			if (document.getElementById("telInput3")) {
				var telInput3 = document.getElementById("telInput3");
				telInput3.value = postalcodes[0].telcode + postalcodes[0].vorwahl;
				telInput3.focus();
			}
			if (document.getElementById("faxInput")) {
				var faxInput = document.getElementById("faxInput");
				faxInput.value = postalcodes[0].telcode;
				faxInput.focus();
			}
			if (document.getElementById("faxInput2")) {
				var faxInput2 = document.getElementById("faxInput2");
				faxInput2.value = postalcodes[0].vorwahl;
				faxInput2.focus();
			}
			if (document.getElementById("faxInput3")) {
				var faxInput3 = document.getElementById("faxInput3");
				faxInput3.value = postalcodes[0].telcode + postalcodes[0].vorwahl;
				faxInput3.focus();
			}
			/*document.getElementById('map').style.visibility = 'visible';*/
			/*document.getElementById('map').innerHTML = '<a target="_blank" href="' + postalurl2 + 'map.php?lat=' + postalcodes[0].lat  +'&lng=' + postalcodes[0].lng +'">satellite preview</a>';*/
		}
		closeSuggestBox();
	}
}
function closeMapBox() {
	document.getElementById('map').innerHTML = '';
	document.getElementById('map').style.visibility = 'hidden';
}
function closeSuggestBox() {
	document.getElementById('suggestBoxElement').innerHTML = '';
	document.getElementById('suggestBoxElement').style.visibility = 'hidden';
}
function suggestBoxMouseOut(obj) {
	document.getElementById('pcId'+ obj).className = 'suggestions';
}
function suggestBoxMouseDown(obj) {
	closeSuggestBox();
	if (document.getElementById("postalInput")) {
		var postalInput = document.getElementById("postalInput");
		postalInput.value = postalcodes[obj].postalcode;
	}
	if (document.getElementById("placeInput")) {
		var placeInput = document.getElementById("placeInput");
		placeInput.value = postalcodes[obj].placename;
	}
	if (document.getElementById("landInput")) {
		var landInput = document.getElementById("landInput");
		landInput.value = postalcodes[obj].landname;
		landInput.focus();
	}
	if (document.getElementById("land2Input")) {
		var land2Input = document.getElementById("land2Input");
		land2Input.value = postalcodes[obj].landname2;
		land2Input.focus();
	}
	if (document.getElementById("telInput")) {
		var telInput = document.getElementById("telInput");
		telInput.value = postalcodes[obj].telcode;
		telInput.focus();
	}
	if (document.getElementById("telInput2")) {
		var telInput2 = document.getElementById("telInput2");
		telInput2.value = postalcodes[obj].vorwahl;
		telInput2.focus();
	}
	if (document.getElementById("telInput3")) {
		var telInput3 = document.getElementById("telInput3");
		telInput3.value = postalcodes[obj].telcode + postalcodes[obj].vorwahl;
		telInput3.focus();
	}
	if (document.getElementById("faxInput")) {
		var faxInput = document.getElementById("faxInput");
		faxInput.value = postalcodes[obj].telcode;
		faxInput.focus();
	}
	if (document.getElementById("faxInput2")) {
		var faxInput2 = document.getElementById("faxInput2");
		faxInput2.value = postalcodes[obj].vorwahl;
		faxInput2.focus();
	}
	if (document.getElementById("faxInput3")) {
		var faxInput3 = document.getElementById("faxInput3");
		faxInput3.value = postalcodes[obj].telcode + postalcodes[obj].vorwahl;
		faxInput3.focus();
	}
	if (postalcodes[obj].lat != 0) {
		/*document.getElementById('map').style.visibility = 'visible';*/
		/*document.getElementById('map').innerHTML = '<a target="_blank" href="' + postalurl2 + 'map.php?lat=' + postalcodes[obj].lat  +'&lng=' + postalcodes[obj].lng +'">satellite preview</a>';*/
	} else {
		document.getElementById('map').innerHTML = '';
		document.getElementById('map').style.visibility = 'hidden';
	}
}
function suggestBoxMouseOver(obj) {
	document.getElementById('pcId'+ obj).className = 'suggestionMouseOver';
}
function postalLookup() {
	cnt++;
	var country = document.getElementById("countrySelect").value;
	if (geonamesPostalCodeCountries.toString().search(country) == -1) {
		return;
	}
	var postalcode = escape(document.getElementById("postalInput").value);
	if (postalcode.length<3){return;}
	document.getElementById('suggestBoxElement').style.visibility = 'visible';
	document.getElementById('suggestBoxElement').innerHTML = '<small><i>one moment please ...</i></small>';
	request = postalurl1 + '?postalcode=' + postalcode  + '&country=' + country + '&key=' + key + '&chs=' + chs;
	aObj = new JSONscriptRequest(request);
	aObj.buildScriptTag();
	aObj.addScriptTag();
}
function placeLookup() {
	if (cnt>0) {cnt=0;return;}
	var country = document.getElementById("countrySelect").value;
	if (geonamesPostalCodeCountries.toString().search(country) == -1) {
		return;
	}
	var place = escape(document.getElementById("placeInput").value);
	if (place.length<3){return;}
	document.getElementById('suggestBoxElement').style.visibility = 'visible';
	document.getElementById('suggestBoxElement').innerHTML = '<small><i>one moment please ...</i></small>';
	request = postalurl1 + '?place=' + place  + '&country=' + country + '&key=' + key + '&chs=' + chs;
	aObj = new JSONscriptRequest(request);
	aObj.buildScriptTag();
	aObj.addScriptTag();
}
function setDefaultCountry() {
	var a = document.getElementById("countrySelect");
	var x=0;
	for (i=0;i< a.length;i++) {
		if (a[i].value == geonamesUserIpCountryCode) {
			a.selectedIndex = i;
			x=i;
		}
	}
	if (document.getElementById("countrySelect2")) {
		document.getElementById("countrySelect2").selectedIndex = x;
	}
}
function setDefaultCountry2() {
	var a = document.getElementById("countrySelect");
	var b = a.value;
	var c = 0;
	for (i=0;i< a.length;i++) {
		if (a[i].value == b) {
			c=i;
		}
	}
	if (document.getElementById("countrySelect2")) {
		document.getElementById("countrySelect2").selectedIndex = c;
	}
}
function setCountries() {
	//document.write("<select id=\"countrySelect\" name=\"Land\">");
	for (var i=0;i<geonamesPostalCodeCountries.length;i++) {
		document.write("<option value=\"" + geonamesPostalCodeCountries[i] + "\">" + geonamesPostalCodeCountries[i] + "<\/option>");
	}
	//document.write("<\/select>");
}

