﻿/// <reference name="MicrosoftAjax.js"/>
/// <reference path="scripts/prototype.js"/>
/// <reference path="scripts/scriptaculous.js"/>

Type.registerNamespace("Coversant.Web.UI");

Coversant.Web.UI.Tab = function Tab(tabControl, element) {
    Coversant.Web.UI.Tab.initializeBase(this, [element]);
    if (!element.id)
        element.id = Math.floor(Math.random() * 999999)
    this._DisabledImage = null;
    this._Image = null;
    this._Title = "Title";
    this._TitleElement = null;
    this._ContentID = "";
    this._Description = "Description";
    this._DescriptionElement = null;
    this._ContentPictureID = "";
    this._TabControl = tabControl;
    this._mouseOverHandler = null;
    this._Index = 0;
    this._Id = element.id;
}

Coversant.Web.UI.Tab.prototype =
{
    getDisabledImage : function() { return this._DisabledImage; },
    setDisabledImage : function(value) { this._DisabledImage = value; },
    
    getImage : function() { return this._Image; },
    setImage : function(value) { this._Image = value; },
    
    getIndex : function() { return this._Index; },
    setIndex : function(value) { this._Index = value; },

    getId: function() { return this._Id; },
    setID: function(value) { this._Id = value; },

    getContentID: function() { return this._ContentID; },
    setContentID: function(value) { this._ContentID = value; },
    
    getTabControl : function() { return this._TabControl; },
    setTabControl : function(value) { this._TabControl = value; },
    
    getTitle : function() { return this._Title; },
    setTitle : function(value) 
    { 
        this._Title = value; 
        this._TitleElement.innerHTML = value;
    },

    getContentPictureID: function() { return this._ContentPictureID; },
    setContentPictureID: function(value) { this._ContentPictureID = value; },
    
    getDescription : function() { return this._Description; },
    setDescription : function(value) 
    { 
        this._Description = value; 
        this._DescriptionElement.data = value;
    },
    
    initialize : function()
    {
        if (this.get_element().className != "fill")
        {
            this._mouseOverHandler = Function.createDelegate(this, this._onMouseOver); 
            $addHandlers(this.get_element(), {'mouseover':this._mouseOverHandler}, this);    
        }
        var children = this.get_element().childNodes;
        for (var i=0; i < children.length; i++)
        {
            switch (children[i].nodeName.toUpperCase())
            {
                case "SPAN":
                    this._TitleElement = children[i];
                    this._Title = children[i].innerHTML;
                    break;
                case "#TEXT":
                    this._DescriptionElement = children[i];
                    this._Description = children[i].data;
                    break;
                default:
            }
        }
        if (this._TitleElement == null)
        {
            var newTitleElement = document.createElement("SPAN");
            this.get_element().appendChild(newTitleElement);    
            this._TitleElement = newTitleElement;
            this._Title = children[i].innerHTML;
        }
        if (this._DescriptionElement == null)
        {
            var newDescriptionElement = document.createTextNode("new description");
            this.get_element().appendChild(newDescriptionElement);    
            this._DescriptionElement = newDescriptionElement;
            this._Description = children[i].data;
        }
    },
    
    _onMouseOver : function(event)
    {
        this._TabControl.setCurrentTab(this);            
    }
}


function hidediv(elementID, fadeElementID) {
    if (document.getElementById) { // DOM3 = IE5, NS6
        document.getElementById(elementID).style.display = 'none';
        if (fadeElementID)
            document.getElementById(fadeElementID).style.display = 'none';
    }
    else {
        if (document.layers) { // Netscape 4 
            document._contentID.display = 'none';
        }
        else { // IE 4 
            document.all._contentID.style.display = 'none';
        }
    }
}

function showdiv(elementID, fadeElementID) {
    if (document.getElementById) { // DOM3 = IE5, NS6
        document.getElementById(elementID).style.display = 'block';
        if (fadeElementID)
            ShowAppearEffect(fadeElementID, 0.2, 0.5);
    }
    else {
        if (document.layers) { // Netscape 4 
            document._contentID.display = 'block';
        }
        else { // IE 4 
            document.all._contentID.style.display = 'block';
        }
    }
} 

Coversant.Web.UI.Tab.registerClass('Coversant.Web.UI.Tab', Sys.UI.Control);

Coversant.Web.UI.TabControl = function TabControl(element)
{
    Coversant.Web.UI.TabControl.initializeBase(this, [element]);
    this._currentTab = null;
    this._tabs = new Array();
    this._UL = null;
    this._tabElements = new Array();
}
//        <ul>
//            <li id="Hometab" class="selected" onmouseover="Tabmouseover(Hometab)">
//                    <h1>
//                        Home
//                    </h1>
//                    Return to home page.
//            </li>case "#TEXT":

Coversant.Web.UI.TabControl.prototype =
{
    getCurrentTab: function() { return this._currentTab; },
    setCurrentTab: function(value) {
        if (this._currentTab != null && (this._currentTab.get_element().id == value.get_element().id))
            return;

        if (this._currentTab != null)
            hidediv(this._currentTab.getContentID(), this._currentTab.getContentPictureID());

        if (this._currentTab != null)
            this._currentTab.get_element().className = "";

        this._currentTab = value;
        showdiv(this._currentTab.getContentID(), this._currentTab.getContentPictureID());
        this._currentTab.get_element().className = "selected";
    },

    getTabs: function() { return this._tabs; },
    addTab: function(title, description, ID, contentID, contentPictureID) {
        var newLI = document.createElement("LI");
        return this._addTabInternal(newLI, title, description, ID, contentID, contentPictureID);
    },

    addFill: function() {
        var newLI = document.createElement("LI");
        newLI.className = "fill";
        var newTab = this._addTabInternal(newLI, "", "", "fillID", "");
    },

    _addTabInternal: function(element, title, description, ID, contentID, contentPictureID) {
        this._UL.appendChild(element);
        var newTab = new Coversant.Web.UI.Tab(this, element);
        newTab.initialize();
        element.id = ID;
        newTab.setContentID(contentID);
        newTab.setID(ID);
        newTab.setContentPictureID(contentPictureID);
        newTab.setTitle(title);
        newTab.setDescription(description);
        newTab.setIndex(this._tabs.push(newTab));
        if (this.getCurrentTab() == null)
            this.setCurrentTab(newTab);
        return newTab;
    },

    initialize: function() {
        this._tabs = new Array();
        this.get_element().className = "TabControl";
        var children = this.get_element().childNodes;
        for (var i = 0; i < children.length; i++) {
            switch (children[i].nodeName.toUpperCase()) {
                case "UL":
                    this._UL = children[i];
                    break;
                case "LI":
                    _addTabInternal(children[i], "title", "description", i, "");
                    break;
                default:
            }
        }
        if (this._UL == null) {
            var newUL = document.createElement("UL");
            this.get_element().appendChild(newUL);
            this._UL = newUL;
        }
    }
}

Coversant.Web.UI.TabControl.registerClass('Coversant.Web.UI.TabControl', Sys.UI.Control);
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();

//function ToggleCollapse(elementId, buttonId)
//{
//    var divmain_body = document.getElementById(elementId);
//    var buttonElement = document.getElementById(buttonId);
//    if (divmain_body.style.display=="none")
//    {
//        divmain_body.style.display="block";
//        buttonElement.innerText="Hide";
//    }
//    else
//    {
//        divmain_body.style.display="none";
//        buttonElement.innerText="Show";
//    }
//}