// Global Functions

function radioVal(obj) {
 var retVal;
 for (var i=0;i<obj.length;i++) {
  if (obj[i].checked) {
   retVal = obj[i].value;
   break;
  }
 }
 return retVal;
}

function selectVal(obj) {
 var retVal;
 retVal = obj.options[obj.selectedIndex].value;
 return retVal;
}

function CheckVal(obj) {
 var retVal;
 if (obj.checked)
  retVal = obj.value;
 return retVal;
}

function setCheck(val, obj) {
 if (val)
  obj.checked = true;
}

function indexMatch(obj, toFind) {
 var retVal = -1
 for(var i = 0; i < obj.length; i++) if (obj[i].value == toFind) {
  retVal = i
  break;
 }
 return retVal;
}

function IsEmpty(szFieldName) {
   var i; var ch;
   TrimField(szFieldName);
   if (szFieldName.value == "") return true;
   if (parseInt(szFieldName.value.length) == 0) return true;
   for (i=0; i<parseInt(szFieldName.value.length); i++) {
     ch = szFieldName.value.charAt(i);
     if (ch != ' ' && ch != '\t')
       return false;
   }
   return true;
}

function IsNumeric(szFieldName) {
 var i; var IsNum; var ch;
 IsNum=true;
 TrimField(szFieldName);
 for(i=0; i<parseInt(szFieldName.value.length); i++) {
  ch=szFieldName.value.charAt(i);
  if ((ch >= "0") && (ch <= "9"))
   IsNum= true;
  else
   return false;
 }
 return IsNum;
}

function IsDecimal(szFieldName) {
 var i; var IsDec; var ch;
 IsDec=true;
 TrimField(szFieldName);
 for(i=0; i<parseInt(szFieldName.value.length); i++) {
  ch=szFieldName.value.charAt(i);
  if ((ch >= "0") && (ch <= "9"))
   IsDec= true;
  else if (((ch == ".") || (ch == ",")) && (i>0) && (i<parseInt(szFieldName.value.length)-1))
   IsDec = true;
  else
   return false;
 }
 return IsDec;
}

function IsTelcoNum(szFieldName) {
 var i; var IsNum; var ch;
 IsNum=true;
 TrimField(szFieldName);
 for (i=0; i<parseInt(szFieldName.value.length); i++) {
  ch=szFieldName.value.charAt(i);
  if ((ch >= "0") && (ch <= "9"))
   IsNum=true;
  else  
  {
   if ( ch=="+" || ch=="(" || ch==")" || ch=="-" || ch==" "  || ch=="/"  || ch=="\\")
    IsNum=true;
   else
    return false;
  } 
 }
 return IsNum;
}

function IsValidEmail(emailStr) {
TrimField(emailStr);
emailStr = emailStr.value;

  var checkTLD = 1;
  var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|www)$/;
  var emailPat = /^(.+)@(.+)$/;
  var specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
  var validChars= "\[^\\s" + specialChars + "\]";
  var quotedUser= "(\"[^\"]*\")";
  var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
  var atom = validChars + '+';
  var word = "(" + atom + "|" + quotedUser + ")";
  var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
  var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$");
  var matchArray = emailStr.match(emailPat);
  if (matchArray == null) {
    return false;
  }
  var user = matchArray[1];
  var domain = matchArray[2];
  for (i = 0; i < user.length; i++) {
    if (user.charCodeAt(i) > 127) {
      //report = errorMsg;
      return false;
    }
  }
  for (i = 0; i < domain.length; i++) {
    if (domain.charCodeAt(i) > 127) {
      //report = errorMsg;
      return false;
    }
  }
  if (user.match(userPat) == null) {
    //report = errorMsg;  
    return false;
  }
  var IPArray = domain.match(ipDomainPat);
  if (IPArray != null) {
    for (var i = 1; i <= 4; i++) {
      if (IPArray[i] > 255) {
        //report = errorMsg;
        return false;
      }
    }
    return true;
  }
  var atomPat = new RegExp("^" + atom + "$");
  var domArr = domain.split(".");
  var len = domArr.length;
  for (i = 0; i < len; i++) {
    if (domArr[i].search(atomPat) == -1) {
      //report = errorMsg;
      return false;
    }
  }
  if (checkTLD && domArr[domArr.length-1].length != 2 && domArr[domArr.length-1].search(knownDomsPat) == -1) {
    //report = errorMsg;
    return false;
  }
  if (len < 2) {
    //report = errorMsg;
    return false;
  }
  return true;
}


function TrimField(szFieldName) {
 var szNewStr;
 if (szFieldName.value != "") {  
  szNewStr = TrimString(szFieldName.value);
  szFieldName.value = szNewStr;
 }
}

function TrimString(szString)  {
 var i = 0; var j = 0;
 for (i=0; i<parseInt(szString.length); i++) {
            if (szString.charAt(i) != " ") {
                  for (j=parseInt(szString.length) - 1; j > i; j--) {
                        if (szString.charAt(j) != " ") {
                              break;
                        }
                  }
                  break;
            }
      }
      if (i > j)
            i = j;
      if (szString.length > 0 && szString.charAt(j) != " ")
            j++;
      return szString.substring(i, j);
}

function lessChar(szFieldName,minNo) {
 TrimField(szFieldName);
 if (szFieldName.value == "") return true;
 if (parseInt(szFieldName.value.length) <= minNo) return true;
 return false;
}

function bfnIsDate (day,month,year) 
{
    var today = new Date();
    year = ((!year) ? y2k(today.getYear()):year);
    month = ((!month) ? today.getMonth():month-1);
    if (!day) return false
    var test = new Date(year,month,day);
    if ( (y2k(test.getYear()) == year) &&
         (month == test.getMonth()) &&
         (day == test.getDate()) )
  return true;
    else
        return false
}

function y2k(number) { return (number < 1000) ? number + 1900 : number; }

function chkTextLength(szFieldName, maxlength) {
 if (szFieldName.value.length > maxlength) {
  alert("Text exceeds max. allowed length of " + maxlength + " characters.\n\nTotal no. of characters : " + szFieldName.value.length);
  szFieldName.focus();
  return false;
 }
 else
  return true;
}

function ClearField(fld, orgval) {
 if (TrimString(fld.value) == orgval)
  fld.value = "";
}

function ResetField(fld, orgval) {
 if (TrimString(fld.value) == "")
  fld.value = orgval;
}