eval(function(p,a,c,k,e,d){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--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[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}('(c(D){d C=D.4D.21;D.4D.21=c(){D("*",4).1t(4).2Z("21");m C.1F(4,2N)};c B(E){c G(H){d I=H.2f;m(I.2X!="3j"&&I.6S!="2F")}d F=G(E);(F&&D.1q(D.6R(E,"2b"),c(){m(F=G(4))}));m F}D.1g(D.6Q[":"],{1b:c(F,G,E){m D.1b(F,E[3])},6P:c(F,G,E){d H=F.43.6T();m(F.6U>=0&&(("a"==H&&F.6X)||(/3p|57|3h|3N/.z(H)&&"2F"!=F.5s&&!F.1P))&&B(F))}});D.6W={6V:8,6O:20,6N:6G,6F:17,6E:46,6D:40,6H:35,6I:13,6M:27,6L:36,6K:45,6J:37,6Y:6Z,7f:7e,7d:7c,7g:7h,7k:7j,7i:7b,7a:34,73:33,72:71,70:39,74:16,75:32,79:9,78:38};c A(H,I,J,G){c F(L){d K=D[H][I][L]||[];m(2d K=="2T"?K.3O(/,?\\s+/):K)}d E=F("6C");6(G.1Q==1&&2d G[0]=="2T"){E=E.76(F("5z"))}m(D.7l(J,E)!=-1)}D.2C=c(F,E){d G=F.3O(".")[0];F=F.3O(".")[1];D.4D[F]=c(K){d I=(2d K=="2T"),J=6u.31.68.2v(2N,1);6(I&&K.6b(0,1)=="6a"){m 4}6(I&&A(G,F,K,J)){d H=D.1b(4[0],F);m(H?H[K].1F(H,J):2P)}m 4.1q(c(){d L=D.1b(4,F);(!L&&!I&&D.1b(4,F,6c D[G][F](4,K)));(L&&I&&D.4S(L[K])&&L[K].1F(L,J))})};D[G][F]=c(J,I){d H=4;4.2z=F;4.4G=D[G][F].6d||F;4.5x=G+"-"+F;4.k=D.1g({},D.2C.2L,D[G][F].2L,D.5y&&D.5y.1I(J)[F],I);4.o=D(J).2I("69."+F,c(M,K,L){m H.3c(K,L)}).2I("6g."+F,c(L,K){m H.4E(K)}).2I("21",c(){m H.3T()});4.3S()};D[G][F].31=D.1g({},D.2C.31,E);D[G][F].5z="5A"};D.2C.31={3S:c(){},3T:c(){4.o.4d(4.2z)},5A:c(G,H){d F=G,E=4;6(2d G=="2T"){6(H===2P){m 4.4E(G)}F={};F[G]=H}D.1q(F,c(I,J){E.3c(I,J)})},4E:c(E){m 4.k[E]},3c:c(E,F){4.k[E]=F;6(E=="1P"){4.o[F?"1E":"3f"](4.5x+"-1P")}},65:c(){4.3c("1P",12)},67:c(){4.3c("1P",1c)},64:c(F,H,G){d E=(F==4.4G?F:4.4G+F);H=H||D.63.6f({5s:E,2D:4.o[0]});m 4.o.2Z(E,[H,G],4.k[F])}};D.2C.2L={1P:12};D.h={1v:{1t:c(F,G,I){d H=D.h[F].31;2U(d E 59 I){H.2K[E]=H.2K[E]||[];H.2K[E].4g([G,I[E]])}},2v:c(E,G,F){d I=E.2K[G];6(!I){m}2U(d H=0;H<I.1Q;H++){6(E.k[I[H][0]]){I[H][1].1F(E.o,F)}}}},3y:{},g:c(E){6(D.h.3y[E]){m D.h.3y[E]}d F=D(\'<29 3M="h-6h">\').1E(E).g({p:"1x",b:"-5t",5:"-5t",2X:"3Y"}).2m("1s");D.h.3y[E]=!!((!(/1D|5k/).z(F.g("1e"))||(/^[1-9]/).z(F.g("l"))||(/^[1-9]/).z(F.g("j"))||!(/3j/).z(F.g("6w"))||!(/3Z|6x\\(0, 0, 0, 0\\)/).z(F.g("6A"))));6z{D("1s").1I(0).4M(F.1I(0))}6y(G){}m D.h.3y[E]},2Y:c(E){m D(E).3t("3w","5C").g("5u","3j").2I("5v.h",c(){m 12})},6s:c(E){m D(E).3t("3w","6r").g("5u","").2M("5v.h")},3e:c(H,F){6(D(H).g("1M")=="2F"){m 12}d E=(F&&F=="5")?"1k":"1l",G=12;6(H[E]>0){m 1c}H[E]=1;G=(H[E]>0);H[E]=0;m G}};D.h.3R={50:c(){d E=4;4.o.2I("6l."+4.2z,c(F){m E.5K(F)});6(D.1A.2G){4.5D=4.o.3t("3w");4.o.3t("3w","5C")}4.6j=12},52:c(){4.o.2M("."+4.2z);(D.1A.2G&&4.o.3t("3w",4.5D))},5K:c(G){(4.2s&&4.3q(G));4.3G=G;d F=4,H=(G.6i==1),E=(2d 4.k.3n=="2T"?D(G.2D).5F().1t(G.2D).7m(4.k.3n).1Q:12);6(!H||E||!4.3u(G)){m 1c}4.3H=!4.k.3s;6(!4.3H){4.6n=6q(c(){F.3H=1c},4.k.3s)}6(4.4x(G)&&4.4w(G)){4.2s=(4.2R(G)!==12);6(!4.2s){G.4p();m 1c}}4.4C=c(I){m F.5L(I)};4.4B=c(I){m F.3q(I)};D(v).2I("5M."+4.2z,4.4C).2I("5N."+4.2z,4.4B);m 12},5L:c(E){6(D.1A.2G&&!E.3N){m 4.3q(E)}6(4.2s){4.2E(E);m 12}6(4.4x(E)&&4.4w(E)){4.2s=(4.2R(4.3G,E)!==12);(4.2s?4.2E(E):4.3q(E))}m!4.2s},3q:c(E){D(v).2M("5M."+4.2z,4.4C).2M("5N."+4.2z,4.4B);6(4.2s){4.2s=12;4.2V(E)}m 12},4x:c(E){m(1o.4z(1o.2i(4.3G.2g-E.2g),1o.2i(4.3G.28-E.28))>=4.k.4c)},4w:c(E){m 4.3H},2R:c(E){},2E:c(E){},2V:c(E){},3u:c(E){m 1c}};D.h.3R.2L={3n:1J,4c:1,3s:0}})(4l);(c(A){A.2C("h.1a",A.1g({},A.h.3R,{5q:c(C){d B=!4.k.1j||!A(4.k.1j,4.o).1Q?1c:12;A(4.k.1j,4.o).5f("*").7W().1q(c(){6(4==C.2D){B=1c}});m B},5H:c(){d C=4.k;d B=A.4S(C.q)?A(C.q.1F(4.o[0],[e])):(C.q=="3a"?4.o.3a():4.o);6(!B.5F("1s").1Q){B.2m((C.2m=="19"?4.o[0].2b:C.2m))}6(B[0]!=4.o[0]&&!(/(2n|1x)/).z(B.g("p"))){B.g("p","1x")}m B},3S:c(){6(4.k.q=="4O"&&!(/^(?:r|a|f)/).z(4.o.g("p"))){4.o[0].2f.p="15"}(4.k.4K&&4.o.1E(4.k.4K+"-1a"));(4.k.1P&&4.o.1E("h-1a-1P"));4.50()},3u:c(B){d C=4.k;6(4.q||C.1P||A(B.2D).44(".h-t-1j")){m 12}4.1j=4.5q(B);6(!4.1j){m 12}m 1c},2R:c(D){d E=4.k;4.q=4.5H();6(A.h.2j){A.h.2j.8b=4}4.1G={5:(18(4.o.g("3P"),10)||0),b:(18(4.o.g("3U"),10)||0)};4.1U=4.q.g("p");4.u=4.o.u();4.u={b:4.u.b-4.1G.b,5:4.u.5-4.1G.5};4.u.1z={5:D.2g-4.u.5,b:D.28-4.u.b};4.5P();4.23=4.q.23();d B=4.23.u();6(4.23[0]==v.1s&&A.1A.8c){B={b:0,5:0}}4.u.19={b:B.b+(18(4.23.g("4a"),10)||0),5:B.5+(18(4.23.g("41"),10)||0)};6(4.1U=="15"){d C=4.o.p();4.u.15={b:C.b-(18(4.q.g("b"),10)||0)+4.2B.1l(),5:C.5-(18(4.q.g("5"),10)||0)+4.2x.1k()}}1m{4.u.15={b:0,5:0}}4.1i=4.4R(D);4.4y();6(E.5O){4.5j(E.5O)}A.1g(4,{4A:(4.1U=="1x"&&(!4.2B[0].24||(/(3I|1s)/i).z(4.2B[0].24))),4I:(4.1U=="1x"&&(!4.2x[0].24||(/(3I|1s)/i).z(4.2x[0].24))),4H:4.2B[0]!=4.23[0]&&!(4.2B[0]==v&&(/(1s|3I)/i).z(4.23[0].24)),4Q:4.2x[0]!=4.23[0]&&!(4.2x[0]==v&&(/(1s|3I)/i).z(4.23[0].24))});6(E.14){4.5g()}4.1B("1C",D);4.4y();6(A.h.2j&&!E.5h){A.h.2j.5n(4,D)}4.q.1E("h-1a-4P");4.2E(D);m 1c},5P:c(){4.2B=c(B){3F{6(/1D|2o/.z(B.g("1M"))||(/1D|2o/).z(B.g("1M-y"))){m B}B=B.19()}3E(B[0].2b);m A(v)}(4.q);4.2x=c(B){3F{6(/1D|2o/.z(B.g("1M"))||(/1D|2o/).z(B.g("1M-x"))){m B}B=B.19()}3E(B[0].2b);m A(v)}(4.q)},5j:c(B){6(B.5!=2P){4.u.1z.5=B.5+4.1G.5}6(B.2e!=2P){4.u.1z.5=4.1L.j-B.2e+4.1G.5}6(B.b!=2P){4.u.1z.b=B.b+4.1G.b}6(B.26!=2P){4.u.1z.b=4.1L.l-B.26+4.1G.b}},4y:c(){4.1L={j:4.q.2l(),l:4.q.2k()}},5g:c(){d E=4.k;6(E.14=="19"){E.14=4.q[0].2b}6(E.14=="v"||E.14=="30"){4.14=[0-4.u.15.5-4.u.19.5,0-4.u.15.b-4.u.19.b,A(E.14=="v"?v:30).j()-4.u.15.5-4.u.19.5-4.1L.j-4.1G.5-(18(4.o.g("3l"),10)||0),(A(E.14=="v"?v:30).l()||v.1s.2b.3X)-4.u.15.b-4.u.19.b-4.1L.l-4.1G.b-(18(4.o.g("3r"),10)||0)]}6(!(/^(v|30|19)$/).z(E.14)){d C=A(E.14)[0];d D=A(E.14).u();d B=(A(C).g("1M")!="2F");4.14=[D.5+(18(A(C).g("41"),10)||0)-4.u.15.5-4.u.19.5,D.b+(18(A(C).g("4a"),10)||0)-4.u.15.b-4.u.19.b,D.5+(B?1o.4z(C.5Y,C.3C):C.3C)-(18(A(C).g("41"),10)||0)-4.u.15.5-4.u.19.5-4.1L.j-4.1G.5-(18(4.o.g("3l"),10)||0),D.b+(B?1o.4z(C.3X,C.3A):C.3A)-(18(A(C).g("4a"),10)||0)-4.u.15.b-4.u.19.b-4.1L.l-4.1G.b-(18(4.o.g("3r"),10)||0)]}},1W:c(C,D){6(!D){D=4.p}d B=C=="1x"?1:-1;m{b:(D.b+4.u.15.b*B+4.u.19.b*B-(4.1U=="2n"||4.4A||4.4H?0:4.2B.1l())*B+(4.1U=="2n"?A(v).1l():0)*B+4.1G.b*B),5:(D.5+4.u.15.5*B+4.u.19.5*B-(4.1U=="2n"||4.4I||4.4Q?0:4.2x.1k())*B+(4.1U=="2n"?A(v).1k():0)*B+4.1G.5*B)}},4R:c(E){d F=4.k;d B={b:(E.28-4.u.1z.b-4.u.15.b-4.u.19.b+(4.1U=="2n"||4.4A||4.4H?0:4.2B.1l())-(4.1U=="2n"?A(v).1l():0)),5:(E.2g-4.u.1z.5-4.u.15.5-4.u.19.5+(4.1U=="2n"||4.4I||4.4Q?0:4.2x.1k())-(4.1U=="2n"?A(v).1k():0))};6(!4.1i){m B}6(4.14){6(B.5<4.14[0]){B.5=4.14[0]}6(B.b<4.14[1]){B.b=4.14[1]}6(B.5>4.14[2]){B.5=4.14[2]}6(B.b>4.14[3]){B.b=4.14[3]}}6(F.1h){d D=4.1i.b+1o.47((B.b-4.1i.b)/F.1h[1])*F.1h[1];B.b=4.14?(!(D<4.14[1]||D>4.14[3])?D:(!(D<4.14[1])?D-F.1h[1]:D+F.1h[1])):D;d C=4.1i.5+1o.47((B.5-4.1i.5)/F.1h[0])*F.1h[0];B.5=4.14?(!(C<4.14[0]||C>4.14[2])?C:(!(C<4.14[0])?C-F.1h[0]:C+F.1h[0])):C}m B},2E:c(B){4.p=4.4R(B);4.2H=4.1W("1x");4.p=4.1B("2u",B)||4.p;6(!4.k.1T||4.k.1T!="y"){4.q[0].2f.5=4.p.5+"1O"}6(!4.k.1T||4.k.1T!="x"){4.q[0].2f.b=4.p.b+"1O"}6(A.h.2j){A.h.2j.2u(4,B)}m 12},2V:c(C){d D=12;6(A.h.2j&&!4.k.5h){d D=A.h.2j.7K(4,C)}6((4.k.2y=="7J"&&!D)||(4.k.2y=="7L"&&D)||4.k.2y===1c||(A.4S(4.k.2y)&&4.k.2y.2v(4.o,D))){d B=4;A(4.q).2t(4.1i,18(4.k.7N,10)||7I,c(){B.1B("1R",C);B.4T()})}1m{4.1B("1R",C);4.4T()}m 12},4T:c(){4.q.3f("h-1a-4P");6(4.k.q!="4O"&&!4.3v){4.q.21()}4.q=1J;4.3v=12},2K:{},3i:c(B){m{q:4.q,p:4.p,4k:4.2H,k:4.k}},1B:c(C,B){A.h.1v.2v(4,C,[B,4.3i()]);6(C=="2u"){4.2H=4.1W("1x")}m 4.o.2Z(C=="2u"?C:"2u"+C,[B,4.3i()],4.k[C])},3T:c(){6(!4.o.1b("1a")){m}4.o.4d("1a").2M(".1a").3f("h-1a h-1a-4P h-1a-1P");4.52()}}));A.1g(A.h.1a,{2L:{2m:"19",1T:12,3n:":3p",3s:0,4c:1,q:"4O",7D:"5k",4K:"h"}});A.h.1v.1t("1a","1e",{1C:c(D,C){d B=A("1s");6(B.g("1e")){C.k.4J=B.g("1e")}B.g("1e",C.k.1e)},1R:c(C,B){6(B.k.4J){A("1s").g("1e",B.k.4J)}}});A.h.1v.1t("1a","1n",{1C:c(D,C){d B=A(C.q);6(B.g("1n")){C.k.4V=B.g("1n")}B.g("1n",C.k.1n)},1R:c(C,B){6(B.k.4V){A(B.q).g("1n",B.k.4V)}}});A.h.1v.1t("1a","2q",{1C:c(D,C){d B=A(C.q);6(B.g("2q")){C.k.4v=B.g("2q")}B.g("2q",C.k.2q)},1R:c(C,B){6(B.k.4v){A(B.q).g("2q",B.k.4v)}}});A.h.1v.1t("1a","3k",{1C:c(C,B){A(B.k.3k===1c?"7U":B.k.3k).1q(c(){A(\'<29 3M="h-1a-3k" 2f="4f: #7G;"></29>\').g({j:4.3C+"1O",l:4.3A+"1O",p:"1x",2q:"0.7q",1n:5S}).g(A(4).u()).2m("1s")})},1R:c(C,B){A("29.h-1a-3k").1q(c(){4.2b.4M(4)})}});A.h.1v.1t("1a","2o",{1C:c(D,C){d E=C.k;d B=A(4).1b("1a");E.2c=E.2c||20;E.22=E.22||20;B.1Z=c(F){3F{6(/1D|2o/.z(F.g("1M"))||(/1D|2o/).z(F.g("1M-y"))){m F}F=F.19()}3E(F[0].2b);m A(v)}(4);B.1Y=c(F){3F{6(/1D|2o/.z(F.g("1M"))||(/1D|2o/).z(F.g("1M-x"))){m F}F=F.19()}3E(F[0].2b);m A(v)}(4);6(B.1Z[0]!=v&&B.1Z[0].24!="3B"){B.4U=B.1Z.u()}6(B.1Y[0]!=v&&B.1Y[0].24!="3B"){B.4j=B.1Y.u()}},2u:c(E,D){d F=D.k,B=12;d C=A(4).1b("1a");6(C.1Z[0]!=v&&C.1Z[0].24!="3B"){6((C.4U.b+C.1Z[0].3A)-E.28<F.2c){C.1Z[0].1l=B=C.1Z[0].1l+F.22}6(E.28-C.4U.b<F.2c){C.1Z[0].1l=B=C.1Z[0].1l-F.22}}1m{6(E.28-A(v).1l()<F.2c){B=A(v).1l(A(v).1l()-F.22)}6(A(30).l()-(E.28-A(v).1l())<F.2c){B=A(v).1l(A(v).1l()+F.22)}}6(C.1Y[0]!=v&&C.1Y[0].24!="3B"){6((C.4j.5+C.1Y[0].3C)-E.2g<F.2c){C.1Y[0].1k=B=C.1Y[0].1k+F.22}6(E.2g-C.4j.5<F.2c){C.1Y[0].1k=B=C.1Y[0].1k-F.22}}1m{6(E.2g-A(v).1k()<F.2c){B=A(v).1k(A(v).1k()-F.22)}6(A(30).j()-(E.2g-A(v).1k())<F.2c){B=A(v).1k(A(v).1k()+F.22)}}6(B!==12){A.h.2j.5n(C,E)}}});A.h.1v.1t("1a","2h",{1C:c(D,C){d B=A(4).1b("1a");B.1H=[];A(C.k.2h.4X!=4Y?(C.k.2h.7C||":1b(1a)"):C.k.2h).1q(c(){d F=A(4);d E=F.u();6(4!=B.o[0]){B.1H.4g({3J:4,j:F.2l(),l:F.2k(),b:E.b,5:E.5})}})},2u:c(P,K){d E=A(4).1b("1a");d Q=K.k.7s||20;d O=K.4k.5,N=O+E.1L.j,D=K.4k.b,C=D+E.1L.l;2U(d M=E.1H.1Q-1;M>=0;M--){d L=E.1H[M].5,J=L+E.1H[M].j,I=E.1H[M].b,S=I+E.1H[M].l;6(!((L-Q<O&&O<J+Q&&I-Q<D&&D<S+Q)||(L-Q<O&&O<J+Q&&I-Q<C&&C<S+Q)||(L-Q<N&&N<J+Q&&I-Q<D&&D<S+Q)||(L-Q<N&&N<J+Q&&I-Q<C&&C<S+Q))){6(E.1H[M].3z){(E.k.2h.5c&&E.k.2h.5c.2v(E.o,1J,A.1g(E.3i(),{5d:E.1H[M].3J})))}E.1H[M].3z=12;5m}6(K.k.5b!="7P"){d B=1o.2i(I-C)<=Q;d R=1o.2i(S-D)<=Q;d G=1o.2i(L-N)<=Q;d H=1o.2i(J-O)<=Q;6(B){K.p.b=E.1W("15",{b:I-E.1L.l,5:0}).b}6(R){K.p.b=E.1W("15",{b:S,5:0}).b}6(G){K.p.5=E.1W("15",{b:0,5:L-E.1L.j}).5}6(H){K.p.5=E.1W("15",{b:0,5:J}).5}}d F=(B||R||G||H);6(K.k.5b!="85"){d B=1o.2i(I-D)<=Q;d R=1o.2i(S-C)<=Q;d G=1o.2i(L-O)<=Q;d H=1o.2i(J-N)<=Q;6(B){K.p.b=E.1W("15",{b:I,5:0}).b}6(R){K.p.b=E.1W("15",{b:S-E.1L.l,5:0}).b}6(G){K.p.5=E.1W("15",{b:0,5:L}).5}6(H){K.p.5=E.1W("15",{b:0,5:J-E.1L.j}).5}}6(!E.1H[M].3z&&(B||R||G||H||F)){(E.k.2h.2h&&E.k.2h.2h.2v(E.o,1J,A.1g(E.3i(),{5d:E.1H[M].3J})))}E.1H[M].3z=(B||R||G||H||F)}}});A.h.1v.1t("1a","5e",{1C:c(D,C){d B=A(4).1b("1a");B.3D=[];A(C.k.5e).1q(c(){6(A.1b(4,"4n")){d E=A.1b(4,"4n");B.3D.4g({11:E,5G:E.k.2y});E.7Y();E.1B("7X",D,B)}})},1R:c(D,C){d B=A(4).1b("1a");A.1q(B.3D,c(){6(4.11.2Q){4.11.2Q=0;B.3v=1c;4.11.3v=12;6(4.5G){4.11.k.2y=1c}4.11.2V(D);4.11.o.2Z("6m",[D,A.1g(4.11.h(),{8d:B.o})],4.11.k.80);4.11.k.q=4.11.k.4t}1m{4.11.1B("7S",D,B)}})},2u:c(F,E){d D=A(4).1b("1a"),B=4;d C=c(K){d H=K.5,J=H+K.j,I=K.b,G=I+K.l;m(H<(4.2H.5+4.u.1z.5)&&(4.2H.5+4.u.1z.5)<J&&I<(4.2H.b+4.u.1z.b)&&(4.2H.b+4.u.1z.b)<G)};A.1q(D.3D,c(G){6(C.2v(D,4.11.7T)){6(!4.11.2Q){4.11.2Q=1;4.11.3K=A(B).3a().2m(4.11.o).1b("4n-3J",1c);4.11.k.4t=4.11.k.q;4.11.k.q=c(){m E.q[0]};F.2D=4.11.3K[0];4.11.3u(F,1c);4.11.2R(F,1c,1c);4.11.u.1z.b=D.u.1z.b;4.11.u.1z.5=D.u.1z.5;4.11.u.19.5-=D.u.19.5-4.11.u.19.5;4.11.u.19.b-=D.u.19.b-4.11.u.19.b;D.1B("7E",F)}6(4.11.3K){4.11.2E(F)}}1m{6(4.11.2Q){4.11.2Q=0;4.11.3v=1c;4.11.k.2y=12;4.11.2V(F,1c);4.11.k.q=4.11.k.4t;4.11.3K.21();6(4.11.5V){4.11.5V.21()}D.1B("7M",F)}}})}});A.h.1v.1t("1a","2W",{1C:c(D,B){d C=A.7B(A(B.k.2W.7n)).7z(c(F,E){m(18(A(F).g("1n"),10)||B.k.2W.3Q)-(18(A(E).g("1n"),10)||B.k.2W.3Q)});A(C).1q(c(E){4.2f.1n=B.k.2W.3Q+E});4[0].2f.1n=B.k.2W.3Q+C.1Q}})})(4l);(c(A){A.2C("h.t",A.1g({},A.h.3R,{3S:c(){d M=4,N=4.k;d Q=4.o.g("p");4.55=4.o;4.o.1E("h-t").g({p:/42/.z(Q)?"15":Q});A.1g(N,{3b:!!(N.1V),q:N.q||N.1K||N.2t?N.q||"89":1J,2r:N.2r===1c?"h-t-3g-1j":N.2r});d H="4h 5R #82";N.61={"h-t":{2X:"3Y"},"h-t-1j":{p:"1x",4f:"#60",7V:"0.4h"},"h-t-n":{1e:"n-1d",l:"1S",5:"1f",2e:"1f",4m:H},"h-t-s":{1e:"s-1d",l:"1S",5:"1f",2e:"1f",4q:H},"h-t-e":{1e:"e-1d",j:"1S",b:"1f",26:"1f",4r:H},"h-t-w":{1e:"w-1d",j:"1S",b:"1f",26:"1f",4s:H},"h-t-1u":{1e:"1u-1d",j:"1S",l:"1S",4r:H,4q:H},"h-t-1r":{1e:"1r-1d",j:"1S",l:"1S",4q:H,4s:H},"h-t-1y":{1e:"1y-1d",j:"1S",l:"1S",4r:H,4m:H},"h-t-1w":{1e:"1w-1d",j:"1S",l:"1S",4s:H,4m:H}};N.54={"h-t-1j":{4f:"#60",6p:"4h 5R #6k",l:"5W",j:"5W"},"h-t-n":{1e:"n-1d",b:"1f",5:"45%"},"h-t-s":{1e:"s-1d",26:"1f",5:"45%"},"h-t-e":{1e:"e-1d",2e:"1f",b:"45%"},"h-t-w":{1e:"w-1d",5:"1f",b:"45%"},"h-t-1u":{1e:"1u-1d",2e:"1f",26:"1f"},"h-t-1r":{1e:"1r-1d",5:"1f",26:"1f"},"h-t-1w":{1e:"1w-1d",5:"1f",b:"1f"},"h-t-1y":{1e:"1y-1d",2e:"1f",b:"1f"}};N.4Z=4.o[0].43;6(N.4Z.56(/6t|3h|3p|57|3N|6v/i)){d B=4.o;6(/15/.z(B.g("p"))&&A.1A.5B){B.g({p:"15",b:"1D",5:"1D"})}B.6B(A(\'<29 3M="h-51"	2f="1M: 2F;"></29>\').g({p:B.g("p"),j:B.2l(),l:B.2k(),b:B.g("b"),5:B.g("5")}));d J=4.o;4.o=4.o.19();4.o.1b("t",4);4.o.g({3P:J.g("3P"),3U:J.g("3U"),3l:J.g("3l"),3r:J.g("3r")});J.g({3P:0,3U:0,3l:0,3r:0});6(A.1A.62&&N.4p){J.g("1d","3j")}N.2p=J.g({p:"42",66:1,2X:"3Y"});4.o.g({4N:J.g("4N")});4.3d()}6(!N.1p){N.1p=!A(".h-t-1j",4.o).1Q?"e,s,1u":{n:".h-t-n",e:".h-t-e",s:".h-t-s",w:".h-t-w",1u:".h-t-1u",1r:".h-t-1r",1y:".h-t-1y",1w:".h-t-1w"}}6(N.1p.4X==4Y){N.1n=N.1n||5S;6(N.1p=="6e"){N.1p="n,e,s,w,1u,1r,1y,1w"}d O=N.1p.3O(",");N.1p={};d G={1j:"p: 1x; 2X: 3j; 1M:2F;",n:"b: 2A; j:3L%;",e:"2e: 2A; l:3L%;",s:"26: 2A; j:3L%;",w:"5: 2A; l:3L%;",1u:"26: 2A; 2e: 1f;",1r:"26: 2A; 5: 1f;",1y:"b: 2A; 2e: 1f;",1w:"b: 2A; 5: 1f;"};2U(d R=0;R<O.1Q;R++){d S=A.81(O[R]),L=N.61,F="h-t-"+S,C=!A.h.g(F)&&!N.2r,P=A.h.g("h-t-3g-1j"),T=A.1g(L[F],L["h-t-1j"]),D=A.1g(N.54[F],!P?N.54["h-t-1j"]:{});d K=/1r|1u|1y|1w/.z(S)?{1n:++N.1n}:{};d I=(C?G[S]:""),E=A([\'<29 3M="h-t-1j \',F,\'" 2f="\',I,G.1j,\'"></29>\'].53("")).g(K);N.1p[S]=".h-t-"+S;4.o.5J(E.g(C?T:{}).g(N.2r?D:{}).1E(N.2r?"h-t-3g-1j":"").1E(N.2r))}6(N.2r){4.o.1E("h-t-3g").g(!A.h.g("h-t-3g")?{}:{})}}4.5l=c(Y){Y=Y||4.o;2U(d V 59 N.1p){6(N.1p[V].4X==4Y){N.1p[V]=A(N.1p[V],4.o).5o()}6(N.3Z){N.1p[V].g({2q:0})}6(4.o.44(".h-51")&&N.4Z.56(/3h|3p|57|3N/i)){d W=A(N.1p[V],4.o),X=0;X=/1r|1y|1w|1u|n|s/.z(V)?W.2k():W.2l();d U=["7w",/1y|1w|n/.z(V)?"7Z":/1u|1r|s/.z(V)?"7R":/^e$/.z(V)?"88":"7u"].53("");6(!N.3Z){Y.g(U,X)}4.3d()}6(!A(N.1p[V]).1Q){5m}}};4.5l(4.o);N.2J=A(".h-t-1j",M.o);6(N.2Y){N.2J.1q(c(U,V){A.h.2Y(V)})}N.2J.7Q(c(){6(!N.4e){6(4.5p){d U=4.5p.56(/h-t-(1u|1r|1y|1w|n|e|s|w)/i)}M.1T=N.1T=U&&U[1]?U[1]:"1u"}});6(N.5U){N.2J.5i();A(M.o).1E("h-t-4W").7F(c(){A(4).3f("h-t-4W");N.2J.5o()},c(){6(!N.4e){A(4).1E("h-t-4W");N.2J.5i()}})}4.50()},2K:{},h:c(){m{55:4.55,o:4.o,q:4.q,p:4.p,Z:4.Z,k:4.k,1N:4.1N,1i:4.1i}},1B:c(C,B){A.h.1v.2v(4,C,[B,4.h()]);6(C!="1d"){4.o.2Z(["1d",C].53(""),[B,4.h()],4.k[C])}},3T:c(){d D=4.o,C=D.7y(".h-t").1I(0);4.52();d B=c(E){A(E).3f("h-t h-t-1P").4d("t").2M(".t").5f(".h-t-1j").21()};B(D);6(D.44(".h-51")&&C){D.19().5J(A(C).g({p:D.g("p"),j:D.2l(),l:D.2k(),b:D.g("b"),5:D.g("5")})).6o().21();B(C)}},3u:c(D){6(4.k.1P){m 12}d C=12;2U(d B 59 4.k.1p){6(A(4.k.1p[B])[0]==D.2D){C=1c}}6(!C){m 12}m 1c},2R:c(I){d C=4.k,B=4.o.p(),D=4.o,H=c(M){m 18(M,10)||0},G=A.1A.2G&&A.1A.5a<7;C.4e=1c;C.58={b:A(v).1l(),5:A(v).1k()};6(D.44(".h-1a")||(/1x/).z(D.g("p"))){d J=A.1A.2G&&!C.14&&(/1x/).z(D.g("p"))&&!(/15/).z(D.19().g("p"));d K=J?C.58.b:0,F=J?C.58.5:0;D.g({p:"1x",b:(B.b+K),5:(B.5+F)})}6(A.1A.5B&&/15/.z(D.g("p"))){D.g({p:"15",b:"1D",5:"1D"})}4.5T();d L=H(4.q.g("5")),E=H(4.q.g("b"));6(C.14){L+=A(C.14).1k()||0;E+=A(C.14).1l()||0}4.u=4.q.u();4.p={5:L,b:E};4.Z=C.q||G?{j:D.2l(),l:D.2k()}:{j:D.j(),l:D.l()};4.1N=C.q||G?{j:D.2l(),l:D.2k()}:{j:D.j(),l:D.l()};4.1i={5:L,b:E};4.2w={j:D.2l()-D.j(),l:D.2k()-D.l()};4.5w={5:I.2g,b:I.28};C.1V=(2d C.1V=="5Q")?C.1V:((4.1N.j/4.1N.l)||1);6(C.4o){A("1s").g("1e",4.1T+"-1d")}4.1B("1C",I);m 1c},2E:c(I){d D=4.q,C=4.k,J={},M=4,F=4.5w,K=4.1T;d N=(I.2g-F.5)||0,L=(I.28-F.b)||0;d E=4.2a[K];6(!E){m 12}d H=E.1F(4,[I,N,L]),G=A.1A.2G&&A.1A.5a<7,B=4.2w;6(C.3b||I.48){H=4.5r(H,I)}H=4.5E(H,I);4.1B("1d",I);D.g({b:4.p.b+"1O",5:4.p.5+"1O",j:4.Z.j+"1O",l:4.Z.l+"1O"});6(!C.q&&C.2p){4.3d()}4.4i(H);4.o.2Z("1d",[I,4.h()],4.k.1d);m 12},2V:c(I){4.k.4e=12;d E=4.k,H=c(M){m 18(M,10)||0},K=4;6(E.q){d D=E.2p,B=D&&(/3h/i).z(D.1I(0).43),C=B&&A.h.3e(D.1I(0),"5")?0:K.2w.l,G=B?0:K.2w.j;d L={j:(K.Z.j-G),l:(K.Z.l-C)},F=(18(K.o.g("5"),10)+(K.p.5-K.1i.5))||1J,J=(18(K.o.g("b"),10)+(K.p.b-K.1i.b))||1J;6(!E.2t){4.o.g(A.1g(L,{b:J,5:F}))}6(E.q&&!E.2t){4.3d()}}6(E.4o){A("1s").g("1e","1D")}4.1B("1R",I);6(E.q){4.q.21()}m 12},4i:c(B){d C=4.k;4.u=4.q.u();6(B.5){4.p.5=B.5}6(B.b){4.p.b=B.b}6(B.l){4.Z.l=B.l}6(B.j){4.Z.j=B.j}},5r:c(D,E){d F=4.k,G=4.p,C=4.Z,B=4.1T;6(D.l){D.j=(C.l*F.1V)}1m{6(D.j){D.l=(C.j/F.1V)}}6(B=="1r"){D.5=G.5+(C.j-D.j);D.b=1J}6(B=="1w"){D.b=G.b+(C.l-D.l);D.5=G.5+(C.j-D.j)}m D},5E:c(H,I){d F=4.q,E=4.k,N=E.3b||I.48,M=4.1T,P=H.j&&E.4b&&E.4b<H.j,J=H.l&&E.49&&E.49<H.l,D=H.j&&E.3o&&E.3o>H.j,O=H.l&&E.3m&&E.3m>H.l;6(D){H.j=E.3o}6(O){H.l=E.3m}6(P){H.j=E.4b}6(J){H.l=E.49}d C=4.1i.5+4.1N.j,L=4.p.b+4.Z.l;d G=/1r|1w|w/.z(M),B=/1w|1y|n/.z(M);6(D&&G){H.5=C-E.3o}6(P&&G){H.5=C-E.4b}6(O&&B){H.b=L-E.3m}6(J&&B){H.b=L-E.49}d K=!H.j&&!H.l;6(K&&!H.5&&H.b){H.b=1J}1m{6(K&&!H.b&&H.5){H.5=1J}}m H},3d:c(){d F=4.k;6(!F.2p){m}d D=F.2p,C=4.q||4.o;6(!F.2O){d B=[D.g("4a"),D.g("7o"),D.g("7A"),D.g("41")],E=[D.g("7t"),D.g("7H"),D.g("87"),D.g("84")];F.2O=A.77(B,c(G,I){d H=18(G,10)||0,J=18(E[I],10)||0;m H+J})}D.g({l:(C.l()-F.2O[0]-F.2O[2])+"1O",j:(C.j()-F.2O[1]-F.2O[3])+"1O"})},5T:c(){d C=4.o,F=4.k;4.4L=C.u();6(F.q){4.q=4.q||A(\'<29 2f="1M:2F;"></29>\');d B=A.1A.2G&&A.1A.5a<7,D=(B?1:0),E=(B?2:-1);4.q.1E(F.q).g({j:C.2l()+E,l:C.2k()+E,p:"1x",5:4.4L.5-D+"1O",b:4.4L.b-D+"1O",1n:++F.1n});4.q.2m("1s");6(F.2Y){A.h.2Y(4.q.1I(0))}}1m{4.q=C}},2a:{e:c(D,C,B){m{j:4.1N.j+C}},w:c(F,C,B){d G=4.k,D=4.1N,E=4.1i;m{5:E.5+C,j:D.j-C}},n:c(F,C,B){d G=4.k,D=4.1N,E=4.1i;m{b:E.b+B,l:D.l-B}},s:c(D,C,B){m{l:4.1N.l+B}},1u:c(D,C,B){m A.1g(4.2a.s.1F(4,2N),4.2a.e.1F(4,[D,C,B]))},1r:c(D,C,B){m A.1g(4.2a.s.1F(4,2N),4.2a.w.1F(4,[D,C,B]))},1y:c(D,C,B){m A.1g(4.2a.n.1F(4,2N),4.2a.e.1F(4,[D,C,B]))},1w:c(D,C,B){m A.1g(4.2a.n.1F(4,2N),4.2a.w.1F(4,[D,C,B]))}}}));A.1g(A.h.t,{2L:{3n:":3p",4c:1,3s:0,4p:1c,3Z:12,3o:10,3m:10,1V:12,2Y:1c,4o:1c,5U:12,2r:12}});A.h.1v.1t("t","14",{1C:c(I,K){d E=K.k,M=A(4).1b("t"),G=M.o;d C=E.14,F=(C 7v A)?C.1I(0):(/19/.z(C))?G.19().1I(0):C;6(!F){m}M.4u=A(F);6(/v/.z(C)||C==v){M.3x={5:0,b:0};M.3W={5:0,b:0};M.2S={o:A(v),5:0,b:0,j:A(v).j(),l:A(v).l()||v.1s.2b.3X}}1m{M.3x=A(F).u();M.3W=A(F).p();M.3V={l:A(F).5X(),j:A(F).5Z()};d J=M.3x,B=M.3V.l,H=M.3V.j,D=(A.h.3e(F,"5")?F.5Y:H),L=(A.h.3e(F)?F.3X:B);M.2S={o:F,5:J.5,b:J.b,j:D,l:L}}},1d:c(H,K){d E=K.k,N=A(4).1b("t"),C=N.3V,J=N.3x,G=N.Z,I=N.p,L=E.3b||H.48,B={b:0,5:0},D=N.4u;6(D[0]!=v&&/42/.z(D.g("p"))){B=N.3W}6(I.5<(E.q?J.5:B.5)){N.Z.j=N.Z.j+(E.q?(N.p.5-J.5):(N.p.5-B.5));6(L){N.Z.l=N.Z.j/E.1V}N.p.5=E.q?J.5:B.5}6(I.b<(E.q?J.b:0)){N.Z.l=N.Z.l+(E.q?(N.p.b-J.b):N.p.b);6(L){N.Z.j=N.Z.l*E.1V}N.p.b=E.q?J.b:0}d F=(E.q?N.u.5-J.5:(N.p.5-B.5))+N.2w.j,M=(E.q?N.u.b-J.b:N.p.b)+N.2w.l;6(F+N.Z.j>=N.2S.j){N.Z.j=N.2S.j-F;6(L){N.Z.l=N.Z.j/E.1V}}6(M+N.Z.l>=N.2S.l){N.Z.l=N.2S.l-M;6(L){N.Z.j=N.Z.l*E.1V}}},1R:c(G,J){d C=J.k,L=A(4).1b("t"),H=L.p,I=L.3x,B=L.3W,D=L.4u;d E=A(L.q),M=E.u(),K=E.5Z(),F=E.5X();6(C.q&&!C.2t&&/15/.z(D.g("p"))){A(4).g({5:(M.5-I.5),b:(M.b-I.b),j:K,l:F})}6(C.q&&!C.2t&&/42/.z(D.g("p"))){A(4).g({5:B.5+(M.5-I.5),b:B.b+(M.b-I.b),j:K,l:F})}}});A.h.1v.1t("t","1h",{1d:c(H,J){d D=J.k,L=A(4).1b("t"),G=L.Z,E=L.1N,F=L.1i,K=L.1T,I=D.3b||H.48;D.1h=2d D.1h=="5Q"?[D.1h,D.1h]:D.1h;d C=1o.47((G.j-E.j)/(D.1h[0]||1))*(D.1h[0]||1),B=1o.47((G.l-E.l)/(D.1h[1]||1))*(D.1h[1]||1);6(/^(1u|s|e)$/.z(K)){L.Z.j=E.j+C;L.Z.l=E.l+B}1m{6(/^(1y)$/.z(K)){L.Z.j=E.j+C;L.Z.l=E.l+B;L.p.b=F.b-B}1m{6(/^(1r)$/.z(K)){L.Z.j=E.j+C;L.Z.l=E.l+B;L.p.5=F.5-C}1m{L.Z.j=E.j+C;L.Z.l=E.l+B;L.p.b=F.b-B;L.p.5=F.5-C}}}}});A.h.1v.1t("t","2t",{1R:c(I,K){d F=K.k,L=A(4).1b("t");d E=F.2p,B=E&&(/3h/i).z(E.1I(0).43),C=B&&A.h.3e(E.1I(0),"5")?0:L.2w.l,H=B?0:L.2w.j;d D={j:(L.Z.j-H),l:(L.Z.l-C)},G=(18(L.o.g("5"),10)+(L.p.5-L.1i.5))||1J,J=(18(L.o.g("b"),10)+(L.p.b-L.1i.b))||1J;L.o.2t(A.1g(D,J&&G?{b:J,5:G}:{}),{83:F.7r||"7p",7x:F.7O||"86",8a:c(){d M={j:18(L.o.g("j"),10),l:18(L.o.g("l"),10),b:18(L.o.g("b"),10),5:18(L.o.g("5"),10)};6(E){E.g({j:M.j,l:M.l})}L.4i(M);L.1B("2t",I)}})}});A.h.1v.1t("t","1K",{1C:c(E,D){d F=D.k,B=A(4).1b("t"),G=F.2p,C=B.Z;6(!G){B.1K=B.o.3a()}1m{B.1K=G.3a()}B.1K.g({2q:0.25,2X:"3Y",p:"15",l:C.l,j:C.j,4N:0,5:0,b:0}).1E("h-t-1K").1E(2d F.1K=="2T"?F.1K:"");B.1K.2m(B.q)},1d:c(D,C){d E=C.k,B=A(4).1b("t"),F=E.2p;6(B.1K){B.1K.g({p:"15",l:B.Z.l,j:B.Z.j})}},1R:c(D,C){d E=C.k,B=A(4).1b("t"),F=E.2p;6(B.1K&&B.q){B.q.1I(0).4M(B.1K.1I(0))}}});A.h.1v.1t("t","1X",{1C:c(E,C){d F=C.k,B=A(4).1b("t"),D=c(G){A(G).1q(c(){A(4).1b("t-4F",{j:18(A(4).j(),10),l:18(A(4).l(),10),5:18(A(4).g("5"),10),b:18(A(4).g("b"),10)})})};6(2d(F.1X)=="5I"){6(F.1X.1Q){F.1X=F.1X[0];D(F.1X)}1m{A.1q(F.1X,c(G,H){D(G)})}}1m{D(F.1X)}},1d:c(F,E){d G=E.k,C=A(4).1b("t"),D=C.1N,I=C.1i;d H={l:(C.Z.l-D.l)||0,j:(C.Z.j-D.j)||0,b:(C.p.b-I.b)||0,5:(C.p.5-I.5)||0},B=c(J,K){A(J).1q(c(){d N=A(4).1b("t-4F"),M={},L=K&&K.1Q?K:["j","l","b","5"];A.1q(L||["j","l","b","5"],c(O,Q){d P=(N[Q]||0)+(H[Q]||0);6(P&&P>=0){M[Q]=P||1J}});A(4).g(M)})};6(2d(G.1X)=="5I"){A.1q(G.1X,c(J,K){B(J,K)})}1m{B(G.1X)}},1R:c(C,B){A(4).4d("t-4F-1C")}})})(4l);',62,510,'||||this|left|if|||||top|function|var|||css|ui||width|options|height|return||element|position|helper|||resizable|offset|document||||test||||||||||||||||||||||||||size||instance|false||containment|relative|||parseInt|parent|draggable|data|true|resize|cursor|0px|extend|grid|originalPosition|handle|scrollLeft|scrollTop|else|zIndex|Math|handles|each|sw|body|add|se|plugin|nw|absolute|ne|click|browser|_propagate|start|auto|addClass|apply|margins|snapElements|get|null|ghost|helperProportions|overflow|originalSize|px|disabled|length|stop|4px|axis|cssPosition|aspectRatio|_convertPositionTo|alsoResize|overflowX|overflowY||remove|scrollSpeed|offsetParent|tagName||bottom||pageY|div|_change|parentNode|scrollSensitivity|typeof|right|style|pageX|snap|abs|ddmanager|outerHeight|outerWidth|appendTo|fixed|scroll|proportionallyResize|opacity|knobHandles|_mouseStarted|animate|drag|call|sizeDiff|scrollLeftParent|revert|widgetName|0pt|scrollTopParent|widget|target|_mouseDrag|hidden|msie|positionAbs|bind|_handles|plugins|defaults|unbind|arguments|borderDif|undefined|isOver|_mouseStart|parentData|string|for|_mouseStop|stack|display|disableSelection|triggerHandler|window|prototype|||||||||clone|_aspectRatio|_setData|_proportionallyResize|hasScroll|removeClass|knob|textarea|uiHash|none|iframeFix|marginRight|minHeight|cancel|minWidth|input|_mouseUp|marginBottom|delay|attr|_mouseCapture|cancelHelperRemoval|unselectable|containerOffset|cssCache|snapping|offsetHeight|HTML|offsetWidth|sortables|while|do|_mouseDownEvent|mouseDelayMet|html|item|currentItem|100|class|button|split|marginLeft|min|mouse|_init|destroy|marginTop|containerSize|containerPosition|scrollHeight|block|transparent||borderLeftWidth|static|nodeName|is|||round|shiftKey|maxHeight|borderTopWidth|maxWidth|distance|removeData|resizing|background|push|1px|_updateCache|overflowXOffset|absolutePosition|jQuery|borderTop|sortable|preserveCursor|preventDefault|borderBottom|borderRight|borderLeft|_helper|containerElement|_opacity|_mouseDelayMet|_mouseDistanceMet|cacheHelperProportions|max|PAGEY_INCLUDES_SCROLL|_mouseUpDelegate|_mouseMoveDelegate|fn|_getData|alsoresize|widgetEventPrefix|OFFSET_PARENT_NOT_SCROLL_PARENT_Y|PAGEX_INCLUDES_SCROLL|_cursor|cssNamespace|elementOffset|removeChild|margin|original|dragging|OFFSET_PARENT_NOT_SCROLL_PARENT_X|_generatePosition|isFunction|_clear|overflowYOffset|_zIndex|autohide|constructor|String|_nodeName|_mouseInit|wrapper|_mouseDestroy|join|knobTheme|originalElement|match|select|documentScroll|in|version|snapMode|release|snapItem|connectToSortable|find|setContainment|dropBehaviour|hide|adjustOffsetFromHelper|default|_renderAxis|continue|prepareOffsets|show|className|getHandle|_updateRatio|type|5000px|MozUserSelect|selectstart|originalMousePosition|widgetBaseClass|metadata|getterSetter|option|opera|on|_mouseUnselectable|_respectSize|parents|shouldRevert|createHelper|object|append|_mouseDown|_mouseMove|mousemove|mouseup|cursorAt|cacheScrollParents|number|solid|1000|_renderProxy|autoHide|placeholder|8px|innerHeight|scrollWidth|innerWidth|F2F2F2|defaultTheme|safari|event|_trigger|enable|zoom|disable|slice|setData|_|substring|new|eventPrefix|all|fix|getData|gen|which|started|808080|mousedown|sortreceive|_mouseDelayTimer|end|border|setTimeout|off|enableSelection|canvas|Array|img|backgroundImage|rgba|catch|try|backgroundColor|wrap|getter|DOWN|DELETE|CONTROL|188|END|ENTER|LEFT|INSERT|HOME|ESCAPE|COMMA|CAPS_LOCK|tabbable|expr|dir|visibility|toLowerCase|tabIndex|BACKSPACE|keyCode|href|NUMPAD_ADD|107|RIGHT|190|PERIOD|PAGE_UP|SHIFT|SPACE|concat|map|UP|TAB|PAGE_DOWN|109|111|NUMPAD_DIVIDE|110|NUMPAD_DECIMAL|NUMPAD_ENTER|108|NUMPAD_SUBTRACT|106|NUMPAD_MULTIPLY|inArray|filter|group|borderRightWidth|slow|001|animateDuration|snapTolerance|paddingTop|Left|instanceof|padding|easing|children|sort|borderBottomWidth|makeArray|items|scope|toSortable|hover|fff|paddingRight|500|invalid|drop|valid|fromSortable|revertDuration|animateEasing|inner|mouseover|Bottom|deactivate|containerCache|iframe|fontSize|andSelf|activate|_refreshItems|Top|receive|trim|DEDEDE|duration|paddingLeft|outer|swing|paddingBottom|Right|proxy|step|current|mozilla|sender'.split('|'),0,{}));

/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */

/**
 * Create a cookie with the given name and value and other optional parameters.
 *
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Set the value of a cookie.
 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
 * @desc Create a cookie with all available options.
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Create a session cookie.
 * @example $.cookie('the_cookie', null);
 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
 *       used when the cookie was set.
 *
 * @param String name The name of the cookie.
 * @param String value The value of the cookie.
 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
 *                             when the the browser exits.
 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
 *                        require a secure protocol (like HTTPS).
 * @type undefined
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */

/**
 * Get the value of a cookie with the given name.
 *
 * @example $.cookie('the_cookie');
 * @desc Get the value of a cookie.
 *
 * @param String name The name of the cookie.
 * @return The value of the cookie.
 * @type String
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options = $.extend({}, options); // clone object since it's unexpected behavior if the expired property were changed
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // NOTE Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};
/*
 * jQuery Color Animations
 * Copyright 2007 John Resig
 * Released under the MIT and GPL licenses.
 */

(function(jQuery){

	// We override the animation for all of these color styles
	jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){
		jQuery.fx.step[attr] = function(fx){
			if ( fx.state == 0 ) {
				fx.start = getColor( fx.elem, attr );
				fx.end = getRGB( fx.end );
			}

			fx.elem.style[attr] = "rgb(" + [
				Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0),
				Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0),
				Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)
			].join(",") + ")";
		}
	});

	// Color Conversion functions from highlightFade
	// By Blair Mitchelmore
	// http://jquery.offput.ca/highlightFade/

	// Parse strings looking for color tuples [255,255,255]
	function getRGB(color) {
		var result;

		// Check if we're already dealing with an array of colors
		if ( color && color.constructor == Array && color.length == 3 )
			return color;

		// Look for rgb(num,num,num)
		if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
			return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];

		// Look for rgb(num%,num%,num%)
		if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
			return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];

		// Look for #a0b1c2
		if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
			return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];

		// Look for #fff
		if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
			return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];

		// Otherwise, we're most likely dealing with a named color
		return colors[jQuery.trim(color).toLowerCase()];
	}
	
	function getColor(elem, attr) {
		var color;

		do {
			color = jQuery.curCSS(elem, attr);

			// Keep going until we find an element that has color, or we hit the body
			if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") )
				break; 

			attr = "backgroundColor";
		} while ( elem = elem.parentNode );

		return getRGB(color);
	};
	
	// Some named colors to work with
	// From Interface by Stefan Petre
	// http://interface.eyecon.ro/

	var colors = {
		aqua:[0,255,255],
		azure:[240,255,255],
		beige:[245,245,220],
		black:[0,0,0],
		blue:[0,0,255],
		brown:[165,42,42],
		cyan:[0,255,255],
		darkblue:[0,0,139],
		darkcyan:[0,139,139],
		darkgrey:[169,169,169],
		darkgreen:[0,100,0],
		darkkhaki:[189,183,107],
		darkmagenta:[139,0,139],
		darkolivegreen:[85,107,47],
		darkorange:[255,140,0],
		darkorchid:[153,50,204],
		darkred:[139,0,0],
		darksalmon:[233,150,122],
		darkviolet:[148,0,211],
		fuchsia:[255,0,255],
		gold:[255,215,0],
		green:[0,128,0],
		indigo:[75,0,130],
		khaki:[240,230,140],
		lightblue:[173,216,230],
		lightcyan:[224,255,255],
		lightgreen:[144,238,144],
		lightgrey:[211,211,211],
		lightpink:[255,182,193],
		lightyellow:[255,255,224],
		lime:[0,255,0],
		magenta:[255,0,255],
		maroon:[128,0,0],
		navy:[0,0,128],
		olive:[128,128,0],
		orange:[255,165,0],
		pink:[255,192,203],
		purple:[128,0,128],
		violet:[128,0,128],
		red:[255,0,0],
		silver:[192,192,192],
		white:[255,255,255],
		yellow:[255,255,0]
	};
	
})(jQuery);

/*	SWFObject v2.2 <http://code.google.com/p/swfobject/> 
	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();
    //*************************************************************************
	// form validator - send: html form reference, array of require fields, verbose/non-verbose return 
	//*************************************************************************
    function formValidator(frm, reqFields) {
        // will be populated with errors: Array(fieldIndex,errorType)
        var errors = Array();
        if (!frm) { return 'DEVELOPMENT CONFIGURATION ERROR: cant find form';  }
        if (!reqFields || !reqFields.length>0) { return 'DEVELOPMENT CONFIGURATION ERROR: cant find reqFields array';  }        
        if (arguments.length > 2 && arguments[2] == true) {
            var verbose = true;
        }
        // loop over require fields array
        for(var fieldIndex=0; fieldIndex < reqFields.length; fieldIndex++){
            var frmEle = eval('frm.'+reqFields[fieldIndex][0]);
            if(!frmEle) { 
                return 'DEVELOPMENT CONFIGURATION ERROR: cant find form element - '+reqFields[fieldIndex][0];
            }            
            // determine field type
            var eleType = getFormElementType(frmEle);
            // determine validation requirements
            var requirement = '';
            if (reqFields[fieldIndex].length > 2) {
                var reqAtt = reqFields[fieldIndex][2].split(':');
                requirement = reqAtt[0];
                if (reqAtt[1]) {
                    var reqArgs = reqAtt[1].split(',');
                }
            }
            //alert('element name: '+frmEle.name+', value: '+frmEle.value+', req: '+requirement);        
            switch(eleType){ // validate entry
				case 'text':
				case 'textarea':
                case 'password': 
				case 'file':                   
                    if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[0]); }
                    if (trim(frmEle.value) == '') { // if blank
                        errors.push(Array(fieldIndex,'blank'));
                        if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[1]); }
                    } else {                         
                        // Possible validation requirements
                        switch(requirement) {
                            case 'email': // must be valid email format
                                if (!checkEmail(trim(frmEle.value))) {
                                    errors.push(Array(fieldIndex,'invalid format'));
                                    if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[1]); }
                                }
                            break;
                            case 'number': // must be a number 
                                if (!checkNumber(trim(frmEle.value))) {
                                    errors.push(Array(fieldIndex,'not a number'));
                                    if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[1]); }
                                }
                            break;
                            case 'phone': // must be a number 
                                if (!checkPhone(trim(frmEle.value))) {
                                    errors.push(Array(fieldIndex,'invalid format'));
                                    if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[1]); }
                                }
                            break;
                            case 'creditcard': // must be a number 
                                if (!checkCreditCard(trim(frmEle.value))) {
                                    errors.push(Array(fieldIndex,'invalid format'));
                                    if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[1]); }
                                }
                            break;
                            case 'typedCreditCard': // must be a number 
                                var type = trim(eval('frm.'+reqArgs[0]+'.options[frm.'+reqArgs[0]+'.selectedIndex].value'));
                                if (!isValidCreditCard(trim(frmEle.value), type)) {
                                    errors.push(Array(fieldIndex,'invalid format'));
                                    if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[1]); }
                                }
                            break;
                            case 'password': // must be valid password format (add multiple versions?)    
                                if (!checkPassword(trim(frmEle.value),8,16)) {
                                    errors.push(Array(fieldIndex,'invalid format'));
                                    if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[1]); }
                                }
                            break;
                            case 'match': // must match field passed in argument
                                if (trim(frmEle.value) != eval('frm.'+reqArgs[0]+'.value')) {
                                    errors.push(Array(fieldIndex,'does not match'));
                                    if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[1]); }
                                }
                            break;

                            case 'length': // first arg: min, second arg: max
                                // check min
                                if (reqArgs[0] && reqArgs[0] > 0 && frmEle.value.length < reqArgs[0]) { 
                                    errors.push(Array(fieldIndex,'entry too short'));
                                    if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[1]); }
                                }
                                // check max
                                if (reqArgs[1] && reqArgs[1] > 0 && frmEle.value.length > reqArgs[1]) {
                                    errors.push(Array(fieldIndex,'entry too long'));
                                    if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[1]); }
                                }
                            break;
                        }
                    }					
				break;
				case 'checkbox':
                    if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[0]); }
                    if (frmEle.checked == false) { 
                        errors.push(Array(fieldIndex,'unchecked'));
                        if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[1]); }
                    }
				break;
				case 'select-one':
                    if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[0]); }
                    if (frmEle.options[frmEle.selectedIndex].value == '') {
                        if (!selectionMade) { 
                            errors.push(Array(fieldIndex,'blank'));
                            if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[1]); }
                        }
                    }
				break;
				case 'radio':
                    if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[0]); }
                    var selectionMade = false;
					for (var j=0; j<frmEle.length;j++) { // loop over the radio elements
						if (frmEle[j].checked == true) {
							var selectionMade = true;
						}
					}
                    if (!selectionMade) { 
                        errors.push(Array(fieldIndex,'blank'));
                        if (fieldBGColor) { setFormElementBGColor (frmEle, fieldBGColor[1]); }
                    }
				break;
			}
        }
        // focus on the highest field with an error
        if (errors.length>0) {
            //alert(reqFields[errors[0][0]][0]);
            eval('frm.'+reqFields[errors[0][0]][0]+'.focus();');
        }
        // return error or success
        if (errors.length>0) {
            if(verbose){
                var errorMessage = 'Please review your form entry\n_________________________________________________\n\nThe following fields are not valid:\n';
                for (var i=0; i<errors.length; i++) {                    
                    errorMessage += '\n\t- '+reqFields[errors[i][0]][1]+' - '+errors[i][1];
                }
                return errorMessage;
            } else {
                return errors;
            }
        } else { return true; }
    }
    
   	//*************************************************************************
	// Trim - trims all leading and trailing white space
	//*************************************************************************
	function trim(val){
		val = val.replace(/^\s+|\s+$/g, ""); 
		return val;
	}
    //*************************************************************************
	// set background color on error
	//*************************************************************************
    function setFormElementBGColor (frmEle, color) {
        var eleType = getFormElementType (frmEle);        
        switch (eleType) {
            case 'text':
            case 'password':                    
            case 'textarea':
            case 'select-one':
			case 'file':
                frmEle.style.background = color;
            break;
            case 'checkbox':
                //alert(frmEle.style.background);
            break;
            case 'radio':
                /*for (var j=0; j<frmEle.length;j++) { // loop over the radio elements
                    alert(frmEle[j].style.background);
            		frmEle[j].style.background = color;
            	}*/
            break;
        }
    }
    //*************************************************************************
	// get element type
	//*************************************************************************
    function getFormElementType (frmEle) {
        var eleType = frmEle.type;
        if(eleType == undefined){ // may be a radio - check first element				
            if (frmEle[0].type == 'radio') { eleType = 'radio'; }
        }
        return eleType;
    }
	
	//*************************************************************************
	// Phone validator (valid characters="() -.0123456789")
	//*************************************************************************
	function validate_phone(val){
		if (/[^[0-9()\s-\.]]*/.test(val)) return false;
		val = val.replace(/[^[0-9]]*/g, "");
		if (val.length < 10) return false;
		else return true;
	}
    function checkPhone (val) {        
        //var filter = /((\(\d{3}\) ?)|(\d{3}[- \.]))?\d{3}[- \.]\d{4}(\s(x\d+)?){0,1}$/;
        var filter = /^(\(?\d\d\d\)?)?( |-|\.)?\d\d\d( |-|\.)?\d{4,4}(( |-|\.)?[ext\.]+ ?\d+)?$/;
		if (filter.test(val)) { return true; } else { return false; }
    }
    
    //*************************************************************************
	// Number validator (valid characters="0123456789")
	//*************************************************************************
	function checkNumber (val) {
        var filter = /^\d+$/;
		if (filter.test(val)) { return true; } else { return false; }        
	}
    function checkCreditCard (val) {
        //var filter = /^(?:(?<Visa>4\d{3})|(?<Mastercard>5[1-5]\d{2})|(?<Discover>6011)|(?<DinersClub>(?:3[68]\d{2})|(?:30[0-5]\d))|(?<AmericanExpress>3[47]\d{2}))([-]?)(?(DinersClub)(?:\d{6}\1\d{4})|(?(AmericanExpress)(?:\d{6}\1\d{5})|(?:\d{4}\1\d{4}\1\d{4})))$/;
        var filter = /^(\d{4}[- ]){3}\d{4}|\d{16}$/;
        if (filter.test(val)) { return true; } else { return false; }
    }
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//	FUNCTION	isValidCreditCard()
//	PARAMS		type: STRING - Type of Credit Card to validate
//				ccnum: STRING - Credit Card Number to validate
//	PURPOSE		This will validate the customers credit card by making sure that the
//				numbers fit the credit cards companies pattern.
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
function isValidCreditCard(ccnum, type) {
    //alert('ccnum:'+ccnum+', type:'+type);
    type = type.toLowerCase();
	// Used for demo purposes
	if (type == "visa" && ccnum == "999966661111") return true;
	if (type == "visa") {
		// Visa: length 16, prefix 4, dashes optional.
		var re = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
	} else if (type == "mc") {
		// Mastercard: length 16, prefix 51-55, dashes optional.
		var re = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
	} else if (type == "disc") {
		// Discover: length 16, prefix 6011, dashes optional.
		var re = /^6011-?\d{4}-?\d{4}-?\d{4}$/;
	} else if (type == "amex") {
		// American Express: length 15, prefix 34 or 37.
		var re = /^3[4,7]\d{13}$/;
	} else if (type == "diners") {
		// Diners: length 14, prefix 30, 36, or 38.
		var re = /^3[0,6,8]\d{12}$/;
	}
	if (!re.test(ccnum)) return false;
	// Checksum ("Mod 10")
	// Add even digits in even length strings or odd digits in odd length strings.
	var checksum = 0;
	for (var i=(2-(ccnum.length % 2)); i<=ccnum.length; i+=2) {
		checksum += parseInt(ccnum.charAt(i-1));
	}
	// Analyze odd digits in even length strings or even digits in odd length strings.
	for (var i=(ccnum.length % 2) + 1; i<ccnum.length; i+=2) {
		var digit = parseInt(ccnum.charAt(i-1)) * 2;
		if (digit < 10) checksum += digit;
		else checksum += (digit-9);
	}
	if ((checksum % 10) == 0) return true;
	else return false;
}
    //*************************************************************************
	// Password validator -> alphanumeric (Alpha Numeric) values
	//*************************************************************************
	function checkPassword(val, iMin, iMax){ 
        var filter = /^[a-zA-Z0-9]+$/;
        if (!filter.test(val) || val.length < iMin || val.length > iMax){
            return false;
        } else { return true; }
    }

	//*************************************************************************
	// Email validators
	//*************************************************************************
	function validate_email(val){ // legacy
		if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(val)) return true;
		else return false;
	}
    function checkEmail(email) {
		var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (filter.test(email)) { return true; } else { return false; }
	}
	function setSelected (selectElement, selectValue) {
		// to get the selected indexes, loop over the select options checking the values
		var opts = selectElement.options;
		var theIndex = 0;
		//alert(selectElement[3].value);
		for(var i=0;i<opts.length;i++){ // loop over the select elements
			// check the input value, mark the index
			if(opts[i].value==selectValue){
				theIndex = i;
			}
		}
		selectElement.selectedIndex = theIndex;
	}

var alertMsg = {
	'profile_updated': '<h2>Your Profile has been Updated</h2>',
	'image_updated': '<h2>Your Profile Image has been Updated</h2>',
	'resorts_updated': '<h2>Your Favorite Resorts have been Updated</h2>',
	'gear_updated': '<h2>Your Gear has been Updated</h2>',
	'password_updated': '<h2>Your Password has been Updated</h2>',
	'accounts_updated': '<h2>Your Accounts have been Updated</h2>',
	'map_saved': '<h2>Your Favorite Resorts Map View has been Saved</h2>',
	'notifications_updated': '<h2>Your Email Notifications have been Updated</h2>',
	'email_confirmed': '<h2>Hi #username#,<br />Your account is good to go!<br /><span style="font-size: 14px;">Check out your first comment for details <br />on how to start.</span></h2>'
};
var fieldBGColor = Array('#DAF3F9','#FFE6DD');
$(document).ready(function(){
	if (meetsRequirements()) {
		$('#requirements').hide();
		if (gup('login') == 'true') {
			loadPopup('signin', 550);
		}
		if (gup('sendmessage') == 'go') {
			loadPopup('sendmessage', 550, gup('userId'));
		}
		if (gup('about') == 'go') {
			loadPopup('aboutus');
		}
		if (gup('invite') == 'go') {
			loadPopup('inviteFriend');
		}
		if (gup('privacy') == 'go') {
			loadPopup('privacy',650);
		}		
		if (gup('contact') == 'go') {
			loadPopup('contact');
		}
		if (gup('addfriend') == 'go') {
			loadPopup('addfriend', 550, gup('userId'));
		}
		if (gup('noMember') == '1') {
			loadPopup('<h2>This member does not exist or <br />is no longer active.</h2>', 360);
		}
		if (gup('confirmFriend') == 'go' && typeof(confirmedFriend) != 'undefined' && confirmedFriend != '') {
			loadPopup('<h2>' + confirmedFriend + '</h2>', 360);
		}
		if (gup('mustSignIn') == 'go') {
			loadPopup('mustsignin',550,'To View a Profile',gup('url'));
		}
		if ($('#searchMembers').length) {
			setupSearchMembers()
		}
		if ($('#searchResorts').length) {
			setupSearchResorts()
		}
		if ($('.more_comments').length) {
			setupSeeMoreComments()
		}
		if ($('#yelp_biz').length) {
			setupYelpResults();
		}
		if ($('.tweet_container').length) {
			setupTweetNav();
		}
		if ($('.weather_container').length) {
			setupWeatherNav();
		}
		setupCommentFormEvents();
		setupCommentDeletes();
	} else {
		$('#requirements').show();
	}
});
/*
function setupLoggedIn (returnedUserData) {
	var displayName = null;
	var userBlockHTML = 'Hi '+returnedUserData.screen_name+' &nbsp; | &nbsp; <a href="/includes/logout.php">Sign Out</a>';
	$('#top .user_signin').html(userBlockHTML);
	userData = returnedUserData;
}
*/
function resendConfirm (userId) {	
	$.ajax({
		url : "/aj/confirm.php",
		data : { userId: userId },
		dataType : 'json',
		type: 'POST',
		success: function (data) {
			if (data.status == 'success') {
				$('.signin_content .feedback').html('Another confirmation email has been sent to your email address');
			} else {
				$('.signin_content .feedback').html('There was an error sending another confirmation email.');
			}
		}
	});
}

function validateField (fieldName, fieldFullName) {
	var serverSideValidationTypes = ['email','screen_name','passwd'];
	var currentUserId = arguments.length>2? arguments[2]: null;
	var fieldValue = $.trim(document.profile_form[fieldName].value);
	// client-side validation
	
	if (fieldValue == '') {		
		validationFeedback (fieldName, ('Please enter '+whichArticle(fieldFullName)+' '+fieldFullName), 'bad');
		return;
	} else {
		validationFeedback (fieldName, '', 'good');
	}
	// server-side validation
	if ($.inArray(fieldName, serverSideValidationTypes) != -1) {	
		var sendData = {
			type: fieldName,
			val: fieldValue
		};
		if (currentUserId != null) {
			sendData.userId = currentUserId;
		}
		$.ajax({
			url: "/aj/validate.php",
			data: sendData,
			dataType: 'json',
			type: 'POST',
			success: function(data){
				//console.log(data);
				if (data.status == 'error') {
					if (validationMsgs && validationMsgs[data.data] != null && validationMsgs[data.data] != '') {
						var response = validationMsgs[data.data];
					}
					else {
						var response = data.data;
					}
					validationFeedback (fieldName, response, 'bad');
				} else {
					validationFeedback (fieldName, '', 'good');
				}
			}
		});
	}
}

function validationFeedback (fieldName, response, mode) {
	$('.' + fieldName + '_feedback').html(response);
	var color = null;
	switch (mode) {
		case 'good':
		case 'note':
			color = fieldBGColor[0];
		break;
		case 'bad':
			color = fieldBGColor[1];
		break;
	}
	$('#' + fieldName).css('background', color);
	if ($('#'+fieldName).parent().parent('div').hasClass('signup_row')) {
		$('#'+fieldName).parent().parent('div').removeClass('good bad note');
		$('#'+fieldName).parent().parent('div').addClass(mode);
	}
}

function whichArticle (word) {
	var exceptionAry = ['username','user'];
	// use "a" or "an" connector?
	var vowelAry = ['a','e','i','o','u'];
	var useA = $.inArray(word.substring(0,1).toLowerCase(),vowelAry);
	//console.log(useA);
	var article = useA != -1 ? 'an' : 'a';
	// check exceptions
	if ($.inArray(word,exceptionAry) != -1) {
		article = 'a';
		//console.log('is exception');
	}
	return article;
}

var memberSearchDefault = 'search members...';
function setupSearchMembers () {
	if (gup('srch') == '') {
		$('#searchMembers #srch').val(memberSearchDefault);
	}	
	$('#searchMembers #srch').focus(function () {
		if ($(this).val() == memberSearchDefault) {
			$(this).val('');
		}
		$(this).removeClass('empty');
	});
	$('#searchMembers #srch').blur(function () {
		if ($(this).val() == '') {
			$(this).val(memberSearchDefault);
			$(this).addClass('empty');
		}
	});
}

var resortSearchDefault = 'search resorts...';
function setupSearchResorts () {
	if (gup('srch') == '') {
		$('#searchResorts #srch').val(resortSearchDefault);
	}	
	$('#searchResorts #srch').focus(function () {
		if ($(this).val() == resortSearchDefault) {
			$(this).val('');
		}
		$(this).removeClass('empty');
	});
	$('#searchResorts #srch').blur(function () {
		if ($(this).val() == '') {
			$(this).val(resortSearchDefault);
			$(this).addClass('empty');
		}
	});
	$('#srch').keydown(function (event) {
		if (event.keyCode == 13) {
			searchTheResorts($('#srch').val());
		}
	});
	$('#srch').keydown(function (e) {
		if (e == 13) {
			searchTheResorts($('#srch').val());
		}
	});
}

function searchTheResorts (searchTerm) {
	if (searchTerm == 'search resorts...') {
		alert('Please Enter a Resort Name');
		return false;
	}
	$('#search_results').slideUp();
	$('#search_results').html('');
	$('#search_results').removeClass('search_sorry');
	$.ajax({
		url : "/aj/resorts.php",
		data: { action: 'search', searchTerm: searchTerm },
		dataType : 'json',
		type: 'POST',
		success: function (data) {
			//console.log(data);
			if (data.status == 'error') {				
				$('#search_results').addClass('search_sorry');
				$('#search_results').html('Sorry, we couldn\'t find any resorts using the search term you entered. Please try again.');
			} else {
				var resultsHtml = '';
				var numChars = 25;
				for (var i=0; i<data.data.length; i++) {					
					var name = data.data[i].name;
					if (name.length > numChars+2) {
						name = name.substring(0,numChars)+'...';
					}
					var region = data.data[i].region;
					if (region.length > numChars+2) {
						region = region.substring(0,numChars)+'...';
					}
					resultsHtml += '<a href="'+data.data[i].seo_path+'" class="result">'+name+',<br />'+region+'</a>';
				}
				//console.log(resultsHtml);
				$('#search_results').html(resultsHtml);
			}
			$('#search_results').slideDown();
		}
	});
	return false;
}

function setupShareThis () {
	$('.share_photo').click(function () {
		$('.shareThis').show();
		$('.shareThis .photo').show();
		resetShareThis();
	});
	$('.shareThis .share_close').click(function () {
		$('.shareThis').hide();
		$('.shareThis .photo').hide();
		$('.shareThis .link').hide();
	});

	$('.share_link').click(function () {
		$('.shareThis').show();
		$('.shareThis .link').show();
	});

	$('#share_send').click(sendShareThis);
	$('#share_cancel').click(function () {
		$('.shareThis').hide();
	});
}
function resetShareThis() {
	$('.shareThis .feedback').html('');
	$('.shareThis .form_content').css('display','block');
	$('#share_name').val('');
	$('#share_message').val('');
}

function sendShareThis () {
	if ($('#share_user_id').val() == '') {
		mustSignIn();
		return;
	}
	if(ValidateShareThisForm(document.share_form)){
		var sendData = {
			share_media_id: $('#share_media_id').val(),
			share_media_type: $('#share_media_type').val(),
			share_name: $('#share_name').val(),
			share_message: $('#share_message').val()
		};
		$.ajax({
			url : '/aj/share_media.php',
			data : sendData,
			dataType : 'json',
			type: 'POST',
			beforeSend: function () {},
			success: function (data) {
				if (data.status == 'error') {
					$('.shareThis .feedback').html(data.data);
				} else {
					$('.shareThis .form_content').css('display','none');
					$('.shareThis .feedback').html(data.data+'<br /><br /><a href="javascript:;" onclick="$(\'.shareThis\').hide();"><img src="/images/btns/ok.png" border="0" alt="OK" title="OK" /></a><br /><br /><a href="javascript:resetShareThis();">Click here to send another</a>.');
				}
			}
		});
	}
}

function setupSeeMoreComments () {
	$('.more_comments a').click(function () {
		getMoreComments();
	});
}

function getMoreComments () {
	var commentType = null;
	var mypage = 0;
	switch(PAGE) {
		case 'mypage':
			commentType = 'user';
			metaId = userId;
			mypage = 1;
		break;
		case 'member':
			commentType = 'user';
			metaId = gup('userId');
		break;
		case 'resort':
			commentType = 'resort';
			metaId = gup('rid');
		break;
		case 'resorts':
			commentType = 'resorts';
			metaId = 0;
		break;
	}
	var sendData = {
		type: commentType,
		meta_id: metaId,		
		offset: $('.comments .comment').length+1,
		mypage: mypage
	};
	$.ajax({
		url : '/aj/comments.php',
		data : sendData,
		dataType : 'json',
		type: 'POST',
		beforeSend: function () {},
		success: function (data) {
			if (data.status == 'error') {
				$('.more_comments').html('No more comments to display');
			} else {
				$('.comments').append(data.returnData);
				if (data.numComments < 5) {
					$('.more_comments').html('No more comments to display');
				}
				setTimeout("$('.comments .loaded').animate({ backgroundColor: 'white' }, 2000);", 800);				
			}
		}
	});
}


function ValidateShareThisForm(frm) {
	var requiredFields=Array(
		// Array('fieldName','NameForUser'[,'validationRequirement[:arg1,arg2]']),						
		Array('share_name','Email or Screen Name')
		//Array('share_message','Message','length:1,3500')						
	);
	
	var validate=formValidator(frm, requiredFields, true);
	if (validate != true) {
		alert(validate);
		return false;
	} else {
		return true;
	}
}

var commentDefault = 'Holler out your comment here';
var commentMexLength = 600;
function setupCommentFormEvents () {
	$('.comment_input textarea.comment_text').val(commentDefault);
	$('.comment_input textarea.comment_text').focus(function () {
		if (!userLoggedIn) {
			mustSignIn('To Add a Comment');
		}
		if ($(this).val() == commentDefault) {
			$(this).val('');
		}
		$(this).removeClass('empty');
	});
	$('.comment_input textarea.comment_text').blur(function () {
		if ($(this).val() == '') {
			$(this).val(commentDefault);
			$(this).addClass('empty');
		} else {
			// validate
		}
	});
	$('.comment_input .add_comment').unbind('click');
	$('.comment_input .add_comment').click(function () {
		
		var commentText = $(this).parent().parent().children('div:first').children('.comment_text').val();
		var commenterUserId = $(this).parent().parent().children('div:first').children('.commenter_user_id').val();
		//console.log(commenterUserId);
		if (commenterUserId == ''){
			mustSignIn('To Add a Comment');
		} else if (commentText == commentDefault || commentText == '') {
			alert('Please enter your comment, then click "Add Comment"');
		} else if (commentText.length >= commentMexLength) {
			alert('Please keep your comment under '+commentMexLength+' characters');
		} else {
			var commentData = {
				commenter_user_id: $(this).parent().parent().children('div:first').children('.commenter_user_id').val(),
				type: $(this).parent().parent().children('div:first').children('.type').val(),
				meta_id: $(this).parent().parent().children('div:first').children('.meta_id').val(),
				comment: $(this).parent().parent().children('div:first').children('.comment_text').val()
			};
			//console.log(commentData);
			recordComment(commentData);
		}
	});
}
function setupCommentDeletes() {
	$('.comment a.delete_comment').unbind('click');
	$('.comment a.delete_comment').click (function () {
		var msg = 'Are you sure you want to delete this comment?';
		if (!confirm(msg)) {
			return false;
		}		
		var commentId = $(this).parent('div.comment').attr('id').substring(8);
		var commentJQRef = $(this).parent('div.comment');		
		$.ajax({
			url : "/aj/comment.php",
			data : { 'type': 'delete', 'meta_id': commentId },
			dataType : 'json',
			type: 'POST',
			success: function (data) {
				//console.log(data.result);
				if (data.result == 'error') {
					alert('error deleting this comment');
					reportError('error deleting comment '+commentId);
				} else {
					// clear the comment info & show the success messaging
					commentJQRef.html('<img height="'+(data.type=='media'?'32':'52')+'" width="1" border="0" align="right" src="/images/1pxl.gif"/>Comment deleted!<br clear="all"/>');					
					// remove the comment section completely
					$('#comment_'+commentId).removeClass('new');
					setTimeout("$('#comment_"+commentId+"').slideUp(); $('#comment_"+commentId+"_resort').slideUp();",2000);
				}
			}
		});
	});
}

var recordingComment = false;
function recordComment(commentData) {
	if (recordingComment) { return; }
	recordingComment = true;
	$.ajax({
		url : "/aj/comment.php",
		data : commentData,
		dataType : 'json',
		type: 'POST',
		success: function (data) {
			//console.log(data.result);
			if (data.result != 'error') {
				// clear the comment form
				$('.comment_text').val(commentDefault);
				$('.comment_text').addClass('empty');
				if (data.type != 'media') {
					// add the new comment at the top position
					$('.comments').prepend(data.html);
					// reveal the new comment
					$('.comments .new').slideDown('fast', function(){
						$('.comments .new').removeClass('new');
					});
				} else { // media comments
					// add the new comment at the top position
					$('.comments_media').prepend(data.html);
					// reveal the new comment
					$('.comments_media .new').slideDown('fast', function(){
						$('.comments .new').removeClass('new');
					});
				}
				setupCommentDeletes();
			}
			recordingComment = false;
		}
	});
}

var savingFavoriteResort = false;
function saveFavoriteResort(resortId, resortName) {
	if (!userLoggedIn) {
		mustSignIn('To Add a Favorite');
	}
	if (savingFavoriteResort) { return; }
	savingFavoriteResort = true;
	var sendData = {
		method: 'addFavorite',
		recordId: resortId,
		typeId: 1 // resort
	};
	$.ajax({
		url : '/api.php',
		data : sendData,
		dataType : 'json',
		type: 'GET',
		beforeSend: function () {
			$('#resort-location .fav').html('Saving '+resortName+' as a Favorite');
		},
		success: function (data) {
			if (data.status == 'error') {
				//$('#resort-location .fav').html('');
			} else {
				$('#resort-location .fav').html(resortName+' is now a Favorite!');
			}
			savingFavoriteResort = false;
			//console.log(data);
		}
	});
}

function setupYelpResults() {
	$('#yelp_nav a').click(function () {
		getYelpResults($(this).attr('class'));
		$('#yelp_nav a').removeClass('on');
		$(this).addClass('on');
	});
	$('#yelp_nav a.restaurants').click();
}
function getYelpResults (category) {
	var bizData = {
		lat: latLon[0], // set globally
		lon: latLon[1], // set globally
		numResults: 5,
		radius: 20,
		category: category,
		format: 'html' // or json
	};
	$.ajax({
		url : "/aj/businesses.php",
		data : bizData,
		dataType : 'json',
		type: 'POST',
		success: function (data) {
			//console.log(data.result);
			if (data.status != 'error') {
				$('#yelp_biz').html(data.data);
			} else {
				if (data.data == 'zero_results') {
					$('#yelp_biz').html('<div style="padding: 5px 10px;">Sorry, we couldn\'t find any local spots here.</div>');
				} else if (data.data == 'missing_required')  {
					$('#yelp_biz').html('<div style="padding: 5px 10px;">Missing Required Data Field</div>');
				}				
			}			
		}
	});
}

var tweetIndex = 4;
var tweetsLeftLocs = [0, -204, -408, -612, -816];
var tweetsMoving = false;
function setupTweetNav() {
	$('.tweet_nav a').click(function () {
		// check if we should move
		var clicked = $(this).attr('id').substring(10);
		var newLocation = null;
		switch (clicked) {
			case 'next':
				if (tweetIndex != 4) {
					tweetsMoving = true;
					// get new end location
					newTweetIndex = tweetIndex+1;
					newLocation = tweetsLeftLocs[newTweetIndex];
				} else {
					return;
				}				
			break;
			case 'prev':
				if (tweetIndex != 0) {
					tweetsMoving = true;
					// get new end location
					newTweetIndex = tweetIndex-1;
					newLocation = tweetsLeftLocs[newTweetIndex];
				} else {
					return;
				}
			break;
		}
		// animate the display
		$('.tweets').animate(
			{ left: newLocation },
			500, 
			'swing', 
			function () {
				tweetIndex = newTweetIndex;
				// check if we need to update the nav
				$('#tweet_nav_next, #tweet_nav_prev').removeClass('inactive');
				if (tweetIndex == 4) {
					$('#tweet_nav_next').addClass('inactive');
				} else if (tweetIndex == 0) {
					$('#tweet_nav_prev').addClass('inactive');
				}
				tweetsMoving = false;
			}
		);		
	});
}

var weatherIndex = 0;
var weatherLeftLocs = [0, -204, -408, -612, -816];
var weatherMoving = false;
function setupWeatherNav () {
	weatherMoving = true;
	// setup next/previous nav
	$('.weather_nav a').click(function () {
		// check if we should move
		var clicked = $(this).attr('id').substring(12);
		switch (clicked) {
			case 'next':
				if (weatherIndex != 4) {
					newWeatherIndex = weatherIndex+1; // get new index
				} else {
					weatherMoving = false;
					return;
				}
			break;
			case 'prev':
				if (weatherIndex != 0) {					
					newWeatherIndex = weatherIndex-1; // get new index
				} else {
					weatherMoving = false;
					return;
				}
			break;
		}		
		animateWeather(newWeatherIndex);
	});
	// setup day icon nav nav
	$('.weather_day_nav a').click(function () {
		weatherMoving = true;
		var newWeatherIndex = parseInt($(this).attr('id').substring(12));
		if (newWeatherIndex != weatherIndex) {
			animateWeather(newWeatherIndex);
		} else {
			weatherMoving = false;
		}
	});
}

function animateWeather(newWeatherIndex) {
	// animate the display
	$('.weather_days').animate(
		{ left: weatherLeftLocs[newWeatherIndex] },
		500, 
		'swing', 
		function () {
			weatherIndex = newWeatherIndex;
			// check if we need to update the nav
			$('#weather_nav_next, #weather_nav_prev').removeClass('inactive');
			if (weatherIndex == 4) {
				$('#weather_nav_next').addClass('inactive');
			} else if (weatherIndex == 0) {
				$('#weather_nav_prev').addClass('inactive');
			}
			// update the weather day nav
			$('.weather_day_nav a').removeClass('active');
			$('#weather_day_'+weatherIndex).addClass('active');
			weatherMoving = false;
		}
	);		
}

function loadPopup() { //content, width, extra var
	if (arguments.length > 0) {
		var popupContent = '';
		var popupContentURL = '/aj/popup.php';
		var popupWidth = (arguments.length > 1 ? arguments[1] : 400);
	    var popupType = arguments[0];
		
		// grab extra vars
		var meta_1 = (arguments.length > 2 ? arguments[2] : null);
		var meta_2 = (arguments.length > 3 ? arguments[3] : null);
		
		// some functions require the user be logged in
		if (!userLoggedIn && (popupType == 'sendmessage' || popupType == 'addfriend')) {
			switch(popupType) {
				case 'sendmessage':
					meta_1 = 'To Send a Message';
					meta_2 = location.href+(location.href.indexOf('?') != -1 ? '&sendmessage=go' : '?sendmessage=go');					
				break;
				case 'addfriend':
					meta_1 = 'To Add a Friend';
					meta_2 = location.href+(location.href.indexOf('?') != -1 ? '&addfriend=go' : '?addfriend=go');
				break;
			}
			popupType = 'mustsignin';
			popupWidth = 550;
		}
		if (popupType == 'mustsignin' || popupType == 'signin') {
			popupWidth = 550;
			meta_2 = location.href.replace(location.protocol+'//'+location.hostname,'');
		}
		
		// alert message
		if (meta_1 == 'alert') {
			$('.popup').addClass('alert');
		} else {
			// display the screen
			displayScreen();
			$('.popup').removeClass('alert');
		}
		
		var hideLogoAry = ['media','eula','contact','signin'];
		if ($.inArray(popupType, hideLogoAry) != -1) {
			$('.popup .logo').css('display','none');
		} else {
			$('.popup .logo').css('display','block');
		}
		
		if (popupType != '') {
			switch (popupType) {
				case 'aboutus':
				case 'contact':
				case 'send2Friend':
				case 'inviteFriend':
				case 'privacy':
				case 'eula':
				case 'media':
				case 'signin':
				case 'signup':
				case 'trailmaps':
				case 'sendmessage':
				case 'addfriend':
				case 'mustsignin':
				
					$('.popup').width(popupWidth);
					var sendData = { 
						ajRequest: true, 
						content: popupType						
					};
					if (meta_1 != null) { sendData.meta_1 = meta_1; }
					if (meta_2 != null) { sendData.meta_2 = meta_2; }
					$.ajax({
						url : popupContentURL,
						data : sendData,
						dataType : 'html',
						type: 'POST',
						beforeSend: function () {
							centerElement($('#screen #loading'));
						},
						success: function (htmlReturn) {							
							$('.popup .middle .inner').html(htmlReturn);								
							$('#screen #loading').hide();							
							centerElement($('.popup'));
							$('.popup').fadeIn('normal');
						}
					});
				break;
				default: 
					$('.popup .middle .inner').html(arguments[0]);
					$('.popup').width(popupWidth);
					$('.popup .logo').css('display','none');
					centerElement($('.popup'));
					$('.popup').fadeIn('normal');
			}
		}		
	}
}

function loadAlert(type) {
	var width = arguments.length>1 ? arguments[1] : 400;
	if (typeof(alertMsg[type]) != 'undefined') {
		if (type == 'email_confirmed') {
			var theAlert = alertMsg[type].replace(/#username#/,$('.screen_name').html());
		} else {
			var theAlert = alertMsg[type];
		}
		loadPopup(theAlert, width, 'alert');
	} else {
		return false;
	}
	if (type != 'email_confirmed') {
		setTimeout("closePopup();", 3000);
	}
}

function displayScreen () {
	// open the popup with the larger media file and comments
	maximizeElement($('#screen'));
	$('#screen').css({
		backgroundColor: '#000',
		opacity: 0.7
	}).fadeIn("fast", function(){
		// fade in the loading graphic
		//$('#media_popup .loading').fadeIn('fast');
		// Window Resize Adjust
		$(window).resize(function(){
			if ($('.popup').css('display') == 'block') {
				$('#screen').hide();
				maximizeElement($('#screen'));
				$('#screen').show();
				centerElement($('.popup'));
			}
		});			
	});
	centerElement($('#screen #loading'));
	$('#screen').click(confirmClose);
}
function confirmClose() {
	var msg = "Are you sure you want to close this screen?\n\nAny infomation you've entered may be lost.";
	if (confirm(msg)) {
		closePopup();
	}
}
function closePopup() {
	$('.popup').fadeOut('fast', function () {
		$('#screen #loading').show();
		$('#screen').hide();
		$('.popup .inner').html();
		if ($.browser.msie && (typeof(ytplayer) != 'undefined' && ytplayer != null)) {
			ytplayer.stopVideo();
			ytplayer = null;
		}
	});	
}

/********************* must sign in popup ***************/
function mustSignIn() {
	var action = null;
	if (arguments.length > 0) {
		action = arguments[0];
	} else {
		action = 'To use this feature';
	}
	loadPopup('mustsignin',550,action,location.href);
}

function reportError(errorString) {
	// ajax call to send me an email?
}

/********************* utility functions ***************/
// !!!! duplicated in landing.js -  yes on purpose !!!!
function meetsRequirements() {
	// don't test cookies on the landing page
	if (typeof(landingPage) != 'undefined' && landingPage == true) {
		$.cookie('testcookiesenabled', null);
	    $.cookie('testcookiesenabled', 'enabled');
	    if ($.cookie('testcookiesenabled') == 'enabled') {
	    } else {
	    	$('.cookies_req').show();
	    	$.cookie('testcookiesenabled', null);
			return false;
	    }
	}
    if ($.browser.msie && parseInt($.browser.version) < 7 ) {
		$('.ieGreaterThan6_req').show();
		$('select').css('visibility','hidden');
		return false;
    }
    if ($.browser.safari) {
		var nonCompatibleVersions = ['416','417','418','419'];
		if ($.inArray(parseInt($.browser.version), nonCompatibleVersions) != -1) {
			$('.safariGreaterThan2_req').show();
			return false;
		}
    }
    if ($.browser.mozilla) {
		var nonCompatibleVersions = ['1.8','1.8.0','1.8.0.9'];
		if ($.inArray($.browser.version, nonCompatibleVersions) != -1) {
			$('.firefoxGreaterThan1_req').show();
			return false;
		}
    }
	return true;
}

function textCounter(JQField,JQCntField,maxlimit) {
	if (JQField.val().length > maxlimit) {
		// if too long...trim it!
		JQField.val(JQField.val().substring(0, maxlimit));
	} else {
		// otherwise, update 'characters left' counter
		JQCntField.val(maxlimit - JQField.val().length);
	}
} 

function gup( name ) {
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}


function centerElement(jqEle){
	var arrPageSizes = getPageSize();
	var arrayPageScroll = getPageScroll();
	var fromLeft = ((arrPageSizes[2] - jqEle.width()) / 2) + arrayPageScroll[0];
	var fromTop = ((arrPageSizes[3] - jqEle.height()) / 2) + arrayPageScroll[1];
	if (fromTop < arrayPageScroll[1]) { fromTop = arrayPageScroll[1]; }
	fromLeft = fromLeft <= 0 ? 10 : fromLeft;
	fromTop = fromTop <= 0 ? 10 : fromTop;
	jqEle.css('left',fromLeft);
	jqEle.css('top',fromTop);
}
function maximizeElement(jqEle){
	var arrPageSizes = getPageSize();
	jqEle.css({
		width: arrPageSizes[0],
		height: arrPageSizes[1]
	});
}
// legacy
function windowSize() {
	var sizes = getPageSize();
	return [sizes[3], sizes[4]];
}
// legacy
function getScrollXY() {
	return getPageScroll();
}
function getPageSize(){
	var xScroll = (window.innerHeight && window.scrollMaxY) && window.innerWidth + window.scrollMaxX || (document.body.scrollHeight > document.body.offsetHeight) && document.body.scrollWidth || document.body.offsetWidth;
	var yScroll = (window.innerHeight && window.scrollMaxY) && window.innerHeight + window.scrollMaxY || (document.body.scrollHeight > document.body.offsetHeight) && document.body.scrollHeight || document.body.offsetHeight;

	var windowWidth = self.innerHeight && (document.documentElement.clientWidth ? document.documentElement.clientWidth : self.innerWidth) || (document.documentElement && document.documentElement.clientHeight) && document.documentElement.clientWidth || document.body && document.body.clientWidth;
	var windowHeight = self.innerHeight && self.innerHeight || (document.documentElement && document.documentElement.clientHeight) && document.documentElement.clientHeight || document.body && document.body.clientHeight;

	// for small pages with total height less then height of the viewport
	var pageHeight = yScroll < windowHeight ? windowHeight : yScroll;
	
	// for small pages with total width less then width of the viewport
	var pageWidth = xScroll > windowWidth ? xScroll : windowWidth;

	var arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
		return arrayPageSize;
}

function getPageScroll(){
	var xScroll = self.pageYOffset && self.pageXOffset || (document.documentElement && document.documentElement.scrollTop) && document.documentElement.scrollLeft || document.body.scrollLeft;
	var yScroll = self.pageYOffset && self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) && document.documentElement.scrollTop || document.body.scrollTop;
	var arrayPageScroll = new Array(xScroll,yScroll);
	return arrayPageScroll;
}

