﻿function alm() {
    this.arr = Array(0);
    this.zi = 1000;

    this.add = function(img, img_over) {
        var l = this.arr.length;
        if ($("alm_item_" + l)) {
            this.arr[l] = new alm_item(l, img, img_over);
            this.arr[l].obj.setStyle("z-index", this.zi);
            this.zi = this.zi - 100;
            //alert(this.arr[l].obj.getStyle("z-index"));
        }
    }

    this.init = function() {
        var i = 0;
        for (i = 0; i < this.arr.length; i++) {
            this.arr[i].init();
        }
    }

    this.animation = function(id) {
        this.arr[id].animation();
    }

    this.animation2 = function(id) {
        this.arr[id].animation2();
    }

    this.is_open = function() {
        var i = 0;
        for (i = 0; i < this.arr.length; i++) {
            if (this.arr[i].is_open == 1)
                return true;
        }
        return false;
    }
}

function alm_item(id, img, img_over) {
    this.id = id;
    this.img = img;
    this.img_over = img_over;

    this.obj = $("alm_item_" + this.id);
    this.obj_img = $("alm_item_" + this.id + "_img");
    this.obj_resize = $("alm_item_" + this.id + "_resize");
    this.obj_submenu = $("alm_item_" + this.id + "_submenu");

    this.timer_a = 0;
    this.timer_a2 = 0;

    this.is_open = 0;
    this.open_height = 0;

    this.obj_resize.addEvent("mouseover", function(a) {
        return function() {
            //if (a.is_open == 1)
            //    return;
            a.obj.removeClass("animation_left_menu_item");
            a.obj.addClass("animation_left_menu_item_over");
            a.obj_img.src = a.img_over;
            clearTimeout(a.timer_a);
            clearTimeout(a.timer_a2);
            //if (lm.is_open() == true)
            //    a.timer_a = setTimeout("lm.animation(" + a.id + ")", 0);
            //else
                a.timer_a = setTimeout("lm.animation(" + a.id + ")", 300);
        }
    } (this));

    this.obj_resize.addEvent("mouseout", function(a) {
        return function() {
            clearTimeout(a.timer_a);
            clearTimeout(a.timer_a2);
            if (a.is_open == 1)
                a.timer_a2 = setTimeout("lm.animation2(" + a.id + ")", 10);
            else {
                a.obj.removeClass("animation_left_menu_item_over");
                a.obj.addClass("animation_left_menu_item");
                a.obj_img.src = a.img;
            }
        }
    } (this));

    this.obj_resize.addEvent("mousemove", function(a) {
        return function() {
            if (a.is_open == 1) {
                clearTimeout(a.timer_a);
                clearTimeout(a.timer_a2);
            }
        }
    } (this));

    this.obj_submenu.addEvent("mousemove", function(a) {
        return function() {
            if (a.is_open == 1) {
                clearTimeout(a.timer_a);
                clearTimeout(a.timer_a2);
            }
        }
    } (this));

    this.init = function() {
        this.open_height = 39 + 22 + parseInt(this.obj_submenu.offsetHeight);
        this.obj_submenu.setStyle('opacity', '0');
        this.obj_submenu.setStyle('visibility', 'visible');
    }

    this.animation = function() {
        if (parseInt(this.obj_resize.getStyle("height")) == this.open_height) {
            return;
        }
        /*var myEffects = new Fx.Styles(this.obj_resize, { duration: 100, transition: Fx.Transitions.Expo.easeOut });
        myEffects.start({
            'height': ['48', this.open_height]
        }).chain(function(a) {
            return function() {
                a.is_open = 1;
                var myEffects2 = new Fx.Styles(a.obj_submenu, { duration: 100, transition: Fx.Transitions.Cubic.easeIn });
                myEffects2.start({
                    'opacity': ['0', '1']
                });
            }
        } (this));*/

        var myEffects = new Fx.Elements(this.obj_resize, { duration: 200, transition: Fx.Transitions.Quad.easeOut });
        myEffects.start({
            '0': {
                'height': ['48', this.open_height]
            }
        }).chain(function(a) {
            return function() {
                a.is_open = 1;
                var myEffects2 = new Fx.Elements(a.obj_submenu, { duration: 100, transition: Fx.Transitions.Cubic.easeIn });
                myEffects2.start({
                    '0': {
                        'opacity': ['0', '1']
                    }
                });
            }
        } (this));
    }

    this.animation2 = function() {
        if (parseInt(this.obj_resize.getStyle("height")) == 48) {
            return;
        }
        /*var myEffects2 = new Fx.Styles(this.obj_submenu, { duration: 100, transition: Fx.Transitions.Cubic.easeIn });
        myEffects2.start({
            'opacity': ['0']
        });
        var myEffects = new Fx.Styles(this.obj_resize, { duration: 200, transition: Fx.Transitions.Expo.easeIn });
        myEffects.start({
            'height': [this.open_height, '48']
        }).chain(function(a) {
            return function() {
                a.obj.removeClass("animation_left_menu_item_over");
                a.obj.addClass("animation_left_menu_item");
                a.obj_img.src = a.img;
                a.is_open = 0;
            }
        } (this));*/

        var myEffects2 = new Fx.Elements(this.obj_submenu, { duration: 100, transition: Fx.Transitions.Quad.easeOut });
        myEffects2.start({
            '0': {
                'opacity': ['0']
            }
        });
        var myEffects = new Fx.Elements(this.obj_resize, { duration: 200, transition: Fx.Transitions.Quad.easeOut });
        myEffects.start({
            '0': {
                'height': [this.open_height, '48']
            }
        }).chain(function(a) {
            return function() {
                a.obj.removeClass("animation_left_menu_item_over");
                a.obj.addClass("animation_left_menu_item");
                a.obj_img.src = a.img;
                a.is_open = 0;
            }
        } (this));
    }
}