//////////////////////////////////////////////////////////////////////////////////////////////
function isEmailAddr(email) //utility function :: validEMail
{
  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 a value for the "' + fieldLabel +'" field.');
    formField.focus();
    result = false;
  }
  
  return result;
}
//////////////////////////////////////////////////////////////////////////////////////////////
function validEmail(formField,fieldLabel,required)
{
  var result = true;

  if (required && !validRequired(formField,fieldLabel))
   	result = false;

  if (result && ((formField.value.length < 1) || !isEmailAddr(formField.value)) )
  {
    alert("Please enter a complete email address in the form: yourname@yourdomain.com");
    formField.focus();
    result = false;
  }
   
  return result;
}
//////////////////////////////////////////////////////////////////////////////////////////////
function validNum(formField, fieldLabel, required)
{
  var result = true;

  if (required && !validRequired(formField,fieldLabel))
    result = false;
  
   if (result)
   {
     var num = parseInt(formField.value);
     if (isNaN(num))
     {
       alert('Please enter a number for the "' + fieldLabel +'" field.');
      formField.focus();   
	  result = false;
    }
  } 
  
  return result;
}
//////////////////////////////////////////////////////////////////////////////////////////////
function validDate(formField, fieldLabel, required)
{
  var result = true;

  if (required && !validRequired(formField, fieldLabel))
    result = false;
  
   if (result)
   {
     var elems = formField.value.split("/");
     
     result = (elems.length == 2); // should be three components
     
     if (result)
     {
       //var day = parseInt(elems[0]);
        var month = parseInt(elems[0]);
       var year = parseInt(elems[1]);
      result = !isNaN(month) && (month > 0) && (month < 13) &&
               !isNaN(year) && (elems[1].length == 4);
     }
     
      if (!result)

     {
       alert('Please enter a date in the format MM/YYYY for the "' + fieldLabel +'" field.');
       formField.focus();    
    }
  } 
  
  return result;
}
//////////////////////////////////////////////////////////////////////////////////////////////
function validTime(formField, fieldLabel, required) 
{

	if (required && !validRequired(formField, fieldLabel))
		return false;
	
	// Checks if time is in HH:MM:SS AM/PM format.
	// The seconds and AM/PM are optional.
	var timeStr = formField.value
	var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;

	var matchArray = timeStr.match(timePat);

	if (matchArray == null)
	{
		alert('"' + fieldLabel + '" is not in a valid format.');
		formField.focus();
		return false;
	}
	hour = matchArray[1];
	minute = matchArray[2];
	second = matchArray[4];
	ampm = matchArray[6];

	if(second == "")
	{ 
		second = null; 
	}
	if(ampm == "")
	{
		ampm = null
	}

	if(hour < 0  || hour > 23)
	{
		alert(" Hour must be between 1 and 12. (or 0 and 23 for military time) ");
		formField.focus();
		return false;
	}
	if(hour <= 12 && ampm == null)
	{
		if (confirm(' Please indicate which time format you are using for "' + fieldLabel + '". \n OK = Standard Time \n CANCEL = Military Time'))
		{
			alert("You must specify AM or PM.");
			formField.focus();
			return false;
		}
	}
	if  (hour > 12 && ampm != null)
	{
		alert(" You can't specify AM or PM for military time. ");
		formField.focus();
		return false;
	}
	if(minute < 0 || minute > 59)
	{
		alert ("Minute must be between 0 and 59.");
		formField.focus();
		return false;
	}
	if(second != null && (second < 0 || second > 59))
	{
		alert ("Second must be between 0 and 59.");
		formField.focus();
		return false;
	}
	return true;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//PLACE THIS FUNCTION IN EACH PAGE ACCORDING TO FORM REQUIREMENT.
//////////////////////////////////////////////////////////////////////////////////////////////
/*
function validateForm(theForm)
{
  
  if (!validRequired(theForm.username,"User Name"))
    return false;

  if (!validEmail(theForm.email,"Email Address",true))
    return false;

  if (!validDate(theForm.birthdate,"Birth Date",true))
    return false;
 
  if (!IsValidTime(theForm.time))
    return false;
    	  
  return true;
}
*/
//////////////////////////////////////////////////////////////////////////////////////////////
function temp()
{
	alert("Hello World!")
}
//////////////////////////////////////////////////////////
function cardvalid(cardNumber,cardType)
{
  var isValid = false;
  var ccCheckRegExp = /[^\d ]/;
  isValid = !ccCheckRegExp.test(cardNumber);

//alert(cardNumber);
//alert(cardType);

  if (isValid)
  {
    var cardNumbersOnly = cardNumber.replace(/ /g,"");
    var cardNumberLength = cardNumbersOnly.length;
    var lengthIsValid = false;
    var prefixIsValid = false;
    var prefixRegExp;

    switch(cardType)
    {
      case "Master Card":
        lengthIsValid = (cardNumberLength == 16);
        prefixRegExp = /^5[1-5]/;
        break;

      case "Visa Card":
        lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
        prefixRegExp = /^4/;
        break;

      case "american Express":
        lengthIsValid = (cardNumberLength == 15);
        prefixRegExp = /^3(4|7)/;
        break;
		
	  case "Discover":
        lengthIsValid = (cardNumberLength == 16);
        prefixRegExp = /^6011/;
        break;	

      default:
        prefixRegExp = /^$/;
        alert("Card type not found");
    }

    prefixIsValid = prefixRegExp.test(cardNumbersOnly);
    isValid = prefixIsValid && lengthIsValid;
  }

  if (isValid)
  {
    var numberProduct;
    var numberProductDigitIndex;
    var checkSumTotal = 0;

    for (digitCounter = cardNumberLength - 1; 
      digitCounter >= 0; 
      digitCounter--)
    {
      checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
      digitCounter--;
      numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
      for (var productDigitCounter = 0;
        productDigitCounter < numberProduct.length; 
        productDigitCounter++)
      {
        checkSumTotal += 
          parseInt(numberProduct.charAt(productDigitCounter));
      }
    }

    isValid = (checkSumTotal % 10 == 0);
  }

  return isValid;
   //alert("your credit card number is not valid");
  //alert(isValid); 
}


