﻿/// <reference path="jquery.intellisense.js"/>

var modesSearchSelector = {
    comboLoaded: function(sender, eventArgs) {
        // maintain state after postback
        var id = '#' + sender.get_id();
        var selector = $(id).parent('.searchselector');
        var hf = selector.find('.state input');
        var items = hf.val().split(',');
        $(items).each(function(i, item) {
        var item = sender.findItemByValue(item);
            if(item != null)
                item.set_visible(false);
        });
    },

    selectedIndexChanged: function(sender, eventArgs) {
        var items = sender.get_items();
        var item = eventArgs.get_item();
        if (items.indexOf(item) != 0) {
            // get item values
            var text = item.get_text();
            var value = item.get_value();

            // hide in combo box
            item.set_visible(false);
            sender.get_items().getItem(0).select();

            // save state
            var id = '#' + sender.get_id();
            var selector = $(id).parent('.searchselector');
            var hf = selector.find('.state input');
            var state = hf.val();
            hf.val(state + (state.length > 0 ? ',' + value : value));

            // add to selected items (in original order)
            var selectedItems = selector.find('.selecteditems');
            var html = '<span>' + text + ' <a href="#" onclick="return modesSearchSelector.deleteItem(this, ' + value + ')">delete</a></span>';
            var spans = selectedItems.find('span');
            var index = items.indexOf(item);
            for (var i = 0; i < spans.length; i++) {
                var compareValue = $(spans[i]).find('a').attr('onclick') + '';
                compareValue = compareValue.substring(compareValue.lastIndexOf(',') + 2);
                compareValue = compareValue.substring(0, compareValue.lastIndexOf(')'));
                var compareItem = sender.findItemByValue(compareValue);
                var compareIndex = items.indexOf(compareItem);
                if (compareIndex > index) {
                    $(html).insertBefore($(spans[i]));
                    return;
                }
            }
            selectedItems.append(html);
        }
    },

    deleteItem: function(el, key) {
        var link = $(el);
        var selector = link.parents('.searchselector');
        var span = link.parent('span');

        // remove from selected items
        link.remove();
        var text = span.text();
        span.remove();

        // save state
        var hf = selector.find('.state input');
        var items = hf.val().split(',');
        hf.val('');
        $(items).each(function(i, item) {
            if (item != key) {
                var state = hf.val();
                hf.val(state + (state.length > 0 ? ',' + item : item));
            }
        });

        // show in combo box 
        var comboId = selector.find('.RadComboBox').attr('id');
        var combo = $find(comboId);
        var item = combo.findItemByValue(key);
        item.set_visible(true);

        return false;
    }
};
