//<![CDATA[
success = -1;
loaded = 0;
function loadGoogleMap(divmap) {
    
    googlemap = new GMap2(document.getElementById(divmap));	   
                                        
	googlemap.addControl(new GSmallMapControl());
    googlemap.addControl(new GMapTypeControl());
    googlemap.addControl(new GOverviewMapControl(new GSize(50, 100)));    
    loaded = 1;
    return googlemap;
    
}


	
function loadAddress(address,  divmap, diverror, la, lg) {
                                 
	geocoder   = new GClientGeocoder();  
    
	             
	geocoder.getLatLng(address, function(point) {
           
           if (!point) {
           
               	success = 0;
               	
        		putMessage("googlemessage","<a href=\"#googlemapancor\" onclick=\"checkAgain()\">Check Again</a>");
                showDivMap(diverror);  
                
                document.getElementById(la).value = "0";
                document.getElementById(lg).value = "0";
                             	
               	
                return;
           }                   
           success = 1;
           
           if (loaded == 0) {
           
               googleMap = loadGoogleMap(divmap);
               
           }

            document.getElementById(la).value = point.lat();
            document.getElementById(lg).value = point.lng();            
            
            googleMap.clearOverlays();
            
           
           putMessage("googlemessage","<a href=\"#googlemapancor\" onclick=\"seemap()\">See Map</a> | <a href=\"#googlemapancor\" onclick=\"checkAgain()\">Check Again</a>");
           
           hiddenDivMap(diverror);    
                               
           loc = new GLatLng(point.lat(), point.lng());

           marker = new GMarker(loc);
           googleMap.setCenter(loc, 9);//zoom ta default 9
           googleMap.addOverlay(marker);        
    
	   }
	   
    );	              
}

function showDivMap(divmap) {

    document.getElementById(divmap).style.visibility='visible';	   
    
}
function hiddenDivMap(divmap) {

    document.getElementById(divmap).style.visibility='hidden';	       
    
}
function putMessage(elementId, messageHtml) {
	
    document.getElementById(elementId).innerHTML = "";
    document.getElementById(elementId).innerHTML = messageHtml;    
    
}

function loadMapFront(div, lat, lng) {

    if (loaded == 0) {
            	
    	googlemap = new GMap2(document.getElementById(div));	
    
    	googlemap.addControl(new GSmallMapControl());
    	googlemap.addControl(new GMapTypeControl());                                              
    
    	loc = new GLatLng(lat,lng);
    
    	// Case: 34 - (Hotel search) Zoom maps closer in when viewing map with only one hotel 
    	//googlemap.setCenter(loc, 12);    	
    	googlemap.setCenter(loc, 16);
    
    	googlemap.clearOverlays();
            
	    marker = new GMarker(loc,G_DEFAULT_ICON,"true");
	    	     
    
    	googlemap.addOverlay(marker); 
    	
    //	googlemap.openInfoWindow(googlemap.getCenter(),
    //               document.createTextNode("Hello, world"));
    	
    	//googlemap.openInfoWindow(loc,document.createTextNode("<b>"+hotelname+"</b>"));
    	
    	//googlemap.panTo(loc);    	    	
    	
    }
    
    loaded = 1;

}

function loadMapSearch(div,coordinates,burl, domain) {
    
                
    if (loaded == 0) {
    	
    	googlemap = new GMap2(document.getElementById(div));	
    
    	googlemap.addControl(new GSmallMapControl());
    	googlemap.addControl(new GMapTypeControl());                                              
    	
    	    	
    	if (domain == "collegepark.com") {
    	
    		loc = new GLatLng(38.994706,-76.932234);
    		
    	} else if (domain == "annapolis.com") {
    		
    		loc = new GLatLng(38.969374, -76.519741);
    		
    	} else {
    	
//    		loc = new GLatLng(38.430393, -75.054968);
    		loc = new GLatLng(38.410393, -75.054968);
    		
    	}
    	    	    	
    
    	googlemap.setCenter(loc, 11);
    
    	googlemap.clearOverlays();
            
	    var baseIcon = new GIcon();
		
		baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
		
		baseIcon.iconSize = new GSize(20, 34);
		baseIcon.shadowSize = new GSize(37, 34);
	    	         	
    	var xml = GXml.parse(coordinates);
    	
    	//alert("xmls:"+coordinates);
    	
    	var markers = xml.documentElement.getElementsByTagName("marker");
    	
		    	
    	for (var i = 0; i < markers.length; i++) {
    								    		
		    var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                            parseFloat(markers[i].getAttribute("lng")));     
            
            
			    		
    		var mark = createMarker(point, i, baseIcon, markers[i].getAttribute("hotelname"),markers[i].getAttribute("address"),markers[i].getAttribute("friendly_url"),burl, markers[i].getAttribute("hotelid"), markers[i].getElementsByTagName("roomtypes"));    					
			    		
    		googlemap.addOverlay(mark); 
    	}
    	
    	
    	//googlemap.openInfoWindow(loc,document.createTextNode("<b>"+hotelname+"</b>"));
    	
    	//googlemap.panTo(loc);
    	
    	
    	
    }
    
    loaded = 1;

}

//matrix of markers
arrMarkers = new Array();

function createMarker(point, index, baseIcon, hotelnam, addrs, furl,burl, hi, rates) {

  ic = new GIcon(baseIcon);
    
  ic.iconAnchor = new GPoint(10, 34);
  ic.infoWindowAnchor = new GPoint(10, 15);  			    
  
  ic.image = "/images/markers/marker"+(index+1)+".png";
  
  var marker = new GMarker(point, ic);		
  
  marker.hotelid = hi;
  
  //nao utilizado, por enquanto.	  
  ei = document.getElementById("imgm"+hi);  
    
  GEvent.addListener(marker, "click", function() {  	
  	
  	var htm = "<font face='verdana' size='2'><b>"+hotelnam+"</b><br>"+addrs+"<br>";
  	
  	htm+="<a target='_parent' style='color:blue;text-decoration:none;' href='http://"+burl+"/"+furl+"' onclick='return parent.gotoHotelInfo(this.href);'>Room types and rates</a></font>";  	   		  	
  	htm+="<table align='left' cellspacing='0' cellpadding='0'>";  	  	
  	
  	for(i = 0; i < rates.length; i++) {  		
  		htm+="<tr><td><font face='verdana' size='1' style='color:blue;'>"+rates[i].getAttribute("name")+" - $"+rates[i].getAttribute("rate")+"</font> <a href='#' onclick='bookit2("+hi+","+rates[i].getAttribute("roomid")+")' style='color:#FF6633;font-size:10px;font-weight:bold;'>Book It</a></td></tr>";  		
  	}
  	htm+="</table>";

  	
    marker.openInfoWindowHtml(htm);
    
            
  });
  
  arrMarkers[index] = marker;
  
  return marker;
  
}
function showInfoForMarkerNumber(num) {
	if (!arrMarkers) 
		return;		
	
	for (i = 0; i < arrMarkers.length; i++) {
		
		if (arrMarkers[i]==null) continue;
		
		if (arrMarkers[i].hotelid == num) {
			GEvent.trigger(arrMarkers[i], "click");
			return;	
		}
	}
}

//Case: 34 - (Hotel search) Zoom maps closer in when viewing map with only one hotel
function zoomInHotel(map, hid){
	if (map == null || googlemap== undefined) 
	{
		return;
	}
	
	var marker = null;
	for (i=0; i<arrMarkers.length; i++){
		if (arrMarkers[i]==null) continue;
		if (arrMarkers[i].hotelid == hid){
			marker = arrMarkers[i];
			break;
		}
	}
	
	if (marker == null) {
		return;
	}
	
	
	map.setCenter(marker.getLatLng(), 15);
	return;
	
}


function load(div,coordinates,burl, domain, hid, zoomLevel) {	
	
	var map = null;
	if (GBrowserIsCompatible()) {
    	setTimeout( function() {
    		map = loadMap(div,coordinates,burl, domain, zoomLevel);    		
			if (hid != 0) {				
				showInfoForMarkerNumber(hid);
				zoomInHotel(map, hid);
			}
        }, 100 );
    }
	
	
} 

function loadMap(div,coordinates,burl, domain, zoomLevel) {
    if (loaded == 0) {
    	googlemap = new GMap2(document.getElementById(div),
    						{size: new GSize(600, 420)}); // Devem ser o width e o height, respectivamente, de #map
    													  // no arquivo thickbox.css	
    
    	googlemap.addControl(new GSmallMapControl());
    	googlemap.addControl(new GMapTypeControl());                                              
    	
    	    	
    	googlemap.setCenter(new GLatLng(0,0),1);
    	googlemap.clearOverlays();

	    var baseIcon = new GIcon();
		
		baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
		
		baseIcon.iconSize = new GSize(20, 34);
		baseIcon.shadowSize = new GSize(37, 34);
    	var xml = GXml.parse(coordinates);
			         	
    	var markers = xml.documentElement.getElementsByTagName("marker");
    	var bounds = new GLatLngBounds(); 
    	
    	for (var i = 0; i < markers.length; i++) {
    		
    		if (!isValidMarker(markers[i])) {    			
    			continue;    			
    		}
    		
			    var point = new GLatLng(
		    						parseFloat(markers[i].getAttribute("lat")),
	                        		parseFloat(markers[i].getAttribute("lng"))
	                        	);     
	                		
	    		var mark = createMarkerHotel(point, 
	    									i, 
	    							 baseIcon, 
	    							 unescape(markers[i].getAttribute("hotelname").replace(/\+/g," ")),
	    							 unescape(markers[i].getAttribute("address").replace(/\+/g," ")),
	    							 unescape(markers[i].getAttribute("friendly_url").replace(/\+/g," ")),
	    							 burl, 
	    							 markers[i].getAttribute("hotelid"), 
	    							 markers[i].getElementsByTagName("roomtypes"));    					
				
	    		googlemap.addOverlay(mark);
	    		bounds.extend(point);
	    		
    	}
    	
    	
//    	googlemap.setZoom(googlemap.getBoundsZoomLevel(bounds));
//		googlemap.setCenter(bounds.getCenter(), 12);
//		37.0625, -95.677068
	
 		if (zoomLevel == 1) {
//			googlemap.setCenter(bounds.getCenter(), 11);
			googlemap.setCenter(new GLatLng(38.40733, -75.062027), 11);
		} else {
			// Case: 122 - (Hotel search) fix maps for multiple hotels 
			googlemap.setCenter(bounds.getCenter(), googlemap.getBoundsZoomLevel(bounds));
//			googlemap.setCenter(bounds.getCenter(), 12);
//			googlemap.setCenter(new GLatLng(38.40733, -75.062027), 12);
		}

    }
    
    loaded = 1;
    return googlemap;

}

//matrix of markers
arrMarkers = new Array();
function createMarkerHotel(point, index, baseIcon, hotelnam, addrs, furl,burl, hi, rates) {

  ic = new GIcon(baseIcon);
    
  ic.iconAnchor = new GPoint(10, 34);
  ic.infoWindowAnchor = new GPoint(10, 15);  			    
  
  ic.image = "/images/markers/marker"+(index+1)+".png";
  
  var marker = new GMarker(point, ic);		
  
  marker.hotelid = hi;
  
  //nao utilizado, por enquanto.	  
  ei = document.getElementById("imgm"+hi);  
    
  GEvent.addListener(marker, "click", function() {  	
  	
  	var htm = "<font face='verdana' size='2'><b>"+hotelnam+"</b><br>"+addrs+"<br>";
  	
  	htm+="<a target='_parent' style='color:blue;text-decoration:none;' href='http://"+burl+"/"+furl+"' onclick='return parent.gotoHotelInfo(this.href);'>Room types and rates</a></font>";  	   		  	
  	htm+="<table align='left' cellspacing='0' cellpadding='0'>";  	  	
  	
  	for(i = 0; i < rates.length; i++) {  		
  		htm+="<tr><td><font face='verdana' size='1' style='color:blue;'>"+unescape(rates[i].getAttribute("name").replace(/\+/g," "))+" - $"+rates[i].getAttribute("rate")+"</font> <a href='#' onclick='bookit2("+hi+","+rates[i].getAttribute("roomid")+")' style='color:#FF6633;font-size:10px;font-weight:bold;'>Book It</a></td></tr>";  		
  	}
  	htm+="</table>";

  	
    marker.openInfoWindowHtml(htm);
    
            
  });
  
  arrMarkers[index] = marker;
  
  return marker;
  
}

function isValidMarker(marker){
	if (marker==null)
		return false;
	
	if (marker.getAttribute("lat")=="" || marker.getAttribute("lng")=="")
	{
		return false;
	}
	return true;
}