﻿UTILITY_LOADED = true;

function isType(obj, typeName) {
    var type = new String(typeof(obj));
    return (type.toLowerCase() == typeName.toLowerCase());
}

function isString(obj) {
    return isType(obj, "string");
}

function isArray(obj) {
    return isType(obj, "array");
}

function isFunction(obj) {
    return isType(obj, "function");
}

function getRandomValue() {
    var value = "";
    var dt = new Date();
    value = dt.getMilliseconds();
    value += "" + Math.round(Math.random() * 1000);
    return value;
}

function getStyleAttribute(obj, name) {
    if (obj.getAttribute) {
        var styleAttr = obj.getAttribute("style");
        if (styleAttr && styleAttr.getAttribute)
            return styleAttr.getAttribute(name);
        else
            return "";
    }
    else if (obj.style)
        return obj.style[name];
    else
        return "";
}

function getDimension(value, maxValue) {
    if (value && maxValue) {
        valueString = new String(value);
        if (valueString.charAt(valueString.length - 1) == "%") {
            value = parseInt(valueString.substring(0, valueString.length - 2));
            value = Math.max(maxValue * (value / 100), 0);
        }
        else if (valueString.toLowerCase() == "auto")
            value = maxValue;
    }
    else
        value = 0;
    return value;
}

function setStyleAttribute(obj, name, value) {
    if (obj.setAttribute) {
        var styleAttr = obj.getAttribute("style");
        if (styleAttr && styleAttr.setAttribute)
            styleAttr.setAttribute(name, value);
        else if (obj.style)
            obj.style[name] = value;
    }
    else if (obj.style)
        obj.style[name] = value;
    else
        CSSStyleNotSupported = true;
}

function setNodeText(obj, text) {
    try {
        obj.innerText = text;
        if (obj.textContent)
            obj.textContent = text;
        obj.innerHTML = text;
        obj.nodeValue = text;
    }
    finally {
    }
}

function getNodeText(obj) {
    if (obj.innerHTML)
        return obj.innerHTML;
    else if (obj.textContent)
        return obj.textContent;
    else if (obj.innerText)
        return obj.innerText;
    else
        return obj.nodeValue;
}

function setClassName(obj, name) {
    obj.setAttribute("class", name);
    obj.className = name;
}

function displayElement(obj, makeVisible) {
    if (obj) {
        var displayValue = makeVisible ? "block" : "none";
        setStyleAttribute(obj, "display", displayValue);
    }
}

function createElementFromCode(html) {
    var element = document.createElement("div");
    setNodeText(element, html);
    return element;
}

function createClone(node) {
    var element = document.createElement("div");
    element.appendChild(node.cloneNode());
    return element;
}

function getHttpRequestObject() {
    try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e) {
        try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e) {
            try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {
                try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {
                    try { return new XMLHttpRequest(); } catch (e) { return null; }
                }
            }
        }
    }
}

function emptySelectList(field) {
    if (isString(field))
        field = document.getElementById(field);
    if (field.type && field.type == "select-one" || field.type == "select") {
        for (var i = field.options.length - 1; i >= 0; i--)
            field.remove(i);
    }
}

function getFieldValue(objField) {
    var value = "";
    if (objField.type) {
        switch (objField.type) {
            case "text":
            case "textarea":
                value = objField.value;
                break;
            case "checkbox":
                value = (objField.checked ? "1" : "0");
                break;
            case "select-one":
            case "select":
                if (objField.selectedIndex > -1)
                    value = objField.options[objField.selectedIndex].value;
                break;
            default:
                break;
        }
    }
    return value;
}

function addHandler(element, handler, code) {
    if (isString(element))
        element = document.getElementById(element);
    if (element) {
        if (element.getAttribute(handler) == null)
            eval("element." + handler + " = function() { " + code + " };");
        else
            eval("element." + handler + " = function() { " + code + "; " + element.getAttribute(handler) + "};");
    }
}

function findOptionIndex(selectObj, value) {
    var s = -1;
    for (var i = 0; i < selectObj.options.length && s == -1; i++) {
        if (selectObj.options[i].value == value)
            s = i;
    }
    return s;
}