var control = Class.create({
	initialize: function(control, control2, type, div, message) {
    this.control_name = control;
    this.control_name2 = control2;
    this.control_type = type;
    this.div_name = div;
    this.error_msg = message;
  }
});

var validator = Class.create({
	initialize: function() {
  		this.controls = new Array();
  	},
	
  	// ADD CONTROL INFORMATION TO ARRAY
  	addControl: function(controlName, controlName2, controlType, divName, message) {
  		this.controls[this.controls.length]=  new control(controlName, controlName2, controlType, divName, message);
  	},
	
  	// LOOP THROUGH ARRAY FOR EACH CONTROL
	validate: function() {
		returnValue = new Array();
		for(var i = 0; i < this.controls.length; i++)
		{
			var imageUrl = "<img src='static/images/error.png' style='margin-bottom:-1px' title='";
			var vControl = this.controls[i];
			if (vControl.control_type == 'textA') {
				var controlValue = nicEditors.findEditor(vControl.control_name).getContent();
				controlValue = controlValue.strip();
			}
			else {
				var controlValue = document.getElementById(vControl.control_name).value;
				controlValue = controlValue.strip();
			}
			
			
			// VALIDATE COMBO BOXES
			if (vControl.control_type == 'sel') {
						
				// CHECK FOR BLANK FIELD
				if (controlValue == '' || controlValue == '0') {
					var errorMsg = imageUrl + "Select a " + vControl.error_msg + "'/>";
					document.getElementById(vControl.div_name).innerHTML = errorMsg;
					document.getElementById(vControl.control_name).focus();
					returnValue[i] = false;
				}
				else {
					document.getElementById(vControl.div_name).innerHTML = "";
					returnValue[i] = true;
				}
			}
			
			// VALIDATE TEXTAREA CONTROLS
			if (vControl.control_type == 'textA') {	
						
				// CHECK FOR BLANK FIELD
				if (controlValue == '<br>' || controlValue == '' || controlValue == '&nbsp;') {
					var errorMsg = imageUrl + vControl.error_msg + " is required'/>";
					document.getElementById(vControl.div_name).innerHTML = errorMsg;
					document.getElementById(vControl.control_name).focus();
					returnValue[i] = false;
				}
				else if (controlValue.length > '900'){
					var errorMsg = imageUrl + vControl.error_msg + " should be less than 1000 characters'/>";
					document.getElementById(vControl.div_name).innerHTML = errorMsg;
					document.getElementById(vControl.control_name).focus();
					returnValue[i] = false;
				}
				else {
					document.getElementById(vControl.div_name).innerHTML = "";
					returnValue[i] = true;
				}
			}
			
			// VALIDATE NUMBER CONTROLS
			if (vControl.control_type == 'num') {

				// CHECK FOR BLANK FIELD
				if (controlValue == '') {
					var errorMsg = imageUrl + vControl.error_msg + " is required'/>";
					document.getElementById(vControl.div_name).innerHTML = errorMsg;
					document.getElementById(vControl.control_name).focus();
					returnValue[i] = false;
				}
				// CHECK FOR NON-NUMERIC VALUE
				else if (isNaN(controlValue)){
					var errorMsg = imageUrl + vControl.error_msg + " must be a number'/>";
					document.getElementById(vControl.div_name).innerHTML = errorMsg;
					document.getElementById(vControl.control_name).focus();
					returnValue[i] = false;
				}
				else {
					document.getElementById(vControl.div_name).innerHTML = "";
					returnValue[i] = true;
				}
			}
			
			// VALIDATE TEXT CONTROLS
			if (vControl.control_type == 'text') {
							
				// CHECK FOR BLANK FIELD
				if (controlValue == '') {
					var errorMsg = imageUrl + vControl.error_msg + " is required'/>";
					document.getElementById(vControl.div_name).innerHTML = errorMsg;
					document.getElementById(vControl.control_name).focus();
					returnValue[i] = false;
				}
				// CHECK FOR MIN LENGTH
				else if (controlValue.length < 3) {
					var errorMsg = imageUrl + vControl.error_msg + " must be at least 3 characters'/>";
					document.getElementById(vControl.div_name).innerHTML = errorMsg;
					document.getElementById(vControl.control_name).focus();
					returnValue[i] = false;
				}
				else {
					document.getElementById(vControl.div_name).innerHTML = "";
					returnValue[i] = true;
				}
			}
			
			// VALIDATE PASSWORD CONTROLS
			if (vControl.control_type == 'pwd') {
						
				// CHECK FOR BLANK FIELD
				if (controlValue == '') {
					var errorMsg = imageUrl + vControl.error_msg + " is required'/>";
					document.getElementById(vControl.div_name).innerHTML = errorMsg;
					document.getElementById(vControl.control_name).focus();
					returnValue[i] = false;
				}
				// CHECK FOR MIN LENGTH
				else if (controlValue.length < 6) {
					var errorMsg = imageUrl + vControl.error_msg + " must be at least 6 characters'/>";
					document.getElementById(vControl.div_name).innerHTML = errorMsg;
					document.getElementById(vControl.control_name).focus();
					returnValue[i] = false;
				}
				else {
					document.getElementById(vControl.div_name).innerHTML = "";
					returnValue[i] = true;
				}
			}
			
			// VALIDATE CONFIRM PASSWORD CONTROLS
			if (vControl.control_type == 'confirm') {
				var controlValue2 = document.getElementById(vControl.control_name2).value;
				
				// CHECK FOR BLANK FIELD
				if (controlValue == '') {
					var errorMsg = imageUrl + vControl.error_msg + " is required'/>";
					document.getElementById(vControl.div_name).innerHTML = errorMsg;
					document.getElementById(vControl.control_name).focus();
					returnValue[i] = false;
				}
				// CHECK THAT BOTH PASSWORDS MATCH
				else if (controlValue != controlValue2) {
					var errorMsg = imageUrl + vControl.error_msg + "s dont match'/>";
					document.getElementById(vControl.div_name).innerHTML = errorMsg;
					document.getElementById(vControl.control_name).focus();
					returnValue[i] = false;
				}
				else {
					document.getElementById(vControl.div_name).innerHTML = "";
					returnValue[i] = true;
				}
			}
			
			// VALIDATE EMAIL CONTROLS
			if (vControl.control_type == 'email') {
			
				var splitted = controlValue.match("^(.+)@(.+)$");
				var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
				var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
				
				// CHECK FOR BLANK FIELD
				if (controlValue == '') {
					var errorMsg = imageUrl + "Enter an " + vControl.error_msg + "'/>";
					document.getElementById(vControl.div_name).innerHTML = errorMsg;
					document.getElementById(vControl.control_name).focus();
					returnValue[i] = false;
				}
				else if (splitted == null) {
					var errorMsg = imageUrl + "Enter a valid " + vControl.error_msg + "'/>";
					document.getElementById(vControl.div_name).innerHTML = errorMsg;
					document.getElementById(vControl.control_name).focus();
					returnValue[i] = false;
				}
				else if (splitted[2].match(regexp_domain) == null) {
					var errorMsg = imageUrl + "Enter a valid " + vControl.error_msg + "'/>";
					document.getElementById(vControl.div_name).innerHTML = errorMsg;
					document.getElementById(vControl.control_name).focus();
					returnValue[i] = false;
				}
				else {
					document.getElementById(vControl.div_name).innerHTML = "";
					returnValue[i] = true;
				}
			}	
			document.getElementById(vControl.div_name).style.display = 'block';	
		}
		
		
		// FINAL LOOP TO FIND OUT WHAT VALUE TO RETURN
		for(var i = 0; i < this.controls.length; i++) {
			if (returnValue[i] == false) {
				return false;
			}
		}
	}
});






