﻿function OrtTrimString (value)
{
    var reVal;
    var strTmp;
    
    strTmp = value + "";
    if (strTmp.length == 0)
        return (strTmp);

    reVal = /^(\s|　)*/;
    strTmp = strTmp.replace (reVal, '');
    reVal = /(\s|　)*$/;
    return (strTmp.replace (reVal, ''));
}

function OrtHtmlFormat (value)
{
    var reVal;
    var strTmp;
    
    reVal = /</g;
    strTmp = value.replace (reVal, "&lt;");
    reVal = />/g;
    strTmp = strTmp.replace (reVal, "&gt;");
    reVal = /"/g;
    strTmp = strTmp.replace (reVal, "&quot;");
    reVal = / /g;
    strTmp = value.replace (reVal, "&nbsp;");
    
    return (strTmp);
}

function OrtUrlStringFormat (value)
{
    var reVal;
    var strTmp;
    
    reVal = /%/g;
    strTmp = value.replace (reVal, "%25");
    reVal = /&/g;
    strTmp = strTmp.replace (reVal, "%26");
    reVal = /#/g;
    strTmp = strTmp.replace (reVal, "%23");
    reVal = /\+/g;
    strTmp = strTmp.replace (reVal, "%2b");
    reVal = /\{/g;
    strTmp = strTmp.replace (reVal, "%7b");
    reVal = /\}/g;
    strTmp = strTmp.replace (reVal, "%7d");
    
    return (strTmp);
}

function OrtHtmlLine (value)
{
    var reVal;
    var strTmp;
    
    reVal = /\r\n|\r|\n/g;
    strTmp = value.replace (reVal, "<br>");
    
    return (strTmp);
}

function OrtHtmlFormatLine (value)
{
    return (OrtHtmlLine (OrtHtmlFormat (value)));
}

function OrtHtmlSingleQuote (value)
{
    var reVal;
    var strTmp;
    
    reVal = /'/g;
    strTmp = value.replace (reVal, "\\'");
    
    return (strTmp);
}

function OrtHtmlDoubleQuote (value)
{
    var reVal;
    var strTmp;
    
    reVal = /"/g;
    strTmp = value.replace (reVal, '\\"');
    
    return (strTmp);
}

function OrtHtmlQuote (value)
{
    return (OrtHtmlDoubleQuote (OrtHtmlSingleQuote (value)));
}

function OrtEncodeURI (value)
{
    return (encodeURIComponent (value));
}

function OrtCheckInteger (value)
{
    var reVal;
    
    value = OrtTrimString (value);
    if (value.length == "")
        return (false);

    reVal = /^[\-\+]?\d+$/;
    return (reVal.test (value));
}

function OrtStrToInteger (text, value)
{
    if (arguments.length == 1)
        return (parseInt (text, 10));
        
    if (OrtCheckInteger (text))
        return (parseInt (text, 10));
    else
        return (value);
}

function OrtCheckNumber (value)
{
    var reVal;
    
    value = OrtTrimString (value);
    if (value.length == "")
        return (false);

    reVal = /^[\-\+]?\d+(\.\d+)?$/;
    return (reVal.test (value));
}

function OrtStrToNumber (text, value)
{
    if (arguments.length == 1)
        return (parseFloat (text));
        
    if (OrtCheckNumber (text))
        return (parseFloat (text));
    else
        return (value);
}

function OrtCheckDate (value)
{
    value = (OrtTrimString (value));
    if (value.length == 0)
        return (false);

    var nStart = 0;
    var nEnd = 0;
    var reVal = /^([1-2]\d{3})[\-](0?[1-9]|10|11|12)[\-]([1-2]?[0-9]|0[1-9]|30|31)$/;
    if (reVal.test (value))
    {
        nStart = value.indexOf ("-", 0);
        nEnd = value.indexOf ("-", nStart + 1);
    }
    else
    {
        reVal = /^([1-2]\d{3})[\/](0?[1-9]|10|11|12)[\/]([1-2]?[0-9]|0[1-9]|30|31)$/;
        if (!reVal.test (value))
            return (false);
        nStart = value.indexOf ("/", 0);
        nEnd = value.indexOf ("/", nStart + 1);
    }

    var nYear = OrtStrToInteger (value.substring (0, nStart));
    var nMonth = OrtStrToInteger (value.substring (nStart + 1, nEnd));
    var nDay = OrtStrToInteger (value.substring (nEnd + 1, value.length));

    var arrDay = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    var nFact = arrDay[nMonth - 1];
    if (nMonth == 2)
    {
        if ((nYear % 4 == 0 && nYear %100 != 0) || (nYear % 400 == 0))
            nFact ++;
    }
    if (nDay > nFact)
        return (false);
    
    return (true);
}

function OrtStrToDate (text)
{
    if (OrtCheckDate (text))
        return (new Date (text.replace (/-/g, "/")));
    else
        return (null);
}

function OrtDiffDays (first, second)
{
    return (parseInt ((first - second) / 1000 / 60 / 60 /24));
}

function OrtDiffDaysByText (firstText, secondText)
{
    return (OrtDiffDays (OrtStrToDate (firstText), OrtStrToDate (secondText)));
}

function OrtCheckTime (value)
{
    var reVal;
    
    value = (OrtTrimString (value));
    if (value.length == 0)
        return (false);

    reVal = /^(([0-9]|[01][0-9]|2[0-3])(:([0-9]|[0-5][0-9])){0,2}|(0?[0-9]|1[0-1])(:([0-9]|[0-5][0-9])){0,2}\s?[aApP][mM])?$/;
    return (reVal.test (value));
}

function OrtCheckShortTime (value)
{
    var reVal;
    
    value = (OrtTrimString (value));
    if (value.length == 0)
        return (false);

    reVal = /^(0\d{1}|1\d{1}|2[0-3]):([0-5]\d{1})$/;
    return (reVal.test (value));
}

function OrtCheckColor (value)
{
    value = OrtTrimString (value);
    if (value.length == "")
        return (false);

    reVal = /^\#[0-9|a-f|A-F]{6}$/;
    return (reVal.test (value));
}

function OrtCheckEmail (value)
{
    var reVal;
    
    value = (OrtTrimString (value));
    if (value.length == 0)
        return (false);

    reVal = /^[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+@[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+(\.[\-!#\$%&'\*\+\\\.\/0-9=\?A-Z\^_`a-z{|}~]+)+$/;
    return (reVal.test (value));
}

function OrtCheckIPAddr (value)
{
    value = (OrtTrimString (value));
    if (value.length == 0)
        return (false);

    reVal = /^(\d{1}|\d{2}|[0-1]\d{2}|2[0-4]\d|25[0-5])\.(\d{1}|\d{2}|[0-1]\d{2}|2[0-4]\d|25[0-5])\.(\d{1}|\d{2}|[0-1]\d{2}|2[0-4]\d|25[0-5])\.(\d{1}|\d{2}|[0-1]\d{2}|2[0-4]\d|25[0-5])$/;
    return (reVal.test (value));
}

function OrtCheckIPMask (value)
{
    var arrTmp;
    var strTmp = OrtTrimString (value);

    if (strTmp == "" || !OrtCheckIPAddr (strTmp))
        return (false);
        
    arrTmp = strTmp.split (".");
    if ((arrTmp[3] == "0" || arrTmp[3] == "2" || arrTmp[3] == "4" || arrTmp[3] == "8" || arrTmp[3] == "16" 
        || arrTmp[3] == "32" || arrTmp[3] == "64" || arrTmp[3] == "128") && arrTmp[0] == "255"
        && arrTmp[1] == "255" && arrTmp[2] == "255")
        return (true);
    
    if ((arrTmp[2] == "0" || arrTmp[2] == "2" || arrTmp[2] == "4" || arrTmp[2] == "8" || arrTmp[2] == "16" 
        || arrTmp[2] == "32" || arrTmp[2] == "64" || arrTmp[2] == "128") && arrTmp[0] == "255"
        && arrTmp[1] == "255" && arrTmp[3] == "0")
        return (true);
    
    if ((arrTmp[1] == "0" || arrTmp[1] == "2" || arrTmp[1] == "4" || arrTmp[1] == "8" || arrTmp[1] == "16" 
        || arrTmp[1] == "32" || arrTmp[1] == "64" || arrTmp[1] == "128") && arrTmp[0] == "255"
        && arrTmp[2] == "0" && arrTmp[3] == "0")
        return (true);
    
    if ((arrTmp[0] == "2" || arrTmp[0] == "4" || arrTmp[0] == "8" || arrTmp[0] == "16" 
        || arrTmp[0] == "32" || arrTmp[0] == "64" || arrTmp[0] == "128") && arrTmp[1] == "0"
        && arrTmp[2] == "0" && arrTmp[3] == "0")
        return (true);
        
    return (false);
}

function OrtCheckValidCode (code, firstalpha)
{
    var reVal;

    code = OrtTrimString (code);
    if (code.length == "")
        return (false);

    if (firstalpha)
        reVal = /^[a-zA-Z][a-zA-Z0-9]*$/;
    else
        reVal = /^[a-zA-Z0-9]+$/;
    return (reVal.test (code));
}

function OrtCheckExtendCode (code, firstalpha)
{
    var reVal;

    code = OrtTrimString (code);
    if (code.length == "")
        return (false);

    if (firstalpha)
        reVal = /^[a-zA-Z][\.\-_a-zA-Z0-9]*$/;
    else
        reVal = /^[\.\-_a-zA-Z0-9]+$/;
    return (reVal.test (code));
}

function OrtIntTo2Char (value)
{
    var strOut;
    
    if (value <= 9)
        strOut = "0";
    else
        strOut = "";
    strOut += value;

    return (strOut);
}

function OrtAdjustTime (value)
{
    var nPos;
    var nHour;
    var nMinute;
    var nSecond;
    var strTmp;
    
    value = OrtTrimString (value);
    if (value == "")
        return ("");

    nPos = value.indexOf (":", 0);
    if (nPos < 0)
    {
        if (OrtCheckInteger (value))
            nHour = Math.ceil (value);
        else
            nHour = 0;
        nMinute = 0;
        nSecond = 0;
    }
    else
    {
        if (nPos == 0)
            nHour = 0;
        else
        {
            strTmp = value.substring (0, nPos);
            if (OrtCheckInteger (strTmp))
                nHour = Math.ceil (strTmp);
            else
                nHour = 0;
        }
        value = value.substring (nPos + 1, value.length + 1);
        nPos = value.indexOf (":");
        if (nPos < 0)
        {
            if (OrtCheckInteger (value))
                nMinute = Math.ceil (value);
            else
                nMinute = 0;
            nSecond = 0;
        }
        else
        {
            if (nPos == 0)
                nMinute = 0;
            else
            {
                strTmp = value.substring (0, nPos);
                if (OrtCheckInteger (strTmp))
                    nMinute = Math.ceil (strTmp);
                else
                    nMinute = 0;
            }
            strTmp = value.substring (nPos + 1, value.length + 1);
            if (OrtCheckInteger (strTmp))
                nSecond = Math.ceil (strTmp);
            else
                nSecond = 0;
        }
    }

    if (nHour < 0)
        nHour = 0;
    else if (nHour > 23)
        nHour = 23;
    if (nMinute < 0)
        nMinute = 0;
    else if (nMinute > 59)
        nMinute = 59;
    if (nSecond < 0)
        nSecond = 0;
    else if (nSecond > 59)
        nSecond = 59;

    return (OrtIntTo2Char (nHour) + ":" + OrtIntTo2Char (nMinute) + ":" + OrtIntTo2Char (nSecond));
}

function OrtFillString (value, char, length, left)
{
    var nLen;
    var chVal;
    var strFill;
    var i;
    
    nLen = value.length;
    if (nLen >= length)
        return (value);
        
    if (char == "")
        chVal = " ";
    else
        chVal = char.substring(0, 1);
    strFill = "";
    for (i = 0; i < length - nLen; i ++)
        strFill = strFill + chVal;
    if (left)
        return (strFill + value);
    else
        return (value + strFill);
}

function OrtDecToHexByte (value)
{
    switch (value)
    {
        case 0:
            return ("0");
        case 1:
            return ("1");
        case 2:
            return ("2");
        case 3:
            return ("3");
        case 4:
            return ("4");
        case 5:
            return ("5");
        case 6:
            return ("6");
        case 7:
            return ("7");
        case 8:
            return ("8");
        case 9:
            return ("9");
        case 10:
            return ("a");
        case 11:
            return ("b");
        case 12:
            return ("c");
        case 13:
            return ("d");
        case 14:
            return ("e");
        case 15:
            return ("f");
        default:
            return ("0");
    }
}

function OrtDecToHexWord (value)
{
    var Val1 = Math.floor (value / 16);
    var Val2 = value - Val1 * 16;

    return (OrtDecToHexByte (Val1) + OrtDecToHexByte (Val2));
}

function OrtHexByteToDec (value)
{
    switch (value)
    {
        case "0":
            return (0);
        case "1":
            return (1);
        case "2":
            return (2);
        case "3":
            return (3);
        case "4":
            return (4);
        case "5":
            return (5);
        case "6":
            return (6);
        case "7":
            return (7);
        case "8":
            return (8);
        case "9":
            return (9);
        case "a":
        case "A":
            return (10);
        case "b":
        case "B":
            return (11);
        case "c":
        case "C":
            return (12);
        case "d":
        case "D":
            return (13);
        case "e":
        case "E":
            return (14);
        case "f":
        case "F":
            return (15);
        default:
            return (0);
    }
}

function OrtHexWordToDec (value)
{
    return (OrtHexByteToDec (value.charAt (0)) * 16 + OrtHexByteToDec (value.charAt (1)));
}

function OrtGetWebFileName (fullname)
{
    if (fullname == null)
        return ("");
    if (fullname.length == 0)
        return ("");

    var pos = fullname.lastIndexOf ("/");
    if (pos == -1)
        return (fullname);
    if (pos == fullname.length - 1)
        return ("");
    else
        return (fullname.substring (pos + 1));
}

function OrtOnNumberChange (sender, digits)
{
    sender.value = OrtTrimString (sender.value);
    if (OrtCheckNumber (sender.value))
    {
        if (arguments.length == 1)
            sender.value = OrtStrToNumber (sender.value).toFixed (2);
        else
            sender.value = OrtStrToNumber (sender.value).toFixed (digits);
    }
}

function OrtSelectMove (source, target, start)
{
    var nIndex;
    var eItem;
    
    if (start < 0)
        start = 0;
        
    nIndex = source.selectedIndex;
    if (nIndex < start)
        return;

    if (target != null)
    {
        eItem = document.createElement ("OPTION");
        target.add (eItem);
        eItem.innerText = source.item (nIndex).text;
        eItem.value = source.item (nIndex).value;
        target.selectedIndex = target.length - 1;
    }

    source.remove (nIndex);
    if (nIndex >= source.length)
        nIndex = source.length - 1;
    source.selectedIndex = nIndex;
}

function OrtSelectAppend (source, target, start, permit)
{
    var nIndex;
    var i;
    var eItem;
    
    if (start < 0)
        start = 0;
        
    nIndex = source.selectedIndex;
    if (nIndex < start)
        return;

    if (!permit)
    {
        for (i = 0; i < target.length; i ++)
        {
            if (target.item (i).value == source.item (nIndex).value)
                return;
        }
    }
    
    eItem = document.createElement ("OPTION");
    target.add (eItem);
    eItem.innerText = source.item (nIndex).text;
    eItem.value = source.item (nIndex).value;
    target.selectedIndex = target.length - 1;
}

function OrtSelectMoveAll (source, target, start)
{
    var eItem;
    
    if (start < 0)
        start = 0;
        
    if (source.length < start)
        return;

    while (source.length > start)
    {
        if (target != null)
        {
            eItem = document.createElement ("OPTION");
            target.add (eItem);
            eItem.innerText = source.item (start).text;
            eItem.value = source.item (start).value;
        }

        source.remove (start);
    }

    source.selectedIndex = -1;
    if (target != null)
        target.selectedIndex = target.length - 1;
}

function OrtSelectAppendAll (source, target, start, permit)
{
    var i;
    var j;
    var Find;
    var eItem;

    if (start < 0)
        start = 0;
        
    if (source.length < start)
        return;

    for (i = start; i < source.length; i ++)
    {
        if (!permit)
        {
            Find = false;
            for (j = 0; j < target.length; j ++)
            {
                if (target.item (j).value == source.item (i).value)
                {
                    Find = true;
                    break;
                }
            }
            if (Find)
                continue;
        }

        eItem = document.createElement ("OPTION");
        target.add (eItem);
        eItem.innerText = source.item (i).text;
        eItem.value = source.item (i).value;
    }

    target.selectedIndex = target.length - 1;
}

function OrtSelectIncludeString (source, linkstr, start)
{
    var value;
    var i;

    if (start < 0)
        start = 0;
    
    value = "";
    for (i = start; i < source.length; i ++)
        value += source.item(i).value + linkstr;
    if (value != "")
        value = linkstr + value;

    return (value);
}

function OrtSelectJoinString (source, linkstr, start)
{
    if (start < 0)
        start = 0;
    var values = "";
    for (var i = start; i < source.length; i++)
    {
        if (values.length == 0)
            values = source.item(i).value;
        else
            values += linkstr + source.item(i).value;
    }
    
    return (values);
}

function OrtSelectSwapColor (source, first, second, firstcolor, secondcolor, start)
{
    var nIdx;
    var nLen;
    
    if (start < 0)
        start = 0;

    if ((nIdx = source.selectedIndex) < start)
        return;

    nLen = source.item (nIdx).text.length;
    if (source.item (nIdx).text.substring (0, first.length) == first)
    {
        source.item (nIdx).text = second + source.item (nIdx).text.substring (first.length, nLen);
        if (firstcolor != secondcolor)
            source.item (nIdx).style.color = secondcolor;
    }
    else if (source.item (nIdx).text.substring (0, second.length) == second)
    {
        source.item (nIdx).text = first + source.item (nIdx).text.substring (second.length, nLen);
        if (firstcolor != secondcolor)
            source.item (nIdx).style.color = firstcolor;
    }

    source.selectedIndex = -1;
}

function OrtSelectSwap (source, first, second, start)
{
    OrtSelectSwap (source, first, second, "", "", start);
}

function OrtSelectSwapString (source, Pref, linkstr, start)
{
    var value;
    var i;

    if (start < 0)
        start = 0;
   
    value = "";
    for (i = start; i < source.length; i ++)
    {
        if (source.item (i).text.substring (0, Pref.length) == Pref)
            value += source.item(i).value + linkstr;
    }
    if (value != "")
        value = linkstr + value;

    return (value);
}

function OrtSelectFind (source, value, start)
{
    var i;

    if (start < 0)
        start = 0;

    for (i = start; i < source.length; i ++)
    {
        if (source.item (i).value == value)
            return (i);
    }

    return (-1);
}

function OrtSelectAdd (source, value, text)
{
    var eItem;
    eItem = document.createElement ("OPTION");
    source.add (eItem);
    eItem.innerText = text;
    eItem.value = value;
    
    source.selectedIndex = source.length - 1;
}

function OrtSelectRemoveNotExists (source, target, start)
{
    var nSelect;
    var nFrom;
    var i;
    var value;
    var bFind;

    if (start < 0)
        start = 0;

    nSelect = target.selectedIndex;
    nFrom = start;
    while (nFrom < target.length)
    {
        value = target.item (nFrom).value;
        
        bFind = false;
        for (i = 0; i < source.length; i ++)
        {
            if (source.item (i).value == value)
            {
                bFind = true;
                break;
            }
        }
        
        if (bFind)
            nFrom ++;
        else
            target.remove (nFrom);
    }
    
    if (target.selectedIndex == -1)
    {
        if (nSelect >= target.length)
            target.selectedIndex = target.length - 1;
        else
            target.selectedIndex = nSelect;
    }
}

function OrtSelectRemove (source, start)
{
    var nIndex;
    
    if (start < 0)
        start = 0;
        
    if ((nIndex = source.selectedIndex) < start)
        return;
    
    source.remove (nIndex);
    if (nIndex >= source.length)
        nIndex = source.length - 1;
    source.selectedIndex = nIndex;
}

function OrtSelectRemoveAll (source, start)
{
    if (start < 0)
        start = 0;
    while (source.length > start)
        source.remove (start);
}

function OrtOpenCenterWindow (url, name, features)
{
    var nWidth;
    var nHeight;
    var nLeft;
    var nTop;
    var value;
    var nPos;
    var strComb;
    var i;
    var chVal;

    nLeft = 0;
    nTop = 0;
    if (features == null)
        return (window.open (url, name, features));

    value = features.toUpperCase ();
    if (value.indexOf ("LEFT", 0) >= 0 || value.indexOf ("TOP", 0) >= 0)
        return (window.open (url, name, features));

    if ((nPos = value.indexOf ("WIDTH", 0)) < 0)
        return (window.open (url, name, features));
    if ((nPos = value.indexOf ("=", nPos)) < 0)
        return (window.open (url, name, features));
    strComb = "";
    for (i = nPos + 1; i < features.length; i ++)
    {
        chVal = features.charAt (i);
        if (chVal == " " || (chVal >= "0" && chVal <= "9"))
            strComb += chVal;
        else
            break;
    }
    if ((nWidth = OrtStrToInteger (OrtTrimString (strComb))) <= 0)
        return (window.open (url, name, features));
    
    if ((nPos = value.indexOf ("HEIGHT", 0)) < 0)
        return (window.open (url, name, features));
    if ((nPos = value.indexOf ("=", nPos)) < 0)
        return (window.open (url, name, features));
    strComb = "";
    for (i = nPos + 1; i < features.length; i ++)
    {
        chVal = features.charAt (i);
        if (chVal == " " || (chVal >= "0" && chVal <= "9"))
            strComb += chVal;
        else
            break;
    }
    if ((nHeight = OrtStrToInteger (OrtTrimString (strComb))) <= 0)
        return (window.open (url, name, features));

    nLeft = (window.screen.availWidth - nWidth) / 2;
    nTop = (window.screen.availHeight - nHeight) / 2 - 20;
    if (nLeft < 0)
        nLeft = 0;
    if (nTop < 0)
        nTop = 0;
    features += ",left=" + nLeft + ",top=" + nTop;

    return (window.open (url, name, features));
}

function OrtCloseWindow (win)
{
    try
    {
        win.close ();
    }
    catch (e)
    {
    }
}

function OrtAdjustImage (name, width)
{
    var img = eval ("document.all." + name);
    try
    {
        if (img.width > width)
            img.width = width;
    }
    catch (e)
    {
    }
}

function OrtAdjustMatchImage (name, width)
{
    divColl = document.all.tags("IMG");
    for (i = 0; i < divColl.length; i++)
    {
        whichEl = divColl (i);
        if (whichEl.name.length < name.length)
            continue;
        if (whichEl.name.substring (0, name.length) == name)
        {
            if (whichEl.width > width)
                whichEl.width = width;
        }
    }
}

function OrtFocusControl (id, selected)
{
    var eCtrl = document.getElementById (id);
    eCtrl.focus ();
    if (selected)
        eCtrl.select ();
}

function OrtCheckBoxListCheck (name, checked)
{
    var eChecks = document.getElementsByName (name);
    if (eChecks.length == 0)
        return;
        
    for (var i = 0; i < eChecks.length; i++)
        eChecks[i].checked = checked;
}

function OrtCheckBoxListCheckByValue (name, checked, values)
{
    var eChecks = document.getElementsByName (name);
    if (eChecks.length == 0 || values == null)
        return;
    if (values.length == 0)
        return;
        
    for (var i = 0; i < eChecks.length; i++)
    {
        for (var j = 0; j < values.length; j ++)
        {
            if (values[j] == eChecks[i].value)
            {
                eChecks[i].checked = checked;
                break;
            }
        }
    }
}

function OrtCheckBoxListReverse (name)
{
    var eChecks = document.getElementsByName (name);
    if (eChecks.length == 0)
        return;
        
    for (var i = 0; i < eChecks.length; i++)
        eChecks[i].checked = !eChecks[i].checked;
}

function OrtCheckBoxListReverseByValue (name, values)
{
    var eChecks = document.getElementsByName (name);
    if (eChecks.length == 0 || values == null)
        return;
    if (values.length == 0)
        return;
        
    for (var i = 0; i < eChecks.length; i++)
    {
        for (var j = 0; j < values.length; j ++)
        {
            if (values[j] == eChecks[i].value)
            {
                eChecks[i].checked = !eChecks[i].checked;
                break;
            }
        }
    }
}

function OrtCheckBoxListJoinValue (name, linkstr)
{
    var eChecks = document.getElementsByName (name);
    if (eChecks.length == 0)
        return ("");

    var values = "";
    for (var i = 0; i < eChecks.length; i++)
    {
        if (eChecks[i].checked)
        {
            if (values.length == 0)
                values = eChecks[i].value;
            else
                values += linkstr + eChecks[i].value;
        }
    }
    
    return (values);
}

function OrtCheckBoxListCheckedCount (name)
{
    var eChecks = document.getElementsByName (name);
    if (eChecks.length == 0)
        return (0);

    var count = 0;
    for (var i = 0; i < eChecks.length; i++)
    {
        if (eChecks[i].checked)
            count ++;
    }
    
    return (count);
}

function OrtRadioBoxListValue (name)
{
    var eRadios = document.getElementsByName (name);
    if (eRadios.length == 0)
        return (null);

    for (var i = 0; i < eRadios.length; i++)
    {
        if (eRadios[i].checked)
            return (eRadios[i].value);
    }
    
    return (null);
}

function OrtInsertAtCaret (source,value)
{
    if (document.all)
    {
        source.focus ();
        var range = document.selection.createRange ().duplicate ();
        range.text = value;
        range.select ();
    }
    else
    {
        var rangeStart = source.selectionStart;
        var rangeEnd = source.selectionEnd;
        var start = source.value.substring (0, rangeStart);
        var end = source.value.substring (rangeEnd);
        source.value = start + value + end;
    }
}

function OrtGetAbsoutePosition (source)
{
    var x = source.offsetLeft;
    var y = source.offsetTop;
    
    var eParent = source.offsetParent;
    while (eParent.tagName.toUpperCase() != "BODY")
    {
        x += eParent.offsetLeft;
        y += eParent.offsetTop;
        eParent = eParent.offsetParent;
    }

    var position = new Array ();
    position[0] = x;
    position[1] = y;
    position[2] = source.offsetWidth;
    position[3] = source.offsetHeight;
    
    return (position);
}

function OrtClickControl (control)
{
    if (document.createEvent)
    {
        var evObj = document.createEvent ("MouseEvents");
        evObj.initEvent ("click", true, false);
        control.dispatchEvent (evObj);
        return;
    }
    
    control.click ();
}

function OrtInputBySingle (url, width, height, ctrlid)
{
     var result = window.showModalDialog (url,
        window,
        "status:no;center:yes;scroll:no;resizable:no;help:no;dialogWidth:" + width + "px;dialogHeight:" + height + "px");

    if (result == undefined)
        return;
    //取消
    if (result.length == 0)
        return;
    //清空
    if (result == "*")
        result = "";

    var ctrl = document.getElementById (ctrlid);
    ctrl.value = result;
}

function OrtInputByMultiply (url, width, height, sureidx, ctrlid, ctrlidx)
{
    if (arguments.length < 6)
        return;
        
     var result = window.showModalDialog (url,
        window,
        "status:no;center:yes;scroll:no;resizable:no;help:no;dialogWidth:" + width + "px;dialogHeight:" + height + "px");

    if (result == undefined)
        return;
    if (result[sureidx].length == 0)
        return;
    var count = (arguments.length - 4) / 2;
    for (var i = 0; i < count; i ++)
    {
        var ctrl = document.getElementById (arguments[4 + i * 2]);
        var idx = arguments[5 + i * 2];
        ctrl.value = result[idx];
    }
}

function OrtInputByCustom (ctrlid, ctrlvalue)
{
    var count = arguments.length / 2;
    for (var i = 0; i < count; i ++)
    {
        var ctrl = document.getElementById (arguments[i * 2]);
        var value = arguments[1 + i * 2];
        ctrl.value = value;
    }
}

function OrtMoveUpDown (pObjCtl, nType)
{
    var nIndex, nTotal;

    nIndex = pObjCtl.selectedIndex;
    if (nType == 0)
        nTotal = nIndex - 1;
    else
        nTotal = nIndex + 1;

    if (nIndex < 0 || nTotal < 0 || nTotal >= pObjCtl.length)
        return false;

    strValue = pObjCtl.item(nIndex).value;
    strText = pObjCtl.item(nIndex).text;

    pObjCtl.item(nIndex).value = pObjCtl.item(nTotal).value;
    pObjCtl.item(nIndex).text = pObjCtl.item(nTotal).text;
    pObjCtl.item(nTotal).value = strValue;
    pObjCtl.item(nTotal).text = strText;
    pObjCtl.selectedIndex = nTotal;
}

function OrtCheckFileName (code)
{
    var reVal;

    code = OrtTrimString (code);
    if (code.length == "")
        return (false);

    reVal = /\*|\?|\\|\/|\:|\"|\<|\>|\|/g;

    return (reVal.test (code));
}

function OrtSetCookie (name, value, days)
{
    if(typeof days=='undefined')
        var Days = 360;
    else
        var Days = days;
    var exp = new Date();

    exp.setTime (exp.getTime() + Days * 12 * 60 * 60 * 1000);
    document.cookie = name + "=" + escape (value) + ";expires=" + exp.toGMTString();
}

function OrtGetCookie (name)
{
    var arr, reg = new RegExp("(^|)" + name + "=([^;]*)(;|$)");

    if (arr = document.cookie.match(reg))
        return unescape(arr[2]);
    else
        return "";
}

function OrtGetDataLength (fData)
{
    var intLength = 0;
    for (var i = 0;i < fData.length ; i++)
    {
        if ((fData.charCodeAt(i) < 0) || (fData.charCodeAt(i) > 255))
            intLength=intLength+2;
        else
            intLength=intLength+1;
    }
    return intLength;
}

function OrtParams ()
{
    var arrParams = new Array ();
    var arrTemp = document.location.search.substr(1).split('&');

    for (var i = 0 ; i < arrTemp.length; i++)
    {
        var arrTemps = arrTemp[i].split ('=');
        var arrNew = new Array ();

        arrNew['name'] = arrTemps[0];
        arrNew['value'] = arrTemps[1];
        arrParams[i] = arrNew;
        arrParams[arrTemps[0]] = arrTemps[1];
    }

    return (arrParams);
}

function OrtSprintf ()
{
    if(ret = arguments[0])
    {
        var reg = /%(-)?(\d+)?\.?(\d+)?(\w)/g;
        var i = 0,l = 0;

        while(arr = reg.exec (ret))
        {
            if (++i > arguments.length)
                return null;

            switch(arr[4])
            {
                case "x":
                    tmp = arguments[i].toString (16);
                    break;
                case "f":
                    if (arr[3])
                    {
                        tmp = arguments[i].toFixed (arr[3]);
                        break;
                    }
                case "s":
                case "d":
                default:
                    tmp = arguments[i].toString ();
            }

            if ((l = Number (arr[2]) - tmp.length) > 0)
                tmp = arr[1] ? tmp + new Array (l + 1).join (" ") : new Array (l + 1).join (" ") + tmp;

            ret = ret.replace (arr[0], tmp);
        }

        return (ret);
    }

    return (null);
}

function OrtCleanWord (html, bIgnoreFont, bRemoveStyles)
{
    if (html == null) return ("");

    html = html.replace (/<o:p>\s*<\/o:p>/g, '');
    html = html.replace (/<o:p>.*?<\/o:p>/g, '&nbsp;');
    html = html.replace (/\s*mso-[^:]+:[^;"]+;?/gi, '');
    html = html.replace (/\s*MARGIN: 0cm 0cm 0pt\s*;/gi, '');
    html = html.replace (/\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"");
    html = html.replace (/\s*TEXT-INDENT: 0cm\s*;/gi, '');
    html = html.replace (/\s*TEXT-INDENT: 0cm\s*"/gi, "\"");
    html = html.replace (/\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"");
    html = html.replace (/\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"");
    html = html.replace (/\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"");
    html = html.replace (/\s*tab-stops:[^;"]*;?/gi, '');
    html = html.replace (/\s*tab-stops:[^"]*/gi, '');

    if (bIgnoreFont)
    {
        html = html.replace (/\s*face="[^"]*"/gi, '');
        html = html.replace (/\s*face=[^ >]*/gi, '');
        html = html.replace (/\s*FONT-FAMILY:[^;"]*;?/gi, '');
    }

    html = html.replace (/<(\w[^>]*)class=([^ |>]*)([^>]*)/gi, "<$1$3");

    if (bRemoveStyles)
        html = html.replace (/<(\w[^>]*)style="([^\"]*)"([^>]*)/gi, "<$1$3");

    html =  html.replace (/\s*style="\s*"/gi, '');
    html = html.replace (/<SPAN\s*[^>]*>\s*&nbsp;\s*<\/SPAN>/gi, '&nbsp;');
    html = html.replace (/<SPAN\s*[^>]*><\/SPAN>/gi, '');
    html = html.replace (/<(\w[^>]*)lang=([^ |>]*)([^>]*)/gi, "<$1$3");
    html = html.replace (/<SPAN\s*>(.*?)<\/SPAN>/gi, '$1');
    html = html.replace (/<FONT\s*>(.*?)<\/FONT>/gi, '$1');
    html = html.replace (/<\\?\?xml[^>]*>/gi, '');
    html = html.replace (/<\/?\w+:[^>]*>/gi, '');
    html = html.replace (/<\!--.*?-->/g, '');
    html = html.replace (/<(U|I|STRIKE)>&nbsp;<\/\1>/g, '&nbsp;');
    html = html.replace (/<H\d>\s*<\/H\d>/gi, '');
    html = html.replace (/<(\w+)[^>]*\sstyle="[^"]*DISPLAY\s?:\s?none(.*?)<\/\1>/ig, '');
    html = html.replace (/<(\w[^>]*)language=([^ |>]*)([^>]*)/gi, "<$1$3");
    html = html.replace (/<(\w[^>]*)onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3");
    html = html.replace (/<(\w[^>]*)onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3");

    if (false)
    {
        html = html.replace (/<H(\d)([^>]*)>/gi, '<h$1>');
        html = html.replace (/<(H\d)><FONT[^>]*>(.*?)<\/FONT><\/\1>/gi, '<$1>$2<\/$1>' );
        html = html.replace (/<(H\d)><EM>(.*?)<\/EM><\/\1>/gi, '<$1>$2<\/$1>' );
    }
    else
    {
        html = html.replace (/<H1([^>]*)>/gi, '<div$1><b><font size="6">');
        html = html.replace (/<H2([^>]*)>/gi, '<div$1><b><font size="5">');
        html = html.replace (/<H3([^>]*)>/gi, '<div$1><b><font size="4">');
        html = html.replace (/<H4([^>]*)>/gi, '<div$1><b><font size="3">');
        html = html.replace (/<H5([^>]*)>/gi, '<div$1><b><font size="2">');
        html = html.replace (/<H6([^>]*)>/gi, '<div$1><b><font size="1">');
        html = html.replace (/<\/H\d>/gi, '<\/font><\/b><\/div>');

        var re = new RegExp ('(<P)([^>]*>.*?)(<\/P>)', 'gi');
        html = html.replace (re, '<div$2<\/div>');
        html = html.replace (/<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '');
        html = html.replace (/<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '');
        html = html.replace (/<([^\s>]+)(\s[^>]*)?>\s*<\/\1>/g, '');
    }

    return (html);
}
