/*
???? ????textStr??????????????????
??????????
??1??textStr????????????????
??2??validChar??????????????????????????????
*/
function isValidChar(textStr, validChar)
{
    var newStr = textStr;
    var newLength = newStr.length;
    var serach;
    for (var i = 0; i < newLength; i ++)
    {
        aChar = newStr.substring(i, i+1);
        aChar = aChar.toUpperCase();
        search = validChar.indexOf(aChar);
        if (!((search != -1) ||
            (aChar >= "A" &&  aChar <= "Z") ||
            (aChar >= "0" &&  aChar <= "9")))
        {
            return false;
        }
    }
    return true;
}

function checkIPStr(ip)
{
    var ipString = ip + ".";
    var i;
    var count = 0 ;
    var tmpStr ="";
    var rtnIP = ""

    for (i= 0; i < ipString.length; i++)
    {
        if (ipString.charAt(i) == ".")
        {
            if (parseInt(tmpStr,10) > 255 ||parseInt(tmpStr,10) < 0 || tmpStr.length < 1)
            {
                return false;
            }
            tmpStr = "";
            count++;
        }
        else
        {
            if (ipString.charAt(i) != "." && (ipString.charAt(i) >"9" || ipString.charAt(i) < "0"))
            {
                return false;
            }
            tmpStr += ipString.charAt(i);
        }
    }
    if (count != 4)
    {
        return false;
    }
    return true;
}

/*
???? ????textStr??????????????????
??????????
??1??textStr????????????????
??2??validChar????????????????????????
*/
function isValidNumber(textStr, validChar)
{
    var newStr = textStr;
    var newLength = newStr.length;
    var serach;
    var count = 0;
    if (validChar.indexOf("-") != -1 && textStr.indexOf("-") != -1)
    {
        //??????????????????????????????????????
        if (textStr.substring(0, 1) != "-")
        {
            return false;
        }
        else if (textStr.substring(1, 2) < "0" || textStr.substring(1, 2) > "9")
        {
            return false;
        }
    }
    for (var i = 0; i < newLength; i ++)
    {
        aChar = newStr.substring(i, i+1);
        search = validChar.indexOf(aChar);
        if (search != -1)
        {
            count++;
        }
        if (!((search != -1) || (aChar >= "0" &&  aChar <= "9")))
        {
            return false;
        }
    }

    if (count > 1)
    {
        return false;
    }
    return true;
}

/*
????textStr??????????
*/
function trim(textStr)
{
    while (" " == textStr.substr(0,1))
    {
        textStr = textStr.substr(1,textStr.length - 1);
    }

    while (" " == textStr.substr(textStr.length - 1,1))
    {
        textStr = textStr.substr(0,textStr.length -1);
    }

    return textStr;
}

function Cmd(url)
{
    document.cmdForm.action = url;
    return true;
}

function doPost(form, url)
{
    form.action = url;
    form.submit();
    return true;
}

function doCancel()
{
    window.close();
    window.opener.focus();
}

/*
???? ????textStr??????????????????
??????????
??1??textStr????????????????
??2??invalidChar??????????????
*/
function checkString(textStr, invalidChar)
{
    var newStr = textStr;
    var newLength = newStr.length;
    var serach;
    invalidChar = invalidChar + "<>&";
    for (var i = 0; i < newLength; i ++)
    {
        aChar = newStr.substring(i, i+1);
        search = invalidChar.indexOf(aChar);
        if (search != -1)
        {
            return false;
        }
    }
    return true;
}

function isValidList(textStr, validChar)
{
    var newStr = textStr;
    var newLength = newStr.length;
    var serach;
    var count = 0;
    for (var i = 0; i < newLength; i ++)
    {
        aChar = newStr.substring(i, i+1);
        search = validChar.indexOf(aChar);
        if (!((search != -1) || (aChar >= "0" &&  aChar <= "9")))
        {
            return false;
        }
    }
    return true;
}

function openServ(url, width, height)
{
    openServ(url, "servWin", width, height);
}

function openServ(url, winName, width, height)
{
    var swidth = window.screen.width;
    var sheight = window.screen.height;
    var str = "left=" + ((swidth - width)/2) + ",top=" + ((sheight - height)/2 - 20)
        + ",width=" + width + ",height=" + height;
    servWin = window.open(url, winName, "toolbar=no,directories=no,status=no,location=no,resizable=no,scrollbars=yes,menubar=no," + str);
    servWin.opener=self;
    servWin.focus();
}
function openDialog(url, width, height)
{
    var sFeatures = 'dialogHeight:' + height + 'px;';
    sFeatures += ('dialogWidth:' + width + 'px;');
    sFeatures += ('help:no;scroll:no;status:no;edge:sunken');
    var dd = window.showModalDialog(url, self, sFeatures);
}
function openServTab(url, winName, width, height)
{
    var swidth = window.screen.width;
    var sheight = window.screen.height;
    var str = "left=" + ((swidth - width)/2) + ",top=" + ((sheight - height)/2 - 20)
        + ",width=" + width + ",height=" + height;
    servWin = window.open(url, winName, "toolbar=no,directories=no,status=no,location=no,resizable=no,scrollbars=no,menubar=no," + str);
    servWin.opener=self;
    servWin.focus();
}

function openDialog(url, width, height)
{
    var sFeatures = 'dialogHeight:' + height + 'px;';
    sFeatures += ('dialogWidth:' + width + 'px;');
    sFeatures += ('help:no;scroll:no;status:no;edge:sunken');
    var dd = window.showModalDialog(url, self, sFeatures);
}

/*
 ????????????????????????
 ??????????????
 GetObjID????????????????????????ID??????????????????
 isValidText????????????????????????????????
 isValidNum????????????????????????????????????????
 ???????????????????????? " ' < > & % /
 compareNum????????????????
 Add by LiFangning(32629)
*/
function GetObjID(ObjName)
{
    for (var ObjID=0; ObjID < window.cmdForm.elements.length; ObjID++)
    {
        if ( window.cmdForm.elements[ObjID].name == ObjName )
        {
            return(ObjID);
        }
    }
    return(-1);
}

/*
  beBlank??????????????????
    true: ????????????
    false: ????????????
*/
function isValidText(objName, canBeEmpty)
{
    invalidText = "\"'<>&%/";
    objID = GetObjID(objName);
    textValue = document.cmdForm.elements[objID].value;
    textValue = trim(textValue);
    textLength = textValue.length;
    if (!canBeEmpty && (textValue == null || textValue == ""))
    {
        return false;
    }
    for (var i = 0; i < textLength; i ++)
    {
        aChar = textValue.substring(i, i+1);
        isFound = invalidText.indexOf(aChar);
        if (isFound != -1)
        {
            return false;
        }
    }
    return true;
}

/*
  minValue: ????????????
  maxValue: ????????????
    ????minValue??maxValue??null??????????????????
  ????????1: ??????0: ??????????-1: ??????????????-2: ????????????
*/
function isValidNum(objName, minValue, maxValue)
{
    objID = GetObjID(objName);
    textValue = document.cmdForm.elements[objID].value;
    textValue = trim(textValue);
    if (textValue == null || textValue == "")
    {
        return 0;
    }
    if (!isValidNumber(textValue, ''))
    {
        return -1;
    }
    if (minValue != null && maxValue != null
        && (parseInt(textValue, 10) < minValue || parseInt(textValue, 10) > maxValue))
    {
        return -2;
    }
    return 1;
}

function isValidInt(objName, minValue, maxValue)
{
    objID = GetObjID(objName);
    textValue = document.cmdForm.elements[objID].value;
    // textValue = trim(textValue);
    if (textValue == null || textValue == "")
    {
        return 0;
    }
    if (!isValidNumber(textValue, "-"))
    {
        return -1;
    }
    if (minValue != null && maxValue != null
        && (parseInt(textValue, 10) < minValue || parseInt(textValue, 10) > maxValue))
    {
        return -2;
    }
    return 1;
}

/*
  minValue: ????????????
  maxValue: ????????????
    ????minValue??maxValue??null??????????????????
  ????????1: ??????0: ??????????-1: ??????????????????-2: ????????????
  ??????????????????????????????
*/
function isValidDecimal(objName, minValue, maxValue, decimals)
{
    objID = GetObjID(objName);
    textValue = document.cmdForm.elements[objID].value;

    if (textValue == null || textValue == "")
    {
        return 0;
    }
    else
    {
        var strLength = textValue.length;
        var serach;
        var count1 = 0;
        var count2 = 0;
        for (var i = 0; i < strLength; i++)
        {
            aChar = textValue.substring(i, i + 1);

            if (i == 0)
            {
                if (aChar == "-" && strLength == 1)
                {
                    return -1;
                }
                if (aChar == "-" && textValue.substring(1, 2) == ".")
                {
                    return -1;
                }
                if (aChar == ".")
                {
                    return -1;
                }
            }

            if (aChar == "-")
            {
                if (i != 0)
                {
                    return -1;
                }
                count1++;
            }
            else if (aChar == ".")
            {
                count2++;
            }
            else if (aChar < "0" ||  aChar > "9")
            {
                return -1;
            }

            if (i == strLength - 1 && aChar == ".")
            {
                return -1;
            }

            if (count1 > 1 || count2 > 1)
            {
                return -1;
            }
        }
    }

    if ((textValue.indexOf(".") != -1) && (textValue.length - textValue.indexOf(".") > decimals + 1))
    {
        return -1;
    }
    if (minValue != null && maxValue != null
        && (parseFloat(textValue) < minValue || parseFloat(textValue) > maxValue))
    {
        return -2;
    }
    return 1;
}

/*
  ??????????????
  ????????
        ???? minNum <= maxNum ??????true????????????false
  ????????????????????????????????????????
*/
function compareNum(objMin, objMax)
{
    objMinID = GetObjID(objMin);
    objMaxID = GetObjID(objMax);
    minNum = trim(document.cmdForm.elements[objMinID].value);
    maxNum = trim(document.cmdForm.elements[objMaxID].value);
    if (minNum == null || minNum == "" || maxNum == null || maxNum == "")
    {
        return true;
    }
    if (parseInt(minNum, 10) > parseInt(maxNum, 10))
    {
        return false;
    }
    else
    {
        return true;
    }
}

/*
  ????????????????16??????
*/
function isValidHEXNumber(objName)
{
    objID = GetObjID(objName);
    var newStr = document.cmdForm.elements[objID].value;
    var newLength = newStr.length;
    for (var i = 0; i < newLength; i ++)
    {
        aChar = newStr.substring(i, i+1);
        aChar = aChar.toUpperCase();
        if (!(aChar >= "A" &&  aChar <= "F" ||
            aChar >= "0" &&  aChar <= "9"))
        {
            return false;
        }
    }
    return true;
}

function checkall(groupName)
{
    var totalNum = parent.main.document.cmdForm.totalnum.value;
    for(i=0; i< totalNum; i++)
    {
        parent.main.document.getElementById(groupName+i).checked=true;
    }
}

function unselectall(groupName)
{
    var totalNum = parent.main.document.cmdForm.totalnum.value;
    for(i=0; i< totalNum; i++)
    {
        parent.main.document.getElementById(groupName+i).checked=false;
    }
}

function resetall()
{
    document.cmdForm.reset();
    cmdForm.action="main.jsp";
    cmdForm.target="main";
    return true;
}

function help(file)
{
    var swidth = window.screen.width;
    var sheight = window.screen.height;
    var str = "width=" + (swidth / 2) + ",height=" + sheight;
    helpWin = window.open(file ,"helpWin","scrollbars,resizable=yes,left=0,top=0," + str);
    helpWin.focus();
    return true;
}

//IP??????????????
function IPControl(name, index, errMsg)
{
    objName = name + index;
    objID = GetObjID(objName);
    value = document.cmdForm.elements[objID].value;
    var i;
    for (i = 0; i < value.length; i++)
    {
        aChar = value.substring(i, i + 1);
        if (aChar < "0" || aChar > "9")
        {
            break;
        }
    }
    if (i != value.length)
    {
        if (value.substring(i, i + 1) == "." && i != 0 && index < 4)
        {
            document.cmdForm.elements[objID].value = value.substring(0, i);
            nextObjName = name + (index + 1);
            nextObjID = GetObjID(nextObjName);
            document.cmdForm.elements[nextObjID].select();
            return true;
        }
        else if (value.substring(i, i + 1) == ".")
        {
            document.cmdForm.elements[objID].value = value.substring(0, i);
            return true;
        }
        else
        {
            alert(errMsg);
            document.cmdForm.elements[objID].value = value.substring(0, i);
            return false;
        }
    }

    if (value.length == 3)
    {
        if (parseInt(value, 10) < 0 || parseInt(value, 10) > 255)
        {
            alert(errMsg);
            document.cmdForm.elements[objID].select();
            return false;
        }
        if (index < 4)
        {
            nextObjName = name + (index + 1);
            nextObjID = GetObjID(nextObjName);
            document.cmdForm.elements[nextObjID].select();
        }
    }
    return true;
}

//????????????????????
function plusNumberOnchangeCheck(objName, errMsg)
{
    objID = GetObjID(objName);
    value = document.cmdForm.elements[objID].value;
    var i;
    for (i = 0; i < value.length; i++)
    {
        aChar = value.substring(i, i + 1);
        if (aChar < "0" || aChar > "9")
        {
            break;
        }
    }
    if (i != value.length)
    {
        alert(errMsg);
        document.cmdForm.elements[objID].value = value.substring(0, i);
        return false;
    }
    return true;
}

//??????????????????????
function numberOnchangeCheck(objName, minValue, maxValue, errMsg)
{
    objID = GetObjID(objName);
    value = document.cmdForm.elements[objID].value;
    var i;
    for (i = 0; i < value.length; i++)
    {
        aChar = value.substring(i, i + 1);
        if (aChar < "0" || aChar > "9")
        {
            if (aChar != "-" || i != 0)
            {
                break;
            }
        }
    }
    if (i != value.length)
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].value = value.substring(0, i);
        return false;
    }
    else if (maxValue >= 0 && parseInt(value, 10) > maxValue)
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].select();
        return false;
    }
    else if (minValue < 0 && parseInt(value, 10) < minValue)
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].select();
        return false;
    }
    else if (minValue >= 0 && value.substring(0, 1) == "-")
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].select();
        return false;
    }
    else if (maxValue < 0 && value.substring(0, 1) != "-")
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].select();
        return false;
    }
    
    if( maxValue < 0 )
	{
		if( parseInt(value, 10) < minValue )    // || parseInt(value, 10) > maxValue)
	    {
	   		alert(errMsg + " [" + minValue + ", " + maxValue + "]");
	        document.cmdForm.elements[objID].select();
	        return false;
	    }
	}
	else if(minValue >= 0)
	{
	  	if(parseInt(value, 10) > maxValue) // parseInt(value, 10) < minValue )
	    {
	   		alert(errMsg + " [" + minValue + ", " + maxValue + "]");
	        document.cmdForm.elements[objID].select();
	        return false;
	    }
	}
    
    return true;
}

// only for append info int input validate.
// 2006-1-13,by Gzh 
function numberOnchangeCheckIntForAppendInfo(objName, minValue, maxValue, errMsg)
{
    objID = GetObjID(objName);
    value = document.cmdForm.elements[objID].value;
    var i;
    for (i = 0; i < value.length; i++)
    {
        aChar = value.substring(i, i + 1);
        if (aChar < "0" || aChar > "9")
        {
            if (aChar != "-" || i != 0)
            {
                break;
            }
        }      
    }
    if (i != value.length)
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].value = value.substring(0, i);
        return false;
    }
    else if (maxValue >= 0 && parseInt(value, 10) > maxValue)
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].select();
        return false;
    }
    else if (minValue < 0 && parseInt(value, 10) < minValue)
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].select();
        return false;
    }
    else if (minValue >= 0 && value.substring(0, 1) == "-")
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].select();
        return false;
    }
    else if (maxValue < 0 && value.substring(0, 1) != "-")
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].select();
        return false;
    }
    
    if( maxValue < 0 ) 
	{
		if( parseInt(value, 10) < minValue )
	    {
	    	alert(errMsg + " [" + minValue + ", " + maxValue + "]");
	        document.cmdForm.elements[objID].select();
	        return false;
	    }
	}
	else if(minValue >= 0)
	{
	  	if(parseInt(value, 10) > maxValue )
	    {
    		alert(errMsg + " [" + minValue + ", " + maxValue + "]");
	        document.cmdForm.elements[objID].select();
	        return false;
	    }
	}
    
    return true;
}

//??????????????????????
function decimalOnchangeCheck(objName, minValue, maxValue, decimals, errMsg)
{
    objID = GetObjID(objName);
    value = document.cmdForm.elements[objID].value;
    var i, dotIndex = -1;
    for (i = 0; i < value.length; i++)
    {
        aChar = value.substring(i, i + 1);
        if (!(aChar >= "0" && aChar <= "9"
            || aChar == "-" || aChar == "."))
        {
            break;
        }
        else if (aChar == "-" && i > 0)
        {
            break;
        }
        else if (aChar == ".")
        {
            if (dotIndex != -1)
            {
                break;
            }
            else if (i == 0)
            {
                break;
            }
            else if (value.substring(i - 1, i) == "-")
            {
                break;
            }
            dotIndex = i;
        }
        else if (dotIndex != -1 && i - dotIndex > decimals)
        {
            break;
        }
    }
    if (i != value.length)
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].value = value.substring(0, i);
        return false;
    }
    else if (maxValue >= 0 && parseFloat(value) > maxValue)
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].select();
        return false;
    }
    else if (minValue < 0 && parseFloat(value) < minValue)
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].select();
        return false;
    }
    else if (minValue >= 0 && value.substring(0, 1) == "-")
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].select();
        return false;
    }
    else if (maxValue < 0 && value.substring(0, 1) != "-")
    {
        alert(errMsg + " [" + minValue + ", " + maxValue + "]");
        document.cmdForm.elements[objID].select();
        return false;
    }
    
    if( maxValue < 0 )
		{
			if( parseFloat(value) < minValue )    // || parseInt(value, 10) > maxValue)
	    {
	    		alert(errMsg + " [" + minValue + ", " + maxValue + "]");
	        document.cmdForm.elements[objID].select();
	        return false;
	    }
		}
	  else if(minValue >= 0)
	  {
	  	if(parseFloat(value) > maxValue) // parseInt(value, 10) < minValue )
	    {
	    		alert(errMsg + " [" + minValue + ", " + maxValue + "]");
	        document.cmdForm.elements[objID].select();
	        return false;
	    }
	  }
    
    return true;
}

//??????????????????????????????????????????
function stringOnchangeCheck(objName, errMsg)
{
    invalidText = "\"'<>&%/";
    objID = GetObjID(objName);
    value = document.cmdForm.elements[objID].value;
    var i;
    for (i = 0; i < value.length; i++)
    {
        aChar = value.substring(i, i + 1);
        if (-1 != invalidText.indexOf(aChar))
        {
            break;
        }
    }
    if (i != value.length)
    {
        alert(errMsg);
        document.cmdForm.elements[objID].value = value.substring(0, i);
        return false;
    }
    return true;
}

//??????????????????????????????????????????????????
function textOnchangeCheck(objName, errMsg, validChar)
{
    objID = GetObjID(objName);
    value = document.cmdForm.elements[objID].value;
    var i;
    for (i = 0; i < value.length; i++)
    {
        aChar = value.substring(i, i + 1);
        aChar = aChar.toUpperCase();
        search = validChar.indexOf(aChar);
        if (!((search != -1) ||
            (aChar >= "A" &&  aChar <= "Z") ||
            (aChar >= "0" &&  aChar <= "9")))
        {
            break;
        }
    }
    if (i != value.length)
    {
        alert(errMsg);
        document.cmdForm.elements[objID].value = value.substring(0, i);
        return false;
    }
    return true;
}

//????????????????????
function numberListOnchangeCheck(objName, errMsg, validChar)
{
    objID = GetObjID(objName);    
    value = document.cmdForm.elements[objID].value;
    var i;
    var lastChar;
    for (i = 0; i < value.length; i++)
    {
        aChar = value.substring(i, i + 1);
        search = validChar.indexOf(aChar);
        if (!((search != -1) || (aChar >= "0" &&  aChar <= "9")))
        {
            break;
        }
        else if (search != -1 && i == 0)
        {
            break;
        }
        else if (search != -1 && i > 0 && aChar == lastChar)
        {
            break;
        }
        lastChar = aChar;
    }
    if (i != value.length)
    {
        alert(errMsg);
        document.cmdForm.elements[objID].value = value.substring(0, i);
        return false;
    }
    return true;
}

//IP??????????????????????
function IPStringOnchangeCheck(objName)
{
    objID = GetObjID(objName);
    value = document.cmdForm.elements[objID].value;
    var i;
    var lastDotIndex = -1;
    var dotCounter = 0;
    for (i = 0; i < value.length; i++)
    {
        aChar = value.charAt(i);
        if (!((aChar == ".") || (aChar >= "0" &&  aChar <= "9")))
        {
            break;
        }

        if (aChar == ".")
        {
            //??????????"."??????"."??????????3??????????????????????"."
            if (dotCounter >= 3)
            {
                break;
            }
            if (i == 0 || value.charAt(i - 1) == ".")
            {
                break;
            }
            dotCounter++;
            lastDotIndex = i;
        }
        else
        {
            //????????????????3??
            if (i - lastDotIndex > 3)
            {
                break;
            }
            //????????????????????????????????????????255
            field = value.substring(lastDotIndex + 1, i + 1);
            if (parseInt(field, 10) > 255)
            {
                break;
            }
        }
    }
    if (i != value.length)
    {
        document.cmdForm.elements[objID].value = value.substring(0, i);
        return false;
    }
    return true;
}

function IPStringOnchangeCheckTemp(objName,strTemp)
{
    objID = GetObjID(objName);
    value = document.cmdForm.elements[objID].value;
    var i;
    var lastDotIndex = -1;
    var dotCounter = 0;
    for (i = 0; i < value.length; i++)
    {
        aChar = value.charAt(i);
        if (!((aChar == ".") || (aChar >= "0" &&  aChar <= "9")))
        {
            break;
        }

        if (aChar == ".")
        {
            //??????????"."??????"."??????????3??????????????????????"."
            if (dotCounter >= 3)
            {
                break;
            }
            if (i == 0 || value.charAt(i - 1) == ".")
            {
                break;
            }
            dotCounter++;
            lastDotIndex = i;
        }
        else
        {
            //????????????????3??
            if (i - lastDotIndex > 3)
            {
                break;
            }
            //????????????????????????????????????????255
            field = value.substring(lastDotIndex + 1, i + 1);
            if (parseInt(field, 10) > 255)
            {
                break;
            }
        }
    }
    if (i != value.length)
    {
        document.cmdForm.elements[objID].value = value.substring(0, i);
        alert(strTemp);
        return false;
    }
    return true;
}
//????????????????????????????
function HEXOnchangeCheck(objName, errMsg)
{
    objID = GetObjID(objName);
    value = document.cmdForm.elements[objID].value;
    var i;
    for (i = 0; i < value.length; i++)
    {
        aChar = value.substring(i, i + 1);
        aChar = aChar.toUpperCase();
        if (!(aChar >= "A" &&  aChar <= "F" ||
            aChar >= "0" &&  aChar <= "9"))
        {
            break;
        }
    }
    if (i != value.length)
    {
        alert(errMsg);
        document.cmdForm.elements[objID].value = value.substring(0, i);
        return false;
    }
    return true;
}

//MAC??????????????????????????
function MACStringOnchangeCheck(objName, errMsg)
{
    objID = GetObjID(objName);
    value = document.cmdForm.elements[objID].value;
    var separator;
    if (value.length > 2)
    {
        separator = value.charAt(2);
    }
    else
    {
        separator = ":";
    }
    if (separator != ":" && separator != "-")
    {
        separator = ":";
    }
    var i;
    for (i = 0; i < value.length; i++)
    {
        aChar = value.charAt(i);
        aChar = aChar.toUpperCase();
        if (!(aChar == separator
           || (aChar >= "0" &&  aChar <= "9")
           || (aChar >= "A" &&  aChar <= "F")))
        {
            break;
        }

        if (aChar == separator
           && (i != 2 && i != 5 && i != 8 && i != 11 && i != 14))
        {
            break;
        }
        if ((i == 2 || i == 5 || i == 8 || i == 11 || i == 14)
           && aChar != separator)
        {
            break;
        }
    }
    if (i != value.length)
    {
        if (errMsg != "")
        {
            alert(errMsg);
        }
        document.cmdForm.elements[objID].value = value.substring(0, i);
        return false;
    }
    return true;
}

//????MAC????????????????
//????????
//        0????????
//       -1????????
//       -2????????????????17????
//        1??????
function isValicMACAddress(objName)
{
    objID = GetObjID(objName);
    value = document.cmdForm.elements[objID].value;
    if (value == null || value == "")
    {
        return 0;
    }
    var separator = value.charAt(2);
    if (separator != ":" && separator != "-")
    {
        return -1;
    }
    var i;
    for (i = 0; i < value.length; i++)
    {
        aChar = value.charAt(i);
        aChar = aChar.toUpperCase();
        if (!(aChar == separator
           || (aChar >= "0" &&  aChar <= "9")
           || (aChar >= "A" &&  aChar <= "F")))
        {
            break;
        }

        if (aChar == separator
           && (i != 2 && i != 5 && i != 8 && i != 11 && i != 14))
        {
            break;
        }
        if ((i == 2 || i == 5 || i == 8 || i == 11 || i == 14)
           && aChar != separator)
        {
            break;
        }
    }
    if (i != value.length)
    {
        return -1;
    }
    else if (value.length != 17)
    {
        return -2;
    }
    return 1;
}

//??????????????????
//??????date1??date2???????????????????????? "yyyy-MM-dd"
//????????
//       -1??date1????date2
//        0????????????
//        1??date1????date2
function compDate(date1, date2)
{
//    var year1 = parseInt(date1.substring(0, 4), 10);
//    var month1 = parseInt(date1.substring(5, 7), 10);
//    var day1 = parseInt(date1.substring(8, 10), 10);
//    var year2 = parseInt(date2.substring(0, 4), 10);
//    var month2 = parseInt(date2.substring(5, 7), 10);
//    var day2 = parseInt(date2.substring(8, 10), 10);
//    if (year1 < year2
//        || year1 == year2 && month1 < month2
//        || year1 == year2 && month1 == month2 && day1 < day2)
//    {
//        return -1;
//    }
//    else if (year1 == year2 && month1 == month2 && day1 == day2)
//    {
//        return 0;
//    }
//    else
//    {
//        return 1;
//    }
      if (date1 < date2)
      {
          return -1;
      }
      else if (date1 == date2)
      {
          return 0;
      }
      else
      {
          return 1;
      }
}

//??????select??????????????????????????????????????????????
function unmodifiableSelect(name)
{
    var objID = GetObjID(name);
    var selectElem = document.cmdForm.elements[objID];
    var selectedIndex = selectElem.selectedIndex;
    for (i = selectElem.options.length - 1; i >= 0; i--)
    {
        if (i == selectedIndex)
        {
            continue;
        }
        selectElem.options.remove(i);
    }
}

//????????????????????????????????????????????????????2??29??????
function checkTime(p_year, p_month, p_day)
{
    var year = parseInt(p_year, 10);
    //????????????????"0"??????????????
    //????08??09????parseInt??????0????????????8??9
    if (p_month.length == 2 && p_month.charAt(0) == '0')
    {
        p_month = p_month.substr(1);
    }
    var month = parseInt(p_month, 10);
    if (p_day.length == 2 && p_day.charAt(0) == '0')
    {
        p_day = p_day.substr(1);
    }
    var day = parseInt(p_day, 10);
    switch (month)
    {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            return true;
        case 4:
        case 6:
        case 9:
        case 11:
            if (day < 31)
            {
                return true;
            }
            else
            {
                return false;
            }
        case 2:
            if (day == 29 && year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))
            {
                return true;
            }
            else if (day > 28)
            {
                return false;
            }
            else
            {
                return true;
            }
        default:
            return false;
    }
    return false;
}
//????????????????????????????
//????????????????id?????? <table id="test">????????getElementPosition("test")
function getElementPosition(elemID) 
{
    var offsetTrail = document.getElementById(elemID);
    var absolutLeft = 0;
    var absolutTop = 0;
    var absolutWidth=offsetTrail.offsetWidth;
    var absolutHeight=offsetTrail.offsetHeight;
    
    while (offsetTrail) 
    {
        absolutLeft += offsetTrail.offsetLeft;
        absolutTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    
    return {left:absolutLeft, top:absolutTop, width:absolutWidth, height:absolutHeight};
}

function checkIPv6(value) {
    value = value.replace(/(^\s*)|(\s*$)/g,""); 
    var result = false;
    var regHex = "([0-9a-fA-F]{1,4})";
    var regIPv6Full = "^(" + regHex + ":){7}" + regHex + "$";
    var regIPv6AbWithColon = "^(" + regHex + "(:|::)){0,6}" + regHex + "$";
    var regIPv6AbStartWithDoubleColon = "^(" + "::(" + regHex + ":){0,5}" + regHex + ")$";
    var regIPv6AbEndWithDoubleColon = "^((" + regHex + ":){0,5}" + regHex + "::)$";
    var regDoubleColon = "^(::)$";
    var regIPv6 = "^(" + regIPv6Full + ")|(" + regIPv6AbStartWithDoubleColon + ")|(" + regIPv6AbEndWithDoubleColon + ")|(" + regDoubleColon + ")|(" + regIPv6AbWithColon + ")$";       
    if (value.indexOf(":") != -1) {
        if (value.length <= 39) {
             var addressTemp = value;
             var doubleColon = 0;
             while (addressTemp.indexOf("::") != -1) {
                 addressTemp = addressTemp.substring(addressTemp.indexOf("::") + 2, addressTemp.length);
                 doubleColon++;
             }
             if (doubleColon <= 1) {
                 var re = new RegExp(regIPv6);
                 result = re.test(value);
             }
             
             var addressTempColon = value;
             var colon = 0;
             //count matching times by giving :
             while (addressTempColon.indexOf(":") != -1) {
                 addressTempColon = addressTempColon.substring(addressTempColon.indexOf(":") + 1, addressTempColon.length);
                 colon++;
              }
              //if not contains ::, matching times should be seven
              if (doubleColon == 0 && colon != 7) {
                  result = false;
              }
              //if contains ::, matching times should less than seven
              if (doubleColon == 1 && colon >= 7) {
              	  result = false;
              }
         }
     }      
     return result;
}