﻿var scan;
var Scan = function() {

    var _filters = [];

    this.init = function() {
        $('#addCriteria').click(function() {
            var andor = $('#andor').val();
            var criteria = $('#criteria').val();
            var compare = $('#compare').val();
            var compareOption = $('#compareOption').val();
            if (criteria == '' || compare == '' || compareOption == '')
                alert("Please select or enter all conditions");
            else
                add(andor, criteria, compare, compareOption);

            (_filters.length == 0) ? $('#andor').hide() : $('#andor').show();
        })//end #addCriteria

        $('#criteria').change(function() {
            loadCompareOption();
        }) //end #criteria            

        $('#search').click(function() {
            $('#loading').show();
            $.get(siteUrl + '/ajax/tsscan.aspx?f=' + encodeURIComponent(Sys.Serialization.JavaScriptSerializer.serialize(_filters)), function(data) {
                $('#data').html(data);
                $('#data table').tablesorter();
                setupSymbolTip();
                $('#loading').hide();
            });
        }) // end #search

        loadCriteria();
        if (_filters.length == 0) $('#andor').hide(); else $('#andor').show();
    } // end init

    var index = function(filter) {
        for (var i = 0; i < _filters.length; i++) {

            if (_filters[i].criteria == filter.criteria &&
                    _filters[i].compare == filter.compare &&
                    _filters[i].value == filter.value)
                return i;
        }
        return -1;
    } // end index

    var add = function(andor, criteria, compare, value) {

        if (value == '' || value == '(Enter Value)') { alert('Please enter a custom value'); return false; }

        var f = { andor: andor, criteria: criteria, compare: compare, value: value };
        if (index(f) == -1) {
            if (_filters.length == 0) f.andor = '';
            _filters.push(f);
            resetSelectedFilter();
        } else {
            alert('already added');
        }
    } // end add

    var remove = function(i) {
        if (_filters[i]) {
            //if delete the first, take out andor from the second
            if (i == 0 && _filters.length >= 2) {
                _filters[1].andor = '';
            }
            _filters.splice(i, 1);
        }
    } // end remove

    var resetSelectedFilter = function() {
        var selected = "";
        var imgX = "<img class=\"remove\" src=\"/images/close_popup.gif\" title=\"remove this condition\">";

        for (var i = 0; i < _filters.length; i++) {
            var f = _filters[i];
            var andor = (i == 0) ? "" : "<p>" + f.andor + "</p>";
            selected += "<div>" + andor + f.criteria + " " + f.compare + " " + f.value + imgX + "</div>";
        }

        $('#selectedText').html(selected);
        (selected == "") ? $('#search').hide() : $('#search').show();

        $('#selectedText .remove').click(function() {
            // get the selected filter index and remove it from                 
            remove($('.remove').index(this));
            resetSelectedFilter();
            (_filters.length == 0) ? $('#andor').hide() : $('#andor').show();
        })
    } // end resetSelectedFilter

    var loadCriteria = function() {
        PageMethods.GetCriteria(function(data) {
            for (var i = 0; i < data.length; i++) {
                $('#criteria').append("<option value=\"" + data[i] + "\">" + data[i] + "</option>");
            }
        })//
    } // end loadCriteria

    var loadCompareOption = function() {
        var selectedCriteria = $('#criteria option:selected').text();
        PageMethods.GetCompareOption(selectedCriteria, function(data) {

            var allowCustomValue = false;
            var options = "";

            $('#compare').children().remove();
            if (selectedCriteria == "Candlestick")
                $('#compare').append("<option value=\"=\">=</option>");
            else
                $('#compare').append("<option value=\">\">></option><option value=\"=\">=</option><option value=\"<\"><</option>");

            for (var i = 0; i < data.length; i++) {

                if (data[i] == "(Enter Value)")
                    allowCustomValue = true;

                options += "<option value=\"" + data[i] + "\">" + data[i] + "</option>";
            }

            $('#compareOption').remove();
            $('img.ui-combobox-arrow').remove()

            if (options == "") {
                $('#compare').after(" <input id=\"compareOption\">");                
            }
            else {
                $('#compare').after(" <select id=\"compareOption\">" + options + "</select>");
                if (allowCustomValue) {
                    $('#compareOption').combobox({ autoShow: false });
                    $('#compareOptionTip').html('select/enter value');
                }
                else {
                    $('#compareOptionTip').html('');
                }
            }

            $('#compareOption').focus(function() { $(this).val(''); })

        })// end GetCompareOption
    }

}                                  // end Scan function

$(document).ready(function() {
    var scan = new Scan();
    scan.init();
});  // end document ready