/*
********************************************************************************************************************************************************************
* Name              :
*
* Description       :
*
* Author(S)         : JSHUMAKER
*
* Creation Date     : 3/12/2007
*
* Version           : 1.0
*
*
* Modifications:
*    MOD ID          Date              Developer Name                   Description
*    ------------    --------------    -----------------------------    ----------------------------------------------------
*
* VSS Info:
*      $Archive:
*      $Author:
*              $Date:
*              $Revision:
*
*  COPYRIGHT 2007 TDCI Inc.
********************************************************************************************************************************************************************
*/

ActionToolbar = Class.create();
ActionToolbar.prototype = 
{
    initialize: function(OuterDivID)
    {
	    // state variables
	    

        // object variables
        this.OuterDiv = null;
        

        //Assign references to the object variables
        this.OuterDiv = $(OuterDivID);
        this.ReferenceStructure();

        //Change VB true/false values to javascript true/false values
        this.ParseInitialValues();

        //Make sure the client on click is cleared
        //  This functionality will be executed during the mouse down event.
        //  This simplifies the event handling and toggling.
        this.OuterDiv.onclick = null;

        this.InitializeContent();

        return true;
    },

    InitializeContent: function()
    {
        if (this.OuterDiv.DisplayType == 1 && !this.OuterDiv.LoggedIn)
        {
            this.OuterDiv.SignIn = eval(this.OuterDiv.SignIn);
            
            if (this.OuterDiv.OnSignIn.length > 0)
            {
                this.OuterDiv.SignIn.SetClientClick(this.OuterDiv.OnSignIn);
            }
            else
            {
                this.OuterDiv.SignIn.SetClientClickInContext(this, "this.SignIn();");
                
                if (this.OuterDiv.LoginForm != null && this.OuterDiv.LoginForm.length > 0)
                {
                    this.OuterDiv.LoginForm = eval(this.OuterDiv.LoginForm);
                    this.OuterDiv.LoginForm.SetLoginInContext(this, "this.ClientLogin(Username, Password);");
                    this.OuterDiv.LoginForm.SetCollapseInContext(this, "this.SignIn();");
                    this.OuterDiv.LoginElement = $(this.OuterDiv.LoginForm.GetClientID());
                }
            }
        }
        else if (this.OuterDiv.DisplayType == 1)
        {
            this.OuterDiv.SignOut = eval(this.OuterDiv.SignOut);
            this.OuterDiv.SignOut.SetClientClick(this.OuterDiv.OnSignOut);
        }
        
        if (this.OuterDiv.OnMyProjects != null && this.OuterDiv.OnMyProjects.length > 0)
        {
            this.OuterDiv.MyProjects = eval(this.OuterDiv.MyProjects);
            this.OuterDiv.MyProjects.SetClientClick(this.OuterDiv.OnMyProjects);
        }

        if (this.OuterDiv.OnAssistance != null && this.OuterDiv.OnAssistance.length > 0)
        {
            this.OuterDiv.Assistance = eval(this.OuterDiv.Assistance);
            this.OuterDiv.Assistance.SetClientClick(this.OuterDiv.OnAssistance);
        }

        if (this.OuterDiv.OnRegistration != null && this.OuterDiv.OnRegistration.length > 0)
        {
            this.OuterDiv.Registration = eval(this.OuterDiv.Registration);
            this.OuterDiv.Registration.SetClientClick(this.OuterDiv.OnRegistration);
        }
    },

    ClientLogin: function(Username, Password)
    {
        var Status = false;
        if (LoadingOn(this.ClientLogin.bind(this, Username, Password)))
        {
            Status = eval(this.OuterDiv.OnLogIn);
            LoadingOff();
            
            return Status
        }
    },
    
    SignIn: function()
    {
        var Container = $(this.OuterDiv.LoginElement.parentNode.id);
        if (Container.style.display == "none")
        {
            Effect.SlideDown(Container);
        }
        else
        {
            Effect.SlideUp(Container);
        }
        
        return true;
    },

//Setup Helper Functions**************
    ParseInitialValues: function()
    {
        this.OuterDiv.DisplayType = this.OuterDiv.getAttribute("DisplayType");
        this.OuterDiv.LoggedIn = this.ConvertToBoolean(this.OuterDiv.getAttribute("LoggedIn"));
        this.OuterDiv.OnSignIn = this.OuterDiv.getAttribute("OnSignIn");
        this.OuterDiv.SignIn = this.OuterDiv.getAttribute("SignIn");
        this.OuterDiv.OnSignOut = this.OuterDiv.getAttribute("OnSignOut");
        this.OuterDiv.SignOut = this.OuterDiv.getAttribute("SignOut");
        this.OuterDiv.OnMyProjects = this.OuterDiv.getAttribute("OnMyProjects");
        this.OuterDiv.MyProjects = this.OuterDiv.getAttribute("MyProjects");
        this.OuterDiv.OnAssistance = this.OuterDiv.getAttribute("OnAssistance");
        this.OuterDiv.Assistance = this.OuterDiv.getAttribute("Assistance");
        this.OuterDiv.OnRegistration = this.OuterDiv.getAttribute("OnRegistration");
        this.OuterDiv.Registration = this.OuterDiv.getAttribute("Registration");
        this.OuterDiv.OnLogIn = this.OuterDiv.getAttribute("OnLogIn");
        this.OuterDiv.LoginForm = this.OuterDiv.getAttribute("LoginForm");
    },
    
    ReferenceStructure: function()
    {
        
    },

//Browser Compatability Helpers**********
    ConvertToBoolean: function(Value)
    {
        if (Value == "True")
        {
            return true;
        }
        
        return false;
    },
    
    CompatGetText: function(Target)
    {
        if (Target.innerText == null)
        {
            return Target.textContent;
        }
        
        return Target.innerText;
    },
    
    CompatSetText: function(Target, Text)
    {
        if (Target.innerText == null && Target.textContent != null)
        {
            Target.textContent = Text;
        }
        else if (Target.innerText != null && Target.textContent == null)
        {
            Target.innerText = Text;
        }
        else
        {
            Target.innerText = Text;
            Target.textContent = Text;
        }
    },
    
    ChildNodes: function(Object, Index)
    {
        var Pos = 0;
        var RealPos = -1;
        
        for (Pos = 0; Pos < Object.childNodes.length; Pos++)
        {
            if (Object.childNodes.item(Pos).nodeType != 3)
            {
                RealPos++;
            }
            
            if (RealPos == Index)
            {
                return Object.childNodes.item(Pos);
            }
        }
        
        return null;
    },
    
    NumChildNodes: function(Object)
    {
        var Pos = 0;
        var RealPos = 0;
        
        for (Pos = 0; Pos < Object.childNodes.length; Pos++)
        {
            if (Object.childNodes.item(Pos).nodeType != 3)
            {
                RealPos++;
            }
        }
        
        return RealPos;
    }
};