/* --------------------------------------------------------------------------------------------
	Javascript for WRAP form validation. 
	- VictoriaChan 01/11/06
	
	To use, 
	1)include the 4 js files (YUI and validation.js and this!)
	2)just add classnames to form element to flag if a field is required.
	3)add to form tag <form onsubmit="return jsValidateForm(this);" ....>
	
	
	Dependent on: YUI/yahoo-min.js, YUI/dom-min.js, validation.js
-------------------------------------------------------------------------------------------- */

// shortcuts for convenience
var $D = YAHOO.util.Dom;
var $ = $D.get; // get element by ID

// Vars for this file
var this_requiredFieldClassName = 'validate_required'; //classname of the required fields
var this_emailFieldClassName = 'validate_email'; //classname of the email fields
var this_checkboxFieldClassName = 'validate_tick_required'; //classname of the checkbox containers for which at least one tick required

/*------------------------------------------------------------------
	Main Functions
-----------------------------------------------------------------*/
function requireOneCheckedFromGroup(groupId, message) { 
  	var grp = document.getElementById(groupId);
    var fields = grp.getElementsByTagName('INPUT'); 	 
    for (var i = 0; i < fields.length; i++) { 	 
        if (fields[i].checked) { 	 
            return true; 	 
        } 	 
    } 	 
    complain(null, message, false); 
    return false; 	 
}
function jsValidateForm(theForm){
	var ret = true;
	
	//get all the required fields
	var arr_requiredFields = $D.getElementsByClassName(this_requiredFieldClassName, '', theForm);
	//get all the email fields
	var arr_emailFields = $D.getElementsByClassName(this_emailFieldClassName, '', theForm);
	//get all the checkbox groups
	var arr_checkboxGroups = $D.getElementsByClassName(this_checkboxFieldClassName, '', theForm);
	//get all the required fields
	var arr_requiredFields = $D.getElementsByClassName(this_requiredFieldClassName, '', theForm);
	//get all the upload fields
	var arr_uploadFields = $D.getElementsByClassName('validate_upload', '', theForm);
	
	//generate id if none given
	$D.generateId(arr_requiredFields, 'req_');
	$D.generateId(arr_emailFields, 'email_');
	$D.generateId(arr_checkboxGroups, 'checkboxgroup_');
	$D.generateId(arr_uploadFields, 'upload_');
	
	//call functions in validation.js to validate fields
	for (i=0; i< arr_requiredFields.length; i++){
		var temp = requireNonEmpty(arr_requiredFields[i].id, 'Please tell us your '+ arr_requiredFields[i].name);
		if (temp == false){
			ret = false;
		}
	}
	for (i=0; i< arr_emailFields.length; i++){
		var temp = requireEmail(arr_emailFields[i].id, 'Please make sure that ' + arr_emailFields[i].name + ' is in the correct format', true);
		if (temp == false){
			ret = false;
		}
	}
	for (i=0; i< arr_checkboxGroups.length; i++){
		if (arr_checkboxGroups[i].title)
			var nagMsg = 'Please select at least one ' + arr_checkboxGroups[i].title;
		else
			var nagMsg = 'Please tick at least one checkbox in the ' + arr_checkboxGroups[i].id + ' group';
		var temp = requireOneCheckedFromGroup(arr_checkboxGroups[i].id, nagMsg);
		if (temp == false){
			ret = false;
		}
	}
	for (i=0; i< arr_uploadFields.length; i++){
		if (arr_uploadFields[i].value != '' && !(/\.(doc|xls|pdf|txt|csv)$/i.test(arr_uploadFields[i].value))) {
			complain(arr_uploadFields[i].value.id, 'Your file must be in one of these formats: DOC, XLS, PDF, TXT, CSV', true);
			ret = false;
		}
	}
	
	return ret;
}


/*function validateForm(formid, arr_requiredFieldsId, arr_emailFieldsId){	
	alert(formid);
}*/

