﻿var node_text = 3;	// DOM text node-type
var emptyString = /^\s*$/ ;
var global_valfield;	// retain valfield for timer thread

function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '');
}

function setFocusDelayed()
{
  global_valfield.focus();
}

function setfocus(toValidateControl)
{
  // save valfield in global variable so value retained when routine exits
  global_valfield = toValidateControl;
  setTimeout( 'setFocusDelayed()', 100 );
}

function commonCheck(errorMessageElementID)
{
  // Check if client-side validation is possible (maybe javascript is not enabled)
  if (!document.getElementById) 
    return false;
  // Check if the element to put the error message is available
  var elem = document.getElementById(errorMessageElementID);
  if (!elem.firstChild) 
    return false;  
  if (elem.firstChild.nodeType != node_text) 
    return false;
  return true;
}

function validateRequired(toValidateControlID, errorMessageElementID, failureMessage)
{
    // Check if the validation is possible
    if (!commonCheck(errorMessageElementID))
        return false;
    
    var retValue = true;
    var toValidateControl = document.forms[0].elements[toValidateControlID];
    // Check if the field exists
    if (!toValidateControl)
    {
        retValue = false;
        failureMessage = 'Control ' + toValidateControlID + ' not available!';
    }
    // Check if the field contains a non-empty value
    if (emptyString.test(trim(toValidateControl.value)))
    {
        retValue = false;
    }
    // Return the result and set the focus if not validated
    if (!retValue)
    {
        document.getElementById(errorMessageElementID).firstChild.data = failureMessage;
        setfocus(toValidateControl);
    }
    else
    {
        document.getElementById(errorMessageElementID).firstChild.data = '';
    }
    return retValue;
}

function validateRequiredNoFocus(toValidateControlID, errorMessageElementID, failureMessage)
{
    // Check if the validation is possible
    if (!commonCheck(errorMessageElementID))
        return false;
    
    var retValue = true;
    var toValidateControl = document.forms[0].elements[toValidateControlID];
    // Check if the field exists
    if (!toValidateControl)
    {
        retValue = false;
        failureMessage = 'Control ' + toValidateControlID + ' not available!';
    }
    // Check if the field contains a non-empty value
    if (emptyString.test(trim(toValidateControl.value)))
    {
        retValue = false;
    }
    // Return the result and set the focus if not validated
    if (!retValue)
    {
        document.getElementById(errorMessageElementID).firstChild.data = failureMessage;
    }
    else
    {
        document.getElementById(errorMessageElementID).firstChild.data = '';
    }
    return retValue;
}

function validateEmail(toValidateControlID, errorMessageElementID, failureMessage)
{
    // Check if the validation is possible
    if (!commonCheck(errorMessageElementID))
        return false;
    
    var retValue = true;
    var toValidateControl = document.forms[0].elements[toValidateControlID];
    // Check if the field exists
    if (!toValidateControl)
    {
        retValue = false;
        failureMessage = 'Control ' + toValidateControlID + ' not available!';
    }
    // Check if the value looks like an e-mail address
    var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/  ;
    if (!email.test(trim(toValidateControl.value))) 
    {
        retValue = false;
    }
    // Return the result and set the focus if not validated
    if (!retValue)
    {
        document.getElementById(errorMessageElementID).firstChild.data = failureMessage;
        setfocus(toValidateControl);
    }
    else
    {
        document.getElementById(errorMessageElementID).firstChild.data = '';
    }
    return retValue;
}

function validateURL(toValidateControlID, errorMessageElementID, failureMessage)
{
    // Check if the validation is possible
    if (!commonCheck(errorMessageElementID))
        return false;
    
    var retValue = true;
    var toValidateControl = document.forms[0].elements[toValidateControlID];
    // Check if the field exists
    if (!toValidateControl)
    {
        retValue = false;
        failureMessage = 'Control ' + toValidateControlID + ' not available!';
    }
    // Check if the value looks like an e-mail address
    var urlExp = new RegExp('^https?://');
    if (!urlExp.test(trim(toValidateControl.value))) 
    {
        retValue = false;
    }
    // Return the result and set the focus if not validated
    if (!retValue)
    {
        document.getElementById(errorMessageElementID).firstChild.data = failureMessage;
        setfocus(toValidateControl);
    }
    else
    {
        document.getElementById(errorMessageElementID).firstChild.data = '';
    }
    return retValue;
}

function validateURLNoMessage(toValidateControlID)
{
    var retValue = true;
    var toValidateControl = document.forms[0].elements[toValidateControlID];
    // Check if the field exists
    if (!toValidateControl)
    {
        retValue = false;
    }
    // Check if the value looks like an e-mail address
    var urlExp = new RegExp('^https?://');
    if (!urlExp.test(trim(toValidateControl.value))) 
    {
        retValue = false;
    }
    return retValue;
}

function validateEmailAddress(emailAddress)
{
    var retValue = true;
    // Check if the value looks like an e-mail address
    var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/  ;
    if (!email.test(trim(emailAddress))) 
    {
        retValue = false;
    }
    return retValue;
}

function validateRequiredNoMessage(toValidateControlID)
{
    var retValue = true;
    var toValidateControl = document.forms[0].elements[toValidateControlID];
    // Check if the field exists
    if (!toValidateControl)
    {
        retValue = false;
    }
    // Check if the field contains a non-empty value
    if (emptyString.test(trim(toValidateControl.value)))
    {
        retValue = false;
    }
    return retValue;
}

function IsNumeric(strString)
//  check for valid numeric strings	
{
   var strValidChars = "0123456789.,-";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
   {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
      {
         blnResult = false;
      }
   }
   return blnResult;
}

function validateNumericNoMessage(toValidateControlID)
{
    var retValue = true;
    var toValidateControl = document.forms[0].elements[toValidateControlID];
    // Check if the field exists
    if (!toValidateControl)
    {
        retValue = false;
    }
    // Check if the field contains a non-empty value
    if (emptyString.test(trim(toValidateControl.value)))
    {
        retValue = false;
    }
    // Check if the field contains a numeric value
    retValue = IsNumeric(toValidateControl.value);
    return retValue;
}
