
var agencypage = 0;
var sitepage = 0;
var mapid;
var addr;
var currentLatitude;
var currentLongitude;
var gmap;
var scrollPos = 0;

// Return an XMLHtttpRequest for our browser
function getXML() {
	xml = false;
	if (window.XMLHttpRequest) {	// Everything except IE
		xml = new XMLHttpRequest();
	} else if (window.ActiveXObject) {	// IE
		try {
			xml = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xml = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!xml) {
		alert('AJAX broken - please update your browser.');
		return false;
	}
	return xml;
}
// Make the given tab active
function makeActive(num,points,max) {
	// AGNECY 1
	// SITE 2
	if (num == 1) {
		document.getElementById('tab1link').style.fontWeight = 'bold';
		document.getElementById('tab2link').style.fontWeight = '';
		document.getElementById('agencies').style.display = 'block';
		document.getElementById('sites').style.display = 'none';
		plotPoints(points, 'Agency',max);
		document.getElementById('gmap').style.display = '';
		if (document.getElementById('agencypage' + (agencypage + 1))) {
			document.getElementById('nextpage').style.visibility = '';
			document.getElementById('nextpage2').style.visibility = '';
		}
		else {
			document.getElementById('nextpage').style.visibility = 'hidden';
			document.getElementById('nextpage2').style.visibility = 'hidden';
		}
		if (document.getElementById('agencypage' + (agencypage - 1))) {
			document.getElementById('prevpage').style.visibility = '';
			document.getElementById('prevpage2').style.visibility = '';
		}
		else {
			document.getElementById('prevpage').style.visibility = 'hidden';
			document.getElementById('prevpage2').style.visibility = 'hidden';
		}
		makePageNums('agency',points);
	} else if (num == 2) {
		document.getElementById('tab2link').style.fontWeight = 'bold';
		document.getElementById('tab1link').style.fontWeight = '';
		document.getElementById('agencies').style.display = 'none';
		document.getElementById('sites').style.display = 'block';
		plotPoints(points, 'Site',max);
		document.getElementById('gmap').style.display = '';
		if (document.getElementById('sitepage' + (sitepage + 1))) {
			document.getElementById('nextpage').style.visibility = '';
			document.getElementById('nextpage2').style.visibility = '';
		}
		else {
			document.getElementById('nextpage').style.visibility = 'hidden';
			document.getElementById('nextpage2').style.visibility = 'hidden';
		}
		if (document.getElementById('sitepage' + (sitepage - 1))) {
			document.getElementById('prevpage').style.visibility = '';
			document.getElementById('prevpage2').style.visibility = '';
		}
		else {
			document.getElementById('prevpage').style.visibility = 'hidden';
			document.getElementById('prevpage2').style.visibility = 'hidden';
		}
		makePageNums('site',points);
	}
}
// Show the details for the agency with the given id
function showAgency(id,type) {
	var xml = getXML();
	xml.onreadystatechange = function () {
		if (xml.readyState == 4) {
			document.getElementById('moreinfocontent').innerHTML = xml.responseText;
			setAddress(id, type)
		}
	}
	xml.open('GET', 'results_agency_details.php?ajax=ajax&id=' + id);
	xml.send(null);
	document.getElementById('moreinfo').style.display = 'block';
	document.getElementById('moreinfo').scrollTop = 0;
	document.getElementById('curtain').style.display = 'block';
	scrollPos = document.body.scrollTop;
	document.body.style.overflow = 'hidden';
}
// Show the details for the service with the given id
function showService(key) {
	var xml = getXML();
	xml.onreadystatechange = function () {
		if (xml.readyState == 4) {
			document.getElementById('moreinfocontent').innerHTML = xml.responseText;
		}
	}
	xml.open('GET', 'results_service_details.php?ajax=ajax&key=' + key);
	xml.send(null);
	document.getElementById('moreinfo').style.display = 'block';
	document.getElementById('moreinfo').scrollTop = 0;
	document.getElementById('curtain').style.display = 'block';
	scrollPos = document.body.scrollTop;
	document.body.style.overflow = 'hidden';
}
// Show the details for the site with the given id
function showSite(id,type) {
	var xml = getXML();
	xml.onreadystatechange = function () {
		if (xml.readyState == 4) {
			document.getElementById('moreinfocontent').innerHTML = xml.responseText;
			setAddress(id, type);
		}
	}
	xml.open('GET', 'results_site_details.php?ajax=ajax&id=' + id);
	xml.send(null);
	document.getElementById('moreinfo').style.display = 'block';
	document.getElementById('moreinfo').scrollTop = 0;
	document.getElementById('curtain').style.display = 'block';
	scrollPos = document.body.scrollTop;
	document.body.style.overflow = 'hidden';
	
}
// Show the details for the service-site link with the give id
function showServiceSiteLink(id) {
	var xml = getXML();
	xml.onreadystatechange = function () {
		if (xml.readyState == 4) {
			document.getElementById('moreinfocontent').innerHTML = xml.responseText;
		}
	}
	xml.open('GET', 'results_service_site_link_details.php?ajax=ajax&id=' + id);
	xml.send(null);
	document.getElementById('moreinfo').style.display = 'block';
	document.getElementById('moreinfo').scrollTop = 0;
	document.getElementById('curtain').style.display = 'block';
	scrollPos = document.body.scrollTop;
	document.body.style.overflow = 'hidden';
}

function loadGMap(mapid, latitude, longitude, preline, line1, line2, city, state, zip, county, country) {
	if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("map"));
		var point = new GLatLng(latitude, longitude);
		if(longitude!=-1){
			map.setCenter(point, 13);
			var marker = new GMarker(point);
			map.addOverlay(marker);
			var preAddress = "";
			if ("" != preline) preAddress = preAddress + htmlentities(preline) + "<br />";
			if ("" != line1) preAddress = preAddress + htmlentities(line1) + "<br />";
			if ("" != line2) preAddress = preAddress + htmlentities(line2) + "<br />";
			var markerHtml = "<b>Address: </b><br />" +
				preAddress + 
				htmlentities(city) + ", " + htmlentities(state) + " " + htmlentities(zip) + "<br /><br />" +
				"Get directions: <a href='driving.php?id=" + mapid + "'>To here</a>";
			marker.bindInfoWindowHtml(markerHtml);
			GEvent.trigger(marker, "click");
			map.addControl(new GSmallMapControl());
		}else{
			map.setCenter(point, 13);
			var marker = new GMarker(point);
			map.addOverlay(marker);
			marker.openInfoWindowHtml("<b>Problem: </b><br/>This address could not be plotted <br/><br/>");
			//map.addControl(new GSmallMapControl());
		}
    }
}

// This function only runs when the results pages is first loaded
function loadGMapPlot(max) {
	if (GBrowserIsCompatible()) {
		gmap = new GMap2(document.getElementById("gmap"));
		var bounds = new GLatLngBounds();
		
		if(sitepoints!==''){
			var points = sitepoints.split(",");
			for (var i = 0; i < points.length; i++) {
				var tok = points[i].split(":");
				var g = new GLatLng(tok[1], tok[2]);
				bounds.extend(new GLatLng(tok[1], tok[2]));
			}
			gmap.setCenter(bounds.getCenter(), gmap.getBoundsZoomLevel(bounds));
			gmap.addControl(new GSmallMapControl());
		//	gmap.enableScrollWheelZoom();
			plotPoints(sitepoints, 'Site',max);
		}else{
			gmap.setCenter(new GLatLng(41.5, -100.0), 6); // about the center of Nebraska
			gmap.addControl(new GSmallMapControl());
		}
	}
}

// Show the map alert details for the agency/site with the given id
function showMapDetails(id,type) {
	var xml = getXML();
	var innerHTML = "";
	xml.open('GET', 'results_map_details.php?ajax=ajax&id=' + id+'&type='+type, false);
	xml.send(null);
	if(xml.status == 200){
		var token = xml.responseText.split("|");
		var name= token[0];
		var address = token[1];
		var phone = token[2];
		var innerHTML = "<a href=\""
		if ("Agency" == type) {
			innerHTML += "results_agency_details";
		} else if ("Site" == type) {
			innerHTML += "results_site_details";
		} else {
			return;
		}
		innerHTML += ".php?id=" + id + "\">" + name + "</a><br /><br />" + address + "<br /><br />" + phone;
	}else{
		alert(xml.status);
	}
	return innerHTML;
}

function createMarker(point, id, type) {
	var marker = new GMarker(point);
	marker.bindInfoWindowHtml(showMapDetails(id, type));
	return marker;
}

function plotPoints(points,type,max){
	gmap.clearOverlays();
	if(points!=''){
		var splitpoints=points.split(",");
		var totalpoints=splitpoints.length;
		if(totalpoints>max){
			totalpoints=max	
		}
		for ( var i=0; i<totalpoints; i++ ) {
			var token=splitpoints[i].split(":");
			var id=	token[0];
			var latitude = token[1];
			var longitude = token[2];
			var point = new GLatLng(latitude,longitude);
			gmap.addOverlay(createMarker(point, id, type));
		}
	}
}
function setAddress(id, type) {
	var xml = getXML();
	xml.onreadystatechange = function () {
		if (xml.readyState == 4) {
			var parts = xml.responseText.split("~");
			mapid = parts[0];
			latitude = parts[1];
			longitude = parts[2];
			preline = parts[3];
			line1 = parts[4];
			line2 = parts[5];
			city = parts[6];
			state = parts[7];
			zip = parts[8];
			county = parts[9];
			country = parts[10];
			loadGMap(mapid, latitude, longitude, preline, line1, line2, city, state, zip, county, country);
		}
	}
	xml.open('GET', 'address_vars.php?id=	' + id + '&type=' + type);
	xml.send(null);
}
function setPrint() {
	var link = document.getElementById('printbutton');
	if (document.getElementById('tab1link').style.fontWeight == 'bold') link.href += 'agency';
	else link.href += 'site';
}
function initPage() {
	document.getElementById('agencypage').innerHTML = document.getElementById('agencypage0').innerHTML;
	document.getElementById('sitepage').innerHTML = document.getElementById('sitepage0').innerHTML;
	if (!document.getElementById('sitepage1')) {
		document.getElementById('nextpage').style.visibility = 'hidden';
		document.getElementById('nextpage2').style.visibility = 'hidden';
		document.getElementById('pages').getElementsByTagName('A')[1].style.visibility = 'hidden';
		document.getElementById('pages2').getElementsByTagName('A')[1].style.visibility = 'hidden';
	}
	makePageNums('site');
	document.getElementById('servicesprev').style.visibility = 'hidden';
	if (document.getElementById('services').scrollTop + 375 >= document.getElementById('services').scrollHeight) {
		document.getElementById('servicesnext').style.visibility = 'hidden';
	}
	document.getElementById('pages').getElementsByTagName('A')[1].className = 'deadlink';
	document.getElementById('pages2').getElementsByTagName('A')[1].className = 'deadlink';
}
function makePageNums(entity,points) {
	if(points!=''){
		if (!document.getElementById(entity + 'page1')) {
			document.getElementById('pagenums').innerHTML = '';
			document.getElementById('pagenums2').innerHTML = '';
			return;
		}
		var maxPage = 0;
		while (document.getElementById(entity + 'page' + maxPage)) maxPage++;
		maxPage--;
		var pageNums = '<A href="results.php" onclick="javascript:gotoPage(0); return false">1</A> ';
		if (document.getElementById(entity + 'page1')) pageNums += '<A href="results.php" onclick="javascript:gotoPage(1); return false">2</A>';
		if (maxPage > 3) pageNums += '...<SPAN id="currentpage"></SPAN>...';
		else pageNums += ' ';
		if (maxPage >= 3) pageNums += '<A href="results.php" onclick="javascript:gotoPage(' + (maxPage - 1) + '); return false">' + maxPage + '</A>';
		if (maxPage >= 2) pageNums += ' <A href="results.php" onclick="javascript:gotoPage(' + (maxPage) + '); return false">' + (maxPage + 1) + '</A>';
		document.getElementById('pagenums').innerHTML = pageNums;
		pageNums = pageNums.replace("currentpage", "currentpage2");
		document.getElementById('pagenums2').innerHTML = pageNums;
		if (entity == 'site') disablePageNums(sitepage + 1);
		else disablePageNums(agencypage + 1);
		makeCurrentPage();
		document.getElementById('pagenums').innerHTML += ' ';
	}
}
function nextPage() {
	disablePageNums(0);
	var ag = (document.getElementById('tab1link').style.fontWeight == 'bold');
	if (ag) {
		agencypage++;
		var entity = 'agency';
	}
	else {
		sitepage++;
		var entity = 'site';
	}
	if (ag) document.getElementById('agencypage').innerHTML = document.getElementById('agencypage' + agencypage).innerHTML;
	else document.getElementById('sitepage').innerHTML = document.getElementById('sitepage' + sitepage).innerHTML;
	if (ag && !document.getElementById('agencypage' + (agencypage + 1))) {
		document.getElementById('nextpage').style.visibility = 'hidden';
		document.getElementById('nextpage2').style.visibility = 'hidden';
	}
	else if (!ag && !document.getElementById('sitepage' + (sitepage + 1))) {
		document.getElementById('nextpage').style.visibility = 'hidden';
	}
	document.getElementById('prevpage').style.visibility = '';
	document.getElementById('prevpage2').style.visibility = '';
	makeCurrentPage();
	scroll(0,0);
}
function prevPage() {
	disablePageNums(0);
	var ag = (document.getElementById('tab1link').style.fontWeight == 'bold');
	if (ag) {
		agencypage--;
		var entity = 'agency';
	}
	else {
		sitepage--;
		var entity = 'site';
	}
	if (ag) document.getElementById('agencypage').innerHTML = document.getElementById('agencypage' + agencypage).innerHTML;
	else document.getElementById('sitepage').innerHTML = document.getElementById('sitepage' + sitepage).innerHTML;
	if (ag && !document.getElementById('agencypage' + (agencypage - 1))) {
		document.getElementById('prevpage').style.visibility = 'hidden';
		document.getElementById('prevpage2').style.visibility = 'hidden';
	}
	else if (!ag && !document.getElementById('sitepage' + (sitepage - 1))) {
		document.getElementById('prevpage').style.visibility = 'hidden';
		document.getElementById('prevpage2').style.visibility = 'hidden';
	}
	document.getElementById('nextpage').style.visibility = '';
	document.getElementById('nextpage2').style.visibility = '';
	makeCurrentPage();
	scroll(0,0);
}
function gotoPage(num) {
	disablePageNums(0);
	var ag = (document.getElementById('tab1link').style.fontWeight == 'bold');
	if (ag) agencypage = num;
	else sitepage = num;
	if (ag) document.getElementById('agencypage').innerHTML = document.getElementById('agencypage' + agencypage).innerHTML;
	else document.getElementById('sitepage').innerHTML = document.getElementById('sitepage' + sitepage).innerHTML;
	document.getElementById('prevpage').style.visibility = '';
	document.getElementById('prevpage2').style.visibility = '';
	document.getElementById('nextpage').style.visibility = '';
	document.getElementById('nextpage2').style.visibility = '';
	if (ag && !document.getElementById('agencypage' + (agencypage - 1))) {
		document.getElementById('prevpage').style.visibility = 'hidden';
		document.getElementById('prevpage2').style.visibility = 'hidden';
	}
	if (ag && !document.getElementById('agencypage' + (agencypage + 1))) {
		document.getElementById('nextpage').style.visibility = 'hidden';
		document.getElementById('nextpage2').style.visibility = 'hidden';
	}
	if (!ag && !document.getElementById('sitepage' + (sitepage - 1))) {
		document.getElementById('prevpage').style.visibility = 'hidden';
		document.getElementById('prevpage2').style.visibility = 'hidden';
	}
	if (!ag && !document.getElementById('sitepage' + (sitepage + 1))) {
		document.getElementById('nextpage').style.visibility = 'hidden';
		document.getElementById('nextpage2').style.visibility = 'hidden';
	}
	disablePageNums(ag ? agencypage + 1 : sitepage + 1);
	makeCurrentPage();
	scroll(0,0);
}

function forwardServices() {
	document.getElementById('services').scrollTop += 300;
	if (document.getElementById('services').scrollTop + 375 >= document.getElementById('services').scrollHeight) {
		document.getElementById('servicesnext').style.visibility = 'hidden';
	}
	document.getElementById('servicesprev').style.visibility = '';
}

function backServices() {
	document.getElementById('services').scrollTop -= 300;
	if (document.getElementById('services').scrollTop <= 0) {
		document.getElementById('servicesprev').style.visibility = 'hidden';
	}
	document.getElementById('servicesnext').style.visibility = '';
}

function disablePageNums(num) {
	var links = document.getElementById('pages').getElementsByTagName('A');
	for (var i = 0; i < links.length; i++) {
		if (links[i].innerHTML == num) links[i].className= 'deadlink';
		else links[i].className = '';
	}
	links = document.getElementById('pages2').getElementsByTagName('A');
	for (var i = 0; i < links.length; i++) {
		if (links[i].innerHTML == num) links[i].className= 'deadlink';
		else links[i].className = '';
	}
}

function closeDetails() { 
	document.getElementById('curtain').style.display = 'none';
	document.getElementById('moreinfo').style.display = 'none';
	document.body.style.overflow = '';
	document.body.scrollTop = scrollPos;
}

function makeCurrentPage() {
	if (!document.getElementById('currentpage')) return;
	var ag = (document.getElementById('tab1link').style.fontWeight == 'bold');
	if (ag) var entity = 'agency';
	else var entity = 'site';
	var maxPage = 0;
	while (document.getElementById(entity + 'page' + maxPage)) maxPage++;
	maxPage--;
	if (maxPage < 3) return;
	if (ag) {
		if (agencypage > 1 && agencypage < maxPage - 1) document.getElementById('currentpage').innerHTML = (agencypage + 1);
		else {
			if (document.getElementById('currentpage')) document.getElementById('currentpage').innerHTML = '';
			disablePageNums(agencypage + 1);
		}
	 } else {
		if (sitepage > 1 && sitepage < maxPage - 1) document.getElementById('currentpage').innerHTML = (sitepage + 1);
		else {
			if (document.getElementById('currentpage')) document.getElementById('currentpage').innerHTML = '';
			disablePageNums(sitepage + 1);
		}
	 }
	 document.getElementById('currentpage2').innerHTML = document.getElementById('currentpage').innerHTML;
}

function htmlentities(s){
    // http://kevin.vanzonneveld.net
    // *     example 1: htmlentities('Kevin & van Zonneveld');
    // *     returns 1: 'Kevin &amp; van Zonneveld'
 
    var div = document.createElement('div');
    var text = document.createTextNode(s);
    div.appendChild(text);
    return div.innerHTML;
}