﻿/// <reference path="core.js" />
var UI = {
    Init: function(obj) {
        var childNodes;
        if (obj == null || typeof (obj) == "undefined" || !obj.getElementsByTagName)
            obj = document;
        childNodes = obj.getElementsByTagName("input");
        for (var i = 0; i < childNodes.length; i++) {
            if (childNodes[i].type) {
                switch (childNodes[i].type.toLowerCase()) {
                    case "text":
                    case "password":
                        UI.InitTextBox(childNodes[i]);
                        break;
                    case "file":
                        UI.InitFileUpLoad(childNodes[i]);
                        break;
                    case "button":
                    case "submit":
                    case "reset":
                        UI.InitButton(childNodes[i]);
                        break;
                }
            }
        }

        childNodes = obj.getElementsByTagName("table");
        for (var i = 0; i < childNodes.length; i++) {
            if (childNodes[i].className) {
                switch (childNodes[i].className) {
                    case "GridView":
                        UI.InitDataGrid(childNodes[i]);
                        break;
                }
            }
        }

        childNodes = obj.getElementsByTagName("select");
        for (var i = 0; i < childNodes.length; i++) {
            UI.InitDropDownList(childNodes[i]);
        }

        childNodes = obj.getElementsByTagName("textarea");
        for (var i = 0; i < childNodes.length; i++) {
            UI.InitMultiTextBox(childNodes[i]);
        }
    },
    InitTextBox: function(ctl) {
        if (!UI.HasDefStyle(ctl, "TextBox")) return;
        ctl.className = "TextBox";
        if (ctl.addEvent) {
            ctl.addEvent("onfocus", function() { this.className = "TextBox_focus"; } .bind(ctl));
            ctl.addEvent("onblur", function() { this.className = "TextBox"; } .bind(ctl));
        }
    },
    InitButton: function(btn) {
        if (!UI.HasDefStyle(btn, "ImageButton", true)) return;
        if (btn.style.display == "none" || btn.offsetWidth == 0) return;
        normalCss = "ImageButton";
        focusCss = "ImageButton_over";
        if (btn.offsetWidth <= 33) {
            normalCss = "ImageButton_33";
            focusCss = "ImageButton_33_over";
        }
        else {
            if (btn.offsetWidth <= 72) {
                normalCss = "ImageButton";
                focusCss = "ImageButton_over";
            }
            else {
                if (btn.offsetWidth <= 100) {
                    normalCss = "ImageButton_100";
                    focusCss = "ImageButton_100_over";
                }
                else {
                    normalCss = "ImageButton_big";
                    focusCss = "ImageButton_big_over";
                }
            }
        }
        btn.className = normalCss;
        btn.setAttribute("focusCss", focusCss);
        btn.setAttribute("normalCss", normalCss);
        if (btn.addEvent) {
            btn.addEvent("onmouseover", function() { this.className = this.getAttribute("focusCss"); } .bind(btn));
            btn.addEvent("onmouseout", function() { this.className = this.getAttribute("normalCss"); } .bind(btn));
        }
    },
    InitDataGrid: function(tbl) {
        if (tbl.tagName && tbl.tagName.toLowerCase() == "table") {
            var rows = tbl.rows;
            for (var j = 0; j < rows.length; j++) {
                if (rows[j].className.toLowerCase() == "head" || rows[j].className.toLowerCase() == "floor")
                    continue;
                rows[j].onmouseover = function() {
                    this.className = "hoverRow";
                }
                rows[j].onmouseout = function() {
                    this.className = "";
                }
            }
        }
    },
    InitDropDownList: function(ctl) {
        if (!UI.HasDefStyle(ctl, "DropDownList")) return;
        ctl.className = "DropDownList";
    },
    InitMultiTextBox: function(ctl) {
        if (!UI.HasDefStyle(ctl, "MultiTextBox")) return;
        ctl.className = "MultiTextBox";
        if (ctl.addEvent) {
            ctl.addEvent("onfocus", function() { this.className = "MultiTextBox_focus"; } .bind(ctl));
            ctl.addEvent("onblur", function() { this.className = "MultiTextBox"; } .bind(ctl));
        }
    },
    InitFileUpLoad: function(ctl) {
        if (!UI.HasDefStyle(ctl, "FileUpLoad")) return;
        ctl.className = "FileUpLoad";
        if (ctl.addEvent) {
            ctl.addEvent("onfocus", function() { this.className = "FileUpLoad_focus"; } .bind(ctl));
            ctl.addEvent("onblur", function() { this.className = "FileUpLoad"; } .bind(ctl));
        }
    },
    HasDefStyle: function(ctl, defStyle, inStr) {
        if (typeof (inStr) != "boolean") inStr = false;
        return (ctl.className != "undefined" && ctl.className.length > 0 && ((!inStr && ctl.className == defStyle) || (inStr && ctl.className.indexOf(defStyle) >= 0)))
    },
    CenterAlign: function(ctl) {
        if (typeof (ctl) == "string")
            ctl = $(ctl);
        if (ctl == null) return;
        with (ctl) {
            if (Browser.isIE)
                style.styleFloat = "left";
            else
                style.cssFloat = "left";
            style.width = offsetWidth + "px";
            if (Browser.isIE)
                style.styleFloat = "none";
            else
                style.cssFloat = "none";
            style.margin = "auto";
        }
    }

}

window.addEvent("load", UI.Init);