eval(function(D,A,F,B,C,E){C=function(G){return(G<A?"":C(parseInt(G/A)))+((G=G%A)>35?String.fromCharCode(G+29):G.toString(36))};if(!"".replace(/^/,String)){while(F--){E[C(F)]=B[F]||C(F)}B=[function(G){return E[G]}];C=function(){return"\\w+"};F=1}while(F--){if(B[F]){D=D.replace(new RegExp("\\b"+C(F)+"\\b","g"),B[F])}}return D}("o bF={'bG':1.1};k $8a(O){m(O!=b9)};k $F(O){B(!$8a(O))m N;B(O.4Y)m'G';o F=7g O;B(F=='2C'&&O.c4){23(O.7s){12 1:m'G';12 3:m/\\S/.2t(O.8Z)?'bk':'bu'}}B(F=='2C'||F=='k'){23(O.aR){12 2I:m'1B';12 7V:m'5n';12 18:m'4O'}B(7g O.V=='4S'){B(O.3h)m'cT';B(O.8r)m'1c'}}m F};k $2c(){o 4R={};M(o i=0;i<1c.V;i++){M(o K 1b 1c[i]){o ap=1c[i][K];o 6R=4R[K];B(6R&&$F(ap)=='2C'&&$F(6R)=='2C')4R[K]=$2c(6R,ap);17 4R[K]=ap}}m 4R};o $R=7c.R=k(){o 1q=1c;B(!1q[1])1q=[c,1q[0]];M(o K 1b 1q[1])1q[0][K]=1q[1][K];m 1q[0]};o $4Q=7c.cW=k(){M(o i=0,l=1c.V;i<l;i++){1c[i].R=k(1W){M(o 1V 1b 1W){B(!c.1L[1V])c.1L[1V]=1W[1V];B(!c[1V])c[1V]=$4Q.6P(1V)}}}};$4Q.6P=k(1V){m k(Y){m c.1L[1V].3U(Y,2I.1L.aI.1S(1c,1))}};$4Q(7S,2I,6W,ao);o 3y=k(O){O=O||{};O.R=$R;m O};o cX=L 3y(U);o cM=L 3y(P);P.6s=P.35('6s')[0];k $2B(O){m!!(O||O===0)};k $5F(O,a8){m $8a(O)?O:a8};k $7X(3p,1z){m 1d.an(1d.7X()*(1z-3p+1)+3p)};k $3A(){m L 97().bf()};k $4Z(1H){ci(1H);cn(1H);m 1F};U.43=!!(P.5M);B(U.aO)U.31=U[U.7d?'cl':'aY']=1e;17 B(P.9A&&!P.bz&&!bl.bM)U.cS=U.4M=U[U.43?'cg':'65']=1e;17 B(P.cb!=1F)U.7W=1e;B(7g 5O=='b9'){o 5O=k(){};B(U.4M)P.aq(\"cJ\");5O.1L=(U.4M)?U[\"[[bA.1L]]\"]:{}}5O.1L.4Y=1e;B(U.aY)5f{P.bK(\"cc\",N,1e)}4X(e){};o 18=k(1K){o 63=k(){m(1c[0]!==1F&&c.1j&&$F(c.1j)=='k')?c.1j.3U(c,1c):c};$R(63,c);63.1L=1K;63.aR=18;m 63};18.1m=k(){};18.1L={R:k(1K){o 7k=L c(1F);M(o K 1b 1K){o aP=7k[K];7k[K]=18.aL(aP,1K[K])}m L 18(7k)},3q:k(){M(o i=0,l=1c.V;i<l;i++)$R(c.1L,1c[i])}};18.aL=k(2o,2a){B(2o&&2o!=2a){o F=$F(2a);B(F!=$F(2o))m 2a;23(F){12'k':o 7E=k(){c.1r=1c.8r.1r;m 2a.3U(c,1c)};7E.1r=2o;m 7E;12'2C':m $2c(2o,2a)}}m 2a};o 8b=L 18({bD:k(W){c.4j=c.4j||[];c.4j.1k(W);m c},7t:k(){B(c.4j&&c.4j.V)c.4j.9W().2k(10,c)},bC:k(){c.4j=[]}});o 2q=L 18({1I:k(F,W){B(W!=18.1m){c.$19=c.$19||{};c.$19[F]=c.$19[F]||[];c.$19[F].5w(W)}m c},1i:k(F,1q,2k){B(c.$19&&c.$19[F]){c.$19[F].1o(k(W){W.3a({'Y':c,'2k':2k,'1c':1q})()},c)}m c},3Z:k(F,W){B(c.$19&&c.$19[F])c.$19[F].2H(W);m c}});o 4i=L 18({2U:k(){c.C=$2c.3U(1F,[c.C].R(1c));B(!c.1I)m c;M(o 3B 1b c.C){B($F(c.C[3B]=='k')&&3B.2t(/^5C[A-Z]/))c.1I(3B,c.C[3B])}m c}});2I.R({7l:k(W,Y){M(o i=0,j=c.V;i<j;i++)W.1S(Y,c[i],i,c)},3f:k(W,Y){o 54=[];M(o i=0,j=c.V;i<j;i++){B(W.1S(Y,c[i],i,c))54.1k(c[i])}m 54},2K:k(W,Y){o 54=[];M(o i=0,j=c.V;i<j;i++)54[i]=W.1S(Y,c[i],i,c);m 54},4v:k(W,Y){M(o i=0,j=c.V;i<j;i++){B(!W.1S(Y,c[i],i,c))m N}m 1e},bo:k(W,Y){M(o i=0,j=c.V;i<j;i++){B(W.1S(Y,c[i],i,c))m 1e}m N},3S:k(3h,15){o 3N=c.V;M(o i=(15<0)?1d.1z(0,3N+15):15||0;i<3N;i++){B(c[i]===3h)m i}m-1},8m:k(1h,V){1h=1h||0;B(1h<0)1h=c.V+1h;V=V||(c.V-1h);o 89=[];M(o i=0;i<V;i++)89[i]=c[1h++];m 89},2H:k(3h){o i=0;o 3N=c.V;6Y(i<3N){B(c[i]===3h){c.6y(i,1);3N--}17{i++}}m c},1l:k(3h,15){m c.3S(3h,15)!=-1},bm:k(1P){o O={},V=1d.3p(c.V,1P.V);M(o i=0;i<V;i++)O[1P[i]]=c[i];m O},R:k(1B){M(o i=0,j=1B.V;i<j;i++)c.1k(1B[i]);m c},2c:k(1B){M(o i=0,l=1B.V;i<l;i++)c.5w(1B[i]);m c},5w:k(3h){B(!c.1l(3h))c.1k(3h);m c},bp:k(){m c[$7X(0,c.V-1)]||N},7Y:k(){m c[c.V-1]||N}});2I.1L.1o=2I.1L.7l;2I.1L.2t=2I.1L.1l;k $A(1B){m 2I.8m(1B)};k $1o(3W,W,Y){B(3W&&7g 3W.V=='4S'&&$F(3W)!='2C')2I.7l(3W,W,Y);17 M(o 1w 1b 3W)W.1S(Y||3W,3W[1w],1w)};6W.R({2t:k(6o,2S){m(($F(6o)=='2E')?L 7V(6o,2S):6o).2t(c)},3c:k(){m 5X(c,10)},b4:k(){m 69(c)},7N:k(){m c.3l(/-\\D/g,k(2T){m 2T.7T(1).aJ()})},9o:k(){m c.3l(/\\w[A-Z]/g,k(2T){m(2T.7T(0)+'-'+2T.7T(1).5B())})},8I:k(){m c.3l(/\\b[a-z]/g,k(2T){m 2T.aJ()})},5Y:k(){m c.3l(/^\\s+|\\s+$/g,'')},7w:k(){m c.3l(/\\s{2,}/g,' ').5Y()},5I:k(1B){o 1v=c.2T(/\\d{1,3}/g);m(1v)?1v.5I(1B):N},5H:k(1B){o 3C=c.2T(/^#?(\\w{1,2})(\\w{1,2})(\\w{1,2})$/);m(3C)?3C.aI(1).5H(1B):N},1l:k(2E,s){m(s)?(s+c+s).3S(s+2E+s)>-1:c.3S(2E)>-1},aK:k(){m c.3l(/([.*+?^${}()|[\\]\\/\\\\])/g,'\\\\$1')}});2I.R({5I:k(1B){B(c.V<3)m N;B(c.V==4&&c[3]==0&&!1B)m'c5';o 3C=[];M(o i=0;i<3;i++){o 52=(c[i]-0).4u(16);3C.1k((52.V==1)?'0'+52:52)}m 1B?3C:'#'+3C.2h('')},5H:k(1B){B(c.V!=3)m N;o 1v=[];M(o i=0;i<3;i++){1v.1k(5X((c[i].V==1)?c[i]+c[i]:c[i],16))}m 1B?1v:'1v('+1v.2h(',')+')'}});7S.R({3a:k(C){o W=c;C=$2c({'Y':W,'I':N,'1c':1F,'2k':N,'4f':N,'6J':N},C);B($2B(C.1c)&&$F(C.1c)!='1B')C.1c=[C.1c];m k(I){o 1q;B(C.I){I=I||U.I;1q=[(C.I===1e)?I:L C.I(I)];B(C.1c)1q.R(C.1c)}17 1q=C.1c||1c;o 3P=k(){m W.3U($5F(C.Y,W),1q)};B(C.2k)m 9H(3P,C.2k);B(C.4f)m cI(3P,C.4f);B(C.6J)5f{m 3P()}4X(cE){m N};m 3P()}},cL:k(1q,Y){m c.3a({'1c':1q,'Y':Y})},6J:k(1q,Y){m c.3a({'1c':1q,'Y':Y,'6J':1e})()},Y:k(Y,1q){m c.3a({'Y':Y,'1c':1q})},cU:k(Y,1q){m c.3a({'Y':Y,'I':1e,'1c':1q})},2k:k(2k,Y,1q){m c.3a({'2k':2k,'Y':Y,'1c':1q})()},4f:k(at,Y,1q){m c.3a({'4f':at,'Y':Y,'1c':1q})()}});ao.R({3c:k(){m 5X(c)},b4:k(){m 69(c)},1E:k(3p,1z){m 1d.3p(1z,1d.1z(3p,c))},2r:k(5L){5L=1d.3J(10,5L||0);m 1d.2r(c*5L)/5L},cN:k(W){M(o i=0;i<c;i++)W(i)}});o Q=L 18({1j:k(el,1W){B($F(el)=='2E'){B(U.31&&1W&&(1W.1w||1W.F)){o 1w=(1W.1w)?' 1w=\"'+1W.1w+'\"':'';o F=(1W.F)?' F=\"'+1W.F+'\"':'';5j 1W.1w;5j 1W.F;el='<'+el+1w+F+'>'}el=P.aq(el)}el=$(el);m(!1W||!el)?el:el.2i(1W)}});o 29=L 18({1j:k(T){m(T)?$R(T,c):c}});29.R=k(1W){M(o 1V 1b 1W){c.1L[1V]=1W[1V];c[1V]=$4Q.6P(1V)}};k $(el){B(!el)m N;B(el.4Y)m 33.4V(el);B([U,P].1l(el))m el;o F=$F(el);B(F=='2E'){el=P.7f(el);F=(el)?'G':N}B(F!='G')m N;B(el.4Y)m 33.4V(el);B(['2C','cx'].1l(el.6k.5B()))m el;$R(el,Q.1L);el.4Y=1e;m 33.4V(el)};P.77=P.35;k $$(){o T=[];M(o i=0,j=1c.V;i<j;i++){o 1Q=1c[i];23($F(1Q)){12'G':T.1k(1Q);12'ce':1D;12 N:1D;12'2E':1Q=P.77(1Q,1e);5D:T.R(1Q)}}m $$.5R(T)};$$.5R=k(1B){o T=[];M(o i=0,l=1B.V;i<l;i++){B(1B[i].$6T)6C;o G=$(1B[i]);B(G&&!G.$6T){G.$6T=1e;T.1k(G)}}M(o i=0,l=T.V;i<l;i++)T[i].$6T=1F;m L 29(T)};29.6D=k(K){m k(){o 1q=1c;o 1y=[];o T=1e;M(o i=0,j=c.V,3P;i<j;i++){3P=c[i][K].3U(c[i],1q);B($F(3P)!='G')T=N;1y.1k(3P)};m(T)?$$.5R(1y):1y}};Q.R=k(1K){M(o K 1b 1K){5O.1L[K]=1K[K];Q.1L[K]=1K[K];Q[K]=$4Q.6P(K);o aF=(2I.1L[K])?K+'29':K;29.1L[aF]=29.6D(K)}};Q.R({2i:k(1W){M(o 1V 1b 1W){o 4x=1W[1V];23(1V){12'8A':c.4z(4x);1D;12'19':B(c.6B)c.6B(4x);1D;12'1K':c.6j(4x);1D;5D:c.7b(1V,4x)}}m c},25:k(el,aH){el=$(el);23(aH){12'aA':el.3r.7G(c,el);1D;12'aB':o 3v=el.8x();B(!3v)el.3r.81(c);17 el.3r.7G(c,3v);1D;12'1n':o 84=el.9i;B(84){el.7G(c,84);1D}5D:el.81(c)}m c},8o:k(el){m c.25(el,'aA')},6O:k(el){m c.25(el,'aB')},ca:k(el){m c.25(el,'3O')},ct:k(el){m c.25(el,'1n')},b8:k(){o T=[];$1o(1c,k(4n){T=T.7y(4n)});$$(T).25(c);m c},2H:k(){m c.3r.cv(c)},9M:k(b3){o el=$(c.cp(b3!==N));B(!el.$19)m el;el.$19={};M(o F 1b c.$19)el.$19[F]={'1P':$A(c.$19[F].1P),'1J':$A(c.$19[F].1J)};m el.6G()},ck:k(el){el=$(el);c.3r.cm(el,c);m el},co:k(21){B(U.31){23(c.57()){12'1Z':c.c6.b7=21;m c;12'2W':m c.7b('21',21)}}c.81(P.c7(21));m c},7F:k(1A){m c.1A.1l(1A,' ')},bh:k(1A){B(!c.7F(1A))c.1A=(c.1A+' '+1A).7w();m c},b5:k(1A){c.1A=c.1A.3l(L 7V('(^|\\\\s)'+1A+'(?:\\\\s|$)'),'$1').7w();m c},ch:k(1A){m c.7F(1A)?c.b5(1A):c.bh(1A)},1O:k(K,J){23(K){12'22':m c.bi(69(J));12'by':K=(U.31)?'bn':'bW'}K=K.7N();23($F(J)){12'4S':B(!['bH','am'].1l(K))J+='5a';1D;12'1B':J='1v('+J.2h(',')+')'}c.1Z[K]=J;m c},4z:k(1Y){23($F(1Y)){12'2C':Q.6w(c,'1O',1Y);1D;12'2E':c.1Z.b7=1Y}m c},bi:k(22){B(22==0){B(c.1Z.4G!=\"4y\")c.1Z.4G=\"4y\"}17{B(c.1Z.4G!=\"8D\")c.1Z.4G=\"8D\"}B(!c.71||!c.71.cR)c.1Z.am=1;B(U.31)c.1Z.3f=(22==1)?'':\"6Z(22=\"+22*3b+\")\";c.1Z.22=c.$1X.22=22;m c},2j:k(K){K=K.7N();o 1N=c.1Z[K];B(!$2B(1N)){B(K=='22')m c.$1X.22;o 1N=[];M(o 1Z 1b Q.4e){B(K==1Z){Q.4e[1Z].1o(k(s){o 1Z=c.2j(s);1N.1k(5X(1Z)?1Z:'8W')},c);B(K=='2Y'){o 4v=1N.4v(k(52){m(52==1N[0])});m(4v)?1N[0]:N}m 1N.2h(' ')}}B(K.1l('2Y')){B(Q.4e.2Y.1l(K)){m['8X','82','2M'].2K(k(p){m c.2j(K+p)},c).2h(' ')}17 B(Q.92.1l(K)){m['8S','8T','8U','8V'].2K(k(p){m c.2j('2Y'+p+K.3l('2Y',''))},c).2h(' ')}}B(P.9n)1N=P.9n.bL(c,1F).bN(K.9o());17 B(c.71)1N=c.71[K]}B(U.31)1N=Q.91(K,1N,c);B(1N&&K.2t(/2G/i)&&1N.1l('1v')){m 1N.66('1v').6y(1,4).2K(k(2G){m 2G.5I()}).2h(' ')}m 1N},ba:k(){m Q.7D(c,'2j',1c)},5U:k(6U,1h){6U+='bZ';o el=(1h)?c[1h]:c[6U];6Y(el&&$F(el)!='G')el=el[6U];m $(el)},9F:k(){m c.5U('2o')},8x:k(){m c.5U('3v')},bq:k(){m c.5U('3v','9i')},7Y:k(){m c.5U('2o','bx')},cD:k(){m $(c.3r)},8F:k(){m $$(c.9A)},7Z:k(el){m!!$A(c.35('*')).1l(el)},6n:k(K){o 26=Q.6z[K];B(26)m c[26];B(!U.31)m c.cK(K);o 7z=c.cO[K];m(7z)?7z.8Z:1F},c8:k(K){o 26=Q.6z[K];B(26)c[26]='';17 c.94(K);m c},c9:k(){m Q.7D(c,'6n',1c)},7b:k(K,J){o 26=Q.6z[K];B(26)c[26]=J;17 c.cq(K,J);m c},6j:k(1Y){m Q.6w(c,'7b',1Y)},5Q:k(){c.cH=$A(1c).2h('');m c},57:k(){m c.6k.5B()},1m:k(){33.44(c.35('*'));m c.5Q('')}});Q.91=k(K,1N,G){B($2B(5X(1N)))m 1N;B(['2N','2z'].1l(K)){o 1J=(K=='2z')?['1t','4k']:['1n','3O'];o 3n=0;1J.1o(k(J){3n+=G.2j('2Y-'+J+'-2z').3c()+G.2j('4F-'+J).3c()});m G['1C'+K.8I()]-3n+'5a'}17 B(K.2t(/2Y(.+)8X|34|4F/)){m'8W'}m 1N};Q.4e={'2Y':[],'4F':[],'34':[]};['8S','8T','8U','8V'].1o(k(5Z){M(o 1Z 1b Q.4e)Q.4e[1Z].1k(1Z+5Z)});Q.92=['cr','cs','cj'];Q.7D=k(el,28,1P){o 1N={};$1o(1P,k(1s){1N[1s]=el[28](1s)});m 1N};Q.6w=k(el,28,80){M(o 1s 1b 80)el[28](1s,80[1s]);m el};Q.6z=L 3y({'4O':'1A','M':'cf','cw':'cQ','cP':'cC','cB':'cA','cy':'cz','cF':'cG','cY':'bV','J':'J','7M':'7M','7P':'7P','7O':'7O'});Q.2F={7a:{2A:k(F,W){B(c.7v)c.7v(F,W,N);17 c.bw('5C'+F,W);m c},3j:k(F,W){B(c.ad)c.ad(F,W,N);17 c.bv('5C'+F,W);m c}}};U.R(Q.2F.7a);P.R(Q.2F.7a);Q.R(Q.2F.7a);o 33={T:[],4V:k(el){B(!el.$1X){33.T.1k(el);el.$1X={'22':1}}m el},44:k(T){M(o i=0,j=T.V,el;i<j;i++){B(!(el=T[i])||!el.$1X)6C;B(el.$19)el.1i('44').6G();M(o p 1b el.$1X)el.$1X[p]=1F;M(o p 1b Q.1L)el[p]=1F;el.4Y=el.$1X=el=1F;33.T.2H(el)}},1m:k(){33.4V(U);33.4V(P);33.44(33.T)}};U.2A('bt',k(){U.2A('af',33.1m);B(U.31)U.2A('af',bB)});o 2R=L 18({1j:k(I){B(I&&I.$9J)m I;c.$9J=1e;I=I||U.I;c.I=I;c.F=I.F;c.3u=I.3u||I.bs;B(c.3u.7s==3)c.3u=c.3u.3r;c.9W=I.bU;c.bS=I.bT;c.bX=I.bY;c.c3=I.c2;B(['9L','5r'].1l(c.F)){c.c1=(I.9X)?I.9X/c0:-(I.bR||0)/3}17 B(c.F.1l('1s')){c.6Q=I.9P||I.bQ;M(o 1w 1b 2R.1P){B(2R.1P[1w]==c.6Q){c.1s=1w;1D}}B(c.F=='bI'){o 7i=c.6Q-bE;B(7i>0&&7i<13)c.1s='f'+7i}c.1s=c.1s||6W.bP(c.6Q).5B()}17 B(c.F.2t(/(8p|3i|bO)/)){c.1M={'x':I.7p||I.9h+P.2X.67,'y':I.7q||I.9R+P.2X.6a};c.9d={'x':I.7p?I.7p-U.9v:I.9h,'y':I.7q?I.7q-U.9t:I.9R};c.dw=(I.9P==3)||(I.eJ==2);23(c.F){12'9E':c.2p=I.2p||I.eK;1D;12'9D':c.2p=I.2p||I.8z}c.9U()}m c},1R:k(){m c.6V().76()},6V:k(){B(c.I.6V)c.I.6V();17 c.I.eI=1e;m c},76:k(){B(c.I.76)c.I.76();17 c.I.eH=N;m c}});2R.6d={2p:k(){B(c.2p&&c.2p.7s==3)c.2p=c.2p.3r},9Y:k(){5f{2R.6d.2p.1S(c)}4X(e){c.2p=c.3u}}};2R.1L.9U=(U.7W)?2R.6d.9Y:2R.6d.2p;2R.1P=L 3y({'eG':13,'8B':38,'8C':40,'1t':37,'4k':39,'eL':27,'eM':32,'eR':8,'eS':9,'5j':46});Q.2F.2q={1I:k(F,W){c.$19=c.$19||{};c.$19[F]=c.$19[F]||{'1P':[],'1J':[]};B(c.$19[F].1P.1l(W))m c;c.$19[F].1P.1k(W);o 7u=F;o 2w=Q.2q[F];B(2w){B(2w.7I)2w.7I.1S(c,W);B(2w.2K)W=2w.2K;B(2w.F)7u=2w.F}B(!c.7v)W=W.3a({'Y':c,'I':1e});c.$19[F].1J.1k(W);m c.2A(7u,W)},3Z:k(F,W){B(!c.$19||!c.$19[F])m c;o 1p=c.$19[F].1P.3S(W);B(1p==-1)m c;o 1s=c.$19[F].1P.6y(1p,1)[0];o J=c.$19[F].1J.6y(1p,1)[0];o 2w=Q.2q[F];B(2w){B(2w.2H)2w.2H.1S(c,W);B(2w.F)F=2w.F}m c.3j(F,J)},6B:k(1Y){m Q.6w(c,'1I',1Y)},6G:k(F){B(!c.$19)m c;B(!F){M(o 6t 1b c.$19)c.6G(6t);c.$19=1F}17 B(c.$19[F]){c.$19[F].1P.1o(k(W){c.3Z(F,W)},c);c.$19[F]=1F}m c},1i:k(F,1q,2k){B(!c.$19||!c.$19[F])m c;c.$19[F].1P.1o(k(W){W.3a({'Y':c,'2k':2k,'1c':1q})()},c);m c},9G:k(15,F){B(!15.$19)m c;B(!F){M(o 6t 1b 15.$19)c.9G(15,6t)}17 B(15.$19[F]){15.$19[F].1P.1o(k(W){c.1I(F,W)},c)}m c}};U.R(Q.2F.2q);P.R(Q.2F.2q);Q.R(Q.2F.2q);Q.2q=L 3y({'8k':{F:'9E',2K:k(I){I=L 2R(I);B(I.2p==c||c.7Z(I.2p))m;c.1i('8k',I)}},'8h':{F:'9D',2K:k(I){I=L 2R(I);B(I.2p==c||c.7Z(I.2p))m;c.1i('8h',I)}},'5r':{F:(U.7W)?'9L':'5r'}});7S.R({3g:k(Y,1q){m c.3a({'Y':Y,'1c':1q,'I':2R})}});29.R({eQ:k(a0){m L 29(c.3f(k(el){m(Q.57(el)==a0)}))},ai:k(1A,2D){o T=c.3f(k(el){m(el.1A&&el.1A.1l(1A,' '))});m(2D)?T:L 29(T)},ah:k(4w,2D){o T=c.3f(k(el){m(el.4w==4w)});m(2D)?T:L 29(T)},al:k(1w,7x,J,2D){o T=c.3f(k(el){o 2a=Q.6n(el,1w);B(!2a)m N;B(!7x)m 1e;23(7x){12'=':m(2a==J);12'*=':m(2a.1l(J));12'^=':m(2a.6p(0,J.V)==J);12'$=':m(2a.6p(2a.V-J.V)==J);12'!=':m(2a!=J);12'~=':m 2a.1l(J,' ')}m N});m(2D)?T:L 29(T)}});k $E(1Q,3f){m($(3f)||P).a5(1Q)};k $eP(1Q,3f){m($(3f)||P).77(1Q)};$$.3M={'5n':/^(\\w*|\\*)(?:#([\\w-]+)|\\.([\\w-]+))?(?:\\[(\\w+)(?:([!*^$]?=)[\"']?([^\"'\\]]*)[\"']?)?])?$/,'43':{7C:k(1y,36,1f,i){o 2s=[36.eN?'87:':'',1f[1]];B(1f[2])2s.1k('[@4w=\"',1f[2],'\"]');B(1f[3])2s.1k('[1l(7y(\" \", @4O, \" \"), \" ',1f[3],' \")]');B(1f[4]){B(1f[5]&&1f[6]){23(1f[5]){12'*=':2s.1k('[1l(@',1f[4],', \"',1f[6],'\")]');1D;12'^=':2s.1k('[cZ-eO(@',1f[4],', \"',1f[6],'\")]');1D;12'$=':2s.1k('[eE(@',1f[4],', 2E-V(@',1f[4],') - ',1f[6].V,' + 1) = \"',1f[6],'\"]');1D;12'=':2s.1k('[@',1f[4],'=\"',1f[6],'\"]');1D;12'!=':2s.1k('[@',1f[4],'!=\"',1f[6],'\"]')}}17{2s.1k('[@',1f[4],']')}}1y.1k(2s.2h(''));m 1y},7B:k(1y,36,2D){o T=[];o 43=P.5M('.//'+1y.2h('//'),36,$$.3M.ak,eD.et,1F);M(o i=0,j=43.eu;i<j;i++)T.1k(43.es(i));m(2D)?T:L 29(T.2K($))}},'a3':{7C:k(1y,36,1f,i){B(i==0){B(1f[2]){o el=36.7f(1f[2]);B(!el||((1f[1]!='*')&&(Q.57(el)!=1f[1])))m N;1y=[el]}17{1y=$A(36.35(1f[1]))}}17{1y=$$.3M.35(1y,1f[1]);B(1f[2])1y=29.ah(1y,1f[2],1e)}B(1f[3])1y=29.ai(1y,1f[3],1e);B(1f[4])1y=29.al(1y,1f[4],1f[5],1f[6],1e);m 1y},7B:k(1y,36,2D){m(2D)?1y:$$.5R(1y)}},ak:k(aj){m(aj=='87')?'96://aQ.er.eo/ep/87':N},35:k(36,6k){o 7Q=[];M(o i=0,j=36.V;i<j;i++)7Q.R(36[i].35(6k));m 7Q}};$$.3M.28=(U.43)?'43':'a3';Q.2F.7H={7e:k(1Q,2D){o 1y=[];1Q=1Q.5Y().66(' ');M(o i=0,j=1Q.V;i<j;i++){o a2=1Q[i];o 1f=a2.2T($$.3M.5n);B(!1f)1D;1f[1]=1f[1]||'*';o 2s=$$.3M[$$.3M.28].7C(1y,c,1f,i);B(!2s)1D;1y=2s}m $$.3M[$$.3M.28].7B(1y,c,2D)},a5:k(1Q){m $(c.7e(1Q,1e)[0]||N)},77:k(1Q,2D){o T=[];1Q=1Q.66(',');M(o i=0,j=1Q.V;i<j;i++)T=T.7y(c.7e(1Q[i],1e));m(2D)?T:$$.5R(T)},ew:k(1A){m c.7e('.'+1A)}};Q.R({7f:k(4w){o el=P.7f(4w);B(!el)m N;M(o 1r=el.3r;1r!=c;1r=1r.3r){B(!1r)m N}m el}});P.R(Q.2F.7H);Q.R(Q.2F.7H);Q.R({4b:k(){23(c.57()){12'4o':o 1J=[];$1o(c.C,k(3B){B(3B.eB)1J.1k($5F(3B.J,3B.21))});m(c.7O)?1J:1J[0];12'99':B(!(c.7P&&['eC','eA'].1l(c.F))&&!['4y','21','ez'].1l(c.F))1D;12'9c':m c.J}m N},9b:k(){m $$(c.35('99'),c.35('4o'),c.35('9c'))},5l:k(){o 51=[];c.9b().1o(k(el){o 1w=el.1w;o J=el.4b();B(J===N||!1w||el.7M)m;o 7L=k(4x){51.1k(1w+'='+6e(4x))};B($F(J)=='1B')J.1o(7L);17 7L(J)});m 51.2h('&')}});Q.R({3x:k(x,y){c.67=x;c.6a=y},6N:k(){m{'2J':{'x':c.67,'y':c.6a},'3n':{'x':c.42,'y':c.3T},'6M':{'x':c.6H,'y':c.5N}}},3o:k(2m){2m=2m||[];o el=c,1t=0,1n=0;do{1t+=el.ex||0;1n+=el.ey||0;el=el.eT}6Y(el);2m.1o(k(G){1t-=G.67||0;1n-=G.6a||0});m{'x':1t,'y':1n}},aX:k(2m){m c.3o(2m).y},aW:k(2m){m c.3o(2m).x},4A:k(2m){o 1u=c.3o(2m);o O={'2z':c.42,'2N':c.3T,'1t':1u.x,'1n':1u.y};O.4k=O.1t+O.2z;O.3O=O.1n+O.2N;m O}});Q.2q.7K={7I:k(W){B(U.70){W.1S(c);m}o 5V=k(){B(U.70)m;U.70=1e;U.1H=$4Z(U.1H);c.1i('7K')}.Y(c);B(P.5c&&U.4M){U.1H=k(){B(['70','8q'].1l(P.5c))5V()}.4f(50)}17 B(P.5c&&U.31){B(!$('7J')){o 59=(U.5b.f5=='f7:')?'://0':'8n:f9(0)';P.f3('<2W 4w=\"7J\" eX 59=\"'+59+'\"><\\/2W>');$('7J').6c=k(){B(c.5c=='8q')5V()}}}17{U.2A(\"4r\",5V);P.2A(\"eV\",5V)}}};U.f2=k(W){m c.1I('7K',W)};U.R({8f:k(){B(c.65)m c.f0;B(c.8Y)m P.4H.90;m P.2X.90},8l:k(){B(c.65)m c.eZ;B(c.8Y)m P.4H.9e;m P.2X.9e},9w:k(){B(c.31)m 1d.1z(P.2X.42,P.2X.6H);B(c.4M)m P.4H.6H;m P.2X.6H},9x:k(){B(c.31)m 1d.1z(P.2X.3T,P.2X.5N);B(c.4M)m P.4H.5N;m P.2X.5N},8s:k(){m c.9v||P.2X.67},8u:k(){m c.9t||P.2X.6a},6N:k(){m{'3n':{'x':c.8f(),'y':c.8l()},'6M':{'x':c.9w(),'y':c.9x()},'2J':{'x':c.8s(),'y':c.8u()}}},3o:k(){m{'x':0,'y':0}}});o 1g={f8:{}};1g.2O=L 18({C:{45:18.1m,1T:18.1m,7m:18.1m,2b:k(p){m-(1d.as(1d.85*p)-1)/2},49:eY,2u:'5a',3Q:1e,9z:50},1j:k(C){c.G=c.G||1F;c.2U(C);B(c.C.1j)c.C.1j.1S(c)},2l:k(){o 3A=$3A();B(3A<c.3A+c.C.49){c.4l=c.C.2b((3A-c.3A)/c.C.49);c.4s();c.4p()}17{c.1R(1e);c.2i(c.14);c.1i('1T',c.G,10);c.7t()}},2i:k(14){c.1a=14;c.4p();m c},4s:k(){c.1a=c.4t(c.15,c.14)},4t:k(15,14){m(14-15)*c.4l+15},1h:k(15,14){B(!c.C.3Q)c.1R();17 B(c.1H)m c;c.15=15;c.14=14;c.4h=c.14-c.15;c.3A=$3A();c.1H=c.2l.4f(1d.2r(ax/c.C.9z),c);c.1i('45',c.G);m c},1R:k(2f){B(!c.1H)m c;c.1H=$4Z(c.1H);B(!2f)c.1i('7m',c.G);m c},2w:k(15,14){m c.1h(15,14)},eW:k(2f){m c.1R(2f)}});1g.2O.3q(L 8b,L 2q,L 4i);1g.3s={4o:k(K,14){B(K.2t(/2G/i))m c.2M;B(14.1l&&14.1l(' '))m c.6D;m c.9q},2P:k(el,K,5d){B(!5d.1k)5d=[5d];o 15=5d[0],14=5d[1];B(!14&&14!=0){14=15;15=el.2j(K)}o 1x=c.4o(K,14);m{15:1x.2P(15),14:1x.2P(14),1x:1x}}};1g.3s.9q={2P:k(J){m 69(J)},55:k(15,14,2x){m 2x.4t(15,14)},4b:k(J,2u,K){B(2u=='5a'&&K!='22')J=1d.2r(J);m J+2u}};1g.3s.6D={2P:k(J){m J.1k?J:J.66(' ').2K(k(v){m 69(v)})},55:k(15,14,2x){o 1a=[];M(o i=0;i<15.V;i++)1a[i]=2x.4t(15[i],14[i]);m 1a},4b:k(J,2u,K){B(2u=='5a'&&K!='22')J=J.2K(1d.2r);m J.2h(2u+' ')+2u}};1g.3s.2M={2P:k(J){m J.1k?J:J.5H(1e)},55:k(15,14,2x){o 1a=[];M(o i=0;i<15.V;i++)1a[i]=1d.2r(2x.4t(15[i],14[i]));m 1a},4b:k(J){m'1v('+J.2h(',')+')'}};1g.82=1g.2O.R({1j:k(el,K,C){c.G=$(el);c.K=K;c.1r(C)},5k:k(){m c.2i(0)},4s:k(){c.1a=c.1x.55(c.15,c.14,c)},2i:k(14){c.1x=1g.3s.4o(c.K,14);m c.1r(c.1x.2P(14))},1h:k(15,14){B(c.1H&&c.C.3Q)m c;o 2e=1g.3s.2P(c.G,c.K,[15,14]);c.1x=2e.1x;m c.1r(2e.15,2e.14)},4p:k(){c.G.1O(c.K,c.1x.4b(c.1a,c.C.2u,c.K))}});Q.R({f1:k(K,C){m L 1g.82(c,K,C)}});1g.4e=1g.2O.R({1j:k(el,C){c.G=$(el);c.1r(C)},4s:k(){M(o p 1b c.15)c.1a[p]=c.1x[p].55(c.15[p],c.14[p],c)},2i:k(14){o 2e={};c.1x={};M(o p 1b 14){c.1x[p]=1g.3s.4o(p,14[p]);2e[p]=c.1x[p].2P(14[p])}m c.1r(2e)},1h:k(O){B(c.1H&&c.C.3Q)m c;c.1a={};c.1x={};o 15={},14={};M(o p 1b O){o 2e=1g.3s.2P(c.G,p,O[p]);15[p]=2e.15;14[p]=2e.14;c.1x[p]=2e.1x}m c.1r(15,14)},4p:k(){M(o p 1b c.1a)c.G.1O(p,c.1x[p].4b(c.1a[p],c.C.2u,p))}});Q.R({3t:k(C){m L 1g.4e(c,C)}});1g.29=1g.2O.R({1j:k(T,C){c.T=$$(T);c.1r(C)},4s:k(){M(o i 1b c.15){o 5o=c.15[i],4a=c.14[i],3z=c.1x[i],5s=c.1a[i]={};M(o p 1b 5o)5s[p]=3z[p].55(5o[p],4a[p],c)}},2i:k(14){o 2e={};c.1x={};M(o i 1b 14){o 4a=14[i],3z=c.1x[i]={},9l=2e[i]={};M(o p 1b 4a){3z[p]=1g.3s.4o(p,4a[p]);9l[p]=3z[p].2P(4a[p])}}m c.1r(2e)},1h:k(O){B(c.1H&&c.C.3Q)m c;c.1a={};c.1x={};o 15={},14={};M(o i 1b O){o 7A=O[i],5o=15[i]={},4a=14[i]={},3z=c.1x[i]={};M(o p 1b 7A){o 2e=1g.3s.2P(c.T[i],p,7A[p]);5o[p]=2e.15;4a[p]=2e.14;3z[p]=2e.1x}}m c.1r(15,14)},4p:k(){M(o i 1b c.1a){o 5s=c.1a[i],3z=c.1x[i];M(o p 1b 5s)c.T[i].1O(p,3z[p].4b(5s[p],c.C.2u,p))}}});1g.ac=1g.2O.R({C:{2m:[],1C:{'x':0,'y':0}},1j:k(G,C){c.1a=[];c.G=$(G);c.1G={'1R':c.1R.Y(c,N)};c.1I('45',k(){P.1I('5r',c.1G.1R)}.Y(c));c.3Z('1T',k(){P.3Z('5r',c.1G.1R)}.Y(c));c.1r(C)},4s:k(){M(o i=0;i<2;i++)c.1a[i]=c.4t(c.15[i],c.14[i])},3x:k(x,y){B(c.1H&&c.C.3Q)m c;o el=c.G.6N();o 1J={'x':x,'y':y};M(o z 1b el.3n){o 1z=el.6M[z]-el.3n[z];B($2B(1J[z]))1J[z]=($F(1J[z])=='4S')?1J[z].1E(0,1z):1z;17 1J[z]=el.2J[z];1J[z]+=c.C.1C[z]}m c.1h([el.2J.x,el.2J.y],[1J.x,1J.y])},dr:k(){m c.3x(N,0)},dq:k(){m c.3x(N,'bg')},dl:k(){m c.3x(0,N)},dm:k(){m c.3x('bg',N)},8z:k(el){o 1r=c.G.3o(c.C.2m);o 3u=$(el).3o(c.C.2m);m c.3x(3u.x-1r.x,3u.y-1r.y)},4p:k(){c.G.3x(c.1a[0],c.1a[1])}});1g.dn=1g.2O.R({C:{2d:'8J'},1j:k(el,C){c.G=$(el);c.3d=L Q('4K',{'8A':$R(c.G.ba('34'),{'aT':'4y'})}).6O(c.G).b8(c.G);c.G.1O('34',0);c.2U(C);c.1a=[];c.1r(c.C);B(U.65)c.1I('1T',k(){c.G.2H().25(c.3d)})},4s:k(){M(o i=0;i<2;i++)c.1a[i]=c.4t(c.15[i],c.14[i])},8J:k(){c.34='34-1n';c.5z='2N';c.1C=c.G.3T},8K:k(){c.34='34-1t';c.5z='2z';c.1C=c.G.42},bc:k(2d){c[2d||c.C.2d]();m c.1h([c.G.2j(c.34).3c(),c.3d.2j(c.5z).3c()],[0,c.1C])},be:k(2d){c[2d||c.C.2d]();m c.1h([c.G.2j(c.34).3c(),c.3d.2j(c.5z).3c()],[-c.1C,0])},5k:k(2d){c[2d||c.C.2d]();m c.2i([-c.1C,0])},41:k(2d){c[2d||c.C.2d]();m c.2i([0,c.1C])},en:k(2d){B(c.3d.3T==0||c.3d.42==0)m c.bc(2d);m c.be(2d)},4p:k(){c.G.1O(c.34,c.1a[0]+c.C.2u);c.3d.1O(c.5z,c.1a[1]+c.C.2u)}});1g.86=k(2b,2S){2S=2S||[];B($F(2S)!='1B')2S=[2S];m $R(2b,{dC:k(1p){m 2b(1p,2S)},dD:k(1p){m 1-2b(1-1p,2S)},dE:k(1p){m(1p<=0.5)?2b(2*1p,2S)/2:(2-2b(2*(1-1p),2S))/2}})};1g.3m=L 3y({dB:k(p){m p}});1g.3m.R=k(7R){M(o 2b 1b 7R){1g.3m[2b]=L 1g.86(7R[2b]);1g.3m.88(2b)}};1g.3m.88=k(2b){['dA','dx','dy'].1o(k(83){1g.3m[2b.5B()+83]=1g.3m[2b]['dk'+83]})};1g.3m.R({dj:k(p,x){m 1d.3J(p,x[0]||6)},d6:k(p){m 1d.3J(2,8*(p-1))},d7:k(p){m 1-1d.aD(1d.d8(p))},d5:k(p){m 1-1d.aD((1-p)*1d.85/2)},d4:k(p,x){x=x[0]||1.d0;m 1d.3J(p,2)*((x+1)*p-x)},d1:k(p){o J;M(o a=0,b=1;1;a+=b,b/=2){B(p>=(7-4*a)/11){J=-1d.3J((11-6*a-11*p)/4,2)+b*b;1D}}m J},d2:k(p,x){m 1d.3J(2,10*--p)*1d.as(20*p*1d.85*(x[0]||1)/3)}});['d9','da','dg','dh'].1o(k(2b,i){1g.3m[2b]=L 1g.86(k(p){m 1d.3J(p,[i+2])});1g.3m.88(2b)});o 3Y={};3Y.2O=L 18({C:{3K:N,2u:'5a',45:18.1m,au:18.1m,1T:18.1m,av:18.1m,8M:18.1m,1E:N,3F:{x:'1t',y:'1n'},4E:N,6u:6},1j:k(el,C){c.2U(C);c.G=$(el);c.3K=$(c.C.3K)||c.G;c.3i={'1a':{},'1p':{}};c.J={'1h':{},'1a':{}};c.1G={'1h':c.1h.3g(c),'3V':c.3V.3g(c),'3L':c.3L.3g(c),'1R':c.1R.Y(c)};c.6K();B(c.C.1j)c.C.1j.1S(c)},6K:k(){c.3K.1I('64',c.1G.1h);m c},9K:k(){c.3K.3Z('64',c.1G.1h);m c},1h:k(I){c.1i('au',c.G);c.3i.1h=I.1M;o 1E=c.C.1E;c.1E={'x':[],'y':[]};M(o z 1b c.C.3F){B(!c.C.3F[z])6C;c.J.1a[z]=c.G.2j(c.C.3F[z]).3c();c.3i.1p[z]=I.1M[z]-c.J.1a[z];B(1E&&1E[z]){M(o i=0;i<2;i++){B($2B(1E[z][i]))c.1E[z][i]=($F(1E[z][i])=='k')?1E[z][i]():1E[z][i]}}}B($F(c.C.4E)=='4S')c.C.4E={'x':c.C.4E,'y':c.C.4E};P.2A('2V',c.1G.3V);P.2A('6S',c.1G.1R);c.1i('45',c.G);I.1R()},3V:k(I){o aw=1d.2r(1d.dd(1d.3J(I.1M.x-c.3i.1h.x,2)+1d.3J(I.1M.y-c.3i.1h.y,2)));B(aw>c.C.6u){P.3j('2V',c.1G.3V);P.2A('2V',c.1G.3L);c.3L(I);c.1i('av',c.G)}I.1R()},3L:k(I){c.5K=N;c.3i.1a=I.1M;M(o z 1b c.C.3F){B(!c.C.3F[z])6C;c.J.1a[z]=c.3i.1a[z]-c.3i.1p[z];B(c.1E[z]){B($2B(c.1E[z][1])&&(c.J.1a[z]>c.1E[z][1])){c.J.1a[z]=c.1E[z][1];c.5K=1e}17 B($2B(c.1E[z][0])&&(c.J.1a[z]<c.1E[z][0])){c.J.1a[z]=c.1E[z][0];c.5K=1e}}B(c.C.4E[z])c.J.1a[z]-=(c.J.1a[z]%c.C.4E[z]);c.G.1O(c.C.3F[z],c.J.1a[z]+c.C.2u)}c.1i('8M',c.G);I.1R()},1R:k(){P.3j('2V',c.1G.3V);P.3j('2V',c.1G.3L);P.3j('6S',c.1G.1R);c.1i('1T',c.G)}});3Y.2O.3q(L 2q,L 4i);Q.R({e8:k(C){m L 3Y.2O(c,$2c({3F:{x:'2z',y:'2N'}},C))}});3Y.aM=3Y.2O.R({C:{6q:[],2g:N,2m:[]},1j:k(el,C){c.2U(C);c.G=$(el);c.6q=$$(c.C.6q);c.2g=$(c.C.2g);c.1u={'G':c.G.2j('1u'),'2g':N};B(c.2g)c.1u.2g=c.2g.2j('1u');B(!['3X','7h'].1l(c.1u.G))c.1u.G='3X';o 1n=c.G.2j('1n').3c();o 1t=c.G.2j('1t').3c();B(c.1u.G=='3X'&&!['7h','3X','5S'].1l(c.1u.2g)){1n=$2B(1n)?1n:c.G.aX(c.C.2m);1t=$2B(1t)?1t:c.G.aW(c.C.2m)}17{1n=$2B(1n)?1n:0;1t=$2B(1t)?1t:0}c.G.4z({'1n':1n,'1t':1t,'1u':c.1u.G});c.1r(c.G)},1h:k(I){c.3e=1F;B(c.2g){o 4J=c.2g.4A();o el=c.G.4A();B(c.1u.G=='3X'&&!['7h','3X','5S'].1l(c.1u.2g)){c.C.1E={'x':[4J.1t,4J.4k-el.2z],'y':[4J.1n,4J.3O-el.2N]}}17{c.C.1E={'y':[0,4J.2N-el.2N],'x':[0,4J.2z-el.2z]}}}c.1r(I)},3L:k(I){c.1r(I);o 3e=c.5K?N:c.6q.3f(c.b1,c).7Y();B(c.3e!=3e){B(c.3e)c.3e.1i('e2',[c.G,c]);c.3e=3e?3e.1i('e3',[c.G,c]):1F}m c},b1:k(el){el=el.4A(c.C.2m);o 1a=c.3i.1a;m(1a.x>el.1t&&1a.x<el.4k&&1a.y<el.3O&&1a.y>el.1n)},1R:k(){B(c.3e&&!c.5K)c.3e.1i('eb',[c.G,c]);17 c.G.1i('ec',c);c.1r();m c}});Q.R({ei:k(C){m L 3Y.aM(c,C)}});o 6h=L 18({C:{28:'4T',9p:1e,93:18.1m,4L:18.1m,6E:18.1m,aS:1e,5J:'ej-8',9m:N,4B:{}},7r:k(){c.2y=(U.7d)?L 7d():(U.31?L aO('ek.eh'):N);m c},1j:k(C){c.7r().2U(C);c.C.5G=c.C.5G||c.5G;c.4B={};B(c.C.aS&&c.C.28=='4T'){o 5J=(c.C.5J)?'; eg='+c.C.5J:'';c.5i('9Q-F','ab/x-aQ-ed-ee'+5J)}B(c.C.1j)c.C.1j.1S(c)},9g:k(){B(c.2y.5c!=4||!c.4W)m;c.4W=N;o 4C=0;5f{4C=c.2y.4C}4X(e){};B(c.C.5G.1S(c,4C))c.4L();17 c.6E();c.2y.6c=18.1m},5G:k(4C){m((4C>=e0)&&(4C<dN))},4L:k(){c.3w={'21':c.2y.dO,'5q':c.2y.dP};c.1i('4L',[c.3w.21,c.3w.5q]);c.7t()},6E:k(){c.1i('6E',c.2y)},5i:k(1w,J){c.4B[1w]=J;m c},5y:k(2L,1U){B(c.C.9m)c.98();17 B(c.4W)m c;c.4W=1e;B(1U&&c.C.28=='4N')2L=2L+(2L.1l('?')?'&':'?')+1U,1U=1F;c.2y.dM(c.C.28,2L,c.C.9p);c.2y.6c=c.9g.Y(c);B((c.C.28=='4T')&&c.2y.dL)c.5i('dH','dI');$R(c.4B,c.C.4B);M(o F 1b c.4B)5f{c.2y.dJ(F,c.4B[F])}4X(e){};c.1i('93');c.2y.5y($5F(1U,1F));m c},98:k(){B(!c.4W)m c;c.4W=N;c.2y.aC();c.2y.6c=18.1m;c.7r();c.1i('7m');m c}});6h.3q(L 8b,L 2q,L 4i);o a9=6h.R({C:{1U:1F,7o:1F,1T:18.1m,72:N,7U:N},1j:k(2L,C){c.1I('4L',c.1T);c.2U(C);c.C.1U=c.C.1U||c.C.a7;B(!['4T','4N'].1l(c.C.28)){c.5p='5p='+c.C.28;c.C.28='4T'}c.1r();c.5i('X-dR-dX','7d');c.5i('dY','21/8n, 21/dZ, ab/5q, 21/5q, */*');c.2L=2L},1T:k(){B(c.C.7o)$(c.C.7o).1m().5Q(c.3w.21);B(c.C.72||c.C.7U)c.72();c.1i('1T',[c.3w.21,c.3w.5q],20)},9C:k(1U){1U=1U||c.C.1U;23($F(1U)){12'G':1U=$(1U).5l();1D;12'2C':1U=7c.5l(1U)}B(c.5p)1U=(1U)?[c.5p,1U].2h('&'):c.5p;m c.5y(c.2L,1U)},72:k(){B(c.C.7U||/(dT|dU)2W/.2t(c.9Z('9Q-F')))o 4d=c.3w.21;17{o 2W,4d=[],5n=/<2W[^>]*>([\\s\\S]*?)<\\/2W>/dS;6Y((2W=5n.dV(c.3w.21)))4d.1k(2W[1]);4d=4d.2h('\\n')}B(4d)(U.9N)?U.9N(4d):U.9H(4d,0)},9Z:k(1w){5f{m c.2y.dW(1w)}4X(e){};m 1F}});7c.5l=k(1Y){o 51=[];M(o K 1b 1Y)51.1k(6e(K)+'='+6e(1Y[K]));m 51.2h('&')};Q.R({5y:k(C){m L a9(c.6n('dQ'),$2c({a7:c.5l()},C,{28:'4T'})).9C()}});o 3I=L 3y({C:{6f:N,6i:N,49:N,56:N},2i:k(1s,J,C){C=$2c(c.C,C);J=6e(J);B(C.6f)J+='; 6f='+C.6f;B(C.6i)J+='; 6i='+C.6i;B(C.49){o 6x=L 97();6x.dK(6x.bf()+C.49*24*60*60*ax);J+='; e1='+6x.ef()}B(C.56)J+='; 56';P.4D=1s+'='+J;m $R(C,{'1s':1s,'J':J})},4N:k(1s){o J=P.4D.2T('(?:^|;)\\\\s*'+1s.aK()+'=([^;]*)');m J?e5(J[1]):N},2H:k(4D,C){B($F(4D)=='2C')c.2i(4D.1s,'',$2c(4D,{49:-1}));17 c.2i(4D,'',$2c(C,{49:-1}))}});o 3G={4u:k(O){23($F(O)){12'2E':m'\"'+O.3l(/([\"\\\\])/g,'\\\\$1')+'\"';12'1B':m'['+O.2K(3G.4u).2h(',')+']';12'2C':o 2E=[];M(o K 1b O)2E.1k(3G.4u(K)+':'+3G.4u(O[K]));m'{'+2E.2h(',')+'}'}m 6W(O)},5M:k(4q,56){m(($F(4q)!='2E')||(56&&!4q.2t(/^(\"(\\\\.|[^\"\\\\\\n\\r])*?\"|[,:{}\\[\\]0-9.\\-+e4-u \\n\\r\\t])+?$/)))?N:e6('('+4q+')')}};3G.e7=6h.R({1j:k(2L,C){c.2L=2L;c.1I('4L',c.1T);c.1r(C);c.5i('X-ea','e9')},5y:k(O){m c.1r(c.2L,'dG='+3G.4u(O))},1T:k(){c.1i('1T',3G.5M(c.3w.21,c.C.56))}});o bb=L 3y({8n:k(1Y,1K){1K=$2c({'5A':18.1m},1K);o 2W=L Q('2W',{'59':1Y}).6B({'4r':1K.5A,'dF':k(){B(c.5c=='8q')c.1i('4r')}});5j 1K.5A;m 2W.6j(1K).25(P.6s)},1x:k(1Y,1K){m L Q('4m',$2c({'95':'dc','db':'de','F':'21/1x','5h':1Y},1K)).25(P.6s)},58:k(1Y,1K){1K=$2c({'5A':18.1m,'df':18.1m,'di':18.1m},1K);o 58=L d3();58.59=1Y;o G=L Q('8t',{'59':1Y});['4r','aC','dz'].1o(k(F){o I=1K['5C'+F];5j 1K['5C'+F];G.1I(F,k(){c.3Z(F,1c.8r);I.1S(c)})});B(58.2z&&58.2N)G.1i('4r',G,1);m G.6j(1K)},6F:k(5e,C){C=$2c({1T:18.1m,b6:18.1m},C);B(!5e.1k)5e=[5e];o 6F=[];o 6m=0;5e.1o(k(1Y){o 8t=L bb.58(1Y,{'5A':k(){C.b6.1S(c,6m);6m++;B(6m==5e.V)C.1T()}});6F.1k(8t)});m L 29(6F)}});o 3H=L 18({V:0,1j:k(2C){c.O=2C||{};c.5u()},4N:k(1s){m(c.6L(1s))?c.O[1s]:1F},6L:k(1s){m(1s 1b c.O)},2i:k(1s,J){B(!c.6L(1s))c.V++;c.O[1s]=J;m c},5u:k(){c.V=0;M(o p 1b c.O)c.V++;m c},2H:k(1s){B(!c.6L(1s))m c;5j c.O[1s];c.V--;m c},1o:k(W,Y){$1o(c.O,W,Y)},R:k(O){$R(c.O,O);m c.5u()},2c:k(){c.O=$2c.3U(1F,[c.O].R(1c));m c.5u()},1m:k(){c.O={};c.V=0;m c},1P:k(){o 1P=[];M(o K 1b c.O)1P.1k(K);m 1P},1J:k(){o 1J=[];M(o K 1b c.O)1J.1k(c.O[K]);m 1J}});k $H(O){m L 3H(O)};3H.3I=3H.R({1j:k(1w,C){c.1w=1w;c.C=$R({'bj':1e},C||{});c.4r()},bd:k(){B(c.V==0){3I.2H(c.1w,c.C);m 1e}o 4q=3G.4u(c.O);B(4q.V>dv)m N;3I.2i(c.1w,4q,c.C);m 1e},4r:k(){c.O=3G.5M(3I.4N(c.1w),1e)||{};c.5u()}});3H.3I.2F={};['R','2i','2c','1m','2H'].1o(k(28){3H.3I.2F[28]=k(){3H.1L[28].3U(c,1c);B(c.C.bj)c.bd();m c}});3H.3I.3q(3H.3I.2F);o 2M=L 18({1j:k(2G,F){F=F||(2G.1k?'1v':'3C');o 1v,2n;23(F){12'1v':1v=2G;2n=1v.8d();1D;12'2n':1v=2G.9r();2n=2G;1D;5D:1v=2G.5H(1e);2n=1v.8d()}1v.2n=2n;1v.3C=1v.5I();m $R(1v,2M.1L)},4R:k(){o 5m=$A(1c);o 6Z=($F(5m[5m.V-1])=='4S')?5m.dp():50;o 1v=c.8m();5m.1o(k(2G){2G=L 2M(2G);M(o i=0;i<3;i++)1v[i]=1d.2r((1v[i]/ 3b * (3b - 6Z)) + (2G[i] /3b*6Z))});m L 2M(1v,'1v')},du:k(){m L 2M(c.2K(k(J){m 53-J}))},dt:k(J){m L 2M([J,c.2n[1],c.2n[2]],'2n')},ds:k(6X){m L 2M([c.2n[0],6X,c.2n[2]],'2n')},em:k(6X){m L 2M([c.2n[0],c.2n[1],6X],'2n')}});k $eq(r,g,b){m L 2M([r,g,b],'1v')};k $f6(h,s,b){m L 2M([h,s,b],'2n')};2I.R({8d:k(){o 5t=c[0],5v=c[1],73=c[2];o 2Z,6l,8g;o 1z=1d.1z(5t,5v,73),3p=1d.3p(5t,5v,73);o 4l=1z-3p;8g=1z/53;6l=(1z!=0)?4l/1z:0;B(6l==0){2Z=0}17{o 8c=(1z-5t)/4l;o 8R=(1z-5v)/4l;o br=(1z-73)/4l;B(5t==1z)2Z=br-8R;17 B(5v==1z)2Z=2+8c-br;17 2Z=4+8R-8c;2Z/=6;B(2Z<0)2Z++}m[1d.2r(2Z*9y),1d.2r(6l*3b),1d.2r(8g*3b)]},9r:k(){o br=1d.2r(c[2]/3b*53);B(c[1]==0){m[br,br,br]}17{o 2Z=c[0]%9y;o f=2Z%60;o p=1d.2r((c[2]*(3b-c[1]))/f4*53);o q=1d.2r((c[2]*(9s-c[1]*f))/9u*53);o t=1d.2r((c[2]*(9s-c[1]*(60-f)))/9u*53);23(1d.an(2Z/60)){12 0:m[br,t,p];12 1:m[q,br,p];12 2:m[p,br,t];12 3:m[p,q,br];12 4:m[t,p,br];12 5:m[br,p,q]}}m N}});o 9B=L 18({C:{5W:20,8w:1,79:k(x,y){c.G.3x(x,y)}},1j:k(G,C){c.2U(C);c.G=$(G);c.8j=([U,P].1l(G))?$(P.4H):c.G},1h:k(){c.8i=c.9a.3g(c);c.8j.2A('2V',c.8i)},1R:k(){c.8j.3j('2V',c.8i);c.1H=$4Z(c.1H)},9a:k(I){c.1M=(c.G==U)?I.9d:I.1M;B(!c.1H)c.1H=c.2J.4f(50,c)},2J:k(){o el=c.G.6N();o 1p=c.G.3o();o 4h={'x':0,'y':0};M(o z 1b c.1M){B(c.1M[z]<(c.C.5W+1p[z])&&el.2J[z]!=0)4h[z]=(c.1M[z]-c.C.5W-1p[z])*c.C.8w;17 B(c.1M[z]+c.C.5W>(el.3n[z]+1p[z])&&el.2J[z]+el.3n[z]!=el.6M[z])4h[z]=(c.1M[z]-el.3n[z]+c.C.5W-1p[z])*c.C.8w}B(4h.y||4h.x)c.1i('79',[el.2J.x+4h.x,el.2J.y+4h.y])}});9B.3q(L 2q,L 4i);o 8G=L 18({C:{79:18.1m,1T:18.1m,8P:k(1p){c.48.1O(c.p,1p)},2d:'8K',6r:3b,1C:0},1j:k(el,48,C){c.G=$(el);c.48=$(48);c.2U(C);c.8O=-1;c.8N=-1;c.2l=-1;c.G.1I('64',c.aa.3g(c));o 7j,1C;23(c.C.2d){12'8K':c.z='x';c.p='1t';7j={'x':'1t','y':N};1C='42';1D;12'8J':c.z='y';c.p='1n';7j={'x':N,'y':'1n'};1C='3T'}c.1z=c.G[1C]-c.48[1C]+(c.C.1C*2);c.a1=c.48[1C]/2;c.a6=c.G['4N'+c.p.8I()].Y(c.G);c.48.1O('1u','7h').1O(c.p,-c.C.1C);o 8L={};8L[c.z]=[-c.C.1C,c.1z-c.C.1C];c.3L=L 3Y.2O(c.48,{1E:8L,3F:7j,6u:0,45:k(){c.75()}.Y(c),8M:k(){c.75()}.Y(c),1T:k(){c.75();c.2f()}.Y(c)});B(c.C.1j)c.C.1j.1S(c)},2i:k(2l){c.2l=2l.1E(0,c.C.6r);c.78();c.2f();c.1i('8P',c.a4(c.2l));m c},aa:k(I){o 1u=I.1M[c.z]-c.a6()-c.a1;1u=1u.1E(-c.C.1C,c.1z-c.C.1C);c.2l=c.8H(1u);c.78();c.2f();c.1i('8P',1u)},75:k(){c.2l=c.8H(c.3L.J.1a[c.z]);c.78()},78:k(){B(c.8O!=c.2l){c.8O=c.2l;c.1i('79',c.2l)}},2f:k(){B(c.8N!==c.2l){c.8N=c.2l;c.1i('1T',c.2l+'')}},8H:k(1u){m 1d.2r((1u+c.C.1C)/c.1z*c.C.6r)},a4:k(2l){m c.1z*2l/c.C.6r}});8G.3q(L 2q);8G.3q(L 4i);o ev=1g.ac.R({1j:k(C){c.1r(U,C);c.68=(c.C.68)?$$(c.C.68):$$(P.68);o 5b=U.5b.5h.2T(/^[^#]*/)[0]+'#';c.68.1o(k(4m){B(4m.5h.3S(5b)!=0)m;o 3E=4m.5h.6p(5b.V);B(3E&&$(3E))c.ag(4m,3E)},c);B(!U.65)c.1I('1T',k(){U.5b.eU=c.3E})},ag:k(4m,3E){4m.1I('8p',k(I){c.3E=3E;c.8z(3E);I.1R()}.3g(c))}});o 9S=L 18({C:{4I:N,45:18.1m,1T:18.1m,2Q:1e,6u:3,9I:k(G,2Q){2Q.1O('22',0.7);G.1O('22',0.7)},9T:k(G,2Q){G.1O('22',1);2Q.2H();c.44.2H()}},1j:k(4U,C){c.2U(C);c.4U=$(4U);c.T=c.4U.8F();c.4I=(c.C.4I)?$$(c.C.4I):c.T;c.1G={'1h':[],'62':c.62.3g(c)};M(o i=0,l=c.4I.V;i<l;i++){c.1G.1h[i]=c.1h.3g(c,c.T[i])}c.6K();B(c.C.1j)c.C.1j.1S(c);c.1G.61=c.61.3g(c);c.1G.2f=c.2f.Y(c)},6K:k(){c.4I.1o(k(3K,i){3K.1I('64',c.1G.1h[i])},c)},9K:k(){c.4I.1o(k(3K,i){3K.3Z('64',c.1G.1h[i])},c)},1h:k(I,el){c.3R=el;c.8y=c.4U.4A();B(c.C.2Q){o 1u=el.3o();c.1C=I.1M.y-1u.y;c.44=L Q('4K').25(P.4H);c.2Q=el.9M().25(c.44).4z({'1u':'3X','1t':1u.x,'1n':I.1M.y-c.1C});P.2A('2V',c.1G.62);c.1i('9I',[el,c.2Q])}P.2A('2V',c.1G.61);P.2A('6S',c.1G.2f);c.1i('45',el);I.1R()},62:k(I){o J=I.1M.y-c.1C;J=J.1E(c.8y.1n,c.8y.3O-c.2Q.3T);c.2Q.1O('1n',J);I.1R()},61:k(I){c.3R.3R=1e;c.2o=c.2o||I.1M.y;c.1a=I.1M.y;o 5Z=((c.2o-c.1a)<=0)?'8C':'8B';o 6v=c.3R.9F();o 3v=c.3R.8x();B(6v&&5Z=='8B'){o 9O=6v.4A();B(I.1M.y<9O.3O)c.3R.8o(6v)}B(3v&&5Z=='8C'){o 9V=3v.4A();B(I.1M.y>9V.1n)c.3R.6O(3v)}c.2o=I.1M.y},eF:k(){o 8E=[];c.4U.8F().1o(k(el,i){8E[i]=c.T.3S(el)},c);m 8E},2f:k(){c.2o=1F;P.3j('2V',c.1G.61);P.3j('6S',c.1G.2f);B(c.C.2Q){P.3j('2V',c.1G.62);c.1i('9T',[c.3R,c.2Q])}c.1i('1T',c.3R)}});9S.3q(L 2q,L 4i);o ar=L 18({C:{az:k(4c){4c.1O('4G','8D')},ay:k(4c){4c.1O('4G','4y')},8v:30,9j:3b,9k:3b,1A:'bJ',5P:{'x':16,'y':16},5S:N},1j:k(T,C){c.2U(C);c.4g=L Q('4K',{'4O':c.C.1A+'-4c','8A':{'1u':'3X','1n':'0','1t':'0','4G':'4y'}}).25(P.4H);c.3d=L Q('4K').25(c.4g);$$(T).1o(c.ae,c);B(c.C.1j)c.C.1j.1S(c)},ae:k(el){el.$1X.47=(el.5h&&el.57()=='a')?el.5h.3l('96://',''):(el.95||N);B(el.5g){o 6b=el.5g.66('::');B(6b.V>1){el.$1X.47=6b[0].5Y();el.$1X.5T=6b[1].5Y()}17{el.$1X.5T=el.5g}el.94('5g')}17{el.$1X.5T=N}B(el.$1X.47&&el.$1X.47.V>c.C.8v)el.$1X.47=el.$1X.47.6p(0,c.C.8v-1)+\"&cu;\";el.1I('8k',k(I){c.1h(el);B(!c.C.5S)c.8e(I);17 c.1u(el)}.Y(c));B(!c.C.5S)el.1I('2V',c.8e.3g(c));o 2f=c.2f.Y(c);el.1I('8h',2f);el.1I('44',2f)},1h:k(el){c.3d.1m();B(el.$1X.47){c.5g=L Q('9f').25(L Q('4K',{'4O':c.C.1A+'-5g'}).25(c.3d)).5Q(el.$1X.47)}B(el.$1X.5T){c.21=L Q('9f').25(L Q('4K',{'4O':c.C.1A+'-21'}).25(c.3d)).5Q(el.$1X.5T)}$4Z(c.1H);c.1H=c.41.2k(c.C.9j,c)},2f:k(I){$4Z(c.1H);c.1H=c.5k.2k(c.C.9k,c)},1u:k(G){o 1p=G.3o();c.4g.4z({'1t':1p.x+c.C.5P.x,'1n':1p.y+c.C.5P.y})},8e:k(I){o aE={'x':U.8f(),'y':U.8l()};o 2J={'x':U.8s(),'y':U.8u()};o 4c={'x':c.4g.42,'y':c.4g.3T};o 1V={'x':'1t','y':'1n'};M(o z 1b 1V){o 1p=I.1M[z]+c.C.5P[z];B((1p+4c[z]-2J[z])>aE[z])1p=I.1M[z]-c.C.5P[z]-4c[z];c.4g.1O(1V[z],1p)}},41:k(){B(c.C.aG)c.1H=c.5k.2k(c.C.aG,c);c.1i('az',[c.4g])},5k:k(){c.1i('ay',[c.4g])}});ar.3q(L 2q,L 4i);o cd=L 18({1j:k(){c.5E=$A(1c);c.19={};c.4P={}},1I:k(F,W){c.4P[F]=c.4P[F]||{};c.19[F]=c.19[F]||[];B(c.19[F].1l(W))m N;17 c.19[F].1k(W);c.5E.1o(k(5x,i){5x.1I(F,c.3V.Y(c,[F,5x,i]))},c);m c},3V:k(F,5x,i){c.4P[F][i]=1e;o 4v=c.5E.4v(k(2a,j){m c.4P[F][j]||N},c);B(!4v)m;c.5E.1o(k(2a,j){c.4P[F][j]=N},c);c.19[F].1o(k(I){I.1S(c,c.5E,5x)},c)}});o 7n=1g.29.R({C:{8Q:18.1m,aN:18.1m,3D:0,41:N,2N:1e,2z:N,22:1e,6g:N,6A:N,3Q:N,74:N},1j:k(){o C,2v,T,2g;$1o(1c,k(4n,i){23($F(4n)){12'2C':C=4n;1D;12'G':2g=$(4n);1D;5D:o 2s=$$(4n);B(!2v)2v=2s;17 T=2s}});c.2v=2v||[];c.T=T||[];c.2g=$(2g);c.2U(C);c.2o=-1;B(c.C.74)c.C.3Q=1e;B($2B(c.C.41)){c.C.3D=N;c.2o=c.C.41}B(c.C.1h){c.C.3D=N;c.C.41=N}c.3t={};B(c.C.22)c.3t.22='b2';B(c.C.2z)c.3t.2z=c.C.6A?'b0':'42';B(c.C.2N)c.3t.2N=c.C.6g?'aU':'5N';M(o i=0,l=c.2v.V;i<l;i++)c.aV(c.2v[i],c.T[i]);c.T.1o(k(el,i){B(c.C.41===i)c.1i('8Q',[c.2v[i],el]);17 M(o 2x 1b c.3t)el.1O(2x,0)},c);c.1r(c.T);B($2B(c.C.3D))c.3D(c.C.3D)},aV:k(3k,G,1p){3k=$(3k);G=$(G);o 2t=c.2v.1l(3k);o 3N=c.2v.V;c.2v.5w(3k);c.T.5w(G);B(3N&&(!2t||1p)){1p=$5F(1p,3N-1);3k.8o(c.2v[1p]);G.6O(3k)}17 B(c.2g&&!2t){3k.25(c.2g);G.25(c.2g)}o aZ=c.2v.3S(3k);3k.1I('8p',c.3D.Y(c,aZ));B(c.C.2N)G.4z({'4F-1n':0,'2Y-1n':'6I','4F-3O':0,'2Y-3O':'6I'});B(c.C.2z)G.4z({'4F-1t':0,'2Y-1t':'6I','4F-4k':0,'2Y-4k':'6I'});G.b2=1;B(c.C.6A)G.b0=c.C.6A;B(c.C.6g)G.aU=c.C.6g;G.1O('aT','4y');B(!2t)M(o 2x 1b c.3t)G.1O(2x,0);m c},3D:k(26){26=($F(26)=='G')?c.T.3S(26):26;B((c.1H&&c.C.3Q)||(26===c.2o&&!c.C.74))m c;c.2o=26;o O={};c.T.1o(k(el,i){O[i]={};B((i!=26)||(c.C.74&&(el.3T>0))){c.1i('aN',[c.2v[i],el]);M(o 2x 1b c.3t)O[i][2x]=0}17{c.1i('8Q',[c.2v[i],el]);M(o 2x 1b c.3t)O[i][2x]=el[c.3t[2x]]}},c);m c.1h(O)},cV:k(26){m c.3D(26)}});1g.7n=7n;",62,940,"||||||||||||this||||||||function||return||var|||||||||||||if|options|||type|element||event|value|property|new|for|false|obj|document|Element|extend||elements|window|length|fn||bind||||case||to|from||else|Class|events|now|in|arguments|Math|true|param|Fx|start|fireEvent|initialize|push|contains|empty|top|each|pos|args|parent|key|left|position|rgb|name|css|items|max|className|array|offset|break|limit|null|bound|timer|addEvent|values|properties|prototype|page|result|setStyle|keys|selector|stop|call|onComplete|data|prop|props|tmp|source|style||text|opacity|switch||inject|index||method|Elements|current|transition|merge|mode|parsed|end|container|join|set|getStyle|delay|step|overflown|hsb|previous|relatedTarget|Events|round|temp|test|unit|togglers|custom|fx|transport|width|addListener|chk|object|nocash|string|Methods|color|remove|Array|scroll|map|url|Color|height|Base|parse|ghost|Event|params|match|setOptions|mousemove|script|documentElement|border|hue||ie||Garbage|margin|getElementsByTagName|context||||create|100|toInt|wrapper|overed|filter|bindWithEvent|item|mouse|removeListener|toggler|replace|Transitions|size|getPosition|min|implement|parentNode|CSS|effects|target|next|response|scrollTo|Abstract|iCss|time|option|hex|display|anchor|modifiers|Json|Hash|Cookie|pow|handle|drag|shared|len|bottom|returns|wait|active|indexOf|offsetHeight|apply|check|iterable|absolute|Drag|removeEvent||show|offsetWidth|xpath|trash|onStart||myTitle|knob|duration|iTo|getValue|tip|scripts|Styles|periodical|toolTip|change|Options|chains|right|delta|link|argument|select|increase|str|load|setNow|compute|toString|every|id|val|hidden|setStyles|getCoordinates|headers|status|cookie|grid|padding|visibility|body|handles|cont|div|onSuccess|webkit|get|class|checker|native|mix|number|post|list|collect|running|catch|htmlElement|clear||queryString|bit|255|results|getNow|secure|getTag|image|src|px|location|readyState|fromTo|sources|try|title|href|setHeader|delete|hide|toQueryString|colors|regexp|iFrom|_method|xml|mousewheel|iNow|red|setLength|green|include|instance|send|layout|onload|toLowerCase|on|default|instances|pick|isSuccess|hexToRgb|rgbToHex|encoding|out|precision|evaluate|scrollHeight|HTMLElement|offsets|setHTML|unique|fixed|myText|walk|domReady|area|parseInt|trim|direction||move|moveGhost|klass|mousedown|webkit419|split|scrollLeft|links|parseFloat|scrollTop|dual|onreadystatechange|fix|encodeURIComponent|domain|fixedHeight|XHR|path|setProperties|tagName|saturation|counter|getProperty|regex|substr|droppables|steps|head|evType|snap|prev|setMany|date|splice|Properties|fixedWidth|addEvents|continue|Multi|onFailure|images|removeEvents|scrollWidth|none|attempt|attach|hasKey|scrollSize|getSize|injectAfter|generic|code|mp|mouseup|included|brother|stopPropagation|String|percent|while|alpha|loaded|currentStyle|evalScripts|blue|alwaysHide|draggedKnob|preventDefault|getElementsBySelector|checkStep|onChange|Listeners|setProperty|Object|XMLHttpRequest|getElements|getElementById|typeof|relative|fKey|mod|proto|forEach|onCancel|Accordion|update|pageX|pageY|setTransport|nodeType|callChain|realType|addEventListener|clean|operator|concat|node|iProps|getItems|getParam|getMany|merged|hasClass|insertBefore|Dom|add|ie_ready|domready|qs|disabled|camelCase|multiple|checked|found|transitions|Function|charAt|evalResponse|RegExp|gecko|random|getLast|hasChild|pairs|appendChild|Style|easeType|first|PI|Transition|xhtml|compat|newArray|defined|Chain|rr|rgbToHsb|locate|getWidth|brightness|mouseleave|coord|mousemover|mouseenter|getHeight|copy|javascript|injectBefore|click|complete|callee|getScrollLeft|img|getScrollTop|maxTitleChars|velocity|getNext|coordinates|toElement|styles|up|down|visible|serial|getChildren|Slider|toStep|capitalize|vertical|horizontal|lim|onDrag|previousEnd|previousChange|onTick|onActive|gr|Top|Right|Bottom|Left|0px|Width|opera|nodeValue|clientWidth|fixStyle|borderShort|onRequest|removeAttribute|rel|http|Date|cancel|input|getCoords|getFormElements|textarea|client|clientHeight|span|onStateChange|clientX|firstChild|showDelay|hideDelay|iParsed|autoCancel|defaultView|hyphenate|async|Single|hsbToRgb|6000|pageYOffset|600000|pageXOffset|getScrollWidth|getScrollHeight|360|fps|childNodes|Scroller|request|mouseout|mouseover|getPrevious|cloneEvents|setTimeout|onDragStart|extended|detach|DOMMouseScroll|clone|execScript|prevPos|which|Content|clientY|Sortables|onDragComplete|fixRelatedTarget|nextPos|shift|wheelDelta|relatedTargetGecko|getHeader|tag|half|sel|normal|toPosition|getElement|getPos|postBody|picked|Ajax|clickedElement|application|Scroll|removeEventListener|build|unload|useLink|filterById|filterByClass|prefix|resolver|filterByAttribute|zoom|floor|Number||createElement|Tips|cos|interval|onBeforeStart|onSnap|distance|1000|onHide|onShow|before|after|abort|sin|win|elementsProperty|timeout|where|slice|toUpperCase|escapeRegExp|Merge|Move|onBackground|ActiveXObject|pp|www|constructor|urlEncoded|overflow|fullHeight|addSection|getLeft|getTop|ie6|idx|fullWidth|checkAgainst|fullOpacity|contents|toFloat|removeClass|onProgress|cssText|adopt|undefined|getStyles|Asset|slideIn|save|slideOut|getTime|full|addClass|setOpacity|autoSave|textnode|navigator|associate|styleFloat|some|getRandom|getFirst||srcElement|beforeunload|whitespace|detachEvent|attachEvent|lastChild|float|all|DOMElement|CollectGarbage|clearChain|chain|111|MooTools|version|zIndex|keydown|tool|execCommand|getComputedStyle|taintEnabled|getPropertyValue|menu|fromCharCode|keyCode|detail|control|ctrlKey|shiftKey|readOnly|cssFloat|alt|altKey|Sibling|120|wheel|metaKey|meta|nodeName|transparent|styleSheet|createTextNode|removeProperty|getProperties|injectInside|getBoxObjectFor|BackgroundImageCache|Group|boolean|htmlFor|webkit420|toggleClass|clearTimeout|borderColor|replaceWith|ie7|replaceChild|clearInterval|appendText|cloneNode|setAttribute|borderWidth|borderStyle|injectTop|hellip|removeChild|colspan|embed|tabindex|tabIndex|accessKey|accesskey|rowSpan|getParent|err|maxlength|maxLength|innerHTML|setInterval|iframe|getAttribute|pass|Document|times|attributes|rowspan|colSpan|hasLayout|khtml|collection|bindAsEventListener|showThisHideOpen|Native|Window|readonly|starts|618|Bounce|Elastic|Image|Back|Sine|Expo|Circ|acos|Quad|Cubic|media|stylesheet|sqrt|screen|onabort|Quart|Quint|onerror|Pow|ease|toLeft|toRight|Slide||pop|toBottom|toTop|setSaturation|setHue|invert|4096|rightClick|Out|InOut|error|In|linear|easeIn|easeOut|easeInOut|readystatechange|json|Connection|close|setRequestHeader|setTime|overrideMimeType|open|300|responseText|responseXML|action|Requested|gi|ecma|java|exec|getResponseHeader|With|Accept|html|200|expires|leave|over|Eaeflnr|decodeURIComponent|eval|Remote|makeResizable|JSON|Request|drop|emptydrop|form|urlencoded|toGMTString|charset|XMLHTTP|makeDraggable|utf|Microsoft||setBrightness|toggle|org|1999|RGB|w3|snapshotItem|UNORDERED_NODE_SNAPSHOT_TYPE|snapshotLength|SmoothScroll|getElementsByClassName|offsetLeft|offsetTop|password|radio|selected|checkbox|XPathResult|substring|serialize|enter|returnValue|cancelBubble|button|fromElement|esc|space|namespaceURI|with|ES|filterByTag|backspace|tab|offsetParent|hash|DOMContentLoaded|clearTimer|defer|500|innerHeight|innerWidth|effect|onDomReady|write|10000|protocol|HSB|https|Shared|void".split("|"),0,{}));
var dp={sh:{Toolbar:{},Utils:{},RegexLib:{},Brushes:{},Strings:{},Version:"1.4.1"}};dp.sh.Strings={AboutDialog:'<html><head><title>About...</title></head><body class="dp-about"><table cellspacing="0"><tr><td class="copy"><p class="title">dp.SyntaxHighlighter</div><div class="para">Version: {V}</p><p><a href="http://www.dreamprojections.com/syntaxhighlighter/?ref=about" target="_blank">http://www.dreamprojections.com/SyntaxHighlighter</a></p>&copy;2004-2005 Alex Gorbatchev. All right reserved.</td></tr><tr><td class="footer"><input type="button" class="close" value="OK" onClick="window.close()"/></td></tr></table></body></html>'};dp.SyntaxHighlighter=dp.sh;dp.sh.Toolbar.Commands={ExpandSource:{label:"+ expand source",check:function(A){return A.collapse},func:function(B,A){B.parentNode.removeChild(B);A.div.className=A.div.className.replace("collapsed","")}},ViewSource:{label:"view plain",func:function(D,C){var B=C.originalCode.replace(/</g,"&lt;");var A=window.open("","_blank","width=750, height=400, location=0, resizable=1, menubar=0, scrollbars=1");A.document.write('<textarea style="width:99%;height:99%">'+B+"</textarea>");A.document.close()}},CopyToClipboard:{label:"copy to clipboard",check:function(){return window.clipboardData!=null},func:function(B,A){window.clipboardData.setData("text",A.originalCode);alert("The code is in your clipboard now")}},PrintSource:{label:"print",func:function(D,C){var B=document.createElement("IFRAME");var A=null;B.style.cssText="position:absolute;width:0px;height:0px;left:-500px;top:-500px;";document.body.appendChild(B);A=B.contentWindow.document;dp.sh.Utils.CopyStyles(A,window.document);A.write('<div class="'+C.div.className.replace("collapsed","")+' printing">'+C.div.innerHTML+"</div>");A.close();B.contentWindow.focus();B.contentWindow.print();alert("Printing...");document.body.removeChild(B)}},About:{label:"?",func:function(A){var C=window.open("","_blank","dialog,width=300,height=150,scrollbars=0");var B=C.document;dp.sh.Utils.CopyStyles(B,window.document);B.write(dp.sh.Strings.AboutDialog.replace("{V}",dp.sh.Version));B.close();C.focus()}}};dp.sh.Toolbar.Create=function(C){var D=document.createElement("DIV");D.className="tools";for(var B in dp.sh.Toolbar.Commands){var A=dp.sh.Toolbar.Commands[B];if(A.check!=null&&!A.check(C)){continue}D.innerHTML+='<a href="#" onclick="dp.sh.Toolbar.Command(\''+B+"',this);return false;\">"+A.label+"</a>"}return D};dp.sh.Toolbar.Command=function(B,A){var C=A;while(C!=null&&C.className.indexOf("dp-highlighter")==-1){C=C.parentNode}if(C!=null){dp.sh.Toolbar.Commands[B].func(A,C.highlighter)}};dp.sh.Utils.CopyStyles=function(B,A){var D=A.getElementsByTagName("link");for(var C=0;C<D.length;C++){if(D[C].rel.toLowerCase()=="stylesheet"){B.write('<link type="text/css" rel="stylesheet" href="'+D[C].href+'"></link>')}}};dp.sh.RegexLib={MultiLineCComments:new RegExp("/\\*[\\s\\S]*?\\*/","gm"),SingleLineCComments:new RegExp("//.*$","gm"),SingleLinePerlComments:new RegExp("#.*$","gm"),DoubleQuotedString:new RegExp('"(?:\\.|(\\\\\\")|[^\\""])*"',"g"),SingleQuotedString:new RegExp("'(?:\\.|(\\\\\\')|[^\\''])*'","g")};dp.sh.Match=function(B,A,C){this.value=B;this.index=A;this.length=B.length;this.css=C};dp.sh.Highlighter=function(){this.noGutter=false;this.addControls=true;this.collapse=false;this.tabsToSpaces=true;this.wrapColumn=80;this.showColumns=true};dp.sh.Highlighter.SortCallback=function(B,A){if(B.index<A.index){return -1}else{if(B.index>A.index){return 1}else{if(B.length<A.length){return -1}else{if(B.length>A.length){return 1}}}}return 0};dp.sh.Highlighter.prototype.CreateElement=function(A){var B=document.createElement(A);B.highlighter=this;return B};dp.sh.Highlighter.prototype.GetMatches=function(D,A){var C=0;var B=null;while((B=D.exec(this.code))!=null){this.matches[this.matches.length]=new dp.sh.Match(B[0],B.index,A)}};dp.sh.Highlighter.prototype.AddBit=function(F,C){if(F==null||F.length==0){return }var A=this.CreateElement("SPAN");F=F.replace(/&/g,"&amp;");F=F.replace(/ /g,"&nbsp;");F=F.replace(/</g,"&lt;");F=F.replace(/\n/gm,"&nbsp;<br>");if(C!=null){var E=new RegExp("<br>","gi");if(E.test(F)){var D=F.split("&nbsp;<br>");F="";for(var B=0;B<D.length;B++){A=this.CreateElement("SPAN");A.className=C;A.innerHTML=D[B];this.div.appendChild(A);if(B+1<D.length){this.div.appendChild(this.CreateElement("BR"))}}}else{A.className=C;A.innerHTML=F;this.div.appendChild(A)}}else{A.innerHTML=F;this.div.appendChild(A)}};dp.sh.Highlighter.prototype.IsInside=function(B){if(B==null||B.length==0){return false}for(var A=0;A<this.matches.length;A++){var C=this.matches[A];if(C==null){continue}if((B.index>C.index)&&(B.index<C.index+C.length)){return true}}return false};dp.sh.Highlighter.prototype.ProcessRegexList=function(){for(var A=0;A<this.regexList.length;A++){this.GetMatches(this.regexList[A].regex,this.regexList[A].css)}};dp.sh.Highlighter.prototype.ProcessSmartTabs=function(C){var B=C.split("\n");var A="";var H=4;var E="\t";function G(M,O,K){var J=M.substr(0,O);var N=M.substr(O+1,M.length);var L="";for(var I=0;I<K;I++){L+=" "}return J+L+N}function F(K,J){if(K.indexOf(E)==-1){return K}var L=0;while((L=K.indexOf(E))!=-1){var I=J-L%J;K=G(K,L,I)}return K}for(var D=0;D<B.length;D++){A+=F(B[D],H)+"\n"}return A};dp.sh.Highlighter.prototype.SwitchToList=function(){var F=this.div.innerHTML.replace(/<(br)\/?>/gi,"\n");var E=F.split("\n");if(this.addControls==true){this.bar.appendChild(dp.sh.Toolbar.Create(this))}if(this.showColumns){var A=this.CreateElement("div");var C=this.CreateElement("div");var B=10;var G=1;while(G<=150){if(G%B==0){A.innerHTML+=G;G+=(G+"").length}else{A.innerHTML+="&middot;";G++}}C.className="columns";C.appendChild(A);this.bar.appendChild(C)}for(var G=0,I=this.firstLine;G<E.length-1;G++,I++){var H=this.CreateElement("LI");var D=this.CreateElement("SPAN");H.className=(G%2==0)?"alt":"";D.innerHTML=E[G]+"&nbsp;";H.appendChild(D);this.ol.appendChild(H)}this.div.innerHTML=""};dp.sh.Highlighter.prototype.Highlight=function(H){function E(I){return I.replace(/^\s*(.*?)[\s\n]*$/g,"$1")}function F(I){return I.replace(/\n*$/,"").replace(/^\n*/,"")}function B(O){var M=O.split("\n");var N=new Array();var L=new RegExp("^\\s*","g");var K=1000;for(var J=0;J<M.length&&K>0;J++){if(E(M[J]).length==0){continue}var I=L.exec(M[J]);if(I!=null&&I.length>0){K=Math.min(I[0].length,K)}}if(K>0){for(var J=0;J<M.length;J++){M[J]=M[J].substr(K)}}return M.join("\n")}function D(J,I,K){return J.substr(I,K-I)}var G=0;this.originalCode=H;this.code=F(B(H));this.div=this.CreateElement("DIV");this.bar=this.CreateElement("DIV");this.ol=this.CreateElement("OL");this.matches=new Array();this.div.className="dp-highlighter";this.div.highlighter=this;this.bar.className="bar";this.ol.start=this.firstLine;if(this.CssClass!=null){this.ol.className=this.CssClass}if(this.collapse){this.div.className+=" collapsed"}if(this.noGutter){this.div.className+=" nogutter"}if(this.tabsToSpaces==true){this.code=this.ProcessSmartTabs(this.code)}this.ProcessRegexList();if(this.matches.length==0){this.AddBit(this.code,null);this.SwitchToList();this.div.appendChild(this.ol);return }this.matches=this.matches.sort(dp.sh.Highlighter.SortCallback);for(var C=0;C<this.matches.length;C++){if(this.IsInside(this.matches[C])){this.matches[C]=null}}for(var C=0;C<this.matches.length;C++){var A=this.matches[C];if(A==null||A.length==0){continue}this.AddBit(D(this.code,G,A.index),null);this.AddBit(A.value,A.css);G=A.index+A.length}this.AddBit(this.code.substr(G),null);this.SwitchToList();this.div.appendChild(this.bar);this.div.appendChild(this.ol)};dp.sh.Highlighter.prototype.GetKeywords=function(A){return"\\b"+A.replace(/ /g,"\\b|\\b")+"\\b"};dp.sh.HighlightAll=function(J,I,S,R,Q,O){function K(){var T=arguments;for(var U=0;U<T.length;U++){if(T[U]==null){continue}if(typeof (T[U])=="string"&&T[U]!=""){return T[U]+""}if(typeof (T[U])=="object"&&T[U].value!=""){return T[U].value+""}}return null}function P(U,T){for(var V=0;V<T.length;V++){if(T[V]==U){return true}}return false
}function L(T,Y,W){var V=new RegExp("^"+T+"\\[(\\w+)\\]$","gi");var U=null;for(var X=0;X<Y.length;X++){if((U=V.exec(Y[X]))!=null){return U[1]}}return W}var M=document.getElementsByName(J);var H=null;var G=new Object();var F="value";if(M==null){return }for(var E in dp.sh.Brushes){var D=dp.sh.Brushes[E].Aliases;if(D==null){continue}for(var N=0;N<D.length;N++){G[D[N]]=E}}for(var N=0;N<M.length;N++){var C=M[N];var B=K(C.attributes["class"],C.className,C.attributes.language,C.language);var A="";if(B==null){continue}B=B.split(":");A=B[0].toLowerCase();if(G[A]==null){continue}H=new dp.sh.Brushes[G[A]]();C.style.display="none";H.noGutter=(I==null)?P("nogutter",B):!I;H.addControls=(S==null)?!P("nocontrols",B):S;H.collapse=(R==null)?P("collapse",B):R;H.showColumns=(O==null)?P("showcolumns",B):O;H.firstLine=(Q==null)?parseInt(L("firstline",B,1)):Q;H.Highlight(C[F]);C.parentNode.insertBefore(H.div,C)}};
dp.sh.Brushes.CSS=function(){var B="ascent azimuth background-attachment background-color background-image background-position background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font height letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position quotes richness right size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress table-layout text-align text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index";var A="above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow";var C="[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif";this.regexList=[{regex:dp.sh.RegexLib.MultiLineCComments,css:"comment"},{regex:dp.sh.RegexLib.DoubleQuotedString,css:"string"},{regex:dp.sh.RegexLib.SingleQuotedString,css:"string"},{regex:new RegExp("\\#[a-zA-Z0-9]{3,6}","g"),css:"colors"},{regex:new RegExp("(\\d+)(px|pt|:)","g"),css:"string"},{regex:new RegExp(this.GetKeywords(B),"gm"),css:"keyword"},{regex:new RegExp(this.GetKeywords(A),"g"),css:"string"},{regex:new RegExp(this.GetKeywords(C),"g"),css:"string"}];this.CssClass="dp-css"};dp.sh.Brushes.CSS.prototype=new dp.sh.Highlighter();dp.sh.Brushes.CSS.Aliases=["css"];
dp.sh.Brushes.JScript=function(){var A="abstract boolean break byte case catch char class const continue debugger default delete do double else enum export extends false final finally float for function goto if implements import in instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var void volatile while with";this.regexList=[{regex:dp.sh.RegexLib.SingleLineCComments,css:"comment"},{regex:dp.sh.RegexLib.MultiLineCComments,css:"comment"},{regex:dp.sh.RegexLib.DoubleQuotedString,css:"string"},{regex:dp.sh.RegexLib.SingleQuotedString,css:"string"},{regex:new RegExp("^\\s*#.*","gm"),css:"preprocessor"},{regex:new RegExp(this.GetKeywords(A),"gm"),css:"keyword"}];this.CssClass="dp-c"};dp.sh.Brushes.JScript.prototype=new dp.sh.Highlighter();dp.sh.Brushes.JScript.Aliases=["js","jscript","javascript"];
dp.sh.Brushes.Xml=function(){this.CssClass="dp-xml"};dp.sh.Brushes.Xml.prototype=new dp.sh.Highlighter();dp.sh.Brushes.Xml.Aliases=["xml","xhtml","xslt","html","xhtml"];dp.sh.Brushes.Xml.prototype.ProcessRegexList=function(){function C(F,E){F[F.length]=E}var B=0;var A=null;var D=null;this.GetMatches(new RegExp("<\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\]>","gm"),"cdata");this.GetMatches(new RegExp("<!--\\s*.*\\s*?-->","gm"),"comments");D=new RegExp("([:\\w-.]+)\\s*=\\s*(\".*?\"|'.*?'|\\w+)*","gm");while((A=D.exec(this.code))!=null){C(this.matches,new dp.sh.Match(A[1],A.index,"attribute"));if(A[2]!=undefined){C(this.matches,new dp.sh.Match(A[2],A.index+A[0].indexOf(A[2]),"attribute-value"))}}this.GetMatches(new RegExp("</*\\?*(?!\\!)|/*\\?*>","gm"),"tag");D=new RegExp("</*\\?*\\s*([:\\w-.]+)","gm");while((A=D.exec(this.code))!=null){C(this.matches,new dp.sh.Match(A[1],A.index+A[0].indexOf(A[1]),"tag-name"))}};
/* ************************************************************************************* *\
 * The MIT License
 * Copyright (c) 2007 Fabio Zendhi Nagao - http://zend.lojcomm.com.br
 * Adapted by Matthias von Deetzen
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this
 * software and associated documentation files (the "Software"), to deal in the Software
 * without restriction, including without limitation the rights to use, copy, modify,
 * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to the following
 * conditions:
 * 
 * The above copyright notice and this permission notice shall be included in all copies
 * or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 * 
\* ************************************************************************************* */

/*****
* 
* iCarousel Script
* 
* Description:	adaption for iCarousel script for COPS
* Author:		Matthias von Deetzen
* Copyright:	CeWe Color AG & Co OhG
* 
*****/

var iCarousel = new Class({
	options: {
		animation: {
			type: "fadeNscroll",// fadeNscroll, scroll, fade
			direction: "left",// if type = scroll, set: top || left
			amount: 1,// if type = scroll, set the amount to scroll
			transition: Fx.Transitions.Cubic.easeInOut,
			duration: 500,
			rotate: {
				type: "manual",// auto || manual
				interval: 5000,// if type = auto, set the interval (ms)
				onMouseOver: "stop",// if type = auto, set the onmouseover behavior: stop || proceed
				oneTime: true,// if type = auto, rotate only once
				onClickButton: "stop"//if type = auto, set the onclick behavior: stop auto scroll || proceed auto scroll
			}
		},

		item: {
			klass: "icarusel_item",
			size: 970
		},

		idPrevious: "previous",
		idNext: "next",
		idToggle: "toggle",

		onClickPrevious: function() {this.options.animation.rotate.type = "manual";},
		onClickNext: function() {this.options.animation.rotate.type = "manual";},
		onPrevious: Class.empty,
		onNext: Class.empty,
		onGoTo: Class.empty
	},

	initialize: function(container, options) {

		this.setOptions(options);
		this.container = $(container);
		this.aItems = $A($$('.'+ this.options.item.klass));
		this.aItemCount = this.aItems.length;
		this.isMouseOver = false;
		this.counter = 0;
		this.lastActive = 0;

		this.options.item.size = document.getElementsByClassName(this.options.item.klass)[0].offsetWidth;

		if(this.options.idPrevious != "undefined" && $(this.options.idPrevious)) {
			$(this.options.idPrevious).addEvent("click", function(event) {
				if (this.options.animation.rotate.onClickButton == "stop") {
					this.options.animation.rotate.type = "manual";
					this.timer = $clear(this.timer);
				}
				new Event(event).stop();
				$(this.options.idPrevious).blur();
				this._previous();
				this.fireEvent("onClickPrevious", this, 20);
			}.bind(this));// check if value is not "undefined" before start search the dom with $()
			$(this.options.idPrevious).addEvents({
				"mouseenter": function() {
					this.isMouseOver = true;
				}.bind(this),
				"mouseleave": function() {
					this.isMouseOver = false;
				}.bind(this)
			});// stop the animation on mouse over button
		}
		if(this.options.idNext != "undefined" && $(this.options.idNext)) {
			$(this.options.idNext).addEvent("click", function(event) {
				if (this.options.animation.rotate.onClickButton == "stop") {
					this.options.animation.rotate.type = "manual";
					this.timer = $clear(this.timer);
				}
				new Event(event).stop();
				$(this.options.idNext).blur();
				this._next();
				this.fireEvent("onClickNext", this, 20);
			}.bind(this));
			$(this.options.idNext).addEvents({
				"mouseenter": function() {
					this.isMouseOver = true;
				}.bind(this),
				"mouseleave": function() {
					this.isMouseOver = false;
				}.bind(this)
			});// stop the animation on mouse over button
		}
		if(this.options.idToggle != "undefined" && $(this.options.idToggle))
			$(this.options.idToggle).addEvent("click", function(event) {new Event(event).stop(); this._toggle()}.bind(this));

		var oAn = this.options.animation; // short hand
		if (RedDotMode)
		{
		    this.options.animation.type = 'fade';
		    duration = 1;
		    oAn.duration = 1; 
		}
		switch(this.options.animation.type.toLowerCase()) {
			case "fade":
				this.aItems.each(function(item) {
					item.fx = item.effect("opacity", {duration: oAn.duration, transition: oAn.transition});
					item.setStyle("opacity", 0);
					item.addEvents({
						"mouseenter": function() {
							this.isMouseOver = true;
							if(this.options.animation.rotate.type == "auto") this.timer = $clear(this.timer);
						}.bind(this),
						"mouseleave": function() {
							this.isMouseOver = false;
							if(this.options.animation.rotate.type == "auto") this.timer = this._autoRotate.periodical(this.options.animation.rotate.interval, this);
						}.bind(this)
					});
				}.bind(this));
				this.height = this.container.getStyle("height").toInt();
				this.atScreen = 0;
				this._animate(this.atScreen);
				break;

			default:
				(2).times(function() {
					this.aItems.each(function(item) {
						item.clone().injectInside(this.container);
					}.bind(this));
				}.bind(this));
				this.aItems = $A($$('.'+ this.options.item.klass));
				this.aItems.each(function(item) {
					item.addEvents({
						"mouseenter": function() {
							this.isMouseOver = true;
							if(this.options.animation.rotate.type == "auto") this.timer = $clear(this.timer);
						}.bind(this),
						"mouseleave": function() {
							this.isMouseOver = false;
							if(this.options.animation.rotate.type == "auto") this.timer = this._autoRotate.periodical(this.options.animation.rotate.interval, this);
						}.bind(this)
					});
				}.bind(this));
				this.fx = this.container.effects({duration: oAn.duration, transition: oAn.transition, wait: false});
				this.atScreen = this.aItems.length / 3;
				this.container.setStyle(oAn.direction, - this.atScreen * this.options.item.size);
				break;
		}

		if(this.options.animation.rotate.type == "auto") {
			if (this.options.animation.rotate.onlyOnce) {
				this._autoRotate(this.options.animation.rotate.interval, this);
				this.options.animation.rotate.type = "manual";
			}
			else {
				this.timer = this._autoRotate.periodical(this.options.animation.rotate.interval, this);
			}
		}
		this.iCarouselSetLink(0);
		this.iCarouselSetNavTitle(0);

		if (RedDotMode)
		{
			if (readCookie('RedDotPageGuid') != RedDotPageGuid)
			{
				writeCookie('RedDotPageGuid', RedDotPageGuid);
				writeCookie('icarousel_current_item', 0);
			}
			else {
				if (readCookie('icarousel_current_item') == null) {
					writeCookie('icarousel_current_item', 0);
				}
				else {
					this.goTo(readCookie('icarousel_current_item'));
					this.options.animation.rotate.type = "manual";
					this.timer = $clear(this.timer);
				}
			}
		}
	},

	goTo: function(n) {
		switch(this.options.animation.type.toLowerCase()) {
			case "fade":
				var lastIndex = this.atScreen;
				this.atScreen = Math.abs(n % (this.aItems.length / 3));
				this._animate(this.atScreen, lastIndex);
				break;

			default:
				this.atScreen = Math.abs(n % (this.aItems.length / 3));
				this.atScreen += this.aItems.length / 3;
				this._animate(this.atScreen);

				break;
		}

		if(this.options.animation.rotate.type == "auto"){this.timer = $clear(this.timer);}
		if(this.options.animation.rotate.type == "auto"){this.timer = this._autoRotate.periodical(this.options.animation.rotate.interval, this)};

		this.fireEvent("onGoTo", this, 20);
		this.linkSetActive(n);
		this.iCarouselSetLink(n);
		this.iCarouselSetNavTitle(n);
	},

	iCarouselSetLink: function(id)
	{
		if (this.options.item.klass == 'icarusel_item')
		{
			if (document.getElementById('icarousel_link'))
			{
				var iLink = $('icarousel_link');

				if (icarousel_link[id] && icarousel_link[id]['link'] && icarousel_link[id]['text']) {

					iLink.style.display = 'block';
					iLink.href = icarousel_link[id]['link'];
					iLink.childNodes[0].innerHTML = icarousel_link[id]['text'];

					iLink.addEvents({
						"mouseenter": function() {
							this.isMouseOver = true;
						}.bind(this),
						"mouseleave": function() {
							this.isMouseOver = false;
						}.bind(this)
					});
				}
				else if (iLink.childNodes[0].innerHTML != "&nbsp;") { }
				else {
					iLink.style.display = 'none';
				}

				var plugin = false;
				if (typeof(PluginDetection) != 'undefined') {
					plugin = new PluginDetection();
				}
				setOrderLinks(plugin);
			}
		}
	},

	iCarouselSetNavTitle: function(id)
	{
		if (this.options.item.klass == 'icarusel_item')
		{
			if ($('icarousel_buttons_title') && $('icarousel_title_' + (id + 1))) {
				$('icarousel_buttons_title').innerHTML = $('icarousel_title_' + (id + 1)).innerHTML;
			}
			else {
				$('icarousel_buttons_title').innerHTML = '';
			}
		}
	},

	linkSetActive: function(id)
	{
		for (i = 0; i <= 20; i++)
		{
			if (obj = document.getElementById('thumb' + i))
			{
				obj.className = '';
			}
			if (obj = document.getElementById('lightbox_menu' + i))
			{
				obj.className = '';
			}
		}

		if (document.getElementById('thumb' + id))
		{
			document.getElementById('thumb' + id).className = 'active';
			document.getElementById('thumb' + id).blur();
		}
		if (document.getElementById('lightbox_menu' + id))
		{
			document.getElementById('lightbox_menu' + id).className = 'active';
			document.getElementById('lightbox_menu' + id).blur();
		}
	},

	_previous: function() {
		switch(this.options.animation.type.toLowerCase()) {
			case "fade":
				var lastIndex = this.atScreen;
				this.atScreen -= this.options.animation.amount;
				if(this.atScreen < 0) this.atScreen = (this.aItems.length - 1);
				this._animate(this.atScreen, lastIndex);
				break;

			default:
				this.atScreen -= this.options.animation.amount;
				if(this.atScreen < this.aItems.length / 3) {
					this.container.setStyle(this.options.animation.direction, - this.options.item.size * this.aItems.length * 2 / 3);
					this.atScreen = this.aItems.length * 2 / 3 - this.options.animation.amount;
				}
				this._animate(this.atScreen);
				break;
		}

		var index = this.atScreen - (this.aItems.length / 3) == (this.aItems.length / 3) ? 0 : this.atScreen - (this.aItems.length / 3);
		this.linkSetActive(index);
		this.iCarouselSetLink(index);
		this.iCarouselSetNavTitle(index);

		this.aItems[this.lastActive].id = '';
		this.aItems[this.atScreen].id = 'icarousel_active';
		this.lastActive = this.atScreen;

		this.fireEvent("onPrevious", this, 20);
		if (RedDotMode)
		{
			writeCookie('icarousel_current_item', index);
		}
	},

	_next: function() {
		switch(this.options.animation.type.toLowerCase()) {
			case "fade":
				var lastIndex = this.atScreen;
				this.atScreen += this.options.animation.amount;
				if(this.atScreen >= this.aItems.length) this.atScreen = 0;
				this._animate(this.atScreen, lastIndex);
				break;

			default:
				this.atScreen += this.options.animation.amount;
				if(this.atScreen > this.aItems.length * 2 / 3) {
					this.container.setStyle(this.options.animation.direction, - this.options.item.size * this.aItems.length / 3);
					this.atScreen = this.aItems.length / 3 + this.options.animation.amount;
				}
				this._animate(this.atScreen);
				break;
		}

		var index = this.atScreen - (this.aItems.length / 3) == (this.aItems.length / 3) ? 0 : this.atScreen - (this.aItems.length / 3);
		this.linkSetActive(index);
		this.iCarouselSetLink(index);
		this.iCarouselSetNavTitle(index);

		this.aItems[this.lastActive].id = '';
		this.aItems[this.atScreen].id = 'icarousel_active';
		this.lastActive = this.atScreen;

		this.fireEvent("onNext", this, 20);
		if (RedDotMode)
		{
			writeCookie('icarousel_current_item', index);
		}
	},

	_toggle: function() {
		(this.container.getStyle("height").toInt() == 0) ?
			this.container.effect("height", { duration:1000, transition: Fx.Transitions.Sine.easeInOut }).start(this.height):
			this.container.effect("height", { duration:1000, transition: Fx.Transitions.Sine.easeInOut }).start(0);
	},

	_autoRotate: function() {
		if (this.counter < this.aItemCount || !this.options.animation.rotate.oneTime) {
			if(this.options.animation.rotate.onMouseOver == "stop" && !this.isMouseOver) this._next();
			this.counter++;
		}
	},

	_animate: function(a, b) {
		switch(this.options.animation.type) {
			case "fade":
				if($defined(b)) {
					this.aItems[b].fx.start(0).chain(function() {
					this.aItems[a].fx.start(1);}.bind(this));
				} else {
					this.aItems[a].fx.start(1);
				}
				break;

			case "scroll":
				var that = this;
				if(that.options.animation.direction == "top") {
					that.fx.start({"top" : - a * that.options.item.size});
				} else if (that.options.animation.direction == "bottom") {
					that.fx.start({"left" : a * that.options.item.size});
				} else {
					that.fx.start({"left" : - a * that.options.item.size});
				}
				break;

			case "fadeNscroll":
				var that = this;
				if(that.options.animation.direction == "top") {
					that.fx.start({"opacity":0.75}).chain(function() {
						that.fx.start({"top" : - a * that.options.item.size}).chain(function() {
							that.fx.start({"opacity": 1});
						});
					});
				} else {
					that.fx.start({"opacity":0.75}).chain(function() {
						that.fx.start({"left" : - a * that.options.item.size}).chain(function() {
							that.fx.start({"opacity": 1});
						});
					});
				}
				break;
		}
	}
});
iCarousel.implement(new Events); // Implements addEvent(type, fn), fireEvent(type, [args], delay) and removeEvent(type, fn)
iCarousel.implement(new Options);// Implements setOptions(defaults, options)
/**
 *	ImageFlow 0.9
 *
 *	This code is based on Michael L. Perrys Cover flow in Javascript.
 *	For he wrote that "You can take this code and use it as your own" [1]
 *	this is my attempt to improve some things. Feel free to use it! If
 *	you have any questions on it leave me a message in my shoutbox [2].
 *
 *	The reflection is generated server-sided by a slightly hacked  
 *	version of Richard Daveys easyreflections [3] written in PHP.
 *	
 *	The mouse wheel support is an implementation of Adomas Paltanavicius
 *	JavaScript mouse wheel code [4].
 *
 *	Thanks to Stephan Droste ImageFlow is now compatible with Safari 1.x.
 *
 *
 *	[1] http://www.adventuresinsoftware.com/blog/?p=104#comment-1981
 *	[2] http://shoutbox.finnrudolph.de/
 *	[3] http://reflection.corephp.co.uk/v2.php
 *	[4] http://adomas.org/javascript-mouse-wheel/
 */

function iflow_lightbox()
{
		/* Configuration variables */
	var conf_reflection_p = 0.5;         // Sets the height of the reflection in % of the source image 
	var conf_focus = 4;                  // Sets the numbers of images on each side of the focussed one
	var lightbox_conf_slider_width = 11;          // Sets the px width of the slider div
	var lightbox_images_cursor = 'pointer';  // Sets the cursor type for all images default is 'default'
	var lightbox_slider_cursor = 'pointer';  // Sets the slider cursor type: try "e-relightbox_size" default is 'default'

	/* Id names used in the HTML */
	var lightbox_conf_imageflow = 'lightbox_iflow';    // Default is 'imageflow'
	var lightbox_conf_loading = 'lightbox_loading';        // Default is 'loading'
	var lightbox_conf_images = 'lightbox_images';          // Default is 'images'
	var lightbox_conf_captions = 'lightbox_captions';      // Default is 'captions'
	var lightbox_conf_scrollbar = 'lightbox_scrollbar';    // Default is 'scrollbar'
	var lightbox_conf_slider = 'lightbox_slider';          // Default is 'slider'

	/* Define global variables */
	var lightbox_caption_id = 0;
	var new_lightbox_caption_id = 0;
	var lightbox_current = 0;
	var lightbox_target = 0;
	var mem_lightbox_target = 0;
	var lightbox_timer = 0;
	var lightbox_array_images = new Array();
	var lightbox_new_slider_pos = 0;
	var lightbox_dragging = false;
	var lightbox_dragobject = null;
	var lightbox_dragx = 0;
	var lightbox_posx = 0;
	var new_lightbox_posx = 0;
	var lightbox_xstep = 150;

	this.onload = function(name)
	{
		if(document.getElementById(lightbox_conf_imageflow))
		{
			iflow_lightbox.hide(lightbox_conf_loading);
			iflow_lightbox.refresh(true);
			iflow_lightbox.show(lightbox_conf_images);
			iflow_lightbox.show(lightbox_conf_scrollbar);
			iflow_lightbox.initMouseWheel();
			iflow_lightbox.initMouseDrag();
			iflow_lightbox.show('lightbox_iflow_buttons');

			this.glideTo((Math.ceil(lightbox_array_images.length/2) - 1) * -lightbox_xstep, Math.ceil(lightbox_array_images.length/2) - 1);
		}
	}

	this.step = function()
	{
		switch (lightbox_target < lightbox_current-1 || lightbox_target > lightbox_current+1) 
		{
			case true:
				iflow_lightbox.moveTo(lightbox_current + (lightbox_target-lightbox_current)/3);
				window.setTimeout(iflow_lightbox.step, 50);
				lightbox_timer = 1;
				break;

			default:
				lightbox_timer = 0;
				break;
		}
	}

	this.glideTo = function(x, new_lightbox_caption_id)
	{	
		/* Animate gliding to new x position */
		lightbox_target = x;
		mem_lightbox_target = x;
		if (lightbox_timer == 0)
		{
			window.setTimeout(this.step, 50);
			lightbox_timer = 1;
		}
		
		/* Display new caption */
		lightbox_caption_id = new_lightbox_caption_id;
		caption = lightbox_img_div.childNodes.item(lightbox_array_images[lightbox_caption_id]).getAttribute('alt');
		if (caption == '') caption = '&nbsp;';
		lightbox_caption_div.innerHTML = caption;

		/* Set scrollbar slider to new position */
		if (lightbox_dragging == false)
		{
			lightbox_new_slider_pos = (lightbox_scrollbar_width * (-(x*100/((lightbox_max-1)*lightbox_xstep))) / 100) - new_lightbox_posx;
			lightbox_slider_div.style.marginLeft = (lightbox_new_slider_pos - lightbox_conf_slider_width) + 'px';
		}
	}

	this.moveTo = function(x)
	{
		lightbox_current = x;
		var zIndex = lightbox_max;
		
		/* Main loop */
		for (var index = 0; index < lightbox_max; index++)
		{
			var image = lightbox_img_div.childNodes.item(lightbox_array_images[index]);
			var lightbox_current_image = index * -lightbox_xstep;

			/* Don't display images that are not conf_focussed */
			if ((lightbox_current_image+lightbox_lightbox_max_conf_focus) < mem_lightbox_target || (lightbox_current_image-lightbox_lightbox_max_conf_focus) > mem_lightbox_target)
			{
				image.style.visibility = 'hidden';
				image.style.display = 'none';
			}
			else 
			{
				var z = Math.sqrt(10000 + x * x) + 100;
				var xs = x / z * lightbox_size + lightbox_size;

				/* Still hide images until they are processed, but set display style to block */
				image.style.display = 'block';
			
				/* Process new image height and image width */
				var new_img_h = (image.h / image.w * image.pc) / z * lightbox_size;
				switch ( new_img_h > lightbox_lightbox_max_height )
				{
					case false:
						var new_img_w = image.pc / z * lightbox_size;
						break;

					default:
						new_img_h = lightbox_lightbox_max_height;
						var new_img_w = image.w * new_img_h / image.h;
						break;
				}
				var new_img_top = (lightbox_images_width * 0.18 - new_img_h) + lightbox_images_top + ((new_img_h / (conf_reflection_p + 1)) * conf_reflection_p);

				/* Set new image properties */
				image.style.left = xs - (image.pc / 2) / z * lightbox_size + lightbox_images_left + 'px';
				if(new_img_w && new_img_h)
				{ 
					image.style.height = new_img_h + 'px'; 
					image.style.width = new_img_w + 'px'; 
					image.style.top = new_img_top + 'px';
				}
				image.style.visibility = 'visible';

				/* Set image layer through zIndex */
				switch ( x < 0 )
				{
					case true:
						zIndex++;
						break;

					default:
						zIndex = zIndex - 1;
						break;
				}
				
				/* Change zIndex and onclick function of the focussed image */
				switch ( image.i == lightbox_caption_id )
				{
					case false:
						image.onclick = function() { iflow_lightbox.glideTo(this.x_pos, this.i); }
						break;

					default:
						zIndex = zIndex + 1;
						image.onclick = function() { if (this.url) { document.location = this.url } }
						break;
				}
				image.style.zIndex = zIndex;
			}
			x += lightbox_xstep;
		}
	}

	/* Main function */
	this.refresh = function(onload)
	{
		/* Cache document objects in global variables */
		lightbox_imageflow_div = document.getElementById(lightbox_conf_imageflow);
		lightbox_img_div = document.getElementById(lightbox_conf_images);
		lightbox_scrollbar_div = document.getElementById(lightbox_conf_scrollbar);
		lightbox_slider_div = document.getElementById(lightbox_conf_slider);
		lightbox_caption_div = document.getElementById(lightbox_conf_captions);

		/* Cache global variables, that only change on refresh */
		lightbox_images_width = lightbox_img_div.offsetWidth;
		lightbox_images_top = lightbox_imageflow_div.offsetTop;
		lightbox_images_left = lightbox_imageflow_div.offsetLeft;
		lightbox_lightbox_max_conf_focus = conf_focus * lightbox_xstep;
		lightbox_size = lightbox_images_width * 0.5;
		lightbox_scrollbar_width = lightbox_images_width * 0.4;
		lightbox_conf_slider_width = lightbox_conf_slider_width * 0.5;
		lightbox_lightbox_max_height = lightbox_images_width * 0.51;

		/* Change images div properties */
		lightbox_img_div.style.height = '240px';

		/* Change captions div properties */
		lightbox_caption_div.style.width = lightbox_images_width + 'px';

		/* Change scrollbar div properties */
		lightbox_scrollbar_div.style.marginTop = lightbox_images_width * 0.01 + 'px';
		lightbox_scrollbar_div.style.marginLeft = lightbox_images_width * 0.3 + 'px';
		lightbox_scrollbar_div.style.width = lightbox_scrollbar_width + 'px';

		if (document.getElementById('lightbox_iflow_buttons'))
		{
			document.getElementById('lightbox_iflow_buttons').style.marginTop = -lightbox_images_width * 0.0058 + 'px';
			document.getElementById('lightbox_iflow_buttons').style.left = (lightbox_images_width * 0.3) - 20 + 'px';
			document.getElementById('lightbox_iflow_buttons').style.width = (lightbox_scrollbar_width) + 45 + 'px';
		}

		/* Set slider attributes */
		lightbox_slider_div.onmousedown = function () { iflow_lightbox.dragstart(this); };
		lightbox_slider_div.style.cursor = lightbox_slider_cursor;

		/* Cache EVERYTHING! */
		lightbox_max = lightbox_img_div.childNodes.length;
		var i = 0;
		for (var index = 0; index < lightbox_max; index++)
		{ 
			var image = lightbox_img_div.childNodes.item(index);
			if (image.nodeType == 1)
			{
				lightbox_array_images[i] = index;
				
				/* Set image onclick by adding i and x_pos as attributes! */
				image.onclick = function() { iflow_lightbox.glideTo(this.x_pos, this.i); }
				image.x_pos = (-i * lightbox_xstep);
				image.i = i;
				
				/* Add width and height as attributes ONLY once onload */
				if(onload == true)
				{
					image.w = image.width;
					image.h = image.height;
				}

				/* Check source image format. Get image height minus reflection height! */
				switch ((image.w + 1) > (image.h / (conf_reflection_p + 1))) 
				{
					/* Landscape format */
					case true:
						image.pc = 118;
						break;

					/* Portrait and square format */
					default:
						image.pc = 100;
						break;
				}

				/* Set ondblclick event */
				image.url = image.getAttribute('longdesc');
				image.ondblclick = function() { if (this.url) { document.location = this.url } }

				/* Set image cursor type */
				image.style.cursor = lightbox_images_cursor;

				i++;
			}
		}
		lightbox_max = lightbox_array_images.length;

		/* Display images in lightbox_current order */
		this.moveTo(lightbox_current);
		this.glideTo(lightbox_current, lightbox_caption_id);
	}

	/* Show/hide element functions */
	this.show = function(id)
	{
		var element = document.getElementById(id);
		element.style.visibility = 'visible';
	}
	this.hide = function(id)
	{
		var element = document.getElementById(id);
		element.style.visibility = 'hidden';
		element.style.display = 'none';
	}

	/* Handle the wheel angle change (delta) of the mouse wheel */
	this.handle = function(delta)
	{
		var change = false;
		switch (delta > 0)
		{
			case true:
				if(lightbox_caption_id >= 1)
				{
					lightbox_target = lightbox_target + lightbox_xstep;
					new_lightbox_caption_id = lightbox_caption_id - 1;
					change = true;
				}
				break;

			default:
				if(lightbox_caption_id < (lightbox_max-1))
				{
					lightbox_target = lightbox_target - lightbox_xstep;
					new_lightbox_caption_id = lightbox_caption_id + 1;
					change = true;
				}
				break;
		}

		/* Glide to next (mouse wheel down) / previous (mouse wheel up) image */
		if (change == true)
		{
			this.glideTo(lightbox_target, new_lightbox_caption_id);
		}
	}

	/* Event handler for mouse wheel event */
	this.wheel = function(event)
	{
		var delta = 0;
		if (!event) event = window.event;
		if (event.wheelDelta)
		{
			delta = event.wheelDelta / 120;
		}
		else if (event.detail)
		{
			delta = -event.detail / 3;
		}
		if (delta) iflow_lightbox.handle(delta);
		if (event.preventDefault) event.preventDefault();
		event.returnValue = false;
	}

	/* Initialize mouse wheel event listener */
	this.initMouseWheel = function()
	{
		if(window.addEventListener) lightbox_imageflow_div.addEventListener('DOMMouseScroll', this.wheel, false);
		lightbox_imageflow_div.onmousewheel = this.wheel;
	}

	/* This function is called to drag an object (= slider div) */
	this.dragstart = function(element)
	{
		lightbox_dragobject = element;
		lightbox_dragx = lightbox_posx - lightbox_dragobject.offsetLeft + lightbox_new_slider_pos;
	}

	/* This function is called to stop lightbox_dragging an object */
	this.dragstop = function()
	{
		lightbox_dragobject = null;
		lightbox_dragging = false;
	}

	/* This function is called on mouse movement and moves an object (= slider div) on user action */
	this.drag = function(e)
	{
		lightbox_posx = document.all ? window.event.clientX : e.pageX;
		if(lightbox_dragobject != null)
		{
			lightbox_dragging = true;
			new_lightbox_posx = (lightbox_posx - lightbox_dragx) + lightbox_conf_slider_width;

			/* Make sure, that the slider is moved in proper relation to previous movements by the glideTo function */
			if(new_lightbox_posx < ( - lightbox_new_slider_pos)) new_lightbox_posx = - lightbox_new_slider_pos;
			if(new_lightbox_posx > (lightbox_scrollbar_width - lightbox_new_slider_pos)) new_lightbox_posx = lightbox_scrollbar_width - lightbox_new_slider_pos;
			
			var slider_pos = (new_lightbox_posx + lightbox_new_slider_pos);
			var step_width = slider_pos / ((lightbox_scrollbar_width) / (lightbox_max-1));
			var image_number = Math.round(step_width);
			var new_lightbox_target = (image_number) * -lightbox_xstep;
			var new_lightbox_caption_id = image_number;

			lightbox_dragobject.style.left = new_lightbox_posx + 'px';
			iflow_lightbox.glideTo(new_lightbox_target, new_lightbox_caption_id);
		}
	}

	/* Initialize mouse event listener */
	this.initMouseDrag = function()
	{
		obj = document.getElementById(lightbox_conf_imageflow);
		obj.onmousemove = this.drag;
		obj.onmouseup = this.dragstop;

		/* Avoid text and image selection while lightbox_dragging  */
		obj.onselectstart = function () 
		{
			if (lightbox_dragging == true)
			{
				return false;
			}
			else
			{
				return true;
			}
		}
	}

	this.getKeyCode = function(event)
	{
		event = event || window.event;
		return event.keyCode;
	}
}
/**
 *	ImageFlow 0.9
 *
 *	This code is based on Michael L. Perrys Cover flow in Javascript.
 *	For he wrote that "You can take this code and use it as your own" [1]
 *	this is my attempt to improve some things. Feel free to use it! If
 *	you have any questions on it leave me a message in my shoutbox [2].
 *
 *	The reflection is generated server-sided by a slightly hacked  
 *	version of Richard Daveys easyreflections [3] written in PHP.
 *	
 *	The mouse wheel support is an implementation of Adomas Paltanavicius
 *	JavaScript mouse wheel code [4].
 *
 *	Thanks to Stephan Droste ImageFlow is now compatible with Safari 1.x.
 *
 *
 *	[1] http://www.adventuresinsoftware.com/blog/?p=104#comment-1981
 *	[2] http://shoutbox.finnrudolph.de/
 *	[3] http://reflection.corephp.co.uk/v2.php
 *	[4] http://adomas.org/javascript-mouse-wheel/
 */

function iflow_products()
{
		/* Configuration variables */
	var conf_reflection_p = 0.5;         // Sets the height of the reflection in % of the source image 
	var conf_focus = 3;                  // Sets the numbers of images on each side of the focussed one
	var conf_slider_width = 14;          // Sets the px width of the slider div
	var conf_images_cursor = 'pointer';  // Sets the cursor type for all images default is 'default'
	var conf_slider_cursor = 'pointer';  // Sets the slider cursor type: try "e-resize" default is 'default'

	/* Id names used in the HTML */
	var conf_imageflow = 'products_iflow';    // Default is 'imageflow'
	var conf_loading = 'products_loading';        // Default is 'loading'
	var conf_images = 'products_images';          // Default is 'images'
	var conf_captions = 'products_captions';      // Default is 'captions'
	var conf_scrollbar = 'products_scrollbar';    // Default is 'scrollbar'
	var conf_slider = 'products_slider';          // Default is 'slider'

	/* Define global variables */
	var caption_id = 0;
	var new_caption_id = 0;
	var current = 0;
	var target = 0;
	var mem_target = 0;
	var timer = 0;
	this.array_images = new Array();
	var new_slider_pos = 0;
	var dragging = false;
	var dragobject = null;
	var dragx = 0;
	var posx = 0;
	var new_posx = 0;
	var xstep = 140;

	this.onload = function(name)
	{
		if(document.getElementById(conf_imageflow))
		{
			iflow_products.hide(conf_loading);
			iflow_products.refresh(true);
			iflow_products.show(conf_images);
			iflow_products.show(conf_scrollbar);
			iflow_products.initMouseWheel();
			iflow_products.initMouseDrag();
			iflow_lightbox.show('products_iflow_buttons');

			this.glideTo((Math.ceil(this.array_images.length/2) - 1) * -xstep, Math.ceil(this.array_images.length/2) - 1);
		}
	}

	this.step = function()
	{
		switch (target < current-1 || target > current+1) 
		{
			case true:
				iflow_products.moveTo(current + (target-current)/3);
				window.setTimeout(iflow_products.step, 50);
				timer = 1;
				break;

			default:
				timer = 0;
				break;
		}
	}

	this.glideTo = function(x, new_caption_id)
	{	
		/* Animate gliding to new x position */
		target = x;
		mem_target = x;
		if (timer == 0)
		{
			window.setTimeout(this.step, 50);
			timer = 1;
		}
		
		/* Display new caption */
		caption_id = new_caption_id;
		caption = img_div.childNodes.item(this.array_images[caption_id]).getAttribute('alt');
		if (caption == '') caption = '&nbsp;';
		caption_div.innerHTML = caption;

		/* Set scrollbar slider to new position */
		if (dragging == false)
		{
			new_slider_pos = (scrollbar_width * (-(x*100/((max-1)*xstep))) / 100) - new_posx;
			slider_div.style.marginLeft = (new_slider_pos - conf_slider_width) + 'px';
		}
	}

	this.moveTo = function(x)
	{
		current = x;
		var zIndex = max;

		/* Main loop */
		for (var index = 0; index < max; index++)
		{
			var image = img_div.childNodes.item(this.array_images[index]);
			var current_image = index * -xstep;

			/* Don't display images that are not conf_focussed */
			if ((current_image+max_conf_focus) < mem_target || (current_image-max_conf_focus) > mem_target)
			{
				image.style.visibility = 'hidden';
				image.style.display = 'none';
			}
			else 
			{
				var z = Math.sqrt(10000 + x * x) + 100;
				var xs = x / z * size + size;

				/* Still hide images until they are processed, but set display style to block */
				image.style.display = 'block';
			
				/* Process new image height and image width */
				var new_img_h = (image.h / image.w * image.pc) / z * size;
				switch ( new_img_h > max_height )
				{
					case false:
						var new_img_w = image.pc / z * size;
						break;

					default:
						new_img_h = max_height;
						var new_img_w = image.w * new_img_h / image.h;
						break;
				}
				var new_img_top = (images_width * 0.15 - new_img_h) + images_top + ((new_img_h / (conf_reflection_p + 1)) * conf_reflection_p);

				/* Set new image properties */
				image.style.left = xs - (image.pc / 2) / z * size + images_left + 'px';
				if(new_img_w && new_img_h)
				{ 
					image.style.height = new_img_h + 'px'; 
					image.style.width = new_img_w + 'px'; 
					image.style.top = new_img_top + 'px';
				}
				image.style.visibility = 'visible';

				/* Set image layer through zIndex */
				switch ( x < 0 )
				{
					case true:
						zIndex++;
						break;

					default:
						zIndex = zIndex - 1;
						break;
				}
				
				/* Change zIndex and onclick function of the focussed image */
				switch ( image.i == caption_id )
				{
					case false:
						image.onclick = function() { iflow_products.glideTo(this.x_pos, this.i); }
						break;

					default:
						zIndex = zIndex + 1;
						image.onclick = function() { if (this.url) { document.location = this.url } }
						break;
				}
				image.style.zIndex = zIndex;
			}
			x += xstep;
		}
	}

	/* Main function */
	this.refresh = function(onload)
	{
		/* Cache document objects in global variables */
		imageflow_div = document.getElementById(conf_imageflow);
		img_div = document.getElementById(conf_images);
		scrollbar_div = document.getElementById(conf_scrollbar);
		slider_div = document.getElementById(conf_slider);
		caption_div = document.getElementById(conf_captions);

		/* Cache global variables, that only change on refresh */
		images_width = img_div.offsetWidth;
		images_top = imageflow_div.offsetTop;
		images_left = imageflow_div.offsetLeft;
		max_conf_focus = conf_focus * xstep;
		size = images_width * 0.55;
		scrollbar_width = images_width * 0.4;
		conf_slider_width = conf_slider_width * 0.5;
		max_height = images_width * 0.51;

		/* Change images div properties */
		img_div.style.height = '160px';

		/* Change captions div properties */
		caption_div.style.width = images_width + 'px';
		caption_div.style.marginLeft =  '30px';

		/* Change scrollbar div properties */
		scrollbar_div.style.marginTop = images_width * 0.01 + 'px';
		scrollbar_div.style.marginLeft = images_width * 0.33 + 'px';
		scrollbar_div.style.width = scrollbar_width + 'px';

		if (document.getElementById('products_iflow_buttons'))
		{
			document.getElementById('products_iflow_buttons').style.marginTop = -images_width * 0.0068 + 'px';
			document.getElementById('products_iflow_buttons').style.left = (images_width * 0.33) - 20 + 'px';
			document.getElementById('products_iflow_buttons').style.width = (scrollbar_width) + 45 + 'px';
		}

		/* Set slider attributes */
		slider_div.onmousedown = function () { iflow_products.dragstart(this); };
		slider_div.style.cursor = conf_slider_cursor;

		/* Cache EVERYTHING! */
		max = img_div.childNodes.length;
		var i = 0;
		for (var index = 0; index < max; index++)
		{ 
			var image = img_div.childNodes.item(index);
			if (image.nodeType == 1)
			{
				this.array_images[i] = index;
				
				/* Set image onclick by adding i and x_pos as attributes! */
				image.onclick = function() { iflow_products.glideTo(this.x_pos, this.i); }
				image.x_pos = (-i * xstep);
				image.i = i;
				
				/* Add width and height as attributes ONLY once onload */
				if(onload == true)
				{
					image.w = image.width;
					image.h = image.height;
				}

				/* Check source image format. Get image height minus reflection height! */
				switch ((image.w + 1) > (image.h / (conf_reflection_p + 1))) 
				{
					/* Landscape format */
					case true:
						image.pc = 118;
						break;

					/* Portrait and square format */
					default:
						image.pc = 100;
						break;
				}

				/* Set ondblclick event */
				image.url = image.getAttribute('longdesc');
				image.ondblclick = function() { if (this.url) { document.location = this.url } }

				/* Set image cursor type */
				image.style.cursor = conf_images_cursor;

				i++;
			}
		}
		max = this.array_images.length;

		/* Display images in current order */
		this.moveTo(current);
		this.glideTo(current, caption_id);
	}

	/* Show/hide element functions */
	this.show = function(id)
	{
		var element = document.getElementById(id);
		element.style.visibility = 'visible';
	}
	this.hide = function(id)
	{
		var element = document.getElementById(id);
		element.style.visibility = 'hidden';
		element.style.display = 'none';
	}

	/* Handle the wheel angle change (delta) of the mouse wheel */
	this.handle = function(delta)
	{
		var change = false;
		switch (delta > 0)
		{
			case true:
				if(caption_id >= 1)
				{
					target = target + xstep;
					new_caption_id = caption_id - 1;
					change = true;
				}
				break;

			default:
				if(caption_id < (max-1))
				{
					target = target - xstep;
					new_caption_id = caption_id + 1;
					change = true;
				}
				break;
		}

		/* Glide to next (mouse wheel down) / previous (mouse wheel up) image */
		if (change == true)
		{
			this.glideTo(target, new_caption_id);
		}
	}

	/* Event handler for mouse wheel event */
	this.wheel = function(event)
	{
		var delta = 0;
		if (!event) event = window.event;
		if (event.wheelDelta)
		{
			delta = event.wheelDelta / 120;
		}
		else if (event.detail)
		{
			delta = -event.detail / 3;
		}
		if (delta) iflow_products.handle(delta);
		if (event.preventDefault) event.preventDefault();
		event.returnValue = false;
	}

	/* Initialize mouse wheel event listener */
	this.initMouseWheel = function()
	{
		if(window.addEventListener) imageflow_div.addEventListener('DOMMouseScroll', this.wheel, false);
		imageflow_div.onmousewheel = this.wheel;
	}

	/* This function is called to drag an object (= slider div) */
	this.dragstart = function(element)
	{
		dragobject = element;
		dragx = posx - dragobject.offsetLeft + new_slider_pos;
	}

	/* This function is called to stop dragging an object */
	this.dragstop = function()
	{
		dragobject = null;
		dragging = false;
	}

	/* This function is called on mouse movement and moves an object (= slider div) on user action */
	this.drag = function(e)
	{
		posx = document.all ? window.event.clientX : e.pageX;
		if(dragobject != null)
		{
			dragging = true;
			new_posx = (posx - dragx) + conf_slider_width;

			/* Make sure, that the slider is moved in proper relation to previous movements by the glideTo function */
			if(new_posx < ( - new_slider_pos)) new_posx = - new_slider_pos;
			if(new_posx > (scrollbar_width - new_slider_pos)) new_posx = scrollbar_width - new_slider_pos;
			
			var slider_pos = (new_posx + new_slider_pos);
			var step_width = slider_pos / ((scrollbar_width) / (max-1));
			var image_number = Math.round(step_width);
			var new_target = (image_number) * -xstep;
			var new_caption_id = image_number;

			dragobject.style.left = new_posx + 'px';
			iflow_products.glideTo(new_target, new_caption_id);
		}
	}

	/* Initialize mouse event listener */
	this.initMouseDrag = function()
	{
		obj = document.getElementById(conf_imageflow);
		obj.onmousemove = this.drag;
		obj.onmouseup = this.dragstop;

		/* Avoid text and image selection while dragging  */
		obj.onselectstart = function () 
		{
			if (dragging == true)
			{
				return false;
			}
			else
			{
				return true;
			}
		}
	}

	this.getKeyCode = function(event)
	{
		event = event || window.event;
		return event.keyCode;
	}
}
/*****
* 
* Plugin detection Script
* 
* Description:	detects some plugins of user
* Author:		Matthias von Deetzen
* Copyright:	CeWe Color AG & Co OhG
* 
*****/

var detectableWithVB = false;

function PluginDetection()
{
	this.detectJava = function() {
		if (window.navigator.javaEnabled() == true) {
			return true;
		}
		else {
			return false;
		}
	}
	this.detectActiveX = function() {
		return false;
	}
	this.canDetectPlugins = function() {
		if( detectableWithVB || (navigator.plugins && navigator.plugins.length > 0) ) {
			return true;
		} else {
			return false;
		}
	}
	this.detectActiveX = function() {
		try {
			new ActiveXObject("Shell.UIHelper");
		}
		catch (e) {
			return false;
		}
		return true;
	}
	this.detectFlash = function() {
		pluginFound = this.detectPlugin('Shockwave','Flash'); 
		if(!pluginFound && detectableWithVB) {
			pluginFound = detectActiveXControl('ShockwaveFlash.ShockwaveFlash.1');
		}
		return pluginFound;
	}
	this.detectDirector = function() { 
		pluginFound = this.detectPlugin('Shockwave','Director'); 
		if(!pluginFound && detectableWithVB) {
			pluginFound = detectActiveXControl('SWCtl.SWCtl.1');
		}
		return pluginFound;
	}
	this.detectQuickTime = function() {
		pluginFound = this.detectPlugin('QuickTime');
		if(!pluginFound && detectableWithVB) {
			pluginFound = detectQuickTimeActiveXControl();
		}
		return pluginFound;
	}
	this.detectReal = function() {
		pluginFound = this.detectPlugin('RealPlayer');
		if(!pluginFound && detectableWithVB) {
		pluginFound = (detectActiveXControl('rmocx.RealPlayer G2 Control') ||
			detectActiveXControl('RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)') ||
			detectActiveXControl('RealVideo.RealVideo(tm) ActiveX Control (32-bit)'));
		}	
		return pluginFound;
	}
	this.detectWindowsMedia = function() {
		pluginFound = this.detectPlugin('Windows Media');
		if(!pluginFound && detectableWithVB) {
			pluginFound = detectActiveXControl('MediaPlayer.MediaPlayer.1');
		}
		return pluginFound;
	}

	this.detectPlugin = function() {
		var daPlugins = this.detectPlugin.arguments;
		var pluginFound = false;
		if (navigator.plugins && navigator.plugins.length > 0) {
			var pluginsArrayLength = navigator.plugins.length;
			for (pluginsArrayCounter=0; pluginsArrayCounter < pluginsArrayLength; pluginsArrayCounter++ ) {
				var numFound = 0;
				for(namesCounter=0; namesCounter < daPlugins.length; namesCounter++) {
					if( (navigator.plugins[pluginsArrayCounter].name.indexOf(daPlugins[namesCounter]) >= 0) || 
						(navigator.plugins[pluginsArrayCounter].description.indexOf(daPlugins[namesCounter]) >= 0) ) {
						numFound++;
					}
				}
				if(numFound == daPlugins.length) {
					pluginFound = true;
					break;
				}
			}
		}
		return pluginFound;
	} // detectPlugin

	
	this.java = this.detectJava();
	this.activex = this.detectActiveX();

	if (navigator.appVersion.indexOf("Win")!=-1) this.OSname="windows";
	if (navigator.appVersion.indexOf("Mac")!=-1) this.OSname="macos";
	if (navigator.appVersion.indexOf("X11")!=-1) this.OSname="unix";
	if (navigator.appVersion.indexOf("Linux")!=-1) this.OSname="linux";

	/*
	if (this.canDetectPlugins()) {
		this.flash = this.detectFlash();
		this.director = this.detectDirector();
		this.quicktime = this.detectQuickTime();
		this.realplayer = this.detectReal();
		this.windowsmedia = this.detectWindowsMedia();
	}
	*/
};

// Here we write out the VBScript block for MSIE Windows
if ((navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1)) {
	document.writeln('<script language="VBscript">');

	document.writeln('\'do a one-time test for a version of VBScript that can handle this code');
	document.writeln('detectableWithVB = False');
	document.writeln('If ScriptEngineMajorVersion >= 2 then');
	document.writeln('  detectableWithVB = True');
	document.writeln('End If');

	document.writeln('\'this next function will detect most plugins');
	document.writeln('Function detectActiveXControl(activeXControlName)');
	document.writeln('  on error resume next');
	document.writeln('  detectActiveXControl = False');
	document.writeln('  If detectableWithVB Then');
	document.writeln('     detectActiveXControl = IsObject(CreateObject(activeXControlName))');
	document.writeln('  End If');
	document.writeln('End Function');

	document.writeln('\'and the following function handles QuickTime');
	document.writeln('Function detectQuickTimeActiveXControl()');
	document.writeln('  on error resume next');
	document.writeln('  detectQuickTimeActiveXControl = False');
	document.writeln('  If detectableWithVB Then');
	document.writeln('    detectQuickTimeActiveXControl = False');
	document.writeln('    hasQuickTimeChecker = false');
	document.writeln('    Set hasQuickTimeChecker = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1")');
	document.writeln('    If IsObject(hasQuickTimeChecker) Then');
	document.writeln('      If hasQuickTimeChecker.IsQuickTimeAvailable(0) Then ');
	document.writeln('        detectQuickTimeActiveXControl = True');
	document.writeln('      End If');
	document.writeln('    End If');
	document.writeln('  End If');
	document.writeln('End Function');

	document.writeln('</scr' + 'ipt>');
}

/*****
* 
* Default Script
* 
* Description:	usual scripts for COPS
* Author:		Matthias von Deetzen
* Copyright:	CeWe Color AG & Co OhG
* 
*****/

var sHref = document.location.href.toLowerCase();
var RedDotPageGuid = null;
var RedDotMode = false;

/** detect browser type **/
var is_moz = false;
var is_ie = false;

/** if no server urls are set, get default **/
if (typeof(server_url_live) == 'undefined') {
	var server_url_live = 'as.photoprintit.de';
	var server_url_test = 'as.photoprintit.de';
}

var server_url = getServerSystem(server_url_live, server_url_test);
var order_link = 'https://' + server_url + '/web/' + (typeof(operator) != 'undefined' ? (operator + '/') : '');

if (sHref.indexOf("action=reddot")!= -1) {
	RedDotMode = true;
	
	var search = /&pageguid\=([0-9A-Za-z]*)/;
	search.exec(sHref);
	RedDotPageGuid = RegExp.$1;
}

if (navigator.appName == 'Microsoft Internet Explorer')
{
	is_ie = true;
}
else if (navigator.appName == 'Netscape')
{
	is_moz = true;
}

/** some simple declarations **/
var last_element = new Object;

/** display info for pricelist **/
function display_price_info(elementId, max_position)
{
	var margin = 0;
	if (typeof($('sub_nav')) != 'undefined' && $('sub_nav').getStyle('float') == 'right') {
		margin = $('page_wrapper').getStyle('paddingLeft').replace('px', '');
	}
	
	var LeftPos = 0;
	if (typeof($('teaser_wrapper')) != 'undefined') {
		LeftPos = $('teaser_wrapper').offsetWidth - $('page_wrapper').offsetLeft;
	}

	max_position = absLeft($('teaser_wrapper')) + LeftPos - $('page_wrapper').style.marginLeft + 3 - margin;

	var windowWidth = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		windowWidth = window.innerWidth + 1;
	}
	else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		windowWidth = document.documentElement.clientWidth;
	}
	else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		windowWidth = document.body.clientWidth;
	}

	var change_value = (windowWidth - document.getElementById('page_wrapper').offsetWidth) / 2;
	max_position = max_position + change_value;

	var element = null;
	if (element = document.getElementById(elementId))
	{
		if (last_element.style)
		{
			last_element.style.display = 'none';
			last_element.parentNode.parentNode.style.zIndex = last_zindex;
		}

		last_element = element;
		last_zindex = element.style.zIndex;

		element.style.opacity = 0;
		element.style.display = 'block';
		fadeIn(element.id);
		element.parentNode.parentNode.style.zIndex = '950';

		if (max_position > 0 && element.style.marginLeft == '')
		{
			if ((absLeft(element) + element.offsetWidth) > max_position)
			{
				element.style.marginLeft = -1 * (absLeft(element) + element.offsetWidth - max_position) - (is_ie ? 2 : 19) + 'px';
			}
		}

	}
}

/** hide an element **/
function hide(elementId)
{
	var element = null;
	if (element = document.getElementById(elementId))
	{
		fadeOut(element.id);
	}
}

/** fade an element in **/
function fadeIn(element_id)
{
	if (document.getElementById(element_id)) {
		document.getElementById(element_id).fadein = new Fx.Style(document.getElementById(element_id), 'opacity', {duration: 300}).start(document.getElementById(element_id).style.opacity,0.9999);
	}
}

/** fade an element out **/
function fadeOut(element_id)
{
	if (document.getElementById(element_id)) {
		document.getElementById(element_id).fadein = new Fx.Style(document.getElementById(element_id), 'opacity', {duration: 300}).start(document.getElementById(element_id).style.opacity,0);
	}
}

/** set an element to active state **/
var elements = new Array();
var act_elements = new Array();
var container_height = 0;
function pricelist_set_active(element, activator)
{
	if (typeof element == 'string')
	{
		if (document.getElementById(element))
		{
			element = document.getElementById(element)
		}
		else
		{
			return false;
		}
	}

	var height = 220;

	if (element && element.className != 'active')
	{
		for (var i = 0; i < elements.length; i++)
		{
			if (elements[i])
			{
				elements[i].className = '';
				elements[i].getElementsByTagName('div')[0].style.display = 'none';
			}
		}


		element.className = 'active';
		element.getElementsByTagName('a')[0].style.outline = '0';
		element.getElementsByTagName('div')[0].style.display = 'block';

		if (is_ie) {
			element.parentNode.style.height = element.getElementsByTagName('div')[0].offsetHeight + height + 'px';
		}
		else {
			element.getParent().getParent().style.height = element.getElementsByTagName('div')[0].offsetHeight + height + 'px';
		}

		if (elements == null || in_array(element, elements) == false)
		{
			elements.unshift(element);
		}
	}

	if (activator)
	{
		for (var i = 0; i < act_elements.length; i++)
		{
			if (act_elements[i])
			{
				act_elements[i].className = '';
			}
		}

		activator.className = 'active';
		activator.blur();

		if (act_elements == null || in_array(activator, act_elements) == false)
		{
			act_elements.unshift(activator);
		}
	}
}

/** get the absolute left position of element **/
function absLeft(el) {
	return (el.offsetParent)? 
	el.offsetLeft+absLeft(el.offsetParent) : el.offsetLeft;
}

/** get the absolute right position of element **/
function absTop(el) {
	return (el.offsetParent)? 
	el.offsetTop+absTop(el.offsetParent) : el.offsetTop;
}

/** own simple in_array function **/
function in_array(item,arr)
{
	for(p=0;p<arr.length;p++) if (item == arr[p]) return true;
	return false;
}

/** open a popup window **/
function popup(element, lightbox, width, height, reddot_mode)
{
	if (reddot_mode)
	{
		myLink = document.createElement("iframe");
		myLink.src = element.href;
		myLink.style.display = "block";
		myLink.style.position = "absolute";
		myLink.style.width = width + 8 + "px";
		myLink.style.height = height + 8 + "px";

		myLink.style.zIndex = 50000;

		left = (screen.width - width) / 2 - 150;
		top = 300;

		myLink.style.left = left + "px";
		myLink.style.top = top + "px";

		body = document.getElementsByTagName("body")[0];
		body.appendChild(myLink);
	}
	else
	{
		if (lightbox)
		{
			element.rev = "width: " + width + "px; height: " + height + "px; border:0; scrolling: no;"
			element.setAttribute('rel', 'lyteframe');
			myLytebox.start(element, false, true);
		}
		else
		{
			var opt = "";
			var top = 0;
			var left = 0;
	
			if (width && height)
			{
				opt += "width=" + width + ",height=" + height + ",";
				left = (screen.width - width) / 2;
				top = (screen.height - height) / 2;
			}
	
			if (top > 0 && left > 0)
			{
				opt += 'top=' + top + ',left=' + left + ',';
			}
			opt += "status=no,scrollbars=yes,resizable=no,toolbar=no";
	
			window.open(element.href, "popup", opt);
		}
	}

	return false;
}

/** display the product sizes of a product **/
function show_product_sizes(element, image, show)
{
	if (element.nodeName != 'IMG')
	{
		element = element.previousSibling;
	}

	if (element && image)
	{
		element.setAttribute('rel', element.src);
		if (image) {
			element.src = image;
		}

		if (show) {
			element.nextSibling.nextSibling.style.display = 'block';
		}
		else {
			element.nextSibling.nextSibling.style.display = 'none';
		}
	}
}

/** display or hide the info box in the lightbox **/
function switch_info(element, show)
{
	if (show)
	{
		if (typeof(element) != 'undefined') {
			if (element.nodeName != 'DIV')
			{
				element = element.nextSibling;
			}
			element.style.opacity = 0;
			element.style.display = 'block';
			element.fadein = new Fx.Style(element, 'opacity', {duration: 550}).start(element.getStyle('opacity'),0.9999);
		}
	}
	else
	{
		if (typeof(element) != 'undefined') {
			element.fadeout = new Fx.Style(element, 'opacity', {duration: 550}).start(element.getStyle('opacity'),0)
			.chain(function() {element.style.display = 'none'});
		}
	}
}

if(!window.Node){
	var Node = {ELEMENT_NODE : 1, TEXT_NODE : 3};
}

function checkNode(node, filter){
	return (filter == null || node.nodeType == Node[filter] || node.nodeName.toUpperCase() == filter.toUpperCase());
}

/** get all children of element **/
function getChildren(node, filter)
{
	var result = new Array();
	var children = node.childNodes;
	for(var i = 0; i < children.length; i++){
		if(checkNode(children[i], filter)) result[result.length] = children[i];
	}
	return result;
}

/** set the link to the IPS order client **/
function set_order_link(product, value)
{
	var order_links = new Object();
	var link = document.getElementById('order_link');
	var design = 'nodesign';

	if (!link)
	{
		return false;
	}
	else if (!operator || !product || product == '')
	{
		link.href = '';
		link.style.display = 'none';
		return false;
	}

	if (!value && document.getElementById('product_select'))
	{
		products = getChildren(document.getElementById('product_select'), 'input');

		for (var i = 0; i < products.length; i++)
		{
			if (products[i].checked)
			{
				value = products[i].value;
			}
		}
	}

	if (document.getElementById('design0') && document.getElementById('design1'))
	{
		design = (document.getElementById('design1').checked ? 'design' : 'nodesign');
	}

	if (product && link)
	{
		var order_links = {

			// Fotofun
			'bib': 'productSettings.do?productid=23',
			'cap': 'productSettings.do?productid=12',
			'moose': 'productSettings.do?productid=69',
			'crystal_pic_80_105': 'productSettings.do?productid=555',
			'sticker': 'productEditor.do?new=true&productId=42&new=true', // changed to new editor
			'globe_glitter': 'productSettings.do?productid=100',
			'barbeque_pinafore': 'productSettings.do?productid=21',
			'easter_bunny': 'productSettings.do?productid=47',
			'child_tshirt': 'productSettings.do?productid=666',
			'crystal_pic': 'productSettings.do?productid=33',
			'heart_of_glass': 'productSettings.do?productid=556',
			'puzzle_20_30': {
				'design': 'productSettings.do?productid=27',
				'nodesign': 'productSettings.do?productid=9'
			},
			//'puzzle_20_30': 'productSettings.do?productid=9',
			'puzzle_30_45': 'productSettings.do?productid=27',
			'key_ring': 'productSettings.do?productid=22',
			'snowglobe': 'productSettings.do?productid=26',
			'playcards': 'productSettings.do?productid=45',
			'pokercards' : 'productSettings.do?productid=10704',
			'pen_bracket': 'productSettings.do?productid=558',
			'memoclip': 'productSettings.do?productid=557',
			'remembory': 'productEditor.do?productId=155&new=true',
			'big_bag': 'productSettings.do?productid=10714',
			'small_bag': 'productSettings.do?productid=10705',
			'alubottle': {
				'design': 'productEditor.do?productId=10703&new=true',
				'nodesign': 'productEditor.do?productId=10703&templateId=empty&new=true'
			},
			'pillow_filled': {
				'design': 'productEditor.do?productId=101&new=true',
				'nodesign': 'productEditor.do?productId=101&templateId=empty&new=true'
			},
			'glass': {
				'design': 'productEditor.do?productId=665&new=true',
				'nodesign': 'productEditor.do?productId=665&templateId=empty&new=true'
			},
			'sweatshirt': {
				'design': 'productEditor.do?productId=38&new=true',
				'nodesign': 'productEditor.do?productId=38&templateId=empty&new=true'
			},
			'teddy': 'productSettings.do?productid=11',
			'cup_panorama': {
				'design': 'productEditor.do?productId=6394&new=true',
				'nodesign': 'productEditor.do?productId=6394&templateId=empty&new=true'
			},
			'cup_set': 'productEditor.do?productId=14&new=true',
			'cup': {
				'design': 'productEditor.do?productId=8&new=true',
				'nodesign': 'productEditor.do?productId=8&templateId=empty&new=true'
			},
			'mousepad': {
				'design': 'productEditor.do?productId=10&new=true',
				'nodesign': 'productEditor.do?productId=10&templateId=empty&new=true'
			},
			'pillow': {
				'design': 'productEditor.do?productId=20&new=true',
				'nodesign': 'productEditor.do?productId=20&templateId=empty&new=true'
			},
			'tshirt': {
				'design': 'productEditor.do?productId=17&new=true',
				'nodesign': 'productEditor.do?productId=17&templateId=empty&new=true'
			},
			'stuffbag': {
				'design': 'productEditor.do?productId=25&new=true',
				'nodesign': 'productEditor.do?productId=25&templateId=empty&new=true'
			},
			'beer_mug_panorama': {
				'design': 'productEditor.do?productId=6400&new=true',
				'nodesign': 'productEditor.do?productId=6400&templateId=empty&new=true'
			},
			'cup_magic': {
				'design': 'productEditor.do?productId=31&new=true',
				'nodesign': 'productEditor.do?productId=31&templateId=empty&new=true'
			},
			'cup_magic_panorama': {
				'design': 'productEditor.do?productId=6401&new=true',
				'nodesign': 'productEditor.do?productId=6401&templateId=empty&new=true'
			},
			'beer_mug': {
				'design': 'productEditor.do?productId=24&new=true',
				'nodesign': 'productEditor.do?productId=24&templateId=empty&new=true'
			},
			'cup_color': 'productSettings.do?productid=6398&new=true',
			'animal_pendant': 'productSettings.do?productid=7106&new=true',
			'stuff_calendar': {
				'': ''
			},
			'saving_box': {
				'design': 'productEditor.do?productId=700&new=true',
				'nodesign': 'productEditor.do?productId=700&templateId=empty&new=true'
			},

			// Collageblock
			'collageblock_a5': 'productEditor.do?productId=10713&new=true',
			'collageblock_a5_notemplate': 'productEditor.do?productId=10713&templateId=empty&new=true',
			'collageblock_a4': 'productEditor.do?productId=10712&new=true',

			// School articles
			'bread_box': 'productEditor.do?productId=10716&new=true',
			'childrens_backpack': 'productEditor.do?productId=10717&new=true',
			'sports_bag': 'productEditor.do?productId=10718&new=true',
			'feather_bag': 'productEditor.do?productId=10719&new=true',
			'school_agenda': {
				'design': 'productEditor.do?productId=10721&new=true',
				'nodesign': 'productEditor.do?productId=10721&templateId=empty&new=true'
			},
			'agenda': {
				'design': 'productEditor.do?productId=10720&new=true',
				'nodesign': 'productEditor.do?productId=10720&templateId=empty&new=true'
			},
			'write_notebook_a4': 'productEditor.do?productId=10722&new=true',
			'write_notebook_a5': 'productEditor.do?productId=10723&new=true',
			'note_issue': 'productEditor.do?productId=10724&new=true',
			'friendsbook': {
				'design': 'productEditor.do?productId=10725&new=true',
				'nodesign': 'productEditor.do?productId=10725&templateId=empty&new=true'
			},
			'letter_paper': 'productEditor.do?productId=8240&new=true',


			// COPS 2.3 articles
			'glass_clock': 'productEditor.do?new=true&productId=917&new=true',
			'magnet': 'productEditor.do?new=true&productId=662&new=true',
			'pillow_heart': 'productEditor.do?new=true&productId=911&new=true',
			'puzzle_xxl': 'productEditor.do?new=true&productId=4005&new=true',
			'advent_calendar': 'productEditor.do?new=true&productId=417&new=true',
			'poster_xxl': 'productEditor.do?new=true&productId=1213&new=true',
			'poster_xxl_30': 'productEditor.do?new=true&productId=1200&new=true',
			'poster_debond': 'productEditor.do?new=true&productId=1004&new=true&templateId=empty',
			'poster_acryl': 'productEditor.do?new=true&productId=1104&new=true&templateId=empty',
			'calendar_photopaper_A2': 'productEditor.do?new=true&productId=6288&new=true',
			'calendar_A3_square': 'productEditor.do?new=true&productId=6292&new=true',

			// Calendar
			'annual_calendar_A3_across': 'productEditor.do?productId=6283&new=true',
			'kitchen_planner': 'productEditor.do?productId=6282&new=true',
			'decorative_calendar_A4_upright': 'productEditor.do?productId=6279&new=true',
			'decorative_calendar_A3_upright': 'productEditor.do?productId=6281&new=true',
			'family_calendar_A4_across': 'productEditor.do?productId=6278&new=true',
			'put_up_table_planner': 'productEditor.do?productId=6280&new=true',
			'table_planner': 'productEditor.do?productId=6277&new=true',

			'calendar_name_a3' : 'productEditor.do?productId=6291&templateId=001-CAL11P-CC&personalized=true&new=true',
			'calendar_name_a4' : 'productEditor.do?productId=6289&templateId=001-CAL9P-CC&personalized=true&new=true',

			'table_calendar': 'productEditor.do?productId=51&new=true',
			'calendar_photopaper_a4_upright': 'productEditor.do?productId=6284&new=true',
			'calendar_photopaper_a3_upright': 'productEditor.do?productId=6285&new=true',
			'calendar_photopaper_a3_across': 'productEditor.do?productId=6286&new=true',
			'calendar_photopaper_square': 'productEditor.do?productId=6287&new=true',

			// Canvas
			'canvas': 'productSettings.do?productid=881',
			'deco_canvas': 'productEditor.do?productId=881&new=true&templateId=empty',
			'canvas_more_formats': 'productEditor.do?productId=881&new=true&templateId=empty',

			// Poster
			'poster': '###order_poster###',
			'deco_poster': 'productEditor.do?productId=904&new=true&templateId=empty',
			'poster_map': 'productEditor.do?new=true&productId=904&geomap=true&templateId=empty',
			'poster_debond_direct_print': 'productEditor.do?new=true&productId=8149&new=true&templateId=empty',
			'poster_acryl_direct_print': 'productEditor.do?new=true&productId=8153&new=true&templateId=empty',

			// Greetingcards
			'greetingcard': {
				'design': 'productEditor.do?productId=6426&new=true',
				'nodesign': 'productEditor.do?productId=6426&templateId=empty&new=true'
			},
			'card_xl_long': {
				'design': 'productEditor.do?productId=6414&new=true',
				'nodesign': 'productEditor.do?productId=6414&templateId=empty&new=true'
			},
			'card_xl_short': {
				'design': 'productEditor.do?productId=6413&new=true',
				'nodesign': 'productEditor.do?productId=6413&templateId=empty&new=true'
			},
			'card_classic': {
				'design': 'productEditor.do?productId=6051&new=true',
				'nodesign': 'productEditor.do?productId=6051&templateId=empty&new=true'
			},
			'postcard_xl': {
				'design': 'productEditor.do?productId=6424&new=true',
				'nodesign': 'productEditor.do?productId=6424&templateId=empty&new=true'
			},
			'postcard_classic': {
				'design': 'productEditor.do?productId=6050&new=true',
				'nodesign': 'productEditor.do?productId=6050&templateId=empty&new=true'
			},

			// Greetingcards VARIO
			'greetingcard_vario': 'designTemplateSelector.do?productIds=6426',
			'card_xl_long_vario': {
				'design' : 'designTemplateSelector.do?productIds=6414,6423',
				'nodesign' : 'designTemplateSelector.do?productIds=6957,6958'
			},
			'card_xl_short_vario': {
				'design' : 'designTemplateSelector.do?productIds=6413,6422',
				'nodesign' : 'designTemplateSelector.do?productIds=6955,6956'
			},
			'card_classic_vario': {
				'design' : 'designTemplateSelector.do?productIds=6051,6425',
				'nodesign' : 'designTemplateSelector.do?productIds=6953,6954'
			},
			'postcard_xl_vario': {
				'design' : 'designTemplateSelector.do?productIds=6424',
				'nodesign' : 'designTemplateSelector.do?productIds=6960'
			},
			'postcard_classic_vario': {
				'design' : 'designTemplateSelector.do?productIds=6050',
				'nodesign' : 'designTemplateSelector.do?productIds=6959'
			},
			//Tablecards
			'table_cards': 'productEditor.do?new=true&productId=8120&new=true',

			'software': (typeof(lnk_software) != 'undefined' ? lnk_software : ''),

			// Photobook
			'photobook': (typeof(lnk_software) != 'undefined' ? lnk_software : ''),
			
			// Photobook
			'photobook_online': (typeof(lnk_software) != 'undefined' ? lnk_software : ''),
			
			//photos
			'photo_acryl': 'productEditor.do?productId=8110&new=true',

			// Textilshop
			'textil_babybody': 'textileEditor.do?productGroupId=2010&color=1',
			'textil_baseball_tshirt': 'textileEditor.do?productGroupId=2002&color=1',
			'textil_baseball_cap': 'textileEditor.do?productGroupId=2011&color=1',
			'textil_bib': 'textileEditor.do?productGroupId=2009&color=1',
			'textil_kids_tshirt': 'textileEditor.do?productGroupId=2008&color=1',
			'textil_men_longsleeve': 'textileEditor.do?productGroupId=2003&color=1',
			'textil_men_premium_tshirt': 'textileEditor.do?productGroupId=2001&color=1',
			'textil_men_tshirt_american': 'textileEditor.do?productGroupId=2005&color=1',
			'textil_pillow_no_filling': 'textileEditor.do?productGroupId=2014&color=1',
			'textil_pinaforte': 'textileEditor.do?productGroupId=2013&color=1',
			'textil_stuff_handlebag': 'textileEditor.do?productGroupId=2012&color=1',
			'textil_women_longsleeve': 'textileEditor.do?productGroupId=2004&color=1',
			'textil_women_tshirt': 'textileEditor.do?productGroupId=2007&color=1',
			'textil_women_tshirt_american': 'textileEditor.do?productGroupId=2006&color=1'
		};
		


		var new_link = '';
		var url_target = order_link;
		if (product == 'photobook' || product == 'software')
		{
			url_target = '';
		}


		if (order_links[product] && order_links[product][design] && order_links[product][design][value])
		{
			new_link = url_target + order_links[product][design][value];
		}
		else if (order_links[product] && order_links[product][design])
		{
			new_link = url_target + order_links[product][design];
		}
		else if (order_links[product])
		{
			new_link = url_target + order_links[product];
		}
		else
		{
			link.href = '';
			link.style.display = 'none';
			return false;
		}
		
		if (typeof(online_photobook) != 'undefined' && online_photobook == 'true' && typeof(lnk_photobook_switch) != 'undefined' && lnk_photobook_switch && product == 'photobook_online')
		{
			new_link = lnk_photobook_switch; 
		}

		link.href = new_link;
		link.style.display = 'block';

		var icarousel_order_link = null;
		if (document.getElementById('icarousel_link'))
		{
			icarousel_order_link = document.getElementById('icarousel_link');
			icarousel_order_link.innerHTML = link.innerHTML;
			icarousel_order_link.style.display = 'block';
			icarousel_order_link.href = new_link;
		}

		return true;
	}
	else
	{
		link.href = '';
		link.style.display = 'none';
		return false;
	}
}

function setOrderLinks(plugin) {
	var AllLinks = document.getElementsByTagName('a');

	var target = 'selectClient.do?type=';
	if (typeof(plugin.activex) != 'undefined' && plugin.activex) {
		target = 'startClient.do?client=actx&type=';
	}
	else if (typeof(plugin.java) != 'undefined' && plugin.java) {
		target = 'startClient.do?client=java&type=';
	}

	/** check photos and poster type for link **/
	if (typeof(icarousel_link) != 'undefined' && icarousel_link.length > 0) {
		for (var i = 0; i < icarousel_link.length; i++) {
			if (typeof(icarousel_link[i]) != 'undefined')
			{
				var iLink = $('icarousel_link');

				if (icarousel_link[i]['link'].indexOf('###') >= 0) {
					if (icarousel_link[i]['link'].indexOf('###order_photos###') >= 0) {

						icarousel_link[i]['link'] = order_link + target + 'print';

						/*if (typeof(order_way_selection) != 'undefined' && order_way_selection == 'true') {
							icarousel_link[i]['link'] = 'onoffline_selection.html?link=' + escape(icarousel_link[i]['link']);
							iLink.rev = "width: 1001px; height: 631px; border:0; scrolling: no; top: 20px;"
							iLink.setAttribute('rel', 'lyteframe');
						}*/
					}
					else if (icarousel_link[i]['link'].indexOf('###order_photos_standard###') >= 0) {
						icarousel_link[i]['link'] = order_link + target + 'print&pmId=standard';
					}
					else if (icarousel_link[i]['link'].indexOf('###order_poster###') >= 0) {
						icarousel_link[i]['link'] = order_link + target + 'poster';
					}

					iLink.href.replace(/###.+###/i, icarousel_link[i]['link']);
				}
			}
		}
	}

	/** change the place holder with links **/
	for (var i = 0; i < AllLinks.length; i++) {
		if (AllLinks[i].href.indexOf('###') > 0 || AllLinks[i].href.indexOf('#%23%23') > 0) {

			var link = AllLinks[i].href = AllLinks[i].href.replace("#%23%23", "###");
			link = AllLinks[i].href = link.replace("%23%23%23", "###");

			if (link.indexOf('###order_photos###') > 0) {
				AllLinks[i].href = link.replace(/.*###order_photos###/, order_link + target + 'print');

				/*if (typeof(order_way_selection) != 'undefined' && order_way_selection == 'true') {
					AllLinks[i].href = 'onoffline_selection.html?link=' + escape(AllLinks[i].href);
					AllLinks[i].rev = "width: 1001px; height: 631px; border:0; scrolling: no; top: 20px;"
					AllLinks[i].setAttribute('rel', 'lyteframe');
				}*/
			}
			else if (link.indexOf('###order_photos_standard###') > 0) {
				AllLinks[i].href = link.replace(/.*###order_photos_standard###/, order_link + target + 'print&pmId=standard');
			}
			else if (link.indexOf('###order_poster###') > 0) {
				AllLinks[i].href = order_link + target + 'poster';
			}
			else if (link.indexOf('###order_businesscards###') > 0)
			{
				AllLinks[i].href = order_link + 'bcSearchTemplates.do';
			}
			else if (link.indexOf('###textil_shop###') > 0)
			{
				AllLinks[i].href = order_link + 'textileshopOverview.do';
			}
			else if (link.indexOf('###textil_shop_design###') > 0)
			{
				AllLinks[i].href = order_link + link.replace(/^.*###textil_shop_design###/, 'textileEditorWithDesign.do?design=');
			}
			else if (link.indexOf('###link_terms###') > 0)
			{
				AllLinks[i].href = order_link + 'sbc.do';
			}
			else if (link.indexOf('###online_album###') > 0)
			{
				AllLinks[i].href = order_link + 'myPhotosIntro.do';
			}
			else if (link.indexOf('###login_page###') > 0)
			{
				AllLinks[i].href = order_link + 'loginRegister.do';
			}
			else if (link.indexOf('###download_windows###') > 0)
			{
				if(getAffiliate() != null && typeof(keyaccount) != 'undefined' && keyaccount != '')
				{
					AllLinks[i].href = 'http://dls.photoprintit.de/api/getClient/' + keyaccount + '/hps/' + getAffiliate() + '/windows'
				}
				else
				{
					AllLinks[i].href = typeof(software_path_windows) != 'undefined' ? software_path_windows : '';
				}
			}
			else if (link.indexOf('###download_mac###') > 0)
			{
				if(getAffiliate() != null && typeof(keyaccount) != 'undefined' && keyaccount != '')
				{
					AllLinks[i].href = 'http://dls.photoprintit.de/api/getClient/' + keyaccount + '/hps/' + getAffiliate() + '/mac'
				}
				else
				{
					AllLinks[i].href = typeof(software_path_mac) != 'undefined' ? software_path_mac : '';
				}
			}
			else if (link.indexOf('###download_linux###') > 0)
			{
				if(getAffiliate() != null && typeof(keyaccount) != 'undefined' && keyaccount != '')
				{
					AllLinks[i].href = 'http://dls.photoprintit.de/api/getClient/' + keyaccount + '/hps/' + getAffiliate() + '/linux'
				}
				else
				{
					AllLinks[i].href = typeof(software_path_linux) != 'undefined' ? software_path_linux : '';
				}
			}
			else if (link.indexOf('###account_page###') > 0)
			{
				AllLinks[i].href = order_link + 'myAccount.do';
			}
			else if (link.indexOf('###register_page###') > 0)
			{
				AllLinks[i].href = order_link + 'myAccountRegister.do';
			}
			else if (link.indexOf('###order_tracking_url###') > 0)
			{
				AllLinks[i].href = typeof(order_tracking_url) != 'undefined' ? order_tracking_url : '';
			}
			else if (link.indexOf('###faq_url###') > 0)
			{
				AllLinks[i].href = typeof(faq_url) != 'undefined' ? faq_url : '';
			}
			else if (link.indexOf('###contact_url###') > 0)
			{
				AllLinks[i].href = typeof(contact_url) != 'undefined' ? contact_url : '';
			}
			else if (link.indexOf('###photobook_reorder_url###') > 0)
			{
				AllLinks[i].href = order_link + 'reorder.do';
			}
			else if (link.indexOf('###gallery_photos###') > 0)
			{
				AllLinks[i].href = order_link + 'showGalleryPhotos.do';
			}
			else if (link.indexOf('###gallery_photobooks###') > 0)
			{
				AllLinks[i].href = order_link + 'showGalleryPhotobooks.do';
			}
			else if (link.indexOf('###gallery_storage###') > 0)
			{
				AllLinks[i].href = order_link + 'showStorage.do';
			}
			else if (link.indexOf('###photobook_wizard###') > 0)
			{
				AllLinks[i].href = order_link + 'photobookWizardIntro.do';
			}
			else if (link.indexOf('###shopping_cart###') > 0)
			{
				AllLinks[i].href = order_link + 'shoppingcart.do';
			}
			else if (link.indexOf('###greetingcard###') > 0)
			{
				AllLinks[i].href = order_link + 'productEditor.do?productId=6426&new=true';
			}
			else if (link.indexOf('###card_classic###') > 0)
			{
				AllLinks[i].href = order_link + 'productEditor.do?productId=6051&new=true';
			}
			else if (link.indexOf('###decorative_calendar_A4_upright###') > 0)
			{
				AllLinks[i].href = order_link + 'productEditor.do?productId=6279&new=true';
			}
			else if (link.indexOf('###decorative_calendar_A3_upright###') > 0)
			{
				AllLinks[i].href = order_link + 'productEditor.do?productId=6281&new=true';
			}
		}

		if (AllLinks[i].target == '_lytebox') {
			AllLinks[i].rev = "width: 800px; height: 600px; border:0; scrolling: no;"
			AllLinks[i].setAttribute('rel', 'lyteframe');
		}

	}
}

function setLoginFrame()
{
	if (document.getElementById('login_iframe'))
	{
		var loginDiv = document.getElementById('login_iframe');

		if (document.URL.indexOf('https://') >= 0) {
			order_link = order_link.replace(/http:\/\//, 'https://');
		}
		if (document.URL.match(/(as[0-9]{0,2}\.photoprintit\.)/) != null && document.URL.match(/(as[0-9]{0,2}\.photoprintit\.)/).length > 0) {
			order_link = '';
		}

		var url = order_link + 'externalLogin.do';
		
		if(getAffiliate() != null)
		{
			url = url + '?aid=' + getAffiliate();
		}

		var iFrame = document.createElement("iframe");
		iFrame.src = url;
		iFrame.style.display = "block";
		iFrame.frameBorder = '0';
		iFrame.scrolling = 'no';
		iFrame.allowTransparency = "true";

		if (iFrame.attachEvent) {
			iFrame.attachEvent('onload',
				function (evt) {
					document.getElementById('login_iframe').style.background = '';
				}
			);
		}
		else if (iFrame.onload) {
			iFrame.onload = function() {
				document.getElementById('login_iframe').style.background = '';
			}
		}
		else if (iFrame.setAttribute) {
			iFrame.setAttribute('onload', "document.getElementById('login_iframe').style.background = '';");
		}

		iFrame.setAttribute('name', 'loginFrame');

		loginDiv.appendChild(iFrame);
	}
}

function animation(elements, options)
{
	this.elements = elements;
	this.options = new Abstract({ // Defaults
		type: 'blink',
		delay: 300,
		times: 3
	});
	if($type(options) == 'object') {this.options.extend(options);}

	this.start = function() {
		if (this.options.type == 'blink')
		{
			for (var i = 0; i < this.elements.length; i++)
			{
				this.elements[i].setStyle('opacity', '1');
				for (j = 0; j < (this.options.times * 2); j+=2)
				{
					this.fadeout.delay(j * this.options.delay, this.elements[i]);
					this.fadein.delay((j + 1) * this.options.delay, this.elements[i]);
				}
			}
		}
	}
	this.fadein = function() {
		this.fadein = new Fx.Style(this, 'opacity', {duration: 300}).start(this.style.opacity, 1);
	}
	this.fadeout = function() {
		this.fadein = new Fx.Style(this, 'opacity', {duration: 300}).start(this.style.opacity, 0.0001);
	}

	this.start();
}
function animateInfo()
{
	if (typeof(Fx) != 'undefined') {
		var options = new Abstract({ // Defaults
			type: 'blink',
			delay: 400,
			times: 2
		});
		var animate = new animation($$('div.info_container'), options);
	}
}

function writeCookie(name, value, days)
{
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name)
{
	createCookie(name,"",-1);
}

function check_parameter(name, default_value, possible_values)
{
	if (sHref.indexOf(name + "=")!= -1) {
		var search = /[&?]system\=([0-9A-Za-z]*)/;
		search.exec(sHref);
		if (possible_values.indexOf(RegExp.$1) != -1)
		{
			return RegExp.$1;
		}
	}
	return default_value
}

function getServerSystem(server_url_live, server_url_test) {
	if (sHref.indexOf("system=")!= -1) {
		var search = /[&?]system\=([0-9a-z-_]*)/;
		search.exec(sHref);
		writeCookie('serverSystem', RegExp.$1);
	}
	else if (readCookie('serverSystem') == null) {
		writeCookie('serverSystem', 'live');
	}

	var cookie = readCookie('serverSystem');
	if (cookie != null)
	{
		if (cookie == 'live') {return server_url_live;}
		else if (cookie == 'test') {return server_url_test;}
		else if (cookie == 'localhost') {return 'localhost';}
		else if(cookie.search(/^[0-9a-z-]+\_[a-z-]+\_[a-z-]+$/) == 0) {return cookie.replace(/_/g, '.');}
		else {return server_url_live;}
	}
	else
	{
		return server_url_live;
	}
}

function setServerSystemTitle()
{
	if (readCookie('serverSystem') != 'live')
	{
		// document.title = document.title + ' [TEST]';
	}
}

function setToolTips() {
	if (typeof($$) != 'undefined') {

		var elements = $$('a.info,a.saveOnlineInfo,a.indexInfo');

		elements.each(function(element,index,object) { 

			if (typeof(elements[index].title) != 'undefined' && $(elements[index].title))
			{
				var content = $(elements[index].title).innerHTML;

				if (content.toLowerCase() == '<h1></h1><br>')
				{
					elements[index].style.display = 'none';
				}
				else {
					new Tips(element, {
						initialize:function(){
							this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 300, wait: false}).set(0);
							this.toolTip.className = 'user-tip';
							this.toolTip.innerHTML = content;
						},
						onShow: function(toolTip) {
							this.fx.start(1);
						},
						onHide: function(toolTip) {
							this.fx.start(0);
						},
						className: 'user-tip',
						offsets: {'x': 20, 'y': (element.className == 'saveOnlineInfo' || element.className == 'indexInfo') ? -85 : 20}
					});
				}
			}

		});
	}
}

function displayTeaserContent(content, opener, position, orientation, fadeOutDelay) {
	var child = $(content);
	var element = $(opener);
	var position = position ? position : 'bottom';
	var orientation = orientation ? orientation : 'left';
	var fadeOut = fadeOutDelay ? fadeOutDelay : false;
	var fadeTtimeOut = null;

	if (child && element) {

		var fx = new Fx.Style(child, 'opacity', {duration: 300, wait: false}).set(0);

		if (element.childNodes[(is_ie ? 1 : 3)].className != 'html_content')
		{
			element.onmouseover = function() {
				if (child.childNodes[0].innerHTML != '')
				{
					child.style.display = 'block';
					oldPosition = element.style.position;
					element.style.position = 'relative';
					element.style.zIndex = 950;
					element.style.overflow = 'visible';
					child.style.position = 'absolute';

					var left = 0;
					var top = 0;

					switch (position)
					{
						case 'top':
							top = -1 * child.offsetHeight;
							break;
						case 'right':
							left = element.offsetWidth - 1;
							break;
						case 'bottom':
							top = element.offsetHeight - 1;
							break;
						case 'left':
							left = -1 * child.offsetWidth;
							break;
					}

					switch (orientation)
					{
						case 'top':
							top = -1;
							break;
						case 'right':
							left = element.offsetWidth - child.offsetWidth;
							break;
						case 'bottom':
							top = element.offsetHeight - child.offsetHeight;
							break;
						case 'left':
							left = -1;
							break;
					}

					child.style.left = left + 'px';
					child.style.top = top + 'px';

					fx.start(1);
					if (fadeOutDelay) {
						fadeTtimeOut = window.setTimeout(function() {fx.start(0)}.bind(this), fadeOutDelay);
					}
				}
			}.bind(this);

			element.onmouseout = function() {
				if (child.childNodes[0].innerHTML != '')
				{
					element.style.overflow = 'hidden';
					element.style.zIndex = 900;
					$clear(fadeTtimeOut);
					fx.start(0);
				}
			}.bind(this);
		}
		else {
			element.style.overflow = 'hidden';
		}
	}
}

function GET(parameter)
{
	HTTP_GET_VARS = new Array();
	strGET = document.location.search.substr(1, document.location.search.length);

	if(strGET != '')
	{
		gArr = strGET.split('&');
		for(i=0; i<gArr.length; ++i) {
			v = ''; vArr = gArr[i].split('=');
			if(vArr.length > 1) {
				v = vArr[1];
			}
			HTTP_GET_VARS[unescape(vArr[0])] = unescape(v);
		}
	}

	if(!HTTP_GET_VARS[parameter]){return 'undefined';}
	return HTTP_GET_VARS[parameter];
}

/** send forms over mootools **/
function send_form(link_element, form_element, redirect, loading_element, failure_element)
{
	var fx = {
		'loading': new Fx.Style(loading_element, 'opacity' ),
		'failure': new Fx.Style(failure_element, 'opacity' )
	};

	var showHide = function( el ){
		fx.loading.set(0);
		(fx[ el ]).start(0,1);
		(function(){ (fx[ el ]).start(1,0); }).delay( 4000 );
	}

	$(form_element).send({
		onRequest: function(){
			fx.loading.start( 0,1 );
		},
		onSuccess: function(){
			window.location = redirect;
		},
		onFailure: function(){
			fx.loading.set(0);
			showHide('failure');
		}
	});

	return false;
}

function validateEmail(email)
{
	var splitted = email.match("^(.+)@(.+)$");
	if(splitted == null) return false;
	if(splitted[1] != null )
	{
		var regexp_user=/^\"?[\w-_\.]*\"?$/;
		if(splitted[1].match(regexp_user) == null) return false;
	}
	if(splitted[2] != null)
	{
		var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
		if(splitted[2].match(regexp_domain) == null) 
		{
			var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
			if(splitted[2].match(regexp_ip) == null)return false;
		}
		return true;
	}
	return false;
}

function setRoundedCorners()
{
	var elements = $$('.roundedCornerElement');

	elements.each(function(element,index,object) { 
		var options = element.className.match(/\{.+\}/);
		var tmp = new Object();
		tmp = eval('var options = ' + options);
		var roundedCorners = new roundCorners(options);
		roundedCorners.generate(element);
	});

	if (operator == '84010422') {

		var options = {radius:8,antiAliase:true}

		var element = $('login');
		var roundedCorners = new roundCorners(options);
		roundedCorners.generate(element);

		var element = $('cart');
		var roundedCorners = new roundCorners(options);
		roundedCorners.generate(element);
	}
	
	if(typeof(teaser_round_corners) != 'undefined' && $('page_ips') == false) {
		if(teaser_round_corners['set'] == 1) {
			var elements = $$('.teaser');
			elements.each(function(element,index,object) {
				teaser_round_corners['antiAliase'] = true;
				var roundedCorners = new roundCorners(teaser_round_corners);
				roundedCorners.generate(element);
			});
			if($('lightbox') != false) {
				if($('lightbox').getStyle('display') != 'none') {
					var element = $('lightbox');
					var roundedCorners = new roundCorners(teaser_round_corners);
					roundedCorners.generate(element);
				}
			}
			if($('sub_nav') != false) {
				if($('sub_nav').getStyle('display') != 'none') {
					var element = $('sub_nav');
					var roundedCorners = new roundCorners(teaser_round_corners);
					roundedCorners.generate(element);
				}
			}
			if($$('.product_teaser_order') != false) {
				if($$('.product_teaser_order').getStyle('display') != 'none') {
					var element = $$('.product_teaser_order');
					var roundedCorners = new roundCorners(teaser_round_corners);
					roundedCorners.generate(element);
				}
			}
			if($$('.no_border') != false) {
				if($$('.no_border').getStyle('display') != 'none') {
					addNewStyle('.no_border', 'border: 1px solid #F0F0F0 !important;');
				}
			}
			if($$('.full_teaser') != false) {
				if($$('.full_teaser').getStyle('display') != 'none') {
					addNewStyle('.full_teaser', 'border: 1px solid #F0F0F0 !important;');
				}
			}
			if($$('.default_full_teaser') != false) {
				if($$('.default_full_teaser').getStyle('display') != 'none') {
					addNewStyle('.default_full_teaser', 'border: 1px solid #F0F0F0 !important;');
				}
			}
		}
	}
}

function addNewStyle(myElement, newStyle) {
  if(document.styleSheets.item(0).addRule)
	{
	  var style = document.createElement('style');
	  document.getElementsByTagName('head').item(0).appendChild(style);
    document.styleSheets.item(0).addRule(myElement, newStyle);
    document.getElementsByTagName('body').item(0).className = myElement;
  }
	else
	{
	  var styleElement = document.getElementById('styles_js');
	  if (!styleElement) {
	      styleElement = document.createElement('style');
	      styleElement.type = 'text/css';
	      styleElement.id = 'styles_js';
	      document.getElementsByTagName('head')[0].appendChild(styleElement);
	  }
	  styleElement.appendChild(document.createTextNode(myElement+' {'+newStyle+'}'));
	}
}

function setPriceGraphics()
{
	if (typeof(priceElements) != 'undefined' && priceElements.length > 0)
	{
		for (i = 0; i < priceElements.length; i++)
		{
			new Ajax('/cgi-bin/prices_handler.cgi', {
				method: 'get',
				data: priceElements[i][0],
				evalScripts: true,
				onRequest: function(request) {
					this.element = $$('.' + priceElements[i][1]);
				},
				onComplete: function (response) {
					for (i = 0; i < this.element.length; i++) {
						if (response != '') {
							this.element[i].innerHTML = response;
						}
						this.element[i].style.display = "block";
					}
				}
			}).request();
		};
	}
}

function setSftDownloadLink(element, version) {
	element.href = element.href + '?version=' + version;
}

function setSftDownload() {
	setSftDownloadLink($('sft_download_win'), 'windows');
	setSftDownloadLink($('sft_download_linux'), 'linux');
	setSftDownloadLink($('sft_download_mac'), 'mac');
	setSftDownloadLink($('sft_download_win_small'), 'windows');
	setSftDownloadLink($('sft_download_linux_small'), 'linux');
	setSftDownloadLink($('sft_download_mac_small'), 'mac');
}

function setAffiliate()
{
	if(readCookie("affiliate") == null)
	{
		if(GET('cref') != 'undefined')
		{
			writeCookie('affiliate', GET('cref'), '30');
		}
	}
	else
	{
		if(GET('cref') != 'undefined')
		{
			if(GET('cref') != readCookie("affiliate"))
			{
				writeCookie('affiliate', GET('cref'), '30');
			}
		}
	}
}

function getAffiliate()
{
	if(readCookie("affiliate") != null)
	{
		return readCookie("affiliate");
	}
	else
	{
		return null;
	}
}

function startDlsDownload()
{
	var src = '';
    var version = GET('version') != 'undefined' ? GET('version') : 'windows';

    switch (version) {
    	case 'windows':
        	src = software_path_windows;
        break;
        case 'mac':
        	src = software_path_mac;
        break;
        case 'linux':
        	src = software_path_linux;
        break;
    }
	
	if(getAffiliate() != null && typeof(keyaccount) != 'undefined'  && keyaccount != '')
	{
		src = 'http://dls.photoprintit.de/api/getClient/' + keyaccount + '/hps/' + getAffiliate() + '/' + version
	}

	var newFrame = document.createElement("IFRAME");
    newFrame.setAttribute('src', src);
    newFrame.style.display = 'none';
    document.body.appendChild(newFrame);
}

/** initialize some basic onload functions **/
window.onload = function()
{
	setServerSystemTitle();

	setAffiliate();

	if (document.getElementById('java_info'))
	{
		document.getElementById('java_info').style.display = 'none';
	}

	if (typeof(iflow_lightbox) != 'undefined')
	{
		iflow_lightbox = new iflow_lightbox;
		iflow_lightbox.onload();
	}

	if (typeof(iflow_products) != 'undefined')
	{
		iflow_products = new iflow_products;
		iflow_products.onload();
	}

	var plugin = false;
	if (typeof(PluginDetection) != 'undefined') {
		plugin = new PluginDetection();
	}

	setTimeout("setPriceGraphics()", 200);
	setOrderLinks(plugin);
	setLoginFrame();

	if (window.MooTools) {
		setRoundedCorners();
	}

	animateInfo();
	setToolTips();
};
//***********************************************************************************************************************************/
//	LyteBox v3.22
//
//	 Author: Markus F. Hay
//  Website: http://www.dolem.com/lytebox
//	   Date: October 2, 2007
//	License: Creative Commons Attribution 3.0 License (http://creativecommons.org/licenses/by/3.0/)
// Browsers: Tested successfully on WinXP with the following browsers (using no DOCTYPE and Strict/Transitional/Loose DOCTYPES):
//				* Firefox: 2.0.0.7, 1.5.0.12
//				* Internet Explorer: 7.0, 6.0 SP2, 5.5 SP2
//				* Opera: 9.23
//
// Releases: For up-to-date and complete release information, visit http://www.dolem.com/forum/showthread.php?tid=62
//				* v3.22 (10/02/07)
//				* v3.21 (09/30/07)
//				* v3.20 (07/12/07)
//				* v3.10 (05/28/07)
//				* v3.00 (05/15/07)
//				* v2.02 (11/13/06)
//
//   Credit: LyteBox was originally derived from the Lightbox class (v2.02) that was written by Lokesh Dhakar. For more
//			 information please visit http://huddletogether.com/projects/lightbox2/
//***********************************************************************************************************************************/
Array.prototype.removeDuplicates = function () { for (var i = 1; i < this.length; i++) { if (this[i][0] == this[i-1][0]) { this.splice(i,1); } } }
Array.prototype.empty = function () { for (var i = 0; i <= this.length; i++) { this.shift(); } }
String.prototype.trim = function () { return this.replace(/^\s+|\s+$/g, ''); }

function LyteBox() {
	/*** Start Global Configuration ***/
		this.theme				= 'grey';	// themes: grey (default), red, green, blue, gold
		this.hideFlash			= true;		// controls whether or not Flash objects should be hidden
		this.outerBorder		= false;		// controls whether to show the outer grey (or theme) border
		this.resizeSpeed		= 8;		// controls the speed of the image resizing (1=slowest and 10=fastest)
		this.maxOpacity			= 60;		// higher opacity = darker overlay, lower opacity = lighter overlay
		this.navType			= 1;		// 1 = "Prev/Next" buttons on top left and left (default), 2 = "<< prev | next >>" links next to image number
		this.autoResize			= true;		// controls whether or not images should be resized if larger than the browser window dimensions
		this.doAnimations		= true;		// controls whether or not "animate" Lytebox, i.e. resize transition between images, fade in/out effects, etc.
		
		this.borderSize			= 0;		// if you adjust the padding in the CSS, you will need to update this variable -- otherwise, leave this alone...
	/*** End Global Configuration ***/
	
	/*** Configure Slideshow Options ***/
		this.slideInterval		= 4000;		// Change value (milliseconds) to increase/decrease the time between "slides" (10000 = 10 seconds)
		this.showNavigation		= false;		// true to display Next/Prev buttons/text during slideshow, false to hide
		this.showClose			= false;		// true to display the Close button, false to hide
		this.showDetails		= false;		// true to display image details (caption, count), false to hide
		this.showPlayPause		= false;		// true to display pause/play buttons next to close button, false to hide
		this.autoEnd			= true;		// true to automatically close Lytebox after the last image is reached, false to keep open
		this.pauseOnNextClick	= false;	// true to pause the slideshow when the "Next" button is clicked
        this.pauseOnPrevClick 	= true;		// true to pause the slideshow when the "Prev" button is clicked
	/*** End Slideshow Configuration ***/
	
	//add 27.05.2010
	this.doAnimations = false;	

	if(this.resizeSpeed > 10) { this.resizeSpeed = 10; }
	if(this.resizeSpeed < 1) { resizeSpeed = 1; }
	this.resizeDuration = (11 - this.resizeSpeed) * 0.15;
	this.resizeWTimerArray		= new Array();
	this.resizeWTimerCount		= 0;
	this.resizeHTimerArray		= new Array();
	this.resizeHTimerCount		= 0;
	this.showContentTimerArray	= new Array();
	this.showContentTimerCount	= 0;
	this.overlayTimerArray		= new Array();
	this.overlayTimerCount		= 0;
	this.imageTimerArray		= new Array();
	this.imageTimerCount		= 0;
	this.timerIDArray			= new Array();
	this.timerIDCount			= 0;
	this.slideshowIDArray		= new Array();
	this.slideshowIDCount		= 0;
	this.imageArray	 = new Array();
	this.activeImage = null;
	this.slideArray	 = new Array();
	this.activeSlide = null;
	this.frameArray	 = new Array();
	this.activeFrame = null;
	this.checkFrame();
	this.isSlideshow = false;
	this.isLyteframe = false;
	/*@cc_on
		/*@if (@_jscript)
			this.ie = (document.all && !window.opera) ? true : false;
		/*@else @*/
			this.ie = false;
		/*@end
	@*/
	this.ie7 = (this.ie && window.XMLHttpRequest);	
	this.initialize();
}
LyteBox.prototype.initialize = function() {
	if(typeof(this.doc) == "undefined") {
		this.doc = document;
	}
	this.updateLyteboxItems();
	var objBody = this.doc.getElementsByTagName("body").item(0);	
	if (this.doc.getElementById('lbOverlay')) {
		objBody.removeChild(this.doc.getElementById("lbOverlay"));
		objBody.removeChild(this.doc.getElementById("lbMain"));
	}
	var objOverlay = this.doc.createElement("div");
		objOverlay.setAttribute('id','lbOverlay');
		objOverlay.setAttribute((this.ie ? 'className' : 'class'), this.theme);
		if ((this.ie && !this.ie7) || (this.ie7 && this.doc.compatMode == 'BackCompat')) {
			objOverlay.style.position = 'absolute';
		}
		objOverlay.style.display = 'none';
		objBody.appendChild(objOverlay);
	var objLytebox = this.doc.createElement("div");
		objLytebox.setAttribute('id','lbMain');
		objLytebox.style.display = 'none';
		objBody.appendChild(objLytebox);
	var objOuterContainer = this.doc.createElement("div");
		objOuterContainer.setAttribute('id','lbOuterContainer');
		objOuterContainer.setAttribute((this.ie ? 'className' : 'class'), this.theme);
		objLytebox.appendChild(objOuterContainer);
	var objIframeContainer = this.doc.createElement("div");
		objIframeContainer.setAttribute('id','lbIframeContainer');
		objIframeContainer.style.display = 'none';
		objOuterContainer.appendChild(objIframeContainer);
	var objIframe = this.doc.createElement("iframe");
		objIframe.setAttribute('frameborder','0');
		objIframe.setAttribute('scrolling','yes');
		objIframe.setAttribute('id','lbIframe');
		objIframe.frameBorder= 0;
		objIframe.setAttribute('name','lbIframe');
		objIframe.style.display = 'none';
		objIframeContainer.appendChild(objIframe);
	var objImageContainer = this.doc.createElement("div");
		objImageContainer.setAttribute('id','lbImageContainer');
		objOuterContainer.appendChild(objImageContainer);
	var objLyteboxImage = this.doc.createElement("img");
		objLyteboxImage.setAttribute('id','lbImage');
		objImageContainer.appendChild(objLyteboxImage);
	var objLoading = this.doc.createElement("div");
		objLoading.setAttribute('id','lbLoading');
		objOuterContainer.appendChild(objLoading);
	var objDetailsContainer = this.doc.createElement("div");
		objDetailsContainer.setAttribute('id','lbDetailsContainer');
		objDetailsContainer.setAttribute((this.ie ? 'className' : 'class'), this.theme);
		objLytebox.appendChild(objDetailsContainer);
	var objDetailsData =this.doc.createElement("div");
		objDetailsData.setAttribute('id','lbDetailsData');
		objDetailsData.setAttribute((this.ie ? 'className' : 'class'), this.theme);
		objDetailsContainer.appendChild(objDetailsData);
	var objDetails = this.doc.createElement("div");
		objDetails.setAttribute('id','lbDetails');
		objDetailsData.appendChild(objDetails);
	var objCaption = this.doc.createElement("span");
		objCaption.setAttribute('id','lbCaption');
		objDetails.appendChild(objCaption);
	var objHoverNav = this.doc.createElement("div");
		objHoverNav.setAttribute('id','lbHoverNav');
		objImageContainer.appendChild(objHoverNav);
	var objBottomNav = this.doc.createElement("div");
		objBottomNav.setAttribute('id','lbBottomNav');
		objDetailsData.appendChild(objBottomNav);
	var objPrev = this.doc.createElement("a");
		objPrev.setAttribute('id','lbPrev');
		objPrev.setAttribute((this.ie ? 'className' : 'class'), this.theme);
		objPrev.setAttribute('href','#');
		objHoverNav.appendChild(objPrev);
	var objNext = this.doc.createElement("a");
		objNext.setAttribute('id','lbNext');
		objNext.setAttribute((this.ie ? 'className' : 'class'), this.theme);
		objNext.setAttribute('href','#');
		objHoverNav.appendChild(objNext);
	var objNumberDisplay = this.doc.createElement("span");
		objNumberDisplay.setAttribute('id','lbNumberDisplay');
		objDetails.appendChild(objNumberDisplay);
	var objNavDisplay = this.doc.createElement("span");
		objNavDisplay.setAttribute('id','lbNavDisplay');
		objNavDisplay.style.display = 'none';
		objDetails.appendChild(objNavDisplay);
	var objClose = this.doc.createElement("a");
		objClose.setAttribute('id','lbClose');
		objClose.setAttribute((this.ie ? 'className' : 'class'), this.theme);
		objClose.setAttribute('href','javascript:void(0);');
		objBottomNav.appendChild(objClose);
		objImageContainer.appendChild(objClose);
	var objPause = this.doc.createElement("a");
		objPause.setAttribute('id','lbPause');
		objPause.setAttribute((this.ie ? 'className' : 'class'), this.theme);
		objPause.setAttribute('href','#');
		objPause.style.display = 'none';
		objBottomNav.appendChild(objPause);
	var objPlay = this.doc.createElement("a");
		objPlay.setAttribute('id','lbPlay');
		objPlay.setAttribute((this.ie ? 'className' : 'class'), this.theme);
		objPlay.setAttribute('href','#');
		objPlay.style.display = 'none';
		objBottomNav.appendChild(objPlay);
};
LyteBox.prototype.updateLyteboxItems = function() {	
	var anchors = (this.isFrame) ? window.parent.frames[window.name].document.getElementsByTagName('a') : document.getElementsByTagName('a');
	for (var i = 0; i < anchors.length; i++) {
		var anchor = anchors[i];
		var relAttribute = String(anchor.getAttribute('rel'));
		if (anchor.getAttribute('href')) {
			if (relAttribute.toLowerCase().match('lytebox')) {
				anchor.onclick = function () { myLytebox.start(this, false, false); return false; }
			} else if (relAttribute.toLowerCase().match('lyteshow')) {
				anchor.onclick = function () { myLytebox.start(this, true, false); return false; }
			} else if (relAttribute.toLowerCase().match('lyteframe')) {
				anchor.onclick = function () { myLytebox.start(this, false, true); return false; }
			}
		}
	}
};
LyteBox.prototype.start = function(imageLink, doSlide, doFrame) {
	if (this.ie && !this.ie7) {	this.toggleSelects('hide');	}
	if (this.hideFlash) { this.toggleFlash('hide'); }
	this.isLyteframe = (doFrame ? true : false);
	var pageSize	= this.getPageSize();
	var objOverlay	= this.doc.getElementById('lbOverlay');
	var objBody		= this.doc.getElementsByTagName("body").item(0);
	objOverlay.style.height = pageSize[1] + "px";
	objOverlay.style.display = '';
	this.appear('lbOverlay', (this.doAnimations ? 0 : this.maxOpacity));
	var anchors = (this.isFrame) ? window.parent.frames[window.name].document.getElementsByTagName('a') : document.getElementsByTagName('a');
	if (this.isLyteframe) {
		this.frameArray = [];
		this.frameNum = 0;
		if ((imageLink.getAttribute('rel') == 'lyteframe')) {
			var rev = imageLink.getAttribute('rev');
			this.frameArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title'), (rev == null || rev == '' ? 'width: 400px; height: 400px; scrolling: auto;' : rev)));
		} else {
			if (imageLink.getAttribute('rel').indexOf('lyteframe') != -1) {
				for (var i = 0; i < anchors.length; i++) {
					var anchor = anchors[i];
					if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))) {
						var rev = anchor.getAttribute('rev');
						this.frameArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title'), (rev == null || rev == '' ? 'width: 400px; height: 400px; scrolling: auto;' : rev)));
					}
				}
				this.frameArray.removeDuplicates();
				while(this.frameArray[this.frameNum][0] != imageLink.getAttribute('href')) { this.frameNum++; }
			}
		}
	} else {
		this.imageArray = [];
		this.imageNum = 0;
		this.slideArray = [];
		this.slideNum = 0;
		if ((imageLink.getAttribute('rel') == 'lytebox')) {
			this.imageArray.push(new Array(imageLink.getAttribute('href'), imageLink.getAttribute('title')));
		} else {
			if (imageLink.getAttribute('rel').indexOf('lytebox') != -1) {
				for (var i = 0; i < anchors.length; i++) {
					var anchor = anchors[i];
					if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))) {
						this.imageArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title')));
					}
				}
				this.imageArray.removeDuplicates();
				while(this.imageArray[this.imageNum][0] != imageLink.getAttribute('href')) { this.imageNum++; }
			}
			if (imageLink.getAttribute('rel').indexOf('lyteshow') != -1) {
				for (var i = 0; i < anchors.length; i++) {
					var anchor = anchors[i];
					if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == imageLink.getAttribute('rel'))) {
						this.slideArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title')));
					}
				}
				this.slideArray.removeDuplicates();
				while(this.slideArray[this.slideNum][0] != imageLink.getAttribute('href')) { this.slideNum++; }
			}
		}
	}
	var object = this.doc.getElementById('lbMain');
		object.style.top = (this.getPageScroll() + (pageSize[3] / 6)) + "px";
		object.style.display = '';
	if (!this.outerBorder) {
		this.doc.getElementById('lbOuterContainer').style.border = 'none';
		this.doc.getElementById('lbDetailsContainer').style.border = 'none';
	} else {
		this.doc.getElementById('lbOuterContainer').style.borderBottom = '';
		this.doc.getElementById('lbOuterContainer').setAttribute((this.ie ? 'className' : 'class'), this.theme);
	}
	this.doc.getElementById('lbOverlay').onclick = function() { myLytebox.end(); return false; }
	this.doc.getElementById('lbMain').onclick = function(e) {
		var e = e;
		if (!e) {
			if (window.parent.frames[window.name] && (parent.document.getElementsByTagName('frameset').length <= 0)) {
				e = window.parent.window.event;
			} else {
				e = window.event;
			}
		}
		var id = (e.target ? e.target.id : e.srcElement.id);
		if (id == 'lbMain') { myLytebox.end(); return false; }
	}
	this.doc.getElementById('lbClose').onclick = function() { myLytebox.end(); return false; }
	this.doc.getElementById('lbPause').onclick = function() { myLytebox.togglePlayPause("lbPause", "lbPlay"); return false; }
	this.doc.getElementById('lbPlay').onclick = function() { myLytebox.togglePlayPause("lbPlay", "lbPause"); return false; }	
	this.isSlideshow = doSlide;
	this.isPaused = (this.slideNum != 0 ? true : false);
	if (this.isSlideshow && this.showPlayPause && this.isPaused) {
		this.doc.getElementById('lbPlay').style.display = '';
		this.doc.getElementById('lbPause').style.display = 'none';
	}
	if (this.isLyteframe) {
		this.changeContent(this.frameNum);
	} else {
		if (this.isSlideshow) {
			this.changeContent(this.slideNum);
		} else {
			this.changeContent(this.imageNum);
		}
	}
};
LyteBox.prototype.changeContent = function(imageNum) {
	if (this.isSlideshow) {
		for (var i = 0; i < this.slideshowIDCount; i++) { window.clearTimeout(this.slideshowIDArray[i]); }
	}
	this.activeImage = this.activeSlide = this.activeFrame = imageNum;
	if (!this.outerBorder) {
		this.doc.getElementById('lbOuterContainer').style.border = 'none';
		this.doc.getElementById('lbDetailsContainer').style.border = 'none';
	} else {
		this.doc.getElementById('lbOuterContainer').style.borderBottom = '';
		this.doc.getElementById('lbOuterContainer').setAttribute((this.ie ? 'className' : 'class'), this.theme);
	}
	this.doc.getElementById('lbLoading').style.display = '';
	this.doc.getElementById('lbImage').style.display = 'none';
	this.doc.getElementById('lbIframe').style.display = 'none';
	this.doc.getElementById('lbPrev').style.display = 'none';
	this.doc.getElementById('lbNext').style.display = 'none';
	this.doc.getElementById('lbIframeContainer').style.display = 'none';
	this.doc.getElementById('lbDetailsContainer').style.display = 'none';
	this.doc.getElementById('lbNumberDisplay').style.display = 'none';
	if (this.navType == 2 || this.isLyteframe) {
		object = this.doc.getElementById('lbNavDisplay');
		object.innerHTML = '&nbsp;&nbsp;&nbsp;<span id="lbPrev2_Off" style="display: none;" class="' + this.theme + '">&laquo; prev</span><a href="#" id="lbPrev2" class="' + this.theme + '" style="display: none;">&laquo; prev</a> <b id="lbSpacer" class="' + this.theme + '">||</b> <span id="lbNext2_Off" style="display: none;" class="' + this.theme + '">next &raquo;</span><a href="#" id="lbNext2" class="' + this.theme + '" style="display: none;">next &raquo;</a>';
		object.style.display = 'none';
	}
	if (this.isLyteframe) {
		var iframe = myLytebox.doc.getElementById('lbIframe');
		var styles = this.frameArray[this.activeFrame][2];
		var aStyles = styles.split(';');
		for (var i = 0; i < aStyles.length; i++) {
			if (aStyles[i].indexOf('width:') >= 0) {
				var w = aStyles[i].replace('width:', '');
				iframe.width = w.trim();
			} else if (aStyles[i].indexOf('height:') >= 0) {
				var h = aStyles[i].replace('height:', '');
				iframe.height = h.trim();
			} else if (aStyles[i].indexOf('scrolling:') >= 0) {
				var s = aStyles[i].replace('scrolling:', '');
				iframe.scrolling = s.trim();
			} else if (aStyles[i].indexOf('border:') >= 0) {
				// Not implemented yet, as there are cross-platform issues with setting the border (from a GUI standpoint)
				// var b = aStyles[i].replace('border:', '');
				// iframe.style.border = b.trim();
			}
		}
		this.resizeContainer(parseInt(iframe.width), parseInt(iframe.height));
	} else {
		imgPreloader = new Image();
		imgPreloader.onload = function() {
			var imageWidth = imgPreloader.width;
			var imageHeight = imgPreloader.height;
			if (myLytebox.autoResize) {
				var pagesize = myLytebox.getPageSize();
				var x = pagesize[2] - 150;
				var y = pagesize[3] - 150;
				if (imageWidth > x) {
					imageHeight = Math.round(imageHeight * (x / imageWidth));
					imageWidth = x; 
					if (imageHeight > y) { 
						imageWidth = Math.round(imageWidth * (y / imageHeight));
						imageHeight = y; 
					}
				} else if (imageHeight > y) { 
					imageWidth = Math.round(imageWidth * (y / imageHeight));
					imageHeight = y; 
					if (imageWidth > x) {
						imageHeight = Math.round(imageHeight * (x / imageWidth));
						imageWidth = x;
					}
				}
			}
			var lbImage = myLytebox.doc.getElementById('lbImage')
			lbImage.src = (myLytebox.isSlideshow ? myLytebox.slideArray[myLytebox.activeSlide][0] : myLytebox.imageArray[myLytebox.activeImage][0]);
			lbImage.width = imageWidth;
			lbImage.height = imageHeight;
			myLytebox.resizeContainer(imageWidth, imageHeight);
			imgPreloader.onload = function() {};
		}
		imgPreloader.src = (this.isSlideshow ? this.slideArray[this.activeSlide][0] : this.imageArray[this.activeImage][0]);
	}
};
LyteBox.prototype.resizeContainer = function(imgWidth, imgHeight) {
	this.wCur = this.doc.getElementById('lbOuterContainer').offsetWidth;
	this.hCur = this.doc.getElementById('lbOuterContainer').offsetHeight;
	this.xScale = ((imgWidth  + (this.borderSize * 2)) / this.wCur) * 100;
	this.yScale = ((imgHeight  + (this.borderSize * 2)) / this.hCur) * 100;
	var wDiff = (this.wCur - this.borderSize * 2) - imgWidth;
	var hDiff = (this.hCur - this.borderSize * 2) - imgHeight;
	if (!(hDiff == 0)) {
		this.hDone = false;
		this.resizeH('lbOuterContainer', this.hCur, imgHeight + this.borderSize*2, this.getPixelRate(this.hCur, imgHeight));
	} else {
		this.hDone = true;
	}
	if (!(wDiff == 0)) {
		this.wDone = false;
		this.resizeW('lbOuterContainer', this.wCur, imgWidth + this.borderSize*2, this.getPixelRate(this.wCur, imgWidth));
	} else {
		this.wDone = true;
	}
	if ((hDiff == 0) && (wDiff == 0)) {
		if (this.ie){ this.pause(250); } else { this.pause(100); } 
	}
	this.doc.getElementById('lbPrev').style.height = imgHeight + "px";
	this.doc.getElementById('lbNext').style.height = imgHeight + "px";
	this.doc.getElementById('lbDetailsContainer').style.width = (imgWidth + (this.borderSize * 2) + (this.ie && this.doc.compatMode == "BackCompat" && this.outerBorder ? 2 : 0)) + "px";
	this.showContent();
};
LyteBox.prototype.showContent = function() {
	if (this.wDone && this.hDone) {
		for (var i = 0; i < this.showContentTimerCount; i++) { window.clearTimeout(this.showContentTimerArray[i]); }
		if (this.outerBorder) {
			this.doc.getElementById('lbOuterContainer').style.borderBottom = 'none';
		}
		this.doc.getElementById('lbLoading').style.display = 'none';
		if (this.isLyteframe) {
			this.doc.getElementById('lbIframe').style.display = '';
			this.appear('lbIframe', (this.doAnimations ? 0 : 100));
		} else {
			this.doc.getElementById('lbImage').style.display = '';
			this.appear('lbImage', (this.doAnimations ? 0 : 100));
			this.preloadNeighborImages();
		}
		if (this.isSlideshow) {
			if(this.activeSlide == (this.slideArray.length - 1)) {
				if (this.autoEnd) {
					this.slideshowIDArray[this.slideshowIDCount++] = setTimeout("myLytebox.end('slideshow')", this.slideInterval);
				}
			} else {
				if (!this.isPaused) {
					this.slideshowIDArray[this.slideshowIDCount++] = setTimeout("myLytebox.changeContent("+(this.activeSlide+1)+")", this.slideInterval);
				}
			}
			this.doc.getElementById('lbHoverNav').style.display = (this.showNavigation && this.navType == 1 ? '' : 'none');
			this.doc.getElementById('lbClose').style.display = (this.showClose ? '' : 'none');
			this.doc.getElementById('lbDetails').style.display = (this.showDetails ? '' : 'none');
			this.doc.getElementById('lbPause').style.display = (this.showPlayPause && !this.isPaused ? '' : 'none');
			this.doc.getElementById('lbPlay').style.display = (this.showPlayPause && !this.isPaused ? 'none' : '');
			this.doc.getElementById('lbNavDisplay').style.display = (this.showNavigation && this.navType == 2 ? '' : 'none');
		} else {
			this.doc.getElementById('lbHoverNav').style.display = (this.navType == 1 && !this.isLyteframe ? '' : 'none');
			if ((this.navType == 2 && !this.isLyteframe && this.imageArray.length > 1) || (this.frameArray.length > 1 && this.isLyteframe)) {
				this.doc.getElementById('lbNavDisplay').style.display = '';
			} else {
				this.doc.getElementById('lbNavDisplay').style.display = 'none';
			}
			this.doc.getElementById('lbClose').style.display = '';
			this.doc.getElementById('lbDetails').style.display = '';
			this.doc.getElementById('lbPause').style.display = 'none';
			this.doc.getElementById('lbPlay').style.display = 'none';
		}
		//this.doc.getElementById('lbImageContainer').style.display = (this.isLyteframe ? 'none' : '');
		this.doc.getElementById('lbIframeContainer').style.display = (this.isLyteframe ? '' : 'none');
		try {
			this.doc.getElementById('lbIframe').src = this.frameArray[this.activeFrame][0];
		} catch(e) { }
	} else {
		this.showContentTimerArray[this.showContentTimerCount++] = setTimeout("myLytebox.showContent()", 200);
	}
};
LyteBox.prototype.updateDetails = function() {
	var object = this.doc.getElementById('lbCaption');
	var sTitle = (this.isSlideshow ? this.slideArray[this.activeSlide][1] : (this.isLyteframe ? this.frameArray[this.activeFrame][1] : this.imageArray[this.activeImage][1]));
	object.style.display = '';
	object.innerHTML = (sTitle == null ? '' : sTitle);
	this.updateNav();
	this.doc.getElementById('lbDetailsContainer').style.display = '';
	object = this.doc.getElementById('lbNumberDisplay');
	if (this.isSlideshow && this.slideArray.length > 1) {
		object.style.display = '';
		object.innerHTML = "Image " + eval(this.activeSlide + 1) + " of " + this.slideArray.length;
		this.doc.getElementById('lbNavDisplay').style.display = (this.navType == 2 && this.showNavigation ? '' : 'none');
	} else if (this.imageArray.length > 1 && !this.isLyteframe) {
		object.style.display = '';
		object.innerHTML = "Image " + eval(this.activeImage + 1) + " of " + this.imageArray.length;
		this.doc.getElementById('lbNavDisplay').style.display = (this.navType == 2 ? '' : 'none');
	} else if (this.frameArray.length > 1 && this.isLyteframe) {
		object.style.display = '';
		object.innerHTML = "Page " + eval(this.activeFrame + 1) + " of " + this.frameArray.length;
		this.doc.getElementById('lbNavDisplay').style.display = '';
	} else {
		this.doc.getElementById('lbNavDisplay').style.display = 'none';
	}
	this.appear('lbDetailsContainer', (this.doAnimations ? 0 : 100));
};
LyteBox.prototype.updateNav = function() {
	if (this.isSlideshow) {
		if (this.activeSlide != 0) {
			var object = (this.navType == 2 ? this.doc.getElementById('lbPrev2') : this.doc.getElementById('lbPrev'));
				object.style.display = '';
				object.onclick = function() {
					if (myLytebox.pauseOnPrevClick) { myLytebox.togglePlayPause("lbPause", "lbPlay"); }
					myLytebox.changeContent(myLytebox.activeSlide - 1); return false;
				}
		} else {
			if (this.navType == 2) { this.doc.getElementById('lbPrev2_Off').style.display = ''; }
		}
		if (this.activeSlide != (this.slideArray.length - 1)) {
			var object = (this.navType == 2 ? this.doc.getElementById('lbNext2') : this.doc.getElementById('lbNext'));
				object.style.display = '';
				object.onclick = function() {
					if (myLytebox.pauseOnNextClick) { myLytebox.togglePlayPause("lbPause", "lbPlay"); }
					myLytebox.changeContent(myLytebox.activeSlide + 1); return false;
				}
		} else {
			if (this.navType == 2) { this.doc.getElementById('lbNext2_Off').style.display = ''; }
		}
	} else if (this.isLyteframe) {
		if(this.activeFrame != 0) {
			var object = this.doc.getElementById('lbPrev2');
				object.style.display = '';
				object.onclick = function() {
					myLytebox.changeContent(myLytebox.activeFrame - 1); return false;
				}
		} else {
			this.doc.getElementById('lbPrev2_Off').style.display = '';
		}
		if(this.activeFrame != (this.frameArray.length - 1)) {
			var object = this.doc.getElementById('lbNext2');
				object.style.display = '';
				object.onclick = function() {
					myLytebox.changeContent(myLytebox.activeFrame + 1); return false;
				}
		} else {
			this.doc.getElementById('lbNext2_Off').style.display = '';
		}		
	} else {
		if(this.activeImage != 0) {
			var object = (this.navType == 2 ? this.doc.getElementById('lbPrev2') : this.doc.getElementById('lbPrev'));
				object.style.display = '';
				object.onclick = function() {
					myLytebox.changeContent(myLytebox.activeImage - 1); return false;
				}
		} else {
			if (this.navType == 2) { this.doc.getElementById('lbPrev2_Off').style.display = ''; }
		}
		if(this.activeImage != (this.imageArray.length - 1)) {
			var object = (this.navType == 2 ? this.doc.getElementById('lbNext2') : this.doc.getElementById('lbNext'));
				object.style.display = '';
				object.onclick = function() {
					myLytebox.changeContent(myLytebox.activeImage + 1); return false;
				}
		} else {
			if (this.navType == 2) { this.doc.getElementById('lbNext2_Off').style.display = ''; }
		}
	}
	this.enableKeyboardNav();
};
LyteBox.prototype.enableKeyboardNav = function() { document.onkeydown = this.keyboardAction; };
LyteBox.prototype.disableKeyboardNav = function() { document.onkeydown = ''; };
LyteBox.prototype.keyboardAction = function(e) {
	var keycode = key = escape = null;
	keycode	= (e == null) ? event.keyCode : e.which;
	key		= String.fromCharCode(keycode).toLowerCase();
	escape  = (e == null) ? 27 : e.DOM_VK_ESCAPE;
	if ((key == 'x') || (key == 'c') || (keycode == escape)) {
		myLytebox.end();
	} else if ((key == 'p') || (keycode == 37)) {
		if (myLytebox.isSlideshow) {
			if(myLytebox.activeSlide != 0) {
				myLytebox.disableKeyboardNav();
				myLytebox.changeContent(myLytebox.activeSlide - 1);
			}
		} else if (myLytebox.isLyteframe) {
			if(myLytebox.activeFrame != 0) {
				myLytebox.disableKeyboardNav();
				myLytebox.changeContent(myLytebox.activeFrame - 1);
			}
		} else {
			if(myLytebox.activeImage != 0) {
				myLytebox.disableKeyboardNav();
				myLytebox.changeContent(myLytebox.activeImage - 1);
			}
		}
	} else if ((key == 'n') || (keycode == 39)) {
		if (myLytebox.isSlideshow) {
			if(myLytebox.activeSlide != (myLytebox.slideArray.length - 1)) {
				myLytebox.disableKeyboardNav();
				myLytebox.changeContent(myLytebox.activeSlide + 1);
			}
		} else if (myLytebox.isLyteframe) {
			if(myLytebox.activeFrame != (myLytebox.frameArray.length - 1)) {
				myLytebox.disableKeyboardNav();
				myLytebox.changeContent(myLytebox.activeFrame + 1);
			}
		} else {
			if(myLytebox.activeImage != (myLytebox.imageArray.length - 1)) {
				myLytebox.disableKeyboardNav();
				myLytebox.changeContent(myLytebox.activeImage + 1);
			}
		}
	}
};
LyteBox.prototype.preloadNeighborImages = function() {
	if (this.isSlideshow) {
		if ((this.slideArray.length - 1) > this.activeSlide) {
			preloadNextImage = new Image();
			preloadNextImage.src = this.slideArray[this.activeSlide + 1][0];
		}
		if(this.activeSlide > 0) {
			preloadPrevImage = new Image();
			preloadPrevImage.src = this.slideArray[this.activeSlide - 1][0];
		}
	} else {
		if ((this.imageArray.length - 1) > this.activeImage) {
			preloadNextImage = new Image();
			preloadNextImage.src = this.imageArray[this.activeImage + 1][0];
		}
		if(this.activeImage > 0) {
			preloadPrevImage = new Image();
			preloadPrevImage.src = this.imageArray[this.activeImage - 1][0];
		}
	}
};
LyteBox.prototype.togglePlayPause = function(hideID, showID) {
	if (this.isSlideshow && hideID == "lbPause") {
		for (var i = 0; i < this.slideshowIDCount; i++) { window.clearTimeout(this.slideshowIDArray[i]); }
	}
	this.doc.getElementById(hideID).style.display = 'none';
	this.doc.getElementById(showID).style.display = '';
	if (hideID == "lbPlay") {
		this.isPaused = false;
		if (this.activeSlide == (this.slideArray.length - 1)) {
			this.end();
		} else {
			this.changeContent(this.activeSlide + 1);
		}
	} else {
		this.isPaused = true;
	}
};
LyteBox.prototype.end = function(caller) {
	var closeClick = (caller == 'slideshow' ? false : true);
	if (this.isSlideshow && this.isPaused && !closeClick) { return; }
	this.disableKeyboardNav();
	this.doc.getElementById('lbMain').style.display = 'none';
	this.fade('lbOverlay', (this.doAnimations ? this.maxOpacity : 0));
	this.toggleSelects('visible');
	if (this.hideFlash) { this.toggleFlash('visible'); }
	if (this.isSlideshow) {
		for (var i = 0; i < this.slideshowIDCount; i++) { window.clearTimeout(this.slideshowIDArray[i]); }
	}
	if (this.isLyteframe) {
		 this.initialize();
	}
};
LyteBox.prototype.checkFrame = function() {
	if(typeof(window.parent.frames[window.name]) != "undefined" && window.name != "loginFrame") {
		if (window.parent.frames[window.name] && (parent.document.getElementsByTagName('frameset').length <= 0)) {
			this.isFrame = true;
			this.lytebox = "window.parent." + window.name + ".myLytebox";
			this.doc = parent.document;
		} else {
			this.isFrame = false;
			this.lytebox = "myLytebox";
			this.doc = document;
		}
	}
};
LyteBox.prototype.getPixelRate = function(cur, img) {
	var diff = (img > cur) ? img - cur : cur - img;
	if (diff >= 0 && diff <= 100) { return 10; }
	if (diff > 100 && diff <= 200) { return 15; }
	if (diff > 200 && diff <= 300) { return 20; }
	if (diff > 300 && diff <= 400) { return 25; }
	if (diff > 400 && diff <= 500) { return 30; }
	if (diff > 500 && diff <= 600) { return 35; }
	if (diff > 600 && diff <= 700) { return 40; }
	if (diff > 700) { return 45; }
};
LyteBox.prototype.appear = function(id, opacity) {
	var object = this.doc.getElementById(id).style;
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + (opacity + 10) + ")";
	if (opacity == 100 && (id == 'lbImage' || id == 'lbIframe')) {
		try { object.removeAttribute("filter"); } catch(e) {}	/* Fix added for IE Alpha Opacity Filter bug. */
		this.updateDetails();
	} else if (opacity >= this.maxOpacity && id == 'lbOverlay') {
		for (var i = 0; i < this.overlayTimerCount; i++) { window.clearTimeout(this.overlayTimerArray[i]); }
		return;
	} else if (opacity >= 100 && id == 'lbDetailsContainer') {
		try { object.removeAttribute("filter"); } catch(e) {}	/* Fix added for IE Alpha Opacity Filter bug. */
		for (var i = 0; i < this.imageTimerCount; i++) { window.clearTimeout(this.imageTimerArray[i]); }
		this.doc.getElementById('lbOverlay').style.height = this.getPageSize()[1] + "px";
	} else {
		if (id == 'lbOverlay') {
			this.overlayTimerArray[this.overlayTimerCount++] = setTimeout("myLytebox.appear('" + id + "', " + (opacity+20) + ")", 1);
		} else {
			this.imageTimerArray[this.imageTimerCount++] = setTimeout("myLytebox.appear('" + id + "', " + (opacity+10) + ")", 1);
		}
	}
};
LyteBox.prototype.fade = function(id, opacity) {
	var object = this.doc.getElementById(id).style;
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
	if (opacity <= 0) {
		try {
			object.display = 'none';
		} catch(err) { }
	} else if (id == 'lbOverlay') {
		this.overlayTimerArray[this.overlayTimerCount++] = setTimeout("myLytebox.fade('" + id + "', " + (opacity-20) + ")", 1);
	} else {
		this.timerIDArray[this.timerIDCount++] = setTimeout("myLytebox.fade('" + id + "', " + (opacity-10) + ")", 1);
	}
};
LyteBox.prototype.resizeW = function(id, curW, maxW, pixelrate, speed) {
	if (!this.hDone) {
		this.resizeWTimerArray[this.resizeWTimerCount++] = setTimeout("myLytebox.resizeW('" + id + "', " + curW + ", " + maxW + ", " + pixelrate + ")", 100);
		return;
	}
	var object = this.doc.getElementById(id);
	var timer = speed ? speed : (this.resizeDuration/2);
	var newW = (this.doAnimations ? curW : maxW);
	object.style.width = (newW) + "px";
	if (newW < maxW) {
		newW += (newW + pixelrate >= maxW) ? (maxW - newW) : pixelrate;
	} else if (newW > maxW) {
		newW -= (newW - pixelrate <= maxW) ? (newW - maxW) : pixelrate;
	}
	this.resizeWTimerArray[this.resizeWTimerCount++] = setTimeout("myLytebox.resizeW('" + id + "', " + newW + ", " + maxW + ", " + pixelrate + ", " + (timer+0.02) + ")", timer+0.02);
	if (parseInt(object.style.width) == maxW) {
		this.wDone = true;
		for (var i = 0; i < this.resizeWTimerCount; i++) { window.clearTimeout(this.resizeWTimerArray[i]); }
	}
};
LyteBox.prototype.resizeH = function(id, curH, maxH, pixelrate, speed) {
	var timer = speed ? speed : (this.resizeDuration/2);
	var object = this.doc.getElementById(id);
	var newH = (this.doAnimations ? curH : maxH);
	object.style.height = (newH) + "px";
	if (newH < maxH) {
		newH += (newH + pixelrate >= maxH) ? (maxH - newH) : pixelrate;
	} else if (newH > maxH) {
		newH -= (newH - pixelrate <= maxH) ? (newH - maxH) : pixelrate;
	}
	this.resizeHTimerArray[this.resizeHTimerCount++] = setTimeout("myLytebox.resizeH('" + id + "', " + newH + ", " + maxH + ", " + pixelrate + ", " + (timer+.02) + ")", timer+.02);
	if (parseInt(object.style.height) == maxH) {
		this.hDone = true;
		for (var i = 0; i < this.resizeHTimerCount; i++) { window.clearTimeout(this.resizeHTimerArray[i]); }
	}
};
LyteBox.prototype.getPageScroll = function() {
	if (self.pageYOffset) {
		return this.isFrame ? parent.pageYOffset : self.pageYOffset;
	} else if (this.doc.documentElement && this.doc.documentElement.scrollTop){
		return this.doc.documentElement.scrollTop;
	} else if (document.body) {
		return this.doc.body.scrollTop;
	}
};
LyteBox.prototype.getPageSize = function() {	
	var xScroll, yScroll, windowWidth, windowHeight;
	if (window.innerHeight && window.scrollMaxY) {
		xScroll = this.doc.scrollWidth;
		yScroll = (this.isFrame ? parent.innerHeight : self.innerHeight) + (this.isFrame ? parent.scrollMaxY : self.scrollMaxY);
	} else if (this.doc.body.scrollHeight > this.doc.body.offsetHeight){
		xScroll = this.doc.body.scrollWidth;
		yScroll = this.doc.body.scrollHeight;
	} else {
		xScroll = this.doc.getElementsByTagName("html").item(0).offsetWidth;
		yScroll = this.doc.getElementsByTagName("html").item(0).offsetHeight;
		xScroll = (xScroll < this.doc.body.offsetWidth) ? this.doc.body.offsetWidth : xScroll;
		yScroll = (yScroll < this.doc.body.offsetHeight) ? this.doc.body.offsetHeight : yScroll;
	}
	if (self.innerHeight) {
		windowWidth = (this.isFrame) ? parent.innerWidth : self.innerWidth;
		windowHeight = (this.isFrame) ? parent.innerHeight : self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) {
		windowWidth = this.doc.documentElement.clientWidth;
		windowHeight = this.doc.documentElement.clientHeight;
	} else if (document.body) {
		windowWidth = this.doc.getElementsByTagName("html").item(0).clientWidth;
		windowHeight = this.doc.getElementsByTagName("html").item(0).clientHeight;
		windowWidth = (windowWidth == 0) ? this.doc.body.clientWidth : windowWidth;
		windowHeight = (windowHeight == 0) ? this.doc.body.clientHeight : windowHeight;
	}
	var pageHeight = (yScroll < windowHeight) ? windowHeight : yScroll;
	var pageWidth = (xScroll < windowWidth) ? windowWidth : xScroll;
	return new Array(pageWidth, pageHeight, windowWidth, windowHeight);
};
LyteBox.prototype.toggleFlash = function(state) {
	var objects = this.doc.getElementsByTagName("object");
	for (var i = 0; i < objects.length; i++) {
		objects[i].style.visibility = (state == "hide") ? 'hidden' : 'visible';
	}
	var embeds = this.doc.getElementsByTagName("embed");
	for (var i = 0; i < embeds.length; i++) {
		embeds[i].style.visibility = (state == "hide") ? 'hidden' : 'visible';
	}
	if (this.isFrame) {
		for (var i = 0; i < parent.frames.length; i++) {
			try {
				objects = parent.frames[i].window.document.getElementsByTagName("object");
				for (var j = 0; j < objects.length; j++) {
					objects[j].style.visibility = (state == "hide") ? 'hidden' : 'visible';
				}
			} catch(e) { }
			try {
				embeds = parent.frames[i].window.document.getElementsByTagName("embed");
				for (var j = 0; j < embeds.length; j++) {
					embeds[j].style.visibility = (state == "hide") ? 'hidden' : 'visible';
				}
			} catch(e) { }
		}
	}
};
LyteBox.prototype.toggleSelects = function(state) {
	var selects = this.doc.getElementsByTagName("select");
	for (var i = 0; i < selects.length; i++ ) {
		selects[i].style.visibility = (state == "hide") ? 'hidden' : 'visible';
	}
	if (this.isFrame) {
		for (var i = 0; i < parent.frames.length; i++) {
			try {
				selects = parent.frames[i].window.document.getElementsByTagName("select");
				for (var j = 0; j < selects.length; j++) {
					selects[j].style.visibility = (state == "hide") ? 'hidden' : 'visible';
				}
			} catch(e) { }
		}
	}
};
LyteBox.prototype.pause = function(numberMillis) {
	var now = new Date();
	var exitTime = now.getTime() + numberMillis;
	while (true) {
		now = new Date();
		if (now.getTime() > exitTime) { return; }
	}
};
if (window.addEventListener) {
	window.addEventListener("load",initLytebox,false);
} else if (window.attachEvent) {
	window.attachEvent("onload",initLytebox);
} else {
	window.onload = function() {initLytebox();}
}
function initLytebox() { if(typeof(parent.lbIframe) == 'undefined') { myLytebox = new LyteBox(); }}
/*****
* 
* FadeMenu
* 
* Description:	fade a list menu recursive with delay
* Author:		Matthias von Deetzen
* Copyright:	CeWe Color AG & Co OhG
* 
*****/

var FadeMenu = new Class({
	initialize: function fadeMenu(elem,options) {

		// Retrieve the element properly
		if ($type(elem) == 'element') {
			this.parentElem = elem;
		}
		else {
			this.parentElem = $(elem);
		}

		if($type(this.parentElem) != 'element') {throw new Error('invalid element or id passed as first argument');}

		// Add the options
		this.options = new Abstract({ // Defaults
			fadeRecursive: false,
			fadeInSpeed: 150,
			fadeOutSpeed: 100,
			fadeOutDelay: 300,
			fadeInDelay: 300,
			ignoreClass: false,
			autoIndent: true
		});
		if($type(options) == 'object') {this.options.extend(options);}

		// Retrieve the child items
		this.menuItems = this.parentElem.getChildren().filterByTag('li');

		// Setup all sub menus
		for(var i=0; i<this.menuItems.length; i++) {

			// Find this item's sub menu
			var subMenu = this.menuItems[i].getElement('ul');

			// If we have a sub menu, set it up
			if($type(subMenu) == 'element') { // Make sure it's an element)
				this.menuItems[i].subMenu = subMenu;
				this.setupSubMenu(subMenu);
				subMenu.create(this.options);
			}
		}
	},

	setupSubMenu: function(subMenu) {
		if($type(subMenu) == 'element') {
			new Abstract(subMenu).extend({
				create: function(options) {
					// Get options
					this.options = options;

					// Retrieve elements
					this.parentElem = this.getParent();

					if (this.options.fadeRecursive) {
						new FadeMenu(subMenu, this.options);
					}

					// Make sure the element and all it's items are hidden
					this.menuItems().setOpacity(0);
					this.setOpacity(0);
					this.setStyles();
					if (this.options.autoIndent) {
						this.autoIndent(subMenu);
					}

					// Create new events for fadein and fadeout
					this.addEvent('fadein',this.showMenu);
					this.addEvent('fadeout',this.hideMenu);

					// Add mouseenter and mouseleave events to the sub menu
					var thisMenu = this;
					this.parentElem.addEvent('mouseenter',function(evt) {thisMenu.latestEvent = 'mouseenter'; thisMenu.fireEvent('fadein',evt,thisMenu.options.fadeInDelay)});
					this.parentElem.addEvent('mouseleave',function(evt) {thisMenu.latestEvent = 'mouseleave'; thisMenu.fireEvent('fadeout',evt,thisMenu.options.fadeOutDelay)});
				},
				showMenu: function(evt) {
					if(this.latestEvent == 'mouseleave') {return false;}
					// Show each item
					this.fadeInQueue = this.menuItems(); // get our menu items
					this.fadeInItems();
				},
				hideMenu: function(evt) {
					if(this.latestEvent == 'mouseenter') {return false;}
					// Hide all items
					this.fadeOutQueue = this.menuItems(); // get out menu items
					this.fadeOutItems();
				},
				fadeInItems: function() {
					// Get the list element
					var thisMenu;
					if(this.element) {thisMenu = this.element.getParent();}
					else {thisMenu = this;}
					// If there are still menu items left, and we're still fading in, fade in the first one
					if(thisMenu.latestEvent == 'mouseenter') {
						thisItem = thisMenu.fadeInQueue.shift();
						// Stop any fade outs going on
						if($defined(thisItem.fadeout)) {thisItem.fadeout.stop();}
						// Check it needs fading in - otherwise move onto the next item
						if(thisItem.getStyle('opacity') < 1) {
							// Fade this item, then chain on to the next
							thisItem.style.zIndex = '10000';
							thisItem.fadein = new Fx.Style(thisItem, 'opacity', {duration: thisMenu.options.fadeInSpeed}).start(thisItem.getStyle('opacity'),1).chain(thisMenu.fadeInItems);
						} else {thisMenu.fadeInItems();}
					} else {return false;}
				},
				fadeOutItems: function() {
					// Get the list element
					var thisMenu;
					if(this.element) {thisMenu = this.element.getParent();}
					else {thisMenu = this;}
					// If there are still menu items left, fade out the last one
					if(thisMenu.fadeOutQueue && thisMenu.fadeOutQueue.length > 0) {
						// If we are still fading out...
						if(thisMenu.latestEvent == 'mouseleave') {
							thisItem = thisMenu.fadeOutQueue.pop();
							// Stop any fade ins going on
							if($defined(thisItem.fadein)) {thisItem.fadein.stop();}
							// Check it needs fading out - otherwise move on
							if(thisItem.getStyle('opacity') > 0) {
								// Fade this item, then chain on to the next
								thisItem.fadeout = new Fx.Style(thisItem, 'opacity', {duration: thisMenu.options.fadeOutSpeed}).start(thisItem.getStyle('opacity'),0).chain(thisMenu.fadeOutItems).chain(thisItem.style.zIndex = '5000');
							} else {thisMenu.fadeOutItems();}
						} else {return false;}
					} else {
						if(thisMenu.latestEvent == 'mouseleave') {thisMenu.setOpacity(0);}
					}
				},
				menuItems: function() {return this.parentElem.getChildren().filterByTag('ul')},
				autoIndent: function(subMenu) {
					if ((is_ie && subMenu.firstChild && subMenu.firstChild.nextSibling && subMenu.childNodes[0].childNodes.length > 0) ||
						(is_moz && subMenu.firstChild && subMenu.firstChild.nextSibling && subMenu.childNodes[0].length > 0))
					{
						if (is_ie)
						{
							var item_width = subMenu.offsetWidth;
							var item_left = subMenu.parentNode.offsetLeft;
							var num_sub_items = subMenu.childNodes.length;
							var sub_item_width = subMenu.childNodes[0].offsetWidth;
							var sub_items_width = 0;
							var sub_item = new Array();
						}
						else {
							var item_width = subMenu.offsetWidth;
							var item_left = subMenu.parentNode.offsetLeft;
							var num_sub_items = subMenu.childNodes.length;
							var sub_item_width = subMenu.childNodes[1].offsetWidth;
							var sub_items_width = 0;
							var sub_item = new Array();
						}

						for (var i = 0; i < num_sub_items; i++)
						{
							if (typeof(subMenu.childNodes[i]) != 'undefined' && subMenu.childNodes[i].tagName == 'LI')
							{
								sub_items_width += subMenu.childNodes[i].offsetWidth;
								sub_item[i] = new Array();
								sub_item[i]['width'] = subMenu.childNodes[i].offsetWidth + 'px'
							}
						}

						if (sub_items_width < item_width)
						{
							var left_pos = (Math.ceil(item_left/sub_item_width) - 1) * (sub_item_width + 15);
							if (left_pos + sub_items_width > item_width) {
								left_pos = left_pos + item_width - (left_pos + sub_items_width) - (num_sub_items * (is_ie ? 24 : 11));
							}

							if (left_pos > 0)
							{
								subMenu.style.paddingLeft = left_pos + 'px';
								subMenu.style.width = item_width - left_pos + 'px';

								for (var i = 0; i < num_sub_items; i++)
								{
									if (typeof(subMenu.childNodes[i]) != 'undefined' && subMenu.childNodes[i].tagName == 'LI')
									{
										subMenu.childNodes[i].style.width = sub_item[i]['width'];
									}
								}
							}
						}
					}
				},
				setStyles: function () {for(var i=0; i<this.menuItems().length; i++){this.menuItems()[i].style.display = 'block';}}
			});
		}
	}
});
var roundCorners = new Class({
	initialize: function contructor(options) {
		this.options		= typeof(options) != 'undefined' ? options : '';
		this.radius			= (typeof(options) != 'undefined' && !isNaN(parseInt(options.radius))) ? options.radius : 10;
		this.corners		= (typeof(options) != 'undefined' && typeof(options.corners != 'undefined')) ? options.corners : false;
		this.background		= (typeof(options) != 'undefined' && typeof(options.background) != 'undefined') ? options.background : '#FFF';
		this.antiAliase		= (typeof(options) != 'undefined' && typeof(options.antiAliase) != 'undefined') ? options.antiAliase : false;

		this.borderSize		= null;
		this.borderColor	= null;
		this.isIE			= navigator.userAgent.toLowerCase().indexOf("msie") > -1;
		this.isMoz			= document.implementation && document.implementation.createDocument;
		this.isSafari		= ((navigator.userAgent.toLowerCase().indexOf('safari')!=-1)&&(navigator.userAgent.toLowerCase().indexOf('mac')!=-1))?true:false;
	},
	getStyle: function(element) {
		try {
			this.borderSize = parseInt(this.get_style(element, 'borderTopWidth', 'border-top-width'));
			this.borderColor = this.get_style(element, 'borderTopColor', 'border-top-color');
			return true;
		}
		catch (e) {
			return false;
		}
	},
	getParentBackground: function(element) {
		var bgColor = this.get_style(element.parentNode, 'backgroundColor', 'background-color');
		if (bgColor == 'transparent' && typeof(element.parentNode) != 'undefined' && element.parentNode.nodeName != 'HTML') {
			bgColor = this.getParentBackground(element.parentNode);
		}
		return (bgColor != 'transparent' ? bgColor : this.background);
	},
	generateCorners: function(element) {

		var radius = this.radius;
		var nocorner = new Array();
		nocorner['tl'] = {'set':false};
		nocorner['tr'] = {'set':false};
		nocorner['bl'] = {'set':false};
		nocorner['br'] = {'set':false};
		element.style.position = 'relative';

		if (typeof(this.options) != 'undefined' && typeof(this.options.background) == 'undefined') {
			this.background = this.getParentBackground(element);
		}
		
		element.style.border = '1px solid ' + this.background;

		for (var i = 0; i < 4; i++) {

			radius = this.radius;
			switch (i) {
				case 0:
					if (typeof(this.corners) != 'undefined' && typeof(this.corners.tl) != 'undefined' && typeof(this.corners.tl.radius) != 'undefined' && parseInt(this.corners.tl.radius) >= 0) {
						radius = parseInt(this.corners.tl.radius);
					}
					break;
				case 1:
					if (typeof(this.corners) != 'undefined' && typeof(this.corners.tr) != 'undefined' && typeof(this.corners.tr.radius) != 'undefined' && parseInt(this.corners.tr.radius) >= 0) {
						radius = parseInt(this.corners.tr.radius);
					}
					break;
				case 2:
					if (typeof(this.corners) != 'undefined' && typeof(this.corners.bl) != 'undefined' && typeof(this.corners.bl.radius) != 'undefined' && parseInt(this.corners.bl.radius) >= 0) {
						radius = parseInt(this.corners.bl.radius);
					}
					break;
				case 3:
					if (typeof(this.corners) != 'undefined' && typeof(this.corners.br) != 'undefined' && typeof(this.corners.br.radius) != 'undefined' && parseInt(this.corners.br.radius) >= 0) {
						radius = parseInt(this.corners.br.radius);
					}
					break;
			}

			for (var j = parseInt(radius); j > 0; j--) {

				if (typeof(this.corners) != 'undefined') {
					if (typeof(this.corners.tl) != 'undefined' && typeof(this.corners.tl.radius) == 'undefined' && Boolean(this.corners.tl) != true && i == 0) {
						nocorner['tl'] = {'set':true, 'radius':radius};
						continue;
					} else if (typeof(this.corners.tr) != 'undefined' && typeof(this.corners.tr.radius) == 'undefined' && Boolean(this.corners.tr) != true && i == 1) {
						nocorner['tr'] = {'set':true, 'radius':radius};
						continue;
					} else if (typeof(this.corners.bl) != 'undefined' && typeof(this.corners.bl.radius) == 'undefined' && Boolean(this.corners.bl) != true && i == 2) {
						nocorner['bl'] = {'set':true, 'radius':radius};
						continue;
					} else if (typeof(this.corners.br) != 'undefined' && typeof(this.corners.br.radius) == 'undefined' && Boolean(this.corners.br) != true && i == 3) {
						nocorner['br'] = {'set':true, 'radius':radius};
						continue;
					}
				}

				var rounded = Math.round(radius - (Math.floor(Math.sqrt(Math.pow(radius, 2) - Math.pow((j-1), 2)))) - 1);

				if (parseInt(radius) - j >= element.offsetHeight) {
					break;
				} else if (rounded >= element.offsetWidth) {
					break;
				}

				corner = document.createElement("DIV");
				corner.style.width = (rounded < 1 ? '0' : rounded) + 'px';
				corner.style.height = '1px';
				corner.style.fontSize = '1px';
				corner.style.position = 'absolute';
				corner.style.zIndex = 899;
				corner.style.backgroundColor = this.background;

				switch (i) {
					case 0:
					case 2:
						corner.style.borderRight = this.borderSize + 'px solid ' + this.borderColor;
						corner.style.left = '0px';
						//corner.style.marginLeft = this.borderSize + 'px';
						break;
					case 1:
					case 3:
						corner.style.borderLeft = this.borderSize + 'px solid ' + this.borderColor;
						corner.style.right = '0px';
						//corner.style.marginRight = this.borderSize + 1 + 'px';
						break;
				}

				switch (i) {
					case 0:
					case 1:
						corner.style.top = parseInt(radius) - j + 'px';
						//corner.style.marginTop = this.borderSize + 'px';
						break;
					case 2:
					case 3:
						//corner.style.marginBottom = this.borderSize + 'px';
						corner.style.bottom = parseInt(radius) - j + 'px';
						break;
				}

				if (this.antiAliase) {
					var aA_corner = this.generateAliasedCorners(corner, i);
					if (typeof(aA_corner) == 'object') {
						corner.appendChild(aA_corner);
					}
				}

				element.appendChild(corner);
			}	
		}
		
		var nocorners = {0:nocorner['tl'], 1:nocorner['tr'], 2:nocorner['br'], 3:nocorner['bl'], 4:nocorner['tl']};
		
		for (var k = 0; k <= 3; k++) {
			var cornerwidth = Math.round((typeof(nocorners[k].radius) != 'undefined' ? nocorners[k].radius : radius) - (Math.floor(Math.sqrt(Math.pow((typeof(nocorners[k].radius) != 'undefined' ? nocorners[k].radius : radius), 2) - Math.pow(((typeof(nocorners[k].radius) != 'undefined' ? nocorners[k].radius : radius)-1), 2)))) - 1);
			
			if(nocorners[k].set == true && nocorners[k+1].set == true) {
				eval('element.style.border' + (k==0 ? 'Top' : (k==1 ? 'Right' : (k==2 ? 'Bottom' : 'Left'))) + ' = this.borderSize + \'px solid \' + this.borderColor;');
			} else {
				borderline = document.createElement("DIV");
				borderline.style.fontSize = '1px';
				borderline.style.lineHeight = '1px';
				borderline.style.position = 'absolute';
				borderline.style.zIndex = 899;
				borderline.style.backgroundColor = (this.borderColor == 'rgb(0, 0, 0)' || this.borderColor == '#000' ? this.background : this.borderColor);

				if (element.offsetWidth > 0)
				{
					borderline.style.width = (k==1 || k==3 ? '1' : element.offsetWidth-((nocorners[k].set != true && nocorners[k+1].set == true) || (nocorners[k].set == true && nocorners[k+1].set != true) ? 1 : 2)*cornerwidth) + 'px';
					borderline.style.height = (k==0 || k==2 ? '1' : element.offsetHeight-((nocorners[k].set != true && nocorners[k+1].set == true) || (nocorners[k].set == true && nocorners[k+1].set != true) ? 1 : 2)*cornerwidth) + 'px';
					eval('borderline.style.' + (k==0 ? 'top' : (k==1 ? 'right' : (k==2 ? 'bottom' : 'left'))) + ' = \'0px\';');			
					
					if(nocorners[0].set == true && (k==0 || k==3)) {
						eval('borderline.style.' + (k==0 ? 'left' : 'top') + ' = \'0px\';');
					}
					else if(nocorners[1].set == true && (k==0 || k==1)) {
						eval('borderline.style.' + (k==0 ? 'right' : 'top') + ' = \'0px\';');
					}
					else if(nocorners[2].set == true && (k==1 || k==2)) {
						eval('borderline.style.' + (k==1 ? 'bottom' : 'right') + ' = \'0px\';');
					}
					else if(nocorners[3].set == true && (k==2 || k==3)) {
						eval('borderline.style.' + (k==2 ? 'left' : 'bottom') + ' = \'0px\';');
					}
					else {
						eval('borderline.style.' + (k==0 || k==2 ? 'left' : 'top') + ' = \'' + cornerwidth + 'px\';');
					}
					
					element.appendChild(borderline);
					borderline.innerHTML = '&nbsp;';
				}
			}
		}
		
	},
	generateAliasedCorners: function(corner, pos) {

		if (parseInt(corner.style.width) > 0)
		{
			var aA_corner = document.createElement("DIV");
			aA_corner.style.position = 'absolute';
			aA_corner.style.height = '1px';
			aA_corner.style.fontSize = '1px';
			aA_corner.style.width = parseInt(corner.style.width) - 1 + 'px';
			aA_corner.style.left = corner.style.left;
			aA_corner.style.right = corner.style.right;

			switch (pos) {
					case 0:
					case 2:
						aA_corner.style.borderRight = this.borderSize + 'px solid ' + this.borderColor;
						break;
					case 1:
					case 3:
						aA_corner.style.borderLeft = this.borderSize + 'px solid ' + this.borderColor;
						break;
			}

			var opacity = 25;
			aA_corner.style.opacity = (opacity / 100);
			aA_corner.style.MozOpacity = (opacity / 100);
			aA_corner.style.KhtmlOpacity = (opacity / 100);
			aA_corner.style.filter = "alpha(opacity=" + opacity + ")"; 

			return aA_corner;
		}
		else {
			return false;
		}
	},
	generate: function(element) {
		if (typeof(element) != "object") {
			return false;
		} else if (typeof(element.id) != 'undefined') {
			this.getStyle(element)
			this.generateCorners(element);
		}
		else {
			for(var i = 0; i < element.length; i++) {
				if (this.getStyle(element[i])) {
					this.generateCorners(element[i]);
				}
			}
		}
	},
	get_style: function(obj, property, propertyNS)
	{
		try {
			if(obj.currentStyle) {
				var returnVal = eval("obj.currentStyle." + property);
			}
			else {
				if(this.isSafari && obj.style.display == "none") {
					obj.style.display = "";
					var wasHidden = true;
				}
				var returnVal = document.defaultView.getComputedStyle(obj, '').getPropertyValue(propertyNS);
				if(this.isSafari && wasHidden) {
					obj.style.display = "none";
				}
			}
		}
		catch(e) {
			return e.message;
		}
		return returnVal;
	}
});
/*****
* 
* Search Scripts
* 
* Description:	a simple redirect for internal page search
* Author:		Matthias von Deetzen
* Copyright:	CeWe Color AG & Co OhG
* 
*****/

function pageSearch()
{
	this.searchElement = null;

	this.generate = function(elementID) {
		if ($(elementID))
		{
			this.searchElement = $(elementID);
			var phrase = this.searchElement.value;
			if (phrase.length > 0) {
				var replacedurl = 'search_results.html?quest=' + phrase + '&element=' + elementID;
				setTimeout(function()	{ window.location = replacedurl; }, 0);
			}
		}
	}

	this.getResults = function(phrase, elementID) {

		$(elementID).value = phrase;

		var req = new Ajax('/cgi-bin/search.cgi', {
			method: 'get',
			data: { 'operator' : operator, 'phrase' : phrase },
			onComplete: function(response)
			{
				var script = response.match(/<script\s+type\s*=\s*\"text\/javascript\">([\s\S]+?)<\/script>/gi);
				if (script != null)
				{
					for (i = 0; i < script.length; i++)
					{
						script[i] = script[i].replace(/<[\/]?script.*?>/g, '');
						if (navigator.appName != 'Microsoft Internet Explorer')
						{
							eval(script[i]);
						}
					}
				}
				this.gererateOutput(response, phrase, elementID);
			}.bind(this)
		}).request();
	}

	this.gererateOutput = function(response, phrase, elementID) {
		var resultDiv = $('search_results');

		if (response == 'false') {
			resultDiv.innerHTML = 'Es konnten leider keine Ergebnisse gefunden werden.';
		}
		else {
			resultDiv.innerHTML = response;
		}

	}
};

var pageSearch = new pageSearch();
