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/vyvoj.adent.cz/egroupware/khkstc/registration/inc
/srv/http/vyvoj.adent.cz/egroupware/khkstc/registration/inc/
Upload File:
Current File : /srv/http/vyvoj.adent.cz/egroupware/khkstc/registration/inc/class.uireg.inc.php
<?php
   /**************************************************************************\
   * eGroupWare - Registration                                                *
   * http://www.egroupware.org                                                *
   * This application written by Joseph Engo <jengo@phpgroupware.org>         *
   * Modified by Jason Wies (Zone) <zone@users.sourceforge.net>               *
   * Modified by Loic Dachary <loic@gnu.org>                                  *
   * Modified by Pim Snel <pim@egroupware.org>                                *
   * --------------------------------------------                             *
   * Funding for this program was provided by http://www.checkwithmom.com     *
   * --------------------------------------------                             *
   *  This program is free software; you can redistribute it and/or modify it *
   *  under the terms of the GNU General Public License as published by the   *
   *  Free Software Foundation; either version 2 of the License, or (at your  *
   *  option) any later version.                                              *
   \**************************************************************************/

   /* $Id: class.uireg.inc.php 23741 2007-04-30 10:29:44Z lkneschke $ */

   class uireg
   {
	  var $template;
	  var $bomanagefields;
	  var $fields;
	  var $bo;
	  var $lang_code;
	  var $reg_id;
	  var $public_functions = array(
		 'step1_ChooseLangAndLoginName'   => True,
		 'step1_validate'   => True,
		 'step2_passAndInfo'   => True,
		 'step2_validate'   => True,
		 //'welcome_screen' => True,
		 //'ready_to_activate' => True,
		 'step4_activate_account'=> True,
		 'lostid_step1_ask_email'	=> True,
		 'lostid_step2_validate_send'	=> True,
		 'lostpw_step1_ask_login' => True,
		 'lostpw_step2_validate_send' => True,
		 'lostpw_step3_validate_reg_id' => True,
		 'lostpw_step4_changepass' => True,
		 'lostpw_step5_validate_newpass' => True,
		 'tos'     => True
	  );

	  function uireg()
	  {
		 $this->template = $GLOBALS['egw']->template;
		 $this->bo =& CreateObject ('registration.boreg');
		 $this->bomanagefields =& CreateObject ('registration.bomanagefields');
		 $this->fields = $this->bomanagefields->get_field_list ();

		 $this->set_lang_code();

		 $var = Array (
			'website_title' => $GLOBALS['egw_info']['server']['site_title'] .'[Registration]',
			'img_icon' => substr($GLOBALS['egw_info']['server']['login_logo_file'],0,4) == 'http' ? 
			$GLOBALS['egw_info']['server']['login_logo_file'] :
			$GLOBALS['egw']->common->image('phpgwapi',$GLOBALS['egw_info']['server']['login_logo_file'] ? 
			$GLOBALS['egw_info']['server']['login_logo_file'] : 'logo'),
			'logo_url' => $GLOBALS['egw_info']['server']['login_logo_url']?$GLOBALS['egw_info']['server']['login_logo_url']:'http://www.eGroupWare.org',
			'logo_title' => $GLOBALS['egw_info']['server']['login_logo_title']?$GLOBALS['egw_info']['server']['login_logo_title']:'www.eGroupWare.org',
		 ) ;
		 $this->template->set_var($var) ;

		 $_reg_id=$_GET['reg_id']?$_GET['reg_id']:$_POST['reg_id'];
		 $this->reg_id=trim($_reg_id?$_reg_id:'');
	  }

	  function set_lang_code($code='')
	  {
		 if($code)
		 {
			$this->lang_code=$code;
		 }
		 elseif($_GET['lang_code']) 
		 {
			$this->lang_code=$_GET['lang_code'];
		 }
		 else
		 {
			$this->lang_code=$_POST['lang_code'];
		 }

		 if (!$this->lang_code)
		 {
			$this->lang_code=$GLOBALS['default_lang'];
		 }

		 if(!$this->lang_code)
		 {
			$this->lang_code='en';
		 }

		 $GLOBALS['egw_info']['user']['preferences']['common']['lang'] = $this->lang_code;
		 $GLOBALS['egw']->translation->init();	
	  }

	  function set_header_footer_blocks()
	  {
		 $this->template->set_file(array(
			'_layout' => 'layout.tpl'
		 ));
		 $this->template->set_block('_layout','header');
		 $this->template->set_block('_layout','footer');
	  }

	  function header($head_subj='')
	  {
		 $GLOBALS['egw']->common->egw_header();
		 $this->set_header_footer_blocks();
		 if($head_subj)
		 {
			$this->template->set_var('lang_header',$head_subj);
		 }
		 else
		 {
			$this->template->set_var('lang_header',$GLOBALS['egw_info']['server']['site_title'].' - '.lang('Account registration'));
		 }

		 $this->template->pfp('out','header');
	  }

	  function footer()
	  {
		 $this->template->pfp('out','footer');
	  }

	  function create_option_string($selected,$values)
	  {
		 while (is_array($values) && list($var,$value) = each($values))
		 {
			$s .= '<option value="' . $var . '"';
			if ("$var" == "$selected")	// the "'s are necessary to force a string-compare
			{
			   $s .= ' selected';
			}
			$s .= '>' . $value . '</option>';
		 }
		 return $s;
	  }

	  function step1_ChooseLangAndLoginName($errors = '',$r_reg = '',$o_reg = '')
	  {
		 global $config;

		 //$this->bo->so->_cleanup_old_regs();
               if($config['enable_registration']!="True")
               {
			$this->header();
			echo '<br/><div align="center">';	
			   echo lang('On-line registration is not activated. Please contact the site administrator for more information about registration.');
			   echo '</div><br/>';
			$this->footer();
			exit;
		 }

		 if ($errors && $config['username_is'] == 'http')
		 {
			$vars[message]=	lang('An error occured. Please contact our technical support and let them know.');
			$this->simple_screen ('error_general.tpl', $GLOBALS['egw']->common->error_list ($errors),$vars);
		 }
		 /* Note that check_select_username () may not return */
		 $select_username = $this->bo->check_select_username ();
		 if (!$select_username || is_string ($select_username))
		 {
			$vars[message]=	lang('An error occured. Please contact our technical support and let them know.');
			$this->simple_screen ('error_general.tpl', $GLOBALS['egw']->common->error_list (array ($select_username)),$vars);
		 }

		 $this->header();
		 $this->template->set_file(array(
			'_loginid_select' => 'loginid_select.tpl'
		 ));
		 $this->template->set_block('_loginid_select','form');

		 if ($errors)
		 {
			$this->template->set_var('errors',$GLOBALS['egw']->common->error_list($errors));
		 }

		 // temporary set all available langcodes
		 $langs = $GLOBALS['egw']->translation->get_installed_langs();
		 $comeback_code=$this->lang_code;
		 //echo $comeback_code;
		 foreach ($langs as $key => $name)	// if we have a translation use it
		 {
			unset($choosetrans);
			$this->set_lang_code($key);

			$choosetrans=lang('Choose your language');

			if($choosetrans!='Choose your language*' && $choosetrans!=$prevstring)
			{
			   if(!$italic)
			   {

				  $lang_choose_string .='<div style="margin:2px;">'.$choosetrans.'</div>';
				  $italic=true; 
			   }
			   else
			   {
				  $lang_choose_string .='<div style="margin:2px;font-style: italic">'.$choosetrans.'</div>';
				  unset($italic); 
			   }
			   $prevstring=$choosetrans;
			}

			$trans = lang($name);
			if ($trans != $name . '*')
			{
			   $langs[$key] = $trans;
			}
		 } 
		 $this->set_lang_code($comeback_code);

		 $this->template->set_var('title',lang('Choose Language')); 
		 $this->template->set_var('illustration',$GLOBALS['egw']->common->image('registration','screen0_language'));

		 $this->template->set_var('lang_choose_language',$lang_choose_string);
		 $this->template->set_var('lang_change',lang('change'));

		 $selected_lang=($this->lang_code?$this->lang_code:$GLOBALS[default_lang]);

		 $s .= $this->create_option_string($selected_lang,$langs);
		 $this->template->set_var('selectbox_languages','<select name="lang_code" onChange="this.form.langchanged.value=\'true\';this.form.submit()">'.$s.'</select>');

		 $this->template->set_var('form_action',$GLOBALS['egw']->link('/registration/index.php','menuaction=registration.uireg.step1_validate'));
		 $this->template->set_var('lang_username',lang('Username'));
		 $this->template->set_var('lang_submit',lang('Submit'));

		 $this->template->pfp('out','form');

		 $this->footer();
	  }

	  function step1_validate()
	  {
		 global $config;
		 $r_reg=$_REQUEST['r_reg'];

		 if($config['conv7bit'])
		 {
			$r_reg['loginid']=$this->bo->to7bit($r_reg['loginid']);	
		 }

		 if($_POST['langchanged']=='true')
		 {
			$this->step1_ChooseLangAndLoginName('',$r_reg,$o_reg);
			exit;
               }


		 if (! $r_reg['loginid'])
		 {
			$errors[] = lang('You must enter a username');
		 }

		 if (! is_array($errors) && $this->bo->so->account_exists($r_reg['loginid']))
		 {
			$errors[] = lang('Sorry, that username is already taken.');
		 }

		 if (is_array($errors))
		 {
			$this->step1_ChooseLangAndLoginName($errors,$r_reg,$o_reg);
		 }
		 else
		 {
                        $GLOBALS['egw']->session->appsession('loginid','registration',$r_reg['loginid']);

                        #for cybro invite application
                        if ($GLOBALS['egw']->session->appsession('userinfo', 'registration'))
                        {
                                $GLOBALS['egw']->hooks->single('change_username', 'invite');

                                $this->step2_passAndInfo('', $GLOBALS['egw']->session->appsession('userinfo', 'registration'));
                                exit;
                        }

			$this->step2_passAndInfo();
		 }
	  }

	  function step2_passAndInfo($errors = '',$r_reg = '',$o_reg = '',$missing_fields='')
	  {
               global $config;
               if ($_GET['regcode'])
               {
                       $GLOBALS['egw']->hooks->single('checkcode', 'invite');

			$userinfo = $GLOBALS['egw']->session->appsession('userinfo', 'registration');
			if (empty($userinfo) || !is_array($userinfo))
			{
                               $warning_message = lang('Your registration code is missing or incorrect.');
                       }
			elseif ($GLOBALS['egw']->session->appsession('time', 'registration') == 'false')
			{
                               $warning_massage = lang('Your login is not available. Time is expired');
			}

			if ($warning_message)
			{
                               $this->header();
                               echo '<br/><div align="center">';
                               echo $warning_message;
                               echo '</div><br/>';
                               $this->footer();
                               exit;
			}
			$r_reg = $userinfo;
               }

		 $show_password_prompt = True;
		 $select_password = $this->bo->check_select_password ();
		 if (is_string ($select_password))
		 {
			$vars[message]=	lang('An error occured. Please contact our technical support and let them know.');
			$this->simple_screen ('error_general.tpl', $select_password,$vars);
		 }
		 elseif (!$select_password)
		 {
			$show_password_prompt = False;
		 }

		 if(!$GLOBALS['egw']->session->appsession('loginid','registration'))
		 {
			$vars['message'] =lang('An unknown error occured. <a href="%1">Please try registering again.</a>',$GLOBALS['egw']->link('/registration/index.php'));
			$this->simple_screen('error_general.tpl', '',$vars);
			exit;
		 }

		 $this->header();
		 $this->template->set_file(array(
			'_personal_info' => 'personal_info.tpl'
		 ));
		 $this->template->set_block('_personal_info','form');
		 $this->template->set_var('lang_code',$this->lang_code);
		 $this->template->set_var('lang_username',lang('Username'));
		 
		 $this->template->set_var('value_username',$GLOBALS['egw']->session->appsession('loginid','registration'));

		 if ($errors)
		 {
			$this->template->set_var('errors',$GLOBALS['egw']->common->error_list($errors));
		 }

		 if ($missing_fields)
		 {
			while (list(,$field) = each($missing_fields))
			{
			   $missing[$field] = True;
			   $this->template->set_var('missing_' . $field,'<font color="#CC0000">*</font>');
			}
		 }

		 if (is_array($r_reg))
		 {
			while (list($name,$value) = each($r_reg))
			{				
			   $post_values[$name] = $value;
			   $this->template->set_var('value_' . $name,$value);
			}
		 }

		 if (is_array($o_reg))
		 {
			while (list($name,$value) = each($o_reg))
			{
			   $post_values[$name] = $value;
			   $this->template->set_var('value_' . $name,$value);
			}
		 }

                $this->template->set_var('change_login_lid', $GLOBALS['egw']->link('/registration/index.php', 'menuaction=registration.uireg.step1_ChooseLangAndLoginName'));
                $this->template->set_var('lang_change_login_lid', lang('Change login'));
		 $this->template->set_var('form_action',$GLOBALS['egw']->link('/registration/index.php','menuaction=registration.uireg.step2_validate'));
		 $this->template->set_var('lang_password',lang('Password'));
		 $this->template->set_var('lang_reenter_password',lang('Re-enter password'));
		 $this->template->set_var('lang_submit',lang('Submit'));

		 if (!$show_password_prompt)
		 {
			$this->template->set_block ('form', 'password', 'empty');
		 }

		 $this->template->set_block ('form', 'other_fields_proto', 'other_fields_list');

		 reset ($this->fields);
		 while (list ($num, $field_info) = each ($this->fields))
		 {
			$input_field = $this->get_input_field ($field_info, $post_values);
			$var = array (
			   'missing_indicator' => $missing[$field_info['field_name']] ? '<font color="#CC0000">*</font>' : '',
			   'bold_start'  => $field_info['field_required'] == 'Y' ? '<b>' : '',
				  'bold_end'    => $field_info['field_required'] == 'Y' ? '</b>' : '',
			   'lang_displayed_text' => lang ($field_info['field_text']),
			   'input_field' => $input_field
			);

			$this->template->set_var ($var);

			$this->template->parse ('other_fields_list', 'other_fields_proto', True);
		 }

		 if ($config['display_tos'])
		 {
			$this->template->set_var('tos_link',$GLOBALS['egw']->link('/registration/index.php','menuaction=registration.uireg.tos'));
			$this->template->set_var('lang_tos_agree',lang('I have read the terms and conditions and agree by them.'));
			if ($r_reg['tos_agree'])
			{
			   $this->template->set_var('value_tos_agree', 'checked');
			}
		 }
		 else
		 {
			$this->template->set_block ('form', 'tos', 'blank');
		 }

		 $this->template->pfp('out','form');
		 $this->footer();
	  }

	  function step2_validate()
	  {
		 $r_reg=$_POST['r_reg'];
		 $o_reg=$_POST['o_reg'];

		 $lang_to_pass=$r_reg['lang_code'];
		 $this->set_lang_code($lang_to_pass);

		 $valid_arr=$this->bo->register_validate_fields($lang_to_pass);

		 if($valid_arr[errors])
		 {
			$this->step2_passAndInfo($valid_arr[errors],$valid_arr[r_reg],$valid_arr[o_reg],$valid_arr[missing_fields]);
		 }
		 elseif(!$valid_arr['reg_id'])
		 {
			$vars[message]=	lang('An error occured. Please remove your cookies and try again.');
			$this->simple_screen ('error_general.tpl', $GLOBALS['egw']->common->error_list ($errors),$vars);
		 }
		 else
		 {	 
			$this->step3_ready_to_activate($valid_arr['reg_id']);
		 }
	  }

	  function step3_ready_to_activate($reg_id='')
	  {
		 global $config;

		 if ($config['activate_account'] == 'email')
		 {
			$var[lang_email_confirm]=lang('We have sent a confirmation email to your email address. You must click on the link within 2 hours. If you do not, it may take a few days until your loginid will become available again.');

			$this->simple_screen('confirm_email_sent.tpl','',$var);
		 }
		 else
		 {
			/* ($config['activate_account'] == 'immediately') */
			$GLOBALS['egw']->redirect($GLOBALS['egw']->link('/registration/index.php','aid='.$reg_id));
		 }
	  }

	  function step4_activate_account()
	  {
		 $reg_info = $this->bo->so->valid_reg($this->reg_id);
		 if (! is_array($reg_info))
		 {
			$vars['error_msg']=lang('Sorry, we are having a problem activating your account. Note that links sent by e-mail are only valid during two hours. If you think this delay was expired, just retry. Otherwise, please contact the site administrator.');

			$this->simple_screen('error_confirm.tpl','',$vars);

			return False;
		 }

		 $_fields = unserialize(base64_decode($reg_info['reg_info']));
		 $this->set_lang_code($_fields['lang_code']);
		 
		 if($reg_info['reg_status']!='a')
		 {
			$this->bo->so->create_account($reg_info['reg_lid'],$reg_info['reg_info']);
			$GLOBALS['egw']->hooks->single('after_registration', 'invite');
		 }

		 $this->bo->so->set_activated($this->reg_id);

		 setcookie('sessionid');
		 setcookie('kp3');
		 setcookie('domain');
		 $this->step5_welcome_screen();
	  }

	  function step5_welcome_screen()
	  {
		 $this->header();

		 $login_url = $GLOBALS['egw']->link('/login.php');

		 $message = lang('Your account is now active!'). ' <a href="%s" style="font-weight:bold;">'. lang('Click to log into your account'). '</a>';
		 $message = sprintf($message,$login_url) ;

		 $this->template->set_file(array(
			'screen' => 'welcome_message.tpl'
		 ));

		 $this->template->set_var('lang_your_account_is_active',$message);

		 $this->template->pfp('out','screen');
		 $this->footer();
		 exit;
	  }


	  function lostpw_step1_ask_login($errors = '',$r_reg = '')
	  {
		 $this->header();
		 $this->template->set_file(array(
			'_lostpw_select' => 'lostpw_select.tpl'
		 ));
		 $this->template->set_block('_lostpw_select','form');

		 if ($errors)
		 {
			$this->template->set_var('errors',$GLOBALS['egw']->common->error_list($errors));
		 }

		 $this->template->set_var('lang_lost_password',lang('Lost Password')) ;
		 $this->template->set_var('form_action',$GLOBALS['egw']->link('/registration/index.php','menuaction=registration.uireg.lostpw_step2_validate_send'));
		 $this->template->set_var('lang_explain',lang('After you enter your username, instructions to change your password will be sent to you by e-mail to the address you gave when you registered.'));
		 $this->template->set_var('lang_username',lang('Username'));
		 $this->template->set_var('lang_submit',lang('Submit'));

		 $this->template->pfp('out','form');
		 $this->footer();
	  }

	  function lostpw_step2_validate_send()
	  {
		 $r_reg = $_REQUEST['r_reg'] ;
		 $errors=$this->bo->lostpassword_validate_login($r_reg);

		 if(is_array($errors))
		 {
			$this->lostpw_step1_ask_login($errors,$r_reg);
			exit;
		 }
		 else
		 {
			$errors =$this->bo->so->lostpassword_send_email($r_reg['loginid']);
			if(is_array($errors))
			{
			   $this->simple_screen ('error_general.tpl', $GLOBALS['egw']->common->error_list ($errors),$vars);
			}
			else
			{
			   $vars[message]=lang('We have sent a mail with instructions to change your password. You should follow the included link within two hours. If you do not, you will have to go to the lost password screen again.');
			   $this->simple_screen('confirm_email_sent_lostpw.tpl','',$vars);
			}
		 }
	  }

	  function lostpw_step3_validate_reg_id()
	  {
		 $reg_info = $this->bo->so->valid_reg($this->reg_id);

		 if (! is_array($reg_info))
		 {
			$vars['error_msg']=lang('Sorry, we are having a problem retrieving the information needed for changing your password. Note that links sent by e-mail are only valid during two hours. If you think this delay was expired, just retry. Otherwise, please contact the site administrator.');
			$this->simple_screen('error_confirm.tpl','',$vars);
			return exit;
		 }

		 $account_id = $GLOBALS['egw']->accounts->name2id($reg_info['reg_lid']);

		 $GLOBALS['egw']->session->appsession('loginid','registration',$reg_info['reg_lid']);
		 $GLOBALS['egw']->session->appsession('id','registration',$account_id);

		 $this->lostpw_step4_changepass('', '', $reg_info['reg_lid']);
		 return True;
	  }

	  function lostpw_step4_changepass($errors = '',$r_reg = '',$lid = '')
	  {
		 $this->header();
		 $this->template->set_file(array(
			'_lostpw_change' => 'lostpw_change.tpl'
		 ));
		 $this->template->set_block('_lostpw_change','form');

		 if ($errors)
		 {
			$this->template->set_var('errors',$GLOBALS['egw']->common->error_list($errors));
		 }

		 $this->template->set_var('form_action',$GLOBALS['egw']->link('/registration/index.php','menuaction=registration.uireg.lostpw_step5_validate_newpass'));
		 $this->template->set_var('value_username', $lid);
		 $this->template->set_var('lang_changepassword',lang("Change password for user"));
		 $this->template->set_var('lang_enter_password',lang('Enter your new password'));
		 $this->template->set_var('lang_reenter_password',lang('Re-enter your password'));
		 $this->template->set_var('lang_change',lang('Change'));

		 $this->template->pfp('out','form');
		 $this->footer();
	  }

	  function lostpw_step5_validate_newpass()
	  {
		 $r_reg = $_REQUEST['r_reg'] ;
		 $lid = $GLOBALS['egw']->session->appsession('loginid','registration');
		 $errors= $this->bo->lostpw_validate_newpass($r_reg, $lid);

		 if(! is_array($errors))
		 {
			$errors=$this->bo->so->change_password($lid, $r_reg['passwd']);
		 }


		 if (is_array($errors))
		 {
			$this->lostpw_step4_changepass($errors, $r_reg, $lid);
			exit;
		 } 
		 else
		 {
			$this->header();
			$this->template->set_file(array(
			   'screen' => 'lostpw_changed.tpl'
			));

			$message=lang('Your password was changed.').' <a href="'.$GLOBALS['egw']->link('/login.php').'">'. lang('You can go back to the login page').'</a>';
			$this->template->set_var('message',$message);

			$this->template->pfp('out','screen');
			$this->footer();

		 }
	  }

	  function lostid_step1_ask_email($errors = '',$r_reg = '')
	  {
		 $this->header();
		 $this->template->set_file(array(
			'_lostid_select' => 'lostid_select.tpl'
		 ));
		 $this->template->set_block('_lostid_select','form');

		 if ($errors)
		 {
			$this->template->set_var('errors',$GLOBALS['egw']->common->error_list($errors));
		 }
		 $this->template->set_var('lang_lost_user_id',lang('Lost User Id')) ;
		 $this->template->set_var('form_action',$GLOBALS['egw']->link('/registration/index.php','menuaction=registration.uireg.lostid_step2_validate_send&lang_code='.$_GET['lang_code']));
		 $this->template->set_var('lang_explain',lang('After you enter your email address, the user accounts associated with this email address will be mailed to that address.'));
		 $this->template->set_var('lang_email',lang('email address'));
		 $this->template->set_var('lang_submit',lang('Submit'));

		 $this->template->pfp('out','form');
		 $this->footer();
	  }

	  function lostid_step2_validate_send()
	  {
		 $r_reg = $_REQUEST['r_reg'] ;

		 //check if email is associated
		 $errors=$this->bo->lostid_check_account_and_email($r_reg['email']);
		 if(is_array($errors))
		 {
			$this->lostid_step1_ask_email($errors);
			exit;
		 }

		 //try to send email
		 $errors = $this->bo->email_sent_lostid($r_reg['email']);
		 if(is_array($errors))
		 {
			$this->lostid_step1_ask_email($errors);
			exit;
		 }

		 $vars[message]=sprintf(lang("We have sent a mail to your email account: %s with your lost user ids."),$r_reg['email']).' <a href="'.$GLOBALS['egw']->link('/login.php').'">'. lang('You can go back to the login page').'</a>';
		 $this->simple_screen('confirm_email_sent_lostpw.tpl','',$vars);
	  }

	  function get_input_field ($field_info, $post_values)
	  {
		 $this->tplsav2 = CreateObject('phpgwapi.tplsavant2');

		 $r_regs=$_POST['r_reg'];
		 $o_regs=$_POST['o_reg'];

		 $post_value = $post_values[$field_info['field_name']];

		 $name = $field_info['field_name'];
		 $values = explode (",", $field_info['field_values']);
		 $required = $field_info['field_required'];
		 $type = $field_info['field_type'];

		 if (!$type)
		 {
			$type = 'text';
		 }

		 if ($type == 'gender')
		 {
			$values = array (
			   lang('Male'),
			   lang('Female')
			);

			$type = 'dropdown';
		 }

		 if ($required == 'Y')
		 {
			$a = 'r_reg';
		 }
		 else
		 {
			$a = 'o_reg';
		 }

		 if ($type == 'text' || $type == 'email' || $type == 'first_name' ||
		 $type == 'last_name' || $type == 'address' || $type == 'city' ||
		 $type == 'zip' || $type == 'phone')
		 {
			$rstring = '<input type=text name="' . $a . '[' . $name . ']" value="' . $post_value . '">';
		 }

		 if ($type == 'textarea')
		 {
			$rstring = '<textarea name="' . $a . '[' . $name . ']" value="' . $post_value . '" cols="40" rows="5">' . $post_value . '</textarea>';
		 }

		 if ($type == 'dropdown')
		 {
			if (!is_array ($values))
			{
			   $rstring = lang("Error: Dropdown list '%1' has no values",$name);
			}
			else
			{
			   $this->tplsav2->values = $values;
			   $this->tplsav2->inputname = $a . '[' . $name . ']';
			   $this->tplsav2->post_value = $post_value;
			   $rstring = $this->tplsav2->fetch('dropdown.tpl.php'); 
			}
		 }

		 if ($type == 'dropdownfromtable')
		 {
			if (!is_array($values) || count($values)<>3)
			{
			   $rstring = lang("Error: Dropdown From Table '%1' is not correctly configured",$name);
			}
			else
			{
			   $this->tplsav2->dropdown_arr=$this->bo->so->get_dropdownfromtable_values(trim($values[0]),trim($values[1]),trim($values[2]));
			   //_debug_array($this->tplsav2->dropdown_arr);

			   //$this->tplsav2->values = $values;
			   $this->tplsav2->inputname = $a . '[' . $name . ']';
			   $this->tplsav2->post_value = $post_value;
			   $rstring = $this->tplsav2->fetch('dropdownfromtable.tpl.php'); 
			}
		 }

		 if ($type == 'checkbox')
		 {
			unset ($checked);
			if ($post_value)
			$checked = "checked";

			$rstring = '<input type=checkbox name="' . $a . '[' . $name . ']" ' . $checked . '>';
		 }

		 if ($type == 'birthday' || $type == 'state' || $type == 'country')
		 {
			$sbox =& CreateObject ('registration.sbox');
		 }

		 if ($type == 'state')
		 {
			$rstring = $sbox->list_states ($a . '[' . $name . ']', $post_value);
		 }

		 if ($type == 'country')
		 {
			$vselected=$post_value;
			$aname=$a . '[' . $name . ']';

			$str = '<select name="'.$aname.'">'."\n"
			   . ' <option value="  "'.($vselected == '  '?' selected':'').'>'.lang('Select One').'</option>'."\n";
			   reset($sbox->country_array);
			   while(list($vkey,$vvalue) = each($sbox->country_array))
			   {
				  $str .= ' <option value="'.$vkey.'"'.($vselected == $vkey?' selected':'') . '>'.$vvalue.'</option>'."\n";
			   }
			   $str .= '</select>'."\n";

			$rstring = $str;
		 }

		 if ($type == 'birthday')
		 {
			$rstring = $sbox->getmonthtext ($a . '[' . $name . '_month]', $post_values[$name . '_month']);
			$rstring .= $sbox->getdays ($a . '[' . $name . '_day]', $post_values[$name . '_day']);
			$rstring .= $sbox->getyears ($a . '[' . $name . '_year]', $post_values[$name . '_year'], 1900, date ('Y') + 1);
		 }

		 return $rstring;
	  }


	  function simple_screen($template_file, $text = '',$vars=false,$head_subj='')
	  {
		 //$this->setLang();
		 $this->header($head_subj);

		 $this->template->set_file(array(
			'screen' => $template_file
		 ));

		 if ($text)
		 {
			$this->template->set_var ('extra_text', $text);
		 }

		 if(is_array($vars))
		 {
			$this->template->set_var ($vars);
		 }

		 $this->template->pfp('out','screen');
		 $this->footer();
		 exit;
	  }

	  function tos()
	  {
		 global $config;
		 $var[tos_text]= $config['tos_text'];
		 $var[lang_close_window]= '<a href="javascript:self.close()">'.lang('Close Window').'</a>';

		 $this->simple_screen('tos.tpl','',$var,lang('Terms of Service'));
	  }
   }