
function validate(form) {	

	var self = this;

	color_error = '#e51d20';
	color = '#663300';
	
	this.addInputField = function (id,pattern){
	
		if (typeof inputFields == 'undefined') inputFields = new Array();
		
		i = inputFields.length;

		inputFields[i] = new Object();
		inputFields[i]['id'] = id;
		inputFields[i]['pattern'] = pattern;
	}

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

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

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

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

	this.addSelectBox = function (id,label){
	
		if (typeof selectBoxes == 'undefined') selectBoxes = new Array();
		
		i = selectBoxes.length;

		selectBoxes[i] = new Object();
		selectBoxes[i]['id'] = id;
		selectBoxes[i]['label'] = label;
	}

	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.checkSelectBox= function(id){
	
		if (document.getElementById(id).value == ''){
			
			return false;

		}else return true;

	}

	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.checkInput = function(){
	
		var error = 0;
		
		if (typeof inputFields != 'undefined'){
	
			for (var i = 0; i < inputFields.length; i++) {
				
				if (!self.checkInputField(inputFields[i]['id'],inputFields[i]['pattern'])){
				
					document.getElementById(inputFields[i]['id']).style.border = '1px solid ' + color_error;
					document.getElementById(inputFields[i]['id']).style.margin.top = '2px';
					document.getElementById(inputFields[i]['id'] + '_label').style.color = color_error;
					error = 1;

				}
				else{
					document.getElementById(inputFields[i]['id']).style.border = '1px solid #663300';
					document.getElementById(inputFields[i]['id'] + '_label').style.color = color;
					document.getElementById(inputFields[i]['id']).style.margin.top = '-4px';

				}
			}

		}

		if (typeof checkBoxes != 'undefined'){
	
			for (var i = 0; i < checkBoxes.length; i++) {
				
				if (!self.checkCheckBox(checkBoxes[i]['id'])){
				
					document.getElementById(checkBoxes[i]['id'] + '_label').style.color = color_error;
					link = document.getElementById(checkBoxes[i]['id'] + '_label').getElementsByTagName('a');
					link[0].style.color = color_error;
					error = 1;

				}
				else{

					document.getElementById(checkBoxes[i]['id'] + '_label').style.color = color;
					link = document.getElementById(checkBoxes[i]['id'] + '_label').getElementsByTagName('a');
					link[0].style.color = color;	
				}

			}

		}

		if (typeof selectBoxes != 'undefined'){
	
			var selecterror = 0;		
	
			for (var i = 0; i < selectBoxes.length && selecterror != 1; i++) {
				
				if (!self.checkSelectBox(selectBoxes[i]['id'])){
				
					document.getElementById(selectBoxes[i]['label'] + '_label').style.color = color_error;
					selecterror = 1;
					error = 1;

				}
				else{

					document.getElementById(selectBoxes[i]['label'] + '_label').style.color = color;

				}

			}

		}

		if (typeof radioButtons != 'undefined'){

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

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

					for (var j = 1; document.getElementById(radioButtons[i]['id'] + j); j++){
							
						document.getElementById(radioButtons[i]['id'] + j + '_label').style.color = color_error;
	
					}
					error = 1;

				}else{

					for (var j = 1; document.getElementById(radioButtons[i]['id'] + j); j++){
							
						document.getElementById(radioButtons[i]['id'] + j + '_label').style.color = color;
	
					}

				}

			}
		}

		if (error != 0){
		
			document.getElementById('errormsg').style.color = color_error;
			document.getElementById('errormsg').style.display = 'block';

		}else document.getElementById(form).submit();

	}

}