// JavaScript Document

//validation functions

//used for name, address, city and county
function name_validation(param_value) {
	if (param_value.replace(/ /g, '').length > 1) {
		return true;
	} else {
		return false;
	}
}

function email_validation(param_value) {
	var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
	if (!param_value.match(re)) {
		return false;
	} else {
		return true;
	}
}

function phone_validation(param_value) {
	var re = /^1?\s*[\-\s]?\s*\(?\s*(\d{3})?\s*[\)\-\s]?\s*\d{3}\s*[\-\s]?\s*\d{4}$/;
	if (!param_value.match(re)) {
		return false;
	} else {
		return true;
	}
}

function not_empty_validation(param_value) {
	var re = /.+/;
	if (!param_value.match(re)) {
		return false;
	} else {
		return true;
	}
}

function not_empty_radio_validation(param_object) {
	for (var i = 0; i < param_object.length; i++) {
		if (param_object.item(i).checked) {
			return true;
		}
	}
	
	return false;
}

function zip_validation(param_value) {
	var re = /^\d{5}(\s*[-\s]?\s*\d{4})?$/;
	if (!param_value.match(re)) {
		return false;
	} else {
		return true;
	}
}

function age_validation(param_value) {
	var re = /^\d{2,3}(\s*[-\s]?\s*\d{4})?$/;
	if (!param_value.match(re)) {
		return false;
	} else {
		return true;
	}			
}

function empty_validation(param_value) {
	if (param_value.length == 0) {
		return true;
	} else {
		return false;
	}
}

function integer_validation(param_value) {
	var re = /^\d+$/;
	if (!param_value.match(re)) {
		return false;
	} else {
		return true;
	}		
}

var fields = new Array();

function validate() {
	var valid_form = true;
	var required;
	var valid;
	var field;
	var field_container;
	var previous_field_container;
	
	for (var i = 0; i < fields.length; i++) {
		if (fields[i][2].toLowerCase() == 'true') {
			required = true;
		} else {
			required = false;
		}
		field = document.getElementById(fields[i][0]);
		field_container = field.parentNode.parentNode.parentNode;
		switch(fields[i][1].toLowerCase()) {
			case 'name':
				valid = name_validation(field.value);
				break;
			case 'not empty':
			case 'not_empty':
				valid = not_empty_validation(field.value);
				break;
			case 'zip':
				valid = zip_validation(field.value);
				break;
			case 'phone':
				valid = phone_validation(field.value);
				break;
			case 'email':
				valid = email_validation(field.value);
				break;
			default:
				valid = false;
		}
		if (valid) {
			if (!((previous_field_container == field_container) && (previous_field_container.className == 'input_error'))) {
				field_container.className = 'input_valid';
			}
		} else {
			if ((field.value == '') && (!required)) {
				field_container.className = '';
			} else {
				field_container.className = 'input_error';
				valid_form = false;
			}
		}
		previous_field_container = field_container;
	}
	
	document.getElementById('btn_submit').disabled = !valid_form;		
}

function uncheck_all_except(param_check_box) {
	var arr_check_boxes = param_check_box.parentNode.getElementsByTagName('input');
	
	for (var i = 0; i < arr_check_boxes.length; i++) {
		if (arr_check_boxes[i] != param_check_box) {
			arr_check_boxes[i].checked = false;
		}
	}
}
		
function next_step() {
	current_step++;
	if (current_step >= (steps.length - 1)) {
		document.getElementById('btn_next').disabled = true;
		document.getElementById('submit_button_container').className='';
	}
	if (steps.length > 1) {
		document.getElementById('btn_prev').disabled = false;				
	}
	
	if (current_step < steps.length) {
		document.getElementById(steps[(current_step - 1)]).className = 'display_none';
		document.getElementById(steps[(current_step)]).className = '';
	}
}

function previous_step() {
	current_step--;
	if (current_step <= 0) {
		document.getElementById('btn_prev').disabled = true;
	}
	if (steps.length > 1) {
		document.getElementById('btn_next').disabled = false;	
		document.getElementById('submit_button_container').className='display_none';			
	}
	
	if (current_step < steps.length) {
		document.getElementById(steps[(current_step + 1)]).className = 'display_none';
		document.getElementById(steps[(current_step)]).className = '';
	}
}
