var AJS = {
    update: function(l1, l2) {
        for(var i in l2)
            l1[i] = l2[i];
        return l1;
    }
}
AJS.Class = function(members) {
    var fn = function() {
        if(arguments[0] != 'no_init') {
            return this.init.apply(this, arguments);
        }
    }
    fn.prototype = members;
    AJS.update(fn, AJS.Class.prototype);
    return fn;
}
AJS.Class.prototype = {
    extend: function(members) {
        var parent = new this('no_init');
        for(k in members) {
            var prev = parent[k];
            var cur = members[k];
            if (prev && prev != cur && typeof cur == 'function') {
                cur = this._parentize(cur, prev);
            }
            parent[k] = cur;
        }
        return new AJS.Class(parent);
    },

    implement: function(members) {
        AJS.update(this.prototype, members);
    },

    _parentize: function(cur, prev) {
        return function(){
            this.parent = prev;
            return cur.apply(this, arguments);
        }
    }
}//end AJS.Class

;(function($){

SelectorS = AJS.Class({
        el: null,
	id: null,
	init: function(el,opt){
            var mp = this;
            this.el = el;
            this.mpBox = $('<div class="sel-box" style="padding:0" />').appendTo('body');
            this.selector = $('<div class="mp-sel-box" style="padding:0" />').appendTo(this.mpBox);

//            this.mpBox = $('<div class="sel-box" />').appendTo('body');
//            this.selector = $('<div class="mp-sel-box" />').appendTo(this.mpBox);

            this.opt = {
                onCancel: function(){
                    mp.mpBox.hide();
                }
            }

            $.extend(this.opt,opt);

            var mpBoxNumber = 'mpbox'+($.fn.SelectorS.number++);
            el.attr('mpbox',mpBoxNumber);
            mp.mpBox.attr('id', mpBoxNumber);
            $.fn.SelectorS.obj[mpBoxNumber] = this;
            mp.selector.html(mp.listbut(opt.lst));


            el.click(function(e){
                e.preventDefault();
                mp.show();

            });
            mp.mpBox.hover(function(e){
            },function(e){
                mp.mpBox.hide();
            });


            $(document).ready(function(){
                mp.selector.find('a').click(function(e){
                    e.preventDefault();
                    if ($(this).hasClass('mp-sel-select')){
                        mp.selector.find('a').removeClass('mp-sel-select');
                    }else{
                        mp.selector.find('a').removeClass('mp-sel-select');
                    }
                    $(this).addClass('mp-sel-select');

                    var rst = mp.selector.find('.mp-sel-select').text();
                    var start = mp.opt.lst;
                    for(var i = 0; i < start.length; i++)
                      {
                        if (start[i] == rst)
                          {
                            $('#'+mp.opt.to1).text(start[i]);
                            document.getElementById(mp.opt.to2).value = i;
                          }
                      }
                    mp.opt.onCancel(mp);
                });
            });

	},

        show: function(){
            var mp = this;
            $('.mp-box').not('.mp-plain').hide();
            mp.mpBox.css({
                left: mp.el.offset().left,
                top: mp.el.offset().top + mp.el.height()
            });
            //console.log(parseInt(mp.mpBox.css('left'))+','+mp.mpBox.width()+','+screen.width);
            while (parseInt(mp.mpBox.css('left')) + mp.mpBox.width() >= screen.width-25){
                mp.mpBox.css('left',parseInt(mp.mpBox.css('left'))-25);
            }
            mp.mpBox.show();
        },

        buttonHtml: function(){
        },

        listbut: function(olst){
                var mp = this;


                var s = '<div id="container"><div id="content">';
                var s = s + '<table width="10%" border="0" cellpadding="0" cellspacing="0" bgcolor="#f4f3f3" style="z-index:2;">';
                var start = olst;
                for(var i = 0; i < start.length; i++){
                    s += '<tr><td><a href="#" class="pnt">'+start[i]+'</a></td></tr>';
                    if (i + 1 < start.length)
                    s += '<tr><td background="/img/sel2.gif"><img src="/img/spacer.gif" width="1" height="1"></td></tr>';
                }
                s += '</table></div></div>';

                return s;
        }

});

    $.fn.SelectorS = function(option) {

        if (typeof option == 'string'){
            var mpBoxNumber = $(this).attr('mpbox');
            if (option=='show'){
                $.fn.SelectorS.obj[mpBoxNumber].show();
            }
            if (option=='hide'){
                $('#'+mpBoxNumber).hide();
            }
        }else{
            var opt = $.extend({}, $.fn.SelectorS.defaults, option);
            return this.each(function(){
                new SelectorS($(this),opt);
            });
        }
    };

    $.fn.SelectorS.number = 0;
    $.fn.SelectorS.obj = {};

    $.fn.SelectorS.defaults = {};


})(jQuery);

