﻿/****************************************************************************************/
/* Validation functions                                                                 */
/****************************************************************************************/
function IsAllowed(strValue, strAllowed)
{
	for (var i=0; i< strValue.length; i++)
	{
		if (strAllowed.indexOf(strValue.charAt(i)) == -1)
		{
			return false;
		}
	}
	return true;
}

function IsAlphabetic(strValue)
{
	if (IsEmpty(strValue)) 
	{
		return false;
	}
	
    if (IsWhitespace(strValue))
	{
		return false;
	}
	
	return IsAllowed(strValue, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
}

function IsAlphanumeric(strValue)
{
	if (IsEmpty(strValue)) 
	{
		return false;
	}
	
  if (IsWhitespace(strValue))
	{
		return false;
	}
	
	return IsAllowed(strValue, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890")
}

function IsCard(strValue)
{
   var intCheck = 0;
   var intDigit = 0;
   var blnEven = false;
   
   for (intCount = strValue.length - 1; intCount >= 0; intCount--)
   {
      var strChar = strValue.charAt (intCount);
      if (IsInteger (strChar))
      {
         var intDigit = parseInt(strChar, 10);
         if (blnEven)
         {
            if ((intDigit *= 2) > 9)
            {
               intDigit -= 9;
            }
         }
         intCheck += intDigit;
         blnEven = ! blnEven;
      }
      else if (strChar != ' ' && strChar != '.' && strChar != '-')
      {
         return false;
      }
   }
   return (intCheck % 10) == 0;
}

function IsEmail(strValue)
{ 
	if (IsEmpty(strValue)) 
	{
		return false;
	}
	
  if (IsWhitespace(strValue))
	{
		return false;
	}
    
	// there must be >= 1 character before @, so we
	// start looking at character position 1 
	// (i.e. second character)
	var i = 1;
	var sLength = strValue.length;

	// look for @
	while ((i < sLength) && (strValue.charAt(i) != "@"))
	{
		i++
	}

  if ((i >= sLength) || (strValue.charAt(i) != "@"))
	{
		return false;
	}
    else 
	{
		i += 2;
	}

	// look for .
	while ((i < sLength) && (strValue.charAt(i) != "."))
	{
		i++
	}

	// there must be at least one character after the .
	if ((i >= sLength - 1) || (strValue.charAt(i) != "."))
	{
		return false;
	}
  else
	{
		return true;
	}
}

function IsEmpty(strValue)
{
	return ((strValue == null) || (strValue.length == 0))
}

function IsInteger(strValue)
{
	if (IsEmpty(strValue)) 
	{
		return false;
	}
	
  if (IsWhitespace(strValue))
	{
		return false;
	}
	
	return IsAllowed(strValue, "1234567890")
}

function IsMoney(strValue)
{
	if (IsEmpty(strValue)) 
	{
		return false;
	}
	
  if (IsWhitespace(strValue))
	{
		return false;
	}
	
	return IsAllowed(strValue, "1234567890.")
}

function IsName(strValue)
{
	if (IsEmpty(strValue)) 
	{
		return false;
	}
	
  if (IsWhitespace(strValue))
	{
		return false;
	}
	
	return IsAllowed(strValue, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_ ()&!@., 1234567890")
}

function IsNumeric(strValue)
{
	if (IsEmpty(strValue)) 
	{
		return false;
	}
	
  if (IsWhitespace(strValue))
	{
		return false;
	}
	
	return IsAllowed(strValue, "1234567890.")
}

function IsPostcode(strValue)
{
	if (IsEmpty(strValue)) 
	{
		return false;
	}
	
  if (IsWhitespace(strValue))
	{
		return false;
	}
	
	return IsAllowed(strValue, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz _-1234567890")
}

function IsTelephone(strValue)
{
	if (IsEmpty(strValue)) 
	{
		return false;
	}
	
  if (IsWhitespace(strValue))
	{
		return false;
	}
	
	return IsAllowed(strValue, "1234567890 ")
}

function IsTime(strValue)
{
	var strTime = new String(strValue);
	var bolTime = false;
	
	strTime.toUpperCase();

	if (strTime.indexOf("PM",1) != -1 || strTime.indexOf("AM",1))
	{
		bolTime = true;
	}

	if (bolTime && strTime.indexOf(":",0) == 0)
	{
		bolTime = false;
	}

	var nColonPlace = strTime.indexOf(":",1);
	if (bolTime && ((parseInt(nColonPlace) + 5) < (strTime.length - 1) || (parseInt(nColonPlace) + 4) > (strTime.length - 1)))
	{
		bolTime = false;
	}

	return bolTime;
}

function IsWhitespace(strValue)
{
	var strWhitespace = " \t\n\r";
	var intCount;

  // Is strValue empty?
  if (IsEmpty(strValue))
	{
		return true;
	}

	// Search through string's characters one by one
	// until we find a non-whitespace character.
	// When we do, return false; if we don't, return true.
	for (intCount = 0; intCount < strValue.length; intCount++)
	{   
		// Check that current character isn't whitespace.
		var strChar = strValue.charAt(intCount);

		if (strWhitespace.indexOf(strChar) == -1)
		{
			return false;
		}
	}

	// All characters are whitespace.
	return true;
}

/****************************************************************************************/
/* Field functions                                                                      */
/****************************************************************************************/
function FieldAlphanumeric(objField)
{
	var strField = new String(objField.value);
	
	if (IsEmpty(strField))
	{
		alert(objField.title + " must be entered!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsWhitespace(strField))
	{
		alert(objField.title + " cannot be blank spaces!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsAlphanumeric(strField) == false)
	{
		alert(objField.title + " is not a valid entry!");
		objField.focus();
		objField.select();
		return false;
	}

	return true;
}

function FieldCard(objField)
{
	var strField = new String(objField.value);
	
	if (IsEmpty(strField))
	{
		alert(objField.title + " must be entered!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsWhitespace(strField))
	{
		alert(objField.title + " cannot be blank spaces!");
		objField.focus();
		objField.select();
		return false;
	}
    if (IsNumeric(strField) == false)
	{
		alert(objField.title + " is not a valid number!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsCard(strField) == false)
	{
		alert(objField.title + " is not a valid card number!");
		objField.focus();
		objField.select();
		return false;
	}

	return true;
}

function FieldDescription(objField)
{
	var strField = new String(objField.value);
	
	if (IsEmpty(strField))
	{
		alert(objField.title + " must be entered!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsWhitespace(strField))
	{
		alert(objField.title + " cannot be blank spaces!");
		objField.focus();
		objField.select();
		return false;
	}
	
	return true;
}

function FieldEmail(objField)
{
	var strField = new String(objField.value);
	
	if (IsEmpty(strField))
	{
		alert(objField.title + " must be entered!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsWhitespace(strField))
	{
		alert(objField.title + " cannot be blank spaces!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsEmail(strField) == false)
	{
		alert(objField.title + " is not a valid email address!");
		objField.focus();
		objField.select();
		return false;
	}

	return true;
}

function FieldMoney(objField)
{
	var strField = new String(objField.value);
	
	if (IsEmpty(strField))
	{
		alert(objField.title + " must be entered!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsWhitespace(strField))
	{
		alert(objField.title + " cannot be blank spaces!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsMoney(strField) == false)
	{
		alert(objField.title + " is not a valid monetary amount!");
		objField.focus();
		objField.select();
		return false;
	}

	return true;
}

function FieldName(objField)
{
	var strField = new String(objField.value);
	
	if (IsEmpty(strField))
	{
		alert(objField.title + " must be entered!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsWhitespace(strField))
	{
		alert(objField.title + " cannot be blank spaces!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsName(strField) == false)
	{
		alert(objField.title + " is not a valid name!");
		objField.focus();
		objField.select();
		return false;
	}

	return true;
}

function FieldNumeric(objField)
{
	var strField = new String(objField.value);
	
	if (IsEmpty(strField))
	{
		alert(objField.title + " must be entered!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsWhitespace(strField))
	{
		alert(objField.title + " cannot be blank spaces!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsNumeric(strField) == false)
	{
		alert(objField.title + " is not a valid number!");
		objField.focus();
		objField.select();
		return false;
	}

	return true;
}

function FieldPostcode(objField)
{
	var strField = new String(objField.value);
	
	if (IsEmpty(strField))
	{
		alert(objField.title + " must be entered!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsWhitespace(strField))
	{
		alert(objField.title + " cannot be blank spaces!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsPostcode(strField) == false)
	{
		alert(objField.title + " is not a valid postcode!");
		objField.focus();
		objField.select();
		return false;
	}

	return true;
}

function FieldTelephone(objField)
{
	var strField = new String(objField.value);
	
	if (IsEmpty(strField))
	{
		alert(objField.title + " must be entered!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsWhitespace(strField))
	{
		alert(objField.title + " cannot be blank spaces!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsTelephone(strField) == false)
	{
		alert(objField.title + " is not a valid telephone number!");
		objField.focus();
		objField.select();
		return false;
	}

	return true;
}

function FieldText(objField)
{
	var strField = new String(objField.value);
	
	if (IsEmpty(strField))
	{
		alert(objField.title + " must be entered!");
		objField.focus();
		objField.select();
		return false;
	}
	if (IsWhitespace(strField))
	{
		alert(objField.title + " cannot be blank spaces!");
		objField.focus();
		objField.select();
		return false;
	}

	return true;
}

/****************************************************************************************/
/* Keypress functions                                                                   */
/****************************************************************************************/
function KeypressReturn(strButton, event)
{
    var objButton = document.getElementById(strButton); 
    if (typeof bt == 'object')
    {
        if (document.all)
        {
            if (event.keyCode == 13)
            {
                event.returnValue= false ;
                event.cancel = true;
                objButton.click();
            }
        }

        else if (document.getElementById)
        {
            if (event.which == 13)
            {
                event.returnValue= false ;
                event.cancel = true;
                objButton.click();
            }
        }

        else if(document.layers)
        {
            if(event.which == 13)
            {
                event.returnValue = false;
                event.cancel = true;
                objButton.click();
            }
        }
    }
}

