﻿/*******************************************************************************

	MAIN CONTROL SCRIPT: xml_g_maps.js

	LITERADIUS XML LOCATOR

	

	-----------------------------------------------------------------------

	product			: LiteRadius version: 3.0

	released		: May 30, 2008

	copyright		: Copyright 2001-2008 Escape Radius

	email			: info@escaperadius.com

	website			: http://www.escaperadius.com

	-----------------------------------------------------------------------



*******************************************************************************/

var lr_path = 'lr_v31/literadius.php?/locator/';

var icon_path = 'lr_v31/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;



/*

// FUNCTION: load	

*/

function load() {

	if (GBrowserIsCompatible()) {

    	geocoder = new GClientGeocoder();

        map = new GMap2(document.getElementById('map'));        

        map.addControl(new GSmallMapControl());

        map.addControl(new GMapTypeControl());



        initMapView();

    }

}



/*

// FUNCTION: initMapView	

*/

function initMapView(view){

	if(view == null) view = 'init';

	else view = 'init/' + view;



	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();

	// Initialize data display element (if it exists)	

	var data_list = document.getElementById('data_list'); 

    if(data_list != null) data_list.innerHTML = '';

    	

    map.clearOverlays();	

}



/*

// FUNCTION: searchLocations	

*/

function searchLocations() {

	address = document.getElementById('addressInput').value;



    geocoder.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();

	// Initialize data display element (if it exists)	

	var data_list = document.getElementById('data_list'); 

    if(data_list != null) data_list.innerHTML = '';

    	

    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();

			

			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: setUserOrigin	

*/

function _setUserOrigin(origin){	

		var origin_icon = custom_icon[origin[0].getAttribute("marker")];

		var coordinate = new GLatLng(parseFloat(origin[0].getAttribute('latitude')),

                           parseFloat(origin[0].getAttribute('longitude')));

		var o_marker = new GMarker(coordinate, origin_icon, false); 

		var info = new Array();

		info['name'] = origin[0].getAttribute('name');

		info['address_1'] = origin;

		GEvent.addListener(o_marker, "click", function() {  

			o_marker.openInfoWindowHtml(o_infoWindowStyle(info)); 

		});	

		map.addOverlay(o_marker);

}



/*

// FUNCTION: setMarkers	

*/

function setMarkers(record) {

	gmarkers = new Array();

	var data_list = document.getElementById('data_list');

	if(data_list != null) data_list.innerHTML = '';



	if(record.length > 0) {	

		var bounds = new GLatLngBounds();

		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['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);

	    //     alert(marker.data['name']);

	        map.addOverlay(marker);



	        bounds.extend(loc['point']);



	        if(data_list != null) {

	        	data_list.appendChild(parseLocations(loc, marker));

	        }

		}

	    map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));

	    					

//	    reZoom = map.getZoom();

//		reCenter = map.getCenter();

//		backbutton = new TextualControl();    

    }

    else {

    	var msg = 'No locations found. Please call 800-249-4289 to locate a distributor nearest to ' + address;

    	if(data_list != null) data_list.innerHTML = msg;

    	alert(msg);

    }

}



/*

// FUNCTION: parseLocations	

*/

function parseLocations(location, marker) {

	var div = document.createElement('div');

	div.className = 'dataNode';

	div.id = location['region_id'] + '_' + location['location_id'];



    div.innerHTML = locationLayout(location);

    GEvent.addDomListener(div, 'click', function() {

    	GEvent.trigger(marker, 'click');

    });

    GEvent.addDomListener(div, 'mouseover', function() {

    	div.className = 'dataNode _mouseover';

	    // Initialize elabel 

		label = new ELabel(location['point'], 

						   location['name'], 

						   "elabel_1", 

						   new GSize(-100,25));

    	map.addOverlay(label)

    });

    GEvent.addDomListener(div, 'mouseout', function() {

    	div.className = 'dataNode';

    	map.removeOverlay(label)

    });

    return div;

}



/*

// FUNCTION: locationLayout	

*/

function locationLayout(loc) {	

	var html = '<table class=dataNode  cellpadding="0" cellspacing="0" >';

	html += '<tr class="dataNodeHeader"><td>' + loc['name'] + '</td></tr>';

	html += '<tr class="dataNodeOddRow"><td>' + loc['address_1'] + '</td></tr>';

	html += '<tr class="dataNodeOddRow"><td>'  + loc['city'];

	html += ', '  + loc['state'] + ' '  + loc['postal_code'] +  '</td>';

	html += '</tr>';

    if(loc['phone'].length > 0) {

		html += '<tr class="dataNodeOddRow"><td>';

		html += loc['phone'] + '</td></tr>';

    }

	html += '<tr class="dataNodeOddRow"><td>';    	

    if(loc['email'].length > 0) {

		html += loc['email'] + ' ';

    }    			

    if(loc['url'].length > 0) {

		html += loc['url'] + ' ';

    }

    if(loc['street_map'].length > 0) {

		html += loc['street_map'] + ' ';

    }  

    

	html += '</td></tr></table>';

	return html;	

}



/*

// 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 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(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'];

		html += ', '  + info['state'] + ' '  + info['postal_code'] +  '</td>';

		html += '</tr>';

    	if(info['phone'].length > 0) {

			html += '<tr class="infoWindowRowOdd"><td>' + info['phone'] + '</td></tr>';

    	}

		html += '<tr class="infoWindowRowOdd"><td>';    	

    	if(info['email'].length > 0) {

			html += info['email'] + ' ';

    	}    			

    	if(info['url'].length > 0) {

			html += info['url'] + ' ';

    	}

    	if(info['street_map'].length > 0) {

			html += info['street_map'] + ' ';

    	}    	 

		html += '</td></tr></table>';

	return html;

}



/*

// 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);

    }

   	var data_list = document.getElementById('data_list'); 

    if(data_list != null) makeDataList(data_list);

}



/*

// 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;

}



/*

// FUNCTION: makeDataList	

//

// Populates the sidebar to match the markers currently displayed

*/

function makeDataList(data_list) {

    data_list.innerHTML = '';

	var empty = true;

    for (var i=0; i<gmarkers.length; i++) {

    	if (!gmarkers[i].isHidden()) {

        	empty = false

            data_list.appendChild(parseLocations(gmarkers[i].data, gmarkers[i]));

    	}

    }

    if(empty) {

    	var msg = 'No locations found. Please call 800-249-4289 to locate the nearest distributor.';

    	data_list.innerHTML = msg;

    }

}



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 = "2px";

  	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";

}