var map;
var debugElement;
var mapElement;
var gMarkers=[];
var mIndex = 0;
var gLines=[];
var lIndex=0;
var cameraTitleElement;
var cameraNumberElement;
var imageElement;
var currentImg='outf_100.jpg'; //VERY CONFUSINGLY HARD-WIRED!! Should server-side this up to avoid complications with the OMS camera (8/6/10). This is also the case for cctv.asp, as that has OMS hard-coded too.
var dataArray=[];

var timer;
var tmRepeat = 90;
var tm = 90; //time in seconds for refresh

$(document).ready(function() {
	tickergate();
	onLoad();
	setTimeout(function(){
		timer = setInterval('countdown()',1000);
	},50);
});
$(window).unload(function(){
	GUnload();
});

function countdown(){
	if(tm>0){	
		var timeStr = 60%tm;
		var r = tm % 60;
		if(r<10){var fr="0"+r}else{fr=r};
		$('#timer').html((tm-r)/60+":"+fr);
		tm--;
	}else{
		tm=tmRepeat;
		refreshImg();
	}
}

function onLoad(){
	debugElement = document.getElementById('debug');
	mapElement = document.getElementById('map');
	cameraNumberElement = document.getElementById('camNumber');
	cameraTitleElement = document.getElementById('camLocation');
	imageElement = document.getElementById('camImage');
	
	map = new GMap2(document.getElementById('map'));
	map.setCenter(new GLatLng(52.96466675804344, -1.1566543579101562),14,G_NORMAL_MAP);
	map.addControl(new GMapTypeControl(true),new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7,7)));
	map.addControl(new GSmallMapControl(true),new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7,7)));
	map.removeMapType(G_SATELLITE_MAP);
	map.enableScrollWheelZoom();
	createPolyLines();
	setTimeout(function(){
		showPolyLine(1,true);
		readXml('CCTV', '/xml/cctv/cctv.xml');
		readXml('CCTV', '/xml/cctv/cctv.xml',1);
	},3000);
	$("#areas").change(function(){
		var areaid=$('#areas option:selected').val();
		readXml('CCTV', '/xml/cctv/cctv.xml',areaid);
		showPolyLine(areaid,true);
	});
	$("#cameras").change(function(){
		eval($('#cameras option:selected').val());
	});
}

function refreshData(){
	firstRun=true;
	map.clearOverlays();
	showPolyLine(1,true);
	readXml('CCTV', '/xml/cctv/cctv.xml');
	readXml('CCTV', '/xml/cctv/cctv.xml',1);
}

function readXml(type,xmldb,area) {
	debugElement.innerHTML = "LoadData was called: " + type + "," + xmldb + "<br />";
	var tmpHtml = '';
	var request = GXmlHttp.create();
	var now = new Date();
	var r = now.toUTCString();
	var lox = new Array();
	var nocacheXML = xmldb + "?r=" + r;
	request.open("GET", nocacheXML, true);
	request.onreadystatechange = function() {
		$('#routeDetail').css("height","auto");
		if (request.readyState == 4) {
			$("#cameras").empty();
			var xmlDoc = request.responseXML;
			var markers = xmlDoc.documentElement.getElementsByTagName("marker");
			for (var i = 0; i < markers.length; i++) {
				var locations = markers[i].getElementsByTagName("location");
				var lat=parseFloat(markers[i].getAttribute("lat"));
				var lng=parseFloat(markers[i].getAttribute("lng"));
				var point=new GLatLng(lat,lng);
				var lox = '';
				for(var n=0;n<locations.length;n++){
					if(n>0){lox += ' / ';}
					lox += GXml.value(locations[n]);
				}
				var camimage = markers[i].getAttribute("image") + '?rnd='+r;
				var id = markers[i].getAttribute("id");
				var areas = markers[i].getElementsByTagName("area");
				
				if(!area){ //don't pass a value when first loading, to initially set up the map.
					var marker=createMarker(point,lox,id,camimage);
					map.addOverlay(marker);
				}else{

					if(area!='all'){
						for(var n=0;n<areas.length;n++){
							if(area == GXml.value(areas[n])){
								$("#cameras").append("<option value=\"handleSelect('"+id+"','"+camimage+"','"+lox+"');\">"+id+": "+lox+"</option>");
							}
						}
					}else{
						$("#cameras").append("<option value=\"handleSelect('"+id+"','"+camimage+"','"+lox+"');\">"+id+": "+lox+"</option>");
					}
				}
			}
		}
	};
	request.send(null); 
}

function createMarker(point,title,id,camimage){
	var marker=new ngIcon(point,id+': '+title,"/images/googlemap_icons/mIconRed.gif",10,10);
	GEvent.addListener(marker, "click", function() {
		map.panTo(point);
		handleSelect(id,camimage,title);
		//marker.openInfoWindowHtml(info);
	});
	gMarkers[id]=marker;
	//mIndex++;
	return marker;
}

function createPolyLines(){
	for(var id=1;id<7;id++){
		if(routes[id]){
			//debugElement.innerHTML+=routes[id][0]+'<br />'+routes[id][1];
			if(routes[id][1]){
				var polyLine=new GPolyline.fromEncoded({
					color: '#00f',
					weight: 5,
					opacity: 0.8,
					points: routes[id][0],
					zoomFactor: 2,
					levels: routes[id][1],
					numLevels: 18
				});
				gLines[id]=polyLine;
			}
		}
		lIndex++;
	}
}

function handleSelect(i,img,t){
	//var str="../outf_0";
	//if(i<10){str+="0"};
	tm=tmRepeat;
	currentImg=img;
	var now = new Date();
	var r = now.toUTCString();
	imageElement.src='/'+img+'?r='+r;//str+i+".jpg";
	imageElement.alt=t;imageElement.title=t;
	cameraNumberElement.innerHTML='Camera #'+i;
	cameraTitleElement.innerHTML=t;
	map.panTo(gMarkers[i].getPoint());
}

var routes=[];

//1-city centre, 2-rr north, 3-rr south, 4-mansfield rd, 5-london rd, 6-a610-m1

//0=points,1-levels,2=title
routes[0]=false;

routes[1]=[];
routes[1][0]="uagbIhu~EyFvn@vHfY|TpNnZuIhTeWpL{Z{A_k@uJ_]aQsG_UzKmQrOeLzY";
routes[1][1]="PFHFIEGEIFGEP";
routes[1][2]="City Centre";

routes[2]=[];
routes[2][0]="gvebIfbhFaCmIqBmAe]s@sj@YmPuPiU}WyTgYgFmLyC}LiFaKcIuAoEeAeCaDgAqGmAcOqAyJmFwXuCyUaCy]eCiYoImMaGyQuBqNgBsH";
routes[2][1]="PCFBHBCFCCFADIBACBDAFDCBP";
routes[2][2]="Ring Road North";

routes[3]=[];
routes[3][0]="{vebI~ahFdNeLnCi@`MYvKcAlFbAvFs@pB{@hFoFvFuLbEsSxEeTlFmPhIkOlLkLpM{G`MaGtY_UpVgQzMuE~P{DzL}DrFuEfFaKdIiVzI{VxIk^h@{C";
routes[3][1]="PCFBDDBGCE@DCHD@DBFBBDHC@DAP";
routes[3][2]="Ring Road South";

routes[4]=[];
routes[4][0]="y`fbIti_F_@UkCj@sOrFqRpJ}KjFiGzB{D\\kFXwGQiBYaCkA}OmJiP}J{RgLiOuJqOwKmQ_NiEqCeGcAaCMaELwAa@_J{EgDwB{AYcHOwGI{ELcFfAwF|BsDt@aCHiEiA";
routes[4][1]="PBCD@BE@CHBC@@DBAAGCAEBABF?BEABDCP";
routes[4][2]="Mansfield Road";

routes[5]=[];
routes[5][0]="eydbI~v}E`Ni@~MQvLs@~Hi@lBk@lJ{HdEoMtBcDvBi@nC?|ExC~ElEbIfB";
routes[5][1]="PAC?BGDDCGDBDP";
routes[5][2]="London Road";

routes[6]=[];
routes[6][0]="_sebIjs`FcA`CoCzOoAbOCfC`@jDa@dAu@_@m@oAq@v@qAxCiGlPcFhI_IjJ_B`C_B|EwF|QqA~GiC`OyAbHoAfDcE`GiGlIqFhCiDd@aD]}CNsCzAoPbLoBtCkBvByEzDo@dAoB~DyDdGeOnOgDtAaFjDeCjBs@`BiDrQsGfMa@fCeAfFe@pC_@tJqAlNyAhGsAxIsAhLuCtYkCnQ@`Br@hC`@~Dm@~Cu@tAMpALdF|@tHjAfHj@dEPfFQtEcE|S";
routes[6][1]="PBDCBFDBDE@DBAF?C?BBH?EBDBEAFABC@ADCB?CHCD@?EBCAC@BFBADBCADA@BECP";
routes[6][2]="A610 to M1";

function showPolyLine(i,show){
	if(show){
		//routeHeaderElement.innerHTML=routes[i][2];
		for(var a=1;a<routes.length;a++){hidePolyLine(a)};
	};
	
	if(gLines[i]){
		//var mapCentre=map.getCenter();
		if(show){
			//for(var a=1;a<routes.length;a++){hidePolyLine(a)};
			map.addOverlay(gLines[i]);
		};
		var bnds = gLines[i].getBounds();
		map.setZoom(map.getBoundsZoomLevel(bnds,new GSize(252,225)));
		map.panTo(bnds.getCenter());	
	}else{
		//if(i==0){routeHeaderElement.innerHTML='All Cameras'};
	}
}

function hidePolyLine(i){
	map.removeOverlay(gLines[i]);
}

function refreshImg(){
	if(imageElement){
		var now = new Date();var r = now.toUTCString();
		imageElement.src='/'+currentImg+'?r='+r;
	}
	tm=tmRepeat;
}

function openWindow(){
	var camimage=$("#camImage").attr("src");var locations=$("#camImage").attr("alt");
	var nw=window.open('/cam.asp?image='+camimage+'&locations='+locations,'_blank','height=300,width=300,location=no');
}
//-->