String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g, '');
}

String.prototype.uCFirst = function() {
	return this.substring(0, 1).toUpperCase() + this.substring(1);
}

String.prototype.uCWords = function() {
	var words = this.split(' ');
	for (var i = 0; i < words.length; i++)
		words[i] = words[i].uCFirst();
	return words.join(' ');
}

String.prototype.noBigSpaces = function() {
	return this.replace(/\s+/g, ' ');
}

function checkForm(frm) {
	var err = "";
	var focusEl;
	var current;
	
	current = document.getElementsByName('shipping[first_name]')[0];
	if (!current.value.length) { err += "Please enter your first name\n"; if (!focusEl) focusEl = current; }
	
	current = document.getElementsByName('shipping[last_name]')[0];
	if (!current.value.length) { err += "Please enter your last name\n"; if (!focusEl) focusEl = current; }
	
	current = document.getElementsByName('shipping[email]')[0];
	if (!current.value.length) { err += "Please type enter email address\n"; if (!focusEl) focusEl = current; }
	else if (!/^[a-zA-Z0-9]([\w\.-]*[a-zA-Z0-9])?@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/.test(current.value)) { err += "Your email address is incorrect\n"; if (!focusEl) focusEl = current; }
	
	current = document.getElementsByName('shipping[address]')[0];
	if (!current.value.length) { err += "Please enter the shipping address' first line\n"; if (!focusEl) focusEl = current; }
	
	current = document.getElementsByName('shipping[address2]')[0];
	if (!current.value.length) { err += "Please enter the shipping address' second line\n"; if (!focusEl) focusEl = current; }
	
	current = document.getElementsByName('shipping[city]')[0];
	if (!current.value.length) { err += "Please enter the shipping city\n"; if (!focusEl) focusEl = current; }
	
	current = document.getElementsByName('shipping[state_id]')[0];
	if (!current.selectedIndex) { err += "Please choose the shipping state \n"; if (!focusEl) focusEl = current; }
	
	current = document.getElementsByName('shipping[zipcode]')[0];
	if (!current.value.length) { err += "Please enter the shipping zipcode\n"; if (!focusEl) focusEl = current; }
	
	current = document.getElementsByName('shipping[phone]')[0];
	if (!current.value.length) { err += "Please enter the shipping phone number\n"; if (!focusEl) focusEl = current; }
	
	current = document.getElementsByName('card[type]')[0];
	if (!current.selectedIndex) { err += "Please choose the credit card type\n"; if (!focusEl) focusEl = current; }
	var ccType = current.value;
	
	current = document.getElementsByName('card[name]')[0];
	if (!current.value.length) { err += "Please type the cardholder's name\n"; if (!focusEl) focusEl = current; }
	else if (!/^\w+\s+\w+$/.test(current.value)) { err += "The cardholder's name is incorrect\n"; if (!focusEl) focusEl = current; }
	
	current = document.getElementsByName('card[number]')[0];
	if (!current.value.length) { err += "Please type the card number\n"; if (!focusEl) focusEl = current; }
	else {
		if (ccType == 'VI' && current.value.length != 13 && current.value.length != 16)
			{ err += "The card number's length is incorrect!\n"; if (!focusEl) focusEl = current; }
		else if (ccType == 'MC' && current.value.length != 16)
			{ err += "The card number's length is incorrect!\n"; if (!focusEl) focusEl = current; }
		else if (ccType == 'VI' && !/^4[0-9]{15}$/.test(current.value) && !/^4[0-9]{12}$/.test(current.value))
			{ err += "The card number is incorrect!\n"; if (!focusEl) focusEl = current; }
		else if (ccType == 'MC' && !/^5[1-5][0-9]{14}$/.test(current.value))
			{ err += "The card number is incorrect!\n"; if (!focusEl) focusEl = current; }
	}
	
	current = document.getElementsByName('card[cvv]')[0];
	if (!current.value.length) { err += "Please type the CVV2 code\n"; if (!focusEl) focusEl = current; }
	else if (current.value.length < 3) { err += "The CVV2 code is incomplete\n"; if (!focusEl) focusEl = current; }
	else if (!/^[0-9]{3,4}$/.test(current.value)) { err += "The CVV2 code is incorrect\n"; if (!focusEl) focusEl = current; }
	
	current = document.getElementsByName('card[expire_month]')[0];
	if (!current.selectedIndex) { err += "Please choose the expiration month of the card\n"; if (!focusEl) focusEl = current; }
	
	current = document.getElementsByName('card[expire_year]')[0];
	if (!current.selectedIndex) { err += "Please choose the expiration year of the card\n"; if (!focusEl) focusEl = current; }
	
	if (!frm.same.checked) {
		current = document.getElementsByName('billing[address]')[0];
		if (!current.value.length) { err += "Please enter the billing address' first line\n"; if (!focusEl) focusEl = current; }
		
		current = document.getElementsByName('billing[address2]')[0];
		if (!current.value.length) { err += "Please enter the billing address' second line\n"; if (!focusEl) focusEl = current; }
		
		current = document.getElementsByName('billing[city]')[0];
		if (!current.value.length) { err += "Please enter the billing city\n"; if (!focusEl) focusEl = current; }
		
		current = document.getElementsByName('billing[state_id]')[0];
		if (!current.selectedIndex) { err += "Please choose the billing state \n"; if (!focusEl) focusEl = current; }
		
		current = document.getElementsByName('billing[zipcode]')[0];
		if (!current.value.length) { err += "Please enter the billing zipcode\n"; if (!focusEl) focusEl = current; }
		
		current = document.getElementsByName('billing[phone]')[0];
		if (!current.value.length) { err += "Please enter the billing phone number\n"; if (!focusEl) focusEl = current; }	
	}
	
	current = document.getElementsByName('personal[birth_year]')[0];
		if (current) {
		if (!current.selectedIndex) { err += "Please choose your birth year\n"; if (!focusEl) focusEl = current; }
		
		current = document.getElementsByName('personal[birth_month]')[0];
		if (!current.selectedIndex) { err += "Please choose your birth month\n"; if (!focusEl) focusEl = current; }
		
		current = document.getElementsByName('personal[birth_day]')[0];
		if (!current.selectedIndex) { err += "Please choose your birth day\n"; if (!focusEl) focusEl = current; }
		
		current = document.getElementsByName('personal[gender]')[0];
		if (!current.selectedIndex) { err += "Please choose your gender\n"; if (!focusEl) focusEl = current; }
		
		current = document.getElementsByName('personal[height]')[0];
		if (!current.selectedIndex) { err += "Please choose your height\n"; if (!focusEl) focusEl = current; }
		
		current = document.getElementsByName('personal[weight]')[0];
		if (!current.value.length) { err += "Please enter your weight\n"; if (!focusEl) focusEl = current; }
		else if (isNaN(current.value)) { err += "The weight must be a number\n"; if (!focusEl) focusEl = current; }
	}
	
	if (focusEl) {
		alert(err);
		focusEl.focus();
		return false;
	}
	
	return true;
}// JavaScript Document
