function CCDataValidation(form) {
	
	this.msg			=	"";
	this.form			=	form;	
	this.fields		=	getFieldsCollection.call(this);
	this.isValid	=	validateFields.call(this);
	
	if(!this.isValid) alert(this.msg);
	
};

getFieldsCollection = function() {
	return {
		number:		this.form.cc_number.value,
		type:			this.form.cc_type.value,
		cvv:			this.form.cc_cvv.value,
		expDate:	this.form.cc_expiration.value
	};
};

validateFields = function() {
	
	var ccNum		=	this.fields.number;
	var ccCVV		=	this.fields.cvv;
	var ccType	=	this.fields.type;
	
	switch(ccType.toLowerCase()) {
		case "visa":
			var ccNum_charSub_1 = ccNum.substring(0,1);
			if((ccNum.length == 13 || ccNum.length == 16) && (ccNum_charSub_1 == 4)) {
			} else {
				this.msg = "Please enter your credit number correctly.";
				return false;
			}
		break;
		case "mastercard":
			var ccNum_charSub_1 = ccNum.substring(0,1);
			var ccNum_charSub_2 = ccNum.substring(0,1);
			if((ccNum.length == 16 || ccNum.length == 19)
					&& (ccNum_charSub_1 == 5)
					&& ((ccNum_charSub_2 >= 1) && (ccNum_charSub_2 <= 5))) {
			} else {
				this.msg = "Please enter your credit number correctly.";
				return false;
			}
		break;
		case "amex":
			var ccNum_charSub_1 = ccNum.substring(0,1);
			var ccNum_charSub_2 = ccNum.substring(0,1);
			if(((ccNum.length == 15)  || (ccNum.length == 18))
					&& (ccNum_charSub_1 == 3) &&
					((ccNum_charSub_2 == 4) || (ccNum_charSub_2 == 7))) {
			} else {
				this.msg = "Please enter your credit number correctly.";
				return false;
			}
		break;
		case "discover":
			var ccNum_charRange_1_4 = ccNum.substring(0, 4);
			if((ccNum.length == 16) && (ccNum_charRange_1_4 == 6011)) {
			} else {
				this.msg = "Please enter your credit number correctly.";
				return false;
			}
		break;
	}
	
	return true;
	
};
