/*
Copyright (c) 2005-2007 TeamF1, Inc.
All rights reserved.
*/

function isFieldEmpty (fieldId, alertFlag, errMsg)
    {
    var obj = document.getElementById(fieldId);
    if (!obj || obj.disabled) return false;
    if (!obj.value.length)
         {
         if (alertFlag)
             alert (errMsg);
         obj.focus ();
         return true;
         }
    return false;
    }
function txtFieldArrayCheck (txtFieldIdArr)
    {
    for (var i = 0; i < txtFieldIdArr.length; ++i)
        {
         var result = false;
         var strArr = txtFieldIdArr[i].split(",");
         result = isFieldEmpty (strArr[0]);
         if (result)
             {
             if (strArr.length > 1)
                 alert (strArr[1]);
             return false;
             }
         }
    return true;
    }
function fieldLengthCheck (fieldId, minLen, maxLen, errMsg)
    {
    if (!fieldId) return false;
    var fldObj = document.getElementById(fieldId);
    if (!fldObj) return false;
    if (fldObj.disabled) return true;
    var strVal = fldObj.value;
    if (minLen && (strVal.length < minLen))
         {
         if (errMsg)
             alert (errMsg);
         fldObj.focus ();
         return false;
         }
    if (maxLen && (strVal.length > maxLen))
         {
         if (errMsg)
             alert (errMsg);
         fldObj.focus ();
         return false;
         }
    return true;
    }
function fieldValueCompare (fieldId1, fieldId2, minLen, maxLen, errMsg)
    {
    if (!fieldId1 || !fieldId2) return false;
    var fldObj1 = document.getElementById(fieldId1);
    var fldObj2 = document.getElementById(fieldId2);
    if (fldObj1.disabled && fldObj2.disabled) return true;
    var val1 = document.getElementById(fieldId1).value;
    if (minLen && maxLen)
        {
        if (val1.length < minLen || val1.length > maxLen)
            return false;
        }
    var val2 = document.getElementById(fieldId2).value;
    if (minLen && maxLen)
        {
        if (val2.length < minLen || val2.length > maxLen)
            return false;
        }
    if (val1 != val2)
        {
        if (errMsg)
            alert (errMsg);
        return false;
        }
    return true;
    }
function numericValueCheck (eventObj, exceptionCharStr)
{
    var charUniCode = eventObj.charCode ? eventObj.charCode : eventObj.keyCode;
    /* check for any exceptional characters */
    if (exceptionCharStr)
        {
        for (i=0; i < exceptionCharStr.length; ++i)
        if (exceptionCharStr.charCodeAt (i) == charUniCode)
        return true;
        }
    switch (charUniCode)
        {
        case 8:  /* back space */
        case 9:  /* tab */
        case 16: /* shift */
        /* case 37: */ /* left arrow */
        /* case 39: */ /* right arrow */
        /* case 46: */ /* delete - not supporting as in netscape it's char code is same as '.'*/ 
             return true;
        default:
             break;
        }
    /* allow back space */
    if (charUniCode < 48 || charUniCode > 57)
        return false;           
    return true;
}
function numericValueRangeCheck
    (srcObj, minLen, minLenErrStr, minVal, maxVal, errFlag, prefixErrStr, suffixErrStr)
    {
    if (!srcObj || srcObj.disabled) return true;
    var value = srcObj.value;
    /* check for minimum length if specified */
    if (minLen && (value.length < minLen))
            {
            if (minLenErrStr) alert (minLenErrStr);
	        srcObj.focus ();
            return false;
            }
    
    if ((minVal && (value < minVal)) ||
        (maxVal && (value > maxVal)))
        {
        if (errFlag)
            {
            var errStr = '';
            if (prefixErrStr) errStr += prefixErrStr;
            errStr += ' Please enter a value between ' +
                     minVal + " - " + maxVal + " ";
            if (suffixErrStr) errStr += suffixErrStr;
            alert (errStr);
            }
        srcObj.focus ();
        return false;
        }
    return true;
    }
function macAddrCheck (eventObj, srcObj)
    {
    if (!eventObj || !srcObj) return false;
    var charUniCode = eventObj.charCode ? eventObj.charCode : eventObj.keyCode;
    var macAddr = srcObj.value;
    var maxBytes = (macAddr.split (":")).length;
    if (maxBytes > 6)
        return false;
    
    macAddr = macAddr.lastIndexOf (":") == -1 ? macAddr :
                             macAddr.substring (macAddr.lastIndexOf (":")+1);
    if (macAddr.indexOf ("0x") == 0 || macAddr.indexOf ("0X") == 0)
        checkLen = 4;
    else
        checkLen = 2;
    switch (charUniCode)
         {
         case 58:    /* : */
             if (macAddr.length == 0 || macAddr.length < (checkLen - 1))
                 return false;
             if (maxBytes != 6)
                  return true;
             return false;
         case 88:    /* x */
         case 120:   /* X */
             if (macAddr.length > 1 || macAddr.indexOf ("0") != 0)
                 return false;
             return true;
         case 9:  /* tab key */
             if (maxBytes != 6)
                  return false;
         case 8:  /* back space */
         case 37: /* left arrow */
         case 39: /* right arrow */
         case 46: /* delete */
             return true;
         }
    if (macAddr.length == checkLen && charUniCode != 58)
         {
         if (maxBytes != 6)
              srcObj.value = srcObj.value + ":";
         return false;
         }
    
    /* allow a - f */
    if (charUniCode >= 97 && charUniCode <= 102)
         return true;
    /* allow A - F */
    if (charUniCode >= 65 && charUniCode <= 70)
         return true;
    if (charUniCode < 48 || charUniCode > 57)
         return false;          
    return true;
    }
function macFormatCheck (macAddr, errMsg)
     {
     if (!macAddr) return false;
     var macBytes = macAddr.split (":");
     if (macBytes.length != 6 || (macBytes[5].length == 0))
         {
         if (errMsg) alert (errMsg);
         return false;
         }
     return true;
     }
function macAddrVerify (eventObj, srcObj)
    {
    if (!eventObj || !srcObj)
         return false;
    var charUniCode = eventObj.charCode ? eventObj.charCode : eventObj.keyCode;
    /* process only 'tab' */
    if (eventObj.keyCode != 9)
         return true;
    if (!(macFormatCheck (srcObj.value, "invalid MAC address")))
         {
         srcObj.focus ();
         return false;         
         }
    return true;
    }
