var formObj, isMember;

function validate(){
	errors = '';
	fields = 'fullname,phone,ccname,ccnum,ccexpyear,ccbilladd1,ccbillcity,ccbillzip'.split(',');
	for(i = 0; i < fields.length; i++){
		obj = document.getElementById(fields[i]).parentNode;
		obj.className = 'form-row';
	}

	if(formObj.fullname.value == ''){
		errors += 'Name\n';
		set_error('fullname');
	}
	cleanPhone = formObj.phone.value.replace(/[^0-9]/g,'');
	if(!cleanPhone.match(/[0-9]{7}/) && !cleanPhone.match(/[0-9]{10,11}/)){
		errors += 'Phone number\n';
		set_error('phone');
	}
	if(formObj.ccname.value == ''){
		errors += 'Name on the card\n';
		set_error('ccname');
	}
	cleanCC = formObj.ccnum.value.replace(/[^0-9]/g,'');
	if(cleanCC.length != 15 && cleanCC.length != 16){
		errors += 'Credit card number\n';
		set_error('ccnum');
	}
	now = new Date();
	if(now.getFullYear() == formObj.ccexpyear.value && (now.getMonth() + parseInt(1)) > formObj.ccexpmonth.value){
		errors += 'Invalid expiration date\n';
		set_error('ccexpyear');
	}
	if(formObj.ccbilladd1.value == ''){
		errors += 'Billing address\n';
		set_error('ccbilladd1');
	}
	if(formObj.ccbillcity.value == ''){
		errors += 'Billing city\n';
		set_error('ccbillcity');
	}
	if(formObj.ccbillzip.value == ''){
		errors += 'Billing zip code\n';
		set_error('ccbillzip');
	}
	if(errors.length){
		alert('Please make sure to fill out the following fields:\n\n' + errors);
		return false;
	}
	return true;
}

function update_cost(){
	base_cost = isMember.checked ? 40 : 55;
	formObj.total.value = '$' + base_cost * formObj.attendees.value + '.00';
}

function set_error(objID){
	obj = document.getElementById(objID).parentNode;
	obj.className = 'form-row error';
}

function init(){
	formObj = document.getElementById('wipcs_form');
	isMember = document.getElementById('member');
	formObj.attendees.onchange = update_cost;
	formObj.member.onclick = update_cost;
	formObj.onsubmit = validate;
	update_cost();
}
window.onload = init;