/**
   i_hotel_search.js
*/


var gmarkers = [];
var htmls = [];
var map;
var showHotels=false;
var isZoomend = false;
var clickHotelNum = false;

function IsEmpty(myString) {
   if (myString == null) {
   	return true;
   }
   
   if (myString.length == 0) {
   	return true;
   }
   
   return false;
}	

function IsNotEmpty(myString) {
   return !IsEmpty(myString);
}	

/********************************************************
    The entry point of user click: next/previews/viewAll 
 */ 
navigateSelect = function(dir, currPos) {
	
   var xmlUrl;
   if (dir == 1) {    
     xmlUrl ="/hotel/nextpage.do?pos="+currPos;            
   }
   else if (dir == 2) {
     xmlUrl ="/hotel/previouspage.do?pos="+currPos;  
   }
   else if (dir == 3) {
     xmlUrl ="/hotel/viewall.do";   
   }
   
    
   //get request
   GDownloadUrl(xmlUrl, processNavigator);
   
}

/*********************************************************
  called by  GDownloadUrl(xmlUrl, processNavigator);  
*/
processNavigator = function(data, responseCode) {
   
   //convert to JSON
   var myJson = eval('(' + data + ')');
   //GLog.write(data);
   
   displayMapHotelList(myJson, true);
   
   //fill markers
   fillHotelMarkers(myJson, map);      
}




/********************************************************
  Display:
  navigateSelect(1,0) next
  navigateSelect(2,pos) previous
  navigateSelect(3,pos) show all
  Results 226 - 250 of 274 ( Show All Results ) Previous | Next 
 */
function theNavigatorDisp(myJson) {
     
   var isShowAll = myJson.megaInfo.isShowAll;
   var currPos = myJson.megaInfo.pos;
   var maxPos = myJson.megaInfo.maxOfPos;
   var size = myJson.megaInfo.size;
   var total = myJson.megaInfo.total;
   
       
   if (myJson.megaInfo.size < myJson.megaInfo.total) {
       var showAllResultLink;
       var navigatorLeft;
       var navigatorRight=""; 
               
       if (isShowAll) {
            showAllResultLink = '<a href="javascript:navigateSelect(1,0)">  (  Show ' +  myJson.megaInfo.size  + ' results per page  ) </a>';
            navigatorLeft = "Results " +  myJson.megaInfo.start  + " - " + myJson.megaInfo.total +  " of   " + myJson.megaInfo.total + showAllResultLink; 
                       
       }
       else {
           showAllResultLink = '<a href="javascript:navigateSelect(3,'+ currPos + ')">  ( Show All Results ) </a>';
           
           navigatorLeft = "Results " +  myJson.megaInfo.start  + " - " + myJson.megaInfo.end +  " of   " + myJson.megaInfo.total + showAllResultLink;       
             
           if (currPos > 1) {
              navigatorRight = '<a href="javascript:navigateSelect(2,'+ currPos + ')"> Previous </a>'         
           }
       
           if (currPos > 1 && currPos*size <= total) {
              navigatorRight += " | ";
           }
       
           if (currPos*size <= total) {
               navigatorRight += '<a href="javascript:navigateSelect(1,'+ currPos + ')"> Next </a>';
           }    
       }
              
       document.getElementById("navigatorLeftTop").innerHTML = navigatorLeft;
       document.getElementById("navigatorLeftBottom").innerHTML = navigatorLeft;
       
       document.getElementById("navigatorRightTop").innerHTML = navigatorRight;
       document.getElementById("navigatorRightBottom").innerHTML = navigatorRight;
   }
}

function theNavigatorDispAll(myJson) {
  var total = myJson.megaInfo.total;
  var navigatorLeft="";
  var navigatorRight=""; 
  
  navigatorLeft = "Results " + total;
  document.getElementById("navigatorLeftTop").innerHTML = navigatorLeft;
  document.getElementById("navigatorLeftBottom").innerHTML = navigatorLeft;
       
  document.getElementById("navigatorRightTop").innerHTML = navigatorRight;
  document.getElementById("navigatorRightBottom").innerHTML = navigatorRight; 
       	
}

/*************************************************************
   display hotel list: 
   hotelInfo --> BWPropertyDetail
 */
function displayHotelList(myJson, showPrice) {
  var hotelList="";

  var hotels = myJson.hotels;
  var hotelEntry = myJson.hotelSearchEntry;
  var hotelInfo;  //BWPropertyDetail
  var hotelId;
  var chain='ihg';
  var name;
  var address;
  var index;
  var pos = (myJson.megaInfo.pos-1)*myJson.megaInfo.size; 
  var distance;
  var propertyCompanies; 
  var propertyCompany;
  var priceLow;
  var priceHigh;
  var companyName;
  var companySec;
  var smallImage;
  
   
  var ii="";
if (hotels) { //if not empty
  for (var i=0; i<hotels.length; i++) {
    hotelInfo = hotels[i]; 
    hotelId = hotelInfo.hotelCode;
    hotelName = hotelInfo.hotelName;
    address = hotelInfo.fullAddress;    
    hotelIndex = pos+i+1;
    distance = hotelInfo.distance;
    propertyCompanies = hotelInfo.bwPropertyCompanyList;
    smallImage = hotelInfo.hotelSmallImageUrl;   //hotelInfo.hotelBigImageUrl
    
    companySec = "";
  
    ii = i+1;
      
	        
    /* 26 | 171790 | ihg | Doubletree Alpharetta Windward | 2925 Jordan Ct, ALPHARETTA, GA, US 30004 */
    var addressStr="";
    var amenitiesStr="";
    var compStr="";
    var compDetailStr="";
    var selectURL="";
       
    hotelList += 
       '<tr>' + 
         '<td colspan="3"> ' + 
             '<table class="bw_result_area_border" cellpadding="2" cellspacing="0" border="0">' +
                //hotel name 
	        '<tr class="bw_result_name_row">' +
	           '<td colspan=2" nowrap>' +
	              '<b> <a style="text-decoration:none" href="javascript:myclick(' + ii + ')">' + ii + '. </a> &nbsp;&nbsp;' +
	              '<a style="text-decoration:true" href="/hotel/hoteldetail.do?propertyId='+hotelId + '"  target="'+ hotelName + '">' + hotelName + ' </a> </b>'+
	              //hotelName + 
 	           '</td>' + 
 	           '<td align="right">' + hotelInfo.distanceInMile + '&nbsp; Miles &nbsp;&nbsp;</td>'+
	        '</tr>';	
	             
	        //addreses, image
	        if (IsNotEmpty(hotelId)) {
	          addressStr = '<tr class="bw_result_name_row">' +
	             '<td colspan="2" align="left" valign="top"> ' +
	                  '&nbsp;&nbsp;&nbsp;&nbsp;' +  address + 
	             '</td>'+
	             '<td rowspan="2" align="right" class="bw_result_name_row">';
	                //if (smallImage != null || ) {
	                if (IsNotEmpty(smallImage)) {
 	    	           addressStr += '<img src="'+ smallImage + '" width="63" height="63" atl="hotel motel image"> &nbsp; &nbsp;'; 	    						  	    	        
 	    	        }
 	             addressStr +='</td>'+
	          '</tr>';	
	          
	          hotelList += addressStr;
	        }     
	        
	        //amenities	        
	       if (hotelInfo.amenitiesInStr!=null) {
	          amenitiesStr = '<tr class="bw_result_name_row"> ';
	          amenitiesStr += '  <td colspan="2" align="left"> ';
	    	  amenitiesStr += '     <b>Amenities:</b> &nbsp;' + hotelInfo.amenitiesInStr; 
	          amenitiesStr += '  </td>';
	          amenitiesStr += '</tr>';
	          
	          hotelList += amenitiesStr;
	       }
	       else {
	          amenitiesStr = '<tr class="bw_result_name_row"> ';
	          amenitiesStr += '  <td colspan="2" align="left"> ';
	    	  amenitiesStr += ' &nbsp;    '; 
	          amenitiesStr += '  </td>';
	          amenitiesStr += '</tr>';
	          hotelList += amenitiesStr;
	       }
 	       
	       //more than one company
	       compStr="";
	       if (hotelInfo.hasMoreThanOneCompanys) {
 	          compStr+='<tr>';
	          compStr+='   <td colspan="3" class="Arial10"> ';
	          compStr+='    &nbsp;&nbsp;&nbsp;&nbsp; *There are more than one providers for this property.';
	          compStr+='   </td>';
	          compStr+='</tr>';
	       
	          hotelList += compStr;
	       }
	       
	       var iRowStyle = "bw_content_area_table_even_row";
	       for (var j=0; j<propertyCompanies.length; j++) {
    	          propertyCompany = propertyCompanies[j];
    	
    	          companyName = propertyCompany.bwCompany.companyName;
    	          priceLow = currencyFormatted(propertyCompany.lowPrice, propertyCompany.currency);
    	          priceHigh = currencyFormatted(propertyCompany.highPrice, propertyCompany.currency);
    	
    	          companySec += companyName + ":<br>" + priceLow + "-" + priceHigh;
    	          
 	          compDetailStr = '<tr class="' + iRowStyle + '">';
	          compDetailStr +='  <td colspan="3"> ';
	          compDetailStr +=' <table cellpadding="1" cellspacing="1"  width="100%" border="0">';
	          compDetailStr +='   <tr>'; 
		  compDetailStr +='    <td width="5"> &nbsp; </td>';
		  compDetailStr +='    <td  class="normal9" align="left"  colspan="2" nowarp>';
	 	  compDetailStr +='<b><a  href="/hotel/hotelselect.do?path=home&companyId='+propertyCompany.companyId+'&redirectURL='+propertyCompany.bwCompany.companyUrl+'">'+ propertyCompany.bwCompany.companyName + '</a></b>';
		  compDetailStr +='    </td>';
		  compDetailStr +='<td class="normal9" align="right" width="100"> ';
		  if (showPrice) {
		     compDetailStr +=priceLow + " -- " + priceHigh + "&nbsp;&nbsp;";
		  }
		  else {
		     compDetailStr +="";
		  }
		  compDetailStr +='   </td>';
		  compDetailStr +='   </tr>';
		  
		   //special offer
	          compDetailStr += '<tr class="' + iRowStyle + '">';
	          compDetailStr += '<td width="5"> &nbsp; </td>  <td align="left" colspan="2"  nowrap> 	</td>';
	          compDetailStr += '<td align="right" width="100">';	         	          
	          
	          selectURL = '/hotel/hotelselect.do?hotelCode='+propertyCompany.hotelCode;
	          selectURL += '&companyId='+propertyCompany.companyId; 

                  if (propertyCompany.brandGroupCode != "null") {
	             selectURL += '&brandCode='+propertyCompany.brandGroupCode;
	          }
	          
 	          if (hotelEntry.isAvailSearch) {
	             selectURL += '&checkInDate=' + hotelEntry.checkInDate;
                     selectURL += '&checkOutDate=' + hotelEntry.checkOutDate;
	          }
 	          
	          compDetailStr += '<a style="text-decoration:none" href="' + selectURL + '" target="_blank">';
	          compDetailStr += '   <font class="bw_select_link">&nbsp; Select &nbsp;</font>';								    
                  compDetailStr += '</a>';
			    
	          compDetailStr +='   </td>';
	          compDetailStr +='</tr>';
	          
	          compDetailStr +=' </table>';   
	          compDetailStr +='   </td>';
	          compDetailStr +='</tr>';
	          
	         
	          
	          if (iRowStyle == 'bw_content_area_table_even_row') {
	             iRowStyle = "bw_content_area_table_odd_row";
	          }
	          else {
	             iRowStyle = "bw_content_area_table_even_row";	
	          }
	          
	          hotelList += compDetailStr;
               }
	       
	 
     hotelList +=  '</table>' + 
         '</td>' + 
        '</tr>';
        
     hotelList += ''+
      '<tr>' +
       '<td  colspan="3">' +
	'&nbsp;'+
       '</td>'+
      '</tr>';
    
  }  //end for:i
} //end if:hotels
else {
  hotelList += "<tr><td> </td></tr>";
}

  var finalList = "";
  finalList += '<table cellpadding="0" width="100%" cellspacing="0" border="0">';
  finalList += hotelList;
  finalList += '</table>';
   
  //alert(finalList);
   
  document.getElementById("hotel_list").innerHTML = finalList;
}


/*************************************************************
   This function picks up the click and opens the corresponding info window
 */
function myclick(i) {      		 
  clickHotelNum = true;
  gmarkers[i].openInfoWindowHtml(htmls[i]);
}


/*************************************************************
   showNav: display previous/nexts
 */
function displayMapHotelList(myJson, showNav) {
  
  if (myJson.hasHotelResult) {   
     if (showNav) {  
     	showHotels=false;
        theNavigatorDisp(myJson);
     }
     displayHotelList(myJson, true);	
  }
  
  displayGoogleMap(myJson);
}

function displayGoogleMap(myJson) {
  if (GBrowserIsCompatible()) {
      map = new GMap2(document.getElementById("map"));       
      map.addControl(new GLargeMapControl());
      map.addControl(new GScaleControl());
      map.addControl(new GMapTypeControl());
      map.enableContinuousZoom();
      map.enableDoubleClickZoom();
      map.addControl(new SearchHotelControl()); 
      
      //zoom function
      GEvent.addListener(map, "zoomend", function(oldLevel, newLevel) {	
     	 isZoomend = true;              
         if (showHotels) {   
           retrieveHotels(map);	 
         }
      });
          
          
      //moveend
      GEvent.addListener(map, "moveend", function() {  
      	if (isZoomend) {
      	   isZoomend = false;
      	   return;	
        }         
        
        if (showHotels) {
            retrieveHotels(map);
        }
      });                  
         
      //fill markers
      fillHotelMarkers(myJson, map);      
   }
}  //end of load()
       
       
/****************************************************************
   fillHotelMarkersForRetrieval
 */       
function fillHotelMarkersForRetrieval(myJson, map, showPrice) {

       var bounds = new GLatLngBounds();
	
       //add hotels
       var baseIcon = new GIcon();       
       baseIcon.iconSize = new GSize(20, 20);       
       baseIcon.iconAnchor = new GPoint(9, 10);
       baseIcon.infoWindowAnchor = new GPoint(9, 2);
       baseIcon.infoShadowAnchor = new GPoint(18, 25);

       var mapCenter = map.getCenter();
       
       // Creates a marker whose info window displays the given index
       function createMarker(point, index, name, address, lowPrice, highPrice, smallImage, vBGColor, vFGColor, selectURL) {   
         var icon = new GIcon(baseIcon);
	 
	 var tooltip = index + "," + name + ": " + lowPrice;
	 
	 //'7CFC00', '000000'
	 var imageURL = "/hotel/icon?letter="+index;                               
         imageURL += "&bg=" + vBGColor + "&fg=" +vFGColor;
         
         icon.image = imageURL;         
         //var marker = new GMarker(point, icon);
         var marker = new GMarker(point, {icon:icon, title:tooltip});   //add tooltip
       
         // Show this marker's index in the info window when it is clicked  
         var range = "";
         
         if (showPrice) {
            range = lowPrice + " - "  +  highPrice;  
         }
         
         var html = "<table border=0>";
         html += "<tr>";
         if (IsNotEmpty(smallImage)) {
            html += "  <td>" + '<img src="'+smallImage +'" width="63" height="63" atl="hotel motel image"> ' + "</td>";
         }
         else {
            html += "  <td> </td>";
         }
         html += '  <td valign="top" class="f11">' + "<b>" + index +". " + name + "</b> <br>" + address + "<br><br>" + range;
         html += '<br><a style="text-decoration:none" href="' + selectURL + '" target="_blank"><font class="bw_select_link">&nbsp; Select &nbsp;</font></a>';
         html += " </td>";
         html += "</tr>";
         html += "</table>";
          
         //html = img + html + address;
        
         GEvent.addListener(marker, "click", function() {
            isZoomend = true;   //not retrieve hotel if it is the event of marker click
            marker.openInfoWindowHtml(html);
            //document.getElementById("sidebar").innerHTML = html;
         });
        
         	
        gmarkers[index] = marker;        
        htmls[index] = html;
        	 
        return marker;
      }
       
        
      var hotels = myJson.hotels;
      var hotelEntry = myJson.hotelSearchEntry;
      
      //var rl = hotels ? true : false; 
      //alert(rl);   => ture if there are hotels, otherwise false
    
      var hotelInfo;
      var pos = 0; //(myJson.megaInfo.pos-1)*myJson.megaInfo.size;  
      var lowPrice = "";
      var highPrice = "";
      var companyId;
      var propertyCompanies; 
      var propertyCompany;
      var hotelCode;
      var brandCode;
      
      
      var selectURL = '/hotel/hotelselect.do?';
    //if hotels is not empty
    if (hotels) {   
      for (var j=0; j<hotels.length; j++) {
        hotelInfo = hotels[j];      
        propertyCompanies = hotelInfo.bwPropertyCompanyList;
        //GLog.write(propertyCompanies + "," + propertyCompanies.length);
        
        for (var k=0; k<propertyCompanies.length; k++) {
       	   propertyCompany = propertyCompanies[k];
    	
    	   //get lowest price
    	   lowPrice = currencyFormatted(propertyCompany.lowPrice, propertyCompany.currency);
    	   highPrice = currencyFormatted(propertyCompany.highPrice, propertyCompany.currency);
    	   companyId = propertyCompany.companyId;
    	   hotelCode = propertyCompany.hotelCode;
    	   brandCode = propertyCompany.brandGroupCode;
    	   
    	   

    	   
    	   //GLog.write("j=" + j + ",priceLow=" + priceLow + "," + propertyCompanies.length);
        } //for:k
         
        selectURL = '/hotel/hotelselect.do?';
        selectURL += 'hotelCode='+hotelCode;
    	selectURL += '&companyId='+companyId;
    	if (propertyCompany.brandGroupCode != "null") {
	   selectURL += '&brandCode='+ brandCode;
	}
	   
        if (hotelEntry.isAvailSearch) {
	   selectURL += '&checkInDate=' + hotelEntry.checkInDate;
           selectURL += '&checkOutDate=' + hotelEntry.checkOutDate;
	}
	 
	 
      	var point = new GLatLng(hotelInfo.lat, hotelInfo.lng);  
      	var smallImage = hotelInfo.hotelSmallImageUrl;    
      	//GLog.write("j=" + j + ",priceLow=" + priceLow);
      	var marker = createMarker(point, pos+j+1,  hotelInfo.hotelName, hotelInfo.fullAddress, lowPrice, highPrice, smallImage,  		                  
    				   '7CFC00', '000000', selectURL);    				     				  
        map.addOverlay(marker);
        //bounds.extend(marker.getPoint());
      }	//for:j
   } //if:hotels
} //fillHotelMarkersForRetrieval

/*************************************************************
   fill hotels markerts, 
   [24.846565, -35.15625] world map
   Called by load()
   Input: map, myJson

 */
fillHotelMarkers = function (myJson, map) {
       var centerLat;
       var centerLng;
       var myScale;
       var mapCenter;
       var centerIcon = new GIcon();
        
       centerIcon.shadow = '/hotel/images/google_green_arrow_shadow.png';
       centerIcon.iconSize = new GSize(40, 40);
       centerIcon.shadowSize = new GSize(37, 34);
       centerIcon.iconAnchor = new GPoint(9, 34);
       centerIcon.infoWindowAnchor = new GPoint(9, 2);
       centerIcon.infoShadowAnchor = new GPoint(18, 25);
       centerIcon.image = "/hotel/images/google_green_arrow.png";
        
       if (!myJson.hasHotelResult) { 
       	   if (myJson.hasValidGeocode) {
             centerLat = myJson.radiusBean.lat;    
             centerLng = myJson.radiusBean.lng;
             myScale = 8; 
             
             mapCenter = new GLatLng(centerLat, centerLng);
             map.setCenter(mapCenter, myScale);
                      
             var centermarker = new GMarker(mapCenter, centerIcon);
             map.addOverlay(centermarker);
      	   	
       	   }
       	   else {
             centerLat = 39.83;  //24.846565,-35.15625       
             centerLng = -98.58;
             //map.setCenter(new GLatLng(39.83,-98.58),4);  //US//
             //map.setCenter(new GLatLng(24.846565,-35.15625),1);  //world map
             myScale = 4;       
      	     	       	   
             mapCenter = new GLatLng(centerLat, centerLng);
             map.setCenter(mapCenter, myScale);
             
             //map.setCenter(new GLatLng(34.032267, -84.193779), 11);
           }
           return;
       }
       
       centerLat = myJson.radiusBean.lat;    
       centerLng = myJson.radiusBean.lng;
       myScale = 10;
       
       mapCenter = new GLatLng(centerLat, centerLng);
       map.setCenter(mapCenter, myScale); 
              
       var bounds = new GLatLngBounds();
               
       var centermarker = new GMarker(mapCenter, centerIcon); 
       map.addOverlay(centermarker);
      	
      	
       //add hotels
       var baseIcon = new GIcon();       
       baseIcon.iconSize = new GSize(20, 20);       
       baseIcon.iconAnchor = new GPoint(9, 10);
       baseIcon.infoWindowAnchor = new GPoint(9, 2);
       baseIcon.infoShadowAnchor = new GPoint(18, 25);
       
       
       // Creates a marker whose info window displays the given index
       function createMarker(point, index, name, address, lowPrice, highPrice, smallImage, vBGColor, vFGColor, selectURL) {   
         var icon = new GIcon(baseIcon);
	 
	 var tooltip = index + "," + name + ": " + lowPrice;
	 
	 //'7CFC00', '000000'
	 var imageURL = "/hotel/icon?letter="+index;                               
         imageURL += "&bg=" + vBGColor + "&fg=" +vFGColor;
         
         icon.image = imageURL;         
         //var marker = new GMarker(point, icon);
         var marker = new GMarker(point, {icon:icon, title:tooltip});   //add tooltip
       
         // Show this marker's index in the info window when it is clicked  
         var range = lowPrice + " - "  +  highPrice;  
         var html = "<table border=0>";
         html += "<tr>";
         html += "  <td>" + '<img src="'+smallImage +'" width="63" height="63" atl="hotel motel image"> ' + "</td>";
         html += '  <td valign="top" class="f11">' + "<b>" + index +". " + name + "</b> <br>" + address + "<br><br>" + range + "</td>";
         html += "</tr>";
         html += ' <tr><td> </td> <td><a style="text-decoration:none" href="' + selectURL + '" target="_blank"><font class="bw_select_link">&nbsp; Select &nbsp;</font></a></td></tr>';
         
         html += "</table>";
           
          
         //html = img + html + address;
        
         GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(html);
            //document.getElementById("sidebar").innerHTML = html;
         });
        
         	
        gmarkers[index] = marker;        
        htmls[index] = html;
        	 
        return marker;
      }
       
        
      var hotels = myJson.hotels;
      var hotelEntry = myJson.hotelSearchEntry;
    
      var hotelInfo;
      var pos = (myJson.megaInfo.pos-1)*myJson.megaInfo.size;  
      var lowPrice = "";
      var highPrice = "";
      var propertyCompanies; 
      var propertyCompany;
      var hotelCode;
      var brandCode;
      
      
      var selectURL = '/hotel/hotelselect.do?';
    
    //if hotels is not empty
    if (hotels) { 
      for (var j=0; j<hotels.length; j++) {
        hotelInfo = hotels[j];      
        propertyCompanies = hotelInfo.bwPropertyCompanyList;
        //GLog.write(propertyCompanies + "," + propertyCompanies.length);
        
        for (var k=0; k<propertyCompanies.length; k++) {
       	   propertyCompany = propertyCompanies[k];
    	
    	   //get lowest price
    	   lowPrice = currencyFormatted(propertyCompany.lowPrice, propertyCompany.currency);
    	   highPrice = currencyFormatted(propertyCompany.highPrice, propertyCompany.currency);
    	   
    	   companyId = propertyCompany.companyId;
    	   hotelCode = propertyCompany.hotelCode;
    	   brandCode = propertyCompany.brandGroupCode;

    	   //GLog.write("j=" + j + ",priceLow=" + priceLow + "," + propertyCompanies.length);
        } //for:k
         
        selectURL = '/hotel/hotelselect.do?';
        selectURL += 'hotelCode='+hotelCode;
    	selectURL += '&companyId='+companyId;
    	if (propertyCompany.brandGroupCode != "null") {
	   selectURL += '&brandCode='+ brandCode;
	}
	   
        if (hotelEntry.isAvailSearch) {
	   selectURL += '&checkInDate=' + hotelEntry.checkInDate;
           selectURL += '&checkOutDate=' + hotelEntry.checkOutDate;
	}

        
      	var point = new GLatLng(hotelInfo.lat, hotelInfo.lng);  
      	var smallImage = hotelInfo.hotelSmallImageUrl;    
      	//GLog.write("j=" + j + ",priceLow=" + priceLow);
      	var marker = createMarker(point, pos+j+1,  hotelInfo.hotelName, hotelInfo.fullAddress, lowPrice, highPrice, smallImage,  		                  
    				   '7CFC00', '000000', selectURL);    				     				  
        map.addOverlay(marker);
        bounds.extend(marker.getPoint());
      } //for:j      
     } //if:hotels
 
      
      bestFitWithCenter(map, bounds, mapCenter);  
      
}  //fillHotelMarkers
  
  
/*************************************************************
   convert to currency 
 */
function currencyFormatted(amount, currencyCode)
{
	
  //alert("currencyCode="+currencyCode);
  var i = parseFloat(amount);
  if(isNaN(i)) { i = 0.00; }
  
  var minus = '';
  if(i < 0) { minus = '-'; }
     i = Math.abs(i);
     i = parseInt((i + .005) * 100);
     i = i / 100;
     s = new String(i);
     if(s.indexOf('.') < 0) { s += '.00'; }
     if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
     s = minus + s;
     
     if (currencyCode == "") {
     	s = "$" + s;
     }
     else if (currencyCode == "USD") {
     	s = "$" + s;
     }
     return s;
} // end of function CurrencyFormatted()


/**
 * retrive hotels from server and create markers
 * not nessary to use Marker manager
 * GLog.write("oldZoom=" + oldLevel + ", newZoom="+newLevel + ", lat=" + center.lat() + ", lng" +center.lng());
 */
function retrieveHotels(map) {
   var center = map.getCenter();
   var zoomLevel = map.getZoom();         
   var bounds = map.getBounds();
   var southWest = bounds.getSouthWest();
   var northEast = bounds.getNorthEast();	
   
   var xmlUrl ="/hotel/mapsearch.do?maxMarker=200&centerLat=" + center.lat() + "&centerLng="+ center.lng() +  "&minLat=" + southWest.lat() + "&minLng=" + southWest.lng() + "&maxLat=" + northEast.lat() + "&maxLng=" + northEast.lng();
   
   //GLog.write(xmlUrl);
   GDownloadUrl(xmlUrl, function(data, responseCode) {
      
     var myJson = eval('(' + data + ')');
      
     if (myJson.hasHotelResult) {   
     	theNavigatorDispAll(myJson);  	  
        displayHotelList(myJson, true);	
     }
     fillHotelMarkersForRetrieval(myJson, map, true);  
   });
   
} //retrieveHotels 


/*********************************************
  Hotel Search Button
*/



// A SearchHotelControl is a GControl buttons  
function SearchHotelControl() { }
SearchHotelControl.prototype = new GControl();

SearchHotelControl.prototype.initialize = function(map) {
   var container = document.createElement("div");
   var searchHotelDiv = document.createElement("div");
   this.setButtonStyle_(searchHotelDiv);
   container.appendChild(searchHotelDiv);
       
   var showTextNode =  document.createTextNode("Start Searching Hotels");
   var noshowTextNode =  document.createTextNode("Stop Searching Hotels");  
       
   //add button text
   if (showHotels) {
     searchHotelDiv.appendChild(noshowTextNode);         
   }
   else {
     searchHotelDiv.appendChild(showTextNode);
   }
         
      
   //click get hotels button
   GEvent.addDomListener(searchHotelDiv, "click", function() {
      if (showHotels) {
         searchHotelDiv.removeChild(noshowTextNode);
         searchHotelDiv.appendChild(showTextNode);        

         showHotels = false;
      }
      else {
         searchHotelDiv.removeChild(showTextNode);
         searchHotelDiv.appendChild(noshowTextNode);

         showHotels = true;  
      }
           
      if (showHotels) {
         retrieveHotels(map);
      }
      else {
         //remove markers
         //mgr.clearMarkers();
         map.clearOverlays();
      }
   });
      
   map.getContainer().appendChild(container);
   return container;
}

SearchHotelControl.prototype.getDefaultPosition = function() {
  return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(260, 6));
}
     
// Sets the proper CSS for the given button element.
SearchHotelControl.prototype.setButtonStyle_ = function(button) {
  //button.style.textDecoration = "underline";
  button.style.color = "#000000";
  button.style.backgroundColor = "white";
  button.style.font = "small Arial";
  button.style.fontSize = "12";
  button.style.fontWeight= "bold";
  button.style.border = "2px solid black";
  button.style.padding = "1px";
  button.style.marginBottom = "4px";
  button.style.textAlign = "center";
  button.style.width = "14em";
  button.style.cursor = "pointer";
}    

