/*** VALIDATION RULES: ***/
var val_rule	= new Array();
val_rule["literal"]	= "[^a-z ]"; //Literal only
val_rule["numerical"]	= "[^0-9]"; //Numerical only
val_rule['name'] = "[^-a-z ']"; //Names only
val_rule['instname'] = "[^-a-z0-9& ']"; //Names only

/*** VALIDATE FIELDS ***/
var val_fields = new Array();
var final_val_fields = '';

var form_name = '';
//var validate_result = '';


var validateField = function(id, rule){
	var reg_rule = '';
	var leng = rule.length;
	if (typeof(rule) == 'object' && leng != 0) {
		for (i=0; i<leng; i++ ){
			if (reg_rule == ''){
				reg_rule += val_rule[rule[i]];
			} else {
				reg_rule = reg_rule + ' | ' + val_rule[rule[i]];
			}
		}
	} else {
		reg_rule = val_rule[rule];
	}
	obj = elementById(id);
	obj.value = obj.value.replace( new RegExp( reg_rule, "gi"), '' );		
}
	
function init(frm) {
	var form_obj = document.getElementById(frm);
	
	var comp_validation = '';
	var opt_validation = '';
	form_length = form_obj.elements.length;

	for (i=0; i<form_obj.elements.length; i++) {
		comp_validation = form_obj.elements[i].getAttribute('validate');
		opt_validation = form_obj.elements[i].getAttribute('o_validate');
		
		if (comp_validation) {
			if (comp_validation != 'ajax') {
				attach(form_obj.elements[i].id, "validateField('" +form_obj.elements[i].id+ "', '" + comp_validation + "')");
			}
			if (form_obj.elements[i].id.match(/gender/)){
				form_obj.elements[i].id = 'gender';
			}
			if (form_obj.elements[i].id.match(/laa_/)){
				if(elementById('laa_Y').getAttribute('name') == 'lived_at_address'){
					form_obj.elements[i].id = 'lived_at_address';
				} else {
					form_obj.elements[i].id = 'fm_lived_at_address';
				}
			}
			val_fields.push(form_obj.elements[i].id);
		}
		
		if(opt_validation){
			attach(form_obj.elements[i].id, "validateField('" +form_obj.elements[i].id+ "', '" + opt_validation + "')");	
		}
	}
}

function validateResponse(aJaX_obj, AJX_response) {
	//alert(AJX_response);
	
	switch (AJX_response){
		case 'OK':
			if(elementById('ajax_validation')){
				try {
					elementById('ajax_validation').parentNode.removeChild(elementById('ajax_validation'));	
				} catch (e){}
			}
			elementById(form_name).submit();
			//validate_result = 'OK';
		break;

		default:
			processError(AJX_response);
		break;
	}
}

function validate(frm){
	form_name = frm;
	var final_val_fields = new Array();
	var rule_haystack_1 = new Array();
	var rule_haystack_2 = new Array();

	for(var i=0; i<val_fields.length; i++){
		final_val_fields[i] = val_fields[i];		
	}

	clearFieldErrors(final_val_fields);

	rule_haystack_1['prev_address_1'] = rule_haystack_1['prev_address_2'] = rule_haystack_1['prev_city'] = rule_haystack_1['prev_state'] = rule_haystack_1['prev_zip'] = true;
	rule_haystack_2['bill_address_1'] = rule_haystack_2['bill_address_2'] = rule_haystack_2['bill_city'] = rule_haystack_2['bill_state'] = rule_haystack_2['bill_zip'] = true;
	
	if (document.getElementById('laa_N') && !document.getElementById('laa_N').checked){
		var val_fields_length = final_val_fields.length;
		for (i=0;i<val_fields_length;i++){
			if (rule_haystack_1[final_val_fields[i]] === true){
				//alert(final_val_fields[i]);
				final_val_fields[i] = null;
			}
		}
	}
	
	if (elementById('same_billing') && elementById('same_billing').checked){
		var val_fields_length = final_val_fields.length;
		for (i=0;i<val_fields_length;i++){
			if (rule_haystack_2[final_val_fields[i]] === true){
				//alert(final_val_fields[i]);
				final_val_fields[i] = null;
			}
		}
	}
	
	final_val_fields = implode(final_val_fields);
	//alert(final_val_fields);
	var tobe_validated = 'validate_fields=' + final_val_fields;
	var ajaxValidate = new aJaX(validateResponse);	
	var postContent = encodeForm(frm, tobe_validated);
	//alert(postContent);
	ajaxValidate.modePOST('/ajax/validation.php', postContent);
}