﻿(function($)
{
    $.fn.searchForm = function(o)
    {
        o = $.extend({
            btnSubmit: null,
            baseUrl: '/',
            isRefine: false
        }, o || {});

        this.submit(function()
        {
            DoSearch();
            return false;
        });

        var div = null;
        return this.each(function()
        {
            div = $(this);

            var btnId = '';
            if (o.btnSubmit)
            {
                btnId = $(o.btnSubmit).attr('id');
                $(o.btnSubmit).click(function()
                {
                    return DoSearch();
                });
            }

            var fields = $('input[type="text"]', div);
            for (var x = 0; x < fields.length; x++)
            {
                $(fields[x]).keypress(function(event)
                {
                    return HandleEnter(event);
                });
            }
        });

        function getName(input)
        {
            var name = input.attr('name');
            if (!(name && name.length > 0))
                name = input.attr('id');
            if (!(name && name.length > 0))
                name = input.attr('rel');

            return name;
        }

        function DoSearch()
        {
            var fields = $('select,input,textarea', div);
            var qs = '';
            var first = true;
            var fieldNames = [];

            var hasCat = false;
            for (var x = 0; x < fields.length; x++)
            {
                var id = getName($(fields[x]));
                var val = getVal($(fields[x]));
                fieldNames.push(id);

                if (id && id.length > 0 && val && val.length > 0)
                {
                    if (id != "tid")
                    {
                        if (!first) qs += '&';
                        else first = false;

                        qs += id + '=' + val;

                        if (id == "state_ids")
                        {
                            qs += "&region_ids=" + val;
                        } 
                        else if (id == "catId")
                        {
                            hasCat = true;
                        }
                    }
                }
            }
            if (qs.length > 0)
            {
                qs = '?' + qs;

                if (qs.charAt(qs.length - 1) == '&')
                    qs = qs.substr(0, qs.length - 1);
            }

            clearCompare();

            document.location = o.baseUrl + qs;
        }

        function getVal(field)
        {
            var val = field.val();
            if (val == 'on' && !field.is(':checked'))
            {
                val = '';
            } else if (val == 'on' && field.is(':checked'))
            {
                val = '1';
            }
            if (field.is('[type="button"]') || field.is('[type="submit"]'))
            {
                val = '';
            }

            return val;
        }

        function HandleEnter(e)
        {
            if (isEnterKeyEvent(e))
            {
                DoSearch();
                return false;
            }
            else
                return true;
        }

        function isEnterKeyEvent(e)
        {
            var key;
            var event;

            if (window.event)
            {
                event = window.event;
                key = window.event.keyCode;     //IE
            }
            else
            {
                key = e.which;     //firefox
                event = e;
            }
            return key == 13;
        }
        function isArray(obj)
        {
            if (obj == null)
                return false;

            if (obj.constructor.toString().indexOf("Array") == -1)
                return false;
            else
                return true;
        }
        function clearCompare()
        {
            try
            {
                var compareIds = new String();
                var cookieData = document.cookie.split(";");

                compareIds = getCompareData(cookieData);
                if (compareIds != null)
                {
                    var toks = compareIds.split("=");
                    if (toks.length > 1)
                    {
                        var tmpIds = toks[1].split(",");
                        var newComparIds = new String();
                        newComparIds = "CompareIds=";
                        compareIds = newComparIds;
                        if (compareIds != null)
                        {
                            if (compareIds.indexOf("path") < 0)
                            {
                                compareIds += ";path=/";
                            }
                            document.cookie = compareIds;
                        }
                    }
                }
            }
            catch (e) { }
        }
        function getCompareData(cookieData)
        {
            for (i = 0; i < cookieData.length; i++)
            {
                if (cookieData[i].indexOf("CompareIds") >= 0)
                {
                    return cookieData[i];
                }
            }
            return;
        }
    }
})(jQuery);

