    var map = null;
    var compareCheckList = new Array();
    var markerPoints = new Array();
    var markerPointsAddress = new Array();
    var markerPointsCoords = new Array();
    var iconIndex = 0;
    var listTypeName = '';
    var geocoder = new GClientGeocoder();
    var gmarkers = [];
    var inputArr = new Array();
	var mapIndex = 0;
	var data = '';

    // shadow, icon dimensions, etc.
    var baseIcon = new GIcon(G_DEFAULT_ICON);
    baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
    baseIcon.iconSize = new GSize(20, 34);
    baseIcon.shadowSize = new GSize(37, 34);
    baseIcon.iconAnchor = new GPoint(9, 34);
    baseIcon.infoWindowAnchor = new GPoint(9, 2);

    function setCompare(obj){              
      if(obj.checked==true){
        compareCheckList[compareCheckList.length] = obj.value;         
      }else{
        for(i =0 ; i < compareCheckList.length ; i++){
          if(compareCheckList[i] == obj.value ){
            delete compareCheckList[i];
          }// End if
        } //End for
      }//End else       
    }

    function initialize() {
      if (map == null) {                

          if (GBrowserIsCompatible()) {
            map = new GMap2(document.getElementById("map_canvas"));
            //map.setCenter(new GLatLng(37.4419, -122.1419), 13);
            var mapControl = new GMapTypeControl();
            map.addControl(mapControl);
            map.addControl(new GLargeMapControl());
            map.setMapType(G_HYBRID_MAP);
          }//End if
        }
    }
    function showAddress(address) {
      geocoder.getLatLng(
        address,
        function(point) {
          if (!point) {
            if(addressString(data[mapIndex]) == address){
                markerPoints[mapIndex] = 'undefine';
                if(mapIndex == data.length -1){
                  setCenter();
                }else{
                  showAddress(addressString(data[++mapIndex]));
                }
              }           
          }else {			  
              if(addressString(data[mapIndex]) == address){
                var letteredIcon = new GIcon(baseIcon);
                letteredIcon.image = "/images/gmap_icons/marker" + (mapIndex+1) + ".png";
                // Set up our GMarkerOptions object

                markerOptions = { icon:letteredIcon };
                var marker = new GMarker(point, markerOptions);
                map.addOverlay(marker);
                var thisMapIndex = mapIndex;
                GEvent.addListener(marker, "click", function() {
                	var myHtml = data[thisMapIndex].MARKER_HTML;
                    map.openInfoWindowHtml(point, myHtml);
                });
                markerPoints[mapIndex] = marker;
                if(mapIndex == data.length -1){
                  setCenter();							
                }else{
                  showAddress(addressString(data[++mapIndex]));
                }              
            }								
          }
        }
      );		
    }
            function showCoords(coords) {

            if (coords == 'undefine') {
                markerPoints[mapIndex] = 'undefine';
                if(mapIndex == markerPointsCoords.length -1){
                    setCenter();
                }else{
                    showCoords(markerPointsCoords[++mapIndex]);
                }

            } else {
                var point = new GLatLng(coords['latitude'], coords['longitude']);
                var letteredIcon = new GIcon(baseIcon);
                letteredIcon.image = "/images/gmap_icons/marker" + coords['number'] + ".png";
                // Set up our GMarkerOptions object
                markerOptions = {
                    icon:letteredIcon
                };
                var marker = new GMarker(point, markerOptions);
                map.addOverlay(marker);
                GEvent.addListener(marker, "click", function() {
                    var myHtml = coords['html'];
                    map.openInfoWindowHtml(point, myHtml);
                });
                markerPoints[mapIndex] = marker;
                if(mapIndex == markerPointsCoords.length -1){
                    setCenter();
                }else{
                    showCoords(markerPointsCoords[++mapIndex]);
                }
            }
        }
    function setCenter(){
    	bounds = new GLatLngBounds();
    	//find the first point and set the center around it. 
    	for(i=0 ; i< markerPoints.length ; i++){
    		if(typeof(markerPoints[i]) == 'object' && markerPoints != "undefine"){
    			map.setCenter(markerPoints[i].getLatLng(), 13);
    			break;
    		}
    	}

    	//loop through the rest of the points extending the bounds to include each of them.
    	for(i=0 ; i< markerPoints.length ; i++){
    		if(typeof(markerPoints[i]) == 'object' && markerPoints != "undefine"){
    			//latlng = map.getCurrentMapType().getProjection().fromPixelToLatLng(markerPoints[i],map.getZoom()) 
    			//GProjection.fromPixelToLatLng(markerPoints[i]);
    			bounds.extend(markerPoints[i].getLatLng());
                        document.console = "centering: "+markerPoints[i].getLatLng();
    		}
    	}
    	//use the bounds object to reset the map zoom and panning.
        map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));	
				 
    }
      
    function removeMarker(){
      for(i=0 ; i< markerPoints.length ; i++){
        if(typeof(markerPoints[i]) == 'object'){
          var mar = markerPoints[i];
          mar.remove();
          markerPoints[i] = null;  
        }
      }
    }
   

    function parseInputVal(){
      var listCatID = document.listings.listCatID;
      var listSubCatID = document.listings.listSubCatID;
      var listID = document.listings.listID;
      var listRegionID = document.listings.regionID;
      var markerID = document.listings.markerID;
      var listIcons = document.listings.listIcons;
      if(inputArr.length >0){
        for(var i in inputArr){
          var item = inputArr[i];
          listCatID[i].value = item[0];
          listSubCatID[i].value = item[1];
          listID[i].value = item[2];
          listRegionID[i].value = item[3];
          markerID[i].value = item[4];
          listIcons[i].value = item[5];
        }
      }

      if(listID.length != undefined){
        if(inputArr.length<listID.length){
          for(var i=inputArr.length; i<listID.length; i++){
            listCatID[i].value = 0;
            listSubCatID[i].value = 0;
            listID[i].value = 0;
            listRegionID[i].value = 0;
            markerID[i].value = -1;
            listIcons[i].value = -1;
          }
        }
      }
    }
    function buildMarker(){
      
      //sAddress = addressString(data[0]);
      if (markerPoints.length == 0) {
          initialize();
          if (map) {              
               map.clearOverlays();
               markerPoints = new Array();
          }
          if(document.getElementById('mapAddress')){
              eval(document.getElementById('mapAddress').innerHTML);              
          }
         if(markerPointsCoords.length>0){
              showCoords(markerPointsCoords[0]);
               
          }
      }
    }
    
    function addressString(datain) 
	    {
	    return datain.ADDR1+' '+datain.ADDR3+' '+datain.CITY+', '+datain.STATE+' '+datain.ZIP
	    }
    
    function showMarkerWindow(i,html){
      if(typeof(markerPoints[i]) == 'object'){
        var mar = markerPoints[i];
        mar.openInfoWindowHtml(html);
      }else{
        alert("No Location Found!");
      }
    }

   
    function enable_marker_icon(state){        
      document.getElementById('map_canvas').style.display=state;
      for(var i=0; i < markerPoints.length; i++){
        if(document.getElementById('marker_icon' + i)){
          document.getElementById('marker_icon' + i).style.display=state;
        }
      }                
    }
   
   var display_cat_div = "";
    function waitToLoad()
    {
      document.getElementById("preloadingGraphic").style.display = "block";
      document.getElementById("outer_listing_layer").style.display = "none";      
    }
    
    function isLoaded()
    {      
      document.getElementById("preloadingGraphic").style.display = "none";
      document.getElementById("outer_listing_layer").style.display = "block";     
    }
    function getListingRecords(div_id, cat_id, page_num, frmSearch, urlCat, subCat,regions,amenities, frmSearchType){
      
      /*var strSubCat = "";
      if(subCat!=-1){
        for(i=0; i<subCat.length; i++){
          strSubCat += "&chkSubCat[]="+subCat[i];
        }  
      }*/
      listTypeName = urlCat;
      
      if(div_id!=-1){
        show(div_id);  
      }
      
      waitToLoad();
      if(frmSearch==-1){
        frmSearch = "";
      }
      
      //Added condition for bubble loading if map is active By Bharathi
      if(document.getElementById('map_canvas').style.visibility == 'visible'){
        map_page = 1;
      }else{
      map_page = 0;
      }
      
      if(page_num == -1){
        page_num = "";
      }
      
      if(urlCat== -1){
        urlCat = "";
      }
      if(subCat== -1){
        subCat = "";
      }
      if(regions== -1){
        regions = "";
      }
      if(amenities== -1){
        amenities = "";
      }
      //var url = "listings.php?page="+page_num+"&"+frmSearchType+"="+frmSearch+"&mappage="+map_page+"&cat="+urlCat+strSubCat;
      var url = "listings.php?page="+page_num+"&"+frmSearchType+"="+frmSearch+"&mappage="+map_page+"&cat="+urlCat+"&sub="+subCat+"&region="+regions+"&amenity="+amenities;

      CallAJax(1,url,null,"outer_listing_layer");      
    }
    /*function getListingRecords(div_id, cat_id, page_num, frmSearch, urlCat, subCat, frmSearchType){
      var strSubCat = "";
      if(subCat!=-1){
        for(i=0; i<subCat.length; i++){
          strSubCat += "&chkSubCat[]="+subCat[i];
        }  
      }
      listTypeName = urlCat;
      
      if(div_id!=-1){
        show(div_id);  
      }
      waitToLoad();
      if(frmSearch==-1){
        frmSearch = "";
      }
      
      //Added condition for bubble loading if map is active By Bharathi
      if(document.getElementById('map_canvas').style.visibility == 'visible'){
        map_page = 1;
      }else{
      map_page = 0;
      }
      
      if(page_num == -1){
        page_num = "";
      }
      
      if(urlCat== -1){
        urlCat = "";
      }
      var url = "listings.php?page="+page_num+"&"+frmSearchType+"="+frmSearch+"&mappage="+map_page+"&cat="+urlCat+strSubCat;
      
      CallAJax(1,url,null,"outer_listing_layer");     
    }*/

   
    function is_array(input){
      return typeof(input)=='object'&&(input instanceof Array);
    }
    
  
    function getCatId(filterCat, filterSubCat,view_all){
      
      var listCatID = document.listings.listCatID;
      var listSubCatID = document.listings.listSubCatID;
      var listID = document.listings.listID;
      var listRegionID = document.listings.regionID;
      var markerID = document.listings.markerID;
      //for compare
	  if(filterCat==2 || filterCat==12)
      {
        document.getElementById('comparebuttonup').innerHTML ='<input type="image" src="images/compare.jpg" id="compare_list_top" name="compare" onMouseOver="document.getElementById(\'compare_list_top\').src = \'images/compare-btn.gif\';" onMouseOut="document.getElementById(\'compare_list_top\').src = \'images/compare.jpg\';" onclick="return checkProperty()" width="83" height="18"  value="compare" style="cursor: pointer; cursor: hand;">';
        document.getElementById('comparebuttondown').innerHTML ='<input type="image" src="images/compare.jpg" id="compare_list_down" name="compare" onMouseOver="document.getElementById(\'compare_list_down\').src = \'images/compare-btn.gif\';" onMouseOut="document.getElementById(\'compare_list_down\').src = \'images/compare.jpg\';" onclick="return checkProperty()" width="83" height="18"  value="compare" style="cursor: pointer; cursor: hand;">';
        for(var i=0; i<listID.length; i++){
          if(listID[i].value!=0 && listID[i].value!=''){
            document.getElementById(listID[i].value).innerHTML ='<input type="checkbox" name="list[]" value="'+listID[i].value+'" id="'+listID[i].value+'" onclick="setCompare(this);"></input>Compare&nbsp;&nbsp;';
          }
        }
      }
      else
      {        
        document.getElementById('comparebuttonup').innerHTML ='';
        document.getElementById('comparebuttondown').innerHTML ='';       
        for(var i=0; i<listSubCatID.length; i++){
          if(listID[i].value!=0 && listID[i].value!=''){            
            document.getElementById(listID[i].value).innerHTML ='';            
          }
        }
      }
      //Disabled No Results div.. Added by bharathi
      var noList = document.getElementById("no_listings");
      noList.style.display = 'none';
      var random_listingids = new Array();
      if(filterSubCat.length > 0){
        var noListings = 0;
        var ran_index = 0;
        for(var i=0; i<listSubCatID.length; i++){
          var flag = 0;
          for(var SubCat in filterSubCat){
            if(filterSubCat[SubCat][1] && filterSubCat[SubCat][1]!="" && filterSubCat[SubCat][0]!="" && filterSubCat[SubCat][2]=="" && filterSubCat[SubCat][3]==""){
              
              if(listSubCatID[i].value == filterSubCat[SubCat][0]
                && listRegionID[i].value == filterSubCat[SubCat][1]
                ){
                  
                flag = 1;
              }                
            }else if(filterSubCat[SubCat][1] && filterSubCat[SubCat][1]!="" && filterSubCat[SubCat][0]=="" && filterSubCat[SubCat][2]=="" && filterSubCat[SubCat][3]==""){
              if(listRegionID[i].value == filterSubCat[SubCat][1] && listCatID[i].value == filterCat){
                flag = 1;
              }
            }
            else if(filterSubCat[SubCat][0] && filterSubCat[SubCat][0]!="" && filterSubCat[SubCat][2]=="" && filterSubCat[SubCat][3]==""){
              if(listSubCatID[i].value == filterSubCat[SubCat][0]){
                flag = 1;
              }  
            }
          }
          if(flag == 1){
            if(listID[i].value!=0 && listID[i].value!=''){
              var listdivID = document.getElementById("listing_"+listID[i].value);
              listdivID.style.display = 'block';
              random_listingids[ran_index] = listID[i].value;
              ran_index++;
            }
            
            // Marker related Changes 
            var markIndex = markerID[i].value;
            if(markIndex != -1){
              if(typeof(markerPoints[markIndex]) == 'object'){
                var mar = markerPoints[markIndex];
                mar.show();               
              }
            }

            noListings = 1;
          }else{
            if(listID[i].value!=0 && listID[i].value!=''){
              var listdivid = document.getElementById("listing_"+listID[i].value);
              listdivid.style.display = 'none';
              if(compareCheckList.length>0){
                for(var z =0 ; z < compareCheckList.length ; z++){
                  if(compareCheckList[z] == listID[i].value){
                    if(document.getElementById(compareCheckList[z]))
                    {
                      document.getElementById(compareCheckList[z]).checked = false;
                    }
                    delete compareCheckList[z];
                  }
                }
              }
            }
            
            var markIndex = markerID[i].value;
            if(markIndex != -1){
              if(typeof(markerPoints[markIndex]) == 'object'){
                var mar = markerPoints[markIndex];
                mar.hide();               
              }
            }
          }
        }
        if(noListings == 0)
        {
          noList.style.display = 'block';
        }
      }else{
        var noListings = 0;
        //added catID condition By Bharathi
        if(filterCat!=-1){
          var ran_index1 =0;
          for(var i=0; i<listCatID.length; i++){
            if(listCatID[i].value == filterCat)
            {
              if(listID[i].value!=0 && listID[i].value!=''){
                var divID1 = document.getElementById("listing_"+listID[i].value);
                divID1.style.display = 'block';
                random_listingids[ran_index1] = listID[i].value;
                ran_index1++;
              }
              var markIndex = markerID[i].value;
              if(markIndex != -1){
                if(typeof(markerPoints[markIndex]) == 'object'){
                  var mar = markerPoints[markIndex];
                  mar.show();               
                }
              }
              if(view_all==1)
              {
               uncheckList(i);
              }
              noListings =1;
            }else
            {
              if(listID[i].value!=0 && listID[i].value!=''){
                var divID2 = document.getElementById("listing_"+listID[i].value);
                divID2.style.display = 'none';
              }
              var markIndex = markerID[i].value;
              if(markIndex != -1){
                if(typeof(markerPoints[markIndex]) == 'object'){
                  var mar = markerPoints[markIndex];
                  mar.hide();               
                }
              }
              uncheckList(i);
            }
          }
          if(noListings == 0)
          {
            noList.style.display = 'block';
          }  
        }else{
          var ran_index2 =0;
          for(var i=0; i<listSubCatID.length; i++){
            if(listID[i].value!=0 && listID[i].value!=''){
              var divID3 = document.getElementById("listing_"+listID[i].value);
              divID3.style.display = 'block';
              random_listingids[ran_index2] = listID[i].value;
              uncheckList(i);
            }
          }
          show(-2);
        }
      }
      //Added code for random listing spotlight
      if(random_listingids.length>0)
      {
        randno = Math.floor ( Math.random() * random_listingids.length );
        var tempArr = document.getElementById('listing_'+random_listingids[randno]).innerHTML;
        var randomarr = tempArr.split('<INPUT');
        var randomarr1 = randomarr[0].split('<input');
        var randomarr2 = randomarr1[0].replace(/DetailsDIV/, "");
        var randomarr3 = randomarr2.replace(/visible;/, "hidden;");
        var randomarr4 = randomarr3.replace(/block;/, "none;");
        document.getElementById('random_listing').innerHTML = '<div ><span class="cmsSubHeading">Listings Spotlight</span>'+randomarr4+'</div></div></div></tr></td></table>';
      }
      else
      {
        document.getElementById('random_listing').innerHTML='';
      }
    } 
    