/**
 * $Author: dr-bashwort $
 * $Revision: 1.10 $ $Date: 2008/04/16 19:02:53 $
 */

 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 openPopup(url) {
   open(url, "popup", "toolbar=no,menubar=no,width=700,height=500,resizable=yes,top=0,left=0,scrollbars=yes");
 }

 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 configureMenu() {
        configureMainMenu();
        configureSubMenu();
    }
    
    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();
            }
        }
    };
     */

    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 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));
            }
        }
    };

    var Utilities = {
        checkboxLimit : function(event) {

            var listClass = Event.element(event).className;
            var listContainerId = listClass + 'List';
            var listButton = listClass + 'Button';

            var counter = 0;

            var checkboxes = $(listContainerId).getElementsByClassName(listClass);
            for(i=0;i<checkboxes.length;i++) {
                var nextCheckbox = checkboxes[i];
                //var checkboxId = nextCheckbox.id;
                //$(checkboxId).enable();

                if(nextCheckbox.checked)
                    counter++;
            }

            if(counter >= 2) {

                $(listButton).enable();

                //for(i=0;i<checkboxes.length;i++) {
                //    var nextCheckbox = checkboxes[i];
                //    if(!nextCheckbox.checked) {
                //        var checkboxId = nextCheckbox.id;
                //        $(checkboxId).disable();
                //    }
                //}
            }
            else {
                 $(listButton).disable();
            }
        },
        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;
            });
        }
    };

 