PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/home/svmhimrashmi.org/www/wp-content/plugins/event-calendar-wd/includes/
Upload File :
Current File : /home/svmhimrashmi.org/www/wp-content/plugins/event-calendar-wd/includes/calendar-class.php
<?php

    class Calendar {

        public $weekstartday = 0;      // week start day (0-6 e.g. 0 = Sunday, 1 = Monday, etc.)
        public $monthselector = true;    // month/year select box (true=show selector,false=show month name)
        public $yearoffset = 5;     // monthselector range of years (int)
        public $weeknumbers = false;    // adds a column for week numbers (left,right,false)
        public $weeknumrotate = true;    // rotate weeknumbers 90 degrees *currently only firefox is supported* (true,false)
        public $weeknames = 2;      // controls how weekdays are displayed. (1=full,2=abbrev,3=single char)
        public $monthnames = 1;     // controls how months are displayed. (1=full,2=abbrev)
        public $basecolor = '7D9AC0';    // base color for color scheme (hex)
        public $color = 'blue';    //  color for color scheme (hex)
        public $minilinkbase = '';     // base url for links on mini calendar (blank=disabled)
        public $eventlistbg = '10738B';   // event list view bg color (hex)
        public $eventemptytext = 'No additional details for this event.'; // default text in event view when details is empty (string)
        public $dateformat = 'Y.m.d';    // default date format (passed to php date() public function)
        public $list_date_format = 'd.F.l';    // default date format (passed to php date() public function)
        public $timeformat = 'H:i';    // default time format (passed to php date() public function)
        public $font = '"Lucida Grande","Lucida Sans Unicode",sans-serif'; // font used to display the calendar (any css supported value)
        public $linktarget = 'parent';    // link target frame or window (e.g. 'parent.frameName'. Use '_blank' for new window/tab)
        public $listlimit = false;     // limit the number of events in list and mini-list (false or int e.g. 10)
        public $listtitle = ''; //'Event List';   // Title shown when displaying full event list
        public $widget = 0;
        public $search_params = array();
        public $categories = array();
        public $tags = array();
        public $venues = array();
        public $organizers = array();
        public $displays = array(
            'full',
            'list',
            'week',
            'day'
        );
        public $filters = array(
            'categories',
            'tags',
            'venues',
            'organizers'
        );
        public $event_search = 'yes';
        public $displaysName;
        public $eventlinktarget;
        public $event_popup = "no";
        //--------------------------------------------------------------------------------------------
        // Weekday names/abbreviations (array must start with Sunday=0)
        //--------------------------------------------------------------------------------------------
        public $weekdate;
        public $weekdays = array(
            "Sunday",
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday"
        );
        public $abbrevweekdays = array(
            "Sun",
            "Mon",
            "Tue",
            "Wed",
            "Thu",
            "Fri",
            "Sat"
        );
        public $weekdayschar = array(
            "Su",
            "Mo",
            "Tu",
            "We",
            "Th",
            "Fr",
            "Sa"
        );
        //--------------------------------------------------------------------------------------------
        // Other publics used. (No need to edit below here)
        //--------------------------------------------------------------------------------------------
        public $jd, $year, $month, $day, $displaytype, $numdaysinmonth, $monthstartday, $monthname, $previousmonth, $nextmonth;
        public $events = array();

        // types: mini,full,list,mini-list,(default=full)
        public function __construct ($type = 'full', $date = '', $staticdisplaytype = false, $widget = 0, $limit = false, $page = 1, $displays = null, $filters = null, $event_search = 'yes', $ecwd_views = array(), $preview) {
            // static displaytype
            add_filter('format_content', 'wptexturize');
            add_filter('format_content', 'convert_smilies');
            add_filter('format_content', 'wpautop');
            add_filter('format_content', 'shortcode_unautop');
            add_filter('format_content', 'prepend_attachment');
            global $wp_version;
            if (isset($wp_version)) {
                if (version_compare($wp_version, '4.4', '>=')) {
                    add_filter('format_content', 'wp_make_content_images_responsive');
                }
            }
            global $ecwd_options;
            $this->eventemptytext = isset($ecwd_options['event_default_description']) ? $ecwd_options['event_default_description'] : $this->eventemptytext;
            if (isset($ecwd_options['date_format']) && $ecwd_options['date_format'] != '') {
                if (isset($ecwd_options['date_format'])) {
                    $this->dateformat = $ecwd_options['date_format'];
                }
            }
            if (isset($ecwd_options['list_date_format']) && $ecwd_options['list_date_format'] != '') {
                $this->list_date_format = $ecwd_options['list_date_format'];
            }
            if (isset($ecwd_options['time_format']) && $ecwd_options['time_format'] != '') {
                $this->timeformat = $ecwd_options['time_format'];
            }
            $this->eventlinktarget .= (isset($ecwd_options['events_new_tab']) && $ecwd_options['events_new_tab'] == 1 ? ' target="_blank" ' : '');
            $this->timeformat .= (isset($ecwd_options['time_type']) ? ' ' . $ecwd_options['time_type'] : '');
            if (isset($ecwd_options['time_type']) && $ecwd_options['time_type'] != '') {
                $this->timeformat = str_replace('H', 'g', $this->timeformat);
                $this->timeformat = str_replace('h', 'g', $this->timeformat);
            }
            if (isset($ecwd_options['week_starts']) && $ecwd_options['week_starts'] != '') {
                $this->weekstartday = $ecwd_options['week_starts'];
            }
            if ($preview == false) {
                if (isset($ecwd_options['events_in_popup']) && $ecwd_options['events_in_popup'] == '1') {
                    $this->event_popup = "yes";
                }
            }
            $this->widget = $widget;
            $this->page   = $page;
            if ($displays && is_array($displays) && $displays[0] != '') {
                $displays = array_unique($displays);
                if (($key = array_search('none', $displays)) !== false) {
                    unset($displays[$key]);
                }
                $this->displays = $displays;
            }
            if ($filters && is_array($filters) && $filters[0] != '') {
                $filters = array_unique($filters);
                if (($key = array_search('none', $filters)) !== false) {
                    unset($filters[$key]);
                }
                $this->filters = $filters;
            }
            if ($staticdisplaytype === true) {
                $this->displaytype = $type;
            } else {
                // calendar display type
                if ($type != '' && !isset($_REQUEST['t'])) {
                    $this->displaytype = $type; // if type is not set in querystring set type to passed value
                } else {
                    $this->displaytype = sanitize_text_field($_REQUEST['t']); // else set to type passed in querystring
                }
            }
            // calendar date
            if ($date == '' && !isset($_REQUEST['date'])) {
                $date = date('Y-n-j');
            } // set to todays date if no value is set
            if (isset($_REQUEST['date']) && $_REQUEST['date'] != '') {
                $date = sanitize_text_field($_REQUEST['date']);

            } // check if date is in the querystring
            $date      = date('Y-n-j', strtotime($date)); // format the date for parsing
            
            $date_part = explode('-', $date); // separate year/month/day
            $year      = $date_part[0];
            $month     = $date_part[1];
            $day       = $date_part[2];
            
            if (!is_archive() && isset($_REQUEST['y']) && $_REQUEST['y'] != '') {
                $year = sanitize_text_field($_REQUEST['y']);
            } // if year is set in querystring it takes precedence
            if (!is_archive() && isset($_REQUEST['m']) && $_REQUEST['m'] != '') {
                $month = sanitize_text_field($_REQUEST['m']);
            } // if month is set in querystring it takes precedence
            if (!is_archive() && isset($_REQUEST['d']) && $_REQUEST['d'] != '') {
                $day = sanitize_text_field($_REQUEST['d']);
            } // if day is set in querystring it takes precedence
            // make sure we have year/month/day as int
            if ($year == '') {
                $year = date('Y');
            }
            if ($month == '') {
                $month = date('n'); // set to january if year is known
            }
            if ($day == '') {
                $day = date('j'); // set to the 1st is year and month is known
            }
            $this->date  = $date;
            $this->month = (int)$month;
            $this->year  = (int)$year;
            $this->day   = (int)$day;
            // find out the number of days in the month
            $this->numdaysinmonth = cal_days_in_month(CAL_GREGORIAN, $this->month, $this->year);
            // create a calendar object
            $this->jd = cal_to_jd(CAL_GREGORIAN, $this->month, date(1), $this->year);
            // get the month start day as an int (0 = Sunday, 1 = Monday, etc)
            $this->monthstartday = jddayofweek($this->jd, 0);
            // get the month as a name
            $this->monthname = __(Date('F', strtotime($this->date)), 'event-calendar-wd');
            //get weekdate
            $this->weekdate = $this->getWeekFirstDayDate($this->date);
            //get month date
            $this->monthdate = $this->getMonthDate($this->date);
            //get day date
            $this->daydate = $this->getDayDate($this->date);
            $this->displaysName = array(
                'full' => array(
                    'name' => __('Month', 'event-calendar-wd'),
                    'date' => $this->monthdate
                ),
                'mini' => array(
                    'name' => __('Month', 'event-calendar-wd'),
                    'date' => $this->monthdate
                ),
                'list' => array(
                    'name' => __('List', 'event-calendar-wd'),
                    'date' => $this->monthdate
                ),
                'week' => array(
                    'name' => __('Week', 'event-calendar-wd'),
                    'date' => $this->weekdate
                ),
                'day'  => array(
                    'name' => __('Day', 'event-calendar-wd'),
                    'date' => $this->daydate
                ),
            );
            $this->event_search = $event_search;
            $this->listlimit    = $limit;
        }

        // header area for all displaytypes
        public function month_selector () {
            $html = '';
            return $html;
        }

        public function add_terms ($type = 'categories', $terms) {
            if (is_array($terms)) {
                $this->$type = $terms;
            }
        }

        public function addEvent ($arr) {
            $this->events[] = $arr;
        }

        public function addEvents ($arr) {
            $this->events = $arr;
        }

        // next month link
        public function dateDiff ($beginDate, $endDate) {
            if ($endDate == '') {
                return 0;
            }
            $fromDate = date('Y-n-j', strtotime($beginDate));
            $toDate   = date('Y-n-j', strtotime($endDate));
            // echo $fromDate.'----'.$toDate.'<br />';
            $date_parts1 = explode('-', $fromDate);
            $date_parts2 = explode('-', $toDate);
            $start_date = gregoriantojd($date_parts1[1], $date_parts1[2], $date_parts1[0]);
            $end_date   = gregoriantojd($date_parts2[1], $date_parts2[2], $date_parts2[0]);
            return $end_date - $start_date;
        }

        // previous month link
        public function showcal () {
            global $cal_ID;
            global $ecwd_options;
            $html       = '';
            $start_date = strtotime($this->year . '-' . $this->month . '-1');
            $end_date   = date('Y-m-t', strtotime($this->date));
            $html .= $this->calendar_head(); // set table head
            $this->seted_days = array();
            if (!in_array($this->displaytype, array(
                "list",
                "mini-list",
                "week",
                'day',
            ))
            ) { // mini and full cal
                $html .= '<tr>';
                // render week number on left
                if ($this->weeknumbers == 'left' && $this->monthstartday != $this->weekstartday) {
                    $html .= '<td class="week-number"><span>' . date('W', strtotime($this->year . '-' . $this->month)) . '</span></td>';
                }
                // render previous month cells
                $emptycells = 0;
                $numinrow = 7;
                // adjust for weekstartdays
                $weekstartadjust = $this->monthstartday - $this->weekstartday;
                if ($weekstartadjust < 0) {
                    $weekstartadjust = $weekstartadjust + $numinrow;
                }
                for ($counter = 0; $counter < $weekstartadjust; $counter++) {
                    if ($counter == 0) {
                        $thisclass = 'day-without-date week-start';
                    } // only on first
                    else {
                        $thisclass = 'day-without-date';
                    }
                    if ($this->displaytype == 'full') {
                        $html .= $this->calendar_cell(__($this->previousmonth, 'event-calendar-wd'), $thisclass);
                    } else {
                        $html .= $this->calendar_cell('&nbsp;', $thisclass);
                    }
                    $emptycells++;
                }
                // render days
                $rowcounter    = $emptycells;
                $weeknumadjust = $numinrow - ($this->monthstartday - $this->weekstartday);
                for ($counter = 1; $counter <= $this->numdaysinmonth; $counter++) {
                    $date = $this->year . '-' . $this->month . '-' . $counter;
                    // render week number on left
                    if ($this->weeknumbers == 'left' && $this->weekstartday == $this->getDay($date, 0)) {
                        $adjustweek = $this->calcDate($date, '+' . $weeknumadjust, 'day');
                        $adjustweek = $adjustweek['year'] . '-' . $adjustweek['month'] . '-' . $adjustweek['day'];
                        $html .= '<td class="week-number"><span>' . date('W', strtotime($adjustweek)) . '</span></td>';
                    }
                    $rowcounter++;
                    $html .= $this->calendar_cell($counter, 'day-with-date', $date);
                    if ($rowcounter % $numinrow == 0) {
                        // render week number on right
                        if ($this->weeknumbers == 'right') {
                            $html .= '<td class="week-number"><span>' . date('W', strtotime($date)) . '</span></td>';
                        }
                        $html .= "</tr>";
                        if ($counter < $this->numdaysinmonth) {
                            $html .= "<tr>";
                        }
                        $rowcounter = 0;
                    }
                }
                // render next month cells
                $numcellsleft = $numinrow - $rowcounter;
                if ($numcellsleft != $numinrow) {
                    for ($counter = 0; $counter < $numcellsleft; $counter++) {
                        if ($this->displaytype == 'full') {
                            $html .= $this->calendar_cell($this->nextmonth, 'day-without-date');
                        } else {
                            $html .= $this->calendar_cell('&nbsp;', 'day-without-date');
                        }
                        $emptycells++;
                    }
                }
                // render week number on right
                if ($this->weeknumbers == 'right' && $numcellsleft != 7) {
                    $html .= '<td class="week-number" style="border-bottom:1px solid #' . $this->bordercolor . ';"><span>' . date('W', strtotime($date)) . '</span></td>';
                }
                $html .= '</tr>';
            } elseif ($this->displaytype == 'week') {
                $html .= '<ul class="week-event-list">';
                $currentWeek = $this->rangeWeek($this->year . '-' . $this->month . '-' . $this->day);
                $date        = $currentWeek['start'];
                while (strtotime($date) <= strtotime($currentWeek['end'])) {
                    $html .= '<li itemscope itemtype="http://schema.org/Event">' . $this->calendar_cell(date('d', strtotime($date)), 'day-with-date', date('Y-n-j', strtotime($date))) . '</li>';
                    $date = date("Y-m-d", strtotime("+1 day", strtotime($date)));
                }
                $html .= '</ul>';
            } elseif ($this->displaytype == 'day') {
                $html .= '<ul class="day-event-list">';
                $html .= '<li itemscope itemtype="http://schema.org/Event">' . $this->calendar_cell(date('d', strtotime($this->year . '-' . $this->month . '-' . $this->day)), 'day-with-date', date('Y-n-j', strtotime($this->year . '-' . $this->month . '-' . $this->day))) . '</li>';
                $html .= '</ul>';
            } elseif ($this->displaytype == '4day') {
                $html .= '<ul class="day4-event-list">';
                $days = $this->range4Days($this->year . '-' . $this->month . '-' . $this->day);
                $date = $days['start'];
                while (strtotime($date) <= strtotime($days['end'])) {
                    $html .= '<li itemscope itemtype="http://schema.org/Event">' . $this->calendar_cell(date('d', strtotime($date)), 'day-with-date', date('Y-n-j', strtotime($date))) . '</li>';
                    //$this->
                    $date = date("Y-m-d", strtotime("+1 day", strtotime($date)));
                }
                $html .= '</ul>';
            } else { // event list and map
                if (count($this->events) > 0) {
                    //                $events = array();
                    //                foreach ($this->events as $date_events){
                    //                    $events[] = $date_events;
                    //                }
                    //
                    //                $this->events= $events;// = $this->arraySort($this->events, 'from');
                }
                if ($this->displaytype == 'map') {

                } else {
                    $pages = 0;
                    $page  = $this->page;
                    $html .= '<ul class="ecwd_list">';
                    $page_index = 0;
                    $ev_counts  = 0;
                    $events_for_list = $this->events;
                    /* if (!isset($ecwd_options['long_events']) || (isset($ecwd_options['long_events']) && $ecwd_options['long_events'] == '0')) {
                      $events_for_list = array(
                      $start_date => $events_for_list,
                      );
                      } */
                    foreach ($events_for_list as $date_key => $events) {
                        $ev_counts += count($events);
                        foreach ($events as $event) {
												    $all_day_event = (isset($event['all_day_event']) && $event['all_day_event'] == 1) ? true : false;
                            if ($date_key >= $start_date && $date_key <= strtotime($end_date)) {
                                if ($page_index >= $page * $this->listlimit) {
                                    break 1;
                                }
                                if ($page_index >= (($page - 1) * $this->listlimit)) {
                                    if ($this->displaytype == 'list') { // full event list
                                        $image_class = '';
                                        $image       = $this->getAndReplaceFirstImage($event['details']);
                                        if (!has_post_thumbnail($event['id']) && $event['image'] == "") {
                                            $image_class = "ecwd-no-image";
                                        }
                                        $html .= '<li class="' . $image_class . '" itemscope itemtype="http://schema.org/Event">';
                                        if (!$this->widget) {
                                            $html .= '<div class="ecwd-list-date resp" itemprop="startDate" content="' . date('Y-m-d', strtotime($event['from'])) . 'T' . date('H:i', $date_key) . '">' . __(date('d', $date_key), 'event-calendar-wd') . '</div>';
                                            $html .='<span class="ecwd_hidden" itemprop="endDate" content="' . date('Y-m-d', strtotime($event['to'])) . 'T' . date('H:i', $date_key) . '"></span>';
                                            $event_date = (($this->list_date_format !== 'd.F.l') ? date($this->list_date_format, $date_key) : (date('d', $date_key) . '.' . __(date('F', $date_key), 'event-calendar-wd') . '.' . __(date('l', $date_key), 'event-calendar-wd')));
                                            if ($this->list_date_format !== 'd.F.l') {
                                                $month_name = date('F', strtotime($event['from']));
                                                $event_date = str_replace($month_name, __($month_name, 'event-calendar-wd'), $event_date);
                                            }
                                            $html .= '<div class="ecwd-list-img"><div class="ecwd-list-img-container"><div class="ecwd-list-date web">' . $event_date . '</div>';
                                            $html .= '<div class="ecwd-img">';
                                            $ecwd_has_thumb = has_post_thumbnail($event['id']);
                                            if ($ecwd_has_thumb || $event['image']) {
                                                if ($ecwd_has_thumb) {
                                                    $html .= get_the_post_thumbnail($event['id'],"thumbnail",array("itemprop"=>"image"));
                                                } else {
                                                    $html .= '<img itemprop="image" src="' . $event['image'] . '" />';
                                                }
                                            } elseif ($image['image'] != null) {
                                                $html .= '<img itemprop="image" src="' . $image['image'] . '" />';
                                                $event['details'] = $image['content'];
                                            }
                                            $html .= '</div></div></div>';
                                        } else {
                                            $html .= '<div class="ecwd-list-date" itemprop="startDate" content="' . date('Y-m-d', strtotime($event['from'])) . 'T' . date('H:i', $date_key) . '">' . __(date('d', $date_key), 'event-calendar-wd') . '</div>';
                                            $html .= '<span class="ecwd_hidden"  itemprop="endDate" content="' . date('Y-m-d', strtotime($event['to'])) . 'T' . date('H:i', strtotime($event['endtime'])) . '"></span>';
                                        }
                                        $html .= '<div class="event-main-content">';
                                        if ($this->event_popup == "yes" && get_post_meta($event['id'], '', true)) {
                                            $date_data = 'start-date-data="' . date("Y-m-d", strtotime($event['date'])) . '"';
                                            $date_data .= ' end-date-data="' . date("Y-m-d", strtotime($event['to'])) . '"';
                                            $html .= '<h3 class="event-title"  itemprop="name"><span ' . $date_data . ' class="ecwd_open_event_popup event' . $event['id'] . '" style="color:' . $event['color'] . ';">' . $event['title'] . '</span></h3>';
                                        } else if ($event['permalink'] != '') {
                                            $html .= '<h3 class="event-title"  itemprop="name"><a href="' . $event['permalink'] . '" ' . $this->eventlinktarget . ' itemprop="url" style="color:' . $event['color'] . ';">' . $event['title'] . '</a></h3>';
                                        } else {
                                            $html .= '<h3 class="event-title" style="color:' . $event['color'] . ';" itemprop="name">' . $event['title'] . '</h3>';
                                        }

                                        if(isset($event['link']) && $event['link'] !== ""){
                                            $link = $event['link'];
                                        }else if(isset($event['metas']['ecwd_event_url'][0]) && $event['metas']['ecwd_event_url'][0] !== ""){
                                            $link =  $event['metas']['ecwd_event_url'][0];
                                        }else{
                                            $link = get_post_permalink($event['id']);
                                        }

                                        if($link) {
                                            $html .= '<span class="hidden" itemprop="url">' . $link . '</span>';
                                        }

                                        $html .= '<div class="ecwd-list-date-cont">';
                                        if ($all_day_event) {
                                            $eventtime = '<div class="ecwd-time"><span class="metainfo"> ' . __('All day', 'event-calendar-wd');
                                            $eventtime .= '</span>';
                                            $eventtime .= '</div>';
                                        } else {
                                            if ($event['starttime'] != '') { // event details - hidden until clicked (full)
                                                $eventtime = '<div class="ecwd-time"><span class="metainfo"> ' . date($this->timeformat, strtotime($event['starttime']));
                                                if ($event['endtime'] != '' && strtotime($event['endtime']) != strtotime($event['starttime'])) {
                                                    $eventtime .= "-" . date($this->timeformat, strtotime($event['endtime']));
                                                }
                                                $eventtime .= '</span>';
                                                $eventtime .= '</div>';
                                            }
                                        }
                                        $html .= $eventtime;
                                        if ($event['from'] != '') { // event details - hidden until clicked (full)
                                            $eventdate = '<div class="ecwd-date"><span class="metainfo"> ' . date($this->dateformat, $date_key);
                                            if ($event['to'] != '' && strtotime($event['to']) !== strtotime($event['from'])) {
                                                $eventdate .= "-" . date($this->dateformat, strtotime($event['to']));
                                            }
                                            $eventdate .= '</span>';
																						$eventdate .= ECWD::get_time_zone( $all_day_event );
                                            $eventdate .= '</div>';
                                            $html .= $eventdate;
                                        }
																				
                                        $html .= '</div>';
                                        if (isset($event['organizers']) && count($event['organizers']) > 0) {
                                            $html .= '<div class="event-organizers"><div class="ecwd-org-cont">';
                                            foreach ($event['organizers'] as $organizer) {
                                                $html .= '<div class="event-organizer" itemprop="organizer"> <a href="' . $organizer['permalink'] . '">' . $organizer['name'] . '</a></div>';
                                            }
                                            $html .= '</div></div>';
                                        }
                                        if ($event['location'] !== '') {
                                            $html .= '<div class="event-venue" itemprop="location" itemscope itemtype="http://schema.org/Place"><div class="ecwd-org-cont">
                                            <span itemprop="name">';
                                            if (isset($event['venue']['name'])) {
                                                $html .= '<a href="' . $event['venue']['permalink'] . '">' . $event['venue']['name'] . '</a>';
                                            }
                                            $html .= '</span>
                                            <div class="address" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
                                              ' . ($event['location'] ? $event['location'] : "") . '
                                            </div>
                                          </div>
										 </div>';
                                        }
                                        $desc = $event['details'] ? $event['details'] : $this->eventemptytext;
                                        $desc = apply_filters('format_content', $desc);
                                        $html .= '<div class="event-content" itemprop="description">' . $desc . '</div></div>';
                                    } else { // mini event list
                                        $html .= '<li style="background:' . $event['color'] . ';"';
                                        if ($this->minilinkbase !== false) { // enable link (good for linking to full calendar)
                                            $html .= ' class="event-link"';
                                            if ($this->linktarget == '_blank') {
                                                $html .= ' onClick="window.open(\'' . $this->minilinkbase . '\', \'_blank\')"';
                                            } else {
                                                $html .= ' onClick="' . $this->linktarget . '.location=\'' . $this->minilinkbase . '\'"';
                                            }
                                        } else if ($event['link'] != '') { // enable link (links to event url)
                                            $html .= ' class="event-link"';
                                            if ($this->linktarget == '_blank') {
                                                $html .= 'onClick="window.open(\'' . $event['link'] . '\', \'_blank\')"';
                                            } else {
                                                $html .= ' onClick="' . $this->linktarget . '.location=\'' . $event['link'] . '\'"';
                                            }
                                        }
                                    }
                                    $html .= '</li>';
                                }
                                $page_index++;
                            }
                        }
                    }
                    if ($this->listlimit !== false && $this->listlimit != 0) {
                        $offset = ($page - 1) * $this->listlimit;
                        $pages  = ceil($ev_counts / $this->listlimit);
                    }
                    if (count($this->events) <= 0) { // if events array is empty
                        $html .= '<li >';
                        $html .= '<div class="event-content">' . __('No Events', 'event-calendar-wd') . '</div>';
                        $html .= '</li>';
                    }
                    $html .= '</ul>';
                    ///PAGINATION////
                    if ($pages > 1) {
                        $html .= '<div class="ecwd-pagination">';
                        if ($this->page > 1) {
                            $html .= '<span class="cpage-span"><a href="?date=' . $this->year . '-' . $this->month . '&t=' . $this->displaytype . '&cpage=' . ($this->page - 1) . '" class="cpage" rel="noindex, nofollow">...</a></span>';
                        }
                        for ($i = ($this->page - 3); $i < ($this->page + 4); $i++) {
                            if ($i <= $pages and $i >= 1) {
                                if ($this->page == $i) {
                                    $html .= '<span class="cpage-span"><span class="page">' . $i . '</span></span>';
                                } else {
                                    $html .= '<span class="cpage-span"><a href="?date=' . $this->year . '-' . $this->month . '&t=' . $this->displaytype . '&cpage=' . $i . '" class="cpage" rel="noindex, nofollow">' . $i . '</a></span>';
                                }
                            }
                        }
                        if ($this->page < $pages) {
                            $html .= '<span class="cpage-span"><a href="?date=' . $this->year . '-' . $this->month . '&t=' . $this->displaytype . '&cpage=' . ($this->page + 1) . '" class="cpage" rel="noindex, nofollow">...</a></span>';
                        }
                        $html .= '</div>';
                    }
                }
            }
            $html .= $this->calendar_foot();
            // remove tabs, line breaks, vertical tabs, null-byte
            $html = $this->stripWhitespace($html);
            return $html;
        }

        // month/year select box
        public function calendar_head ($content = '') {
            global $cal_ID;
            $html = '';
            $html .= '<div class="calendar-head ecwd_calendar_prev_next">';
            $html .= $this->cal_previous(); // previous month link
            $previous_year      = $this->calcDate($this->year . '-' . $this->month . '-' . $this->day, '-1', 'year');
            $previous_dateparam = $previous_year['year'] . '-' . $previous_year['month'] . '-' . $previous_year['day'];
            $next_year      = $this->calcDate($this->year . '-' . $this->month . '-' . $this->day, '+1', 'year');
            $next_dateparam = $next_year['year'] . '-' . $next_year['month'] . '-' . $next_year['day'];
            if ($this->displaytype == 'week') {
                $previous_dateparam = $this->getWeekFirstDayDate($previous_year['year'] . '-' . $previous_year['month'] . '-' . $previous_year['day']);
                $next_dateparam     = $this->getWeekFirstDayDate($next_year['year'] . '-' . $next_year['month'] . '-' . $next_year['day']);
            }
            $html .= '<div class="current-month">
					<a href="?date=' . $previous_dateparam . '&t=' . $this->displaytype . '" rel="noindex, nofollow"><</a>&nbsp;
					' . $this->year . '
				&nbsp;<a href="?date=' . $next_dateparam . '&t=' . $this->displaytype . '" rel="noindex, nofollow">></a>
					<div>';
            if ($this->displaytype !== 'week' && $this->displaytype !== '4day' && $this->displaytype !== 'day') {
                $html .= __($this->monthname, 'event-calendar-wd');
            } else {
                if ($this->displaytype !== 'day') {
                    if ($this->displaytype == 'week') {
                        $currentDays = $this->rangeWeek($this->year . '-' . $this->month . '-' . $this->day);
                    } else {
                        $currentDays = $this->range4Days($this->year . '-' . $this->month . '-' . $this->day);
                    }
                    $html .= __($this->getMonth($currentDays['start']), 'event-calendar-wd') . ' ' . date('d', strtotime($currentDays['start'])) . ' - ' . __($this->getMonth($currentDays['end']), 'event-calendar-wd') . ' ' . date('d', strtotime($currentDays['end']));
                } else {
                    $html .= __($this->monthname, 'event-calendar-wd') . ' ' . $this->day;
                }
            }
            $html .= '		</div>
				</div>';
            $html .= $this->cal_next(); // next month link
            $current_date_link = "?date=" . $this->year . "-" . $this->month . "-" . $this->day;
            $current_date_link .= "&t=" . $this->displaytype;
            $html .= '<input type="hidden" class="ecwd_current_link" value="' . $current_date_link . '" />';
            $html .= '</div>';
            $html .= $this->cal_viewmode();
            if (!in_array($this->displaytype, array(
                "list",
                "mini-list",
                'day',
                'week'
            ))
            ) { // mini and full cal
                $html .= '<table class="ecwd_calendar_container ' . $this->displaytype . ' cal_' . $this->color . '" cellpadding="0" cellspacing="0" border="0">
                <tr>';
                // render week number on left
                if ($this->weeknumbers == 'left') {
                    $html .= '<td rowspan="2" class="week-number">&nbsp;</td>';
                }
                // render week number on right
                if ($this->weeknumbers == 'right') {
                    $html .= '<td rowspan="2" class="week-number">&nbsp;</td>';
                }
                $html .= '
</tr>
<tr>';
                if ($this->weeknames == 1) {
                    $weekdays = $this->weekdays; // full
                } else if ($this->weeknames == 3 || $this->displaytype == 'mini') {
                    $weekdays = $this->weekdayschar; // single char
                } else {
                    $weekdays = $this->abbrevweekdays; // 3 char
                }
                for ($i = 0; $i < count($weekdays); $i++) {
                    $di      = ($i + $this->weekstartday) % 7;
                    $weekday = $weekdays[$di];
                    if ($i == 0) {
                        $thisclass = 'normal-day-heading week-start';
                    } else {
                        $thisclass = 'normal-day-heading';
                    }
                    $html .= $this->calendar_cell(__($weekday, 'event-calendar-wd'), $thisclass); // calendar cells for full & mini
                }
                $html .= '
</tr>
';
            } else { // event list
                $html .= '<div class="ecwd_calendar_container ' . $this->displaytype . '">';
                if ($this->displaytype == 'list') {
                    if ($this->listtitle != '') {
                        $html .= '<h2 class="list-title">' . $this->listtitle . '</h2>';
                    }
                } elseif ($this->displaytype == 'day') {
                    //$this->day = ;
                } elseif ($this->displaytype == 'week') {

                }
                //$html .= '</div>';
            }
            return $html;
        }

        // calendar cells for mini and full displaytypes
        public function cal_previous () {
            global $cal_ID;
            $previous  = $this->calcDate($this->year . '-' . $this->month, '-1', 'month');
            $dateparam = $previous['year'] . '-' . $previous['month'];
            $prev_date = '';
            if ($this->displaytype == 'day') {
                $previous  = $this->calcDate($this->year . '-' . $this->month . '-' . $this->day, '-1', 'day');
                $dateparam = $previous['year'] . '-' . $previous['month'] . '-' . $previous['day'];
                $prev_date = $previous['day'];
            } elseif ($this->displaytype == '4day') {
                $previous  = $this->calcDate($this->year . '-' . $this->month . '-' . $this->day, '-4', 'day');
                $dateparam = $previous['year'] . '-' . $previous['month'] . '-' . $previous['day'];
                $prev_date = $previous['day'];
            } elseif ($this->displaytype == 'week') {
                $previous  = $this->calcDate($this->year . '-' . $this->month . '-' . $this->day, '-1', 'week');
                $dateparam = $previous['year'] . '-' . $previous['month'] . '-' . $previous['day'];
                $prev_date = $previous['day'];
            }
            $this->previousmonth = ($this->getMonth($previous['year'] . '-' . $previous['month'], $this->monthnames));
            if ($this->widget == 1) {
                $previoustext = '<span><</span>';
            } else {
                $previoustext = '<span><</span><span class="month-name"> ' . __($this->previousmonth, 'event-calendar-wd') . ' ' . $prev_date . '</span>';
            }
            $html = '<div class="previous"><a href="?date=' . $dateparam . '&t=' . $this->displaytype . '" rel="noindex, nofollow">' . $previoustext . '</a></div>';
            return $html;
        }

        // calendar footer for all displaytypes
        public function calcDate ($startdate, $increment, $unit) {
            if ($unit == 'month') {
                $startdate = date('Y-m-15', strtotime($startdate));
            }
            $date    = date("Y-n-j", strtotime(date("Y-n-j", strtotime($startdate)) . " " . $increment . " " . $unit));
            $date    = explode('-', $date);
            $newdate = array(
                'year'  => $date[0],
                'month' => $date[1],
                'day'   => $date[2]
            );
            return $newdate;
        }

        public function getWeekFirstDayDate($date) {

            if (strtotime($date) == strtotime(date('Y-m-d'))) {
                if ($this->weekstartday == 0) {
                    return date('Y-n-j', strtotime(strtolower($this->weekdays[$this->weekstartday]) . " previous week", strtotime($date)));
                }

                return date('Y-n-j', strtotime(strtolower($this->weekdays[$this->weekstartday]) . " this week", strtotime($date)));
            } else {
                $first_monday_of_month = strtotime('First ' . $this->weekdays[$this->weekstartday] . ' of ' . date('F o', strtotime($date)));
                if (date('Y-n-j', $first_monday_of_month) == '1970-1-1' || date('Y-n-j', $first_monday_of_month) == '1969-12-31') {
                    $first_monday_of_month = strtotime(date('Y-m-d', strtotime(date('F o', strtotime($date)) . ' first ' . $this->weekdays[$this->weekstartday])));
                }
                if (date('j', $first_monday_of_month) > 1) {
                    $previous_monday = strtotime("-1 week", $first_monday_of_month);

                    return date('Y-n-j', $previous_monday);
                } else {
                    return date('Y-n-j', $first_monday_of_month);
                }
            }
        }


        public function getMonthDate ($date) {
            if(date('m',strtotime($date)) === date('m')){
                return date('Y-n-j');
            }
            if ($this->displaytype == 'week' && strtotime($date) !== strtotime(date('Y-m-d'))) {
                return date('Y-n-j', strtotime("+1 week", strtotime($date)));
            } elseif ($this->displaytype == '4day' && strtotime($date) !== strtotime(date('Y-m-d'))) {
                return date('Y-n-j', strtotime("+3 day", strtotime($date)));
            }
            return $date;
        }

        public function getDayDate ($date) {
            if (strtotime($date) == strtotime(date('Y-m-d'))) {
                return $date;
            } else {
                if ($this->displaytype == 'full' || $this->displaytype == 'month' || $this->displaytype == 'mini' || $this->displaytype == 'list') {
                    return date('Y-n-j', strtotime(date('Y-m-1'), strtotime($date)));
                } elseif ($this->displaytype == 'week') {
                    return date('Y-n-j', strtotime(strtolower($this->weekdays[$this->weekstartday]) . " this week", strtotime($date)));
                } else {
                    return $date;
                }
            }
        }

        // add an event to the events array
        public function getMonth ($date, $type = 1) {
            $date       = date('Y-n-j', strtotime($date));
            $date_parts = explode('-', $date);
            $jd         = cal_to_jd(CAL_GREGORIAN, $date_parts[1], $date_parts[2], $date_parts[0]);
            return __(jdmonthname($jd, $type));
        }

        // pulls everything together and returns the calendar for all displaytypes
        public function cal_next () {
            global $cal_ID;
            $html = '';
            $next      = $this->calcDate($this->year . '-' . $this->month . '-1', '+ 1', 'month');
            $next_date = '';
            $dateparam = $next['year'] . '-' . $next['month'] . '-' . $next['day'];
            if ($this->displaytype == 'day') {
                $next      = $this->calcDate($this->year . '-' . $this->month . '-' . $this->day, '+1', 'day');
                $dateparam = $next['year'] . '-' . $next['month'] . '-' . $next['day'];
                $next_date = $next['day'];
            } elseif ($this->displaytype == '4day') {
                $next      = $this->calcDate($this->year . '-' . $this->month . '-' . $this->day, '+4', 'day');
                $dateparam = $next['year'] . '-' . $next['month'] . '-' . $next['day'];
                $next_date = $next['day'];
            } elseif ($this->displaytype == 'week') {
                $next      = $this->calcDate($this->year . '-' . $this->month . '-' . $this->day, '+1', 'week');
                $dateparam = $next['year'] . '-' . $next['month'] . '-' . $next['day'];
                $next_date = $next['day'];
            }
            $this->nextmonth = ($this->getMonth($next['year'] . '-' . $next['month'], $this->monthnames));
            if ($this->widget == 1) {
                $nexttext = '<span>></span>';
            } else {
                $divider  = $this->monthselector === false ? '&nbsp;|&nbsp;' : '';
                $nexttext = '<span class="month-name">' . $next_date . ' ' . $divider . __($this->nextmonth, 'event-calendar-wd') . ' </span><span>></span>';
            }
            $html = '<div class="next"><a href="?date=' . $dateparam . '&t=' . $this->displaytype . '" rel="noindex, nofollow">' . $nexttext . '</a></div>';
            return $html;
        }

        //--------------------------------------------------------------------------------------------
        // Helper Functions
        //--------------------------------------------------------------------------------------------
        //
        public function cal_viewmode () {
            $monthType = ($this->widget == 1) ? 'mini' : 'full';
            if ($this->widget == 1) {
                $html = ' <div class="ecwd_calendar_view_dropdown cal_tabs_' . $this->color . '" ><a class="ecwd-dropdown-toggle" data-toggle="ecwd-dropdown">';
                $html .= $this->displaysName[$this->displaytype]['name'];
                $html .= '</a>';
                $widgetDisplays = array(
                    'mini',
                    'list',
                    'week',
                    'day'
                );
                $html .= '<div class="ecwd-dropdown-menu">';
                foreach ($widgetDisplays as $display) {
                    if ($display !== 'none' && isset($this->displaysName[$display])) {
                        $html .= '<div class="type">' . '<a href="?date=' . $this->displaysName[$display]['date'] . '&t=' . $display . '" rel="noindex, nofollow">' . $this->displaysName[$display]['name'] . '</a>' . '</div>';
                    }
                }
                $html .= '</div></div>';
            } else {
                $html = ' <div class="ecwd_calendar_view_tabs cal_tabs_' . $this->color . '" >';
                $html .= '<div class="filter-container">
                        <div class="filter-arrow-left">&laquo;</div>
                        <div class="filter-arrow-right">&raquo;</div>';
                if (count($this->displays) > 1) {
                    $html .= '<ul>';
                    foreach ($this->displays as $display) {
                        
                        if ($display !== 'none' && isset($this->displaysName[$display])) {
                            $html .= '<li class="type';
                            if ($this->displaytype == $display) {
                                $html .= ' ecwd-selected-mode';
                                $html .= '">' . '<a>' . $this->displaysName[$display]['name'] . '</a>' . '</li>';
                            } else {
                                $html .= '">' . '<a href="?date=' . $this->displaysName[$display]['date'] . '&t=' . $display . '" rel="noindex, nofollow">' . $this->displaysName[$display]['name'] . '</a>' . '</li>';
                            }
                        }
                    }
                    $html .= '</ul>';
                }
                $html .= '</div>';
                if ($this->event_search == 'yes') {
                    $svalue = '';
                    if (isset($this->search_params['query']) && $this->search_params['query']) {
                        $svalue = $this->search_params['query'];
                    }
                    $html .= '<div class="ecwd-search">
                        <input class="ecwd-search" name="search" type="text" value="' . $svalue . '">' . '<button class="btn btn-default ecwd-search-submit"><span class="glyphicon glyphicon-search"></span><i class="fa fa-search"></i></button>
                </div>';
                }
                $html .= '</div>';
            }
            return $html;
        }

        // returns month from passed date (string), $type: 0=number,1=full(January,February,etc),2=abbreviation(Jan,Feb,etc)
        public function calendar_cell ($day, $class, $date = '', $style = '') {
            global $cal_ID, $ecwd_options;
            $addclass = '';
            if (strpos($class, 'normal-day-heading') !== false) {
                $tag = 'th';
            } else {
                $tag = 'td';
            }

            $month_view_events_count = (isset($ecwd_options['event_count_per_cell'])) ? intval($ecwd_options['event_count_per_cell']) : 3;

            if ($day != '') {
                $bgColor    = '';
                $cellevents = array();
                if (!$date && is_int($day)) {
                    $date = $this->year . '-' . $this->month . '-' . $day;
                }
                if (isset($this->events[strtotime($date)])) {
                    $all_events = array_reverse($this->events[strtotime($date)]);
                } else {
                    $all_events = array();
                }
                if (is_array($all_events) && $date) { // events array populated from addEvent()
                    foreach ($all_events as $event) {
                        //echo $event['from'].'------'.$event['title'].'<br />';
                        $color         = $event['color'];
                        $title         = $event['title'];
                        $link = ($event['link'] == "" && isset($event['metas']['ecwd_event_url'][0])) ? $event['metas']['ecwd_event_url'][0] :  $event['link'];
                        $eventdate     = $event['date'];
                        $from          = strtotime($event['from']);
                        $to            = strtotime($event['to']);
                        $starttime     = $event['starttime'];
                        $endtime       = $event['endtime'];
                        $details       = $event['details'];
                        $location      = $event['location'];
                        $venue         = $event['venue'];
                        $organizers    = $event['organizers'];
                        $terms         = $event['terms'];
                        $all_day_event = $event['all_day_event'];
                        $permalink     = $event['permalink'];
                        $image         = $event['image'];
                        $latlong       = $event['latlong'];
                        $id            = $event['id'];
                        if ($date == date('Y-n-j', strtotime($eventdate))) {
                            $cellevents[] = array(
                                'color'         => $color,
                                'title'         => $title,
                                'link'          => $link,
                                'date'          => $eventdate,
                                'from'          => $from,
                                'to'            => $to,
                                'id'            => $id,
                                'starttime'     => $starttime,
                                'endtime'       => $endtime,
                                'details'       => $details,
                                'location'      => $location,
                                'all_day_event' => $all_day_event,
                                'latlong'       => $latlong,
                                'terms'         => $terms,
                                'venue'         => $venue,
                                'organizers'    => $organizers,
                                'permalink'     => $permalink,
                                'image'         => $image,
                            );
                        }
                    }
                }

                // sort by starttime for the cell
                if (count($cellevents) > 0) {
                    $cellevents = $this->arraySort($cellevents, 'starttime');
                }
                if ($date == date('Y-n-j')) {
                    $addclass .= ' current-day'; // if processing the current day
                }
                if (in_array($this->getDay($date), array(
                    'Saturday',
                    'Sunday'
                ))) {
                    $addclass .= ' weekend'; // if a weekend
                }
                if ($this->getDay($date, 0) == $this->weekstartday) {
                    $addclass .= ' week-start'; // if the weekstartday
                }
                if ($this->arraySearch($date, $cellevents) !== false) {
                    $addclass .= ' has-events'; // if the date has events
                } else if (strpos($class, 'normal-day-heading') === false) {
                    $addclass .= ' no-events'; // no events
                }
                $combinedclass = $class . $addclass; // combine all classes
                $html = '<' . $tag . ' class="' . $combinedclass . '" data-date="' . $date . '"';
                // check/set links for mini calendar
                if ($this->minilinkbase != '' && $this->displaytype == 'mini') {
                    if ($this->linktarget == '_blank') {
                        $html .= ' onClick="window.open(\'' . $this->minilinkbase . '?date=' . $date . '\', \'_blank\')"';
                    } else {
                        $html .= ' onClick="' . $this->linktarget . '.location=\'' . $this->minilinkbase . '?date=' . $date . '\'"';
                    }
                }
            }
            if ($style) {
                $html .= ' style="' . $style . '"';
            }
            if ($this->displaytype == 'mini') {
                $content = $day;
            } elseif ($this->widget && $this->displaytype != 'mini') {
                $content = '<div class="ecwd-week-date">' . date('d', strtotime($date)) . '</div>';
            } elseif (($this->displaytype == 'week' || $this->displaytype == 'day' || $this->displaytype == '4day') && !$this->widget) {
                //here
                $event_date = (($this->list_date_format !== 'd.F.l') ? date($this->list_date_format, strtotime($date)) : (date('d', strtotime($date)) . '.' . __(date('F', strtotime($date)), 'event-calendar-wd') . '.' . __(date('l', strtotime($date)), 'event-calendar-wd')));
                if ($this->list_date_format !== 'd.F.l') {
                    $month_name = date('F', strtotime($date));
                    $event_date = str_replace($month_name, __($month_name, 'event-calendar-wd'), $event_date);
                }
                $content = '<div class="ecwd-week-date resp" itemprop="startDate" content="' . date('Y-m-d', strtotime($date)) . '">' . __(date('d', strtotime($date)), 'event-calendar-wd') . '</div><div class="ecwd-week-date web"">' . $event_date . '</div>';
            } else {
                $content = '<div class="day-number">' . $day . '</div>'; // day number or prev/next month cell content
            }
            if (count($cellevents) > 0) {
                $content .= '<ul class="events">';
                $eventcontent = '';
                foreach ($cellevents as $i => $cellevent) {
										$all_day_event = (isset($cellevent['all_day_event']) && $cellevent['all_day_event'] == 1) ? true : false;
                    $li_class = '';
                    if ($i > ($month_view_events_count - 1) && $this->displaytype !== 'mini') {
                        $li_class = 'inmore';
                    }
                    //var_dump($cellevent);
                    $eventcontent .= '<li itemscope itemtype="http://schema.org/Event" style="';
                    if (is_array($cellevent['terms'])) {
                        if (isset($cellevent['color']) && $cellevent['color'] !== '') {
                            $eventcontent .= 'background-color: ' . $cellevent['color'] . '; ';
                        }
                    }
                    $eventcontent .= '" class="' . $li_class . ' ' . $i;
                    if (isset($cellevent['terms']['ecwd_taxonomy_image']) && $cellevent['terms']['ecwd_taxonomy_image'] == '') {
                        $eventcontent .= ' no-cat-image ';
                    }
                    $eventcontent .= '">';
                    if ($this->displaytype != 'mini') {
                        if (isset($cellevent['terms']['ecwd_taxonomy_image']) && $this->displaytype != 'mini') {
                            if ($cellevent['terms']['ecwd_taxonomy_image'] != '') {
                                $eventcontent .= '<img  itemprop="image" class="ecwd-event-cat-icon" src="' . $cellevent['terms']['ecwd_taxonomy_image'] . '" />';
                            }/* elseif (isset($cellevent['color'])){
                          $eventcontent .= ' <span class="event-metalabel" style="background:' . $cellevent['color'] . '"></span>';
                          } */
                        }
                        if ($this->event_popup == "yes" && get_post_meta($event['id'], '', true)) {
                            $date_data = 'start-date-data="' . date("Y-m-d", strtotime($cellevent['date'])) . '"';
                            $date_data .= ' end-date-data="'.date("Y-m-d", $cellevent['to']).'"';
                            $eventcontent .= '<span ' . $date_data . ' class="ecwd_open_event_popup event' . $cellevent['id'] . '" itemprop="name">' . $cellevent['title'] . '</span>';
                        } elseif ($cellevent['permalink']) {
                            $eventcontent .= '<a href="' . $cellevent['permalink'] . '" ' . $this->eventlinktarget . '><span itemprop="name">' . $cellevent['title'] . '</span></a>';
                        } else {
                            $eventcontent .= '<span itemprop="name">' . $cellevent['title'] . '</span>';
                        }
                    }
                    $this->seted_days[$cellevent['id']] = $date;
                    $ecwd_settings_general              = get_option("ecwd_settings_events");
                    $show_events_detail_hover           = true;
                    if ($ecwd_settings_general && isset($ecwd_settings_general["show_events_detail"])) {
                        $show_events_detail = $ecwd_settings_general["show_events_detail"];
                        if (intval($show_events_detail) === 0) {
                            $show_events_detail_hover = false;
                        }
                    }
                    if ($show_events_detail_hover) {
                        echo "<input type='hidden' class='show_event_hover_info'>";
                    }
                    $eventcontent .= '<div class="event-details-container"><div class="ecwd-event-arrow"></div><div class="event-details">';
                    if ($cellevent['title'] != '') {
                        $eventcontent .= '<div class="event-details-title">';
                        if (isset($cellevent['color']) && $cellevent['color'] !== '') {
                            $eventcontent .= ' <span class="event-metalabel" style="background:' . $cellevent['color'] . '"></span>
                                         <h5 style="color:' . $cellevent['color'] . '" itemprop="name">';
                            if ($this->event_popup == "yes" && get_post_meta($event['id'], '', true)) {
                                $date_data = 'start-date-data="' . date("Y-m-d", strtotime($cellevent['date'])) . '"';
                                $date_data .= ' end-date-data="' . date("Y-m-d", $cellevent['to']) . '"';
                                $eventcontent .= '<span ' . $date_data . ' class="ecwd_open_event_popup event' . $cellevent['id'] . ' "itemprop="url">' . $cellevent['title'] . '</span>';
                            } else if (isset($cellevent['permalink']) && $cellevent['permalink'] !== '') {
                                $eventcontent .= '<a href="' . $cellevent['permalink'] . '" ' . $this->eventlinktarget . ' style="color: ' . $cellevent['color'] . ' "itemprop="url">' . $cellevent['title'] . '</a>';
                            } else {
                                $eventcontent .= $cellevent['title'];
                            }
                            $eventcontent .= '</h5>
                                         ';
                        } else {
                            $eventcontent .= ' <span class="event-metalabel"></span>
                                         <h5 itemprop="name">';
                            if ($this->event_popup == "yes" && get_post_meta($event['id'], '', true)) {
                                $date_data = 'start-date-data="' . date("Y-m-d", strtotime($cellevent['date'])) . '"';
                                $date_data .= ' end-date-data="' . date("Y-m-d", $cellevent['to']) . '"';
                                $eventcontent .= '<span ' . $date_data . ' class="ecwd_open_event_popup event' . $cellevent['id'] . '">' . $cellevent['title'] . '</span>';
                            } else if (isset($cellevent['permalink']) && $cellevent['permalink'] !== '') {
                                $eventcontent .= '<a href="' . $cellevent['permalink'] . '" ' . $this->eventlinktarget . ' itemprop="url">' . $cellevent['title'] . '</a>';
                            } else {
                                $eventcontent .= $cellevent['title'];
                            }
                            $eventcontent .= '</h5>';
                        }
                        $eventcontent .= ' </div>';
                    }
                    if ($all_day_event) {
                        $eventtime = '<div class="ecwd-time"><span class="metainfo"  itemprop="startDate" content="' . date('Y-m-d', $cellevent['from']) . 'T' . date('H:i', strtotime($cellevent['starttime'])) . '"> ' . __('All day', 'event-calendar-wd');
                        $eventtime .= '</span>';
                        $eventtime .= '</div>';
                        $eventcontent .= $eventtime;
                    } else {
                        if ($cellevent['starttime'] != '') { // event details - hidden until clicked (full)
                            $eventtime = '<div class="ecwd-time"><span class="metainfo"  itemprop="startDate" content="' . date('Y-m-d', $cellevent['from']) . 'T' . date('H:i', strtotime($cellevent['starttime'])) . '"> ' . date($this->timeformat, strtotime($cellevent['starttime']));
                            if ($cellevent['endtime'] != '' && strtotime($cellevent['endtime']) !== strtotime($cellevent['starttime'])) {
                                $eventtime .= "-" . date($this->timeformat, strtotime($cellevent['endtime']));
                            }
                            $eventtime .= '</span>';
                            $eventtime .= '</div>';
                            $eventcontent .= $eventtime;
                        }
                    }
                    if ($cellevent['from'] != '') { // event details - hidden until clicked (full)
                        $eventdate = '<div class="ecwd-date"><span class="metainfo"> ' . date($this->dateformat, strtotime($cellevent['date']));
                        if ($cellevent['to'] != '' && $cellevent['to'] != $cellevent['from']) {
                            $eventdate .= "-" . date($this->dateformat, $cellevent['to']);
                        }
                        $eventdate .= '</span>';
                        $eventdate .= '<span class="ecwd_hidden"  itemprop="endDate" content="' . date('Y-m-d', $cellevent['to']) . 'T' . date('H:i', strtotime($cellevent['endtime'])) . '">'.'</span>';
												$eventdate .= ECWD::get_time_zone( $all_day_event );
                        $eventdate .= '</div>';
                        $eventcontent .= $eventdate;
                    }
                    if (isset($cellevent['organizers']) && count($cellevent['organizers']) > 0) {
                        $eventcontent .= '<div class="event-organizers">';
                        foreach ($cellevent['organizers'] as $organizer) {
                            $eventcontent .= '<div class="event-organizer" itemprop="organizer"> <a href="' . $organizer['permalink'] . '">' . $organizer['name'] . '</a></div>';
                        }
                        $eventcontent .= '</div>';
                    }

                    if ($cellevent['location'] !== '') {
                        $eventcontent .= '<div class="event-venue" itemprop="location" itemscope itemtype="http://schema.org/Place">';
                        if (isset($cellevent['venue']['name'])) {
                            $eventcontent .= '<div class="ecwd-venue" ><span itemprop="name"><a href="' . $cellevent['venue']['permalink'] . '">' . $cellevent['venue']['name'] . '</a></span></div>';
                        }
                        if (isset($cellevent['location']) && $cellevent['location'] != '') {
                            $eventcontent .= '<span class="ecwd_hidden" itemprop="name">' . $cellevent['location'] . '</span>';
                            $eventcontent .= '<div class="ecwd-location" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"><span>' . $cellevent['location'] . '</span></div>';
                        }
                        $eventcontent .= '</div>';
                    }
                    if (isset($cellevent['link']) && $cellevent['link'] != '') {
                        $eventcontent .= '<div  class="ecwd-link"> <a href="' . $cellevent['link'] . '"  itemprop="url">' . $cellevent['link'] . '</a></div>';
                    }
                    $cellevent['details'] = $cellevent['details'] == '' ? $this->eventemptytext : $cellevent['details'];

                    if (isset($cellevent['link']) && $cellevent['link'] != '') {
                        $eventcontent .= '<div  class="ecwd-link" itemprop="url"> <a href="' . $cellevent['link'] . '"  itemprop="url">' . $cellevent['link'] . '</a></div>';
                    }else{
                        $eventcontent .= '<span class="hidden" itemprop="url">' . get_post_permalink($cellevent['id']) . '</span>';
                    }

                    $image                = $this->getAndReplaceFirstImage($cellevent['details']);
                    $ecwd_has_thumb = has_post_thumbnail($cellevent['id']);
                    if ($cellevent['details'] != '' || $ecwd_has_thumb || $cellevent['image']) {
                        $eventcontent .= '<div  class="ecwd-detalis" itemprop="description">';
                        if ($ecwd_has_thumb || $cellevent['image']) {
                            if ($ecwd_has_thumb) {
                                $eventcontent .= get_the_post_thumbnail($cellevent['id'], 'thumbnail',array("itemprop"=>"image"));
                            } else {
                                $eventcontent .= '<img itemprop="image" src="' . $cellevent['image'] . '" />';
                            }
                        } elseif ($image['image'] != null) {
                            $eventcontent .= '<img itemprop="image" src="' . $image['image'] . '" />';
                            $cellevent['details'] = $image['content'];
                        }
                        $desc = $cellevent['details'] ? $cellevent['details'] : $this->eventemptytext;
                        $desc = apply_filters('format_content', $desc);
                        $eventcontent .= $desc . '</div>';
                    }
                    $eventcontent .= '</div><div class="ecwd-event-arrow-right"></div>';
                    $eventcontent .= '</li> ';
                    //                } else {
                    //                    //$eventcontent .= $cellevent['title'];
                    //                }
                }
                $content .= apply_filters('format_content', $eventcontent);
                if ($i > ($month_view_events_count - 1) && $this->displaytype !== 'mini') {
                    $content .= '<li class="ecwd-calendar-more-event">
                    <span class="ecwd-calendar-event-add">
                         <span class="more_events_link">' . __('More events', 'event-calendar-wd') . '</span>
                    </span>
                    <div class="ecwd-more-events-container">                                                                       
                        <ul class="events more_events">' . $eventcontent . '</ul>          
                        <input type="hidden" class="ecwd-more-event-title" value="' . date($this->dateformat, strtotime($date)) . '" />
                                  </div>
                 </li>';
                }
                $content .= '</ul>';
                if ($this->displaytype == 'week' || $this->displaytype == 'day' || $this->displaytype == '4day') {
                    if (count($cellevents) > 0) {
                        $html = '';
                        if (!$this->widget) {
                            $event_date = (($this->list_date_format !== 'd.F.l') ? date($this->list_date_format, strtotime($date)) : (date('d', strtotime($date)) . '.' . __(date('F', strtotime($date)), 'event-calendar-wd') . '.' . __(date('l', strtotime($date)), 'event-calendar-wd')));
                            if ($this->list_date_format !== 'd.F.l') {
                                $month_name = date('F', strtotime($date));
                                $event_date = str_replace($month_name, __($month_name, 'event-calendar-wd'), $event_date);
                            }
                            $html = '<div class="ecwd-week-date resp"  style="background:#' . $this->eventlistbg . '" itemprop="startDate" content="' . date('Y-m-d', strtotime($date)) . 'T' . date('H:i', strtotime($date)) . '">' . date('d', strtotime($date)) . '</div><div class="ecwd-week-date web"">' . $event_date . '</div>';
                        } else {
                            $html = '<div class="ecwd-week-date">' . date('d', strtotime($date)) . '</div>';
                        }
                        $html .= '<div class="event-main-content">';
                        foreach ($cellevents as $cellevent) {
												    $all_day_event = (isset($cellevent['all_day_event']) && $cellevent['all_day_event'] == 1) ? true : false;
                            $image_class          = '';
                            $cellevent['details'] = $cellevent['details'] == '' ? $this->eventemptytext : $cellevent['details'];
                            $image                = $this->getAndReplaceFirstImage($cellevent['details']);
                            $ecwd_has_thumb = has_post_thumbnail($cellevent['id']);
                            if (!$ecwd_has_thumb && $cellevent['image'] == "") {
                                $image_class = "ecwd-no-image";
                            }
                            $html .= '<div class="event-container ' . $image_class . '">';
                            if (!$this->widget) {
                                $html .= '<div class="ecwd-list-img"><div class="ecwd-list-img-container">';
                                $html .= '<div class="ecwd-img">';
                                $post_thumbnail_id = get_post_thumbnail_id( $cellevent['id'] );
                                if ($ecwd_has_thumb || $cellevent['image']) {
                                    if ($ecwd_has_thumb) {
                                        $html .= get_the_post_thumbnail($cellevent['id'],'thumb',array("itemprop"=>"image"));
                                    } else {
                                        $html .= '<img itemprop="image" src="' . $cellevent['image'] . '" />';
                                    }
                                } elseif ($image['image'] != null) {
                                    $html .= '<img itemprop="image" src="' . $image['image'] . '" />';
                                    $cellevent['details'] = $image['content'];
                                }
                                $html .= '</div></div></div>';
                            }
                            
                            if ($this->event_popup == "yes" && get_post_meta($cellevent['id'], '', true)) {
                                $date_data = 'start-date-data="' . date("Y-m-d", strtotime($cellevent['date'])) . '"';
                                $date_data .= ' end-date-data="'.date("Y-m-d", $cellevent['to']).'"';
                                $html .= '<h3 class="event-title" itemprop="name"><span '.$date_data.' class="ecwd_open_event_popup event' . $cellevent['id'] . '"';
                                if (isset($cellevent['color']) && $cellevent['color'] !== '') {
                                    $html .= ' style="color:' . $cellevent['color'] . ';"';
                                }
                                $html .= '>' . $cellevent['title'] . '</span></h3>';
                            } else if ($cellevent['permalink'] != '') {
                                $html .= '<h3 class="event-title" itemprop="name"> <a href="' . $cellevent['permalink'] . '" ' . $this->eventlinktarget;
                                if (isset($cellevent['color']) && $cellevent['color'] !== '') {
                                    $html .= ' style="color:' . $cellevent['color'] . ';"';
                                }
                                $html .= '>' . $cellevent['title'] . '</a></h3>';
                            } else {
                                $html .= '<h3 class="event-title" itemprop="name"';
                                if (isset($cellevent['color']) && $cellevent['color'] !== '') {
                                    $html .= 'style="color:' . $cellevent['color'] . ';"';
                                }
                                $html .= '>' . $cellevent['title'] . '</h3>';
                            }
                            $html .= '<div class="ecwd-list-date-cont">';
                            if ($all_day_event) {
                                $eventtime = '<div class="ecwd-time">'.
                                  '<span class="metainfo event-time" itemprop="startDate" content="' . date('Y-m-d', $cellevent['from']) . 'T' . date('H:i', strtotime($cellevent['starttime'])) . '"> ' . __('All day', 'event-calendar-wd'). '</span>'.
                                  '<span class="ecwd_hidden" itemprop="endDate" content="' . date('Y-m-d', $cellevent['to']) . 'T' . date('H:i', strtotime($cellevent['endtime'])) . '"></span>';
                                $eventtime .= '</div>';
                                $html .= $eventtime;
                            } else {
                                if ($cellevent['starttime'] != '') { // event details - hidden until clicked (full)
                                    $eventtime = '<div class="ecwd-time"><span class="metainfo event-time" itemprop="startDate" content="' . date('Y-m-d', $cellevent['from']) . 'T' . date('H:i', strtotime($cellevent['starttime'])) . '"> ' . date($this->timeformat, strtotime($cellevent['starttime']));
                                    if ($cellevent['endtime'] != '' && $cellevent['endtime'] != $cellevent['starttime']) {
                                        $eventtime .= "-" . date($this->timeformat, strtotime($cellevent['endtime']));
                                    }
                                    $eventtime .= '</span>';
                                    $eventtime .= '</div>';
                                    $html .= $eventtime;
                                }
                            }
                            if ($cellevent['from'] != '') {
                                $eventdate = '<div class="ecwd-date"><span class="metainfo" itemprop="startDate" content="' . date('Y-m-d', $cellevent['from']) . 'T' . date('H:i', strtotime($cellevent['starttime'])) . '"> ' . date($this->dateformat, strtotime($cellevent['date']));
                                if ($cellevent['to'] != '' && $cellevent['to'] != $cellevent['from']) {
                                    $eventdate .= "-" . date($this->dateformat, $cellevent['to']);
                                }
                                $eventdate .= '</span>';
                                $eventdate .= '<span class="ecwd_hidden" itemprop="endDate" content="' . date('Y-m-d', $cellevent['to']) . 'T' . date('H:i', strtotime($cellevent['endtime'])) . '"></span>';
																$eventdate .= ECWD::get_time_zone( $all_day_event );
                                $eventdate .= '</div>';
                                $html .= $eventdate;
                            }
                            $html .= '</div>';
                            if (isset($cellevent['organizers']) && count($cellevent['organizers']) > 0) {
                                $html .= '<div class="event-organizers">';
                                foreach ($cellevent['organizers'] as $organizer) {
                                    $html .= '<div class="event-organizer" itemprop="organizer"> <a href="' . $organizer['permalink'] . '">' . $organizer['name'] . '</a></div>';
                                }
                                $html .= '</div>';
                            }
                            if ($cellevent['location'] !== '') {
                                $html .= '<div class="event-venue" itemprop="location" itemscope itemtype="http://schema.org/Place">';
                                if (isset($cellevent['venue']['name'])) {
                                    $html .= '<div class="ecwd-venue" ><span itemprop="name"><a href="' . $cellevent['venue']['permalink'] . '">' . $cellevent['venue']['name'] . '</a></span></div>';
                                }
                                if (isset($cellevent['location']) && $cellevent['location'] != '') {
                                    $html .= '<span class="ecwd_hidden" itemprop="name">' . $cellevent['location'] . '</span>';
                                    $html .= '<div class="ecwd-location" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"><span>' . $cellevent['location'] . '</span></div>';
                                }
                                $html .= '</div>';
                            }

                            if (isset($cellevent['link']) && $cellevent['link'] != '') {
                                $html .= '<div  class="ecwd-link" itemprop="url"> <a href="' . $cellevent['link'] . '"  itemprop="url">' . $cellevent['link'] . '</a></div>';
                            }else{
                                $html .= '<span class="hidden" itemprop="url">' . get_post_permalink($cellevent['id']) . '</span>';
                            }
                            $desc = $cellevent['details'] ? $cellevent['details'] : $this->eventemptytext;
                            $desc = apply_filters('format_content', $desc);
                            $html .= '<div class="event-content" itemprop="description">' . $desc . '</div></div>';
                        }
                        $html .= '</div>';
                        return $html;
                    }
                }
            } else {
                if ($this->displaytype == 'week' || $this->displaytype == 'day' || $this->displaytype == '4day') {
                    $content .= '<div class="event-main-content no-events">' . __('No events', 'event-calendar-wd') . '</div>';
                }
            }
            $html .= '>' . $content . '</' . $tag . '>';
            return $html;
        }

        public function arraySort ($a, $subkey) {
            foreach ($a as $k => $v) {
                $b[$k] = strtolower($v[$subkey]);
            }
            asort($b);
            foreach ($b as $key => $val) {
                $c[] = $a[$key];
            }
            return $c;
        }

        // add/subtract day,week,month,days from startdate
        public function getDay ($date, $type = 1) {
            $date       = date('Y-n-j', strtotime($date));
            $date_parts = explode('-', $date);
            $jd         = cal_to_jd(CAL_GREGORIAN, $date_parts[1], $date_parts[2], $date_parts[0]);
            return jddayofweek($jd, $type);
        }

        // recursive array search returns the key of occurance (int) or false if not found
        public function arraySearch ($needle, $haystack, $index = null) {
            $aIt = new RecursiveArrayIterator($haystack);
            $it  = new RecursiveIteratorIterator($aIt);
            while ($it->valid()) {
                if (((isset($index) AND ($it->key() == $index)) OR (!isset($index))) AND ($it->current() == $needle)) {
                    return $aIt->key();
                }
                $it->next();
            }
            return false;
        }

        public function getKey ($array, $member, $value) {
            foreach ($array as $k => $v) {
                if ($v->$member == $value) {
                    return $k;
                }
            }
            return false;
        }

        //return current week start and end dates
        public function rangeWeek ($datestr) {
            date_default_timezone_set(date_default_timezone_get());
            $res['start'] = date("Y-m-d", strtotime($datestr));
            $res['end']   = date("Y-m-d", strtotime("+6 day", strtotime($datestr)));
            return $res;
        }

        public function range4Days ($date) {
            date_default_timezone_set(date_default_timezone_get());
            $res['start'] = date("Y-m-d", strtotime($date));
            $res['end']   = date("Y-m-d", strtotime("+3 day", strtotime($date)));
            return $res;
        }

        public function calendar_foot () {
            if (in_array($this->displaytype, array(
                'full',
                'mini'
            ))) {
                $html = '</table>';
            } else {
                $html = '</div>';
            }
            return $html;
        }

        // Removes tabs, line breaks, vertical tabs, null-byte. Everything but a regular space.
        public function stripWhitespace ($c) {
            $c = str_replace(array(
                "\n",
                "\r",
                "\t",
                "\o",
                "\xOB"
            ), '', $c);
            return trim($c);
        }

        // sorts an associative array by values of passed key
        public function hex2RGB ($hexStr, $returnAsString = false, $seperator = ',') {
            $hexStr   = preg_replace("/[^0-9A-Fa-f]/", '', $hexStr); // check hex string
            $rgbArray = array();
            if (strlen($hexStr) == 6) { // if a proper hex code e.g. #RRGGBB
                $colorVal          = hexdec($hexStr);
                $rgbArray['red']   = 0xFF & ($colorVal >> 0x10);
                $rgbArray['green'] = 0xFF & ($colorVal >> 0x8);
                $rgbArray['blue']  = 0xFF & $colorVal;
            } elseif (strlen($hexStr) == 3) { // if shorthand notation e.g #RGB
                $rgbArray['red']   = hexdec(str_repeat(substr($hexStr, 0, 1), 2));
                $rgbArray['green'] = hexdec(str_repeat(substr($hexStr, 1, 1), 2));
                $rgbArray['blue']  = hexdec(str_repeat(substr($hexStr, 2, 1), 2));
            } else {
                return false; // invalid hex color code
            }
            // returns the rgb string or the associative array
            return $returnAsString ? implode($seperator, $rgbArray) : $rgbArray;
        }

        public function getAndReplaceFirstImage ($content) {
            global $ecwd_options;
            $first_img = '';
            if ($ecwd_options) {
                if (!isset($ecwd_options["move_first_image"]) || intval($ecwd_options["move_first_image"]) === 0) {
                    return array(
                        'image'   => "",
                        'content' => $content
                    );
                }
            }
            ob_start();
            ob_end_clean();
            $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $content, $matches);
            if (isset($matches [1] [0])) {
                $first_img = $matches [1] [0];
            }
            if (empty($first_img)) { //Defines a default image
                return false;
            } else {
                //preg_replace('/<img[^>]+\>/i', '', $content);
                $content = $this->replaceFirstImage($content);
            }
            return array(
                'image'   => $first_img,
                'content' => $content
            );
        }

        public function replaceFirstImage ($content) {
            $content = preg_replace("/<img[^>]+\>/i", " ", $content, 1);
            return $content;
        }

        public function cal_days_in_month () {
            $date_str = $this->year . '-' . $this->month . '-01';
            $date     = date('t', strtotime($date_str));
            return intval($date);
        }

    }

    // end class