// JavaScript Document<!--//
//start my code
//ajax timer code

//timerNum is index in timers array
function ajaxTimerClass(timerNum){
	this.initTimer = initTimer;
	this.stopTimer = stopTimer;
	this.startTimer = startTimer;
	this.display = display;
	this.alarm = alarm;
	this.getHttpObj = getHttpObj;
	var ajaxUrl;
	var ajaxHandler;
	var duration;
	var id = timerNum;
	var delay = 50;//timer delay in msec
	var timerID = null;
	var timerRunning = false;
	var http = getHTTPObject();

	function initTimer(url,handler){
		ajaxUrl = url;
		ajaxHandler = handler;
	}

	function stopTimer(){
		if(timerRunning)
			clearTimeout(timerID);
		timerRunning = false;
	}

	function startTimer(){
		if(timerRunning)
			clearTimeout(timerID);
		timerRunning = true;
		timerID = self.setTimeout(function(){timers[id].alarm();}, delay);
	}

	function alarm(){
		stopTimer();
		if(ajaxUrl != null){
			http.open("GET", ajaxUrl, true);
			http.onreadystatechange = ajaxHandler;
			http.send(null);
		}
	}

	function getHttpObj(){
		return http;
	}

	function display(val){
		alert(val);
	}
}

var timers = new Array();
var mapTimer = new ajaxTimerClass(0);
timers[0] = mapTimer;
var buildTimer = new ajaxTimerClass(1);
timers[1] = buildTimer;

//end timer code

//var http = getHTTPObject();
//var http2 = getHTTPObject();
//var http3 = getHTTPObject();

var zoom = 0;//zoom is the incremental zoom value
var maxZoom = 21;//maxZoom is the maximum zoom increment
var myFlagX = 0;//myFlagX default location for flag
var myFlagY = 0;//myFlagY default location for flag
var zoomMapSize = 500;//zoomMapSize image size of zoomed map
var miniMapSize = 150;//miniMapSize image size of mini map
var databaseSize = 600;//databaseSize relative image size stored in database(do not change)
var isBusy = 0;//bug fix for xmlhttp object in firefox
//centerXY centers a number between 0 and maxLimit with internal length of mod
function centerXY(xy,mod,maxLimit){
	var temp = xy - mod;
	var tempMax = maxLimit - mod*2;
	return(temp < 0)?0:(temp > tempMax)?tempMax:temp;
}
//getPixelVal returns a value from a pixel size
function getPixelVal(val){
	return val.replace('px','');
}
//browser checks for compatibility
var agt=navigator.userAgent.toLowerCase();
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
//updateMap changes the location of locator based on mouse click
//for use when minimap is clicked
function updateMap(obj,evt){
if(dragOn == 1){
	var x;
	var y;
	if(is_ie){
		x=evt.offsetX;
		y=evt.offsetY;
	}
	else{
		x=evt.pageX;
		y=evt.pageY;
		x -= obj.offsetLeft;
		y -= obj.offsetTop;
		var ele = obj.offsetParent;
		while (ele) {
			x -= ele.offsetLeft;
			y -= ele.offsetTop;
			ele = ele.offsetParent;
		}
	}
	setMap(x,y);
	}
}
//moveMapDrag updates map location on drag
function moveMapDrag(obj,evt){
if(dragOn == 1){
	var x;
	var y;
	if(is_ie){
		x=evt.offsetX;
		y=evt.offsetY;
	}
	else{
		x=evt.pageX;
		y=evt.pageY;
		x -= obj.offsetLeft;
		y -= obj.offsetTop;
		var ele = obj.offsetParent;
		while (ele) {
			x -= ele.offsetLeft;
			y -= ele.offsetTop;
			ele = ele.offsetParent;
		}
	}
	var map = document.getElementById('map');
	newx = oldX+(oldClickX - x);
	newy = oldY+(oldClickY - y);
	var tempSize = zoomMapSize + (miniMapSize * zoom/2);
	setMap(Math.round(newx/tempSize*miniMapSize),Math.round(newy/tempSize*miniMapSize));
	}
}
//updateLocator changes the location of locator based on mouse click
//for use when locator is clicked
function updateLocator(obj,evt){
if(dragOn == 1){
	var x;
	var y;
	if(is_ie){
		x=evt.offsetX + obj.offsetLeft;
		y=evt.offsetY + obj.offsetTop;
	}
	else{
		x=evt.pageX;
		y=evt.pageY;
		var ele = obj.offsetParent;
		while (ele) {
			x -= ele.offsetLeft;
			y -= ele.offsetTop;
			ele = ele.offsetParent;
		}
	}
	setMap(x,y);
	}
}
//setMap sets minimap at coords x,y and updates main map by relation
function setMap(x,y){
	var locator = document.getElementById('locator');
	var image = document.getElementById('map');
	var texttype = document.getElementById('texttype');
	var cartImage = document.getElementById('carts');
	var wireImage = document.getElementById('wireless');
	var lotImage = document.getElementById('parkingLots');
	var boxSize = getPixelVal(locator.style.width);
	//boxSize++;
	x = centerXY(x,Math.round(boxSize/2),miniMapSize);
	y = centerXY(y,Math.round(boxSize/2),miniMapSize);
	locator.style.left = x+"px";
	locator.style.top = y+"px";
	var tempLen = Math.round(zoomMapSize + miniMapSize * (zoom / 2));
	var left = -Math.round(x*tempLen/miniMapSize);
	var top = -Math.round(y*tempLen/miniMapSize);
	image.style.left = left+"px";
	image.style.top = top+"px";
	if(texttype){
	  texttype.style.left = left+"px";
	  texttype.style.top = top+"px";
	}
	if(lotImage){
		lotImage.style.left = left+"px";
		lotImage.style.top = top+"px";
	}
	if(cartImage){
		cartImage.style.left = left+"px";
		cartImage.style.top = top+"px";
	}
	if(wireImage){
		wireImage.style.left = left+"px";
		wireImage.style.top = top+"px";
	}
	if(document.getElementById('flagOne')){
		setFlag(myFlagX,myFlagY);
	}
	else{
		if(document.getElementById('infoDivEdit')){
			showFlags(-1,'edit');
		}else{
			showFlags(-1,'layout');
		}
	}
	if(document.getElementById('buildsListing')){
		showBuildList();
	}
}
//parseLocation splits location string to retrieve an x and y value
function parseLocation(location){
	var temp = new Array();
	temp = location.split('?');
	var tempLocation = temp[1];
	temp = tempLocation.split('&');
	var x = temp[0].split('=')[1];
	var y = temp[1].split('=')[1];
	temp = new Array(x,y);
	return temp;
}
//setCoords is called onLoad from the body of the page to retirieve
//coordinates from preceding page and update map
function setCoords(){
	var loc = new String(document.location);

	var location = parseLocation(loc);
	setMap(location[0],location[1]);
}
//updateZoom is called after using zoomIn or zoomOut funtion to update minimap
//and main map to new zoom.
function updateZoom(oldZoom,x,y){
	var map = document.getElementById('map');
	var texttype = document.getElementById('texttype');
	var carts = document.getElementById('carts');
	var wireless = document.getElementById('wireless');
	var lots = document.getElementById('parkingLots');
	var locator = document.getElementById('locator');
	var tempSize = zoomMapSize+(miniMapSize*zoom/2);
	var ratio = Math.ceil((zoomMapSize/tempSize)*miniMapSize);
	map.style.width = tempSize+'px';
	map.style.height = tempSize+'px';
	if(texttype){
	  texttype.style.width = tempSize+'px';
	  texttype.style.height = tempSize+'px';
        }
	if(lots){
		lots.style.width = tempSize+'px';
		lots.style.height = tempSize+'px';
	}
	if(carts){
		carts.style.width = tempSize+'px';
		carts.style.height = tempSize+'px';
	}
	if(wireless){
		wireless.style.width = tempSize+'px';
		wireless.style.height = tempSize+'px';
	}
	var locWidth = Number(getPixelVal(locator.style.width));
	var locHeight = Number(getPixelVal(locator.style.height));
	var	tempLocX = locator.offsetLeft;
	var	tempLocY = locator.offsetTop;
	locator.style.width = ratio+'px';
	locator.style.height = ratio+'px';
	tempLocX += Math.ceil((locWidth - ratio)/2);
	tempLocY += Math.ceil((locHeight - ratio)/2);
	var tempLen = tempLocX + ratio;
	tempLocX = (tempLen < miniMapSize)?tempLocX+Math.ceil(ratio/2):miniMapSize-Math.ceil(ratio/2);
	tempLen = tempLocY + ratio;
	tempLocY = (tempLen < miniMapSize)?tempLocY+Math.ceil(ratio/2):miniMapSize-Math.ceil(ratio/2);
	if(x == 0 && y == 0){
		if(zoom != oldZoom)
			setMap(tempLocX,tempLocY);
	}
	else{
		setMap(x,y);
	}
	updateSlider();
}
//zoomIn increments the zoom
function zoomIn(obj,evt){
	var oldZoom = zoom;
	zoom++;
	if(zoom > maxZoom){
		zoom = maxZoom;
	}
	else{
		if(!lastTarget){
			updateZoom(oldZoom,0,0);
		}
		else{
			lastTarget.style.display = "none";
			lastTarget = null;
		}
	}
}
//zoomOut decrements the zoom
function zoomOut(){
	var oldZoom = zoom;
	zoom--;
	if (zoom < 0){
		zoom = 0;
	}
	else{
		updateZoom(oldZoom,0,0);
	}
}
//zoomBar updates zoom according to zoom bar click
function zoomBar(obj,evt){
	var x;
	var y;
	if(is_ie){
		x=evt.offsetX;
		y=evt.offsetY;
	}
	else{
		x=evt.pageX;
		y=evt.pageY;
		x -= obj.offsetLeft;
		y -= obj.offsetTop;
		var ele = obj.offsetParent;
		while (ele) {
			x -= ele.offsetLeft;
			y -= ele.offsetTop;
			ele = ele.offsetParent;
		}
	}
	var oldZoom = zoom;
	var newZoom = Math.floor((y-15)/4);
	if(newZoom < 0) newZoom = 0;
	if(newZoom > maxZoom) newZoom = maxZoom;
	var dir = (newZoom < zoom)?1:0;
	zoom = newZoom;
	updateZoom(oldZoom,0,0);
}
//updateSlider updates location of zoom Slider
function updateSlider(){
	var y_loc = (zoom*4)+15;
	document.getElementById('zoomSlider').style.marginTop = y_loc+'px';
}
var flagZoom = 0;//zoom level of placed flag
//updateFlag updates location of flag placement
//used when in maximum zoom
function updateFlag(obj,evt){
	var x;
	var y;
	var tempSize = zoomMapSize+(miniMapSize*zoom/2);
	var map = document.getElementById('map');
	if(is_ie){
		x=evt.offsetX;
		y=evt.offsetY;
	}
	else{
		x=evt.pageX;
		y=evt.pageY;
		x -= obj.offsetLeft;
		y -= obj.offsetTop;
		var ele = obj.offsetParent;
		while (ele) {
			x -= ele.offsetLeft;
			y -= ele.offsetTop;
			ele = ele.offsetParent;
		}
	}
	myFlagX = x-map.offsetLeft;
	myFlagY = y-map.offsetTop;
	document.getElementById('locX').value = Math.ceil(myFlagX*databaseSize/tempSize);
	document.getElementById('locY').value = Math.ceil(myFlagY*databaseSize/tempSize);
	flagZoom = zoom;
	setFlag(myFlagX,myFlagY);
}
//setFlag places a flag at specified coordinates based off max zoom
function setFlag(x,y){
	var myFlag = document.getElementById('flagOne');
	var map = document.getElementById('map');
	var tempSize = zoomMapSize+(miniMapSize*zoom/2);
	var maxSize = zoomMapSize+(miniMapSize*flagZoom/2);
	var tx = Math.ceil(x*tempSize/maxSize)+map.offsetLeft;
	var ty = Math.ceil(y*tempSize/maxSize)+map.offsetTop;
	myFlag.style.left = tx+'px';
	myFlag.style.top = ty+'px';
}
//showFlags makes ajax call to update flags shown on map
//-1 specifies no toggle to flag array
function showFlags(index,source){
	if(index >= 0){
		flags[index] = (flags[index] == 0)?1:0;
	}
	var flagDiv = document.getElementById('ajaxFlags');
	var url = "ajaxMapFlags.php?";
	var locator = document.getElementById('locator');
	var x = locator.offsetLeft;
	var y = locator.offsetTop;
	x = databaseSize * (x/miniMapSize);
	url += "x="+x;
	y = databaseSize * (y/miniMapSize);
	url += "&y="+y;
	var boxSize = getPixelVal(locator.style.width);
	boxSize++;
	boxSize *= Math.ceil(databaseSize/miniMapSize);
	url += "&size="+boxSize;
	url += "&source="+source;
	url += "&flags="+flags;
	//ajax timer call
	mapTimer.initTimer(url,handleShowFlags);
	mapTimer.startTimer();

//	if(isBusy == 1){
//		http.onreadystatechange = function() {};
//		http.abort();
//	}
//    http.open("GET", url, true);
//	isBusy = 1;
//    http.onreadystatechange = handleShowFlags;
//    http.send(null);
}
//handleShowFlags updates flag overlay from database info
function handleShowFlags() {
	//retrieve timers http object
	var http = mapTimer.getHttpObj();
	if (http.readyState == 4) {
		isBusy = 0;
		if (http.responseText.indexOf('invalid') == -1) {
			var newPage = http.responseText;
			document.getElementById('ajaxFlags').innerHTML = newPage;
    	}
	}
}
//getHTTPObject sets up an ajax http object
function getHTTPObject() {
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}
var lastTarget = null;
var remTarget = null;
//popUpDescription locates selected item and displays its description bubble
function popUpDescription(obj, evt){
	var id = "popUp"+obj.name.replace('flag','');
	if(lastTarget){
		if(lastTarget.id != id){
			new Effect.Fade(lastTarget, {duration: .2});
		}
	}
	var popWin = document.getElementById(id);
	lastTarget = popWin;
	var picId = "bubble";
	if(popWin.style.display=="none"){
		var x = obj.offsetLeft;
		var y = obj.offsetTop;
		var w = Number(getPixelVal(popWin.style.width));
		var h = Number(getPixelVal(popWin.style.height));
		var tempPad = "";
		if(y-h < 0){
			picId+='B';
			tempPad = "20px";
		} else {
			y-=h;
			picId+='T';
			tempPad = "0px";
		}
		tempPad +=" 0px 0px 0px";
		if(x+w > zoomMapSize){
			x-=w;
			picId+='L';
		} else {
			picId+='R';
		}
		picId+=".gif";
		popWin.style.left = x+"px";
		popWin.style.top = y+"px";
		popWin.style.background = "url(images/"+picId+") no-repeat";
		popWin.style.padding = tempPad;
		new Effect.Appear(popWin, {duration: .2});
	}
}
//hidePopWin hides currently shown info bubble
function hidePopWin(id){
	var popWin = document.getElementById(id);
	new Effect.Fade(popWin, {duration: .2});
	lastTarget = null;
}
var imgOn = 'images/on.gif';
var imgOff = 'images/off.gif';
//clearFlags clears flags on overlay
function clearFlags(){
	for(var i in flags){
		flags[i] = 0;
	}
}
//toggleOnOff swaps state of flag On/Off
function toggleOnOff(obj,index){
	if(flags[index] == 0){
		obj.src = imgOff;
	}
	else{
		obj.src = imgOn;
	}
}
var isBusy2 = 0;//isBusy flag for http2 object
//handleHttpResponseBuildInfo recieves return info from showBuildList ajax call
//and updates BuildList
function handleHttpResponseBuildInfo(){
	//retrieve timers http object
	var http2 = buildTimer.getHttpObj();
	if (http2.readyState == 4) {
		isBusy2 = 0;
		if (http2.responseText.indexOf('invalid') == -1) {
			var info = http2.responseText;
			document.getElementById('buildsListing').innerHTML = info;
    	}
	}
}
//showBuildList updates and displays buildings in current viewport
function showBuildList(){
	var url = "ajaxBuildList.php?";
	var locator = document.getElementById('locator');
	var x = locator.offsetLeft;
	var y = locator.offsetTop;
	x = databaseSize * (x/miniMapSize);
	url += "x="+x;
	y = databaseSize * (y/miniMapSize);
	url += "&y="+y;
	var boxSize = getPixelVal(locator.style.width);
	boxSize++;
	boxSize *= Math.ceil(databaseSize/miniMapSize);
	url += "&size="+boxSize;
	//ajax timer call
	buildTimer.initTimer(url,handleHttpResponseBuildInfo);
	buildTimer.startTimer();

//	if(isBusy2 == 1){
//		http2.onreadystatechange = function() {};
//		http2.abort();
//	}
//    http2.open("GET", url, true);
//	isBusy2 = 1;
//    http2.onreadystatechange = handleHttpResponseBuildInfo;
//    http2.send(null);
}
//moveToBuild updates map location and zoom to view building
function moveToBuild(x,y){
	var newX = Math.floor((x/databaseSize)*miniMapSize);
	var newY = Math.floor((y/databaseSize)*miniMapSize);
	var oldZoom = zoom;
	zoom = maxZoom;
	updateZoom(oldZoom,newX,newY);
	//showBuildList();
}
//popUpMore pops up new window with full description
function popUpMore(title,desc){
	moreWindow = window.open('','moreWin','scrollbars,width=200,height=400');
	moreWindow.document.write('Title:'+title+'<BR />Description:<BR />'+desc);
}

//handleWheel handles the mouse wheel event
function handleWheel(delta,x,y) {
	if(hoverTarget){
		if(delta != 0){
			var oldZoom = zoom;
			zoom += delta;
			if(zoom < 0)
				zoom = 0;
			if(zoom > maxZoom)
				zoom = maxZoom;
			var tempSize = zoomMapSize + (miniMapSize * (zoom/2));
			var newX = (x * miniMapSize / tempSize);
			var newY = (y * miniMapSize / tempSize);
			if(delta != 0)
				updateZoom(oldZoom,0,0);
		}
		hideTitle();
	}
}
//wheel grabs values associated to mouse wheel
function wheel(event){
	if(hoverTarget){
	var delta = 0;
	if (!event) event = window.event;
	if (event.wheelDelta) {
		delta = event.wheelDelta/120;
		if (window.opera) delta = -delta;
	} else if (event.detail) {
		delta = -event.detail/3;
	}
	var x;
	var y;
	if(is_ie){
		x=event.offsetX;
		y=event.offsetY;
	}
	else{
		x=event.pageX;
		y=event.pageY;
		x -= hoverTarget.offsetLeft;
		y -= hoverTarget.offsetTop;
		var ele = hoverTarget.offsetParent;
		while (ele) {
			x -= ele.offsetLeft;
			y -= ele.offsetTop;
			ele = ele.offsetParent;
		}
	}
	if (delta)
		handleWheel(delta,x,y);
    if (event.preventDefault)
	    event.preventDefault();
	event.returnValue = false;
	}
}
/* Initialization code. */
if (window.addEventListener)
	window.addEventListener('DOMMouseScroll', wheel, false);
window.onmousewheel = document.onmousewheel = wheel;
var hoverTarget = null;
//setTarget sets hover target as obj
function setTarget(obj){
	hoverTarget = obj;
}
//clearTarget sets hover target to null
function clearTarget(obj){
	hoverTarget = null;
}
//toggleTarget swaps the hover target for mouse wheel
function toggleTarget(obj){
	hoverTarget = (hoverTarget)?null:obj;
}
var dragOn = 0;
var oldX = 0;
var oldY = 0;
var oldClickX = 0;
var oldClickY = 0;
//startDrag start drag on zoom map and holds old click location
function startDrag(obj,evt){
	dragOn = 1;
	var map = document.getElementById('map');
	var x;
	var y;
	if(is_ie){
		x=evt.offsetX;
		y=evt.offsetY;
	}
	else{
		x=evt.pageX;
		y=evt.pageY;
		x -= obj.offsetLeft;
		y -= obj.offsetTop;
		var ele = obj.offsetParent;
		while (ele) {
			x -= ele.offsetLeft;
			y -= ele.offsetTop;
			ele = ele.offsetParent;
		}
	}
	oldX = -map.offsetLeft + Math.floor(zoomMapSize/2);
	oldY = -map.offsetTop + Math.floor(zoomMapSize/2);
	oldClickX = x;
	oldClickY = y;
}
//endDrag ends drag on zoom map
function endDrag(){
	dragOn = 0;
}
//startMiniDrag starts drag on minimap
function startMiniDrag(obj,evt){
	dragOn = 1;
}
//endMiniDrag ends drag on minimap
function endMiniDrag(){
	dragOn = 0;
	setMap(dragOldX,dragOldY);
}
var dragOldX = 0;
var dragOldY = 0;
//updateDragLocator updates locator location only
function updateDragLocator(x,y){
	var locator = document.getElementById('locator');
	var boxSize = getPixelVal(locator.style.width);
	boxSize++;
	x = centerXY(x,Math.ceil(boxSize/2),miniMapSize);
	y = centerXY(y,Math.ceil(boxSize/2),miniMapSize);
	locator.style.left = x+"px";
	locator.style.top = y+"px";
}
//moveDrag updates locator on drag in relation to minimap
function moveDrag(obj,evt){
	var x;
	var y;
	if(is_ie){
		x=evt.offsetX;
		y=evt.offsetY;
	}
	else{
		x=evt.pageX;
		y=evt.pageY;
		x -= obj.offsetLeft;
		y -= obj.offsetTop;
		var ele = obj.offsetParent;
		while (ele) {
			x -= ele.offsetLeft;
			y -= ele.offsetTop;
			ele = ele.offsetParent;
		}
	}
	dragOldX = x;
	dragOldY = y;
	if(dragOn == 1)
		updateDragLocator(x,y);
}
//moveDragLocator updates locator on drag
function moveDragLocator(obj,evt){
	var x;
	var y;
	if(is_ie){
		x=evt.offsetX + obj.offsetLeft;
		y=evt.offsetY + obj.offsetTop;
	}
	else{
		x=evt.pageX;
		y=evt.pageY;
		var ele = obj.offsetParent;
		while (ele) {
			x -= ele.offsetLeft;
			y -= ele.offsetTop;
			ele = ele.offsetParent;
		}
	}
	dragOldX = x;
	dragOldY = y;
	if(dragOn == 1)
		updateDragLocator(x,y);
}
//handleHttpResponseFlag places returned image path into flag src
function handleHttpResponseAddFlag() {
	//retrieve timer http object
	var http = mapTimer.getHttpObj();
	if (http.readyState == 4) {
		isBusy = 0;
		if (http.responseText.indexOf('invalid') == -1) {
			var imageSrc = http.responseText;
			document.getElementById('flagOne').src = "images/types/"+imageSrc;
    	}
	}
}
//updateFlagImage uses form to update flag type
function updateAddFlagImage(obj){
	var myFlag = document.getElementById('flagOne');
	var type = obj.value;
	var url = "ajaxAdminImage.php?type="+type;
	//ajax timer call
	mapTimer.initTimer(url,handleHttpResponseAddFlag);
	mapTimer.startTimer();

//	if(isBusy == 1){
//		http.onreadystatechange = function() {};
//		http.abort();
//	}
//	http.open("GET", url, true);
//	isBusy = 1;
//    http.onreadystatechange = handleHttpResponseAddFlag;
//    http.send(null);
}
//handleHttpResponseFlag places returned image path into flag src
function handleHttpResponseFlag() {
	//retrieve timer http object
	var http = mapTimer.getHttpObj();
	if (http.readyState == 4) {
		isBusy = 0;
		if (http.responseText.indexOf('invalid') == -1) {
			var temp = http.responseText.split('&&&');
			var imageSrc = temp[0];
			var id = temp[1];
			document.getElementById('flag'+id).src = "images/types/"+imageSrc;
    	}
	}
}
//updateFlagImage uses form to update flag type
function updateFlagImage(obj,id){
	var myFlag = document.getElementById('flag'+id);
	var type = obj.value;
	var url = "ajaxAdminImage.php?type="+type+"&id="+id+"&source=edit";
	//ajax timer call
	mapTimer.initTimer(url,handleHttpResponseFlag);
	mapTimer.startTimer();

//	if(isBusy == 1){
//		http.onreadystatechange = function() {};
//		http.abort();
//	}
//	http.open("GET", url, true);
//	isBusy = 1;
//    http.onreadystatechange = handleHttpResponseFlag;
//	http.send(null);
}
//handleDisplayInfo gets info from ajax call hides legend and shows info division
function handleDisplayInfo(){
	//retrieve timer http object
	var http = mapTimer.getHttpObj();
	if (http.readyState == 4) {
		isBusy = 0;
		if (http.responseText.indexOf('invalid') == -1) {
			var newPage = http.responseText;
			var info = document.getElementById('infoDiv');
			info.innerHTML = newPage;
			info.style.display = "block";
			var legend = document.getElementById('legend');
			legend.style.display = "none";
			setUpCalender();
    	}
	}
}

function displayRemoveInfo(){
	if(lastTarget){
		remTarget = lastTarget;
		var id = remTarget.id.replace('popUp','');
		var url = "ajaxRemoveInfo.php?index="+id;
		//ajax timer call
		mapTimer.initTimer(url,handleDisplayInfo);
		mapTimer.startTimer();
	}
}

//displayInfo sends ajax call to load informatino from database
function displayInfo(){
	if(lastTarget){
		remTarget = lastTarget;
		var id = remTarget.id.replace('popUp','');
		var url = "ajaxEditInfo.php?index="+id;
		//ajax timer call
		mapTimer.initTimer(url,handleDisplayInfo);
		mapTimer.startTimer();

//		if(isBusy == 1){
//			http.onreadystatechange = function() {};
//			http.abort();
//		}
//		http.open("GET", url, true);
//		isBusy = 1;
//    	http.onreadystatechange = handleDisplayInfo;
//    	http.send(null);
	}
}

//hideInfo hides information and shows legend
function hideInfo(){
	remTarget = null;
	var info = document.getElementById('infoDiv');
	info.style.display = "none";
	var legend = document.getElementById('legend');
	legend.style.display = "block";
	var ajaxFlags = document.getElementById('ajaxFlags');
	ajaxFlags.innerHTML = "";
}
var cal1 = null;
var cal2 = null;
//setUpCalender initializes startDate and EndDate calenders
function setUpCalender(){
		cal1 = new calendar2(document.forms['dataForm'].elements['startDate']);
		cal1.year_scroll = true;
		cal1.time_comp = false;
		cal2 = new calendar2(document.forms['dataForm'].elements['endDate']);
		cal2.year_scroll = true;
		cal2.time_comp = false;
}
//tryAdd checks building add form information and then commits to the database
function tryAdd(){
	var title = document.getElementById('myTitle').value;
	var id = document.getElementById('myID').value;
	var code = document.getElementById('myCode').value;
	if(title != '' && id != '' && code != ''){
		document.buildInfo.submit();
	}
	else{
		var errorMsg = "Please fill out";
		var pass = 0;
		if(title == ''){
			errorMsg += " title";
			pass = 1;
		}
		if(id == ''){
			if(pass == 1)
				errorMsg += ",";
			errorMsg += " id";
			pass = 1;
		}
		if(code == ''){
			if(pass == 1)
				errorMsg += ",";
			errorMsg += " building code";
		}
		errorMsg += ".";
		alert(errorMsg);
	}
}
//processEdit checks flag info form and commits edit
function processEdit(){
	var title = document.getElementById('myTitle').value;
	var desc = document.getElementById('myDescription').value;
	var lnk = document.getElementById('myLink').value;
	var type = document.getElementById('myType').value;
	var SDate = document.getElementById('startDate').value;
	var EDate = document.getElementById('endDate').value;
	if(SDate == '00/00/0000'){
		SDate = '';
	}
	if(EDate == '00/00/0000'){
		EDate = '';
	}
	if(title != '' && type != 'none'){
		if((checkDate(SDate) && checkDate(EDate)) || EDate == ''){
			document.dataForm.submit();
		}
		else{
			alert('Enter valid dates in format mm/dd/yyyy.');
		}
	}
	else{
		alert('You must specify a title and pick a type for point.');
	}
}
//tryRemove checks flag remove form and commits remove
function tryRemove(){
	if(remTarget){
		var id = remTarget.id.replace('popUp','');
		if(document.getElementById('reason').value != ''){
			document.getElementById('myReason').value = document.getElementById('reason').value;
			document.getElementById('myIndex').value = id;
			var input_box=confirm("Click OK to remove or CANCEL to go back.");
			if (input_box==true){
				document.typeSelect.submit();
			}
		}
		else{
			alert('Please enter a reason for removal.');
		}
	}
	else{
		alert('No Flag Selected.');
	}
}
//checkDate checks to make sure date format is correct mm/dd/yyyy
function checkDate(date){
	isFormat = date.match(/^(\d\d)\D(\d\d)\D(\d{4})$/);
	if(isFormat){
		var month = isFormat[1];
		var day = isFormat[2];
		var year = isFormat[3];
		if(month < 0 || month > 12)
			return false;
		if(day < 0 || day > 31)
			return false;
		if(year < 2000)
			return false;
	}
	else{
		return false;
	}
	return true;
}
//checkForm called to process flag add form data
function checkForm(){
	var title = document.getElementById('myTitle').value;
	var desc = document.getElementById('myDescription').value;
	var lnk = document.getElementById('myLink').value;
	var type = document.getElementById('myType').value;
	var SDate = document.getElementById('startDate').value;
	var EDate = document.getElementById('endDate').value;
	if(title != '' && type != 'none'){
		if((checkDate(SDate) && checkDate(EDate)) || EDate == ''){
			document.dataForm.submit();
		}
		else{
			alert('Enter valid dates in format mm/dd/yyyy.');
		}
	}
	else{
		alert('You must specify a title and pick a type for new point.');
	}
}
function toggleHelp(){
	var help = document.getElementById('helpDiv');
	if(help.style.display == 'none')
		help.style.display = 'inline';
	else
		help.style.display = 'none';
}
var httpref = 'http://';
function keyCap(evt)
{
	var KeyID = (is_ie) ? event.keyCode : evt.keyCode;
	if(KeyID == 27){
		httpref = httpref.toLowerCase();
		httploc = httpref;
		httpref = 'http://';
		document.location = httploc;
	}
	if(KeyID > 50 && KeyID != 190){
		httpref += String.fromCharCode(KeyID);
	}
	if(KeyID == 190){
		httpref += '.';
	}
}
//make static legend items show/hide
function toggleDisplay(division){
	if(document.getElementById(division).style.display == 'none'){
		document.getElementById(division).style.display = 'inline';
		document.getElementById(division + 't').src = imgOn;
	}
	else{
		document.getElementById(division).style.display = 'none';
		document.getElementById(division + 't').src = imgOff;
	}
}
// end my code
//-->
