//alert('js included');

function SubmitForm(objForm) {
	
	if(Validate(objForm)) {
		objForm.submit();
	} else {
		return false;
	}
}

function Validate(objForm) {
	
	//alert('Validate');
	
	var strerror = new String();
	var error = false;
	var thiserror = false;
		
		if(document.getElementById('wait')) {
                	//inhtml = "<img src='/images/wait.gif'>";
                	//document.getElementById('wait').innerHTML = inhtml;
			//document.getElementById('wait').style.visibility = "visible";
		}	
	with(objForm) {
		
		for(i=0; i < elements.length; i++){
			//alert(elements[i].name + '::CLASS::' + elements[i].className + '::VALUE::' + elements[i].value + '::ERROR::' + error);
			
			thiserror = false;
			
			//alert(elements[i].name + '::ERROR::' + error + '::' + elements[i].className);
			
			//CHECK FOR DATETIME
			if(thiserror == false) {
				if(elements[i].className.indexOf('datetime') != -1 && document.getElementById(elements[i].name+'_year').value != '' && document.getElementById(elements[i].name+'_month').value != ''  && document.getElementById(elements[i].name+'_day').value != '') {
					//alert('DATETIME::' + elements[i].name + '::' + elements[i].value);
					elements[i].value = document.getElementById(elements[i].name+'_year').value + '-' 
					+ document.getElementById(elements[i].name+'_month').value + '-' 
					+ document.getElementById(elements[i].name+'_day').value + ' ' 
					+ document.getElementById(elements[i].name+'_hour').value + ':' 
					+ document.getElementById(elements[i].name+'_minute').value + ' ' 
					+ document.getElementById(elements[i].name+'_meridian').value;
					//alert(elements[i].name + '::' + elements[i].value);
				}
			}
			
			//CHECK FOR TIME
			if(thiserror == false) {
				if(elements[i].className.indexOf(' time') != -1 && document.getElementById(elements[i].name+'_hour').value != '' && document.getElementById(elements[i].name+'_minute').value != ''  && document.getElementById(elements[i].name+'_meridian').value != '') {
					//alert('DATETIME::' + elements[i].name + '::' + elements[i].value);
					elements[i].value = document.getElementById(elements[i].name+'_hour').value + ':' 
					+ document.getElementById(elements[i].name+'_minute').value + ' ' 
					+ document.getElementById(elements[i].name+'_meridian').value;
					//alert(elements[i].name + '::' + elements[i].value);
				}
			}
			
			//CHECK FOR DATE
			if(thiserror == false) {
				
				if(elements[i].className.indexOf('date') != -1 && elements[i].className.indexOf('datetime') == -1) {
					//alert('DATE::' + elements[i].name + '::' + elements[i].value);
					if(document.getElementById(elements[i].name+'_year').value != '' && document.getElementById(elements[i].name+'_month').value != ''  && document.getElementById(elements[i].name+'_day').value != '') {
						elements[i].value = document.getElementById(elements[i].name+'_year').value + '-' 
						+ document.getElementById(elements[i].name+'_month').value + '-' 
						+ document.getElementById(elements[i].name+'_day').value;
						//alert(elements[i].name + '::' + elements[i].value);
					}
				}
			}
			
			//CHECK FOR PHONE
			if(thiserror == false) {
				
				if(elements[i].className.indexOf('phone') != -1 && document.getElementById(elements[i].name+'_area').value != '' && document.getElementById(elements[i].name+'_prefix').value != ''  && document.getElementById(elements[i].name+'_suffix').value != '') {
					elements[i].value = document.getElementById(elements[i].name+'_area').value 
					+ document.getElementById(elements[i].name+'_prefix').value 
					+ document.getElementById(elements[i].name+'_suffix').value;
					//alert(elements[i].name + '::' + elements[i].value);
				}
			}
			
			//CHECK FOR REQUIRED
			if(elements[i].className.indexOf('required') != -1) {
				//alert('checking required::' + elements[i].name);
				if(elements[i].value == '') {
					strerror += '<li><strong>' + elements[i].id + '</strong> is required</li>';
					thiserror = true;
					error = thiserror;
					//continue;
				}
			}
			
			//CHECK FOR CONFIRM
			if(thiserror == false) {
				if(elements[i].className.indexOf('confirm') != -1) {
					//alert('checking confirm::' + elements[i].name);
					if(elements[i].value != document.getElementById('confirm_' + elements[i].id).value) {
						strerror += '<li><strong>' + elements[i].id + 's</strong> do not match</li>';
						thiserror = true;
						error = thiserror;
						//continue;
					}
				}
			}
			
			//CHECK FOR FILETYPE
			if(thiserror == false) {
				if(elements[i].className.indexOf('file') != -1 && elements[i].value.length) {
					var types = elements[i].className.substring(elements[i].className.indexOf('types_')+6);
					types = types.split(' ');
					types = types[0];
					
					var ending =  elements[i].value.substring(elements[i].value.lastIndexOf('.')+1);
					ending = ending.toLowerCase();
					//alert('checking file::' + types + '::' + ending);
					
					if(types.indexOf('||' + ending + '||') == -1) {
						dispTypes = types.split('||');
						dispTypes = dispTypes.join('<br/>');
						strerror += '<li><strong>' + elements[i].value.substr(elements[i].value.lastIndexOf('/')+1) 
						+ '</strong> is not a valid file type.  You can upload the following types of files:' + dispTypes + '</li>';
						//elements[i].value = '';
						thiserror = true;
						error = thiserror;
					}
				}
			}
			
			//CHECK FOR PATTERN
			if(thiserror == false) {
				if(elements[i].className.indexOf('regex_') != -1) {
					//alert('checking pattern::' + elements[i].name);
					var pos = elements[i].className.indexOf('regex_');
					var regex = elements[i].className.substring(elements[i].className.indexOf('regex_'));
					pos = regex.indexOf(' ');
					if(pos > 0) {
						regex = regex.substring(0, pos);
					}
					regex = regex.substring(regex.indexOf('regex_')+6);		
					eval('regex = /' + regex + '/;');
				
					if(!regex.test(elements[i].value)) {
						strerror += '<li><strong>' + elements[i].id + '</strong> is invalid</li>';
						thiserror = true;
						error = thiserror;
						//continue;
					}
				}
			}
			
			//CHECK FOR UNIQUENESS
			if(thiserror == false) {
				if(elements[i].className.indexOf('unique') != -1) {
					//alert('checking uniqueness::' + elements[i].name);
			  		var xhReq = new XMLHttpRequest();
			  		var x = "/services/isunique/?publickey=" + document.getElementById('publickey').value + "&output_format=json&type=" + document.getElementById('type').value + "&field=" +elements[i].name + "&value=" + escape(elements[i].value) + "&guid=" + objForm.elements['guid'].value;
			  		
			  		//alert('urlx::'+x);
			  		//return false;
			  		//window.open(x);
			  		
			  		xhReq.open("GET",x, false);
			  		xhReq.send(null);
			  		eval('serverResponse = ' + xhReq.responseText);
			  		
			  		if(serverResponse.returnVal == 'FALSE') {
			  			strerror += '<li>That <strong>' + elements[i].id + '</strong> is already taken</li>';
			  			thiserror = true;
						error = thiserror;
						//continue;
 			  		}
 			  		
 			  		//strerror += '<li>That <strong>' + elements[i].id + '</strong> is already taken</li>';
			  		//thiserror = true;
					//error = thiserror;
 			 	}
			}
		}
		
	}
	
	
	if(error == true) {
		strerror = 'We\'re sorry. We couldn\'t process your form for the following reasons:<ul>' + strerror + '</ul>';
		//alert(strerror);
		document.getElementById('errorDiv').className = 'errordiv';
		document.getElementById('errorDiv').innerHTML = strerror;
		return false;
	} else {
		//objForm.submit();
		// inhtml = "<div style='position: absolute;  left: 200px; top: 200px;'><img src='/images/wait.gif'></div>";
		//inhtml = "<img src='/images/wait.gif'>";
		if(document.getElementById('wait')) {
		//document.getElementById('wait').innerHTML = inhtml;
		}
		// document.getElementById('wait').style.visibility = "visible";
		return true;
	}
	
}
