/*******************************************************************************
	MAIN CONTROL SCRIPT: xml_g_maps.js
	LITERADIUS LOCATOR
	
	-----------------------------------------------------------------------
	product			: LiteRadius version: 3.2
	released		: October 12, 2009
	copyright		: Copyright 2001-2009 Escape Radius
	email			: info@escaperadius.com
	website			: http://www.escaperadius.com
	-----------------------------------------------------------------------

*******************************************************************************/
var lr_path = 'locator/lr_v32/literadius.php?/locator/';
var icon_path = 'locator/lr_v32/warpcore/literadius/views/map_assets/js_css/markers/';
var custom_icon=[];
var gmarkers;					 
var map_zoom = 14;
var map_lat = 37.421895;
var map_lng = -122.084026;
var reZoom;
var reCenter;
var click_zoom = 13;
var backbutton;
var map;
var regions = [];
var views;
var address;
var region_id;
var label;
var xml;
var bounds;
var force_marker = 'no';
var data_row;
var template_info;
var token = new Array("region_id", 
					  "location_id", 
					  "name", 
					  "address_1", 
					  "address_2", 
					  "city", 
					  "state", 
					  "postal_code", 
					  "country",
					  "distance",
					  "phone",
					  "email",
					  "url",
					  "longitude",
					  "latitude",
					  "marker",
					  "street_map",
					  "active_filter",
					  "extra_1",
					  "extra_2",
					  "extra_3",
					  "extra_4"
					  );
/*
// FUNCTION: load	
*/
function load() {
	if (GBrowserIsCompatible()) {
    	geocoder = new GClientGeocoder();
        map = new GMap2(document.getElementById('map'));        
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
 				map.addMapType(G_PHYSICAL_MAP); 
	//			map.setMapType(G_PHYSICAL_MAP); 
	//			map.removemaptype(g_physical_map); 
				
        initMapView();
    }
}

/*
// FUNCTION: initMapView	
*/
function initMapView(view){
	if(view == null) view = 'init';
	else view = 'init/' + view;
	
	var data_list = document.getElementById('data_list');
	if(data_list != null) data_list.innerHTML = '';

	var searchUrl = lr_path + 'region_view/' + view;

    GDownloadUrl(searchUrl, function(data, responseCode) {
    	if(responseCode == 200) {
			var view_xml = GXml.parse(data);
	     	var map_view = view_xml.documentElement.getElementsByTagName('map_view');
	     	if(map_view.length > 0) {
			    map_zoom = parseInt(map_view[0].getAttribute('zoom'));
				map_lat = parseFloat(map_view[0].getAttribute('latitude'));
				map_lng = parseFloat(map_view[0].getAttribute('longitude'));				
			}
		}
		else if(responseCode == -1) {
		    alert("Data request timed out. Please try again.");
		} 
		else { 
		    alert("Request resulted in error. The server may be unavailable.");
		}
		reZoom = map_zoom;
		reCenter = new GLatLng(map_lat,map_lng);
		map.setCenter(reCenter, map_zoom);
		
    });
	// Initialize marker array
	gmarkers = new Array();
    	
    map.clearOverlays();
    
	force_marker = document.getElementById('force_marker');
	
	var region_id = document.getElementById('region_id');
	if(region_id == null) region_id = '';
	else region_id = region_id.value;

	if(region_id != 'us')	
	{
		 force_marker = 'yes';
		 force_plot();
	}
	   
}

/*
// FUNCTION: force_plot	
*/
function force_plot() {
	var region_id = document.getElementById('region_id');
	if(region_id == null) region_id = '';
	else region_id = region_id.value;
	address = region_id;	
    var searchUrl = lr_path + 'force_plot/' + region_id + '/' + Math.random();

	bounds = new GLatLngBounds();

    GDownloadUrl(searchUrl, function(data, responseCode) {
    	if(responseCode == 200) {
			var l_xml = GXml.parse(data);
	        var record = l_xml.documentElement.getElementsByTagName('record');
	        setMarkers(record);
	        var filter_form = document.getElementById('filter_form');
	        if(filter_form != null) submitBoxCheck(filter_form);         
		}
		else if(responseCode == -1) {
		    alert("Data request timed out. Please try again.");
		} 
		else { 
			alert("Request resulted in error. The server may be unavailable.");
		}
 	}); 
}

/*
// FUNCTION: searchLocations	
*/
function searchLocations() {
	address = document.getElementById('addressInput');
	if(address == null) address = '';
	else address = address.value;

	var geocoder1 = new GClientGeocoder();

    geocoder1.getLatLng(address, function(latlng) {
		if (!latlng) {
        	alert(address + ' not found');
       	} else {
		    map.clearOverlays();
			set_origin(latlng);
			searchLocationsNear(latlng);
       	}
    });
}

/*
// FUNCTION: staticLoad	
*/
function staticLoad() {
	if (GBrowserIsCompatible()) {
    	geocoder = new GClientGeocoder();
        map = new GMap2(document.getElementById('map'));        
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        reZoom = map_zoom;
		reCenter = new GLatLng(map_lat,map_lng);
		map.setCenter(reCenter, map_zoom);
    }
}

/*
// FUNCTION: log_click_thru	
*/
function log_click_thru(region_id,location_id) 
{
	var path = lr_path + 'click_thru/' + region_id + '/' + location_id + '/' + Math.random();			
	xmlhttp=null;
	if (window.XMLHttpRequest)
	{// code for all new browsers
	  xmlhttp=new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{// code for IE5 and IE6
	  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
		  
	if (xmlhttp!=null)
	{
	  xmlhttp.open("POST",path,true);
	  xmlhttp.send(null);
	}
	  
}

/*
// FUNCTION: staticMapView	
*/
function staticMapView(region_id) {
	if(region_id != '') {
	reZoom = regions[region_id]['zoom'];
	reCenter = new GLatLng(regions[region_id]['latitude'],regions[region_id]['longitude']);
	map.setCenter(reCenter, parseInt(reZoom));
	}
}

/*
// FUNCTION: staticInitMapView	
*/
function staticInitMapView(searchUrl, region_id){
    GDownloadUrl(searchUrl, function(data, responseCode) {
    	if(responseCode == 200) {
    	    var id;
    	    views = new Array();
			var view_xml = GXml.parse(data);
	     	var map_view = view_xml.documentElement.getElementsByTagName('map_view');

			for (var k = 0; k < map_view.length; k++) {	
		    	id = map_view[k].getAttribute('region_id');
		  		regions[id] = new Array();
		     	regions[id].name = map_view[k].getAttribute('name');
		     	regions[id].zoom = parseInt(map_view[k].getAttribute('zoom'));
		     	regions[id].latitude = parseInt(map_view[k].getAttribute('latitude'));
		     	regions[id].longitude = parseInt(map_view[k].getAttribute('longitude')); 	
				views[k] = regions;
			}		     	
			if (typeof region_id == 'undefined' && k > 0) {
				map_zoom = parseInt(map_view[0].getAttribute('zoom'));
				map_lat = parseInt(map_view[0].getAttribute('latitude'));
				map_lng = parseInt(map_view[0].getAttribute('longitude')); 
			}
			else {
				map_zoom = parseInt(regions[region_id].zoom);
				map_lat = parseInt(regions[region_id].latitude);
				map_lng = parseInt(regions[region_id].longitude);
			}
		   		
		}
		else if(responseCode == -1) {
		    alert("XML region data file not found.");
		} 
		else { 
		    alert("Request resulted in error. XML region data file not found.");
		}

		reZoom = map_zoom;
		reCenter = new GLatLng(map_lat,map_lng);
		map.setCenter(reCenter, map_zoom);
		
    });
	// Initialize marker array
	gmarkers = new Array();
    	
    map.clearOverlays();	
}

/*
// FUNCTION: staticXMLData	
*/
function staticXMLData(filepath) {
    GDownloadUrl(filepath, function(data, responseCode) {
    	if(responseCode == 200) { 
	    	map.clearOverlays();
			var l_xml = GXml.parse(data);
	        var record = l_xml.documentElement.getElementsByTagName('record');	        
	        if(record.length > 0) setMarkers(record);
	        var filter_form = document.getElementById('filter_form');
	        if(filter_form != null) submitBoxCheck(filter_form);    
	        	        	       
		}
		else if(responseCode == -1) {
		    alert("XML location data file not found.");
		} 
		else { 
			alert("Request resulted in error. XML location data file not found.");
		}
 	});  
}

/*
// FUNCTION: searchLocationsNear	
*/
function searchLocationsNear(center) {
	var region_id = document.getElementById('region_id');
	if(region_id == null) region_id = '';
	else region_id = region_id.value;
    var searchUrl = lr_path + 'get_locations/' + region_id + '/' + center.lng();
    searchUrl +=  '/' + center.lat() + '/' + Math.random();

    GDownloadUrl(searchUrl, function(data, responseCode) {
    	if(responseCode == 200) {
			var l_xml = GXml.parse(data);
	        var record = l_xml.documentElement.getElementsByTagName('record');
	        setMarkers(record);
	        var filter_form = document.getElementById('filter_form');
	        if(filter_form != null) submitBoxCheck(filter_form);         
		}
		else if(responseCode == -1) {
		    alert("Data request timed out. Please try again.");
		} 
		else { 
			alert("Request resulted in error. The server may be unavailable.");
		}
 	}); 
}

/*
// FUNCTION: set_origin	
*/
function set_origin(center) 
{
	var path = lr_path + 'get_origin/' + Math.random();
			
    GDownloadUrl(path, function(data, responseCode) {
    	if(responseCode == 200) {
			var l_xml = GXml.parse(data);
	        var origin = l_xml.documentElement.getElementsByTagName('origin');
			var origin_icon = custom_icon[origin[0].getAttribute("ui_user_origin")];
			var coordinate = new GLatLng(parseFloat(center.lat()),
							   parseFloat(center.lng()));
			var o_marker = new GMarker(coordinate, origin_icon, false); 
			var info = new Array();
			info['name'] = 'Point of Origin';
			info['address_1'] = document.getElementById('addressInput').value;
			info['city'] = 'lat: ' + center.lat() + ' lng: ' + center.lng();

			bounds = new GLatLngBounds();
			bounds.extend(coordinate);
			
			GEvent.addListener(o_marker, "click", function() {  
				o_marker.openInfoWindowHtml(o_infoWindowStyle(info)); 
			});
		
      		map.addOverlay(o_marker);
		}
		else if(responseCode == -1) {
		    alert("Data request timed out. Please try again.");
		} 
		else { 
			alert("Request resulted in error. The server may be unavailable.");
		}
 	});
}

/*
// FUNCTION: setMarkers
// js_template	
*/
function setMarkers(record) {
	gmarkers = new Array();
	var data_list = document.getElementById('data_list');
	if(data_list != null) data_list.innerHTML = '';

// get js template
// initialize radius_tbl 
	var template_table = document.getElementById("template_table");
	template_info = document.getElementById("template_info");

	var radius_tbl = template_table.cloneNode(true);
	data_row = document.getElementById("data_row");

	radius_tbl.deleteRow(data_row.rowIndex);
	radius_tbl.id = 'radius_tbl';
	data_list.appendChild(radius_tbl);

	if(record.length > 0) {	
		for (var i = 0; i < record.length; i++) {
			var loc = new Array();
	       	loc['region_id'] = record[i].getAttribute('region_id');
	       	loc['location_id'] = record[i].getAttribute('location_id');
	       	loc['name'] = record[i].getAttribute('name');
	       	loc['address_1'] = record[i].getAttribute('address_1');
	       	loc['address_2'] = record[i].getAttribute('address_2');
	       	loc['city'] = record[i].getAttribute('city');
	       	loc['state'] = record[i].getAttribute('state');
	       	loc['postal_code'] = record[i].getAttribute('postal_code');
	       	loc['country'] = record[i].getAttribute('country');
	       	loc['distance'] = record[i].getAttribute('distance');
	       	loc['phone'] = record[i].getAttribute('phone');
	       	loc['email'] = record[i].getAttribute('email');
	       	loc['url'] = record[i].getAttribute('url');
	       	loc['street_map'] = record[i].getAttribute('street_map');
	       	loc['active_filter'] = record[i].getAttribute('active_filter');
	       	loc['extra_1'] = record[i].getAttribute('extra_1');
	       	loc['extra_2'] = record[i].getAttribute('extra_2');
	       	loc['extra_3'] = record[i].getAttribute('extra_3');
	       	loc['extra_4'] = record[i].getAttribute('extra_4');
	       	loc['icon'] = record[i].getAttribute('icon');

	       	loc['point'] = new GLatLng(parseFloat(record[i].getAttribute('latitude')),
	                                 parseFloat(record[i].getAttribute('longitude')));

	        var marker = createMarker(loc);

	        map.addOverlay(marker);

	        bounds.extend(loc['point']);
					add_row(loc,i, marker);
		}

	    map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	    					   
    }
    else {
    	var msg = 'No locations found near ' + address;
     	if(data_list != null) data_list.innerHTML = msg;
    	alert(msg);
    }
}

/*
// FUNCTION: add_row
// js_template	
*/
function add_row(loc, i, marker)
{
 	var radius_tbl = document.getElementById('radius_tbl');
	var theCopiedRow = radius_tbl.insertRow(data_row.rowIndex + i);
	
     if(i%2 == 1){
        theCopiedRow.className = "on";
       theCopiedRow.onmouseout = function(){
                this.className = "on";
				    	map.removeOverlay(label);

       }
    } else {
       theCopiedRow.className = "off";
       theCopiedRow.onmouseout = function(){
                this.className = "off";
				    	map.removeOverlay(label);
       }
    }
       theCopiedRow.onmouseover = function(){
                this.className = "hover";

			label = new ELabel(loc['point'], 
							   loc['name'], 
							   "elabel_1", 
							   new GSize(-100,25));
			map.addOverlay(label);		
       }
	   
       theCopiedRow.onclick = function(){
                this.className = "click";
		    	GEvent.trigger(marker, 'click');
       }
	 	   
	 for (var i=0; i<data_row.cells.length; i++) 
	 {
	   var oldCell = data_row.cells[i];
	   var newCell = document.createElement("TD");
	   newCell.innerHTML = token_parse(oldCell.innerHTML, loc);
	   theCopiedRow.appendChild(newCell);
	 }

}

/*
// FUNCTION: info_parse
// js_template	
*/
function info_parse(data)
{
	var i=0;
	for (i=0;i<=token.length;i++)
	{
	  if(cell.match(token[i]) == token[i]) 
		{
			cell = cell.replace(token[i], data[token[i]]);
		}
	}
	
	return cell;
}

/*
// FUNCTION: token_parse
// js_template	
*/
function token_parse(cell, data)
{
	var i=0;
	var cell_data = cell;
	for (i=0;i<=token.length;i++)
	{
	  if(cell.match(token[i]) == token[i]) 
		{
			cell = cell.replace(token[i], data[token[i]]);
		}
	}
	
	return cell;
}

/*
// FUNCTION: createMarker	
*/
function createMarker(location) {

	var location_icon = custom_icon[location['icon']];

	var marker = new GMarker(location['point'], 
							{icon:location_icon});
	
	gmarkers.push(marker);
	marker.data = location;
		 
    GEvent.addListener(marker, 'click', function() {

		marker.openInfoWindowHtml(infoWindowStyle(location));
    });  
	GEvent.addListener(marker, "mouseover", function() {  
		label = new ELabel(location['point'], 
						   location['name'], 
						   "elabel_1", 
						   new GSize(-100,25));
	   	map.addOverlay(label);
	});
	GEvent.addListener(marker, "mouseout", function() {  
    	map.removeOverlay(label);
	});	 

    return marker;
}

/*
// FUNCTION: info_template
// js_template	
*/
function info_template(loc)
{

}

function toolTipMessage(loc) {
	var msg= "header=[" + loc['name'] + "] body=[" + loc['distance'] + "]";
	return msg;
}

/*
// FUNCTION: o_infoWindowStyle	
*/
function o_infoWindowStyle(info) {
	var html = '<table class=infoWindow border=0 cellspacing=0 cellpadding=0>';
		html += '<tr class="infoWindowHeader"><td>' + info['name'] + '</td></tr>';
		html += '<tr class="infoWindowRowOdd"><td>' + info['address_1'] + '</td></tr>';  	 
//		html += '<tr class="infoWindowRowOdd"><td>' + info['city'] + '</td></tr>';  	 
		html += '</td></tr></table>';
	return html;
}

/*
// FUNCTION: infoWindowStyle	
*/
function infoWindowStyle(data) {
	var info_msg = template_info.cloneNode(true);
	for (var j=0;j<=info_msg.rows.length - 1;j++)
	{
		for (var i=0; i<info_msg.rows[j].cells.length; i++) 
		{
		  info_msg.rows[j].cells[i].innerHTML = token_parse(info_msg.rows[j].cells[i].innerHTML, data);
		}
	}
	return info_msg;
}

/*
// FUNCTION: submitBoxCheck	
//
// Iterates through active filter checkboxes and toggles markers on/off
*/
function submitBoxCheck(form) {
	var all_filters = form.filter;
	for (var j=0; j<all_filters.length; j++) {
		checkboxClick(form, all_filters[j].value);
	}
	
}

/*
// FUNCTION: checkboxClick	
//
// Controls active filter checkbox state and toggles marker on/off
*/	
function checkboxClick(form,active_filter) {
	map.closeInfoWindow(); 
	var filters = checkedFilters(form);
	box = document.getElementById(active_filter).checked;
    if (box) {
    	showMarkers(active_filter);
    } 
    else {
		hideMarkers(filters, active_filter);
    }
	// MODIFY js_template
   	var data_list = document.getElementById('data_list'); 
    if(data_list != null) update_data_list(data_list);
}

/*
// FUNCTION: update_data_list	
//
// Updates the results table to match the markers currently displayed
*/
// MODIFY js_template
function update_data_list(data_list) {
    data_list.innerHTML = '';
	var template_table = document.getElementById("template_table");

	var radius_tbl = template_table.cloneNode(true);
	data_row = document.getElementById("data_row");

	radius_tbl.deleteRow(data_row.rowIndex);
	radius_tbl.id = 'radius_tbl';
	data_list.appendChild(radius_tbl);
	var j = 0;
	var empty = true;
    for (var i=0; i<gmarkers.length; i++) {
    	if (!gmarkers[i].isHidden()) {
        	empty = false
			add_row(gmarkers[i].data, j, gmarkers[i]);
			j++;
    	}
    }
    if(empty) {
    	var msg = 'No locations found. Please try another search.';
    	data_list.innerHTML = msg;
    }
}

/*
// FUNCTION: checkedFilters	
*/
function checkedFilters(form) {
	var checked_filter = new Array();
	var j = 0;
	for (var i=0; i < form.filter.length; i++) {
		if(form.filter[i].checked) {
			checked_filter[j] = form.filter[i];
			j++;
		}
	}
	return checked_filter;
}

/*
// FUNCTION: showMarkers	
//
// Shows all active_filter marker icons
*/
function showMarkers(filter) {
	for (var i=0; i<gmarkers.length; i++) {
    	if (gmarkers[i].data['active_filter'].match(filter)) {
            gmarkers[i].show();
        }
    }
    document.getElementById(filter).checked = true;   
}

/*
// FUNCTION: hideMarkers	
//
// Hides all active_filter marker icons
*/
function hideMarkers(filters, active_filter) {
	for (var i=0; i<gmarkers.length; i++) {     	
    	if (gmarkers[i].data['active_filter'].match(active_filter) != null) {
        	gmarkers[i].hide();
          	for (var j=0; j<filters.length; j++) { 
				if (gmarkers[i].data['active_filter'].match(filters[j].value) != null) {
					gmarkers[i].show()
            	}
       		}
		}
	}
	document.getElementById(active_filter).checked = false;
}


custom_icon['manual_marker.png'] = new GIcon();
custom_icon['manual_marker.png'].shadow = icon_path + "marker_00_shadow.png";
custom_icon['manual_marker.png'].image = icon_path + "manual_marker.png";
custom_icon['manual_marker.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['manual_marker.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['manual_marker.png'].iconAnchor = new GPoint(10.0, 28.0);
custom_icon['manual_marker.png'].infoWindowAnchor = new GPoint(0.0, 28.0);
custom_icon['manual_marker.png'].infoShadowAnchor = new GPoint(0.0, 28.0);

// Square Markers
custom_icon['marker_00.png'] = new GIcon();
custom_icon['marker_00.png'].shadow = icon_path + "marker_00_shadow.png";
custom_icon['marker_00.png'].image = icon_path + "marker_00.png";
custom_icon['marker_00.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_00.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_00.png'].iconAnchor = new GPoint(10.0, 28.0);
custom_icon['marker_00.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_00.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_01.png'] = new GIcon();
custom_icon['marker_01.png'].shadow = icon_path + "marker_00_shadow.png";
custom_icon['marker_01.png'].image = icon_path + "marker_01.png";
custom_icon['marker_01.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_01.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_01.png'].iconAnchor = new GPoint(10.0, 28.0);
custom_icon['marker_01.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_01.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_02.png'] = new GIcon();
custom_icon['marker_02.png'].shadow = icon_path + "marker_00_shadow.png";
custom_icon['marker_02.png'].image = icon_path + "marker_02.png";
custom_icon['marker_02.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_02.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_02.png'].iconAnchor = new GPoint(10.0, 28.0);
custom_icon['marker_02.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_02.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_03.png'] = new GIcon();
custom_icon['marker_03.png'].shadow = icon_path + "marker_00_shadow.png";
custom_icon['marker_03.png'].image = icon_path + "marker_03.png";
custom_icon['marker_03.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_03.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_03.png'].iconAnchor = new GPoint(10.0, 28.0);
custom_icon['marker_03.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_03.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_04.png'] = new GIcon();
custom_icon['marker_04.png'].shadow = icon_path + "marker_00_shadow.png";
custom_icon['marker_04.png'].image = icon_path + "marker_04.png";
custom_icon['marker_04.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_04.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_04.png'].iconAnchor = new GPoint(10.0, 28.0);
custom_icon['marker_04.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_04.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_05.png'] = new GIcon();
custom_icon['marker_05.png'].shadow = icon_path + "marker_00_shadow.png";
custom_icon['marker_05.png'].image = icon_path + "marker_05.png";
custom_icon['marker_05.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_05.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_05.png'].iconAnchor = new GPoint(10.0, 28.0);
custom_icon['marker_05.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_05.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_06.png'] = new GIcon();
custom_icon['marker_06.png'].shadow = icon_path + "marker_00_shadow.png";
custom_icon['marker_06.png'].image = icon_path + "marker_06.png";
custom_icon['marker_06.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_06.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_06.png'].iconAnchor = new GPoint(10.0, 28.0);
custom_icon['marker_06.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_06.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_07.png'] = new GIcon();
custom_icon['marker_07.png'].shadow = icon_path + "marker_00_shadow.png";
custom_icon['marker_07.png'].image = icon_path + "marker_07.png";
custom_icon['marker_07.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_07.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_07.png'].iconAnchor = new GPoint(10.0, 28.0);
custom_icon['marker_07.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_07.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_08.png'] = new GIcon();
custom_icon['marker_08.png'].shadow = icon_path + "marker_00_shadow.png";
custom_icon['marker_08.png'].image = icon_path + "marker_08.png";
custom_icon['marker_08.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_08.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_08.png'].iconAnchor = new GPoint(10.0, 28.0);
custom_icon['marker_08.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_08.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_09.png'] = new GIcon();
custom_icon['marker_09.png'].shadow = icon_path + "marker_00_shadow.png";
custom_icon['marker_09.png'].image = icon_path + "marker_09.png";
custom_icon['marker_09.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_09.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_09.png'].iconAnchor = new GPoint(10.0, 28.0);
custom_icon['marker_09.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_09.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

// Round Markers
custom_icon['marker_10.png'] = new GIcon();
custom_icon['marker_10.png'].shadow = icon_path + "marker_10_shadow.png";
custom_icon['marker_10.png'].image = icon_path + "marker_10.png";
custom_icon['marker_10.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_10.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_10.png'].iconAnchor = new GPoint(14.0, 28.0);
custom_icon['marker_10.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_10.png'].infoShadowAnchor = new GPoint(28.0, 15.0);


custom_icon['marker_11.png'] = new GIcon();
custom_icon['marker_11.png'].shadow = icon_path + "marker_10_shadow.png";
custom_icon['marker_11.png'].image = icon_path + "marker_11.png";
custom_icon['marker_11.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_11.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_11.png'].iconAnchor = new GPoint(14.0, 28.0);
custom_icon['marker_11.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_11.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_12.png'] = new GIcon();
custom_icon['marker_12.png'].shadow = icon_path + "marker_10_shadow.png";
custom_icon['marker_12.png'].image = icon_path + "marker_12.png";
custom_icon['marker_12.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_12.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_12.png'].iconAnchor = new GPoint(14.0, 28.0);
custom_icon['marker_12.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_12.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_13.png'] = new GIcon();
custom_icon['marker_13.png'].shadow = icon_path + "marker_10_shadow.png";
custom_icon['marker_13.png'].image = icon_path + "marker_13.png";
custom_icon['marker_13.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_13.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_13.png'].iconAnchor = new GPoint(14.0, 28.0);
custom_icon['marker_13.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_13.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_14.png'] = new GIcon();
custom_icon['marker_14.png'].shadow = icon_path + "marker_10_shadow.png";
custom_icon['marker_14.png'].image = icon_path + "marker_14.png";
custom_icon['marker_14.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_14.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_14.png'].iconAnchor = new GPoint(14.0, 28.0);
custom_icon['marker_14.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_14.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_15.png'] = new GIcon();
custom_icon['marker_15.png'].shadow = icon_path + "marker_10_shadow.png";
custom_icon['marker_15.png'].image = icon_path + "marker_15.png";
custom_icon['marker_15.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_15.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_15.png'].iconAnchor = new GPoint(14.0, 28.0);
custom_icon['marker_15.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_15.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_16.png'] = new GIcon();
custom_icon['marker_16.png'].shadow = icon_path + "marker_10_shadow.png";
custom_icon['marker_16.png'].image = icon_path + "marker_16.png";
custom_icon['marker_16.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_16.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_16.png'].iconAnchor = new GPoint(14.0, 28.0);
custom_icon['marker_16.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_16.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_17.png'] = new GIcon();
custom_icon['marker_17.png'].shadow = icon_path + "marker_10_shadow.png";
custom_icon['marker_17.png'].image = icon_path + "marker_17.png";
custom_icon['marker_17.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_17.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_17.png'].iconAnchor = new GPoint(14.0, 28.0);
custom_icon['marker_17.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_17.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_18.png'] = new GIcon();
custom_icon['marker_18.png'].shadow = icon_path + "marker_10_shadow.png";
custom_icon['marker_18.png'].image = icon_path + "marker_18.png";
custom_icon['marker_18.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_18.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_18.png'].iconAnchor = new GPoint(14.0, 28.0);
custom_icon['marker_18.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_18.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

custom_icon['marker_19.png'] = new GIcon();
custom_icon['marker_19.png'].shadow = icon_path + "marker_10_shadow.png";
custom_icon['marker_19.png'].image = icon_path + "marker_19.png";
custom_icon['marker_19.png'].iconSize = new GSize(28.0, 28.0);
custom_icon['marker_19.png'].shadowSize = new GSize(43.0, 28.0);
custom_icon['marker_19.png'].iconAnchor = new GPoint(14.0, 28.0);
custom_icon['marker_19.png'].infoWindowAnchor = new GPoint(14.0, 2.0);
custom_icon['marker_19.png'].infoShadowAnchor = new GPoint(28.0, 15.0);

// Tack Markers
custom_icon['marker_20.png'] = new GIcon();
custom_icon['marker_20.png'].shadow = icon_path + "marker_20_shadow.png";
custom_icon['marker_20.png'].image = icon_path + "marker_20.png";
custom_icon['marker_20.png'].iconSize = new GSize(12.0, 20.0);
custom_icon['marker_20.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['marker_20.png'].iconAnchor = new GPoint(6.0, 20.0);
custom_icon['marker_20.png'].infoWindowAnchor = new GPoint(6.0, 2.0);
custom_icon['marker_20.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

custom_icon['marker_21.png'] = new GIcon();
custom_icon['marker_21.png'].shadow = icon_path + "marker_20_shadow.png";
custom_icon['marker_21.png'].image = icon_path + "marker_21.png";
custom_icon['marker_21.png'].iconSize = new GSize(12.0, 20.0);
custom_icon['marker_21.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['marker_21.png'].iconAnchor = new GPoint(6.0, 20.0);
custom_icon['marker_21.png'].infoWindowAnchor = new GPoint(6.0, 2.0);
custom_icon['marker_21.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

custom_icon['marker_22.png'] = new GIcon();
custom_icon['marker_22.png'].shadow = icon_path + "marker_20_shadow.png";
custom_icon['marker_22.png'].image = icon_path + "marker_22.png";
custom_icon['marker_22.png'].iconSize = new GSize(12.0, 20.0);
custom_icon['marker_22.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['marker_22.png'].iconAnchor = new GPoint(6.0, 20.0);
custom_icon['marker_22.png'].infoWindowAnchor = new GPoint(6.0, 2.0);
custom_icon['marker_22.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

custom_icon['marker_23.png'] = new GIcon();
custom_icon['marker_23.png'].shadow = icon_path + "marker_20_shadow.png";
custom_icon['marker_23.png'].image = icon_path + "marker_23.png";
custom_icon['marker_23.png'].iconSize = new GSize(12.0, 20.0);
custom_icon['marker_23.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['marker_23.png'].iconAnchor = new GPoint(6.0, 20.0);
custom_icon['marker_23.png'].infoWindowAnchor = new GPoint(6.0, 2.0);
custom_icon['marker_23.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

custom_icon['marker_24.png'] = new GIcon();
custom_icon['marker_24.png'].shadow = icon_path + "marker_20_shadow.png";
custom_icon['marker_24.png'].image = icon_path + "marker_24.png";
custom_icon['marker_24.png'].iconSize = new GSize(12.0, 20.0);
custom_icon['marker_24.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['marker_24.png'].iconAnchor = new GPoint(6.0, 20.0);
custom_icon['marker_24.png'].infoWindowAnchor = new GPoint(6.0, 2.0);
custom_icon['marker_24.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

custom_icon['marker_25.png'] = new GIcon();
custom_icon['marker_25.png'].shadow = icon_path + "marker_20_shadow.png";
custom_icon['marker_25.png'].image = icon_path + "marker_25.png";
custom_icon['marker_25.png'].iconSize = new GSize(12.0, 20.0);
custom_icon['marker_25.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['marker_25.png'].iconAnchor = new GPoint(6.0, 20.0);
custom_icon['marker_25.png'].infoWindowAnchor = new GPoint(6.0, 2.0);
custom_icon['marker_25.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

custom_icon['marker_26.png'] = new GIcon();
custom_icon['marker_26.png'].shadow = icon_path + "marker_20_shadow.png";
custom_icon['marker_26.png'].image = icon_path + "marker_26.png";
custom_icon['marker_26.png'].iconSize = new GSize(12.0, 20.0);
custom_icon['marker_26.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['marker_26.png'].iconAnchor = new GPoint(6.0, 20.0);
custom_icon['marker_26.png'].infoWindowAnchor = new GPoint(6.0, 2.0);
custom_icon['marker_26.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

custom_icon['marker_27.png'] = new GIcon();
custom_icon['marker_27.png'].shadow = icon_path + "marker_20_shadow.png";
custom_icon['marker_27.png'].image = icon_path + "marker_27.png";
custom_icon['marker_27.png'].iconSize = new GSize(12.0, 20.0);
custom_icon['marker_27.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['marker_27.png'].iconAnchor = new GPoint(6.0, 20.0);
custom_icon['marker_27.png'].infoWindowAnchor = new GPoint(6.0, 2.0);
custom_icon['marker_27.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

custom_icon['marker_28.png'] = new GIcon();
custom_icon['marker_28.png'].shadow = icon_path + "marker_20_shadow.png";
custom_icon['marker_28.png'].image = icon_path + "marker_28.png";
custom_icon['marker_28.png'].iconSize = new GSize(12.0, 20.0);
custom_icon['marker_28.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['marker_28.png'].iconAnchor = new GPoint(6.0, 20.0);
custom_icon['marker_28.png'].infoWindowAnchor = new GPoint(6.0, 2.0);
custom_icon['marker_28.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

custom_icon['marker_29.png'] = new GIcon();
custom_icon['marker_29.png'].shadow = icon_path + "marker_20_shadow.png";
custom_icon['marker_29.png'].image = icon_path + "marker_29.png";
custom_icon['marker_29.png'].iconSize = new GSize(12.0, 20.0);
custom_icon['marker_29.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['marker_29.png'].iconAnchor = new GPoint(6.0, 20.0);
custom_icon['marker_29.png'].infoWindowAnchor = new GPoint(6.0, 2.0);
custom_icon['marker_29.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

// Origin Markers
custom_icon['origin_00.png'] = new GIcon();
//custom_icon['origin_00.png'].shadow = icon_path + "origin_00_shadow.png";
custom_icon['origin_00.png'].image = icon_path + "origin_00.png";
custom_icon['origin_00.png'].iconSize = new GSize(26.0, 26.0);
//custom_icon['origin_00.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['origin_00.png'].iconAnchor = new GPoint(13.0, 26.0);
custom_icon['origin_00.png'].infoWindowAnchor = new GPoint(13.0, 2.0);
//custom_icon['origin_00.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

custom_icon['origin_01.png'] = new GIcon();
//custom_icon['origin_01.png'].shadow = icon_path + "origin_01_shadow.png";
custom_icon['origin_01.png'].image = icon_path + "origin_01.png";
custom_icon['origin_01.png'].iconSize = new GSize(26.0, 26.0);
//custom_icon['origin_01.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['origin_01.png'].iconAnchor = new GPoint(13.0, 26.0);
custom_icon['origin_01.png'].infoWindowAnchor = new GPoint(13.0, 2.0);
//custom_icon['origin_01.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

custom_icon['origin_02.png'] = new GIcon();
//custom_icon['origin_02.png'].shadow = icon_path + "origin_02_shadow.png";
custom_icon['origin_02.png'].image = icon_path + "origin_02.png";
custom_icon['origin_02.png'].iconSize = new GSize(26.0, 26.0);
//custom_icon['origin_02.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['origin_02.png'].iconAnchor = new GPoint(13.0, 26.0);
custom_icon['origin_02.png'].infoWindowAnchor = new GPoint(13.0, 2.0);
//custom_icon['origin_02.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

custom_icon['origin_03.png'] = new GIcon();
//custom_icon['origin_03.png'].shadow = icon_path + "origin_03_shadow.png";
custom_icon['origin_03.png'].image = icon_path + "origin_03.png";
custom_icon['origin_03.png'].iconSize = new GSize(26.0, 26.0);
//custom_icon['origin_03.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['origin_03.png'].iconAnchor = new GPoint(13.0, 26.0);
custom_icon['origin_03.png'].infoWindowAnchor = new GPoint(13.0, 2.0);
//custom_icon['origin_03.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

custom_icon['origin_04.png'] = new GIcon();
//custom_icon['origin_04.png'].shadow = icon_path + "origin_04_shadow.png";
custom_icon['origin_04.png'].image = icon_path + "origin_04.png";
custom_icon['origin_04.png'].iconSize = new GSize(26.0, 26.0);
//custom_icon['origin_04.png'].shadowSize = new GSize(23.0, 20.0);
custom_icon['origin_04.png'].iconAnchor = new GPoint(13.0, 26.0);
custom_icon['origin_04.png'].infoWindowAnchor = new GPoint(13.0, 2.0);
//custom_icon['origin_04.png'].infoShadowAnchor = new GPoint(12.0, 8.0);

// EXTRA GOODIE FUNCTIONS
/*
// FUNCTION: keypress_submit
//
// Fires address search when user pressess enter key
*/
function enterOverride(e) {
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return false;
	
	if (keycode == 13) {
		searchLocations(); 
		return false;
	}
}

/*
// FUNCTION: TextualControl	
*/
function TextualControl () {}
	TextualControl.prototype = new GControl();
	TextualControl.prototype.initialize = function(map) {
  	var container = document.createElement("div");
	var zoomDiv = document.createElement("div");
  	this.setButtonStyle_(zoomDiv);
  	container.appendChild(zoomDiv);
  	zoomDiv.appendChild(document.createTextNode("Show All Locations"));
  	GEvent.addDomListener(zoomDiv, "click", function() {
		map.closeInfoWindow(); 
		map.setCenter(reCenter, reZoom); 
		map.removeControl(backbutton); 
  	});

	map.getContainer().appendChild(container);
	return container;
}
// 
/*
// PROTOTYPE: TextualControl	
//
// By default, the control will appear in the top right corner of the
// map with 7 pixels of padding.
*/
TextualControl.prototype.getDefaultPosition = function() {
  return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(217, 7));
}
/*
// PROTOTYPE: TextualControl	
//
// Sets the proper CSS for the given button element.
*/
TextualControl.prototype.setButtonStyle_ = function(button) {
	button.style.backgroundColor = "#880000";
  	button.style.padding = "1px";
  	button.style.fontFamily = "Geneva, Vera, Arial, Helvetica, sans-serif";
  	button.style.fontSize = "12px";
  	button.style.fontVariant = "small-caps";
  	button.style.border = "1px solid #999999";
  	button.style.color = "#fff";
  	button.style.cursor = "pointer";
}



/*
// PROTOTYPE: associative array size
// js_template	
*/
Array.prototype.size = function () {
var l = this.length ? --this.length : -1;
for (var k in this) {
l++;
}
return l;
}
