/*************************************************************************************************************************
Copyright - Stephen D. Miller, TexasTailchaser.com 

The content on the TexasTailchaser.com and all web pages therin, including without limitation, the text, software, scripts, 
graphics, photos, sounds, videos, interactive features and the like ("Content") and the trademarks, service marks and logos 
contained therein ("Marks"), are owned by or licensed to TexasTailchaser.com, subject to copyright and other 
intellectual property rights under United States and foreign laws and international conventions. Content on the Website is provided 
to you AS IS for your information and personal use only and may not be used, copied, reproduced, distributed, transmitted, broadcast, 
displayed, sold, licensed, or otherwise exploited for any other purposes whatsoever without the prior written consent of Stephen D.Miller, TexasTailchaser.com. 
TexasTailchaser.com reserves all rights not expressly granted in and to the Website and the Content. 

Any violations are not protected, recognized, permissable, classified, or permitted under "Fair Use" and "Public Domain" claims. 

In plain english, you are not allowed to copy or download ANY of the underlying code (HTML, CSS, Javascript, AJAX, etc) for ANY use whatsoever. 
Go write your own code!!!
***************************************************************************************************************************/


var gRadarCity = "AMA";
var previousRadarCity = "NULL";
var gRadarType = "ref";
var gMap;
var gPointCenter;
var gRadarImg;
var gRangeRangeCircle;
var autoCenterOnChaser = true;
var gAutoCenterRadar = false;
var gAutoLoadNearestRadar = true;
var firstTimeLoad = true;

function loadMap() {
	gMap = new GMap2(document.getElementById("map"));
	gMap.setCenter(getCenterPoint(gRadarCity), 7);
	gMap.addControl(new GSmallMapControl());
  gMap.addControl(new GMapTypeControl());
  gMap.enableScrollWheelZoom();
  loadRadar();
  getGPSUsers();
  loadNearestRadar();
  loadWarnings();
  startTimers();	
}

function refreshWarnings() {
	gMap.removeOverlay(warnings);
	loadWarnings();
}
function loadWarnings() {
	warnings = new GGeoXml("http://texastailchaser.com/livechase/kml/warnings.kml?dummy="+(new Date()).getTime());
	gMap.addOverlay(warnings);
}

/*
function autoCenterRadar(obj) {
	if(obj.className == "greenButton") {
		if(autoCenterOnChaser) {//turn off autoCenterOnChaser
		}
		obj.className = "redButton";
		obj.innerText = "Turn Auto-Center Radar OFF";
		gAutoCenterRadar = true;
		gMap.setCenter(getCenterPoint(gRadarCity), gMap.getZoom());
	}else{
		obj.className = "greenButton";
		obj.innerText = "Turn Auto-Center Radar ON";
		gAutoCenterOnRadar = false;
	}
}
*/

/*
function autoLoadNearestRadar(obj) {
	if(obj.className == "greenButton") {
		obj.className = "redButton";
		obj.innerText = "Turn Auto-Load GPS-Adjacent Radar ON";
		gAutoLoadNearestRadar = false;
	}else{
		obj.className = "greenButton";
		obj.innerText = "Turn Auto-Load GPS-Adjacent Radar OFF";
		gAutoLoadNearestRadar = true;
	}
}
*/

function hideRadar(obj) {
	if(obj.className == "greenButton") {
		gRadarImg.hide();
		obj.className = "redButton";
		obj.innerHTML = "Show Radar Overlay";
	}else{
		showRadar();
	}
}

function showRadar() {
	gRadarImg.show();
	document.getElementById("hideRadar").className = "greenButton";
	document.getElementById("hideRadar").innerHTML = "Hide Radar Overlay";
}

function getKML() {
  var url_end = "?nocache=" + (new Date()).getTime() + "&dummy=" + (new Date()).getTime();
  var new_url = "http://texastailchaser.com/livechase/kml/" + gRadarCity + "_" + gRadarType + ".kml" + url_end;
  return new_url;
}

var realUrl;
var fakerUrl;
var xmlDoc;
var south;
var north;
var east;
var west;
var swPoint;
var nePoint;
var bounds;
function loadRadar() {	
	if(gRadarCity != previousRadarCity) {
		xmlDoc = loadXMLDoc("http://texastailchaser.com/livechase/xml/" + gRadarCity + "_" + gRadarType + ".xml");
		realUrl = xmlDoc.getElementsByTagName('href')[0].childNodes[0].nodeValue;
		south = xmlDoc.getElementsByTagName('south')[0].childNodes[0].nodeValue;
		west = xmlDoc.getElementsByTagName('west')[0].childNodes[0].nodeValue;
		north = xmlDoc.getElementsByTagName('north')[0].childNodes[0].nodeValue;
		east = xmlDoc.getElementsByTagName('east')[0].childNodes[0].nodeValue;
		swPoint = new GLatLng(south,west);
		nePoint = new GLatLng(north,east);
		if(previousRadarCity != "NULL") {
			gMap.removeOverlay(gRangeRangeCircle);
		}
		drawCircle(getCenterPoint(gRadarCity), 230, 40, 000000, 2, 0.5);
		previousRadarCity = gRadarCity;
	} 
	if(!firstTimeLoad) {
		gMap.removeOverlay(gRadarImg);
	}
	fakerUrl = realUrl + "?dummy="+(new Date()).getTime();
	bounds = new GLatLngBounds(new GLatLng(south,west), new GLatLng(north,east));
	
	gRadarImg = new GGroundOverlay(fakerUrl, bounds);
	firstTimeLoad = false;
	gMap.addOverlay(gRadarImg);
	if(gAutoCenterRadar) {
		gMap.setCenter(getCenterPoint(gRadarCity), gMap.getZoom());
	}
	showRadar();
}


function loadRadarCity(obj) {
	obj.checked = true;
	if(obj.value != gRadarCity) {
		gRadarCity = obj.value;
	}
	loadRadar();
	refreshRadarTimer();
	showRadar();
}

function loadRadarType(obj) {
	obj.checked = true;
	gRadarType = obj.value;
	loadRadar();
	refreshRadarTimer();
	showRadar();
}

var bounds;
var circle;
function drawCircle(center, radius, nodes, liColor, liWidth, liOpa)
{
	bounds = new GLatLngBounds();
	var latConv = center.distanceFrom(new GLatLng(center.lat()+0.1, center.lng()))/100;
	var lngConv = center.distanceFrom(new GLatLng(center.lat(), center.lng()+0.1))/100;

	//Loop 
	var points = [];
	var step = parseInt(360/nodes)/10;
	for(var i=0; i<=360; i+=step)
	{
		var pint = new GLatLng(center.lat() + (radius/latConv * Math.cos(i * Math.PI/180)), center.lng() + (radius/lngConv * Math.sin(i * Math.PI/180)));
		points.push(pint);
		bounds.extend(pint); //this is for fit function
	}
	gRangeRangeCircle = new GPolygon(points,liColor,liWidth,liOpa,null,0,false);
	gMap.addOverlay(gRangeRangeCircle);
}



function loadXMLDoc(dname) 
{
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    }
  catch(e) {alert(e.message)}
  }
try 
  {
  xmlDoc.async=false;
  xmlDoc.load(dname);
  return(xmlDoc);
  }
catch(e) {alert(e.message)}
return(null);
}
