//<script type="text/javascript">
    LightboxOptions.fileLoadingImage = '/data/js/plugin/lightbox/images/loading.gif';
    LightboxOptions.fileBottomNavCloseImage = '/data/js/plugin/lightbox/images/close.gif';
    LightboxOptions.overlayOpacity = 0.01;
    LightboxOptions.labelOf = "sur";

    //    document.observe('dom:loaded', function () {
    //        // addEvent(window, 'load', function () {
    //        $$('div.element div.description', 'div.element div.shortDescription').forEach(function (element) {
    //            var alea = Math.round(Math.random() * 1000000);
    //            element.select('img').forEach(function (elem) {
    //                //                elem.setStyle({cursor: "pointer"});
    //                elem.style.cursor = 'pointer';
    //                //                Object.extend(elem, {href: elem.src, rel: "lightbox["+alea+"]"});
    //                //                elem.writeAttribute("href", elem.src);
    //                //                elem.writeAttribute("rel", "lightbox["+alea+"]");
    //                elem.href = elem.src;
    //                elem.rel = "lightbox["+alea+"]";
    //                //                elem.observe('click', (function (event) {
    //                //                    event.stop();
    //                //                    this.initialize();
    //                //                    this.start(elem);
    //                //                }).bind(Lightbox.prototype));
    //            });
    //        });
    //        Object.extend(Lightbox.prototype, {
    //            updateImageList: function() {
    //                this.updateImageList = Prototype.emptyFunction;
    //                document.observe('click', (function(event){
    //                    var target = event.findElement('a[rel^=lightbox]') || event.findElement('area[rel^=lightbox]') || event.findElement('img[rel^=lightbox]');
    //                    if (target) {
    //                        event.stop();
    //                        this.start(target);
    //                    }
    //                }).bind(this));
    //            }
    //        });
    //        new Lightbox();
    //    });

    //
    //        document.observe('click', (function(event){
    //            var target = event.findElement('a[rel^=lightbox]') || event.findElement('area[rel^=lightbox]');
    //            if (target) {
    //                event.stop();
    //                this.start(target);
    //            }
    //        }).bind(this));
    /**
     * Ajax request with an alias and an optionnal id (divId => "alias-id", target => "alias?id=id)
     * (Automatic toggle)
     */
    function ajaxToggle(alias, id, confirmation){
        var target = alias;
        var divId = alias;
        if(id != null){
            target = alias+'?id='+id;
            divId = alias+'-'+id;
        }
        return ajax(divId, target, true, confirmation);
    }

    /**
     * Ajax request with :
     * id : id of the html element to update
     * target : request to send
     * toggle : flag, toggle or not toggle
     * confirmation : confirmation string to display (if null, no confirmation asked)
     * fadeOnComplete : flag, fade on complete
     */
    function ajax(id, target, origin, toggle, confirmation, fadeOnComplete, insertion, idForm, actionOnComplete, parameters){
        //        Object.extend(this.options, options || { });
        // display a confirm box and execute action only if confirmed
        if(confirmation!=null){
            var validation=confirm(confirmation);
            if(validation==false){
                return false;
            }
        }
        if(toggle==true && $(id).style.display != "none"){
            // Just hide the div
            return Effect.toggle(id, 'slide', {duration: 0.5});
        }
        // div for origin
        var div = createDiv(origin);
        // basic options
        var options = {
            method:       'post',
            evalScripts: true
        };
        // parameters form if given
        if (idForm) {
            Object.extend(options, { parameters : $(idForm).serialize(true)});
        }
        // parameters if given
        if (parameters) {
            Object.extend(options, { parameters : parameters});
        }
        // insertion if given
        if (insertion) {
            Object.extend(options, { insertion : insertion});
        }
        // onComplete
        Object.extend(options, { onComplete: function(){
                if (toggle) {
                    Effect.toggle(id, 'slide', {duration: 0.5});
                }
                if (fadeOnComplete) {
                    Effect.Fade(id, {duration: 5});
                }
                if (origin) {
                    removeDiv(origin, div);
                }
                if (actionOnComplete) {
                    actionOnComplete.call();
                }}
        });
        Object.extend(options, { onCreate: function(){
                if (origin) {
                    origin.insertBefore(div, origin.firstChild);
                }}
        });

        if (target.substr(0, 1) != "/") {
            target = "/"+target;
        }

        // Juste before we update the element, we remove potential tinyMCE
        if($(id)) {
            // Get all the tinyMce editors in element
            $(id).select('textarea').each(function (elem) {
                var tinyId = elem.id;
                try{
                    if (tinyMCE.getInstanceById(tinyId)) {
                        tinyMCE.execCommand('mceFocus', false, tinyId);
                        tinyMCE.execCommand('mceRemoveControl', false, tinyId);
                    }
                }
                catch (exception) {
                }
            });
        }

        new Ajax.Updater(id, target, options);
        return false;
    }

    function createDiv(origin) {

        var target = $(origin);
        if (!target) {
            return null;
        }

        var width = target.getWidth();
        var height = target.getHeight();

        var paddingTop = (height/2)-8;
        height = (height/2)+8;

        var loadingDiv = document.createElement("DIV");
        var loadingPicture = document.createElement("IMG");

        loadingPicture.src = "data/image/icon/wait.gif";

        loadingDiv.style.position = "absolute";
        loadingDiv.style.textAlign = "center";
        loadingDiv.style.width = width+"px";
        loadingDiv.style.height = height+"px";
        loadingDiv.style.zIndex = "10000";

        loadingDiv.style.marginLeft = "-"+target.getStyle('paddingLeft');
        loadingDiv.style.marginTop = "-"+target.getStyle('paddingTop');

        loadingDiv.style.backgroundColor = "#fff";
        loadingDiv.style.paddingTop = paddingTop+"px";
        $(loadingDiv).setOpacity(0.7);
        loadingDiv.appendChild(loadingPicture);

        return loadingDiv;
    }

    function removeDiv(origin, div){
        Effect.Fade(div, {duration: 1, afetrFinish: function(){div.remove();}});
    }

    /**
     * Change display of an element : "block" <=> "none"
     */
    function changeDisplay(divId){
        if($(divId).style.display == 'block'){
            $(divId).style.display = 'none';
        }
        else{
            $(divId).style.display = 'block';
        }
    }


    function addEvent(source, type, callback) {
        if (source.addEventListener){        // code standard DOM
            source.addEventListener(type, callback, false);
            return true;
        } else if (source.attachEvent){     // code propriétaire MSIE
            var r = source.attachEvent("on"+type, callback);
            return r;
        } else {            // code navigateur sans support DOM-event
            eval('source.on' + type + '= callback') ;
        }
    }


    function removeEvent(source, type, callback) {
        if (source.addEventListener){        // code standard DOM
            source.removeEventListener(type, callback, false);
            return true;
        } else if (source.attachEvent){     // code propriétaire MSIE
            var r = source.detachEvent("on"+type, callback);
            return r;
        } else {            // code navigateur sans support DOM-event
        }
    }

    /**
     * Hovering menu on old browsers
     */
    function  getStandardEvent(e) {
        if (e == null && window.event) {
            // cas particulier de MSIE pour recuperer l'evenement en cours
            e = window.event ;
        }
        if (e.target == null && e.srcElement) {
            // cas particulier de MSIE pour recuperer la balise DOM cible
            e.target = e.srcElement ;
        }
        if (! e.preventDefault ){
            // cas particulier de MSIE pour empecher l'action par defaut du navigateur
            e.preventDefault = function () { this.returnValue = false ; } ;
        }
        return e ;
    }



    sfHover = function() {
        var sfEls = document.getElementById("menu").getElementsByTagName("LI");
        for (var i=0; i<sfEls.length; i++) {
            sfEls[i].onmouseover=function() {
                this.className+=" sfhover";
            }
            sfEls[i].onmouseout=function() {
                this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
            }
        }
    }
    if (window.attachEvent) window.attachEvent("onload", sfHover);


    function ucfirst(string){
        var f = string.charAt(0).toUpperCase();
        return f + string.substr(1);
    }

    function showHideById(id, type, anchor){
        if (!type) {
            type = 'blind';
        }
        var element = $(id);
        var options = {queue: {position: 'end', scope: id}, duration: 0.5};
        if (element.style.display == 'none') {
            switch (type) {
                case 'blind': Effect.BlindDown(element, options); break;
                default: element.style.display = 'block'; break;
            }
        } else {
            switch (type) {
                case 'blind': Effect.BlindUp(element, options); break;
                default: element.style.display = 'none'; break;
            }
        }
    }

    function ucfirst(string){
        var f = string.charAt(0).toUpperCase();
        return f + string.substr(1);
    }

    function stringEndsWith(string1, string2){
        return (string1.substr(string1.length-string2.length, string2.length) == string2);
    }
    //</script>//<script type="text/javascript">

    function elementAdd(origin, type, id, secondType, name, form) {
        //        // Find div
        var divId = "element-"+type+"-"+id+"-"+name;
        ajax(divId, secondType+"/null/create?id_"+type+"="+id, (origin.form ? origin.form : origin.parentNode), null, null, null, 'top');
    }

    function elementEditWeightSubList(origin, type, id, secondType, name) {
        //        // Find div
        var divId = "element-"+type+"-"+id+"-"+name;
        ajax(divId, secondType+"/editWeight?id_"+type+"="+id, (origin.form ? origin.form : origin.parentNode), null, null, null, null);
    }


    function elementSortable(type, tag, constraint, id, query) {
        if($("element-"+type+"--actions")) {
            $("element-"+type+"--actions").remove();
        }
        if (!tag) {
            tag = 'div';
        }
        if (!constraint) {
            constraint = 'vertical'|'horizontal';
        }
        if (!id) {
            id = "element-"+type+"-list";
        }
        if (!query) {
            query = "";
        }
        Sortable.create("editWeight-"+type, {
            tag: tag,
            only: 'editWeight',
            constraint: constraint,
            onUpdate: function () {
                ajax(id, type+"/editWeight"+query, $(id), null, null, null, null, null, null, Sortable.serialize("editWeight-"+type));
            }});
    }

    function elementEditWeight(origin, type, form) {
        // Add an element
        if(!form) {
            // Find div
            var divId = "element-"+type+"-list";
            // If form : set view
            ajax(divId, type+"/editWeight", (origin.form ? origin.form : origin.parentNode), null, null, null, null);
        }
        // Else submit form
        else {
            ajaxForm(form.id, form.parentNode.id, type+"/editWeight", form);
        }
    }


    function elementCreate(origin, type, id, form) {
        // Add an element
        if(!id) {
            // Find div
            var divId = "element-"+type+"-list-content";
            if(!$(divId)) {
                divId = "element-"+type+"-list";
            }
            var target = type+"/null/create?mode=full";
            if(type=="officePicture") {
                var parentId = origin.parentNode.parentNode.parentNode.parentNode.id;
                parentId = parentId.substr("element-office-".length, parentId.length);
                target = target+"&id_office="+parentId;
            }
            // If form : set view
            ajax(divId, target, (origin.form ? origin.form : origin.parentNode), null, null, null, 'top');
        }
        // Else submit form
        else {
            ajaxForm(form.id, form.parentNode.id, type+"/"+id+"/create", form);
        }
    }


    function elementSave(origin, type, id, form) {
        // Find div
        var divId = "element-"+type+"-"+id;
        var view = $(divId).className.substr(("element "+type).length+1);
        // If form not given, display or hide form
        if (!form) {
            // Find Form
            var saveForm = $$("#"+divId+" form.edit"+ucfirst(type))[0];
            // If form : set view
            if(saveForm) {
                ajax(divId, type+"/"+id, (origin.form ? origin.form : origin.parentNode), null, null, null);
            }
            // Else display form
            else {
                ajax(divId, type+"/"+id+"/save?view=element."+view, (origin.form ? origin.form : origin.parentNode), null, null, null);
            }
        }
        // Else submit form
        else {
            ajaxForm(form.id, form.parentNode.id, type+"/"+id+"/save", form);
        }
    }



    function elementPublish(origin, type, id) {
        return ajax("element-"+type+"-"+id, type+"/"+id+"/publish", (origin.form ? origin.form : origin.parentNode), null, "Confirmer publication", null);
    }

    function elementUnpublish(origin, type, id) {
        return ajax("element-"+type+"-"+id, type+"/"+id+"/unpublish", (origin.form ? origin.form : origin.parentNode), null, "Confirmer anulation de publication", null);
    }


    function elementDelete(origin, type, id) {
        var height = $("element-"+type+"-"+id).getHeight();
        var fun = function() {elementDeleted(origin, type, id, height); return false;};
        return ajax("element-"+type+"-"+id, type+"/"+id+"/delete", (origin.form ? origin.form : origin.parentNode), null, "Confirmer suppression", true, null, null, fun);
    }

    function elementDeleted(origin, type, id, height) {
        var div = $("element-"+type+"-"+id);
        div.style.textAlign = "left";
        div.style.height = ((height/2)+8)+"px";
        div.style.paddingTop = ((height/2)-8)+"px";
    }

    function elementCancel(origin, type, id) {
        if(id) {
            var view = (origin.form && origin.form.select('input[name="view"]').first())?origin.form.select('input[name="view"]').first().value:"element.view";
            // Display element
            ajax("element-"+type+"-"+id, type+"/"+id+"?view="+view, (origin.form ? origin.form : origin.parentNode), null, null, null);
        }
        else {
            // remove form
            origin.form.parentNode.remove();
        }
    }

    function elementSaveList(origin, type, id, secondType, secondId, list, form){
        // IE9 patch : we have to stop submit of parent form...
        var parentForm = $(form).up('form');
        // store old onsubmit of the form
        var onsubmit = parentForm.readAttribute("onsubmit");
        // set new onsubmit => do nothing
        parentForm.writeAttribute("onsubmit", "return false;");
        new Ajax.Request(secondType+"/"+secondId+"/create?id_"+type+"="+id, {
            evalScripts: true,
            parameters: form.serialize(true),
            onComplete: function(result) {
                if ($("element-"+type+"-"+id+"-saveList-"+list)) {
                    $("element-"+type+"-"+id+"-saveList-"+list).remove();
                }
                initializeElementSaveList (origin, type, id, list);
                // patch IE9 : restore old onsubmit after a time
                parentForm.writeAttribute("onsubmit", onsubmit);
            }
        });
    }

    function initializeElementSaveList(origin, type, id, list, form){
        if(!form) {
            var search = "#element-"+type+"-"+id+" form.edit fieldset.buttons";
            // Find buttons fieldset
            if ($$(search).first()) {
                ajax($$(search).first(), type+"/"+id+"/saveList?list="+list+"&mode=full", null, null, null, null, 'before');
            }
        }
        else {
            // Find div
            var div = "element-"+type+"-"+id+"-saveList-"+list;
            ajax(div, type+"/"+id+"/saveList?list="+list, null, null, null, null, null);
        }
    }


    //</script>
//<script type="text/javascript">

    //    function preloadInputFile(){
    //        var inputs = this.getElementsByTagName("input");
    //        var input;
    //        for (var i = 0; i < inputs.length; i++) {
    //            input = inputs[i];
    //            if(input.getAttribute("type")=="file"){
    //                formInputUploadImage(input.id, input.name);
    //            }
    //        }
    //    }
    //
    //
    //    function PreparePreloadInputFile(){
    //        //        var forms = document.getElementsByTagName("form");
    //        var forms = document.getElementsByTagName("form");
    //        for (var i = 0; i < forms.length; i++) {
    //            addEvent(forms[i], 'submit', preloadInputFile);
    //        }
    //    }
    //    addEvent(window, 'load', PreparePreloadInputFile);


    /**
     * Upload the image of the file input form on the associated iframe
     * get the form, change the action and target to do an upload in the iframe corresponding to the input file
     * send the form (in iframe)
     * restore action and taraget of the form
     * The result of the upload wil be set in associated hidden input (when iframe is loaded)
     */
    function formInputUpload(id, name, formName, iframe){
        // the input file
        var input = $(id);
        // the form
        var form = input.form;
        var divUpload = $(iframe+"-div");
        // store old action, target and onsubmit of the form
        var action = form.getAttribute("action");
        var target = form.getAttribute("target");
        var onsubmit = form.getAttribute("onsubmit");
        // if filename
        var filename  ="";
        if ($$("#"+iframe+"-div img") && $$("#"+iframe+"-div img").first()) {
            filename = $$("#"+iframe+"-div img").first().alt;
        }
        // set new action, target and onsubmit
        form.setAttribute("action", "upload/"+formName+ucfirst(name)+"/"+name+"?presenter=ajax");
        form.setAttribute("target", iframe);
        form.setAttribute("onsubmit", "");
        // submit form
        form.submit();
        var submitList = $$('#'+form.id+' input[type="submit"]');
        // disable sublmit form
        for (var i = 0; i < submitList.length; i++) {
            submitList[i].disabled = true;
            submitList[i].addClassName("transparent");
        }
        // clear div and set waiting icon
        while (divUpload.hasChildNodes()) {
            divUpload.removeChild(divUpload.lastChild);
        }
        divUpload.style.background = '#ffffff url("data/image/icon/ajax-loader.gif") no-repeat center';

        // set old action, target and onsubmit
        form.setAttribute("action", action);
        form.setAttribute("target", target);
        form.setAttribute("onsubmit", onsubmit);
    }
    /**
     * The iframe is used to upload a file
     * When iframe is loaded, upload is done,
     * Set result filename in associated hidden input
     */
    function formInputUploaded(iframe, id){
        // Submission form
        var form = $(id).form;
        var submitList = $$('#'+form.id+' input[type="submit"]');
        // disable sublmit form
        for (var i = 0; i < submitList.length; i++) {
            submitList[i].disabled = true;
            submitList[i].addClassName("transparent");
        }
        if (window && window.frames[iframe] && window.frames[iframe].document && window.frames[iframe].document.getElementById("upload-result")) {
            var doc  = window.frames[iframe].document;
            var result = doc.getElementById("upload-result-hidden").value;
            var error = doc.getElementById("upload-error-hidden").value;
            var value = doc.getElementById("upload-value-hidden").value;
            // If upload is a succes
            if (result=="1") {
                var imgUpload = document.createElement("img");
                imgUpload.src = value;
                imgUpload.alt = value;
                $(iframe+"-div").appendChild(imgUpload);
                // Set result in hidden input
                $(id+"-hidden").value = value;
                // free add Picture button
                if ($$('#'+form.id+' input[type="submit"][name="add"]').first()) {
                    $$('#'+form.id+' input[type="submit"][name="add"]').first().disabled = false;
                    $$('#'+form.id+' input[type="submit"][name="add"]').first().removeClassName("transparent");
                }
            } else {
                var spanUpload = document.createElement("span");
                spanUpload.setAttribute("class", "error");
                spanUpload.appendChild(document.createTextNode(error));
                $(iframe+"-div").appendChild(spanUpload);
            }
        }
        // free sublmit form
        for (var j = 0; j < submitList.length; j++) {
            if (submitList[j].name!='add') {
                submitList[j].disabled = false;
                submitList[j].removeClassName("transparent");
            }
        }
        // Remove waiting icon
        $(iframe+"-div").style.backgroundImage = 'none';
        $(iframe+"-div").style.backgroundColor = '#ffffff';
    }


    function submitForm(form, flagAjax){
        // If not in ajax, let form continue and do action
        if (!flagAjax) {
            return true;
        }
        var action = form.getAttribute("action");
        ajaxForm(form.getAttribute("id"), form.getAttribute("id"), action);
        return false;
    }

    /**
     * Send a form with ajax
     */
    function ajaxForm(idForm, divId, target, origin){
        prepareFormForAjax(idForm);
        //        new Ajax.Updater(divId, target, {evalScripts: true, parameters: $(idForm).serialize(true)});
        ajax(divId, target, origin, null, null, null, null, idForm);
    }

    /**
     * Patch for tinyMCE textarea (recopy in textarea
     */
    function prepareFormForAjax(idForm) {
        var form = $(idForm);
        var listTextarea = form.getElementsByTagName("textarea");
        var textarea, edcontent, message;
        for (var i = 0; i < listTextarea.length; i++) {
            textarea = listTextarea.item(i);
            edcontent = tinyMCE.getInstanceById(textarea.id);
            if (edcontent) {
                // remove all childs
                while (textarea.hasChildNodes()) {
                    textarea.removeChild(textarea.lastChild);
                }
                // copy the contents of the editor to the textarea
                var content = edcontent.getContent();
                textarea.value = content;
            }
        }
    }

    /**
     * Show / hide action tip to help user perform actions
     */
    function switchViewOn(divId){
        $(divId).removeClassName("transparent");
    }

    function switchViewOff(divId){
        $(divId).addClassName("transparent");
    }
    function switchActionTipOn(divId){
        $(divId+"-content").style.display = "block";
    }

    function switchActionTipOff(divId){
        $(divId+"-content").style.display = "none";
    }


    function createShortDescription(form) {
        form = $(form);
        if (!form.select("textarea.description").length || !form.select("textarea.shortDescription").length) {
            return false;
        }
        //        var body = $(getElementInIFrame(form.id+'Description_ifr', 'tinymce'));
        var body = tinyMCE.getInstanceById(form.id+'Description').getBody();
        var img = findFirstImgNode(body) ? findFirstImgNode(body).src : null;
        var text = findFirstTextNode(body) ? findFirstTextNode(body).nodeValue.substr(0, 300)+"..." : "";
        //        var p2 = $(getElementInIFrame(form.id+'ShortDescription_ifr', 'tinymce')).firstChild;
        var html = new Element("div").update(new Element("table").insert(new Element("tr").insert(new Element("td").update(text).setStyle({verticalAlign: "top", textAlign: "justify"}))));
        if(img) { html.down("tr").insert({ top: (new Element("td").update(new Element("img", {width: 100, height: 100, src: img, alt: img}))) }); }
        tinyMCE.getInstanceById(form.id+'ShortDescription').getBody().innerHTML = html.innerHTML;
        //        tinyMCE.execInstanceCommand(form.id+'ShortDescription', 'mceCleanup', false, true);

        //        var p2 = document.createElement("p");
        //        var table = document.createElement("table");
        //        var tr = document.createElement("tr");
        //        var td;
        //        if (img) {
        //            img.width = 100; img.height = 100; td = document.createElement("td"); td.appendChild(img); tr.appendChild(td);
        //        }
        //        td = document.createElement("td"); td.setAttribute("style", "vertical-align: top;"); td.appendChild(document.createTextNode(text));
        //        tr.appendChild(td);
        //        table.appendChild(tr);
        //        p2.appendChild(table);
        //        //        tinyMCE.execInstanceCommand(form.id+'ShortDescription', 'mceReplaceContent', false, p2.innerHTML);
        //        tinyMCE.get(form.id+'ShortDescription').setContent(p2.innerHTML);
        //        tinyMCE.execInstanceCommand(form.id+'ShortDescription', 'mceCleanup', false, true);

        return false;
    }

    //    javascript: frame = (
    //    function(){
    //        var frames = document.getElementsByTagName('iframe');
    //        for (var i=0;i<frames.length;i++){
    //            var iframe = frames[i];
    //            var idoc= iframe.contentDocument || iframe.contentWindow.document;
    //            var iwin= iframe.contentWindow || iframe.contentDocument.defaultView;
    //            if (iwin.Prototype){
    //                Element.extend(idoc);
    //                iwin.Element.extend(idoc);
    //            }
    //        }
    //    })();


    function findFirstTextNode (node) {
        var result = null;
        for (var i = 0; i < node.childNodes.length; i++) {
            result = node.childNodes[i];
            if(result.nodeType == 3) {
                return result;
            }
            result = findFirstTextNode(result);
            if(result) {
                return result;
            }
        }
        return null;
    }

    function findFirstImgNode (node) {
        var result = null;
        for (var i = 0; i < node.childNodes.length; i++) {
            result = node.childNodes[i];
            if(result.tagName == "IMG") {
                return result;
            }
            result = findFirstImgNode(result);
            if(result) {
                return result;
            }
        }
        return null;
    }

    function getElementInIFrame(idIframe, id) {
        var frame = $(idIframe);
        var doc = frame.contentWindow.document;
        var element = doc.getElementById(id);
        return element;
    }

    function elementClear(element) {
        var childs = element.childNodes;
        for (var i = 0; i < childs.length; i++) {
            element.removeChild(childs[i]);
        }
    }
    //</script>
//<script type="text/javascript">
    /**
     * Edit a gallery category
     */
    function gallery(id, target){
        return ajax(id, target);
    }

    function formGallery(idForm, divId, target){
        return ajaxForm(idForm, $(divId).parentNode.id, target);
    }
    /**
     * Remove a gallery category
     */
    function deleteGallery(id, target){
        ajax(id, target, false, "Etes - vous sûr ?");
    }
    //</script>
//<script type="text/javascript">
    var currentOn = new Array();
    var nextOn = new Array();
    var timeout = new Array();
    var duration = 0.4;
    var delay = 250;

    function initMenuOnOut(){
        var listLi = $$("#menu ul.menu li");
        var li, id;
        for (var i = 0; i < listLi.length; i++) {
            li = listLi[i];
            id  = getIdFromLi(li);
            if(li.getElementsByTagName("ul") && li.getElementsByTagName("ul")[0]) {
                // if active menu, display
                //                if(li.getElementsByTagName("a") && li.getElementsByTagName("a")[0] && $(li.getElementsByTagName("a")[0]).hasClassName("active")) {
                if(li.select("ul li a.active").length !=0) {
                    currentOn[id] = true;
                    nextOn[id] = true;
                    //                li.getElementsByTagName("ul")[0].style.display  = 'none';
                }
                else {
                    currentOn[id] = false;
                    nextOn[id] = false;
                    li.getElementsByTagName("ul")[0].style.display  = 'none';
                }
                addEvent(li, 'mouseover', mouseOn);
                addEvent(li, 'mouseout', mouseOut);
            }
        }
    }
    addEvent(window, 'load', initMenuOnOut);

    function mouseOn(e){
        var li  = findUsedLi(getStandardEvent(e).target.parentNode);
        var id = getIdFromLi(li);
        // set next to true
        nextOn[id] = true;
        // If not in use
        if (Effect.Queues.get('menuxscope').size()<1) {
            clearTimeout(timeout[id]);
            timeout[id] = setTimeout(function(){menuOn(li);}, delay);
        }
    }

    function mouseOut(e){
        var li  = findUsedLi(getStandardEvent(e).target.parentNode);
        var id = getIdFromLi(li);
        // set next to false
        nextOn[id] = false;
        // If not in use
        if (Effect.Queues.get('menuxscope').size()<1) {
            clearTimeout(timeout[id]);
            timeout[id] = setTimeout(function(){menuOut(li);}, delay);
        }
    }

    function menuOn(li){
        var id = getIdFromLi(li);
        if (nextOn[id]==true && currentOn[id]!=true) {
            // current is 1
            currentOn[id] = true;
            // display
            if(li.getElementsByTagName("ul") && li.getElementsByTagName("ul")[0]) {
                new Effect.BlindDown(li.getElementsByTagName("ul")[0], {duration: duration, queue: {position: 'end', scope: 'menuxscope'}, afterFinish: function(){menuNext(li)}});
            }
        }
        // current is 1
        currentOn[id] = true;
    }

    function menuOut(li){
        var id = getIdFromLi(li);
        if (nextOn[id]==false && currentOn[id]!=false) {
            // current is 1
            currentOn[id] = false;
            // display
            if(li.getElementsByTagName("ul") && li.getElementsByTagName("ul")[0]) {
                new Effect.BlindUp(li.getElementsByTagName("ul")[0], {duration: duration, queue: {position: 'end', scope: 'menuxscope'}, afterFinish: function(){menuNext(li)}});
            }
        }
        // current is 1
        currentOn[id] = false;
    }

    function menuNext(li) {
        var id = getIdFromLi(li);
        // if current !=next
        if (currentOn[id]!=nextOn[id]) {
            // menuOn or menuOut depending on nextOn
            clearTimeout(timeout[id]);
            if (nextOn[id]) {
                timeout[id] = setTimeout(function(){menuOn(li);}, delay);
            } else {
                timeout[id] = setTimeout(function(){menuOut(li);}, delay);
            }
        }
    }

    function getIdFromLi(li) {
        var id = li.getElementsByTagName("A");
        id = id[0].id;
        return id;
    }

    function findUsedLi(li) {
        if (typeof(currentOn[getIdFromLi(li)])!='undefined' && currentOn[getIdFromLi(li)]!==null) {
            return li;
        }
        if(li.parentNode.parentNode.tagName == "LI"){
            var li2 = li.parentNode.parentNode
            return findUsedLi(li2);
        }
        return null;
    }
    //</script>

