//Chrome Drop Down Menu- Author: Dynamic Drive (http://www.dynamicdrive.com)
//Last updated: June 14th, 06'

var cssdropdown = {
    disappeardelay: 300, //set delay in miliseconds before menu disappears onmouseout
    disablemenuclick: false, //when user clicks on a menu item with a drop down menu, disable menu item's link?
    enableswipe: 0, //enable swipe effect? 1 for yes, 0 for no
    //No need to edit beyond here////////////////////////
    dropmenuobj: null,
    ie: document.all,
    firefox: document.getElementById && !document.all,
    swipetimer: undefined,
    bottomclip: 0,
    
    getposOffset: function(what, offsettype){
        var totaloffset = (offsettype == "left") ? what.offsetLeft : what.offsetTop;
        var parentEl = what.offsetParent;
        while (parentEl != null) {
            totaloffset = (offsettype == "left") ? totaloffset + parentEl.offsetLeft : totaloffset + parentEl.offsetTop;
            parentEl = parentEl.offsetParent;
        }
        return totaloffset;
    },
    
    swipeeffect: function(){
        if (this.bottomclip < parseInt(this.dropmenuobj.offsetHeight)) {
            this.bottomclip += 10 + (this.bottomclip / 10); //unclip drop down menu visibility gradually
            this.dropmenuobj.style.clip = "rect(0 auto " + this.bottomclip + "px 0)";
        }
        else 
            return this.swipetimer = setTimeout("cssdropdown.swipeeffect()", 0);
    },
    
    showhide: function(obj, e){
        if (this.ie || this.firefox) 
            this.dropmenuobj.style.left = this.dropmenuobj.style.top = "-500px";
        if (e.type == "click" && obj.visibility == hidden || e.type == "mouseover") {
            if (this.enableswipe == 1) {
                if (typeof this.swipetimer != "undefined") 
                    clearTimeout(this.swipetimer);
                obj.clip = "rect(0 auto 0 0)"; //hide menu via clipping
                this.bottomclip = 0;
                this.swipeeffect();
            }
            obj.visibility = "visible";
        }
        else 
            if (e.type == "click") 
                obj.visibility = "hidden";
    },
    
    iecompattest: function(){
        return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
    },
    
    clearbrowseredge: function(obj, whichedge){
        var edgeoffset = 0;
        if (whichedge == "rightedge") {
            var windowedge = this.ie && !window.opera ? this.iecompattest().scrollLeft + this.iecompattest().clientWidth - 15 : window.pageXOffset + window.innerWidth - 15;
            this.dropmenuobj.contentmeasure = this.dropmenuobj.offsetWidth;
            if (windowedge - this.dropmenuobj.x < this.dropmenuobj.contentmeasure) //move menu to the left?
                edgeoffset = this.dropmenuobj.contentmeasure - obj.offsetWidth;
        }
        else {
            var topedge = this.ie && !window.opera ? this.iecompattest().scrollTop : window.pageYOffset;
            var windowedge = this.ie && !window.opera ? this.iecompattest().scrollTop + this.iecompattest().clientHeight - 15 : window.pageYOffset + window.innerHeight - 18;
            this.dropmenuobj.contentmeasure = this.dropmenuobj.offsetHeight;
            if (windowedge - this.dropmenuobj.y < this.dropmenuobj.contentmeasure) { //move up?
                edgeoffset = this.dropmenuobj.contentmeasure + obj.offsetHeight;
                if ((this.dropmenuobj.y - topedge) < this.dropmenuobj.contentmeasure) //up no good either?
                    edgeoffset = this.dropmenuobj.y + obj.offsetHeight - topedge;
            }
        }
        return edgeoffset;
    },
    
    dropit: function(obj, e, dropmenuID){
        if (this.dropmenuobj != null) //hide previous menu
            this.dropmenuobj.style.visibility = "hidden"; //hide menu
        this.clearhidemenu();
        if (this.ie || this.firefox) {
            obj.onmouseout = function(){
                cssdropdown.delayhidemenu();
            };
            obj.onclick = function(){
                return !cssdropdown.disablemenuclick;
            }; //disable main menu item link onclick?
            this.dropmenuobj = document.getElementById(dropmenuID);
            this.dropmenuobj.onmouseover = function(){
                cssdropdown.clearhidemenu();
            };
            this.dropmenuobj.onmouseout = function(e){
                cssdropdown.dynamichide(e);
            };
            this.dropmenuobj.onclick = function(){
                cssdropdown.delayhidemenu();
            };
            this.showhide(this.dropmenuobj.style, e);
            this.dropmenuobj.x = this.getposOffset(obj, "left");
            this.dropmenuobj.y = this.getposOffset(obj, "top");
            this.dropmenuobj.style.left = this.dropmenuobj.x - this.clearbrowseredge(obj, "rightedge") + "px";
            this.dropmenuobj.style.top = this.dropmenuobj.y - this.clearbrowseredge(obj, "bottomedge") + obj.offsetHeight + 1 + "px";
        }
    },
    
    contains_firefox: function(a, b){
        while (b.parentNode) 
            if ((b = b.parentNode) == a) 
                return true;
        return false;
    },
    
    dynamichide: function(e){
        var evtobj = window.event ? window.event : e;
        if (this.ie && !this.dropmenuobj.contains(evtobj.toElement)) 
            this.delayhidemenu();
        else 
            if (this.firefox && e.currentTarget != evtobj.relatedTarget && !this.contains_firefox(evtobj.currentTarget, evtobj.relatedTarget)) 
                this.delayhidemenu();
    },
    
    delayhidemenu: function(){
        this.delayhide = setTimeout("cssdropdown.dropmenuobj.style.visibility='hidden'", this.disappeardelay); //hide menu
    },
    
    clearhidemenu: function(){
        if (this.delayhide != "undefined") 
            clearTimeout(this.delayhide);
    },
    
    startchrome: function(){
        for (var ids = 0; ids < arguments.length; ids++) {
            var menuitems = document.getElementById(arguments[ids]).getElementsByTagName("a");
            for (var i = 0; i < menuitems.length; i++) {
                if (menuitems[i].getAttribute("rel")) {
                    var relvalue = menuitems[i].getAttribute("rel");
                    menuitems[i].onmouseover = function(e){
                        var event = typeof e != "undefined" ? e : window.event;
                        cssdropdown.dropit(this, event, this.getAttribute("rel"));
                    };
                }
            }
        }
    }
    
}
////slide div
var timerlen = 5;
var slideAniLen = 250;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();

function slidedown(objname){
    if (moving[objname]) 
        return;
    
    if (document.getElementById(objname).style.display != "none") 
        return;
    
    moving[objname] = true;
    dir[objname] = "down";
    startslide(objname);
}

function slideup(objname){
    if (moving[objname]) 
        return;
    
    if (document.getElementById(objname).style.display == "none") 
        return;
    
    moving[objname] = true;
    dir[objname] = "up";
    startslide(objname);
}

function startslide(objname){
    obj[objname] = document.getElementById(objname);
    
    endHeight[objname] = parseInt(obj[objname].style.height);
    startTime[objname] = (new Date()).getTime();
    
    if (dir[objname] == "down") {
        obj[objname].style.height = "1px";
    }
    
    obj[objname].style.display = "block";
    
    timerID[objname] = setInterval('slidetick(\'' + objname + '\');', timerlen);
}

function slidetick(objname){
    var elapsed = (new Date()).getTime() - startTime[objname];
    
    if (elapsed > slideAniLen) 
        endSlide(objname);
    else {
        var d = Math.round(elapsed / slideAniLen * endHeight[objname]);
        if (dir[objname] == "up") 
            d = endHeight[objname] - d;
        
        obj[objname].style.height = d + "px";
    }
    
    return;
}

function endSlide(objname){
    clearInterval(timerID[objname]);
    
    if (dir[objname] == "up") 
        obj[objname].style.display = "none";
    
    obj[objname].style.height = endHeight[objname] + "px";
    
    delete (moving[objname]);
    delete (timerID[objname]);
    delete (startTime[objname]);
    delete (endHeight[objname]);
    delete (obj[objname]);
    delete (dir[objname]);
    
    return;
}

function toggleSlide(objname){
    if (document.getElementById(objname).style.display == "none") {
        slidedown(objname);
    }
    else {
        slideup(objname);
    }
}
