var sent = 0;
var seek = 0;
var rc = 0;
var q = '';
var mz, mt;

function initAJAX() {
	try {
		return new XMLHttpRequest();
	} catch (e) {
		try {
			return new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				return new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
				alert("Your browser does not support AJAX!");
				return false;
			}
		}
	}
}

function addPlaces(p) {
	lines = p.split("\n");
	for (i=0; i<lines.length; i++) {
		gps = lines[i].split(";");
		if (gps.length == 2) {
			map.addOverlay(new GMarker(new GLatLng(gps[0], gps[1])));
		} else {
			if (i == 0) {
				alert("Error while AJAXing - "+gps[0]);
			}
		}
	}
}

function changePage(p) {
	document.getElementById("p").value = p;
	ajaxSearch(getSP(0));
	return false;
}

function givePages(n, p, nn, np) {
	var t = '';
	if (n > rc) {
		rc = n;
	} else if (n < rc) {
		n = rc;
	}
	if (n > 1) {
		var i;
		// &laquo; &raquo;
		if (p < n) {
			t += '<div class="fr"><a href="#" onclick="return changePage('+(p+1)+')">'+nn+' &raquo;</a></div>';
		} else {
			t += '<div class="fr">&nbsp;</div>';
		}
		if (p > 1) {
			t += '<div class="fl"><a href="#" onclick="return changePage('+(p-1)+')">&laquo; '+np+'</a></div>';
		} else {
			t += '<div class="fl">&nbsp;</div>';
		}
		for (i=1;i<=n;i++) {
			if (p != i) {
				t += '<a href="#" onclick="return changePage('+i+')">'+i+'</a> '
			} else {
				t += '<strong>'+i+'</strong> '
			}
		}
		t = '<hr /><div class="pg">'+t+'</div>';
	}
	return t;
}

function loadMarkers(m, p, t, tn, tp) {
 	tn = typeof(tn) != 'undefined' ? tn : '';
 	tp = typeof(tp) != 'undefined' ? tp : '';
 	p = typeof(p) != 'undefined' ? p : '';
 	t = typeof(t) != 'undefined' ? t : '';

 	var tmp = '';
 	if (tn.length > 0) {
		tmp = givePages(2, 1, tn, tp);
		document.getElementById("sres").innerHTML = tmp+document.getElementById("sres").innerHTML+tmp;
	}
	if (p.length > 0) {
			document.getElementById("sres").innerHTML += '<hr /><div class="pl">'+t+': <input type="text" value="'+p+'" onclick="this.focus();this.select();" /></div>';
	}
	var mr = new Array(m.length);
	for (var i = 0; i < m.length; i++) {
		mr[i] = new GMarker(new GLatLng(m[i][1],m[i][2]));
		mr[i].iW = m[i][0];
		map.addOverlay(mr[i]);
	}
}

function showPlaces(p) {
//alert(p);
	var xml = GXml.parse(p);
	var markers = xml.documentElement.getElementsByTagName("place");
	var ch = xml.documentElement.getElementsByTagName("state");
	var c = xml.documentElement.getElementsByTagName("total");
	var m = new Array(markers.length);

	document.getElementById("sres").innerHTML = '';
	map.clearOverlays();

	if (ch[0].getAttribute("no") != 1) {
		document.getElementById("sres").innerHTML = '<hr /><p class="err">'+ch[0].getAttribute("msg")+'</p>';
	} else {
		var n, lat, lng, d, img, u, st, f;

		var nav = givePages(parseInt(c[0].getAttribute("cnt")), parseInt(document.getElementById("p").value), c[0].getAttribute("next"), c[0].getAttribute("prev"));
		document.getElementById("sres").innerHTML = nav;

		var min_lat=200.0;
		var min_lng=200.0;
		var max_lat=-200.0;
		var max_lng=-200.0;

		for (var i = 0; i < markers.length; i++) {
			n = markers[i].getAttribute("name");
			lat = parseFloat(markers[i].getAttribute("lat"));
			lng = parseFloat(markers[i].getAttribute("lng"));
			if (lat < min_lat) { min_lat = lat; }
			if (lat > max_lat) { max_lat = lat; }
			if (lng < min_lng) { min_lng = lng; }
			if (lng > max_lng) { max_lng = lng; }
			d = markers[i].getAttribute("desc");
			img = markers[i].getAttribute("fn");
			u = markers[i].getAttribute("url");
			st = markers[i].getAttribute("stats");
			f = markers[i].getAttribute("f");
			m[i] = new GMarker(new GLatLng(lat,lng));
			m[i].iW = '<div class="gm"><a href="'+u+'">'+n+'</a><br /><a href="'+u+'"><img src="'+img+'" alt="thumb" class="bb" /></a></div>';
			map.addOverlay(m[i]);
			document.getElementById("sres").innerHTML += '<hr /><div class="itm"><div class="stats">'+st+'</div><a href="'+u+'"><img src="'+img+'" alt="thumb" class="bb" /></a>'+
				'<div class="d"><h3>'+f+'<a href="'+u+'">'+n+'</a></h3><p>'+d+'</p></div></div>';
		}
		document.getElementById("sres").innerHTML += nav;
		if (c[0].getAttribute("perma").length > 0) {
			document.getElementById("sres").innerHTML += '<hr /><div class="pl">'+c[0].getAttribute("perm")+': <input type="text" value="'+c[0].getAttribute("perma")+'-'+mz+'-'+mt+'" onclick="this.focus();this.select();" /></div>';
		}
		zoomToPlaces(max_lat, min_lat, max_lng, min_lng);
	}
}

function ajaxSearch(parameters) {
	if (sent == 0) {
		sent = 1;
		var xmlHttp = initAJAX();
		if (!xmlHttp) { return false; }
		xmlHttp.onreadystatechange=function() {
			if(xmlHttp.readyState==4) {
				sent = 0;
				seek = 1;
				showPlaces(xmlHttp.responseText);
			} else if(xmlHttp.readyState==1) {
				document.getElementById("sres").innerHTML = '<hr /><p class="err"><img src="/static/loading.gif" alt="loading"></p>';
			}
		}
		xmlHttp.open('POST', "/ajax-fp", true);
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHttp.setRequestHeader("Content-length", parameters.length);
		xmlHttp.setRequestHeader("Connection", "close");
		xmlHttp.send(parameters);
		return false;
	}
}

function ajaxSwitchPic(p, pp, ppp) {
	if (sent == 0) {
		sent = 1;
		var xmlHttp = initAJAX();
		if (!xmlHttp) { return false; }
		xmlHttp.onreadystatechange=function() {
			if(xmlHttp.readyState==4) {
				sent = 0;
				document.getElementById("bph").innerHTML = xmlHttp.responseText;
			} else if(xmlHttp.readyState==1) {
				document.getElementById("bph").innerHTML = '<p class="l"><img src="/static/loading.gif" alt="loading"></p>';
			}
		}
		xmlHttp.open('GET', p+'ajax_sp?p='+pp+'&pp='+ppp, true);
		xmlHttp.send(null);
		return false;
	}
}

function ajaxAddFavorite(p) {
	if (sent == 0) {
		sent = 1;
		var xmlHttp = initAJAX();
		if (!xmlHttp) { return false; }
		xmlHttp.onreadystatechange=function() {
			if(xmlHttp.readyState==4) {
				document.getElementById("fav").innerHTML=xmlHttp.responseText;
				sent = 0;
			}
		}
		xmlHttp.open('GET', p, true);
		xmlHttp.send(null);
		return false;
	}
}

function ajaxRate(p) {
	if ((sent == 0) && (document.getElementById("r").value >= 1) && (document.getElementById("r").value <= 10)) {
		sent = 1;
		var xmlHttp = initAJAX();
		if (!xmlHttp) { return false; }
		xmlHttp.onreadystatechange=function() {
			if(xmlHttp.readyState==4) {
				document.getElementById("rate").innerHTML=xmlHttp.responseText;
				sent = 0;
			}
		}

		xmlHttp.open('GET', p+'?r='+document.getElementById("r").value, true);
		xmlHttp.send(null);
		return false;
	}
}

function ajaxAddComment(p) {
	if ((sent == 0) && (document.getElementById("comm").value.length >= 1) && (document.getElementById("comm").value.length <= 500)) {
		sent = 1;
		var xmlHttp = initAJAX();
		if (!xmlHttp) { return false; }
		xmlHttp.onreadystatechange=function() {
			if(xmlHttp.readyState==4) {
				var l = xmlHttp.responseText.indexOf("\n");
				if (l > 0) {
					document.getElementById("newc").innerHTML=xmlHttp.responseText.substring(0, l);
					document.getElementById("com_cont").innerHTML=xmlHttp.responseText.substring(l+1);
				} else {
					document.getElementById("newc").innerHTML=xmlHttp.responseText;
				}
				sent = 0;
			}
		}
		var pp = 'c='+document.getElementById("comm").value.replace('+', '%2B').replace(' ', '%20').replace('&', '%26');
		xmlHttp.open('POST', p, true);
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", pp.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.send(pp);
		return false;
	}
}

function getMB() {
 return "&lat_a="+map.getBounds().getNorthEast().lat()+"&lng_a="+map.getBounds().getNorthEast().lng()+"&lat_b="+map.getBounds().getSouthWest().lat()+"&lng_b="+map.getBounds().getSouthWest().lng();
}

function getPT(n) {
	var i=1;
	var t="";
	for (i=1;i<=n;i++) {
		if (document.getElementById("t"+i).checked) {
			t += "&t"+i+"=1";
		}
	}
	return t;
}

function getSP(n) {
	if (document.getElementById('nps').style.display == 'inline') {
		document.getElementById('nps').style.display = 'none';
	}
	if (q.length == 0) {
		mz=map.getZoom();
		mt=getMapType();
		q=getMB()+getPT(n);
	}
	return "s=1&p="+document.getElementById("p").value+q;
}

function showHide(d) {
	if (document.getElementById(d).style.display == 'inline') {
		document.getElementById(d).style.display = 'none';
	} else {
		document.getElementById(d).style.display = 'inline';
	}
	return false;
}

function clearResults() {
	if (seek == 1) {
		document.getElementById("sres").innerHTML = '';
		map.clearOverlays();
	}
	return false;
}

function doSearch(n) {
	if (sent == 0) {
		rc = 0;
		q = '';
		document.getElementById("p").value = 1;
		ajaxSearch(getSP(n));
	}
	return false;
}

function setMapView(lat, lng, z, v) {
	var c = new GLatLng(lat,lng);
	map.setCenter(c, z, v);
}

function proceedAddInfo(s) {
	document.getElementById('aif').action = s;
	document.getElementById('ait').value = document.getElementById('otitle').value;
	document.getElementById('aid').value = document.getElementById('odesc').value;
	document.getElementById('aig').value = document.getElementById('otags').value;
	document.getElementById('aif').submit();
	return false;
}