var slideMenu = function(){
    var sp, st, t, element, slide_elements, l, w, sw, ot;
    return {
        build: function(target_element, sw, mt, s, active, h){
			sp = s;
            st = sw;
            t = mt;
            element = $(target_element);
            slide_elements = element.getElementsByTagName('li');
            l = slide_elements.length;
            w = element.offsetWidth;
            sw = w / l;
            ot = Math.floor((w - st) / (l - 1));
            var i = 0;
            for (i; i < l; i++) {
                s = slide_elements[i];
                s.style.width = sw + 'px';
                this.timer(s)
            }
            if (active != null) {
                element.timer = setInterval(function(){
                    slideMenu.slide(slide_elements[active - 1])
                }, t)
            }
        },
        timer: function(s){
            s.onmouseover = function(){
                clearInterval(element.timer);
                element.timer = setInterval(function(){
                    slideMenu.slide(s)
                }, t)
            }
        },
        slide: function(s){
            var cw = parseInt(s.style.width, '10');
            if (cw < st) {
                var owt = 0;
                var i = 0;
                for (i; i < l; i++) {
                    if (slide_elements[i] != s) {
                        var o, ow;
                        var oi = 0;
                        o = slide_elements[i];
                        ow = parseInt(o.style.width, '10');
                        if (ow > ot) {
                            oi = Math.floor((ow - ot) / sp);
                            oi = (oi > 0) ? oi : 1;
                            o.style.width = (ow - oi) + 'px'
                        }
                        owt = owt + (ow - oi)
                    }
                }
                s.style.width = (w - owt) + 'px';
            }
            else {
                clearInterval(element.timer)
            }
        }
    };
}();
