if(typeof ($.DM) == "undefined") {
	$.DM = Object;
}

$.DM.validateForm = {
	
	fieldsArray: null,
	messageFadeIn: true,
	messageFadeOut: false,
	
	validate: function() {
		var validated = true;
		for(field in $.DM.validateForm.fieldsArray) {	
			var passed = $.DM.validateForm.checkField(field);
			if (!passed) validated = false;
		}
		return validated;
	},
	
	checkField: function(field) {
		
		var feedback = $.DM.validateForm.fieldsArray[field][0];
		var invalid = $.DM.validateForm.fieldsArray[field][1];
		
		var error = 0;
		var email = (typeof(invalid) != 'undefined');
		var field_obj = document.getElementById(field);
		
		if(!$.DM.validateForm.isFilled(field_obj)) {			
			error = feedback;
		} else {
			if(email) {
				if (!$.DM.validateForm.isEmail(field_obj)) {
					error = invalid;
				}
			}
		}
		
		if (error != 0) {
			$.DM.validateForm.clearfeedback(field_obj);
			$.DM.validateForm.addfeedback(error,field_obj);
			return false;
		} else {
			$.DM.validateForm.clearfeedback(field_obj);
			return true;	
		}

		return false;
	},
	
	isFilled: function(x,i) {
		if(x.nodeName == "SELECT" ) {
			return (x.options[x.selectedIndex].value == 0 ? false : true) 
		} else {
			return (x.value.length < 1 ? false : true);
		}		
	},
	
	isEmail: function(field) {
		var regEx = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
		return (field.value.indexOf("@") == -1 || field.value.indexOf(".") == -1 || !field.value.match(regEx) ? false : true);
	},
	
	addfeedback: function(feedback,field) {
		$(field).addClass('error').parent().addClass('error');
		if($.DM.validateForm.messageFadeIn) {
			$(field).parent().find('label').append('<em>' + feedback + '</em>').find('.message').hide().fadeIn('slow');	
		} else {
			$(field).parent().find('label').append('<em>' + feedback + '</em>');	
		}
			
	},
	
	clearfeedback: function(field) {
		$(field).removeClass('error');
		$(field).parent().removeClass('error');
		if($.DM.validateForm.messageFadeOut) {
			$(field).parent().find('.message').fadeTo('slow',0.01, function() {
				$(this).remove();																	   
			});
		} else {
			$(field).parent().find('.message').remove();	
		}
	}
	
}


