﻿function $(_sId) { return document.getElementById(_sId); }
function $V(_sId) { return document.getElementById(_sId).value; }
function getOs() { if (navigator.userAgent.indexOf("MSIE") > 0) { if (navigator.userAgent.indexOf("MSIE 6") > 0) return 1; else return 0 }; if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) return 2; if (isSafari = navigator.userAgent.indexOf("Safari") > 0) return 3; if (isCamino = navigator.userAgent.indexOf("Camino") > 0) return 4; if (isMozilla = navigator.userAgent.indexOf("Gecko/") > 0) return 5; return 0; }
var isIE6 = (getOs() == 1);
var isIE = (getOs() <= 1);
var isFF = (getOs() == 2);
function px(v) { return v + "px"; }
function SerUrl() { if (_serUrl != false) { return _serUrl; } else { alert("_serUrl error"); } }
function runEval(evalCode) { if (evalCode != null && evalCode != "") { eval(evalCode); return true; } else { return false; } }
function GoToUrl(url) { window.location = encodeURI(SerUrl() + url); }
function GoBack() { javascript: history.go(-1); }
function setFocus(sId, select) { try { var o = $(sId); o.focus(); if (select) { o.select(); } } catch (e) { } }
function getAttb(obj, name) { if (obj != null) { var o = obj.attributes[name]; if (o != null) { return o.value; } } else { return ""; } }
function IsEmpty(fData) { return ((fData == null) || (fData.length == 0)) }
function IsEmail(mail) { return (new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail)); }
function getParams(_id,str)
{
    var params="";
    function setParams(subObj)
    {
        if(subObj.id.indexOf(str,0)>=0)
        {
            if(subObj.type.toLowerCase()=="checkbox")
            {params+="&"+subObj.id+"="+subObj.checked;}
            else{params+="&"+subObj.id+"="+subObj.value;}
        }
    }
    
    var obj=$(_id);
    for(var i=0;i<=obj.getElementsByTagName("input").length-1;i++)
    {
        setParams(obj.getElementsByTagName("input")[i]);
    }
    for(var i=0;i<=obj.getElementsByTagName("select").length-1;i++)
    {
        setParams(obj.getElementsByTagName("select")[i]);
    }
    return params;
}
function IntNumber(e) {
    var k = (getOs() != 2 ? event.keyCode : (e.keyCode == 0 ? e.charCode : e.keyCode));
    if (((k > 47) && (k < 58)) || k == 8 || k == 9 || k == 33 || k == 34 || k == 36 || k == 35 || k == 37 || k == 38 || k == 39 || k == 40 || k == 20 || k == 16 || k == 17 || k == 18)
    { return true; }
    else
    { return false; }
}
function pNumber(_sId) {
    var o = $(_sId);
    if (o == null) return;
    o.style.textAlign = "right";
    o.onkeypress = _pNumber;
    o.onchange = _pNumC;
    function _pNumber(e) {
        var k = (getOs() != 2 ? event.keyCode : (e.keyCode == 0 ? e.charCode : e.keyCode));
        if (k == 45) { return o.value.indexOf('-') == -1 ? true : false; }
        if (k == 46) { return o.value.indexOf('.') == -1 ? true : false; }
        return IntNumber(e);
    }
    function _pNumC(e) {
        var sub = o.value.indexOf('-');
        if (sub != -1) {
            if (sub != 0) { o.value = o.value.replace('-', ''); }
        }
        isNum(o.value, true, _sId);
    }
}
function MaskTime(_sId) {
    closeAC(_sId);
    var o = $(_sId);
    if (o == null) return;
    o.maxLength = 5;
    o.onkeypress = _maskTime;
    obj.onblur = fixTime;

    function _maskTime(e) {
        var k = (getOs() != 2 ? event.keyCode : (e.keyCode == 0 ? e.charCode : e.keyCode));
        if (IntNumber(e)) {
            if (k == 8) return true;
            var postion;
            if (getOs() == 0) {
                if (document.selection.createRange().text != "" && obj.value.indexOf(document.selection.createRange().text, 0) == 0)
                { postion = 0; }
                else
                { postion = obj.value.length; }
            }
            switch (postion) {
                case 0:
                    return k <= 50 ? true : false;
                case 1:
                    if (o.value == '2')
                        return k <= 51 ? true : false;
                    else
                        return true;
                case 2:
                    if (obj.value.indexOf(":", 2) < 0) obj.value += ":";
                    return k <= 53 ? true : false;
                case 3:
                    return k <= 53 ? true : false;
                default:
                    return true;
            }
        }
        else
            return false;
    }
    function fixTime(e) {
        switch (obj.value.length) {
            case 0:
                return true;
            case 1:
                obj.value += '0:00'; return false;
            case 2:
                obj.value += ':00'; return false;
            case 3:
                obj.value += '00'; return false;
            case 4:
                obj.value += '0'; return false;
            default:
                return true;
        }
    }
}

var _uid = "";
var _evalCode = "";
var _tmpDiv = "__tmpDiv";
var _serUrl = false;
var XMLHttp = {
    _objPool: [],
    _getInstance: function ()
    {
        for (var i = 0; i < this._objPool.length; i ++)
        {
            if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4)
            {return this._objPool[i];}
        }
        // IE5中不支持push方法
        this._objPool[this._objPool.length] = this._createObj();
        return this._objPool[this._objPool.length - 1];
    },
    _createObj: function ()
    {
        if (window.XMLHttpRequest)
        {var objXMLHttp = new XMLHttpRequest();}
        else
        {
            var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
            for(var n = 0; n < MSXML.length; n ++)
            {
                try
                {
                    var objXMLHttp = new ActiveXObject(MSXML[n]);
                    break;
                }
                catch(e)
                {}
            }
         }          
        // mozilla某些版本没有readyState属性
        if (objXMLHttp.readyState == null)
        {
            objXMLHttp.readyState = 0;
            objXMLHttp.addEventListener("load", function ()
                {
                    objXMLHttp.readyState = 4;
                    if (typeof objXMLHttp.onreadystatechange == "function")
                    {objXMLHttp.onreadystatechange();}
                },  false);
        }
        return objXMLHttp;
    },
    // 发送请求(方法[post,get], 地址, 数据, 回调函数,是否异步)
    sendReq: function (sId,method, url, data, callback,asynchronous,isNewReq)
    {
        var objXMLHttp;
        if(isNewReq!=null&&isNewReq)
        {objXMLHttp=this._createObj();}
        else
        {objXMLHttp=this._getInstance();}
        
        with(objXMLHttp)
        {
            try
            {
                // 加随机数防止缓存
                if (url.indexOf("?") > 0)
                {url += "&randnum=" + Math.random();}
                else
                {url += "?randnum=" + Math.random();}
                open(method,url,asynchronous);
                // 设定请求编码方式
                setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
                if(isNewReq!=null&&isNewReq)
                {
                                        send(data);
                    onreadystatechange = function ()
                    {
                        if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304))
                        {
                            callback(objXMLHttp.responseText,sId);
                        }
                    }
                }
                else
                {
                    send(data);
                    onreadystatechange = function ()
                    {
                        if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304))
                        {
                            callback(objXMLHttp.responseText,sId);
                        }
                    }
                }
            }
            catch(e)
            {alert(e);}
        }
    }
}; 
function a(objId,url,pars,method,onComplete,asynchronous,isNewReq)
{
    if(asynchronous==null){asynchronous=true;}
    if(method.toLowerCase()=="get")
    {
        url=url+"?"+pars;
        url=encodeURI(url);
        XMLHttp.sendReq(objId,'GET',url,'',onComplete,asynchronous,isNewReq);
    }
    else
    {
        XMLHttp.sendReq(objId,'POST',url,encodeURI(pars),onComplete,asynchronous,isNewReq);
    }
}
function EndRequest(value, sId) {
    var o = $(sId);
    if (o != null) { o.innerHTML = value; }
}
//function a(objId,url,pars,method,onComplete,asynchronous){var xmlHttp;if(window.XMLHttpRequest){try{xmlHttp=new XMLHttpRequest()}catch(e1){alert("HTTP error ")}}else{if(window.ActiveXObject){try{xmlHttp=new ActiveXObject("Msxml2.XMLHTTP")}catch(e1){try{xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")}catch(e2){xmlHttp=false}}}}xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4){if(onComplete!=null){onComplete(xmlHttp.responseText,objId)}}};if(method.toLowerCase()=="get"){url=url+"?"+pars;xmlHttp.open("GET",encodeURI(url),asynchronous);xmlHttp.send(null)}else{xmlHttp.open("POST",url,asynchronous);xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xmlHttp.send(encodeURI(pars))}}
function moveDiv(event, _sId) {
    var oObj = $(_sId);
    document.onmousemove = mousemove; document.onmouseup = mouseup;
    var gap = 5;
    //oObj.onmousemove = mousemove;//oObj.onmouseup = mouseup;
    oObj.setCapture ? oObj.setCapture() : function() { };
    var objSize = { w: oObj.offsetWidth, h: oObj.offsetHeight };
    var arrySize = getPageSize();
    var oEvent = window.event ? window.event : event;
    var dragData = { x: oEvent.clientX, y: oEvent.clientY };
    var backData = { x: parseInt(oObj.style.top), y: parseInt(oObj.style.left) };

    function mousemove(e) {
        //var oEvent;
        if (getOs() == 2) { oEvent = e; } else { oEvent = event; }
        var nLeft = arrySize[0] - objSize["w"] - gap;
        var nTop = arrySize[1] - objSize["h"] - gap;
        var iLeft = oEvent.clientX - dragData["x"] + parseInt(oObj.style.left);
        var iTop = oEvent.clientY - dragData["y"] + parseInt(oObj.style.top);
        oObj.style.left = px(nLeft > iLeft ? (iLeft < gap ? gap : iLeft) : nLeft);
        oObj.style.top = px(nTop > iTop ? (iTop < gap ? gap : iTop) : nTop);
        dragData = { x: oEvent.clientX, y: oEvent.clientY };
    }

    function mouseup(e) {
        //var oEvent;
        if (getOs() == 2) { oEvent = e; } else { oEvent = event; }
        document.onmousemove = null; document.onmouseup = null;
        //oObj.onmousemove = null;//oObj.onmouseup = null;
        if (oEvent.clientX < 1 || oEvent.clientY < 1)
        { oObj.style.left = px(backData.y); oObj.style.top = px(backData.x); }
        oObj.releaseCapture ? oObj.releaseCapture() : function() { };
    }
}
function showSelect(xShow, obj) {
    if (getOs() != 1) return;
    var selects = null;
    if (obj == null) selects = document.getElementsByTagName("SELECT");
    else selects = obj.getElementsByTagName("SELECT"); for (i = 0; i < selects.length; i++) { if (xShow == true) { selects[i].style.display = ""; } else { selects[i].style.display = "none"; } }
}
function showShadow(arrySize, obj) {
    var _arrySize;
    if (arrySize == null)
        _arrySize = getPageSize();
    else
        _arrySize = arrySize;
    if ($("overlay") != null)
        if (document.body.hasChildNodes()) { document.body.removeChild($("overlay")); }
    var oDiv = document.createElement("div");
    oDiv.id = "overlay";
    document.body.appendChild(oDiv);
    var overlay = $("overlay");

    overlay.style.height = px(_arrySize[1]);
    overlay.style.width = px(_arrySize[0]);
    overlay.style.left = px(_arrySize[4]);
    overlay.style.top = px(_arrySize[5]);
    overlay.style.display = "block";
    if (obj != null) {
        overlay.style.backgroundColor = "#BFBFBF";
        showSelect(false, obj);
    }
    else
    { showSelect(false); }
}
function closeShadow() {
    var overlay = $("overlay");
    showSelect(true);
    if (overlay != null) { if (document.body.hasChildNodes()) { document.body.removeChild(overlay); } }
}
function showDiv(_sID, obj) {
    var arrySize;
    if (obj == null) { arrySize = getPageSize(); }
    else { arrySize = getObjSize(obj); }
    showShadow(arrySize, obj);
    var oObj = $(_sID);
    if (oObj.style.left == "") oObj.style.left = px(arrySize[2] / 2 + arrySize[4] - oObj.offsetWidth / 2);
    if (oObj.style.top == "") oObj.style.top = px(arrySize[3] / 2 + arrySize[5] - oObj.offsetHeight);
    oObj.style.display = "block";
    $("overlay").style.zindex = oObj.style.zindex - 1;
}
function closeDiv(_sID, evalCode) {
    var oObj = $(_sID);
    RemoveTempDiv();
    if (oObj != null) { oObj.style.display = "none"; }
    closeShadow();
    runEval(evalCode);
}
function getObjSize(obj) {
    if (getOs() != 2) { arrayPageSize = new Array(obj.offsetWidth, obj.offsetHeight, obj.offsetWidth, obj.offsetHeight, getAbsoluteLeft(obj), getAbsoluteTop(obj)); }
    else { arrayPageSize = new Array(obj.offsetWidth, obj.offsetHeight, obj.clientWidth, obj.clientHeight, getAbsoluteLeft(obj), getAbsoluteTop(obj)); }
    return arrayPageSize;
}
function getPageSize()//取得页面大小
{
    var xScroll, yScroll;

    if (window.innerHeight && window.scrollMaxY) {
        xScroll = document.body.scrollWidth;
        yScroll = window.innerHeight + window.scrollMaxY;
    } else if (document.body.scrollHeight > document.body.offsetHeight) { // all but Explorer Mac
        xScroll = document.body.scrollWidth;
        yScroll = document.body.scrollHeight;
    } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
        xScroll = document.body.offsetWidth;
        yScroll = document.body.offsetHeight;
    }
    var windowWidth, windowHeight;
    if (self.innerHeight) {	// all except Explorer
        windowWidth = self.innerWidth;
        windowHeight = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
        windowWidth = document.documentElement.clientWidth;
        windowHeight = document.documentElement.clientHeight;
    } else if (document.body) { // other Explorers
        windowWidth = document.body.clientWidth;
        windowHeight = document.body.clientHeight;
    }
    // for small pages with total height less then height of the viewport
    if (yScroll < windowHeight) {
        pageHeight = windowHeight;
    } else {
        pageHeight = yScroll;
    }
    // for small pages with total width less then width of the viewport
    if (xScroll < windowWidth) {
        pageWidth = windowWidth;
    } else {
        pageWidth = xScroll;
    }
    arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight, 0, 0)
    return arrayPageSize;
}
function CloseMsgBox()
{closeDiv();}
function MsgBox(text, title, isError, OKevalCode, CancelevalCode) {
    var _sId = "MsgBoxDiv";
    var title = (title == null ? "System Information" : title);
    var text = (text == null ? "" : text);
    if (isError) text = "<table width='100%'><tr><td align='center' style='padding-left: 10px; padding-right: 20px; width: 1px'><img src='" + SerUrl() + "images/error.gif' /></td><td width='99%' align='left'>" + text + "</td></tr></table>";
    var content_body = "<table width='100%' border='0px' cellpadding='0px' cellspacing='0px'><tr class=\"msg-title\"><td onmousedown=\"moveDiv(event,'" + _sId + "');\" style='cursor:move;'>&nbsp;" + title +
    "</td></tr><tr><td class=\"msg-bb\" /></tr><tr height='90px'><td align='center'>" + text +
    "</td></tr><tr><td align='center'>";
    content_body += "<input type='button' id=\"_canBtn\" class='btn_all btn_2' width='50px' value='OK' onclick=\"closeDiv('" + _sId + "','" + OKevalCode + "')\"/>";
    if (CancelevalCode != null) { content_body += "&nbsp;&nbsp;<input type='button' id=\"_MsgBtn\" class='btn_all btn_2' width='50px' value='Cancel' onclick=\"closeDiv('" + _sId + "','" + CancelevalCode + "')\"/></td></tr><tr><td height='10px'></td></tr></table>"; }
    content_body = "<div id='" + _sId + "' class=\"msgDiv\" style=\"background-color:#3D60A4;\"><table border='0px' cellpadding='0px' cellspacing='0px' width='100%'><tr><td class='msg-lt' /><td class='msg-mt' /><td class='msg-rt' /></tr><tr><td class='msg-l' /><td class='msg-bg' align='left'>" + content_body + "</td><td class='msg-r' /></tr><tr><td class='msg-lb' /><td class='msg-mb' /><td class='msg-rb' /></tr></table></div>"
    CreateTempDiv(content_body);
    showDiv(_sId);
    setFocus("_canBtn");
    return false;
}
function showLoad(text, objId) {
    var _text = "Loading.....";
    if (text != null && text != "") { _text = text; }
    var _sId = "__Loading";
    var content = "<div style=\"background-color: #FFFFFF; width: 230px; border: solid 1px #FFF;position: absolute; z-index: 100;\" id=\"" + _sId + "\" onmousedown=\"moveDiv(event,'" + _sId + "');\"><div style=\"padding:15px 8px 15px 20px; float: left;\"><img src=\"" + SerUrl() + "images/loading.gif\" /></div><div style=\"padding: 3px; font-size: 12px; float: left; line-height:60px;\">" + _text + "</div></div>";
    CreateTempDiv(content);
    showDiv(_sId, $(objId));
}
function showMiniLoad(text, sId) {
    var o = $(sId);
    if (text == null && text == "") { text = "Loading......"; }
    if (o != null) {
        o.style.display = "";
        o.innerHTML = "<div><img src='" + SerUrl() + "images/suggest_loading.gif' />Loading......</div>";
    }
}
function closeMiniLoad(sId, evalCode)
{ var o = $(sId); if (o != null) { o.style.display = "none"; o.innerHTML = ""; } runEval(evalCode); }
function closeLoad(evalCode) {
    closeDiv("__Loading", evalCode);
}
function CreateTempDiv(value) {
    var obj = $(_tmpDiv);
    if (obj == null) {
        obj = document.createElement("div");
        obj.id = _tmpDiv;
        document.body.appendChild(obj);
    }
    if (obj.hasChildNodes()) { obj.removeChild(obj.childNodes[0]); }
    obj.innerHTML = value;
}
function RemoveTempDiv() {
    if ($(_tmpDiv) != null)
        document.body.removeChild($(_tmpDiv));
}
function OP(url, name, type) {
    var sW = 900;
    var sH = 720;
    switch (type) {
        case 1:
            sW = 900;
            sH = 720;
            break;
        default:
            break;
    }
    window.open(SerUrl() + url, name, 'height=' + sH + ',width=' + sW + ',scrollbars=yes')
}

function readOnly(_sId) {
    var o = $(_sId)
    if (o == null) return;
    closeAC(_sId);
    o.readOnly = true;
    o.setAttribute("contenteditable", "false");
    o.onkeypress = function() { return false; };
}
function closeAC(_sId) {
    var o = $(_sId)
    if (o == null) return;
    o.setAttribute("autocomplete", "off");
}

function getAbsoluteLeft(ob) { var s_el = 0; el = ob; while (el) { s_el = s_el + el.offsetLeft; el = el.offsetParent; }; return s_el; }
function getAbsoluteTop(ob) { var s_el = 0; el = ob; while (el) { s_el = s_el + el.offsetTop; el = el.offsetParent; }; return s_el; }
function loadFile(filePath, type) {
    var el = null;
    if (type == "js") {
        el = document.createElement('script')
        el.setAttribute("type", "text/javascript")
        el.setAttribute("src", filePath)
    } else if (type == "css") {
        el = document.createElement("link")
        el.setAttribute("rel", "stylesheet")
        el.setAttribute("type", "text/css")
        el.setAttribute("href", filePath)
    } else {
        return;
    }
    var eHead = document.getElementsByTagName("head");
    if (eHead != null)
        eHead[0].appendChild(el)
}
//CheckBox
function checkAll(obj, name) {
    for (var i = 0; i < document.getElementsByName(name).length; i++)
    { document.getElementsByName(name)[i].checked = obj.checked; }
}
function getCheckID(name, max) {
    var s = "";
    var m = 0;
    for (var i = 0; i < document.getElementsByName(name).length; i++) {
        if (max != null) { if (m >= max) { return s.substr(0, s.lastIndexOf('|')); } }
        var o = document.getElementsByName(name)[i]
        if (o.checked) {
            s += o.id + "|";
            m++;
        }
    }
    return s.substr(0, s.lastIndexOf('|'));
}
function getCheckAttb(name, attbName) {
    var s = "";
    for (var i = 0; i < document.getElementsByName(name).length; i++) {
        var o = document.getElementsByName(name)[i]
        if (o.checked) {
            s += getAttb(o, attbName) + "|";
        }
    }
    return s.substr(0, s.lastIndexOf('|'));
}
//Paging
function _RunClick(obj, event, txtId, btnId) {
    if (event.keyCode == 13) {
        _GoToPage(txtId, btnId, obj.value);
    }
}
function _GoToPage(txtId, btnId, index) {
    var txt = $(txtId);
    var btn = $(btnId);
    txt.value = index;
    btn.click();
}
function isRequiredObj(css, containerId) {
    function isRequired(obj) {
        if (obj != null) {
            if (obj.attributes["required"] == null) { return false; }
            else {
                var rq = obj.attributes["required"];
                if (rq.nodeValue == "")
                { rq.nodeValue = obj.className; return true; }
                return true;
            }
        }
        else { return false; }
    }
    var sthIsEmpty = false;
    var grp = document.body;
    if ($(containerId) != null) { grp = $(containerId); }

    for (var i = 0; i <= grp.getElementsByTagName("input").length - 1; i++) {
        var oo = grp.getElementsByTagName("input")[i];
        if (oo.type.toLowerCase() == "checkbox" || oo.type.toLowerCase() == "text" || oo.type.toLowerCase() == "password") {
            if (isRequired(oo)) {
                if (oo.value == "") { oo.className = css; sthIsEmpty = true; }
                else { oo.className = oo.attributes["required"].nodeValue; }
            }
        }
    }
    return sthIsEmpty;
}

function DateControl(sId, butId, onchange, allowEmpty, left, top, error_lb) {
    var oj = $(sId);
    var errMsg = "Invalid date format";
    if (oj == null) { alert('Miss the "' + sId + '"'); return; }

    if (oj.attributes["errmsg"] != null) { errMsg = oj.attributes["errmsg"].value; }
    if (left == null || top == null) {
        Calendar.setup({
            inputField: sId,
            ifFormat: "%d/%m/%Y",
            showsTime: false,
            button: butId,
            singleClick: true,
            step: 1
        });
    }
    else {
        Calendar.setup({
            inputField: sId,
            ifFormat: "%d/%m/%Y",
            showsTime: false,
            button: butId,
            singleClick: true,
            step: 1,
            position: [left, top]
        });
    }
    var lv = oj.value;
    oj.onfocus = "";
    oj.onblur = "";
    oj.onchange = function() { if (formatDate(allowEmpty)) { if (onchange != null && oj.value != "") { onchange(sId); } } else { inputErr(); } };

    function inputErr() {
        if (error_lb == null)
            Error(errMsg);
        else
            $(error_lb).innerHTML = errMsg;
        oj.value = lv;
    }
    //format ddMMyyyy,ddMMMyyyy to dd/MM/yyyy 
    function formatDate(allowEmpty) {
        var str = oj.value;
        if (allowEmpty) { if (str == "") return true; }
        if (str == "") { return false; }
        var month_array = new Array("", "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OTC", "NOV", "DEC");
        var d = str;
        var m = d.match(/^(\d{2})([a-zA-Z]{3}|\d{2})(\d{2,4})$/);
        if (!(m == null || m.length < 4)) {
            for (var j = 0; j < month_array.length; j++) {
                if (month_array[j] == m[2].toUpperCase()) {
                    m[2] = j;
                    if (j < 10) {
                        m[2] = "0" + m[2];
                    }
                }
            }
            if (isNaN(m[2]) == false) {
                if (m[3].length < 3) {
                    m[3] = "20" + m[3];
                }
            }
            str = m[1] + "/" + m[2] + "/" + m[3];
        }
        if (ValidateDate(str)) {
            oj.value = str;
            lv = str;
            return true;
        }
        else {
            inputErr();
            return false;
        }

    }
    function ValidateDate(str) {
        try {
            var dateinfo = str.split("/");

            if (dateinfo.length == 3) {
                if (dateinfo[2].length != 4 || parseInt(dateinfo[1]) > 12 || dateinfo[1].length != 2)
                    return false;

                var day = parseInt(dateinfo[0], 10);
                var moth = parseInt(dateinfo[1], 10);
                var year = parseInt(dateinfo[2], 10);
                var maxday = new Date(parseInt(year), parseInt(moth), 0).getDate();

                if (parseInt(day, 10) > parseInt(maxday, 10) || (parseInt(year, 10) > 2099 || parseInt(year, 10) < 1900)
                    || parseInt(moth, 10) == 0 || parseInt(day, 10) == 0
                    || isNaN(day) || isNaN(moth) || isNaN(year)) {
                    return false;
                }
                else
                    return true;
            }
            else
                return false;
        }
        catch (e) {
            alert(e);
            return false;
        }
    }
}

function ConvertDate(str) {
    var a = new Array();
    a = str.split('/');
    return new Date(a[2], a[1] - 1, a[0]);
}
function getDateToStr(date) {
    var d = date.getDate();
    var day = (d < 10) ? '0' + d : d;
    var m = date.getMonth() + 1;
    var month = (m < 10) ? '0' + m : m;
    var yy = date.getYear();
    var year = (yy < 1000) ? yy + 1900 : yy;
    return day + "/" + month + "/" + year;
}
function compareDate(date1, date2, changeId, num, enforce) {
    if (isNaN(date1) || isNaN(date2))
        return true;
    if (num == null) { num = 1; }
    if (daysElapsed(date2, date1) >= num && !enforce) {
        return true;
    }
    else {
        var d = DateAdd("D", num, date1);
        $(changeId).value = getDateToStr(d);
        return false;
    }
}
