﻿/* Give IE6/7 the getElementsByName method */
if(typeof(window.external) != 'undefined'){
	document.getElementsByName = function(name, tag){
		if(!tag){
			tag = '*';
		}
		var elems = document.getElementsByTagName(tag);
		var res = []
		for(var i=0;i<elems.length;i++){
			att = elems[i].getAttribute('name');
			if(att == name) {
				res.push(elems[i]);
			}
		}
		return res;
	}
}

function validate_form(form_id, required_fields, required_messages, email_field, email_message, ccard_number, ccard_type, ccard_message)
{
	valid = true;
	var errors = [];
	var NL = String.fromCharCode(10);
	
	/* Check for empty fields */
	for (i=0; i < required_fields.length; i++) {

		field_name = [required_fields[i]];
		/* Determine field types */
		if (document.getElementById(form_id).elements[field_name].nodeName != 'TEXTAREA' && document.getElementById(form_id).elements[field_name].nodeName != 'SELECT') {
			/* Safely check for radio inputs, checking on textareas and selects is not safe */
			inputs = document.getElementsByName(field_name);
			input_type = inputs[0].attributes.getNamedItem("type").value;
		}
		
		if (input_type == 'radio') {
			/* Handle radio inputs.. could be extended fairly easily to checkboxes too. */
			valid_radio = false;
			for (x = 0; x < inputs.length; x++) {
				if (inputs[x].checked) {
					valid_radio = true;
				}
			}
			
			if (valid_radio == false) {
				valid = false;
				errors.push(required_messages[i]);
			}
		} else {
			if (document.getElementById(form_id).elements[field_name].value == "") {
				valid = false;
				errors.push(required_messages[i]);
			}
		}
	}

	/* Validate email address */
	if (validate_email(document.getElementById(form_id).elements[email_field].value) == false) {
		valid = false;
		errors.push(email_message);
	}
	
	if (!checkCreditCard (document.getElementById(form_id).elements[ccard_number].value, document.getElementById(form_id).elements[ccard_type].value)) {
		valid = false;
		errors.push(ccard_message);
	}
	
	if (valid == false) {
		/* Output errors in a list in an alert box */
		
		var message = "There were error(s) while submitting the form:" + NL + NL;
		
		for(i=0; i < errors.length; i++) {
			message += "* " + errors[i] + NL;
		}
		
		alert(message);
		
		return false;
	}
}

function validate_email(email)
{
	/* Check for valid email */
	var reg=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/
	if(reg.test(email) == false) {
		return false;
	}
}	
