/*
 *     School List Sorting Functions
 */
    var schNameOpt = false;
    function sortByDescSchool(a, b) {
        var x = a.SchoolName;
        var y = b.SchoolName;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscSchool(a, b) {
        var x = a.SchoolName;
        var y = b.SchoolName;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }
    var schStNameOpt = false;
    function sortByDescStreetName(a, b) {
        var x = a.StreetName;
        var y = b.StreetName;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscStreetName(a, b) {
        var x = a.StreetName;
        var y = b.StreetName;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }
    var schCityOpt = false;
    function sortByDescCity(a, b) {
        var x = a.City;
        var y = b.City;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscCity(a, b) {
        var x = a.City;
        var y = b.City;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }
    var schStateOpt = false;
    function sortByDescState(a, b) {
        var x = a.State;
        var y = b.State;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscState(a, b) {
        var x = a.State;
        var y = b.State;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }
    var schZipOpt = false;
    function sortByDescZip(a, b) {
        var x = a.Zip;
        var y = b.Zip;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscZip(a, b) {
        var x = a.Zip;
        var y = b.Zip;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }
    function sortSchoolArray(column) {
        switch (column) {
  	    case 1 :
  	        if(schNameOpt) {
  	            schNameOpt = false;
  	            sortSchoolResultArray.sort(sortByDescSchool);
  	        } else {
  	            schNameOpt = true;
  	            sortSchoolResultArray.sort(sortByAscSchool);
  	        }  			    
  	        break;
  	    case 2 :
  	        if(schStNameOpt) {
  	            schStNameOpt = false;
  	            sortSchoolResultArray.sort(sortByDescStreetName);
  	        } else {
  	            schStNameOpt = true;
  	            sortSchoolResultArray.sort(sortByAscStreetName);
  	        }  			    
  	        break;
            case 3 :
  	        if(schCityOpt) {
  	            schCityNoOpt = false;
  	            sortSchoolResultArray.sort(sortByDescCity);
  	        } else {
  	            schCityOpt = true;
  	            sortSchoolResultArray.sort(sortByAscCity);
  	        }  			    
  	        break;
            case 4 :
  	        if(schStateOpt) {
  	            schStateNoOpt = false;
  	            sortSchoolResultArray.sort(sortByDescState);
  	        } else {
  	            schStateOpt = true;
  	            sortSchoolResultArray.sort(sortByAscState);
  	        }  			    
  	        break;
            case 5 :
  	        if(schZipOpt) {
  	            schZipOpt = false;
  	            sortSchoolResultArray.sort(sortByDescZip);
  	        } else {
  	            schZipOpt = true;
  	            sortSchoolResultArray.sort(sortByAscZip);
  	        }  			    
  	        break;
  	    }
  	    showSchoolResultArray();
    } 
/*
 *     Property List Sorting Functions
 */
    function sortByCity(a, b) {
        var x = a.CityCount;
        var y = b.CityCount;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }
    var cityNoOpt = false;
    function sortByDescCity(a, b) {
        var x = a.City;
        var y = b.City;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    
    function updateSortFld(column) {
	showLoader();
        if(sortSeq == "asc") {
            sortSeq = "desc";
        } else {
            sortSeq = "asc";
        }
        switch (column) {
  	    case 1 :
  	        sortFld = "street";
  	        break;
  	    case 2 :
  	        sortFld = "oh";
  	        break;
            case 3 :
  	        sortFld = "city";
  	        break;
  	    case 4 :
  	        sortFld = "price";
  	        break;  	        
  	    case 5 :
  	        sortFld = "bdrms";
  	        break;
  	    case 6 :
  	        sortFld = "bathsFull";
  	        break;
  	    case 7 :
  	        sortFld = "bathsPart";
  	        break;  	        
  	    case 8 :
  	        sortFld = "sqft";
  	        break;
  	    case 9 :
  	        sortFld = "PricePerSqft";
  	        break;
  	    case 10 :
  	        sortFld = "state";
  	        break;
  	    case 11 :
  	        sortFld = "zip";
  	        break;

  	}
  	if(polygonOpt) {
//  	    getPolygonResult();
  	} else {
            getProperty();
        }
        setTimeout("showDetails('"+dragOption+"')" , waitTime);
        setTimeout("hideLoader()", waitTime);
    }    
    function formSortArray(lat, lng, tempInfo, streetNumber,streetName,address, city, state, zip,formatedPrice,price,beds,baths,bathsPart,formatedSqft,sqft,mlsNumber,type,pricePerSqft,formatedPricePerSqft,mkt, ohExists) {
        this.Lat = parseFloat(lat);
        this.Lng = parseFloat(lng);
        this.AddrInfo = tempInfo;
        this.StreetNumber = parseInt(streetNumber);
        this.StreetName = streetName;
        this.Address = address;
        this.City = city;
        this.State = state;
        this.Zip = zip;
        this.Price = parseInt(price);
        this.Beds = parseInt(beds);
        this.Baths = parseInt(baths);
        this.BathsPart = parseInt(bathsPart);
        this.Sqft = parseInt(sqft);
        this.MLSNumber = parseInt(mlsNumber);
        this.Type = type;
        this.FormatedPrice = formatedPrice;
        this.FormatedSqft = formatedSqft;
        this.PricePerSqft = parseInt(pricePerSqft);
        this.FormatedPricePerSqft = formatedPricePerSqft;
        this.Mkt = mkt;
        this.OH = ohExists;
    } 
    function formCountyArray(assrNo,parcel,myAdd,city,state,zip,saleAmtFt,beds,baths,bathsPart,sqftFt,pricePerSqftFt,sqft,pricePerSqft,saleAmt) {
        this.AssrNo = assrNo;
        this.Parcel = parcel;
        this.MyAdd = myAdd;
        this.City = city;
        this.State = state;
        this.Zip = zip;
        this.PriceFt = saleAmtFt;
        this.Beds =  parseInt(beds);
        this.Baths =  parseInt(baths);
        this.BathsPart =  parseInt(bathsPart);
        this.SqftFt = sqftFt;
        this.PricePerSqftFt = pricePerSqftFt;
        this.Sqft = parseFloat(sqft);
        this.PricePerSqft = parseFloat(pricePerSqft);
        this.Price = parseInt(saleAmt);
    }
/*
 *     Property List Sorting Functions
 */
    function updateSSSortFld(column) {
        if(sortSeq == "asc") {
            sortSeq = "desc";
        } else {
            sortSeq = "asc";
        }
        switch (column) {
  	    case 1 :
  	        if(streetNameOpt) {
  	            streetNameOpt = false;
  	            sortSSResultArray.sort(sortByDescStreetName);
  	        } else {
  	            streetNameOpt = true;
  	            sortSSResultArray.sort(sortByAscStreetName);
  	        }  			    
  	        break;
  	    case 2 :
  	        if(ohOpt) {
  	            ohOpt = false;
  	            sortSSResultArray.sort(sortByDescOH);
  	        } else {
  	            ohOpt = true;
  	            sortSSResultArray.sort(sortByAscOH);
  	        }  			    
  	        break;
  	    case 3 :
  	        if(cityNoOpt) {
  	            cityNoOpt = false;
  	            sortSSResultArray.sort(sortByDescCity);
  	        } else {
  	            cityNoOpt = true;
  	            sortSSResultArray.sort(sortByAscCity);
  	        }  			    
  	        break;
  	    case 4 :
  	        if(sortPriceOpt) {
  	            sortPriceOpt = false;
  	            sortSSResultArray.sort(sortByDescPrice);
  	        } else {
  	            sortPriceOpt = true;
  	            sortSSResultArray.sort(sortByAscPrice);
  	        }  			    
  	        break;
  	    case 5 :
  	        if(sortBedsOpt) {
  	            sortBedsOpt = false;
  	            sortSSResultArray.sort(sortByDescBeds);
  	        } else {
  	            sortBedsOpt = true;
  	            sortSSResultArray.sort(sortByAscBeds);
  	        }  			    
  	        break;
  	    case 6 :
  	        if(sortBathsOpt) {
  	            sortBathsOpt = false;
  	            sortSSResultArray.sort(sortByDescBaths);
  	        } else {
  	            sortBathsOpt = true;
  	            sortSSResultArray.sort(sortByAscBaths);
  	        }  			    
  	        break;
  	    case 7 :
  	        if(sortBathsPartOpt) {
  	            sortBathsPartOpt = false;
  	            sortSSResultArray.sort(sortByDescBathsPart);
  	        } else {
  	            sortBathsPartOpt = true;
  	            sortSSResultArray.sort(sortByAscBathsPart);
  	        }  			    
  	        break;  	        
  	    case 8 :
  	        if(sortSQFTOpt) {
  	            sortSQFTOpt = false;
  	            sortSSResultArray.sort(sortByDescSQFT);
  	        } else {
  	            sortSQFTOpt = true;
  	            sortSSResultArray.sort(sortByAscSQFT);
  	        }  			    
  	        break;
  	    case 9 :
  	        if(sortPricePerSQFTOpt) {
  	            sortPricePerSQFTOpt = false;
  	            sortSSResultArray.sort(sortByDescPricePerSQFT);
  	        } else {
  	            sortPricePerSQFTOpt = true;
  	            sortSSResultArray.sort(sortByAscPricePerSQFT);
  	        }  			    
  	        break;
  	    case 10 :
  	        if(stateOpt) {
  	            stateOpt = false;
  	            sortSSResultArray.sort(sortByDescState);
  	        } else {
  	            stateOpt = true;
  	            sortSSResultArray.sort(sortByAscState);
  	        }  			    
  	        break;
  	    case 11 :
  	        if(zipOpt) {
  	            zipOpt = false;
  	            sortSSResultArray.sort(sortByDescZip);
  	        } else {
  	            zipOpt = true;
  	            sortSSResultArray.sort(sortByAscZip);
  	        }  			    
  	        break;

  	}
  	showSSResultArray();
    }
    function updateFavSortFld(column) {
        if(sortSeq == "asc") {
            sortSeq = "desc";
        } else {
            sortSeq = "asc";
        }
        switch (column) {
  	    case 1 :
  	        if(streetNameOpt) {
  	            streetNameOpt = false;
  	            sortResultArray.sort(sortByDescStreetName);
  	        } else {
  	            streetNameOpt = true;
  	            sortResultArray.sort(sortByAscStreetName);
  	        }  			    
  	        break;
  	    case 2 :
  	        if(ohOpt) {
  	            ohOpt = false;
  	            sortResultArray.sort(sortByDescOH);
  	        } else {
  	            ohOpt = true;
  	            sortResultArray.sort(sortByAscOH);
  	        }  			    
  	        break;
  	    case 3 :
  	        if(cityNoOpt) {
  	            cityNoOpt = false;
  	            sortResultArray.sort(sortByDescCity);
  	        } else {
  	            cityNoOpt = true;
  	            sortResultArray.sort(sortByAscCity);
  	        }  			    
  	        break;
  	    case 4 :
  	        if(sortPriceOpt) {
  	            sortPriceOpt = false;
  	            sortResultArray.sort(sortByDescPrice);
  	        } else {
  	            sortPriceOpt = true;
  	            sortResultArray.sort(sortByAscPrice);
  	        }  			    
  	        break;
  	    case 5 :
  	        if(sortBedsOpt) {
  	            sortBedsOpt = false;
  	            sortResultArray.sort(sortByDescBeds);
  	        } else {
  	            sortBedsOpt = true;
  	            sortResultArray.sort(sortByAscBeds);
  	        }  			    
  	        break;
  	    case 6 :
  	        if(sortBathsOpt) {
  	            sortBathsOpt = false;
  	            sortResultArray.sort(sortByDescBaths);
  	        } else {
  	            sortBathsOpt = true;
  	            sortResultArray.sort(sortByAscBaths);
  	        }  			    
  	        break;
  	    case 7 :
  	        if(sortBathsPartOpt) {
  	            sortBathsPartOpt = false;
  	            sortResultArray.sort(sortByDescBathsPart);
  	        } else {
  	            sortBathsPartOpt = true;
  	            sortResultArray.sort(sortByAscBathsPart);
  	        }  			    
  	        break;  	        
  	    case 8 :
  	        if(sortSQFTOpt) {
  	            sortSQFTOpt = false;
  	            sortResultArray.sort(sortByDescSQFT);
  	        } else {
  	            sortSQFTOpt = true;
  	            sortResultArray.sort(sortByAscSQFT);
  	        }  			    
  	        break;
  	    case 9 :
  	        if(sortPricePerSQFTOpt) {
  	            sortPricePerSQFTOpt = false;
  	            sortResultArray.sort(sortByDescPricePerSQFT);
  	        } else {
  	            sortPricePerSQFTOpt = true;
  	            sortResultArray.sort(sortByAscPricePerSQFT);
  	        }  			    
  	        break;
  	    case 10 :
  	        if(stateOpt) {
  	            stateOpt = false;
  	            sortResultArray.sort(sortByDescState);
  	        } else {
  	            stateOpt = true;
  	            sortResultArray.sort(sortByAscState);
  	        }  			    
  	        break;
  	    case 11 :
  	        if(zipOpt) {
  	            zipOpt = false;
  	            sortResultArray.sort(sortByDescZip);
  	        } else {
  	            zipOpt = true;
  	            sortResultArray.sort(sortByAscZip);
  	        }  			    
  	        break;

  	}
  	showResultArray();
    } 
    
    var stateOpt = false;
    function sortByDescState(a, b) {
        var x = a.State;
        var y = b.State;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscState(a, b) {
        var x = a.State;
        var y = b.State;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }
    var zipOpt = false;
    function sortByDescZip(a, b) {
        var x = a.Zip;
        var y = b.Zip;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscZip(a, b) {
        var x = a.Zip;
        var y = b.Zip;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }

    function sortByCity(a, b) {
        var x = a.CityCount;
        var y = b.CityCount;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }
    var cityNoOpt = false;
    function sortByDescCity(a, b) {
        var x = a.City;
        var y = b.City;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscCity(a, b) {
        var x = a.City;
        var y = b.City;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }
    var streetNoOpt = false;
    function sortByDescStreetNumber(a, b) {
        var x = a.StreetNumber;
        var y = b.StreetNumber;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscStreetNumber(a, b) {
        var x = a.StreetNumber;
        var y = b.StreetNumber;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }
    var streetNameOpt = false;
    function sortByDescStreetName(a, b) {
        var x = a.StreetName.toLowerCase();
        var y = b.StreetName.toLowerCase();
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscStreetName(a, b) {
        var x = a.StreetName.toLowerCase();
        var y = b.StreetName.toLowerCase();
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }
    var ohOpt = false;
    function sortByDescOH(a, b) {
        var x = a.OH.toLowerCase();
        var y = b.OH.toLowerCase();
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscOH(a, b) {
        var x = a.OH.toLowerCase();
        var y = b.OH.toLowerCase();
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }

    var sortPriceOpt = false;
    function sortByDescPrice(a, b) {
        var x = a.Price;
        var y = b.Price;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscPrice(a, b) {
        var x = a.Price;
        var y = b.Price;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }

    var sortBedsOpt = false;
    function sortByDescBeds(a, b) {
        var x = a.Beds;
        var y = b.Beds;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscBeds(a, b) {
        var x = a.Beds;
        var y = b.Beds;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }

    var sortBathsOpt = false;
    function sortByDescBaths(a, b) {
        var x = a.Baths;
        var y = b.Baths;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscBaths(a, b) {
        var x = a.Baths;
        var y = b.Baths;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }
    var sortBathsPartOpt = false;
    function sortByDescBathsPart(a, b) {
        var x = a.BathsPart;
        var y = b.BathsPart;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscBathsPart(a, b) {
        var x = a.BathsPart;
        var y = b.BathsPart;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }

    var sortSQFTOpt = false;
    function sortByDescSQFT(a, b) {
        var x = a.Sqft;
        var y = b.Sqft;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscSQFT(a, b) {
        var x = a.Sqft;
        var y = b.Sqft;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }
    var sortPricePerSQFTOpt = false;
    function sortByDescPricePerSQFT(a,b) {
        var x = a.PricePerSqft;
        var y = b.PricePerSqft;
        return ((x < y) ? -1 : ((x > y) ? +1 : 0));
    }
    function sortByAscPricePerSQFT(a, b) {
        var x = a.PricePerSqft;
        var y = b.PricePerSqft;
        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
    }
       
    function updateCountySortFld(column) {
        if(sortSeq == "asc") {
            sortSeq = "desc";
        } else {
            sortSeq = "asc";
        }
        switch (column) {
  	    case 1 :
  	        if(streetNameOpt) {
  	            streetNameOpt = false;
  	            countyDataArray.sort(sortByDescStreetName);
  	        } else {
  	            streetNameOpt = true;
  	            countyDataArray.sort(sortByAscStreetName);
  	        }  			    
  	        break;
  	    case 2 :
  	        if(ohOpt) {
  	            ohOpt = false;
  	            countyDataArray.sort(sortByDescOH);
  	        } else {
  	            ohOpt = true;
  	            countyDataArray.sort(sortByAscOH);
  	        }  			    
  	        break;
  	    case 3 :
  	        if(cityNoOpt) {
  	            cityNoOpt = false;
  	            countyDataArray.sort(sortByDescCity);
  	        } else {
  	            cityNoOpt = true;
  	            countyDataArray.sort(sortByAscCity);
  	        }  			    
  	        break;
  	    case 4 :
  	        if(sortPriceOpt) {
  	            sortPriceOpt = false;
  	            countyDataArray.sort(sortByDescPrice);
  	        } else {
  	            sortPriceOpt = true;
  	            countyDataArray.sort(sortByAscPrice);
  	        }  			    
  	        break;
  	    case 5 :
  	        if(sortBedsOpt) {
  	            sortBedsOpt = false;
  	            countyDataArray.sort(sortByDescBeds);
  	        } else {
  	            sortBedsOpt = true;
  	            countyDataArray.sort(sortByAscBeds);
  	        }  			    
  	        break;
  	    case 6 :
  	        if(sortBathsOpt) {
  	            sortBathsOpt = false;
  	            countyDataArray.sort(sortByDescBaths);
  	        } else {
  	            sortBathsOpt = true;
  	            countyDataArray.sort(sortByAscBaths);
  	        }  			    
  	        break;
  	    case 7 :
  	        if(sortBathsPartOpt) {
  	            sortBathsPartOpt = false;
  	            countyDataArray.sort(sortByDescBathsPart);
  	        } else {
  	            sortBathsPartOpt = true;
  	            countyDataArray.sort(sortByAscBathsPart);
  	        }  			    
  	        break;  	        
  	    case 8 :
  	        if(sortSQFTOpt) {
  	            sortSQFTOpt = false;
  	            countyDataArray.sort(sortByDescSQFT);
  	        } else {
  	            sortSQFTOpt = true;
  	            countyDataArray.sort(sortByAscSQFT);
  	        }  			    
  	        break;
  	    case 9 :
  	        if(sortPricePerSQFTOpt) {
  	            sortPricePerSQFTOpt = false;
  	            countyDataArray.sort(sortByDescPricePerSQFT);
  	        } else {
  	            sortPricePerSQFTOpt = true;
  	            countyDataArray.sort(sortByAscPricePerSQFT);
  	        }  			    
  	        break;
  	    case 10 :
  	        if(stateOpt) {
  	            stateOpt = false;
  	            countyDataArray.sort(sortByDescState);
  	        } else {
  	            stateOpt = true;
  	            countyDataArray.sort(sortByAscState);
  	        }  			    
  	        break;
  	    case 11 :
  	        if(zipOpt) {
  	            zipOpt = false;
  	            countyDataArray.sort(sortByDescZip);
  	        } else {
  	            zipOpt = true;
  	            countyDataArray.sort(sortByAscZip);
  	        }  			    
  	        break;

  	}
  	showCountyList();
    }           