﻿//'****************************************************************************
//'                          Comments Section                                 *
//'****************************************************************************
//'Name               Date        Job Code    Details                         *
//'----               ----        --------    -------                         *
//'Paul Davidson      05/08/2009  T-STM125    creation date                   *
//'                                                                           *
//'                                                                           *
//'                                                                           *
//'                                                                           *
//'                                                                           *
//'****************************************************************************

//**************
//globals
var alldata;
var regions;
var towns;
var developments;
var hometypes;
var priceranges;
var strDomain = '';

//used for live, comment out for testing
//strDomain = 'http:www.stewartmilnehomes.com'

//parse current pages query string
var qs = new Querystring();
//**************

//**********************
//set page up when first load
//<![CDATA[    
// When the page is ready
jQuery(document).ready(function () {
    // first remove the dummy child items - these dummy items are there so that XHTML validation doesn't complain about empty SELECT elements
    jQuery('#ddlRegions').children().remove();
    jQuery('#ddlTowns').children().remove();
    jQuery('#ddlHomeTypes').children().remove();
    jQuery('#ddlPriceRange').children().remove();
    jQuery('#ddlDevelopments').children().remove();

    var containsQS = false;

    //check for query string values
    if ((qs.contains("regionid")) || (qs.contains("RegionID")))
        containsQS = true;

    //get all drop down data needed by page

    //get a JSON file that has all data for regions/towns/devs, use a random time as part
    //of the request to force IE not to use a cached version!
    var dtTemp = new Date;

    jQuery.getJSON(strDomain + '/getAllJson.aspx?sm=search&random=' + escape(dtTemp.getTime()), function (data) {
        alldata = data;

        //seperate this data into its seperate parts
        regions = alldata['regions'];
        towns = alldata['towns'];
        developments = alldata['devs'];
        hometypes = alldata['hometypes'];
        priceranges = alldata['priceranges'];
        
        //get all the regions as these will all always be shown      
        getRegionsFirstEntry();

        //if we have query string values then get region from it               
        if (containsQS) {
            getRegionFromQueryString();
        }

        if (containsQS) {
            getTownsFromRegionId()
            getTownFromQueryString();
        }
        else {
            getTownsFirstEntry();
        }

        if (containsQS) {
            getDevelopmentsFromRegionOrTownId();
            getDevelopmentFromQueryString();
        }
        else {
            getDevelopmentsFirstEntry();
        }

        getStandardDropDowns(containsQS);

        //now check to see if the current page has a mapholder element, if so then call teh function to 
        //populate the region image/name etc
        if (jQuery('.mapHolder') != null)
            setRegionInfo();
    })
})
//**********************

//**********************
//functions to pop drop downs

//get all regions
function getRegionsFirstEntry()
{
    jQuery("<option>").attr("value", 0).text('all').appendTo("#ddlRegions");
                    
    jQuery.each(regions, function(entryIndex, entry) {
        jQuery("<option>").attr("value", entry['regionid']).text(entry['regionname']).appendTo("#ddlRegions");
    })
             
}
      
//get all towns          
function getTownsFirstEntry()
{
    
    jQuery("<option>").attr("value", 0).text('all').appendTo("#ddlTowns");
                    
    jQuery.each(towns, function(entryIndex, entry) {
        jQuery("<option>").attr("value", entry['townid']).text(entry['townname']).appendTo("#ddlTowns");
    })
}
                
//get all developments
function getDevelopmentsFirstEntry()
{
    jQuery("<option>").attr("value", 0).text('all').appendTo("#ddlDevelopments");
                    
    jQuery.each(developments, function(entryIndex, entry) {
        jQuery("<option>").attr("value", entry['developmentid']).text(entry['developmentname']).appendTo("#ddlDevelopments");
    })
}

//populate region from query string
function getRegionFromQueryString()
{
    jQuery("#ddlRegions").val(qs.get('RegionID'));
}

//populate town from query string
function getTownFromQueryString()
{
    jQuery("#ddlTowns").val(qs.get('TownID'));
}

//populate development from query string
function getDevelopmentFromQueryString()
{
    jQuery("#ddlDevelopments").val(qs.get('DevelopmentID'));
}
            
//get all all towns for a region   
function getTownsFromRegionId()
{
    jQuery("#ddlTowns>option").remove();
                    
    if (jQuery("#ddlRegions").val() == '0')
    {
        getTownsFirstEntry();
    }
    else
    {
        jQuery("<option>").attr("value", 0).text('all').appendTo("#ddlTowns");
                    
        jQuery.each(towns, function(entryIndex, entry) {
            if (entry['regionid'] == jQuery("#ddlRegions").val())
                jQuery("<option>").attr("value", entry['townid']).text(entry['townname']).appendTo("#ddlTowns");
        })
        
    }
                    
}
                
//get all all developments for a town   
function getDevelopmentsFromRegionOrTownId()
{
    jQuery("#ddlDevelopments>option").remove();
                    
    if ((jQuery("#ddlRegions").val() == '0') && (jQuery("#ddlTowns").val() == '0'))
    {
        getDevelopmentsFirstEntry();
    }
    else
    {
        if (jQuery("#ddlTowns").val() == 0)
        {
            //get all devs for region id
            
            jQuery("#ddlDevelopments>option").remove();
            jQuery("<option>").attr("value", 0).text('all').appendTo("#ddlDevelopments");
                    
            jQuery.each(towns, function(entryIndex, entry) {
                if (entry['regionid'] == jQuery("#ddlRegions").val())
                {
                    jQuery.each(developments, function(entryIndexD, entryD) {
                        
                        if (entryD['townid'] == entry['townid'])
                            jQuery("<option>").attr("value", entryD['developmentid']).text(entryD['developmentname']).appendTo("#ddlDevelopments");
                    })
                }
                    
            })
        }
        else
        {
            //get all devs for townid
            
            jQuery("#ddlDevelopments>option").remove();
            jQuery("<option>").attr("value", 0).text('all').appendTo("#ddlDevelopments");
            
            jQuery.each(developments, function(entryIndex, entry) {
                        
                if (entry['townid'] == jQuery("#ddlTowns").val())
                    jQuery("<option>").attr("value", entry['developmentid']).text(entry['developmentname']).appendTo("#ddlDevelopments");
            })
        }
        
    }
                    
}

//region has changed, need to get all towns/developments for that region   
function regionchanged()
{
    getTownsFromRegionId();
    getDevelopmentsFromRegionOrTownId();
    
    //now check to see if the current page has a mapholder element, if so then call teh function to 
    //populate the region image/name etc
    if (jQuery('.mapHolder') != null)
        setRegionInfo();
}

//town has changed, need to get all developments for that town, and also region for town if not prev selected
function townchanged()
{
    if (jQuery("#ddlRegions").val() == 0)
    {
        jQuery.each(towns, function(entryIndex, entry) {
                        
            if (entry['townid'] == jQuery("#ddlTowns").val())
            {
                jQuery("#ddlRegions").val(entry['regionid']);
                
                //now check to see if the current page has a mapholder element, if so then call teh function to 
                //populate the region image/name etc
                if (jQuery('.mapHolder') != null)
                    setRegionInfo();
        
                return false;
            }
        })
    }
    
    getDevelopmentsFromRegionOrTownId();
}

//development changed, make sure you have all correct region/town/dev info for it
function developmentchanged()
{
    var oldregionid = jQuery("#ddlRegions").val();
    var oldtownid   = jQuery("#ddlTowns").val();
    var chosendevid = jQuery("#ddlDevelopments").val();
    
    var regionid;
    var townid;
    
    var processedregion = false;
    
    if (oldregionid == 0)
    {
        processedregion = true;
    
        //get the townid for the development
        jQuery.each(developments, function(entryIndex, entry) {
        
            if (entry['developmentid'] == chosendevid)
            {
                townid = entry['townid'];
                return false;
            }
        })
        
        //get regionid for the development from townid
        jQuery.each(towns, function(entryIndex, entry) {
        
            if (entry['townid'] == townid)
            {
                regionid = entry['regionid'];
                return false;
            }
        })
        
        //select the correct region for development
        jQuery("#ddlRegions").val(regionid);
        
        //as the region has changed, get all towns for region
        getTownsFromRegionId();
    
        //now pop the new townid for the development
        jQuery("#ddlTowns").val(townid)
        
        //now check to see if the current page has a mapholder element, if so then call teh function to 
        //populate the region image/name etc
        if (jQuery('.mapHolder') != null)
            setRegionInfo();
    }
        
    if ((oldtownid == 0) && (!processedregion))
    {
        
        //get the townid for
        jQuery.each(developments, function(entryIndex, entry) {
    
            if (entry['developmentid'] == jQuery("#ddlDevelopments").val())
            {
                townid = entry['townid'];
                return false;
            }
        })
        
        jQuery("#ddlTowns").val(townid);
       
    }
    
    getDevelopmentsFromRegionOrTownId();
    
    jQuery("#ddlDevelopments").val(chosendevid);
} 

//get teh standard drop downs which will not change on selection
function getStandardDropDowns(containsQS)
{
    //populate all home types
    jQuery("<option>").attr("value", 0).text('all').appendTo("#ddlHomeTypes");
                    
    jQuery.each(hometypes, function(entryIndex, entry) {
        jQuery("<option>").attr("value", entry['propertytypeid']).text(entry['type']).appendTo("#ddlHomeTypes");
    })
    
    //populate all price ranges
    jQuery("<option>").attr("value", 0).text('all').appendTo("#ddlPriceRange");
                    
    jQuery.each(priceranges, function(entryIndex, entry) {
        jQuery("<option>").attr("value", entry['pricebandid']).text(entry['pricerangetext']).appendTo("#ddlPriceRange");
    })
    
    if (containsQS)
    {
        jQuery("#ddlHomeTypes").val(qs.get('HomeTypeID'));
        jQuery("#ddlPriceRange").val(qs.get('PriceRange'));
        jQuery("#ddlBedrooms").val(qs.get('Bedrooms'));
    }
    
}
//**********************

//**********************
//functions called from buttons

//reset button to reset all drop downs
function reset1()
{
    jQuery("#ddlRegions").val(0);
    jQuery("#ddlTowns").val(0);
    
    getTownsFromRegionId();
    getDevelopmentsFromRegionOrTownId();
    
    //now check to see if the current page has a mapholder element, if so then call teh function to 
    //populate the region image/name etc
    if (jQuery('.mapHolder') != null)
        setRegionInfo();
        
    return false;
}

//submit button which will decide which page to go to depending on your drop down choice
function submit1()
{
    
    var strUrl;
    
    if (jQuery("#ddlDevelopments").val() == 0)
        strUrl = strDomain + "homes-search-results.aspx?Page=13&";
    else
    {
        // rather than go to the home types page as done previously
        // we now need to go to the 
        // strUrl = strDomain + "homes-home-types.aspx?Page=13";
        
        //get the friendly page name
        jQuery.each(developments, function(entryIndex, entry) {
    
            if (entry['developmentid'] == jQuery("#ddlDevelopments").val())
            {
                strUrl = strDomain + entry['friendlypagename'] + ".aspx?"
                return false;
            }
        })
    }

    strUrl += "RegionID="       + jQuery("#ddlRegions").val();
    strUrl += "&TownID="        + jQuery("#ddlTowns").val();
    strUrl += "&HomeTypeID="    + jQuery("#ddlHomeTypes").val();
    strUrl += "&Bedrooms="      + jQuery("#ddlBedrooms").val();
    strUrl += "&PriceRange="    + jQuery("#ddlPriceRange").val();
    strUrl += "&DevelopmentID=" + jQuery("#ddlDevelopments").val();
    //strUrl += "&dID="           + jQuery("#ddlDevelopments").val(); // Removed as did is added in request module based on page name.
    
    //redirect to url
    window.location.href = strUrl;
    
}

//**********************

//**********************
//other functions



//**********************
