var slider1, slider2, slider3, slider4, slider5, slider6, slider7, slider8,slider13;
var url;
var arreglo = new Array();
var arreglo1 = new Array();    
var bounds, southWest, northEast;
var map;
var band=0;
var tooltip;
var searchshape = false;
var lat = new Array();
var lon = new Array();
var html = new Array();
var label = new Array();
var cadena ="";
var gmarkers = [];
var polygon;
var pager_1;

function blockUI(){
	jQuery.blockUI("<h1 class=\"wait_load\"'><img src=\"/jscripts/images/ajax-loader.gif\" /> Just a moment...</h1>");
}

function unblockUI(){
	jQuery.unblockUI();	
}

function inivariable(){
    var i;
        var k=0;
            
        for (i=1900;i<=2009;i++)
            {arreglo[k]=i;
               k++;}
        k=0;
        for (i=0;i<=3000000;i+=1000)
            {arreglo1[k]=i;
               k++;}
}

function ToggleContainer(){
	jQuery(this).toggleClass("boxexpanded");
    jQuery(this).next().slideToggle();  
	
 }  

function showTooltip(marker) {
        tooltip.innerHTML = marker.tooltip;
        var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.getBounds().getSouthWest(),map.getZoom());
        var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
        var anchor=marker.getIcon().iconAnchor;
        var width=marker.getIcon().iconSize.width;
        var pos = new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(offset.x - point.x - anchor.x + width,- offset.y + point.y +anchor.y));
        pos.apply(tooltip);
        tooltip.style.visibility="visible";
      }

function createMarker(point,name,html) {
        var marker = new GMarker(point);
        // === store the name so that the tooltip function can use it ===
        marker.tooltip = '<div class="tooltip">'+html+'</div>';
        //GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); });
        GEvent.addListener(marker,"mouseover", function() { showTooltip(marker); });
        GEvent.addListener(marker,"mouseout", function() { tooltip.style.visibility="hidden" });
        return marker;
    }
    
function getbounds(){
        bounds = map.getBounds();
        southWest = bounds.getSouthWest();
        northEast = bounds.getNorthEast();    
        
        var current = jQuery("#bound").val();
        if(current.length <= 0) {
            jQuery("#bound").val(southWest);
        }else {
            jQuery("#bound").val("");
        }
}

function loadMap() {
        // Load Google Map
          if (GBrowserIsCompatible()) {
                    
            tooltip = document.createElement("div");
            document.getElementById("mapui").appendChild(tooltip);
            tooltip.style.visibility="hidden";

                       
            var bounds = new GLatLngBounds();        
                                    
            // Request xml data
            GDownloadUrl(url, function(data, responseCode) {            
                    var xmlDoc = GXml.parse(data);
                    var htmlside = "";
                    // obtain the array of markers and loop through it
                    var markers = xmlDoc.documentElement.getElementsByTagName("marker");
                    var pager = xmlDoc.documentElement.getElementsByTagName("pager");
                    var perpage = 1;
                    pager_1 = pager;
                    
                    init_eventos_paginacion();
                    
                    if(searchshape){
                        for (var i = 0; i < markers.length; i++) 
                        {   
                            // obtain the attribues of each marker
                            var lat = parseFloat(markers[i].getAttribute("lat"));
                            var lng = parseFloat(markers[i].getAttribute("lng"));
                            
                            if(lat != '' && lng != '') {
                                
                            var point = new GLatLng(lat,lng);
                            var html = markers[i].getAttribute("html");
                            var label = markers[i].getAttribute("label");
                            var tool = markers[i].getAttribute("tooltip");

                            if(polygon.Contains(point)) //functiona
                            {    
                                  map.addOverlay(new GMarker(point));
                                  var marker = createMarker(point,label,tool);
                                    map.addOverlay(marker);
                                    bounds.extend(point);
                                    if(perpage <= 10){
                                    	htmlside += html + '<br clear="all">';
                                    }
                                    
                                    perpage++;
                            }
                            }
                            
                        }//found all the points
                        
                        
                    }else{
                    
                    for (var i = 0; i < markers.length; i++) {
                        // obtain the attribues of each marker
                        var lat = parseFloat(markers[i].getAttribute("lat"));
                        var lng = parseFloat(markers[i].getAttribute("lng"));
                        
                        if(lat != '' && lng != '') {
                            var point = new GLatLng(lat,lng);
                            var html = markers[i].getAttribute("html");
                            var label = markers[i].getAttribute("label");
                            var tool = markers[i].getAttribute("tooltip");                                        
                        
                        // create the marker
                            var marker = createMarker(point,label,tool);
                            map.addOverlay(marker);
                            // ==== Each time a point is found, extent the bounds to include it =====
                            bounds.extend(point);
                            htmlside += html + '<br />';
                        
                        }
                            
                    }
                    }

                    htmlside +=pager[0].getAttribute("page");                    
                    map.setZoom(map.getBoundsZoomLevel(bounds));                    
                    jQuery("#fieldset3").html(htmlside);            
                    map.setCenter(bounds.getCenter());
                    addPageHandlers();
                    jQuery.unblockUI();    
                    // pegar una function a cada link de navegation.
                });    
                                                    
          }
        else {
            alert("Sorry, the Google Maps API is not compatible with this browser");
        }    
    }// end function
    
    
       
    function clearmap()
    {
        map.clearOverlays();
        lat1=[]; 
        long1=[];
        pnts=[];
        lat=[];
        lon=[];
        html=[];
        label=[];
        j=0;
    }
    
    function addPropertyLink(){
        jQuery(".contborder").click(function() {
            var mlsid = jQuery(this).attr('id').val();
        
        return false;
        });
    
    }
    
    function getListing(mlsnumber) {        
        var url = '/apps/api/map-sothebys-view.php?mlsid=' + mlsnumber+'&js=1';
        jQuery("#cma").tabs( "select" , 1 ) // triggers view tab
        jQuery("#continformation").load(url);
    }
    
    function initSliders(){
        
        var handle = ['handle1','handle-1'];
           slider1 = new Control.Slider(handle, 'track1', {
           range: $R(1000,99000000),
           sliderValue: [1000,10000000],
        onSlide: function(v) {$('mnprice').value = (v[0]).toFixed(0); $('mxprice').value = (v[1]).toFixed(0);},
        onChange: function(v) {$('mnprice').value = (v[0]).toFixed(0); $('mxprice').value = (v[1]).toFixed(0);}
        ,restricted: true
        });     //end slider
           
           slider1.options.maximum = 99000000; 
        
           var handle3 = ['handle3','handle-3'];
        slider3 = new Control.Slider(handle3, 'track3', {
        range: $R(0,5000),
        increment: 10,
        values: $R(0,5000),
        sliderValue: [0,5000],
        onSlide: function(v) {$('mnliving').value = (v[0]).toFixed(0);$('mxliving').value = (v[1]).toFixed(0);},
        onChange: function(v) {$('mnliving').value = (v[0]).toFixed(0);$('mxliving').value = (v[1]).toFixed(0);}
        ,restricted: true
        });
        
        var handle4 = ['handle4','handle-4'];
        slider4 = new Control.Slider(handle4, 'track4', {
        range:$R(0,10),
        increment: 1,
        values: $R(0,10),
        sliderValue:[0,10],
        onSlide: function(v) {$('bed').value = (v[0]).toFixed();$('beds').value = (v[1]).toFixed();},
        onChange: function(v) {$('bed').value = (v[0]).toFixed();$('beds').value = (v[1]).toFixed();}
        ,restricted: true
        });
        
        var handle5 = ['handle5','handle-5'];
        slider5 = new Control.Slider(handle5, 'track5', {
        range: $R(0,10),
        increment: 1,
        values:$R(0,10),
        sliderValue:[0,10],
        onSlide: function(v) {$("bath").value = (v[0]).toFixed();$("baths").value = (v[1]).toFixed();},
        onChange: function(v) {$("bath").value = (v[0]).toFixed();$("baths").value = (v[1]).toFixed();}
        ,restricted: true
        });
        
        var handle6 = ['handle6','handle-6'];
        slider6 = new Control.Slider(handle6, 'track6', {
        range: $R(1,365),
        increment: 1,
        values:$R(1,365),
        sliderValue:[1,365],
        onSlide: function(v) {$('day').value = (v[0]).toFixed();$('dayf').value = (v[1]).toFixed();},
        onChange: function(v) {$('day').value = (v[0]).toFixed();$('dayf').value = (v[1]).toFixed();}
        });
        
        var handle7 = ['handle7','handle-7'];
        slider7 = new Control.Slider(handle7, 'track7', {
        range: $R(1900,2009),
        increment: 10,
        values:$R(1900,2009),
        sliderValue: [1900,2009],
        onSlide: function(v) {$('yearini').value = v[0]; $('yearfin').value = v[1];},
        onChange: function(v) {$('yearini').value = v[0];$('yearfin').value = v[1];}
        ,restricted: true
        });
        
        var handle11 = ['handle11','handle-11'];
        slider11 = new Control.Slider(handle11, 'track11', {
        range:$R(0,5),
        increment: 1,
        values: $R(0,5),
        sliderValue:[0,5],
        onSlide: function(v) {$('gs').value = (v[0]).toFixed();$('gss').value = (v[1]).toFixed();},
        onChange: function(v) {$('gs').value = (v[0]).toFixed();$('gss').value = (v[1]).toFixed();}
        ,restricted: true
        });
        
        var handle13 = ['handle13','handle-13'];
        slider13 = new Control.Slider(handle13, 'track13', {
            range: $R(1,100),
            increment: 1,
            values:$R(1,100),
            sliderValue: [1,100],
            onSlide: function(v) {$('porcent').value = (v[0]); $('porcent1').value = (v[1]);},
            onChange: function(v) {$('porcent').value = (v[0]);$('porcent1').value = (v[1]);}
            ,restricted: true
            });
        
    }        
    
     function initialize() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("mapui"));
        map.setCenter(new GLatLng(maplat, maplong), 11);
        map.setUIToDefault();
        map.addControl(new TextualZoomControl());
      }
    }
    
     
    /*........Estamos terminado esta seccion .*/
    
    function init_eventos_paginacion(){
        var html = pager_1[0].getAttribute("page");
        //alert(html);
    }
            
     function setSliderValue(slider,value,handle) {
                // due to onChange code above we need this or 
                // a 0 will be put in the text box when you delete the value
         
             if(value=="") return;
             
             if(isNaN(value)) return;
             
             switch(slider)
             {
             case 1:
                 slider1.setValue(value,handle);
                 break;
             case 3:
                 slider3.setValue(value,handle);
                 break;
             case 4:
                 slider4.setValue(value,handle);
                 break;
             case 5:
                 slider5.setValue(value,handle);
                 break;
             case 6:
                 slider6.setValue(value,handle);
                 break;
             case 7:
                 slider7.setValue(value,handle);
                 break;
             case 11:
                 slider11.setValue(value,handle);
                 break;                 
             case 8:
                 if(value >0)
                     value = value /100;
                 slider13.setValue(value,handle);
                 break; 
             }
    }

    function LoadSearch()
    {
    
        var yearini =jQuery("#yearini").val();
         var yearfin = jQuery("#yearfin").val();             
         
         if(yearini >yearfin){
              alert('Date Range Invalid');
             jQuery("#yearfin").focus();
            return;
        }
         
         else
        {
            blockUI();                 
              var formdata = jQuery("#form").serialize();
              
              if(searchshape){
                  
                  var pointers = [];
                 var sum =0;
                 var sum1=0;
                 var temp = 0;
                 var k =0;
                 j=0;
                
                 for(var i=0; i < pnts.length ; i +=2)
                 {
                     lat1[j] = pnts[i];
                     long1[j] = pnts[i+1];     
                     j++;
                 }             
                 
                 lat1.sort(sortNumber);
                    long1.sort(sortNumber);
                        
                 var minsearch = lat1[0] + ',' + lat1[j-1];     
                 var maxsearch = long1[0] + ',' + long1[j-1];
                  
                  var data1 = '&sw='+minsearch+'&ne='+maxsearch;
                  url = "/apps/api/find-by-shape.php?"+formdata+data1;
                  
              }else {
                  url = "/apps/api/getkml.php?" + formdata;
              }
           
              blockUI(); 
              loadMap();
              jQuery('#container-tabs').tabs( "select" , 1 ); // triggers third tab                                  
              //jQuery('#cma').tabs( "select" , 1 ); // triggers third tab
              //jQuery(document).unload(GUnload());     
         }         
             
    }
    
    
    function addPageHandlers() {
        jQuery("#paging p > a").click(function() {
            var href = jQuery(this).attr('href');
            
            page_no = href.substring(href.lastIndexOf('=')+1);
            if(page_no > 0)
                jQuery("#pagenumber").attr("value",page_no);
            else
                jQuery("#pagenumber").attr("value",0);                            
            
            LoadSearch();
                        
            return false;
        });
    }
    
    
    jQuery(document).ready(function()
    {
             //inicializacion de variables array a traves de una funcion..
             inivariable();
             initSliders();
             initialize();
             
            jQuery('.box').click(ToggleContainer);
             
            jQuery("#advanced").click(function(){
                jQuery("#moresearch").slideToggle('slow');
            }); //end advanced search click event
                       
            jQuery("#btnmapsearch").click(function(){  
                LoadSearch(); 
                //setTimeout("init_eventos_paginacion",15000);                              
            });
             
            jQuery("#cma").tabs();
            jQuery("#cma1").tabs();
            
            jQuery().ajaxStop(function() {
//              // "Zebra stripe" table rows
//              jQuery(".stripeMe tbody tr").mouseover(function() {$(this).addClass("over");}).mouseout(function() {$(this).removeClass("over");});
//              jQuery(".stripeMe tbody tr:odd").addClass("alt");

             jQuery.unblockUI();        
                        
            }); //end AjaxStop
            
        }); //end document ready
