﻿ Element.addMethods('ul',{
    fitWidth:function(el,w){
        var lis = el.select('li');
        var widths = [];
        var total=0;
        for(var i=0;i<lis.length;i++){
            var width = lis[i].getWidth();
            total+=width;
            widths.push(width);
        }
        reqW = w - total;
        if(reqW > 0){
            lis.each(function(li,index){
                if(index==lis.length-1)
                    li.setStyle({float:'right'});
                else if(index!=0){
                    li.setStyle({marginLeft:Math.floor(reqW/(lis.length-1))+'px'});
                }
            });
        }
        var wTemp;
        var osright=((wTemp=el.up(0).getWidth()) < w)?Math.floor((w-wTemp)/2):'auto';
        var osleft=wTemp < w?w-wTemp-osright:'auto';
        el.setStyle({width:w+'px','marginLeft':osleft=='auto'?'auto':(-1*osleft)+'px','marginRight':osright=='auto'?'auto':(-1*osright)+'px'});
    }
});
Array.prototype.randomize = function(){
    var copy = this;
    for (var n = copy.length - 1; n > 1; n--) {
        var i = Math.random() * (n + 1) | 0; // pick a random integer in [0..n]
        if (i != n) { var tmp = copy[i]; copy[i] = copy[n]; copy[n] = tmp; }
    }
    return copy;
}

ClientDrop = {
    init:function(el){
        this.el = $(el);
        this.tab = $(this.el.identify() + 'Tab');
        this.height = this.el.getHeight();
        this.tab.setStyle({'bottom':(-1*this.tab.getHeight())+'px'});
        this.el.setStyle({'top':(-1*this.height)+'px'});
        this.open = false;
    },
    toggle:function(){
        if(this.open){
            this.el.morph('margin-top:0px',{afterFinish:function(morph){
                morph.element.removeClassName('open');
            }});
        }else{
            this.el.morph('margin-top:' + this.height + 'px',{beforeStart:function(morph){
                morph.element.addClassName('open');
            }});
        }
        this.open=!this.open;
    }
}