/**
 * Universal Form Validator Script - Based off of formvalidate.js - reprogrammed 
 * to be more autonymous, object oriented and JavaScript library independent. To 
 * run, just call this in whatever DOMReady event your library uses.
 * 
 * @author 		Dave Shepard
 * @updated_at	August 3, 2009
 * 
 * Classes:
 * ============================================================================
 * CLASS:			HTML TAG:				RESULTS:
 * noDisable		form					Prevent disabling of the submit button
 * required			input/select/textarea	Require this field
 * amount			input/select			Validate as a numerical amount
 * ignoreZeroVal	input/select			Ignore a zero value when validating an amount
 * group_*****		input[type="checkbox"]	Group checkboxes together
 * 
 * Class Parameters:
 * ============================================================================
 * @param {Object} form_elem Element ID String or an HTML Element
 * @param {Object} message_overrides JSON object containing field name attribute specific error messages
 */

eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('7 3y(1i,1K){3.x={2o:"J 11 1e 16 1t 3m r 3 2a",1q:"J 11 1e 16 1t a p 1q (<2l>2I@3l.38</2l>)",2y:"2U 2S 3g 2D 26",12:"J 11 1e 16 32 33 2B 3h 3o 3t",2z:"J 11 1e 16 19 2H 2J 2Q 2R",Z:"J 11 1e 16 2T a Z 2B 2G",Q:"J 1t a u 36 37 0",19:"J 11 a 3e r 3 2a",1g:{2u:"J 1t a p 2u 3j"}};3.l={2t:"3q",Q:"Q",1T:"3w",1s:"2F",1R:"1R",R:"R"};6 8=3;3.2k=7(){6 L={1Q:3.X.1O("2V"),2Y:3.X.1O("19"),2Z:3.X.1O("2f")};d L};3.2e=7(){6 T=[];r(6 L 2d 3.1b){6 E=3.1b[L];r(6 i=0;i<E.v;i++){5(E[i].9.j(3.l.1R)){T.1M(E[i])}}}d T};3.28=7(){6 T=[];r(6 L 2d 3.1b){6 E=3.1b[L];r(6 i=0;i<E.v;i++){5(E[i].y=="27"||E[i].y=="1L"){T.1M(E[i])}}}d T};3.1J=7(e){d[e.9,e.N,e.W].2K().2M().j(\'1q\')};3.1Y=7(e){d e.W.j("1H")&&e.y=="1r"};3.2x=7(e){d e.9.j(3.l.1s)&&e.y=="12"};3.F=7(e){6 p=S;1u(e.1G){o"2g":o"22":1u(e.y){o"12":5(!e.9.j(3.l.1s)){p=e.21}h{6 1k=e.9.3f(" "),1B="";r(6 i=0;i<1k.v;i++){5(1k[i].j(3.l.1s)){1B=1k[i]}}r(6 i=0,1m=[];i<3.L.1Q.v;i++){6 15=3.L.1Q[i];5(15.9.j(1B)){1m.1M(15)}}6 1A=m;r(6 i=0;i<1m.v;i++){6 15=1m[i];5(15.21===S){1A=S}}5(1A===m){p=m}}C;o"Z":o"2p":o"1r":o"2f":3r:6 u=e.u.10();5(u.v>0){5(3.1J(e)){5(!u.26(/^\\w+([\\+\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,4})+$/)){p=m}}5(e.y=="1r"){5(e.W.j("1H")){6 2m=e.W.2E(0,e.W.1z("1H"));5(e.u!=1a.1U(2m).u){p=m}}}5(e.9.j(3.l.Q)){6 U=u.V(/,/g,"");5(2i(U)){p=m}h{5(!e.9.j(3.l.1T)){5(1V(U)===0){p=m}}}}}h{p=m}C}C;o"1W":6 u=e.u.10();5(u.v>0){5(e.9.j(3.l.Q)){6 U=u.V(/,/g,"");5(2i(U)){p=m}h{5(!e.9.j(3.l.1T)){5(1V(U)===0){p=m}}}}}h{p=m}C}d p};3.1y=7(e){d 1a.1U(e.N+"2h")};3.P=7(e){6 z=3.x.2o;5(3.1J(e)){z=3.x.1q}5(3.1Y(e)){z=3.x.2y}5(e.y=="12"){5(3.2x(e)){z=3.x.2z}h{z=3.x.12}}5(e.y=="Z"){z=3.x.Z}5(e.9.j(3.l.Q)){z=3.x.Q}5(e.1G=="19"){z=3.x.19}5(t(3.x.1g[e.N])!="I"){z=3.x.1g[e.N]}5(!e.Y.9.j(3.l.R)){b.1C(e.Y,3.l.R)}5(!(1f=3.1y(e))){6 14=1a.3c("3d");14.W=e.N+"2h";14.9=3.l.R;b.29(e,14);14.2b=z}h{1f.2b=z}};3.G=7(e){6 1f=3.1y(e);5(1f){5(e.Y.9.j(3.l.R)){b.1D(e.Y,3.l.R)}e.Y.3i(1f)}};3.1E=7(2j){r(6 i=0,1F=0;i<3.1d.v;i++){6 e=3.1d[i];5(!3.F(e)){1F++;5(!2j){3.P(e)}}h{3.G(e)}}d 1F<1};3.2v=7(){b.H(3.X,"27",7(e){6 1p=(!e)?1I.3x:e;5(!8.1E()){1p.1X?1p.1X():1p.2C=m;d m}});r(6 i=0;i<3.1d.v;i++){6 e=3.1d[i];1u(e.1G){o"2g":1u(e.y){o"1r":o"2p":b.H(e,"1j",7(){5(3.u.10().v>0){5(!8.F(3)){8.P(3)}h{8.G(3)}8.B()}});b.H(e,"20",7(){6 q=3;5(3.13){23(q.13)}3.13=24(7(){5(8.F(q)){8.G(q)}8.B()},25);d S});C;o"12":b.H(e,"2L",7(){5(!8.F(3)){8.P(3)}h{8.G(3)}8.B()});C;o"Z":6 q=e;1h[q.N]=2N(7(){5(8.F(q)){5(1h[q.N]){2O(1h[q.N])}8.G(q)}8.B()},2P);b.H(e,"1j",7(){5(!8.F(3)){8.P(3)}h{8.G(3)}8.B()});C}C;o"1W":b.H(e,"1j",7(){5(!8.F(3)){8.P(3)}h{8.G(3)}8.B()});C;o"22":b.H(e,"1j",7(){5(!8.F(3)){8.P(3)}h{8.G(3)}8.B()});b.H(e,"20",7(){6 q=3;5(3.13){23(q.13)}3.13=24(7(){5(8.F(q)){8.G(q)}8.B()},25);d S});C}}};3.B=7(){5(!3.X.9.j(3.l.2t)){5(!3.1E(S)){r(6 i=0;i<3.1c.v;i++){6 e=3.1c[i];e.1v=S;b.1C(e,\'1v\');5(e.y=="1L"){17=e.1l;5(17.j("1N.")){e.1l=17.V("1N.","2c.")}}}}h{r(6 i=0;i<3.1c.v;i++){6 e=3.1c[i];e.1v=m;b.1D(e,\'1v\');5(e.y=="1L"){17=e.1l;e.1l=17.V("2c.","1N.")}}}}};5(t(1K)=="2W"){3.x.1g=1K}3.X=t(1i)=="2X"?1a.1U(1i):1i;3.1b=3.2k();3.1d=3.2e();3.1c=3.28();3.2v();3.B()}6 1h={};6 b={1C:7(D,c){5(!D.9.1z(c)!=-1){D.9+=(D.9?\' \':\'\')+c}},1D:7(D,c){D.9=D.9.V(30 31("(^|\\\\s+)"+c+"(\\\\s+|$)"),\' \').10()},29:7(D,n){D.Y.34(n,D.35);d n},18:[],1P:7(k){5(k===1I){d\'39\'}h 5(k===1a){d\'3a\'}h{d k.3b}},H:7(k,A,M,K){5(t K==\'I\'){K=m}5(t k.2n!=\'I\'){k.2n(A,M,K)}h 5(t k.1S!=\'I\'){6 O=\'{2q::2r\'+b.1P(k)+\'::3k\'+A+\'::2s\'+M+\'}\';6 f=b.18[O];5(t f!=\'I\'){d}f=7(){M.3n(k)};b.18[O]=f;k.1S(\'1w\'+A,f);1I.1S(\'3p\',7(){k.1x(\'1w\'+A,f)});O=2w}h{k[\'1w\'+A]=M}},3s:7(k,A,M,K){5(t K==\'I\'){K=m}5(t k.1Z!=\'I\'){k.1Z(A,M,K)}h 5(t k.1x!=\'I\'){6 O=\'{2q::2r\'+b.1P(k)+\'::3u\'+A+\'::2s\'+M+\'}\';6 f=b.18[O];5(t f!=\'I\'){k.1x(\'1w\'+A,f);3v b.18[O]}O=2w}}};5(t(1o.1n.10)!="7"){1o.1n.10=7(){d 3.V(/^\\s+|\\s+$/g,"")}}5(t(1o.1n.j)!="7"){1o.1n.j=7(2A){d 3.1z(2A)!=-1}}',62,221,'|||this||if|var|function|self|className||___DOM||return||||else||include|_elem|classes|false||case|valid|element|for||typeof|value|length||messages|type|msg|_evtName|controlSubmit|break|elem||isValid|removeError|addEvent|undefined|Please|_useCapture|elements|_fn|name|key|addError|amount|error|true|collection|cleanValue|replace|id|form|parentNode|file|trim|make|checkbox|timer|errorMsg|el|you|oldSrc|evtHash|select|document|form_elements|submit_buttons|required_elements|sure|err|overrides|___FileTimers|form_elem|blur|eClass|src|eGroup|prototype|String|ev|email|password|group|enter|switch|disabled|on|detachEvent|hasError|indexOf|isChecked|eGroupClass|addClassName|removeClassName|validate|errors|nodeName|_confirm|window|isEmail|message_overrides|image|push|_i|getElementsByTagName|ieGetUniqueID|inputs|required|attachEvent|ignore_zero|getElementById|parseFloat|SELECT|preventDefault|isPasswordConfirm|removeEventListener|keyup|checked|TEXTAREA|clearTimeout|setTimeout|100|match|submit|getSubmitButtons|insertAfter|field|innerHTML|_d|in|getRequired|textarea|INPUT|___error|isNaN|silent|getElements|em|pair_id|addEventListener|_default|text|FNKEY|obj_|fn_|no_disable|phone|assignEvents|null|isGroupCheckbox|password_confirm|checkbox_group|str|to|returnValue|not|substr|group_|upload|at|user|least|join|change|toLowerCase|setInterval|clearInterval|500|one|option|passwords|choose|Your|input|object|string|selects|textareas|new|RegExp|have|agreed|insertBefore|nextSibling|greater|than|com|theWindow|theDocument|uniqueID|createElement|SPAN|choice|split|do|the|removeChild|number|evt_|domain|something|call|above|onunload|noDisable|default|removeEvent|terms|evt|delete|ignoreZeroVal|event|FormValidator'.split('|'),0,{}))