﻿                          

var Search = 
{ 
    // the t-parameter in the URL: properties, wheels, jobs or classifieds 
     searchType:null, 
    submit: function() {
    
        searchType = $F('t');
        this.searchType = searchType;
    
        // check if min price is <= max price
        var minPrice = $F('ddlMin');
        var maxPrice = $F('ddlMax');
        
        if( minPrice != '' && maxPrice != '' && parseInt( minPrice ) > parseInt( maxPrice ) ) { 
            
            var iMinPrice = parseInt( minPrice );
            var iMaxPrice = parseInt( maxPrice );
        
            if( iMaxPrice > 0 && iMinPrice > iMaxPrice ) { 
                alert( 'Please select a minimum price lower than or equal to the maximum price you specified.' );
                return false;
            }
        }   
        
        if( this.searchType == 'classifieds' ) { 
            
            // if a subclass has been chosen, that's the one that gets submitted
            // so we disable the main class dropdown
            if( $F('ddlSubClass') != '' ) { 
                $('ddlClass').disabled = true;
            }
        }
        else if( this.searchType == 'properties' ) { 
     
            // if a property type has been chosen
            // we disable the sale type options
            if( $F('ddlPropType') != '' ) {
                this.uncheckInputs( 'ct', true );
            }          
        }
          
        // disable fields (basically just to get cleaner URLs)   
        this.clearFields();
         //Start: Submit method altered for setting clean url Jobs Cr
         //    Author: Monisha Goyal
//         //    Date:   15-June-2011
        if( this.searchType == 'jobs' ) { 
            //called for clean url
           this.searchforJobs();
           
        }
        else
        {
            $('search_form').submit();
            return true;
       }
        //End: Submit method altered for setting clean url Jobs Cr
         //    Author: Monisha Goyal
         //    Date:   15-June-2011
    },
    
        
    // remove data from irrelevant fields
    clearFields: function() { 
        
        this.clearField( 'txtKeywords' );
        this.clearField( 'ddlMin');
        this.clearField( 'ddlMax'); 
//        this.clearField( 'min_price' );
//        this.clearField( 'max_price' );
        
        if( this.searchType == 'properties' ) {
            this.clearField( 'country' );
            this.clearField( 'cty' ); 
            //start: added by Vibhakar on 27Dec2010 for Location Structure Revision CR
            if(document.getElementById('cty').value == 'Others') $('cty').disabled = true;//disabled 'cty' if 'Others' selected in 'Country-City' ddl 
            //end: added by Vibhakar on 27Dec2010 for Location Structure Revision CR          
            this.clearField( 'AreaType');
//            this.clearField( 'area');
            this.clearField('LocalityType');
//             this.clearField('locality');
            this.clearField( 'ddlBeds');
            this.clearField( 'ddlPropType');            
//            this.clearField( 'min_bedrooms');
        }
        else if( this.searchType == 'jobs' ) {
            this.clearField( 'ddlIndustry' );
            this.clearField( 'ddlLocation');
//            this.clearField( 'ct' );
//            this.clearField( 'pub' );            
        } 
        else if ( this.searchType == 'wheels' ) { 
            this.clearField( 'ddlVehicleType' );
            this.clearField( 'ddlYear');
            this.clearField( 'ddlMake');
            this.clearField( 'ddlModel');
//            this.clearField( 'ct' );
//            this.clearField( 'year' );
//            this.clearField( 'make' );
//            this.clearField( 'model' );            
        }
        else if(  this.searchType == 'classifieds' ) {
            this.clearField( 'ddlClass' );
            this.clearField( 'ddlSubClass');
            this.clearField( 'ddlLocation');
//            this.clearField( 'pub' );
//            this.clearField( 'ct' );
        }      
    },
    
    clearField: function( id ) {
        if( document.getElementById(id).value == '' ) $(id).disabled = true;
    },
    
    // used in location suggest
    onLocationKeyup: function( input, event ) { 
        // already start looking after one character because of the low number of locations
        AutoCompleter.TextChange(input, 1, null, event )
    },
    
    // 
    onPublicationChange: function() { 
        AutoCompleter.clear( 'ddlArea' );        
    },
    
    reSort: function() {
        searchType = $F('t');
        this.searchType = searchType;
        if( this.searchType == 'jobs' ) 
        {
            this.jobsresort();
        }
        else
        {
            var components =  $F('ddlSortBy').split('_');
        
            this.editForm( "sort_t", components[0] );
            this.editForm( "sort", components[1] );
            
            $('previousSearchForm').submit();
        }
    },
    
    editForm: function( name, value ) {
        var form = $('previousSearchForm');
        
        var inputs = form.getElementsByTagName( 'input' );
        
        var found = false;
        
        for( var i=0;i<inputs.length; i++ ) {
            if( inputs[i].name == name ) { 
                inputs[i].value = value;
                found = true;
                break;
            }
        }
        
        if( !found) { 
            
            var input = document.createElement( 'input');
            input.name = name;
            input.value = value;
            input.type = 'hidden';
            
            form.appendChild( input );
        }
        
    },
    
    onSaleTypeClicked: function( radioButton) {
        
        var newSaleType = radioButton.value;
        
        if( this.searchType == 'properties' ) { 
                
            if( newSaleType == 'RXC-PR-FS' ) {
                this.createPriceOptions( DataCache.PROPERTY_SALE_OPTIONS );
            }
            
            if( newSaleType == 'RXC-PR-TL' ) {
                this.createPriceOptions( DataCache.PROPERTY_RENT_OPTIONS );
            }  
            
            var priceSuffix = " price (AED" + ( newSaleType == 'RXC-PR-TL' ? " p.a." : "") + ")";
             
            $('ddlMinLabel').innerHTML = "Min" + priceSuffix;
            $('ddlMaxLabel').innerHTML = "Max" + priceSuffix;
            
            if( newSaleType == 'RXC-PR-SER' ) { 
                Page.unSelect('ddlBeds');
                 $('ddlBeds').disabled = true;                
                 this.disableAttributes( true );            
            }
            else {
                $('ddlBeds').disabled = false;
                this.disableAttributes( false );
            }
            
            this.disablePrice( newSaleType == 'RXC-PR-W' || newSaleType == 'RXC-PR-SER');  
            
            this.setPropertyTypeOptions( newSaleType );
            
        } 
        else if ( this.searchType == 'jobs' ) { 
            this.disableJobInputs( newSaleType == 'SERVICE' );
        }
    },
    
    disableVehicleInputs: function( disable ) { 
        Page.disableSelect( 'ddlYear', disable );
        Page.disableSelect( 'ddlMake', disable );   
        Page.disableSelect( 'ddlModel', disable );   
        Page.disableSelect( 'ddlMin', disable );
        Page.disableSelect( 'ddlMax', disable );
        
        this.disableAttributes( disable );
    },
    
    disableJobInputs: function( disable ) {
        Page.disableSelect( 'ddlMin', disable );
        Page.disableSelect( 'ddlMax', disable );
        Page.disableSelect( 'ddlIndustry', disable );
    },
    
    disableAttributes: function( disable ) {
    
        var inputs = document.getElementsByTagName( 'input' );
        for( var i = 0; i < inputs.length; i++ ) { 
            if( inputs[i].name == 'ca' ) { 
                inputs[i].disabled = disable;
                
                if( disable && inputs[i].checked ) {
                    inputs[i].checked = false;
                }
                
            }
        } 
    },
    
    uncheckInputs: function( name, disable ) {
    
        var inputs = document.getElementsByTagName( 'input' );
        for( var i = 0; i < inputs.length; i++ ) { 
            if( inputs[i].name == name ) { 
                
                if( disable && inputs[i].checked ) {
                    inputs[i].checked = false;
                }
                
            }
        } 
    },
    
    setPropertyTypeOptions: function( saleType ) { 
        
        var categories = this.getPropertyCategories( saleType );
        
        Page.replaceOptions( 'ddlPropType', categories );
    },
    
    getPropertyCategories: function( id ) { 
        
        for( var i = 0; i < DataCache.PROPERTY_CATEGORIES.length; i++ ) {      
            var cat = DataCache.PROPERTY_CATEGORIES[i];
            if( cat.value == id ) return cat.subs; 
        }
    }, 
    
    disablePrice: function( disable ) { 
        
        var minPrice = $('ddlMin');
        var maxPrice = $('ddlMax');
        
        if( disable ) { 
            Page.removeAllButFirst( minPrice );
            Page.removeAllButFirst( maxPrice );
        }
    
        minPrice.disabled = disable;
        maxPrice.disabled = disable;
    },
  
    MILLION: 1000000,
 
    insertOption: function( newOption, options ) { 
        
        for( var i=0; i<options.length; i++ ) { 
            
            if( newOption == options[i] ) return;
            
            if( i == 0 ) { 
                if( newOption < options[0] ) { 
                    options.splice( 0, 1, newOption );
                    return;
                }
                continue;
            }
            
            if( newOption > options[i-1] && newOption < options[i] ) {
                options.splice( i, 1, newOption );
                return;
            }     
        }
        
        return options;
        
    },
    
    insertSaleOption: function( newOption) { 
       this.insertOption( newOption, DataCache.PROPERTY_SALE_OPTIONS );  
    },
    
    insertRentOption: function( newOption) { 
       this.insertOption( newOption, DataCache.PROPERTY_RENT_OPTIONS );  
    },
    
    createPriceOptions: function( prices ) {
    
        var optionsList = new Array();
        
        for( var i =0; i < prices.length; i++ ) { 
            optionsList.push( { value: prices[i], text: this.formatNumber( prices[i] ) } );
        }   
           
        Page.replaceOptions( 'ddlMin', optionsList );  
        Page.replaceOptions( 'ddlMax', optionsList );     
    },
    
    formatNumber: function( number ) { 
        
        var result;
        
        if( number >= this.MILLION ) {
            
            var baseNumber = Math.floor( number / this.MILLION );       
            var remainder  = number % this.MILLION;
     
            result = baseNumber;
            
            if( remainder == this.MILLION / 2 ) { 
                result += ".5";
            }
            
            return result + " million";
        }
        
        // put in thousand-separators
        
        var sNumber = number + '';
        result = '';
        
        while( true ) { 
            if( sNumber.length <= 3 ) {
                return sNumber + result;
            }
            
            result = ',' + sNumber.substr( sNumber.length-3, 3) + result;
            sNumber = sNumber.substr( 0, sNumber.length -3 );
        }
       
        return result;
    },
    
    toggleCluster: function( clusterName ) {     
        Element.toggle( $('cluster_' + clusterName + '_expand'));   
        Element.toggle( $('cluster_' + clusterName + '_tail'));   
    },
    
    onVehicleTypeChange: function() { 
    
  
    
        var type = $F('ddlVehicleType');
        
        this.disableVehicleInputs( type.indexOf( 'RXC-CR-SER' ) == 0 );
    
        SearchLib.onVehicleTypeChange( type );
    },
    
//    onCountryCityChange:function() 
//{ 
//loc.onCountryCityChange:function() 
//},
     
    onClassificationChange: function() {          
        var mainCategory = $F('ddlClass');
        
        var subCategories = this.getClassifiedCategories( mainCategory );
        
        Page.replaceOptions( 'ddlSubClass', subCategories );
        
        var disablePrice = mainCategory.indexOf( 'RXC-CL-ANN' ) == 0 || mainCategory.indexOf( 'RXC-CL-MAT' ) == 0; 
        
        Page.disableSelect( 'ddlMin', disablePrice );
        Page.disableSelect( 'ddlMax', disablePrice );    
    },
    
    
    getClassifiedCategories: function( id ) { 
        for( var i = 0; i < DataCache.CLASSIFIED_CATEGORIES.length; i++ ) {      
            var cat = DataCache.CLASSIFIED_CATEGORIES[i];
            if( cat.value == id ) return cat.subs; 
        }
        
        return [];
    },
    
    onVerticalChange: function() {      
        var mainCategory = $F('ddlVertical');
        
        var subCategories = this.getVerticalCategories( mainCategory );
        
        Page.replaceOptions( 'ddlIndustry', subCategories );
      
       
    },
    
    getVerticalCategories: function( id ) { 
        for( var i = 0; i < DataCache.COMPANY_CATEGORIES.length; i++ ) {      
            var cat = DataCache.COMPANY_CATEGORIES[i];
            if( cat.value == id ) return cat.subs; 
        }
        
        return [];
    },
    
    
    toggleCatCluster: function( id ) { 
        Element.toggle( 'cat_cluster_head_' + id );
        Element.toggle( 'cat_cluster_expand_' + id );
        Element.toggle( 'cat_cluster_collapse_' + id );
    },
    
    saveSearch: function() { 
   //debugger;
         //Start: Submit method for save your search link altered for setting clean url 
         //CR Name: Jobs CR
         //Author: Monisha Goyal
         //Date:   21-June-2011
//       if( this.searchType == 'jobs' ) { 
//                
//               
//        }
//        else
//        {
            $('savedSearchForm').submit();
        //}
        //End: Submit method for save your search link altered for setting clean url 
        //CR Name: Jobs CR
        //Author: Monisha Goyal
        //Date:   21-June-2011
    },
    
    TestGoogleAD:function(msg) {
    
    alert(msg);
    },
    
    searchCompanylistings: function() { 
  // debugger;
        if( $F('txtClassKeywords') == '' ) { $('txtClassKeywords').disabled = true; }
        if( $F('ddlIndustry') != '' ) { $('ddlVertical').disabled = true; }
        if( $F('ddlLocation') == '' ) { $('ddlLocation').disabled = true; }
        
        var vert = convertName($('ddlVertical').options[$('ddlVertical').selectedIndex].text);
        vert = vert.toLowerCase();
        var ind = "/" + convertName($('ddlIndustry').options[$('ddlIndustry').selectedIndex].text);
        var loc = "/" + convertName($('ddlLocation').options[$('ddlLocation').selectedIndex].text);
        var keywd ="/" +  convertkeyword($('txtClassKeywords').value);
        
        
        var url = "companylistings/" + vert +  ind +  loc + keywd;
        
        //removing consecutive occurrence of '/'
        var RegEx = new RegExp("(/){2,}", "g");
        url = url.replace(RegEx, "/")
        
        //removing last '/-' from string url
        for(i=0; i<5; i++)
        {
            var thelength=url.length;
            var lastchar=url.charAt(thelength-1);

            if(lastchar == '-')
            {
                 url = url.substring(0,thelength-2);
        
             }
        }
        
        if(url == "companylistings")
        {
            window.location.href = "companylistings/";
        }
        else{
            window.location.href = url ;
            }

    },
    
    
    
    searchlistings: function() { 
    
        if( $F('txtClassKeywords') == '' ) { $('txtClassKeywords').disabled = true; }
        if( $F('ddlIndustry') != '' ) { $('ddlVertical').disabled = true; }
        if( $F('ddlLocation') == '' ) { $('ddlLocation').disabled = true; }

        var vert = convertName($('ddlVertical').options[$('ddlVertical').selectedIndex].text);
        vert = vert.toLowerCase();
        var ind = "/" + convertName($('ddlIndustry').options[$('ddlIndustry').selectedIndex].text);
        var loc = "/" + convertName($('ddlLocation').options[$('ddlLocation').selectedIndex].text);
        var keywd ="/" +  convertkeyword($('txtClassKeywords').value);
        
        
        var url = "/companylistings/" + vert +  ind +  loc + keywd;
        
        //removing consecutive occurrence of '/'
        var RegEx = new RegExp("(/){2,}", "g");
        url = url.replace(RegEx, "/")
        
        //removing last '/-' from string url
        for(i=0; i<5; i++)
        {
            var thelength=url.length;
            var lastchar=url.charAt(thelength-1);

            if(lastchar == '-')
            {
                 url = url.substring(0,thelength-2);
        
             }
        }
     window.location.href = url ;
        
   },
   
   companyresort: function(){
   //debugger;
   var sort = $('ddlSortBy').options[$('ddlSortBy').selectedIndex].value;
      
   var pathArray = window.location.pathname.split( '/' );
   //alert(pathArray.length);
   if(pathArray.length < 10)
   {
   if(pathArray.length < 5){pathArray.splice(4,0,'-');}
   if(pathArray.length < 6){pathArray.splice(5,0,'-');}
   pathArray.splice(6,1,sort);
   if(pathArray.length < 8){pathArray.splice(7,0,'-');}
   if(pathArray.length < 9){pathArray.splice(8,0,'-');}
   }
   var newPathname = "";
    for ( i = 0; i<pathArray.length; i++ ) {
    newPathname += "/";
    newPathname += pathArray[i];
    }

   //removing consecutive occurrence of '/'
        var RegEx = new RegExp("(/){2,}", "g");
        newPathname = newPathname.replace(RegEx, "/")
        
        //removing last '/-' from string newPathname
        for(i=0; i<5; i++)
        {
            var thelength=newPathname.length;
            var lastchar=newPathname.charAt(thelength-1);

            if(lastchar == '-')
            {
                 newPathname = newPathname.substring(0,thelength-2);
        
             }
        }
        
     //    alert(newPathname);
    window.location.href = newPathname ;
   },
    //Start: Method wirting clean url Jobs Cr
     //    Author: Monisha Goyal
     //    Date:   15-June-2011
   searchforJobs: function(){
 
        var ind = "/" + convertName($('ddlIndustry').options[$('ddlIndustry').selectedIndex].text);
        var loc = "/" + convertName($('ddlLocation').options[$('ddlLocation').selectedIndex].text);
        var keywd ="/" +  convertkeyword($('txtKeywords').value);
        var saletype = "/" ;
        if($('rdoAvail').checked)
        {
           saletype = saletype + $F('rdoAvail');
        }
        else if($('rdoWanted').checked)
        {
            saletype =  saletype + $F('rdoWanted');
        }
        else if($('rdoServices').checked)
        {
            saletype = saletype +  $F('rdoServices');
        }
        else
        {
        saletype = saletype + "-";
        }
        var minsal="/" + convertName($F('ddlMin'));
        var maxsal="/" + convertName($F('ddlMax'));
        
        var url = "/jobs/" +  ind +  loc + keywd + saletype + minsal + maxsal;
        
        //removing consecutive occurrence of '/'
        var RegEx = new RegExp("(/){2,}", "g");
        url = url.replace(RegEx, "/");
        
        //removing last '/-' from string url
        for(i=0; i<6; i++)
        {
            var thelength=url.length;
            var lastchar=url.charAt(thelength-1);

            if(lastchar == '-')
            {
                 url = url.substring(0,thelength-2);
        
             }
        }
     window.location.href = url ;
   },
    //End: Method wirting clean url 
    //CR Name: Jobs Cr
    //Author: Monisha Goyal
    //Date:   15-June-2011
    
    //Start: Method of resorting for jobs vertical
    //CR Name: Jobs Cr
    //Author: Monisha Goyal
    //Date:   17-June-2011
   jobsresort: function(){
   //debugger;
   var sort = $F('ddlSortBy');
      
   var pathArray = window.location.pathname.split( '/' );
   //alert(pathArray.length);
   if(pathArray.length < 14)
   {
   if(pathArray.length < 3){pathArray.splice(2,0,'-');}
   if(pathArray.length < 4){pathArray.splice(3,0,'-');}
   if(pathArray.length < 5){pathArray.splice(4,0,'-');}
   if(pathArray.length < 6){pathArray.splice(5,0,'-');}
   if(pathArray.length < 7){pathArray.splice(6,0,'-');}
   if(pathArray.length < 8){pathArray.splice(7,0,'-');}
   if(pathArray.length < 9){pathArray.splice(8,0,'1');}
   pathArray.splice(9,1,sort);
   if(pathArray.length < 11){pathArray.splice(10,0,'-');}
   if(pathArray.length < 12){pathArray.splice(11,0,'-');}
   if(pathArray.length < 13){pathArray.splice(12,0,'-');}
   }
   var newPathname = "";
    for ( i = 0; i<pathArray.length; i++ ) {
    newPathname += "/";
    newPathname += pathArray[i];
    }

   //removing consecutive occurrence of '/'
        var RegEx = new RegExp("(/){2,}", "g");
        newPathname = newPathname.replace(RegEx, "/")
       // alert(newPathname);
        //removing last '/-' from string newPathname
        for(i=0; i<5; i++)
        {
            var thelength=newPathname.length;
            var lastchar=newPathname.charAt(thelength-1);

            if(lastchar == '-')
            {
                 newPathname = newPathname.substring(0,thelength-2);
        
             }
        }
        
        //alert(newPathname);
    window.location.href = newPathname ;
   }
   //End: Method of resorting for jobs vertical
    //CR Name: Jobs Cr
    //Author: Monisha Goyal
    //Date:   17-June-2011
}




// Replaces all instances of the given substring.
String.prototype.replaceAll = function( 
      strTarget, // The substring you want to replace
      strSubString // The string you want to replace in.
      ){
      var strText = this;
      var intIndexOfMatch = strText.indexOf( strTarget );
       
      // Keep looping while an instance of the target string
      // still exists in the string.
      while (intIndexOfMatch != -1){
            // Relace out the current instance.
            strText = strText.replace( strTarget, strSubString )
             
            // Get the index of any next matching substring.
            intIndexOfMatch = strText.indexOf( strTarget );
      }
       
      // Return the updated string with ALL the target strings
      // replaced out with the new substring.
      return( strText );
}







