function formLoaded()
{
	return true;
}

function require(field)
{
	if($F(field) == "")
	{
		addError(field, 'Required');
		return false;
	} else {
		clearError(field);
		return true;
	}
}

function clearErrorOnChange(field)
{
	if($(field)) Event.observe(field, 'change', function(e){clearError(field); return true;});
	return true;
}

function clearError(field)
{
	if($(field+'_div'))
	{
		new Element.removeClassName(field+'_div', 'error');
		var nodes = $A($(field+'_div').getElementsByTagName('p'));
		nodes.each(function(node){if(Element.hasClassName(node, 'error')) Element.remove(node); return true;});
	}
	if($(field)) Event.stopObserving(field, 'change', function(e){clearError(field); return true;});
	return true;
}

function addError(field, error)
{
	if($(field+'_div'))
	{
		new Element.addClassName(field+'_div', 'error');
		new Insertion.Top(field+'_div', '<p class="error">'+error+'</p>');
	}
	clearErrorOnChange(field);
	return true;
}

function validUsername(username) { if(username.length < 6) return false; else return true; }
function validPassword(password) { if(password.length < 6) return false; else return true; }
function validEmail(email) { return (email.match(/^[a-zA-Z0-9_.-]+@([a-zA-Z0-9-]+\.)+[a-zA-Z0-9]{2,4}$/) != null); }
function validCC(cc_number) { if(cc_number.length < 12) return false; var i, j, prod; var sum = 0; for(i = 0; i <cc_number.length; i++) { if((i % 2) != (cc_number.length % 2)) sum += parseInt(cc_number.charAt(i)); else { prod = parseInt(cc_number.charAt(i)) * 2; sum += prod % 10; if(prod >= 10) sum += 1; } } if((sum % 10) == 0) return true; else return false; }
function validCVN(cvn) { if(cvn.length < 3 || cvn.length > 4) return false; else return true; }
function validZip(zip) { if(zip.length == 5) return true; else return false; }

// date validation functions
function validDate(field) { if($(field) && $F(field) != "") { var p_date = parseDate($F(field)); if(p_date != null) { $(field).value = formatDate(p_date, 'MM/dd/yyyy'); } else if($F(field) != "") { addError(field, "Invalid date: please use mm/dd/yyyy format."); } } else { clearError(field); } return true; }
function validTime(field) { if($(field) && $F(field) != "") { var p_date = parseDate($F(field)); if(p_date != null) { $(field).value = formatDate(p_date, 'h:mm a'); } else if($F(field) != "") { addError(field, "Invalid time: please use 'h:m a' format."); } } else { clearError(field); } return true; }
function validDateTime(field) { if($(field) && $F(field) != "") { var p_date = parseDate($F(field)); if(p_date != null) { $(field).value = formatDate(p_date, 'MM/dd/yyyy h:mm a'); } else if($F(field) != "") { addError(field, "Invalid date/time: please use 'mm/dd/yyyy h:m a' format."); } } else { clearError(field); } return true; }

function removeNonNumbers(val) { return val.replace(/[^0-9]/g, ""); }
function removeNonNumbersWithDecimal(val) { return val.replace(/[^0-9.]/g, ""); }
function formatPhone(val) { var v = removeNonNumbers(val); if(v.length < 10) return val; else return '('+v.substring(0, 3)+') '+v.substring(3, 6)+'-'+v.substring(6, v.length); }

function checkUsername(username, cust_id, first_name, last_name, display)
{
	new Ajax.Updater(display, '/data/username3.php', { method: 'get', parameters: 'username='+escape(username)+'&id='+escape(cust_id)+'&first='+escape(first_name)+'&last='+escape(last_name) });
	Element.show(display);
	return true;
}

function checkZipCode(zip, state, display)
{
	new Ajax.Request('/data/zip.php',
					 { method: 'get',
					 	parameters: 'zip='+escape($F(zip))+'&state='+escape($F(state)),
						onSuccess:function(t) {
							if(!t.responseText.match(/^\s*$/))
							{
								if($(display)) { $(display).innerHTML = t.responseText; Element.show(display); }
							} else {
								addError(zip, 'Zip Code is invalid'+($F(state) != '' ? ' for this state' : ''));
								if($(display)) { $(display).innerHTML = ''; Element.hide(display); }
							}
						}
					});
	return true;
}

function checkCoupon(coupon, course_no, coupon_value, feedback, updateFn)
{
	new Ajax.Request('/data/coupon_val.php',
					 { method: 'get',
					 	parameters: 'coupon='+escape(coupon)+'&course='+escape(course_no),
						onSuccess:function(t) {
							if(t.responseText != '')
							{
								$(feedback).innerHTML = "verified";
								$(coupon_value).innerHTML = t.responseText;
							} else {
								$(feedback).innerHTML = "<strong>Error:</strong> Invalid coupon code";
								$(coupon_value).innerHTML = "";
							}
							Element.show(feedback);
							updateFn();
						}
					});
	return true;
}

function setupEmailToParents()
{

}

function submitEmailToParents()
{
	var valid = true;
	
	if($('tellparent_email')) { clearError('tellparent_email'); if(!validEmail($F('tellparent_email'))) { addError('tellparent_email', 'Please, enter a valid email.'); valid = false; } }
	if($('tellparent_pemail')) { clearError('tellparent_pemail'); if(!validEmail($F('tellparent_pemail'))) { addError('tellparent_pemail', 'Please, enter a valid email.'); valid = false; } }
	if($('tellparent_subject') && $F('tellparent_subject') == '') $('tellparent_subject').value = $('tellparent_subject').defaultValue;
	if($('tellparent_message') && $F('tellparent_message') == '') $('tellparent_message').value = $('tellparent_message').defaultValue;

	if(!valid) return false; else return true;
}

