var theDoc = null;

if (!Array.prototype.push) Array.prototype.push = new Function('elem', 'var index=this.length;this[index]=elem;return index;');

var app = navigator.appName;
var ver = parseInt(navigator.appVersion.substring(0, 1));
var is_ie4 = ((app == "Microsoft Internet Explorer") && (ver >= 4)); //browser_check && ((document.all)    ? true : false);
var is_ns = ((app == "Netscape") && (ver >= 3)); //browser_check && ((document.layers) ? true : false);
var browser_check = is_ie4 || is_ns;

function MIN(a, b) { return (a < b) ? a : b; };
function MAX(a, b) { return (a > b) ? a : b; };
function BOUND(a, min, max) { return (a < min) ? min : (a > max) ? max : a; };

function RAW_COPY(id, app) { var res = ""; var ttt = document.all[id]; if (!ttt) return res; if (app) ttt.insertAdjacentHTML("BeforeEnd", app); res = ttt.outerHTML; ttt.style.visibility = "hidden"; return res; };
function CreateElement(type, id, style, cls, parent) { if (!theDoc) theDoc = document; var res = theDoc.createElement(type); if (!res) return null; res.id = id; if (style) ApplyStyles(res, style); if (cls) res.className = cls; if (parent) parent.appendChild(res); return res; };
function ApplyStyles(obj, styles) { var temp = styles; while (temp.length > 0) { var i = temp.indexOf(":"); var style_name = temp.substring(0, i); var ii = style_name.indexOf("-"); if (ii != -1) { var ttt = style_name.substring(0, ii); ttt += style_name.substring(ii + 1, ii + 2).toUpperCase(); ttt += style_name.substring(ii + 2, style_name.length); style_name = ttt; }; var j = temp.indexOf(";"); var value = temp.substring(i + 1, j); temp = temp.substring(j + 1, temp.length); eval('obj.style.' + style_name + '=' + '"' + value + '"'); }; return true; };

function nop() { event.cancelBubble = true; event.returnValue = false; return false; };

//** array functions
function getFirstElem(obj) {
    if (obj instanceof Array)
        return obj[0];
    else
        return obj;
};
function formArray(obj) {
    var res = new Array();
    try {
        if (obj instanceof Array || (String(obj.length) != "undefined" && obj.length != 0)) {
            for (var i = 0; i < obj.length; i++) {
                res[i] = obj[i];
            };
        } else {
            res.length = 1;
            res[0] = obj;
        };
    } catch (err) {
        res.length = 1;
        res[0] = obj;
    };
    return res;
};

//** single-element DOM functions
function findElement(parent, tagName, id) { return (is_ie4) ? getFirstElem(parent.all[id]) : findNamedItem(parent.getElementsByTagName(tagName), id); };
function findNamedItem(nodeList, id) {
    for (var i = 0; i < nodeList.length; i++) {
        var node = nodeList.item(i);
        if (node.id == id || node.name == id) return node;
    };
    return null;
};

//** multiple-element DOM functions
function findElements(parent, tagName, id) { return (is_ie4) ? formArray(parent.all[id]) : findNamedItems(parent.getElementsByTagName(tagName), id); };
function findNamedItems(nodeList, id) {
    var result = new Array();
    for (var i = 0; i < nodeList.length; i++) {
        var node = nodeList.item(i);
        if (node.id == id || node.name == id) result.push(node);
    };
    return result;
};

/////////////////////////////////////////////////////////////////////
function clientcontrolclick(element) {
    if (element.click) {
        element.click();
    }
    else {
        var href = element.href;
        //strip off the leading 'javascript:'
        var func;

        if (href.indexOf('javascript:') > -1)
            func = href.substr(11);
        else
            func = href;

        if (func.substr(0, 3) == '%20')
            func = func.substr(3);

        eval(func);
    }
}


//** URL functions
function ConcatURL(baseURL, concatURL) {
    var res = String(baseURL), toConcat = String(concatURL);
    if (toConcat.length > 0 && toConcat != "" && toConcat != "undefined") {
        var app_sign = (res.indexOf("?") != -1) ? "&" : "?";
        if ((toConcat.charAt(0) == "?") || (toConcat.charAt(0) == '&'))
            toConcat = toConcat.substring(1, toConcat.length);

        res += app_sign + toConcat;
    };
    return res;
}

function ConcatURLWoQMark(baseURL, concatURL) {
    var res = String(baseURL), toConcat = String(concatURL);
    if (toConcat.length > 0 && toConcat != "" && toConcat != "undefined") {
        var app_sign = (res.indexOf("?") != -1) ? "&" : "";
        if ((toConcat.charAt(0) == "?") || (toConcat.charAt(0) == '&'))
            toConcat = toConcat.substring(1, toConcat.length);

        res += app_sign + toConcat;
    };
    return res;
}

function SetURLValue(baseURL, paramName, paramValue) {
    var url = String(baseURL);
    var res = "";
    var testRG = new RegExp("[?&]?(" + paramName + "=[^&]*)(&|$)", "g");
    if (url.search(testRG) != -1) {
        res = url.replace(RegExp.$1, paramName + "=" + paramValue);
    } else {
        res = ConcatURL(baseURL, paramName + "=" + paramValue);
    };
    return res;
}

function SetURLValueWoQMark(baseURL, paramName, paramValue) {
    var url = String(baseURL);
    var res = "";
    var testRG = new RegExp("[?&]?(" + paramName + "=[^&]*)(&|$)", "g");
    if (url.search(testRG) != -1) {
        res = url.replace(RegExp.$1, paramName + "=" + paramValue);
    } else {
        res = ConcatURLWoQMark(baseURL, paramName + "=" + paramValue);
    };
    return res;
}

function RoundPrec(fltNum, prec) {
    prec = Math.pow(10, prec);
    return Math.round(fltNum * prec) / prec;
}

function OpenWindow(width, height, url) {
    var left = 50, top = 50;
    try {
        left = Math.floor(((window.screen.availWidth - width) / 3));
        top = Math.floor(((window.screen.availHeight - height) / 3));
    } catch (e) { }
    var sFeatures = "resizable=no,scrollbars=0,toolbar=0,left=" + left + ",top=" + top + ",width=" + width + ",height=" + height;
    var oWnd = window.open(url, "text_popup", sFeatures);
    oWnd.focus();
}

function Trim(str) {
    str = str.replace(/^\s+/g, "");
    str = str.replace(/\s+$/g, "");
    return str;
};


