var emailfilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

var firstname_warning_confirmed = false;
var lastname_warning_confirmed = false;
var ra_firstname_warning_confirmed = false;
var ra_lastname_warning_confirmed = false;

var date_future_confirmed = false;
var date_christmas_confirmed = false;
var date_easter_confirmed = false;

var holythursdaydate = new Date();
var easterdate = new Date();

function showCVV () {
	var popupWin = window.open('/verificationfield.asp', 'Help', 'width=360,height=360,left=100,top=100');
}

function imagePopUp (section, image) {
	var popupWin = window.open('/view_image.asp?section='+section+'&image='+image,'Image','resizable=yes,status=no,menubar=no,toolbar=no,scrollbars=yes,width=800,height=600,top=60,left=60');
	return false;
}
	
function isDigit(num) {
	if (num.length = 0) { 
		return false;
	}
	var string = "1234567890";
	if (string.indexOf(num) != -1) {
		return true;
	}
	return false;
}

function isNumeric(string) {
	if (string.length = 0) {
		return false;
	}
	var decimalcount = 0;
	for (var i = 0; i < string.length; i++) {
		if (!isDigit(string.charAt(i))) {
			if (string.charAt(i) == '.') {
				decimalcount++;
				if (decimalcount > 1) {
					return false;
				}
			} else {
				return false;
			}
		}
	}
	return true;
}

function isInteger(string) {
	if (string.length = 0) {
		return false;
	}
	for (var i = 0; i < string.length; i++) {
		if (!isDigit(string.charAt(i))) {
			return false;
		}
	}
	return true;
}

function returnRadioValue (form,radio) {
	var radios = document.forms[form].elements[radio].length;
	
	if (radios == undefined) {
		if (document.forms[form].elements[radio])
			return document.forms[form].elements[radio].value;
	} else {
		for (var i = 0; i < radios; i++)
			if (document.forms[form].elements[radio][i].checked)
				return document.forms[form].elements[radio][i].value;
	}
	return null;
}

function EasterWeek(argYear) {
    var C = Math.floor(argYear/100);
    var N = argYear - 19*Math.floor(argYear/19);
    var K = Math.floor((C - 17)/25);
    var I = C - Math.floor(C/4) - Math.floor((C - K)/3) + 19*N + 15;
    I = I - 30*Math.floor((I/30));
    I = I - Math.floor(I/28)*(1 - Math.floor(I/28)*Math.floor(29/(I + 1))*Math.floor((21 - N)/11));
    var J = argYear + Math.floor(argYear/4) + I + 2 - C + Math.floor(C/4);
    J = J - 7*Math.floor(J/7);
    var L = I - J;
    var M = 3 + Math.floor((L + 40)/44);
    var D = L + 28 - 31*Math.floor(M/4);
	
	if (M < 10) {M = '0' + M;}
	if (D < 10) {D = '0' + D;}
	
	holythursdaydate.setFullYear(argYear, M - 1, D - 3);
	holythursdaydate.setHours(0,0,0,0);
	easterdate.setFullYear(argYear, M - 1, D);
	easterdate.setHours(0,0,0,0);
}

function daysInFebruary (year) {
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysInMonth(month, year) {
	var days = 31;
	if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) {
		days = 30;
	}
	if (month == 2) {
		days = daysInFebruary(year);
	}
	return days;
}
	

function DaysArray(months, year) {
	for (var i = 1; i <= months; i++) {
		this[i] = DaysInMonth(i);
	}
	return this;
}

function isDate(argMonth,argDay,argYear){
	if (isNaN(argMonth) || isNaN(argDay) || isNaN(argYear))
		return false;

	var daysInMonth = DaysArray(12, argYear);
	var strMonth = argMonth.toString();
	var strDay = argDay.toString();
	var strYear = argYear.toString();


	if (strDay.charAt(0) == "0" && strDay.length > 1) {
		strDay = strDay.substring(1);
	}
	if (strMonth.charAt(0) == "0" && strMonth.length > 1) {
		strMonth = strMonth.substring(1);
	}
	for (var i = 1; i <= 3; i++) {
		if (strYear.charAt(0) == "0" && strYear.length > 1) {
			strYear = strYear.substring(1);
		}
	}
	
	month = parseInt(strMonth);
	day = parseInt(strDay);
	year = parseInt(strYear);

	if (strMonth.length < 1 || month < 1 || month > 12){
		return false;
	}
	if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
		return false;
	}
	return true;
}

function populate_for () {
	var textfor = document.getElementById('for');
	
	if (textfor.value == '') {
		textfor.value = 'Name of Person or Intention *';
		textfor.blur();
	}
	return true;
}

function clear_for () {
	var textfor = document.getElementById('for');
	
	if (textfor.value == 'Name of Person or Intention *') {
		textfor.value = '';
		textfor.focus();
	}
	return true;
}

function FormatCurrency(num) {
	num = parseInt((num + .005) * 100);
	num = num / 100;
	snum = new String(num);
	if (snum.indexOf('.') < 0) {
		snum += '.00';
	}
	if (snum.indexOf('.') == (snum.length - 2)) {
		snum += '0';
	}
	return ('$' + snum);
}

function validateAddress () {
	var firstname = document.getElementById('firstname');
	var lastname = document.getElementById('lastname');
	var address1 = document.getElementById('address1');
	var city = document.getElementById('city');
	var state = document.getElementById('state');
	var postal = document.getElementById('postal');
	var country = document.getElementById('country');
	
	if (firstname.value == '') {
		alert('Please enter the First Name.');
		firstname.focus();
		return false;
	}
	if ((firstname.value.substring(0,1) != firstname.value.substring(0,1).toUpperCase()) && (!firstname_warning_confirmed)) {
		alert('Warning:\nThe First name is not capitalized.');
		firstname.focus();
		firstname_warning_confirmed = true;
		return false;
	}
	if (lastname.value == '') {
		alert('Please enter the Last name.');
		lastname.focus();
		return false;
	}
	if ((lastname.value.substring(0,1) != lastname.value.substring(0,1).toUpperCase()) && (!lastname_warning_confirmed)) {
		alert('Warning:\nThe Last name is not capitalized.');
		lastname.focus();
		lastname_warning_confirmed = true;
		return false;
	}
	if (address1.value == '') {
		alert('Please enter the street address.');
		address1.focus();
		return false;
	}
	if (city.value == '') {
		alert('Please enter the City.');
		city.focus();
		return false;
	}
	if ((country[country.selectedIndex].value == 'US') || (country[country.selectedIndex].value == 'CA')) {
		if (state[state.selectedIndex].value == '') {
			alert('Please select the State/Province.');
			state.focus();
			return false;
		}
		if (postal.value == '') {
			alert('Please enter the Zip/Postal Code.');
			postal.focus();
			return false;
		}
	}
	if (country[country.selectedIndex].value == '') {
		alert('Please select the Country.');
		country.focus();
		return false;
	}
	return true;
}

function validateReturnAddress (form) {
	var ra_firstname = document.getElementById('ra_firstname');
	var ra_lastname = document.getElementById('ra_lastname');
	var ra_address1 = document.getElementById('ra_address1');
	var ra_city = document.getElementById('ra_city');
	var ra_state = document.getElementById('ra_state');
	var ra_postal = document.getElementById('ra_postal');
	var ra_country = document.getElementById('ra_country');
	var ra_returnaddress = returnRadioValue(form,'returnaddress');
	
	if (ra_returnaddress == null) {
		alert('Please select an Envelope Return Address instruction.');
		return false;
	}
	if (ra_returnaddress == 'O') {
		if (ra_firstname.value == '') {
			alert('Please enter the First Name.');
			ra_firstname.focus();
			return false;
		}
		if ((ra_firstname.value.substring(0,1) != ra_firstname.value.substring(0,1).toUpperCase()) && (!ra_firstname_warning_confirmed)) {
			alert('Warning:\nThe First name is not capitalized.');
			ra_firstname.focus();
			ra_firstname_warning_confirmed = true;
			return false;
		}
		if (ra_lastname.value == '') {
			alert('Please enter the Last name.');
			ra_lastname.focus();
			return false;
		}
		if ((ra_lastname.value.substring(0,1) != ra_lastname.value.substring(0,1).toUpperCase()) && (!ra_lastname_warning_confirmed)) {
			alert('Warning:\nThe Last name is not capitalized.');
			ra_lastname.focus();
			ra_lastname_warning_confirmed = true;
			return false;
		}
		if (ra_address1.value == '') {
			alert('Please enter the street address.');
			ra_address1.focus();
			return false;
		}
		if (ra_city.value == '') {
			alert('Please enter the City.');
			ra_city.focus();
			return false;
		}
		if ((ra_country[ra_country.selectedIndex].value == 'US') || (ra_country[ra_country.selectedIndex].value == 'CA')) {
			if (ra_state[ra_state.selectedIndex].value == '') {
				alert('Please select the State/Province.');
				ra_state.focus();
				return false;
			}
			if (ra_postal.value == '') {
				alert('Please enter the Zip/Postal Code.');
				ra_postal.focus();
				return false;
			}
		}
		if (ra_country[ra_country.selectedIndex].value == '') {
			alert('Please select the Country.');
			ra_country.focus();
			return false;
		}
	}
	return true;
}

function validateRequestedByAddress () {
	var rb_firstname = document.getElementById('rb_firstname');
	var rb_lastname = document.getElementById('rb_lastname');
	var rb_address1 = document.getElementById('rb_address1');
	var rb_city = document.getElementById('rb_city');
	var rb_state = document.getElementById('rb_state');
	var rb_postal = document.getElementById('rb_postal');
	var rb_country = document.getElementById('rb_country');

	if (rb_firstname.value == '') {
		alert('Please enter the First Name.');
		rb_firstname.focus();
		return false;
	}
	if ((rb_firstname.value.substring(0,1) != rb_firstname.value.substring(0,1).toUpperCase()) && (!rb_firstname_warning_confirmed)) {
		alert('Warning:\nThe First name is not capitalized.');
		rb_firstname.focus();
		rb_firstname_warning_confirmed = true;
		return false;
	}
	if (rb_lastname.value == '') {
		alert('Please enter the Last name.');
		rb_lastname.focus();
		return false;
	}
	if ((rb_lastname.value.substring(0,1) != rb_lastname.value.substring(0,1).toUpperCase()) && (!rb_lastname_warning_confirmed)) {
		alert('Warning:\nThe Last name is not capitalized.');
		rb_lastname.focus();
		rb_lastname_warning_confirmed = true;
		return false;
	}
	if (rb_address1.value == '') {
		alert('Please enter the street address.');
		rb_address1.focus();
		return false;
	}
	if (rb_city.value == '') {
		alert('Please enter the City.');
		rb_city.focus();
		return false;
	}
	if ((rb_country[rb_country.selectedIndex].value == 'US') || (rb_country[rb_country.selectedIndex].value == 'CA')) {
		if (rb_state[rb_state.selectedIndex].value == '') {
			alert('Please select the State/Province.');
			rb_state.focus();
			return false;
		}
		if (rb_postal.value == '') {
			alert('Please enter the Zip/Postal Code.');
			rb_postal.focus();
			return false;
		}
	}
	if (rb_country[rb_country.selectedIndex].value == '') {
		alert('Please select the Country.');
		rb_country.focus();
		return false;
	}
	return true;
}

function returnAddress_clicked (form) {
	var ra_title = document.getElementById('ra_title');
	var ra_firstname = document.getElementById('ra_firstname');
	var ra_mi = document.getElementById('ra_mi');
	var ra_lastname = document.getElementById('ra_lastname');
	var ra_suffix = document.getElementById('ra_suffix');
	var ra_address1 = document.getElementById('ra_address1');
	var ra_address2 = document.getElementById('ra_address2');
	var ra_city = document.getElementById('ra_city');
	var ra_state = document.getElementById('ra_state');
	var ra_postal = document.getElementById('ra_postal');
	var ra_country = document.getElementById('ra_country');
	var ra_returnaddress = returnRadioValue(form,'returnaddress');
	
	var ra_disabled = (ra_returnaddress != 'O');
	ra_title.disabled = ra_disabled;
	ra_firstname.disabled = ra_disabled;
	ra_mi.disabled = ra_disabled;
	ra_lastname.disabled = ra_disabled;
	ra_suffix.disabled = ra_disabled;
	ra_address1.disabled = ra_disabled;
	ra_address2.disabled = ra_disabled;
	ra_city.disabled = ra_disabled;
	ra_state.disabled = ra_disabled;
	ra_postal.disabled = ra_disabled;
	ra_country.disabled = ra_disabled;

	return true;
}

function signInstruction_clicked (form) {
	var signinstruction_value = returnRadioValue(form,'signinstruction');
	
	var signs_disabled = (signinstruction_value != 'Y');
	for (var i=1; i<4; i++) {
		if (document.getElementById('sign'+i)) {
			document.getElementById('sign'+i).disabled = signs_disabled;
		}
	}
	
	if (signinstruction_value == 'Y') {
		document.getElementById('sign1').focus();
	}
	
	return true;
}

function login_validate (eleEmail, elePassword) {
	var email = eleEmail || document.getElementById('email');
	var password = elePassword || document.getElementById('password');
	
	if ((!emailfilter.test(email.value)) || (email.value == '')) {
		alert('Please enter a valid email address.');
		email.focus();
		return false;
	}
	if ((password.value.length > 10) || (password.value.length < 4) || (password.value == '')) {
		alert('Password must be 4 to 10 characters.');
		password.focus();
		return false;
	}
	return true;
}

function email_validate () {
	var email = document.getElementById('email');
	
	if ((!emailfilter.test(email.value)) || (email.value == '')) {
		alert('Please enter a valid email address.');
		email.focus();
		return false;
	}
	return true;
}

function validateSignInstruction (form) {
	var signinstruction = returnRadioValue(form,'signinstruction');
	var sign1 = document.getElementById('sign1');

	if (signinstruction == null) {
		alert('Please select a Signing Instruction.');
		return false;
	}
	if ((signinstruction == 'Y') && (sign1.value == '')) {
		alert('Please type how we should sign the card beginning on the first line.');
		sign1.focus();
		return false;
	}
	return true;
}

function validateDate () {
	var month = document.getElementById('month');
	var day = document.getElementById('day');
	var year = document.getElementById('year');
	
	if ((month.value != '') || (day.value != '') || (year.value != '')) {
		if (!isDate(month.value, day.value, year.value)) {
			alert('Please enter a valid date.');
			return false;
		}

		var month = parseInt(month.value);
		var day = parseInt(day.value);
		var year = parseInt(year.value);
	
		var massdate = new Date();
		massdate.setFullYear(year,month-1,day);
		massdate.setHours(0,0,0,0);
		
		var today = new Date();
		if (today >= massdate) {
			alert('The Mass date must be in the future.');
			return false;
		}
			
		var yeardif = parseInt(massdate.getYear() - today.getYear());
		var monthdif = parseInt(massdate.getMonth() - today.getMonth());
		
		if (((yeardif > 1) || ((yeardif == 1 ) && (monthdif > 0))) && (!date_future_confirmed)) {
			alert('Warning:\nDate is more than one year in the future. Please click "Next" if it is correct.');
			date_future_confirmed = true;
			return false;
		}
		if ((month == 12) && (day == 25) && (!date_christmas_confirmed)) {
			alert('Warning:\nThe Mass(es) will be celebrated during the Christmas Season. Click "Next" to Continue.');
			date_christmas_confirmed = true;
			return false;
		}
		
		EasterWeek(year);
		if ((massdate >= holythursdaydate) && (massdate <= easterdate) && (!date_easter_confirmed)) {
			alert('Warning:\nThe Mass(es) will be celebrated during Easter Week. Click "Next" to Continue.');
			date_easter_confirmed = true;
			return false;
		}
	}
	return true;
}