/************************
Name: Form checker
Date: 2004/01/11
Modification: 
	- 2005/03/26 Compare Object function
Purpose: Validate form element

Written by: Peter Dikhazi

************************/
function fnFormValidate(){
	//collect all information
	var oColl = document.getElementsByTagName('SPAN');
	var error = '';

	try{
		for (var i = 0; i < oColl.length;i++){
			if (oColl[i].getAttribute('soda_error') == '1'){
				var vType = oColl[i].getAttribute('soda_validation_type');
				var validateObjectName = oColl[i].getAttribute('soda_validate_object');
				var validateObjects = document.getElementsByName(validateObjectName);
				var validateObject = null;
				if (validateObjects.length > 0){
				
					if (validateObjects[0].tagName == 'SELECT'){
						validateObject = validateObjects[0].options[validateObjects[0].selectedIndex];
					}else{
						validateObject = validateObjects[0];
					}
					
					var compareValue = oColl[i].getAttribute('soda_compare_value');
					var errorMessage = oColl[i].getAttribute('soda_errormessage');				
					var compareObject = null;
					if (oColl[i].getAttribute('soda_compare_object') != ''){
						compareObject = document.getElementById(oColl[i].getAttribute('soda_compare_object'));
					}	
					var regExp;
					if ((vType != null) && (validateObject != null)){
						switch (vType.toUpperCase()){
							//Required fields
							case 'REQUIRED':								
									if(validateObject.value != null){
										if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") == ''){
											error += errorMessage + '\n';
										}
									}												
								break;
							//EQUAL
							case 'EQUAL':								
									if(validateObject.value != null){
										
										if ((compareValue == "") && (compareObject != null)){
											if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") == compareObject.value.replace(/(^\s*)|(\s*$)/g, "")){
												error += errorMessage + '\n';
											}							
										}else{
											if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") == compareValue){
												error += errorMessage + '\n';
											}
										}
									}												
								break;		
							//NOTEQUAL
							case 'NOTEQUAL':								
									if(validateObject.value != null){
										
										if ((compareValue == "") && (compareObject != null)){
											if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") != compareObject.value.replace(/(^\s*)|(\s*$)/g, "")){
												error += errorMessage + '\n';
											}							
										}else{
											if (validateObject.value.replace(/(^\s*)|(\s*$)/g, "") != compareValue){
												error += errorMessage + '\n';
											}
										}
									}											
								break;	
							case 'EMAIL':
								//
								var regularExpress = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
								regExp = new RegExp(regularExpress);
								var ma = regExp.exec(validateObject.value);						
								if (ma == null){
									error += errorMessage + '\n';
								}
								break;
						    case 'CHECK':
								//
								if (!validateObject.checked){
									error += errorMessage + '\n';
								}
								break;
							case 'OR':
								if ((validateObject.value != null) && (compareObject.value != null)){
										if ((validateObject.value.replace(/(^\s*)|(\s*$)/g, "") == '') && (compareObject.value.replace(/(^\s*)|(\s*$)/g, "") == '')){
											error += errorMessage + '\n';
										}
									}	
								break;
							case 'URL':
								var regularExpress = /^(?:(?:ftp|https?):\/\/)?(?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[a-z][a-z])\b(?:\d+)?(?:\/[^;"'&lt;&gt;()\[\]{}\s\x7f-\xff]*(?:[.,?]+[^;"'&lt;&gt;()\[\]{}\s\x7f-\xff]+)*)?/;
								regExp = new RegExp(regularExpress);
								
								var ma = regExp.exec(validateObject.value);	
								if (ma == null){
									error += errorMessage + '\n';
								}						
								break;
							case 'ISDATE':
								//var regularExpress =  /(([1-9]|[1-2][0-9]|3[0-1]|0[1-9])[/ /.]([1-9]|1[0-2]|0[1-9])[/ /.]([1-9][0-9])\d\d)|(([1-9]|[1-2][0-9]|3[0-1]|0[1-9])[- /.](0[1-9]|1[0-2]|[1-9])[- /.]([1-9][0-9])\d\d)/;						
								//regExp = new RegExp(regularExpress);						
								//var ma = regExp.exec(validateObject.value);	
								//if (ma == null){
								//	error += errorMessage + '\n';
								//}	
								break;															
						}//switch
					}//if
				}//if
			}//if
		}//for
	}catch(e){
		alert(e.message);
		return false;
	}
	if (error.length != 0){
		var messageHeader = 'Fields with an * are required.\nThe following required fields are missing:\n';
		var messageFooter = '\nPlease fill out all required fields and resubmit the form.';
		var header = document.getElementById('sys_message_header');
		var footer = document.getElementById('sys_message_footer');
		if (header != null) messageHeader = header.value;
		if (footer != null) messageFooter = footer.value;
		alert(messageHeader + '\n\n' + error + '\n' + messageFooter);
		return false;	
	}else{
		return true;	
	}
	
}
