﻿var _filters = new Object();
var s_year = 2006;
var _dist = 500;

jQuery(function($) {
    $("img[src$=png]").pngfix();
});

$(document).ready(function() {
    $('#tabs').tabs().show();
    $.validator.addMethod("uszipcode", function(value, element) {
        return (this.optional(element) || /(^\d{5}$)|(^\d{5}-\d{4}$)/.test(value)) && value.toString().length > 0;
    }, "Please enter a valid Zip Code");
    initialUi();
});

function initialUi() {
    var _cookie_zip = getCookie("_zip");
    if(_cookie_zip !=null && _cookie_zip != "")
        $('#zipcode').val(_cookie_zip);
    $('#zipcode').focus(function() {
        if ($('#zipcode').val() == "Zipcode")
            $('#zipcode').val("");
    });
    $('#zipcode').blur(function() {
        if ($('#zipcode').val() == "")
            $('#zipcode').val("Zipcode");
    });
    $('#year').change(function() {
        s_year = $('#year option:selected').val();
        initialSellAutocomplete(s_year);
        setTimeout(function() { $('#sell-searchinput').focus(); }, 5);
    });
    $('#buy-searchinput').focus(function() {
        if ($(this).val() == 'e.g. BMW 3 Series') {
            $(this).css("color", "#333");
            $(this).val("");
        }
    });
    $('#buy-searchinput').blur(function() {
        if ($(this).val() == '') {
            $(this).css("color", "#ccc");
            $(this).val('e.g. BMW 3 Series');
        }
    });
    $('#buy-searchinput').autocomplete(svc_url + "/search/getac", {
        minChars: 2,
        width: 375,
        scrollHeight: 360,
        delay: 50,
        selectFirst: false,
        max: 10,
        matchContains: true,
        autoFill: false,
        dataType: "jsonp",
        parse: function(data) {
            var rows = new Array();
            for (var i = 0; i < data.length; i++) {
                var str = "";
                if (data[i].Year && data[i].Year.toString().length > 0)
                    str += data[i].Year;
                if (data[i].Make && data[i].Make.length > 0)
                    str += " " + data[i].Make;
                if (data[i].Model && data[i].Model.length > 0)
                    str += " " + data[i].Model;
                if (data[i].Trim && data[i].Trim.length > 0)
                    str += " " + data[i].Trim;
                rows[i] = { data: data[i], value: $.trim(str), result: $.trim(str) };
            }
            return rows;
        },
        formatItem: function(row, i, n) {
            if (row.Model.toLowerCase().substr(0, 11) == "range rover") {
                return ((row.Year) ? (row.Year + " ") : "") + row.Model + " " + row.Trim;
            } else {
                return ((row.Year) ? (row.Year + " ") : "") + row.Make + " " + row.Model + " " + row.Trim;
            }
        }
    });

    initialSellAutocomplete(s_year);
    initialZipAutocomplete();

    $("form#buy-form").submit(function() {
        validateBuyerForm();        
        if ($('#zipcode').valid()) {
            if ($('#buy-searchinput').val() == 'e.g. BMW 3 Series')
                return false;
            else {
                var _zip = $('#zipcode').val();
                location.href = "buy/search/q=" + $('#buy-searchinput').val().replace('/', ' ').replace('-', ' ') + ";z=" + _zip + ";dist=" + _dist;
                return false;
            }
        } else
            return false;
    });
}
function validateBuyerForm() {
    $("form#buy-form").validate({
        highlight: function(element) {
            $(element).addClass("error");
        },
        unhighlight: function(element) {
            $(element).removeClass("error");
        },
        onkeyup: false,
        onblur: false,
        errorElement: "p",
        errorContainer: $("#notice-msg"),
        errorPlacement: function(error, element) {
            $("#notice-msg").empty().show();
            error.appendTo($("#notice-msg"));
        },
        errorClass: "warning",
        messages: {
            zipcode: {
                required: "Please enter your zip code",
                equalTo: "Please enter your zip code."
            }
        },
        rules: {
            zipcode: "uszipcode"
        },
        debug: false
    });
}
function initialZipAutocomplete() {
    $('#zipcode').autocomplete(svc_url + "/search/getzip", {
        width: 85,
        scrollHeight: 360,
        delay: 50,
        selectFirst: true,
        max: 10,
        matchContains: true,
        autoFill: false,
        mustMatch: true,
        dataType: "jsonp",
        parse: function(data) {
            var rows = new Array();
            for (var i = 0; i < data.length; i++) {
                var str = "";
                rows[i] = { data: data[i], value: data[i].Zipcode, result: data[i].Zipcode };
            }
            return rows;
        },
        formatItem: function(row, i, n) {
            return row.Zipcode + "<br/>" + row.City + ", " + row.State;
        }
    });
}

function initialSellAutocomplete(year) {
    $('#sell-searchinput').val("");
    $('#sell-searchinput').autocomplete(svc_url + "/search/getsellerac?y=" + year, {
        minChars: 2,
        width: 390,
        scrollHeight: 360,
        delay: 50,
        selectFirst: true,
        max: 10,
        matchContains: true,
        autoFill: false,
        dataType: "jsonp",
        parse: function(data) {
            var rows = new Array();
            for (var i = 0; i < data.length; i++) {
                var str = "";
                if (data[i].MakeName && data[i].MakeName.length > 0)
                    str += data[i].MakeName;
                if (data[i].ModelName && data[i].ModelName.length > 0)
                    str += " " + data[i].ModelName;
                if (data[i].TrimName && data[i].TrimName.length > 0)
                    str += " " + data[i].TrimName;
                rows[i] = { data: data[i], value: $.trim(str), result: $.trim(str) };
            }
            return rows;
        },
        formatItem: function(row, i, n) {
            return row.MakeName + " " + row.ModelName + " " + row.TrimName;
        }
    }).result(function(e, item) {
        var str = "/seller?o=search_ob5&yr=" + s_year;
        if (item.MakeName && item.MakeName.length > 0) {
            str += "&mk=";
            if ($.trim(item.MakeCode).length > 0)
                str += item.MakeCode;
            if ($.trim(item.MakeTruckCode).length > 0)
                str += "," + item.MakeTruckCode;
        }
        if (item.ModelName && item.ModelName.length > 0)
            str += "&md=" + item.ModelName;
        if (item.TrimName && item.TrimName.length > 0)
            str += "&tr=" + item.ModelId;
        location.href = str;
    });
}
