﻿var Order = {

	submit : function() {
	
		if(!Order.Billing.validate())
			return false;
	
		if(document.getElementById('shippingIsTheSame').checked) {
			for(var i in Order.Billing.copy)
				document.getElementById(Order.Billing.copy[i]).value = document.getElementById(i).value;
		}
		else if(!Order.Shipping.validate())
			return false;
		
		return Order.Card.validate();
		
	},

	onShippingIsTheSame : function(checked) {
		document.getElementById('shippingIsTheSame').checked = checked;
		document.getElementById('shipping').style.display = checked ? 'none' : 'block';
	},

	_isnumber : /^\d+$/,
	isnumber : function(_value) { return this._isnumber.exec(_value) },

	_isemail : /^\s*(\S+\@\S+\.\S+)\s*$/,
	isemail : function (_value) { return this._isemail.exec(_value) },
	
	_trim : /^\s*(.*\S+)\s*$/,
	trim : function(value) {
		var res = this._trim.exec(value);
		return res ? RegExp.$1 : null;
	},
		
	validateRequired : function(fields) {
		for(var i in fields) {
			var ctrl = document.getElementById(i);
			var value = this.trim(ctrl.value);
			if(value) {
				ctrl.value = value;
				continue;
			}
			alert("Please enter " + fields[i]);
			return false;
		}
		return true;
	},

	Billing : {
		copyToShipping : function() {
		},
		validate : function() {
			if(Order.validateRequired(this.required))
				return true;
			return false;
		}
	},
	
	Shipping : {
		validate : function() {
			return Order.validateRequired(this.required);
		}
	},
	
	Card : {
		validate : function() {
			return Order.validateRequired(this.required);
		}
	}

};