/**
 * jQuery validation plug-in 1.5.4
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
 * http://docs.jquery.com/Plugins/Validation
 *
 * Copyright (c) 2006 - 2008 Jörn Zaefferer
 *
 * $Id: jquery.validate.js 6395 2009-06-16 12:02:58Z joern.zaefferer $
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
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($){$.H($.2M,{1F:7(d){l(!6.F){d&&d.2q&&31.1y&&1y.57("3B 2B, 4L\'t 1F, 6e 3B");8}q c=$.17(6[0],\'u\');l(c){8 c}c=2c $.u(d,6[0]);$.17(6[0],\'u\',c);l(c.p.3C){6.3w("1w, 3n").1o(".4H").3e(7(){c.3b=w});l(c.p.2I){6.3w("1w, 3n").1o(":20").3e(7(){c.1T=6})}6.20(7(b){l(c.p.2q)b.5Y();7 2l(){l(c.p.2I){l(c.1T){q a=$("<1w 1m=\'5x\'/>").1t("v",c.1T.v).3L(c.1T.U).56(c.V)}c.p.2I.Z(c,c.V);l(c.1T){a.3F()}8 K}8 w}l(c.3b){c.3b=K;8 2l()}l(c.N()){l(c.1c){c.1z=w;8 K}8 2l()}1a{c.2m();8 K}})}8 c},J:7(){l($(6[0]).2V(\'N\')){8 6.1F().N()}1a{q b=w;q a=$(6[0].N).1F();6.P(7(){b&=a.M(6)});8 b}},4G:7(c){q d={},$M=6;$.P(c.1S(/\\s/),7(a,b){d[b]=$M.1t(b);$M.6o(b)});8 d},1h:7(h,k){q f=6[0];l(h){q i=$.17(f.N,\'u\').p;q d=i.1h;q c=$.u.36(f);2r(h){1g"1f":$.H(c,$.u.1J(k));d[f.v]=c;l(k.I)i.I[f.v]=$.H(i.I[f.v],k.I);2L;1g"3F":l(!k){S d[f.v];8 c}q e={};$.P(k.1S(/\\s/),7(a,b){e[b]=c[b];S c[b]});8 e}}q g=$.u.41($.H({},$.u.3Y(f),$.u.3X(f),$.u.3S(f),$.u.36(f)),f);l(g.12){q j=g.12;S g.12;g=$.H({12:j},g)}8 g}});$.H($.5u[":"],{5t:7(a){8!$.1l(a.U)},5o:7(a){8!!$.1l(a.U)},5k:7(a){8!a.3J}});$.u=7(b,a){6.p=$.H({},$.u.2N,b);6.V=a;6.4l()};$.u.15=7(c,b){l(Q.F==1)8 7(){q a=$.3I(Q);a.4V(c);8 $.u.15.1L(6,a)};l(Q.F>2&&b.2a!=3D){b=$.3I(Q).4R(1)}l(b.2a!=3D){b=[b]}$.P(b,7(i,n){c=c.27(2c 3z("\\\\{"+i+"\\\\}","g"),n)});8 c};$.H($.u,{2N:{I:{},26:{},1h:{},19:"3t",24:"J",2E:"4N",2m:w,3s:$([]),2A:$([]),3C:w,3q:[],3p:K,4M:7(a){6.3l=a;l(6.p.4K&&!6.4J){6.p.1R&&6.p.1R.Z(6,a,6.p.19,6.p.24);6.1O(a).2y()}},4E:7(a){l(!6.1s(a)&&(a.v 13 6.1k||!6.G(a))){6.M(a)}},6n:7(a){l(a.v 13 6.1k||a==6.4z){6.M(a)}},6l:7(a){l(a.v 13 6.1k)6.M(a)},34:7(a,c,b){$(a).1U(c).2u(b)},1R:7(a,c,b){$(a).2u(c).1U(b)}},6d:7(a){$.H($.u.2N,a)},I:{12:"6c 4p 2V 12.",1Z:"L 37 6 4p.",1V:"L O a J 1V 67.",1p:"L O a J 66.",1r:"L O a J 1r.",22:"L O a J 1r (64).",2o:"4c 4b 49 2J 5Z�5X 5U 2J.",1B:"L O a J 1B.",2f:"4c 4b 49 5P 5M 2J.",1N:"L O 5J 1N",2i:"L O a J 5G 5F 1B.",3W:"L O 3V 5B U 5z.",3R:"L O a U 5w a J 5v.",16:$.u.15("L O 3P 5s 2X {0} 2P."),1x:$.u.15("L O 5n 5l {0} 2P."),2k:$.u.15("L O a U 4A {0} 3K {1} 2P 5h."),2n:$.u.15("L O a U 4A {0} 3K {1}."),1C:$.u.15("L O a U 5d 2X 4d 4f 4s {0}."),1A:$.u.15("L O a U 53 2X 4d 4f 4s {0}.")},4r:K,4Z:{4l:7(){6.2v=$(6.p.2A);6.4v=6.2v.F&&6.2v||$(6.V);6.2p=$(6.p.3s).1f(6.p.2A);6.1k={};6.4T={};6.1c=0;6.1e={};6.1b={};6.1K();q f=(6.26={});$.P(6.p.26,7(d,c){$.P(c.1S(/\\s/),7(a,b){f[b]=d})});q e=6.p.1h;$.P(e,7(b,a){e[b]=$.u.1J(a)});7 1q(a){q b=$.17(6[0].N,"u");b.p["3H"+a.1m]&&b.p["3H"+a.1m].Z(b,6[0])}$(6.V).1q("3G 3E 4S",":2H, :4Q, :4P, 28, 4O",1q).1q("3e",":3A, :3y",1q);l(6.p.3x)$(6.V).3v("1b-N.1F",6.p.3x)},N:7(){6.3u();$.H(6.1k,6.1v);6.1b=$.H({},6.1v);l(!6.J())$(6.V).2G("1b-N",[6]);6.1i();8 6.J()},3u:7(){6.2F();R(q i=0,11=(6.23=6.11());11[i];i++){6.29(11[i])}8 6.J()},M:7(a){a=6.2D(a);6.4z=a;6.2C(a);6.23=$(a);q b=6.29(a);l(b){S 6.1b[a.v]}1a{6.1b[a.v]=w}l(!6.3r()){6.14=6.14.1f(6.2p)}6.1i();8 b},1i:7(b){l(b){$.H(6.1v,b);6.T=[];R(q c 13 b){6.T.2e({1d:b[c],M:6.21(c)[0]})}6.1n=$.3o(6.1n,7(a){8!(a.v 13 b)})}6.p.1i?6.p.1i.Z(6,6.1v,6.T):6.3m()},2T:7(){l($.2M.2T)$(6.V).2T();6.1k={};6.2F();6.2S();6.11().2u(6.p.19)},3r:7(){8 6.2g(6.1b)},2g:7(a){q b=0;R(q i 13 a)b++;8 b},2S:7(){6.2z(6.14).2y()},J:7(){8 6.3k()==0},3k:7(){8 6.T.F},2m:7(){l(6.p.2m){3j{$(6.3i()||6.T.F&&6.T[0].M||[]).1o(":4I").3g()}3f(e){}}},3i:7(){q a=6.3l;8 a&&$.3o(6.T,7(n){8 n.M.v==a.v}).F==1&&a},11:7(){q a=6,2W={};8 $([]).1f(6.V.11).1o(":1w").1I(":20, :1K, :4F, [4D]").1I(6.p.3q).1o(7(){!6.v&&a.p.2q&&31.1y&&1y.3t("%o 4C 3P v 4B",6);l(6.v 13 2W||!a.2g($(6).1h()))8 K;2W[6.v]=w;8 w})},2D:7(a){8 $(a)[0]},2x:7(){8 $(6.p.2E+"."+6.p.19,6.4v)},1K:7(){6.1n=[];6.T=[];6.1v={};6.1j=$([]);6.14=$([]);6.1z=K;6.23=$([])},2F:7(){6.1K();6.14=6.2x().1f(6.2p)},2C:7(a){6.1K();6.14=6.1O(a)},29:7(d){d=6.2D(d);l(6.1s(d)){d=6.21(d.v)[0]}q a=$(d).1h();q c=K;R(X 13 a){q b={X:X,3d:a[X]};3j{q f=$.u.1Y[X].Z(6,d.U.27(/\\r/g,""),d,b.3d);l(f=="1X-1W"){c=w;6m}c=K;l(f=="1e"){6.14=6.14.1I(6.1O(d));8}l(!f){6.4y(d,b);8 K}}3f(e){6.p.2q&&31.1y&&1y.6k("6j 6i 6h 6g M "+d.4u+", 29 3V \'"+b.X+"\' X");6f e;}}l(c)8;l(6.2g(a))6.1n.2e(d);8 w},4t:7(a,b){l(!$.1D)8;q c=6.p.39?$(a).1D()[6.p.39]:$(a).1D();8 c&&c.I&&c.I[b]},4q:7(a,b){q m=6.p.I[a];8 m&&(m.2a==4o?m:m[b])},4w:7(){R(q i=0;i<Q.F;i++){l(Q[i]!==2t)8 Q[i]}8 2t},2w:7(a,b){8 6.4w(6.4q(a.v,b),6.4t(a,b),!6.p.3p&&a.6b||2t,$.u.I[b],"<4n>6a: 69 1d 68 R "+a.v+"</4n>")},4y:7(b,a){q c=6.2w(b,a.X);l(18 c=="7")c=c.Z(6,a.3d,b);6.T.2e({1d:c,M:b});6.1v[b.v]=c;6.1k[b.v]=c},2z:7(a){l(6.p.2s)a=a.1f(a.4m(6.p.2s));8 a},3m:7(){R(q i=0;6.T[i];i++){q a=6.T[i];6.p.34&&6.p.34.Z(6,a.M,6.p.19,6.p.24);6.35(a.M,a.1d)}l(6.T.F){6.1j=6.1j.1f(6.2p)}l(6.p.1E){R(q i=0;6.1n[i];i++){6.35(6.1n[i])}}l(6.p.1R){R(q i=0,11=6.4k();11[i];i++){6.p.1R.Z(6,11[i],6.p.19,6.p.24)}}6.14=6.14.1I(6.1j);6.2S();6.2z(6.1j).4j()},4k:7(){8 6.23.1I(6.4i())},4i:7(){8 $(6.T).4h(7(){8 6.M})},35:7(a,c){q b=6.1O(a);l(b.F){b.2u().1U(6.p.19);b.1t("4g")&&b.3h(c)}1a{b=$("<"+6.p.2E+"/>").1t({"R":6.33(a),4g:w}).1U(6.p.19).3h(c||"");l(6.p.2s){b=b.2y().4j().65("<"+6.p.2s+"/>").4m()}l(!6.2v.63(b).F)6.p.4e?6.p.4e(b,$(a)):b.62(a)}l(!c&&6.p.1E){b.2H("");18 6.p.1E=="1u"?b.1U(6.p.1E):6.p.1E(b)}6.1j=6.1j.1f(b)},1O:7(a){8 6.2x().1o("[R=\'"+6.33(a)+"\']")},33:7(a){8 6.26[a.v]||(6.1s(a)?a.v:a.4u||a.v)},1s:7(a){8/3A|3y/i.W(a.1m)},21:7(d){q c=6.V;8 $(61.60(d)).4h(7(a,b){8 b.N==c&&b.v==d&&b||4a})},1M:7(a,b){2r(b.48.47()){1g\'28\':8 $("46:2B",b).F;1g\'1w\':l(6.1s(b))8 6.21(b.v).1o(\':3J\').F}8 a.F},45:7(b,a){8 6.2K[18 b]?6.2K[18 b](b,a):w},2K:{"5W":7(b,a){8 b},"1u":7(b,a){8!!$(b,a.N).F},"7":7(b,a){8 b(a)}},G:7(a){8!$.u.1Y.12.Z(6,$.1l(a.U),a)&&"1X-1W"},44:7(a){l(!6.1e[a.v]){6.1c++;6.1e[a.v]=w}},43:7(a,b){6.1c--;l(6.1c<0)6.1c=0;S 6.1e[a.v];l(b&&6.1c==0&&6.1z&&6.N()){$(6.V).20()}1a l(!b&&6.1c==0&&6.1z){$(6.V).2G("1b-N",[6])}},2b:7(a){8 $.17(a,"2b")||$.17(a,"2b",5S={32:4a,J:w,1d:6.2w(a,"1Z")})}},1P:{12:{12:w},1V:{1V:w},1p:{1p:w},1r:{1r:w},22:{22:w},2o:{2o:w},1B:{1B:w},2f:{2f:w},1N:{1N:w},2i:{2i:w}},42:7(a,b){a.2a==4o?6.1P[a]=b:$.H(6.1P,a)},3X:7(b){q a={};q c=$(b).1t(\'5O\');c&&$.P(c.1S(\' \'),7(){l(6 13 $.u.1P){$.H(a,$.u.1P[6])}});8 a},3S:7(c){q a={};q d=$(c);R(X 13 $.u.1Y){q b=d.1t(X);l(b){a[X]=b}}l(a.16&&/-1|5N|5L/.W(a.16)){S a.16}8 a},3Y:7(a){l(!$.1D)8{};q b=$.17(a.N,\'u\').p.39;8 b?$(a).1D()[b]:$(a).1D()},36:7(b){q a={};q c=$.17(b.N,\'u\');l(c.p.1h){a=$.u.1J(c.p.1h[b.v])||{}}8 a},41:7(d,e){$.P(d,7(c,b){l(b===K){S d[c];8}l(b.30||b.2j){q a=w;2r(18 b.2j){1g"1u":a=!!$(b.2j,e.N).F;2L;1g"7":a=b.2j.Z(e,e);2L}l(a){d[c]=b.30!==2t?b.30:w}1a{S d[c]}}});$.P(d,7(a,b){d[a]=$.5K(b)?b(e):b});$.P([\'1x\',\'16\',\'1A\',\'1C\'],7(){l(d[6]){d[6]=2Z(d[6])}});$.P([\'2k\',\'2n\'],7(){l(d[6]){d[6]=[2Z(d[6][0]),2Z(d[6][1])]}});l($.u.4r){l(d.1A&&d.1C){d.2n=[d.1A,d.1C];S d.1A;S d.1C}l(d.1x&&d.16){d.2k=[d.1x,d.16];S d.1x;S d.16}}l(d.I){S d.I}8 d},1J:7(a){l(18 a=="1u"){q b={};$.P(a.1S(/\\s/),7(){b[6]=w});a=b}8 a},5I:7(c,a,b){$.u.1Y[c]=a;$.u.I[c]=b||$.u.I[c];l(a.F<3){$.u.42(c,$.u.1J(c))}},1Y:{12:7(b,c,a){l(!6.45(a,c))8"1X-1W";2r(c.48.47()){1g\'28\':q d=$("46:2B",c);8 d.F>0&&(c.1m=="28-5H"||($.2Y.2R&&!(d[0].5E[\'U\'].5D)?d[0].2H:d[0].U).F>0);1g\'1w\':l(6.1s(c))8 6.1M(b,c)>0;5C:8 $.1l(b).F>0}},1Z:7(e,h,d){l(6.G(h))8"1X-1W";q g=6.2b(h);l(!6.p.I[h.v])6.p.I[h.v]={};6.p.I[h.v].1Z=18 g.1d=="7"?g.1d(e):g.1d;d=18 d=="1u"&&{1p:d}||d;l(g.32!==e){g.32=e;q i=6;6.44(h);q f={};f[h.v]=e;$.2O($.H(w,{1p:d,3U:"2U",3T:"1F"+h.v,5A:"5y",17:f,1E:7(a){l(a===w){q b=i.1z;i.2C(h);i.1z=b;i.1n.2e(h);i.1i()}1a{q c={};c[h.v]=a||i.2w(h,"1Z");i.1i(c)}g.J=a;i.43(h,a===w)}},d));8"1e"}1a l(6.1e[h.v]){8"1e"}8 g.J},1x:7(b,c,a){8 6.G(c)||6.1M($.1l(b),c)>=a},16:7(b,c,a){8 6.G(c)||6.1M($.1l(b),c)<=a},2k:7(b,d,a){q c=6.1M($.1l(b),d);8 6.G(d)||(c>=a[0]&&c<=a[1])},1A:7(b,c,a){8 6.G(c)||b>=a},1C:7(b,c,a){8 6.G(c)||b<=a},2n:7(b,c,a){8 6.G(c)||(b>=a[0]&&b<=a[1])},1V:7(a,b){8 6.G(b)||/^((([a-z]|\\d|[!#\\$%&\'\\*\\+\\-\\/=\\?\\^Y`{\\|}~]|[\\A-\\E\\C-\\y\\x-\\B])+(\\.([a-z]|\\d|[!#\\$%&\'\\*\\+\\-\\/=\\?\\^Y`{\\|}~]|[\\A-\\E\\C-\\y\\x-\\B])+)*)|((\\3Q)((((\\2h|\\1Q)*(\\2Q\\3O))?(\\2h|\\1Q)+)?(([\\3N-\\5r\\3M\\3Z\\5q-\\5p\\40]|\\5m|[\\5Q-\\5R]|[\\5j-\\5T]|[\\A-\\E\\C-\\y\\x-\\B])|(\\\\([\\3N-\\1Q\\3M\\3Z\\2Q-\\40]|[\\A-\\E\\C-\\y\\x-\\B]))))*(((\\2h|\\1Q)*(\\2Q\\3O))?(\\2h|\\1Q)+)?(\\3Q)))@((([a-z]|\\d|[\\A-\\E\\C-\\y\\x-\\B])|(([a-z]|\\d|[\\A-\\E\\C-\\y\\x-\\B])([a-z]|\\d|-|\\.|Y|~|[\\A-\\E\\C-\\y\\x-\\B])*([a-z]|\\d|[\\A-\\E\\C-\\y\\x-\\B])))\\.)+(([a-z]|[\\A-\\E\\C-\\y\\x-\\B])|(([a-z]|[\\A-\\E\\C-\\y\\x-\\B])([a-z]|\\d|-|\\.|Y|~|[\\A-\\E\\C-\\y\\x-\\B])*([a-z]|[\\A-\\E\\C-\\y\\x-\\B])))\\.?$/i.W(a)},1p:7(a,b){8 6.G(b)||/^(5i?|5V):\\/\\/(((([a-z]|\\d|-|\\.|Y|~|[\\A-\\E\\C-\\y\\x-\\B])|(%[\\1H-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\A-\\E\\C-\\y\\x-\\B])|(([a-z]|\\d|[\\A-\\E\\C-\\y\\x-\\B])([a-z]|\\d|-|\\.|Y|~|[\\A-\\E\\C-\\y\\x-\\B])*([a-z]|\\d|[\\A-\\E\\C-\\y\\x-\\B])))\\.)+(([a-z]|[\\A-\\E\\C-\\y\\x-\\B])|(([a-z]|[\\A-\\E\\C-\\y\\x-\\B])([a-z]|\\d|-|\\.|Y|~|[\\A-\\E\\C-\\y\\x-\\B])*([a-z]|[\\A-\\E\\C-\\y\\x-\\B])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|Y|~|[\\A-\\E\\C-\\y\\x-\\B])|(%[\\1H-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|Y|~|[\\A-\\E\\C-\\y\\x-\\B])|(%[\\1H-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|Y|~|[\\A-\\E\\C-\\y\\x-\\B])|(%[\\1H-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)|[\\5g-\\5f]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|Y|~|[\\A-\\E\\C-\\y\\x-\\B])|(%[\\1H-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.W(a)},1r:7(a,b){8 6.G(b)||!/5e|5c/.W(2c 5b(a))},22:7(a,b){8 6.G(b)||/^\\d{4}[\\/-]\\d{1,2}[\\/-]\\d{1,2}$/.W(a)},2o:7(a,b){8 6.G(b)||/^\\d\\d?\\.\\d\\d?\\.\\d\\d\\d?\\d?$/.W(a)},1B:7(a,b){8 6.G(b)||/^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)(?:\\.\\d+)?$/.W(a)},2f:7(a,b){8 6.G(b)||/^-?(?:\\d+|\\d{1,3}(?:\\.\\d{3})+)(?:,\\d+)?$/.W(a)},1N:7(a,b){8 6.G(b)||/^\\d+$/.W(a)},2i:7(b,e){l(6.G(e))8"1X-1W";l(/[^0-9-]+/.W(b))8 K;q a=0,d=0,2d=K;b=b.27(/\\D/g,"");R(n=b.F-1;n>=0;n--){q c=b.5a(n);q d=59(c,10);l(2d){l((d*=2)>9)d-=9}a+=d;2d=!2d}8(a%10)==0},3R:7(b,c,a){a=18 a=="1u"?a.27(/,/g,\'|\'):"58|55?g|54";8 6.G(c)||b.52(2c 3z(".("+a+")$","i"))},3W:7(b,c,a){8 b==$(a).3L()}}});$.15=$.u.15})(38);(7($){q c=$.2O;q d={};$.2O=7(a){a=$.H(a,$.H({},$.51,a));q b=a.3T;l(a.3U=="2U"){l(d[b]){d[b].2U()}8(d[b]=c.1L(6,Q))}8 c.1L(6,Q)}})(38);(7($){$.P({3g:\'3G\',50:\'3E\'},7(b,a){$.1G.3a[a]={4Y:7(){l($.2Y.2R)8 K;6.4X(b,$.1G.3a[a].3c,w)},4W:7(){l($.2Y.2R)8 K;6.4U(b,$.1G.3a[a].3c,w)},3c:7(e){Q[0]=$.1G.37(e);Q[0].1m=a;8 $.1G.2l.1L(6,Q)}}});$.H($.2M,{1q:7(d,e,c){8 6.3v(d,7(a){q b=$(a.4x);l(b.2V(e)){8 c.1L(b,Q)}})},6p:7(a,b){8 6.2G(a,[$.1G.37({1m:a,4x:b})])}})})(38);',62,398,'||||||this|function|return|||||||||||||if||||settings|var||||validator|name|true|uFDF0|uFDCF||u00A0|uFFEF|uF900||uD7FF|length|optional|extend|messages|valid|false|Please|element|form|enter|each|arguments|for|delete|errorList|value|currentForm|test|method|_|call||elements|required|in|toHide|format|maxlength|data|typeof|errorClass|else|invalid|pendingRequest|message|pending|add|case|rules|showErrors|toShow|submitted|trim|type|successList|filter|url|delegate|date|checkable|attr|string|errorMap|input|minlength|console|formSubmitted|min|number|max|metadata|success|validate|event|da|not|normalizeRule|reset|apply|getLength|digits|errorsFor|classRuleSettings|x09|unhighlight|split|submitButton|addClass|email|mismatch|dependency|methods|remote|submit|findByName|dateISO|currentElements|validClass||groups|replace|select|check|constructor|previousValue|new|bEven|push|numberDE|objectLength|x20|creditcard|depends|rangelength|handle|focusInvalid|range|dateDE|containers|debug|switch|wrapper|undefined|removeClass|labelContainer|defaultMessage|errors|hide|addWrapper|errorLabelContainer|selected|prepareElement|clean|errorElement|prepareForm|triggerHandler|text|submitHandler|ein|dependTypes|break|fn|defaults|ajax|characters|x0d|msie|hideErrors|resetForm|abort|is|rulesCache|than|browser|Number|param|window|old|idOrName|highlight|showLabel|staticRules|fix|jQuery|meta|special|cancelSubmit|handler|parameters|click|catch|focus|html|findLastActive|try|size|lastActive|defaultShowErrors|button|grep|ignoreTitle|ignore|numberOfInvalids|errorContainer|error|checkForm|bind|find|invalidHandler|checkbox|RegExp|radio|nothing|onsubmit|Array|focusout|remove|focusin|on|makeArray|checked|and|val|x0b|x01|x0a|no|x22|accept|attributeRules|port|mode|the|equalTo|classRules|metadataRules|x0c|x7f|normalizeRules|addClassRules|stopRequest|startRequest|depend|option|toLowerCase|nodeName|Sie|null|geben|Bitte|or|errorPlacement|equal|generated|map|invalidElements|show|validElements|init|parent|strong|String|field|customMessage|autoCreateRanges|to|customMetaMessage|id|errorContext|findDefined|target|formatAndAdd|lastElement|between|assigned|has|disabled|onfocusout|image|removeAttrs|cancel|visible|blockFocusCleanup|focusCleanup|can|onfocusin|label|textarea|file|password|slice|keyup|valueCache|removeEventListener|unshift|teardown|addEventListener|setup|prototype|blur|ajaxSettings|match|greater|gif|jpe|appendTo|warn|png|parseInt|charAt|Date|NaN|less|Invalid|uF8FF|uE000|long|https|x5d|unchecked|least|x21|at|filled|x1f|x0e|x08|more|blank|expr|extension|with|hidden|json|again|dataType|same|default|specified|attributes|card|credit|multiple|addMethod|only|isFunction|524288|Nummer|2147483647|class|eine|x23|x5b|previous|x7e|Datum|ftp|boolean|ltiges|preventDefault|g�|getElementsByName|document|insertAfter|append|ISO|wrap|URL|address|defined|No|Warning|title|This|setDefaults|returning|throw|checking|when|occured|exception|log|onclick|continue|onkeyup|removeAttr|triggerEvent'.split('|'),0,{}))
/**End of Validation */
/**Additional Method*/
/****************Start of AppointMent Time Selection Method****************/
var appointmentTimeMsg = ""; 
function appointmentTimeAvailibility(timeRange,optedInputTime){
	var startHours = timeRange.substr(0,2);
	var startMins = timeRange.substr(timeRange.indexOf(":")+1,2);
	var endHours = timeRange.substr(timeRange.indexOf("-")+2,2);
	var endMins = timeRange.substr(timeRange.lastIndexOf(":")+1,2);
	var optedHours = optedInputTime.substr(0,2);
	var optedMins = parseInt(optedInputTime.substr(optedInputTime.indexOf(":")+1,2));
	var startTimeinMins = (timeRange.substr(timeRange.indexOf(":")+4,2).toUpperCase() == "AM") ? parseInt(startHours != "12" ? startHours * 60 : "0") + parseInt(startMins) : parseInt((startHours != "12") ? startHours * 60: "0") + parseInt(startMins) + parseInt("719");		
	var endTimeinMins = (timeRange.substr(timeRange.lastIndexOf(":")+4,2).toUpperCase() == "AM") ? parseInt(endHours != "12" ? endHours * 60 : "0") + parseInt(endMins) : parseInt((endHours != "12") ? endHours * 60: "0") + parseInt(endMins) + parseInt("719");
	var optedTimeinMin = (optedInputTime.substr(optedInputTime.length-2,2).toUpperCase() == "AM")? parseInt((optedHours != "12")? optedHours * 60: "0") + parseInt(optedMins) : parseInt((optedHours != "12") ? optedHours * 60: "0") + parseInt(optedMins)+ parseInt("719");
	if(optedTimeinMin >= startTimeinMins && optedTimeinMin <= endTimeinMins){
		return true;
	}
	return false;
}

function ValidateAppointmentTime(timeRange,optedTime,amOrPm){
	var timeRange = timeRange;
	var optedTime = optedTime;
	var amOrPm = amOrPm;
	//var formName = formname;
	if(optedTime.value == "" || optedTime.value == "hh:mm" ){
		return false;
	}
	if(timeRange.value.toUpperCase() == "CLOSED"){
		appointmentTimeMsg = "Sorry, service is not available on the selected day, please select some other day!"
		return false;
	}
	if (!validatetimeformat(optedTime)){
		appointmentTimeMsg = "Please provide correct Time Format (hh:mm)";
		return false;
	}
	if (!appointmentTimeAvailibility(timeRange.value, optedTime.value + amOrPm.value)) {
		appointmentTimeMsg = "Please provide timings within the range specified";
		return false;
	}
	return true;
}

function HandleAppointmentTimeResponse(result){
	var refAppointTimeInfo = document.getElementById("AppointTimeInfo");
	if(result){
		$("#AppointTimeInfo").html("");
	}else{
		$("#AppointTimeInfo").html(appointmentTimeMsg);
	}
}
function validatetimeformat(thisobj){
	var y = thisobj.value;
	if(thisobj.value!=""){
//		var x = /^[01]?[0-9]:[0-5][0-9]$/;
		var x = /^[01][0-9]:[0-5][0-9]$/;
		return x.test(y) ? true : false;
	}
	return false;
}
function ScheduleAppointmentTime(_optedtime,_timerange,_amorpm){
	this.optedtime = _optedtime;
	this.timerange = _timerange;
	this.amorpm = _amorpm;
	this.errormessage = "";
	this.validate = function(){
		if(this.timerange.toUpperCase() == "CLOSED"){
			this.errormessage = "Sorry, service is not available on the selected day, please select some other day!";
			return false;
		}else if(this.optedtime == "" || this.optedtime == "hh:mm"){
			this.errormessage = "";
			return false;
		}else if(!/^[01][0-9]:[0-5][0-9]$/.test(this.optedtime)){
			this.errormessage = "Please provide correct Time Format (hh:mm)";
			return false;
		}
		return true;
	}
}
jQuery.validator.addMethod("c_validAppointmentTime", function(value,element) { 
  	
	var timeRange = document.getElementById("timecanboptd");
	var optedTime = document.getElementById("AppoinTime");
	var amOrPm = document.getElementById("apm");
   	result = ValidateAppointmentTime(timeRange,optedTime,amOrPm);
	HandleAppointmentTimeResponse(result);
  	return result;
  
}, jQuery.validator.format("Appointment Time")); 
/****************End of AppointMent Time Selection Method****************/
/******************AppointMent Date Selection Method************/
jQuery.validator.addMethod("c_validappointmentdate", function(value,element) { 
  	var optedTime = document.getElementById("timecanboptd").value.toUpperCase();
	return (optedTime == "CLOSED") ? false : true;
}, jQuery.validator.format("Invalid Date")); 
/******************End of AppointMent Date Selection Method************/
/******************AppointMent Date Selection Method************/
jQuery.validator.addMethod("c_validdownpayment", function(value,element) {
	if(value=="") return true; 
  	var totalprice = document.getElementById("loanselling").value
	//var compare =  parseInt(totalprice) < parseInt(value);
	return parseInt(value) < parseInt(totalprice);
}, jQuery.validator.format("Down Payment")); 
/******************End of AppointMent Date Selection Method************/
jQuery.validator.addMethod("dropdownselected", function(value,element) { 
   if(element.selectedIndex >= 1) return true;
}, jQuery.validator.format("Select Drop Down")); 

jQuery.validator.addMethod("maxWords", function(value, element, params) { 
    return this.optional(element) || value.match(/\b\w+\b/g).length < params; 
}, jQuery.validator.format("Please enter {0} words or less.")); 
 
jQuery.validator.addMethod("minWords", function(value, element, params) { 
    return this.optional(element) || value.match(/\b\w+\b/g).length >= params; 
}, jQuery.validator.format("Please enter at least {0} words.")); 
 
jQuery.validator.addMethod("rangeWords", function(value, element, params) { 
    return this.optional(element) || value.match(/\b\w+\b/g).length >= params[0] && value.match(/bw+b/g).length < params[1]; 
}, jQuery.validator.format("Please enter between {0} and {1} words."));


jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) {
	return this.optional(element) || /^[a-z-.,()'\"\s]+$/i.test(value);
}, "Letters or punctuation only please");  

jQuery.validator.addMethod("letterswithspace", function(value, element) {
	return this.optional(element) || /^[a-z-.,()'\"\s]+$\s]+$/i.test(value);
}, "Letters or punctuation only please");  

jQuery.validator.addMethod("alphanumeric", function(value, element) {
	return this.optional(element) || /^\w+$/i.test(value);
}, "Letters, numbers, spaces or underscores only please");  

jQuery.validator.addMethod("lettersonly", function(value, element) {
	return this.optional(element) || /^[a-z]+$/i.test(value);
}, "Letters only please"); 

jQuery.validator.addMethod("nowhitespace", function(value, element) {
	return this.optional(element) || /^\S+$/i.test(value);
}, "No white space please"); 

jQuery.validator.addMethod("ziprange", function(value, element) {
	return this.optional(element) || /^90[2-5]\d\{2}-\d{4}$/.test(value);
}, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");

/**
* Return true, if the value is a valid vehicle identification number (VIN).
*
* Works with all kind of text inputs.
*
* @example <input type="text" size="20" name="VehicleID" class="{required:true,vinUS:true}" />
* @desc Declares a required input element whose value must be a valid vehicle identification number.
*
* @name jQuery.validator.methods.vinUS
* @type Boolean
* @cat Plugins/Validate/Methods
*/ 
jQuery.validator.addMethod(
	"vinUS",
	function(v){
		if (v.length != 17)
			return false;
		var i, n, d, f, cd, cdv;
		var LL    = ["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"];
		var VL    = [1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9];
		var FL    = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2];
		var rs    = 0;
		for(i = 0; i < 17; i++){
		    f = FL[i];
		    d = v.slice(i,i+1);
		    if(i == 8){
		        cdv = d;
		    }
		    if(!isNaN(d)){
		        d *= f;
		    }
		    else{
		        for(n = 0; n < LL.length; n++){
		            if(d.toUpperCase() === LL[n]){
		                d = VL[n];
		                d *= f;
		                if(isNaN(cdv) && n == 8){
		                    cdv = LL[n];
		                }
		                break;
		            }
		        }
		    }
		    rs += d;
		}
		cd = rs % 11;
		if(cd == 10){cd = "X";}
		if(cd == cdv){return true;}
		return false; 
	},
	"The specified vehicle identification number (VIN) is invalid."
);

/**
  * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
  *
  * @example jQuery.validator.methods.date("01/01/1900")
  * @result true
  *
  * @example jQuery.validator.methods.date("01/13/1990")
  * @result false
  *
  * @example jQuery.validator.methods.date("01.01.1900")
  * @result false
  *
  * @example <input name="pippo" class="{dateITA:true}" />
  * @desc Declares an optional input element whose value must be a valid date.
  *
  * @name jQuery.validator.methods.dateITA
  * @type Boolean
  * @cat Plugins/Validate/Methods
  */
jQuery.validator.addMethod(
	"dateITA",
	function(value, element) {
		var check = false;
		var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
		if( re.test(value)){
			var adata = value.split('/');
			var gg = parseInt(adata[0],10);
			var mm = parseInt(adata[1],10);
			var aaaa = parseInt(adata[2],10);
			var xdata = new Date(aaaa,mm-1,gg);
			if ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) )
				check = true;
			else
				check = false;
		} else
			check = false;
		return this.optional(element) || check;
	}, 
	"Please enter a correct date"
);

jQuery.validator.addMethod("dateNL", function(value, element) {
		return this.optional(element) || /^\d\d?[\.\/-]\d\d?[\.\/-]\d\d\d?\d?$/.test(value);
	}, "Vul hier een geldige datum in."
);

jQuery.validator.addMethod("time", function(value, element) {
		return this.optional(element) || /^([01][0-9])|(2[0123]):([0-5])([0-9])$/.test(value);
	}, "Please enter a valid time, between 00:00 and 23:59"
);

/**
 * matches US phone number format 
 * 
 * where the area code may not start with 1 and the prefix may not start with 1 
 * allows '-' or ' ' as a separator and allows parens around area code 
 * some people may want to put a '1' in front of their number 
 * 
 * 1(212)-999-2345
 * or
 * 212 999 2344
 * or
 * 212-999-0983
 * 
 * but not
 * 111-123-5434
 * and not
 * 212 123 4567
 */
jQuery.validator.addMethod("phone", function(phone_number, element) {
    phone_number = phone_number.replace(/\s+/g, ""); 
	return this.optional(element) || phone_number.length > 9 &&
		phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, "Please specify a valid phone number");

// formats are (X1X 1X1) or (X1X1X1) or (X1X-1X1). Custom
jQuery.validator.addMethod("zipus", function(value) {
		 return value.match(/(^\d{5}$)|(^\d{5}-\d{4}$)/);
	}, 'Please enter a valid Zip code');

// TODO check if value starts with <, otherwise don't try stripping anything
jQuery.validator.addMethod("strippedminlength", function(value, element, param) {
	return jQuery(value).text().length >= param;
}, jQuery.validator.format("Please enter at least {0} characters"));

// same as email, but TLD is optional
jQuery.validator.addMethod("email2", function(value, element, param) {
	return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value); 
}, jQuery.validator.messages.email);

// same as url, but TLD is optional
jQuery.validator.addMethod("url2", function(value, element, param) {
	return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value); 
}, jQuery.validator.messages.url);

// NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
// Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
// Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
jQuery.validator.addMethod("creditcardtypes", function(value, element, param) {

	if (/[^0-9-]+/.test(value)) 
		return false;
	
	value = value.replace(/\D/g, "");
	
	var validTypes = 0x0000;
	
	if (param.mastercard) 
		validTypes |= 0x0001;
	if (param.visa) 
		validTypes |= 0x0002;
	if (param.amex) 
		validTypes |= 0x0004;
	if (param.dinersclub) 
		validTypes |= 0x0008;
	if (param.enroute) 
		validTypes |= 0x0010;
	if (param.discover) 
		validTypes |= 0x0020;
	if (param.jcb) 
		validTypes |= 0x0040;
	if (param.unknown) 
		validTypes |= 0x0080;
	if (param.all) 
		validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
	
	if (validTypes & 0x0001 && /^(51|52|53|54|55)/.test(value)) { //mastercard
		return value.length == 16;
	}
	if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa
		return value.length == 16;
	}
	if (validTypes & 0x0004 && /^(34|37)/.test(value)) { //amex
		return value.length == 15;
	}
	if (validTypes & 0x0008 && /^(300|301|302|303|304|305|36|38)/.test(value)) { //dinersclub
		return value.length == 14;
	}
	if (validTypes & 0x0010 && /^(2014|2149)/.test(value)) { //enroute
		return value.length == 15;
	}
	if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover
		return value.length == 16;
	}
	if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb
		return value.length == 16;
	}
	if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb
		return value.length == 15;
	}
	if (validTypes & 0x0080) { //unknown
		return true;
	}
	return false;
}, "Please enter a valid credit card number.");

/**End Additional Method*/
/**Masked Input*/
/*
	Masked Input plugin for jQuery
	Copyright (c) 2007-2009 Josh Bush (digitalbush.com)
	Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license) 
	Version: 1.2.2 (03/09/2009 22:39:06)
*/
(function(a){var c=(a.browser.msie?"paste":"input")+".mask";var b=(window.orientation!=undefined);a.mask={definitions:{"9":"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"}};a.fn.extend({caret:function(e,f){if(this.length==0){return}if(typeof e=="number"){f=(typeof f=="number")?f:e;return this.each(function(){if(this.setSelectionRange){this.focus();this.setSelectionRange(e,f)}else{if(this.createTextRange){var g=this.createTextRange();g.collapse(true);g.moveEnd("character",f);g.moveStart("character",e);g.select()}}})}else{if(this[0].setSelectionRange){e=this[0].selectionStart;f=this[0].selectionEnd}else{if(document.selection&&document.selection.createRange){var d=document.selection.createRange();e=0-d.duplicate().moveStart("character",-100000);f=e+d.text.length}}return{begin:e,end:f}}},unmask:function(){return this.trigger("unmask")},mask:function(j,d){if(!j&&this.length>0){var f=a(this[0]);var g=f.data("tests");return a.map(f.data("buffer"),function(l,m){return g[m]?l:null}).join("")}d=a.extend({placeholder:"_",completed:null},d);var k=a.mask.definitions;var g=[];var e=j.length;var i=null;var h=j.length;a.each(j.split(""),function(m,l){if(l=="?"){h--;e=m}else{if(k[l]){g.push(new RegExp(k[l]));if(i==null){i=g.length-1}}else{g.push(null)}}});return this.each(function(){var r=a(this);var m=a.map(j.split(""),function(x,y){if(x!="?"){return k[x]?d.placeholder:x}});var n=false;var q=r.val();r.data("buffer",m).data("tests",g);function v(x){while(++x<=h&&!g[x]){}return x}function t(x){while(!g[x]&&--x>=0){}for(var y=x;y<h;y++){if(g[y]){m[y]=d.placeholder;var z=v(y);if(z<h&&g[y].test(m[z])){m[y]=m[z]}else{break}}}s();r.caret(Math.max(i,x))}function u(y){for(var A=y,z=d.placeholder;A<h;A++){if(g[A]){var B=v(A);var x=m[A];m[A]=z;if(B<h&&g[B].test(x)){z=x}else{break}}}}function l(y){var x=a(this).caret();var z=y.keyCode;n=(z<16||(z>16&&z<32)||(z>32&&z<41));if((x.begin-x.end)!=0&&(!n||z==8||z==46)){w(x.begin,x.end)}if(z==8||z==46||(b&&z==127)){t(x.begin+(z==46?0:-1));return false}else{if(z==27){r.val(q);r.caret(0,p());return false}}}function o(B){if(n){n=false;return(B.keyCode==8)?false:null}B=B||window.event;var C=B.charCode||B.keyCode||B.which;var z=a(this).caret();if(B.ctrlKey||B.altKey||B.metaKey){return true}else{if((C>=32&&C<=125)||C>186){var x=v(z.begin-1);if(x<h){var A=String.fromCharCode(C);if(g[x].test(A)){u(x);m[x]=A;s();var y=v(x);a(this).caret(y);if(d.completed&&y==h){d.completed.call(r)}}}}}return false}function w(x,y){for(var z=x;z<y&&z<h;z++){if(g[z]){m[z]=d.placeholder}}}function s(){return r.val(m.join("")).val()}function p(y){var z=r.val();var C=-1;for(var B=0,x=0;B<h;B++){if(g[B]){m[B]=d.placeholder;while(x++<z.length){var A=z.charAt(x-1);if(g[B].test(A)){m[B]=A;C=B;break}}if(x>z.length){break}}else{if(m[B]==z[x]&&B!=e){x++;C=B}}}if(!y&&C+1<e){r.val("");w(0,h)}else{if(y||C+1>=e){s();if(!y){r.val(r.val().substring(0,C+1))}}}return(e?B:i)}if(!r.attr("readonly")){r.one("unmask",function(){r.unbind(".mask").removeData("buffer").removeData("tests")}).bind("focus.mask",function(){q=r.val();var x=p();s();setTimeout(function(){if(x==j.length){r.caret(0,x)}else{r.caret(x)}},0)}).bind("blur.mask",function(){p();if(r.val()!=q){r.change()}}).bind("keydown.mask",l).bind("keypress.mask",o).bind(c,function(){setTimeout(function(){r.caret(p(true))},0)})}p()})}})})(jQuery);
/**End Masked Input*/
/**Alpha Numeris*/
(function($){

	$.fn.alphanumeric = function(p) { 

		p = $.extend({
			ichars: "!@#$%^&*()+=[]\\\';,/{}|\":<>?~`.- ",
			nchars: "",
			allow: ""
		  }, p);	

		return this.each
			(
				function() 
				{

					if (p.nocaps) p.nchars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
					if (p.allcaps) p.nchars += "abcdefghijklmnopqrstuvwxyz";
					
					s = p.allow.split('');
					for ( i=0;i<s.length;i++) if (p.ichars.indexOf(s[i]) != -1) s[i] = "\\" + s[i];
					p.allow = s.join('|');
					
					var reg = new RegExp(p.allow,'gi');
					var ch = p.ichars + p.nchars;
					ch = ch.replace(reg,'');

					$(this).keypress
						(
							function (e)
								{
								
									if (!e.charCode) k = String.fromCharCode(e.which);
										else k = String.fromCharCode(e.charCode);
										
									if (ch.indexOf(k) != -1) e.preventDefault();
									if (e.ctrlKey&&k=='v') e.preventDefault();
									
								}
								
						);
						
					$(this).bind('contextmenu',function () {return false});
									
				}
			);

	};

	$.fn.numeric = function(p) {
	
		var az = "abcdefghijklmnopqrstuvwxyz";
		az += az.toUpperCase();

		p = $.extend({
			nchars: az
		  }, p);	
		  	
		return this.each (function()
			{
				$(this).alphanumeric(p);
			}
		);
			
	};
	
	$.fn.alpha = function(p) {

		var nm = "1234567890";

		p = $.extend({
			nchars: nm
		  }, p);	

		return this.each (function()
			{
				$(this).alphanumeric(p);
			}
		);
			
	};	
	
	$.fn.alphaspace = function(p) {

		var nm = "1234567890";

		p = $.extend({
			nchars: nm,
			allow: " "
		  }, p);	

		return this.each (function()
			{
				$(this).alphanumeric(p);
			}
		);
			
	};	

})(jQuery);

