// Register the namespace
//Type.registerNamespace('Portal.LanguageBar');

Portal = {};
Portal.LanguageBar = {};

// Constructor function
Portal.LanguageBar.Widget = function(objSpan)
{
    // Initialize the base
	Portal.LanguageBar.Widget.initializeBase(this);
	
	this.objSpan = objSpan;
	this.languages = new Array();
	this.initialize();		
}

Portal.LanguageBar.Widget.prototype = {
    initialize: function() {
        // wire events for the span control
        this.objSpan.style.cursor = "pointer";
        $addHandler(this.objSpan, 'click', Function.createDelegate(this, this._showLanguageBar));
    },
    addLanguageItem: function(langItem) {
        this.languages.push(langItem);
    },
    getLanguageItem: function(langCode) {
        for (var i = 0; i < this.languages.length; i++)
            if (this.languages[i].code == langCode)
            return this.languages[i];
    },
    _showLanguageBar: function() {
        if (this.objSpan.childNodes.length == 1) {
            var objDiv = document.createElement("div");
            objDiv.className = "language_bar_list_new";
            var height = this.languages.length * 14;
            objDiv.style.height = height + "px";
            objDiv.style.position = "absolute";
            objDiv.style.zIndex = "1000";
            var objTbl = document.createElement("table");
            objTbl.width = "100%";
            objTbl.cellPadding = "0";
            objTbl.cellSpacing = "0";
            objTbl.border = "0";
            var objTbody = document.createElement("tbody");
            objTbl.appendChild(objTbody);

            for (var i = 0; i < this.languages.length; i++) {
                var objRow = objTbody.insertRow(objTbody.rows.length);
                var objCell = objRow.insertCell(0);
                objCell.className = "language_bar_item_new";
                objCell.tag = this.languages[i].code;
                objCell.innerHTML = this.languages[i].name;
                $addHandler(objCell, 'mouseover', Function.createDelegate(this, this._onLanguageOver));
                $addHandler(objCell, 'mouseout', Function.createDelegate(this, this._onLanguageOut));
                $addHandler(objCell, 'click', Function.createDelegate(this, this._onLanguageClick));
            }

            objDiv.appendChild(objTbl);
            this.objSpan.appendChild(objDiv);
        }
        else {
            var objDiv = this.objSpan.childNodes[1];
            if (objDiv.style.display == "none")
                objDiv.style.display = "block";
            else
                objDiv.style.display = "none";
        }
    },
    _onLanguageOver: function(e) {
        var targ;

        if (!e)
            var e = window.event;
        if (e.target)
            targ = e.target;
        else
            if (e.srcElement)
            targ = e.srcElement;
        if (targ.nodeType == 3) // defeat Safari bug
            targ = targ.parentNode;
        var selectedLangItem = this.getLanguageItem(targ.tag);
        if (selectedLangItem != null) {
            targ.className = "language_bar_item_new_over";
        }
        else
            alert("Invalid language item");
    },
    _onLanguageOut: function(e) {
        var targ;

        if (!e)
            var e = window.event;
        if (e.target)
            targ = e.target;
        else
            if (e.srcElement)
            targ = e.srcElement;
        if (targ.nodeType == 3) // defeat Safari bug
            targ = targ.parentNode;

        var selectedLangItem = this.getLanguageItem(targ.tag);
        if (selectedLangItem != null) {
            targ.className = "language_bar_item_new";
        }
        else
            alert("Invalid language item");
    },
    _onLanguageClick: function(e) {
        var targ;

        if (!e)
            var e = window.event;
        if (e.target)
            targ = e.target;
        else
            if (e.srcElement)
            targ = e.srcElement;
        if (targ.nodeType == 3) // defeat Safari bug
            targ = targ.parentNode;
        //alert(targ);
        var selectedLangItem = this.getLanguageItem(targ.tag);
        if (selectedLangItem != null) {
            //this.objSpan.childNodes[0].innerHTML = selectedLangItem.name;
            //alert(this.objSpan.innerHTML);
            var tds = this.objSpan.getElementsByTagName("TD");
            var td = null;
            if (tds)
                td = tds[0];
            if (td)
                td.innerHTML = selectedLangItem.name;
            document.location.href = selectedLangItem.link;
        }
        else
            alert("Invalid language item");
    }
}

Portal.LanguageBar.Item  = function(code,name,link)
{
    this.code = code;
    this.name = name;
    this.link = link;
}
