var defaultLocation = 'e.g. Chicago, IL or Toronto, ON';

$(document).ready(function () {
    $('#szLocation').focus(function() {
        if($(this).val() == defaultLocation) {
            $(this).removeClass('example');
            $(this).val('');
        }
    });

    $('#szLocation').blur(function() {
        if($(this).val() == '') {
            $(this).addClass('example');
            $(this).val(defaultLocation);
        }
    });

    $('#priceSlider').slider({
        handle: ".handle",
        min: minPriceLimit,
        max: maxPriceLimit + priceInterval,
        stepping: priceInterval,
        range: true,
        slide: function(e, ui) {
            if($(ui.handle).attr('id') == 'pricehandle1') {
                if($('#minPrice').val() == ui.value) {
                    return;
                }
                $('#minPrice').val(ui.value);
                if(ui.value == 0) {
                    $('#minPriceDisplay').text('No Minimum');
                }
                else if(ui.value > maxPriceLimit) {
                    $('#minPriceDisplay').text('No Maximum');
                }
                else {
                    $('#minPriceDisplay').text(moneyFormat(ui.value));
                }
            }
            else if($(ui.handle).attr('id')== 'pricehandle2') {
                if($('#maxPrice').val() == ui.value) {
                    return;
                }
                $('#maxPrice').val(ui.value);
                if(ui.value == 0) {
                    $('#maxPriceDisplay').text('No Minimum');
                }
                else if(ui.value > maxPriceLimit) {
                    $('#maxPriceDisplay').text('No Maximum');
                }
                else {
                    $('#maxPriceDisplay').text(moneyFormat(ui.value));
                }
            }
        }
    });
    $('#priceSlider').slider('moveTo', currMinPrice, 0);
    $('#priceSlider').slider('moveTo', currMaxPrice, 1);

    $('#bedsSlider').slider({
        handle: ".handle",
        min: 0,
        max: minBeds.length-1,
        stepping: 1,
        startValue: currMinBedKey,
        slide: function(e, ui) {
            //This is an optimization, mainly for IE6 because it tends to fire
            //this function much more often than other browsers. So we only
            //edit the value when it has actually changed.
            if($('#minBed').val() == minBeds[ui.value]) {
                return;
            }

            $('#minBed').val(minBeds[ui.value]);
            if(ui.value == 0) {
                $('#minBedDisplay').text('Any');
            }
            else {
                $('#minBedDisplay').text(minBeds[ui.value] + '+');
            }
        }
    });

    $('#bathsSlider').slider({
        handle: ".handle",
        min: 0,
        max: minBaths.length-1,
        stepping: 1,
        startValue: currMinBathKey,
        slide: function(e, ui) {
            //This is an optimization, mainly for IE6 because it tends to fire
            //this function much more often than other browsers. So we only
            //edit the value when it has actually changed.
            if($('#minBath').val() == minBaths[ui.value]) {
                return;
            }

            $('#minBath').val(minBaths[ui.value]);
            if(ui.value == 0) {
                $('#minBathDisplay').text('Any');
            }
            else {
                $('#minBathDisplay').text(minBaths[ui.value] + '+');
            }
        }
    });

    if ($('#moreOptionsLink').hasClass("moreOptionsOn")) {
        applyAdvancedSliders();
    }

    $('#propSelectAll').click(function() {
        $(".propTypeList input").each(function() {
            this.checked = "checked";
        });
        return false;
    });

    $('#propDeselectAll').click(function() {
        $(".propTypeList input").each(function() {
            this.checked = "";
        });
        return false;
    });

    $('#moreOptionsLink').click(function () {
        $('#moreOptionsLink').toggleClass("moreOptions");
        $('#moreOptionsLink').toggleClass("moreOptionsOn");
        //Firefox displays the amenities scroll bar immediately, so we hide the
        //amenities box and bring it back when animation is done
        $('#searchOptions').animate({height: "toggle"}, 2000, "easeOutExpo");
/*
        if($('#searchOptionsOpen').val() == "1") {
            $('#searchOptionsOpen').val("0");
            varArray = new Object();
            varArray['searchOptionsOpen'] = "0";
            alterQueryString(varArray);
        }
        else {
            $('#searchOptionsOpen').val("1");
            varArray = new Object();
            varArray['searchOptionsOpen'] = "1";
            alterQueryString(varArray);
        }
*/
        applyAdvancedSliders();
    });

    $('.ssLink').click(function() {
        var searchQueryPre = $(this).attr('href');
        var searchQuery = $('#searchToolsForm').serialize();
        $(this).attr('href',searchQueryPre + searchQuery);
        return true;
    });

    $('.reset').click(function() {
        $('#szLocation').val('');
        $('#szLocation').focus();
        $('#priceSlider').slider('moveTo', minPriceLimit, 0);
        $('#priceSlider').slider('moveTo', maxPriceLimit + priceInterval, 1);
        $('#bedsSlider').slider('moveTo', 0);
        $('#bathsSlider').slider('moveTo', 0);
        $('#sqFtSlider').slider('moveTo', minSqFtLimit, 0);
        $('#sqFtSlider').slider('moveTo', maxSqFtLimit + sqFtInterval, 1);
        $('#acreSlider').slider('moveTo', 0, 0);
        $('#acreSlider').slider('moveTo', acres.length-1, 1);
        $("input[name='iHasPhoto']").each(function() {$(this).attr('checked', '')});
        $("input[name='rgPropTypes[]']").each(function() {$(this).attr('checked', 'checked')});
        $("input[name='hasOpenHouse']").each(function() {$(this).attr('checked', '')});
        $("input[name='iAmenityID[]']").each(function() {$(this).attr('checked', '')});
        $("input[name='iRadius']").each(function() {$(this).val(['20'])});
    });

});

function applyAdvancedSliders() {
    if (typeof sqFtSlidersApplied == 'undefined') {
        $('#sqFtSlider').slider({
            handle: ".handle",
            min: minSqFtLimit,
            max: maxSqFtLimit + sqFtInterval,
            stepping: sqFtInterval,
            range: true,
            slide: function(e, ui) {
                if($(ui.handle).attr('id') == 'sqFtHandle1') {
                    if($('#minSqFt').val() == ui.value) {
                        return;
                    }
                    $('#minSqFt').val(ui.value);
                    if(ui.value == 0) {
                        $('#minSqFtDisplay').text('No Minimum');
                    }
                    else if(ui.value > maxSqFtLimit) {
                        $('#minSqFtDisplay').text('No Maximum');
                    }
                    else {
                        $('#minSqFtDisplay').text(sqFtFormat(ui.value));
                    }
                }
                else if($(ui.handle).attr('id')== 'sqFtHandle2') {
                    if($('#maxSqFt').val() == ui.value) {
                        return;
                    }
                    $('#maxSqFt').val(ui.value);
                    if(ui.value == 0) {
                        $('#maxSqFtDisplay').text('No Minimum');
                    }
                    else if(ui.value > maxSqFtLimit) {
                        $('#maxSqFtDisplay').text('No Maximum');
                    }
                    else {
                        $('#maxSqFtDisplay').text(sqFtFormat(ui.value));
                    }
                }
            }
        });
        $('#sqFtSlider').slider('moveTo', currMinSqFt, 0);
        $('#sqFtSlider').slider('moveTo', currMaxSqFt, 1);
        sqFtSlidersApplied = true;
    }

    if (typeof acreSlidersApplied == 'undefined') {
        $('#acreSlider').slider({
            handle: ".handle",
            min: 0,
            max: acres.length-1,
            stepping: 1,
            range: true,
            slide: function(e, ui) {
                if($(ui.handle).attr('id') == 'acreHandle1') {
                    if($('#minAcre').val() == acres[ui.value]) {
                        return;
                    }
                    $('#minAcre').val(acres[ui.value]);
                    if(ui.value == 0) {
                        $('#minAcreDisplay').text('No Minimum');
                    }
                    else if(ui.value == acres.length-1) {
                        $('#minAcreDisplay').text('No Maximum');
                    }
                    else {
                        var acreText = ' acre';
                        if(acres[ui.value] > 1) {
                            acreText += 's';
                        }
                        $('#minAcreDisplay').text(acres[ui.value] + acreText);
                    }
                }
                else if($(ui.handle).attr('id')== 'acreHandle2') {
                    if($('#maxAcre').val() == acres[ui.value]) {
                        return;
                    }
                    $('#maxAcre').val(acres[ui.value]);
                    if(ui.value == 0) {
                        $('#maxAcreDisplay').text('No Minimum');
                    }
                    else if(ui.value == acres.length-1) {
                        $('#maxAcreDisplay').text('No Maximum');
                    }
                    else {
                        var acreText = ' acre';
                        if(acres[ui.value] > 1) {
                            acreText += 's';
                        }
                        $('#maxAcreDisplay').text(acres[ui.value] + acreText);
                    }
                }
            }
        });
        $('#acreSlider').slider('moveTo', currMinAcreKey, 0);
        $('#acreSlider').slider('moveTo', currMaxAcreKey, 1);
        acreSlidersApplied = true;
    }
}

function alterQueryString(varArray) {
    $('.searchQuery').each(function() {
        queryString = $(this).attr('href');
        for(i in varArray) {
            varName = i;
            varValue = varArray[i];
            pattern = new RegExp(varName +"=.*?(?=&|$)");
            if(queryString.search(pattern) == -1) {
                queryString = queryString + "&" + varName + "=" + varValue;
            }
            else {
                queryString = queryString.replace(pattern, varName + "=" + varValue);
            }
        }
        $(this).attr('href', queryString);
    });
}

function moneyFormat(num) {
    var numStr = "" + num;
    var dec = numStr.indexOf(".");
    var end = ((dec > -1) ? "" + numStr.substring(dec, numStr.length) : "");
    numStr = "" + parseInt(numStr);

    var count = 0;
    var temp1 = "";
    var temp2 = "";
    for (var k = numStr.length-1; k >= 0; k--) {
        var oneChar = numStr.charAt(k);
        if(count == 3) {
            temp1 += ",";
            temp1 += oneChar;
            count = 1;
            continue
        }
        else {
            temp1 += oneChar;
            count++;
        }
    }

    for (var k = temp1.length-1; k >= 0; k--) {
        var oneChar = temp1.charAt(k);
        temp2 += oneChar;
    }

    temp2 = "$" + temp2 + end;
    return temp2;
}

function sqFtFormat(num) {
    var numStr = "" + num;
    var dec = numStr.indexOf(".");
    var end = ((dec > -1) ? "" + numStr.substring(dec, numStr.length) : "");
    numStr = "" + parseInt(numStr);

    var count = 0;
    var temp1 = "";
    var temp2 = "";
    for (var k = numStr.length-1; k >= 0; k--) {
        var oneChar = numStr.charAt(k);
        if(count == 3) {
            temp1 += ",";
            temp1 += oneChar;
            count = 1;
            continue
        }
        else {
            temp1 += oneChar;
            count++;
        }
    }

    for (var k = temp1.length-1; k >= 0; k--) {
        var oneChar = temp1.charAt(k);
        temp2 += oneChar;
    }

    temp2 = temp2 + end + " sq ft";
    return temp2;
}