/**
 * RightJS - the right javascript framework
 *
 * The library released under terms of the MIT license
 * Visit http://rightjs.org for more details
 *
 * Copyright (C) 2008-2009 Nikolay V. Nemshilov aka St.
 */

eval((function(s,d){for(var i=d.length-1;i>-1;i--)if(d[i])s=s.replace(new RegExp(i,'g'),d[i]);return s})("14 RightJS={version:\"1.4.0\",modules:[\"core\",\"32m\",\"cookie\",\"101\",\"fx\"]};self.43={IE:!!(61.attach115&&!61.opera),Opera:!!61.opera,WebKit:82.79.37('AppleWebKit/')>-1,Gecko:82.79.37('Gecko')>-1&&82.79.37('KHTML')==-1,MobileSafari:!!82.79.22(/Apple.*Mobile.*Safari/),146:82.79.37('146')!=-1,OLD:82.79.37('MSIE 6')!=-1||82.79.37('MSIE 7')!=-1,IE8:82.79.37('MSIE 8')!=-1};12 38(d,s,a){14 s=s||{};32(14 k in s)if(!(a&&d[k]!==127))d[k]=s[k];13 d};12 $156(){32(14 i=0;i<15.17;i++)156{13 15[i]()}106(e){}};12 $eval(t){if(!46(t)||t.blank())13;if(61.execScript)61.execScript(t);21{14 s=19.15127('script');s.setAttribute('68','147/javascript');s.147=t;19.body.67(s)}}12 $break(){throw 33 Break()};12 $alias(o,n){32(14 a in n)o[a]=o[n[a]];13 o};12 defined(v){13 v!==127};12 77(v){13 68of(v)=='object'&&v!==36&&v.74===78};if(82.79.37('146/3')!=-1)eval(77.to97().54(';','&&!(15[0] instanceof HTML27);'));12 113(v){13 68of(v)=='12'};12 46(v){13 68of(v)=='string'};12 107(v){13 v instanceof Array};12 is173(v){13 68of(v)=='152'};12 is27(v){13 v&&!!v.28};12 isNode(v){13 v&&!!v.nodeType};12 $A(b){if(b.item)32(14 a=[],i=0,l=b.17;i<l;i++)a[i]=b[i];21 14 a=Array.18.slice.35(b);13 a};12 $E(t,o){13 33 27(t,o)};12 $(e){14 e=68of(e)=='string'?19.get27ById(e):e;13 43.OLD?27.91(e):e};12 $$(c){13 $A(19.query45All(c))};12 $w(s){13 s.144().126(/\\s+/)}14 $uid=(12(){14 U=1;13 12(i){13 i.uid||(i.uid=U++)}})();38(78,{keys:12(o){14 a=[];32(14 k in o)a.63(k);13 a},112s:12(o){14 v=[];32(14 k in o)v.63(o[k]);13 v},empty:12(o){32(14 k in o)break;13!k},155:12(){14 f=$A(15),o=f.114(),c={};32(14 k in o)if(!f.31(k))c[k]=o[k];13 c},only:12(){14 f=$A(15),o=f.114(),c={};32(14 i=0;i<f.17;i++)if(defined(o[f[i]]))c[f[i]]=o[f[i]];13 c},merge:12(){14 a=$A(15),o={};32(14 i=0;i<a.17;i++)if(77(a[i]))38(o,a[i]);13 o},toQuery97:12(o){14 t=[];32(14 k in o)t.63(k+'='+encodeURIComponent(o[k]));13 t.join('&')}});38(83,{random:12(a,m){14 r=11._random();if(15.17==0)13 r;if(15.17==1)14 m=a,a=0;13 83.floor(r*(m-a+1)+a)},_random:83.random});38(Array.18,(12(A){14 m=A.32Each||12(c,s){32(14 i=0;i<11.17;i++)c.35(s,11[i],i,11)};14 k=A.131||12(c,s){32(14 r=[],i=0;i<11.17;i++)if(c.35(s,11[i],i,11))r.63(11[i]);13 r};14 t=A.69||12(c,s){32(14 r=[],i=0;i<11.17;i++)r.63(c.35(s,11[i],i,11));13 r};14 u=A.some||12(c,s){32(14 i=0;i<11.17;i++)if(c.35(s,11[i],i,11))13 44;13 39};14 h=A.every||12(c,s){32(14 i=0;i<11.17;i++)if(!c.35(s,11[i],i,11))13 39;13 44};14 l=12(c,s){32(14 i=0;i<11.17;i++)if(c.35(s,11[i],i,11))13 11[i];13 127};14 q=12(c,s){32(14 i=11.17-1;i>-1;i--)if(c.35(s,11[i],i,11))13 11[i];13 127};14 n=12(a,b){14 d=a[0],a=A.slice.35(a,1),s=b;if(46(d)){14 c=d;if(b.17&&113(b[0][c]))d=12(o){13 o[c].49(o,a)};21 d=12(o){13 o[c]}}21 s=a[0];13[d,s]};14 g=12(f,s,a){156{13 f.49(s,n(a,s))}106(e){if(!(e instanceof Break))throw(e)}};13{37:A.37||12(v,f){32(14 i=(f<0)?83.max(0,11.17+f):f||0;i<11.17;i++)if(11[i]===v)13 i;13-1},lastIndexOf:A.lastIndexOf||12(v){32(14 i=11.17-1;i>-1;i--)if(11[i]===v)13 i;13-1},48:12(){13 15.17?g(l,11,15):11[0]},last:12(){13 15.17?g(q,11,15):11[11.17-1]},random:12(){13 11.17?11[83.random(11.17-1)]:36},size:12(){13 11.17},clean:12(){11.17=0;13 11},empty:12(){13!11.17},clone:12(){13 11.slice(0)},81:12(){g(m,11,15);13 11},32Each:m,69:12(){13 g(t,11,15)},131:12(){13 g(k,11,15)},some:12(){13 g(u,11,15.17?15:[12(a){13!!a}])},every:12(){13 g(h,11,15.17?15:[12(a){13!!a}])},walk:12(){11.69.49(11,15).32Each(12(v,a){11[a]=v},11);13 11},merge:12(){32(14 c=11.clone(),a,i=0;i<15.17;i++){a=15[i];if(107(a)){32(14 j=0;j<a.17;j++)if(c.37(a[j])==-1)c.63(a[j])}21 if(c.37(a)==-1)c.63(a)}13 c},flatten:12(){14 c=[];11.32Each(12(v){if(107(v))c=c.42(v.flatten());21 c.63(v)});13 c},166:12(){13 11.155(36,127)},uniq:12(){13[].merge(11)},31:12(){32(14 i=0;i<15.17;i++)if(11.37(15[i])==-1)13 39;13 44},155:12(){14 f=$A(15);13 11.131(12(v){13!f.31(v)})},shuffle:12(){14 s=11.clone();32(14 j,x,i=s.17;i;j=83.random(i-1),x=s[--i],s[i]=s[j],s[j]=x);13 s},sortBy:12(){14 p=n(15,11);13 11.69(12(b,a){13{item:b,112:p[0].35(p[1],b,a,11)}}).sort(12(c,d){13 c.112>d.112?1:c.112<d.112?-1:0}).69('item')}}})(Array.18));$alias(Array.18,{84:'31',all:'every',any:'some'});38(97,{UTF8_DOWNS:'a-z� èìòùáéíóúýâêîôûãñõäëïöü¡¿çßøåæþðёйцукенгшщзхъфывапролджэячсмитьбю',UTF8_UPS:'A-ZÀÈÌÒÙÁÉÍÓÚÝÂÊÎÔÛÃÑÕÄËÏÖÜ¡¿ÇØÅÆÞÐЁЙЦУКЕНГШЩЗХЪФЫВАП� ОЛДЖЭЯЧСМИТЬБЮ'});38(97.18,{empty:12(){13 11==''},blank:12(){13/^\\s*$/.test(11)},144:97.18.144||12(){14 a=11.54(/^\\s\\s*/,''),w=/\\s/,i=a.17;76(w.test(a.charAt(--i)));13 a.slice(0,i+1)},stripTags:12(){13 11.54(/<\\/?[^>]+>/ig,'')},141:12(o){14 a='';14 t=11.54(/<script[^>]*>([\\s\\S]*?)<\\/script>/img,12(m,s){a+=s.144()+\"\\n\";13 ''});if(o===44)$eval(a);21 if(113(o))o(a,t);21 if(is173(o))$eval.110(a).delay(29);13 t},extractScripts:12(){14 s='';11.141(12(a,t){s=a});13 s},125:12(){$eval(11.extractScripts());13 11},138:12(){14 p=11.22(/^(\\-|_)+?/g)||'';13 p+11.substr(p.17,11.17).54(33 RegExp('(\\\\-|_)+?(\\\\D)','g'),12(m){13 m.54(/\\-|_/,'').157()})},underscored:12(){13 11.54(/([a-z0-9])([A-Z]+)/g,12(m,f,s){13 f+\"_\"+(s.17>1?s:s.56())}).54(/\\-/g,'_')},capitalize:12(){13 11.54(33 RegExp('(^|\\\\s|\\\\-|_)['+97.UTF8_DOWNS+']','g'),12(m){13 m.157()})},31:12(s){13 11.37(s)!=-1},startsWith:12(a,i){14 s=11.substr(0,a.17);13 i?s.56()==a.56():s==a},endsWith:12(s,i){14 e=11.substring(11.17-s.17);13 i?e.56()==s.56():e==s},toInt:12(b){13 parseInt(11,b||10)},to169:12(s){13 parse169(s?11:11.54(',','.').54(/(\\d)-(\\d)/g,'$1.$2'))}});$alias(97.18,{84:'31'});38(Function.18,{110:12(){if(15.17<2&&!defined(15[0]))13 11;14 m=11,a=$A(15),s=a.114();13 12(){13 m.49(s,a.42($A(15)))}},110As115172:12(){14 m=11,a=$A(15),s=a.114();13 12(e){13 m.49(s,[e||61.event].42(a).42($A(15)))}},curry:12(){13 11.110.49(11,[11].42($A(15)))},delay:12(){14 a=$A(15),t=a.114();14 b=33 173(61.setTimeout(11.110.49(11,[11].42(a)),t));b['123']=12(){61.clearTimeout(11)};13 b},periodical:12(){14 a=$A(15),t=a.114();14 b=33 173(61.setInterval(11.110.49(11,[11].42(a)),t));b['stop']=12(){61.clearInterval(11)};13 b}});38(173.18,{times:12(c,s){32(14 i=0;i<11;i++)c.35(s,i);13 11},upto:12(n,c,s){32(14 i=11+0;i<=n;i++)c.35(s,i);13 11},downto:12(n,c,s){32(14 i=11+0;i>=n;i--)c.35(s,i);13 11},abs:12(){13 83.abs(11)},round:12(){13 83.round(11)},ceil:12(){13 83.ceil(11)},floor:12(){13 83.floor(11)}});38(RegExp,{escape:12(s){13 97(s).54(/([.*+?^=!:${}()|[\\]\\/\\\\])/g,'\\\\$1')}});14 41=12(){14 a=$A(15),b=a.pop()||{},p=a.pop();if(15.17==1&&113(b)){p=b;b={}}14 k=12(){13 11.34?11.34.49(11,15):11};38(k,41.47);41.Util.106Super(k,p);k.18.74=k;41.Util.106Extends(k,b);41.Util.106Includes(k,b);k.84(b);13 k};41.Util={106Super:12(k,p){if(p&&defined(p.18)){k.149=p;14 s=12(){};s.18=p.18;k.18=33 s}k.148=[];76(p){k.148.63(p);p=p.149}},106Extends:12(k,p){if(p['59']){14 e=p['59'];k.59.49(k,107(e)?e:[e]);88(p['59'])}},106Includes:12(k,p){if(p['84']){14 i=p['84'];k.84.49(k,107(i)?i:[i]);88(p['84'])}}};41.47={59:12(){14 f=['18','name','149','59','84'];32(14 i=0;i<15.17;i++)if(77(15[i]))32(14 k in 15[i])if(!f.31(k))11[k]=15[i][k];13 11},84:12(){32(14 i=0;i<15.17;i++)if(77(15[i]))32(14 b in 15[i])if(b!='klass'&&b!='74'){14 a=11.148.48(12(k){13 113(k.18[b])});if(a)(12(n,m,86){11.18[n]=12(){11.86=86;13 m.49(11,15)}}).35(11,b,15[i][b],a.18[b]);21 11.18[b]=15[i][b]}13 11}};14 53={set53:12(d){14 b=$w('OPTIONS 53 29'),c=[11,11.74].42(11.74.148),O=c.69(12(o){13 b.69(12(n){13 o[n]})}).flatten().48(12(a){13!!a});11.29=78.merge({},O,d);if(113(11.on)){14 m;32(14 k in 11.29)if(m=k.22(/on([A-Z][a-z]+)/)){11.on(m[1].56(),11.29[k]);88(11.29[k])}}13 11}};14 90=33 41({84:53,34:12(o){11.set53(o);14 a,s=11.129||11.74.129||((a=11.74.148.48('129'))?a.129:36);90.93(11,s)},117:12(){14 b=$A(15),d=b.114();if(!d.144)32(14 n in d)11.117.49(11,[n].42(107(d[n])?d[n]:[d[n]]).42(b));if(!11.65)11.65=[];14 c=b.114();switch(68of(c)){85 \"string\":c=11[c];85 \"12\":14 h={e:d,f:c,a:b};11.65.63(h);if(11.$o&&11.$o.add)11.$o.add.35(11,h);break;default:if(107(c))c.81(12(p){11.117.49(11,[d].42(107(p)?p:[p]).42(b))},11)}13 11},117s:12(e,c){if(11.65){if(!46(e)){c=e;e=36}13 11.65.some(12(a){13(e&&c)?a.e==e&&a.f==c:e?a.e==e:a.f==c})}13 39},stopObserving:12(e,c){if(11.65){if(!46(e)){c=e;e=36}11.65=11.65.131(12(a){14 r=(e&&c)?(a.e!=e||a.f!=c):(e?a.e!=e:a.f!=c);if(!r&&11.$o&&11.$o.122)11.$o.122.35(11,a);13 r},11)}13 11},listeners:12(e){13(11.65||[]).131(12(a){13!e||a.e==e}).69(12(a){13 a.f}).uniq()},62:12(){14 b=$A(15),e=b.114();(11.65||[]).81(12(a){if(a.e==e)(11.$o&&11.$o.62)?11.$o.62.35(11,e,b,a):a.f.49(11,a.a.42(b))},11);13 11},59:{151:12(o,e){38(o,78.155(11.18,'34','set53'),44);13 11.93(o,e||o['129'])},93:12(o,a){(a||[]).81(12(n){14 s={},n=n.54(/:/g,'_').56().138();s[n]=12(){13 11.62.49(11,[n].42($A(15)))};s['on'+n.capitalize()]=12(){13 11.on.49(11,[n].42($A(15)))};38(o,s,44)});13 o}}});$alias(90.18,{on:'117'});14 Break=33 41(Error,{message:\"Manual iterator break\"});14 115=33 41(115,{59:{47:{stopPropagation:12(){11.123Bubble=44},preventDefault:12(){11.13Value=39},stop:12(){11.stopPropagation();11.preventDefault();13 11},position:12(){13{x:11.pageX,y:11.pageY}}},ext:12(e){if(!e.stop){38(e,11.47,44);if(43.IE){if(e.68=='click'||e.68=='dblclick')e.which=1;21 if(e.68=='con147menu')e.which=3;21 e.which=e.button==2?3:e.button==4?2:1;14 s=61.scrolls();e.pageX=e.clientX+s.x;e.pageY=e.clientY+s.y;e.related27=e.68=='mouseover'?e.from115:e.68=='mouseout'?e.to115:36;e.134=e.src27}}if(e.134&&e.134.nodeType==3)e.134=e.134.23;13 e},cleanName:12(n){n=n.56();n=n.startsWith('on')?n.slice(2):n;n=n=='rightclick'?'con147menu':n;13 n},realName:12(n){if(43.Gecko&&n=='mousewheel')n='DOMMouseScroll';if(43.146&&n=='con147menu')n='rightclick';13 n}},34:12(n,o){13 33 115.Custom(115.cleanName(n),o)}});156{38(115.149.18,115.47,44)}106(e){};115.Custom=33 41({34:12(n,o){11.68=n;38(11,o||{})},stop:12(){}});61.27=33 41(61.27,{34:12(t,o){if(43.IE&&t=='input'&&o&&o.checked)t='<input checked=\"44\"/>';14 e=$(19.15127(t)),o=o||{};if(o['html']){e.124=o['html'];88(o['html'])}if(o['class']){e.70=o['class'];88(o['class'])}if(o['57']){e.set167(o['57']);88(o['57'])}if(o['117']){e.117(o['117']);88(o['117'])}13 e.set(o)},59:{47:{},91:12(e){if(e&&e.28&&!e.set){38(e,27.47,44);switch(e.28){85 'FORM':171.ext(e);break;85 'INPUT':85 'SELECT':85 'BUTTON':85 'TEXTAREA':171.27.ext(e);break}}13 e},add47:12(m,d){38(11.47,m,d);156{38(HTML27.18,m,d)}106(e){156{38(11.149.18,m,d)}106(e){}}13 11}}});27.add47({149:12(c){13 c?11.149s(c).48():$(11.23)},149s:12(c){13 11.rCollect('23',c)},subNodes:12(c){13 11.48168?(11.48168.28?[$(11.48168)]:[]).42(11.rCollect.35(11.48168,'73',c)):[]},siblings:12(c){13 11.prevSiblings(c).reverse().42(11.73s(c))},73s:12(c){13 11.rCollect('73',c)},prevSiblings:12(c){13 11.rCollect('119',c)},next:12(c){13 11.73s(c).48()},prev:12(c){13 11.prevSiblings(c).48()},22:12(c){13 33 45(c).22(11)},122:12(){if(11.23)11.23.122168(11);13 11},insert:12(c,p){if(77(c))32(14 p in c)11.insert(c[p],p);21{14 s='';p=46(p)?p.56():'120';if(46(c))c=c.141(12(a,h){s=a});27.136[p](11,c.28?c:27.136.151Fragment.35((p=='120'||p=='top'||!11.23)?11:11.23,c));$eval(s)}13 11},insertTo:12(e,p){$(e).insert(11,p);13 11},54:12(c){13 11.insert(c,'instead')},update:12(c){if(46(c)){11.124=c.141();c.125()}21 11.clean().insert(c);13 11},wrap:12(e){if(11.23){11.23.54168(e,11);e.67(11)}13 11},clean:12(){76(11.48168)11.122168(11.48168);13 11},empty:12(){13 11.124.blank()},rCollect:12(a,c){14 n=11,b=[];76((n=n[a]))if(n.28&&(!c||33 45(c).22(n)))b.63(43.OLD?27.91(n):n);13 b}});27.136={120:12(t,c){t.67(c)},top:12(t,c){t.48168?t.insertBe32e(c,t.48168):t.67(c)},after:12(t,c){if(t.23)t.73?t.23.insertBe32e(c,t.73):t.23.67(c)},be32e:12(t,c){if(t.23)t.23.insertBe32e(c,t)},instead:12(t,c){if(t.23)t.23.54168(c,t)},151Fragment:12(c){14 f;if(46(c)){14 t=19.15127('div'),w=27.136.wraps[11.28]||['','',0],d=w[2];t.124=w[0]+c+w[1];76(d>0){t=t.48168;d--}f=15.35ee.35(11,t.128Nodes)}21{f=19.151DocumentFragment();if(isNode(c))f.67(c);21 if(c&&c.17)32(14 i=0,l=c.17;i<l;i++)f.67(c[c.17==l?i:0])}13 f},wraps:{TABLE:['<161>','</161>',1],TBODY:['<161><tbody>','</tbody></161>',2],TR:['<161><tbody><tr>','</tr></tbody></161>',3],TD:['<161><tbody><tr><td>','</td></tr></tbody></161>',4],SELECT:['<51>','</51>',1]}};$alias(27.136.wraps,{THEAD:'TBODY',TFOOT:'TBODY',TH:'TD'});27.add47({set167:12(h,v){if(v){14 s={};s[h]=v;h=s}21 if(46(h)){14 s={};h.126(';').81(12(o){14 e=o.126(':').69('144');if(e[0]&&e[1])s[e[0]]=e[1]});h=s}14 c;32(14 k in h){c=k.37('-')!=-1?k.138():k;if(k=='118')11.setOpacity(h[k]);21 if(k=='float')c=43.IE?'57169':'css169';11.57[c]=h[k]}13 11},setOpacity:12(v){14 k='118';if(43.IE){k='131';v='alpha(118='+v*100+')'}11.57[k]=v;13 11},get167:12(k){13 11.94(11.57,k)||11.94(11.102(),k)},102:12(){13 11.current167||11.runtime167||11.ownerDocument.defaultView.getComputed167(11,36)||{}},94:12(s,k){14 v,k=k.138();switch(k){85 '118':v=!43.IE?s[k]:(((s['131']||'').22(/118=(\\d+)/i)||['','100'])[1].toInt()/100)+'';break;85 'float':k=43.IE?'57169':'css169';default:if(s[k])v=s[k];21{14 a=$w('top right 120 left').69(12(n){14 t=k.underscored().126('_');t.splice(1,0,n);13 s[t.join('_').138()]}).uniq();if(a.17==1)v=a[0]}if(v&&43.Opera&&k.22(/color/i)){14 m=v.22(/\"(.+?)\"/);v=m?m[1]:v}}13 v?v:36},has41:12(n){13(' '+11.70+' ').37(' '+n+' ')!=-1},set41:12(c){11.70=c;13 11},add41:12(n){if((' '+11.70+' ').37(' '+n+' ')==-1)11.70+=(11.70?' ':'')+n;13 11},12241:12(n){11.70=(' '+11.70+' ').54(' '+n+' ',' ').144();13 11},toggle41:12(n){13 11[11.has41(n)?'12241':'add41'](n)},radio41:12(n){11.siblings().81('12241',n);13 11.add41(n)}});27.add47({set:12(h,a){if(a){14 v={};v[h]=a;h=v}32(14 k in h)11[k]=h[k];13 11},get:12(n){14 v=11.getAttribute(n)||11[n];13 v==''?36:v},has:12(n){13 11.get(n)!=36},erase:12(n){11.122Attribute(n);13 11},hidden:12(){13 11.get167('display')=='none'},visible:12(){13!11.hidden()},hide:12(e,o){11._$pd=11.get167('display');11.57.display='none';13 11},show:12(e,o){14 v=11.28=='DIV'?'block':'inline';11.57.display=11._$pd=='none'?v:11._$pd||v;13 11},toggle:12(e,o){13 11[11.hidden()?'show':'hide'](e,o)},radio:12(e,o){11.siblings().81('hide',e,o);13 11.show()}});27.add47({sizes:12(){13{x:11.162,y:11.142}},position:12(){14 d=11.dimensions();13{x:d.left,y:d.top}},scrolls:12(){13{x:11.98,y:11.111}},dimensions:12(){14 l=0,t=0;if(11.getBoundingClientRect){14 r=11.getBoundingClientRect(),d=11.ownerDocument.1927;l=r.left+d.98-d.clientLeft;t=r.top+d.111-d.clientTop}21{14 e=11;76(e&&e.28){l+=e.offsetLeft;t+=e.offsetTop;e=e.23}}13{top:t,left:l,104:11.sizes().x,87:11.sizes().y,98:11.scrolls().x,111:11.scrolls().y}},setWidth:12(w){11.57.104=w+'px';if(11.162)11.57.104=(2*w-11.162)+'px';13 11},setHeight:12(h){11.57.87=h+'px';if(11.142)11.57.87=(2*h-11.142)+'px';13 11},resize:12(w,h){if(77(w)){h=w.y;w=w.x}11.setWidth(w);13 11.setHeight(h)},moveTo:12(l,t){if(77(l)){t=l.y;l=l.x}11.set167({96:(l-11.position().x)+'px',109:(t-11.position().y)+'px'});13 11},scrollTo:12(l,t){if(77(l)){t=l.y;l=l.x}11.98=l;11.111=t;13 11},scrollThere:12(){61.scrollTo(11);13 11}});27.add47((12(){14 o=90.151({},$w('click rightclick con147menu mousedown mouseup mouseover mouseout mousemove keypress keydown keyup'));o.$o={add:12(h){14 c=h.f,a=h.a;h.e=115.cleanName(h.e);h.n=115.realName(h.e);h.w=12(){115.ext(15[0]);13 c.49(11,$A(15).42(a))};if(11.add115172)11.add115172(h.n,h.w,39);21{h.w=h.w.110(11);11.attach115('on'+h.n,h.w)}},122:12(h){if(11.122115172)11.122115172(h.n,h.w,39);21 11.detach115('on'+h.n,h.w)},62:12(n,a,h){14 e=33 115(n,a.114());h.f.49(11,[e].42(h.a).42(a))}};38(61,o);38(19,o);13 o})());[19,(27.149||self['HTML27']||{}.74).18].81(12(o,a){14 b=o.query45;14 d=o.query45All;14 s={};if(!b)s.query45=12(c){13 33 45(c).48(11)};if(!d)s.query45All=12(c){13 33 45(c).51(11)};s.48=b?a?12(c){13 11.query45(11.28+' '+(c||'*'))}:12(c){13 11.query45(c||'*')}:s.query45;s.51=d?a?12(c){13 $A(11.query45All(11.28+' '+(c||'*')))}:12(c){13 $A(11.query45All(c||'*'))}:s.query45All;13 a?27.add47(s):38(o,s)});14 45=33 41({59:{cache:{}},34:12(a){14 c=46(a)?45.cache[a]:a;if(c)13 c;45.cache[a]=11;11.133=a||'*';14 s='Manual';if(11.133.31(','))s='Multiple';11.139=33 45[s](11.133)},48:43.OLD?12(e){14 e=11.139.48(e);13 e?$(e):36}:12(e){13 11.139.48(e)},51:43.OLD?12(e){13 11.139.51(e).69(27.91)}:12(e){13 11.139.51(e)},22:12(e){13 11.139.22(e)}});45.Atom=33 41({id:36,tag:'*',163:[],pseudo:36,158:36,attrs:{},rel:' ',ID_RE:/#([\\w\\-_]+)/,TAG_RE:/^[\\w\\*]+/,CLASS_RE:/\\.([\\w\\-\\._]+)/,PSEUDO_RE:/:([\\w\\-]+)(\\((.+?)\\))*$/,ATTRS_RE:/\\[((?:[\\w-]*:)?[\\w-]+)\\s*(?:([!^$*~|]?=)\\s*((['\"])([^\\4]*?)\\4|([^'\"][^\\]]*?)))?\\]/,34:12(c,r){c=c.144();11.rel=r||' ';11.hasNonTagMatcher=!c.22(/^[a-z\\*]+$/);11.attrs={};76((m=c.22(11.ATTRS_RE))){11.attrs[m[1]]={op:m[2],112:m[5]||m[6]};c=c.54(m[0],'')}if((m=c.22(11.PSEUDO_RE))){11.pseudo=m[1];11.158=m[3]==''?36:m[3];c=c.54(m[0],'')}21{11.pseudo=36;11.158=36}11.id=(c.22(11.ID_RE)||[1,36])[1];11.tag=(c.22(11.TAG_RE)||'*').to97().157();11.163=(c.22(11.CLASS_RE)||[1,''])[1].126('.').155('');11.buildMatch()},22:36,buildMatch:12(){14 m=[];if(11.id)m.63('22Id');if(11.tag!='*')m.63('22Tag');if(11.163.17)m.63('2241');if(!78.empty(11.attrs))m.63('22Attrs');if(11.pseudo)m.63('22Pseudo');if(m.17==1)11.22=11[m[0]];21 if(m.17){11.22=12(e){32(14 i=0;i<m.17;i++)if(!11[m[i]](e))13 39;13 44}}21 11.22=12(){13 44}},22Id:12(e){13 e.id==11.id},22Tag:12(e){13 e.28==11.tag},2241:12(e){if(e.70){14 n=e.70.126(' ');if(n.17==1)13 11.163.37(n[0])!=-1;21{32(14 i=0;i<11.163.17;i++)if(n.37(11.163[i])==-1)13 39;13 44}}13 39},22Attrs:12(e){14 m=44;32(14 k in 11.attrs)m &=11.22Attr(e,k,11.attrs[k]['op'],11.attrs[k]['112']);13 m},22Attr:12(e,n,o,v){14 a=e.getAttribute(n)||e[n]||'';switch(o){85 '=':13 a==v;85 '*=':13 a.31(v);85 '^=':13 a.startsWith(v);85 '$=':13 a.endsWith(v);85 '~=':13 a.126(' ').31(v);85 '|=':13 a.126('-').31(v);default:13 a!=''}13 39},22Pseudo:12(e){13 11.pseudoMatchers[11.pseudo].35(e,11.158,11.pseudoMatchers)},pseudoMatchers:{checked:12(){13 11.checked},135d:12(){13 11.135d},empty:12(){13!(11.innerText||11.124||11.147Content||'').17},'48-128':12(t){14 n=11;76((n=n.119))if(n.28&&(!t||n.28==t))13 39;13 44},'48-of-68':12(){13 15[1]['48-128'].35(11,11.28)},'last-128':12(t){14 n=11;76((n=n.73))if(n.28&&(!t||n.28==t))13 39;13 44},'last-of-68':12(){13 15[1]['last-128'].35(11,11.28)},'only-128':12(t,m){13 m['48-128'].35(11,t)&&m['last-128'].35(11,t)},'only-of-68':12(){13 15[1]['only-128'].35(11,11.28,15[1])},'nth-128':12(d,c,t){if(!c.hasParent(11))13 39;d=d.56();if(d=='n')13 44;if(d.31('n')){14 a=b=0;if(m=d.22(/^([+-]?\\d*)?n([+-]?\\d*)?$/)){a=m[1]=='-'?-1:parseInt(m[1],10)||1;b=parseInt(m[2],10)||0}14 i=1,n=11;76((n=n.119))if(n.28&&(!t||n.28==t))i++;13(i-b)% a==0&&(i-b)/a>=0}21 13 c['index'].35(11,d.toInt()-1,c,t)},'nth-of-68':12(n){13 15[1]['nth-128'].35(11,n,15[1],11.28)},index:12(a,m,t){a=46(a)?a.toInt():a;14 n=11,c=0;76((n=n.119))if(n.28&&(!t||n.28==t)&&++c>a)13 39;13 c==a},hasParent:12(e){13 e.23&&e.23.id!='-----fake'}}});45.Manual=33 41({ATOMS_SPLIT_RE:/(\\s*([~>+ ])\\s*)(?![^\\s\\)\\]]*(\\)|\\]))/,34:12(c){14 c=c.144();11.133=c;11.140=[];14 r=36,m=36;76(m=c.22(11.ATOMS_SPLIT_RE)){separator_pos=c.37(m[0]);11.140.63(33 45.Atom(c.substring(0,separator_pos),r));r=m[2];c=c.substr(separator_pos+(m[1].17==1?1:m[1].17-1)).144()}11.140.63(33 45.Atom(c,r))},48:12(n){13 11.51(n).48()},51:12(n){14 f,a,b;32(14 i=0;i<11.140.17;i++){a=11.140[i];if(i==0)f=11.find[a.rel](n,a);21{14 s;32(14 j=0;j<f.17;j++){s=11.find[a.rel](f[j],a);if(a.rel=='>'&&(b=f.37(f[j]))<j){f.splice.49(f,[b+1,0].42(s));j++}21 f.splice.49(f,[j,1].42(s));j+=s.17-1}}}13 11.140.17>1?11.uniq(f):f},22:12(e){if(!11.140||11.140.17>1){if(e.23){14 p=e,a;76((p=p.23))a=p}21{14 a=19.15127('div'),b=44;a.id='-----fake';a.67(e)}14 m=11.51(a).31(e);if(b)a.122168(e)}21 14 m=11.140[0].22(e);13 m},uniq:12(e){14 b=[],a={},u;32(14 i=0;i<e.17;i++){u=$uid(e[i]);if(!a[u]){b.63(e[i]);a[u]=44}}13 b},find:{' ':12(e,a){14 f=$A(e.get27sByTagName(a.tag));if(a.hasNonTagMatcher){14 m=[];32(14 i=0;i<f.17;i++)if(a.22(f[i]))m.63(f[i]);13 m}13 f},'>':12(e,a){14 n=e.48168,m=[];76(n){if(a.22(n))m.63(n);n=n.73}13 m},'+':12(e,a){76((e=e.73))if(e.28)13 a.22(e)?[e]:[];13[]},'~':12(e,a){14 f=[];76((e=e.73))if(a.22(e))f.63(e);13 f}}});45.Native=33 41({34:12(c){11.133=c},48:12(e){13 e.query45(11.fixedCssRule(e))},51:12(e){13 $A(e.query45All(11.fixedCssRule(e)))},22:45.Manual.18.22,fixedCssRule:12(e){13(is27(e)?e.28+' ':'')+11.133}});45.Multiple=33 41({34:12(c){11.133=c;11.51ors=c.126(',').69(12(r){13 r.blank()?36:33 45.Manual(r)}).166()},48:12(n){13 11.51ors.69('48',n).48(12(a){13!!a})},51:12(n){13 11.51ors.69('51',n,36).flatten().uniq()},22:12(n){13 11.51ors.some('22',n)||!11.51ors.17}});38(self,{sizes:12(){13 11.innerWidth?{x:11.innerWidth,y:11.innerHeight}:{x:19.1927.clientWidth,y:19.1927.clientHeight}},scrolls:12(){13(11.pageXOffset||11.pageYOffset)?{x:11.pageXOffset,y:11.pageYOffset}:(11.19.body.98||11.19.body.111)?{x:11.19.body.98,y:11.19.body.111}:{x:11.19.1927.98,y:11.19.1927.111}},scrollTo:12(l,t){if(is27(l)||(46(l)&&$(l)))l=$(l).position();if(77(l)){t=l.y;l=l.x}11._scrollTo(l,t);13 11},_scrollTo:61.scrollTo});[61,19].81(12(o){90.93(o,['ready']);14 r=o.ready.110(o);if(43.IE){14 t=$E('div');(12(){14 l=39;156{19.body.67(t);t.122();l=44}106(e){15.35ee.delay(50)}if(l)r()})()}21 if(19['readyState']!==127)(12(){$w('loaded complete').31(19.readyState)?r():15.35ee.delay(50)})();21 19.add115172('DOMContentLoaded',r,39)});14 171=33 41(27,{34:12(o){14 o=o||{},r=o['remote'],f=11.86('32m',78.155(o,'remote'));if(r)f.remotize();13 f},59:{ext:12(e){13 38(e,11.47)},47:{get27s:12(){13 43.146?11.51('input,51,147area,button'):$A(11.26s).69($)},inputs:12(){13 11.get27s().131(12(i){13!['submit','button','reset',36].31(i.68)})},137:12(){14 f=11.inputs().48(12(i){13 i.68!='hidden'});if(f)f.137();13 11.62('137')},blur:12(){11.get27s().81('blur');13 11.62('blur')},135:12(){11.get27s().81('135');13 11.62('135')},153:12(){11.get27s().81('153');13 11.62('153')},112s:12(){14 v={};11.inputs().81(12(i){if(!i.135d&&i.name&&(!['checkbox','radio'].31(i.68)||i.checked))v[i.name]=i.getValue()});13 v},serialize:12(){13 78.toQuery97(11.112s())}}}});156{38(HTML17127.18,171.47)}106(e){}171.27={ext:12(e){e._blur=e.blur;e._137=e.137;e._51=e.51;13 38(e,11.47)},47:{getValue:12(){if(11.68=='51-multiple')13 $A(11.get27sByTagName('option')).69(12(o){13 o.51ed?o.112:36}).166();21 13 11.112},setValue:12(v){if(11.68=='51-multiple'){v=(107(v)?v:[v]).69(97);$A(11.get27sByTagName('option')).81(12(o){o.51ed=v.31(o.112)})}21 11.112=v;13 11},135:12(){11.135d=44;11.62('135');13 11},153:12(){11.135d=39;11.62('153');13 11},137:12(){43.OLD?11._137():11._137.35(11);11.137ed=44;11.62('137');13 11},51:12(){11.137();43.OLD?11._51():11._51.35(11);13 11},blur:12(){43.OLD?11._blur():11._blur.35(11);11.137ed=39;11.62('blur');13 11}}};90.93(171.27.47,$w('135 153 137 blur'));156{[HTMLInput27,HTMLSelect27,HTMLTextArea27,HTMLButton27].81(12(k){$alias(k.18,{_blur:'blur',_137:'137',_51:'51'});38(k.18,171.27.47)})}106(e){}14 Cookie=33 41({84:53,59:{set:12(n,v,o){13 33 11(n,o).set(v)},get:12(n){13 33 11(n).get()},122:12(n){13 33 11(n).122()},53:{secure:39,19:19}},34:12(n,o){11.name=n;11.set53(o)},set:12(v){14 v=encodeURIComponent(v);if(11.29.domain)v+='; domain='+11.29.domain;if(11.29.path)v+='; path='+11.29.path;if(11.29.72){14 d=33 Date();d.setTime(d.getTime()+11.29.72*24*60*60*1000);v+='; expires='+d.toGMT97()}if(11.29.secure)v+='; secure';11.29.19.cookie=11.name+'='+v;13 11},get:12(){14 v=11.29.19.cookie.22('(?:^|;)\\\\s*'+RegExp.escape(11.name)+'=([^;]*)');13(v)?decodeURIComponent(v[1]):36},122:12(){11.29.72=-1;13 11.set('')}});14 164=33 41(90,{59:{129:$w('success failure complete request 123 151'),53:{headers:{'X-Requested-With':'XMLHttpRequest','Accept':'147/javascript, 147/html, application/xml, 147/xml, */*'},method:'post',encoding:'utf-8',async:44,125:39,evalResponse:39,evalJSON:44,urlEncoded:44,75:36,params:36},load:12(u,o){13 33 11(u,o).send()}},34:12(u,o){11.initCallbacks();11.url=u;11.86(o);32(14 k in 164.53)11[k]=11.29[k]},set170:12(n,v){11.headers[n]=v;13 11},get170:12(n){156{13 11.101.getResponse170(n)}106(e){}},successful:12(){13(11.status>=200)&&(11.status<300)},send:12(p){14 a={},u=11.url;14 m=11.method.157();if(['PUT','DELETE'].31(m)){a['_method']=m.56();m='POST'}14 d=11.91Data(11.params,11.91Params(p),a);if(11.urlEncoded&&m=='POST'&&!11.headers['Content-68'])11.set170('Content-68','application/x-www-32m-urlencoded; charset='+11.encoding);if(m=='GET'){u+=(u.31('?')?'&':'?')+d;d=36}11.101=11.151164();11.62('151');11.101.open(m,u,11.async);11.101.99=11.stateChanged.110(11);32(14 k in 11.headers)11.101.setRequest170(k,11.headers[k]);11.101.send(d);11.62('request');if(!11.async)11.stateChanged();13 11},update:12(e,p){13 11.onSuccess(12(a){e.update(a.147)}).send(p)},123:12(){if(!11.101||11.101.123ed)13 11;11.101.abort();11.101.99=12(){};11.101.123ed=44;13 11.62('123')},62:12(n){13 11.86(n,11,11.101)},151164:12(){if(11.32m&&11.32m.get27s().69('68').31('file'))13 33 164.IFramed(11.32m);21 156{13 33 XMLHttpRequest()}106(e){13 33 ActiveX78('MSXML2.XMLHTTP')}},91Params:12(p){if(p&&p.28=='FORM'){11.32m=p;p=p.112s()}13 p},91Data:12(){13 $A(15).69(12(p){if(!46(p))p=78.toQuery97(p);13 p.blank()?36:p}).166().join('&')},stateChanged:12(){if(11.101.readyState!=4||11.101.123ed)13;156{11.status=11.101.status}106(e){11.status=0}11.147=11.responseText=11.101.responseText;11.xml=11.responseXML=11.101.responseXML;11.62('complete').62(11.successful()?'success':'failure')},156Scripts:12(r){if(11.evalResponse||(/(ecma|java)script/).test(11.get170('Content-68')))$eval(11.147);21 if((/json/).test(11.get170('Content-68'))&&11.evalJSON)eval(\"11.json = 11.responseJSON = \"+11.147);21 if(11.125)11.147.125()},initCallbacks:12(){if(11.75==164.53.75)11.75=36;11.on('151','159').on('complete','105').on('123','105');11.on('success','156Scripts');164.129.81(12(n){11.on(n,12(){164.62(n,11,11.101)})},11)},159:12(){if(11.75)$(11.75).show('fade',{72:100})},105:12(){if(11.75)$(11.75).hide('fade',{72:100})}});90.151(164);38(164,{154:0,159:12(){if(11.53.75)$(11.53.75).show('fade',{72:100})},105:12(){if(11.53.75)$(11.53.75).hide('fade',{72:100})}});164.on('151',12(){11.154++;11.159()}).on('complete',12(){11.154--;if(11.154<1)11.105()}).on('123',12(){11.154--;if(11.154<1)11.105()});38(171.47,{send:12(o){o=o||{};o['method']=o['method']||11.method||'post';33 164(11.get('action')||19.location.href,o).onRequest(11.135.110(11)).onComplete(11.153.110(11)).send(11);13 11},remotize:12(o){11.onsubmit=12(){11.send.110(11,o).delay(20);13 39};11.remote=44;13 11},unremotize:12(){11.onsubmit=12(){};11.remote=39;13 11}});156{38(HTML17127.18,171.47)}106(e){}27.add47({load:12(u,o){33 164(u,78.merge({method:'get'},o)).update(11);13 11}});164.IFramed=33 41({34:12(f){11.32m=f;14 i='101_frame_'+83.random().to97().126('.').last();$E('div').insertTo(19.body).update('<150 name=\"'+i+'\" id=\"'+i+'\" 104=\"0\" 87=\"0\" frameborder=\"0\" src=\"about:blank\"></150>');11.150=$(i);11.150.on('load',11.onLoad.110(11))},send:12(){14 o=11.32m.onsubmit,a=11.32m.134;11.32m.onsubmit=12(){};11.32m.134=11.150.id;11.32m.submit();11.32m.onsubmit=o;11.32m.134=a},onLoad:12(){11.status=200;11.readyState=4;11.responseText=11.150.19?11.150.19.body.124:36;11.99()},open:12(){},abort:12(){},setRequest170:12(){},99:12(){}});14 Fx=33 41(90,{59:{129:$w('start finish 123'),Durations:{short:200,normal:400,long:800},53:{fps:60,72:'normal',116:'Sin',queue:44},Transitions:{Sin:12(a){13-(83.cos(83.PI*a)-1)/2},Cos:12(a){13 83.asin((a-0.5)*2)/83.PI+0.5},Exp:12(a){13 83.pow(2,8*(a-1))},Log:12(a){13 1-83.pow(2,-8*a)},Lin:12(a){13 a}}},34:12(e,o){11.86(o);11.26=$(e)},start:12(){if(11.queue(15))13 11;11.91.49(11,15);11.116=Fx.Transitions[11.29.116]||11.29.116;14 d=Fx.Durations[11.29.72]||11.29.72;11.steps=(d/1000*11.29.fps*(43.OLD?0.5:1)).ceil();11.152=1;13 11.62('start',11).startTimer()},finish:12(){13 11.stopTimer().62('finish').next()},123:12(){13 11.stopTimer().62('123').next()},pause:12(){13 11.stopTimer()},resume:12(){13 11.startTimer()},91:12(){},render:12(v){},step:12(t){if(t.steps>=t.152){t.render(t.116(t.152/t.steps));t.152++}21 t.finish()},calc:12(s,e,d){13 s+(e-s)*delta},startTimer:12(){11.timer=11.step.periodical((1000/11.29.fps).round(),11);13 11},stopTimer:12(){if(11.timer)11.timer.stop();13 11},queue:12(a){if(!11.26)13 39;if(11.$chained){88(11['$chained']);13 39}14 u=$uid(11.26),c;if(!Fx.$chains)Fx.$chains={};if(!Fx.$chains[u])Fx.$chains[u]=[];c=Fx.$chains[u];if(11.29.queue)c.63([a,11]);11.next=12(){14 n=c.114();n=c[0];if(n){n[1].$chained=44;n[1].start.49(n[1],n[0])}13 11};13 c[0][1]!==11&&11.29.queue},next:12(){13 11}});38(Array.18,{toRgb:12(){13 'rgb('+11.69(83.round)+')'}});97.COLORS={maroon:'#800000',red:'#ff0000',orange:'#ffA500',yellow:'#ffff00',olive:'#808000',purple:'#800080',fuchsia:'#ff00ff',white:'#ffffff',lime:'#00ff00',green:'#008000',navy:'#000080',blue:'#0000ff',aqua:'#00ffff',teal:'#008080',black:'#000000',silver:'#c0c0c0',gray:'#808080',brown:'#a52a2a'};38(97.18,{toHex:12(){14 m=11.22(/^#(\\w)(\\w)(\\w)$/);if(m)m=\"#\"+m[1]+m[1]+m[2]+m[2]+m[3]+m[3];21 if(m=11.22(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/))m=\"#\"+m.slice(1).69(12(b){b=(b-0).to97(16);13 b.17==1?'0'+b:b}).join('');21 m=97.COLORS[11]||11;13 m},toRgb:12(a){14 m=(11.toHex()||'').22(/#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})/i);if(m){m=m.slice(1).69('toInt',16);m=a?m:m.toRgb()}13 m}});Fx.165=33 41(Fx,{59:{STYLES:$w('104 87 lineHeight 118 borderWidth borderColor padding margin color fontSize 64 109 96 marginRight marginBottom top left right 120')},91:12(s){11.end167=11._find167(s);11.start167=11.94(11.26,78.keys(11.end167));11._clean167s();13 11.86()},render:12(d){14 v;32(14 k in 11.end167){v=11._calc167(k,d);if(k=='118')11.26.setOpacity(v);21 11.26.57[k]=v}},_calc167:12(k,d){14 s=11.start167[k],e=11.end167[k];if(68of(s)=='152')13 s+(e-s)*d;21 if(s.17==2)13(s[0]+(e[0]-s[0])*d)+e[1];21 if(s.17==3)13 e.69(12(v,a){13 s[a]+(v-s[a])*d}).toRgb()},_find167:12(s){14 a=46(s);Fx.165.$c=(Fx.165.$c||$E('div',{57:\"visibility:hidden;float:left;87:0;104:0\"})).insertTo(11.26,'after');14 e=$(11.26.cloneNode(39)).insertTo(Fx.165.$c)[a?'add41':'set167'](s);14 d=e.102();14 t=11.26.102();14 f=11.94(e,a?Fx.165.STYLES:78.keys(s),d);14 b=d.borderTop167,c=t.borderTop167;if(b!=c){if(c=='none')11.26.57.borderWidth='0px';11.26.57.border167=b;if(11._transp(t.borderTopColor))11.26.57.borderColor=t.color}e.122();if(a)11.onFinish(11.26.add41.110(11.26,s));13 f},94:12(e,a,b){14 s={},b=b||e.102(),n;if(46(a))n=a,a=[a];a.69(12(k){switch(k){85 'background':13 '64';85 'border':13['borderWidth','borderColor'];default:13 k}}).flatten().81(12(k){k=k.138();s[k]=e.94(b,k);if(11._transp(s[k]))s[k]=11._getBGColor(e);if(!s[k]||s[k]=='auto')s[k]=k=='104'?e.162+'px':k=='87'?e.142+'px':''},11);13 n?s[n]:s},_getBGColor:12(e){13[e].42(e.149s()).69(12(n){14 b=n.get167('64');13(b&&!11._transp(b))?b:36},11).166().48()||'rgb(255,255,255)'},_clean167s:12(){14 e=11.end167,s=11.start167;32(14 k in e)if(s[k]===''&&e[k].22(/^[\\d\\.\\-]+[a-z]+$/))s[k]='0px';[e,s].81(11._clean167,11);32(14 k in e)if(!defined(s[k])||(e[k]instanceof Array?e[k].join()===s[k].join():e[k]===s[k])){88(e[k]);88(s[k])}},_clean167:12(s){14 m;32(14 k in s){if(Fx.165.STYLES.31(k)&&s[k]!==''){s[k]=97(s[k]);if(k.22(/color/i)){s[k]=s[k].toRgb(44);if(!s[k])88(s[k])}21 if(s[k].22(/^[\\d\\.]+$/))s[k]=s[k].to169();21 if(m=s[k].22(/^([\\d\\.\\-]+)([a-z]+)$/i))s[k]=[m[1].to169(),m[2]]}21 88(s[k])}},_transp:12(c){13 c=='trans149'||c=='rgba(0, 0, 0, 0)'}});Fx.Highlight=33 41(Fx.165,{59:{53:78.merge(Fx.53,{color:'#FF8',116:'Exp'})},91:12(s,e){14 a=e||11.26.get167('64');if(11._transp(a)){11.onFinish(12(){11.26.57.64='trans149'});a=11._getBGColor(11.26)}11.26.57.64=(s||11.29.color);13 11.86({64:a})}});Fx.Twin=33 41(Fx.165,{finish:12(){if(11.how=='out')11.26.hide();13 11.86()},setHow:12(h){11.how=h||'toggle';if(11.how=='toggle')11.how=11.26.visible()?'out':'in'}});Fx.Slide=33 41(Fx.Twin,{59:{53:78.merge(Fx.53,{direction:'top'})},91:12(h){11.setHow(h);11.26.show();11.sizes=11.26.sizes();11.57s=11.94(11.26,$w('overflow 87 104 109 96'));11.26.57.overflow='hidden';11.onFinish('_getBack').onCancel('_getBack');13 11.86(11._end167(11.29.direction))},_getBack:12(){11.26.set167(11.57s)},_end167:12(d){14 b={},s=11.sizes,m=11.57s.96.to169(),a=11.57s.109.to169();if(11.how=='out'){b[['top','120'].31(d)?'87':'104']='0px';if(d=='right')b.96=m+s.x+'px';21 if(d=='120')b.109=a+s.y+'px'}21 if(11.how=='in'){14 e=11.26.57;if(['top','120'].31(d)){b.87=s.y+'px';e.87='0px'}21{b.104=s.x+'px';e.104='0px'}if(d=='right'){b.96=m+'px';e.96=m+s.x+'px'}21 if(d=='120'){b.109=a+'px';e.109=a+s.y+'px'}}13 b}});Fx.Fade=33 41(Fx.Twin,{91:12(h){11.setHow(h);if(11.how=='in')11.26.setOpacity(0).show();13 11.86({118:68of(h)=='152'?h:11.how=='in'?1:0})}});27.add47((12(m){14 c=m.hide,e=m.show,d=m.resize;13{hide:12(f,o){13 f?11.fx(f,['out',o],c):c.35(11)},show:12(f,o){13 f?11.fx(f,['in',o],e):e.35(11)},resize:12(w,h,o){if(77(w)){h=w.y;w=w.x}if(o){14 s={};if(is173(h))s.87=h+'px';if(is173(w))s.104=w+'px';if(!77(o))o={72:o};13 11.fx('morph',[s,o])}21 13 d.35(11,w,h)},morph:12(s,o){13 11.fx('morph',[s,o||{}])},highlight:12(){13 11.fx('highlight',15)},fade:12(){13 11.fx('fade',15)},slide:12(){13 11.fx('slide',15)},fx:12(n,a,o){14 a=$A(a).166(),b={};if(77(a.last()))b=a.pop();14 f=33 Fx[n.capitalize()](11,b);if(o)f.onFinish(o.110(11));f.start.49(f,a);13 11}}})(27.47));",",,,,,,,,,,,this,function,return,var,arguments,,length,prototype,document,,else,match,parentNode,,,element,Element,tagName,options,,includes,for,new,initialize,call,null,indexOf,$ext,false,,Class,concat,Browser,true,Selector,isString,Methods,first,apply,,select,,Options,replace,,toLowerCase,style,querySelectorAll,extend,,window,fire,push,backgroundColor,$listeners,firstChild,appendChild,type,map,className,addMethods,duration,nextSibling,constructor,spinner,while,isHash,Object,userAgent,,each,navigator,Math,include,case,$super,height,delete,querySelector,Observer,prepare,,createShortcuts,_getStyle,documentElement,marginLeft,String,scrollLeft,onreadystatechange,,xhr,computedStyles,form,width,hideSpinner,catch,isArray,getElements,marginTop,bind,scrollTop,value,isFunction,shift,Event,transition,observe,opacity,previousSibling,bottom,getElementsByTagName,remove,cancel,innerHTML,evalScripts,split,undefined,child,EVENTS,createElement,filter,typeof,cssRule,target,disable,insertions,focus,camelize,strategy,atoms,stripScripts,offsetHeight,addEventListener,trim,selectors,Konqueror,text,ancestors,parent,iframe,create,number,enable,counter,without,try,toUpperCase,pseudoValue,showSpinner,contextmenu,table,offsetWidth,classes,Xhr,Morph,compact,Style,Child,Float,Header,Form,Listener,Number".split(",")));
/**
 * The lightbox widget implemented with RightJS
 *
 * Home page: http://rightjs.org/ui/lightbox
 *
 * @copyright (C) 2009 Nikolay V. Nemshilov aka St.
 */
if (!RightJS || !Fx) { throw "Gimme RightJS with Fx. Please." };

/**
 * The lightbox widget
 *
 * @copyright (C) 2009 Nikolay V. Nemshilov aka St.
 */
Browser.IE6 = navigator.userAgent.indexOf("MSIE 6") != -1;
var Lightbox = new Class({
  include: Options,
  
  extend: {
    Version: "1.0.0",
    
    Options: {
      endOpacity:      0.8,
      fxDuration:      200,
      hideOnEsc:       true,
      showCloseButton: true,
      blockContent:    false
    },
    
    i18n: {
      Close: 'Close',
      Prev:  'Previous',
      Next:  'Next'
    },
    
    boxes: []
  },
  
  /**
   * basic constructor
   *
   * @param Object options override
   */
  initialize: function(options) {
    this.setOptions(options).build().connectEvents();
    
    Lightbox.boxes.push(this);
  },
  
  /**
   * Sets the popup's title
   *
   * @param mixed string or element or somethin'
   * @return Lighbox self
   */
  setTitle: function(txt) {
    this.caption.fade('out', {
      duration: this.options.fxDuration/2,
      onFinish: function() {
        this.caption.update(txt).fade('in', {duration: this.options.fxDuration/2});
      }.bind(this)
    });
    
    return this;
  },
  
  /**
   * Hides the box
   *
   * @return Lightbox self
   */
  hide: function() {
    this.element.hide('fade', {
      duration: this.options.fxDuration/2,
      onFinish: this.element.remove.bind(this.element)
    });
    return this;
  },
  
  /**
   * shows the lightbox with the content
   *
   * @param mixed content String, Element, Array, NodeList, ....
   * @return Lightbox self
   */
  show: function(content, size) {
    return this.showingSelf(function() {
      this.lock();
      this.content.update(content || '');
      this.resize(size);
    }.bind(this));
  },
  
  /**
   * resizes the dialogue to fit the content
   *
   * @param Object {x:.., y:..} optional end size definition
   * @return Lightbox self
   */
  resize: function(size, no_fx) {
    this.dialog.style.top = (window.sizes().y - this.dialog.sizes().y) / 2 + 'px';
    
    var body_style   = this.contentSize(size);
    var height_diff  = this.dialog.sizes().y - this.body.sizes().y;
    var body_height  = body_style.height.toInt() || this.minBodyHeight();
    var dialog_style = {
      top: (this.element.sizes().y - body_height - height_diff)/2 + 'px'
    };
    
    // IE6 screws with the dialog width
    if (Browser.IE6) {
      var padding = this.bodyWrap.getStyle('padding').toInt() > 0 ? 15 : 0;
      this.bodyWrap.setStyle('padding: '+padding+'px');
      
      dialog_style.width = (body_style.width.toInt() + padding * 2) + 'px';
    }
    
    if (no_fx === true) {
      this.body.setStyle(body_style);
      this.dialog.setStyle(dialog_style);
    } else {
      this.resizeFx(body_style, dialog_style);
    }
    
    return this;
  },
  
// protected
  
  // locks the body
  lock: function() {
    this.bodyLock.removeClass('lightbox-body-lock-transparent').removeClass('lightbox-body-lock-loading').show();
    if (Browser.OLD) this.bodyLock.setStyle("opacity: 1");
    return this;
  },
  
  // unlocks the body
  unlock: function() {
    if (this.options.blockContent) {
      this.bodyLock.addClass('lightbox-body-lock-transparent');
    } else {
      this.bodyLock.hide();
    }
    return this;
  },
  
  // resize specific lock
  resizeLock: function() {
    this.lock().content.hide();
  },
  
  // resize specific unlock
  resizeUnlock: function() {
    this.unlock().content.show('fade', {
      duration: this.options.fxDuration/2
    });
  },
  
  // returns the content size hash
  contentSize: function(size) {
    var size = size === this.$listeners ? null : size,
      max_width = this.element.offsetWidth * 0.8,
      max_height = this.element.offsetHeight * 0.8;
    
    if (size) this.content.setStyle(size);
    
    size = this.content.sizes();
    
    return {
      width:  (size.x > max_width  ? max_width  : size.x)+"px",
      height: (size.y > max_height ? max_height : size.y)+"px"
    };
  },
  
  // adjusts the box size so that it closed the whole window
  boxResize: function(resize) {
    this.element.resize(window.sizes());
    
    // IE6 needs to handle the locker position and size manually
    if (Browser.IE6) {
      this.locker.resize(window.sizes());
        
      this.element.style.position = 'absolute';
        
      var reposition_locker = function() {
        this.element.style.top = document.documentElement.scrollTop + 'px';
      }.bind(this);
        
      window.attachEvent('onscroll', reposition_locker);
      reposition_locker();
    }
    
    return this.resize(false, true);
  },
  
  // performs an action showing the lighbox
  showingSelf: function(callback) {
    Lightbox.boxes.without(this).each('hide');
    
    if (this.element.hidden()) {
      this.locker.setStyle('opacity:0');
      this.dialog.setStyle('opacity:0');
      
      this.element.insertTo(document.body).show();
      
      this.boxResize();
      
      this.locker.morph({opacity: this.options.endOpacity}, {duration: this.options.fxDuration});
      this.dialog.morph({opacity: 1},                       {duration: this.options.fxDuration});
      
      callback.delay(this.options.fxDuration);
    } else {
      callback();
    }
    return this;
  },
  
  // builds the basic structure
  build: function() {
    this.element  = this.E('lightbox').setStyle('display: none');
    this.locker   = this.E('lightbox-locker',    this.element);
    this.dialog   = this.E('lightbox-dialog',    this.element);
    this.caption  = this.E('lightbox-caption',   this.dialog);
    this.bodyWrap = this.E('lightbox-body-wrap', this.dialog);
    this.body     = this.E('lightbox-body',      this.bodyWrap);
    this.content  = this.E('lightbox-content',   this.body);
    this.bodyLock = this.E('lightbox-body-lock', this.body).hide();
    
    // the close button if asked
    if (this.options.showCloseButton) {
      this.closeButton = this.E('lightbox-close-button', this.dialog)
        .onClick(this.hide.bind(this)).update('&times;').set('title', Lightbox.i18n.Close);
    }
    return this;
  },
  
  // connects the events handling for the box
  connectEvents: function() {
    if (this.options.hideOnEsc) {
      document.onKeydown(function(event) {
        if (event.keyCode == 27) {
          event.stop();
          this.hide();
        }
      }.bindAsEventListener(this));
    }
    
    window.on('resize', this.boxResize.bind(this));
    
    return this;
  },
  
  // calculates the minimal body height
  minBodyHeight: function() {
    var element = $E('div', {'class': 'lightbox-body', style: 'background: none; position: absolute'}).insertTo(document.body),
      height = element.sizes().y;
    element.remove();
    return height;
  },
  
  // processes the resizing visual effect
  resizeFx: function(body_style, dialog_style) {
    this.resizeLock();
    
    // processing everything in a single visual effect so it looked smooth
    var body_start_width   = this.body.sizes().x;
    var body_end_width     = body_style.width.toInt();
    var body_start_height  = this.body.sizes().y;
    var body_end_height    = body_style.height.toInt();
    var dialog_start_top   = this.dialog.style.top.toInt();
    var dialog_end_top     = dialog_style.top.toInt();
    var dialog_start_width = this.dialog.sizes().x;
    var dialog_end_width   = (dialog_style.width || '0').toInt();
    var body   = this.body;
    var dialog = this.dialog;
    
    $ext(new Fx(this.dialog, {duration: this.options.fxDuration}), {
      render: function(delta) {
        body.style.width  = (body_start_width  + (body_end_width  - body_start_width)  * delta) + 'px';
        body.style.height = (body_start_height + (body_end_height - body_start_height) * delta) + 'px';
        dialog.style.top  = (dialog_start_top  + (dialog_end_top  - dialog_start_top)  * delta) + 'px';
        
        if (Browser.IE6) {
          dialog.style.width  = (dialog_start_width  + (dialog_end_width  - dialog_start_width)  * delta) + 'px';
        }
      }
    }).onFinish(this.resizeUnlock.bind(this)).start();
  },
  
// private
  // elements building shortcut
  E: function(klass, parent) {
    var e = $E('div', {'class': klass});
    if (parent) e.insertTo(parent);
    return e;
  }
  
});

/**
 * Ajax loading support module
 *
 * @copyright (C) 2009 Nikolay V. Nemshilov aka St.
 */
Lightbox.include((function() {
  var old_show = Lightbox.prototype.show;
  var old_build = Lightbox.prototype.build;
  
  return {
    // hightjacking the links
    show: function(content) {
      if (content && content.href) {
        return this.load(content.href, {
          onComplete: function(request) {
            this.setTitle(content.title).content.update(request.responseText);
          }.bind(this)
        });
      } else {
        return old_show.apply(this, arguments);
      }
    },
    
    /**
     * Loads the url via an ajax request and assigns the box content wiht the response result
     *
     * NOTE: will perform a GET request by default
     *
     * NOTE: will just update the body content with
     *       the response text if no onComplete or
     *       onSuccess callbacks were set
     *
     * @param String url address
     * @param Object Xhr options
     * @return Lightbox self
     */
    load: function(url, options) {
      var options = options || {};
      
      $w('onCreate onComplete').each(function(name) {
        options[name] = options[name] ? isArray(options[name]) ? options[name] : [options[name]] : [];
      });

      // adding the selfupdate callback as default
      if (options.onComplete.empty() && !options.onSuccess) {
        options.onComplete.push(function(request) {
          this.content.update(request.responseText);
        }.bind(this));
      }

      options.onCreate.unshift(this.loadLock.bind(this));
      options.onComplete.push(this.resize.bind(this));

      options.method = options.method || 'get';

      return this.showingSelf(Xhr.load.bind(Xhr, url, options));
    },
    
  // protected
    
    // xhr requests loading specific lock
    loadLock: function() {
      this.lock().bodyLock.addClass('lightbox-body-lock-loading');
      return this;
    },
    
    build: function() {
      var res = old_build.apply(this, arguments);
      
      // building a textual spinner
      var spinner = this.E('lightbox-body-lock-spinner', this.bodyLock);
      var dots    = '1234'.split('').map(function(i) {
        return $E('div', {html: '.', 'class': i == 1 ? 'glow':null}).insertTo(spinner);
      });
      (function() {
        var dot = dots.pop(); dot.insertTo(spinner, 'top'); dots.unshift(dot);
      }).periodical(400);
      
      return res;
    }
  };
})());

/**
 * Roadtrips support module for the lightbox
 *
 * @copyright (C) 2009 Nikolay V. Nemshilov aka St.
 */
Lightbox.include((function() {
  var old_show  = Lightbox.prototype.show;
  var old_build = Lightbox.prototype.build;
  var old_event = Lightbox.prototype.connectEvents;
  
  return {
    // highjacking a roadtrip content
    show: function(content) {
      this.roadLink = (content && content.roadtrip) ? content : null;
      return old_show.apply(this, arguments);
    },
    
    // the building process overlaping
    build: function() {
      var res = old_build.apply(this, arguments);
      
      this.prevLink = this.E('lightbox-prev-link', this.dialog).onClick(this.showPrev.bind(this))
        .update('&lsaquo;&lsaquo;&lsaquo;').set('title', Lightbox.i18n.Prev).hide();
      this.nextLink = this.E('lightbox-next-link', this.dialog).onClick(this.showNext.bind(this))
        .update('&rsaquo;&rsaquo;&rsaquo;').set('title', Lightbox.i18n.Next).hide();
      
      return res;
    },
    
    // connecting the left/right arrow buttons
    connectEvents: function() {
      var res = old_event.apply(this, arguments);
      
      document.onKeydown(function(event) {
        if (event.keyCode == 37) { event.stop(); this.showPrev(); }
        if (event.keyCode == 39) { event.stop(); this.showNext(); }
      }.bind(this));
      
      return res;
    },
    
    // tries to show the previous item on the roadtrip
    showPrev: function() {
      if (this.hasPrev() && this.element.visible()) {
        this.show(this.roadLink.roadtrip[this.roadLink.roadtrip.indexOf(this.roadLink) - 1]);
      }
      return this;
    },

    // tries to show the next item on the roadtrip
    showNext: function() {
      if (this.hasNext() && this.element.visible()) {
        this.show(this.roadLink.roadtrip[this.roadLink.roadtrip.indexOf(this.roadLink) + 1]);
      }
      return this;
    },
    
    // checks the roadtrip state and shows/hides the next/prev links
    checkRoadtrip: function() {
      this.prevLink[this.hasPrev() ? 'show' : 'hide']();
      this.nextLink[this.hasNext() ? 'show' : 'hide']();
      return this;
    },

    // checks if there is a previous image link
    hasPrev: function() {
      return this.roadLink && this.roadLink.roadtrip && this.roadLink.roadtrip.first() != this.roadLink;
    },

    // checks if there is a next image link
    hasNext: function() {
      return this.roadLink && this.roadLink.roadtrip && this.roadLink.roadtrip.last() != this.roadLink;
    }
  };
})());

/**
 * The images displaying functionality module
 *
 * @copyright (C) 2009 Nikolay V. Nemshilov aka St.
 */
Lightbox.include((function() {
  var old_show = Lightbox.prototype.show;
  
  return {
    IMAGE_FORMATS: $w('jpg jpeg gif png bmp'),
    
    // hightjacking the links to images and image elements
    show: function(content) {
      // adjusting the element class-name
      this.element[(content && (content.tagName == 'IMG' || this.isImageUrl(content.href))) ?
        'addClass' : 'removeClass']('lightbox-image');
      
      if (content && content.href && this.isImageUrl(content.href)) {
        return this.showingSelf(function() {
          this.loadLock().roadLink = content;
          
          // using the iframed request to make the browser cache work
          var image = new Image();
          image.onload = this.updateImage.bind(this, image, content);
          image.src = content.href;
          
        }.bind(this));
      } else {
        return old_show.apply(this, arguments);
      }
    },
    
  // protected
    
    // inserts the image
    updateImage: function(image, link) {
      this.content.update(image);
      this.checkRoadtrip().setTitle(link.title).resize();
    },
    
    // checks if the given url is an url to an image
    isImageUrl: function(url) {
      return this.IMAGE_FORMATS.include(String(url).toLowerCase().split('.').last());
    }
  };
})());

/**
 * The class level interface
 *
 * @copyright (C) 2009 Nikolay V. Nemshilov aka St.
 */
Lightbox.extend({
  hide: function() {
    this.boxes.each('hide');
  },
  
  show: function() {
    return this.inst('show', arguments);
  },
  
  load: function() {
    return this.inst('load', arguments);
  },

// private

  inst: function(name, args) {
    var inst = new Lightbox();
    return inst[name].apply(inst, args);
  }
});

/**
 * A script that scans the document links and automatically
 * generates the lightbox calls to show the content
 *
 * Credits:
 *   Inspired by and monkeys the Lightbox 2 project
 *    -- http://www.huddletogether.com/projects/lightbox2/ 
 *      Copyright (C) Lokesh Dhakar
 *
 * @copyright (C) 2009 Nikolay V. Nemshilov aka St.
 */
document.onReady(function() {
 // grabbing the singles
 $$('a[rel=lightbox]').each(function(a) {
   a.onClick(function(event) {
     event.stop();
     Lightbox.show(this);
   });
 });

 // grabbing the roadtrip
 var roadtrip = $$('a[rel="lightbox[roadtrip]"]');
 roadtrip.each(function(a) {
   a.roadtrip = roadtrip;
   a.onClick(function(event) {
     event.stop();
     Lightbox.show(this);
   })
 });
});

document.write("<style type=\"text/css\">div.lightbox{position:fixed;top:0px;left:0px;width:100%;text-align:center}div.lightbox div{line-height:normal}div.lightbox-locker{position:absolute;top:0px;left:0px;width:100%;height:100%;background-color:black}div.lightbox-dialog{display:inline-block;*display:inline;*zoom:1;position:relative;text-align:left;padding-bottom:1.6em}div.lightbox-body-wrap{background-color:white;padding:1em;border-radius:.6em;-moz-border-radius:.6em;-webkit-border-radius:.6em}div.lightbox-body{position:relative;height:10em;width:10em;min-height:10em;min-width:10em;overflow:hidden;*background-color:white}div.lightbox-content{position:absolute;*background-color:white}div.lightbox-body-lock{background-color:white;position:absolute;left:0px;top:0px;width:100%;height:100%;text-align:center}div.lightbox-body-lock-spinner{display:none;position:absolute;bottom:0;right:0}div.lightbox-body-lock-spinner div{float:left;font-size:200%;font-family:Georgia;font-weight:bold;line-height:20pt;color:#AAA}div.lightbox-body-lock-spinner div.glow{color:#666;font-size:300%;margin-top:-3pt}div.lightbox-body-lock-loading div.lightbox-body-lock-spinner{display:inline-block;*display:inline;*zoom:1}div.lightbox-body-lock-transparent{background:none}div.lightbox-caption{height:1.2em;margin:0 .7em;margin-bottom:.1em;white-space:nowrap;color:#DDD;font-weight:bold;font-size:1.6em;font-family:Helvetica;text-shadow:black 2px 2px 2px}div.lightbox-close-button,div.lightbox-prev-link,div.lightbox-next-link{position:absolute;bottom:0;color:#888;cursor:pointer;font-size:150%;font-weight:bold}div.lightbox-close-button:hover,div.lightbox-prev-link:hover,div.lightbox-next-link:hover{color:white}div.lightbox-close-button{right:.5em}div.lightbox-prev-link,div.lightbox-next-link{padding:0 .2em;font-size:180%}div.lightbox-prev-link{left:.3em}div.lightbox-next-link{left:2em}div.lightbox-image div.lightbox-body-wrap{padding:0;border:1px solid #777;border-radius:0px;-moz-border-radius:0px;-webkit-border-radius:0px}div.lightbox-image div.lightbox-content img{vertical-align:middle}div.lightbox-image div.lightbox-caption{margin-left:.2em}div.lightbox-image div.lightbox-body-wrap,div.lightbox-image div.lightbox-body-lock{background-color:#DDD}div.lightbox-image div.lightbox-body-lock-spinner{bottom:1em;right:1em}div.lightbox-image div.lightbox-close-button{right:.2em}div.lightbox-image div.lightbox-prev-link{left:0}</style>");
Ext.namespace('Fulton');
Ext.namespace('Fulton.util');

// Default headers to pass in every request
Ext.Ajax.extraParams = {
    'fultonAjax': true
};

Fulton.util.setFormFieldTooltip = function(component){
    Ext.QuickTips.register({
        target: component,
        text: component.tooltipText,
        title: ''
    });
};

Array.prototype.clean = function(deleteValue) {
  for (var i = 0; i < this.length; i++) {
    if (this[i] == deleteValue) {         
      this.splice(i, 1);
      i--;
    }
  }
  return this;
};

Ext.namespace('Ext.ux.dd');

Ext.ux.dd.GridDragDropRowOrder = Ext.extend(Ext.util.Observable,
{
    copy: false,

    scrollable: false,

    constructor : function(config)
    {
        Ext.ux.dd.GridDragDropRowOrder.superclass.constructor.call(this);
        if (config)
            Ext.apply(this, config);

        this.addEvents(
        {
            beforerowmove: true,
            afterrowmove: true,
            beforerowcopy: true,
            afterrowcopy: true
        });
    },

    init : function (grid)
    {
        this.grid = grid;
        grid.enableDragDrop = true;

        grid.on({
            render: { fn: this.onGridRender, scope: this, single: true }
        });
    },

    onGridRender : function (grid)
    {
        var self = this;

        this.target = new Ext.dd.DropTarget(grid.getEl(),
        {
            ddGroup: grid.ddGroup || 'GridDD',
            grid: grid,
            gridDropTarget: this,

            notifyDrop: function(dd, e, data)
            {
                // Remove drag lines. The 'if' condition prevents null error when drop occurs without dragging out of the selection area
                if (this.currentRowEl)
                {
                    this.currentRowEl.removeClass('grid-row-insert-below');
                    this.currentRowEl.removeClass('grid-row-insert-above');
                }

                // determine the row
                var t = Ext.lib.Event.getTarget(e);
                var rindex = this.grid.getView().findRowIndex(t);
                if (rindex === false || rindex == data.rowIndex)
                {
                    return false;
                }
                // fire the before move/copy event
                if (this.gridDropTarget.fireEvent(self.copy ? 'beforerowcopy' : 'beforerowmove', this.gridDropTarget, data.rowIndex, rindex, data.selections, 123) === false)
                {
                    return false;
                }

                // update the store
                var ds = this.grid.getStore();

                // Changes for multiselction by Spirit
                var selections = new Array();
                var keys = ds.data.keys;
                for (var key in keys)
                {
                    for (var i = 0; i < data.selections.length; i++)
                    {
                        if (keys[key] == data.selections[i].id)
                        {
                            // Exit to prevent drop of selected records on itself.
                            if (rindex == key)
                            {
                                return false;
                            }
                            selections.push(data.selections[i]);
                        }
                    }
                }

                // fix rowindex based on before/after move
                if (rindex > data.rowIndex && this.rowPosition < 0)
                {
                    rindex--;
                }
                if (rindex < data.rowIndex && this.rowPosition > 0)
                {
                    rindex++;
                }

                // fix rowindex for multiselection
                if (rindex > data.rowIndex && data.selections.length > 1)
                {
                    rindex = rindex - (data.selections.length - 1);
                }

                // we tried to move this node before the next sibling, we stay in place
                if (rindex == data.rowIndex)
                {
                    return false;
                }

                // fire the before move/copy event
                /* dupe - does it belong here or above???
                if (this.gridDropTarget.fireEvent(self.copy ? 'beforerowcopy' : 'beforerowmove', this.gridDropTarget, data.rowIndex, rindex, data.selections, 123) === false)
                {
                    return false;
                }
                */

                if (!self.copy)
                {
                    for (var i = 0; i < data.selections.length; i++)
                    {
                        ds.remove(ds.getById(data.selections[i].id));
                    }
                }

                for (var i = selections.length - 1; i >= 0; i--)
                {
                    var insertIndex = rindex;
                    ds.insert(insertIndex, selections[i]);
                }

                // re-select the row(s)
                var sm = this.grid.getSelectionModel();
                if (sm)
                {
                    sm.selectRecords(data.selections);
                }

                // fire the after move/copy event
                this.gridDropTarget.fireEvent(self.copy ? 'afterrowcopy' : 'afterrowmove', this.gridDropTarget, data.rowIndex, rindex, data.selections);
                return true;
            },

            notifyOver: function(dd, e, data)
            {
                var t = Ext.lib.Event.getTarget(e);
                var rindex = this.grid.getView().findRowIndex(t);

                // Similar to the code in notifyDrop. Filters for selected rows and quits function if any one row matches the current selected row.
                var ds = this.grid.getStore();
                var keys = ds.data.keys;
                for (var key in keys)
                {
                    for (var i = 0; i < data.selections.length; i++)
                    {
                        if (keys[key] == data.selections[i].id)
                        {
                            if (rindex == key)
                            {
                                if (this.currentRowEl)
                                {
                                    this.currentRowEl.removeClass('grid-row-insert-below');
                                    this.currentRowEl.removeClass('grid-row-insert-above');
                                }
                                return this.dropNotAllowed;
                            }
                        }
                    }
                }

                // If on first row, remove upper line. Prevents negative index error as a result of rindex going negative.
                if (rindex < 0 || rindex === false)
                {
                    this.currentRowEl.removeClass('grid-row-insert-above');
                    return this.dropNotAllowed;
                }

                try
                {
                    var currentRow = this.grid.getView().getRow(rindex);
                    // Find position of row relative to page (adjusting for grid's scroll position)
                    var resolvedRow = new Ext.Element(currentRow).getY() - this.grid.getView().scroller.dom.scrollTop;
                    var rowHeight = currentRow.offsetHeight;

                    // Cursor relative to a row. -ve value implies cursor is above the row's middle and +ve value implues cursor is below the row's middle.
                    this.rowPosition = e.getPageY() - resolvedRow - (rowHeight/2);

                    // Clear drag line.
                    if (this.currentRowEl)
                    {
                        this.currentRowEl.removeClass('grid-row-insert-below');
                        this.currentRowEl.removeClass('grid-row-insert-above');
                    }

                    if (this.rowPosition > 0)
                    {
                        // If the pointer is on the bottom half of the row.
                        this.currentRowEl = new Ext.Element(currentRow);
                        this.currentRowEl.addClass('grid-row-insert-below');
                    }
                    else
                    {
                        // If the pointer is on the top half of the row.
                        if (rindex - 1 >= 0)
                        {
                            var previousRow = this.grid.getView().getRow(rindex - 1);
                            this.currentRowEl = new Ext.Element(previousRow);
                            this.currentRowEl.addClass('grid-row-insert-below');
                        }
                        else
                        {
                            // If the pointer is on the top half of the first row.
                            this.currentRowEl.addClass('grid-row-insert-above');
                        }
                    }
                }
                catch (err)
                {
                    console.warn(err);
                    rindex = false;
                }
                return (rindex === false)? this.dropNotAllowed : this.dropAllowed;
            },

            notifyOut: function(dd, e, data)
            {
                // Remove drag lines when pointer leaves the gridView.
                if (this.currentRowEl)
                {
                    this.currentRowEl.removeClass('grid-row-insert-above');
                    this.currentRowEl.removeClass('grid-row-insert-below');
                }
            }
        });

        if (this.targetCfg)
        {
            Ext.apply(this.target, this.targetCfg);
        }

        if (this.scrollable)
        {
            Ext.dd.ScrollManager.register(grid.getView().getEditorParent());
            grid.on({
                beforedestroy: this.onBeforeDestroy,
                scope: this,
                single: true
            });
        }
    },

    getTarget: function()
    {
        return this.target;
    },

    getGrid: function()
    {
        return this.grid;
    },

    getCopy: function()
    {
        return this.copy ? true : false;
    },

    setCopy: function(b)
    {
        this.copy = b ? true : false;
    },

    onBeforeDestroy : function (grid)
    {
        // if we previously registered with the scroll manager, unregister
        // it (if we don't it will lead to problems in IE)
        Ext.dd.ScrollManager.unregister(grid.getView().getEditorParent());
    }
});
Ext.onReady(function() {
	Ext.select('input[id!=login_area][id!=login_password]').on('focus', addInputHoverClass);
	Ext.select('input[id!=login_area][id!=login_password]').on('blur', removeInputHoverClass);

	function addInputHoverClass(e,t) {
		e.getTarget('',10,true).parent().addClass('highlight');
	}

	function removeInputHoverClass(e, t) {
		e.getTarget('',10,true).parent().removeClass('highlight');
	}
	
	var u = Ext.get('login_area');
	var p = Ext.get('login_password');
	
	if(u) {
		u.on('focus', function() {
			if(u.dom.value == 'username')
				u.dom.value = '';
		});
		
		u.on('blur', function() {
			if(u.dom.value == '')
				u.dom.value = 'username';
		});
	}

	if(p) {
		setupPassword();
	}

	function setupPassword() {
		Ext.get('login_password').on('focus', function(e,t) {
			addInputHoverClass(e,t);
			if(Ext.get('login_password').dom.value == 'password'){
				Ext.get('login_password').parent().update('<input name="password" id="login_password" type="password" value="" />');
				window.setTimeout(function() {
					Ext.get('login_password').focus();
					
					Ext.get('login_password').on('blur', function(e,t) {
						removeInputHoverClass(e, t);
						if(Ext.get('login_password').dom.value == '') {
							Ext.get('login_password').parent().update('<input name="password" id="login_password" type="text" value="password" />');
							
						}
						setupPassword();
						
					});
					
				}, 10);
			}
		});
		
		Ext.get('login_password').on('blur', function() {
			if(Ext.get('login_password').dom.value == '') {
				Ext.get('login_password').parent().update('<input name="password" id="login_password" type="password" value="password" />');
			}
		});
	}
});
