var map = null;
function GMapOnLoad(){
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(MAP_DEFAULT_CENTER[0], MAP_DEFAULT_CENTER[1]), MAP_DEFAULT_ZOOM);
        if (MAP_SCROLL_ZOOM) 
            map.enableScrollWheelZoom();
        if (MAP_ZOOM_ANIMATION) 
            map.enableContinuousZoom();
        if (MAP_SHOW_CONTROLS) 
            map.addControl(new GSmallMapControl());
        if (MAP_SHOW_TYPE_CONTROLS) 
            map.addControl(new GMapTypeControl());
        
        switch (MAP_DEFAULT_TYPE) {
            case 'normal':
                map.setMapType(G_NORMAL_MAP);
                break;
            case 'sat':
                map.setMapType(G_SATELLITE_MAP);
                break;
            case 'hybrid':
                map.setMapType(G_HYBRID_MAP);
                break;
            default:
                map.setMapType(G_NORMAL_MAP);
                break;
        }
    }
}

function Landmark(id, latlong, title, desc, county, region, dedication_date){
    this.id = id;
    this.title = title;
    this.desc = desc;
    this.orig_latlong = latlong;
    this.county = county;
	this.region = region;
	this.dedication_date = dedication_date;
    this.DMStoDD = function(coords){
        // converts an array of coordinates into DD format
        // sample input array:
        // coords[0] = 45; (degrees)
        // coords[1] = 33; (minutes)
        // coords[2] = 36; (seconds)
        // only degrees is required.
        var dd = 0;
        var quotient = 1;
        for (var i = 0; i < coords.length; i++) {
            dd += coords[i] * quotient;
            quotient = quotient / 60;
        }
        return dd;
    };
    
    if (latlong.indexOf(DMS_SEPARATOR) == -1) {
        // dd
        this.latlong = new GLatLng(parseFloat(latlong.split(LATLONG_SEPARATOR)[0]), parseFloat(latlong.split(LATLONG_SEPARATOR)[1]));
    }
    else {
        // dms
        var lat_d = latlong.split(LATLONG_SEPARATOR)[0].substring(0, 1); // possibilities: 'N', 'n', 'S', 's'
        var temp_lat = (isNaN(lat_d)) ? latlong.split(LATLONG_SEPARATOR)[0].substring(1) : latlong.split(LATLONG_SEPARATOR)[0];
        
        var long_d = latlong.split(LATLONG_SEPARATOR)[1].substring(0, 1); // possibilities: 'E', 'e', 'W', 'w'
        var temp_long = (isNaN(long_d)) ? latlong.split(LATLONG_SEPARATOR)[1].substring(1) : latlong.split(LATLONG_SEPARATOR)[1];
        
        
        var dms_lat = temp_lat.split(DMS_SEPARATOR);
        var dms_long = temp_long.split(DMS_SEPARATOR);
        
        // convert dms lat into dd
        var lat = this.DMStoDD(dms_lat);
        var long = this.DMStoDD(dms_long);
        
        // hemisphere corrections
        if (lat_d == 'S' || lat_d == 's' || lat_d == '-') 
            lat = lat * -1;
        if (long_d == 'W' || long_d == 'w' || long_d == '-') 
            long = long * -1;
        
        this.latlong = new GLatLng(lat, long);
    }
}


// looks for an ENTER keypress
// (used on search input)
function detectKeys(e, obj){
    var charcode;
    
    if (e && e.which) 
        charcode = e.which;
    else {
        e = event;
        charcode = e.keyCode;
    }  
    MarkerMap.find(obj);
    
    if (charcode == 13) {
        MarkerMap.hideAllPanels();
    }
    
}


///
/// custom map functionality
///
var MarkerMap = {
    panel_list: new Array(new Array(KEYWORD_PANEL_ID, KEYWORD_SEARCH_ID),
						  new Array(CATEGORY_PANEL_ID, CATEGORY_SEARCH_ID), 
						  new Array(REGIONAL_PANEL_ID, REGIONAL_SEARCH_ID),
						   new Array(MARKER_PANEL_ID, MARKER_SEARCH_ID)),
    
    markers: new Array(),
    
    category_string: "",
    
    showKeywordSearch: function(){
        MarkerMap.hideAllPanels();
        
        // the map object
        var _map = document.getElementById("map");
        
        // calculations for centering panels
        var pos_top = (_map.offsetTop + (_map.offsetHeight / 2) - (KEYWORD_HEIGHT / 2) - 200) + "px";
        var pos_left = (_map.offsetLeft + (_map.offsetWidth / 2) - (KEYWORD_WIDTH / 2)) + "px";
        
        // the semi-transparent underlay
        var _div = document.createElement("div");
        _div.id = KEYWORD_PANEL_ID;
        _div.className = PANEL_CLASSNAME;
        _div.style.position = "absolute";
        _div.style.opacity = "0";
        _div.style.filter = "alpha(opacity=0)";
        _div.style.top = pos_top;
        _div.style.left = pos_left;
        _div.style.width = KEYWORD_WIDTH + "px";
        _div.style.height = KEYWORD_HEIGHT + "px";
        
        // the search form overlay
        var _text = document.createElement("div");
        _text.id = KEYWORD_SEARCH_ID;
        _text.style.position = "absolute";
        _text.style.opacity = "0";
        _text.style.filter = "alpha(opacity=0)";
        _text.style.top = pos_top;
        _text.style.left = pos_left;
        _text.style.width = KEYWORD_WIDTH + "px";
        _text.style.height = KEYWORD_HEIGHT + "px";
        _text.innerHTML = '<input type="button" value="X" class="button close" onclick="MarkerMap.hideAllPanels()" /><br />' +
        'Keyword Search:<br /><input id="searchString" type="text" class="text" />' +
        ' <input type="button" value="OK" class="button" onclick="MarkerMap.find(document.getElementById(\'searchString\'), \'keyword\');MarkerMap.hideAllPanels();" />';
        
        MarkerMap.showPanel(_div, _text);
    },
    showCategorySearch: function(){
        MarkerMap.hideAllPanels();
        MarkerMap.category_string = "";
        
        // map object
        var _map = document.getElementById("map");
        
        // center panels
        var pos_top = (_map.offsetTop + (_map.offsetHeight / 2) - (CATEGORY_HEIGHT / 2) - 10) + "px";
        var pos_left = (_map.offsetLeft + (_map.offsetWidth / 2) - (CATEGORY_WIDTH / 2)) + "px";
        
        // underlay
        var _div = document.createElement("div");
        _div.id = CATEGORY_PANEL_ID;
        _div.className = PANEL_CLASSNAME;
        _div.style.position = "absolute";
        _div.style.opacity = "0";
        _div.style.filter = "alpha(opacity=0)";
        _div.style.top = pos_top;
        _div.style.left = pos_left;
        _div.style.width = CATEGORY_WIDTH + "px";
        _div.style.height = CATEGORY_HEIGHT + "px";
        
        // overlay
        var _text = document.createElement("div");
        _text.id = CATEGORY_SEARCH_ID;
        _text.style.position = "absolute";
        _text.style.opacity = "0";
        _text.style.filter = "alpha(opacity=0)";
        _text.style.top = pos_top;
        _text.style.left = pos_left;
        _text.style.width = CATEGORY_WIDTH + "px";
        _text.style.height = CATEGORY_HEIGHT + "px";
        _text.innerHTML = '<input type="button" value="X" class="button close" onclick="MarkerMap.hideAllPanels()" /><br />Category Search<br /><span>Select one or more categories.</span><br />' +
        '<table cellspacing="2" cellpadding="0">' +
        '<tr>' +
        MarkerMap.getCategoryParents() +
        '</tr>' +
        '<tr>' +
        MarkerMap.getCategoryChildren() +
        '</tr>' +
        '</table>' +
        '<br />' +
        '<input type="button" class="button" value="Show Me!" onclick="MarkerMap.hidePanel(\'' +
        _div.id +
        '\',\'' +
        _text.id +
        '\')" />';
        
        MarkerMap.showPanel(_div, _text);
    },
    
    showCountySearch: function(){
        MarkerMap.hideAllPanels();
        MarkerMap.category_string = "";
        
        // map object
        var _map = document.getElementById("map");
        
        // center panels
        var pos_top = (_map.offsetTop + (_map.offsetHeight / 2) - (COUNTY_HEIGHT / 2) - 40) + "px";
        var pos_left = (_map.offsetLeft + (_map.offsetWidth / 2) - (COUNTY_WIDTH / 2)) + "px";
        
        // underlay
        var _div = document.createElement("div");
        _div.id = COUNTY_PANEL_ID;
        _div.className = PANEL_CLASSNAME;
        _div.style.position = "absolute";
        _div.style.opacity = "0";
        _div.style.filter = "alpha(opacity=0)";
        _div.style.top = pos_top;
        _div.style.left = pos_left;
        _div.style.width = COUNTY_WIDTH + "px";
        _div.style.height = COUNTY_HEIGHT + "px";
        
        // overlay
        var _text = document.createElement("div");
        _text.id = CATEGORY_SEARCH_ID;
        _text.style.position = "absolute";
        _text.style.opacity = "0";
        _text.style.filter = "alpha(opacity=0)";
        _text.style.top = pos_top;
        _text.style.left = pos_left;
        _text.style.width = COUNTY_WIDTH + "px";
        _text.style.height = COUNTY_HEIGHT + "px";
        _text.innerHTML = '<input type="button" value="X" class="button close" onclick="MarkerMap.hideAllPanels()" /><br />County Search<br /><span>Select one or more counties.</span><br />' +
        '<table cellspacing="2" cellpadding="0">' +
        '<tr><th>County</th></tr>' +
        '<tr>' +
        MarkerMap.getCategoryChildren2('county') +
        '</tr>' +
        '</table>' +
        '<br />' +
        '<input type="button" class="button" value="Show Me!" onclick="MarkerMap.hidePanel(\'' +
        _div.id +
        '\',\'' +
        _text.id +
        '\')" />';
        
        MarkerMap.showPanel(_div, _text);
    },
    
    showRegionalSearch: function(){
        MarkerMap.hideAllPanels();
        
        // the map object
        var _map = document.getElementById("map");
        
        // calcs
        var pos_top = (_map.offsetTop + (_map.offsetHeight / 2) - (REGIONAL_HEIGHT / 2) - 20) + "px";
        var pos_left = (_map.offsetLeft + (_map.offsetWidth / 2) - (REGIONAL_WIDTH / 2)) + "px";
        
        // the semi-transparent underlay
        var _div = document.createElement("div");
        _div.id = REGIONAL_PANEL_ID;
        _div.className = PANEL_CLASSNAME;
        _div.style.position = "absolute";
        _div.style.opacity = "0";
        _div.style.filter = "alpha(opacity=0)";
        _div.style.top = pos_top;
        _div.style.left = pos_left;
        _div.style.width = REGIONAL_WIDTH + "px";
        _div.style.height = REGIONAL_HEIGHT + "px";
        
        // the search form overlay
        var _text = document.createElement("div");
        _text.id = REGIONAL_SEARCH_ID;
        _text.style.position = "absolute";
        _text.style.opacity = "0";
        _text.style.filter = "alpha(opacity=0)";
        _text.style.top = pos_top;
        _text.style.left = pos_left;
        _text.style.width = REGIONAL_WIDTH + "px";
        _text.style.height = REGIONAL_HEIGHT + "px";
        _text.innerHTML = '<input type="button" value="X" class="button close" onclick="MarkerMap.hideAllPanels()" /><br />Regional Search<br /><br /><img src="/images/region_minimap.gif" usemap="#regions" />' +
        '<map name="regions">' +
        '<area alt="Mountain" shape="polygon" coords="12,9,134,11,125,27,136,37,113,44,98,65,20,66" href="javascript:MarkerMap.find({value:\'Mountain\'}, \'regional\');MarkerMap.hidePanel(\'' +
        _div.id +
        '\',\'' +
        _text.id +
        '\');" />' +
        '<area shape="polygon" coords="54,67,99,65,117,83,97,110,66,116,61,101,48,101,60,88" href="javascript:MarkerMap.find({value:\'Atlanta Metro\'}, \'regional\');MarkerMap.hidePanel(\'' +
        _div.id +
        '\',\'' +
        _text.id +
        '\');" />' +
        '<area shape="polygon" coords="21,65,54,65,47,100,58,102,67,119,100,115,121,83,103,64,138,41,200,115,181,114,170,146,117,164,103,149,67,184,44,178" href="javascript:MarkerMap.find({value:\'Piedmont\'}, \'regional\');MarkerMap.hidePanel(\'' +
        _div.id +
        '\',\'' +
        _text.id +
        '\');" />' +
        '<area shape="polygon" coords="44,180,68,185,71,169,78,174,103,151,118,164,180,142,185,117,203,118,241,175,229,184,224,177,207,181,219,214,195,292,184,279,36,273" href="javascript:MarkerMap.find({value:\'Coastal Plain\'}, \'regional\');MarkerMap.hidePanel(\'' +
        _div.id +
        '\',\'' +
        _text.id +
        '\');" />' +
        '<area shape="polygon" coords="257,193,242,179,230,187,224,180,210,184,212,203,221,213,211,243,203,253,205,267,231,274" href="javascript:MarkerMap.find({value:\'Lowcountry\'}, \'regional\');MarkerMap.hidePanel(\'' +
        _div.id +
        '\',\'' +
        _text.id +
        '\');" />' +
        '</map>' +
        '<br /><input type="button" value="OK" class="button" onclick="MarkerMap.hidePanel(\'' +
        _div.id +
        '\',\'' +
        _text.id +
        '\')" />';
        
        MarkerMap.showPanel(_div, _text);
    },
    showMarker2: function(index){
		//var id = current;
        MarkerMap.hideAllPanels();
        MarkerMap.category_string = "";
        
        // map object
        var _map = document.getElementById("map");
        
        // center panels
        var pos_top = (_map.offsetTop + (_map.offsetHeight / 2) - (CATEGORY_HEIGHT / 2) - 10) + "px";
        var pos_left = (_map.offsetLeft + (_map.offsetWidth / 2) - (CATEGORY_WIDTH / 2) + 100) + "px";
        
        // underlay
        var _div = document.createElement("div");
        _div.id = MARKER_PANEL_ID;
        _div.className = PANEL_CLASSNAME;
        _div.style.position = "absolute";
        _div.style.opacity = "0";
      //  _div.style.filter = "alpha(opacity=0)";
        _div.style.top = pos_top;
        _div.style.left = pos_left;
        _div.style.width = MARKER_WIDTH + "px";

        var _text = document.createElement("div");
        _text.id = MARKER_SEARCH_ID;
		_text.className = "itemArea";
        _text.style.position = "absolute";
        _text.style.opacity = "0";
      //  _text.style.filter = "alpha(opacity=0)";
        _text.style.top = pos_top;
        _text.style.left = pos_left;
        _text.style.width = MARKER_WIDTH + "px";
		_text.style.padding = "10px";
		_text.style.border	= " 1px solid #000000";
		_text.style.backgroundColor = "#E3C79A";
		//document.getElementById('sd').style.bor
       	//alert(landmarks[current]['title']);
		
        _text.innerHTML = ' <img style="float: right; border:0; padding-left: 2px;" src="/images/close_button.gif" onclick="MarkerMap.hideAllPanels();" /> ';
		if(index < landmarks.length -1) 
			 _text.innerHTML =  _text.innerHTML + ' <img style="float: right; border: 0;padding-left: 2px;" src="/images/marker_next.gif" onclick="MarkerMap.nextMarker('+(index+1)+');" />';
		if(index > 0) 
			 _text.innerHTML =  _text.innerHTML + ' <img style="float: right; border: 0;padding-left: 2px;" src="/images/marker_back_button.gif" onclick="MarkerMap.nextMarker('+(index-1)+');" /> ';
		_text.innerHTML =  _text.innerHTML + '<br />'+
		'<h1>'+landmarks[index]['title']+'</h1>'+
		'<h2> Dedicated on '+landmarks[index]["dedication_date"]+'</h2><br />'+
		'<strong>County:</strong> '+landmarks[index]["county"]+'<br /> '+
		'<strong>GPS:</strong> '+landmarks[index]["latlong"]+'<br />'+
		'<strong>Region:</strong> '+landmarks[index]["region"]+'<p></p>'+
			'<p >'+landmarks[index]["desc"]+' <a href="/markers/'+landmarks[index]["id"]+'" >Full Description</a></p><br />'+
			'<div id="map_container_show_marker" style="width: 300px; height: 235px; border: 1px solid #000000; float:left; padding:5px; "></div>';
		MarkerMap.showPanel(_div, _text);
		GMapOnLoadShowMarker2( landmarks[index]['latlong'] );
		
		var largeIcon = new GIcon();
        largeIcon.image = "../images/big_marker.png";
        largeIcon.iconSize = new GSize(24, 34);
        largeIcon.iconAnchor = new GPoint(13, 20);
        largeIcon.infoWindowAnchor = new GPoint(13,2);
		
		map2.addOverlay(new GMarker(landmarks[index]['latlong'],largeIcon))
        
    },
	nextMarker: function(index){
        MarkerMap.category_string = "";
        var _text = document.getElementById('marker');
		
       _text.innerHTML = ' <img style="float: right; border:0; padding-left: 2px;" src="/images/close_button.gif" onclick="MarkerMap.hideAllPanels();" /> ';
		if(index < landmarks.length -1) 
			 _text.innerHTML =  _text.innerHTML + ' <img style="float: right; border: 0;padding-left: 2px;" src="/images/marker_next.gif" onclick="MarkerMap.nextMarker('+(index+1)+');" />';
		if(index > 0) 
			 _text.innerHTML =  _text.innerHTML + ' <img style="float: right; border: 0;padding-left: 2px;" src="/images/marker_back_button.gif" onclick="MarkerMap.nextMarker('+(index-1)+');" /> ';
		_text.innerHTML =  _text.innerHTML + '<br />'+
		'<h1>'+landmarks[index]['title']+'</h1>'+
		'<h2> Dedicated on '+landmarks[index]["dedication_date"]+'</h2><br />'+
		'<strong>County:</strong> '+landmarks[index]["county"]+'<br /> '+
		'<strong>GPS:</strong> '+landmarks[index]["latlong"]+'<br />'+
		'<strong>Region:</strong> '+landmarks[index]["region"]+'<p></p>'+
			'<p >'+landmarks[index]["desc"]+' <a href="/markers/'+landmarks[index]["id"]+'" >Full Description</a></p><br />'+
			'<div id="map_container_show_marker" style="width: 300px; height: 235px; border: 1px solid #000000; float:left; padding:5px; "></div>';
	
		GMapOnLoadShowMarker2( landmarks[index]['latlong'] );
		var largeIcon = new GIcon();
        largeIcon.image = "../images/big_marker.png";
        largeIcon.iconSize = new GSize(24, 34);
        largeIcon.iconAnchor = new GPoint(13, 20);
        largeIcon.infoWindowAnchor = new GPoint(13,2);
		map2.addOverlay(new GMarker(landmarks[index]['latlong'],largeIcon))
        
    },

    showPanel: function(obj1, obj2){
        // append both the under and overlays to the document and fade them in
        document.body.appendChild(obj1);
        document.body.appendChild(obj2);
        Effect.Appear(obj1.id, {
            duration: 0.3,
            to: 1.0
        });
        Effect.Appear(obj2.id, {
            duration: 0.3,
            to: 1.0
        });
    },
    
    hidePanel: function(id1, id2){
        // fade both the under and overlay out and then remove them from
        // the DOM
        Effect.Fade(id1, {
            duration: 0.1,
            afterFinish: function(obj){
              // document.body.removeChild(obj.element);
			   //document.body.removeChild( document.getElementById('marker_box') );
			   obj.element.hide();
            }
        });
        Effect.Fade(id2, {
            duration: 0.1,
            afterFinish: function(obj){
               // document.body.removeChild(obj.element);
				// document.body.removeChild( document.getElementById('marker') );
				 obj.element.hide();
            }
        });
    },
    
    hideAllPanels: function(){
        // hides all panels (usually used in the show panel functions)
        for (var i = 0; i < MarkerMap.panel_list.length; i++) {
            container_exists = document.getElementById(MarkerMap.panel_list[i][0]);
            content_exists = document.getElementById(MarkerMap.panel_list[i][1]);
            
            if (container_exists && content_exists) 
                MarkerMap.hidePanel(MarkerMap.panel_list[i][0], MarkerMap.panel_list[i][1]);
        }
    },
    
    highlightCatSelect: function(obj, value){
        // highlights a category name when selected
        if (obj.parentNode.className == 'highlighted') {
            obj.parentNode.className = '';
            
            val_comma = value + ",";
            cat_begin = MarkerMap.category_string.substring(0, MarkerMap.category_string.indexOf(val_comma));
            cat_end = MarkerMap.category_string.substring(MarkerMap.category_string.indexOf(val_comma) + val_comma.length);
            MarkerMap.category_string = cat_begin + cat_end;
        }
        
        else {
            obj.parentNode.className = 'highlighted';
            // add to list
            MarkerMap.category_string += value + ",";
        }
        
        if (obj.type != 'checkbox') {
            var _cb = obj.parentNode.getElementsByTagName("input")[0];
            if (_cb.checked) 
                _cb.checked = false;
            else 
                _cb.checked = true;
        }
        //alert(MarkerMap.category_string);
        MarkerMap.find({
            value: MarkerMap.category_string
        }, 'category');
    },
    
    getCategoryParents: function(){
        // returns upper-level categories (i.e. - parents)
        var s = '';
        for (var i = 0; i < categories.length; i++) {
            if (categories[i][0] == "historical_period") 
                s += '<th>historical period</th>';
            else 
                s += '<th>' + categories[i][0] + '</th>';
        }
        return s;
    },
    
    getCategoryChildren: function(){
        // returns children category list
        var s = '';
        for (var i = 0; i < categories.length; i++) {
            s += '<td valign="top"><div style="height:' + CATEGORY_CHILDREN_HEIGHT + 'px;overflow:auto;">';
            for (var j = 1; j < categories[i].length; j++) {
                s += '<div><input type="checkbox" onclick="MarkerMap.highlightCatSelect(this, \'' + categories[i][0] + "=" + categories[i][j] + '\')" /> <a href="javascript:;" onclick="MarkerMap.highlightCatSelect(this, \'' + categories[i][0] + "=" + categories[i][j] + '\')">' + categories[i][j] + '</a></div>';
            }
            s += '</div></td>';
        }
        return s;
    },
    
    getCategoryChildren2: function(category){
        var cate_index = 0;
        var s = '';
        for (var i = 0; i < categories.length; i++) {
            if (categories[i][0] == category) {
                cate_index = i;
            }
        }
        s += '<td valign="top"><div style="height:' + COUNTY_CHILDREN_HEIGHT + 'px;overflow:auto;">';
        var lcol = categories[cate_index].length / 2;
        s += '<div style="float:left;padding-left:1px;width:110px;">';
        for (var j = 1; j < lcol; j++) {
            s += '<div><input type="checkbox" onclick="MarkerMap.highlightCatSelect(this, \'' + categories[cate_index][0] + "=" + categories[cate_index][j] + '\')" /> <a href="javascript:;" onclick="MarkerMap.highlightCatSelect(this, \'' + categories[cate_index][0] + "=" + categories[cate_index][j] + '\')">' + categories[cate_index][j] + '</a></div>';
        }
        s += '</div><div style="float:left;padding-left:1px;width:110px;">';
        for (var j = lcol; j < categories[cate_index].length; j++) {
            s += '<div><input type="checkbox" onclick="MarkerMap.highlightCatSelect(this, \'' + categories[cate_index][0] + "=" + categories[cate_index][j] + '\')" /> <a href="javascript:;" onclick="MarkerMap.highlightCatSelect(this, \'' + categories[cate_index][0] + "=" + categories[cate_index][j] + '\')">' + categories[cate_index][j] + '</a></div>';
        }
        s += '</div></div></td>';
        
        return s;
    },
    
    addPoint: function(obj,index,icon){
        // creates a marker object to be placed on the map
        var largeIcon = new GIcon();
        largeIcon.image = "../images/big_marker.png";
        largeIcon.iconSize = new GSize(24, 34);
        largeIcon.iconAnchor = new GPoint(13, 20);
        largeIcon.infoWindowAnchor = new GPoint(13,2);

		var marker = new GMarker(obj.latlong,largeIcon);
		marker.index = index;
		  
		//GEvent.addListener(marker, "click", function(){window.location ='/markers/'+marker.index;} );
        GEvent.addListener(marker, "click", function(){MarkerMap.showMarker2(marker.index);} );
        MarkerMap.markers[MarkerMap.markers.length] = marker;
        return marker;
    },

    
    find: function(obj, search_type){
    
        var req = new Ajax.Updater('search_results', '/maps/search/?search_type=' + search_type + '&searchtext=' + obj.value.replace("'", 'GGG'), {
            asynchronous: true,
            evalScripts: true
        });
        
    },
    
    showResults: function(s){
        //create icons
		var largeIcon = new GIcon();
        largeIcon.image = "../images/big_marker.png";
        largeIcon.iconSize = new GSize(24, 34);
        largeIcon.iconAnchor = new GPoint(13, 20);
        largeIcon.infoWindowAnchor = new GPoint(13,2);
		var icon = new GIcon();
        icon.image = "../images/marker_small.gif";
        icon.iconSize = new GSize(8, 12);
        icon.iconAnchor = new GPoint(4, 10);
        
        for (var i = 0; i < landmarks.length; i++) {
            map.addOverlay(MarkerMap.addPoint(landmarks[i],i,largeIcon));
        }
		var gps = map.getCenter();
		map.setCenter(gps,MAP_DEFAULT_ZOOM);
    }
    
};

function GMapOnLoadShowMarker(latlong){
    this.DMStoDD = function(coords){
        // converts an array of coordinates into DD format
        // sample input array:
        // coords[0] = 45; (degrees)
        // coords[1] = 33; (minutes)
        // coords[2] = 36; (seconds)
        // only degrees is required.
        var dd = 0;
        var quotient = 1;
        for (var i = 0; i < coords.length; i++) {
            dd += coords[i] * quotient;
            quotient = quotient / 60;
        }
        return dd;
    };
    
    if (latlong.indexOf(DMS_SEPARATOR) == -1) {
        // dd
        this.latlong = new GLatLng(parseFloat(latlong.split(LATLONG_SEPARATOR)[0]), parseFloat(latlong.split(LATLONG_SEPARATOR)[1]));
    }
    else {
        // dms
        var lat_d = latlong.split(LATLONG_SEPARATOR)[0].substring(0, 1); // possibilities: 'N', 'n', 'S', 's'
        var temp_lat = (isNaN(lat_d)) ? latlong.split(LATLONG_SEPARATOR)[0].substring(1) : latlong.split(LATLONG_SEPARATOR)[0];
        
        var long_d = latlong.split(LATLONG_SEPARATOR)[1].substring(0, 1); // possibilities: 'E', 'e', 'W', 'w'
        var temp_long = (isNaN(long_d)) ? latlong.split(LATLONG_SEPARATOR)[1].substring(1) : latlong.split(LATLONG_SEPARATOR)[1];
        
        
        var dms_lat = temp_lat.split(DMS_SEPARATOR);
        var dms_long = temp_long.split(DMS_SEPARATOR);
        
        // convert dms lat into dd
        var lat = this.DMStoDD(dms_lat);
        var long = this.DMStoDD(dms_long);
        
        // hemisphere corrections
        if (lat_d == 'S' || lat_d == 's' || lat_d == '-') 
            lat = lat * -1;
        if (long_d == 'W' || long_d == 'w' || long_d == '-') 
            long = long * -1;
        
        this.latlong = new GLatLng(lat, long);
    }
    
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(MAP_DEFAULT_CENTER[0], MAP_DEFAULT_CENTER[1]), 6);
        if (MAP_SCROLL_ZOOM) 
            map.enableScrollWheelZoom();
        if (MAP_ZOOM_ANIMATION) 
            map.enableContinuousZoom();
        if (MAP_SHOW_CONTROLS) 
            map.addControl(new GSmallMapControl());
        if (MAP_SHOW_TYPE_CONTROLS) 
            map.addControl(new GMapTypeControl());
        
        
        switch (MAP_DEFAULT_TYPE) {
            case 'normal':
                map.setMapType(G_NORMAL_MAP);
                break;
            case 'sat':
                map.setMapType(G_SATELLITE_MAP);
                break;
            case 'hybrid':
                map.setMapType(G_HYBRID_MAP);
                break;
            default:
                map.setMapType(G_NORMAL_MAP);
                break;
        }
        
		var largeIcon = new GIcon();
        largeIcon.image = "../images/big_marker.png";
        //largeIcon.shadow = "../images/big_marker_shadow.png";
        largeIcon.iconSize = new GSize(24, 34);
       // largeIcon.shadowSize = new GSize(25,19);
        largeIcon.iconAnchor = new GPoint(13, 20);
        largeIcon.infoWindowAnchor = new GPoint(13,2);
       // largeIcon.infoShadowAnchor=new GPoint(13,20);
		//var icon = new GIcon();
        map.addOverlay(new GMarker(this.latlong,largeIcon));
    }
}

function GMapOnLoadShowMarker2(latlong){
    this.DMStoDD = function(coords){
        var dd = 0;
        var quotient = 1;
        for (var i = 0; i < coords.length; i++) {
            dd += coords[i] * quotient;
            quotient = quotient / 60;
        }
        return dd;
    };
	
    if (GBrowserIsCompatible()) {
        map2 = new GMap2(document.getElementById("map_container_show_marker"));
        map2.setCenter(new GLatLng(MAP_DEFAULT_CENTER[0], MAP_DEFAULT_CENTER[1]), 6);
        if (MAP_SCROLL_ZOOM) 
            map2.enableScrollWheelZoom();
        if (MAP_ZOOM_ANIMATION) 
            map2.enableContinuousZoom();
        if (MAP_SHOW_CONTROLS) 
            map2.addControl(new GSmallMapControl());
        if (MAP_SHOW_TYPE_CONTROLS) 
            map2.addControl(new GMapTypeControl());
        
        switch (MAP_DEFAULT_TYPE) {
            case 'normal':
                map2.setMapType(G_NORMAL_MAP);
                break;
            case 'sat':
                map2.setMapType(G_SATELLITE_MAP);
                break;
            case 'hybrid':
                map2.setMapType(G_HYBRID_MAP);
                break;
            default:
                map2.setMapType(G_NORMAL_MAP);
                break;
        }
    }
}


