/* ## ^LICENSE AND CREDITS ####################################################### **

--- jQuery Form Validation Plugin
--- Copyright (c) 2007 Adrienne L. Travis

--- Dependencies
	Depends on the jQuery library (obviously!) 
		- Tested with version 1.1.3 and 1.2.1.
	Depends on library.matching_formatting.js.
		
--- Licensing
	Dual licensed under the MIT and GPL licenses:
	http://www.opensource.org/licenses/mit-license.php
	http://www.gnu.org/licenses/gpl.html

--- Release History
	2007/10/05 - Version 0.9
		First public release

** ############################################################################### */
 
/* ## ^MINIFIED CODE ############################################################# */

jQuery.fn.validateForm=function(A){A=jQuery.extend({changeval:true,errorposition:"inside",timeformat:24},A);return this.each(function(){var B=new Object;if(A.errorposition=="outside"){jQuery(this).prepend('<div id="errors"></div>');jQuery("#errors").hide();}if(A.changeval===true){jQuery("input[@type=text]").change(function(){var C=jQuery(this).attr("id");$.valUtils.removeError(C,A.errorposition);B[C]=$.valUtils.fieldVal(C,"format",A.timeformat);if(B[C]["errors"]>0){$.valUtils.addError(C,B[C]["text"],A.errorposition);}else{jQuery(this).attr("value",B[C]["text"]);}});}jQuery(this).submit(function(){$.valUtils.removeError("ALL",A.errorposition);jQuery("input[@type=text]").add("select").each(function(){var E=jQuery(this).attr("id");if($(this).is("input")){B[E]=$.valUtils.fieldVal(E,"parse",A.timeformat);}else{if($(this).is("select")){B[E]=$.valUtils.fieldNonTextVal(E);}}if(B[E]["errors"]>0){$.valUtils.addError(E,B[E]["text"],A.errorposition);}else{jQuery(this).attr("value",B[E]["text"]);}});var C=0;for(var D in B){C=C+=B[D].errors;}if(C>0){return false;}});});};jQuery.valUtils={fieldVal:function(I,B,A){var C=jQuery("#"+I).attr("value");var H=new Object;H.errors=0;H.text="";var G="";for(var D in thePatterns){if(jQuery("#"+I).is(".val-"+D)){G=D;}}if(jQuery("#"+I).is(".required")&&!C){H.errors=1;H.text="This field cannot be left blank! ";if(G!=""){var E="("+thePatterns[G].errortxt+".)";E=E.replace("Invalid","Must be a valid");H.text+=E;}}var F=new Object;if(C&&C!=""){if(G){if(B=="format"){F=C.thisFormat(G);}else{if(B=="parse"){F=C.thisParse(G);}}if(G=="time"&&A==12){F.parsed=thePatterns.time.settwelvehour(C);}}else{F.parsed=C;F.isvalid=true;}H.text=F.parsed;}if(H.text!=""&&!F.isvalid){H.errors=1;}return H;},fieldNonTextVal:function(A){var B=jQuery("#"+A).val();var C=new Object;C.errors=0;C.text=B;if(!B){C.text="This field cannot be left blank!";C.errors=1;}return C;},addError:function(C,B,A){if(jQuery("#"+C).is("input")){var D=jQuery("#"+C).parent("label").text();}else{if(jQuery("#"+C).is("select")){jQuery("#"+C).parent("label").clone().attr("id","tempclone").appendTo("body").hide();jQuery("#tempclone select option").remove();var D=jQuery("#tempclone").text();jQuery("#tempclone").remove();}}if(A=="inside"){jQuery("#"+C).after('<span class="errorlabel">'+B+"</span>");return true;}else{if(A=="outside"){jQuery("#errors").append('<label class="errorlabel" for="'+C+'"><span class="erroritem">'+D+'</span> <strong class="errortext">'+B+"</strong></label>");jQuery("#errors").show();return true;}else{return false;}}},removeError:function(B,A){if(B=="ALL"){jQuery(".errorlabel").remove();if(A=="outside"&&jQuery("#errors").text()==""){jQuery("#errors").hide();}}else{if(A=="inside"){jQuery("#"+B).parent("label").children(".errorlabel").remove();return true;}else{if(A=="outside"){jQuery("label[@for="+B+"]").remove();if(jQuery("#errors").text()==""){jQuery("#errors").hide();}return true;}else{return false;}}}}};