(function ($) {
$.fn.formUtils = function(options) {
	var opts = $.extend({}, $.fn.formUtils.defaults, options);
	return this.each(function(){
	});	
};
$.fn.fieldHighlight = function(options) {
	var opts = $.extend({}, $.fn.formUtils.defaults, options);
	return this.each(function(){
		$('#' + opts.formID + ' input:text,#' + opts.formID + ' input:password,#' + opts.formID + '  textarea').each(function(index) {
			var defaultVal = $(this).attr('def_val');

			$(this).blur(function() {
				$(this).removeClass('highlightActiveInput');
				if ($(this).val() == "") // reset default value if user is just tabbing through
					$(this).val(defaultVal);
			});
			$(this).focus(function() {
				$(this).addClass('highlightActiveInput');
				if ($(this).val() == defaultVal)
					$(this).val('');

				/* turn off any error messages being displayed */
				var rt_message = $(this).attr('rt_message'); 	
				if (rt_message)
					if ($(this).attr('rt_useVisible') == 'true')
						$('#' + rt_message).addClass('visible');
					else
						$('#' + rt_message).addClass('hidden');
			});
		});
	});
};

$.fn.checkFieldOnKeyPress = function(options) {
	var opts = $.extend({}, $.fn.formUtils.defaults, options);
	return this.each(function(){
		$(this).keypress(function (ev) {
			var reStr = $(this).attr("rt_allowed");
			if (reStr == undefined) return true;

			var code = ev.which;
			var c = String.fromCharCode(ev.which);
			
			var tolong = false;
			// get msg elem to show when test fails
			var msgID = $(this).attr("rt_message");
			var msgText = $(this).attr("rt_text");
			var msgLength = $(this).attr("rt_length");
			// get the regex ruleset; don't filter if it's empty
			if (msgLength) {
			    if ($(this).val().length > msgLength) {
			    	str = $(this).val(); 
			    	$(this).val(str.substring(0, msgLength));
    			    //msgText = "A maximum of " + msgLength + " characters allowed."; 
			    msgText = _VARS.max_len_warning_text.max + msgLength + _VARS.max_len_warning_text.chars;
    			    tolong = true;
    			}
			}

			// don't filter control keys (FF sets charCode to 0 for function keys)
			var keySafe = ((ev.charCode == 0) || (ev.ctrlKey || ev.altKey) || (code < 32));
		
			keySafe = (keySafe || reStr == "");

			// test the regex rule
			var legalChars = new RegExp(reStr);
			var keySafe = (keySafe || legalChars.test(c));
		
			if (tolong) {
		    	keySafe = false;
			}
			
			if (!keySafe) {
				// show/hide the fail msg
				$('#' + msgID).empty().html(msgText);
				
				/* turn off any error messages being displayed */
				if ($(this).attr('rt_useVisible') == 'true')
					$('#' + msgID).removeClass('visible');
				else
					$('#' + msgID).show();
				 
				// eat event
				if (ev.preventDefault) ev.preventDefault();
				if (ev.returnValue) ev.returnValue = false;
				return false;
			}

			/* turn off any error messages being displayed */
			if ($(this).attr('rt_useVisible') == 'true')
				$('#' + msgID).addClass('visible');
			else
				$('#' + msgID).hide();
			
			
			return true;
		});
	});
};
/*
$.fn.validateForm = function(options) {
	var opts = $.extend({}, $.fn.formUtils.defaults, options);
	return this.each(function(){
		$('#formAdd input:text, #formAdd input:password, #formAdd input:checkbox').each(function() {
			if (!validate($(this))) {
				return false;
			}
			return true; 
		});
	});
};


$.fn.validateField = function(options) {
	var opts = $.extend({}, $.fn.formUtils.defaults, options);
	return this.each(function(){
		this.init = function() {
			$('#formAdd input:text,#formAdd input:password').blur(function() {
				validate($(this));
			});
		};
		this.init();
	});
};
		function validate(el) {
			var fieldName = el.attr('name');
			var fieldVal  = el.val();
			var errField  = el.attr('rt_message');

			if ((el.attr('type') != 'checkbox') &&  fieldVal == '') {
				displayErrorMsg(errField,'Field may not be blank.');
				return false;
			}
 
 			switch (fieldName) {
				case 'name':
					if ($('#nameChecked').val() != fieldVal && errField) {
						$('#nameChecked').val(fieldVal);
						$.get('user_register_check.php',"n=" + fieldVal + "&checkfield=true",function(data) {
							if (!fieldChecked(data,errField, 'User Name ' + fieldVal + ' already taken.')) return false;
						});
					}
					break;
				case 'password1':
					if (fieldVal.length < 4) {
						displayErrorMsg(errField,'Passwords must be at least 4 characters long.');
						return false;
					}
					break;
				case 'password2':
					if ($('#password1').val() != fieldVal) {
						displayErrorMsg(errField,'Passwords must match.');
						return false;
					}
					break;
				case 'email':
					if (!filter.test(fieldVal)) {
						displayErrorMsg(errField,'Email address must be valid.');
						return false;
					}
					var checkEmail = $(el).attr('rt_checkEmail');
					checkEmail = true;
					if ($('#emailChecked').val() != fieldVal && checkEmail) {
						$('#emailChecked').val(fieldVal);
						$.get('user_register_check.php',"e=" + fieldVal + "&checkfield=true",function(data) {
							if (!fieldChecked(data,errField, 'Email address ' + fieldVal + ' in Use.')) return false;
						});
					}
					break;
				case 'email2':
					if (!filter.test(fieldVal)) {
						displayErrorMsg(errField,'Email address must be valid.');
						return false;
					}
					if ($('#email').val() != fieldVal) {
						displayErrorMsg(errField,'Email addresses must match.');
						return false;
					}
					break;
				case 'UA':
					if ($('#UA').attr('checked') == false) {
						displayErrorMsg(errField,'User agreement box must be checked.');
						return false;
					}
					break;
				default:
					break;		
			}
			$('#' + errField).hide();
			return true;
		}

		function fieldChecked (data, el, msg) {
		    if (data.match(/SUCCESS/) && (data.indexOf(1) > 0)) {
				$('#' + el).html(msg);
				$('#' + el).show();
				return false;
	    	}
			$('#' + el).hide();
			return true;
		}
		
		function displayErrorMsg (el, msg) {
			$('#' + el).empty().html(msg);
			$('#' + el).show();
			return true;
		}
*/
$.fn.formUtils.defaults = {
    formID: ''
};
})(jQuery); 