// JavaScript Document
function checkForInt(formField)
{
	if(formField.value.length > 0)
	{
		if(isNaN(formField.value))
		{
			alert('the value you entered must be a valid number.');
			formField.focus();
		}
	}
}


function verifyCC(cardNumber,expMonth,expYear)
{
	var SingleNumber;
	var CheckSum;
	var CheckSumTotal;
	var sCheckSumTotal = "";
	var Digit1;
	var Digit2;
	var DigitTotal;
	var DigitTotalXTen;
	var ValueToMod, OddMultipler, EvenMultipler;
	var cardNum;
	var cardLength;
	var cardFirstNumber;
	var count;
	
	if (!isNaN(cardNumber.value) && cardNumber.value.length >= 12)
	{
		cardNum = cardNumber.value;
		cardLength = cardNumber.value.length;
		cardFirstNumber = cardNum.substr(0,1);  
		if (cardLength == 16 && (cardFirstNumber == 6 || cardFirstNumber == 5 || cardFirstNumber == 4))
		//2121 2121 2121 2121 where x is the check sum
		{
			OddMultipler = 2;
			EvenMultipler = 1;
		}
		else
		//1212 1212 1212 1212x where x is the check sum
		//the 13 digit cards use a reverse matrix
		{
			OddMultipler = 1;
			EvenMultipler = 2;
		}
		
		for (count = 0; count < cardLength; count++)
		{
			SingleNumber = cardNum.substr(count,1);
			if ( (cardLength - 1)  == count )
			{	CheckSum = SingleNumber; }
			else{
				if ( (count+1) % 2 == 1)  //Odd Number
				{
					SingleNumber = SingleNumber * OddMultipler;
					if (SingleNumber > 9) { 
						SingleNumber = SingleNumber - 9
					}
				}
				else{ //Even Number
					SingleNumber = SingleNumber * EvenMultipler;
					if (SingleNumber > 9) {
						SingleNumber = SingleNumber - 9
					}
				}
				if (count == 0){
					CheckSumTotal = SingleNumber;
				}
				else{
					CheckSumTotal = CheckSumTotal + SingleNumber;
				}
			}
		}//end of while loop
		
	if (CheckSumTotal < 100){
		Digit1 = (CheckSumTotal / 10) - (CheckSumTotal % 10)/10;
		Digit2 = CheckSumTotal % 10; }
	else{
		Digit1 = (CheckSumTotal / 100) - (CheckSumTotal % 100)/100;
		Digit2 = CheckSumTotal % 100;}

	DigitTotal = Digit1 + Digit2;
	DigitTotalXTen = DigitTotal * 10;
	ValueToMod = DigitTotalXTen - CheckSumTotal;
	
	var dateObj = new Date();
	var month = dateObj.getMonth();
	var year = dateObj.getYear();
	
	if ( ValueToMod % 10 == CheckSum && ( expYear > year || ((expMonth >= parseInt(month)+1) && (expYear = year)))	){
		//alert("Card is okay");
		return true;
	}		
	else{
		if (ValueToMod % 10 != CheckSum)
		{
			alert("Card Number is invalid.");
			cardNumber.focus();
		}
		else if (expYear < year)
		{
			alert("Expiration year is invalid.");
			cardNumber.focus();
		}
		else
		{
			alert("Expiration month is invalid.");
			cardNumber.focus();
		}
		return false;
	}
	}
	else
	{
		alert("Card Number is invalid.");
		cardNumber.focus();
		return false;
	}
}


function verifyForm(formName)
{
	var submitForm=1,cardChecked=1;
	
	for(i=0;i<formName.elements.length;i++)
	{
		if(formName.elements[i].id == "req")
		{
			if(formName.elements[i].type == "text" || formName.elements[i].type == "textarea")
			{
				if(formName.elements[i].value == '')
				{
					submitForm = 0;
					formName.elements[i].style.background = "#d9eae4";
				}
				else
					formName.elements[i].style.background = "#FFFFFF";
			}
			if(formName.elements[i].type == "select-one")
			{	
				if(formName.elements[i].selectedIndex == 0)
				{
					submitForm = 0;
					formName.elements[i].style.background = "#d9eae4";
				}
				else
					formName.elements[i].style.background = "#FFFFFF";
			}
		}
		else
			formName.elements[i].style.background = "#FFFFFF";
		
	}
	if(formName.cardnumber != null && formName.cardnumber.value.length > 0)
	{
		if(verifyCC(formName.cardnumber,formName.expmonth.value,formName.expyear.value) == false)
			cardChecked = 0;
		if(formName.cardnumber.value.length > 0 && formName.cardtype.selectedIndex == 0)
		{
			alert("Please select a type of card to apply conference fees.");
			cardChecked = 0;
		}
	}		
	
	if(submitForm == 1 && cardChecked == 1)
		formName.submit();
	else if (submitForm == 0)
		alert("Please complete all required fields");
}

tempVal = '';
function resetVal(formField)
{	formField.value = tempVal;	}
function captureVal(formField)
{	tempVal = formField.value; 	}

function redirect(URLStr) { location = URLStr; }
