var predictiveSearchLocationCodes = [];
var predictiveKeywords = '';
var defaultMessage = '';

$(function() {
    RegisterEnergyRatingTips();
    RegisterSaveArticles();
    RegisterAdTechAds();

    /****************************************************/
    /* Red Oak Calculator on Lettings Homepage          */
    /****************************************************/
    var calculator_year = $('#rent-relief-input #TYear');
    var calculator_age = $('#rent-relief-input #TAge');
    var calculator_status = $('#rent-relief-input #TStatus');
    var calculator_output_bg = $('#rent-relief-output');
    var calculator_result = $('#rent-relief-output #RCalc');
    $('#rent-relief-input').change(function() {
        var vRelief = 0;
        if (calculator_year.val() != "" && calculator_age.val() != "" && calculator_status.val() != "") {
            if ((calculator_age.val() == "U55" && calculator_status.val() == "M") || (calculator_age.val() == "O55" && calculator_status.val() == "S")) {
                switch (calculator_year.val()) {
                    case "2005":
                        vRelief = 600;
                        break;
                    case "2006":
                        vRelief = 660;
                        break;
                    case "2007":
                        vRelief = 720;
                        break;
                    default:
                        vRelief = 800;
                }
            }
            if (calculator_age.val() == "U55" && calculator_status.val() === "S") {
                switch (calculator_year.val()) {
                    case "2005":
                        vRelief = 300;
                        break;
                    case "2006":
                        vRelief = 330;
                        break;
                    case "2007":
                        vRelief = 360;
                        break;
                    default:
                        vRelief = 400;
                }
            }
            if (calculator_age.val() == "O55" && calculator_status.val() === "M") {
                switch (calculator_year.val()) {
                    case "2005":
                        vRelief = 1200;
                        break;
                    case "2006":
                        vRelief = 1320;
                        break;
                    case "2007":
                        vRelief = 1440;
                        break;
                    default:
                        vRelief = 1600;
                }
            }
            calculator_result.fadeOut(function() {
                calculator_result.css("color", "#fff").html("&euro;" + vRelief + ".00");
                calculator_result.fadeIn();
            });
        }
    });

    /****************************************************/
    /* Area Guide Amenity Tabs                          */
    /****************************************************/
    $("a[rel='locality-gallery']").click(function() { initialiseOmnitureAction("event11", "eVar39", "Area Guide Images"); });
    $("a[rel='locality-gallery']").colorbox({ transition: 'elastic', speed: 500, opacity: .25, close: 'close', innerHeight: "500px", innerWidth: "665px", scalePhotos: true });

    var menuItems = $('#amenityTab ul li');
    if (menuItems.length > 0) {
        GetLocationAmenities(menuItems.attr('ID').split('_')[0], 6);
    }
    menuItems.click(function() {
        GetLocationAmenities($(this).attr('ID').split('_')[0], $(this).attr('ID').split('_')[1]);
        menuItems.removeClass('selected');
        $(this).addClass('selected');
    });

    /****************************************************/
    /* Property on the Market Tabs                      */
    /****************************************************/
    var menuSelect = $('#property-on-market-tabs ul li');

    $('#residential-title').click(function() {
        menuSelect.removeClass('selected');
        $(this).addClass('selected');

        $('#residential-content').show();
        $('#commercial-content').hide();
        $('#lettings-content').hide();
    });
    $('#lettings-title').click(function() {
        menuSelect.removeClass('selected');
        $(this).addClass('selected');

        $('#residential-content').hide()
        $('#lettings-content').show(); ;
        $('#commercial-content').hide();
    });
    $('#commercial-title').click(function() {
        menuSelect.removeClass('selected');
        $(this).addClass('selected');

        $('#residential-content').hide();
        $('#lettings-content').hide();
        $('#commercial-content').show();
    });

    /****************************************************/
    /* Home Services Landing page What/Where Switch     */
    /****************************************************/
    $(".homeservice-listings .what-where[title='Where']").show();

    $(".homeservice-listings .what-where").click(function() {
        $(".homeservice-listings .list-panel").toggleClass("hide");
        $(".homeservice-listings .what-where").toggleClass("selected");
    });

    /****************************************************/
    /* Contact Service Provider Sales                   */
    /****************************************************/
    $('#contactServiceProviderSalesFormSubmit').removeAttr('disabled');

    $('#contactServiceProviderSalesFormSubmit').live("click", function() {
        $('#contactServiceProviderSales').validate({
            errorLabelContainer: "#errorMessages",
            wrapper: "li",
            errorElement: "em",
            showErrors: function(errorMap, errorList) {
                this.defaultShowErrors();
                $('#errorMessages').hide();
            }
        });
        if ($('#contactServiceProviderSales').valid()) {
            $.ajax({
                type: 'POST',
                url: $("#contactServiceProviderSales").attr('action'),
                data: $("#contactServiceProviderSales").serialize(),
                dataType: 'html',
                success: function(data) {
                    $('#contactServiceProviderSalesFormContainer').html(data);
                },
                error: function() { alert('An error occured'); }
            });
        }
        return false;
    });

    /****************************************************/
    /* Contact Service Provider                         */
    /****************************************************/
    $('#contactServiceProviderFormSubmit').removeAttr('disabled');

    $('#contactServiceProviderFormSubmit').live("click", function() {
        $('#contactServiceProvider').validate({
            errorLabelContainer: "#errorMessages",
            wrapper: "li",
            errorElement: "em",
            showErrors: function(errorMap, errorList) {
                this.defaultShowErrors();
                $('#errorMessages').hide();
            }
        });
        if ($('#contactServiceProvider').valid()) {
            $.ajax({
                type: 'POST',
                url: $("#contactServiceProvider").attr('action'),
                data: $("#contactServiceProvider").serialize(),
                dataType: 'html',
                success: function(data) {
                    $('#contactServiceProviderFormContainer').html(data);
                },
                error: function() { alert('An error occured'); }
            });
        }
        return false;
    });

    /****************************************************/
    /* Contact Agent                                    */
    /****************************************************/
    $('#contactAgentFormSubmit').removeAttr('disabled');

    $("#contactAgentFormSubmit").live("click", function() {
        if ($("#Message").val() == defaultMessage) {
            $("#Message").val('');
        }
        $('#contactAgentForm').validate({
            rules: {
                SenderEmail: {
                    email: true
                }
            },
            errorLabelContainer: "#errorMessages",
            wrapper: "li",
            errorElement: "em",
            showErrors: function(errorMap, errorList) {
                this.defaultShowErrors();
                $('#errorMessages').hide();
            }
        });
        if ($('#contactAgentForm').valid()) {
            $.ajax({
                type: 'POST',
                url: $("#contactAgentForm").attr('action'),
                data: $("#contactAgentForm").serialize(),
                dataType: 'html',
                success: function(data) {
                    $('#contactAgentFormContainer').html(data);
                },
                error: function() { alert('An error occured'); }
            });
        }
        return false;
    });

    $("#contactAgentFormCancel").live("click", function() {
        $.fn.colorbox.close();
        return false;
    });

    /****************************************************/
    /* Modify Search popout                             */
    /****************************************************/
    $(function() {
        var refineHidden = true;
        $("#refine").click(function() {
            if (refineHidden) {
                showRefine();
            } else {
                hideRefine();
            }
        });

        $("#filters > div").click(function() {
            if (refineHidden) {
                showRefine();
            } else {
                hideRefine();
            }
        });

        function showRefine() {
            $("#refineInputs").slideDown();
            $("#filters div").css("margin-bottom", "0px").css("padding-bottom", "6px");
            $("#filters div span").hide();
            $("#refine").hide();
            refineHidden = false;
        }

        function hideRefine() {
            $("#refineInputs").slideUp();
            $("#filters div").css("margin-bottom", "6px").css("padding-bottom", "0px");
            $("#filters div span").show();
            $("#refine").show();
            refineHidden = true;
        }
    });

    /********************************************************/
    /* Energy rating rollover on Search Results & Brochure  */
    /********************************************************/
    function RegisterEnergyRatingTips() {
        $('.energy-rating-wrapper').hoverIntent({
            sensitivity: 3,
            over: function() { $(this).children('img').fadeIn(); },
            out: function() { $(this).children('img').fadeOut(); }
        });
    }

    /********************************************************/
    /* Save Article to User Profile                         */
    /********************************************************/
    function RegisterSaveArticles() {
        $('#saveArticle').click(function() {
            if (isAuthenticated) {
                $.post("/user/saveuserarticle", { articleID: $(this).children('img').attr('ID').split('_')[1] },
                    function() {
                        $('#saveArticle').toggle();
                        $('#removeArticle').toggle();
                        OmnitureAction("event8", "eVar21", "Article Saved");
                    }
                );
            } else {
                ShowLogin();
            }
        });

        $('#removeArticle').click(function() {
            if (isAuthenticated) {
                $.post("/user/deleteuserarticle", { articleID: $(this).children('img').attr('ID').split('_')[1] },
                        function() {
                            $('#saveArticle').toggle();
                            $('#removeArticle').toggle();
                        }
                    );
            } else {
                ShowLogin();
            }
        });
    }

    /*************************************************************/
    /* Search Behavior (Predictive Search)                       */
    /*************************************************************/
    if ($("#Keywords").length > 0) {
        $("#Keywords").tokenInput(GetPredictiveSearchUrl(), {
            classes: {
                tokenList: "token-input-list",
                token: "token-input-token",
                tokenDelete: "token-input-delete-token",
                selectedToken: "token-input-selected-token",
                highlightedToken: "token-input-highlighted-token",
                dropdown: "token-input-dropdown",
                dropdownItem: "token-input-dropdown-item",
                dropdownItem2: "token-input-dropdown-item2",
                selectedDropdownItem: "token-input-selected-dropdown-item",
                inputToken: "token-input-input-token"
            },
            addTokenCallback: function(locationCode) { predictiveSearchLocationCodes.push(locationCode); },
            removeTokenCallback: function(locationCode) { predictiveSearchLocationCodes.splice(predictiveSearchLocationCodes.indexOf(locationCode), 1); },
            updateKeywordsCallback: function(keywords) { predictiveKeywords = keywords; }
        });

        $("#predictiveSearchButton").live("click", function() {
            var options = '';
            for (var i = 0; i < predictiveSearchLocationCodes.length; i++) {
                options += CreateOptionElement('', predictiveSearchLocationCodes[i], true);
            }

            if ($("#LocationCodes").val() != null) {
                options += CreateOptionElement('', $("#LocationCodes").val(), true);
            }

            $("select#Locations").append(options);
            $("#Keywords").val(predictiveKeywords);
        });
    }

    /****************************************************/
    /* Search Results Options                           */
    /****************************************************/
    $('.sortBy').click(function() {
        window.location = $.jqURL.set({ 'sort': $(this).attr('name') });
    });

    $('.viewType').click(function() {
        window.location = $.jqURL.set({ 'view': $(this).attr('name'), 'page': 1 }); //TODO: GJ: can the plugin 'strip' the page param too?
    });

    function HtmlEncode(html) {
        return $('<div/>').text(html).html();
    }

    function HtmlDecode(text) {
        return $('<div/>').html(text).text();
    }
    /****************************************************/
    /* Primary Menu HoverIntent                         */
    /****************************************************/
    
    $("ul.primary-nav");
    var menu = $("ul.primary-nav li.top-level");
    var showDropdown = true;

    var menuItemHoverCount = 0;
    
    if (!isIE6) {
        // Nav menu hoverIntent
        menu.children().removeClass("dropdown-menu");

        $("ul.primary-nav > li").hoverIntent({
            sensitivity: 3,
            interval: 0,
            over: showMenu,
            timeout: 0,
            out: hideMenu
        });
    }
    
    function showMenu() {
        menuItemHoverCount++;
        $("ul.primary-nav li.top-level.selected").addClass("removed-selected");
        $("ul.primary-nav li.top-level.removed-selected").removeClass("selected");
        loadMenuContent(); // Inject content on hover
        var selector = this;
        setTimeout(function() {
            $(selector).children("ul").show(); //drop-menu body
            $(selector).children("div").show(); //drop-menu top and bottom bg
        }, 50);
    }

    function hideMenu() {
        var curentMenuItemHoverCount = menuItemHoverCount; //we will only show the original menu item if no new menu item has been selected between now and the timeout
        setTimeout(function() {
            if (curentMenuItemHoverCount == menuItemHoverCount) {
                $("ul.primary-nav li.top-level.removed-selected").addClass("selected");
                $("ul.primary-nav li.top-level.selected").removeClass("removed-selected");
            }
        }, 500);
        var selector = this;
        setTimeout(function() {
            $(selector).children("ul").hide();
            $(selector).children("div").hide();
        }, 100);
    }
    /********************************************************/
    /* Menu Html Injecting content to reduce links for SEO  */
    /********************************************************/
    var residentialMenuHtml = HtmlDecode("&lt;li class=&quot;sub-menu-left&quot;&gt;    &lt;ul&gt;        &lt;li class=&quot;title&quot;&gt;Search&lt;/li&gt;        &lt;li class=&quot;text-bold&quot;&gt;&lt;a href=&quot;/residential/search&quot;&gt;Property&lt;/a&gt;&lt;/li&gt;        &lt;li class=&quot;text-bold last&quot;&gt;&lt;a href=&quot;/residential/search/new-homes&quot;&gt;New Homes&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/residential/estate-agents&quot;&gt;Estate Agents&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/mortgages&quot;&gt;Mortgages&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/area-guides&quot;&gt;Area Guides&lt;/a&gt;&lt;/li&gt;        &lt;li class=&quot;advertise-with-us&quot;&gt;&lt;a href=&quot;/residential/advertise&quot;&gt;Sell your Home&lt;/a&gt;&lt;/li&gt;    &lt;/ul&gt;&lt;/li&gt;&lt;li class=&quot;sub-menu-right&quot;&gt;    &lt;ul&gt;        &lt;li class=&quot;title&quot;&gt;Useful Links&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/residential/advice/buying&quot;&gt;Residential Advice&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/residential/advice/buying&quot;&gt;Buying&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/residential/advice/selling&quot;&gt;Selling&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/residential/advice/finance&quot;&gt;Finance&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/residential/advice/improving&quot;&gt;Improving&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/calculators&quot;&gt;Calculators&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/user&quot;&gt;Property Alerts&lt;/a&gt;&lt;/li&gt;    &lt;/ul&gt;&lt;/li&gt;");
    var lettingsMenuHtml = HtmlDecode("&lt;li class=&quot;sub-menu-left dropdown-menu&quot;&gt;    &lt;ul&gt;        &lt;li class=&quot;title&quot;&gt;Search&lt;/li&gt;        &lt;li class=&quot;text-bold&quot;&gt;&lt;a href=&quot;/lettings/search&quot;&gt;Properties to Rent&lt;/a&gt;&lt;/li&gt;        &lt;li class=&quot;text-bold&quot;&gt;&lt;a href=&quot;/lettings/search/share&quot;&gt;Shared Accommodation&lt;/a&gt;&lt;/li&gt;        &lt;li class=&quot;text-bold&quot;&gt;&lt;a href=&quot;/lettings/search/colleges&quot;&gt;Colleges&lt;/a&gt;&lt;/li&gt;        &lt;li class=&quot;text-bold last&quot;&gt;&lt;a href=&quot;/lettings/search/holiday-homes&quot;&gt;Holiday Homes&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/lettings/estate-agents&quot;&gt;Lettings Agents&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/area-guides&quot;&gt;Area Guides&lt;/a&gt;&lt;/li&gt;        &lt;li class=&quot;advertise-with-us&quot;&gt;&lt;a href=&quot;/lettings/advertise&quot;&gt;Rent your Property&lt;/a&gt;&lt;/li&gt;    &lt;/ul&gt;&lt;/li&gt;&lt;li class=&quot;sub-menu-right&quot;&gt;    &lt;ul&gt;        &lt;li class=&quot;title&quot;&gt;Useful Links&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/lettings/advice&quot;&gt;Rental Advice&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/lettings/advice/tenants&quot;&gt;Tenant&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/lettings/advice/landlords&quot;&gt;Landlord&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/lettings/advice/investors&quot;&gt;Investor&lt;/a&gt;&lt;/li&gt;    &lt;/ul&gt;&lt;/li&gt;");
    var commercialMenuHtml = HtmlDecode("&lt;li class=&quot;sub-menu-left dropdown-menu&quot;&gt;    &lt;ul&gt;        &lt;li class=&quot;title&quot;&gt;Search&lt;/li&gt;        &lt;li class=&quot;text-bold last&quot;&gt;&lt;a href=&quot;/commercial/search&quot;&gt;Commercial Property&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/commercial/estate-agents&quot;&gt;Commercial Agents&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/area-guides&quot;&gt;Area Guides&lt;/a&gt;&lt;/li&gt;        &lt;li class=&quot;advertise-with-us&quot;&gt;&lt;a href=&quot;/commercial/advertise&quot;&gt;Advertise your Commercial Property&lt;/a&gt;&lt;/li&gt;    &lt;/ul&gt;&lt;/li&gt;&lt;li class=&quot;sub-menu-right&quot;&gt;    &lt;ul&gt;        &lt;li class=&quot;title&quot;&gt;Useful Links&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/commercial/advice&quot;&gt;Commercial Advice&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/commercial/advice/market-news&quot;&gt;Market News&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/commercial/advice/help-guides&quot;&gt;Help &amp;amp; Guides&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/user&quot;&gt;Property Alerts&lt;/a&gt;&lt;/li&gt;    &lt;/ul&gt;&lt;/li&gt;");
    var overseasMenuHtml = HtmlDecode("&lt;li class=&quot;sub-menu-left&quot;&gt;    &lt;ul&gt;        &lt;li class=&quot;title&quot;&gt;Search&lt;/li&gt;        &lt;li class=&quot;text-bold&quot;&gt;&lt;a href=&quot;/overseas/search&quot;&gt;Overseas to Buy&lt;/a&gt;&lt;/li&gt;        &lt;li class=&quot;text-bold last&quot;&gt;&lt;a href=&quot;/overseas/search/holiday-homes&quot;&gt;Holiday Rentals&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/overseas/estate-agents&quot;&gt;Overseas Agents&lt;/a&gt;&lt;/li&gt;        &lt;li class=&quot;advertise-with-us&quot;&gt;&lt;a href=&quot;/overseas/advertise&quot;&gt;Advertise your Overseas Property&lt;/a&gt;&lt;/li&gt;    &lt;/ul&gt;&lt;/li&gt;&lt;li class=&quot;sub-menu-right&quot;&gt;    &lt;ul&gt;        &lt;li class=&quot;title&quot;&gt;Useful Links&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/overseas/advice/country-guides&quot;&gt;Country Guides&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/overseas/advice&quot;&gt;Advice Centre&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/user&quot;&gt;Property Alerts&lt;/a&gt;&lt;/li&gt;    &lt;/ul&gt;&lt;/li&gt;");
    var homeServicesMenuHtml = HtmlDecode("&lt;li class=&quot;sub-menu-left&quot;&gt;    &lt;ul&gt;        &lt;li class=&quot;title&quot;&gt;Search&lt;/li&gt;        &lt;li class=&quot;text-bold&quot;&gt;&lt;a href=&quot;/home-services&quot;&gt;Services&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/home-services/movers&quot;&gt;Movers&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/home-services/solicitors&quot;&gt;Solicitors&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/home-services/trades-people&quot;&gt;Tradesmen&lt;/a&gt;&lt;/li&gt;        &lt;li class=&quot;advertise-with-us&quot;&gt;&lt;a href=&quot;/home-services/advertise&quot;&gt;Advertise your Service&lt;/a&gt;&lt;/li&gt;    &lt;/ul&gt;&lt;/li&gt;&lt;li class=&quot;sub-menu-right&quot;&gt;    &lt;ul&gt;        &lt;li class=&quot;title&quot;&gt;Useful Links&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;/residential/advice&quot;&gt;Advice Centre&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Getting the best Quote&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Interior Design&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Gardening Tips&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href=&quot;http://www.myhome.ie/&quot;&gt;MyHome.ie Blog&lt;/a&gt;&lt;/li&gt;    &lt;/ul&gt;&lt;/li&gt;");

    var residentialMenu = $("ul.primary-nav li.top-level.residential > ul");
    var lettingsMenu = $("ul.primary-nav li.top-level.lettings > ul");
    var commercialMenu = $("ul.primary-nav li.top-level.commercial > ul");
    var overseasMenu = $("ul.primary-nav li.top-level.overseas > ul");
    var homeServicesMenu = $("ul.primary-nav li.top-level.home-services > ul");

    function loadMenuContent() {
        // Checking length over two as C# inline can add a space sometimes 
        if (residentialMenu.html().length < 1) {
            residentialMenu.append(residentialMenuHtml);
        }
        if (lettingsMenu.html().length < 1) {
            lettingsMenu.append(lettingsMenuHtml);
        }
        if (commercialMenu.html().length < 1) {
            commercialMenu.append(commercialMenuHtml);
        }
        if (overseasMenu.html().length < 1) {
            overseasMenu.append(overseasMenuHtml);
        }
        if (homeServicesMenu.html().length < 1) {
            homeServicesMenu.append(homeServicesMenuHtml);
        }
    }

    /*************************************************************/
    /* Mortgage Terms/Policy colorbox popups                    */
    /*************************************************************/
    $('.mortgage-popup').click(function() {
        var properties = $(this).attr('name').split("_");
        var provider = properties[0];
        var page = properties[1];
        $.fn.colorbox({ href: "/mortgages/" + provider + "/" + page,
            open: true,
            opacity: .15,
            close: '',
            height: "500px",
            width: "600px"
        });
    });
    /*************************************************************/
    /* Populates the locality control when the region is changed */
    /*************************************************************/
    $('select#LocationCodes').attr("disabled", true);

    $("#Region").change(function() {
        var code = $("option:selected", this).val();
        $('select#LocationCodes').removeAttr("disabled");
        if (code != "") {
            var action = IsOverseasSection() ? "decendantswithhierarchy" : "rootdecendants";
            $.getJSON("/locations/" + action + "/" + code, function(data) {
                var options = CreateOptionElement("Any Location", "", true);
                for (var i = 0; i < data.length; i++) {
                    options += CreateOptionElement(data[i].Name, data[i].Value, false);
                }
                //TEMP: TODO: GJ: we need a consistant way of defining the different location list inputs
                if ($('select#LocationCodes').length > 0) {
                    $('select#LocationCodes').html(options);
                } else {
                    $('select#Locations').html(options);
                }
            });
        }
    });

    if ($('select#Locations option:selected').text() == '') {
        //if none are selected, select the first option
        $('select#Locations option:first').attr("selected", "selected");
    }

    $("#email").focus(function() {
        if ($(this).val() == "Enter your email address")
            $(this).val('');
    });

    defaultMessage = $("#Message").val();
    $("#Message").focus(function() {
        if ($(this).val() == defaultMessage) {
            $(this).val('');
        }
    });

    $('.saveSearch').click(function() {
        if (isAuthenticated) {
            $.post("/user/saveusersearch",
                { searchUrl: window.location.toString() },
                function() {
                    $('.saveSearch').hide();
                    $('.removeSearchTab').show();
                }
            );
        } else {
            ShowLogin();
        }
    });

    $('.removeSearchTab').click(function() {
        if (isAuthenticated) {
            $.post("/user/removeusersearch",
                { searchUrl: window.location.toString() },
                function() {

                    $('.saveSearch').show();
                    $('.removeSearchTab').hide();
                }
            );
        } else {
            ShowLogin();
        }
    });

    $('#Sort, #PageSize').change(function() {
        $("#refineForm").submit();
    });

    function GetLocationAmenities(locationCode, categoryid) {
        $.ajax({
            type: 'POST',
            url: "/area-guides/getlocationamenities",
            data: { locationCode: locationCode, categoryID: categoryid },
            dataType: 'html',
            success: function(data) {
                $('.amenitiylist').html(data);
            },
            error: function() { alert('An error occured'); }
        });
    }

    /*************************************************************/
    /* IE6 Hover work around                                     */
    /*************************************************************/
    if (!window.XMLHttpRequest) {
        $('#search-filter #filters div').hover(function() {
            $(this).addClass('over');
        }, function() {
            $(this).removeClass('over');
        });
    }
});

function RegisterAdTechAds() {
    if ($('#top-banner').length > 0) {
        var html = '<IFRAME WIDTH="728" HEIGHT="90" SCROLLING="No" FRAMEBORDER="0" MARGINHEIGHT="0" MARGINWIDTH="0" SRC="http://adserver.adtech.de/adiframe|3.0|561|2076432|0|225|ADTECH;target=_blank;key=key1+key2+key3+key4;grp=[group]"><script language="javascript" src="http://adserver.adtech.de/addyn|3.0|561|2076432|0|225|ADTECH;loc=700;target=_blank;key=key1+key2+key3+key4;grp=[group]"></scr' + 'ipt><noscript><a href="http://adserver.adtech.de/adlink|3.0|561|2076432|0|225|ADTECH;loc=300;key=key1+key2+key3+key4;grp=[group]" target="_blank"><img src="http://adserver.adtech.de/adserv|3.0|561|2076432|0|225|ADTECH;loc=300;key=key1+key2+key3+key4;grp=[group]" border="0" width="728" height="90"></a></noscript></IFRAME>';
        $('#top-banner').append(html);
    }
}

function GetPagePropertyClassFromURL() {
    return window.location.pathname.split("/")[1];
}
function IsResidentialSection() {
    return GetPagePropertyClassFromURL() == 'residential';
}
function IsLettingsSection() {
    return GetPagePropertyClassFromURL() == 'lettings';
}
function IsCommercialSection() {
    return GetPagePropertyClassFromURL() == 'commercial';
}
function IsOverseasSection() {
    return GetPagePropertyClassFromURL() == 'overseas';
}
function IsHomesServicesSection() {
    return GetPagePropertyClassFromURL() == 'home-services';
}
function IsMyAccountSection() {
    return GetPagePropertyClassFromURL() == 'user';
}

function CreateOptionElement(name, value, selected) {
    var optionElement;
    if (selected == false) {
        optionElement = '<option value="' + value + '">' + name + '</option>';
    } else {
        optionElement = '<option selected="selected" value="' + value + '">' + name + '</option>';
    }
    return optionElement;
}