﻿var active_dropdown = null;
var dropdownTypes = { standard: 1, from_to: 2, HorizontalSlider: 3, VerticalSlider: 4, StandardCheckBox: 5, VerticalGroupSlider: 6, RadioGroup: 7 }
var searchindex = 0;
var MySearchParameters = [];
var names = ['Shape', 'Weight', 'Color', 'Clarity'];
var allButtons = {};
var allButtonsDown = {};
var allButtonsDown2 = {};
var MySelectedLength = MySearchParameters.length;
var controls = { MinMax: [], DropDowns: [] };

function dropdown(name, type, data, labels, ExtraData) {
    this.name = name;
    this.type = type;
    this.data = data;
    this.labels = labels;
    this.ExtraData = ExtraData;
    this.AllSelected = false;
    controls.DropDowns[controls.DropDowns.length] = this;

    var first_time = true;

    this.jQueryObj = { main: {}, btn: {} };

    this.show = function () {
        if (first_time) {
            first_time = false;
        }
        if (active_dropdown != null) {
            //            active_dropdown.clean();
            //            active_dropdown.hide();
            active_dropdown.CleanAndHide();
        }
        if (name == 'Shape' || name == 'Weight' || name == 'Color' || name == 'Clarity') {
            for (var n in allButtons) {
                if (n != name) {
                    allButtons[n].css('zIndex', 2);
                }
            }


            for (var n in allButtonsDown) {
                if (n != name) {
                    allButtonsDown[n].css('zIndex', 0);
                }
            }
            for (var n in allButtonsDown2) {
                if (n != name) {
                    allButtonsDown2[n].css('zIndex', 0);
                }
            }
        }
        if (name == 'BlackInclusion' || name == 'OpenTableCrown' || name == 'TableInclusion') {
            for (var n in allButtonsDown) {
                if (n != name) {
                    allButtonsDown[n].css('zIndex', 2);
                }
            }

            for (var n in allButtons) {
                if (n != name) {
                    allButtons[n].css('zIndex', 0);
                }
            }
            for (var n in allButtonsDown2) {
                if (n != name) {
                    allButtonsDown2[n].css('zIndex', 0);
                }
            }
        }
        if (name == 'CutGrade' || name == 'Fluorescence' || name == 'Girdle') {
            for (var n in allButtonsDown2) {
                if (n != name) {
                    allButtonsDown2[n].css('zIndex', 2);
                }
            }

            for (var n in allButtons) {
                if (n != name) {
                    allButtons[n].css('zIndex', 0);
                }
            }
            for (var n in allButtonsDown) {
                if (n != name) {
                    allButtonsDown[n].css('zIndex', 0);
                }
            }
        }

        this.jQueryObj.main.css('display', 'block');
        this.jQueryObj.btn.css('zIndex', 0);
        active_dropdown = this;

        $(this).keypress(function (e) {
            if (e.which == 13) {
                this.ok();
            }
        });

        switch (this.type) {
            case dropdownTypes.from_to:
                var c = [];
                $('#' + name + '_rows div.FromToRow').each(
                  function (i, n) {
                      if ($('.fromInput', n).attr("disabled") == false) {
                          var from = $('.fromInput', n).val();
                          var to = $('.toInput', n).val();
                          c[i] = { 'from': from, 'to': to };
                      }
                  });
                $(this.jQueryObj.main).data('original3', c);
                $(':checked', this.jQueryObj.main).data('original', true);
                var from = $('#txt' + name + 'From').val();
                var to = $('#txt' + name + 'To').val();
                $(this.jQueryObj.main).data('original2', { from: from, to: to });
                break;
            case dropdownTypes.StandardCheckBox:
                $(':checked', this.jQueryObj.main).data('original', true);
                break;
            case dropdownTypes.VerticalSlider:
                var from = $('#' + name + 'From').val();
                var to = $('#' + name + 'To').val();
                $(this.jQueryObj.main).data('original', { from: from, to: to });

                if (name == 'Fluorescence') {
                    $(':checked', this.jQueryObj.main).data('original2', true);
                }

                if (name == "Girdle") {
                    var from = $('#txt' + name + 'From').val();
                    var to = $('#txt' + name + 'To').val();
                    $(this.jQueryObj.main).data('original2', { from: from, to: to });
                }
                break;
            case dropdownTypes.HorizontalSlider:
                var from = $('#' + name + 'From').val();
                var to = $('#' + name + 'To').val();
                $(this.jQueryObj.main).data('original', { from: from, to: to });
                if (name == 'Color') {
                    $(':checked', this.jQueryObj.main).data('original2', true);
                }
                break;
            case dropdownTypes.VerticalGroupSlider:

                var original = $.map(data, function (d) {

                    var from = $('#' + d.name + 'From').val();
                    var to = $('#' + d.name + 'To').val();
                    return { from: from, to: to };
                });

                $(this.jQueryObj.main).data('original', original);
                break;

            case dropdownTypes.RadioGroup:
                if ($("input[type='radio']:checked").val() == "aa") {
                    var from = $('#RapFrom').val();
                    var to = $('#RapTo').val();
                    if (from != '' || to != '') {
                        $(this.jQueryObj.main).data('original', { name: 'aa', from: from, to: to });
                    }

                }
                else {
                    if ($("input[type='radio']:checked").val() == "a") {
                        var from = $('#PriceFrom').val();
                        var to = $('#PriceTo').val();
                        if (from != '' || to != '') {
                            $(this.jQueryObj.main).data('original', { name: 'a', from: from, to: to });
                        }

                    }
                    else {
                        if ($("input[type='radio']:checked").val() == "b") {
                            var from = $('#TotalFrom').val();
                            var to = $('#TotalTo').val();
                            if (from != '' || to != '') {
                                $(this.jQueryObj.main).data('original', { name: 'b', from: from, to: to });
                            }


                        }
                        else {
                            var from = $('#Item').val();
                            if (from != '') {
                                $(this.jQueryObj.main).data('original', { name: 'c', from: from, to: '' });
                            }
                        }
                    }
                }
                break;
            default:
                break;
        }
    }

    this.ok = function () {
        var selected = {};
        var clearParameters = [];
        var Myselected = [];
        var MyclearParameters = [];

        switch (this.type) {
            case dropdownTypes.standard:
                var maxlength = 15; //length of value that you want to display
                var checked =
                    jQuery.map(
                        $(':checked', this.jQueryObj.main),
                        function (n, i) { return data[n.value]; }
                    );
                if (checked[0] == 'All' || checked == '') {
                    $('#txt' + this.name).val('All');
                    clearParameters[0] = this.name;
                }
                else {
                    var chained_value = checked.join(',');
                    // if value of textbox too long replace with 3 points
                    if (chained_value.length > maxlength) {
                        chained_value = chained_value.replace(chained_value.substr(maxlength), '...');
                    }
                    $('#txt' + this.name).val(chained_value);

                    selected[this.name] = jQuery.map(
                        $(':checked', this.jQueryObj.main),
                        function (n, i) { return n.value; }
                    );

                }

                break;
            case dropdownTypes.from_to:
                delete searchParameters.Weight;
                delete searchParameters.CaratsFrom;
                delete searchParameters.CaratsTo;
                delete searchParameters.WeightFrom;
                delete searchParameters.WeightTo;
                maxlength = 23; //length of value that you want to display
                var obj = this.jQueryObj.main;
                var checked = $(':checkbox:checked', obj);
                var unchecked = $(':checkbox:not(:checked)', obj);
                //                var all_checkbox = $('.' + name + ' :checkbox');
                //                var all_checked = all_checkbox.attr('checked');

                if ($('#txt' + name + 'From').val() == '0' && $('#txt' + name + 'To').val() == '99.99') {
                    $('#txt' + this.name).val('All');
                    clearParameters[0] = this.name;
                    MyclearParameters[MyclearParameters.length] = this.name;
                }
                else {
                    var from = $('#txt' + name + 'From').val();
                    var to = $('#txt' + name + 'To').val();
                    if (from != '' && to != '') {
                        value = from + '-' + to;
                        // if value of textbox too long replace with 3 points
                        if (value.length > maxlength) {
                            value = value.replace(value.substr(maxlength), '...');
                        }
                        $('#txt' + this.name).val(value);
                        selected[this.name] = { 'weight': { 'from': from, 'to': to} };
                        if (value != 'All') {
                            if (MySearchParameters[this.name] != undefined) {
                                var index = MySearchParameters[this.name];
                                MySearchParameters[index].value = value;
                            }
                            else {
                                var index = MySearchParameters.length;
                                Myselected[index] = { 'name': this.name, 'value': value };
                                Myselected[this.name] = index;
                            }
                        }
                    }
                    else {
                        if (checked.length != 0) {
                            selected[this.name] = { 'carats': [] };
                            var c = selected[this.name].carats;
                            value = '';
                            $('#' + name + '_rows div.FromToRow').each(
                           function (i, n) {
                               if ($('.fromInput', n).attr("disabled") == false) {
                                   var from = $('.fromInput', n).val();
                                   var to = $('.toInput', n).val();
                                   c[c.length] = { 'from': from, 'to': to };
                                   if (value == '') {
                                       value = value + from + '-' + to;
                                   }
                                   else {
                                       value = value + ',' + from + '-' + to;
                                   }
                               }
                           });
                            // if value of textbox too long replace with 3 points
                            if (value.length > maxlength) {
                                value = value.substr(0, maxlength) + '...';
                            }
                        }
                        if ((checked.length == 0) || (unchecked.length == 0)) {
                            value = 'All'
                            MyclearParameters[MyclearParameters.length] = this.name;
                        }
                        $('#txt' + this.name).val(value);
                        //for values in the Mysearch column
                        if (value != 'All') {
                            if (MySearchParameters[this.name] != undefined) {
                                var index = MySearchParameters[this.name];
                                MySearchParameters[index].value = value;
                            }
                            else {
                                var index = MySearchParameters.length;
                                Myselected[index] = { 'name': this.name, 'value': value };
                                Myselected[this.name] = index;
                            }
                        }
                    }
                }

                break;
            case dropdownTypes.HorizontalSlider:
                var value = 'All'
                //if checkbox checked needs to put "ALL"
                if ($('.' + name + ' :checkbox[name]').attr('checked') == false) {
                    value = $('#txt' + name + 'From').val() + ' - ' + $('#txt' + name + 'To').val();
                    selected[this.name] = $('#' + name + 'From').val() + ',' + $('#' + name + 'To').val();

                } else {
                    clearParameters[0] = this.name;
                    MyclearParameters[MyclearParameters.length] = this.name;
                }
                $('#txt' + this.name).val(value);

                //for values in the Mysearch column
                if (value != 'All') {
                    if (MySearchParameters[this.name] != undefined) {
                        var index = MySearchParameters[this.name];
                        MySearchParameters[index].value = value;
                    }
                    else {
                        var index = MySearchParameters.length;
                        Myselected[index] = { 'name': this.name, 'value': value };
                        Myselected[this.name] = index;
                    }

                }
                //add selected shadecolorcodes to the searchparameters
                if (name == "Color") {
                    selected['Shade'] = jQuery.map(
                        $('.Shade :checked'),
                        function (n, i) { return n.value; });

                    var unchecked = $(':checkbox:not(:checked)', obj);
                    checked =
                    jQuery.map(
                        $('.Shade :checked', obj),
                        function (n, i) { return ExtraData[n.value]; }
                    );

                    if ((checked.length == 0) || (unchecked.length == 0)) {
                        clearParameters[clearParameters.length] = 'Shade';
                    }
                    var chained_value = checked.join(' ,');
                    //for values in the Mysearch column
                    if (selected['Shade'].length != 0) {
                        if (MySearchParameters['Shade'] != undefined) {
                            var index = MySearchParameters['Shade'];
                            MySearchParameters[index].value = chained_value;
                        }
                        else {
                            var index = MySearchParameters.length;
                            Myselected[index] = { 'name': 'Shade', 'value': chained_value };
                            Myselected['Shade'] = index;
                        }

                    }

                }


                break;
            case dropdownTypes.VerticalSlider:
                value = 'All';
                var _fromIndex = $('#' + name + 'From').attr("selectedIndex");
                var _toIndex = $('#' + name + 'To').attr("selectedIndex");

                //the next if checkes if not everything is selected
                if (((_fromIndex == 0) && (_toIndex == data.length - 1)) == false) {
                    value = (data[_toIndex].desc + '-' + data[_fromIndex].desc);
                    selected[this.name] = (data[_toIndex].code + ',' + data[_fromIndex].code);
                } else {
                    clearParameters[0] = this.name;
                    //                    MyclearParameters[MyclearParameters.length] = this.name;
                }

                if (name == "Girdle") {
                    delete searchParameters.GirdleAvgFrom;
                    delete searchParameters.GirdleAvgTo;
                    var from = $('#txt' + name + 'From').val();
                    var to = $('#txt' + name + 'To').val();
                    if ((from != '' && to != '') && (from != '0' || to != '99.99')) {
                        selected['GirdleAvg'] = { 'Avg': { 'from': from, 'to': to} };
                        value = from + '-' + to;
                        if (value != 'All') {
                            if (MySearchParameters[this.name] != undefined) {
                                var index = MySearchParameters[this.name];
                                MySearchParameters[index].value = value;
                            }
                            else {
                                var index = MySearchParameters.length;
                                Myselected[index] = { 'name': this.name, 'value': value };
                                Myselected[this.name] = index;
                            }
                        }
                    }
                    else {
                        clearParameters[clearParameters.length] = 'GirdleAvg';

                    }
                }

                $('#txt' + this.name).val(value);

                //for values in the Mysearch column
                if (value != 'All') {
                    if (MySearchParameters[this.name] != undefined) {
                        var index = MySearchParameters[this.name];
                        MySearchParameters[index].value = value;
                    }
                    else {
                        var index = MySearchParameters.length;
                        Myselected[index] = { 'name': this.name, 'value': value };
                        Myselected[this.name] = index;
                    }
                }
                else {
                    MyclearParameters[MyclearParameters.length] = this.name;
                }

                if (name == "Fluorescence") {
                    selected['FluorescenceColor'] = jQuery.map(
                        $(':checked', this.jQueryObj.main),
                        function (n, i) { return n.value });

                    var unchecked = $(':checkbox:not(:checked)', obj);
                    if ($.browser.chrome) {
                        checked =
                    jQuery.map(
                      $(".Headline2 option:selected", obj),
                        function (n, i) { return ExtraData[n.value]; }
                    );
                    }
                    else {
                        checked =
                    jQuery.map(
                        $(':checked', obj),
                        function (n, i) { return ExtraData[n.value]; }
                    );
                    }
                    if ((checked.length == 0) || (unchecked.length == 0) || ((checked.length == 1) && (checked[0] == "None"))) {
                        clearParameters[clearParameters.length] = 'FluorescenceColor';
                    }
                }
                break;
            case dropdownTypes.VerticalGroupSlider:
                maxlength = 17; //length of value that you want to display
                chained_value = '';
                var valuelength = data[0].values.length;

                $.each(data, function (i, d) {

                    //for (x in data) {
                    var _fromIndex = $('#' + d.name + 'From').attr("selectedIndex");
                    var _toIndex = $('#' + d.name + 'To').attr("selectedIndex");
                    //the if checkes that not everything is selected
                    if (((_fromIndex == 0) && (_toIndex == valuelength - 1)) == false) {
                        value = (d.values[_toIndex].desc + '-' + d.values[_fromIndex].desc);
                        selected[d.name] = (d.values[_toIndex].code + ',' + d.values[_fromIndex].code);

                        //for values in the Mysearch column
                        if (MySearchParameters[this.name] != undefined) {
                            var index = MySearchParameters[this.name];
                            MySearchParameters[index].value = value;
                        }
                        else {
                            var index = MySearchParameters.length;
                            MySearchParameters[index] = { 'name': this.name, 'value': value };
                            MySearchParameters[this.name] = index;
                        }
                    }
                    else {
                        value = 'All';
                        clearParameters[clearParameters.length] = this.name;
                        MyclearParameters[MyclearParameters.length] = this.name;
                    }
                    if (chained_value == '') {
                        chained_value = value;
                    }
                    else {
                        chained_value = chained_value + ',' + value;
                    }
                });
                if (chained_value == 'All,All,All') {
                    chained_value = 'All';
                }
                // if value of textbox too long replace with 3 points
                if (chained_value.length > maxlength) {
                    chained_value = chained_value.replace(chained_value.substr(maxlength), '...');
                }
                $('#txt' + this.name).val(chained_value);


                break;

            case dropdownTypes.StandardCheckBox:
                var clearParameters = [];
                maxlength = 21; //length of value that you want to display
                var obj = this.jQueryObj.main;
                var unchecked = $(':checkbox:not(:checked)', obj);
                checked =
                    jQuery.map(
                        $(':checked', this.jQueryObj.main),
                        function (n, i) { return data[n.value]; }
                    );
                if ((checked.length == 0) || (unchecked.length == 0)) {
                    $('#txt' + this.name).val('All');
                    clearParameters[0] = this.name;
                    MyclearParameters[0] = this.name;
                }
                else {
                    chained_value = checked.join(',');
                    // if value of textbox too long replace with 3 points
                    if (chained_value.length > maxlength) {
                        chained_value = (chained_value.replace(chained_value.substr(maxlength), '...'));
                    }
                    $('#txt' + this.name).val(chained_value);

                    //for values in the Mysearch column
                    if (chained_value != 'All') {

                        if (MySearchParameters[this.name] != undefined) {
                            var index = MySearchParameters[this.name];
                            MySearchParameters[index].value = chained_value;
                        }
                        else {
                            var index = MySearchParameters.length;
                            Myselected[index] = { 'name': this.name, 'value': chained_value };
                            Myselected[this.name] = index;
                        }

                    }
                    selected[this.name] = jQuery.map(
                        $(':checked', this.jQueryObj.main),
                        function (n, i) { return n.value; }
                    );
                }
                break;
            case dropdownTypes.RadioGroup:
                delete searchParameters.Price;
                delete searchParameters.RapFrom;
                delete searchParameters.RapTo;
                delete searchParameters.PricePerCaratFrom;
                delete searchParameters.TotalPriceFrom;
                delete searchParameters.PricePerCaratTo;
                delete searchParameters.TotalPriceTo;
                delete searchParameters.Item;
                var from = $('.txt' + name + 'From').val();
                var to = $('.txt' + name + 'To').val();
                var value = 'All';

                if ($("input[type='radio']:checked").val() == "aa") {
                    MyclearParameters[MyclearParameters.length] = 'PPC';
                    MyclearParameters[MyclearParameters.length] = 'Total';
                    MyclearParameters[MyclearParameters.length] = 'Item';
                    var from = $('#RapFrom').val();
                    var to = $('#RapTo').val();
                    if (from != '' || to != '') {
                        value = from + '-' + to;
                        selected['Price'] = { 'Rap': { 'from': from, 'to': to} };

                        //add to mysearchparameters
                        if (MySearchParameters['RAP'] != undefined) {
                            var index = MySearchParameters['RAP'];
                            MySearchParameters[index].value = value;
                        }
                        else {
                            var index = MySearchParameters.length;
                            MySearchParameters[index] = { 'name': 'RAP', 'value': value };
                            MySearchParameters['RAP'] = index;
                        }
                    }
                    else {
                        MyclearParameters[MyclearParameters.length] = 'RAP';
                    }

                }
                else {

                    if ($("input[type='radio']:checked").val() == "a") {
                        MyclearParameters[MyclearParameters.length] = 'RAP';
                        MyclearParameters[MyclearParameters.length] = 'Total';
                        MyclearParameters[MyclearParameters.length] = 'Item';
                        var from = $('#PriceFrom').val();
                        var to = $('#PriceTo').val();
                        if (from != '' || to != '') {
                            value = from + '-' + to;
                            selected['Price'] = { 'PerCarat': { 'from': from, 'to': to} };

                            //add to mysearchparameters
                            if (MySearchParameters['PPC'] != undefined) {
                                var index = MySearchParameters['PPC'];
                                MySearchParameters[index].value = value;
                            }
                            else {
                                var index = MySearchParameters.length;
                                MySearchParameters[index] = { 'name': 'PPC', 'value': value };
                                MySearchParameters['PPC'] = index;
                            }
                        }
                        else {
                            MyclearParameters[MyclearParameters.length] = 'PPC';
                        }

                    }
                    else {
                        if ($("input[type='radio']:checked").val() == "b") {
                            MyclearParameters[MyclearParameters.length] = 'RAP';
                            MyclearParameters[MyclearParameters.length] = 'PPC';
                            MyclearParameters[MyclearParameters.length] = 'Item';
                            var from = $('#TotalFrom').val();
                            var to = $('#TotalTo').val();
                            if (from != '' || to != '') {
                                value = from + '-' + to;
                                selected['Price'] = { 'Total': { 'from': from, 'to': to} };

                                //add to mysearchparameters
                                if (MySearchParameters['Total'] != undefined) {
                                    var index = MySearchParameters['Total'];
                                    MySearchParameters[index].value = value;
                                }
                                else {
                                    var index = MySearchParameters.length;
                                    MySearchParameters[index] = { 'name': 'Total', 'value': value };
                                    MySearchParameters['Total'] = index;
                                }
                            }
                            else {
                                MyclearParameters[MyclearParameters.length] = 'Total';
                            }

                        }
                        else {
                            MyclearParameters[MyclearParameters.length] = 'RAP';
                            MyclearParameters[MyclearParameters.length] = 'PPC';
                            MyclearParameters[MyclearParameters.length] = 'Total';
                            var from = $('#TotalFrom').val();
                            var from = $('#Item').val();
                            if (from != '') {
                                value = from;
                                selected['Item'] = value;

                                //add to mysearchparameters
                                if (MySearchParameters['Item'] != undefined) {
                                    var index = MySearchParameters['Item'];
                                    MySearchParameters[index].value = value;
                                }
                                else {
                                    var index = MySearchParameters.length;
                                    MySearchParameters[index] = { 'name': 'Item', 'value': value };
                                    MySearchParameters['Item'] = index;
                                }
                            }
                            else {
                                MyclearParameters[MyclearParameters.length] = 'Item';
                            }
                        }
                    }
                }
                $('#txt' + this.name).val(value);
                break;
            default:
                break;
        }

        this.hide();

        $.extend(searchParameters, selected);

        if (clearParameters.length > 0) {
            // fix for verticalGroup
            for (var i in clearParameters) {
                delete searchParameters[clearParameters[i]];
            }
        }
        $.extend(MySearchParameters, Myselected);

        var p = $('.MySearch p');

        if (MyclearParameters.length > 0) {
            // fix for verticalGroup
            for (var i in MyclearParameters) {
                //                delete MySearchParameters[MyclearParameters[i]];
                if (MySearchParameters[MyclearParameters[i]] != undefined) {
                    var index = MySearchParameters[MyclearParameters[i]];
                    MySearchParameters.splice(index, 1);
                    delete MySearchParameters[MyclearParameters[i]];

                    for (var i in MySearchParameters) {
                        var myname = MySearchParameters[i].name;
                        MySearchParameters[myname] = i;
                    }

                    for (var i = MySearchParameters.length; i < 18; i++) {
                        $('#TitleMySearch' + i).html('');
                        $('#MySearch' + i).html('');
                    }
                }
            }
        }

        for (var i in MySearchParameters) {
            $('#TitleMySearch' + i).html(MySearchParameters[i].name + ': ');
            $('#MySearch' + i).html(MySearchParameters[i].value);
        }

    }

    this.cleanText = function () {
        var radiobtn = $("input[type='radio']:checked").val();
        if (radiobtn == "aa") {
            $('#RapFrom').attr('readOnly', false);
            $('#RapTo').attr('readOnly', false);
            $('#PriceFrom').attr('readOnly', true).val('');
            $('#PriceTo').attr('readOnly', true).val('');
            $('#TotalFrom').attr('readOnly', true).val('');
            $('#TotalTo').attr('readOnly', true).val('');
            $('#Item').attr('readOnly', true).val('');

        }
        else {
            if (radiobtn == "a") {
                $('#PriceFrom').attr('readOnly', false);
                $('#PriceTo').attr('readOnly', false);
                $('#RapFrom').attr('readOnly', true).val('');
                $('#RapTo').attr('readOnly', true).val('');
                $('#TotalFrom').attr('readOnly', true).val('');
                $('#TotalTo').attr('readOnly', true).val('');
                $('#Item').attr('readOnly', true).val('');
            }
            else {
                if (radiobtn == "b") {
                    $('#TotalFrom').attr('readOnly', false);
                    $('#TotalTo').attr('readOnly', false);
                    $('#RapFrom').attr('readOnly', true).val('');
                    $('#RapTo').attr('readOnly', true).val('');
                    $('#PriceFrom').attr('readOnly', true).val('');
                    $('#PriceTo').attr('readOnly', true).val('');
                    $('#Item').attr('readOnly', true).val('');

                }
                else {
                    $('#Item').attr('readOnly', false);
                    $('#RapFrom').attr('readOnly', true).val('');
                    $('#RapTo').attr('readOnly', true).val('');
                    $('#TotalFrom').attr('readOnly', true).val('');
                    $('#TotalTo').attr('readOnly', true).val('');
                    $('#PriceFrom').attr('readOnly', true).val('');
                    $('#PriceTo').attr('readOnly', true).val('');
                }
            }
        }

        // $("input[type='text']").val('');

    }

    this.clean = function () {
        switch (this.type) {
            case dropdownTypes.standard:
                this.jQueryObj.checkboxes.attr('checked', false);
                //$('.' + name + ' :checkbox').attr('checked', false);
                break;
            case dropdownTypes.StandardCheckBox:
                this.jQueryObj.checkboxes.attr('checked', false).parent().removeClass('Selected');
                break;
            case dropdownTypes.from_to:
                this.jQueryObj.from.val('0');
                this.jQueryObj.to.val('99.99');

                this.SetDefaults();
                break;
            case dropdownTypes.HorizontalSlider:
                this.jQueryObj.Shade.find(':checked').attr('checked', false);
                this.jQueryObj.LiShade.removeClass('Selected');
                this.SetDefaults(); //call SetDefaults
                break;
            case dropdownTypes.VerticalSlider:
                this.jQueryObj.checkboxes.parent().removeClass('Selected');
                this.SetDefaults(); //call SetDefaults
                break;
            case dropdownTypes.VerticalGroupSlider:
                this.SetDefaults(); //call SetDefaults
                break;
            case dropdownTypes.RadioGroup:
                this.SetDefaults();
                break;
            default:
                break;
        }
    }

    this.hide = function () {
        this.jQueryObj.main.css('display', 'none');
        active_dropdown = null;

        switch (this.type) {
            case dropdownTypes.from_to:
                $(':checkbox', this.jQueryObj.main).removeData('original');
                $(this.jQueryObj.main).removeData('original2');
                break;
            case dropdownTypes.StandardCheckBox:
                $(':checkbox', this.jQueryObj.main).removeData('original');
                break;
            case dropdownTypes.VerticalSlider:
                $(this.jQueryObj.main).removeData('original');
                if (name == 'Fluorescence') {
                    $(this.jQueryObj.main).removeData('original2');
                }
                if (name == "Girdle") {
                    $(this.jQueryObj.main).removeData('original2');
                }
                break;
            case dropdownTypes.HorizontalSlider:
                $(this.jQueryObj.main).removeData('original');
                if (name == 'Color') {
                    $(this.jQueryObj.main).removeData('original2');
                }
                break;
            case dropdownTypes.VerticalGroupSlider:
                $(this.jQueryObj.main).removeData('original');
                break;
            case dropdownTypes.RadioGroup:
                $(this.jQueryObj.main).removeData('original');
                break;
            default:
                break;
        }
    }


    this.CleanAndHide = function () {
        switch (this.type) {
            case dropdownTypes.from_to:
                if (searchParameters[this.name] != undefined || searchParameters['CaratsFrom'] != undefined || searchParameters['WeightFrom'] != undefined) {
                    this.CleanUnSavedItems();
                    this.hide();
                }
                else {
                    this.clean();
                    this.hide();
                }
                break;
            case dropdownTypes.StandardCheckBox:
                if (searchParameters[this.name] != undefined) {
                    this.CleanUnSavedItems();
                    this.hide();
                }
                else {
                    this.clean();
                    this.hide();
                }
                break;

            case dropdownTypes.VerticalGroupSlider:
                var empty = true;
                $.each(this.data, function (d) {
                    empty = empty && (searchParameters[d.name] == undefined);
                });

                if (empty) {
                    this.CleanUnSavedItems();
                    this.hide();
                } else {
                    this.clean();
                    this.hide();
                }
                break;
            case dropdownTypes.VerticalSlider:
                if (searchParameters[this.name] != undefined || searchParameters['GirdleAvg'] != undefined || searchParameters['FluorescenceColor'] != undefined) {
                    this.CleanUnSavedItems();
                    this.hide();
                }
                else {
                    this.clean();
                    this.hide();
                }
                break;
            case dropdownTypes.HorizontalSlider:
                if (searchParameters[this.name] != undefined || searchParameters['Shade'] != undefined) {
                    this.CleanUnSavedItems();
                    this.hide();
                }
                else {
                    this.clean();
                    this.hide();
                }
                break;
            case dropdownTypes.RadioGroup:
                if (searchParameters[this.name] != undefined || searchParameters['Item'] != undefined) {
                    this.CleanUnSavedItems();
                    this.hide();
                }
                else {
                    this.clean();
                    this.hide();
                }
                break;
            default:
                if (searchParameters[this.name] != undefined) {
                    this.CleanUnSavedItems();
                    this.hide();
                }
                else {
                    this.clean();
                    this.hide();
                }
                break;
        }
    }


    this.CleanUnSavedItems = function () {
        switch (this.type) {
            case dropdownTypes.from_to:
                var original3 = $(this.jQueryObj.main).data('original3');
                $(':checkbox', this.jQueryObj.main).each(function (i, n) {
                    if (!$(n).data('original')) {
                        $(n).attr('checked', false);
                        $(n).parent().find('.FieldInput3').attr("disabled", "disabled");
                        $(n).parent().find('.fromInput').val(data[i].from);
                        $(n).parent().find('.toInput').val(data[i].to);

                    }
                    else {
                        $(n).attr('checked', true);
                        $(n).parent().find('.FieldInput3').removeAttr("disabled");
                        $(n).parent().find('.fromInput').val(original3[i].from);
                        $(n).parent().find('.toInput').val(original3[i].to);
                    }
                });
                var original2 = $(this.jQueryObj.main).data('original2');
                var from = original2.from;
                var to = original2.to;
                $('#txt' + name + 'From').val(from);
                $('#txt' + name + 'To').val(to);
                break;
            case dropdownTypes.StandardCheckBox:
                $(':checkbox', this.jQueryObj.main).each(function (index) {
                    if (!$(this).data('original')) {
                        $(this).attr('checked', false).parent().removeClass('Selected');
                    }
                    else {
                        $(this).attr('checked', true).parent().addClass('Selected');
                    }
                });
                break;
            case dropdownTypes.VerticalSlider:
                var original = $(this.jQueryObj.main).data('original');
                var _fromIndex = original.from;
                var _toIndex = original.to;

                setSliderValues(name, _fromIndex, _toIndex);
                if (name == 'Fluorescence') {
                    $(':checkbox', this.jQueryObj.main).each(function (index) {
                        if (!$(this).data('original2')) {
                            $(this).attr('checked', false).parent().removeClass('Selected');
                        }
                    });
                }
                if (name == "Girdle") {
                    var original2 = $(this.jQueryObj.main).data('original2');
                    var from = original2.from;
                    var to = original2.to;
                    $('#txt' + name + 'From').val(from);
                    $('#txt' + name + 'To').val(to);

                }

                break;
            case dropdownTypes.HorizontalSlider:
                var original = $(this.jQueryObj.main).data('original');
                var _fromIndex = original.from;
                var _toIndex = original.to;

                setSliderValues(name, _fromIndex, _toIndex);
                if (name == 'Color') {
                    $(':checkbox', this.jQueryObj.main).each(function (index) {
                        if (!$(this).data('original2')) {
                            $(this).attr('checked', false).parent().removeClass('Selected');
                        }
                    });
                }
                break;
            case dropdownTypes.VerticalGroupSlider:
                var x;
                var original = $(this.jQueryObj.main).data('original');
                for (x in data) {
                    var _fromIndex = original[x].from;
                    var _toIndex = original[x].to;
                    setSliderValues(data[x].name, _fromIndex, _toIndex);

                }
                break;
            case dropdownTypes.RadioGroup:
                var original = $(this.jQueryObj.main).data('original');
                if (original != null) {
                    switch (original.name) {
                        case 'aa':
                            $("input[type='radio']:eq(0)").attr('checked', 'checked');
                            var from = original.from;
                            var to = original.to;
                            $('#Item').attr('readOnly', true).val('');
                            $('#TotalFrom').attr('readOnly', true).val('');
                            $('#TotalTo').attr('readOnly', true).val('');
                            $('#PriceFrom').attr('readOnly', true).val('');
                            $('#PriceTo').attr('readOnly', true).val('');

                            $('#RapFrom').attr('readOnly', false).val(from);
                            $('#RapTo').attr('readOnly', false).val(to);
                            break;
                        case 'a':
                            $("input[type='radio']:eq(1)").attr('checked', 'checked');
                            var from = original.from;
                            var to = original.to;
                            $('#Item').attr('readOnly', true).val('');
                            $('#TotalFrom').attr('readOnly', true).val('');
                            $('#TotalTo').attr('readOnly', true).val('');
                            $('#PriceFrom').attr('readOnly', false).val(from);
                            $('#PriceTo').attr('readOnly', false).val(to);
                            $('#RapFrom').attr('readOnly', true).val('');
                            $('#RapTo').attr('readOnly', true).val('');

                            break;
                        case 'b':
                            $("input[type='radio']:eq(2)").attr('checked', 'checked');
                            var from = original.from;
                            var to = original.to;
                            $('#Item').attr('readOnly', true).val('');
                            $('#TotalFrom').attr('readOnly', true).val(from);
                            $('#TotalTo').attr('readOnly', true).val(to);
                            $('#PriceFrom').attr('readOnly', true).val('');
                            $('#PriceTo').attr('readOnly', true).val('');
                            $('#RapFrom').attr('readOnly', true).val('');
                            $('#RapTo').attr('readOnly', true).val('');


                            break;
                        case 'c':
                            $("input[type='radio']:eq(3)").attr('checked', 'checked');
                            var from = original.from;
                            $('#Item').attr('readOnly', false).val(from);
                            $('#TotalFrom').attr('readOnly', true).val('');
                            $('#TotalTo').attr('readOnly', true).val('');
                            $('#PriceFrom').attr('readOnly', true).val('');
                            $('#PriceTo').attr('readOnly', true).val('');
                            $('#RapFrom').attr('readOnly', true).val('');
                            $('#RapTo').attr('readOnly', true).val('');


                            break;
                        default:
                            break;

                    }
                }
                break;
            default:
                break;
        }

    }

    this.stop = function (event, ui) {
        if (this.name != 'Clarity') return;

        var from = $('#' + name + 'From');
        var to = $('#' + name + 'To');

        var _fromIndex = from.attr("selectedIndex");
        var _toIndex = to.attr("selectedIndex");

        if (data[_fromIndex].code > 100) {
            from.val(data[_fromIndex].master).change();
        }

        if (data[_toIndex].code > 100) {
            to.val(data[_toIndex].master).change();
        }
    }

    this.change = function (event, ui) {
        switch (this.type) {
            case dropdownTypes.HorizontalSlider:
                var txtFrom = $('#txt' + name + 'From');
                var txtTo = $('#txt' + name + 'To');
                var _fromIndex = $('#' + name + 'From').attr("selectedIndex");
                var _toIndex = $('#' + name + 'To').attr("selectedIndex");
                txtFrom.val(data[_fromIndex].desc);
                txtTo.val(data[_toIndex].desc);

                if ((_fromIndex == 0) && (_toIndex == data.length - 1)) {
                    $('.' + name + ' :checkbox[name]').attr('checked', true);
                }
                else {
                    $('.' + name + ' :checkbox[name]').attr('checked', false);
                }

                changeHorizontalLabels(_fromIndex, _toIndex);
                setLabelsStyle(_fromIndex, _toIndex);
                break;
            case dropdownTypes.VerticalSlider:
                if (name == "Girdle") {
                    $('#txt' + name + 'From').val('');
                    $('#txt' + name + 'To').val('');
                }
                var _fromIndex = $('#' + name + 'From').attr("selectedIndex");
                var _toIndex = $('#' + name + 'To').attr("selectedIndex");
                setVerticalLabelsStyle(_fromIndex, _toIndex);
                break;
            case dropdownTypes.VerticalGroupSlider:
                var x;
                for (x in data) {
                    var _fromIndex = $('#' + data[x].name + 'From').attr("selectedIndex");
                    var _toIndex = $('#' + data[x].name + 'To').attr("selectedIndex");
                    setLabelsGroupStyle(_fromIndex, _toIndex, x);
                }
                break;

            default:
                break;
        }
    }

    this.checkValues = function () {
        switch (this.type) {
            case dropdownTypes.VerticalSlider:
                if (name == "Girdle") {
                    if ($('#txt' + name + 'From').val() == '' && $('#txt' + name + 'To').val() == '')
                        this.selectAll();
                }
                break;
            default:
                break;
        }
    }
    // change style of the labels in Vertical to blue and bold when they are selected
    function setVerticalLabelsStyle(fromIndex, toIndex) {
        var labels = $('#' + name + ' ol li');

        for (var i in data) {

            $('.lbl_' + i, labels).each(function () {
                var elem = $(this).parent(); // parent is li
                if (i >= fromIndex && i <= toIndex) {
                    elem.addClass('Selected');
                } else {
                    elem.removeClass('Selected');
                }
            });
        }
    }

    // change style of the labels in horizontal to blue and bold when they are selected
    function setLabelsStyle(fromIndex, toIndex) {
        var labels = $('#' + name + ' ol li');

        var masterFromIndex = getMasterIndex(fromIndex);
        var masterToIndex = getMasterIndex(toIndex);

        for (var i in data) {

            //$('.lbl_' + i, labels).each(function () {
            //var elem = $(this).parent(); // parent is li
            var elem = $(labels[i]);
            if (i >= masterFromIndex && i <= masterToIndex) {
                elem.addClass('Selected');
            } else {
                elem.removeClass('Selected');
            }
            //});
        }
    }

    function getMasterIndex(index) {
        var master = 0;
        while (master < data.length && data[master].code != data[index].master) master++;
        return master;
    }
    // change style of the labels in Vertical Group to blue and bold when they are selected
    function setLabelsGroupStyle(fromIndex, toIndex, x) {

        var labels = $('#' + data[x].name + ' ol li');

        for (var i in data[x].values) {

            $('.lbl_' + i, labels).each(function () {
                var elem = $(this).parent(); // parent is li
                if (i >= fromIndex && i <= toIndex) {
                    elem.addClass('Selected');
                } else {
                    elem.removeClass('Selected');
                }
            });
        }

    }

    function changeHorizontalLabels(fromIndex, toIndex) {
        var labels = $('#' + name + ' ol li');
        // set values to default
        $('.ui-slider-label', labels).each(function () {
            var elem = $(this);
            var val = elem.data('original');
            if (typeof val != 'undefined' && val != null && val != '') {
                elem.html(val).data('original', '').removeClass('selected');
            }
        });
        changelabel(fromIndex, labels);
        changelabel(toIndex, labels);
    }

    function changelabel(index, labels) {

        var targetIndex = 0;

        while (data[targetIndex].code != data[index].master) targetIndex++;

        //$('.lbl_' + targetIndex, labels).each(function () {
        //    var elem = $(this);
        //var elem = $('.lbl_' + targetIndex, labels);
        var elem = labels.find('.lbl_' + targetIndex);

        elem.data('original', elem.html());
        elem.html(data[index].desc.replace('-', '&#8722;'));
        //elem.addClass('selected');
        //});
    }



    this.selectAll = function () {

        switch (this.type) {
            case dropdownTypes.standard:
                if ($('.' + name + ' :checkbox').attr('checked') == true) {
                    $('.' + name + ' :checkbox').attr('checked', true);
                }
                else {
                    $('.' + name + ' :checkbox').attr('checked', false);
                }

                break;
            case dropdownTypes.HorizontalSlider:
                // set the value of <name>from and <name>To
                var from = data[0];
                var to = data[data.length - 1];
                $('#txt' + name + 'From').val(from.desc);
                $('#txt' + name + 'To').val(to.desc);
                //$('#' + name + 'From').val(from.code);
                //$('#' + name + 'To').val(to.code);

                setSliderValues(name, from.code, to.code);
                //                setSliderInternal(name, function (s) {
                //                    s.slider("values", 0, 0);
                //                    s.slider("values", 1, data.length);
                //                });

                break;
            case dropdownTypes.VerticalSlider:
                //if (!this.AllSelected) {
                var _fromIndex
                var _toIndex
                from = data[0];
                to = data[data.length - 1];
                //                $('#' + name + 'From').val(from.code);
                //                $('#' + name + 'To').val(to.code);

                setSliderValues(name, from.code, to.code);
                //                setSliderInternal(name, function (s) {
                //                    s.slider("values", 0, 0);
                //                    s.slider("values", 1, data.length);

                //                });
                //}
                //this.AllSelected = true;
                break;
            case dropdownTypes.VerticalGroupSlider:
                var x;
                //var datalength = data.length;
                var valuelength = data[0].values.length;
                for (x in data) {
                    from = data[x].values[0];
                    to = data[x].values[valuelength - 1];
                    $('#' + data[x].name + 'From').val(from.code);
                    $('#' + data[x].name + 'To').val(to.code);

                    setSliderInternal(data[x].name, function (s) {
                        s.slider("values", 0, 0);
                        s.slider("values", 1, valuelength);
                    });

                }
                break;
            default:
                break;
        }
    }
    this.clickAll = function () {
        switch (this.type) {
            case dropdownTypes.standard:
                this.selectAll();
                break;
            case dropdownTypes.HorizontalSlider:
                // if already clicked do nothing
                if ($('.' + name + ' :checkbox[name]').attr('checked') == false) {
                    this.selectAll();
                }
                else {
                    this.SetDefaults();
                }
        }
    }

    this.ValidateNumeric = function () {
        var keyCode = window.event.keyCode;
        if (keyCode > 57 || keyCode < 46 || keyCode == 47)
            window.event.returnValue = false;
    }

    this.UncheckCheckBoxAll = function () {
        //

        var all_checkbox = $('input[name=chk' + name + 'All');
        var all_checked = all_checkbox.attr('checked');

        var unchecked = $(':checkbox:not(:checked)', this.jQueryObj.main);

        if (all_checked) {
            all_checkbox.attr('checked', false);
        } else {
            if (unchecked.length == 1) {
                all_checkbox.attr('checked', true);
            }
        }

        //        if ($('input[name=chk' + name + 'All').attr('checked') == true) {
        //            $('input[name=chk' + name + 'All').attr('checked', false);
        //        }
    }

    this.Initialize = function () {
        this.initializing = true;
        // code here

        this.initialized = true;
        this.initializing = false;
    }

    this.SetDefaults = function () {

        if (!this.initialized && !this.initializing) {
            this.Initialize();
        }

        switch (type) {
            //            case dropdownTypes.standard:                                                
            //                $('#txt' + this.name).attr('readOnly', true);                                                
            //                break;                                                
            case dropdownTypes.HorizontalSlider:

                $('.' + name + ' :checkbox[name]').attr('checked', true);
                $('#txt' + this.name).attr('readOnly', true);
                $('#txt' + name + 'From').attr('readOnly', true);
                $('#txt' + name + 'To').attr('readOnly', true);
                this.selectAll();
                //add style to colorShade checkboxes
                $('.' + this.name + ' :checkbox').click(
                 function () {
                     if ($(this).attr('checked')) {
                         $(this).parent().addClass('Selected');
                     }
                     else {
                         $(this).parent().removeClass('Selected');
                     }
                 }
                );

                break;
            case dropdownTypes.VerticalSlider:
                $('#txt' + this.name).attr('readOnly', true);
                $('.' + name + ' :checkbox').attr('checked', false);
                this.selectAll();
                $('.GirdleAvg').each(
                    function (i, n) {
                        var txtMin = $('#txt' + name + 'From');
                        var txtMax = $('#txt' + name + 'To');
                        var min = '0';
                        var max = '99.99';


                        txtMin.focusout(
                            function () {
                                if (txtMax.val() == '') {
                                    txtMax.val(max);
                                }
                                if (txtMin.val() == '') {
                                    txtMin.val(min);
                                }
                                if (txtMax.val() != '' && txtMin.val() != '') {
                                    validateFromTo(txtMin, txtMax.val(), parseFloat(min), parseFloat(max), 'from', this.name);
                                }
                            }
                            );

                        txtMax.focusout(
                            function () {
                                if (txtMax.val() == '') {
                                    txtMax.val(max);
                                }
                                if (txtMin.val() == '') {
                                    txtMin.val(min);
                                }
                                if (txtMax.val() != '' && txtMin.val() != '') {
                                    validateFromTo(txtMax, txtMin.val(), parseFloat(min), parseFloat(max), 'to', this.name);
                                }
                            }
                            );

                    });

                //add style to Fluorcolor checkboxes
                $('.' + this.name + ' :checkbox').click(
                     function () {
                         if ($(this).attr('checked')) {
                             $(this).parent().addClass('Selected');
                         }
                         else {
                             $(this).parent().removeClass('Selected');
                         }
                     }
                );
                break;
            case dropdownTypes.VerticalGroupSlider:
                $('#txt' + this.name).attr('readOnly', true);
                this.selectAll();
                break;
            case dropdownTypes.from_to:
                // set all from to values
                $('#txt' + this.name).attr('readOnly', true);
                $('#' + name + '_rows div.FromToRow').each(
                    function (i, n) {
                        var from = data[i].from;
                        var to = data[i].to;
                        var txtFrom = $('.fromInput', n);
                        var txtTo = $('.toInput', n);
                        var txtMin = $('#txt' + name + 'From');
                        var txtMax = $('#txt' + name + 'To');
                        var min = '0';
                        var max = '99.99';

                        //                        if (txtMax.val() == '') {
                        //                            txtMax.val(max);
                        //                        }
                        //                        if (txtMin.val() == '') {
                        //                            txtMin.val(min);
                        //                        }

                        $('.' + name + ' :checkbox').attr('checked', false);
                        txtFrom.val(from).attr("disabled", "disabled");
                        txtTo.val(to).attr("disabled", "disabled");

                        $(':checkbox', n).click(function () {
                            if ($(this).attr('checked')) {
                                txtFrom.removeAttr("disabled");
                                txtTo.removeAttr("disabled");
                                txtMin.val('');
                                txtMax.val('');

                            } else {
                                txtFrom.attr("disabled", "disabled");
                                txtTo.attr("disabled", "disabled");
                                txtFrom.val(from);
                                txtTo.val(to);

                            }
                        });

                        txtFrom.focusout(
                            function () {
                                validateFromTo(txtFrom, txtTo.val(), from, to, 'from', this.name);

                            }
                            );
                        txtTo.focusout(
                            function () {
                                validateFromTo(txtTo, txtFrom.val(), from, to, 'to', this.name);

                            }
                            );

                        txtMin.focusout(
                            function () {
                                if (txtMax.val() == '') {
                                    txtMax.val(max);
                                }
                                if (txtMin.val() == '') {
                                    txtMin.val(min);
                                }
                                validateFromTo(txtMin, txtMax.val(), parseFloat(min), parseFloat(max), 'from', this.name);

                            }
                            );
                        txtMax.focusout(
                            function () {
                                if (txtMax.val() == '') {
                                    txtMax.val(max);
                                }
                                if (txtMin.val() == '') {
                                    txtMin.val(min);
                                }
                                validateFromTo(txtMax, txtMin.val(), parseFloat(min), parseFloat(max), 'to', this.name);

                            }
                            );

                    });
                break;
            case dropdownTypes.StandardCheckBox:

                $('.' + this.name + ' :checkbox:not([name])').click(
            function () {
                if ($(this).attr('checked')) {
                    $(this).parent().addClass('Selected');
                }
                else {
                    $(this).parent().removeClass('Selected');
                }
            }
            );
                break;
            case dropdownTypes.RadioGroup:
                $('#txt' + this.name).attr('readOnly', true);
                $("input[type='radio']:eq(0)").attr('checked', 'checked');
                //$("input[type='text']").val('');
                $('#RapFrom').attr('readOnly', false).val('');
                $('#RapTo').attr('readOnly', false).val('');
                $('#PriceFrom').attr('readOnly', true).val('');
                $('#PriceTo').attr('readOnly', true).val('');
                $('#TotalFrom').attr('readOnly', true).val('');
                $('#TotalTo').attr('readOnly', true).val('');
                $('#Item').attr('readOnly', true).val('');
                var txtRapMin = $('#RapFrom');
                var txtRapTo = $('#RapTo');
                var txtPriceMin = $('#PriceFrom');
                var txtPriceMax = $('#PriceTo');
                var txtTotalMin = $('#TotalFrom');
                var txtTotalMax = $('#TotalTo');
                var txtItem = $('#Item');

                txtRapMin.focusout(
                            function () {
                                validateMaxMin(txtRapMin, txtRapTo.val(), 'Min');

                            }
                            );
                txtRapTo.focusout(
                            function () {
                                validateMaxMin(txtRapTo, txtRapMin.val(), 'Max');

                            }
                            );
                txtPriceMin.focusout(
                            function () {
                                validateMaxMin(txtPriceMin, txtPriceMax.val(), 'Min');

                            }
                            );
                txtPriceMax.focusout(
                            function () {
                                validateMaxMin(txtPriceMax, txtPriceMin.val(), 'Max');

                            }
                            );
                txtTotalMin.focusout(
                            function () {
                                validateMaxMin(txtTotalMin, txtTotalMax.val(), 'Min');

                            }
                            );
                txtTotalMax.focusout(
                            function () {
                                validateMaxMin(txtTotalMax, txtTotalMin.val(), 'Max');

                            }
                            );



            default:
                break;
        }

    }

    function validateMaxMin(e, compare_value, type) {
        clearErrors();
        var value = e.val();

        var regex = new RegExp(/^\d+(\.\d{1,2})?$/);
        var decimal = regex.test(value);

        if ((!decimal) && (value != '')) {

            showError($(e).parent(), 'Has to be number with max 2 decimal places', 'Minmax');
            e.val('');
            return false;
        }

        if (type == 'Min') {
            if ((parseFloat(value) > parseFloat(compare_value)) && (compare_value != '') && (value != '')) {
                showError($(e).parent(), 'Value cannot be greater than value ' + compare_value, 'Minmax');
                //alert('Value cannot be greater than value ' + compare_value);
                e.val('');
                return false;
            }
        }
        else {
            if (type == 'Max') {
                if ((parseFloat(value) < parseFloat(compare_value)) && (compare_value != '') && (value != '')) {
                    showError($(e).parent(), 'Value cannot be less than value ' + compare_value, 'Minmax');
                    // alert('Value cannot be less than value ' + compare_value);
                    e.val('');
                    return false;
                }
            }
            return true;
        }
    }


    this.jQueryReady = function () {
        this.jQueryObj = { main: $('.' + name), btn: $('#' + name + 'Item') };
        switch (this.type) {
            case dropdownTypes.standard:
            case dropdownTypes.StandardCheckBox:
            case dropdownTypes.VerticalSlider:
                this.jQueryObj.checkboxes = this.jQueryObj.main.find(':checkbox');
                break;
            case dropdownTypes.from_to:
                this.jQueryObj.from = $('#txt' + name + 'From');
                this.jQueryObj.to = $('#txt' + name + 'To');
                break;
            case dropdownTypes.HorizontalSlider:
                this.jQueryObj.Shade = this.jQueryObj.main.find('.Shade');
                this.jQueryObj.LiShade = this.jQueryObj.Shade.find('li');
                break;
            default:
                break;
        }
        if (name == 'Shape' || name == 'Weight' || name == 'Color' || name == 'Clarity') {
            allButtons[name] = this.jQueryObj.btn;
        }
        if (name == 'BlackInclusion' || name == 'OpenTableCrown' || name == 'TableInclusion') {
            allButtonsDown[name] = this.jQueryObj.btn;
        }
        if (name == 'CutGrade' || name == 'Fluorescence' || name == 'Girdle') {
            allButtonsDown2[name] = this.jQueryObj.btn;
        }

        this.SetDefaults();

    }

    function setSliderInternal(name, func) {
        $('#' + name + ' .ui-slider').each(
                function (i) {
                    func($(this));
                });
    }

    function setSliderValues(name, fromIndex, toIndex) {
        $('#' + name + 'From').val(fromIndex).change();
        $('#' + name + 'To').val(toIndex).change();
    }

}


function DropDownBase(name, data, labels) {
    this.name = name;
    this.data = data;
    this.labels = labels;

    this.jQueryObj = { main: {}, btn: {} };

    var first_time = true;




    this.show = function () {
        if (first_time) {
            first_time = false;
        }
        if (active_dropdown != null) {
            active_dropdown.hide();
        }
        for (var n in allButtons) {
            if (n != name) {
                allButtons[n].css('zIndex', 2);
            }
        }
        this.jQueryObj.main.css('display', 'block');
        this.jQueryObj.btn.css('zIndex', 0);
        active_dropdown = this;

        this.SaveState();

    }

    this.SaveState = function () {
        $(':checked', this.jQueryObj.main).data('original', true);
    }

    this.hide = function () {
        this.jQueryObj.main.css('display', 'none');
        active_dropdown = null;
        //        switch (type) {
        //            case dropdownTypes.VerticalSlider:

        //                var _fromIndex
        //                var _toIndex
        //                var original = $(this.jQueryObj.main).data('original');
        //                from = data[0];
        //                to = data[data.length - 1];
        //                $('#' + name + 'From').val(from.code);
        //                $('#' + name + 'To').val(to.code);
        //                setSliderInternal(name, function (s) {
        //                    s.slider("values", 0, 0);
        //                    s.slider("values", 1, data.length);

        //                });
        //                break;
        //        }
        this.ClearState();

    }

    this.ClearState = function () {
        $(':checkbox', this.jQueryObj.main).removeData('original');
    }

    this.clean = function () {

        this.handleCleanClick();
    }

    this.CleanAndHide = function () {
        if (searchParameters[this.name] != undefined) {
            this.CleanUnSavedItems();
            this.hide();
        }
        else {
            this.clean();
            this.hide();
        }
    }
    this.CleanUnSavedItems = function () {
        $(':checkbox', this.jQueryObj.main).each(function (index) {
            if (!$(this).data('original')) {
                $(this).attr('checked', false).parent().removeClass('Selected');
            } else {
                $(this).attr('checked', true).parent().addClass('Selected');
            }
        });

    }

    this.ClearParameters = function (clearParameters) {

    }

    this.ok = function () {
        //var result = this.handleOkClick();
        var selected = this.handleOkClick();
        /*if (result.clearParameters)
        this.ClearParameters(result.clearParameters);*/

        if (selected != 'NULL') {
            searchParameters[this.name] = selected;
        } else {
            delete searchParameters[this.name];
        }

        this.hide();
    }

    // return values selected
    this.handleOkClick = function () {
        alert('handleOkClick:missing method override');
        return null;
    }

    this.Initialize = function () {
        this.initializing = true;
        // code here

        this.InitializeInternal();

        this.initialized = true;
        this.initializing = false;
    }

    this.SetDefaults = function () {
        var initCalled = false;

        if (!this.initialized && !this.initializing) {
            this.Initialize();
            initCalled = true;
        }

        this.SetDefaultsInternal(initCalled);
    }

    this.SetDefaultsInternal = function (initCalled) { alert('SetDefaultsInternal: missing method override'); }
    this.InitializeInternal = function () { alert('InitializeInternal: missing method override'); }

    this.clickAll = function () { alert('clickAll:missing method override'); }

    this.CacheObjects = null;

    this.jQueryReady = function () {

        // cache some jquery objects
        this.jQueryObj = { main: $('.' + this.name), btn: $('#' + this.name + 'Item') };

        allButtons[name] = this.jQueryObj.btn;

        if (this.CacheObjects) this.CacheObjects();

        this.SetDefaults();
    }
}




/*

Standard Drop Down - Shape Selection

*/

StandardDropDown.prototype = new DropDownBase;

function StandardDropDown(name, data, labels) {
    var first = true;
    DropDownBase.call(this, name, data, labels);

    controls.DropDowns[controls.DropDowns.length] = this;

    this.CacheObjects = function () {
        this.jQueryObj.checkboxes = this.jQueryObj.main.find(':checkbox');
        this.jQueryObj.textBox = $('#txt' + this.name);
    }

    this.InitializeInternal = function () {

        this.jQueryObj.checkboxes.filter(':gt(0)').click(
        function (context) {
            return function () {
                toggleCheckAll(name, context);
                if ($(this).attr('checked')) {
                    $(this).parent().addClass('Selected');
                }
                else {
                    $(this).parent().removeClass('Selected');
                }
            }
        } (this.jQueryObj.main)
            );

        this.jQueryObj.checkboxes.filter(':eq(0)').click(
        function (checkboxes) {
            return function () {
                if ($(this).attr('checked') == true) {
                    checkboxes.attr('checked', true).parent().addClass('Selected');
                }
                else {
                    checkboxes.attr('checked', false).parent().removeClass('Selected');
                }
            }
        } (this.jQueryObj.checkboxes));
    }

    this.SetDefaultsInternal = function (initCalled) {
        this.clean();
        this.jQueryObj.textBox.attr('readOnly', true);
    }

    this.handleCleanClick = function () {
        this.jQueryObj.checkboxes.attr('checked', false).parent().removeClass('Selected');
        //If loggedIn = true , check round in shape dropDown and search for round stones only
        if (loggedIn) {
            
            $('.Round').parent().find("input[type='checkbox']").attr('checked', true).parent().addClass('Selected');
            this.ok();
            if (first) {
                searchFirstPage();
            }
            first = false;
        }
    }

    this.handleOkClick = function () {
        var maxlength = 15;
        var MyclearParameters = [];

        var checked = jQuery.map(
                        this.jQueryObj.checkboxes.filter(':checked'),
                        function (n, i) { return n.value; }
                    );

        var value = 'All';

        if (checked.length == 0) {
            checked = 'NULL';
        } else {

            var descriptions = jQuery.map(checked, function (n, i) { return data[n]; });

            if (descriptions[0] != 'All') {
                value = descriptions.join(',');
                if (value.length > maxlength) {
                    value = value.substr(0, maxlength) + '...';
                }
            }
        }

        this.jQueryObj.textBox.val(value);
        //for values in the Mysearch column
        if (value != 'All') {
            if (MySearchParameters[this.name] != undefined) {
                var index = MySearchParameters[this.name];
                MySearchParameters[index].value = value;
            }
            else {
                var index = MySearchParameters.length;
                MySearchParameters[index] = { 'name': this.name, 'value': value };
                MySearchParameters[this.name] = index;
            }
        }
        else {
            MyclearParameters[MyclearParameters.length] = this.name;

        }

        if (MyclearParameters.length > 0) {

            for (var i in MyclearParameters) {

                if (MySearchParameters[MyclearParameters[i]] != undefined) {
                    var index = MySearchParameters[MyclearParameters[i]];
                    MySearchParameters.splice(index, 1);
                    delete MySearchParameters[MyclearParameters[i]];

                    for (var i in MySearchParameters) {
                        var myname = MySearchParameters[i].name;
                        MySearchParameters[myname] = i;
                    }

                    for (var i = MySearchParameters.length; i < 18; i++) {
                        $('#TitleMySearch' + i).html('');
                        $('#MySearch' + i).html('');
                    }
                }
            }
        }

        for (var i in MySearchParameters) {
            $('#TitleMySearch' + i).html(MySearchParameters[i].name + ': ');
            $('#MySearch' + i).html(MySearchParameters[i].value);
        }


        return checked;
    } // changed ;
}


//this.clickAll = function () { selectAll(); }





function toggleCheckAll(name, obj) {

    var all_checkbox = $('.' + name + ' :checkbox[name]');
    var all_checked = all_checkbox.attr('checked');

    var unchecked = $(':checkbox:not(:checked)', obj);

    if (all_checked) {
        all_checkbox.attr('checked', false);
        all_checkbox.parent().removeClass('Selected');

    } else {
        if (unchecked.length == 1) {
            all_checkbox.attr('checked', true);
            all_checkbox.parent().addClass('Selected');

        }
    }
}



/*

From To Drop Down - Weight Selection

*/

FromToDropDown.prototype = new DropDownBase;

function FromToDropDown(name, data, labels) {
    DropDownBase.call(this, name, data, labels);

    controls.DropDowns[controls.DropDowns.length] = this;

    this.CacheObjects = function () {
        this.jQueryObj.checkboxes = this.jQueryObj.main.find(':checkbox');
        this.jQueryObj.textboxes = { main: $('#txt' + this.name), from: $('#txt' + name + 'From'), to: $('#txt' + name + 'To') };
    }
    this.SaveState = function () {
        this.jQueryObj.checkboxes.filter(':checked').data('original', true);
        $(this.jQueryObj.main).data('original2', { from: this.jQueryObj.textboxes.from.val(), to: this.jQueryObj.textboxes.to.val() });
    }
    this.ClearState = function () {
    }
    this.handleOkClick = function () {
        delete searchParameters.Weight;
        delete searchParameters.CaratsFrom;
        delete searchParameters.CaratsTo;
        delete searchParameters.WeightFrom;
        delete searchParameters.WeightTo;
        maxlength = 23; //length of value that you want to display
        var obj = this.jQueryObj.main;
        var checked = this.jQueryObj.checkboxes.filter(':checked');
        var unchecked = this.jQueryObj.checkboxes.filter(':not(:checked)');
        //                var all_checkbox = $('.' + name + ' :checkbox');
        //                var all_checked = all_checkbox.attr('checked');

        if (this.jQueryObj.textboxes.from.val() == '0' && this.jQueryObj.textboxes.to.val() == '99.99') {
            this.jQueryObj.textboxes.main.val('All');
            clearParameters[0] = this.name;
            MyclearParameters[MyclearParameters.length] = this.name;
        }
        else {
            var from = this.jQueryObj.textboxes.from.val();
            var to = this.jQueryObj.textboxes.to.val();
            if (from != '' && to != '') {
                value = from + '-' + to;
                // if value of textbox too long replace with 3 points
                if (value.length > maxlength) {
                    value = value.replace(value.substr(maxlength), '...');
                }
                this.jQueryObj.textboxes.main.val(value);
                selected[this.name] = { 'weight': { 'from': from, 'to': to} };
                if (value != 'All') {
                    if (MySearchParameters[this.name] != undefined) {
                        var index = MySearchParameters[this.name];
                        MySearchParameters[index].value = value;
                    }
                    else {
                        var index = MySearchParameters.length;
                        Myselected[index] = { 'name': this.name, 'value': value };
                        Myselected[this.name] = index;
                    }
                }
            }
            else {
                if (checked.length != 0) {
                    selected[this.name] = { 'carats': [] };
                    var c = selected[this.name].carats;
                    value = '';
                    $('#' + name + '_rows div.FromToRow').each(
                           function (i, n) {
                               if ($('.fromInput', n).attr("disabled") == false) {
                                   var from = $('.fromInput', n).val();
                                   var to = $('.toInput', n).val();
                                   c[c.length] = { 'from': from, 'to': to };
                                   if (value == '') {
                                       value = value + from + '-' + to;
                                   }
                                   else {
                                       value = value + ',' + from + '-' + to;
                                   }
                               }
                           });
                    // if value of textbox too long replace with 3 points
                    if (value.length > maxlength) {
                        value = value.substr(0, maxlength) + '...';
                    }
                }
                if ((checked.length == 0) || (unchecked.length == 0)) {
                    value = 'All'
                    MyclearParameters[MyclearParameters.length] = this.name;
                }
                this.jQueryObj.textboxes.main.val(value);
                //for values in the Mysearch column
                if (value != 'All') {
                    if (MySearchParameters[this.name] != undefined) {
                        var index = MySearchParameters[this.name];
                        MySearchParameters[index].value = value;
                    }
                    else {
                        var index = MySearchParameters.length;
                        Myselected[index] = { 'name': this.name, 'value': value };
                        Myselected[this.name] = index;
                    }
                }
            }
        }

    }
}

function validateFromTo(e, compare_value, from, to, type, name) {
    //    clearErrors();
    var value = e.val();

    if (value < from || value > to) {
        alert('Value has to be between ' + from + ' and ' + to);
        //showError($(e).parent(), 'Value has to be between ' + from + ' and ' + to, 'Weight');
        if (type == 'from') {
            e.val(from);
        }
        else {
            e.val(to);
        }

    }
    else {
        if (type == 'from') {
            if (parseFloat(value) > parseFloat(compare_value)) {
                alert('Value cannot be greater than value ' + compare_value);
                //showError($(e).parent(), 'Value cannot be greater than value ' + compare_value, 'Weight');
                e.val(from);

            }
        }
        else {
            if (type == 'to') {
                if (parseFloat(value) < parseFloat(compare_value)) {
                    alert('Value cannot be less than value ' + compare_value);
                    //showError($(e).parent(), 'Value cannot be less than value ' + compare_value, 'Weight');
                    e.val(to);

                }
            }

        }
    }


}

//this has to be in a different js file



function MinMax(name) {
    var selected = null;
    this.name = name;
    var MyclearParameters = [];
    controls.MinMax[controls.MinMax.length] = this;

    this.SetDefaults = function () {
        clearErrors();

        var from = 0.00;
        var to = 99.99;
        var txtFrom = $('#' + name + 'Min');
        var txtTo = $('#' + name + 'Max');

        txtFrom.val('');
        txtTo.val('');

        txtFrom.focusout(
                            function () {

                                if (!validateMinMax(txtFrom, txtTo.val(), from, to, 'Min'))
                                    return;
                                if (txtFrom.val() != 'undefined') {
                                    if (txtFrom.val() != '') {
                                        if (MySearchParameters[name + 'Min'] != undefined) {
                                            var index = MySearchParameters[name + 'Min'];
                                            MySearchParameters[index].value = txtFrom.val();
                                        }
                                        else {
                                            var index = MySearchParameters.length;
                                            MySearchParameters[index] = { 'name': name + 'Min', 'value': txtFrom.val() };
                                            MySearchParameters[name + 'Min'] = index;
                                        }
                                    }
                                    else {
                                        MyclearParameters[MyclearParameters.length] = name + 'Min';
                                    }
                                    WriteToMySearch();
                                }
                            }
                            );
        txtTo.focusout(
                            function () {
                                if (!validateMinMax(txtTo, txtFrom.val(), from, to, 'Max'))
                                    return;
                                if (txtTo.val() != 'undefined') {
                                    if (txtTo.val() != '') {
                                        if (MySearchParameters[name + 'Max'] != undefined) {
                                            var index = MySearchParameters[name + 'Max'];
                                            MySearchParameters[index].value = txtTo.val();
                                        }
                                        else {
                                            var index = MySearchParameters.length;
                                            MySearchParameters[index] = { 'name': name + 'Max', 'value': txtTo.val() };
                                            MySearchParameters[name + 'Max'] = index;
                                        }
                                    }
                                    else {
                                        MyclearParameters[MyclearParameters.length] = name + 'Max';
                                    }
                                    WriteToMySearch();
                                }
                            }
                            );


    }



        function WriteToMySearch() {

            if (MyclearParameters.length > 0) {

                for (var i in MyclearParameters) {

                    if (MySearchParameters[MyclearParameters[i]] != undefined) {
                        var index = MySearchParameters[MyclearParameters[i]];
                        MySearchParameters.splice(index, 1);
                        delete MySearchParameters[MyclearParameters[i]];
                        
                        for (var x in MySearchParameters) {
                            var myname = MySearchParameters[x].name;
                            MySearchParameters[myname] = x;
                        }

                        for (var j = MySearchParameters.length; j < 18; j++) {
                            $('#TitleMySearch' + j).html('');
                            $('#MySearch' + j).html('');
                        }
                    }

                    MyclearParameters.splice(i, 1);
                }
            }
            for (var i = 0; i < MySearchParameters.length;i++ ) {
                $('#TitleMySearch' + i).html(MySearchParameters[i].name + ': ');
                $('#MySearch' + i).html(MySearchParameters[i].value);
            }

        }

    this.getSelected = function () {
        var txtFrom = $('#' + name + 'Min');
        var txtTo = $('#' + name + 'Max');
        var from = txtFrom.val();
        var to = txtTo.val();
        var result = {};
        if (to != '') {
            result[name + 'To'] = to;
        } else {
            delete result[name + 'To'];
            delete searchParameters[name + 'To'];
        }
        if (from != '') {
            result[name + 'From'] = from;
        } else {
            delete result[name + 'From'];
            delete searchParameters[name + 'From'];
        }


        return result;
    }

    function validateMinMax(e, compare_value, from, to, type) {
        clearErrors();
        var value = e.val();

        var regex = new RegExp(/^\d+(\.\d{1,2})?$/);
        var decimal = regex.test(value);

        if ((!decimal) && (value != '')) {

            showError($(e).parent(), 'Has to be number with max 2 decimal places', 'Minmax');
            e.val('');
            return false;
        }
        //        var decimal= "^\d+(\.\d{1,2})?$".test(value);

        if (parseFloat(value) < parseFloat(from) || parseFloat(value) > parseFloat(to)) {
            showError($(e).parent(), 'Value has to be between  ' + from + ' and ' + to, 'Minmax');
            //alert('Value has to be between ' + from + ' and ' + to);
            if (type == 'Min') {
                e.val('');
            }
            else {
                e.val('');
            }
            return false;
        }
        else {
            if (type == 'Min') {
                if ((parseFloat(value) > parseFloat(compare_value)) && (compare_value != '') && (value != '')) {
                    showError($(e).parent(), 'Value cannot be greater than value ' + compare_value, 'Minmax');
                    //alert('Value cannot be greater than value ' + compare_value);
                    e.val('');
                    return false;
                }
            }
            else {
                if (type == 'Max') {
                    if ((parseFloat(value) < parseFloat(compare_value)) && (compare_value != '') && (value != '')) {
                        showError($(e).parent(), 'Value cannot be less than value ' + compare_value, 'Minmax');
                        // alert('Value cannot be less than value ' + compare_value);
                        e.val('');
                        return false;
                    }
                }

            }
        }
        return true;
    }


    this.jQueryReady = function () {
        this.SetDefaults();

    }

    //function validates that the input is only numeric and a decimal point
    this.ValidateNumeric = function () {
        var keyCode = window.event.keyCode;
        if (keyCode > 57 || keyCode < 46 || keyCode == 47)
            window.event.returnValue = false;
    }



}


$(function () {
    var selected = {};
    var MyclearParameters = [];
    //function validates that the input is only numeric and a decimal point
    $('.FromTo input').keypress(function (event) {
        var keyCode = event.keyCode;
        if (keyCode > 57 || keyCode < 46 || keyCode == 47)
            window.event.returnValue = false;
    });
    $('#pages').keypress(function (event) {
        var keyCode = event.keyCode;
        if (keyCode > 57 || keyCode < 48 || keyCode == 13)
            return false;
    });
    //    $('.RadioBtn').click(ChangeSearchparameters);

    $('.Clear').click(ClearControls);


   
});

//    function ChangeSearchparameters() {
//        delete searchParameters.PricePerCaratFrom;
//        delete searchParameters.TotalPriceFrom;
//        delete searchParameters.PricePerCaratTo;
//        delete searchParameters.TotalPriceTo;
//        delete searchParameters.Price;
//        MyclearParameters[0] = 'PPCMin';
//        MyclearParameters[1] = 'PPCMax';
//        MyclearParameters[2] = 'TotalMin';
//        MyclearParameters[3] = 'TotalMax';
//        WriteToMySearch();


//        var from = $('#FROM').val();
//        var to = $('#TO').val();

//        if ($("input[type='radio']:checked").val() == "a") {
//            if ((from != '') || (to != '')) {
//                selected['Price'] = { 'PerCarat': { 'from': from, 'to': to} };
//                //write to Mysearch 
//                if (from != '') {
//                    var index = MySearchParameters.length;
//                    MySearchParameters[index] = { 'name': 'PPCMin', 'value': from };
//                    MySearchParameters['PPCMin'] = index;
//                }
//                if (to != '') {
//                    var index = MySearchParameters.length;
//                    MySearchParameters[index] = { 'name': 'PPCMax', 'value': to };
//                    MySearchParameters['PPCMax'] = index;
//                }
//                WriteToMySearch();
//            }
//        }
//        else {
//            if ((from != '') || (to != '')) {
//                selected['Price'] = { 'Total': { 'from': from, 'to': to} };
//                //write to Mysearch 
//                if (from != '') {
//                    var index = MySearchParameters.length;
//                    MySearchParameters[index] = { 'name': 'TotalMin', 'value': from };
//                    MySearchParameters['TotalMin'] = index;
//                }
//                if (to != '') {
//                    var index = MySearchParameters.length;
//                    MySearchParameters[index] = { 'name': 'TotalMax', 'value': to };
//                    MySearchParameters['TotalMax'] = index;
//                }
//                WriteToMySearch();
//            }
//        }


//        $.extend(searchParameters, selected);
//        delete selected['Price'];

//    }

//    function WriteToMySearch() {

//        if (MyclearParameters.length > 0) {

//            for (var i in MyclearParameters) {

//                if (MySearchParameters[MyclearParameters[i]] != undefined) {
//                    var index = MySearchParameters[MyclearParameters[i]];
//                    MySearchParameters.splice(index, 1);
//                    delete MySearchParameters[MyclearParameters[i]];

//                    for (var i in MySearchParameters) {
//                        var myname = MySearchParameters[i].name;
//                        MySearchParameters[myname] = i;
//                    }

//                    for (var i = MySearchParameters.length; i < 18; i++) {
//                        $('#TitleMySearch' + i).html('');
//                        $('#MySearch' + i).html('');
//                    }
//                }
//                delete MyclearParameters[i];
//            }
//        }


//        for (var i in MySearchParameters) {
//            $('#TitleMySearch' + i).html(MySearchParameters[i].name + ': ');
//            $('#MySearch' + i).html(MySearchParameters[i].value);
//        }

//    }



//    $('#FROM').focusout(
//                            function () {
//                                delete searchParameters.PricePerCaratFrom;
//                                delete searchParameters.TotalPriceFrom;
//                                var from = $('#FROM').val();
//                                var to = $('#TO').val();

//                                if ((parseFloat(from) > parseFloat(to)) && (to != '')) {
//                                    showError($('#FROM').parent(), 'Value cannot be greater than value ' + to, 'PriceMinmax');
//                                    //alert('Value cannot be greater than value ' + to);
//                                    $('#FROM').val('');
//                                    from = $('#FROM').val();
//                                }
//                                if ($("input[type='radio']:checked").val() == "a") {
//                                    if (from != '') {
//                                        selected['Price'] = { 'PerCarat': { 'from': from, 'to': to} };


//                                        //add to mysearchparameters
//                                        if (MySearchParameters['PPCMin'] != undefined) {
//                                            var index = MySearchParameters['PPCMin'];
//                                            MySearchParameters[index].value = from;
//                                        }
//                                        else {
//                                            var index = MySearchParameters.length;
//                                            MySearchParameters[index] = { 'name': 'PPCMin', 'value': from };
//                                            MySearchParameters['PPCMin'] = index;
//                                        }
//                                    }
//                                    else {
//                                        MyclearParameters[MyclearParameters.length] = 'PPCMin';
//                                    }

//                                }
//                                else {
//                                    if (from != '') {
//                                        selected['Price'] = { 'Total': { 'from': from, 'to': to} };

//                                        //add to mysearchparameters
//                                        if (MySearchParameters['TotalMin'] != undefined) {
//                                            var index = MySearchParameters['TotalMin'];
//                                            MySearchParameters[index].value = from;
//                                        }
//                                        else {
//                                            var index = MySearchParameters.length;
//                                            MySearchParameters[index] = { 'name': 'TotalMin', 'value': from };
//                                            MySearchParameters['TotalMin'] = index;
//                                        }
//                                    }
//                                    else {
//                                        MyclearParameters[MyclearParameters.length] = 'TotalMin';
//                                    }

//                                }
//                                WriteToMySearch();
//                                $.extend(searchParameters, selected);
//                                delete selected['Price'];
//                            }
//                            );

//    $('#TO').focusout(
//                            function () {
//                                delete searchParameters.PricePerCaratTo;
//                                delete searchParameters.TotalPriceTo;
//                                var from = $('#FROM').val();
//                                var to = $('#TO').val();

//                                if ((parseFloat(to) < parseFloat(from)) && (from != '')) {
//                                    showError($('#TO').parent(), 'Value cannot be less than value ' + from, 'PriceMinmax');
//                                    // alert('Value cannot be less than value ' + from);
//                                    $('#TO').val('');
//                                    to = $('#TO').val();
//                                }
//                                if ($("input[type='radio']:checked").val() == "a") {
//                                    if (to != '') {
//                                        selected['Price'] = { 'PerCarat': { 'from': from, 'to': to} };

//                                        //add to mysearchparameters
//                                        if (MySearchParameters['PPCMax'] != undefined) {
//                                            var index = MySearchParameters['PPCMax'];
//                                            MySearchParameters[index].value = to;
//                                        }
//                                        else {
//                                            var index = MySearchParameters.length;
//                                            MySearchParameters[index] = { 'name': 'PPCMax', 'value': to };
//                                            MySearchParameters['PPCMax'] = index;
//                                        }
//                                    }
//                                    else {
//                                        MyclearParameters[MyclearParameters.length] = 'PPCMax';
//                                    }
//                                }
//                                else {
//                                    if (to != '') {
//                                        selected['Price'] = { 'Total': { 'from': from, 'to': to} };

//                                        //add to mysearchparameters
//                                        if (MySearchParameters['TotalMax'] != undefined) {
//                                            var index = MySearchParameters['TotalMax'];
//                                            MySearchParameters[index].value = to;
//                                        }
//                                        else {
//                                            var index = MySearchParameters.length;
//                                            MySearchParameters[index] = { 'name': 'TotalMax', 'value': to };
//                                            MySearchParameters['TotalMax'] = index;
//                                        }
//                                    }
//                                    else {
//                                        MyclearParameters[MyclearParameters.length] = 'TotalMax';
//                                    }
//                                }
//                                WriteToMySearch();
//                                $.extend(searchParameters, selected);
//                                delete selected['Price'];

//                            }
//                            );





function ClearControls() {

    for (var x in controls.MinMax) {
        controls.MinMax[x].SetDefaults();
    }
    if (MySearchParameters.length > 0) {
        for (var x in controls.DropDowns) {

            // controls.DropDowns[x].SetDefaults();
            controls.DropDowns[x].clean();
            controls.DropDowns[x].ok();

        }
        //        if (MySearchParameters.length > 0) {
        //            for (var x in controls.MinMax) {

        //                controls.MinMax[x].SetDefaults();

        //            }
        //        }
        //        $('#FROM').val('');
        //        $('#TO').val('');

//        delete searchParameters.RapFrom;
//        delete searchParameters.RapTo;
//        delete searchParameters.Item;
//        delete searchParameters.PricePerCaratFrom;
//        delete searchParameters.TotalPriceFrom;
//        delete searchParameters.PricePerCaratTo;
//        delete searchParameters.TotalPriceTo;
//        delete searchParameters.Price;

        if (MySearchParameters.length > 0) {
            var count = MySearchParameters.length;
            for (var i = 0; i < count; i++) {
                $('#TitleMySearch' + i).html('');
                $('#MySearch' + i).html('');

                var name = MySearchParameters[MySearchParameters.length - 1].name;
                var index = MySearchParameters[name];
                MySearchParameters.splice(index, 1);
                delete MySearchParameters[name];

            }
        }
    }
}




