function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (formField.value == "")
	{
		alert('Please enter' +' '+ fieldLabel +'.');
		formField.focus();
		result = false;
	}
	
	return result;
}

function allDigits(str)
{
 return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset)
{
 var result = true;
 
 for (var i=0;i<str.length;i++)
  if (charset.indexOf(str.substr(i,1))<0)
  {
   result = false;
   break;
  }
 
 return result;
}



function isValidCreditCardNumber(formField,ccType,fieldLabel,required)
{
 var result = true;
  var ccNum = formField.value;

 if (required && !validRequired(formField,fieldLabel))
  result = false;
 
   if (result && (formField.value.length>0))
  { 
   if (!allDigits(ccNum))
   {
    alert('Please enter only numbers (no dashes or spaces) for ' + 
fieldLabel +'.');
   formField.focus();
   result = false;
  } 

  if (result)
   { 
    
    if (!LuhnCheck(ccNum) || !validateCCNum(ccType,ccNum))
    {
     alert('Please enter a valid credit card number.');
    formField.focus();
    result = false;
   } 
  }  
 } 
 
 return result;
}

function LuhnCheck(str) 
{
  var result = true;

  var sum = 0; 
  var mul = 1; 
  var strLen = str.length;
  
  for (i = 0; i < strLen; i++) 
  {
    var digit = str.substring(strLen-i-1,strLen-i);
    var tproduct = parseInt(digit ,10)*mul;
    if (tproduct >= 10)
      sum += (tproduct % 10) + 1;
    else
      sum += tproduct;
    if (mul == 1)
      mul++;
    else
      mul--;
  }
  if ((sum % 10) != 0)
    result = false;
    
  return result;
}

function validateCCNum(cardType,cardNum)
{
 var result = false;
 cardType = cardType.toUpperCase();
 
 var cardLen = cardNum.length;
 var firstdig = cardNum.substring(0,1);
 var seconddig = cardNum.substring(1,2);
 var first4digs = cardNum.substring(0,4);

 switch (cardType)
 {
  case "VISA":
   result = ((cardLen == 16) || (cardLen == 13)) && (firstdig == "4");
   break;
  case "AMEX":
   var validNums = "47";
   result = (cardLen == 15) && (firstdig == "3") &&
(validNums.indexOf(seconddig)>=0);
   break;
  case "MASTERCARD":
   var validNums = "12345";
   result = (cardLen == 16) && (firstdig == "5") &&
(validNums.indexOf(seconddig)>=0);
   break;
  case "DISCOVER":
   result = (cardLen == 16) && (first4digs == "6011");
   break;
  case "DINERS":
   var validNums = "068";
   result = (cardLen == 14) && (firstdig == "3") &&
(validNums.indexOf(seconddig)>=0);
   break;
 } return result;
}

function validCCForm(ccTypeField,ccNumField)
{
 var result = isValidCreditCardNumber(ccNumField,ccTypeField,"your credit card number",true) 
 return result;
}

function inValidCharSet(str,charset)
{
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}

function validEmail(formField,fieldLabel,required)
{
	var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
	{
		alert("Please enter a complete email address in the form: yourname@yourdomain.com");
		formField.focus();
		result = false;
	}
   
  return result;

}

function validateForm(unicontact)
{
	var theForm=document.unicontact
	
	if (!validRequired(theForm.Name,"your name"))
		return false;
	if (!validRequired(theForm.Phone,"your phone number"))
		return false;
}