var AbstractDropdown = new Class({

    initialize: function (dd, popups) {
        var trigger = dd.getElement('.js_dd_trigger');
        var target = dd.getElement('.js_dd_target');

        var popup = new CHKCustomPopUp(trigger, target, {
            showEvent : ['click'],
            hideEvent : []
        });
        popups.push(popup);
        this.popup = popup;

        popup.addHideElement(target.getElement('.js_dd_header'), 'click');

        var links = target.getElements('a');
        popup.addEvent('onshow', function() {
            popups.each(function(p) {
                if (p.targetEl != popup.targetEl && p.isOpen) p.hide();
            });
            links[0].focus();
            dd.setStyle('z-index', 1);
        });

        popup.addEvent('onhide', function() {
            dd.setStyle('z-index', 0);
        });

        links[0].addEvent('keypress', function(event) {
            if (event.key == 'tab' && event.shift) {
                popup.hide();
                popup.triggerEl.focus();
            }
        });

        links.getLast().addEvent('keypress', function(event) {
            if (event.key == 'tab' && !event.shift) {
                popup.hide();
                popup.triggerEl.getElement("a").focus();
            }
        });
    }

});

var BasicDropdown = new Class({

    Extends: AbstractDropdown,

    initialize: function(dd, popups) {
        this.parent(dd, popups);

        var self = this;
        var items = this.popup.targetEl.getElements('a');
        items.each(function (item) {
            item.addEvent("click", function (e) {
                self.popup.hide();
                self.popup.triggerEl.getElement("a").focus();
            });
        });
    }

});

var SortDropdown = new Class({

    Extends: AbstractDropdown,

    initialize: function(dd, popups) {
        this.parent(dd, popups);

        //    NOTE: set first value
        var first_item = this.popup.targetEl.getElements('.dropdown_item')[0];
        var text = first_item.get('text');
        var input = dd.getElement('.js_dd_input');
        input.value = text;
        dd.getElements(".js_dd_input_value").each(function (e) {
            e.set("text", text);
        });

        var self = this;
        var items = this.popup.targetEl.getElements('.dropdown_item a');
        items.each(function (item) {
            item.addEvent("click", function (e) {
                e.stopPropagation();
                var text = item.get('text');
                input.value = text;
                dd.getElements(".js_dd_input_value").each(function (e) {
                    e.set("text", text);
                });

                self.popup.hide();
                self.popup.triggerEl.getElement("a").focus();
            });
        });
    }

});

function initDropDownSelects(dropdownSelector, dropdownClass) {
    dropdownSelector = dropdownSelector ? dropdownSelector : '.js_dd';
    dropdownClass = dropdownClass ? dropdownClass : BasicDropdown;

    var popups = [];

    $$(dropdownSelector).each(function (dd) {
        new dropdownClass(dd, popups);
    });

    $$(document.body).addEvent('click', function() {
        popups.each(function(p) {
            p.isOpen && p.hide();
        });
    });
}

/* UnCompressed - Reason: DISABLED_TARGET-LIVECWADEPLOYER# */

/*
Date: 12/4/2011 1:08:03 AM
All images published
*/
