
function IsValidDate(strDate)
{
  var strDateArray;
  var strDay;
  var strMonth;
  var strYear;
  var intday;
  var intMonth;
  var intYear;
  var booFound = false;
  var strSeparatorArray = new Array("-","/");
  var intElementNr;

  if (strDate.length < 1)
  {
    return true;
  }

  for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++)
  {
    if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1)
    {
      strDateArray = strDate.split(strSeparatorArray[intElementNr]);
      if (strDateArray.length != 3)
      {
        return false;
      }
      else
      {
        strDay = strDateArray[0];
        strMonth = strDateArray[1];
        strYear = strDateArray[2];
      }
      booFound = true;
    }
  }


  if (booFound == false)
  {
    return false;
  }

  if (strYear.length == 2)
  {
    strYear = '20' + strYear;
  }

  intday = parseInt(strDay, 10);
  if (isNaN(intday))
  {
    return false;
  }

  intMonth = parseInt(strMonth, 10);
  if (isNaN(intMonth))
  {
    return false;
  }

  intYear = parseInt(strYear, 10);
  if (isNaN(intYear))
  {
    return false;
  }

  if (intMonth>12 || intMonth<1)
  {
    return false;
  }

  if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1))
  {
    return false;
  }


  if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1))
  {
    return false;
  }

  if (intMonth == 2)
  {
    if (intday < 1)
    {
      return false;
    }

    if (LeapYear(intYear) == true)
    {
      if (intday > 29)
      {
        return false;
      }
    }
    else
    {
      if (intday > 28)
      {
        return false;
      }
    }
  }

  return true;
}



function LeapYear(intYear)
{
  return (intYear % 4 == 0 && (intYear % 100 != 0 || intYear % 400 == 0));
}




function IsValidInteger(strNumber)
{
  var valid = "0123456789"
  var temp;

  for (var i=0; i<strNumber.length; i++)
  {
    temp = "" + strNumber.substring(i, i+1);
    if (valid.indexOf(temp) == "-1")
    {
      if (i == 0)
      {
        if ((temp != "-") && (temp != "+"))
        {
        return false;
        }
      }
      else
      {
        return false;
      }
    }
  }
  return true;
}





function IsAlphaNumeric(strValue)
{
  var valid = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  var temp;

  for (var i=0; i<strValue.length; i++)
  {
    temp = "" + strValue.substring(i, i+1);
    if (valid.indexOf(temp) == "-1")
    {
        return false;
    }
  }
  return true;
}




function ContainsDot(strValue)
{

  var temp;

  if (strValue.indexOf(".") == "-1")
	
  {
    return false;
  }


  return true;
}







function IsValidNumber(strNumber)
{
  var valid = "0123456789."
  var temp;
  var ndots = 0;

  for (var i=0; i<strNumber.length; i++)
  {
    temp = "" + strNumber.substring(i, i+1);

    if (temp == ".")
    {
      ndots++;
      if (ndots > 1) return false;
    }
      


    if (valid.indexOf(temp) == "-1")
    {

      if (i == 0)
      {
        if ((temp != "-") && (temp != "+"))
        {
          return false;
        }
      }
      else
      {
        return false;
      }
    }
  }
  return true;
}



//function IsValidPostcode(postcode)
//{
// 
//  var alpha1 = "[abcdefghijklmnoprstuwyz]";                       // Character 1
//  var alpha2 = "[abcdefghklmnopqrstuvwxy]";                       // Character 2
//  var alpha3 = "[abcdefghjkstuw]";                                // Character 3
//  var alpha4 = "[abehmnprvwxy]";                                  // Character 4
//  var alpha5 = "[abdefghjlnpqrstuwxyz]";                          // Character 5
//  
//  // Array holds the regular expressions for the valid postcodes
//  var pcexp = new Array ();

//  // Expression for postcodes: AN NAA, ANN NAA, AAN NAA, and AANN NAA
//  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1,2})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
//  
//  // Expression for postcodes: ANA NAA
//  pcexp.push (new RegExp ("^(" + alpha1 + "{1}[0-9]{1}" + alpha3 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));

//  // Expression for postcodes: AANA  NAA
//  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1}" + alpha4 +"{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
//  
//  // Exception for the special postcode GIR 0AA
//  pcexp.push (/^(GIR)(\s*)(0AA)$/i);
//  
//  // Standard BFPO numbers
//  pcexp.push (/^(bfpo)(\s*)([0-9]{1,4})$/i);
//  
//  // c/o BFPO numbers
//  pcexp.push (/^(bfpo)(\s*)(c\/o\s*[0-9]{1,3})$/i);
//  
//  // Overseas Territories
//  pcexp.push (/^([A-Z]{4})(\s*)(1ZZ)$/i);

//  // Load up the string to check
//  var postCode = toCheck;

//  // Assume we're not going to find a valid postcode
//  var valid = false;
//  
//  // Check the string against the types of post codes
//  for ( var i=0; i<pcexp.length; i++) {
//    if (pcexp[i].test(postCode)) {
//    
//      // The post code is valid - split the post code into component parts
//      pcexp[i].exec(postCode);
//      
//      // Copy it back into the original string, converting it to uppercase and
//      // inserting a space between the inward and outward codes
//      postCode = RegExp.$1.toUpperCase() + " " + RegExp.$3.toUpperCase();
//      
//      // If it is a BFPO c/o type postcode, tidy up the "c/o" part
//      postCode = postCode.replace (/C\/O\s*/,"c/o ");
//      
//      // Load new postcode back into the form element
//      valid = true;
//      
//      // Remember that we have found that the code is valid and break from loop
//      break;
//    }
//  }
//  
//  // Return with either the reformatted valid postcode or the original invalid 
//  // postcode
//  if (valid) {return postCode;} else return false;
//  
//}