    var centreLat=37.609066626725074;
    var centreLon=-97.42397784847942;
    var defaultzoom=4
	var debug=false; // true or false
    var n_buttonText="Map"; //Text that shows up on the button for the custom layer (n=normal, s=sat)
    var intel_buttonText="Hate Map"; //Text that shows up on the button for the custom layer (n=normal, s=sat)
    var s_buttonText="Satellite";
    var mapBounds=new GLatLngBounds(new GLatLng(21.67241758060335,-133.09158916522367),new GLatLng(53.5457156728468,-61.75636653173519));

    var map; //the GMap2 itself
    var opacity=0.5;
    var data;
    var mm;
    var geonames;
    var om;
    var jsondata;
    
    
    
    function getObj(name){
  				
			  				if (document.getElementById){
			  					this.obj = document.getElementById(name);
								this.style = document.getElementById(name).style;
			  				
			  				}else if (document.all){
								this.obj = document.all[name];
								this.style = document.all[name].style;
			  				
			  				}else if (document.layers){
			   					this.obj = document.layers[name];
			   					this.style = document.layers[name];
			  				}
						}
			
	function changeCol(col){
			var x = new getObj('map');
			x.style["backgroundColor"] = col;
		}
 

     function customGetTileURL(a,b) {
      //converts tile x,y into keyhole string
      if (b>10) { return "/images/static/intpro/hatemaps/tiles/blank-tile.png"; };
      var c=Math.pow(2,b);
      var x=360/c*a.x-180;
      var y=180-360/c*a.y;
      var x2=x+360/c;
      var y2=y-360/c;
      var lon=x; //Math.toRadians(x); //would be lon=x+lon0, but lon0=0 degrees
      var lat=(2.0*Math.atan(Math.exp(y/180*Math.PI))-Math.PI/2.0)*180/Math.PI; //in degrees
      var lon2=x2;
      var lat2=(2.0*Math.atan(Math.exp(y2/180*Math.PI))-Math.PI/2.0)*180/Math.PI; //in degrees
      var tileBounds=new GLatLngBounds(new GLatLng(lat2,lon),new GLatLng(lat,lon2));
       

      if (!tileBounds.intersects(mapBounds)) { return "/images/static/intpro/hatemaps/tiles/blank-tile.png"; };
        var d=a.x;
        var e=a.y;
        var f="t";
        for(var g=0;g<b;g++){
            c=c/2;
            if(e<c){
                if(d<c){f+="q"}
                else{f+="r";d-=c}
            }
            else{
                if(d<c){f+="t";e-=c}
                else{f+="s";d-=c;e-=c}
            }
        }
        return "/images/static/intpro/hatemaps/tiles/"+f+".png"
    }
    
    
    function remoteStateCapture(state){
    
    	var thisURL = document.location.href;
		var splitURL = thisURL.split("#");
 		writedebug(splitURL[1]);
 		var state = splitURL[1].replace("/","");
		mapclickcontroller(state);
    
    }
    
    
      function resizeMapDiv() {
        //Resize the height of the div containing the map.
        //Do not call any map methods here as the resize is called before the map is created.
    	var d=document.getElementById("map");
        var offsetTop=0;
        for (var elem=d; elem!=null; elem=elem.offsetParent) {
            offsetTop+=elem.offsetTop;
        }
        var height=getWindowHeight()-offsetTop-16;
        if (height>=0) {
            d.style.height=height+"px";
        }
    }
    
    function changeOpacity(op) {
	//this works as long as there are at least two map types
        var current=map.getCurrentMapType();
        if (current==map.getMapTypes()[0])
        	map.setMapType(map.getMapTypes()[1]);
	else
		map.setMapType(map.getMapTypes()[0]);
        opacity=op;
        map.setMapType(current); //was map.getMapTypes()[1]
    }


    function getWindowHeight() {
        if (window.self&&self.innerHeight) {
            return self.innerHeight;
        }
        if (document.documentElement&&document.documentElement.clientHeight) {
            return document.documentElement.clientHeight;
        }
        return 0;
    }

function addOption(selectbox,text,value )
{
try { 
if (value.length == 2) {
//var optn = document.createElement("OPTION");
//optn.text = text;
//optn.value = value;
//selectbox.options.add(optn);
selectbox[selectbox.options.length] = new Option(text, value);
}
} catch (e) {
 writedebug("state value not correct length");
   	
}
}

function sortList(obj) {
	//var obj = document.getElementById("id");
	var values = new Array();
	for(var i = 0; i < obj.options.length; i++) {
		values.push(obj.options[i].innerHTML + "--xx--" + obj.options[i].value);
	}

	values = values.sort();

	for(var i = 0; i < values.length; i++) {
		valueArray = values[i].split('--xx--');
		obj.options[i].innerHTML = valueArray[0];
		obj.options[i].value = valueArray[1];
	}
}




    
function addlabels() {
	
	
	var labels_abbr0 = [];
     var labels_abbr1 = [];
     var labels_abbr2 = [];
     var labels_abbr3 = [];
     var labels_full0 = [];
     var labels_full1 = [];
     var labels_full2 = [];
     var labels_full3 = [];
	SPLCENTER.intel.map["statelabels"] = [];
	
		 var i;

	for (var props in SPLCENTER.intel.map) {
		 i++;
   		 var stateinfo = new Array();
   		 writedebug(SPLCENTER.intel.map[props][0]);

		 var stateinfo = SPLCENTER.intel.map[props];
		 var state_count = stateinfo[0];
    	 var state_abbr = stateinfo[1]
    	 var state_name = stateinfo[2]
    	 var state_zoom = stateinfo[3]
     	 var state_latlon = stateinfo[4];

     	if (state_count > 0) {
     	 addOption(document.state_list.states,state_name + " (" + state_count + ")", state_abbr);
     	 
     	 }
    	
    	//split latlon
    	var latlnga = new Array();
    	try { 
    	latlnga = state_latlon.split(',');
    	 var lat = latlnga[0];
    	var lng = latlnga[1];
    	
    	
    	
					
		var label_abbr0 = new ELabel(new GLatLng(lat,lng), "<div class='state_elabel_prefix0'>" + state_abbr + "</div> <div class='state_elabel_cprefix0'>" + state_count + "</div>");
		var label_abbr1 = new ELabel(new GLatLng(lat,lng), "<div class='state_elabel_prefix1'>" + state_abbr + "</div> <div class='state_elabel_cprefix1'>" + state_count + "</div>");
		var label_abbr2 = new ELabel(new GLatLng(lat,lng), "<div class='state_elabel_prefix2'>" + state_abbr + "</div> <div class='state_elabel_cprefix2'>" + state_count + "</div>");
		var label_abbr3 = new ELabel(new GLatLng(lat,lng), "<div class='state_elabel_prefix3'>" + state_abbr + "</div> <div class='state_elabel_cprefix3'>" + state_count + "</div>");
    	label_abbr0.pixelOffset=new GSize(-10,10); //this helps center the label
    	label_abbr1.pixelOffset=new GSize(-10,10); //this helps center the label
    	label_abbr2.pixelOffset=new GSize(-10,10); //this helps center the label
    	label_abbr3.pixelOffset=new GSize(-10,10); //this helps center the label		
				
		var label_full0 = new ELabel(new GLatLng(lat,lng), "<div class='state_elabel_fullname0'>" + state_name + "</div> <div class='state_elabel_cfullname0'>" + state_count + "</div>");
		var label_full1 = new ELabel(new GLatLng(lat,lng), "<div class='state_elabel_fullname1'>" + state_name + "</div> <div class='state_elabel_cfullname1'>" + state_count + "</div>");
		var label_full2 = new ELabel(new GLatLng(lat,lng), "<div class='state_elabel_fullname2'>" + state_name + "</div> <div class='state_elabel_cfullname2'>" + state_count + "</div>");
		var label_full3 = new ELabel(new GLatLng(lat,lng), "<div class='state_elabel_fullname3'>" + state_name + "</div> <div class='state_elabel_cfullname3'>" + state_count + "</div>");
    	
    	label_full0.pixelOffset=new GSize(-40,10); //this helps center the label
    	label_full1.pixelOffset=new GSize(-40,10); //this helps center the label
    	label_full2.pixelOffset=new GSize(-40,10); //this helps center the label
    	label_full3.pixelOffset=new GSize(-40,10); //this helps center the label

		labels_abbr0.push(label_abbr0);
		labels_abbr1.push(label_abbr1);
		labels_abbr2.push(label_abbr2);
		labels_abbr3.push(label_abbr3);
		
		labels_full0.push(label_full0);
		labels_full1.push(label_full1);
		labels_full2.push(label_full2);
		labels_full3.push(label_full3);
		
		//put the marker arrays together to be able to manage easily
		SPLCENTER.intel.map.statelabels.push(label_abbr0);
		SPLCENTER.intel.map.statelabels.push(label_abbr1);
		SPLCENTER.intel.map.statelabels.push(label_abbr2);
		SPLCENTER.intel.map.statelabels.push(label_abbr3);
		
		SPLCENTER.intel.map.statelabels.push(label_full0);
		SPLCENTER.intel.map.statelabels.push(label_full1);
		SPLCENTER.intel.map.statelabels.push(label_full2);
		SPLCENTER.intel.map.statelabels.push(label_full3);
		
		//set state focus point
		SPLCENTER.intel.map[state_abbr].glat = new GLatLng(lat,lng);
		SPLCENTER.intel.map[state_abbr].zoom = state_zoom;


		writedebug(" " + state_abbr + " (" +  lat + "," + lng + ")");
    	
    	} catch (e) {
   		 writedebug("no lat/lng for " + state_abbr);

   		 }

		
	}


		sortList(document.state_list.states); //sort state drop down
		writedebug("labels_abbr: " + labels_abbr0.length + "labels_full:" +  labels_full0.length);
		writedebug(" " + state_abbr + " (" +  lat + "," + lng + ")");
		//lm.addMarkers(labels_abbr0,10,10);
		lm.addMarkers(labels_full0,10,10);
		//lm.addMarkers(labels_abbr1,8,9);
		lm.addMarkers(labels_full1,8,9);
		lm.addMarkers(labels_abbr2,6,7);
		//lm.addMarkers(labels_full2,6,7);
		lm.addMarkers(labels_abbr3,4,5);
		//lm.addMarkers(labels_full3,4,5);
		lm.refresh(); //add this to start up

	


}
    
    function doStatesHaveLabels() {
     try {  
   		if (SPLCENTER.intel.map.statelabels.length > 0) {
   	 		writedebug("states have labels in dom.");
   	 		return true;
   	 	} else {
   	 	writedebug("labels not found in dom");
   	 	return false;
   	 	}
   	 } catch (e) {
   	 writedebug("labels not found in dom");
   	 return false;
   	 }
	
}

function statelabelssize() {
    if (doStatesHaveLabels()) {
    	for (var i = 0; i < SPLCENTER.intel.map.statelabelsa.length; i++) {

    		writedebug(SPLCENTER.intel.map.statelabelsa.length);
   		}
   		 }
    
    }
    

   
       
       //creates a marker based on the icon objects
	function createIcon(iconpath,iconfile,number) {
		writedebug('creating icon '+ iconfile + ' for number' + number);
  		var icon = new GIcon();
  		icon.image = iconpath + "size" + number +"/" + iconfile;//no slashes
  		icon.shadow = iconpath + "size" + number +"/" + "shadow.png";//no slashes
  		
  		switch(number) {
  			case 0:
				icon.iconSize = new GSize(65,65);//w,h
      			icon.shadowSize = new GSize(98, 65); //w,h
      			icon.iconAnchor = new GPoint(32, 65); //x,y
      			icon.infoWindowAnchor = new GPoint(32, 2); //x,y
      			//icon.transparent = "mytran.png";
      			//icon.printImage = "mymarkerie.gif";
      			//icon.mozPrintImage = "mymarkerff.gif";
      			//icon.printShadow = "myshadow.gif";
      		break;
      		case 1:
      			icon.iconSize = new GSize(52,52);//w,h
      			icon.shadowSize = new GSize(79, 52); //w,h
      			icon.iconAnchor = new GPoint(26, 52); //x,y
      			icon.infoWindowAnchor = new GPoint(26, 2); //x,y
      		break;
      		case 2:
      			icon.iconSize = new GSize(42,42);//w,h
      			icon.shadowSize = new GSize(64, 42); //w,h
      			icon.iconAnchor = new GPoint(21, 42); //x,y
      			icon.infoWindowAnchor = new GPoint(32, 2); //x,y
      		break;
      		case 3:
      			icon.iconSize = new GSize(34,34);//w,h
      			icon.shadowSize = new GSize(52, 34); //w,h
      			icon.iconAnchor = new GPoint(17, 34); //x,y
      			icon.infoWindowAnchor = new GPoint(17, 2); //x,y
      		break;
      	}
      	
      	writedebug(icon.image);
      	
 		return icon;
	}
	
	 
    function createMarker(point,name,html,iconpath,iconfile,size) {
        var icon = createIcon(iconpath,iconfile,size);
        var marker = new GMarker(point,icon);
        marker["hidden"] = false;
        marker["group_id"] = name;
        GEvent.addListener(marker, "click", function() {
        	marker.openInfoWindowHtml(html);
        });
        
    	return marker;
    }
    
    function openMarkerInfoWindowByGroupId(group_id) {
    
    	var state = SPLCENTER.intel.map[SPLCENTER.intel.map.current.state];
    	writedebug("Looping groups for marker: " + SPLCENTER.intel.map.current.state);
    	for (var i = 0; i < state.markers.length; i++) {
    	writedebug("Looping groups for marker: " + state.markers[i].group_id);
    		if (state.markers[i].group_id == group_id) {
    		writedebug("Group found: " + state.markers[i].group_id);
    		GEvent.trigger(state.markers[i],'click');
    		window.location.hash="top";
    		//state.markers[i].openInfoWindow();
    		break;
    		}
    
    	}
    
    }
    
    function helloLabel(state_abbr) {
    	writedebug(SPLCENTER.intel.map[state_abbr].label.hidden);
    	if (SPLCENTER.intel.map[state_abbr].label.hidden) {
     		writedebug("showing label");
    		SPLCENTER.intel.map[state_abbr].label.show();
    	}else{
    		writedebug("hiding label");
    		SPLCENTER.intel.map[state_abbr].label.hide();
    	}
    }
    
    

    
    

    
    // Main Map Click Controller. If someone clicks on the map. Decide where they clicked and perform the action
    function groupdatacontroller(state) {
    	writedebug("========START CONTROLLER=======");
    	document.getElementById('datagrid').style.display="inline";
		document.getElementById('static-map-div').style.display="none";
		document.getElementById('lowerContentDiv').style.display="none";
    	//sets up dom globals
    	//Map clicked on decide what state and if it's in the dom already
    	
      	var previous = SPLCENTER.intel.map.current.state;
      	var currentstate = state;
      	 SPLCENTER.intel.map.previous.state = SPLCENTER.intel.map.current.state;
    	 SPLCENTER.intel.map.current.state = currentstate;
    	//var currentstategroupcount = SPLCENTER.intel.map[currentstate].groups.length;
    	writedebug("current state is:" + currentstate);
    	//writedebug("current state group count:" + currentstategroupcount);
    	
    	
    	//check to make sure we're not just trying to load the same data again
    	if (previous !=currentstate) {
    	
    	if (!isStateMarkersManaged(currentstate)) {
    	
    	  //grab json state data and load into the dom
	       	new Ajax.Request('statejson.jsp?s=' +currentstate, {
				  method:'get',
				  onSuccess: function(transport){
				  SPLCENTER.intel.map[state].groups = new Object();
				  var array = [];
				  array = transport.responseText.evalJSON();
				  SPLCENTER.intel.map[state].groups.list = array;
				  writedebug("got groups from json");
				  createGroupMakers(currentstate);
				  mm.refresh(); //refresh marker manager
				  loadstatetable(currentstate);
				  writedebug("refreshing manager");
				  //YAHOO.util.History.navigate("s", state);
				  
				 
	  				}
			});
			
			 try {
    	 	if (previous != "undefined" && previous !=currentstate && previous != "") {
				writedebug("hidding " + previous);
    	    	removeStateMarkers(previous);
    	 	} else {
    	 	writedebug("no previous " + previous);
    	 	}
    	 } catch (e) {
    	 	writedebug("no previous " + previous + ":" + e);
    	 }
    	 

			focusOnState(currentstate);
			dropDownselect(document.forms.state_list,'states',currentstate);
    	    	
		} else {
			
			showStateMarkers(currentstate);
			loadstatetable(currentstate);
			focusOnState(currentstate);
			dropDownselect(document.forms.state_list,'states',currentstate);
			 try {
    	 	if (previous != "undefined" && previous !=currentstate && previous != "") {
				writedebug("hidding " + previous);
    	    	removeStateMarkers(previous);
    	 	} else {
    	 	writedebug("no previous " + previous);
    	 	}
    	 } catch (e) {
    	 	writedebug("no previous " + previous + ":" + e);
    	 }
			//YAHOO.util.History.navigate("s", state);
			
			
				 
			
			
		}
	}else{
	writedebug("current and previous state matched. exit controller");
	}


	writedebug("========END CONTROLLER=======");

    }
    
  	function dropDownselect(f,o,v){
		for(var i=0;i<f[o].options.length; i++){
		writedebug("drop down item: " + i);
			if(f[o].options[i].value==v){
				f[o].selectedIndex=i;
				break;
			}
		}
	}
  

  function dropdowncontroller (state) {
    
    groupdatacontroller(state);
    maphistory(state);
    }
    
    function imagemapclickcontroller (state) {
    groupdatacontroller(state);
    maphistory(state);
    }
    
    function maphistorycontroller (state) {
    groupdatacontroller(state);
    }
    
     function maphistory(state) {
     if (!isSafari2()) {
    YAHOO.util.History.navigate("s", state);
    }
    }
    
    
   function mapclickcontroller (lat, lng) {
    getstate(lat, lng);
    }
    
    
     // Main Map Click Controller. If someone clicks on the map. Decide where they clicked and perform the action
    function getstate(lat, lng) {
       	 	
    	  //grab json state data and load into the dom
	       	new Ajax.Request('groupsjson.jsp?lat=' +lat +'&lng=' + lng, {
				  method:'get',
				  onSuccess: function(transport){
				 
				  var json = new Object();
				  json = transport.responseText.evalJSON();
				groupdatacontroller(json.state);
maphistory(json.state);
}}); //end ajax loader

    }
   
    
    
    function focusOnState(state_abbr) {
	    var glat = SPLCENTER.intel.map[state_abbr].glat;
	    var zoom = SPLCENTER.intel.map[state_abbr].zoom;
	    writedebug("going to " + state_abbr + "at " + zoom);
	    map.setCenter(glat,parseFloat(zoom));
    
    }
    
   var formatGroupTypeLink = function(elCell, oRecord, oColumn, oData) { 

		var group_type_default_id = oRecord.getData("group_type_default_id");
		var group_type_name = oRecord.getData("group_type_name");
		var hatemap_id = oRecord.getData("hatemap_id");
	    elCell.innerHTML = "<a href=\"/intel/map/type.jsp?DT=" + group_type_default_id + "\" target=\"_groupdesc\" class=\"yui-dt-group-type-name\">" + group_type_name + "</a>"; 
	};
	
	var formatGroupNameLink = function(elCell, oRecord, oColumn, oData) { 

		var group_id = oRecord.getData("group_id");
		var group_name = oRecord.getData("group_name");
		var lat = oRecord.getData("lat");
		var lng = oRecord.getData("lng");
		if (lng.length > 0 && lat.length > 0) {
	    elCell.innerHTML = "<a href=\"javascript:openMarkerInfoWindowByGroupId('" + group_id +"');\" class=\"yui-dt-group-name\">" + group_name + "</a>"; 
	} else {
	elCell.innerHTML = group_name; 
	}
	
	};
	
	
	 
	
	
    function loadstatetable(state) {
        var myColumnDefs = [
        	
        	 //{key:"group_name",label:"name",abbr:"Group Name", formatter: formatGroupNameLink, className:"yui-dt-col-group_name", width:172, minWidth:172 },
            {key:"group_name",label:"name",abbr:"Group Name", sortable:true,resizeable:true,className:"yui-dt-col-group_name", width:172, minWidth:172 },
            {key:"group_type_name", label:"type",abbr:"Group Type", formatter: formatGroupTypeLink,sortable:true, resizeable:true, className:"yui-dt-col-type_name", width:132, minWidth:132},
            {key:"city", label:"city",abbr:"Group City", sortable:true, resizeable:true,className:"yui-dt-col-city", width:132, minWidth:132},
            {key:"state_initials", label:"state",abbr:"Group State", sortable:true, resizeable:true, className:"yui-dt-state_initials", width:75, minWidth:75}
        ];

        this.myDataSource = new YAHOO.util.DataSource(SPLCENTER.intel.map[state].groups.list);
        this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
        this.myDataSource.responseSchema = {
            fields: ["hatemap_id","group_type_name","group_name","group_type_default_id","city","state_initials","group_id","lat","lng"]
        };

               this.singleSelectDataTable = new YAHOO.widget.DataTable("datagrid", 
				myColumnDefs, this.myDataSource, { 
				width:"550px",
				minWidth:"550px",
				selectionMode:"single"
				});
				
				//SPLCENTER.intel.map["singleSelectDataTable"] = this.singleSelectDataTable;
                
                
        
       		// Subscribe to events for row selection 
			//SPLCENTER.intel.map.singleSelectDataTable.subscribe("rowMouseoverEvent", SPLCENTER.intel.map.singleSelectDataTable.onEventHighlightRow); 
			//SPLCENTER.intel.map.singleSelectDataTable.subscribe("rowMouseoutEvent", SPLCENTER.intel.map.singleSelectDataTable.onEventUnhighlightRow); 
			//SPLCENTER.intel.map.singleSelectDataTable.subscribe("rowClickEvent", SPLCENTER.intel.map.singleSelectDataTable.oneventselectrow);
 }  




function isStateMarkersManaged(state) {
     try {  
   		if (SPLCENTER.intel.map[state].markers.length > 0) {
   	 		writedebug("markers are in dom for this state. bypass build");
   	 		return true;
   	 	} else {
   	 	return false;
   	 	writedebug("no state data found need data");
   	 	}
   	 } catch (e) {
   	 writedebug("no state data found need data: " + e);
   	 return false;
   	 }
 }
	




function doesStateHaveGroupData(state) {
     try {  
   		if (SPLCENTER.intel.map[state].groups.list.length > 0) {
   	 		writedebug("state has data in dom. bypass db call");
   	 		return true;
   	 	} else {
   	 	return false;
   	 	}
   	 } catch (e) {
   	 writedebug("no state data found");
   	 return false;
   	 }
	
}


function createGroupMakers(state) {
	var markerarray_0 = [];
	var markerarray_1 = [];
	var markerarray_2 = [];
	var markerarray_3 = [];
	SPLCENTER.intel.map[state].markers = [];
	
	var groupcount = 0;
	writedebug("group count is: " + SPLCENTER.intel.map[state].groups.list.length);
	for (var i = 0; i < SPLCENTER.intel.map[state].groups.list.length; i++) {
     var group_info = SPLCENTER.intel.map[state].groups.list[i];


	if (group_info["lat"]!=null||group_info["lng"]!=null) {
		groupcount++;
     	var lat = "";
     	var lng = "";
      	lat = group_info["lat"];
      	lng = group_info["lng"];
      	var point = new GLatLng(lat,lng);
      	SPLCENTER.intel.map[state].groups.list[i].point = point;
      	var latlng = point.lat() + "," + point.lng();
		var group = group_info["group_name"];
		var city = group_info["city"];
		var location_id = group_info["location_id"];
		var icon_paths = group_info["group_type_icon_path"];
		var group_icon = group_info["group_type_sm_icon"];
		var group_type_id = group_info["group_type_id"];
		var group_type_name = group_info["group_type_name"];
		var marker_icon_path = "/images/static/intpro/hatemaps/markericons/"; //need trailing slash
		var marker_icon_name = group_info["group_type_default_id"] + ".png";
		var group_label_icon;
		var group_label_icon_path="images/legend/";
			

		group_label_icon =group_info["group_type_default_id"]+"-on.gif";
	
	
		var html = "<div class='group_label_image'><img src='"+group_label_icon_path + group_label_icon+ "''\'></div>"+
			"<div class='group_label_text'><b>" + group + "</b>" + "<br>" + city + ", " + state + "<br>" + group_type_name + "</div>";

					
		//var marker_0 = createMarker(point,location_id,html,marker_icon_path,marker_icon_name,0);
		//var marker_1 = createMarker(point,location_id,html,marker_icon_path,marker_icon_name,1);
		var marker_2 = createMarker(point,location_id,html,marker_icon_path,marker_icon_name,2);
		//var marker_3 = createMarker(point,location_id,html,marker_icon_path,marker_icon_name,3);
				
		//marker_0.group_type_id = group_type_id;
		//marker_1.group_type_id = group_type_id;
		marker_2.group_type_id = group_type_id;
		//marker_3.group_type_id = group_type_id;
		
		
		//markerarray_0.push(marker_0);
		//markerarray_1.push(marker_1);
		markerarray_2.push(marker_2);
		//markerarray_3.push(marker_3);
		
		//put the marker arrays together to be able to manage easily
		//SPLCENTER.intel.map[state].markers.push(marker_0);
		//SPLCENTER.intel.map[state].markers.push(marker_1);
		SPLCENTER.intel.map[state].markers.push(marker_2);
		//SPLCENTER.intel.map[state].markers.push(marker_3);
		
		
		//legend disabled in version 1
		//activateLegendInstance(group_type_id,group_type_name);


		writedebug("pushed marker to array: " + group_info["group_name"]);
	}
}
	//SPLCENTER.intel.map.current.markerArray = new Array(markerarray_0,markerarray_1,markerarray_2,markerarray_3);
	//SPLCENTER.intel.map.current.markerArrayZoomRange = new Array([4,5],[6,7],[8,9],[10,10]);
	
	/*
	mm.addMarkers(markerarray_3,4,5); //limit zoom levels to display maker
	mm.addMarkers(markerarray_2,6,7); //limit zoom levels to display maker
	mm.addMarkers(markerarray_1,8,9); //limit zoom levels to display maker
	mm.addMarkers(markerarray_0,10,10); //limit zoom levels to display maker
	*/
	
	mm.addMarkers(markerarray_2,4,10); //limit zoom levels to display maker
	
	writedebug("added " + groupcount + " groups to marker manager");
}


//not being used
function checkmakers() {

	for (var j = 0; i < SPLCENTER.intel.map[j].markers.length; j++) {
		var state = SPLCENTER.intel.map[j];
		for (var i = 0; i < SPLCENTER.intel.map[state].markers.length; i++) {
     		var marker = SPLCENTER.intel.map[state].markers[i];
			writedebug("marker hidden: " + marker.hidden);
		}
		
	}
}

function removeStateMarkers(state) {

	for (var i = 0; i < SPLCENTER.intel.map[state].markers.length; i++) {
     	var marker = SPLCENTER.intel.map[state].markers[i];
     	marker.pleaseHideLater=true;
		marker.hide();
		writedebug("hiding markers for state: " + i);
	
	}
	writedebug(i + " markers were hidden");
}


function toggleGroupMarkerType(type_id, currentLegendInstance) {

	//take it out by current state type list
	var toggle_state_abbr=SPLCENTER.intel.map.current.state;	
	var toggle_markerArray=SPLCENTER.intel.map[toggle_state_abbr].markers;
	var show = document.getElementById(currentLegendInstance).active;
	var zoomRangeArray = SPLCENTER.intel.map.current.markerArrayZoomRange;
	var currentZoom=SPLCENTER.intel.map.current.currentZoom;
	
	for(var i=0; i<toggle_markerArray.length; i++){
		
		var currentZoomRange=false;
		var toggleMarker=toggle_markerArray[i];
		
		
		if(toggleMarker.group_type_id==type_id){
			if(!show){
				toggleMarker.pleaseHideLater = true;
				toggleMarker.hide();
				writedebug("hiding markers for type: " + type_id);
			}else{
				
					map.addOverlay(toggleMarker);
					toggleMarker.show();
					toggleMarker.pleaseHideLater = false; 
					writedebug("showing markers for type: " + type_id);
				
			}
		}
	}
	
	/*
	//take it out by current state type list
	var toggle_state_abbr=document.data.map.current.state;	
	var toggle_markerArray=document.data.map.current.markerArray;
	var show = document.getElementById(currentLegendInstance).active;
	var zoomRangeArray = document.data.map.current.markerArrayZoomRange;
	var currentZoom=document.data.map.current.currentZoom;
	
	for(var i=0; i<toggle_markerArray.length; i++){
		
		var currentZoomRange=false;
		current_toggle_markerArray=toggle_markerArray[i];
		if(currentZoom>=zoomRangeArray[i][0]&&currentZoom<=zoomRangeArray[i][1]){
			currentZoomRange=true;
		}
		
		for(var n=0; n<current_toggle_markerArray.length; n++){
			var toggleMarker=current_toggle_markerArray[n];
			if(toggleMarker.group_type_id==type_id){
				if(!show){
					toggleMarker.pleaseHideLater = true;
					toggleMarker.hide();
					writedebug("hiding markers for type: " + type_id);
				}else{
					if(currentZoomRange){
						map.addOverlay(toggleMarker);
						toggleMarker.show();
						toggleMarker.pleaseHideLater = false; 
						writedebug("showing markers for type: " + type_id);
					}
				}
			}
		}
	}
	*/
};

function showAllgroupMarkers() {
	
	for(var props in SPLCENTER.intel.map) {
   		 
   		 var stateinfo = new Array();
   		 var stateinfo = SPLCENTER.intel.map[props];
    	 var state_abbr = stateinfo[1];

    	if (isStateMarkersManaged(state_abbr)) {
    	i++;
			for (var i = 0; i < SPLCENTER.intel.map[state_abbr].markers.length; i++) {
     			var marker = SPLCENTER.intel.map[state_abbr].markers[i];
     			
     			map.addOverlay(marker);
				marker.show();
				marker.pleaseHideLater = false; 
				writedebug("showing all markers loaded");
			}
		}
	}
}






function showStateMarkers(state) {

	for (var i = 0; i < SPLCENTER.intel.map[state].markers.length; i++) {
     	var marker = SPLCENTER.intel.map[state].markers[i];
     	//marker.hidden = false; //not really needed since it it's off it'll be flipped on
		map.addOverlay(marker);
		marker.show();
		marker.pleaseHideLater = false; 	
		
		writedebug("showing markers for state: " + i);
	
	}
	//two the markers so divide by two
	writedebug("showed " + i/4 + " markers");

}


    
function latlngtopixel(latlng) {
	var pixelxy = map.fromLatLngToDivPixel(latlng);
	return pixelxy
}

function writedebug(text) {
	if (debug) {
    	GLog.write(text);
    }
}

function isSafari2() {
			
			// String found if this is a AppleWebKit based product
			var kitName = "applewebkit/";
			var tempStr = navigator.userAgent.toLowerCase();
			var pos = tempStr.indexOf(kitName);
			var isAppleWebkit = (pos != -1);
		
			if (isAppleWebkit) {
				// Grab the version
				var kitVersion = tempStr.substring(pos + kitName.length,tempStr.length);
				kitVersion = kitVersion.substring(0,kitVersion.indexOf(" "));
				if (kitVersion < 500) {
				return true;
				} else {
				return false;
				}
		
			} else {
			return false;
					
			}
		}


