/*
Copyright (c) 2005-2006 TeamF1, Inc.
All rights reserved.
*/
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, alertFlag, prefixStr, suffixStr)
    {
    if (!eventObj || !srcObj)
         return false;
    var charUniCode = eventObj.charCode ? eventObj.charCode : eventObj.keyCode;
    /* process only 'tab' */
    if (eventObj.keyCode != 9)
         return true;
    if (!(macAddrValidate (srcObj.value, alertFlag, prefixStr, suffixStr)))
         {
         srcObj.focus ();
         return false;         
         }
    return true;
    }
function macAddrValidate (macAddr, alertFlag, prefixStr, suffixStr)
    {
    var errStr = '';
    if (alertFlag)
         {
         if (prefixStr) errStr = prefixStr;
         errStr += " Please enter a value in the form XX:XX:XX:XX:XX:XX ";
         if (suffixStr) errStr += suffixStr;
         }
    return macFormatCheck (macAddr, errStr);
    }
