


function validate(form) {	

	var border = true;

	errortype=new Array();
	
	var colors = new Object();
	colors['error'] = new Object();
	colors['default'] = new Object();
	
	colors['error']['label'] = '#ff144f';
	colors['error']['border'] = '#ff144f';
	colors['default']['label'] = '#000000';
	colors['default']['border'] = '#000000';
	
	/* ADDED */
	colors['error']['background'] = '#ff0000';
	colors['default']['background'] = '#ffffff';

	var self = this;
	if (typeof inputFields == 'undefined') inputFields = new Object();
	if (typeof inputFieldGroup == 'undefined') inputFieldGroup = new Object();	
	if (typeof selectBoxes == 'undefined') selectBoxes = new Object();
	if (typeof checkBoxes == 'undefined') checkBoxes = new Object();
	if (typeof radioButtons == 'undefined') radioButtons = new Object();
	if (typeof checkBoxGroup == 'undefined') checkBoxGroup = new Object();


	this.setBorder = function(flag){
		border=flag;
	}
	
	this.setLabelColor = function(defaultcolor,errorcolor){
		
		colors['error']['label'] = errorcolor;
		colors['default']['label'] = defaultcolor;
	}
	
	this.setBorderColor = function(defaultcolor,errorcolor){
		
		colors['error']['border'] = errorcolor;
		colors['default']['border'] = defaultcolor;
	}	
	
	this.setBackgroundColor = function(defaultcolor,errorcolor){
		
		colors['error']['background'] = errorcolor;
		colors['default']['background'] = defaultcolor;
	}	

	this.addInputField = function (id,pattern){
	
		if (typeof inputFields[form] == 'undefined') inputFields[form] = new Array();
		
		i = inputFields[form].length;

		inputFields[form][i] = new Object();
		inputFields[form][i]['id'] = id;
		inputFields[form][i]['pattern'] = pattern;
	}
	
	this.addInputFieldGroup = function (id,pattern,group){
		
		if (typeof inputFieldGroup[form] == 'undefined') inputFieldGroup[form] = new Array();	
		if (typeof inputFieldGroup[form][group] == 'undefined') inputFieldGroup[form][group] = new Array();
		
		i = inputFieldGroup[form][group].length;

		inputFieldGroup[form][group][i] = new Object();
		inputFieldGroup[form][group][i]['id'] = id;
		inputFieldGroup[form][group][i]['pattern'] = pattern;
	}	

	this.addSelectBox = function (id){
	
		if (typeof selectBoxes[form] == 'undefined') selectBoxes[form] = new Array();
		
		i = selectBoxes[form].length;

		selectBoxes[form][i] = new Object();

		selectBoxes[form][i]['id'] = id;

	}
	
	this.addCheckBox = function (id){
	
		if (typeof checkBoxes[form] == 'undefined') checkBoxes[form] = new Array();
		
		i = checkBoxes[form].length;

		checkBoxes[form][i] = new Object();
		checkBoxes[form][i]['id'] = id;
	}
	
	this.addCheckBoxGroup = function (id, group){

		if (typeof checkBoxGroup[form] == 'undefined') checkBoxGroup[form] = new Array();
		if (typeof checkBoxGroup[form][group] == 'undefined') checkBoxGroup[form][group] = new Array();
		
		i = checkBoxGroup[form][group].length;

		checkBoxGroup[form][group][i] = new Object();
		checkBoxGroup[form][group][i]['id'] = id;
	}	

	this.addRadioButton = function (id){
	
		if (typeof radioButtons[form] == 'undefined') radioButtons[form] = new Array();
		
		i = radioButtons[form].length;

		radioButtons[form][i] = new Object();
		radioButtons[form][i]['id'] = id;
	}	

	this.checkInputField = function(id,pattern){
	
		var reg = new RegExp(pattern); 
	
		with(document.getElementById(id)){
		
			return reg.test(value); 
		}
	}
	
	this.checkCheckBox = function(id){
	
		return document.getElementById(id).checked;
	}	
	
	this.checkRadioButton = function(id){
	
		var checked = false;	
		
		for (var i = 1; document.getElementById(id + i) && checked == false; i++){
		
			if (document.getElementById(id + i).checked == true){
				
				checked = true;
			}
		}
		return checked;
	}	
	
	this.checkInputFieldGroup = function(group){
	
		grouperror = 1;
		
		for (var i = 0; i < inputFieldGroup[form][group].length && grouperror != 0; i++) {
			
			if (self.checkInputField(inputFieldGroup[form][group][i]['id'],inputFieldGroup[form][group][i]['pattern'])){
			
				grouperror = 0;
			}
		}	
		return grouperror;
	}	
	
	this.checkCheckBoxGroup = function(group){
	
		grouperror = 1;
		
		for (var i = 0; i < checkBoxGroup[form][group].length && grouperror != 0; i++) {
			
			if (self.checkCheckBox(checkBoxGroup[form][group][i]['id'])){
			
				grouperror = 0;
			}
		}	
		return grouperror;	
	}
		
	this.checkSelectBox= function(id){
	
		if (document.getElementById(id).value == ''){
			
			//alert(id);
			return false;
			

		}else return true;
	}
	
	this.changeLabelColor = function(id, labelcolor){
		
		if (document.getElementById(id + '_label')) {
		
			document.getElementById(id + '_label').style.color = labelcolor;		
		}	
	}
	
	this.changeBorderColor = function(id, bordercolor){
		
		if (document.getElementById(id) && border==true){

			document.getElementById(id).style.border = '1px solid ' + bordercolor;
		}	
	}	
	
	/* ADDED */
	
	this.changeBackgroundColor = function(id, backgroundcolor){
		
		if (document.getElementById(id)){

			document.getElementById(id).style.backgroundColor = backgroundcolor;
		}	
	}	
	
	
	
	this.hideErrorMsg = function(id){
		
		if (document.getElementById(id + "_error")){

			document.getElementById(id + "_error").style.display = 'none';
		}	
	}
	
	this.showErrorMsg = function(id){
		
		if (document.getElementById(id + "_error")){

			document.getElementById(id + "_error").style.display = 'block';
		}	
	}	
	
	this.setError = function(id){
		self.showErrorMsg(id);
		self.changeBorderColor(id, colors['error']['border']);
		
		if ((errortype[id]=="select")&&(id.indexOf("birth")>-1)){
			original_id = id;
			id = 'birthdayofyear';
			self.changeLabelColor(id, colors['error']['label']);
			id = original_id;		
		}
		else{
			self.changeLabelColor(id, colors['error']['label']);
		}
		if (errortype[id]=="select") self.changeBackgroundColor(id, colors['error']['background']);
	}
	
	this.removeError = function(id){
		self.hideErrorMsg(id);
		self.changeBorderColor(id, colors['default']['border']);
		self.changeLabelColor(id, colors['default']['label']);
		if (errortype[id]=="select") self.changeBackgroundColor(id, colors['default']['background']);
		
	}				
	
	this.checkInput = function(){
	
		var error = 0;

		if (typeof inputFields[form] != 'undefined'){
	
			for (var i = 0; i < inputFields[form].length; i++) {
				
				if (!self.checkInputField(inputFields[form][i]['id'],inputFields[form][i]['pattern'])){
				
					self.setError(inputFields[form][i]['id']);
					error = 1;
				}
				else{
					self.removeError(inputFields[form][i]['id']);
				}
			}
		}
		
		if (typeof checkBoxes[form] != 'undefined'){
	
			for (var i = 0; i < checkBoxes[form].length; i++) {
				
				if (!self.checkCheckBox(checkBoxes[form][i]['id'])){
				
					
					self.setError(checkBoxes[form][i]['id']);
					
					error = 1;
			
				}
				else{
					self.removeError(checkBoxes[form][i]['id']);
				}
			}
		}		
		
		if (typeof radioButtons[form] != 'undefined'){

			for (var i = 0; i < radioButtons[form].length; i++) {

				if (!self.checkRadioButton(radioButtons[form][i]['id'])){

					for (var j = 1; document.getElementById(radioButtons[form][i]['id'] + j); j++){

						self.setError(radioButtons[form][i][j]['id']);
					}
					error = 1;

				}else{

					for (var j = 1; document.getElementById(radioButtons[form][i]['id'] + j); j++){

						self.removeError(radioButtons[form][i][j]['id']);
					}
				}
			}
		}			
		
		if (typeof inputFieldGroup[form] != 'undefined'){
	
			var grouperror_if = 0;
			
			for (var i = 0; i < inputFieldGroup[form].length; i++) {
				
				if (self.checkInputFieldGroup(i)){

					error = 1;
					grouperror_if = 1;
				}
			}	
			if (grouperror_if==1){
			
				for (var i = 0; i < inputFieldGroup[form].length; i++) {
				
					for (var j = 0; j < inputFieldGroup[form][i].length; j++) {
					
						self.setError(inputFieldGroup[form][i][j]['id']);
					}
				}
			}else{
				
				for (var i = 0; i < inputFieldGroup[form].length; i++) {
				
					for (var j = 0; j < inputFieldGroup[form][i].length; j++) {
						
						self.removeError(inputFieldGroup[form][i][j]['id']);				
					}
				}			
			}
		}
		
		if (typeof checkBoxGroup[form] != 'undefined'){
	
			var grouperror_cb = 0;
			
			for (var i = 0; i < checkBoxGroup[form].length; i++) {
				
				if (self.checkCheckBoxGroup(i)){

					error = 1;
					grouperror_cb = 1;
				}		
			}	
			if (grouperror_cb==1){
			
				for (var i = 0; i < checkBoxGroup[form].length; i++) {
				
					for (var j = 0; j < checkBoxGroup[form][i].length; j++) {
					
						self.setError(checkBoxGroup[form][i][j]['id']);				
					}
				}
			}else{
				
				for (var i = 0; i < checkBoxGroup[form].length; i++) {
				
					for (var j = 0; j < checkBoxGroup[form][i].length; j++) {
					
						self.removeError(checkBoxGroup[form][i][j]['id']);				
					}
				}			
			}
		}
								
		if (typeof selectBoxes[form] != 'undefined'){
	
			var selecterror = 0;		
			
			//  WAS i < selectBoxes[form].length && selecterror != 1;
			for (var i = 0; i < selectBoxes[form].length; i++) {
				
				if (!self.checkSelectBox(selectBoxes[form][i]['id'])){
					errortype[selectBoxes[form][i]['id']]='select';
					self.setError(selectBoxes[form][i]['id']);
					selecterror = 1;
					error = 1;
				}
				else{
					self.removeError(selectBoxes[form][i]['id']);
				}
			}
		}
		
		//if (document.forms["com_reg"]["checkbox_r1"]){
			//alert("yes");
			
		
			if ((error != 0)||(document.forms["com_reg"]["checkbox_r1"].value=='false')){
				if (document.forms["com_reg"]["checkbox_r1"].value=='false'){
					document.getElementById("r1_check").style.border='solid 1px #ff0000';
				}else{
					document.getElementById("r1_check").style.border='0px';
				}
			}else {
				document.getElementById("r1_check").style.border='0px';
				document.getElementById(form).submit()};
			}
		//}
		
		/*
		if (!document.forms["com_reg"]["checkbox_r1"]){
			alert("else");
			if (error != 0){

			}else {document.getElementById(form).submit();}
		}
*/
	
}
