rooturl = '/';apiKey = 'ABQIAAAAKth-z1zfwo793uwP9dzzARTw-AXXYPzdH6voEYi6-yfixPdF1xQk0ZleH6jKibuXRU-rletMhumtlw';jacket = true;/*cached*/eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('w.7l=6Z.6D.O(\'6P 8.0\')>-1;w.6Y=6Z.6D.O(\'6P 7.0\')>-1;w.4p=6Z.6D.O(\'6P 6.0\')>-1;b(7l)4p=6Y=F;b(6Y)4p=F;b(w.4p){b(H.a9&&H.1q&&H.1q[0]&&H.1q[0].3b){t 4j.3v(2P+(7Q?\'3v/?7h\':\'34/3U/3v/?7h\'));c 3c=7Q?2P+\'34/7R/26/\':2P+\'34/7R/ae/26/\';H.1q[0].3b(\'12\',\'3R: 2A(\'+3c+\'/5S.3s)\');H.1q[0].3b(\'1Q\',\'3R: 2A(\'+3c+\'/ad.3s)\');H.1q[0].3b(\'1Q\',\'3R: 2A(\'+3c+\'/7B.3s)\');H.1q[0].3b(\'J\',\'3R: 2A(\'+3c+\'/7B.3s)\');H.1q[0].3b(\'J\',\'3R: 2A(\'+3c+\'/5S.3s)\');H.1q[0].3b(\'p\',\'3R: 2A(\'+3c+\'/5S.3s)\')}}c 6d=t 4F({4V:h(){6d.4U(t 7x);9.6A=\'\';9.74()},5A:h(){c 3g=t 77();c 1O=7n.4e.1F(1);b(1O.B>0){1O=1O.4q(\'|\');1O.1f(h(3J,i){3J=3J.4q(\'=\');b(3J.B==2)5D(\'3g["\'+3J[0]+\'"] = "\'+3J[1]+\'"\')})}u 3g},9S:h(24){c 1O=9.5A();c 3g=5D(\'1O["\'+24+\'"]\');b(3g==\'2w\')3g=2w;u 3g},7o:h(24,1s){c 1O=9.5A();c 7j=1O[24];5D(\'1O["\'+24+\'"] = "\'+1s+\'"\');c 6h=t 7a();1Y(c i 4T 1O)b(1O[i]!==2w&&1O[i]!=\'2w\')6h.2l(i+\'=\'+1O[i]);7n.4e=6h.5p(\'|\');b(7j!=1s)9.3z(\'a1\',[24,1s,9.6A]);9.6A=24},74:h(){c 4e=9.5A();1Y(c i 4T 4e)9.7o(i,4e[i])}});c 7e=t 4F({4V:h(){9.5B=[];9.6g()},a0:h(7m){9.5B.2l(7m)},6g:h(){9.3D=9.6l.5j(9X,9)},6l:h(){b(9.5B.B>0){$3i(9.3D);c 2L=9.5B.af();2L.1b(\'3Z\',9.6l.R(9));b(2L.l.2A==\'\')2L.l.2A=2P+\'ay.ax\';b(2L.7r==2w)2L.7r=\'au\';2L.av()}C{$3i(9.3D);9.6g()}}});c 3Y=t 4F();3Y.4c=6d;3Y.7d=7e;c aD=t 3Y.4c;c aC=t 3Y.7d;7a.4U({al:h(4w,7k,R){c 5w=9,i=0;(h(){7k.2L(R,5w[i],i,5w);b(++i<5w.B){ai(1k.am,4w)}})()}});h an(3C,5x){c 5C={\'3C\':3C,\'23\':5x,\'3D\':0,\'R\':9,\'5x\':h(){1Y(c i=0;i\':\'<\')+\' 1e.4B\'))1e.4B=47/5I;1e.s=6o*1e.4B;1e.m=5I*1e.4B;1e.2a=(4O/2)-(1e.s/2);1e.T=(47/2)-(1e.m/2);u 1e}h 3B(o,5J,1u){b(!$P(1u))1u=1;b(!$P(5J))5J=\'35\';o=$(o);o.I(\'M\',0);o.2E(\'1U\',{\'4v\':1u*73});o.V(\'1U\').41({\'9H\':h(e){c 6y=L;$3V(h(){6y=9.1j.M[0].1s!=0}.R(9));b(e.X(\'M\')==0&&6y)e.U.1A=5J},\'3Z\':h(e){b(e.X(\'M\')==0)e.U.1A=\'2q\'}})}h 36(o,1u,2v){b(!$P(w.4x))w.4x=[];b(!$P(2v))2v=1;b(!$P(1u))1u=5;c S=($G(o)==\'1I\'?$(o):o);b(S.X(\'10\')!=\'5k\'&&S.X(\'10\')!=\'3Q\'&&S.X(\'10\')!=\'51\')S.U.10=\'5k\';S=S.2y(\'p\');b(S.B==0)u;$1f(S,h(p){p.W({\'10\':\'3Q\',\'T\':0,\'2a\':0});3B(p,\'35\',2v)});S[0].W({\'M\':1,\'1A\':\'35\'});c 5W=h(S){b(!9.2e)9.2e=0;9.2e+=1;b(9.2e>S.B-1)9.2e=0;$1f(S,h(p,i){p.1U({\'M\':i==9.2e?1:0})}.R(9))};w.4x.9f(5W.5j(1u*73,5W,[S]));w.1b(\'42\',h(){1Y(c i=w.4x.B-1;i>=0;i--)$3i(w.4x[i])})}h 69(o){b($G(o)==\'1I\')o=$(o);o.1U({\'M\':0})}h 68(o,3N,3M){b($G(o)==\'1I\')o=$(o);b(o.Z(\'7V\',F)==F){3B(o);o.18(\'7V\',L)}o.1T(H.1Q);o.1U({\'M\':1});b(!$P(3N))3N=o.2V().s;b(!$P(3M))3M=o.2V().m;o.W({\'s\':3N,\'m\':3M});o.W({\'10\':\'3Q\',\'z-17\':9n+(60(1a(o.X(\'z-17\')))?0:1a(o.X(\'z-17\'))),\'2a\':w.9m()+(5i().s/2)-(o.2V().s/2),\'T\':w.9l()+(5i().m/2)-(o.2V().m/2)})}h 5E(o){b($G(o)==\'1I\')o=$(o);c 15=o.1S();15.1U({\'M\':0})}h 6a(o,3L){b(!$P(3L))3L=F;c 15;b($G(o)==\'1I\')o=$(o);b(o.Z(\'7z\',F)==F){15=t 19(\'J\',{\'26\':{\'M\':0,\'1A\':\'2q\',\'10\':\'51\',\'s\':\'5y%\',\'m\':\'5y%\',\'T\':0,\'2a\':0,\'z-17\':9d,\'2c\':\'2A(\'+2P+\'34/3U/3v/8a/9o/9b.3S)\'},\'2j\':{\'2B\':h(e){b(!3L&&e.k==15)5E(o)}}});o.W({\'1A\':\'35\',\'10\':\'3Q\'});o.1T(15);o.18(\'7z\',L);15.1T(H.1Q);3B(15);w.1b(\'5N\',h(){15.W(\'s\',H.1Q.3X);o.W({\'2a\':(15.2V().s/2)-(o.2V().s/2),\'T\':(15.2V().m/2)-(o.2V().m/2)})})}C{15=o.1S()}15.1U({\'M\':1});w.3z(\'5N\')}19.4U({6a:h(3L){6a(9,3L)},5E:h(){5E(9)},68:h(3N,3M){68(9,3N,3M)},69:h(){69(9)},36:h(1u,2v){36(9,1u,2v)}});h 5i(){c 3T=0,4h=0;b(96(w.7v)==\'9a\'){3T=w.7v;4h=w.37}C b(H.4m&&(H.4m.3X||H.4m.5F)){3T=H.4m.3X;4h=H.4m.5F}C b(H.1Q&&(H.1Q.3X||H.1Q.5F)){3T=H.1Q.3X;4h=H.1Q.5F}u{\'s\':3T,\'m\':4h}}h 5u(){b(w.66){b(1k.B==2&&1k[1]===L)w.66.9G($G(1k[0]),1k[0]);C 1Y(c i=0;i<1k.B;i++)w.66.9D(1k[i])}C b(w.46&&46.5u){b(1k.B==1&&$G(1k[0])==\'1e\'||1k.B==2&&$G(1k[0])==\'1e\'&&1k[1]===L)46.3o(1k[0]);C b(1k.B==1)46.5u(1k[0]);C 46.5u(1k)}C b(7F.7E){1Y(c i=0;i<1k.B;i++)7F.7E(1k[i])}}h 7L(){1u=$(\'2u\').1g;b(1u==\'\')1u=5;c S=$(\'2u\');b(S.X(\'10\')!=\'5k\'&&S.X(\'10\')!=\'3Q\'&&S.X(\'10\')!=\'51\')S.I(\'10\',\'5k\');S=S.2y(\'p\');b(S.B==0)u;w.9L=L;$1f(S,h(p){3B(p)});c 2e=0;w.6X=h(){2e+=1;b(2e>S.B-1)2e=0;$1f(S,h(p,i){p.1U({\'M\':i==2e?1:0})})};S[0].W({\'M\':1,\'1A\':\'35\'});w.6X.5j(1u*73);w.1b(\'5N\',h(){6R()});w.1b(\'42\',h(){$3i(w.6X)})}h 6R(){c 5M=$(\'2u\').2y(\'p\');c U=$(\'2u\').Z(\'U\',{});c 7y=5i();$1f(5M,h(p){p.W({\'2a\':U.5m==\'4Y\'?7y.s/2-p.s/2:p.X(\'2a\'),\'10\':\'3Q\'})})}h 79(o,4r){b(!$P(4r)||4r!==L)c 4r=F;w.5t=h(k){k=$(k);c 2i=F;b(w.4p){b(!k.Z(\'7P\'))k=k.1S();k.18(\'9s\',L);k.18(\'2i\',L);2i=L}c 2Z={\'m\':0,\'D\':0,\'2i\':2i,\'k\':k};c 30=1a(k.Z(\'m\',0));b(30==0){30=1a(k.X(\'m\'));k.18(\'m\',30);b(2i){c 15=k.2r(\'J\');3V{c D=15.X(\'5Q\').4q(\' \')}6e(7Z){k.18(\'m\',0);u}D[0]=1a(D[0].1F(D[0].O(\'(\')+1));D[1]=1a(D[1]);D[2]=1a(D[2]);D[3]=1a(D[3]);k.18(\'T\',1a(15.X(\'T\')));30=1a(k.X(\'m\'));k.18(\'37\',1a(15.X(\'m\')));k.18(\'m\',30)}C b(3a.3f.3x)c D=1a(k.X(\'2c-10-y\'));C{c D=k.X(\'2c-10\').4q(\' \');D[0]=1a(D[0]);D[1]=1a(D[1])}k.18(\'2c-10\',D)}2Z.T=1a(k.Z(\'T\',0));2Z.m=30;b(2i){2Z.2i=L;2Z.37=k.Z(\'37\',0)}2Z.D=k.Z(\'2c-10\');u 2Z};b(o.V(\'1N\')==\'12\')o.1s=\'\';o.U.4K=\'67\';o.6L=h(){9.U.4K=\'4Y\';9.18(\'5P\',F);9.3z(\'58\',{\'k\':9});9.18(\'4t\',L);b(9.V(\'1N\')!=\'12\')9.I(\'M\',0.5)}.R(o);o.5h=h(){9.U.4K=\'67\';9.18(\'4t\',F);b(9.V(\'1N\')!=\'12\')9.I(\'M\',1)}.R(o);o.5h();o.6M=h(){u 9.Z(\'4t\',F)}.R(o);w.1b(\'42\',h(){o.7D();3V{6J o.6L;6J o.5h;6J o.6M}6e(7Z){}o.6L=1c;o.5h=1c;o.6M=1c}.R(9));c 2j={\'4S\':h(e){c v=5t(e.k);b(!v||!v.k)u;b(v.k.Z(\'5P\',F)==L)u;b(v.k.Z(\'4t\',F)==L)u;b(v.2i){c 15=v.k.2r(\'J\');c D=$A(v.D);D[0]+=v.m;D[2]+=v.m;D=\'5s(\'+D.5p(\'1J \')+\'1J)\';15.W({\'5Q\':D,\'T\':v.T-v.m,\'m\':v.37+v.m})}C b(3a.3f.3x)v.k.I(\'2c-10-y\',(v.D-v.m)+\'1J\');C v.k.I(\'2c-10\',v.D[0]+\'1J \'+(v.D[1]-v.m)+\'1J\')},\'58\':h(e){c v=5t(e.k);b(!v||!v.k)u;b(v.k.Z(\'5P\',F)==L)u;b(v.2i){c 15=v.k.2r(\'J\');15.W({\'5Q\':\'5s(\'+v.D.5p(\'1J \')+\'1J)\',\'T\':v.T,\'m\':v.37})}C b(3a.3f.3x)v.k.I(\'2c-10-y\',v.D+\'1J\');C v.k.I(\'2c-10\',v.D[0]+\'1J \'+v.D[1]+\'1J\')}};b(4r){2j.9y=h(e){c v=5t(e.k);b(v.k.Z(\'4t\',F)==L)u;b(v.2i){c 15=v.k.2r(\'J\');c D=$A(v.D);D[0]+=v.m*2;D[2]+=v.m*2;D=\'5s(\'+D.5p(\'1J \')+\'1J)\';15.W({\'5Q\':D,\'T\':v.T-v.m*2,\'m\':v.37+v.m*2})}C b(3a.3f.3x)v.k.I(\'2c-10-y\',(v.D-(v.m*2))+\'1J\');C v.k.I(\'2c-10\',v.D[0]+\'1J \'+(v.D[1]-(v.m*2))+\'1J\')};2j.bG=h(e){c k=$(e.k);b(k.Z(\'5P\',F)==L)u;b(3a.3f.by)k.1S().3z(\'4S\',e);C k.3z(\'4S\',e)}}o.18(\'7P\',L);o.41(2j)}h 3O(20,2m){b(!$P(2m))c 2m=20.1s;c 2n=20.Z(\'2n\',F);b(2n==F){2n=t 19(\'J\',{\'5Z\':\'2m\'}).1T(20,\'6m\');2n.41({\'bw\':h(e){b(e.k.V(\'1N\')==\'p\'){3O(20,e.k.Z(\'2m\'))}},\'58\':h(e){3O(20)}});1Y(c i=0;i<5;i++){c p=t 19(\'p\',{\'1l\':2P+\'34/3U/Y/?7A\'+(2m>i?\'\':\'7U\')+\'.3S\',\'s\':16,\'m\':16,\'bv\':\'bz\',\'2j\':{\'2B\':h(e){e.k.Z(\'20\').1s=e.k.Z(\'2m\');3O(e.k.Z(\'20\'))}}}).1T(2n);p.18(\'2m\',i+1);p.18(\'20\',20)}20.18(\'2n\',2n);3O(20);u}c 5M=2n.2y(\'p\');1Y(c i=0;i<5;i++)5M[i].1l=2P+\'34/3U/Y/?7A\'+(2m>i?\'\':\'7U\')+\'.3S\'}w.1b(\'65\',h(){$1f($$(\'.bR\'),h(o){3B(o)});$1f($$(\'.36\'),h(o){c 2v=1;c 1u=5;b(o.1g.B>11){c 29,1V;c 44=o.1g;29=44.1F(44.O(\'36\')+11);29=29.1F(0,29.O(\' \')>-1?29.O(\' \'):29.B);b(29-0==1a(29))1u=29;1V=44.1F(44.O(\'36\')+11);1V=1V.1F(29.75().B+1);1V=1V.1F(0,1V.O(\' \')>-1?1V.O(\' \'):1V.B);b(1V-0==1a(1V))2v=1V}36(o,1u,2v)});$1f($$(\'a[14="cc"]\'),h(4b){4b.1b(\'2B\',h(e){e.6G();b(w.6n&&6n.7i)6n.7i(4b.2K(\'1i\'));w.bX(4b.2K(\'1i\'),\'bV\')});w.1b(\'42\',h(){9.7D()}.R(4b))});$1f($$(\'p.7O,12.7O\'),h(o){o.I(\'4K\',\'67\');o.41({\'4S\':h(e){o.1l=o.1l.3y(\'7u\',\'7H\')},\'58\':h(e){o.1l=o.1l.3y(\'7H\',\'7u\')}})});$1f($$(\'.aV\'),h(o){79(o)});b($(\'2u\')){$(\'2u\').1T(H.1Q,\'T\');$(\'2u\').W({\'z-17\':-1,\'10\':\'51\',\'39\':\'1p\'});1Y(c i=0;i0){9.4g(q.1w,\'\',h(1m){9.7s(k,$3r(q,{\'1w\':\'\',\'1o\':1m.1o(),\'1n\':1m.1n()}))}.R(9))}C{1P=t Q.N.9A(t Q.N.4d(q.1o,q.1n),q.l)}}q.1o=1P.7g().1o();q.1n=1P.7g().1n();b(1P==1c)u;1Y(c i 4T q.2j)Q.N.4R.2Q(1P,i,q.2j[i]);b($G(q.1X)==\'1I\'&&q.1X.B>0){b(q.1z)q.1X+=\'4N 1z: 7q 4P - 7p 4P<3k>56 1w
<12 G="1p" 1s="\'+76(2I.2R(3l))+\'" /><12 G="3P" 1E="78" /><12 G="2U" 1s="7c" 3n="1M.70(9)" />
\';Q.N.4R.2Q(1P,\'2B\',h(){1P.9M(q.1X)}.R(9))}C b($G(q.1X)==\'9c\'&&q.1X.V(\'8I\').B>0){b(q.1z)q.1X.aA+=\'4N 1z: 7q 4P - 7p 4P<3k>56 1w
<12 G="1p" 1s="\'+76(2I.2R(3l))+\'" /><12 G="3P" 1E="78" /><12 G="2U" 1s="7c" 3n="1M.70(9)" />
\';Q.N.4R.2Q(1P,\'2B\',h(){1P.bB(q.1X)}.R(9))}b(q.l.ac===L)Q.N.4R.2Q(1P,\'ab\',h(9W){9.3z(\'9Y\',[9.5d[2I.2R(3l)],9.57[2I.2R(3l)]])}.R(9));k.az(1P);b(q.l.E)k.8U(t Q.N.4d(q.1o,q.1n));9.5d[2I.2R(3l)]=1P;9.57[2I.2R(3l)]=q;u 1P},aG:h(q){b($G(q)==\'1e\')q=2I.2R(q);u 9.5d[q]},83:h(q){b($G(q)==\'1e\')q=2I.2R(q);u 9.57[q]},3H:h(k,8X){b($G(k)==\'1I\')k=9.N[k];b(!$P(k))u;k.9z(8X)},4A:h(6c,8T,23){9.3e.2l(6c);b(23==2w)23=h(){};c g=h(){};c 3e=F;c g=h(){3V{Q.4L(6c,8T,{\'23\':23})}6e(e){g.4w(50,9)}};g.4w(50,9)},3u:h(k,1C,1v,1j,2N,2b,3W,1m,2O){b($G(k)==\'1I\')k=9.N[k];b(!$P(k))u;b(!$P(2N))2N=h(){};b(!$P(2b))2b=h(){};b(!$P(3W))3W=1;b(!$P(2O)||2O!=L)3W=F;c0(3W){8S 1:b($G(1v)==\'1I\')9.4g(1v,\'\',h(1m){9.3u.25([k,1C,1v,1j,2N,2b,2,1m,2O],9)}.R(9));C 9.3u(k,1C,1v,1j,2N,2b,2,\'3m\',2O);u;8Q;8S 2:b(1m==1c)2b.25([8R],9);b(1m!==\'3m\')1v=1v+\'@\'+1m.1o()+\',\'+1m.1n();b($G(1j)==\'1I\')9.4g(1j,\'\',h(1m){9.3u.25([k,1C,1v,1j,2N,2b,3,1m,2O],9)}.R(9));C 9.3u(k,1C,1v,1j,2N,2b,3,\'3m\',2O);u;8Q}b(1m==1c)2b.25([8R],9);b(1m!==\'3m\')1j=1j+\'@\'+1m.1o()+\',\'+1m.1n();b($G(1v)==\'1e\')1v=1v.1w;b($G(1j)==\'1e\')1j=1j.1w;b($G(1C)==\'1I\'){1C=$$(1C);b(1C.B>0)1C=1C[0]}b(!1C)u;c 1z=t Q.N.bo(k,1C);54.2Q(1z,"4L",h(){2N.25([1z,k,1C,1v,1j],9)}.R(9));54.2Q(1z,"82",h(){2b.25([1z.87().86],9)}.R(9));b(2O)54.2Q(1z,"bh",h(){c 8W=1C.2y(\'*\');8W.1f(h(e){e.bm(\'U\');b(e.1l)e.1l=e.1l.3y(\'aS\',\'\');b(e.V(\'1N\')==\'4E\'){e.9v=0;e.aJ=0;e.2s=0}b(e.3j){b(e.3j(\'27\')&&e.28(\'27\')==\'90\')e.U.1A=\'2q\';C b(e.3j(\'55\')&&e.28(\'55\')==\'8Z\')e.8Y(\'4E\').1g=\'8V\';C b(e.3j(\'27\')&&e.28(\'27\').O(\'8O\')>-1){e.1g=\'1z\';c 3E=e.2y(\'2H\');3E.1f(h(2H,i){c 3I=i%2==0?\'8j\':\'8i\';b(i==3E.B-1)3I+=\' 8h\';2H.1g=3I})}C b(e.V(\'1N\')==\'4E\'&&e.3j(\'27\')&&e.28(\'27\').O(\'4H.8g.B\')>-1&&e.2y(\'2H\').B<=1)e.U.1A=\'2q\';C b(e.V(\'1N\')==\'p\'&&e.3j(\'4W\')&&e.28(\'4W\').O(\'8k\')>-1){e.1S(\'8l\').1g=\'K\'}C b(e.V(\'1N\')==\'J\'&&e.3j(\'5b\')&&e.28(\'5b\').O(\'4H.8p\')>-1)e.1g=\'8o\'}C{b(e.27&&e.27==\'90\')e.U.1A=\'2q\';C b(e.55&&e.55==\'8Z\')e.8Y(\'4E\').1g=\'8V\';C b(e.27&&e.27.O(\'8O\')>-1){e.1g=\'1z\';c 3E=e.2y(\'2H\');3E.1f(h(2H,i){c 3I=i%2==0?\'8j\':\'8i\';b(i==3E.B-1)3I+=\' 8h\';2H.1g=3I})}C b(e.V(\'1N\')==\'4E\'&&e.27&&e.27.O(\'4H.8g.B\')>-1&&e.2y(\'2H\').B<=1)e.U.1A=\'2q\';C b(e.V(\'1N\')==\'p\'&&e.4W&&e.28(\'4W\').O(\'8k\')>-1)e.1S(\'8l\').1g=\'K\';C b(e.V(\'1N\')==\'J\'&&e.5b&&e.28(\'5b\').O(\'4H.8p\')>-1)e.1g=\'8o\'}})}.R(9));1z.4L(\'1v: \'+1v+\' 1j: \'+1j,{\'bK\':bH})},8n:h(1w,E,23){b(!$P(23))23=$2k;E=$3r({\'1o\':53.4D,\'1n\':-1.4C},E||{});b(!9.3e.1y(\'1h\')){9.4A(\'1h\',\'1\',9.8n.59([1w,E,23],9));u}c 1h=t Q.1h.8m();1h.aT(t Q.N.4d(E.1o,E.1n));1h.8f(1c,h(){23.25(1h.4a)}.R(9));1h.85(1w)},4g:h(71,4f,1G){b(!$P(1G))1G=$2k;b(!$P(4f))4f=\'\';b(!9.3e.1y(\'1h\')){9.4A(\'1h\',\'1\',9.4g.59([71,4f,1G],9));u}c 1h=t Q.1h.8m();1h.8f(1c,h(){c 1m=1c;b(1h.4a[0])1m=t Q.N.4d(1h.4a[0].1o,1h.4a[0].1n);1G.25([1m,1h.4a[0]])}.R(9));54.2Q(1h,"82",h(){2b.25([1h.87().86],9)}.R(9));1h.85(71.bi()+","+4f)},4l:h(1R,3o){c 4o=$(1R).1S(\'.72\');c 5a=1M.5c(4o.28(\'1E\'));c 2W=$(1R).1S(\'J\');b(!5a)u F;2W.2r(\'3k\').2E(\'3P\',3o==\'1j\'?\'89\':\'56\');2W.2r(\'J\').I(\'1L\',\'5L\');u F},70:h(1R){c 4o=$(1R).1S(\'.72\');c 5a=1M.5c(4o.28(\'1E\'));c 2W=$(1R).1S(\'J\');b(!5a)u F;c 3o=2W.2r(\'3k\').V(\'3P\');c 1w=2W.2r(\'12[G="3P"]\').V(\'1s\');c q=1M.83(aO(2W.2r(\'12[G="1p"]\').V(\'1s\')));c 84=$G(q.1X)==\'1I\'?q.1X:q.1X.V(\'3P\');c 2J=84.3y(/\\r\\n/88,\' \').3y(/\\<.*?\\>/88,\'\');b(2J.O(\'4N 1z\')!==F)2J=2J.1F(0,2J.O(\'4N 1z\'));2J+=\'@\'+q.1o+\',\'+q.1n;b(1w==\'\')u;2W.I(\'1L\',\'1p\');1M.3u(4o.28(\'1E\'),q.4J&&q.4J!=\'\'?$(q.4J):t 19(\'J\'),3o==\'89\'?1w:{\'3m\':L,\'1w\':2J},3o==\'56\'?1w:{\'3m\':L,\'1w\':2J},q.6W?q.6W:h(){})}});1M=t 1M(3t);c 5U=t 4F({8d:8c,l:{5R:0.7,6b:80,4k:8b,64:8b,8D:aZ,8C:\'aY:4T:8A\',8E:\'0 -aU\'},4V:h(l){c 61=2P+\'34/3U/3v/8a/aX.6F/6F.3C\';c 63=F;1Y(c i=0;i-1)63=L;b(!63)t 4j.3C(61);9.bu(l);9.38=[];9.1d=1c;9.1B=1c;9.21=1c;9.6C=1c;9.2F=1c;9.3q=L;9.5q=L;9.2C=[];9.8q()},8q:h(){9.8v();9.8u();9.8K();9.8G();b(9.38.B==0){u}},8F:h(2z,17,s,m){9.1x.W({\'T\':-$(w).2G().y,\'m\':$(w).5K().y+$(w).2G().y});9.E.5r(\'6u\');9.E.I(\'T\',$(w).2G().y+9.l.6b);9.21=2z;9.1B=17;9.1x.22(\'M\',9.l.5R);b(2z.B==1){9.2F=\'c1\';9.4u(2z[17].1i,2w,s,m)}C{9.2F=\'6K\';c 2t=2z.4Q(h(2D){u 2D.1i});$$(9.1H,9.1r,9.2T).W({\'1A\':\'35\'});c 2s=9.E.X(\'2s-4y-s\').2X();c 3p=9.1H.2x().x+9.1r.2x().x+9.2S.2x().x+2s;9.2h.I(\'s\',3p);9.1Z.I(\'5m-4y\',3p);c 1r=(17!=2t.B-1)?2t[17+1]:2t[0];c 1H=(17!=0)?2t[17-1]:2t[2t.B-1];c 3w=(1H==1r)?1H:[1H,1r];9.4u(2t[17],3w,s,m)}9.3q=F},6S:h(K,1Z){9.2F=\'6S\';9.6C=1Z;9.1x.W({\'T\':-$(w).2G().y,\'m\':$(w).5K().y+$(w).2G().y});9.E.5r(\'6u\');9.E.I(\'T\',$(w).2G().y+9.l.6b);9.1x.22(\'M\',9.l.5R);9.4u(K);9.3q=F},6v:h(K){b(9.3q){u};c 6k=9.K.2x();9.K.W({\'M\':0,\'s\':\'\',\'m\':\'\'});b(K.c3){c 1t=t 4c({\'s\':K.l.s,\'m\':K.l.m}).4Q(h(2D,17){u 2D.2X()})}C{c 1t=t 4c(K.bZ(\'s\',\'m\')).4Q(h(2D,17){u 2D.2X()})}c 49=9.l.4O;c 3A=9.l.47;b(49||3A){b(49==2w)49=1t.s;b(3A==2w)3A=1t.m;c 2M=49/1t.s;b(3A/1t.m<2M)2M=3A/1t.m;s=6q.6p(1t.s*2M);m=6q.6p(1t.m*2M);9.K.6j({s:s,m:m});1t.s=s;1t.m=m}c 6i=t 4c(9.E.bU(\'s\',\'m\')).4Q(h(2D,17){u 2D.2X()});c 48={};b(1t.s!=6i.s){48.s=1t.s;48.5v=-(1t.s/2).bT()};c 8r=(6k.y>0)?6i.m-6k.y:0;c 8H=1t.m+8r;48.m=8H;9.K.W({\'s\':1t.s,\'m\':1t.m});9.E.8w(\'6u\');9.E.1U(48)},4u:h(1d,3w,s,m){b(s){9.1d=t cd(1d,{\'s\':s,\'m\':m});b(!9.2C.1y(1d)){9.2C.2l(1d)};$$(9.1Z,9.2h).I(\'1L\',\'1p\');9.2h.I(\'m\',\'\');$$(9.1r,9.1H,9.2S).I(\'5O\',\'0 0\');9.3q=F;9.6v(9.1d);u}c cb=t 4j.K(1d,{5H:h(p){9.1d=p;b(!9.2C.1y(1d)){9.2C.2l(1d)};$$(9.1Z,9.2h).I(\'1L\',\'1p\');9.2h.I(\'m\',\'\');$$(9.1r,9.1H,9.2S).I(\'5O\',\'0 0\');9.6v(9.1d)}.1W(9)});b(3w&&!9.2C.1y(3w)){c 6s=t 4j.2t(3w,{5H:h(p){b(!9.2C.1y(6s)){9.2C.2l(6s)}}.1W(9)})}},8G:h(){9.38.1f(h(2z){$$(2z).1b(\'2B\',h(e){c 2U=($(e.k).8P(\'a\'))?$(e.k):$(e.k).1S(\'a\');e.6G();9.8F(2z,2z.O(2U),2U.Z(\'s\',1c),2U.Z(\'m\',1c))}.1W(9))},9);9.1r.1b(\'2B\',9.4z.1W(9,\'1r\'));9.1H.1b(\'2B\',9.4z.1W(9,\'1H\'));$(w.H).1b(\'c7\',h(e){b(9.2F!=\'6K\'||9.5q==L){u};b(e.24==\'4y\'||e.24==\'c8\'){9.4z(e,\'1r\')}C b(e.24==\'2a\'){9.4z(e,\'1r\')}C b(e.24==\'c4\'){9.6N()}}.1W(9));$$(9.1r,9.1H,9.2S).41({\'bS\':h(e){c 2U=($(e.k).8P(\'a\'))?$(e.k):$(e.k).1S(\'a\');2U.I(\'5O\',9.l.8E)}.1W(9),\'bD\':h(){9.I(\'5O\',\'0 0\')}});9.1x.V(\'22\').1b(\'3Z\',h(){b(9.1x.X(\'M\')==9.l.5R){9.E.22(\'M\',1)}C b(9.1x.X(\'M\')==0){9.1x.W({\'m\':\'\',\'T\':\'\'})}}.1W(9));9.E.V(\'1U\').1b(\'3Z\',h(){9.K.bA(9.1d);b(!9.1d.l){9.1d.6j({s:9.K.2K(\'s\'),m:9.K.2K(\'m\')})}9.K.22(\'M\',1);c d=(!(9.2F==\'6S\'))?9.21[9.1B].2K(\'5e\'):9.6C;b($bx(d)){9.1Z.2E(\'8I\',d)};b(9.2F==\'6K\'){9.2T.bO((9.1B+1)+\' bP \'+9.21.B)}c 40=9.E.X(\'m\').2X();9.2h.I(\'m\',9.2p.X(\'m\').2X());c 8J=9.2p.2x().y;c 6T=9.1d.l?9.1d.l.m:9.K.2x().y;c bQ=9.1d.l?9.1d.l.s:9.K.2x().x;c 8N=(40>6T)?(9.2p.2x().y+6T)-40:8J;9.2p.I(\'1A\',\'2q\');9.E.Z(\'5g\').bL(40,1a(40)+1a(8N))}.1W(9));9.E.Z(\'5g\').1b(\'3Z\',h(){9.2p.W({\'1L\':\'5L\',\'1A\':\'35\'});$$(9.1Z,9.2h).I(\'1L\',\'5L\');c 5o=$(w).5K().y;c 4G=$(w).2G().y;9.1d.1T(9.K,\'T\');9.1x.I(\'m\',5o+4G);9.5q=F}.1W(9));w.1b(\'5N\',h(){b(9.1x.X(\'M\')==0){u};c 5o=$(w).5K().y;c 4G=$(w).2G().y;9.1x.W({\'m\':5o+4G,\'T\':-4G})}.1W(9));$$(9.1x,9.K,9.2S).1b(\'2B\',h(e){b(e.k.V(\'1N\')==\'1e\')u;9.6N()}.1W(9))},4z:h(e,8M){e.6G();9.5q=L;b(8M=="1r"){c i=(9.1B!=9.21.B-1)?9.1B+=1:9.1B=0;c 6Q=(9.1B!=9.21.B-1)?9.1B+1:0}C{c i=(9.1B!=0)?9.1B-=1:9.1B=9.21.B-1;c 6Q=(9.1B!=0)?9.1B-1:9.21.B-1};9.K.2k();9.1Z.2k();9.2T.2k();b(!9.2C.1y(9.21[i].1i)){9.E.5r(\'9x\')};9.4u(9.21[i].1i,9.21[6Q].1i)},6N:h(){9.8L();9.1d=1c;9.1B=1c;9.21=1c;$$(9.1H,9.1r,9.2T).I(\'1A\',\'2q\');c 2s=9.E.X(\'2s-4y-s\').2X();c 3p=9.2S.2x().x+2s;9.2h.W({\'s\':3p,\'m\':\'\',\'1L\':\'1p\'});9.1Z.I(\'5m-4y\',3p);9.1Z.2k();9.2p.W({\'1L\':\'1p\',\'1A\':\'\'});9.K.W({\'M\':0,\'s\':\'\',\'m\':\'\'});9.K.2k();9.2T.2k();9.E.W({\'M\':0,\'s\':9.l.4k,\'m\':9.l.64,\'5v\':-(9.l.4k/2)});9.1x.22(\'M\',0);9.2F=1c;9.3q=L},8L:h(){9.1x.V(\'22\').3K();9.E.V(\'1U\').3K();9.E.V(\'22\').3K();9.E.Z(\'5g\').3K();9.K.V(\'22\').3K()},8K:h(){9.1x.2E(\'22\',{4v:\'6B\',5f:\'3K\'});9.E.2E(\'22\',{4v:\'6B\',5f:\'6E\'});9.E.2E(\'1U\',{4v:9.l.8D,5f:\'6E\',9w:9.l.8C});9.E.18(\'5g\',t 9r.9q(9.E,{\'9t\':\'m\',\'4v\':\'6B\'}));9.K.2E(\'22\',{5f:\'6E\'})},8v:h(){c 5l=[];c 6V=[];$$(\'a\').1f(h(a){b(a.14&&a.14.9u(/^6F/i)&&(a.1i.1y(\'.9B\')||a.1i.1y(\'.9C\')||a.1i.1y(\'.3S\')||a.1i.1y(\'.9K\'))){b(a.14.B>7&&!5l.1y(a.14)){5l.2l(a.14)};6V.2l(a)}},9);6V.1f(h(a){$(a).18(\'1i\',a.1i);$(a).18(\'14\',a.14);b(a.14.B>7){c 14=a.14;b(a.14.O(\',\')>-1){$(a).18(\'s\',14.1F(14.O(\',\')+1,14.O(\',\',14.O(\',\')+1)));$(a).18(\'m\',14.1F(14.O(\',\',14.O(\',\')+1)+1,14.O(\']\')));14=14.1F(0,14.O(\',\'))+\']\'}5l.1f(h(f,i){b(a.14==f){b(!9.38[i]){9.38[i]=[]};9.38[i].2l($(a))}},9)}C{9.38.2l([$(a)])}},9)},8u:h(){9.1x=t 19(\'J\',{\'1E\':\'9N\',\'26\':{\'M\':\'0\',\'1L\':\'5L\',\'z-17\':9J}}).1T($(H.1Q));9.E=t 19(\'J\',{\'1E\':\'9I\',\'26\':{\'s\':9.l.4k,\'z-17\':9E,\'m\':9.l.64,\'5v\':-(9.l.4k/2),\'M\':0}}).1T($(H.1Q));9.K=t 19(\'J\',{\'1E\':\'9F\',\'26\':{\'z-17\':8t}}).1T(9.E);9.2p=t 19(\'J\',{\'1E\':\'9p\',\'26\':{\'z-17\':9O}}).1T(9.E).I(\'1L\',\'1p\');9.2h=t 19(\'J\',{\'1E\':\'9k\',\'26\':{\'z-17\':98}}).I(\'1L\',\'1p\');9.1Z=t 19(\'J\',{\'1E\':\'97\',\'26\':{\'z-17\':99}}).I(\'1L\',\'1p\');9.2p.6f(9.2h,9.1Z,t 19(\'J\',{\'5Z\':\'3i\',\'26\':{\'z-17\':8t}}));9.2S=t 19(\'a\',{\'1E\':\'94\'});9.1r=t 19(\'a\',{\'1E\':\'92\'});9.1H=t 19(\'a\',{\'1E\':\'91\'});9.2T=t 19(\'3k\',{\'1E\':\'93\'});$$(9.1r,9.1H,9.2T).I(\'1A\',\'2q\');9.2h.6f(9.2S,9.1r,9.1H,t 19(\'J\',{\'5Z\':\'3i\'}),9.2T)}});w.1b(\'65\',h(){5U=t 5U()});c 3d={6H:h(p,l){p=$(p);b(p.V(\'1N\')!=\'p\')u;c 1D=p.1g.6z();b(!$P(l))l={};b(1D.O(\'3F \')>-1){1D=1D.1F(1D.O(\'3F \')+8);1D=1D.4q(\' \');b(1D[0]&&!60(5G(1D[0]))&&5G(1D[0])<=1)l.m=1D[0];b(1D[1]&&!60(5G(1D[1]))&&5G(1D[1])<=1)l.M=1D[1]}l={1k:[p,l]};b(w.95)l.4w=50;p.4s=t 9j();p.4s.5H=3d.3F.9i(l);p.4s.1l=p.1l},62:h(p){p=$(p);b(p.4s)p.4s.5H=1c;b((p.V(\'1N\')==\'p\')&&(p.1g==\'8x\')){p.1g=p.9e.1g;p.U.5z=p.8s;p.9g(p.1S())}},3F:h(p,l){l=$9h({m:0.33,M:0.5},l||{});3d.62(p);c 3h,32=6q.6p(p.m*l.m);b(3a.3f.3x){3h=t 19(\'p\',{\'1l\':p.1l,\'26\':{\'s\':p.2K(\'s\'),\'m\':p.2K(\'m\'),\'aF\':-p.2K(\'m\')+32,\'2s\':0,\'9P\':\'ap aq:ar.ah.aj(M=\'+(l.M*5y)+\', U=1, ak=0, as=0, at=0, aB=0, aE=\'+(l.m*5y)+\')\'}})}C{3h=t 19(\'3h\',{\'26\':{\'s\':p.s,\'m\':32,\'2s\':0}});b(!3h.8B)u}c J=t 19(\'J\').1T(p,\'6m\').6f(p,3h);J.1g=p.1g;J.U.5z=p.8s=p.U.5z;J.8w(\'3F\').W({\'s\':p.s,\'m\':32+p.m,\'39\':\'1p\'});p.U.5z=\'aw-ag: 2p\';p.1g=\'8x\';b(3a.3f.3x){u}b(!l.1K)l.1K=\'9Z\';l.1K=l.1K.3y(\'#\',\'\');b(l.1K.B==3)l.1K=l.1K[0]+l.1K[0]+l.1K[1]+l.1K[1]+l.1K[2]+l.1K[2];c 6r=1a(l.1K.1F(0,2),16);c 6O=1a(l.1K.1F(2,4),16);c 6U=1a(l.1K.1F(4,6),16);c 2f=3h.6j({\'s\':p.s,\'m\':32}).8B(\'2d\');2f.9V();2f.9R(0,p.m-1);2f.2M(1,-1);2f.9Q(p,0,0,p.s,p.m);2f.9T();2f.9U=\'a2-8A\';c 5n=2f.a3(0,0,0,32);5n.8z(0,\'8y(\'+6r+\', \'+6O+\', \'+6U+\', \'+(1-l.M)+\')\');5n.8z(1,\'8y(\'+6r+\', \'+6O+\', \'+6U+\', 1.0)\');2f.aa=5n;2f.5s(0,0,p.s,32);2f.a5()},8e:h(){$1f(H.a4(\'p\'),h(p){b($(p).a6(\'3F\'))3d.6H(p)})}};19.4U({a7:h(l){3d.6H(9,l);u 9},a8:h(){3d.62(9);u 9}});w.1b("65",3d.8e);',62,758,'|||||||||this||if|var|||||function|||target|options|height||eElement|img|marker||width|new|return|targetData|window|||||length|else|bgPos|center|false|type|document|setStyle|div|image|true|opacity|maps|indexOf|defined|google|bind|eImages|top|style|get|setStyles|getStyle|icon|retrieve|position||input||rel|eDiv||index|store|Element|parseInt|addEvent|null|currentImage|object|each|className|search|href|to|arguments|src|result|lng|lat|hidden|styleSheets|next|value|imageSize|iDuration|from|address|overlay|contains|directions|display|currentIndex|panel|class2|id|substring|onready|prev|string|px|color|visibility|Google|tag|curhash|gmarker|body|obj|getParent|inject|morph|tFadeDelay|bindWithEvent|infoWindow|for|description|field|currentGallery|tween|callback|key|attempt|styles|jsdisplay|getAttribute|tDuration|left|onerror|background||curImage|context|controls|navigation|pngFix|events|empty|push|rating|divRating|ge|bottom|none|getElement|border|images|backgrounds|iFadeDelay|undefined|getSize|getElements|gallery|url|click|loadedImages|item|set|mode|getScroll|tr|JSON|markerLocation|getProperty|call|scale|oncomplete|removeStyle|rooturl|addListener|encode|close|count|button|getCoordinates|container|toInt|zoom|returnData|divHeight|rules|canvasHeight||webapp|block|fadeImages|innerHeight|galleries|overflow|Browser|addRule|htcurl|Reflection|loaded|Engine|ret|canvas|clear|hasAttribute|span|basemarker|processed|onclick|dir|navWidth|closed|merge|htc|apiKey|getDirections|javascript|preloads|trident|replace|fireEvent|maxheight|setupMorph|css|timer|trs|reflect|shadow|addMapControl|newClass|curitem|cancel|preventClickClose|eHeight|eWidth|buildRatings|text|absolute|behavior|png|myWidth|shared|try|stage|clientWidth|AJAX|onComplete|currentCenterHeight|addEvents|beforeunload|placemark|elClass||console|maxHeight|targetSize|maxwidth|results|eA|Hash|LatLng|hash|country|postcodeSearch|myHeight|earth|Asset|initialWidth|showDirections|documentElement|name|mapDOM|ie6|split|withClickState|preload|disabled|loadImages|duration|delay|_fadeImages_autoRotate|right|next_prev_aux|loadModule|ratio|505551|668335|table|Class|scrollTop|Route|small|directionsContainer|cursor|load|large|Get|maxWidth|here|map|Event|mouseenter|in|implement|initialize|jsvalues|la|auto|styleMap||fixed|point||GEvent|jsselect|End|basemapmarkers|mouseleave|pass|mapOBJ|jseval|getMap|mapmarkers|title|link|setFinalHeight|enable|getWindowSize|periodical|relative|families|margin|gradient|scrollSize|join|busy|addClass|rect|getAndStoreDivDetails|log|marginLeft|self|func|100|cssText|getHash|queue|chkObj|eval|hideModal|clientHeight|parseFloat|onload|objectHeight|sDisplayStyle|getScrollSize|visible|imgs|resize|backgroundPosition|holdDown|clip|overlayOpacity|pngfix|earths|Milkbox|normal|rotateFunction|com|http|class|isNaN|cssurl|remove|loadedcss|initialHeight|domready|debugService|pointer|showDialog|hideDialog|showModal|topPosition|module|Ajax_Hash|catch|adopt|startTimer|str|centerSize|setProperties|imageBoxSize|doQueue|after|pageTracker|objectWidth|floor|Math|c_r|preloadImage|highlight|mbLoading|showImage|iconHighlight|iconNormal|show|toLowerCase|lastChange|short|specialDescription|appVersion|chain|milkbox|preventDefault|add|checked|delete|imageGallery|disable|isdisabled|closeMilkbox|c_g|MSIE|_i|bgImageFix|showThisImage|imageY|c_b|milkbox_a|directionsComplete|_fadeBackgrounds_autoRotate|ie7|navigator|calculateDirections|postcode|hasGoogleMap|1000|importHash|toString|escape|Object|addressbox|createHoverBackground|Array|ALTITUDE_RELATIVE_TO_GROUND|Go|Queue|Ajax_Queue|Size|getLatLng|iepngfix_tilebg|_trackPageview|oldvalue|fn|ie8|calldata|location|setValue|From|To|method|addMapMarker|createStyle|_off|innerWidth|createEarth|Events|wSize|modal|star|minmax|rotation|removeEvents|writeln|Debug|createMap|_on|angle|createIcon|setHref|fadeBackgrounds|setIcon|getIconStyle|hover|root|jacket|templates|circle|red|_grey|dialog|mapfiles|kml|paddle|ex||getView|error|getBaseMarker|infoString|execute|code|getStatus|ig|Start|resources|250|Options|Implements|addFromClass|setSearchCompleteCallback|Steps|last|odd|even|markerIconPaths|td|LocalSearch|findNearest|summary|summaryHtml|initMilkbox|gap|backupStyle|9992|prepareHTML|prepareGalleries|removeClass|reflected|rgba|addColorStop|out|getContext|resizeTransition|resizeDuration|hoverBackgroundPosition|openMilkbox|prepareEvents|targetHeight|html|bottomSize|prepareEffects|cancelAllEffects|direction|targetOffset|AllRoutes|match|break|602|case|version|setCenter|bar|elements|control|getFirst|Placemark|walking|mbPrevLink|mbNextLink|mbCount|mbCloseLink|ie|typeof|mbDescription|9994|9995|number|ModalDialog_blackback|element|40000|parentNode|include|replaces|extend|create|Image|mbNavigation|getScrollTop|getScrollLeft|320000|ModalDialog|mbBottom|Tween|Fx|outer|property|test|cellPadding|transition|muLoading|mousedown|addControl|Marker|gif|jpg|trace|9991|mbImage|inspect|onStart|mbCenter|9990|swf|_fadeBackgrounds|openInfoWindowHtml|mbOverlay|9993|filter|drawImage|translate|getValue|restore|globalCompositeOperation|save|dragged|300|markerDragged|FFFFFF|addToQueue|onChange|destination|createLinearGradient|getElementsByTagName|fill|hasClass|addReflection|removeReflection|all|fillStyle|dragend|draggable|csshover|default|shift|align|Microsoft|setTimeout|Alpha|finishOpacity|eachDelayed|callee|waitForCSS|scaleDimensions|flipv|progid|DXImageTransform|startx|starty|post|send|vertical|php|ajax|addOverlay|innerHTML|finishx|ajax_queue|ajax_hash|finishy|marginBottom|getMarker|setLongitude|G_SATELLITE_3D_MAP|cellSpacing|setGeometry|setNormalStyle|addMapType|boolean|unescape|setLatitude|change|setProperty|_graybg|setCenterPoint|23px|hoverbg|createStyleMap|mootools|sine|500|ScaleControl|selectorText|cssRules|constructor|www|jsapi|Earth|not|Could|alert|copyAsLookAt|SmallZoomControl|SmallMapControl|LargeMapControl|setHighlightStyle|Map2|setAbstractView|addoverlay|toUpperCase|GUnload|createPoint|async|removeAttribute|createInstance|Directions|createLookAt|setVisibility||getWindow|setStyleSelector|setOptions|alt|mousemove|chk|trident4|Star|grab|openInfoWindow|infoWindowAnchor|mouseout|createPlacemark|GPoint|mouseup|G_TRAVEL_MODE_DRIVING|getFeatures|appendChild|travelMode|start|shadowSize|setName|appendText|of|imageX|defaultMorph|mouseover|round|getStyles|_blank|add3DMarker|open|isMapReady|getProperties|switch|singleImage|MapTypeControl|remote|esc|GIcon|iconSize|keydown|space|iconAnchor|Point|loadImage|external|Swiff'.split('|'),0,{})) ;/***************************************************************** typeface.js, version 0.11 | typefacejs.neocracy.org Copyright (c) 2008, David Chester davidchester@gmx.net 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. *****************************************************************/ (function() { var _typeface_js = { faces: {}, loadFace: function(typefaceData) { var familyName = typefaceData.familyName.toLowerCase(); if (!this.faces[familyName]) { this.faces[familyName] = {}; } if (!this.faces[familyName][typefaceData.cssFontWeight]) { this.faces[familyName][typefaceData.cssFontWeight] = {}; } var face = this.faces[familyName][typefaceData.cssFontWeight][typefaceData.cssFontStyle] = typefaceData; face.loaded = true; }, log: { debug: function(message) { var typefaceConsole = document.getElementById('typeface-console'); if (typefaceConsole) typefaceConsole.innerHTML += 'DEBUG: ' + message + "
"; }, error: function(message) { var typefaceConsole = document.getElementById('typeface-console'); if (typefaceConsole) typefaceConsole.innerHTML += 'ERROR: ' + message + "
"; } }, pixelsFromPoints: function(face, style, points, dimension) { var pixels = points * parseInt(style.fontSize) * 72 / (face.resolution * 100); if (dimension == 'horizontal' && style.fontStretchPercent) { pixels *= style.fontStretchPercent; } return pixels; }, pointsFromPixels: function(face, style, pixels, dimension) { var points = pixels * face.resolution / (parseInt(style.fontSize) * 72 / 100); if (dimension == 'horizontal' && style.fontStretchPrecent) { points *= style.fontStretchPercent; } return points; }, cssFontWeightMap: { normal: 'normal', bold: 'bold', 400: 'normal', 700: 'bold' }, cssFontStretchMap: { 'ultra-condensed': 0.55, 'extra-condensed': 0.77, 'condensed': 0.85, 'semi-condensed': 0.93, 'normal': 1, 'semi-expanded': 1.07, 'expanded': 1.15, 'extra-expanded': 1.23, 'ultra-expanded': 1.45, 'default': 1 }, fallbackCharacter: '.', getTextExtents: function(face, style, text) { var extentX = 0; var extentY = 0; var horizontalAdvance; for (var i = 0; i < text.length; i++) { var glyph = face.glyphs[text.charAt(i)] ? face.glyphs[text.charAt(i)] : face.glyphs[this.fallbackCharacter]; var letterSpacingAdjustment = this.pointsFromPixels(face, style, style.letterSpacing); extentX += Math.max(glyph.ha, glyph.x_max) + letterSpacingAdjustment; horizontalAdvance += glyph.ha + letterSpacingAdjustment; } return { x: extentX, y: extentY, ha: horizontalAdvance }; }, pixelsFromCssAmount: function(cssAmount, defaultValue) { var matches = undefined; if (cssAmount == 'normal') { return defaultValue; } else if (matches = cssAmount.match(/([\-\d+\.]+)px/)) { return matches[1]; } else if (matches = cssAmount.match(/([\-\d\.]+)pt/)) { return matches[1] * 100 / 75; } else { return defaultValue; } }, getRenderedText: function(e) { var browserStyle = window.getComputedStyle ? document.defaultView.getComputedStyle(e.parentNode, '') : e.parentNode.currentStyle ? e.parentNode.currentStyle : { color: '#ff0000', fontSize: 12, fontFamily: 'arial' }; var inlineStyleAttribute = e.parentNode.getAttribute('style'); if (inlineStyleAttribute && typeof(inlineStyleAttribute) == 'object') { inlineStyleAttribute = inlineStyleAttribute.cssText; } if (inlineStyleAttribute) { var inlineStyleDeclarations = inlineStyleAttribute.split(/\s*\;\s*/); var inlineStyle = {}; for (var i = 0; i < inlineStyleDeclarations.length; i++) { var declaration = inlineStyleDeclarations[i]; var declarationOperands = declaration.split(/\s*\:\s*/); inlineStyle[declarationOperands[0]] = declarationOperands[1]; } } var style = { color: browserStyle.color, fontFamily: browserStyle.fontFamily.split(/\s*,\s*/)[0].replace(/(^"|^'|'$|"$)/g, '').toLowerCase(), fontSize: this.pixelsFromCssAmount(browserStyle.fontSize, 12), fontWeight: this.cssFontWeightMap[browserStyle.fontWeight], fontStyle: browserStyle.fontStyle ? browserStyle.fontStyle : 'normal', fontStretchPercent: this.cssFontStretchMap[inlineStyle && inlineStyle['font-stretch'] ? inlineStyle['font-stretch'] : 'default'], textDecoration: browserStyle.textDecoration, lineHeight: this.pixelsFromCssAmount(browserStyle.lineHeight, 'normal'), letterSpacing: this.pixelsFromCssAmount(browserStyle.letterSpacing, 0) }; var face; if ( this.faces[style.fontFamily] && this.faces[style.fontFamily][style.fontWeight] ) { face = this.faces[style.fontFamily][style.fontWeight][style.fontStyle]; } if (!face) { return; } var text = e.nodeValue.replace(/(?:^\s+|\s+$)/g, ''); text = text.replace(/\s+/g, ' '); var words = text.split(/\s/); var containerSpan = document.createElement('span'); for (var i = 0; i < words.length; i++) { var word = words[i]; var delimiter = i == words.length - 1 ? '' : ' '; var vectorElement = this.renderWord(face, style, word + delimiter); if (vectorElement) containerSpan.appendChild(vectorElement); } return containerSpan; }, renderDocument: function(callback) { // args: onComplete if (this.renderDocumentLock) return; this.renderDocumentLock = true; if (!callback) callback = function(e) { e.style.visibility = 'visible' }; var elements = document.getElementsByTagName('*'); var elementsLength = elements.length; for (var i = 0; i < elements.length; i++) { if (elements[i].className.match(/(^|\s)typeface-js(\s|$)/) || elements[i].tagName.match(/^(H1|H2|H3|H4|H5|H6)$/)) { this.replaceText(elements[i]); if (typeof callback == 'function') { callback(elements[i]); } } } }, replaceText: function(e) { if (e.hasChildNodes()) { var childNodes = []; for (var i = 0; i < e.childNodes.length; i++) { childNodes[i] = e.childNodes[i]; } for (var i = 0; i < childNodes.length; i++) { this.replaceText(childNodes[i]); } } if (e.nodeType == 3 && e.nodeValue.match(/\S/)) { var parentNode = e.parentNode; var renderedText = this.getRenderedText(e); if (renderedText) { parentNode.insertBefore(renderedText, e); parentNode.removeChild(e); } } }, applyElementVerticalMetrics: function(face, style, e) { var boundingBoxAdjustmentTop = this.pixelsFromPoints(face, style, face.ascender - Math.max(face.boundingBox.yMax, face.ascender)); var boundingBoxAdjustmentBottom = this.pixelsFromPoints(face, style, Math.min(face.boundingBox.yMin, face.descender) - face.descender); var cssLineHeightAdjustment = 0; if (style.lineHeight != 'normal') { cssLineHeightAdjustment = style.lineHeight - this.pixelsFromPoints(face, style, face.lineHeight); } var marginTop = Math.round(boundingBoxAdjustmentTop + cssLineHeightAdjustment / 2); var marginBottom = Math.round(boundingBoxAdjustmentBottom + cssLineHeightAdjustment / 2); e.style.marginTop = marginTop + 'px'; e.style.marginBottom = marginBottom + 'px'; }, vectorBackends: { canvas: { _initializeSurface: function(face, style, text) { var extents = this.getTextExtents(face, style, text); var canvas = document.createElement('canvas'); canvas.innerHTML = text; this.applyElementVerticalMetrics(face, style, canvas); canvas.height = Math.round(this.pixelsFromPoints(face, style, face.lineHeight)); canvas.width = Math.round(this.pixelsFromPoints(face, style, extents.x, 'horizontal')); if (extents.x > extents.ha) canvas.style.marginRight = Math.round(this.pixelsFromPoints(face, style, extents.x - extents.ha, 'horizontal')) + 'px'; var ctx = canvas.getContext('2d'); var pointScale = this.pixelsFromPoints(face, style, 1); ctx.scale(pointScale * style.fontStretchPercent, -1 * pointScale); ctx.translate(0, -1 * face.ascender); ctx.fillStyle = style.color; return { context: ctx, canvas: canvas }; }, _renderGlyph: function(ctx, face, char, style) { var glyph = face.glyphs[char]; if (glyph == undefined) { //this.log.error("glyph not defined: " + char); return this.renderGlyph(ctx, face, this.fallbackCharacter, style); } if (glyph.o) { var outline; if (glyph.cached_outline) { outline = glyph.cached_outline; } else { outline = glyph.o.split(' '); glyph.cached_outline = outline; } for (var i = 0; i < outline.length; ) { var action = outline[i++]; switch(action) { case 'm': ctx.moveTo(outline[i++], outline[i++]); break; case 'l': ctx.lineTo(outline[i++], outline[i++]); break; case 'q': var cpx = outline[i++]; var cpy = outline[i++]; ctx.quadraticCurveTo(outline[i++], outline[i++], cpx, cpy); break; } } } if (glyph.ha) { var letterSpacingPoints = style.letterSpacing && style.letterSpacing != 'normal' ? this.pointsFromPixels(face, style, style.letterSpacing) : 0; ctx.translate(glyph.ha + letterSpacingPoints, 0); } }, _renderWord: function(face, style, text) { var surface = this.initializeSurface(face, style, text); var ctx = surface.context; var canvas = surface.canvas; ctx.beginPath(); ctx.save(); var chars = text.split(''); for (var i = 0; i < chars.length; i++) { var char = chars[i]; this.renderGlyph(ctx, face, char, style); } ctx.fill(); if (style.textDecoration == 'underline') { ctx.beginPath(); ctx.moveTo(0, face.underlinePosition); ctx.restore(); ctx.lineTo(0, face.underlinePosition); ctx.strokeStyle = style.color; ctx.lineWidth = face.underlineThickness; ctx.stroke(); } return ctx.canvas; } }, vml: { _initializeSurface: function(face, style, text) { var shape = document.createElement('v:shape'); var extents = this.getTextExtents(face, style, text); shape.style.width = style.fontSize + 'px'; shape.style.height = style.fontSize + 'px'; if (extents.x > extents.ha) { shape.style.marginRight = this.pixelsFromPoints(face, style, extents.x - extents.ha, 'horizontal') + 'px'; } this.applyElementVerticalMetrics(face, style, shape); shape.coordsize = (face.resolution * 100 / style.fontStretchPercent / 72 ) + "," + (face.resolution * 100 / 72); shape.coordorigin = '0,' + face.ascender; shape.style.flip = 'y'; shape.fillColor = style.color; shape.stroked = false; shape.path = 'hh m 0,' + face.ascender + ' l 0,' + face.descender + ' '; return shape; }, _renderGlyph: function(shape, face, char, offsetX, style) { var glyph = face.glyphs[char]; if (glyph == undefined) { //this.log.error("glyph not defined: " + char); return this.renderGlyph(shape, face, this.fallbackCharacter, offsetX, style); } var vmlSegments = []; if (glyph.o) { var outline; if (glyph.cached_outline) { outline = glyph.cached_outline; } else { outline = glyph.o.split(' '); glyph.cached_outline = outline; } var prevAction, prevX, prevY; var i; for (i = 0; i < outline.length;) { var action = outline[i++]; var vmlSegment = ''; var x = Math.round(outline[i++]) + offsetX; var y = Math.round(outline[i++]); switch(action) { case 'm': vmlSegment = (vmlSegments.length ? 'x ' : '') + 'm ' + x + ',' + y; break; case 'l': vmlSegment = 'l ' + x + ',' + y; break; case 'q': var cpx = Math.round(outline[i++]) + offsetX; var cpy = Math.round(outline[i++]); var cp1x = Math.round(prevX + 2.0 / 3.0 * (cpx - prevX)); var cp1y = Math.round(prevY + 2.0 / 3.0 * (cpy - prevY)); var cp2x = Math.round(cp1x + (x - prevX) / 3.0); var cp2y = Math.round(cp1y + (y - prevY) / 3.0); vmlSegment = 'c ' + cp1x + ',' + cp1y + ',' + cp2x + ',' + cp2y + ',' + x + ',' + y; break; } prevAction = action; prevX = x; prevY = y; if (vmlSegment.length) { vmlSegments.push(vmlSegment); } } } vmlSegments.push('x', 'e'); return vmlSegments.join(' '); }, _renderWord: function(face, style, text) { var offsetX = 0; var shape = this.initializeSurface(face, style, text); var letterSpacingPoints = style.letterSpacing && style.letterSpacing != 'normal' ? this.pointsFromPixels(face, style, style.letterSpacing) : 0; letterSpacingPoints = Math.round(letterSpacingPoints); var chars = text.split(''); for (var i = 0; i < chars.length; i++) { var char = chars[i]; shape.path += this.renderGlyph(shape, face, char, offsetX, style) + ' '; offsetX += face.glyphs[char].ha + letterSpacingPoints ; } shape.style.marginRight = this.pixelsFromPoints(face, style, face.glyphs[' '].ha) + 'px'; return shape; } } }, setVectorBackend: function(backend) { var backendFunctions = ['renderWord', 'initializeSurface', 'renderGlyph']; for (var i = 0; i < backendFunctions.length; i++) { var backendFunction = backendFunctions[i]; this[backendFunction] = this.vectorBackends[backend]['_' + backendFunction]; } } }; // IE won't accept real selectors... var typefaceSelectors = ['.typeface-js', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6']; if (document.createStyleSheet) { var styleSheet = document.createStyleSheet(); for (var i = 0; i < typefaceSelectors.length; i++) { var selector = typefaceSelectors[i]; styleSheet.addRule(selector, 'visibility: hidden'); } } else if (document.styleSheets && document.styleSheets.length) { var styleSheet = document.styleSheets[0]; document.styleSheets[0].insertRule(typefaceSelectors.join(',') + ' { visibility: hidden; }', styleSheet.cssRules.length); } var backend = !!(window.attachEvent && !window.opera) ? 'vml' : window.CanvasRenderingContext2D || document.createElement('canvas').getContext ? 'canvas' : null; if (backend == 'vml') { document.namespaces.add("v"); var styleSheet = document.createStyleSheet(); styleSheet.addRule('v\\:*', "behavior: url(#default#VML); display: inline-block;"); } _typeface_js.setVectorBackend(backend); window._typeface_js = _typeface_js; // based on code by Dean Edwards / Matthias Miller / John Resig function typefaceInit() { // quit if this function has already been called if (arguments.callee.done) return; // flag this function so we don't do the same thing twice arguments.callee.done = true; // kill the timer if (window._typefaceTimer) clearInterval(_typefaceTimer); _typeface_js.renderDocument( function(e) { e.style.visibility = 'visible' } ); }; if (/WebKit/i.test(navigator.userAgent)) { var _typefaceTimer = setInterval(function() { if (/loaded|complete/.test(document.readyState)) { typefaceInit(); } }, 10); } if (document.addEventListener) { window.addEventListener('DOMContentLoaded', function() { typefaceInit() }, false); } /*@cc_on @*/ /*@if (@_win32) document.write("