var time;
/*adjust data type*/
function isValidAscii(val)
{
    for ( var i = 0 ; i < val.length ; i++ )
    {
        var ch = val.charAt(i);
        if ( ch < ' ' || ch > '~' )
        {
            return ch;
        }
    }
    return '';
}

function isValidCfgStr(cfgName, val, len)
{
    if (isValidAscii(val) != '')         
    {            
        //alert(cfgName + ' has invalid character "' + isValidAscii(val) + '".')          
        return false;       
    }
   if (val.length > len)
   {
       //alert(cfgName + ' cannot exceed ' + len  + ' characters.');
       return false;
   }    
   return true;
}

function isHexaDigit(digit) {
   var hexVals = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
                           "A", "B", "C", "D", "E", "F", "a", "b", "c", "d", "e", "f");
   var len = hexVals.length;
   var i = 0;
   var ret = false;

   for ( i = 0; i < len; i++ )
      if ( digit == hexVals[i] ) break;

   if ( i < len )
      ret = true;

   return ret;
}

function isSafeStringExc(compareStr, UnsafeStr)
{
    for (var i = 0; i < compareStr.length; i++)
    {
        var c = compareStr.charAt(i);
        if (isValidAscii(c) != '')
        {
             return false;
        }
        else
        {
            if (UnsafeStr.indexOf(c) > -1)
            {
                return false;
            }
        }
    }
    return true;
}

function isSafeStringIn(compareStr, UnsafeStr)
{
    for (var i = 0; i < compareStr.length; i++)
    {
        var c = compareStr.charAt(i);
        if (isValidAscii(c) != '')
        {
             return false;
        }
        else
        {
            if (UnsafeStr.indexOf(c) == -1)
            {
                return false;
            }
        }
    }
    return true;
}

// Check if a name valid
function isValidName(name) 
{
   //return isSafeStringExc(name,'!"~<>;{}|%*\\^[]`+$,=\'#&: \t');
   return isSafeStringExc(name,'\\');
}

//a valid string do not contain '"' and each char is validAscII
function isValidString(name) 
{
    if (isValidAscii(name) == '')
    {
        return true;
    }
    else
    {
        return false;
    }
}

function isInteger(value)
{       
    if (/^(\+|-)?\d+$/.test(value)) 
    {
       return true;
    } 
    else 
    {
        return false;
    }
}

function isPlusInteger(value)
{
    if (isInteger(value) && parseInt(value) >= 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

function isFloat(value)
{       
    if (/^(\+|-)?\d+($|\.\d+$)/.test(value))
    {
       return true;
    } 
    else 
    {
       return false;
    }
}

function isValidCfgInteger(cfgName, val, start, end)
{
       if (isInteger(val) == false)
       {
           //alert(cfgName + ' is invalid, it must be digist.');
           return false;
       }
       var temp = parseInt(val);
       if (temp < start || temp > end)
       {
           //alert(cfgName + ' must be greater than ' + start.toString()
                // + ' and less than ' + end.toString() + '.');
           return false;
       }    
}

/*adjust the data of network format*/
function isValidIpAddress(address) {
   var i = 0;

   if ( address == '0.0.0.0' ||
        address == '255.255.255.255' )
      return false;

   var addrParts = address.split('.');
   if ( addrParts.length != 4 ) return false;
   for (i = 0; i < 4; i++) {
      if (isNaN(addrParts[i]) || addrParts[i] ==""
          || addrParts[i].charAt(0) == '+' ||  addrParts[i].charAt(0) == '-' 
          || (addrParts[i].charAt(0) == '0' && addrParts[i].length > 1))
         return false;
      if (addrParts[i].length > 3 || addrParts[i].length < 1)
      {
          return false;
      }
      if (!isInteger(addrParts[i]) || addrParts[i] < 0)
      {
          return false;
      }
      num = parseInt(addrParts[i]);
      if (i == 0 && num == 0)
      {
          return false;
      }
      if ( num < 0 || num > 255 )
         return false;
   }
   return true;
}

/*adjust the data of network format*/
function isValidIpAddressEx(address) 
{
    var i = 0;
	
    if (address == '0.0.0.0' || address == '255.255.255.255')
    {
        return false;
    }
	
    var addrParts = address.split('.');
    if (addrParts.length != 4) 
    {
        return false;
    }
	
    for (i = 0; i < 4; i++) 
    {
        if (isNaN(addrParts[i]) || addrParts[i] == ""
            || addrParts[i].charAt(0) == '+' ||  addrParts[i].charAt(0) == '-' 
            || (addrParts[i].charAt(0) == '0' && addrParts[i].length > 1))
        {
            return false;
        }
        if (addrParts[i].length > 3 || addrParts[i].length < 1)
        {
            return false;
        }
        if (!isInteger(addrParts[i]) || addrParts[i] < 0)
        {
            return false;
        }
		
        var num = parseInt(addrParts[i]);
        if (i == 0 && (num <= 0 || num >= 224 || num == 127))
        {
            return false;
        }
        if (i == 3 && (num <= 0 || num == 255))
        {
            return false;
        }
        if (num < 0 || num > 255)
        {
            return false;
        }
    }
    return true;
}

function isValidMaskAddress(address) {
   var i = 0;

   if ( address == '0.0.0.0' )
   {
       return false;
   }

   var addrParts = address.split('.');
   if ( addrParts.length != 4 ) return false;
   for (i = 0; i < 4; i++) {
      if (isNaN(addrParts[i]) || addrParts[i] ==""
          || addrParts[i].charAt(0) == '+' ||  addrParts[i].charAt(0) == '-' 
          || (addrParts[i].charAt(0) == '0' && addrParts[i].length > 1))
         return false;
      if (addrParts[i].length > 3 || addrParts[i].length < 1)
      {
          return false;
      }
      if (!isInteger(addrParts[i]) || addrParts[i] < 0)
      {
          return false;
      }
      num = parseInt(addrParts[i]);
      if (i == 0 && num == 0)
      {
          return false;
      }
      if ( num < 0 || num > 255 )
         return false;
   }
   return true;
}

function isBroadcastIp(ipAddress, subnetMask)
{
     var maskLenNum = 0;
     tmpMask = subnetMask.split('.');
     tmpIp = ipAddress.split('.');

     if((parseInt(tmpIp[0]) > 223) || ( 127 == parseInt(tmpIp[0])))
     {
         return true;
     }

     for(maskLenNum = 0; maskLenNum < 4; maskLenNum++)
     {
         if(parseInt(tmpMask[maskLenNum]) < 255)
            break;         
     }

     tmpNum0 = parseInt(tmpIp[maskLenNum]);
     tmpNum1 = 255 - parseInt(tmpMask[maskLenNum]);
     tmpNum2 = tmpNum0 & tmpNum1;
     if((tmpNum2 != 0) && (tmpNum2 != tmpNum1))
     {
         return false;
     }

     if(maskLenNum == 3)//subnet mask last not is 255: 255.255.255.xxx
     {
         return true;
     }
     else if(maskLenNum == 2)//255.255.xxx.xxx
     {
         if(((tmpIp[3] == 0)&&(tmpNum2 == 0))||
             ((tmpIp[3] == 255)&&(tmpNum2 == tmpNum1)))
         {
             return true;
         }
     }
     else if(maskLenNum == 1)//255.xxx.xxx.xxx
     {
         if(((tmpNum2 == 0)&&(tmpIp[3] == 0)&&(tmpIp[2] == 0)) ||
             ((tmpNum2 == tmpNum1)&&(tmpIp[3] == 255)&&(tmpIp[2] == 255)))
         {
             return true;
         }
     }
     else if(maskLenNum == 0)//xxx.xxx.xxx.xxx
     {
         if(((tmpNum2 == 0)&&(tmpIp[3] == 0)&&(tmpIp[2] == 0)&&(tmpIp[1] == 0)) ||
             ((tmpNum2 == tmpNum1)&&(tmpIp[3] == 255)&&(tmpIp[2] == 255) &&(tmpIp[1] == 255)))
         {
             return true;
         }
     }

     return false;
     
}

function isAbcIpAddress(address)
{
    if (isValidIpAddress(address) == false)
    {
        return false;
    }
    
    var addrParts = address.split('.');
    var num = 0;
 
    num = parseInt(addrParts[0]);
    if (num < 1 || num >= 224 || num == 127)
    {
        return false;
    }
    num = parseInt(addrParts[3]);
    if (num == 255)
    {
        return false;
    }
   
    return true;
}

function isHostIpWithSubnetMask(address, subnet)
{
    if (isAbcIpAddress(address) == false)
    {
        return false;
    }

    if (isValidSubnetMask(subnet) == false)
    {
        return false;
    }

    var addr = IpAddress2DecNum(address);

    var mask = IpAddress2DecNum(subnet);

    /* net section Ip */
    if (0 == (addr & (~mask)))
    {
        return false;
    }

    /* broadcast Ip */
    if (isBroadcastIp(address,subnet) == true)
    {
       return false;
    }   

    return true;
}

function isDeIpAddress(address)
{
    if (isValidIpAddress(address) == false)
    {
        return false;
    }
    
    var num = 0;
    var addrParts = address.split('.');
    if (addrParts.length != 4)
    {
        return false;
    }
    
    if (!isInteger(addrParts[0]) || addrParts[0] < 0 )
    {
        return false;
    }
    num = parseInt(addrParts[0]);
    if (!(num >= 224 && num <= 247))
    {
        return false;
    }

    for (var i = 1; i <= 3; i++)
    {
        if (!isInteger(addrParts[i]) || addrParts[i] < 0)
        {
            return false;
        }
        num = parseInt(addrParts[i]);
        if (!(num >= 0 && num <= 255))
        {
            return false;
        }
    }

    return true;
}

function isBroadcastIpAddress(address)
{
    if (isValidIpAddress(address) == false)
    {
        return false;
    }
    
    var addrParts = address.split('.');
    if (addrParts[3] == '255')
    {
        return true;
    }
    return false;
}

function isLoopIpAddress(address)
{
    if (isValidIpAddress(address) == false)
    {
        return false;
    }
    
    var addrParts = address.split('.');
    if (addrParts[0] == '127')
    {
        return true;
    }
    return false;
}

function ParseIpv6Array(str)
{
    var Num;
    var i,j;
    var finalAddrArray = new Array();
    var falseAddrArray = new Array();
    
    var addrArray = str.split(':');
    Num = addrArray.length;
    if (Num > 8)
    {
        return falseAddrArray;
    }

    for (i = 0; i < Num; i++)
    {
        if ((addrArray[i].length > 4) 
            || (addrArray[i].length < 1))
        {
            return falseAddrArray;
        }
        for (j = 0; j < addrArray[i].length; j++)
        {
            if ((addrArray[i].charAt(j) < '0')
                || (addrArray[i].charAt(j) > 'f')
                || ((addrArray[i].charAt(j) > '9') && 
                (addrArray[i].charAt(j) < 'a')))
            {
                return falseAddrArray;
            }
        }

        finalAddrArray[i] = '';
        for (j = 0; j < (4 - addrArray[i].length); j++)
        {
            finalAddrArray[i] += '0';
        }
        finalAddrArray[i] += addrArray[i];
    }

    return finalAddrArray;
}

function getFullIpv6Address(address)
{
    var c = '';
    var i = 0, j = 0, k = 0, n = 0;
    var startAddress = new Array();
    var endAddress = new Array();
    var finalAddress = '';
    var startNum = 0;
    var endNum = 0;
    var lowerAddress;
    var totalNum = 0;

    lowerAddress = address.toLowerCase();
 
    var addrParts = lowerAddress.split('::');
    if (addrParts.length == 2)
    {
        if (addrParts[0] != '')
        {
            startAddress = ParseIpv6Array(addrParts[0]);
            if (startAddress.length == 0)
            {
                return '';
            }
        }
        if (addrParts[1] != '')
        {
            endAddress = ParseIpv6Array(addrParts[1]);
            if (endAddress.length == 0)
            {
               return '';
            }
        }

        if (startAddress.length +  endAddress.length >= 8)
        {
            return '';
        }
    }
    else if (addrParts.length == 1)
    {
        startAddress = ParseIpv6Array(addrParts[0]);
        if (startAddress.length != 8)
        {
            return '';
        }
    }
    else
    {
        return '';
    }

    for (i = 0; i < startAddress.length; i++)
    {
        finalAddress += startAddress[i];
        if (i != 7)
        {
            finalAddress += ':';
        }
    }
    for (; i < 8 - endAddress.length; i++)
    {
        finalAddress += '0000';
        if (i != 7)
        {
            finalAddress += ':';
        }
    }
    for (; i < 8; i++)
    {
        finalAddress += endAddress[i - (8 - endAddress.length)];
        if (i != 7)
        {
            finalAddress += ':';
        }
    }

    return finalAddress;
    
}

function isIpv6Address(address)
{
    if (getFullIpv6Address(address) == '')
    {
        return false;
    }
    
    return true;
}

function isUnicastIpv6Address(address)
{
    var tempAddress = getFullIpv6Address(address);
    
    if ((tempAddress == '')
        || (tempAddress == '0000:0000:0000:0000:0000:0000:0000:0000')
        || (tempAddress == '0000:0000:0000:0000:0000:0000:0000:0001')
        || (tempAddress.substring(0, 2) == 'ff'))
    {
        return false;
    }
    
    return true;
}

function isGlobalIpv6Address(address)
{
    var tempAddress = getFullIpv6Address(address);
    
    if ((tempAddress == '')
        || (tempAddress == '0000:0000:0000:0000:0000:0000:0000:0000')
        || (tempAddress == '0000:0000:0000:0000:0000:0000:0000:0001')
        || (tempAddress.substring(0, 3) == 'fe8')
        || (tempAddress.substring(0, 3) == 'fe9')
        || (tempAddress.substring(0, 3) == 'fea')
        || (tempAddress.substring(0, 3) == 'feb')
        || (tempAddress.substring(0, 2) == 'ff'))
    {
        return false;
    }
    
    return true;
}

function parseHex(hexStr, base)
{
	var i = 0;
	x = 0;

	for (i = 0; i < hexStr.length; i++)
	{
		if (('0' <= hexStr.charAt(i)) && ('9' >= hexStr.charAt(i)))
		{
			x = x * base + (hexStr.charAt(i) - '0');
		}
		else if ((16 == base) && ('a' <=hexStr.charAt(i)) && ('f' >=hexStr.charAt(i)))
		{
			x = x * base + (hexStr.charAt(i) - 'a');
		}
		else if ((16 == base) && ('A' <= hexStr.charAt(i)) && ('F' >= hexStr.charAt(i)))
		{
			x = x * base + (hexStr.charAt(i) - 'A');
		}
		else
		{
			//alert("error format...please check the format of the [" + hexStr +']');
			return (-1);
		}
	}
	return x;
}



function CompareTwoAddress(addr1, plen1, addr2, plen2)
{
	var x = 0;
	var j = 0;
	var i = 0;

	var addr1Tmp = getFullIpv6Address(addr1);
	var addr2Tmp = getFullIpv6Address(addr2);

	if ((addr1Tmp == '') || (addr2Tmp == ''))
	{
		return false;
	}

	
	var addr1Comp = addr1Tmp.split(':');
	var addr2Comp = addr2Tmp.split(':');

	//alert('addr1: ' + addr1Comp + ' plen1: ' + plen1
	//	+ ' addr2: ' + addr2Comp + ' plen2: ' + plen2);
	
	if (plen1 != plen2)
	{
		return false;
	}
	
	x = (plen1 / 16);

	for (i = 0; i < 8; i++)
	{
		if ((i <= x) && ((i + 1) >= x))
		{
			x = i;
			break;
		}
	}


	for (i = 0; i < x; i++)
	{
		if (addr1Comp[i] != addr2Comp[i])
		{
			return false;
		}
	}
	
	j = plen1 % 16;
	if (0 == j)    
	{
		return true;
	}

	//alert('addr ' + x + ' ' + addr1Comp[x] + ' ' + addr2Comp[x] + ' j ' + j);

	x1 = parseHex(addr1Comp[x], 16);
	x2 = parseHex(addr2Comp[x], 16);

	if ((x1 ^ x2) >= (1 << (16 - j)))
	{
		return false;
	}

	return true;
}


function getLeftMostZeroBitPos(num) 
{
   var i = 0;
   var numArr = [128, 64, 32, 16, 8, 4, 2, 1];

   for ( i = 0; i < numArr.length; i++ )
      if ( (num & numArr[i]) == 0 )
         return i;

   return numArr.length;
}
function getRightMostOneBitPos(num) {
   var i = 0;
   var numArr = [1, 2, 4, 8, 16, 32, 64, 128];

   for ( i = 0; i < numArr.length; i++ )
      if ( ((num & numArr[i]) >> i) == 1 )
         return (numArr.length - i - 1);

   return -1;
}
function isValidSubnetMask(mask) {
   var i = 0, num = 0;
   var zeroBitPos = 0, oneBitPos = 0;
   var zeroBitExisted = false;

   if ( mask == '0.0.0.0' )
      return false;

   var maskParts = mask.split('.');
   if ( maskParts.length != 4 ) return false;

   for (i = 0; i < 4; i++) {
     
      if ( isNaN(maskParts[i]) == true || maskParts[i] == "" 
          || maskParts[i].charAt(0) == '+' ||  maskParts[i].charAt(0) == '-'
          || (maskParts[i].charAt(0) == '0'
            && maskParts[i].length > 1))
         return false;
      if (!isInteger(maskParts[i]) || maskParts[i] < 0)
      {
          return false;
      }
      num = parseInt(maskParts[i]);
      if ( num < 0 || num > 255 )
         return false;
      if ( zeroBitExisted == true && num != 0 )
         return false;
      zeroBitPos = getLeftMostZeroBitPos(num);
      oneBitPos = getRightMostOneBitPos(num);
      if ( zeroBitPos < oneBitPos )
         return false;
      if ( zeroBitPos < 8 )
         zeroBitExisted = true;
   }

   return true;
}

function isValidPort(port) 
{ 
   if (!isInteger(port) || port < 1 || port > 65535)
   {
       return false;
   }
   
   return true;
}


function isValidPortPair(StartPort,EndPort)
{
   if (!isValidPort(StartPort) || !isValidPort(EndPort))
   {
       return false;
   }

   if (parseInt(StartPort) <= parseInt(EndPort) )
           return false;      
   
   return true;
}

function isValidMacAddress(address) 
{
   var c = '';
   var i = 0, j = 0;

   if ( address.toLowerCase() == 'ff:ff:ff:ff:ff:ff' || address.toLowerCase() == '00:00:00:00:00:00')
   {
       return false;
   }

   addrParts = address.split(':');
   if ( addrParts.length != 6 ) return false;

   for (i = 0; i < 6; i++) {
      if ( addrParts[i] == '' )
         return false;

      if ( addrParts[i].length != 2)
      {
        return false;
      }

      if ( addrParts[i].length != 2)
      {
         return false;
      }

      for ( j = 0; j < addrParts[i].length; j++ ) {
         c = addrParts[i].toLowerCase().charAt(j);
         if ( (c >= '0' && c <= '9') ||
              (c >= 'a' && c <= 'f') )
            continue;
         else
            return false;
      }
   }

   return true;
}

function isNtwkSgmtIpAddress(address)
{
    if (isValidIpAddress(address) == false)
    {
        return false;
    }
    
    var addrParts = address.split('.');
    if (addrParts[3] == '0')
    {
        return true;
    }
    return false;
}

function isSameSubNet(Ip1, Mask1, Ip2, Mask2) 
{
   var count = 0;
   //debug('isSameSubNet');
   lan1a = Ip1.split('.');
   lan1m = Mask1.split('.');
   lan2a = Ip2.split('.');
   lan2m = Mask2.split('.');

   for (i = 0; i < 4; i++) 
   {
      l1a_n = parseInt(lan1a[i]);
      l1m_n = parseInt(lan1m[i]);
      l2a_n = parseInt(lan2a[i]);
      l2m_n = parseInt(lan2m[i]);
      if ((l1a_n & l1m_n) == (l2a_n & l2m_n))
         count++;
   }
   if (count == 4)
      return true;
   else
      return false;
}

/////////////////////////////////////////////////


function IpAddress2DecNum(address)
{
    if (isValidIpAddress(address) == false)
    {
        return -1;
    }
    var addrParts = address.split('.');
    var num = 0;
    for (i = 0; i < 4; i++)
    {
        num += parseInt(addrParts[i]) * Math.pow(256, 3 - i);
    }
    return num;
}

function isBlankCtrVal(val)
{
    if( val == '')
    {
        return false;
    }
    else
    {
        return true;
    }
}
//web Element 
/*get element by name or id*/
function getElById(sId)
{
    return getElement(sId);
}

function getElementById(sId)
{
    if (document.getElementById)
    {
        return document.getElementById(sId);    
    }
    else if (document.all)
    {
        // old IE
        return document.all(sId);
    }
    else if (document.layers)
    {
        // Netscape 4
        return document.layers[sId];
    }
    else
    {
        return null;
    }
}

/*getElByName*/
function getElementByName(sId)
{    // standard
    if (document.getElementsByName)
    {
        var element = document.getElementsByName(sId);
        
        if (element.length == 0)
        {
            return null;
        }
        else if (element.length == 1)
        {
            return     element[0];
        }
        
        return element;        
    }
}

function getElement(sId)
{
     var ele = getElementByName(sId); 
     if (ele == null)
     {
         return getElementById(sId);
     }
     return ele;
}

function getOptionIndex(sId,sValue)
{
    var selObj = getElement(sId);
    if (selObj == null)
    {
        return -1;
    }
    
    for (i = 0; i < selObj.length; i++)
    {
        if (selObj.options[i].value == sValue)
        {
            return i;
        }
    }
    
    return -1;
}

/*----------------getLength-----------------*/
function getValue(sId)
{
    var item;
    if (null == (item = getElement(sId)))
    {
        debug(sId + " is not existed" );
        return -1;
    }

    return item.value;
}
function getValueDft(sId)
{
    var type;
    if (-1 == (type = getType(sId)))
    {
        return -1;
    }
    else if (type == 'text' || type == 'TEXT')
    {
        return getValue(sId);    
    }
    else if (type == 'radio' || type == 'RADIO')
    {
        return getRadioVal(sId);
    }
    else if (type == 'checkbox' || type == 'CHECKBOX')
    {
        return getCheckVal(sId);
    }
    else
    {
        return getValue(sId);
    }
    
}
function getType(sId)
{   
    var item;
    if (null == (item = getElement(sId)))
    {
        debug(sId + "is not existed")
        return -1
    }
    if (item.length > 1)
    {
        return item[0].type
    }
    
    return item.type
    
}
/* Web page manipulation functions */
function setDisplay (sId, sh)
{
    var status;
    if (sh > 0) 
    {
        status = "";
    }
    else 
    {
        status = "none";
    }

    getElement(sId).style.display = status;
}

function setVisible(sId, sh)
{
    var status;
    if (sh > 0) 
    {
        status = "visible";
    }
    else 
    {
        status = "hidden"
    }
    
    getElement(sId).style.visibility = status;
}

function setSelect(sId, sValue)
{
    var item;
    if (null == (item = getElement(sId)))
    {
        debug(sId + " is not existed" );
        return false;
    }
    
    for (var i = 0; i < item.options.length; i++) 
    {
        if (item.options[i].value == sValue)
        {

            item.selectedIndex = i;
            return true;
        }
    }

    debug("the option which value is " + sValue + " is not existed in " + sId);
    return false;
}

function setText (sId, sValue)
{
    var item;
    if (null == (item = getElement(sId)))
    {
        debug(sId + " is not existed" );
        return false;
    }
    
    item.value = sValue;
    return true;
}


function setCheck(sId, value)
{
    var item;
    if (null == (item = getElement(sId)))
    {
        debug(sId + " is not existed" );
        return false;
    }
    
    if ( value == '1' ) 
    {    
       item.checked = true;
    }
    else
    {
       item.checked = false;
    }

    return true;
}

function setRadio(sId, sValue)
{
    var item;
    if (null == (item = getElement(sId)))
    {
        debug(sId + " is not existed" );
        return false;
    }
    
    for (i=0; i<item.length; i++)
    {
        if (item[i].value == sValue) 
        {
            item[i].checked = true;
            return true;
        }
    }

    debug("the option which value is " + sValue + " is not existed in " + sId);
    return false;
}

function setValueDft(sId, sValue)
{
    var type;
    if (-1 == (type = getType(sId)))
    {
        return -1;
    }
    else if (type == 'text' || type == 'TEXT')
    {
        setText (sId, sValue);    
    }
    else if (type == 'radio' || type == 'RADIO')
    {
        setRadio(sId, sValue);
    }
    else if (type == 'checkbox' || type == 'CHECKBOX')
    {
        setCheck(sId, sValue);
    }
    else
    {
        setSelect(sId, sValue);
    }
}
function setDisable(sId, flag)
{
    var item;
    if (null == (item = getElement(sId)))
    {
        debug(sId + " is not existed" );
        return false;
    }
    
    if ( flag == 1 || flag == '1' ) 
    {
         item.disabled = true;
    }
    else
    {
         item.disabled = false;
    }     

    return true;
}

function getCheckVal(sId)
{
    var item;
    if (null == (item = getElement(sId)))
    {
        debug(sId + " is not existed" );
        return -1;
    }
    if (item.checked == true)
    {
        return 1;
    }

    else
    {
        return 0;
    }
}

function getRadioVal(sId)
{
    var item;
    if (null == (item = getElement(sId)))
    {
        debug(sId + " is not existed" );
        return -1;
    }
//    debug(item.children[0])
    
    for (i = 0; i < item.length; i++)
    {
        if (item[i].checked == true)
        {
           return item[i].value;
        }
    }
    
    return -1;
}

function getSelectVal(sId)
{
   return getValue(sId);
}




/*-----select------*/
function addOption(sId,OptionName,OptionValue,OptionText)
{    
    var Param = document.createElement("option");
    Param.setAttribute('name',OptionName);
    Param.setAttribute('value',OptionValue);
    Param.innerHTML = OptionText;
    
    var selItem;
    if ((selItem = getElement(sId)) != null)
    {            
        selItem.appendChild(Param);        
        return Param;
    }
    else
    {
        debug(sId + " is not existed" );
        return null;
    }
}

function removeOption(sId,sValue)
{
    var selItem;
    if ((selItem = getElement(sId)) != null)
    {
        var index = getOptionIndex(sId,sValue);
        if (index >= 0)
        {

            selItem.removeChild(selItem.options[index]);
            return true;
        }
        else
        {
            debug("the option which value is " + sValue + " is not existed" );
            return false;
        }
    }
    
    debug(sId + " is not existed" );
    return false;
}

function removeAllOption(sId)
{
    var selItem;
    if ((selItem = getElement(sId)) != null)
    {
        selItem.length = 0;    
        return true;
    }
 
    debug(sId + " is not existed" );
    return false;
}

/////////////////////////////////////////////////////
// Load / submit functions
function webSubmitForm(sFormName, DomainNamePrefix)
{
    /*-----------------------internal method------------------------*/
    this.setPrefix = function(Prefix)
    {
        if (Prefix == null)
        {
            this.DomainNamePrefix = '.';
        }
        else
        {
            this.DomainNamePrefix = Prefix + '.';
        }
    }
    
    this.getDomainName = function(sName){
        if (this.DomainNamePrefix == '.')
        {
            return sName;
        }
        else
        {
            return this.DomainNamePrefix + sName;
        }
    }
    
    this.getNewSubmitForm = function()
    {
        var submitForm = document.createElement("FORM");
        document.body.appendChild(submitForm);
        submitForm.method = "POST";
        return submitForm;
    }
    
    this.createNewFormElement = function (elementName, elementValue){
        var newElement = document.createElement('INPUT');
        newElement.setAttribute('name',elementName);
        newElement.setAttribute('value',elementValue);
        newElement.setAttribute('type','hidden');
        return newElement;
    }
    
    /*---------------------------external method----------------------------*/
    this.addForm = function(sFormName,DomainNamePrefix){
        this.setPrefix(DomainNamePrefix);
        var srcForm = getElement(sFormName);
        if (srcForm != null && srcForm.length > 0 && this.oForm != null 
            && srcForm.style.display != 'none')
        {
            MakeCheckBoxValue(srcForm);
            
            for(i=0; i < srcForm.elements.length; i++)
            {  
                 var type = srcForm.elements[i].type;
                 if (type != 'button' && srcForm.elements[i].disabled == false)
                 {                
                     if (this.DomainNamePrefix != '.')
                     {
                         var ele = this.createNewFormElement(this.DomainNamePrefix 
                                                              + srcForm.elements[i].name,
                                                              srcForm.elements[i].value);    
                         this.oForm.appendChild(ele);
                     }       
                     else
                     {
                        var ele = this.createNewFormElement(srcForm.elements[i].name,
                                                             srcForm.elements[i].value
                                                              );
                        this.oForm.appendChild(ele);
                     }     
                 }
             }
        }
        else
        {
            this.status = false;
        }
        
        this.DomainNamePrefix = '.';
    }
    
    this.addDiv = function(sDivName,Prefix)
    {
        // this.setPrefix(DomainNamePrefix);
        if (Prefix == null)
        {
            Prefix = '';
        }
        else
        {
            Prefix += '.';
        }
        
        var srcDiv = getElement(sDivName);    
        if (srcDiv == null)
        {
            debug(sDivName + ' is not existed!')
            return;
        }
        if (srcDiv.style.display == 'none')
        {
            return;
        }
        //debug(srcDiv)
        var eleSelect = srcDiv.getElementsByTagName("select");
        if (eleSelect != null)
        {
            for (k = 0; k < eleSelect.length; k++)
            {
                if (eleSelect[k].disabled == false)
                {
                    this.addParameter(Prefix+eleSelect[k].name,eleSelect[k].value)
                }
            }
        }
        
        MakeCheckBoxValue(srcDiv);
        var eleInput = srcDiv.getElementsByTagName("input");
        if (eleInput != null)

        {
            for (k = 0; k < eleInput.length; k++)
            {
                if (eleInput[k].type != 'button' && eleInput[k].disabled == false)
                {
                    this.addParameter(Prefix+eleInput[k].name,eleInput[k].value)
                }
            }    
        }
    }
    
    this.addParameter = function(sName, sValue){

        var DomainName = this.getDomainName(sName);
        
        for(i=0; i < this.oForm.elements.length; i++) 
        {
            if(this.oForm.elements[i].name == DomainName)
            {
                this.oForm.elements[i].value = sValue;
                this.oForm.elements[i].disabled = false;
                return;
            }
        }
    
        if(i == this.oForm.elements.length) 
        {    
            var ele = this.createNewFormElement(DomainName,sValue);    
            this.oForm.appendChild(ele);
        }
    }
    
    this.delParameter = function(sName){
        var item;
        var DomainName = this.getDomainName(sName);
        len = this.oForm.elements.length;
        for(i=0; i < len; i++) 
        {
            if (this.oForm.elements[i].name == DomainName)
            {
                item = this.oForm.elements[i]
                item.parentNode.removeChild(item);
                return;
            }
        }
            
    }
        
    
    
    this.disableElement = function(sName){    
        var DomainName = this.getDomainName(sName);        
        for(i=0; i < this.oForm.elements.length; i++) 
        {
            if(this.oForm.elements[i].name == DomainName)
            {
                this.oForm.elements[i].disabled = true;
                return;
            }
        }
    }
    
    this.usingPrefix = function(Prefix){
         this.DomainNamePrefix = Prefix + '.';
    }
    
    this.endPrefix = function(){
         this.DomainNamePrefix = '.';
    }
    
    this.setMethod = function(sMethod) {
        if(sMethod.toUpperCase() == "GET")
            this.oForm.method = "GET";
        else
            this.oForm.method = "POST";
    };

    this.setAction = function(sUrl) {
        this.oForm.action = sUrl;
        var findlog =  sUrl.indexOf('login');
        if( findlog == -1)
        {
            var temp = sUrl.lastIndexOf('/') + 1;
            top.previousPage = sUrl.substr(temp);
        }
    }

    this.setTarget = function(sTarget) {
        this.oForm.target = sTarget;
    };

    this.submit = function(sURL, sMethod) {
        if( sURL != null && sURL != "" ) this.setAction(sURL);
        if( sMethod != null && sMethod!= "" ) this.setMethod(sMethod);
        
        if (this.status == true)
            this.oForm.submit();
    };
    
    this.status = true;


    /*--------------------------------excute by internal-------------------------*/
    this.setPrefix(DomainNamePrefix);
    this.oForm = this.getNewSubmitForm();
    if (sFormName != null && sFormName != '')
    {
        this.addForm(sFormName,this.DomainNamePrefix);
        //this.DomainNamePrefix = '.';
    }
}

function MakeCheckBoxValue(srcForm)
{
    var Inputs = srcForm.getElementsByTagName("input");
    for (var i = 0; i < Inputs.length; i++) 
    {
        if (Inputs[i].type == "checkbox")
        {
            var CheckBox = getElement(Inputs[i].name);
//debug(Inputs[i].name)
            if (CheckBox.checked == true)
            {
                CheckBox.value = 1;
            }
            else
            {
                CheckBox.value = 0;
            }
        }
        else if (Inputs[i].type == "radio")
        {
            var radio = getElement(Inputs[i].name);
            for (k = 0; k < radio.length; k++)
            {
                if (radio[k].checked == false)
                {
                    radio[k].disabled = true;
                }                
            }
        }
    }
}


function Submit(type)
{
    if ('' != top.errStrStr)
    {
        ClearErro();
    }
    top.errStrStr = '';
    top.errIdCtrlStr = '';
    showLoginMenu()
    var temp = CheckForm(type)
    if (top.errStrStr == '' && false != temp)
    {
        var Form = new webSubmitForm();
        AddSubmitParam(Form,type);        
        Form.submit();
    }
    else
    {
        if (top.errStrStr != '')
        {
            setDisplay('erroinfo', 1)
            setErrInfo();
        }
    }
}

function FW_Submit(type)
{
    if ('' != top.errStrStr)
    {
        ClearErro();
    }
    top.errStrStr = '';
    top.errIdCtrlStr = '';
    showLoginMenu()
    var temp = Sun_Submit();
    if (top.errStrStr != '' && false == temp)
    {
        setDisplay('erroinfo', 1)
        setErrInfo();
    }
}

////////////////////////////////////////////////////
function FinishLoad()
{
//    debug("FinishLoad");
}

function DoUnload()
{/*
    if (typeof(event) != 'undefined' && event != null)
    {
        if (event.clientY < 0||event.altKey)
        {//debug(2)
            //top.location.replace("/logout.cgi"); 
        }
    }
    */
}

function DoLogout()
{
    //document.cookie = 'Cookie=default;path=/';
}


function CreateXMLHttp()
{    
     var xmlhttp = null;
     var aVersions = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",      
                      "MSXML2.XMLHttp","Microsoft.XMLHttp"];

     if(window.XMLHttpRequest)
     { 
         try 
         {
             xmlhttp = new XMLHttpRequest();
         }
         catch (e)
         {
         }
     }
     else 
     {
         if(window.ActiveXObject)//IE6IE5
         {     
             for (var i=0; i<5; i++)   
             {
                  try
                  {          
                       xmlhttp = new ActiveXObject(aVersions[i]);
                       return xmlhttp;
                  }
                  catch (e)
                  {
                  }
             }
          }
     } 


     return xmlhttp;
}


function AjaxGetStatus(SendMethod, SendUrl, SendContent)
{
    uxmlhttp = CreateXMLHttp();
    uxmlhttp.onreadystatechange = StateChange;
    uxmlhttp.open(SendMethod, SendUrl, true);
    if (SendContent == 'null' || SendContent == 'undefined')
    {
        uxmlhttp.send(null);
    }
    else
    {
        uxmlhttp.send(SendContent);    
    }
}

/////////////////////////////////////
function AssociateParam(dest,src,name)
{
   var DestObj = eval(dest);
   var SrcObj = eval(src);
   var NameArray = name.split('|');
   
   for (j = 0; j < DestObj.length; j++)
   {
      if (DestObj[j] == null)
         break;
      for (i = 0; i < SrcObj.length; i++)
      {
        if (SrcObj[i] == null)
            break;
        if (DestObj[j].key.indexOf(SrcObj[i].key) > -1)
        {
            try 
            {
                eval(dest + '[' + j + ']' + '.' + 'Relating' + '='
                     + src + '[' + i + ']');
            }
            catch (e)
            {
            }
             for (k = 0; k < NameArray.length; k++)
            {   
                 if (NameArray[k] == '')
                 {
                     continue;
                 }
                 
                 try
                 {
                     eval(dest + '[' + j + ']' + '.' + NameArray[k] + '='
                       + src + '[' + i + ']' + '.' + NameArray[k]);
                 }
                 catch (e)
                 {
                 }
            }
            break;
         }
      }
   }
 
}

function toBreakWord(val,lineLength)
{
   var content = '';
   var index = 0;
   var len = val.length;
   
   while (len > lineLength)
   {
      content += val.substr(index,lineLength) + '<br>';   
      len -= lineLength;
      index += lineLength;
   }
   content += val.substr(index);    
   
   return content; 
}

function getBoolValue(param)
{
    var value = parseInt(param);
    if (isNaN(value) == true )
    {
       var LowerParam = param.toLowerCase();
       if (LowerParam == 'enable')
       {
          return 1;
       }
       else
       {
          return 0;
       }
    }
    else
    {
       return value;
    }
}

function debug(info)
{
    //alert(info);
}

function getDisplayText(val,lineLength)
{
   if (lineLength == null)
      lineLength = 20;
   var content = '';
   var index = 0;
   var len = val.length;
   
   while (len > lineLength)
   {
      content += val.substr(index,lineLength) + '\n';   
      len -= lineLength;
      index += lineLength;
   }
   content += val.substr(index);    
   
       return content; 
}

function isIpFormat(str)
{
    var addrParts = str.split('.');
    if (addrParts.length != 4 ) 
        return false;
    
    for(var i=0;i<addrParts.length;i++)
    {
        if (isPlusInteger(addrParts[i]) == false) 
        {
            return false;
        }
    }    
        
    return true;
}

function isValidDomain(str,maxLength)
{
    if(str.length=0||str.length>maxLength)
    {
        return false;
    }
    if( str.charAt(str.length-1)=='-' || str.charAt(0)=='-' )
    {
          return false;
    }
    return true;
}



function isValidIPDomain(ipStr,maxLength)
{
    if (isIpFormat(ipStr))
    {
        if (isAbcIpAddress(ipStr) == false)
        {
            return false;
        }
    }
    else 
    {
    
        if(isValidDomain(ipStr,maxLength) == false)
        {
            return false;            
        }
        
    }
    
    return true;    
}

function showLoginMenu()
{  
   //index=-1;
   if (typeof(top.logofrm.getElement) == 'undefined')
   {
       setTimeout("showLoginMenu()",100);       
   }
   else
   {
      
     //top.logofrm.getElement('setwizard').style.color = '#000000';
     top.logofrm.getElement('sethelp').style.color = '#000000'; 
    
   }
}



function GetmenuName(fileName)
{
    if (top.curUserType == 0)
    {
        for (var i = 0; i < AdminMenuName.length; i++)
        {
            if( fileName == AdminMenuName[i])
            {
                return i;    
            }
        }
    }
    else if (top.curUserType == 1)
    {
        for (var i = 0; i < UserMenuName.length; i++)
        {
            if( fileName == UserMenuName[i])
            {
                return i;    
            }
        }
    }
    else
    {
        return -1;
    }
}
function UpdateMenuByFileName(temp)
{
    if(top.curUserType == 0)
    {
        var menuThr = AdminMenuId[temp];
    }
    else if(top.curUserType == 1)
    {
        var menuThr = UserMenuId[temp];
    }
    return menuThr;                      
}
function ReLocation(cookie,menuName)
{

    var ThirdMenu = '';

    var initaddr = cookie.substr(cookie.indexOf('ThirdMenu') + 1);
    var initaddr = initaddr.substr(initaddr.indexOf('=') + 1);

    var index = initaddr.indexOf(';');



    if (index > -1)
    {
        var endaddr = initaddr.substr(index);
        var length = initaddr.length - endaddr.length;
        ThirdMenu = initaddr.substring(0,length);
    }
    else
    {
        ThirdMenu = initaddr; 
    }

    var menucookie = ThirdMenu.split('_');
    var menucoFir = menucookie[0] + '_' + menucookie[1];
    var menucoSec = menucoFir + '_' + menucookie[2];
    var menus = menuName.split('_');
    var menuFir = menus[0] + '_' + menus[1];
    var menuSec = menuFir + '_' + menus[2];
    top.g_thirdmenu = menuName;
    var cookie = "FirstMenu=" + menuFir + "; path=/";
    document.cookie = cookie;
    var cookie = "SecondMenu=" + menuSec + "; path=/";
    document.cookie = cookie;
    var cookie = "ThirdMenu=" + menuName + "; path=/";
    document.cookie = cookie;
    //showTableMenu(menuName,ThirdMenu);
    if (menuName != ThirdMenu)
    {
        if(menucoSec != menuSec)
        {
            top.menufrm.expandMenu(menuSec);
            top.menufrm.showTableMenu();
            showTableMenu(menuName,ThirdMenu,0);
            
        }
        else
        {
            showTableMenu(menuName,ThirdMenu,1);
        }
        //top.location.replace("/html/content.asp");
    }
    
}
function showTableMenu(menuName,ThirdMenu,type)
{
   if (typeof(top.tabfrm.makeBackTable) == 'undefined')
   {
       setTimeout("showTableMenu()",100);       
   }
   else
   {
       top.tabfrm.makeBackTable(menuName,ThirdMenu,type);
   }
}
function isNeedLogOut()
{   

    if (time == 1)
    {

        top.location.replace('/html/index.asp');
    }

    else if(time == 2)
    {
        top.contentfrm.location.replace('/html/msgerrcode.asp');
    }

}

function loadFrameHook()
{
    isNeedLogOut()
}
function ChangeHtmlToBlank(SrcStr)
{
    var DestStr = '';
	var re = /&nbsp;/g;
	DestStr = SrcStr.replace(re, ' ');
	return DestStr;
}
function ChangeBlankToHtml(SrcStr)
{
	var DestStr = '';
	var ulLength = SrcStr.length;
	var re = /\s/g;
	DestStr = SrcStr.replace(re, '&nbsp;');
	return DestStr;
}
function TransAcc(AccStr)
{
	if('' == AccStr)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
/*  Do not add function below here */
/*---------------------------------*/

AdminMenuName = new Array('deviceinfo.asp','internetstatus.asp','dslinfo.asp','umtsinfo.asp','internet.asp','ethenet.asp','wlaninfo.asp','wanumts.asp','wan.asp','dhcp.asp','wlan.asp','wlmacflt.asp','dsl.asp','route.asp','rip.asp','firewall.asp','alg.asp','dmz.asp','portmapping.asp','porttrigger.asp','ddns.asp','igmpsnooping.asp','qos.asp','qosclass.asp','ftp.asp','printerserver.asp','sntp.asp','tr069.asp','upnp.asp','pin.asp','dms.asp','ftpsetting.asp','account.asp','reset.asp','cfgfile.asp','firmware.asp','diagnose.asp','logcfg.asp','logview.asp','wizard.asp','help_content.html');
AdminMenuId = new Array('Admin_0_0_0','Admin_0_1_0','Admin_0_1_1','Admin_0_1_2','Admin_0_2_0','Admin_0_2_1','Admin_0_3_0','Admin_1_0_0','Admin_1_1_0','Admin_1_2_0','Admin_1_3_0','Admin_1_3_1','Admin_1_4_0','Admin_2_0_0','Admin_2_0_1','Admin_2_1_0','Admin_2_2_0','Admin_2_2_1','Admin_2_2_2','Admin_2_2_3','Admin_2_3_0','Admin_2_4_0','Admin_2_5_0','Admin_2_5_1','Admin_2_6_0','Admin_2_6_1','Admin_2_7_0','Admin_2_8_0','Admin_2_9_0','Admin_2_10_0','Admin_2_11_0','Admin_2_12_0','Admin_3_0_0','Admin_3_1_0','Admin_3_1_1','Admin_3_1_2','Admin_3_2_0','Admin_3_3_0','Admin_3_3_1','Admin_4_0_0','Admin_5_0_0');
UserMenuName = new Array('deviceinfo.asp','internetstatus.asp','dslinfo.asp','umtsinfo.asp','ethenet.asp','wlaninfo.asp','account.asp','reset.asp','diagnose.asp','logcfg.asp','logview.asp','help_content.html');
UserMenuId = new Array('User_0_0_0','User_0_1_0','User_0_1_1','User_0_1_2','User_0_2_0','User_0_3_0','User_1_0_0','User_1_1_0','User_1_2_0','User_1_3_0','User_1_3_1','User_2_0_0');
