﻿
var lastOpen;
var lastOpenName = "";
var lastStyle;
var lastDivisionStyle;
var lastGroup;
var lastGroupName = "";
var lastDivisionName = "";
var lastDivision = "";
var divisionnames;
var divisionOpen;
var division;
var divisionstyles;
var divisionvalues;
var groupnames;
var groupOpen = -1;
var menunames;
var group;
var groupstyles;
var menu;
var submenuheight = 0;
var divisionoriginalHeight = 0;
var originalHeight = 0;
var lastClick = 0;
var lastHeight = 0;
var firedElement = 0;

var openGroup = -1;
var openDivision = -1;

var selectedMenuHeight = -1;
var selectedGroupHeight = -1;


function setFiredElement(element)
{
    firedElement = element;
}


function loadDivisions(divisionItems, divisions)
{
    var x = document.getElementById("MenuItems");    
    x.style.visibility = "visible";
    
    // Create All arrays for the Division
    division = new Array(divisionItems.length);
    divisionstyles = new Array(divisionItems.length);
    groupnames = new Array(divisionItems.length);
    group = new Array(divisionItems.length);
    groupstyles = new Array(divisionItems.length);
    menu = new Array(divisionItems.length);
    menunames = new Array(divisionItems.length);    
    divisionnames = divisionItems;
    divisionvalues = divisions;
   
    for(i=0; i < divisionItems.length; i++)
    {
        division[i] = new Fx.Slide(divisionItems[i] + 'slide', { transition: Fx.Transitions.expoOut, duration: 500, fps: 50, wait: false });
        divisionstyles[i] = $(divisionItems[i] + 'slide');
        divisionstyles[i].set('morph', {duration:500,transition:Fx.Transitions.Expo.expoOut, fps:50});
        $(divisionItems[i]).addEvent('click', function(e) {
            var d = new Date();

            if (d.getTime() - lastClick > 500) {
                lastClick = d.getTime()

                var elementNumber;
                var oldOriginalHeight = 0;

                elementNumber = firedElement;
                divisionOpen = elementNumber;

                //eraseCookie('division');

                oldOriginalHeight = divisionoriginalHeight;
                divisionoriginalHeight = $(divisionnames[divisionOpen] + 'slide').getCoordinates().height;

                var currentMargin = divisionstyles[elementNumber].style.marginTop;

                if (currentMargin.indexOf("-") >= 0)
                    divisionstyles[elementNumber].setStyles({ marginTop: "-" + divisionoriginalHeight.toString() + 'px' });
         
                division[elementNumber].toggle();

                e = new Event(e);

                if (lastDivisionName != divisionnames[elementNumber]) {
                    createCookie('division', divisionvalues[elementNumber], 0);

                    //divisionstyles[elementNumber].morph({'opacity': [0,1]});

                    if (lastDivision != null && lastDivisionName.length > 0) {

                        if (oldOriginalHeight != 0) {
                            $(lastDivisionName + 'slide').morph({ height: oldOriginalHeight });
                        }
                        if (lastDivisionStyle != null) {
                            //lastDivisionStyle.morph({'opacity':[1,0]});
                        }
                        $(lastDivisionName).removeClass('selected');
                        lastDivision.slideOut();
                    }

                    lastDivisionStyle = divisionstyles[elementNumber];
                    lastDivision = division[elementNumber];
                    lastDivisionName = divisionnames[elementNumber];

                    if (lastDivision != null)
                        $(lastDivisionName).addClass('selected');

                    // Close Open Group if Applicable.
                    if (lastGroup != null) {
                        lastGroup.slideOut();
                        $(lastGroupName).removeClass('selected');
                    }
                    lastGroup = null;
                    lastGroupName = "";
                }
                else {
                    // Close Open Group if Applicable.
                    if (lastGroup != null) {
                        $(lastGroupName).removeClass('selected');
                        lastGroup.slideOut();
                    }

                    lastGroup = null;
                    lastGroupName = "";

                    if (lastDivisionStyle != null) {
                        //lastDivisionStyle.morph({ 'opacity': [1, 0] });
                    }

                    if (oldOriginalHeight != 0)
                        $(lastDivisionName + 'slide').morph({ height: oldOriginalHeight });

                    lastDivisionStyle = null;
                    lastDivision = null;
                    lastDivisionName = "";
                    divisionOpen = -1;
                }
                e.stop();
            }
        });
        division[i].hide();        
    }
}


function loadGroups(groupItems, divisionNumber)
{

    // Create the Arrays for the current group. 
    group[divisionNumber] = new Array(groupItems.length);
    groupstyles[divisionNumber] = new Array(groupItems.length);
    menunames[divisionNumber] = new Array(groupItems.length);
    menu[divisionNumber] = new Array(groupItems.length);    
    groupnames[divisionNumber] = groupItems;
   
    for(i=0; i < groupItems.length; i++)
    {
        group[divisionNumber][i] = new Fx.Slide(groupItems[i] + 'slide', {transition: Fx.Transitions.expoOut, duration:500, fps:50, wait:false});  
        groupstyles[divisionNumber][i] = $(groupItems[i] + 'slide')
        groupstyles[divisionNumber][i].set('morph', {transition: Fx.Transitions.expoOut, duration:500}); 
        
        //  Create a function that runs when the slideIn of the Group is completed.   Adjusts the height of the Division.
        if(window.ie6)
        {
            group[divisionNumber][i].addEvent('onComplete', function()
            {
                if(divisionOpen != -1)               
                    division[divisionOpen].slideIn();                
            });
        }
        
        // Create the click event to expand and adjust the height accordingly.
        $(groupItems[i]).addEvent('click', function(e) {
            var d = new Date();

            if (d.getTime() - lastClick > 500) {
                lastClick = d.getTime()

                var elementNumber;
                var oldOriginalHeight = 0;

                elementNumber = firedElement;
                groupOpen = elementNumber;
                oldOriginalHeight = originalHeight;
                originalHeight = $(groupnames[divisionOpen][groupOpen] + 'slide').getCoordinates().height;

                e = new Event(e);
                group[divisionOpen][elementNumber].toggle();
                if (lastGroupName != groupnames[divisionOpen][elementNumber]) {

                    // Close last Group that was Open
                    //groupstyles[divisionOpen][elementNumber].morph({'opacity':[0,1]});
                    if (lastGroup != null) {
                        if (oldOriginalHeight != 0) {
                            $(lastGroupName + 'slide').morph({ height: oldOriginalHeight });
                        }

                        $(lastGroupName).removeClass('selected');
                        //lastStyle.morph({'opacity':[1,0]});

                        lastGroup.slideOut();
                    }
                    lastStyle = groupstyles[divisionOpen][elementNumber];
                    lastGroup = group[divisionOpen][elementNumber];
                    lastGroupName = groupnames[divisionOpen][elementNumber];

                    if (lastGroup != null)
                        $(lastGroupName).addClass('selected');

                    // Adjust Division Height for selected Group
                    var submenuCoords = $(groupnames[divisionOpen][elementNumber] + 'slide').getCoordinates();
                    var divModHeight = 0;
                    if (lastOpen != null && openGroup == elementNumber && openDivision == divisionOpen) {
                        // if group contains selected menu item.   Adjust height of Group.
                        divModHeight = selectedMenuHeight;
                        $(groupnames[divisionOpen][elementNumber] + 'slide').morph({ height: selectedGroupHeight });
                        group[divisionOpen][elementNumber].slideIn();
                    }
                    else {
                        divModHeight = divisionoriginalHeight + submenuCoords.height;
                    }
                    $(divisionnames[divisionOpen] + 'slide').morph({ height: divModHeight });
                }
                else {

                    if (lastStyle != null) {
                        $(lastGroupName).removeClass('selected');
                        //lastStyle.morph({'opacity':[1,0]});
                    }

                    if (oldOriginalHeight != 0)
                        $(lastGroupName + 'slide').setStyles({ height: oldOriginalHeight });

                    lastStyle = null;
                    lastGroup = null;
                    lastGroupName = "";
                    groupOpen = -1;

                    $(divisionnames[divisionOpen] + 'slide').morph({ height: divisionoriginalHeight });
                }
                e.stop();
            }
        });
        group[divisionNumber][i].hide();        
    }
}

function loadMenu(menuItems, groupNumber, divisionNumber)
{
    menu[divisionNumber][groupNumber] = new Array(menuItems.length)    
    menunames[divisionNumber][groupNumber] = menuItems;
        
    for(j=0; j<menuItems.length; j++)
    {      
        menu[divisionNumber][groupNumber][j] = new Fx.Slide(menuItems[j] + 'slide', {transition: Fx.Transitions.expoOut, fps:50, duration:400, wait:false});
        
        if(window.ie6)
        {
            menu[divisionNumber][groupNumber][j].addEvent('onComplete', function()
            {
                if(groupOpen != -1 && divisionOpen != -1)               
                    group[divisionOpen][groupOpen].slideIn(); 
                    division[divisionOpen].slideIn();               
            });
        }
        menu[divisionNumber][groupNumber][j].hide();                 
    }
}


function showMenu(divisionNumber, groupNumber, menuNumber)
{
    if (menuNumber > -1) {

        // Set all variables for the Selected Division
        divisionOpen = divisionNumber;
        openDivision = divisionNumber;
        lastDivisionStyle = divisionstyles[divisionNumber];
        lastDivision = division[divisionNumber];
        lastDivisionName = divisionnames[divisionNumber];

        // Set all variables for the Selected Group
        groupOpen = groupNumber;
        openGroup = groupNumber;
        lastStyle = groupstyles[divisionNumber][groupNumber];
        lastGroup = group[divisionNumber][groupNumber];
        lastGroupName = groupnames[divisionNumber][groupNumber];

        // Expand the sub menu Options
        menu[divisionNumber][groupNumber][menuNumber].toggle();

        // Get Original height of selected Group
        originalHeight = $(groupnames[divisionNumber][groupNumber] + 'slide').getCoordinates().height;

        // Get height of selected menu items to adjust the height group.  Set Selected Group height to new height                              
        var submenuCoords = $(menunames[divisionNumber][groupNumber][menuNumber] + 'slide').getCoordinates();
        var modHeight = originalHeight + submenuCoords.height;
        $(groupnames[divisionNumber][groupNumber] + 'slide').setStyles({ height: modHeight });

        // Set selected Height to be used by Group expand and contract
        selectedGroupHeight = modHeight;

        // Expand the selected Group              
        group[divisionNumber][groupNumber].toggle();
        //groupstyles[divisionNumber][groupNumber].morph({ 'opacity': [0, 1] });

        // Get original Division Height of selected Division
        divisionoriginalHeight = $(divisionnames[divisionNumber] + 'slide').getCoordinates().height;

        // Get height of selected group to adjust the height of the Division                               
        var divisionCoords = $(groupnames[divisionNumber][groupNumber] + 'slide').getCoordinates();
        var divModHeight = divisionoriginalHeight + divisionCoords.height;
        $(divisionnames[divisionNumber] + 'slide').setStyles({ height: divModHeight });

        // Set selected Menu Height to be used by Group expand and contract
        selectedMenuHeight = divModHeight;

        createCookie('division', divisionvalues[divisionNumber], 0);

        // Expand the Selected Division Menu
        division[divisionNumber].toggle();
        //divisionstyles[divisionNumber].morph({ 'opacity': [0, 1] });

        // Set Menu item of Selected        
        lastOpen = menu[divisionNumber][groupNumber][menuNumber];
        lastOpenName = menunames[divisionNumber][groupNumber][menuNumber];
    }
    else if (groupNumber > 0) {
        // Load Division.   Normally = 0
        divisionOpen = divisionNumber;
        lastDivisionStyle = divisionstyles[divisionNumber];
        lastDivision = division[divisionNumber];
        lastDivisionName = division[divisionNumber];

        // Load Group.   Normally = 0
        groupOpen = groupNumber;
        lastStyle = groupstyles[divisionNumber][groupNumber];
        lastGroup = group[divisionNumber][groupNumber];
        lastGroupName = groupnames[divisionNumber][groupNumber];

        // Get original Height
        originalHeight = $(groupnames[divisionNumber][groupNumber] + 'slide').getCoordinates().height;
        $(groupnames[divisionNumber][groupNumber] + 'slide').setStyles({ height: originalHeight });

        // Expand Group
        group[divisionNumber][groupNumber].toggle();
        //groupstyles[divisionNumber][groupNumber].morph({ 'opacity': [0, 1] });

        divisionoriginalHeight = $(groupnames[divisionNumber][groupNumber] + 'slide').getCoordinates().height;
        $(divisionnames[divisionNumber] + 'slide').setStyles({ height: divisionoriginalHeight });

        createCookie('division', divisionvalues[divisionNumber], 0);

        // Expand Division
        division[divisionNumber].toggle();
        //divisionstyles[divisionNumber].morph({ 'opacity': [0, 1] });
    }
    else {
        // Load Division.   Normally = 0
        divisionOpen = divisionNumber;
        openDivision = divisionNumber;
        lastDivisionStyle = divisionstyles[divisionNumber];
        lastDivision = division[divisionNumber];
        lastDivisionName = divisionnames[divisionNumber];

        
        divisionoriginalHeight = $(divisionnames[divisionNumber] + 'slide').getCoordinates().height;
        $(divisionnames[divisionNumber] + 'slide').setStyles({ height: divisionoriginalHeight });

        createCookie('division', divisionvalues[divisionNumber], 0);

        // Expand Division
        division[divisionNumber].slideIn();
        //divisionstyles[divisionNumber].morph({ 'opacity': [0, 1] });
    }
    
        

    if (lastDivision != null) {$(lastDivisionName).addClass('selected'); }
    if (lastGroup != null) { $(lastGroupName).addClass('selected'); }
    if (lastOpen != null) { $(lastOpenName).addClass('selected'); }
}


function loadInternalMenu(menu)
{
}

function checkKey(control, otherControlID, display, maxChars)
{
    if(window.event.keyCode == 8)
    {
        limitText(control, otherControlID, display, maxChars);
    }    
}


function limitText(control, otherControlID, display, maxChars)
{
    var displayControl = document.getElementById(display);
    var otherControl = document.getElementById(otherControlID);
    
    var charCount = maxChars - otherControl.value.length - control.value.length;
    
    
    if(charCount < 0)
    {
        charCount = 0;        
        control.value = control.value.substring(0, maxChars);
    }       
        
    displayControl.value = charCount;
}
