// FORM VALIDATION
function FormValidation(FormObject,RequiredColor,Color,ValidationRequiredClass,ValidationClass,ValidationPostfix,ValidationMessageID,DefaultValues) {

	var Validation = true;

	for (var i = 0; i < FormObject.length; i++) {
		if (FormObject[i].id.match('RQ')) {
				
				// EMAIL
				if (FormObject[i].id.match('Email')) {
					var ValidateEmail = FormObject[i].value.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi);
					if (!ValidateEmail) {
					FromValidationFalse('',FormObject[i].id,FormObject[i],RequiredColor,Color,ValidationRequiredClass,ValidationClass,ValidationPostfix);
					Validation = false;
					}
				} 			

				// RADIO BUTTONS
				else if (FormObject[i].type == 'radio') {	
					var ValidateRadioButton = false;
					for(var r=0; r < FormObject[FormObject[i].name].length; r++) {
						if(FormObject[FormObject[i].name][r].checked) {
						ValidateRadioButton = true;
						break;
						}
					}	

					if (!ValidateRadioButton) {
					FromValidationFalse('',FormObject[i].id,FormObject[i],RequiredColor,Color,ValidationRequiredClass,ValidationClass,ValidationPostfix);
					Validation = false;
					}
				}				

				// CHECKBOX	
				else if (FormObject[i].type == 'checkbox') {
					var ValidateRadioButton = false;
					for(var r=0; r < FormObject[FormObject[i].name].length; r++) {
						if(FormObject[FormObject[i].name][r].checked) {
						ValidateRadioButton = true;
						break;
						}

					}	

					if (!ValidateRadioButton) {
					FromValidationFalse('',FormObject[i].id,FormObject[i],RequiredColor,Color,ValidationRequiredClass,ValidationClass,ValidationPostfix);
					Validation = false;
					}	
				}					

				// SELECT 
				else if (FormObject[i].type == 'select-one' || FormObject[i].type == 'select') {
					if (FormObject[i].value == '') {
					FromValidationFalse('',FormObject[i].id,FormObject[i],RequiredColor,Color,ValidationRequiredClass,ValidationClass,ValidationPostfix);
					Validation = false;
					}
				}				

				// FILE 
				else if (FormObject[i].type == 'file') {
					if (FormObject[i].value == '') {
					FromValidationFalse('',FormObject[i].id,FormObject[i],RequiredColor,Color,ValidationRequiredClass,ValidationClass,ValidationPostfix);
					Validation = false;
					}	
				}			

				// TEXT & TEXT AREA
				else if (FormObject[i].type == 'password' || FormObject[i].type == 'text' || FormObject[i].type == 'textarea' || FormObject[i].type == 'hidden') {					

					// NUMBER OF CHARECTERS
					if (FormObject[i].id.match('#')) {
						var ObjectParts = FormObject[i].id.split('#');
						if (FormObject[i].value.length != parseInt(ObjectParts[1])) {
						FromValidationFalse('',ObjectParts[0].replace('_',''),FormObject[i],RequiredColor,Color,ValidationRequiredClass,ValidationClass,ValidationPostfix);
						Validation = false;
						}
					} 					

					else if (FormObject[i].value == '' || (FormObject[i].value == FormObject[i].defaultValue && DefaultValues)) {
						FromValidationFalse('',FormObject[i].id,FormObject[i],RequiredColor,Color,ValidationRequiredClass,ValidationClass,ValidationPostfix);
						Validation = false;
					}				

					// CONFIRM
					else if (document.getElementById(FormObject[i].id+'_Confirm')) {
						if (document.getElementById(FormObject[i].id+'_Confirm').value != FormObject[i].value ) {
						FromValidationFalse('',FormObject[i].id+'_Confirm',document.getElementById(FormObject[i].id+'_Confirm'),RequiredColor,Color,ValidationRequiredClass,ValidationClass,ValidationPostfix);
						Validation = false;
						}
					}
				}

		}

		// VERIFICATION
		if (FormObject[i].name == 'Verification') {
			if (FormObject[i].value == '') {
			FromValidationFalse('',FormObject[i].name,FormObject[i],RequiredColor,Color,ValidationRequiredClass,ValidationClass,'_Title');
			Validation = false;
			} else if (FormObject[i].value != '5') {
			FromValidationFalse('',FormObject[i].name,FormObject[i],RequiredColor,Color,ValidationRequiredClass,ValidationClass,'_Title');
			Validation = false;
			}
		}	
		
		// VERIFICATION
		if (FormObject[i].name == 'Verification') {
			if (FormObject[i].value == '') {
			FromValidationFalse('',FormObject[i].name,FormObject[i],RequiredColor,Color,ValidationRequiredClass,ValidationClass,'_Title');
			Validation = false;
			} else if (FormObject[i].value != '5') {
			FromValidationFalse('',FormObject[i].name,FormObject[i],RequiredColor,Color,ValidationRequiredClass,ValidationClass,'_Title');
			Validation = false;
			}
		}	

	}	

	// VALIDATION WARNING
	if (ValidationMessageID != '' && document.getElementById(ValidationMessageID)) {
		if (!Validation) {
		document.getElementById(ValidationMessageID).style.display = "block";
		} else {
		document.getElementById(ValidationMessageID).style.display = "none";
		}
	} 
	
	// RETURN
	if (FormObject.action.match('iframe')) {
		if(Validation) {
			var PostFrameName = 'postframe'+new Date().getTime();			
			//FormObject.innerHTML += '<iframe name="'+PostFrameName+'" frameborder="0" scrolling="no" width="0" height="0" style="visibility:hidden" ></iframe>';			
			var FormIframe = document.createElement("IFRAME");			
			FormIframe.name = PostFrameName;
			FormIframe.frameborder = "0";
			FormIframe.scrolling = "no";
			FormIframe.width = "0";
			FormIframe.height = "0";
			FormIframe.style.visibility = "hidden"
			FormObject.appendChild(FormIframe);			
			FormObject.target = PostFrameName;
		}
		return Validation;
	} else {
		return Validation;
	}
}

// FORM RESPONSE
function FormValidationButton(FormObject,RequiredColor,Color,ValidationRequiredClass,ValidationClass,ValidationPostfix,ValidationMessageID,DefaultValues) {
	if (FormValidation(FormObject,RequiredColor,Color,ValidationRequiredClass,ValidationClass,ValidationPostfix,ValidationMessageID,DefaultValues)) {
		FormObject.submit();	
	}
}

// FORM RESPONSE
function FormResponse(FrameObject,ID) {
	document.getElementById('formcreator'+ID).innerHTML = window.frames[FrameObject].document.getElementById('message').value;
	location.href = location.href+'#f'+ID;
}

// MARK FAILED OBJECT
function FromValidationFalse(Type,ObjectID,FormObject,RequiredColor,Color,ValidationRequiredClass,ValidationClass,ValidationPostfix) {
	
	if (RequiredColor != '' && document.getElementById(ObjectID+ValidationPostfix)) {	
		document.getElementById(ObjectID+ValidationPostfix).style.color = RequiredColor;
	}	
	
	if (Color != '' && document.getElementById(ObjectID+ValidationPostfix)) {
		if (FormObject.defaultValue != '') {
		FormObject.onfocus = new Function("if(this.value==this.defaultValue) this.value='';document.getElementById('"+ObjectID+ValidationPostfix+"').style.color = '"+Color+"'");	
		} else {
		FormObject.onfocus = new Function("document.getElementById('"+ObjectID+ValidationPostfix+"').style.color = '"+Color+"'");
		}
	}
		
	if (ValidationRequiredClass != '' && document.getElementById(ObjectID+ValidationPostfix)) {	
		document.getElementById(ObjectID+ValidationPostfix).className = ValidationRequiredClass;
	}
	
	if (ValidationClass != '' && document.getElementById(ObjectID+ValidationPostfix)) {
		if (FormObject.defaultValue != '') {
		FormObject.onfocus = new Function("if(this.value==this.defaultValue) this.value='';document.getElementById('"+ObjectID+ValidationPostfix+"').className = '"+ValidationClass+"'");	
		} else {
		FormObject.onfocus = new Function("document.getElementById('"+ObjectID+ValidationPostfix+"').className = '"+ValidationClass+"'");
		}
	} else if (ValidationRequiredClass != '' && document.getElementById(ObjectID+ValidationPostfix)) {
		if (FormObject.defaultValue != '') {
		FormObject.onfocus = new Function("if(this.value==this.defaultValue) this.value='';document.getElementById('"+ObjectID+ValidationPostfix+"').className = ''");	
		} else {
		FormObject.onfocus = new Function("document.getElementById('"+ObjectID+ValidationPostfix+"').className = ''");
		}
	}
	
}



// CLEAN INPUT
function FormCleanInput(Type,FormObject) {
	if (Type == 'Numbers') {
	var CleanValue = FormObject.value.replace (/[~|%|^|*|(|)|{|}|:|;|\"|\'<|>|,|\/|`|\||\\|\-|]/gi,''); 
	CleanValue = CleanValue.replace (/[a-zA-Z]/gi,''); 	
	}	
FormObject.value = CleanValue;	
}
