PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i5h-3LL

HOME


5h-3LL 1.0
DIR: /srv/http/adent.cz/old.kopanabenatky.cz/admin1258/filemanager/js
/srv/http/adent.cz/old.kopanabenatky.cz/admin1258/filemanager/js/
Upload File:
Current File : /srv/http/adent.cz/old.kopanabenatky.cz/admin1258/filemanager/js/filemanager.js
/*********************************************************************************************************
 This code is part of the FileManager software (www.gerd-tentler.de/tools/filemanager), copyright by
 Gerd Tentler. Obtain permission before selling this code or hosting it on a commercial website or
 redistributing it over the Internet or in any other medium. In all cases copyright must remain intact.
*********************************************************************************************************/

var fmLib =  {

	fadeSpeed: 15,   // fade speed (0 - 30; 0 = no fading)
	mouseX: 0,
	mouseY: 0,
	fadeTimer: 0,
	iv: 0,
	opacity: 0,
	dragging: false,
	noMenu: false,
	dialog: null,
	progBar: null,
	callback: null,
	soundObj: null,

	callOK: function(msg, url, frmName) {
		var ok = confirm(msg);
		if(ok) {
			if(url) this.call(url, frmName);
			else if(frmName) document.forms[frmName].submit();
		}
	},

	call: function(url, frmName) {
		url.match(/fmContainer=(\w+)/);
		var curCont = RegExp.$1;
		var ajaxObj = new ajax();
		ajaxObj.encoding = fmContSettings[curCont].encoding;

		if(this.dialog && this.opacity) this.fadeOut(this.opacity, this.dialog);

		if(url.match('fmMode=readTextFile')) {
			ajaxObj.makeRequest(url, function() {
				var contObj = document.getElementById('fmTextViewerCont');

				if(contObj) {
					fmParser.parseTextViewer(ajaxObj.response, contObj);
					fmLib.initTextViewer();
				}
			});
			return;
		}
		var listCont = document.getElementById(curCont + 'List');

		if(listCont) {
			var listLoad, callback;
			var fmCont = document.getElementById(curCont);

			if(fmCont) listLoad = this.viewLoader(fmCont, url);

			if(frmName == 'frmEdit' || url.match('fmMode=edit')) {
				callback = this.initEditor;
			}
			else if(url.match(/fmMode=(move|copy)/)) {
				if(url.match(/fmObject=(\d+)/)) {
					if(fmEntries[curCont][RegExp.$1].icon.substr(0, 3) == 'dir') {
						fmContSettings[curCont].expJson = null;
					}
				}
			}
			else if(url.match(/fmMode=refresh/)) {
				fmContSettings[curCont].expJson = null;
			}
			else {
				callback = this.callback;
				this.callback = null;
			}
			ajaxObj.makeRequest(url, function() {
				fmLib.viewResponse(ajaxObj.response, curCont, listLoad);
				if(typeof callback == 'function') callback();
			}, frmName);
		}
	},

	checkFile: function(listLoad, sid) {
		var iFrame = frames.fmFileAction;

		if(iFrame) {
			var url = iFrame.document.location.href;
			var response = iFrame.document.body.innerHTML;

			if(response.match(/end:1\}$/)) {
				if(this.iv) clearInterval(this.iv);
				iFrame.document.body.innerHTML = '';

				url.match(/fmContainer=(\w+)/);
				this.viewResponse(response, RegExp.$1, listLoad);

				if(this.progBar) {
					this.fadeOut(this.opacity, this.progBar);
					this.progBar = null;
					setTimeout(function() {
						if(fmLib.progBar) {
							fmLib.fadeOut(fmLib.opacity, fmLib.progBar);
							fmLib.progBar = null;
						}
					}, 1000);
				}
			}
			else if(sid) {
				var url = fmWebPath + '/cgi/ping.pl?sid=' + sid;
				var ajaxObj = new ajax();
				ajaxObj.noWarning = true;

				ajaxObj.makeRequest(url, function() {
					if(ajaxObj.response) {
						var json = eval('(' + ajaxObj.response + ')');
						var pbContent = fmLib.drawProgBar(json);

						if(!fmLib.progBar) {
							fmLib.viewProgress(pbContent);
						}
						else document.getElementById('fmProgressText').innerHTML = pbContent;
					}
				});
			}
		}
	},

	getFile: function(curCont, id) {
		var iFrame = frames.fmFileAction;
		if(iFrame) {
			var url = fmWebPath + '/action.php?fmContainer=' + curCont + '&fmMode=getFile&fmObject=' + id;
			iFrame.document.location.href = url;
			this.iv = setInterval('fmLib.checkFile()', 250);
			this.fadeOut(this.opacity, this.dialog);
		}
	},

	drawProgBar: function(json) {
		if(typeof json != 'object') return false;
		var div, unit;

		if(json.bytesTotal > 1024 * 1024) {
			div = 1024 * 1024;
			unit = 'M';
		}
		else {
			div = 1024;
			unit = 'K';
		}
		var percent = (json.bytesTotal > 0) ? Math.round(json.bytesCurrent * 100 / json.bytesTotal) : 0;
		var current = fmTools.numberFormat(json.bytesCurrent / div, 2);
		var total = fmTools.numberFormat(json.bytesTotal / div, 2);
		var s = json.timeCurrent - json.timeStart;
		var bps = fmTools.numberFormat(json.bytesCurrent / 1024 / (s ? s : 1), 2);
		if(bps > 1024) bps = fmTools.numberFormat(bps / 1024, 2) + ' M/sec';
		else bps += ' K/sec';
		var h = Math.floor(s / 3600);
		s -= h * 3600;
		var m = Math.floor(s / 60);
		s -= m * 60;
		if(h < 10) h = '0' + h;
		if(m < 10) m = '0' + m;
		if(s < 10) s = '0' + s;

		html = '<table border="0" cellspacing="0" cellpadding="4" width="100%"><tr>';
		html += '<td colspan="2" align="center">';
		html += '<div class="fmProgressBarText" style="width:200px; margin-bottom:8px; overflow:hidden">' + json.filename + '</div>';
		html += '<div class="fmProgressBarBG" style="width:202px">';
		if(percent) html += '<div class="fmProgressBar" style="width:' + (percent * 2) + 'px">&nbsp;</div>';
		else html += '&nbsp;';
		html += '</div>';
		html += '</td>';
		html += '</tr><tr>';
		html += '<td class="fmProgressBarText" align="left">' + current + ' ' + unit + ' / ' + total + ' ' + unit + ' (' + percent + '%)</td>';
		html += '<td class="fmProgressBarText" align="right">' + bps + '</td>';
		html += '</tr><tr>';
		html += '<td class="fmProgressBarText" align="center" colspan="2">' + h + ':' + m + ':' + s + '</td>';
		html += '</tr></table>';
		return html;
	},

	viewLoader: function(fmCont, url) {
		var listLoad = document.createElement('div');
		this.setOpacity(20, listLoad);
		listLoad.style.position = 'absolute';
		listLoad.style.left = 0;
		listLoad.style.top = 0;
		listLoad.style.padding = 0;
		listLoad.style.backgroundColor = '#000000';
		listLoad.style.width = fmCont.offsetWidth + 'px';
		listLoad.style.height = fmCont.offsetHeight + 'px';
		listLoad.style.display = 'block';
		listLoad.style.zIndex = 68;
		fmCont.appendChild(listLoad);

		var img = document.createElement('img');
		var webPath = url.substring(0, url.lastIndexOf('/'));

		img.src = webPath + '/icn/ajax_loader.gif';
		img.width = 100;
		img.height = 100;
		img.style.position = 'absolute';
		img.style.left = '50%';
		img.style.top = '50%';
		img.style.marginLeft = '-50px';
		img.style.marginTop = '-50px';
		listLoad.appendChild(img);
		return listLoad;
	},

	viewResponse: function(json, curCont, listLoad) {
		var fmCont = document.getElementById(curCont);
		var listCont = document.getElementById(curCont + 'List');
		var logCont = document.getElementById(curCont + 'Log');
		var infoCont = document.getElementById(curCont + 'Info');

		if(typeof json != 'object') {
			if(json.match(/\{.+\}$/)) json = eval('(' + json + ')');
		}

		if(soundManager) {
			if(this.soundObj) {
				if(this.soundObj.bObj) {
					document.getElementById(this.soundObj.bObj.id).src = fmWebPath + '/icn/mediaPlay.gif';
				}
				this.soundObj = null;
			}
			soundManager.stopAll();
		}

		if(typeof json == 'object') {
			this.sortJson(json);
			fmContSettings[curCont].listJson = json;
			if(listCont) fmParser.parseMain(json, listCont);
			if(logCont) fmParser.parseLogMessages(json, logCont);
			if(infoCont) fmParser.parseDebugInfo(json, infoCont);
			if(json.explorer) this.getExplorer(json.cont);
			if(json.error) this.viewError(json.error, json.lang);
		}
		if(listLoad && fmCont) fmCont.removeChild(listLoad);
		if(this.opacity && this.dialog) this.fadeOut(this.opacity, this.dialog);
	},

	initEditor: function() {
		var elems = document.getElementsByTagName('textarea');
		var options = ceos = [];

		for(var i = 0; i < elems.length; i++) {
			if(elems[i].className.match(/^codeedit(\s+(.+))?/i)) {
				options = RegExp.$2.split(/\s+/);
				ceos.push(new CodeEdit(elems[i], options, 'codeEdit_' + i));
			}
		}
		for(i in ceos) ceos[i].create();
	},

	initTextViewer: function() {
		var elems = document.getElementsByTagName('pre');
		var options = cvos = [];

		for(var i = 0; i < elems.length; i++) {
			if(elems[i].className.match(/^codeview(\s+(.+))?/i)) {
				options = RegExp.$2.split(/\s+/);
				cvos.push(new CodeView(elems[i], options, 'codeView_' + (i + 1)));
			}
		}
		for(i in cvos) cvos[i].create();
	},

	getUserPerms: function(url, mode) {
		var ajaxObj = new ajax();
		url.match(/fmContainer=(\w+)/);
		var curCont = RegExp.$1;
		ajaxObj.makeRequest(url + '&fmMode=getUserPerms', function() {
			fmContSettings[curCont].userPerms = eval('(' + ajaxObj.response + ')');
			if(mode) fmLib.call(fmWebPath + '/action.php?fmContainer=' + curCont + '&fmMode=' + mode);
		});
	},

	getExplorer: function(curCont, caption, link) {
		if(fmContSettings[curCont].expJson) {
			var html = fmParser.parseExplorer(fmContSettings[curCont].expJson, link);

			if(caption) {
				this.openDialog(null, 'fmExplorer', [caption, html]);
			}
			else {
				var obj = document.getElementById(curCont + 'Exp');
				if(obj) obj.innerHTML = html;
			}
		}
		else {
			var url = fmWebPath + '/action.php?fmContainer=' + curCont + '&fmMode=getExplorer';
			var ajaxObj = new ajax();

			ajaxObj.makeRequest(url, function() {
				var json = eval('(' + ajaxObj.response + ')');
				var html = fmParser.parseExplorer(json, link);

				if(caption) {
					fmLib.openDialog(null, 'fmExplorer', [caption, html]);
				}
				else {
					var obj = document.getElementById(curCont + 'Exp');
					if(obj) obj.innerHTML = html;
				}
			});
		}
	},

	toggleTreeItem: function(img) {
		var div, arr;

		if(img) {
			if(div = img.parentNode.nextSibling) {
				arr = div.id.split('|');

				if(div.style.display == 'none') {
					div.style.display = 'block';
					fmContSettings[arr[0]].expanded[arr[1]] = true;
					img.src = fmWebPath + '/icn/treeClose.gif';
					if(img.nextSibling) img.nextSibling.src = fmWebPath + '/icn/dir_open.gif';
				}
				else {
					div.style.display = 'none';
					fmContSettings[arr[0]].expanded[arr[1]] = false;
					img.src = fmWebPath + '/icn/treeOpen.gif';
					if(img.nextSibling) img.nextSibling.src = fmWebPath + '/icn/dir.gif';
				}
			}
		}
	},

	playSound: function(btnObj, curCont, id) {
		if(!fmSoundManagerReady) return false;
		var name = curCont + '_snd_' + id;
		var sndObj = soundManager.getSoundById(name);

		if(!sndObj) {
			sndObj = soundManager.createSound({
				id: name,
				url: fmWebPath + '/action.php?fmContainer=' + curCont + '&fmMode=loadFile&fmObject=' + id,
				volume: 50,
				autoPlay: true,
				onfinish: function() {
					var btnObj = document.getElementById(curCont + '_btn_' + id);
					if(btnObj) btnObj.src = fmWebPath + '/icn/mediaPlay.gif';
				}
			});
			if(sndObj) sndObj.onposition(100, function() {
				var btnObj = document.getElementById(curCont + '_btn_' + id);
				if(btnObj) btnObj.src = fmWebPath + '/icn/mediaPause.gif';
			});
			if(btnObj) btnObj.src = fmWebPath + '/icn/mediaLoading.gif';
		}
		else if(this.soundObj && this.soundObj.name == name) {
			sndObj.togglePause();
			var icon = sndObj.paused ? 'mediaPlay.gif' : 'mediaPause.gif';
			if(btnObj) btnObj.src = fmWebPath + '/icn/' + icon;
		}
		else {
			sndObj.play({position: 0});
			if(btnObj) btnObj.src = fmWebPath + '/icn/mediaPause.gif';
		}

		if(!this.soundObj || this.soundObj.name != name) {
			if(this.soundObj) {
				if(this.soundObj.sObj) this.soundObj.sObj.stop();
				if(this.soundObj.bObj) document.getElementById(this.soundObj.bObj.id).src = fmWebPath + '/icn/mediaPlay.gif';
			}
			this.soundObj = { name: name, sObj: sndObj, bObj: btnObj };
		}
	},

	toggleListView: function(curCont) {
		var json = fmContSettings[curCont].listJson;
		if(!json) return false;

		var type = (fmContSettings[curCont].listType == 'details') ? 'icons' : 'details';
		fmContSettings[curCont].listType = type;

		fmParser.parseMain(json, document.getElementById(curCont + 'List'));
		if(json.explorer) this.getExplorer(curCont);
	},

	sortList: function(curCont, field, order) {
		var json = fmContSettings[curCont].listJson;
		if(!json) return false;

		this.sortJson(json, field, order);
		fmContSettings[curCont].sort.field = field;
		fmContSettings[curCont].sort.order = order;

		fmParser.parseMain(json, document.getElementById(curCont + 'List'));
		if(json.explorer) this.getExplorer(curCont);
	},

	sortJson: function(json, field, order) {
		if(!json.entries || !json.cont) return false;
		var items = json.entries.items;
		var i, j, cnt, swap, prefix, str1, str2, temp;

		if(!field) field = fmContSettings[json.cont].sort.field;
		if(!order) order = fmContSettings[json.cont].sort.order;

		cnt = items.length;
		swap = true;

		while(cnt && swap) {
			swap = false;

			for(i = 0; i < cnt; i++) {
				if(items[i].name != '..' && items[i].name != '') {
					for(j = i; j < cnt - 1; j++) {
						if(field == 'isDir') {
							prefix = items[j].icon.match(/^dir/i) ? 'a' : 'z';
							str1 = prefix + items[j].name.toLowerCase();
							prefix = items[j + 1].icon.match(/^dir/i) ? 'a' : 'z';
							str2 = prefix + items[j + 1].name.toLowerCase();
						}
						else if(field == 'size') {
							str1 = fmTools.toBytes(items[j].size);
							str2 = fmTools.toBytes(items[j + 1].size);
						}
						else {
							str1 = items[j][field].toLowerCase();
							str2 = items[j + 1][field].toLowerCase();
						}

						if((order == 'asc' && str1 > str2) || (order == 'desc' && str1 < str2)) {
							temp = items[j];
							items[j] = items[j + 1];
							items[j + 1] = temp;
							swap = true;
						}
					}
				}
			}
			cnt--;
		}
	},

	setOpacity: function(opacity, obj) {
		if(obj) {
			obj.style.opacity = opacity / 100;
			obj.style.MozOpacity = opacity / 100;
			obj.style.KhtmlOpacity = opacity / 100;
			obj.style.filter = 'alpha(opacity=' + opacity + ')';
		}
		this.opacity = opacity;
	},

	fadeIn: function(opacity, obj) {
		if(obj) {
			if(this.fadeSpeed && opacity < 100) {
				opacity += this.fadeSpeed;
				if(opacity > 100) opacity = 100;
				this.setOpacity(opacity, obj);
				obj.style.visibility = 'visible';
				obj.style.display = 'block';
				setTimeout(this.fadeIn.bind(this, opacity, obj), 1);
			}
			else {
				this.setOpacity(100, obj);
				obj.style.visibility = 'visible';
				obj.style.display = 'block';
				this.dialog = obj;
			}
		}
	},

	fadeOut: function(opacity, obj) {
		if(obj) {
			if(this.fadeSpeed && opacity > 0) {
				opacity -= this.fadeSpeed;
				if(opacity < 0) opacity = 0;
				this.setOpacity(opacity, obj);
				setTimeout(this.fadeOut.bind(this, opacity, obj), 1);
			}
			else {
				this.setOpacity(0, obj);
				obj.style.visibility = 'hidden';
				obj.style.display = 'none';
				this.dialog = null;

				if(obj.id == 'fmMediaPlayer') {
					var flashCont = document.getElementById('fmFlashCont');
					if(flashCont) flashCont.innerHTML = '';
				}
			}
		}
	},

	setDialogLeft: function(x, obj) {
		if(!obj) obj = this.dialog;
		var width = obj.offsetWidth;
		var left = x ? x : this.mouseX - width + 13;

		if(left < 0) left = 0;
		if(x) left += fmTools.getScrollLeft();
		obj.style.left = left + 'px';
	},

	setDialogTop: function(y, obj) {
		if(!obj) obj = this.dialog;
		var hght = obj.offsetHeight;
		var top = y ? y : this.mouseY - 10;

		var winY = fmTools.getWindowHeight();
		var scrTop = fmTools.getScrollTop();

		if(y) top += scrTop;
		else if(top + hght - scrTop > winY) {
			if(hght > top) top = 0;
			else top = winY + scrTop - hght;
		}
		obj.style.top = top + 'px';
	},

	openDialog: function(url, dialogId, text, fileId, name, perms, x, y) {
		var f, e, i, obj, sid, curCont, iframeCont, ids, dialog, perc, dir, width, height;

		if(url) {
			url.match(/fmContainer=(\w+)/);
			curCont = RegExp.$1;
		}

		switch(dialogId) {

			case 'fmMediaPlayer':
				obj = document.getElementById('fmFlashCont');
				if(obj) {
					obj.style.width = fmContSettings[curCont].mediaPlayerWidth + 'px';
					obj.style.height = fmContSettings[curCont].mediaPlayerHeight + 'px';
				}
				obj = document.getElementById('fmMediaPlayerText');
				if(obj) obj.style.width = (fmContSettings[curCont].mediaPlayerWidth - 32) + 'px';
				break;

			case 'fmDocViewer':
				if(typeof fileId != 'object') {
					obj = document.getElementById('fmDocViewerCont');
					if(obj) {
						if(fmEntries[curCont][fileId].dir) dir = fmEntries[curCont][fileId].dir;
						else dir = fmContSettings[curCont].listJson.path;
						url = fmContSettings[curCont].publicUrl + dir + '/' + fmEntries[curCont][fileId].name;
						var src = 'http://docs.google.com/viewer?embedded=true&url=' + escape(url);
						width = fmContSettings[curCont].docViewerWidth;
						height = fmContSettings[curCont].docViewerHeight;
						obj.innerHTML = '<iframe src="' + src + '" border="0" frameborder="0" style="width:' + width + 'px; height:' + height + 'px"></iframe>';
					}
					obj = document.getElementById('fmDocViewerText');
					if(obj) obj.style.width = (fmContSettings[curCont].docViewerWidth - 32) + 'px';
				}
				break;

			case 'fmTextViewer':
				if(typeof fileId != 'object') {
					obj = document.getElementById('fmDocViewerCont');
					if(obj) {
						width = fmContSettings[curCont].docViewerWidth;
						height = fmContSettings[curCont].docViewerHeight;
						obj.innerHTML = '<div id="fmTextViewerCont" style="width:' + width + 'px; height:' + height + 'px"></div>';
					}
					obj = document.getElementById('fmDocViewerText');
					if(obj) obj.style.width = (fmContSettings[curCont].docViewerWidth - 32) + 'px';
					dialogId = 'fmDocViewer';
					this.call(url + '&fmMode=readTextFile&fmObject=' + fileId, dialogId);
				}
				break;

			case 'fmImgViewer':
			case 'fmCoverViewer':
				if(typeof fileId != 'object') {
					obj = document.getElementById('fmDocViewerCont');
					if(obj) {
						if(dialogId == 'fmCoverViewer') {
							var parts = name.split(':');
							width = parseInt(parts[1]);
							height = parseInt(parts[2]);
							name = parts[0];
						}
						else {
							width = parseInt(fmEntries[curCont][fileId].width);
							height = parseInt(fmEntries[curCont][fileId].height);
						}

						if(width > fmContSettings[curCont].thumbMaxWidth) {
							perc = fmContSettings[curCont].thumbMaxWidth / width;
							width = fmContSettings[curCont].thumbMaxWidth;
							height = Math.round(height * perc);
						}

						if(height > fmContSettings[curCont].thumbMaxHeight) {
							perc = fmContSettings[curCont].thumbMaxHeight / height;
							height = fmContSettings[curCont].thumbMaxHeight;
							width = Math.round(width * perc);
						}

						if(dialogId == 'fmCoverViewer') {
							url = fmWebPath + '/action.php?fmContainer=' + curCont + '&fmMode=getCachedImage&fmObject=' + name + '&width=' + width + '&height=' + height;
						}
						else url = fmWebPath + '/action.php?fmContainer=' + curCont + '&fmMode=getThumbnail&fmObject=' + fileId + '&' + fmEntries[curCont][fileId].thumbnail;

						obj.innerHTML = '<div class="fmThumbnail"' +
										' style="width:' + (width < 100 ? 100 : width) + 'px; height:' + (height < 50 ? 50 : height) + 'px; background-color:#FFFFFF; cursor:pointer"' +
										' onClick="fmLib.fadeOut(100, fmLib.dialog)">' +
										'<div style="height:' + (height < 50 ? 50 : height) + 'px; background:url(' + url + ') center no-repeat"></div></div>';

						obj = document.getElementById('fmDocViewerText');
						if(obj) obj.style.width = (width > 100 ? width - 20 : 80) + 'px';
					}
					dialogId = 'fmDocViewer';
				}
				break;

			default:
				if(f = document.forms[dialogId]) {
					f.reset();

					if(typeof fileId == 'object') fileId = fileId.join(',');
					if(fileId && f.fmObject) f.fmObject.value = fileId;
					if(name && f.fmName) f.fmName.value = name;

					switch(dialogId) {

						case 'fmNewFile':
							for(i = 1; i < 10; i++) {
								if(f['fmFile[' + i + ']']) {
									f['fmFile[' + i + ']'].style.display = 'none';
								}
							}

							if(fmContSettings[curCont] && fmContSettings[curCont].perlEnabled) {
								sid = fmContSettings[curCont].sid;
								f.action = fmWebPath + '/cgi/upload.pl?cont=' + curCont + '&sid=' + sid;
							}
							else {
								f.action = url;
								sid = '';
							}

							f.target = 'fmFileAction';
							f.onsubmit = function() {
								if(fmLib.dialog && fmLib.opacity) fmLib.fadeOut(fmLib.opacity, fmLib.dialog);
								var fmCont = document.getElementById(curCont);
								var listLoad = fmLib.viewLoader(fmCont, url);
								fmLib.iv = setInterval(fmLib.checkFile.bind(fmLib, listLoad, sid), 250);
							}
							break;

						case 'fmJavaUpload':
							if(frames.JUpload.document.location.href.match(/(fmCont\d+)/)) {
								iframeCont = RegExp.$1;
							}
							else iframeCont = '';

							if(iframeCont != curCont) {
								frames.JUpload.document.location.href = fmWebPath + '/action.php?fmContainer=' + curCont + '&fmMode=jupload';
							}
							f.action = "javascript:fmLib.call('" + url + "', '" + dialogId + "')";
							break;

						case 'fmRename':
						case 'fmDelete':
							ids = f.fmObject.value.split(',');
							for(i in ids) {
								if(fmEntries[curCont][ids[i]].icon.substr(0, 3) == 'dir') {
									fmContSettings[curCont].expJson = null;
									break;
								}
							}
							f.action = "javascript:fmLib.call('" + url + "', '" + dialogId + "')";
							break;

						case 'fmNewDir':
							fmContSettings[curCont].expJson = null;
							f.action = "javascript:fmLib.call('" + url + "', '" + dialogId + "')";
							break;

						default:
							f.action = "javascript:fmLib.call('" + url + "', '" + dialogId + "')";
					}

					if(perms) {
						e = f.elements;
						for(i = 0; i < 9; i += 3) {
							e['fmPerms[' + i + ']'].checked = (perms[i + 1] == 'r');
							e['fmPerms[' + (i + 1) + ']'].checked = (perms[i + 2] == 'w');
							e['fmPerms[' + (i + 2) + ']'].checked = (perms[i + 3] == 'x');
						}
					}
				}
		}

		if(text) {
			if(typeof(text) != 'object') text = [text];
			for(i = 0; i < text.length; i++) {
				obj = document.getElementById(dialogId + 'Text' + (i ? i + 1 : ''));
				if(obj) obj.innerHTML = text[i];
			}
		}
		dialog = document.getElementById(dialogId);

		if(this.dialog && this.opacity && this.dialog != dialog) {
			this.fadeOut(this.opacity, this.dialog);
		}
		this.fadeIn(0, dialog);
		this.setDialogLeft(x, dialog);
		this.setDialogTop(y, dialog);

		/* this must be executed when dialog is visible */
		if(dialogId == 'fmMediaPlayer' && typeof FlashReplace == 'object') {
			if(text[0].match(/\.swf$/i)) {
				var params = {bgcolor: '#000000', allowFullScreen: 'true'};
				FlashReplace.replace('fmFlashCont', url, 'fmFlashMovie', '100%', '100%', 7, params);
			}
			else {
				var params = {FlashVars: 'flvToPlay=' + escape(url) + '&defaultVolume=75&showScaleModes=false', bgcolor: '#000000', allowFullScreen: 'true'};
				FlashReplace.replace('fmFlashCont', fmWebPath + '/flvplayer/flvPlayer.swf', 'fmFlashMovie', '100%', '100%', 9, params);
			}
		}
		else if(f && f.fmName) f.fmName.focus();
		return dialog;
	},

	viewError: function(msg, lang) {
		var x = Math.round((fmTools.getWindowWidth() - 400) / 2);
		var y = Math.round((fmTools.getWindowHeight() - 50) / 2);
		this.openDialog(null, 'fmError', [fmMsg[lang].error, msg], null, null, null, x, y);
	},

	viewProgress: function(msg) {
		var x = Math.round((fmTools.getWindowWidth() - 240) / 2);
		var y = Math.round((fmTools.getWindowHeight() - 200) / 2);
		this.progBar = this.openDialog(null, 'fmProgress', msg, null, null, null, x, y);
	},

	fileInfo: function(id, lang, curCont) {
		var icon = css = style = name = tags = id3Picture = action = '';
		var thumbWidth = thumbHeight = 0;
		var id3, key;
		var size = fmEntries[curCont][id].size;
		if(fmEntries[curCont][id].width) size += ' (' + fmEntries[curCont][id].width + ' &times; ' + fmEntries[curCont][id].height + ')';

		var html = '<table border="0" cellspacing="1" cellpadding="1" width="100%"><tr align="left" valign="top">' +
			'<td class="fmContent"><b>' + fmMsg[lang].name + ':</b></td><td class="fmContent">' + fmEntries[curCont][id].fullName + '</td>' +
			'</tr><tr align="left">' +
			'<td class="fmContent"><b>' + fmMsg[lang].permissions + ':</b></td><td class="fmContent">' + fmEntries[curCont][id].permissions + '</td>' +
			'</tr><tr align="left">' +
			'<td class="fmContent"><b>' + fmMsg[lang].owner + ':</b></td><td class="fmContent">' + fmEntries[curCont][id].owner + '</td>' +
			'</tr><tr align="left">' +
			'<td class="fmContent"><b>' + fmMsg[lang].group + ':</b></td><td class="fmContent">' + fmEntries[curCont][id].group + '</td>' +
			'</tr><tr align="left">' +
			'<td class="fmContent"><b>' + fmMsg[lang].lastChange + ':</b></td><td class="fmContent" nowrap="nowrap">' + fmEntries[curCont][id].changed + '</td>' +
			'</tr><tr align="left">' +
			'<td class="fmContent"><b>' + fmMsg[lang].size + ':</b></td><td class="fmContent" nowrap="nowrap">' + size + '</td>';

		if(typeof fmEntries[curCont][id].id3 == 'object') {
			id3 = fmEntries[curCont][id].id3;

			for(key in id3) {
				if(key == 'Picture') {
					id3Picture = id3[key];
				}
				else if(id3[key] != '') {
					tags += '</tr><tr align="left">';
					tags +=	'<td class="fmContent"><b>' + key + ':</b></td><td class="fmContent" nowrap="nowrap">' + id3[key] + '</td>';
				}
			}

			if(tags) {
				html += '</tr><tr align="left">';
				html += '<td class="fmContent" colspan="2"><div style="height:0px; margin:4px 0px; border:1px inset #FFFFFF"></div></td>';
				html += tags;
			}
		}

		if(fmEntries[curCont][id].thumbnail || id3Picture) {
			if(id3Picture) {
				icon = fmWebPath + '/action.php?fmContainer=' + curCont + '&fmMode=getCachedImage&fmObject=' + id3Picture.split(':')[0] + '&width=100&height=100';
				css = 'fmThumbnail';
				style = 'width:102px; height:102px; background-color:#FFFFFF; cursor:pointer';
				action = fmParser.parseAction({caption:fmMsg[lang].cmdView,dialog:'fmCoverViewer',content:id3Picture}, curCont, id);
			}
			else {
				thumbWidth = fmEntries[curCont][id].width;
				thumbHeight = fmEntries[curCont][id].height;

				if(thumbWidth > 100) {
					thumbHeight = Math.round(thumbHeight * 100 / thumbWidth);
					thumbWidth = 100;
				}

				if(thumbHeight > 100) {
					thumbWidth = Math.round(thumbWidth * 100 / thumbHeight);
					thumbHeight = 100;
				}
				icon = fmWebPath + '/action.php?fmContainer=' + curCont + '&fmMode=getThumbnail&fmObject=' + id + '&width=' + thumbWidth + '&height=' + thumbHeight + '&' + fmEntries[curCont][id].thumbnail;
				css = 'fmThumbnail';
				style = 'width:' + thumbWidth + 'px; height:' + thumbHeight + 'px; background-color:#FFFFFF; cursor:pointer';
				action = fmParser.parseAction({caption:fmMsg[lang].cmdView,dialog:'fmImgViewer'}, curCont, id);
			}
		}
		else {
			icon = fmWebPath + '/icn/big/' + fmEntries[curCont][id].icon;
			width = height = 32;
		}
		html += '</tr><tr align="left"><td colspan="2" height="8"></td></tr><tr>' +
				'<td colspan="2" align="center">' +
				'<div class="' + css + '" style="' + style + '" onClick="' + action + '">' +
				'<img src="' + icon + '"/></div></td>';
		html += '</tr></table>';

		this.openDialog(null, 'fmInfo', [fmMsg[lang].fileInfo, html]);
	},

	viewMenu: function(id, lang, curCont) {
		if(this.noMenu) {
			this.noMenu = false;
			return;
		}
		var params, caption, html;
		var url = fmWebPath + '/action.php?fmContainer=' + curCont;
		var userPerms = fmContSettings[curCont].userPerms;
		var items = [];

		if(fmEntries[curCont][id].deleted) {
			items.push({icon:'restore.gif',caption:fmMsg[lang].cmdRestore,call:'restore'});

			if(userPerms.remove) {
				items.push({icon:'delete.gif',caption:fmMsg[lang].cmdDelete,dialog:'fmDelete',confirm:fmMsg[lang].msgDeleteFile});
			}
		}
		else {
			if(fmEntries[curCont][id].icon.substr(0, 3) == 'dir') {
				items.push({icon:'dir_open.gif',width:12,caption:fmMsg[lang].cmdChangeDir,call:'open'});
			}
			else if(userPerms.download) {
				items.push({icon:'download.gif',width:12,caption:fmMsg[lang].cmdGetFile,exec:['fmLib.getFile',curCont,id]});
			}
			else if(!userPerms.hideDisabledIcons) {
				items.push({icon:'download_x.gif',width:12,caption:fmMsg[lang].cmdGetFile});
			}
			items.push({icon:'info.gif',caption:fmMsg[lang].cmdFileInfo,exec:['fmLib.fileInfo',id,lang,curCont]});
			items.push({caption:'separator'});

			if(fmEntries[curCont][id].icon.match(/^(acrobat|word|excel|powerpoint|text)/i)) {
				if(userPerms.docViewer) {
					if(fmEntries[curCont][id].icon.substr(0, 4) == 'text') {
						items.push({icon:'view.gif',caption:fmMsg[lang].cmdView,dialog:'fmTextViewer'});
					}
					else if(fmContSettings[curCont].publicUrl != '') {
						items.push({icon:'view.gif',caption:fmMsg[lang].cmdView,dialog:'fmDocViewer'});
					}
					else if(!userPerms.hideDisabledIcons) {
						items.push({icon:'view_x.gif',caption:fmMsg[lang].cmdView});
					}
				}
				else if(!userPerms.hideDisabledIcons) {
					items.push({icon:'view_x.gif',caption:fmMsg[lang].cmdView});
				}
			}
			else if(fmEntries[curCont][id].name.match(/\.(jpe?g|png|gif)$/i)) {
				if(userPerms.imgViewer && fmEntries[curCont][id].thumbnail) {
					items.push({icon:'view.gif',caption:fmMsg[lang].cmdView,dialog:'fmImgViewer'});
				}
				else if(!userPerms.hideDisabledIcons) {
					items.push({icon:'view_x.gif',caption:fmMsg[lang].cmdView});
				}

				if(userPerms.rotate && fmEntries[curCont][id].thumbnail) {
					items.push({icon:'rotateLeft.gif',caption:fmMsg[lang].cmdRotateLeft,call:'rotateLeft'});
					items.push({icon:'rotateRight.gif',caption:fmMsg[lang].cmdRotateRight,call:'rotateRight'});
				}
				else if(!userPerms.hideDisabledIcons) {
					items.push({icon:'rotateLeft_x.gif',caption:fmMsg[lang].cmdRotateLeft});
					items.push({icon:'rotateRight_x.gif',caption:fmMsg[lang].cmdRotateRight});
				}
			}

			if(fmEntries[curCont][id].icon.substr(0, 4) == 'text') {
				if(userPerms.edit) {
					items.push({icon:'edit.gif',caption:fmMsg[lang].cmdEdit,call:'edit'});
				}
				else if(!userPerms.hideDisabledIcons) {
					items.push({icon:'edit_x.gif',caption:fmMsg[lang].cmdEdit});
				}
			}

			if(userPerms.rename) {
				items.push({icon:'rename.gif',caption:fmMsg[lang].cmdRename,dialog:'fmRename'});
			}
			else if(!userPerms.hideDisabledIcons) {
				items.push({icon:'rename_x.gif',caption:fmMsg[lang].cmdRename});
			}

			if(userPerms.permissions) {
				items.push({icon:'permissions.gif',caption:fmMsg[lang].cmdChangePerm,dialog:'fmPerm',text:[fmMsg[lang].owner,fmMsg[lang].group,fmMsg[lang].other,fmMsg[lang].read,fmMsg[lang].write,fmMsg[lang].execute]});
			}
			else if(!userPerms.hideDisabledIcons) {
				items.push({icon:'permissions_x.gif',caption:fmMsg[lang].cmdChangePerm});
			}

			if(userPerms.move) {
				caption = fmMsg[lang].cmdMove + ': ' + fmEntries[curCont][id].name;
				caption = caption.replace(/\'/g, "\'");
				items.push({icon:'move.gif',caption:fmMsg[lang].cmdMove,exec:['fmLib.getExplorer',curCont,caption,url + '&fmMode=move&fmObject=' + id]});
			}
			else if(!userPerms.hideDisabledIcons) {
				items.push({icon:'move_x.gif',caption:fmMsg[lang].cmdMove});
			}

			if(fmEntries[curCont][id].icon.substr(0, 3) != 'dir') {
				if(userPerms.copy) {
					caption = fmMsg[lang].cmdCopy + ': ' + fmEntries[curCont][id].name;
					caption = caption.replace(/\'/g, "\'");
					items.push({icon:'copy.gif',caption:fmMsg[lang].cmdCopy,exec:['fmLib.getExplorer',curCont,caption,url + '&fmMode=copy&fmObject=' + id]});
				}
				else if(!userPerms.hideDisabledIcons) {
					items.push({icon:'copy_x.gif',caption:fmMsg[lang].cmdCopy});
				}
			}

			if(userPerms.remove) {
				if(fmEntries[curCont][id].icon.substr(0, 3) == 'dir') {
					items.push({icon:'delete.gif',caption:fmMsg[lang].cmdDelete,dialog:'fmDelete',confirm:fmMsg[lang].msgRemoveDir});
				}
				else if(userPerms.restore) {
					items.push({icon:'delete.gif',caption:fmMsg[lang].cmdDelete,call:'delete'});
				}
				else items.push({icon:'delete.gif',caption:fmMsg[lang].cmdDelete,dialog:'fmDelete',confirm:fmMsg[lang].msgDeleteFile});
			}
			else if(!userPerms.hideDisabledIcons) {
				items.push({icon:'delete_x.gif',caption:fmMsg[lang].cmdDelete});
			}
		}
		html = fmParser.parseMenu(items, curCont, id);
		this.openDialog(null, 'fmMenu', [fmEntries[curCont][id].name, html]);
	},

	newFileSelector: function(cnt) {
		var f = document.forms.fmNewFile;
		if(f && f['fmFile['+cnt+']']) f['fmFile['+cnt+']'].style.display = 'block';
	},

	deleteCheckedFiles: function(curCont, title, confirm) {
		var contObj = null;

		if(contObj = document.getElementById(curCont)) {
			var nodes = contObj.getElementsByTagName('input');
			var ids = [];

			for(var i = 0; i < nodes.length; i++) {
				if(nodes[i].type == 'checkbox' && nodes[i].checked) {
					if(nodes[i].value != '') {
						ids.push(nodes[i].value);

						if(fmEntries[curCont][nodes[i].value].icon.substr(0, 3) == 'dir') {
							fmContSettings[curCont].expJson = null;
						}
					}
				}
			}

			if(ids.length > 0) {
				var url = fmWebPath + '/action.php?fmContainer=' + curCont;
				if(confirm) this.openDialog(url, 'fmDelete', [title, confirm], ids);
				else this.call(url + '&fmMode=delete&fmObject=' + ids.join(','));
			}
		}
	}
}

fmTools.addListener(document, 'mousemove', function(e) {
	var mouseX = fmLib.mouseX;
	var mouseY = fmLib.mouseY;

	if(e && e.pageX != null) {
		fmLib.mouseX = e.pageX;
		fmLib.mouseY = e.pageY;
	}
	else if(event && event.clientX != null) {
		fmLib.mouseX = event.clientX + fmTools.getScrollLeft();
		fmLib.mouseY = event.clientY + fmTools.getScrollTop();
	}
	if(fmLib.mouseX < 0) fmLib.mouseX = 0;
	if(fmLib.mouseY < 0) fmLib.mouseY = 0;

	if(fmLib.dragging && fmLib.dialog) {
		var x = parseInt(fmLib.dialog.style.left + 0);
		var y = parseInt(fmLib.dialog.style.top + 0);
		fmLib.dialog.style.left = x + (fmLib.mouseX - mouseX) + 'px';
		fmLib.dialog.style.top = y + (fmLib.mouseY - mouseY) + 'px';
	}
});

fmTools.addListener(document, 'mousedown', function(e) {
	var firedobj = (e && e.target) ? e.target : event.srcElement;
	if(firedobj.nodeType == 3) firedobj = firedobj.parentNode;

	if(firedobj.className) {
		var isTitle = (firedobj.className.indexOf('fmDialogTitle') != -1);
		var isDialog = (firedobj.className.indexOf('fmDialog') != -1 && !isTitle);

		if(firedobj.className.indexOf('fmTH1') != -1 || isTitle) {
			fmTools.setUnselectable(firedobj);

			while(firedobj.tagName != 'HTML' && !isDialog) {
				firedobj = firedobj.parentNode;
				isTitle = (firedobj.className.indexOf('fmDialogTitle') != -1);
				isDialog = (firedobj.className.indexOf('fmDialog') != -1 && !isTitle);
			}

			if(firedobj.className.indexOf('fmDialog') != -1) {
				fmLib.dialog = firedobj;
				fmLib.dragging = true;
				fmLib.setOpacity(50, fmLib.dialog);
			}
		}
	}
});

fmTools.addListener(document, 'mouseup', function() {
	fmLib.dragging = false;
	fmLib.setOpacity(100, fmLib.dialog);
});