
var treeOpenImg = new Image();
treeOpenImg.src = "/images/bullet_ball_glass_green16.gif";
var treeClosedImg = new Image();
treeClosedImg.src = "/images/bullet_ball_glass_blue16.gif";

    /**
    * If the object with the passed id is showing then hide it. If it is hidden
    * then show it. This will only work with objects that are initially hidden.
    */
    function toggleVisibility(objectId) {
        var objectStyle = document.getElementById(objectId).style;

        if(objectStyle.display == "block") {
            objectStyle.display = "none";
        }
        else {
            objectStyle.display = "block";
        }
    }

    /**
    * Special verion of toggle that works with the document tree.
    */
    function toggleBranch(objectId) {
        var objectStyle = document.getElementById(objectId).style;

        if(objectStyle.display == "") {
            // use image to determine if open or closed
            var objectImg = document.getElementById('i' + objectId);
            if(objectImg.src.indexOf(treeClosedImg.src) > -1)
                objectStyle.display = "block";
            else
                objectStyle.display = "none";
        }
        else if(objectStyle.display == "block") {
            objectStyle.display = "none";
        }
        else {
            objectStyle.display = "block";
        }
    }

    function swapLeafImage(img) {
        var objectImg = document.getElementById(img);
        if(objectImg.src.indexOf(treeClosedImg.src) > -1)
            objectImg.src = treeOpenImg.src;
        else
            objectImg.src = treeClosedImg.src;
    }

    function openSizedPopup(url, width, height) {

        open(url, "popup", "toolbar=no,menubar=no,width="+width+",height="+height+",resizable=yes,top=0,left=0,scrollbars=yes");
    }

    function openPopup(url) {

        open(url, "popup", "toolbar=no,menubar=no,width=500,height=700,resizable=yes,top=0,left=0,scrollbars=yes");
    }

    function openUrl(url) {

        if(url.startsWith("http://"))
            openUrInNewWindow(url);
        else
            window.location = url;
        return false;
    }

    function openUrInNewWindow(url) {

        var newWindow = window.open(url, 'new');
        newWindow.focus();
        return false;
    }

    function checkboxLimit(checkbox, form, limit) {

        var total = form.eval(checkbox.name).length;
        var counter = 0;

        for(i=0;i<total;i++) {
            var next = form.eval(checkbox.name)[i];
            next.disabled = false;
            if(next.checked) {
                counter++;
            }
        }

        if(counter == limit) {
            for(i=0;i<total;i++) {
                var next = form.eval(checkbox.name)[i];
                if(!next.checked) {
                    next.disabled = true;
                }
            }
        }
    }

    /**
     * Change the size of a text area.
     */
    function changeTextAreaSize(e, name, num) {
        e.form.elements[name].rows=e.form.elements[name].rows+num
    }

    function getElementsByClassName(className) {
        var elements = new Array();
        var inc=0;
        var alltags=document.all? document.all : document.getElementsByTagName("*");
        for(i=0;i<alltags.length;i++) {
            if(alltags[i].className == className)
                elements[inc++]=alltags[i];
        }
        return elements;
    }

    function useScriptaculous() {
        
        var userAgent = navigator.userAgent;
        
        //alert(userAgent);
        
        // Detect Firefox - allow Scriptaculous if Firefox version is >= 2
        if(userAgent.indexOf("Firefox")!=-1){
            var versionindex = userAgent.indexOf("Firefox")+8;
            var versionNumberString = userAgent.substring(versionindex);
            version=parseFloat(versionNumberString)
            if(version >= 2)
                return true;
        }
        
        // Detect Internet Explorer Version - allow Scriptaculous if IE version is >= 7
        if(userAgent.indexOf("MSIE") != -1){
            var versionindex = userAgent.indexOf("MSIE")+5;
            var versionNumberString = userAgent.substring(versionindex);
            version=parseFloat(versionNumberString)
            if(version >= 7)
                return true;
        }

        return false;
    }
    
    /*************************************************************************/
    /** Use Prototype and Scriptaculous                                     **/
    /*************************************************************************/
    
    /**
     * WikiInsert class
     */
    /*
    var WikiInsert = {
        toggleEditIcon : function() {
            
            if(useScriptaculous()) {
                if($('insertWikiPageLink').visible()) {
                    new Effect.Fade('insertWikiPageLink');
                }
                else {
                    new Effect.Appear('insertWikiPageLink');
                }
            }
            else {
                $('insertWikiPageLink').toggle();
            }
        }
    };
     */
    
    var Editor = {
        showEditorTools: function(event) {
  
            $('showEditorTools').hide();
            $('hideEditorTools').show();
            var editPageTools = $('content').getElementsByClassName('editPageTools');
            for(i=0;i<editPageTools.length;i++) {
                var nextTool = editPageTools[i];
                var toolId = nextTool.id;
                
                if(useScriptaculous()) {
                    new Effect.Appear(nextTool);
                }
                else {
                    nextTool.show();
                }
            }
        },
        hideEditorTools: function(event) {

            $('showEditorTools').show();
            $('hideEditorTools').hide();
            var editPageTools = $('content').getElementsByClassName('editPageTools');
            for(i=0;i<editPageTools.length;i++) {
                var nextTool = editPageTools[i];
                var toolId = nextTool.id;

                if(useScriptaculous()) {
                    new Effect.Fade(nextTool);
                }
                else {
                    nextTool.hide();
                }
            }
        }
    };
    
    var Triggers = {
        toggleVisability : function(event) {

            var id = Event.element(event).id;
            var triggerId = id.toString();
            var baseId = triggerId.substring(0, triggerId.lastIndexOf('_'));
            
            $(baseId + "_show").toggle();
            $(baseId + "_hide").toggle();
            $(baseId).toggle();  
        },
        configureToggleVisabilityTriggers : function(containerId, triggerClass) {

            var triggers = $(containerId).getElementsByClassName(triggerClass);
            for(i=0;i<triggers.length;i++) {
                var nextTrigger = triggers[i];
                var triggerId = nextTrigger.id;
                Event.observe(triggerId, 'click', Triggers.toggleVisability.bindAsEventListener(Triggers));
            }
        }
    };

    function getUrlParameter(name) {
        name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
        var regexS = "[\\?&]"+name+"=([^&#]*)";
        var regex = new RegExp( regexS );
        var results = regex.exec( window.location.href );
        if( results == null )
            return "";
        else
            return results[1];
    }

    function getDefaultScrollPadding() {

        var defaultScrollPadding = 20;
        var userAgent = navigator.userAgent;

        if(userAgent.indexOf("Firefox")!=-1) {
            defaultScrollPadding = 18;
        }
        else if(userAgent.indexOf("MSIE") != -1) {
            defaultScrollPadding = 6;
        }

        return defaultScrollPadding;
    }

    function goToAnchor(anchorName) {
        var anchorElements = $('content').select('a[name="'+anchorName+'"]');
        if(anchorElements.length > 0) {
            var targetElement = anchorElements[0];
            var targetId = targetElement.id;
            var relativeLocation = Position.page($(targetId));
            var scrollY = relativeLocation[1];
            var topScrollPadding = getDefaultScrollPadding();
            if ('function' == typeof window.getFixedHeaderSize) {
                topScrollPadding = topScrollPadding + getFixedHeaderSize();
            }
            scrollY = scrollY - topScrollPadding;
            window.scrollBy(0,scrollY); // horizontal and vertical scroll increments
            //scrolldelay = setTimeout('pageScroll()',100); // scrolls every 100 milliseconds
        }
    }

    var Utilities = {
        configureImageMouseover : function(imageId, image) {

            var imageOn = new Image();
            imageOn.src = "/images/" + image + "_on.gif";
            var imageOff = new Image();
            imageOff.src = "/images/" + image + "_off.gif";
            Event.observe(imageId, 'mouseover', function() {
                $(imageId).src = imageOn.src;
            });
            Event.observe(imageId, 'mouseout',  function() {
                $(imageId).src = imageOff.src;
            });
        }
    };

 
