﻿function GetTypeofBrowser() {
    var browserName = "";
    var ua = navigator.userAgent.toLowerCase();
    if (ua.indexOf("opera") != -1) {
        browserName = "opera";
    } else if (ua.indexOf("msie") != -1) {
        browserName = "msie";
    } else if (ua.indexOf("safari") != -1) {
        browserName = "safari";
    } else if (ua.indexOf("mozilla") != -1) {
        if (ua.indexOf("firefox") != -1) {
            browserName = "firefox";
        } else {
            browserName = "mozilla";
        }
    }

    return browserName;
}
function getSrcElement(evt) {
    if (document.all) { return evt.srcElement; }
    else { return evt.target; }
}

function verify() {
    // 0 Object is not initialized 
    // 1 Loading object is loading data 
    // 2 Loaded object has loaded data 
    // 3 Data from object can be worked with 
    // 4 Object completely initialized 
    if (xmlDoc.readyState != 4) {
        return false;
    }
}

function LoadXML(xmlFile) {
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async = "false";
    xmlDoc.onreadystatechange = verify;
    xmlDoc.load(xmlFile);
    xmlObj = xmlDoc.documentElement;
    return xmlObj;
}

function LoadXMLDoc(xmlString) {
    var xmlDoc;

    try //Internet Explorer
      {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = false;
        xmlDoc.validateOnParse = false;
        xmlDoc.resolveExternals = false;
        xmlDoc.loadXML(xmlString);
    }
    catch (e) {
        try //Firefox, Mozilla, Opera, etc.
        {
            var parser = new DOMParser();
            xmlDoc = parser.parseFromString(xmlString, "text/xml");
        }
        catch (e) { return null; }
    }

    return xmlDoc
}


//function for get outer xml.
function getOuterXml(xmlDoc) {
    if (xmlDoc.xml != null) {
        //Internet Explorer
        return xmlDoc.xml;
    } else {
        try {
            //Firefox, Mozilla, Opera, etc.
            var oSerializer = new XMLSerializer();
            return oSerializer.serializeToString(xmlDoc, "text/xml");
        } catch (e) {
            return null;
        }
    }
}


function LTrim(value) {

    var re = /\s*((\S+\s*)*)/;
    return value.replace(re, "$1");

}

// Removes ending whitespaces
function RTrim(value) {

    var re = /((\s*\S+)*)\s*/;
    return value.replace(re, "$1");

}

// Removes leading and ending whitespaces
function trim(value) {

    return LTrim(RTrim(value));

}

function replaceAll(str, from, to) {
    str = str.replace(new RegExp(from, "g"), to);

    //    var idx = str.indexOf( from );

    //    var prevInx = -1;
    //    while ( idx > -1 ) {
    //        str = str.replace(from, to);

    //        re = new RegExp(textArr[iTextArr]);
    //        m = re.exec(sArr[isArr]);
    //        
    //        idx = str.indexOf(from);
    //        if (prevInx == idx) {
    //            break;
    //        } else {prevInx = idx; }
    //    }

    return str;
}

function isNumberKey(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode == 13)
        return false;
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;

    return true;
}

function isFile(str) {
    var O = AJ();
    if (!O) return false;
    try {
        O.open("HEAD", str, false);
        O.send(null);
        return (O.status == 200) ? true : false;
    }
    catch (er) {
        return false;
    }
}
function AJ() {
    var obj;
    if (window.XMLHttpRequest) {
        obj = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        try {
            obj = new ActiveXObject('MSXML2.XMLHTTP.3.0');
        }
        catch (er) {
            obj = false;
        }
    }
    return obj;
}

function getfileextension(inputId) {
    var fileinput = document.getElementById(inputId);
    if (!fileinput) return "";
    var filename = fileinput.value;
    if (filename.length == 0) return "";
    var dot = filename.lastIndexOf(".");
    if (dot == -1) return "";
    var extension = filename.substr(dot, filename.length);
    return extension;
}

function checkfileType(inputId, allowedExt) {
    var ext = getfileextension(inputId);
    if (ext == allowedExt) return true;
    else return false;
}

function GetRadioButtonListVal(controlName) {
    var a = null;
    var f = document.forms[0];
    var e = f.elements[controlName];

    for (var i = 0; i < e.length; i++) {
        if (e[i].checked) {
            a = e[i].value;
            break;
        }
    }
    return a;
}

function GetXmlHttp() {
    //TO DO: this function use for create XMLHttpRequest object
    var xmlHttpRequest = null;

    if (window.XMLHttpRequest) {
        try {
            xmlHttpRequest = new XMLHttpRequest();
        }
        catch (e) {
            //Event_AppendDebug('GetXmlHttp',e.message);
            xmlHttpRequest = false;
        }
    }
    else {
        try {
            xmlHttpRequest = new ActiveXObject('Msxml2.XMLHTTP');
        }
        catch (e) {
            //Event_AppendDebug('GetXmlHttp',e.message);
            try {
                xmlHttpRequest = new ActiveXObject('Microsoft.XMLHTTP');
            }
            catch (e) {
                //Event_AppendDebug('GetXmlHttp',e.message);
                xmlHttpRequest = false;
            }
        }
    }

    return xmlHttpRequest;

}

function OpenMenu(url) {
    //window.open(url, '_self');
    location.href = url;

    return false;
}

function getQueryVariable(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    var key = "";
    var val = "";
    for (i = 0; i < vars.length; i++) {
        //var pair = vars[i].split("=");
        key = vars[i].substring(0, vars[i].indexOf("="));
        //if (pair[0] == variable) 
        if (key == variable) {
            val = vars[i].substring(vars[i].indexOf("=") + 1, vars[i].length);
            return val;
            //return pair[1];
        }
    }
}

function HtmlEncodeFind(text) {
    var ret = "";
    if (text != "undefined" && text != "") {
        ret = text.replace(/&/g, "&amp;");
        ret = ret.replace(new RegExp("\"", "g"), "&quot;");
        ret = ret.replace(/</g, "&lt;");
        ret = ret.replace(/>/g, "&gt;");
        ret = ret.replace(/  /g, "&nbsp;&nbsp;");
        /*
        var _text = ret;
        var temp = '';
        while (temp) {
            //charArr.push(HtmlEncode(text.substr(0, 1)));
            temp = _text.substr(0, 1);
            if (temp.charCodeAt(0) == 160) {
                ret += temp.replace(/ /g, "&nbsp;");
            } else {
                ret += temp;
            }
            _text = _text.substr(1, _text.length);
        }
        */
        return ret;
    }
    else {
        return "";
    }
}

function HtmlEncodeNewLineAndTab(text) {
    var ret = "";
    if (text != "undefined" && text != "") {
        ret = text.replace(/\r\n/g, "<br />");
        ret = ret.replace(/\n/g, "<br />");
        ret = ret.replace(/\r/g, "<br />");
        ret = ret.replace(/\t/g, "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");

        return ret;
    }
    else {
        return "";
    }
}

function HtmlEncode(text) {
    var ret = "";
    if (text != "undefined" && text != "") {
        ret = text.replace(/&/g, "&amp;");
        ret = ret.replace(new RegExp("\"", "g"), "&quot;");
        ret = ret.replace(/</g, "&lt;");
        ret = ret.replace(/>/g, "&gt;");
        //ret = ret.replace(/ /g, "&nbsp;");
        return ret;
    }
    else {
        return "";
    }
}

function HtmlDecode(text) {
    var ret = "";
    if (text != "undefined" && text != "") {
        ret = text.replace(/&amp;/g, "&");
        ret = ret.replace(/&quot;/g, "\"");
        ret = ret.replace(/<br \/>/g, "\r\n");
        ret = ret.replace(/<br \/>/g, "\n");
        ret = ret.replace(/<br \/>/g, "\r");
        ret = ret.replace(/&lt;/g, "<");
        ret = ret.replace(/&gt;/g, ">");
        ret = ret.replace(/&nbsp;/g, " ");
        return ret;
    }
    else {
        return "";
    }
}

function setCookie(c_name, value, expiredays) {
    var exdate = new Date();
    //exdate.setDate(exdate.getDate()+expiredays);
    //deleteCookie(c_name);
    document.cookie = c_name + "=" + escape(value)
    + "; path=/";
    //+ "; expires=gmtdate" // + exdate.toGMTString()
}

function getCookie(c_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) c_end = document.cookie.length;
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return null;
}

// this deletes the cookie when called
function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
        //document.cookie = name + "=;expires=Thu, 01-Jan-1970 00:00:01 GMT";
        var expires = new Date();
        expires.setUTCFullYear(expires.getUTCFullYear() - 1);
        document.cookie = name + '=; expires=' + expires.toUTCString() + '; path=/';
    }
}

function isFile(str) {
    var O = AJ();
    if (!O) return false;
    try {
        O.open("HEAD", str, false);
        O.send(null);
        return (O.status == 200) ? true : false;
    }
    catch (er) {
        return false;
    }
}
function AJ() {
    var obj;
    if (window.XMLHttpRequest) {
        obj = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        try {
            obj = new ActiveXObject('MSXML2.XMLHTTP.3.0');
        }
        catch (er) {
            obj = false;
        }
    }
    return obj;
}

function PostEditorHelp(section) {
    var val = '';
    switch (section) {
        case 1: val = 'Editor'; break;
        case 2: val = 'Version'; break;
        case 3: val = 'Chat'; break;
        case 4: val = 'Discussion'; break;
        case 5: val = 'Choices'; break;
        case 6: val = 'Dictionary'; break;
        case 7: val = 'Thesauruses'; break;
        case 8: val = 'Glossary'; break;
    }
    window.open("../../Forms/PostEditor/Help.aspx" + (val != '' ? "#" + val : ""), "AOPostEditorHelp", "");
}

function GetXmlNodeValue(node) {
    var browser = GetTypeofBrowser();
    if (node.firstChild)
        return node.firstChild.data;
    else {
        if (browser == 'msie') {
            return node.text;
        } else if (browser == 'firefox') {
            return node.textContent;
        }
    }
}

function GetDivNodeValue(node) {
    var browser = GetTypeofBrowser();
    if (node.firstChild.nodeValue) {
        return node.firstChild.nodeValue;
    }
    else {
        if (browser == 'msie') {
            return node.firstChild.innerText;
        } else if (browser == 'firefox') {
            return node.firstChild.textContent;
        }
    }
}