var map;
var arrMapMarkers = new Array();



    var grayMarker = new GIcon();
      grayMarker.image = "graymarker.png";
      grayMarker.iconSize = new GSize(20, 34);
      grayMarker.shadow = "shadow.png";
      grayMarker.shadowSize = new GSize(20, 34);
      grayMarker.iconAnchor = new GPoint(5, 34);
      grayMarker.infoWindowAnchor = new GPoint(5, 2);
      /*grayMarker.transparent = "mytran.png";
      grayMarker.printImage = "mymarkerie.gif";
      grayMarker.mozPrintImage = "mymarkerff.gif";*/
      grayMarker.printShadow = "shadow.gif";
      grayMarker.imageMap=[9,0,6,1,4,2,2,4,0,8,0,12,1,14,2,16,5,
       19,7,23,8,26,9,30,9,34,11,34,11,30,12,26,13,24,14,21,
       16,18,18,16,20,12,20,8,18,4,16,2,15,1,13,0];
       
           var blueMarker = new GIcon();
      blueMarker.image = "bluemarker.png";
      blueMarker.iconSize = new GSize(20, 34);
      blueMarker.shadow = "shadow.png";
      blueMarker.shadowSize = new GSize(20, 34);
      blueMarker.iconAnchor = new GPoint(5, 34);
      blueMarker.infoWindowAnchor = new GPoint(5, 2);
      blueMarker.printShadow = "shadow.gif";
      blueMarker.imageMap=[9,0,6,1,4,2,2,4,0,8,0,12,1,14,2,16,5,
       19,7,23,8,26,9,30,9,34,11,34,11,30,12,26,13,24,14,21,
       16,18,18,16,20,12,20,8,18,4,16,2,15,1,13,0];


function browserDiff(){

	if(document.getElementById && !document.all)
	{//firefox

		document.getElementById('mapinstwrap').style.width = 215 + 'px';
	//	document.getElementById('mapinst').style.height = 130 + 'px';
		document.getElementById('infoBox').style.marginTop = -13 + 'px';
		document.getElementById('infoBoxWrap').style.width = 290 + 'px';
		document.getElementById('listWrap').style.width = 320 + 'px';
	}
	else if(document.all)
	{//ie5.5+

		document.getElementById('mapinstwrap').style.width = 280 + 'px';
		document.getElementById('infoBoxWrap').style.width = 300 + 'px';
	}
	
	else if (window.opera)
	{//opera

	//	document.getElementById('mapinst').style.width = 600 + 'px';
	}

}

function loadPoint(tPoint){
	var pt = new GPoint(tPoint.longitude, tPoint.latitude);
	
	
	if(tPoint.lawyer =="Hubbard"){	
		var marker = new GMarker(pt, grayMarker); var tlist = document.createElement('la');
	}else{
		var marker = new GMarker(pt, blueMarker); var tlist = document.createElement('li');
	}	
	
	marker.point = tPoint;
	tlist.point = tPoint;
	
	arrMapMarkers.push(marker);
	
	
	var tlistlink = tlist.appendChild(document.createElement('a'));
	tlistlink.href = '#';
	tlistlink.innerHTML =  '<strong>'+tPoint.date+'</strong>' + tPoint.business + '<br />' + tPoint.address + ", "+ tPoint.city; 
	
	
	var htext = '<strong>Business: </strong>' + tPoint.business + "<br /><strong>Address: </strong>" + tPoint.address + ", " + tPoint.city +  "<br /><strong>Sued: </strong>"+tPoint.date + " by " + tPoint.lawyer; 
	if(tPoint.add){
		htext+= " " + tPoint.add;
	}
	function gotoPoint(){
		marker.openInfoWindowHtml(htext);
		map.panTo(pt);
	}
	
	GEvent.addListener(marker, 'click', gotoPoint);	
	tlistlink.onclick = gotoPoint;
	document.getElementById('list').appendChild(tlist);
	map.addOverlay(marker);	
	
}


var arrToRemove = new Array();
function removeMarker(marker){
	map.removeOverlay(marker);	
	var tlist = document.getElementById("list");
	var tlistchildren = document.getElementById("list").childNodes;

	for(var i = 0; i<tlistchildren.length; i++){
		if(tlistchildren[i].point == marker.point){
			tlist.removeChild(tlistchildren[i]);
			return;
		}
	
	
	}

}



//pre: a checkbox or toggle has been pressed, and the state of the attribute and category is known
//exec: a for loop finds all markers in arrPoints array matching attribute and category, and then removes or adds them from the arrPoints array. At the same time,
// it performs a removeMArker or an addmarker 
//post: the google map either has markers added to or removed from it

function adjustByCategory(chkbox){

	if(chkbox==null)
		return null;
	
	
	var category = chkbox.name;
	var attribute = chkbox.value;
	var isChecked = chkbox.checked;

	if(isChecked){ //this means we're adding to the map overlay
		for(var id in markers){
			if(category=='months'){
			 	var tAtt = getMonthFromDate(markers[id].date);	
			 
			}
			else{
				var tAtt = (markers[id])[category];
			}			
	
				
			if(tAtt == attribute){
				loadPoint(markers[id]);
			
			}
		
		}updateCountText();
	}
	else if(!isChecked){ //this means we're removing the map overlay
		for(var id in arrMapMarkers){
			if(category=='months')
			{
			 	var tAtt = getMonthFromDate((arrMapMarkers[id].point).date);	
			 	
			}	
			else{
				var tAtt = arrMapMarkers[id].point[category];
			
			}
			
	
			if(tAtt == attribute){	
				
				arrToRemove.push(arrMapMarkers[id]);
				removeMarker(arrMapMarkers[id]);
				
			//	arrMapPoints.splice(id, 1);
			
			}	
			
			
		}
		//now remove stuff out of the arrMapPoints array;
	
		performToRemove(arrMapMarkers, arrToRemove);
	
	}
}

function performToRemove(arr1, arr2){
//arr1 is arrMapPoints, arr2 will be arrToRemove
//this function goes through each element in arrToRemove and deletes it from arrMapMarkers

	for(var i = 0; i< arr2.length; i++){
		
		for(var j = 0; j< arr1.length; j++){
		
			if(arr1[j] == arr2[i]){
			
			
			
				arr1.splice(j, 1);
				break;
			
			}
		
		}	
	
	}


	arr2.splice(0, arr2.length);
	
	updateCountText();
	
}


function getMonthFromDate(tdate){
//tdate is a string
	var mth = tdate.split("/");
	return mth[0];
}

function updateCountText(){

	document.getElementById('linit').innerHTML = "Number of locations: " + arrMapMarkers.length;
}

function hideInstructions(){
//document.getElementById('mapinst').style.visibility = "hidden";
document.getElementById('mapinstwrap').innerHTML = hideInst ;	
document.getElementById('mapinstwrap').style.paddingTop = '0px';
document.getElementById('mapinstwrap').style.paddingBottom= '0px';
document.getElementById('mapinstwrap').style.width = 'auto';

}
function showInstructions(){
//document.getElementById('mapinst').style.visibility = "hidden";
document.getElementById('mapinstwrap').innerHTML = showInst;	
document.getElementById('mapinstwrap').style.paddingTop = '5px';
document.getElementById('mapinstwrap').style.paddingBottom = '5px';
document.getElementById('mapinstwrap').style.width = '250px';

}


var isMonthsShowing = true;
function hideShowMonths(){
	isMonthsShowing =!isMonthsShowing;
	if(isMonthsShowing){
		document.getElementById('consoleBox').style.visibility = "visible";
		document.getElementById('showMonths').style.visibility = "hidden";
	}
	else{
		document.getElementById('consoleBox').style.visibility = "hidden";	
		document.getElementById('showMonths').style.visibility = "visible";		
	}

}

var showInst = '<p>Check one or more months below to see where ADA lawsuits have been filed in the Sacramento area. Click on the markers to bring up details on each location. You can click and drag on the map to move it around. Zoom into a street-level with the navigation controls in the upper left-hand corner. <br /><a href="javascript:hideInstructions()">hide instructions</a></p>';
var hideInst = '<a href="#" onclick="showInstructions(); return false;">show instructions</a>';

function init(){

	
		if(GBrowserIsCompatible()){
			map = new GMap2(document.getElementById("map"));
			var loc = new GLatLng(38.5632, -121.4004);
			map.setCenter(loc, 11);
			map.addControl(new GSmallMapControl());		
		//	map.addControl(new GMapTypeControl());	
			
			for(id in markers){
				//loadPoint(markers[id]);
			
			}
		}
				
		var inputs = document.getElementsByTagName("input");
		if(inputs != null){
			for(var i = 0; i <inputs.length; i++){
				if(inputs[i].type == "checkbox"){
					inputs[i].checked = false;
					inputs[i].onclick = function(){
						map.closeInfoWindow();
						adjustByCategory(this);	
					
					}
				
				}
				
			}	

		}
		browserDiff();	
}

window.onload = init;
window.onunload = GUnload;
window.onresize =  browserDiff;
