//MooTools, My Object Oriented Javascript Tools. Copyright (c) 2006 Valerio Proietti, <http://mad4milk.net>, MIT Style License.
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}('n V=k(1r){n 5W=k(){m(9.1f&&1e[0]!=\'7U\')l 9.1f.3s(9,1e);U l 9};P(n F 14 9)5W[F]=9[F];5W.17=1r;l 5W};V.1l=k(){};V.17={Q:k(1r){n 5C=J 9(\'7U\');n 8j=k(2j,1O){m(!2j.3s||!1O.3s)l L;l k(){9.1s=2j;l 1O.3s(9,1e)}};P(n F 14 1r){n 2j=5C[F];n 1O=1r[F];m(2j&&2j!=1O)1O=8j(2j,1O)||1O;5C[F]=1O}l J V(5C)},1P:k(1r){P(n F 14 1r)9.17[F]=1r[F]}};1G.Q=k(){n 1a=1e;1a=(1a[1])?[1a[0],1a[1]]:[9,1a[0]];P(n F 14 1a[1])1a[0][F]=1a[1][F];l 1a[0]};1G.6G=k(){P(n i=0;i<1e.15;i++)1e[i].Q=V.17.1P};J 1G.6G(6Q,1I,61,85,V);m(6N 4u==\'3y\'){n 4u=V.1l;4u.17={}}U{4u.17.6C=1d}1c.Q=N.Q=1G.Q;n 9Y=1c;k $B(I){m(I===1Y||I===3y)l L;n B=6N I;m(B==\'4r\'){m(I.6C)l\'C\';m(I.1u)l\'28\';m(I.ai){2d(I.7D){19 1:l\'C\';19 3:l I.ab.1j(/\\S/)?\'aa\':\'65\'}}}l B};k $1Z(I){l!!(I||I===0)};k $9L(I,7W){l($B(I))?I:7W};k $8e(3d,1p){l M.8z(M.8e()*(1p-3d+1)+3d)};k $4w(1x){9O(1x);aP(1x);l 1Y};m(1c.99)1c.3q=1c[1c.5d?\'b8\':\'7e\']=1d;U m(N.7P&&!N.b9&&!b2.aN)1c.3k=1d;U m(N.aw!=1Y)1c.6M=1d;m(1c.7e)7i{N.ay("au",L,1d)}7k(e){};1I.17.5n=1I.17.5n||k(W,O){P(n i=0;i<9.15;i++)W.1E(O,9[i],i,9)};1I.17.2J=1I.17.2J||k(W,O){n 3R=[];P(n i=0;i<9.15;i++){m(W.1E(O,9[i],i,9))3R.1u(9[i])}l 3R};1I.17.4t=1I.17.4t||k(W,O){n 3R=[];P(n i=0;i<9.15;i++)3R[i]=W.1E(O,9[i],i,9);l 3R};1I.17.4S=1I.17.4S||k(W,O){P(n i=0;i<9.15;i++){m(!W.1E(O,9[i],i,9))l L}l 1d};1I.17.88=1I.17.88||k(W,O){P(n i=0;i<9.15;i++){m(W.1E(O,9[i],i,9))l 1d}l L};1I.17.4d=1I.17.4d||k(3K,T){T=T||0;m(T<0)T=M.1p(0,9.15+T);3o(T<9.15){m(9[T]===3K)l T;T++}l-1};1I.Q({1i:1I.17.5n,6E:k(18,15){18=18||0;m(18<0)18=9.15+18;15=15||(9.15-18);n 3L=[];P(n i=0;i<15;i++)3L[i]=9[18++];l 3L},3M:k(3K){n i=0;3o(i<9.15){m(9[i]===3K)9.6Z(i,1);U i++}l 9},1j:k(3K,T){l 9.4d(3K,T)!=-1},Q:k(3L){P(n i=0;i<3L.15;i++)9.1u(3L[i]);l 9},as:k(1N){n I={},15=M.3d(9.15,1N.15);P(n i=0;i<15;i++)I[1N[i]]=9[i];l I}});k $A(28,18,15){l 1I.17.6E.1E(28,18,15)};k $1i(86,W,O){l 1I.17.5n.1E(86,W,O)};61.Q({1j:k(5X,7O){l((6N 5X==\'2D\')?J 7l(5X,7O):5X).1j(9)},2u:k(){l 6H(9)},8u:k(){l 4J(9)},6e:k(){l 9.3m(/-\\D/g,k(2i){l 2i.7h(1).7B()})},8b:k(){l 9.3m(/\\w[A-Z]/g,k(2i){l(2i.7h(0)+\'-\'+2i.7h(1).4n())})},7Y:k(){l 9.4n().3m(/\\b[a-z]/g,k(2i){l 2i.7B()})},87:k(){l 9.3m(/^\\s+|\\s+$/g,\'\')},5B:k(){l 9.3m(/\\s{2,}/g,\' \').87()},59:k(28){n 1q=9.2i(/\\d{1,3}/g);l(1q)?1q.59(28):L},4Z:k(28){n 31=9.2i(/^#?(\\w{1,2})(\\w{1,2})(\\w{1,2})$/);l(31)?31.aJ(1).4Z(28):L}});1I.Q({59:k(28){m(9.15<3)l L;m(9[3]&&(9[3]==0)&&!28)l\'aL\';n 31=[];P(n i=0;i<3;i++){n 5E=(9[i]-0).4X(16);31.1u((5E.15==1)?\'0\'+5E:5E)}l 28?31:\'#\'+31.2w(\'\')},4Z:k(28){m(9.15!=3)l L;n 1q=[];P(n i=0;i<3;i++){1q.1u(6H((9[i].15==1)?9[i]+9[i]:9[i],16))}l 28?1q:\'1q(\'+1q.2w(\',\')+\')\'}});85.Q({2u:k(){l 6H(9)},8u:k(){l 4J(9)}});6Q.Q({2e:k(o){n W=9;o=1G.Q({\'O\':W,\'G\':L,\'1e\':1Y,\'2G\':L,\'3e\':L,\'5U\':L},o||{});m($1Z(o.1e)&&$B(o.1e)!=\'28\')o.1e=[o.1e];l k(G){n 1a;m(o.G){G=G||1c.G;1a=[(o.G===1d)?G:J o.G(G)];m(o.1e)1a=1a.aE(o.1e)}U 1a=o.1e||1e;n 3a=k(){l W.3s(o.O,1a)};m(o.2G)l aD(3a,o.2G);m(o.3e)l aB(3a,o.3e);m(o.5U){7i{l 3a()}7k(7w){l 7w}}l 3a()}},aC:k(1a,O){l 9.2e({\'1e\':1a,\'O\':O})},5U:k(1a,O){l 9.2e({\'1e\':1a,\'O\':O,\'5U\':1d})()},O:k(O,1a){l 9.2e({\'O\':O,\'1e\':1a})},aH:k(O,1a){l 9.2e({\'O\':O,\'G\':1d,\'1e\':1a})},2G:k(5O,O,1a){l 9.2e({\'2G\':5O,\'O\':O,\'1e\':1a})()},3e:k(5O,O,1a){l 9.2e({\'3e\':5O,\'O\':O,\'1e\':1a})()}});n 1n=J V({1f:k(u){m($B(u)==\'2D\')u=N.7F(u);l $(u)}});k $(u){m(!u)l L;m(u.8y||[1c,N].1j(u))l u;m($B(u)==\'2D\')u=N.5D(u);m($B(u)!=\'C\')l L;m([\'4r\',\'aK\'].1j(u.5k.4n())||u.Q)l u;u.8y=1d;3p.5Q(u);u.Q=1G.Q;m(!(u.6C))u.Q(1n.17);l u};n 2H=J V({});J 1G.6G(2H);N.3z=N.2X;k $$(){m(!1e)l L;m(1e.15==1){m(!1e[0])l L;m(1e[0].7K)l 1e[0]}n 12=[];$1i(1e,k(1w){2d($B(1w)){19\'C\':12.1u($(1w));22;19\'2D\':1w=N.3z(1w);6n:m(1w.15){$1i(1w,k(u){m($(u))12.1u(u)})}}});12.7K=1d;l 1G.Q(12,J 2H)};2H.5T=k(F){l k(){n 1a=1e;n 4s=[];n 12=1d;$1i(9,k(u){n 3a=u[F].3s(u,1a);m($B(3a)!=\'C\')12=L;4s.1u(3a)});m(12)4s=$$(4s);l 4s}};1n.Q=k(1r){P(n F 14 1r){4u.17[F]=1r[F];1n.17[F]=1r[F];2H.17[F]=2H.5T(F)}};1n.Q({45:k(u,82){u=$(u)||J 1n(u);2d(82){19"8n":$(u.2I).8p(9,u);22;19"7L":m(!u.5z())$(u.2I).5N(9);U $(u.2I).8p(9,u.5z());22;19"7Q":u.5N(9)}l 9},9B:k(u){l 9.45(u,\'8n\')},6x:k(u){l 9.45(u,\'7L\')},5w:k(u){l 9.45(u,\'7Q\')},9A:k(u){9.5N($(u)||J 1n(u));l 9},3M:k(){9.2I.aA(9);l 9},9v:k(7J){n u=9.az(7J!==L);l $(u)},7G:k(u){u=$(u)||J 1n(u);9.2I.aq(u,9);l u},ap:k(1K){m(1c.3q){2d(9.4L()){19\'1F\':9.an.7V=1K;l 9;19\'2Q\':9.63(\'1K\',1K);l 9}}9.5N(N.ao(1K));l 9},5G:k(1C){l 9.1C.1j(\'(?:^|\\\\s)\'+1C+\'(?:\\\\s|$)\')},8i:k(1C){m(!9.5G(1C))9.1C=(9.1C+\' \'+1C).5B();l 9},7u:k(1C){9.1C=9.1C.3m(J 7l(\'(^|\\\\s)\'+1C+\'(?:\\\\s|$)\'),\'$1\').5B();l 9},at:k(1C){l 9.5G(1C)?9.7u(1C):9.8i(1C)},1S:k(F,K){m(F==\'1W\')9.8x(4J(K));U 9.1F[F.6e()]=(K.1u)?\'1q(\'+K.2w(\',\')+\')\':K;l 9},5e:k(1z){2d($B(1z)){19\'4r\':P(n F 14 1z)9.1S(F,1z[F]);22;19\'2D\':9.1F.7V=1z}l 9},8x:k(1W){m(1W==0){m(9.1F.5j!="51")9.1F.5j="51"}U{m(9.1F.5j!="84")9.1F.5j="84"}m(!9.5y||!9.5y.av)9.1F.aM=1;m(1c.3q)9.1F.2J="5A(1W="+1W*2M+")";9.1F.1W=9.1W=1W;l 9},1T:k(F){F=F.6e();n 1F=9.1F[F]||L;m(!$1Z(1F)){m(F==\'1W\')l $1Z(9.1W)?9.1W:1;m([\'2Y\',\'b5\'].1j(F)){l[9.1T(F+\'-1k\')||0,9.1T(F+\'-47\')||0,9.1T(F+\'-3x\')||0,9.1T(F+\'-1m\')||0].2w(\' \')}m(N.8a)1F=N.8a.b3(9,1Y).b1(F.8b());U m(9.5y)1F=9.5y[F]}m(1F==\'b7\'&&[\'2v\',\'2x\'].1j(F))l 9[\'3u\'+F.7Y()]+\'3g\';l(1F&&F.1j(/1X/i)&&1F.1j(/1q/))?1F.59():1F},1h:k(B,W){9.11=9.11||{};9.11[B]=9.11[B]||{\'1N\':[],\'1V\':[]};m(!9.11[B].1N.1j(W)){9.11[B].1N.1u(W);m(9.7X){9.7X((B==\'3P\'&&1c.6M)?\'6R\':B,W,L)}U{W=W.O(9);9.aZ(\'6U\'+B,W);9.11[B].1V.1u(W)}}l 9},aS:k(1z){m(1z){P(n B 14 1z)9.1h(B,1z[B])}l 9},1U:k(B,W){m(9.11&&9.11[B]){n 21=9.11[B].1N.4d(W);m(21==-1)l 9;n 1A=9.11[B].1N.6Z(21,1)[0];m(9.81){9.81((B==\'3P\'&&1c.6M)?\'6R\':B,1A,L)}U{9.aO(\'6U\'+B,9.11[B].1V.6Z(21,1)[0])}}l 9},3Z:k(B){m(9.11){m(B){m(9.11[B]){9.11[B].1N.1i(k(W){9.1U(B,W)},9);9.11[B]=1Y}}U{P(n 7t 14 9.11)9.3Z(7t);9.11=1Y}}l 9},1g:k(B,1a){m(9.11&&9.11[B]){9.11[B].1N.1i(k(W){W.O(9,1a)()},9)}},7f:k(7m){n u=9[7m+\'7S\'];3o($B(u)==\'65\')u=u[7m+\'7S\'];l $(u)},9p:k(){l 9.7f(\'2j\')},5z:k(){l 9.7f(\'4z\')},aX:k(){n u=9.aW;3o($B(u)==\'65\')u=u.aV;l $(u)},bc:k(){n u=9.ak;3o($B(u)==\'65\')u=u.9N;l $(u)},9Q:k(){l $(9.2I)},6D:k(){l $$(9.7P)},63:k(F,K){2d(F){19\'7H\':9.1C=K;22;19\'1F\':9.5e(K);22;19\'23\':m(1c.7e){n u=$(N.7F(\'<\'+9.4L()+\' 23="\'+K+\'" />\'));$1i(9.9M,k(3S){m(3S.23!=\'23\')u.63(3S.23,3S.K)});m(9.2I)9.7G(u);l u}6n:9.9T(F,K)}l 9},8G:k(1z){P(n F 14 1z)9.63(F,1z[F]);l 9},96:k(){9.9S=$A(1e).2w(\'\');l 9},92:k(F){l(F==\'7H\')?9.1C:9.89(F)},4L:k(){l 9.5k.4n()},2T:k(x,y){9.4P=x;9.4N=y},2Z:k(){2d(9.4L()){19\'3h\':m(9.7N!=-1){n 6X=9.o[9.7N];l 6X.K||6X.1K}22;19\'8Y\':m(!(9.9I&&[\'9J\',\'9K\'].1j(9.B))&&![\'51\',\'1K\',\'9H\'].1j(9.B))22;19\'8Z\':l 9.K}l L},5c:k(){l{\'2q\':{\'x\':9.4P,\'y\':9.4N},\'3G\':{\'x\':9.2P,\'y\':9.2B},\'5u\':{\'x\':9.5V,\'y\':9.4W}}},3F:k(3f){3f=3f||[];n u=9,1m=0,1k=0;9F{1m+=u.9U||0;1k+=u.al||0;u=u.ae}3o(u);3f.1i(k(C){1m-=C.4P||0;1k-=C.4N||0});l{\'x\':1m,\'y\':1k}},5S:k(){l 9.3F().y},5K:k(){l 9.3F().x},3r:k(3f){n 1B=9.3F(3f);n I={\'2x\':9.2P,\'2v\':9.2B,\'1m\':1B.x,\'1k\':1B.y};I.47=I.1m+I.2x;I.3x=I.1k+I.2v;l I}});1c.1h=N.1h=1n.17.1h;1c.1U=N.1U=1n.17.1U;1c.3Z=N.3Z=1n.17.3Z;n 3p={12:[],5Q:k(C){3p.12.1u(C)},5t:k(){3p.5Q(1c);3p.5Q(N);3p.12.1i(k(u){u.3Z();P(n p 14 1n.17)u[p]=1Y;u.Q=1Y})}};1c.1h(\'af\',3p.5t);n 4m=J V({1f:k(G){9.G=G||1c.G;9.B=9.G.B;9.4o=9.G.4o||9.G.9W;m(9.4o.7D==3)9.4o=9.4o.2I;9.80=9.G.ah;9.a9=9.G.a8;9.a1=9.G.a0;9.9Z=9.G.9X;m([\'6R\',\'3P\'].1j(9.B)){9.4i=9.G.8h?(9.G.8h/(1c.6r?-8k:8k)):-(9.G.a2||0)/ 3} U m (9.B.1j(/1A/)){9.70=9.G.83||9.G.a3;P(n 23 14 4m.1N){m(4m.1N[23]==9.70){9.1A=23;22}}9.1A=9.1A||61.a7(9.70).4n()}U m(9.B.1j(/2a/)||(9.B==\'6m\')){9.1Q={\'x\':9.G.73||9.G.8v+N.2o.4P,\'y\':9.G.6W||9.G.8f+N.2o.4N};9.8U={\'x\':9.G.73?9.G.73-1c.8A:9.G.8v,\'y\':9.G.6W?9.G.6W-1c.7v:9.G.8f};9.b4=(9.G.83==3)||(9.G.cG==2);2d(9.B){19\'bd\':9.5g=9.G.5g||9.G.cB;22;19\'cC\':9.5g=9.G.5g||9.G.6S}}},1D:k(){9.5l();9.5b();l 9},5l:k(){m(9.G.5l)9.G.5l();U 9.G.cE=1d;l 9},5b:k(){m(9.G.5b)9.G.5b();U 9.G.cQ=L;l 9}});4m.1N={\'cN\':13,\'ck\':38,\'cA\':40,\'1m\':37,\'47\':39,\'ci\':27,\'ce\':32,\'cg\':8,\'ch\':46};6Q.Q({2s:k(O,1a){l 9.2e({\'O\':O,\'1e\':1a,\'G\':4m})}});n 7p=J V({9C:k(W){9.3E=9.3E||[];9.3E.1u(W);l 9},7d:k(){m(9.3E&&9.3E.15)9.3E.80().2G(10,9)},9g:k(){9.3E=[]}});n 3C=J V({1h:k(B,W){m(W!=V.1l){9.11=9.11||{};9.11[B]=9.11[B]||[];m(!9.11[B].1j(W))9.11[B].1u(W)}l 9},1g:k(B,1a,2G){m(9.11&&9.11[B]){9.11[B].1i(k(W){W.2e({\'O\':9,\'2G\':2G,\'1e\':1a})()},9)}l 9},1U:k(B,W){m(9.11&&9.11[B])9.11[B].3M(W);l 9}});n 3t=J V({2y:k(4Y,o){9.o=1G.Q(4Y,o);m(9.1h){P(n 4v 14 9.o){m(($B(9.o[4v])==\'k\')&&4v.1j(/^6U[A-Z]/))9.1h(4v,9.o[4v])}}l 9}});n cr=J V({1f:k(){9.4T=$A(1e);9.11={};9.3T={}},1h:k(B,W){9.3T[B]=9.3T[B]||{};9.11[B]=9.11[B]||[];m(9.11[B].1j(W))l L;U 9.11[B].1u(W);9.4T.1i(k(4x,i){4x.1h(B,9.7Z.O(9,[B,4x,i]))},9);l 9},7Z:k(B,4x,i){9.3T[B][i]=1d;n 4S=9.4T.4S(k(1O,j){l 9.3T[B][j]||L},9);m(!4S)l;9.4T.1i(k(1O,j){9.3T[B][j]=L},9);9.11[B].1i(k(G){G.1E(9,9.4T,4x)},9)}});k $E(1w,2J){l($(2J)||N).5s(1w)};k $cx(1w,2J){l($(2J)||N).3z(1w)};1n.Q({4K:k(1w){n 12=[];1w.5B().6i(\' \').1i(k(5o,i){n 26=5o.2i(/^(\\w*|\\*)(?:#([\\w-]+)|\\.([\\w-]+))?(?:\\[(\\w+)(?:([*^$]?=)["\']?([^"\'\\]]*)["\']?)?])?$/);m(!26)l;2L.1w=26;26[1]=26[1]||\'*\';m(i==0){m(26[2]){n u=9.5D(26[2]);m(!u||((26[1]!=\'*\')&&(1n.17.4L.1E(u)!=26[1])))l;12=[u]}U{12=$A(9.2X(26[1]))}}U{12=2H.17.2X.1E(12,26[1],1d);m(26[2])12=12.2J(2L.49)}m(26[3])12=12.2J(2L.1C);m(26[4])12=12.2J(2L.3S)},9);l $$(12)},5D:k(49){n u=N.5D(49);m(!u)l L;P(n 1s=u.2I;1s!=9;1s=1s.2I){m(!1s)l L}l u},5s:k(1w){l 9.3z(1w)[0]},3z:k(1w){n 7q=[];1w.6i(\',\').1i(k(5o){7q.Q(9.4K(5o))},9);l $$(7q)}});N.Q({cO:k(1C){l N.4K(\'.\'+1C)},5s:1n.17.5s,4K:1n.17.4K,3z:1n.17.3z});n 2L={1w:[],49:k(u){l(u.49==2L.1w[2])},1C:k(u){l(1n.17.5G.1E(u,2L.1w[3]))},3S:k(u){n 1O=u.89(2L.1w[4]);m(!1O)l L;n 7b=2L.1w[5];m(!7b)l 1d;n K=2L.1w[6];2d(7b){19\'*=\':l(1O.1j(K));19\'=\':l(1O==K);19\'^=\':l(1O.1j(\'^\'+K));19\'$=\':l(1O.1j(K+\'$\'))}l L}};2H.Q({2X:k(5k){n 6l=[];9.1i(k(u){6l.Q(u.2X(5k))});l 6l}});n 8d=J V({15:0,I:{},1f:k(I){9.Q(I)},6P:k(1A){l 9.I[1A]},cc:k(1A){l 9.I[1A]!==3y},29:k(1A,K){m(K===3y)l L;m(9.I[1A]===3y)9.15++;9.I[1A]=K;l 9},3M:k(1A){m(9.I[1A]===3y)l 9;n I={};9.15--;P(n F 14 9.I){m(F!=1A)I[F]=9.I[F]}9.I=I;l 9},1i:k(W,O){P(n F 14 9.I)W.1E(O||9,F,9.I[F])},Q:k(I){P(n F 14 I){m(9.I[F]===3y)9.15++;9.I[F]=I[F]}l 9},1l:k(){l(9.15==0)},1N:k(){n 1N=[];P(n F 14 9.I)1N.1u(F);l 1N},1V:k(){n 1V=[];P(n F 14 9.I)1V.1u(9.I[F]);l 1V}});k $H(I){l J 8d(I)};n 2p=J V({1f:k(1X,B){m(1X.8c)l 1X;1X.8c=1d;B=B||(1X.1u?\'1q\':\'31\');n 1q,1M;2d(B){19\'1q\':1q=1X;1M=1q.6z();22;19\'1M\':1q=1X.8g();1M=1X;22;6n:1q=1X.4Z(1d);1M=1q.6z()}1q.1M=1M;l 1G.Q(1q,2p.17)},by:k(){n 4G=$A(1e);n 5A=($B(4G[4G.15-1])==\'9D\')?4G.bx():50;n 1q=9.6E();4G.1i(k(1X){1X=J 2p(1X);P(n i=0;i<3;i++)1q[i]=M.2k((1q[i]/ 2M * (2M - 5A)) + (1X[i] /2M*5A))});l J 2p(1q,\'1q\')},bv:k(){l J 2p(9.4t(k(K){l 4c-K}))},bw:k(K){l J 2p([K,9.1M[1],9.1M[2]],\'1M\')},bB:k(58){l J 2p([9.1M[0],58,9.1M[2]],\'1M\')},bC:k(58){l J 2p([9.1M[0],9.1M[1],58],\'1M\')}});k $cd(r,g,b){l J 2p([r,g,b],\'1q\')};k $bG(h,s,b){l J 2p([h,s,b],\'1M\')};1I.Q({6z:k(){n 4M=9[0],4F=9[1],5a=9[2];n 2l,5h,6u;n 1p=M.1p(4M,4F,5a),3d=M.3d(4M,4F,5a);n 4E=1p-3d;6u=1p/4c;5h=(1p!=0)?4E/1p:0;m(5h==0){2l=0}U{n 6t=(1p-4M)/4E;n 6s=(1p-4F)/4E;n br=(1p-5a)/4E;m(4M==1p)2l=br-6s;U m(4F==1p)2l=2+6t-br;U 2l=4+6s-6t;2l/=6;m(2l<0)2l++}l[M.2k(2l*8t),M.2k(5h*2M),M.2k(6u*2M)]},8g:k(){n br=M.2k(9[2]/2M*4c);m(9[1]==0){l[br,br,br]}U{n 2l=9[0]%8t;n f=2l%60;n p=M.2k((9[2]*(2M-9[1]))/bh*4c);n q=M.2k((9[2]*(8s-9[1]*f))/8w*4c);n t=M.2k((9[2]*(8s-9[1]*(60-f)))/8w*4c);2d(M.8z(2l/60)){19 0:l[br,t,p];19 1:l[q,br,p];19 2:l[p,br,t];19 3:l[p,q,br];19 4:l[t,p,br];19 5:l[br,p,q]}}l L}});1c.Q({1h:k(B,W){m(B==\'4I\'){m(9.62)W();U m(!9.11||!9.11.4I){n 4A=k(){m(9.62)l;9.62=1d;m(9.1x)9.1x=$4w(9.1x);1n.17.1g.1E(9,\'4I\');9.11.4I=1Y}.O(9);m(N.4O&&9.3k){9.1x=k(){m([\'62\',\'8q\'].1j(N.4O))4A()}.3e(50)}U m(N.4O&&9.3q){N.bs("<2Q 49=8r bo 55=5H:bm(0)><\\/2Q>");$(\'8r\').7s=k(){m(9.4O==\'8q\')4A()}}U{9.1h("bJ",4A);N.1h("c3",4A)}}}1n.17.1h.1E(9,B,W);l 9},bZ:k(8l){l 9.1h(\'4I\',8l)}});1c.Q({7C:k(){m(9.3k)l 9.c6;m(9.6r)l N.3U.8m;l N.2o.8m},7z:k(){m(9.3k)l 9.ca;m(9.6r)l N.3U.8o;l N.2o.8o},7A:k(){m(9.3q)l M.1p(N.2o.2P,N.2o.5V);m(9.3k)l N.3U.5V;l N.2o.5V},7y:k(){m(9.3q)l M.1p(N.2o.2B,N.2o.4W);m(9.3k)l N.3U.4W;l N.2o.4W},7x:k(){l 9.8A||N.2o.4P},7E:k(){l 9.7v||N.2o.4N},5c:k(){l{\'3G\':{\'x\':9.7C(),\'y\':9.7z()},\'5u\':{\'x\':9.7A(),\'y\':9.7y()},\'2q\':{\'x\':9.7x(),\'y\':9.7E()}}},3F:k(){l{\'x\':0,\'y\':0}}});n 1b={};1b.1R=J V({2m:k(){l{33:V.1l,1H:V.1l,6q:V.1l,7R:1b.3O.6p,3n:bK,2b:\'3g\',2O:1d,7M:50}},1f:k(o){9.C=9.C||1Y;9.2y(9.2m(),o);m(9.o.1f)9.o.1f.1E(9)},1y:k(){n 4a=J 78().76();m(4a<9.4a+9.o.3n){9.7T=4a-9.4a;9.3v();9.35()}U{9.1D(1d);9.Y=9.R;9.35();9.1g(\'1H\',9.C,10);9.7d()}},29:k(R){9.Y=R;9.35();l 9},3v:k(){9.Y=9.3w(9.T,9.R)},3w:k(T,R){l 9.o.7R(9.7T,T,(R-T),9.o.3n)},18:k(T,R){m(!9.o.2O)9.1D();U m(9.1x)l 9;9.T=T;9.R=R;9.4a=J 78().76();9.1x=9.1y.3e(M.2k(bR/9.o.7M),9);9.1g(\'33\',9.C);l 9},1D:k(2g){m(!9.1x)l 9;9.1x=$4w(9.1x);m(!2g)9.1g(\'6q\',9.C);l 9},bV:k(T,R){l 9.18(T,R)},bU:k(2g){l 9.1D(2g)}});1b.1R.1P(J 7p);1b.1R.1P(J 3C);1b.1R.1P(J 3t);1b.3O={9i:k(t,b,c,d){l c*t/d+b},6p:k(t,b,c,d){l-c/2*(M.6o(M.2t*t/d)-1)+b}};1b.2C={3h:k(F,R){m(F.1j(/1X/i))l 9.2p;m(R.1j&&R.1j(\' \'))l 9.5T;l 9.7I},2n:k(u,F,48){m(!48.1u)48=[48];n T=48[0],R=48[1];m(!R&&R!=0){R=T;T=u.1T(F)}n 1o=9.3h(F,R);l{T:1o.2n(T),R:1o.2n(R),1o:1o}}};1b.2C.7I={2n:k(K){l 4J(K)},3I:k(T,R,2f){l 2f.3w(T,R)},2Z:k(K,2b){l K+2b}};1b.2C.5T={2n:k(K){l K.1u?K:K.6i(\' \').4t(k(v){l 4J(v)})},3I:k(T,R,2f){n Y=[];P(n i=0;i<T.15;i++)Y[i]=2f.3w(T[i],R[i]);l Y},2Z:k(K,2b){l K.2w(2b+\' \')+2b}};1b.2C.2p={2n:k(K){l K.1u?K:K.4Z(1d)},3I:k(T,R,2f){n Y=[];P(n i=0;i<T.15;i++)Y[i]=M.2k(2f.3w(T[i],R[i]));l Y},2Z:k(K){l\'1q(\'+K.2w(\',\')+\')\'}};1b.9z=1b.1R.Q({1f:k(u,F,o){9.C=$(u);9.F=F;9.1s(o)},9j:k(){l 9.29(0)},3v:k(){9.Y=9.1o.3I(9.T,9.R,9)},29:k(R){9.1o=1b.2C.3h(9.F,R);l 9.1s(9.1o.2n(R))},18:k(T,R){m(9.1x&&9.o.2O)l 9;n 1L=1b.2C.2n(9.C,9.F,[T,R]);9.1o=1L.1o;l 9.1s(1L.T,1L.R)},35:k(){9.C.1S(9.F,9.1o.2Z(9.Y,9.o.2b))}});1n.Q({cF:k(F,o){l J 1b.9z(9,F,o)}});1b.9y=1b.1R.Q({1f:k(u,o){9.C=$(u);9.1s(o)},3v:k(){P(n p 14 9.T)9.Y[p]=9.1o[p].3I(9.T[p],9.R[p],9)},29:k(R){n 1L={};9.1o={};P(n p 14 R){9.1o[p]=1b.2C.3h(p,R[p]);1L[p]=9.1o[p].2n(R[p])}l 9.1s(1L)},18:k(I){m(9.1x&&9.o.2O)l 9;9.Y={};9.1o={};n T={},R={};P(n p 14 I){n 1L=1b.2C.2n(9.C,p,I[p]);T[p]=1L.T;R[p]=1L.R;9.1o[p]=1L.1o}l 9.1s(T,R)},35:k(){P(n p 14 9.Y)9.C.1S(p,9.1o[p].2Z(9.Y[p],9.o.2b))}});1n.Q({2U:k(o){l J 1b.9y(9,o)}});1b.2H=1b.1R.Q({1f:k(12,o){9.12=$$(12);9.1s(o)},3v:k(){P(n i 14 9.T){n 4q=9.T[i],3b=9.R[i],2S=9.1o[i],4p=9.Y[i]={};P(n p 14 4q)4p[p]=2S[p].3I(4q[p],3b[p],9)}},29:k(R){n 1L={};9.1o={};P(n i 14 R){n 3b=R[i],2S=9.1o[i]={},9w=1L[i]={};P(n p 14 3b){2S[p]=1b.2C.3h(p,3b[p]);9w[p]=2S[p].2n(3b[p])}}l 9.1s(1L)},18:k(I){m(9.1x&&9.o.2O)l 9;9.Y={};9.1o={};n T={},R={};P(n i 14 I){n 69=I[i],4q=T[i]={},3b=R[i]={},2S=9.1o[i]={};P(n p 14 69){n 1L=1b.2C.2n(9.12[i],p,69[p]);4q[p]=1L.T;3b[p]=1L.R;2S[p]=1L.1o}}l 9.1s(T,R)},35:k(){P(n i 14 9.Y){n 4p=9.Y[i],2S=9.1o[i];P(n p 14 4p)9.12[i].1S(p,2S[p].2Z(4p[p],9.o.2b))}}});1b.8P=1b.1R.Q({1f:k(C,o){9.Y=[];9.C=$(C);9.1h(\'33\',k(){9.C.1h(\'3P\',9.1D.O(9,L))}.O(9));9.1U(\'1H\',k(){9.C.1U(\'3P\',9.1D.O(9,L))}.O(9));9.1s(o)},3v:k(){P(n i=0;i<2;i++)9.Y[i]=9.3w(9.T[i],9.R[i])},2T:k(x,y){m(9.1x&&9.o.2O)l 9;n u=9.C.5c();n 1V={\'x\':x,\'y\':y};P(n z 14 u.3G){n 1p=u.5u[z]-u.3G[z];m($1Z(1V[z]))1V[z]=($B(1V[z])==\'9D\')?M.1p(M.3d(1V[z],1p),0):1p;U 1V[z]=u.2q[z]}l 9.18([u.2q.x,u.2q.y],[1V.x,1V.y])},bT:k(){l 9.2T(L,0)},bS:k(){l 9.2T(L,\'9r\')},bW:k(){l 9.2T(0,L)},bQ:k(){l 9.2T(\'9r\',L)},6S:k(u){l 9.2T($(u).5K(),$(u).5S())},35:k(){9.C.2T(9.Y[0],9.Y[1])}});1b.bL=1b.1R.Q({1f:k(u,o){9.C=$(u).1S(\'2Y\',0);9.4f=J 1n(\'9u\').6x(9.C).1S(\'8D\',\'51\').9A(9.C);9.2y({\'1J\':\'6F\'},o);9.Y=[];9.1s(9.o)},3v:k(){P(n i=0;i<2;i++)9.Y[i]=9.3w(9.T[i],9.R[i])},6F:k(){9.2Y=\'1k\';9.6y=\'2v\';9.3u=9.C.2B;l[9.C.1T(\'2Y-1k\').2u(),9.4f.1T(\'2v\').2u()]},6J:k(){9.2Y=\'1m\';9.6y=\'2x\';9.3u=9.C.2P;l[9.C.1T(\'2Y-1m\').2u(),9.4f.1T(\'2x\').2u()]},9t:k(1J){l 9.18(9[1J||9.o.1J](),[0,9.3u])},9o:k(1J){l 9.18(9[1J||9.o.1J](),[-9.3u,0])},9j:k(1J){9[1J||9.o.1J]();l 9.29([-9.3u,0])},4g:k(1J){9[1J||9.o.1J]();l 9.29([0,9.3u])},bM:k(1J){m(9.4f.2B==0||9.4f.2P==0)l 9.9t(1J);U l 9.9o(1J)},35:k(){9.C.1S(\'2Y-\'+9.2Y,9.Y[0]+9.o.2b);9.4f.1S(9.6y,9.Y[1]+9.o.2b)}});1b.3O={9i:k(t,b,c,d){l c*t/d+b},bN:k(t,b,c,d){l c*(t/=d)*t+b},bP:k(t,b,c,d){l-c*(t/=d)*(t-2)+b},bO:k(t,b,c,d){m((t/=d/2)<1)l c/2*t*t+b;l-c/2*((--t)*(t-2)-1)+b},bX:k(t,b,c,d){l c*(t/=d)*t*t+b},bY:k(t,b,c,d){l c*((t=t/d-1)*t*t+1)+b},c8:k(t,b,c,d){m((t/=d/2)<1)l c/2*t*t*t+b;l c/2*((t-=2)*t*t+2)+b},c7:k(t,b,c,d){l c*(t/=d)*t*t*t+b},c9:k(t,b,c,d){l-c*((t=t/d-1)*t*t*t-1)+b},cb:k(t,b,c,d){m((t/=d/2)<1)l c/2*t*t*t*t+b;l-c/2*((t-=2)*t*t*t-2)+b},c5:k(t,b,c,d){l c*(t/=d)*t*t*t*t+b},c0:k(t,b,c,d){l c*((t=t/d-1)*t*t*t*t+1)+b},c1:k(t,b,c,d){m((t/=d/2)<1)l c/2*t*t*t*t*t+b;l c/2*((t-=2)*t*t*t*t+2)+b},c2:k(t,b,c,d){l-c*M.6o(t/d*(M.2t/2))+c+b},c4:k(t,b,c,d){l c*M.4D(t/d*(M.2t/2))+b},6p:k(t,b,c,d){l-c/2*(M.6o(M.2t*t/d)-1)+b},bI:k(t,b,c,d){l(t==0)?b:c*M.2K(2,10*(t/d-1))+b},bn:k(t,b,c,d){l(t==d)?b+c:c*(-M.2K(2,-10*t/d)+1)+b},bp:k(t,b,c,d){m(t==0)l b;m(t==d)l b+c;m((t/=d/2)<1)l c/2*M.2K(2,10*(t-1))+b;l c/2*(-M.2K(2,-10*--t)+2)+b},bq:k(t,b,c,d){l-c*(M.4C(1-(t/=d)*t)-1)+b},bl:k(t,b,c,d){l c*M.4C(1-(t=t/d-1)*t)+b},bk:k(t,b,c,d){m((t/=d/2)<1)l-c/2*(M.4C(1-t*t)-1)+b;l c/2*(M.4C(1-(t-=2)*t)+1)+b},bf:k(t,b,c,d,a,p){m(t==0)l b;m((t/=d)==1)l b+c;m(!p)p=d*.3;m(!a)a=1;m(a<M.6v(c)){a=c;n s=p/4}U n s=p/(2*M.2t)*M.6A(c/a);l-(a*M.2K(2,10*(t-=1))*M.4D((t*d-s)*(2*M.2t)/p))+b},be:k(t,b,c,d,a,p){m(t==0)l b;m((t/=d)==1)l b+c;m(!p)p=d*.3;m(!a)a=1;m(a<M.6v(c)){a=c;n s=p/4}U n s=p/(2*M.2t)*M.6A(c/a);l a*M.2K(2,-10*t)*M.4D((t*d-s)*(2*M.2t)/p)+c+b},bg:k(t,b,c,d,a,p){m(t==0)l b;m((t/=d/2)==2)l b+c;m(!p)p=d*(.3*1.5);m(!a)a=1;m(a<M.6v(c)){a=c;n s=p/4}U n s=p/(2*M.2t)*M.6A(c/a);m(t<1)l-.5*(a*M.2K(2,10*(t-=1))*M.4D((t*d-s)*(2*M.2t)/p))+b;l a*M.2K(2,-10*(t-=1))*M.4D((t*d-s)*(2*M.2t)/p)*.5+c+b},bj:k(t,b,c,d,s){m(!s)s=1.6w;l c*(t/=d)*t*((s+1)*t-s)+b},bi:k(t,b,c,d,s){m(!s)s=1.6w;l c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},bt:k(t,b,c,d,s){m(!s)s=1.6w;m((t/=d/2)<1)l c/2*(t*t*(((s*=(1.8M))+1)*t-s))+b;l c/2*((t-=2)*t*(((s*=(1.8M))+1)*t+s)+2)+b},8B:k(t,b,c,d){l c-1b.3O.6I(d-t,0,c,d)+b},6I:k(t,b,c,d){m((t/=d)<(1/2.75)){l c*(7.57*t*t)+b}U m(t<(2/2.75)){l c*(7.57*(t-=(1.5/2.75))*t+.75)+b}U m(t<(2.5/2.75)){l c*(7.57*(t-=(2.25/2.75))*t+.bu)+b}U{l c*(7.57*(t-=(2.bE/2.75))*t+.bD)+b}},bF:k(t,b,c,d){m(t<d/2)l 1b.3O.8B(t*2,0,c,d)*.5+b;l 1b.3O.6I(t*2-d,0,c,d)*.5+c*.5+b}};n 2E={};2E.1R=J V({2m:k(){l{3Y:L,2b:\'3g\',33:V.1l,71:V.1l,1H:V.1l,8W:V.1l,6O:V.1l,1t:L,34:{x:\'1m\',y:\'1k\'},3i:6}},1f:k(u,o){9.2y(9.2m(),o);9.C=$(u);9.3Y=$(9.o.3Y)||9.C;9.2a={\'Y\':{},\'21\':{}};9.K={\'18\':{},\'Y\':{}};9.1v={\'18\':9.18.2s(9)};9.8J();m(9.o.1f)9.o.1f.1E(9)},8J:k(){9.3Y.1h(\'4R\',9.1v.18)},18:k(G){9.1g(\'71\',9.C);9.2a.18=G.1Q;n 1t=9.o.1t;9.1t={\'x\':[],\'y\':[]};P(n z 14 9.o.34){9.K.Y[z]=9.C.1T(9.o.34[z]).2u();9.2a.21[z]=G.1Q[z]-9.K.Y[z];m(1t&&1t[z]){P(n i=0;i<2;i++){m($1Z(1t[z][i]))9.1t[z][i]=1t[z][i].3s?1t[z][i].1E(9):1t[z][i]}}}9.1v.2c=9.2c.2s(9);9.1v.1D=9.1D.O(9);9.1v.2r=9.o.3i?9.8I.2s(9):9.1v.2c;N.1h(\'3c\',9.1v.2r);N.1h(\'5J\',9.1v.1D);9.1g(\'33\',9.C);G.1D()},8I:k(G){n 8V=M.2k(M.4C(M.2K(G.1Q.x-9.2a.18.x,2)+M.2K(G.1Q.y-9.2a.18.y,2)));m(8V>9.o.3i){N.1U(\'3c\',9.1v.2r);9.1v.2r=9.1v.2c;N.1h(\'3c\',9.1v.2r);9.2c(G);9.1g(\'8W\',9.C)}G.1D()},2c:k(G){9.4B=L;9.2a.Y=G.1Q;P(n z 14 9.o.34){9.K.Y[z]=9.2a.Y[z]-9.2a.21[z];m(9.1t[z]){m($1Z(9.1t[z][1])&&(9.K.Y[z]>9.1t[z][1])){9.K.Y[z]=9.1t[z][1];9.4B=1d}U m($1Z(9.1t[z][0])&&(9.K.Y[z]<9.1t[z][0])){9.K.Y[z]=9.1t[z][0];9.4B=1d}}9.C.1S(9.o.34[z],9.K.Y[z]+9.o.2b)}9.1g(\'6O\',9.C);G.1D()},9l:k(){9.3Y.1U(\'4R\',9.1v.18)},1D:k(){N.1U(\'3c\',9.1v.2r);N.1U(\'5J\',9.1v.1D);9.1g(\'1H\',9.C)}});2E.1R.1P(J 3C);2E.1R.1P(J 3t);1n.Q({bA:k(o){l J 2E.1R(9,1G.Q(o||{},{34:{x:\'2x\',y:\'2v\'}}))}});2E.9a=2E.1R.Q({5Y:k(){l{4H:[],4y:L,3f:[]}},1f:k(u,o){9.2y(9.5Y(),o);9.C=$(u);9.1B=9.C.1T(\'1B\');9.4H=$$(9.o.4H);m(![\'4l\',\'8R\'].1j(9.1B))9.1B=\'4l\';n 1k=9.C.1T(\'1k\').2u();n 1m=9.C.1T(\'1m\').2u();m(9.1B==\'4l\'){1k=$1Z(1k)?1k:9.C.5S();1m=$1Z(1m)?1m:9.C.5K()}U{1k=$1Z(1k)?1k:0;1m=$1Z(1m)?1m:0}9.C.5e({\'1k\':1k+\'3g\',\'1m\':1m+\'3g\',\'1B\':9.1B});9.1s(9.C,9.o)},18:k(G){9.4y=$(9.o.4y);m(9.4y){n 2N=9.4y.3r();n u=9.C.3r();m(9.1B==\'4l\'){9.o.1t={\'x\':[2N.1m,2N.47-u.2x],\'y\':[2N.1k,2N.3x-u.2v]}}U{n 6j=u.1m-9.C.1T(\'1m\').2u();n 6b=u.1k-9.C.1T(\'1k\').2u();9.o.1t={\'y\':[-(6b)+2N.1k,2N.3x-6b-u.2v],\'x\':[-(6j)+2N.1m,2N.47-6j-u.2x]}}}9.1s(G)},2c:k(G){9.1s(G);m(9.4B)l 9;9.4H.1i(k(2h){m(9.6L($(2h))){m(!2h.5m)2h.1g(\'bz\',[9.C,9]);2h.5m=1d}U{m(2h.5m)2h.1g(\'cw\',[9.C,9]);2h.5m=L}},9);l 9},6L:k(u){u=u.3r(9.o.3f);l(9.2a.Y.x>u.1m&&9.2a.Y.x<u.47&&9.2a.Y.y<u.3x&&9.2a.Y.y>u.1k)},1D:k(){9.1s();9.1x=$4w(9.1x);m(9.4B)l 9;n 7r=L;9.4H.1i(k(2h){m(9.6L(2h)){2h.1g(\'2h\',[9.C,9]);7r=1d}},9);m(!7r)9.C.1g(\'2h\',9);l 9}});1n.Q({cH:k(o){l J 2E.9a(9,o)}});n 3X=J V({2m:k(){l{36:\'42\',9c:1d,9b:V.1l,5q:V.1l,3W:V.1l,5v:V.1l,3A:{},5x:9.5x}},1f:k(o){9.24=1c.5d?J 5d():(1c.3q?J 99(\'cI.cJ\'):L);9.2y(9.2m(),o);m(!9.24)l;9.3A={};m(9.o.1f)9.o.1f.1E(9)},5q:k(){9.1g(\'5q\',9.24);m(9.24.4O!=4)l;n 3B=0;7i{3B=9.24.3B}7k(e){}m(9.o.5x(3B))9.3W();U 9.5v();9.24.7s=V.1l},5x:k(3B){l((3B>=cL)&&(3B<cD))},3W:k(){9.2V={\'1K\':9.24.cK,\'4j\':9.24.cM};9.1g(\'3W\',[9.2V.1K,9.2V.4j]);9.7d()},5v:k(){9.1g(\'5v\',9.24)},3V:k(23,K){9.3A[23]=K;l 9},4U:k(2F,2z){9.1g(\'9b\');9.24.cP(9.o.36,2F,9.o.9c);9.24.7s=9.5q.O(9);m((9.o.36==\'42\')&&9.24.cz)9.3V(\'cl\',\'cm\');1G.Q(9.3A,9.o.3A);P(n B 14 9.3A)9.24.cj(B,9.3A[B]);9.24.4U(2z);l 9}});3X.1P(J 7p);3X.1P(J 3C);3X.1P(J 3t);n 95=3X.Q({9d:k(){l{41:1Y,7a:1Y,1H:V.1l,5f:L,91:L,4k:\'cf-8\'}},1f:k(2F,o){9.1h(\'3W\',9.1H);9.2y(9.9d(),o);9.1s(9.o);m(![\'42\',\'6P\'].1j(9.o.36)){9.4h=\'4h=\'+9.o.36;9.o.36=\'42\'}m(9.o.36==\'42\'){n 4k=(9.o.4k)?\'; cy=\'+9.o.4k:\'\';9.3V(\'cv-B\',\'97/x-cu-cq-ct\'+4k)}9.3V(\'X-cn-cs\',\'5d\');9.3V(\'cp\',\'1K/5H, 1K/co, 97/4j, 1K/4j, */*\');9.2F=2F},1H:k(){m(9.o.7a)$(9.o.7a).96(9.2V.1K);m(9.o.91)72(9.2V.1K);m(9.o.5f)9.5f.2G(30,9);9.1g(\'1H\',[9.2V.1K,9.2V.4j],20)},8X:k(){n 2z=1Y;2d($B(9.o.41)){19\'C\':2z=$(9.o.41).44();22;19\'4r\':2z=1G.44(9.o.41);22;19\'2D\':2z=9.o.41}m(9.4h)2z=(2z)?[9.4h,2z].2w(\'&\'):9.4h;l 9.4U(9.2F,2z)},5f:k(){n 2Q,93=/<2Q[^>]*>([\\s\\S]*?)<\\/2Q>/bH;3o((2Q=93.a5(9.2V.1K)))72(2Q[1])}});1G.44=k(1z){n 74=[];P(n F 14 1z)74.1u(94(F)+\'=\'+94(1z[F]));l 74.2w(\'&\')};1n.Q({4U:k(o){o=1G.Q(o||{},{41:9.44(),36:\'42\'});l J 95(9.92(\'a6\'),o).8X()},90:k(){n I={};$$(9.2X(\'8Y\'),9.2X(\'3h\'),9.2X(\'8Z\')).1i(k(u){n 23=$(u).23;n K=u.2Z();m((K!==L)&&23)I[23]=K});l I},44:k(){l 1G.44(9.90())}});n aj={29:k(1A,K,o){o=1G.Q({5R:L,5P:L,3n:ag},o||{});K=ac(K);m(o.5R)K+="; 5R="+o.5R;m(o.5P)K+="; 5P="+o.5P;m(o.3n){n 64=J 78();64.ad(64.76()+(o.3n*9E));K+="; 9G="+64.9V()}N.9e=1A+"="+K},6P:k(1A){n K=N.9e.2i(\'(?:^|;)\\\\s*\'+1A+\'=([^;]*)\');l K?9R(K[1]):L},3M:k(1A){9.29(1A,\'\',{3n:-1})}};n 43={4X:k(I){2d($B(I)){19\'2D\':l\'"\'+I.3m(J 7l(\'(["\\\\\\\\])\',\'g\'),\'\\\\$1\')+\'"\';19\'28\':l\'[\'+I.4t(k(ar){l 43.4X(ar)}).2w(\',\')+\']\';19\'4r\':n 2D=[];P(n F 14 I)2D.1u(\'"\'+F+\'":\'+43.4X(I[F]));l\'{\'+2D.2w(\',\')+\'}\'}l 61(I)},98:k(9f){l 72(\'(\'+9f+\')\')}};43.9P=3X.Q({1f:k(2F,o){9.2F=2F;9.1h(\'3W\',9.1H);9.1s(o);9.3V(\'X-aY\',\'aU\')},4U:k(I){l 9.1s(9.2F,\'am=\'+43.4X(I))},1H:k(){9.1g(\'1H\',43.98(9.2V.1K))}});n 54={5H:k(1z,1r){l 54.2e(\'2Q\',{\'B\':\'1K/5H\',\'55\':1z},1r,1d)},1o:k(1z,1r){l 54.2e(\'aQ\',{\'aR\':\'b0\',\'ba\':\'bb\',\'B\':\'1K/1o\',\'4V\':1z},1r,1d)},3j:k(1z,1r){1r=1G.Q({\'55\':1z,\'56\':V.1l,\'7g\':V.1l,\'7j\':V.1l},1r||{});n 3j=J b6();3j.56=k(){m(1e.8K.9h)l L;1e.8K.9h=1d;9.56=1Y;l 1r.56.1E(9)};3j.7j=1r.7j;3j.7g=1r.7g;3j.55=1r.55;l 54.2e(\'66\',1r)},5p:k(3N,o){o=1G.Q({1H:V.1l,8H:V.1l},o||{});m(!3N.1u)3N=[3N];n 5p=[];6g=0;3N.1i(k(1z){n 66=J 54.3j(1z,{\'56\':k(){6g++;o.8H();m(6g==3N.15)o.1H()}});5p.1u(66)});l 5p},2e:k(B,4Y,1r,45){1G.Q(4Y,1r||{});n C=J 1n(B).8G(4Y);m(45)C.5w($$(\'ax\')[0]);l C}};n 77=1b.2H.Q({5Y:k(){l{6K:V.1l,8S:V.1l,2R:0,4g:L,2v:1d,2x:L,1W:1d,5L:L,5M:L,2O:L,5Z:L}},1f:k(3D,12,o){9.2y(9.5Y(),o);9.2j=-1;m(9.o.5Z)9.o.2O=1d;m($1Z(9.o.4g)){9.o.2R=L;9.2j=9.o.4g}m(9.o.18){9.o.2R=L;9.o.4g=L}9.3D=$$(3D);9.12=$$(12);9.3D.1i(k(8C,i){8C.1h(\'6m\',9.2R.O(9,i))},9);9.12.1i(k(u,i){u.8E=1;m(9.o.5M)u.8F=9.o.5M;m(9.o.5L)u.8L=9.o.5L;u.1S(\'8D\',\'51\')},9);9.2U={};m(9.o.1W)9.2U.1W=\'8E\';m(9.o.2x)9.2U.2x=9.o.5M?\'8F\':\'2P\';m(9.o.2v)9.2U.2v=9.o.5L?\'8L\':\'4W\';9.12.1i(k(u,i){m(9.o.4g===i)9.1g(\'6K\',[9.3D[i],u]);U P(n 2f 14 9.2U)u.1S(2f,0)},9);9.1s(9.12,9.o);m($1Z(9.o.2R))9.2R(9.o.2R)},2R:k(3J){m((9.1x&&9.o.2O)||(3J===9.2j&&!9.o.5Z))l 9;9.2j=3J;n I={};9.12.1i(k(u,i){I[i]={};m((i!=3J)||(9.o.5Z&&(u.2B>0))){9.1g(\'8S\',[9.3D[i],u]);P(n 2f 14 9.2U)I[i][2f]=0}U{9.1g(\'6K\',[9.3D[i],u]);P(n 2f 14 9.2U)I[i][2f]=u[9.2U[2f]]}},9);l 9.18(I)},aI:k(3J){l 9.2R(3J)}});1b.77=77;n 6k=J V({2m:k(){l{4Q:20,7c:1,5i:k(x,y){9.C.2T(x,y)}}},1f:k(C,o){9.2y(9.2m(),o);9.C=$(C);9.6V=([1c,N].1j(C))?$(N.3U):9.C},18:k(){9.6Y=9.8T.2s(9);9.6V.1h(\'3c\',9.6Y)},1D:k(){9.6V.1U(\'3c\',9.6Y);9.1x=$4w(9.1x)},8T:k(G){9.1Q=(9.C==1c)?G.8U:G.1Q;m(!9.1x)9.1x=9.2q.3e(50,9)},2q:k(){n u=9.C.5c();n 21=9.C.3F();n 3H={\'x\':0,\'y\':0};P(n z 14 9.1Q){m(9.1Q[z]<(9.o.4Q+21[z])&&u.2q[z]!=0)3H[z]=(9.1Q[z]-9.o.4Q-21[z])*9.o.7c;U m(9.1Q[z]+9.o.4Q>(u.3G[z]+21[z])&&u.2q[z]+u.3G[z]!=u.5u[z])3H[z]=(9.1Q[z]-u.3G[z]+9.o.4Q-21[z])*9.o.7c}m(3H.y||3H.x)9.1g(\'5i\',[u.2q.x+3H.x,u.2q.y+3H.y])}});6k.1P(J 3C);6k.1P(J 3t);n 6B=J V({2m:k(){l{5i:V.1l,1H:V.1l,7n:k(21){9.2A.1S(9.p,21+\'3g\')},52:2M,1J:\'6J\',4i:L}},1f:k(u,2A,o){9.C=$(u);9.2A=$(2A);9.2y(9.2m(),o);9.6T=-1;9.79=-1;9.1y=-1;9.C.1h(\'4R\',9.8N.2s(9));m(9.o.4i)9.C.1h(\'3P\',9.8Q.2s(9));m(9.o.1J==\'6J\'){9.z=\'x\';9.p=\'1m\';9.1p=9.C.2P-9.2A.2P;9.6f=9.2A.2P/2;9.68=9.C.5K.O(9.C)}U m(9.o.1J==\'6F\'){9.z=\'y\';9.p=\'1k\';9.1p=9.C.2B-9.2A.2B;9.6f=9.2A.2B/2;9.68=9.C.5S.O(9.C)}9.2A.1S(\'1B\',\'8R\').1S(9.p,0);n 6c={},6a={};6a[9.z]=[0,9.1p];6c[9.z]=9.p;9.2c=J 2E.1R(9.2A,{1t:6a,3i:0,34:6c,33:k(){9.5F()}.O(9),6O:k(){9.5F()}.O(9),1H:k(){9.5F();9.2g()}.O(9)});m(9.o.1f)9.o.1f.1E(9)},29:k(1y){m(1y>9.o.52)1y=9.o.52;U m(1y<0)1y=0;9.1y=1y;9.5I();9.2g();9.1g(\'7n\',9.8O(9.1y)+\'\');l 9},8Q:k(G){m(G.4i<0)9.29(9.1y+1);U m(G.4i>0)9.29(9.1y-1);G.1D()},8N:k(G){n 1B=G.1Q[9.z]-9.68()-9.6f;m(1B>9.1p)1B=9.1p;U m(1B<0)1B=0;9.1y=9.6h(1B);9.5I();9.2g();9.1g(\'7n\',1B+\'\')},5F:k(){9.1y=9.6h(9.2c.K.Y[9.z]);9.5I()},5I:k(){m(9.6T!=9.1y){9.6T=9.1y;9.1g(\'5i\',9.1y)}},2g:k(){m(9.79!==9.1y){9.79=9.1y;9.1g(\'1H\',9.1y+\'\')}},6h:k(1B){l M.2k(1B/9.1p*9.o.52)},8O:k(1y){l(9.1p)*1y/9.o.52}});6B.1P(J 3C);6B.1P(J 3t);n aG=1b.8P.Q({1f:k(o){9.1h(\'6q\',9.9g);n 53=1c.53.4V.2i(/^[^#]*/)[0]+\'#\';$1i(N.aT,k(3Q){m(3Q.4V.4d(53)!=0)l;n 3l=3Q.4V.aF(53.15);m(3l&&$(3l))9.9x(3Q,3l)},9);9.1s(1c,o)},9x:k(3Q,3l){3Q.1h(\'6m\',k(G){m(!1c.3k)9.9C(k(){1c.53.4V=\'#\'+3l});9.6S(3l);G.1D()}.2s(9))}});n 6d=J V({2m:k(){l{4b:L,33:V.1l,1H:V.1l,2W:1d,3i:3,9m:k(C,2W){2W.1S(\'1W\',0.5)},9s:k(C,2W){2W.3M()}}},1f:k(4e,o){9.2y(9.2m(),o);9.4e=$(4e);9.12=9.4e.6D();9.4b=$$(9.o.4b)||9.12;9.2c=[];9.1v={\'18\':[]};9.12.1i(k(u,i){9.1v.18[i]=9.18.2s(9,u);m(9.o.2W){9.5t=J 1n(\'9u\').5w(N.3U);n 1t=9.4e.3r();9.2c[i]=J 2E.1R(u,{3Y:9.4b[i],3i:9.o.3i,34:{y:\'1k\'},1t:{y:[1t.1k,1t.3x-u.2B]},71:k(C){n 7o=C.3F();9.9n=C;9.2c[i].C=9.2W=C.9v().5e({\'1B\':\'4l\',\'1k\':7o.y+\'3g\',\'1m\':7o.x+\'3g\'}).5w(9.5t);9.1g(\'9m\',[u,9.2W])}.O(9),1H:k(C){9.2c[i].C=9.9n;9.1g(\'9s\',[u,9.2W])}.O(9)})}9.4b[i].1h(\'4R\',9.18.2s(9,u))},9);m(9.o.1f)9.o.1f.1E(9)},18:k(G,u){9.1v.2r=9.2r.2s(9,u);9.1v.2g=9.2g.O(9,u);N.1h(\'3c\',9.1v.2r);N.1h(\'5J\',9.1v.2g);9.1g(\'33\',u);G.1D()},2r:k(G,u){n 5r=u.9p();n 4z=u.5z();m(5r){n 9q=5r.3r();m(G.1Q.y<9q.3x)u.9B(5r)}m(4z){n 9k=4z.3r();m(G.1Q.y>9k.1k)u.6x(4z)}G.1D()},9l:k(){9.12.1i(k(u,i){9.4b[i].1U(\'4R\',9.1v.18[i])},9)},a4:k(){n 67=[];9.4e.6D().1i(k(u,i){67[i]=9.12.4d(u)},9);l 67},2g:k(u){N.1U(\'3c\',9.1v.2r);N.1U(\'5J\',9.1v.2g);9.1g(\'1H\',u)}});6d.1P(J 3C);6d.1P(J 3t);',62,797,'|||||||||this|||||||||||function|return|if|var|options||||||el|||||||type|element|||property|event||obj|new|value|false|Math|document|bind|for|extend|to||from|else|Class|fn||now|||events|elements||in|length||prototype|start|case|args|Fx|window|true|arguments|initialize|fireEvent|addEvent|each|test|top|empty|left|Element|css|max|rgb|properties|parent|limit|push|bound|selector|timer|step|source|key|position|className|stop|call|style|Object|onComplete|Array|mode|text|parsed|hsb|keys|current|implement|page|Base|setStyle|getStyle|removeEvent|values|opacity|color|null|chk||pos|break|name|transport||param||array|set|mouse|unit|drag|switch|create|fx|end|drop|match|previous|round|hue|getOptions|parse|documentElement|Color|scroll|move|bindWithEvent|PI|toInt|height|join|width|setOptions|data|knob|offsetHeight|CSS|string|Drag|url|delay|Elements|parentNode|filter|pow|Filters|100|cont|wait|offsetWidth|script|display|iCss|scrollTo|effects|response|ghost|getElementsByTagName|margin|getValue||hex||onStart|modifiers|increase|method||||returns|iTo|mousemove|min|periodical|overflown|px|select|snap|image|khtml|anchor|replace|duration|while|Garbage|ie|getCoordinates|apply|Options|offset|setNow|compute|bottom|undefined|getElementsBySelector|headers|status|Events|togglers|chains|getPosition|size|change|getNow|index|item|newArray|remove|sources|Transitions|mousewheel|lnk|results|attribute|checker|body|setHeader|onSuccess|XHR|handle|removeEvents||postBody|post|Json|toQueryString|inject||right|fromTo|id|time|handles|255|indexOf|list|wrapper|show|_method|wheel|xml|encoding|absolute|Event|toLowerCase|target|iNow|iFrom|object|items|map|HTMLElement|option|clear|instance|container|next|domReady|out|sqrt|sin|delta|green|colors|droppables|domready|parseFloat|getElements|getTag|red|scrollTop|readyState|scrollLeft|area|mousedown|every|instances|send|href|scrollHeight|toString|defaults|hexToRgb||hidden|steps|location|Asset|src|onload|5625|percent|rgbToHex|blue|preventDefault|getSize|XMLHttpRequest|setStyles|evalScripts|relatedTarget|saturation|onChange|visibility|tagName|stopPropagation|overing|forEach|sel|images|onStateChange|prev|getElement|trash|scrollSize|onFailure|injectInside|isSuccess|currentStyle|getNext|alpha|clean|pr0t0typ3|getElementById|bit|draggedKnob|hasClass|javascript|checkStep|mouseup|getLeft|fixedHeight|fixedWidth|appendChild|ms|path|collect|domain|getTop|Multi|attempt|scrollWidth|klass|regex|getExtended|alwaysHide||String|loaded|setProperty|date|whitespace|img|serial|getPos|iProps|limSlide|diffy|modSlide|Sortables|camelCase|half|counter|toStep|split|diffx|Scroller|found|click|default|cos|sineInOut|onCancel|opera|gr|rr|brightness|abs|70158|injectAfter|layout|rgbToHsb|asin|Slider|htmlElement|getChildren|copy|vertical|Native|parseInt|bounceOut|horizontal|onActive|checkAgainst|gecko|typeof|onDrag|get|Function|DOMMouseScroll|toElement|previousChange|on|mousemover|pageY|opt|coord|splice|code|onBeforeStart|eval|pageX|queryString||getTime|Accordion|Date|previousEnd|update|operator|velocity|callChain|ie6|getBrother|onabort|charAt|try|onerror|catch|RegExp|what|onTick|offsets|Chain|els|dropped|onreadystatechange|evType|removeClass|pageYOffset|err|getScrollLeft|getScrollHeight|getHeight|getScrollWidth|toUpperCase|getWidth|nodeType|getScrollTop|createElement|replaceWith|class|Single|contents|_elements_extended_|after|fps|selectedIndex|params|childNodes|inside|transition|Sibling|cTime|noinit|cssText|picked|addEventListener|capitalize|check|shift|removeEventListener|where|which|visible|Number|iterable|trim|some|getAttribute|defaultView|hyphenate|isColor|Hash|random|clientY|hsbToRgb|wheelDelta|addClass|parentize|120|init|clientWidth|before|clientHeight|insertBefore|complete|ie_ready|6000|360|toFloat|clientX|600000|setOpacity|_element_extended_|floor|pageXOffset|bounceIn|tog|overflow|fullOpacity|fullWidth|setProperties|onProgress|checkAndDrag|attach|callee|fullHeight|525|clickedElement|toPosition|Scroll|scrolledElement|relative|onBackground|getCoords|client|distance|onSnap|request|input|textarea|toObject|evalResponse|getProperty|regexp|encodeURIComponent|Ajax|setHTML|application|evaluate|ActiveXObject|Move|onRequest|async|moreOptions|cookie|str|clearChain|done|linear|hide|nextPos|detach|onDragStart|old|slideOut|getPrevious|prevPos|full|onDragComplete|slideIn|div|clone|iParsed|useLink|Styles|Style|adopt|injectBefore|chain|number|86400000|do|expires|password|checked|checkbox|radio|pick|attributes|previousSibling|clearTimeout|Remote|getParent|unescape|innerHTML|setAttribute|offsetLeft|toGMTString|srcElement|metaKey|Window|meta|altKey|alt|detail|keyCode|serialize|exec|action|fromCharCode|ctrlKey|control|textnode|nodeValue|escape|setTime|offsetParent|unload|365|shiftKey|nodeName|Cookie|lastChild|offsetTop|json|styleSheet|createTextNode|appendText|replaceChild||associate|toggleClass|BackgroundImageCache|hasLayout|getBoxObjectFor|head|execCommand|cloneNode|removeChild|setInterval|pass|setTimeout|concat|substr|SmoothScroll|bindAsEventListener|showThisHideOpen|slice|embed|transparent|zoom|taintEnabled|detachEvent|clearInterval|link|rel|addEvents|links|JSON|nextSibling|firstChild|getFirst|Request|attachEvent|stylesheet|getPropertyValue|navigator|getComputedStyle|rightClick|padding|Image|auto|ie7|all|media|screen|getLast|mouseover|elasticOut|elasticIn|elasticInOut|10000|backOut|backIn|circInOut|circOut|void|expoOut|defer|expoInOut|circIn||write|backInOut|9375|invert|setHue|pop|mix|over|makeResizable|setSaturation|setBrightness|984375|625|bounceInOut|HSB|gi|expoIn|load|500|Slide|toggle|quadIn|quadInOut|quadOut|toRight|1000|toBottom|toTop|clearTimer|custom|toLeft|cubicIn|cubicOut|onDomReady|quintOut|quintInOut|sineIn|DOMContentLoaded|sineOut|quintIn|innerWidth|quartIn|cubicInOut|quartOut|innerHeight|quartInOut|hasKey|RGB|space|utf|backspace|delete|esc|setRequestHeader|up|Connection|close|Requested|html|Accept|form|Group|With|urlencoded|www|Content|leave|ES|charset|overrideMimeType|down|fromElement|mouseout|300|cancelBubble|effect|button|makeDraggable|Microsoft|XMLHTTP|responseText|200|responseXML|enter|getElementsByClassName|open|returnValue'.split('|'),0,{}))
/*	Script: multiple.open.accordion.js
		Creates a Mootools <Fx.Accordion> that allows the user to open more than one element.
		
		Dependancies:
			 mootools - 	<Moo.js>, <Function.js>, <Array.js>, <String.js>, <Element.js>, <Fx.js>
			
		Author:
			Aaron Newton, <aaron [dot] newton [at] cnet [dot] com>

		
		Class: MultipleOpenAccordion
		Extends the <Fx.Elements> class from Mootools for an accordion element that allows
		the user to open more than one element.
		
		Arguments:
		togglers - elements that activate each section
		elements - the elements to resize
		options - the options object of key/value settings
		
		Options:
		openAll - (boolean) open all elements on startup; defaults to true.
		allowMultipleOpen - (boolean) allows users to open more than one element at a time; defaults to true.
		firstElementsOpen - (array) an array of elements to open on startup;
				only used if openAll = false and allowMultipleOpen = true;
				defaults to [0];
		start - (string) 'first-open' slides open each element in firstElementsOpen;
										 'open-first' opens each element in firstElementsOpen immediately using no effects (default)
		fixedHeight - integer, if you want your accordion to have a fixed height. defaults to false.
		fixedWidth - integer, if you want your accordion to have a fixed width. defaults to false.
		alwaysHide - boolean, if you want the ability to close your only-open item. defaults to true.
		wait - boolean. means that open and close transitions can cancel current ones (so if you click
		 on items before the previous finishes transitioning, the clicked transition will fire canceling the previous). 
		 true means that if one element is sliding open or closed, clicking on another will have no effect. 
		 for Accordion defaults to false.
		onActive - function to execute when an element starts to show
		onBackground - function to execute when an element starts to hide
		height - boolean, will add a height transition to the accordion if true. defaults to true.
		opacity - boolean, will add an opacity transition to the accordion if true. defaults to true.
		width - boolean, will add a width transition to the accordion if true. defaults to false, 
						css mastery is required to make this work!
	*/
MultipleOpenAccordion = Fx.Elements.extend({
	extendOptions: function(options){
		Object.extend(this.options, Object.extend({
			openAll: true,
			allowMultipleOpen: true,
			firstElementsOpen: [0],
			start: 'open-first',
			fixedHeight: false,
			fixedWidth: false,
			alwaysHide: true,
			wait: false,
			onActive: Class.empty,
			onBackground: Class.empty,
			height: true,
			opacity: true,
			width: false
		}, options || {}));
	},
	initialize: function(togglers, elements, options){
		this.parent(elements, options);
		this.extendOptions(options);
		this.previousClick = 'nan';
		this.elementsVisible = [];
		togglers.each(function(tog, i){
			$(tog).addEvent('click', function(){this.toggleSection(i)}.bind(this));
		}, this);
		this.togglers = togglers;
		this.h = {}; 
		this.w = {};
		this.o = {};
		this.now = [];
		this.elements.each(function(el, i){
			this.now[i] = {};
			if(this.options.openAll && this.options.allowMultipleOpen) $(el).setStyles({'overflow': 'hidden'});
			else $(el).setStyles({'height': 0, 'overflow': 'hidden'});
		}, this);
		if(!this.options.openAll || !this.options.allowMultipleOpen) {
			switch(this.options.start){
				case 'first-open': this.showSection(this.options.firstElementsOpen[0]); break;
				case 'open-first': this.showSection(this.options.firstElementsOpen[0], false); break;
				//case 'open-first': this.toggleSection(this.options.firstElementsOpen[0]); break;
			}
		}
		if (this.options.openAll && this.options.allowMultipleOpen) {
			this.showAll();
		} else if (this.options.allowMultipleOpen) {
			this.openSections(this.options.firstElementsOpen);
		}
	},
	hideThis: function(i){ //sets up the effects for hiding an element
		this.elementsVisible[i] = false;
		if (this.options.height) this.h = {'height': [this.elements[i].offsetHeight, 0]};
		if (this.options.width) this.w = {'width': [this.elements[i].offsetWidth, 0]};
		if (this.options.opacity) this.o = {'opacity': [this.now[i]['opacity'] || 1, 0]};
	},

	showThis: function(i){ //sets up the effects for showing an element
		this.elementsVisible[i] = true;
		if (this.options.height) this.h = {'height': [this.elements[i].offsetHeight, this.options.fixedHeight || this.elements[i].scrollHeight]};
		if (this.options.width) this.w = {'width': [this.elements[i].offsetWidth, this.options.fixedWidth || this.elements[i].scrollWidth]};
		if (this.options.opacity) this.o = {'opacity': [this.now[i]['opacity'] || 0, 1]};
	},
/*	Property: toggleSection
		Opens or closes a section depending on its state and the options of the Accordion.
		
		Argumetns:
		iToToggle - (integer) the index of the section to open or close
	*/
	toggleSection: function(iToToggle){
		//let's open an object, or close it, depending on it's state
		//now, if the index to toggle isn't the previous click
		//or we're going to allow items to be closed (so that all of them are closed
		//or we're allowing more than one item to be open at a time, continue
		//otherwise, we're looking at an item that was just clicked, and it should already be open
		if(iToToggle != this.previousClick || this.options.alwaysHide || this.options.allowMultipleOpen) {
			//save the previous click
			this.previousClick = iToToggle;
			var objObjs = {};
			var err = false;
			var madeInactive = false;
			//go through each element
			this.elements.each(function(el, i){
				var update = false;
				//set up it's now state
				this.now[i] = this.now[i] || {};
				//if the element is the one clicked
				if(i==iToToggle){
					//if the element is visible, hide it if we allow alwaysHide or multiple
					if (this.elementsVisible[i] && (this.options.allowMultipleOpen || this.options.alwaysHide)){
						//if ! wait and timer
						if(!(this.options.wait && this.timer)) {
							//hide it
							update = true;
							this.hideThis(i);
						} else {
							this.previousClick = 'nan';
							err = true;
						}
					} else if(!this.elementsVisible[i]){
					//else if hidden, show it
						//if ! wait and timer
						if(!(this.options.wait && this.timer)) {
							//show it
							update = true;
							this.showThis(i);
						} else {
							this.previousClick = 'nan';
							err = true;
						}
					}
				} else if(this.elementsVisible[i] && !this.options.allowMultipleOpen) {
				//else (not clicked) if it's visible, hide it, unless we allow multiple open
					//if ! wait and timer
					if(!(this.options.wait && this.timer)) {
						//hide it
						update = true;
						this.hideThis(i);
					} else {
						this.previousClick = 'nan';
						err = true;
					}
				} //else it's not clicked, it's not open, so leave it alone because we allow multiples
				//set up the effect instructions
				if(update) objObjs[i] = Object.extend(this.h, Object.extend(this.o, this.w));
			}, this);
			//if there's an error, just stop
			if (err) return;
			//if we didn't inactivate anything, call the activate function on the element we clicked
			if (!madeInactive) this.options.onActive.call(this, this.togglers[iToToggle], iToToggle);
			//execute the background call on all the others
			this.togglers.each(function(tog, i){
				if (!this.elementsVisible[i]) this.options.onBackground.call(this, tog, i);
			}, this);
			//execute the custom function, which resizes everything.
			
			return this.custom(objObjs);
		}
	},
/*	Property: showSection
		Opens a section of the accordion if it's not open already.
		
		Arguments:
		i - (integer) the index of the section to show
		useFx - (boolean) open it immediately (false) or slide it open using the effects (true);  defaults to false;
	*/
	showSection: function(i, useFx){
		if($pick(useFx, false)) {
			if (!this.elementsVisible[i]) this.toggleSection(i);
		} else {
			this.setSectionStyle(i,$(this.elements[i]).scrollWidth, $(this.elements[i]).scrollHeight, 1);
			this.elementsVisible[i] = true;
			return true;
		}
	},
/*	Property: hideSection
		Closes a section of the accordion if it's not closed already.
		
		Arguments:
		i - (integer) the index of the section to hide
		useFx - (boolean) close it immediately (false) or slide it closed using the effects (true);  defaults to false;
	*/
	hideSection: function(i, useFx){
		if($pick(useFx, false)) {
			if (this.elementsVisible[i]) this.toggleSection(i);
		} else {
			this.setSectionStyle(i,0,0,0);
			this.elementsVisible[i] = false;
			return true;
		}
	},
	//internal function; sets a section (i) to the width (w), height (h), and opacity (o) passed in
	setSectionStyle: function(i,w,h,o){ 
			if (this.options.opacity) $(this.elements[i]).setOpacity(o);
			if (this.options.height) $(this.elements[i]).setStyle('height',h+'px');
			if (this.options.width) $(this.elements[i]).setStyle('width',w+'px');
	},
/*	Property: showAll
		Opens all the elements in the accordion immediately; used on startup	*/
	showAll: function(){
		if(this.options.allowMultipleOpen){
			this.elements.each(function(el,idx){
					this.showSection(idx, false);
			}, this);
		}
	},
/*	Property: hideAll
		Closes all the elements in the accordion immediately; used on startup	*/
	hideAll: function(useFx){
		if(this.options.allowMultipleOpen){
			this.elements.each(function(el,idx){
				this.hideSection(idx, false);
			}, this);
		}
	},
/*	Property: openSection
		Opens specific sections of the accordion immediately; used on startup.
		
		Arguments:
		sections - array of indexes to open.
	*/
	openSections: function(sections) {
		if(this.options.allowMultipleOpen){
			this.elements.each(function(el,idx){
				if(sections.test(idx)) this.showSection(idx, false);
				else this.hideSection(idx, false);
			}, this);
		}
	}
});
/* do not edit below this line */   

/* Section: Change Log 

$Source: /cvs/main/flatfile/html/rb/js/global/cnet.global.framework/common/layout.widgets/multiple.open.accordion.js,v $
$Log: multiple.open.accordion.js,v $
Revision 1.2  2007/01/26 05:53:47  newtona
syntax update for mootools 1.0

Revision 1.1  2007/01/22 21:59:03  newtona
moved from fx.multiple.open.accordion.js

Revision 1.1  2007/01/09 02:39:35  newtona
renamed addons directory to "common" directory

Revision 1.5  2006/12/06 20:14:59  newtona
carousel - improved performance, changed some syntax, actually deployed into usage and tested
cnet.nav.accordion - improved css selectors for time
multiple accordion - fixed a typo
dbug.js - added load timers
element.cnet.js - changed syntax to utilize mootools more effectively
function.cnet.js - equated $set to $pick in preparation for mootools v1

Revision 1.4  2006/11/06 19:19:31  newtona
fixed a bug and removed some dbug.log statements

Revision 1.3  2006/11/04 01:35:27  newtona
removing a dbug line

Revision 1.2  2006/11/04 00:53:45  newtona
no change

Revision 1.1  2006/11/02 21:28:08  newtona
checking in for the first time.


*/

/*	Script: date.picker.js
		Allows the user to enter a date in any popuplar format or choose from a calendar.
		
		Dependencies:
		mootools - <Moo.js>, <Utility.js>, <Function.js>, <Element.js>, <Array.js>, <String.js>, <Event.js>
		cnet - <stickyWin.js> and all its dependencies
		optional - <Drag.Base.js>, <StickyWinFx.js>
		
		Authors:
		Paul Anderson
		Aaron Newton <aaron [dot] newton [at] cnet [dot] com>
		
		Class: DatePicker
		Allows the user to enter a date in any popuplar format or choose from a calendar.
		
		Arguments:
		input - the id of a text input, or a reference to the element itself
		options - an object with key/value settings
		
		Options:
		calendarId - (string) the id of the calendar to show; defaults to "popupCalendar" + the date (so itŐs unique)
		months - (array) the months of the year. Defaults to ["Janurary", "February", etc.]
		days - (array) the days of the week. Defaults to ["Su", "Mo", "Tu", etc.]
		stickyWinOptions - (object) options to pass along to the stickyWin popup object. Defaults to {position: 'bottomLeft', offset: {x:10, y:10}}
		stickyWinToUse - which <StickyWin> class to use (<StickyWin>, <StickyWinFx>, etc.)
		draggable: (boolean) whether or not the popup is draggable. Requires <Drag.Base.js>. Defautls to true (if <Drag.Base.js> is not present, the element won't be draggable, but it won't throw an error.
		dragOptions: (object) options to pass on to <Drag.Base>
		additionalShowLinks - (array) collection of dom elements (or ids) that should show the calendar for the input
		showOnInputFocus - (boolean) show the calendar when the input is focused. Defaults to true. If set to false, you must specify at least one object in additionalShowLinks if you want the calendar to be accessible. **NOTE: you can set this to false and specy no additional show links that this class will still auto-format date inputs for you**
		useDefaultCss - (boolean) use the default css described in this class. If false, you must define your own css. Defaults to true.
		hideCalendarOnPick - (boolean) hide the calendar when the user chooses a date. Defaults to true.
		onPick - function to execute when the user choose a date
		onShow - function to execute when the calendar appears
		onHide - function to execute when the calendar is hidden
		CSS:
		The calendar popup builds a table with all the dates and months and whatnot. You may style this table using the following descriptors:

		div.calendarHolder - the div containing the calendar table.
		table.datePicker - the table with the calendar values
		tr.dateNav - the row containing the forward, back, and close buttons, and the month name
		tr.dayNames - the row containing the names of the days of the week
		tr.dayRow - one of the rows containing actual dates
		td.today - the td that contains today's date
		td.selectedDate - the td that contains the user's selection
		td.otherMonthDate - tds that contain dates before or after the current selected month
		
		Autoformatting and Date format: 
		This class will take a user's input of a date value and convert it into MM/DD/YYYY. If the user inputs 01.02.03,
		this class will update it to 01/02/2003 on the blur event of the field. The same is true for 01.02.2003, 01/02/03,
		01 02 2003, 2003.02.01, and so on.
		
		If you need this class to return a different format, you can use <Class.implement> to create your own formatter. If
		javascript had a better date object, we wouldn't have to do it like this, but what are ya gonna do?
		
		Example:
(start code)
<input type="text" name="date" id="dateInput"> <img src="calendar.gif" id="calendarImg">
<script>
new DatePicker('dateInput', {
	additionalShowLinks: ['calendarImg'],
	showOnInputFocus: false
});
(end)
	*/
	var DatePicker = new Class({
		defaultCss: 'div.calendarHolder{width:210px; height:182px; padding-left:8px; padding-top:1px; '+
			'background:url(http://www.cnet.com/html/rb/assets/global/datePicker/calendar.back.png) no-repeat} '+
		  '* html div.calendarHolder {background:url(http://www.cnet.com/html/rb/assets/global/datePicker/calendar.back.gif) no-repeat}'+
			'table.datePicker * {font-size:11px; line-height:16px;} '+
			'table.datePicker{margin:6px 0px 0px 0px; width:190px; padding:0px 5px 0px 5px} '+
			'table.datePicker td{cursor:pointer; text-align:center} '+
			'table.datePicker img.closebtn{margin-top:2px} '+
			'tr.dateNav{height:22px; margin-top:8px} '+
			'tr.dayNames td{color:#666; font-weight:bold; border-bottom:1px solid #ddd} '+
			'table.datePicker tr.dayRow td:hover{background:#ccc} '+
			'td.today{color:#bb0904} '+
			'td.otherMonthDate{border:1px solid #fff; color:#666; background:#f3f3f3} '+
			'td.selectedDate{border:1px solid #20397b; background:#dcddef}',
		fullDay: 86400000,
		initialize: function(input, options){
			var StickyWinToUse = (typeof StickyWinFx == "undefined")?StickyWin:StickyWinFx;
			this.options = Object.extend({
				calendarId: false,
				months: ["January","February","March","April","May","June","July",
									"August","September","October","November","December"],
				days: ["Su","Mo","Tu","We","Th","Fr","Sa"],
				stickyWinOptions: {
					position: "bottomLeft",
					offset: {x:10, y:10},
					fadeDuration: 400
				},
				stickyWinToUse: StickyWinToUse,
				draggable: true,
				dragOptions: {},
				additionalShowLinks:[],
				showOnInputFocus: true,
				useDefaultCss: true,
				hideCalendarOnPick: true,
				onPick: Class.create,
				onShow: Class.create,
				onHide: Class.create
			}, options||{});
			if(!this.options.calendarId) this.options.calendarId = "popupCalendar" + new Date().getTime();
			this.input = $(input);
			if(this.options.useDefaultCss)this.writeCss();
			this.setUpObservers();
			this.getCalendar();
		},
		setUpObservers: function(){
			if (this.options.showOnInputFocus) this.input.addEvent('focus', this.show.bind(this));
			this.input.addEvent('blur', this.updateInput.bind(this));
			this.options.additionalShowLinks.each(function(lnk){$(lnk).addEvent('click', this.show.bind(this))}, this);
		},
		writeCss: function(css) {
			css = $pick(css,this.defaultCss);
			window.onDomReady(function(){
				try {
					if(!$('datePickerStyle')) 
						new Element('style').setProperty('id','datePickerStyle').injectInside($$('head')[0]).appendText(css);
				}catch(e){dbug.log('error: %s',e);}
			});
		},
/*	Property: updateInput
		Takes a given date and updates the input field with its value.
		
		Arguments:
		date - a date or a string that is parsable as a date (see <validDate>)
	*/
		updateInput: function(date){
			if(!$type(date) == "string" || (date && !date.getTime)) date = this.input.getValue();
			var dateStr = this.formatDate(this.validDate(date));
			if($type(dateStr) == "string") {
				this.input.value = dateStr;
				return dateStr;
			}
			return date;
		},
/*	Property: validDate
		Parses a string into a Date object and returns it.
		
		Arguments:
		val - (optional) the date to parse. a string or a date object. If no value is specified, the input 
			value will be used instead.
		
		Accepted formats:
		01.02.03, 01.02.2003, 01/02/03, 01 02 2003, 2003.02.01, and so on.
	*/		
		validDate: function(val) {
			val = $pick(val, this.input.getValue());
			val = val.replace(/^\s+|\s+$/g,"");
			var asDate = Date.parse(val);
			if (isNaN(asDate)) asDate = Date.parse(val.replace(/[^\w\s]/g,"/"));
			if (isNaN(asDate)) asDate = Date.parse(val.replace(/[^\w\s]/g,"/") + "/" + new Date().getFullYear());
			if (!isNaN(asDate)) {
				var newDate = new Date(asDate);
				if (newDate.getFullYear() < 2000 && val.indexOf(newDate.getFullYear()) < 0) {
					newDate.setFullYear(newDate.getFullYear() + 100);
				}
				return newDate;
			} else return asDate;
		},
/*	Property: formatDate
		formats a date object into MM/DD/YYYY.
		
		Arguments:
		date - (Date object) the date to format.
	*/
		formatDate: function (date) {
			try {
				// always "get" as UTC, without timezone, so there's no confusion over the calendar day
					var fd = ((date.getUTCMonth() < 9) ? "0" : "") + (date.getUTCMonth()+1) + "/";
					fd += ((date.getUTCDate() < 10) ? "0" : "") + date.getUTCDate() + "/";
					fd += date.getUTCFullYear();
					return fd;
			} catch(e){return date}
		},
		
		zeroHourGMT: function(date) {
			date.setTime(date.getTime() - date.getTime() % 86400000);
			return date;
		},
		
		getCalendar: function() {
			if(!this.calendar) {
				var cal = new Element("table").setProperties({
					'id': this.options.calendarId,
					'border':'0',
					'cellpadding':'0',
					'cellspacing':'0'
				});
				cal.addClass('datePicker');
		    $(cal.insertRow(0).insertCell(0)).appendText("x");
				for (var c=0;c<6;c++) $(cal.rows[0]).adopt(cal.rows[0].cells[0].cloneNode(true));
				for (var r=0;r<7;r++) $(cal.rows[0].parentNode).adopt(cal.rows[0].cloneNode(true));
				$(cal.rows[1]).addClass('dayNames');
				for (var r=2;r<8;r++) $(cal.rows[r]).addClass('dayRow');
				for (var d=0;d<7;d++) cal.rows[1].cells[d].firstChild.data = this.options.days[d];
				for (var t=6;t>3;t--) cal.rows[0].deleteCell(t);
				$(cal.rows[0]).addClass('dateNav');
				if(!window.ie6)cal.rows[0].cells[0].firstChild.data=String.fromCharCode(9668);
				else cal.rows[0].cells[0].firstChild.data="<";
				cal.rows[0].cells[1].colSpan=4;
				if(!window.ie6) cal.rows[0].cells[2].firstChild.data=String.fromCharCode(9658);
				else cal.rows[0].cells[2].firstChild.data=">";
				cal.rows[0].cells[3].firstChild.data=String.fromCharCode(215);
				$(cal.rows[0].cells[3].setHTML('')).adopt(this.getCloseImg());
					//xb.adopt(xb.previousSibling);
				cal.addEvent('click', this.clickCalendar.bind(this));
				this.calendar = cal;
				this.container = new Element('div').adopt(cal).addClass('calendarHolder');
				//make stickywin
				this.options.stickyWinOptions.content = this.container;
				this.options.stickyWinOptions.showNow = false;
				this.options.stickyWinOptions.relativeTo = this.input;
				this.stickyWin = new this.options.stickyWinToUse(this.options.stickyWinOptions);
				if(this.options.draggable) {
					try {
						this.stickyWin.win.makeDraggable(Object.extend(this.options.dragOptions, {
							handle:cal.rows[0].cells[1],
							onDrag:function(){
								if(this.stickyWin.shim) this.stickyWin.shim.show.bind(this.stickyWin)
							}.bind(this)
						}));
						cal.rows[0].cells[1].setStyle('cursor', 'move');
					} catch(e) {}//drag isn't available
				}
			}
			return this.calendar;
		},
/*	Properties: getCloseImg
		Returns an img object to use for the close funciton.
		
		You can use <Class.implement> to redefine this so that it returns a dom element of your choosing.
		You will need to add your own call to <DatePicker.hide>.
	*/
		getCloseImg: function(){
			var closer = new Element("img").setProperty('src',
					'http://www.cnet.com/html/rb/assets/global/simple.error.popup/closebtn.gif');
			closer.addEvents({
				'mouseover': function(){
					closer.src = closer.src.replace('.gif', '_over.gif');
				},
				'mouseout':function(){
					closer.src = closer.src.replace('_over.gif', '.gif');
				},
				'click': this.hide.bind(this)
			}).setStyles({
				width: '13px',
				height: '13px'
			}).addClass('closebtn');
			return closer;
		},
		
/*	Property: hide
		Hides the calendar popup.
	*/
		hide: function(){
			this.stickyWin.hide();
			this.options.onHide();
		},
/*	Property: show
		Shows the calendar popup. This will reposition the popup and display the date that the user has entered or today's date if they have not entered anything.
	*/
		show: function(){
	    this.today = this.zeroHourGMT(new Date());
			this.inputDate = new Date(this.updateInput());
	    this.refDate = isNaN(this.inputDate) ? this.today : this.zeroHourGMT(new Date(this.inputDate));
			this.getCalendar();
	    this.fillCalendar(this.refDate);
			this.stickyWin.show();
			this.options.onShow();
		},
		clickCalendar: function(e) {
			e = new Event(e);
			if (!e.target.firstChild || !e.target.firstChild.data) return null;
			var val = e.target.firstChild.data;
			if (val.charCodeAt(0) > 9600 || val == "<" || val == ">") {
				var newRef = this.calendar.rows[2].cells[0].refDate - this.fullDay;
				if (val.charCodeAt(0) != 9668 && val != "<") newRef = this.calendar.rows[7].cells[6].refDate + this.fullDay;
				this.fillCalendar(new Date(newRef));
				return null;
			}
			if (e.target.refDate) {
				var newDate = new Date(e.target.refDate);
				this.input.value = this.formatDate(newDate);
				/* trip onchange events in text field */
				this.input.fireEvent("change");
				this.input.fireEvent("blur");
				this.options.onPick();
				if(this.options.hideCalendarOnPick) this.hide();
			}
		},
		fillCalendar: function (forDate) {
			var startDate = new Date(forDate.getTime());
			startDate.setUTCDate(1);
			startDate.setTime(startDate.getTime() - (this.fullDay * startDate.getUTCDay()));
			this.calendar.rows[0].cells[1].firstChild.data = this.options.months[forDate.getUTCMonth()] + " " + forDate.getUTCFullYear();
			var atDate = startDate;
			this.calendar.getElements('td').each(function (el){
				el.removeClass('selectedDate').removeClass('otherMonthDate').removeClass('today');
			});
			for (var w=2; w<8; w++) for (var d=0; d<7; d++) {
				var td = this.calendar.rows[w].cells[d];
				td.firstChild.data = atDate.getUTCDate();
				td.refDate = atDate.getTime();
				if(atDate.getTime() == this.today.getTime()) td.addClass('today');
				if(atDate.getTime() == this.refDate.getTime()) td.addClass('selectedDate');
				if(atDate.getUTCMonth() != forDate.getUTCMonth()) td.addClass('otherMonthDate');
				atDate.setTime(atDate.getTime() + this.fullDay);
			}
		}
	});
/* do not edit below this line */   
/* Section: Change Log 

$Source: /cvs/main/flatfile/html/rb/js/global/cnet.global.framework/common/js.widgets/date.picker.js,v $
$Log: date.picker.js,v $
Revision 1.3  2007/01/29 23:50:53  newtona
additional bug fixes and tweaks. stable now.

Revision 1.2  2007/01/27 01:51:36  newtona
numerous ie6 fixes.

Revision 1.1  2007/01/26 21:55:04  newtona
*** empty log message ***


*/

/*	Script: stickyWin.js
		Creates a div within the page with the specified contents at the location relative to the element you specify; basically an in-page popup maker.

		Dependencies:
		Moo - <Moo.js>, <Utility.js>, <Element.js>, <Function.js>, <Dom.js>, <Array.js>, <Window.Base.js>, <Window.Size.js>
		CNET - <element.cnet.js>, <function.cnet.js>, <IframeShim.js>
		
		Author:
		Aaron Newton (aaron [dot] newton [at] cnet [dot] com)
		
		Class: StickyWin
		Creates a div within the page with the specified contents at the location relative to the element you specify; basically an in-page popup maker.

		Arguments:
		options - an object with key/value options
		
		Options:
			onStart - function to execute when the popup is created
			onDisplay - function to execute when the popup is shown
			onClose - function to execute when the popup is closed
			closeClassName - class name of the element(s) in your popup content that, 
					when clicked, should close the window; defaults to "closeSticky"
			content - the content of your popup; this should be layout html and your message or a dom element
			zIndex - the zIndex of the popup; defaults to 10000
			id - the id of the wrapper div that gets created that will contain your content; 
					defaults to 'StickyWin' + the date (so it's unique)
			className - optional class name for the wrapper dive that gets created that will
					contain your content
			position - "center", "upperRight", "bottomRight", "upperLeft", "bottomLeft"; the point in the popup that is positioned;
					defaults to 'center'
			offset - object containing {x: # and y: #} (integers) the top and left offset from the element in the 
					page that the popup is relative to; this offset is applied to the center of the popup 
					or the corner, depending on  the value you specify in the 'position' option.
			relativeTo - a dom element to position the popup relative to; defaults to document.body (i.e. the window)
			width - an optional width for the wrapper div for your popup
			height - an optional height for the wrapper div for your popup
			timeout - (integer) an optional timeout interval to hide the popup after a specified time
			allowMultiple - (boolean) allow multiple instance of StickyWin on the page; defaults to true
			allowMultipleByClass - (boolean) allow multiple popups that share the same className as specified in 
				the className option; defaults to false
			showNow - display the popup on instantiation; defaults to true
			useIframeShim - use an <IframeShim> to mask content below the element; defaults to true.
			iframeShimSelector - the css selector to find the element within your popup under which 
				the iframe shim should be placed to obscure select lists and the like (see <IframeShim>)
			
	Example:
(start code)
var myWin = new StickyWin({
	content: '<div id="myWin">hi there!<br><a href="javascript:void(0);" class="closeSticky">close</a></div>'
});
//popups up a box in the middle of the window with "hi there" and a close link(end)
	*/
var StickyWin = new Class({
	initialize: function(options){
		options.id = options.id || 'StickyWin_'+new Date().getTime();
		this.options = this.setOptions(this.getDefaultOptions(), options);
		this.makeWindow();
		if(this.options.content) this.setContent(this.options.content);
		if(this.options.showNow) this.show();
	},
	getDefaultOptions: function(){
		return {
			onStart: Class.empty,
			onDisplay: Class.empty,
			onClose: Class.empty,
			closeClassName: 'closeSticky',
			content: '',
			zIndex: 10000,
			className: '',
			//id: ... set above in initialize function
			position: 'center', //center, corner == upperLeft, upperRight, bottomLeft, bottomRight
			offset: {x:0,y:0},
			relativeTo: document.body, 
			width: false,
			height: false,
			timeout: -1,
			allowMultipleByClass: false,
			allowMultiple: true,
			showNow: true,
			useIframeShim: true,
			iframeShimSelector: ''
		}
	},
	setOptions: function(defaults, options){
		return Object.extend(defaults, options || {});
	},
	makeWindow: function(){
		this.destroyOthers();
		if(!$(this.options.id)) {
			this.win = new Element('div').setProperty('id',			this.options.id).addClass(this.options.className).addClass('StickyWinInstance').addClass('clearfix').setStyles({
				 	'display':'none',
					'position':'absolute',
					'zIndex':this.options.zIndex
				}).injectInside(document.body);
		} else this.win = $(this.options.id);
		if(this.options.width && $type(this.options.width.toInt())=="number") this.win.setStyle('width', this.options.width.toInt() + 'px');
		if(this.options.height && $type(this.options.height.toInt())=="number") this.win.setStyle('height', this.options.height.toInt() + 'px');
		return this;
	},
/*	Property: show
		Shows the popup.
	*/
	show: function(){
		if(!this.positioned) this.position();
		this.showWin();
		if(this.options.useIframeShim) this.showIframeShim();
		this.visible = true;
		return this;
	},
	showWin: function(){
		this.win.show();
	},
/*	Property: hide
		Hides the popup.
	*/
	hide: function(){
		this.hideWin();
		if(this.options.useIframeShim) this.hideIframeShim();
		this.visible = false;
		return this;
	},
	hideWin: function(){
		this.win.hide();
	},
	destroyOthers: function() {
		if(!this.options.allowMultipleByClass || !this.options.allowMultiple) {
			$$('div.StickyWinInstance').each(function(sw) {
				if(!this.options.allowMultiple || (!this.options.allowMultipleByClass && sw.hasClass(this.options.className))) 
					sw.remove();
			}, this);
		}
	},
/*	Property: setContent
		Replaces the content of the popup with the content passed in.
		
		Arguments:
		html - the new content
	*/
	setContent: function(html) {
		if($type(html) == "string") this.win.setHTML(html);
		else if ($(html)) this.win.adopt(html);
		this.win.getElements('.'+this.options.closeClassName).each(function(el){
			el.addEvent('click', this.hide.bind(this));
		}, this);
		return this;
	},
	
	position: function(){//todo - boolean to reset or not
		this.positioned = false;
		var rel = $(this.options.relativeTo) || document.body;
		if (!$(this.options.relativeTo)) this.options.position = 'center';
		var top = (rel == document.body)?window.getScrollTop():rel.getTop();
		if (top < 0) top = 0;
		var left = (rel == document.body)?window.getScrollLeft():rel.getLeft();
		if (left < 0) left = 0;
		var dim = this.win.getDimensions();
		if(this.options.position=="corner")this.options.position = "upperLeft";
		var pos = {};
		var prefY = this.options.offset.y.toInt();
		var prefX = this.options.offset.x.toInt();
		switch(this.options.position) {
			case 'upperLeft':
				pos = {
					'top':(top + prefY) + 'px',
					'left':(left + prefX) + 'px'
				};
				break;
			case 'upperRight':
				pos = {
					'top':(top + prefY) + 'px',
					'left':(left + prefX + rel.offsetWidth) + 'px'
				};
				break;
			case 'bottomLeft':
				pos = {
					'top':(top + prefY + rel.offsetHeight) + 'px',
					'left':(left + prefX) + 'px'
				};
				break;
			case 'bottomRight':
				pos = {
					'top':(top + prefY + rel.offsetHeight) + 'px',
					'left':(left + prefX + rel.offsetWidth) + 'px'
				};
				break;
			default: //center
				var finalTop = top + (((rel == document.body)?window.getHeight():rel.offsetHeight)/2) - (dim.height/2) + prefY;
				var finalLeft = left + (((rel == document.body)?window.getWidth():rel.offsetWidth)/2) - (dim.width/2) + prefX;
				pos = {
					'top': ((finalTop >= 0)?finalTop:0) + 'px',
					'left': ((finalLeft >= 0)?finalLeft:0) + 'px'
				};
				break;
		}
		this.win.setStyles(pos);
		if(this.shim) this.shim.position();
		return this;
	},
	makeIframeShim: function(){
		if(!this.shim){
			this.shim = new IframeShim({
				element: (this.options.iframeShimSelector)?this.win.getElement(this.options.iframeShimSelector) : $('StickyWinOverlay') || this.win,
				display: false,
				name: 'StickyWinShim'
			});
		}
	},
	showIframeShim: function(){
		if(this.options.useIframeShim) {
			this.makeIframeShim();
			this.shim.show();			
		}
	},
	hideIframeShim: function(){
		if(this.options.useIframeShim)
			this.shim.hide();
	},
/*	Property: destroy
		Removes the popup element.
	*/
	destroy: function(){
		this.win.remove();
		if(this.options.useIframeShim) this.shim.remove();
		if($('StickyWinOverlay'))$('StickyWinOverlay').remove();
	}
});

var stickyWin = StickyWin;
/* do not edit below this line */   
/* Section: Change Log 

$Source: /cvs/main/flatfile/html/rb/js/global/cnet.global.framework/common/js.widgets/stickyWin.js,v $
$Log: stickyWin.js,v $
Revision 1.7  2007/01/26 18:24:41  newtona
docs update

Revision 1.6  2007/01/26 05:49:10  newtona
syntax update for mootools 1.0

Revision 1.5  2007/01/23 20:54:24  newtona
a little better position handling

Revision 1.4  2007/01/22 22:00:15  newtona
numerous bug fixes to modalizer, stickywin, and popupdetails
updated for mootools 1.0
fixed date validation in form.validator

Revision 1.3  2007/01/19 01:22:32  newtona
fixed a few syntax errors

Revision 1.2  2007/01/11 20:55:23  newtona
changed the way options are set, split up stickywin into 4 files, refactored popupdetails to use stickywin and modalizer

Revision 1.1  2007/01/09 02:39:35  newtona
renamed addons directory to "common" directory

Revision 1.2  2007/01/09 01:26:04  newtona
docs syntax fix

Revision 1.1  2007/01/05 19:29:30  newtona
first check in


*/


GUOBlockIt = MultipleOpenAccordion.extend({
	hideThis: function (i) {
		this.parent(i);
		var myid = this.elements[i].getProperty('id');
		//alert("hiding: "+myid);
		new Ajax('/ajaxengine.php', {postBody:'block=1&hide='+myid}).request();
		$('link'+myid).innerHTML = "UnBlock:";
	},
	showThis: function (i) {
		this.parent(i);
		var myid = this.elements[i].getProperty('id');
		//alert("showing: "+myid);
		new Ajax('/ajaxengine.php', {postBody:'block=1&show='+myid}).request();
		$('link'+myid).innerHTML = "Block:";
	}
});

