var sWorkStr=""

function isBlank( oField ) {
   var sWorkStr=""
   if( oField.type == "select" ) {
      if( oField.selectedIndex == -1 ) {
         sWorkStr = ""
      } else {
         sWorkStr = oField.options[oField.selectedIndex].value
      }
   } else {
       sWorkStr = oField.value
   }
   var iStrLen = sWorkStr.length
   var iCnt = 0
   for( iCnt = 0; iCnt < iStrLen; ++iCnt )
      if( sWorkStr.charAt( iCnt ) > " " ) return false
   return true
}

function validateEmail( oField ) {
   TrimSpacesRight(oField);
   var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
   var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; // valid
   var s = oField.value;
   if (!(!reg1.test(s) && reg2.test(s))) return false;
   if( s.indexOf(" ") != -1 || s.indexOf("<") != -1 || s.indexOf(">") != -1 || s.indexOf(",") != -1 || s.indexOf("\\") != -1 ) return false;
   return true;
}

function validateDate( oFldObj, iDateType, bSlashes ) {
   var iDay = ""
   var iMonth = ""
   var iYear = ""
   var bLeap = false
   var bError = false

   DaysInMonth = new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
   TrimSpacesRight( oFldObj )
   var inDates = oFldObj.value.split("/")
   var inDate = inDates[0]
   if( inDates.length > 1 ) inDate += inDates[1]
   if( inDates.length > 2 ) inDate += inDates[2]
   if( inDate.length == 5 || inDate.length == 7 ) {
      inDate = "0" + inDate
      sWorkStr = "0" + oFldObj.value
      oFldObj.value = sWorkStr
   }
   if( ( isNaN ( inDate )) ||
       ( iDateType < 3 && inDate.length != 6 ||
         iDateType > 2 && inDate.length != 8 )) {
         bError = true
   } else {
      switch( iDateType ) {
         case 0: // yymmdd
            iDay = eval(inDate.substring( 4, 6 ))
            iMonth = eval(inDate.substring( 2 , 4 ))
            iYear = eval("19" + inDate.substring( 0 , 2 ))
            break;
         case 1: // mmddyy
            iDay = eval( inDate.substring( 2, 4 ))
            iMonth = eval( inDate.substring( 0 , 2 ))
            iYear = eval("19" + inDate.substring( 4 , 6 ))
            break;
         case 2: //  ddmmyy
            iDay = eval( inDate.substring( 0, 2 ))
            iMonth = eval( inDate.substring( 2 , 4 ))
            iYear = eval( "19" + inDate.substring( 4 , 6 ))
            break;
         case 3: // yyyymmdd
            iDay = eval( inDate.substring( 6, 8 ))
            iMonth = eval( inDate.substring( 4 , 6 ))
            iYear = eval( inDate.substring( 0 , 4 ))
            break;
         case 4: // mmddyyyy
            iDay = eval(inDate.substring( 2, 4 ))
            iMonth = eval(inDate.substring( 0 , 2 ))
            iYear = eval(inDate.substring( 4 , 8 ))
            break;
         case 5: // ddmmyyyy
            iDay = eval( inDate.substring( 0, 2 ))
            iMonth = eval(inDate.substring( 2 , 4 ))
            iYear = eval(inDate.substring( 4 , 8 ))
            break;
      } // end switch
      if( iYear % 4 == 0 && ( iYear % 100 != 0 || iYear % 400 == 0 ))
         bLeap = true
      if( iMonth > 12 ) {
          bError = true
      } else {
          if( iDay > DaysInMonth[iMonth] ) {
              if( !( bLeap && iMonth == 2 && iDay == 29 ))
                  bError = true
          }
      }
      if( iDateType > 2 && iYear == 0 ) bError = true // 4 digit date of 0 entered
   }
   if( bError ) {
      return false // error
   }
   if( bSlashes ) { // reconstruct date using slashes
      switch( iDateType ) {
         case 0: // yymmdd
            oFldObj.value = inDate.substring( 0 , 2 ) + "/" +
                            inDate.substring( 2 , 4 ) + "/" +
                            inDate.substring( 4, 6 )
            break;
         case 1: // mmddyy
            oFldObj.value = inDate.substring( 0 , 2 ) + "/" +
                            inDate.substring( 2, 4 ) + "/" +
                            inDate.substring( 4 , 6 )
            break;
         case 2: //  ddmmyy
            oFldObj.value = inDate.substring( 0, 2 ) + "/" +
                            inDate.substring( 2 , 4 ) + "/" +
                            inDate.substring( 4 , 6 )
            break;
         case 3: // yyyymmdd
            oFldObj.value = inDate.substring( 0 , 4 ) + "/" +
                            inDate.substring( 4 , 6 ) + "/" +
                            inDate.substring( 6, 8 )
            break;
         case 4: // mmddyyyy
            oFldObj.value = inDate.substring( 0 , 2 ) + "/" +
                            inDate.substring( 2, 4 ) + "/" +
                            inDate.substring( 4 , 8 )
            break;
         case 5: // ddmmyyyy
            oFldObj.value = inDate.substring( 0, 2 ) + "/" +
                            inDate.substring( 2 , 4 ) + "/" +
                            inDate.substring( 4 , 8 )
            break;
      } // end switch
   }
   return true
}

function validateNum( oFldObj, iNbrBef, iNbrAft, bSign ) {
   var sCommaChar = ","
   var bError = false
   var iBef = 0
   var iAft = 0
   var bSgN = false
   var sNumIn = oFldObj.value
   var iCnt = 0
   var iStrLen = sNumIn.length
   for( iCnt = 0; iCnt < iStrLen; ++iCnt )
      if( sNumIn.charAt( iCnt ) > " " ) {
         if( sNumIn.charAt( iCnt ) == "$" ) {
             sNumIn = sNumIn.substr( iCnt + 1 )
         } else {
             sNumIn = sNumIn.substr( iCnt )
         }
         break
      }
   while ( iCnt = sNumIn.search( sCommaChar ) != -1 )
      sNumIn = sNumIn.replace( sCommaChar, "" )
   if( sNumIn.charAt( sNumIn.length - 1 ) == "-" ) {
      sWorkStr = "-" + sNumIn.substr( 0, sNumIn.length - 1 );
      sNumIn = sWorkStr
   }
   if( isNaN ( sNumIn )) {
      bError = true
   } else {
      var iNumVal = parseFloat( sNumIn )
      if( iNumVal < 0 && !bSign ) {
         bError = true
      } else {
         if( iNumVal < 0 ) iNumVal *= -1
         var sNumVal1 = iNumVal.toString(10)
         sNumVal2 = sNumVal1.split(".");
         if( sNumVal2.length == 1 ) sNumVal2[1]=""
         if( sNumVal2[0] == "0" ) sNumVal2[0]=""
         if( sNumVal2[0].length > iNbrBef ||
             sNumVal2[1].length > iNbrAft ) {
            bError = true
         }
      }
   }
   if( bError ) {
      return false
   }
   return true
}

function TrimSpacesRight( oFldObj ) {
   if( oFldObj.value.length == 0 ) return
   if( oFldObj.value.charAt( oFldObj.value.length - 1 ) > " " ) return
   sWorkStr = oFldObj.value
   var iIndex = sWorkStr.length
   while( oFldObj.value.charAt( iIndex - 1 ) == " " )
      sWorkStr = oFldObj.value.substr(0, iIndex-- - 1 )
   oFldObj.value = sWorkStr
}
function validateSKU( oField ) {
   TrimSpacesRight( oField );
	 oField.value = oField.value.toUpperCase();
   var skuReg = "^[S][0-9]{3}[B]{0,1}$";
   var regex = new RegExp(skuReg);
   return regex.test( oField.value );
}
