var active = false;
var przerwa = false;
var ostatni = sumaSkladowaDaty();
var zaladowane_miasta = false;
window.onblur = function() {
	active = false;
	przerwa = true;
	ostatni = sumaSkladowaDaty();
}
window.onfocus = function() {
	active = true;
	if (przerwa && window.location.search.match(/mapa/)) {
		if (document.getElementById("automtyczne").checked) {
			var teraz = sumaSkladowaDaty();
			if (teraz[0] - ostatni[0] > ostatni[1]) {
				przerwa = false;
				window.location.reload();
			}
		}
	}
}
var xmlHttp = createXmlHttpRequetObject();
var cache = new Array();

function debbugier(komunikat) {
	if (true) {
		alert(komunikat);
	}
}

function sumaSkladowaDaty() {
	var tablica = new Array();
	var czas = new Date();
	var minuty = czas.getMinutes();
	var sekundy = czas.getSeconds();
	tablica[0] = czas.getTime();
	tablica[1] = ((30 - sekundy < 0) ? 4 * 60 + 60 - sekundy : minuty % 5 * 60 + 30 - sekundy) * 1000;
	return tablica;
}

function createXmlHttpRequetObject() {
	var xmlHttp;
	try {
		xmlHttp = new XMLHttpRequest();
	} catch (e) {
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP");
		for (var i = 0; i < XmlHttpVersions.length && !xmlHttp; i++) {
			try {
				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			} catch (e) {}
		}
	}
	if (!xmlHttp) {
		debbugier('Error, empty xmlHTTP');
	} else {
		return xmlHttp;
	}
}

function startGET(url, onComplete, onEnd) {
	var xmlHttp = createXmlHttpRequetObject();
	if (xmlHttp) {
		cache.push(url);
		try {
			if (cache.length > 0) {
				var wartosc = cache.shift();
				xmlHttp.open("GET", wartosc);
				xmlHttp.onreadystatechange = function() {
					if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
						var WynikXML = xmlHttp.responseXML;
						var WynikText = xmlHttp.responseText;
						onComplete(WynikText, WynikXML);
					}
					delete xmlHttp;
					onEnd();
				}
				xmlHttp.send(null);
			}
		} catch (e) {
			debbugier('startGET ->' + e.toString());
		}
	}
}

function startPOST(url, params, onComplete, onEnd) {
	var xmlHttp = createXmlHttpRequetObject();
	if (xmlHttp) {
		cache.push(params);
		try {
			if (cache.length > 0) {
				var params = cache.shift();
				xmlHttp.open("POST", url);
				xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				xmlHttp.onreadystatechange = function() {
					if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
						var WynikXML = xmlHttp.responseXML;
						var WynikText = xmlHttp.responseText;
						onComplete(WynikText, WynikXML);
					}
					delete xmlHttp;
					onEnd();
				}
				xmlHttp.send(params);
			}
		} catch (e) {
			debbugier('startPOST ->' + e.toString());
		}
	}
}

function init() {
	var suggestDiv = document.getElementById("suggestions");
	document.getElementById("miejscowosc").setAttribute("autocomplete", "off");
	suggestDiv.style.display = "none";
}
var numer = -1;
var i = 0;

function keyUp(event, on_map) {
	var tfMiasta = document.getElementById("miejscowosc");
	var suggestDiv = document.getElementById("suggestions");
	var kod = (window.event) ? window.event.keyCode : event.which;
	switch (kod) {
	case 40:
		if (numer < (i - 1)) numer++;
		var sp = document.getElementById("sp_" + numer);
		tfMiasta.value = sp.innerHTML;
		sp.className = 'highlight';
		if (numer > 0) {
			document.getElementById("sp_" + (numer - 1)).className = '';
			suggestDiv.scrollTop += 9;
		}
		break;
	case 38:
		if (numer > 0) {
			numer--;
			var sp = document.getElementById("sp_" + numer);
			tfMiasta.value = sp.innerHTML;
			sp.className = 'highlight';
			document.getElementById("sp_" + (numer + 1)).className = '';
			suggestDiv.scrollTop -= 9;
		}
		break;
	case 13:
	case 27:
		suggestDiv.style.display = "none";
		var sp = document.getElementById("sp_" + numer);
		document.getElementById("x").value = setki_klasyczne(sp.x);
		document.getElementById("y").value = setki_klasyczne(sp.y);
		if (on_map) mapa(sp.x, sp.y);
		numer = -1;
		suggestDiv.scrollTop = 0;
		break;
	case 9:
	case 17:
	case 18:
	case 19:
	case 20:
	case 33:
	case 34:
	case 35:
	case 36:
	case 37:
	case 39:
	case 44:
	case 45:
	case 145:
		break;
	default:
		if (tfMiasta.value.length > 2) {
			var regula = /^[a-zA-Z\s-.\(\)ĄąĆćĘęŁłŃńŚśÓóŻżŹź]{3,25}$/;
			if (tfMiasta.value.match(regula)) {
				numer = -1;
				wartosc = tfMiasta.value;
				startPOST("xml.php", "text=" + wartosc, onComplete, onEnd);
			}
		} else {
			suggestDiv.style.display = "none";
		}
	}
}

function onComplete(text, xml) {
	if (text.indexOf("ERRN0") >= 0 || text.indexOf("error:") >= 0 || text.length == 0) throw (text.length == 0 ? "Server ERROR" : text);
	miasta = xml.getElementsByTagName('m');
	var listaOpcji = document.getElementById("suggestions");
	listaOpcji.innerHTML = '';
	listaOpcji.style.display = 'block';
	for (i = 0; i < miasta.length; i++) {
		var result = document.createElement("span");
		for (var j = 0; j < miasta[i].childNodes.length; j++) {
			var elem = miasta[i].childNodes[j].nodeName;
			if (elem == 'n') {
				result.innerHTML = miasta[i].childNodes[j].firstChild.nodeValue;
			} else if (elem == 'x') {
				result.x = miasta[i].childNodes[j].firstChild.nodeValue;
			} else if (elem == 'y') {
				result.y = miasta[i].childNodes[j].firstChild.nodeValue;
			}
		}
		result.id = "sp_" + i;
		result.onmouseover = highlight;
		result.onmouseout = unHighlight;
		result.onmousedown = selectEntry;
		listaOpcji.appendChild(result);
	}
	if (miasta.length == 0) {
		document.getElementById("suggestions").style.display = "none";
	}
}

function onEnd() {}

function highlight() {
	this.className = 'highlight';
}

function unHighlight() {
	this.className = '';
}

function selectEntry() {
	document.getElementById('miejscowosc').value = this.innerHTML;
	document.getElementById("x").value = setki_klasyczne(this.x);
	document.getElementById("y").value = setki_klasyczne(this.y);
	mapa(this.x, this.y);
	document.getElementById("suggestions").style.display = "none";
}

function kolo(point, map) {
	if (document.getElementById("promien") != null) {
		var circlePoints = Array();
		with(Math) {
			var promien = document.getElementById("promien").value;
			var pointTmp = new GLatLng(point.lat() + 1, point.lng());
			var distanceTmp = point.distanceFrom(pointTmp);
			var rLat = promien * 1000 / distanceTmp;
			var pointTmp = new GLatLng(point.lat(), point.lng() + 1);
			var distanceTmp = point.distanceFrom(pointTmp);
			var rLng = promien * 1000 / distanceTmp;
			for (var a = 0; a < 361; a++) {
				var aRad = a * (PI / 180);
				var x = point.x + rLng * cos(aRad);
				var y = point.y + rLat * sin(aRad);
				circlePoints.push(new GLatLng(y, x));
			}
		}
		kolo_mapa = new GPolygon(circlePoints, '#0000ff', 1, 1, '#0000ff', 0.2);
		map.addOverlay(kolo_mapa);
	}
}

function load(lat, lng) {
	if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(lat, lng), 6);
		map.addControl(new GOverviewMapControl());
		map.addControl(new GScaleControl());
		var point = new GLatLng(lat, lng);
		var marker = new GMarker(point);
		map.addOverlay(marker);
		map.enableContinuousZoom();
		map.enableScrollWheelZoom()
		kolo(point, map);
		GEvent.addListener(map, "click", function(overlay, point) {
			if (overlay) {
				map.removeOverlay(overlay);
				document.getElementById("y").value = 0;
				document.getElementById("x").value = 0;
			} else {
				map.clearOverlays();
				map.addOverlay(new GMarker(point));
				stopnieP = Math.floor(point.y);
				stopnieE = Math.floor(point.x);
				minutyP = Math.floor(60 * (point.y - stopnieP));
				minutyP = (minutyP < 10) ? '0' + minutyP : minutyP;
				minutyE = Math.floor(60 * (point.x - stopnieE));
				minutyE = (minutyE < 10) ? '0' + minutyE : minutyE;
				document.getElementById("y").value = stopnieP + '°' + minutyP + '\'';
				document.getElementById("x").value = stopnieE + '°' + minutyE + '\'';
				if (document.getElementById("miejscowosc") != null) document.getElementById('miejscowosc').value = '';
				kolo(point, map);
			}
		});
	}
}

function str_replace(search, replace, subject) {
	for (var k = 0; k < search.length; k++) {
		subject = subject.split(search[k]).join(replace[k]);
	}
	return subject;
}

function stopnie_setki(liczba) {
	calkowita = Math.floor(liczba);
	reszta = liczba - calkowita;
	return calkowita + reszta / 0.6;
}

function setki_klasyczne(liczba) {
	return str_replace(new Array(".0", "."), new Array("°", "°"), liczba) + '\'';
}

function mapa(x, y) {
	if (x == 'x' && y == 'y') {
		x = 18.8525390625;
		y = 52;
	} else {
		var array1 = new Array(",", "°", "'");
		var array2 = new Array(".", ".", "");
		if (x == 'x' && y == 'y') document.getElementById('miejscowosc').value = "";
		if (x == 'x') x = document.getElementById('x').value;
		if (y == 'y') y = document.getElementById('y').value;
		x = stopnie_setki(str_replace(array1, array2, x));
		y = stopnie_setki(str_replace(array1, array2, y));
		if (x == parseFloat(x) && y == parseFloat(y)) load(y, x);
	}
}

function przeladuj() {
	var data = new Date();
	if (document.getElementById("automtyczne").checked) {
		minuty = data.getMinutes();
		sekundy = data.getSeconds();
		if (minuty % 5 == 0 && sekundy == 30 && active) {
			przerwa = false;
			window.location.reload();
		}
	}
}

function miasta_lista() {
	if (zaladowane_miasta == false) {
		var wynik = '';
		for (var i = 0; i < 2723; i += 3) {
			wynik += '<area href="http://burze.dzis.net/?page=wyszukiwarka&miejscowosc=' + miasta[i] + '" title="' + miasta[i] + '" shape="circle" coords="' + miasta[i + 2] + ',' + miasta[i + 1] + ',4" />';
		}
		document.getElementById("mapa").innerHTML = wynik;
		zaladowane_miasta = true;
	}
}

function moc_hasla(stan) {
	var poziom = 0;
	var rozne = false;
	var cyfry = false;
	var duzeL = false;
	var maleL = false;
	pole = document.getElementById('stan_hasla');
	dlugosc = stan.length;
	for (var i = 0; i < dlugosc; i++) {
		var wartosc = stan.charCodeAt(i);
		if (((wartosc >= 32 && wartosc <= 47) || (wartosc >= 58 && wartosc <= 64) || (wartosc >= 91 && wartosc <= 96) || wartosc >= 123) && rozne == false) {
			poziom++;
			rozne = true;
		} else if (wartosc >= 48 && wartosc <= 57 && cyfry == false) {
			poziom++;
			cyfry = true;
		} else if (wartosc >= 65 && wartosc <= 90 && duzeL == false) {
			poziom++;
			duzeL = true;
		} else if (wartosc >= 97 && wartosc <= 122 && maleL == false) {
			poziom++;
			maleL = true;
		}
	}
	if (dlugosc >= 9) {
		poziom++;
	}
	if (dlugosc < 4) {
		poziom = 0;
	}
	switch (poziom) {
	case 1:
		kolor = 'red';
		tekst = '\u2588\u2591\u2591\u2591\u2591 1/5';
		break;
	case 2:
		kolor = 'orange';
		tekst = '\u2588\u2588\u2591\u2591\u2591 2/5';
		break;
	case 3:
		kolor = '#F7D445';
		tekst = '\u2588\u2588\u2588\u2591\u2591 3/5';
		break;
	case 4:
		kolor = '#58B626';
		tekst = '\u2588\u2588\u2588\u2588\u2591 4/5';
		break;
	case 5:
		kolor = '#189FAD';
		tekst = '\u2588\u2588\u2588\u2588\u2588 5/5';
		break;
	default:
		kolor = 'pink';
		tekst = '\u2591\u2591\u2591\u2591\u2591 0/5';
	}
	var pole = document.getElementById('stan_hasla');
	pole.innerHTML = " " + tekst;
	pole.style.color = kolor;
}

function generowanie_kodu() {
	var dane = 'miejscowosc=' + document.getElementById("miejscowosc").value;
	if (!document.getElementById("pokaz_wspolrzedne").checked) {
		dane += '&pokaz_wspolrzedne=false';
	}
	var pokaz_wyladowania = document.getElementById("pokaz_wyladowania").checked;
	if (!pokaz_wyladowania) {
		dane += '&pokaz_wyladowania=false';
	}
	if (!document.getElementById("pokaz_promien").checked && pokaz_wyladowania) {
		dane += '&pokaz_promien=false';
	}
	var promien = document.getElementById("promien").value;
	if (promien != '25' && pokaz_wyladowania) {
		dane += '&promien=' + promien;
	}
	var pokaz_ostrzezenia = document.getElementById("pokaz_ostrzezenia").checked;
	if (!pokaz_ostrzezenia) {
		dane += '&pokaz_ostrzezenia=false';
	}
	pokaz_obecne_ostrzezenia = document.getElementById("pokaz_obecne_ostrzezenia").checked;
	if (pokaz_obecne_ostrzezenia && pokaz_ostrzezenia) {
		dane += '&pokaz_obecne_ostrzezenia=true';
	}
    var pokaz_szczegolowy_opis = document.getElementById("pokaz_szczegolowy_opis").checked;
	if (!pokaz_szczegolowy_opis) {
		dane += '&pokaz_szczegolowy_opis=false';
	}
    var kolor_odnosnika = document.getElementById("kolor_odnosnika").value;
	if (kolor_odnosnika != '00E') {
		dane += '&kolor_odnosnika=' + kolor_odnosnika;
	}
	var kolor_tla = document.getElementById("kolor_tla").value;
	if (kolor_tla != 'FFC') {
		dane += '&kolor_tla=' + kolor_tla;
	}
	var kolor_naglowka = document.getElementById("kolor_naglowka").value;
	if (kolor_naglowka != 'FF9') {
		dane += '&kolor_naglowka=' + kolor_naglowka;
	}
	var kolor_ostrzezenia = document.getElementById("kolor_ostrzezenia").value;
	if (kolor_ostrzezenia != 'FFD') {
		dane += '&kolor_ostrzezenia=' + kolor_ostrzezenia;
	}
	var szerokosc = document.getElementById("szerokosc").value;
	if (szerokosc != '350') {
		dane += '&szerokosc=' + szerokosc;
	}
	var wysokosc = (szerokosc < 350) ? 350 - szerokosc + 180 : 180;
	if (pokaz_obecne_ostrzezenia && pokaz_ostrzezenia) {
		wysokosc = Math.round(wysokosc / 2 - 0.5);
	}
	if (!pokaz_ostrzezenia) {
		wysokosc = Math.round(wysokosc / 4 - 0.5);
	}
	var kod = document.getElementById("kod");
	kod.value = '<iframe src="http://burze.dzis.net/ramka.php?' + dane + '" width="' + szerokosc + '" height="' + wysokosc + '" marginwidth="0" marginheight="0" frameborder="0" scrolling="no"></iframe>';
	document.getElementById("ramka").innerHTML = kod.value;
}

function getMouseXY(e) {
	if (window.ActiveXObject) {
		mouseX = window.event.x + document.body.scrollLeft;
		mouseY = window.event.y + document.body.scrollTop;
	} else {
		mouseX = parseInt(e.clientX);
		mouseY = parseInt(e.clientY);
	}
}

function getColor(e, pole) {
	getMouseXY(e);
	if (xmlHttp) {
		var xx = mouseX;
		var yy = mouseY;
		var paleta = document.getElementById('paleta_' + pole);
		if (window.ActiveXObject) {
			offsetX = window.event.offsetX;
			offsetY = window.event.offsetY;
		} else {
			offsetX = xx - paleta.offsetLeft;
			offsetY = yy - paleta.offsetTop;
		}
		startGET("/kolory.php?x=" + offsetX + "&y=" + offsetY + "&pole=" + pole, handleGettingColor, onEnd);
	}
}

function handleGettingColor(text, xml) {
	if (text.indexOf("ERRN0") >= 0 || text.indexOf("error:") >= 0 || text.length == 0) throw (text.length == 0 ? "Server ERROR" : text);
	wynik = xml.getElementsByTagName('dane');
	for (var j = 0; j < wynik[0].childNodes.length; j++) {
		var elem = wynik[0].childNodes[j].nodeName;
		if (elem == 'kolor') {
			var wartosc = wynik[0].childNodes[j].firstChild.nodeValue;
		} else if (elem == 'pole') {
			var pole = wynik[0].childNodes[j].firstChild.nodeValue;
		}
	}
	document.getElementById(pole).value = wartosc;
	document.getElementById("teraz_" + pole).style.background = '#' + wartosc;
}

function kolorSyle(pole) {
	document.getElementById("teraz_" + pole).style.background = '#' + document.getElementById(pole).value;
}
