//Functions to validate various forms.
// Credit Cards => validate_creditcard();
//

function validate_creditcard(){
	clear_errors();
	
	var ok = true;
	
	
	//Firstname & Lastname
	if($('first_name').value.length == 0){
		show_error('first_name',"Please enter your first name");
		ok = false;
	}
	if($('last_name').value.length == 0){
		show_error('last_name',"Please enter your last name");
		ok = false;
	}
	
	//Credit Card number
	if($('cc_num').value.length < 14 || parseInt($('cc_num').value) != $('cc_num').value){
		show_error('cc_num',"Please enter a valid credit card number");
		ok = false;
	}
	if($('cvv2').value.length < 3){
		show_error('cvv2',"Please enter a valid CVV2 code");
		ok = false;
	}
	
	//Expiration Date
	var expire=new Date();
	expire.setFullYear($('year').value,$('month').value,1);  //First day of month after exp-month
	var today = new Date();


	if (expire<today){
		show_error('expiration_date',"Please enter a credit card that is not expired");
		ok = false;
	}
	//Address
	if($('address').value.length < 3){
		show_error('address',"Please enter your street address");
		ok = false;
	}
	if($('city').value.length < 2){
		show_error('city',"Please enter your city");
		ok = false;
	}
	if(!$('zip').value.match(/^\d{5}$/) && !$('zip').value.match(/^[A-Z]\d[A-Z][ ]?\d[A-Z]\d$/i)) {
		show_error('zip',"Please enter your 5-digit zip code");
		ok = false;
	}
	
	//Phone Number
	if(!valid_phone($('phone').value)){
		show_error('phone',"Please enter your 10-digit phone number  eg. 123-456-7890");
		ok = false;
	}
	
	//Email Address
	if(!valid_email($('email').value)){
		show_error('email',"Please enter your email address");
		ok = false;
	}
	
	//Disable submit button to prevent multiple submissions
	if(ok) {
		$('btnsubmit').disabled=true;
		return true;
	} else { // there was an error
		return false;
	}
}

function valid_email(email){
	var regex = /\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/;
	if(regex.test(email.toUpperCase()))	return true;
	return false;
}
function valid_phone(phone){
	var regex = /^\d{3}(?:[^\d])?\d{3}(?:[^\d])?\d{4}$/;
	if(regex.test(phone.toUpperCase()))	return true;
	return false;
}
function valid_date(date){
	var regex = /[01][0-9]\/[0-3][0-9]\/20[0-1][0-9]/;
	if(regex.test(date))	return true;
	return false;	
}
function valid_amount(dollar){
	var regex=/(^\d+$)|(^\d+\.\d{2}$)/
	if(regex.test(dollar)){
		//Valid amount, but in the range?
		if(dollar>=parseFloat($('gc_min').value) && dollar <= parseFloat($('gc_max').value)) return true;
	}
	return false;	
}


function show_error(id,msg){
	$('err_'+id).innerHTML = msg; 
	Element.Methods.scrollTo($('err_'+id));
}


function clear_errors(){
	var errs = document.getElementsByTagName('span');
	for(var i=0; i< errs.length;i++){
		if(errs[i].className=="error") errs[i].innerHTML="";	
	}
}

function show_submit(){
	//Enable submit buttom if they have a decent browser
	if(!document.getElementById || !document.createTextNode){ return; }
	$('btnsubmit').style.display = 'inline';	
}

function char_count(id_textbox,id_display,max_char){
	if($(id_textbox).value.length > max_char)
		$(id_textbox).value = $(id_textbox).value.substring(0,max_char);
		
	$(id_display).innerHTML = max_char-$(id_textbox).value.length;
	
}