PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /var/softaculous/sitepad/editor/site-data/plugins/kkart-pro/js
Viewing File: /var/softaculous/sitepad/editor/site-data/plugins/kkart-pro/js/frontend.js
/* KKART http://kkart.com/ (c) Kkart Team */ // Lets start jQuery(document).ready(function(){ // Setup any sliders jQuery('.pagelayer-kkart_img_gallery').each(function(){ kkart_pl_product_slider(jQuery(this)); }); jQuery('.kkart-product-quantity').each(function(){ kkart_pl_product_quantity(jQuery(this)); }); jQuery('.kkart-item-remove-link').each(function(){ kkart_pl_cart_item_remove(jQuery(this)); }); jQuery('.kkart-items-update').each(function(){ kkart_pl_cart_update_quantity(jQuery(this)); }); jQuery('.pagelayer-kkart_archive_thumb').each(function(){ var jEle = jQuery(this); if(jEle.find('.kkart-thumbnail-gallery').length > 0){ kkart_thumbnail_img_slider(jEle); } }); jQuery('input[name^="shipping_method"]').on('change', function(){ kkart_shipping_form(jQuery(this)); }); jQuery('.pagelayer-kkart_checkout_form').each(function(){ var jEle = jQuery(this); jEle.find('.kkart-checkout-tab').each(function(){ kkart_checkout_tabs(jQuery(this)); }); }); jQuery('.kkart-address-holder').each(function(){ kkart_billing_form_handler(jQuery(this)); }); jQuery('.pagelayer-kkart_myaccount_tabs').each(function(){ kkart_myaccount_tabs(jQuery(this)); }); jQuery('.kkart-myaccount-address-holder').each(function(){ kkart_billing_address_reload(jQuery(this)); }); jQuery('.kkart-myaccount-order-holder').each(function(){ kkart_order_details_handler(jQuery(this)); }); jQuery('.pagelayer-kkart_archive_crt_btn').each(function(){ kkart_archive_crt_btn_holder(jQuery(this)); }); jQuery('.kkart-login-form-holder').each(function(){ kkart_login_form_handler(jQuery(this)); }); jQuery('.kkart-form-coupon-toggle').each( function() { kkart_coupon_toggle( jQuery(this) ); }); jQuery('.pagelayer-kkart_menu_cart').each(function(){ kkart_menu_cart(jQuery(this)); }); jQuery('.pagelayer-kkart_products').each(function(){ kkart_products_handler(jQuery(this)); }); jQuery('.kkart-cart-item-price').each(function(){ kkart_cart_shipping_handling(jQuery(this)); }); }); function kkart_cart_shipping_handling(jEle){ // TODO: load this on open modal var cartModal =jEle.find('.kkart-cart-modal'); var addressHolder = cartModal.find('.kkart-address-holder'); var addressesHolder = addressHolder.find('.kkart-addresses-holder'); jEle.on('click', '.kkart-address-selection',function(){ if(addressHolder.attr('address-loaded') != '1'){ kkart_billing_address_reload(jEle); } addressHolder.attr('address-loaded', 1); cartModal.parent().addClass('kkart-show'); addressesHolder.css('display', ''); }) cartModal.on('click', '.kkart-address-form-adder', function(e){ cartModal.find('.kkart-address-holder').removeClass('kkart-address-done'); addressesHolder.hide(); }); cartModal.on('click','.kkart-close-address', function(){ cartModal.parent().removeClass('kkart-show'); addressHolder.addClass('kkart-address-done'); }) jEle.on('click', '.kkart-address-form-headding',function(){ if(addressHolder.attr('address-loaded') != '1'){ kkart_billing_address_reload(jEle); } addressHolder.removeClass('kkart-address-done'); cartModal.parent().addClass('kkart-show'); addressesHolder.hide(); }) } // products handler function kkart_products_handler(jEle){ var ul = jEle.find('.pagelayer-products-container'); if (!ul.hasClass('pagelayer-owl-holder')) { return; } // Build the options var options = pagelayer_fetch_dataAttrs(ul, 'data-slides-'); pagelayer_owl_init(jEle, ul, options); } function kkart_pl_product_slider(jEle){ var gallerycontainer = jEle.find('.kkart-product-gallery-container'); var galleryHolder = jEle.find('.kkart-image-gallery-holder'); var ul = jEle.find('.kkart-product-gallery-ul'); var thumbnails = jEle.find('.kkart-product-gallery-ul li'); var thumbLength = thumbnails.length; var colcnt = ul.attr('data-slides-count'); var sliderThumbnailAction = function(){ var hoverSlider = jEle.find('.kkart-product-gallery-ul').attr('data-slides-hover'); var sliderAction = "click"; if(hoverSlider){ sliderAction = "hover"; } for (var i=0; i < thumbLength; i++){ jQuery(thumbnails[i]).unbind(sliderAction); jQuery(thumbnails[i]).on(sliderAction, function(){ var activeimage = thumbnails.find('.kkart-product-active'); activeimage.removeClass('kkart-product-active'); sliderImageChange(this); }); } } var sliderPrevAction = function(){ //on click prev button show Image var prevButton = jEle.find('.primary-slider-controls .primary-image-prev'); prevButton.unbind('click'); prevButton.on('click' , function(){ var activeimage = thumbnails.find('.kkart-product-active'); jQuery(activeimage).removeClass('kkart-product-active'); var activeli = jQuery(activeimage).parentsUntil("ul")[1]; if(jQuery(activeli).prev().length != 0){ var prevli = jQuery(activeli).prev(); sliderImageChange(prevli); }else{ var lastli = jQuery(activeli).siblings("li:last"); sliderImageChange(lastli); } }); } var sliderNextAction = function(){ //on click next button show Image var nextButton = jEle.find('.primary-slider-controls .primary-image-next'); nextButton.unbind('click'); nextButton.on('click' , function(){ var activeimage = thumbnails.find('.kkart-product-active'); jQuery(activeimage).removeClass('kkart-product-active'); var activeli = jQuery(activeimage).parentsUntil("ul")[1]; if(jQuery(activeli).next().length != 0){ var nextli = jQuery(activeli).next(); sliderImageChange(nextli); }else{ var firstli = jQuery(activeli).siblings("li:first"); sliderImageChange(firstli); } }); } var sliderImageChange = function(elementli){ var clickimg = jQuery(elementli).find('.kkart-product-gimage ').addClass('kkart-product-active'); var imgsrc = jQuery(elementli).find('a').attr('data-href'); var changeimg = jEle.find('.kkart-primary-image-container img'); changeimg.fadeOut('fast', function(){ jQuery(changeimg).fadeIn('fast'); jQuery(changeimg).attr('src', imgsrc); }); } var sliderHorizontal = function(){ if(colcnt < thumbLength){ var thumbWidth = jQuery(thumbnails[0]).outerWidth(true); var holderWidth = galleryHolder.outerWidth(true); var totalWidth = thumbWidth * thumbLength; var ulWidth = thumbWidth * colcnt; var nc = 0; var pc = 0; var click = thumbLength - colcnt; ul.width(totalWidth); if(holderWidth >= ulWidth){ gallerycontainer.width(ulWidth); }else{ gallerycontainer.width(holderWidth); } gallerycontainer.append('<div class="gallery-slider-controls"><button type="button" class="gallery-image-prev"><i class="fas fa-chevron-left"></i></button><button type="button" class="gallery-image-next"><i class="fas fa-chevron-right"></i></button></div>'); var nextButton = jEle.find('.gallery-slider-controls .gallery-image-next'); nextButton.unbind('click'); nextButton.on('click' , function(){ if(nc < click){ nc++; pc++; ul.animate({marginLeft: '-'+(jQuery(thumbnails[0]).outerWidth(true)*nc)}); } }); var prevButton = jEle.find('.gallery-slider-controls .gallery-image-prev'); prevButton.unbind('click'); prevButton.on('click' , function(){ if(pc > 0){ nc--; pc--; ul.animate({marginLeft: '-'+(jQuery(thumbnails[0]).outerWidth(true)*nc)}); } }); } } var sliderVertical = function(){ if(colcnt < thumbLength){ var thumbHeight = jQuery(thumbnails[0]).outerHeight(true); var holderHeight = galleryHolder.outerHeight(true); var totalHeight = thumbHeight * thumbLength; var ulHeight = thumbHeight * colcnt; var nc = 0; var pc = 0; var click = thumbLength - colcnt; ul.height(totalHeight); if(holderHeight >= ulHeight){ gallerycontainer.height(ulHeight); }else{ gallerycontainer.height(holderHeight); } gallerycontainer.append('<div class="gallery-slider-controls"><button type="button" class="gallery-image-prev"><i class="fas fa-chevron-up"></i></button><button type="button" class="gallery-image-next"><i class="fas fa-chevron-down"></i></button></div>'); var nextButton = jEle.find('.gallery-slider-controls .gallery-image-next'); nextButton.unbind('click'); nextButton.on('click' , function(){ if(nc < click){ nc++; pc++; ul.animate({marginTop: '-'+(jQuery(thumbnails[0]).outerHeight(true)*nc)}); } }); var prevButton = jEle.find('.gallery-slider-controls .gallery-image-prev'); prevButton.unbind('click'); prevButton.on('click' , function(){ if(pc > 0){ nc--; pc--; ul.animate({marginTop: '-'+(jQuery(thumbnails[0]).outerHeight(true)*nc)}); } }); } } var zoomImage = function(jELe){ var defaultParas = { layerW: 100, // Mask Width layerH: 100, // Mask Height layerOpacity: 0.2, // Mask Transperency layerBgc: '#000', // Mask Background Color showPanelW: 500, // Wide Display Area showPanelH: 500, // Display magnified area high marginL: 50, // The distance from the zoomed area to the right of the thumbnail marginT: 10 // The distance between the enlarged area and the upper side of the thumbnail }; var self = jEle.find('.kkart-primary-image-container'); var selfOffset = self.offset(); var imageW = self.width(); var imageH = self.height(); var boxHeight = boxWidth = self.parent().outerWidth(true); var wTimes = 3; var hTimes = 3; var layer = jQuery('<div>').css({ display: 'none', position: 'absolute', left: '0', top: '0', backgroundColor: defaultParas.layerBgc, width: defaultParas.layerW, height: defaultParas.layerH, opacity: defaultParas.layerOpacity, border: '1px solid #ccc', cursor: 'crosshair' }); self.append(layer); var img = jQuery('<img>').attr('src', jQuery('.kkart-product-pimage')).css({ position: 'relative', left: '0', top: '0', zIndex: '999', width: imageW * wTimes, height: imageH * hTimes,maxWidth: 'initial', maxHeight: 'initial', }).attr('id', 'big-img'); var showPanel = jQuery('<div>').css({ display: 'none', position: 'absolute', overflow: 'hidden', left: boxWidth + defaultParas.marginL, top: defaultParas.marginT, width: defaultParas.showPanelW, height: defaultParas.showPanelH, }).append(img); self.after(showPanel); self.on('mousemove', function(e) { var width_limit = layer.width() / 2; var max_X = imageW - width_limit; var max_Y = imageH - width_limit; var current_X = e.pageX - selfOffset.left; var current_Y = e.pageY - selfOffset.top; var move_X = current_X - width_limit; var move_Y = current_Y - width_limit; if(current_X <= width_limit) { move_X = 0; } if (current_X >= max_X) { move_X = max_X - width_limit; } if (current_Y <= width_limit) { move_Y = 0; } if (current_Y >= max_Y) { move_Y = max_Y - width_limit; } layer.css({ left: move_X, top: move_Y }); img.attr('src', jQuery('.kkart-product-pimage').attr('src')).css({ left: -move_X * wTimes, top: -move_Y * hTimes }); }).on('mouseenter', function() { layer.show(); showPanel.show(); }).on('mouseleave', function() { layer.hide(); showPanel.hide(); }); } sliderThumbnailAction(); sliderPrevAction(); sliderNextAction(); if(galleryHolder.hasClass('kkart-gallery-position-top') || galleryHolder.hasClass('kkart-gallery-position-bottom')){ sliderHorizontal(); }else{ sliderVertical(); } var pImg = jQuery(jEle.find('.kkart-primary-image-container')); if(!pagelayer_empty(pImg.attr('data-zoom')) && !pImg.find('.kkart-product-pimage').hasClass('kkart-upload-gallery-handler')){ zoomImage(jEle); } } function kkart_pl_product_quantity(jEle){ var minus = jEle.find(".kkart-minus"); var plus = jEle.find(".kkart-plus"); var quantity = jEle.find(".kkart-quantity-input"); minus.click(function(){ var qval = quantity.val(); // TODO change 1 to min val of input if(qval > 1){ quantity.val(--qval); } }); plus.click(function(){ var qval = quantity.val(); var max = parseInt(quantity.attr('max')); if(!max || qval < max){ quantity.val(++qval); } }); } function kkart_thumbnail_img_slider(jEle){ var Interval = setInterval(function(){ var closestOwl = jEle.closest('.pagelayer-owl-holder'); if (closestOwl.length > 0 && closestOwl.children('.pagelayer-owl-stage-outer').length < 1) { return; } clearInterval(Interval); var parentWidth = jEle.parent().width(); jEle.width(parentWidth); var ul = jEle.find('.kkart-thumbnail-gallery'); var options = pagelayer_fetch_dataAttrs(ul, 'data-slides-'); pagelayer_owl_init(jEle, ul, options); }, 500); jEle.on('click', '.pagelayer-owl-nav, .pagelayer-owl-dots', function(e){ e.preventDefault(); }); } function kkart_price_update(data){ jQuery('.kkart-cart-item-price-holder').each(function(){ var cpEle = jQuery(this), pricetype = cpEle.find('.kkart-cart-item-price').data('pricetype'), priceHtml = cpEle.find('.kkart-cart-item-price'), pricetypeArr = [ 'sub_total', 'grand_total', 'all_items_total', 'tax', 'delivery_charges', 'discount' ]; if( pricetypeArr.indexOf( pricetype ) > -1 && data[pricetype] ) { priceHtml.empty(); priceHtml.html( data[pricetype] ); } }); } //handles removal of item from the cart function kkart_pl_cart_item_remove(jEle){ jQuery(".kkart-item-remove-link").click(function(e){ e.preventDefault(); var cart_item_key = jQuery(this).data('cart-key'); jQuery.ajax({ type: 'POST', url: kkart_ajaxurl+'action=kkart_remove_from_cart', data:{ cart_item_key:cart_item_key, kkart_nonce: kkart_ajax_nonce }, success: function (data){ jQuery('[data-cart-key="'+cart_item_key+'"]').closest('.pagelayer-inner_row').animate({ height: "toggle", opacity:"0" }, { duration: 2000, complete: function(){ jQuery('[data-cart-key="'+cart_item_key+'"]').closest('.pagelayer-inner_row').remove(); } } ); kkart_price_update(data); kkart_update_cart_data(); } }); }); } //Cart update button function kkart_pl_cart_update_quantity(jEle){ jEle.on('click', function(e){ e.preventDefault(); var quantity = jEle.parent('.pagelayer-kkart_cart_update').siblings('.pagelayer-kkart_cart_item_quantity').find('input').val(); var cart_item_key = jEle.data('cart-key'); jQuery.ajax({ type: 'POST', url: kkart_ajaxurl+'action=kkart_cart_update_quantity', data: { quantity : quantity, kkart_nonce: kkart_ajax_nonce, cart_item_key: cart_item_key }, success: function(data){ kkart_update_cart_data(); kkart_price_update(data); jEle.parent('.pagelayer-kkart_cart_update').siblings('.pagelayer-kkart_cart_price').find('[data-pricetype="product_sub_total"]').html(data.product_subtotal); } }); }); } // Update mini cart and quentity function kkart_update_cart_data(){ jQuery.ajax({ type: 'POST', url: kkart_ajaxurl+'action=kkart_get_cart_data', data:{ kkart_nonce: kkart_ajax_nonce }, success: function(response){ if(pagelayer_empty(response.data)){ return; } // Update cart quantity if(response.data.quantity != undefined){ var cartIcon = jQuery('body').find('.pagelayer-cart-button-icon'); if(cartIcon.length > 0){ cartIcon.attr('data-counter', response.data.quantity); } } // Update mini cart if ( response.data.fragments != undefined ) { var miniCartForm = jQuery('body').find('.kkart-cart-form'); if(miniCartForm.length > 0){ miniCartForm.find('.product_list_widget,.kkart-mini-cart__total,.kkart-mini-cart__buttons,.kkart-mini-cart__empty-message').remove(); miniCartForm.find('.pagelayer-menu-cart-close').after(response.data.fragments); } } // Update cart button price if ( response.data.price != undefined ) { var cartBtnTxt = jQuery('body').find('.pagelayer-cart-button-text'); if(cartBtnTxt.length > 0){ cartBtnTxt.html(response.data.price); } } }, error: function(){ console.log('error while retriving cart information'); } }); } // Checkout handler function kkart_checkout_tabs(jEle){ var present_tab = jEle.find('.kkart-checkout-tab-holder'); var button = jEle.find('button.checkout-tabs-proceed'); var checkoutHolder = jEle.closest('.kkart-checkout-holder'); var tab_type = jEle.data('checkout-tab'); var nextEle = jEle.next(); /* doneisTrue is used bcoz .data() wasnt able to assign value to the attribute, so vanilla js was used and it was outputting a string, rather than a boolean value so the doneisTrue variable is used to convert that string to boolean */ var doneisTrue = ''; button.on('click', function(e){ e.preventDefault(); var guest_procced = jQuery(this).hasClass('guest-tab-proceed'); // Disable Currebt button button.prop('disabled', true); var post_data = {}; if(tab_type == 'login' && guest_procced){ post_data = { guest_checkout : guest_procced } } if(tab_type == 'shipping' || tab_type == 'payment'){ if(checkoutHolder.find('[name="ship_to_billing_address"]').is(":checked")){ post_data = { ship_to_billing_address: 1, } } } if(checkoutHolder.find('[name="payment_method"]').val() && tab_type == 'payment'){ varData = Object.assign(post_data, { 'kkart-process-checkout-nonce': kkart_checkout_nonce, 'payment_method': checkoutHolder.find('[name="payment_method"]:checked').val(), }); } // Set billing adrress as shipping adrress if(tab_type == 'shipping'){ var active_billing_id = jQuery('[data-checkout-tab="billing"]').find('.kkart-active-address-details').data('address-key'); if(post_data.ship_to_billing_address){ $shipping_billing_id = jQuery('[data-checkout-tab="shipping"]').find(`[data-address-key=${active_billing_id}]`) // Only click if not already active if(!$shipping_billing_id.hasClass('kkart-active-address-details')){ $shipping_billing_id.find('.kkart-billing-here').off('click'); $shipping_billing_id.find('.kkart-billing-here').click(); } } } var varData = { kkart_nonce: kkart_ajax_nonce, tab_type: tab_type, }; varData = Object.assign(post_data, varData); jQuery.ajax({ type: 'post', url: kkart_ajaxurl+'action=kkart_checkout_tabs_procceed', data: varData, success: function(data){ if(typeof data != 'object'){ data = jQuery.parseJSON(data); } if(data['error']){ alert(data['error']); return; } if(data['logged_out']){ alert(data['logged_out']); return; } if(tab_type == 'login' && 'isGuest' in data && data.isGuest === true){ add_data_to_header(data); } if(tab_type == 'payment' && 'result' in data){ if( data['result'] == 'success') { window.location.href = data['redirect']; } else if('messages' in data){ var selected_method = present_tab.find('input[name="payment_method"]:checked').closest('.kkart-payment-method'); if( selected_method.find('.kkart-error').length ) { selected_method.find('.kkart-error').remove(); } selected_method.append( data['messages'] ); } } //if(present_tab.has('.kkart-payment-method').length > 0 && present_tab.has('.kkart-payment-method .radioActive').length == 0){ // present_tab.find('.kkart-payments-method-holder').prepend('<div class="payment_method_error" style="background-color:red; color:white;padding:5px 5px;">Select a Payment Method to Proceed</div>'); // error_count += 1; // } if(nextEle.length > 0 ){ //&& doneisTrue if( nextEle.data('checkout-tab') == 'cart' ){ kkart_reload_cart_tab( jEle ); kkart_shipping_form( jQuery(this) ); } present_tab[0]['dataset']['done'] = true; jEle.removeClass('kkart-checkout-active-tab'); jEle.find('button.checkout_edit_button').css('display', 'inline-block'); jEle.find('i').css('display', 'inline-block'); //doneisTrue conversion is done here //doneisTrue = (present_tab[0]['dataset']['done'] == 'true'); present_tab[0]['dataset']['touched'] = false; nextEle.find('.kkart-checkout-tab-holder')[0]['dataset']['touched'] = true; nextEle.addClass('kkart-checkout-active-tab'); location.hash = nextEle.data('checkout-tab'); var billingAddre = nextEle; if(billingAddre.length > 0){ kkart_billing_address_reload(billingAddre); } } }, complete: function(){ // Enable Currebt button button.prop('disabled', false); } }); }); var add_data_to_header = function(data){ var header_text = jEle.find('.kkart-checkout-tab-header .kkart-checkout-tab-header-text'); if(header_text.length > 0){ header_text.html(data.display_name+'&nbsp;&nbsp;'+(data.isGuest === true ? '' : data.user_email)); return; } jEle.find('.kkart-checkout-tab-header').append('<span class="kkart-checkout-tab-header-text">'+data.display_name+'&nbsp;&nbsp;'+(data.isGuest === true ? '' : data.user_email) +'</span>'); } if(jEle.prev().length == 0 && !present_tab.data('done')){ jEle.addClass('kkart-checkout-active-tab'); present_tab[0]['dataset']['touched'] = true; jQuery.ajax({ url: kkart_ajaxurl+'action=kkart_user_auth', data: { kkart_nonce: kkart_ajax_nonce }, success: function(data){ if(!data.isLoggedIn){ return; } button.click(); add_data_to_header(data); } }); }else{ // Remove class jEle.removeClass('kkart-checkout-active-tab'); } var edit_button = jEle.find('button.checkout_edit_button'); edit_button.on('click',function(e){ e.preventDefault(); var billingAddre = present_tab; if(billingAddre.length > 0){ kkart_billing_address_reload(billingAddre); } jEle.addClass('kkart-checkout-active-tab'); present_tab[0]['dataset']['touched']= true; // Hide All edit buttons from all next tabs edit_button.hide(); jEle.nextAll().find('button.checkout_edit_button').hide(); jEle.nextAll().find('.kkart-checkout-tab-holder').each(function(){ jEle.nextAll().removeClass('kkart-checkout-active-tab'); jEle.nextAll().find('i').hide(); jEle.nextAll().find('.kkart-checkout-tab-holder')[0]['dataset']['touched'] = false; }); }); var $payment_method = jEle.find('.kkart-payment-method'); $payment_method.on('change',function(){ jQuery(present_tab).find('.kkart-payments-method-holder .payment_method_error').fadeOut("slow",function(){ jQuery(this).remove(); }); var $payment_method_desc = jQuery(this).find('.kkart-payment-method-desc'); if(jQuery(this).prop("checked",true)){ if($payment_method.siblings().has('.radioActive').length > 0){ $payment_method.siblings().each(function(){ jQuery(this).find('.radioActive').slideUp("slow",function(){ jQuery(this).hide().removeClass('radioActive'); }); $payment_method_desc.slideDown("slow",function(){ jQuery(this).show(); jQuery(this).addClass('radioActive'); }); }); }else{ $payment_method_desc.slideDown("slow",function(){ jQuery(this).show(); jQuery(this).addClass('radioActive'); }); } } }); // Add signup button jEle.find('.kkart-checkout-login-holder .signup').on('click', function(e){ e.preventDefault(); jEle.find('.kkart-checkout-login-holder').hide(); jEle.find('.kkart-checkout-register-holder').show(); }); jEle.find('.kkart-login-form-show').click(function(e){ e.preventDefault(); jEle.find('.kkart-checkout-login-holder').show(); jEle.find('.kkart-checkout-register-holder').hide(); }); } function kkart_reload_cart_tab( jEle ) { var cartTab = jEle, nextEle = jEle.next(), tab_type = cartTab.data('checkout-tab'); if( tab_type == 'shipping' ){ cartTab = nextEle; } jQuery.ajax({ type: 'POST', url: kkart_ajaxurl+'action=kkart_reload_cart_tab', data: { kkart_nonce: kkart_ajax_nonce }, success: function(res) { cartTab.find('.kkart-checkout-tab-holder :first-child').remove(); cartTab.find('.kkart-checkout-tab-holder :first-child').before(res); jQuery('input[name^="shipping_method"]').off().on('change', function(){ kkart_shipping_form( jQuery(this) ); }); } }); } //handles validation of form function kkart_validateForm(jEle, error_count){ var nameReg = /^[A-Za-z ]+$/; var numberReg = /^(\+\d{1,3}[- ]?)?\d{10}$/; var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; var urlReg = 'https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)'; if(jEle.val() == '' ){ error_count +=1; if(jEle.next('span.form-error').length > 0){ jEle.next('span.form-error').remove(); jEle.removeClass('empty-field'); } jEle.after('<span class="form-error" style="color:red;display:block">Enter Some Value in this Field</span>'); jEle.addClass('empty-field'); return error_count; } if(jEle.next('span.form-error').length > 0){ jEle.next('span.form-error').remove(); jEle.removeClass('empty-field'); } if(jEle.attr('type') == 'country' || jEle.attr('type') == 'state' || jEle.attr('name').includes('name')){ if(!nameReg.test(jEle.val())){ error_count += 1; if(jEle.next('span.form-error').length > 0){ jEle.next('span.form-error').remove(); jEle.removeClass('empty-field'); } jEle.after('<span class="form-error" style="color:red;display:block">Enter a Valid Value</span>'); jEle.addClass('empty-field'); }else{ if(jEle.next('span.form-error').length > 0){ jEle.next('span.form-error').remove(); jEle.removeClass('empty-field'); } } } if(jEle.attr('type') == 'email'){ if(!emailReg.test(jEle.val())){ error_count += 1; if(jEle.next('span.form-error').length > 0){ jEle.next('span.form-error').remove(); jEle.removeClass('empty-field'); } jEle.after('<span class="form-error" style="color:red;display:block">Enter a Valid Email</span>'); jEle.addClass('empty-field'); }else{ if(jEle.next('span.form-error').length > 0){ jEle.next('span.form-error').remove(); jEle.removeClass('empty-field'); } } } if(jEle.attr('type') == 'number'){ if(!numberReg.test(jEle.val())){ error_count +=1; if(jEle.next('span.form-error').length > 0){ jEle.next('span.form-error').remove(); jEle.removeClass('empty-field'); } jEle.after('<span class="form-error" style="color:red;display:block">Enter a Valid Number</span>'); jEle.addClass('empty-field'); }else{ if(jEle.next('span.form-error').length > 0){ jEle.next('span.form-error').remove(); jEle.removeClass('empty-field'); } } } if(jEle.attr('type') == 'url'){ if(!urlReg.test(jEle.val())){ error_count +=1; if(jEle.next('span.form-error').length > 0){ jEle.next('span.form-error').remove(); jEle.removeClass('empty-field'); } jEle.after('<span class="form-error" style="color:red;display:block">Enter a Valid URL</span>'); jEle.addClass('empty-field'); }else{ if(jEle.next('span.form-error').length > 0){ jEle.next('span.form-error').remove(); jEle.removeClass('empty-field'); } } } return error_count; } // Save Checkout address function kkart_save_checkout_address(jEle, e, set_default = false){ e.preventDefault(); jEle = jQuery(jEle); var addressHolder = jEle.closest('.kkart-address-holder'); var holder = jEle.closest('.kkart-address-form-container'); var data = holder.find('select, textarea, input').serialize(); var error_count = 0; var postalInput = holder.find('#billing_postcode'); // validate the Filelds holder.find('input, select').each(function(e){ if(jQuery(this).closest('.validate-required').length > 0){ error_count = kkart_validateForm(jQuery(this), error_count); } }); if(error_count > 0){ return; } jQuery.ajax({ type: 'POST', url: kkart_ajaxurl+'action=kkart_save_billing_address&kkart_nonce='+kkart_ajax_nonce, data:data, success: function (data){ data = jQuery.parseJSON(data); //to handle postal code error if(data['postal_error']){ if(postalInput.next('span.form-error').length > 0){ postalInput.next('span.form-error').remove(); postalInput.removeClass('empty-field'); } postalInput.after('<span class="form-error" style="color:red;display:block">Enter a Valid Postal Code</span>'); postalInput.addClass('empty-field'); return; } if(data['error']){ alert(data['error']); return; } addressHolder.addClass('kkart-address-done'); kkart_billing_add_address(addressHolder, data['address_data']); if(set_default){ var billing_id = jQuery('[data-checkout-tab="billing"]').find(`[data-address-key=${data.address_id}]`); billing_id.find('.kkart-billing-here').click(); } // To remove the address_id value so that new form can be open jEle.siblings('[name="address_id"]').removeAttr('value'); } }); } // Edit checkout address function kkart_billing_address_reload(jEle){ var addressHolder = jEle.find('.kkart-address-holder'); var addressesHolder = addressHolder.find('.kkart-addresses-holder'); if(addressHolder.length < 1){ return; } var is_shipping = false; if(addressHolder.attr('data-form-type') == 'shipping' || addressHolder.attr('data-form-type') == 'shipping_cart'){ is_shipping = true; } jQuery.ajax({ type: 'POST', url: kkart_ajaxurl+'action=kkart_get_address_details', data:{ kkart_nonce: kkart_ajax_nonce, is_shipping: is_shipping, }, success: function (data){ data = jQuery.parseJSON(data); addressHolder.unbind('change'); addressHolder.on('change', '.country_to_state', function( e ) { kkart_update_state(jQuery(this), data); }); if(data['error']){ return; } addressesHolder.empty(); for(var key in data['address_data']){ data['address_data'][key]['address_id'] = key; kkart_billing_add_address(addressHolder, data['address_data'][key]); } addressHolder.find('.kkart-active-address-details').removeClass('kkart-active-address-details'); addressHolder.find('[data-address-key="'+data['active_addr_id']+'"]').addClass('kkart-active-address-details'); } }); } // Add checkout address function kkart_billing_add_address(jEle, data){ var addressesHolder = jEle.find('.kkart-addresses-holder'); var addr_content = '';//addressesHolder.attr('data-formate'); var hereText = addressesHolder.attr('data-here-text') || 'Use This'; var editText = addressesHolder.attr('data-edit-text') || 'Edit'; var deleteText = addressesHolder.attr('data-delete-text') || 'Delete'; // Default show grid view addressesHolder.css('display', ''); if(!addr_content){ addr_content = '$billing_first_name $billing_last_name <br/>$billing_email <br/>$billing_address_1 <br/>$billing_address_2'; } for(var field in data){ addr_content = addr_content.replace('$'+field, data[field]); } var detailEle = addressesHolder.find('.kkart-address-details[data-address-key="'+ data['address_id'] +'"]'); if(detailEle.length > 0){ detailEle.find('.kkart-billing-detail').html(addr_content); }else{ addressesHolder.append('<div class="kkart-address-details" data-address-key="'+ data['address_id'] +'">'+ '<div class="kkart-billing-detail">'+addr_content+'</div>'+ '<button class="kkart-billing-here" >'+hereText+'</button>'+ '<button class="kkart-billing-edit">'+editText+'</button>'+ '<button class="kkart-billing-delete">'+deleteText+'</button>'+ '</div>'); } } // Edit checkout address function kkart_billing_form_handler(jEle){ var is_shipping = false; var is_cart = false; if(jEle.attr('data-form-type') == 'shipping'){ is_shipping = true; } if(jEle.attr('data-form-type') == 'shipping_cart'){ is_cart = true; is_shipping = true; } // Set billing address jEle.off('click', '.kkart-billing-here'); jEle.on('click', '.kkart-billing-here', function(e){ var curEle = jQuery(this); var addressDiv = curEle.closest('.kkart-address-details'); var addressID = addressDiv.data('address-key'); jQuery.ajax({ type: 'POST', url: kkart_ajaxurl+'action=kkart_set_billing_address', data:{ kkart_nonce: kkart_ajax_nonce, address_id: addressID, is_shipping: is_shipping, }, success: function (data){ data = jQuery.parseJSON(data); if(data['error']){ return; } if(is_cart){ location.reload(true); }else{ curEle.closest('.kkart-addresses-holder').find('.kkart-address-details').removeClass('kkart-active-address-details'); curEle.closest('.kkart-address-details').addClass('kkart-active-address-details'); var proceed_button = jEle.parents('.kkart-checkout-tab').find('.checkout-tabs-proceed'); proceed_button.click(); } } }); }); // Edit address jEle.on('click', '.kkart-billing-edit', function(e){ var curEle = jQuery(this); var addressDiv = curEle.closest('.kkart-address-details'); var addressID = addressDiv.data('address-key'); jQuery.ajax({ type: 'POST', url: kkart_ajaxurl+'action=kkart_get_address_details', data:{ kkart_nonce: kkart_ajax_nonce, address_id: addressID, }, success: function (data){ data = jQuery.parseJSON(data); if(data['error']){ return; } var form_container = jEle.find('.kkart-address-form-container'); // To identify which address is being edited jQuery( form_container ).data( 'addr-id', addressID ); // Add address ID data['address_data']['address_id'] = addressID; for(var key in data['address_data']){ var field = form_container.find('[name="'+key+'"]'); if(field.length < 1){ continue; } var value = data['address_data'][key]; // Set value field.val(value); var tagName = field.prop("tagName"); if(tagName == 'SELECT'){ // TODO fix for state chenge field.trigger('change'); } // TODO for checkbox // Show form curEle.closest('.kkart-address-holder').removeClass('kkart-address-done'); // Hide address list on edit address if(is_cart){ curEle.closest('.kkart-addresses-holder').hide(); } } } }); }); // Delete address jEle.on('click', '.kkart-billing-delete', function(e){ var curEle = jQuery(this); var addressDiv = curEle.closest('.kkart-address-details'); var addressID = addressDiv.data('address-key'); jQuery.ajax({ type: 'POST', url: kkart_ajaxurl+'action=kkart_delete_address', data:{ kkart_nonce: kkart_ajax_nonce, address_id: addressID, }, success: function (data){ data = jQuery.parseJSON(data); if(data['error']){ return; } addressDiv.remove(); // To reload when the addressDiv is empty if(jEle.find('.kkart-address-details').length < 1){ jQuery('.kkart-cart-modal-wrapper').removeClass('kkart-show'); location.reload(true); } } }); }); // Show address form jEle.on('click', '.kkart-address-form-headding', function(e){ var curEle = jQuery(this); curEle.closest('.kkart-address-holder').removeClass('kkart-address-done'); }); // Save address form jEle.on('click', '.kkart-save-address-form', function(e){ kkart_save_checkout_address(this, e); }); jEle.on('click', '.kkart-save-and-usethis-address-form', function(e){ kkart_save_checkout_address(this, e, true); }); // Cancel address form jEle.on('click', '.kkart-cancel-address-form', function(e){ var curEle = jQuery(this); var addressHolderDiv = jQuery('.kkart-cart-modal').find('.kkart-addresses-holder'); //TODO reset form curEle.closest('.kkart-address-holder').addClass('kkart-address-done'); // Close modal if addresses empty if(addressHolderDiv.children().length < 1){ addressHolderDiv.closest('.kkart-cart-modal-wrapper').removeClass('kkart-show'); }else{ addressHolderDiv.css('display', ''); } }); // Shipping address checkbox handler if(is_shipping){ //set initial state. var shipEle = jEle.find('input[name="ship_to_billing_address"]'); var shipEleToggle = function(){ if(!shipEle.is(':checked')){ jEle.find('.kkart-addresses-container').show(); }else{ jEle.find('.kkart-addresses-container').hide(); } } //shipEleToggle(); // Checkbox on change shipEle.on('change', function(){ shipEleToggle(); }); } } function kkart_myaccount_tabs(jEle){ var holder = jEle.find('.kkart-myaccount-tabholder'); var tabs = holder.find('.kkart-tablinks'); var hash = location.hash; tabs.on('click', function(e){ var tEle = jQuery(this); var id = tEle.data('target'); //Tab Content active jEle.find('.kkart-tab-content-holder').removeClass('kkart-active-tabcontent'); jEle.find('.kkart-tab-content-holder[data-tabholder="'+id+'"]').addClass('kkart-active-tabcontent'); holder.find('.kkart-tablinks').removeClass('kkart-active-tab'); tEle.addClass('kkart-active-tab'); }); if(!pagelayer_empty(hash)){ var id = hash.substring(1); var tab = holder.find('.kkart-tablinks[data-target="'+id+'"]'); if(tab.length > 0){ tab.click(); return; } } tabs.first().click(); } function kkart_order_details_handler(jEle){ // View Order Details jEle.on('click', '.kkart-order-view', function(e){ var curEle = jQuery(this); var orderID = curEle.data('order-key'); jQuery.ajax({ type: 'POST', url: kkart_ajaxurl+'action=kkart_account_order_details', data:{ kkart_nonce: kkart_ajax_nonce, order_id: orderID, }, success: function (result){ //console.log(result); jEle.find('.kkart-myaccount-orderdetails').append(result); } }); jEle.find('.kkart-myaccount-orders').css({'display':'none'}); jEle.find('.kkart-myaccount-orderdetails').css({'display':'block'}); }); jEle.on('click', '.kkart-close-orderdetails', function(e){ jEle.find('.kkart-myaccount-orderdetails').empty(); jEle.find('.kkart-myaccount-orderdetails').css({'display':'none'}); jEle.find('.kkart-myaccount-orders').css({'display':'table'}); }); } function kkart_archive_crt_btn_holder(jEle){ var addtocartHandler = function(jELe){ jELe.on('click', '.kkart-archive-crt-btn, .kkart-plus, .kkart-minus, .kkart-close', function(e){ if(pagelayer_empty(pagelayer_is_live)){ if(jQuery(this).hasClass('kkart-minus')){ removefromCart(jQuery(this), e); }else if(jQuery(this).hasClass('kkart-close')){ deletefromCart(jQuery(this), e); }else if(jQuery(this).hasClass('kkart-archive-crt-btn') || jQuery(this).hasClass('kkart-plus')){ addtoCart(jQuery(this), e); } }else{ updateButton(this); } }); jELe.on('change', '.kkart-quantity-input', function(e){ e.preventDefault(); var thisparent = jQuery(this).parents('.kkart-quantity-holder'); var data_cart_key = jQuery(thisparent).attr('data-cart-key'); var quantity = jQuery(this).val(); setquantity(data_cart_key, quantity); if(quantity == 0){ hidequantityHolder(jQuery(this)); } }); } var fetchCart = function(jELe){ jQuery.ajax({ type: 'POST', url: kkart_ajaxurl+'action=kkart_get_cart_items', data:{ kkart_nonce: kkart_ajax_nonce }, success: function(result){ var cartbutton = jQuery(jELe).find('.kkart-archive-crt-btn'); var product_id = jQuery(cartbutton).attr('data-product_id'); if(typeof (result['data']) == 'object'){ var fetchcartdata = {}; jQuery.each(result['data'], function(index, val){ if(val['product_id'] == product_id){ fetchcartdata = result['data'][index]; } }); var quantityHolder = jQuery(jELe).find('.kkart-quantity-holder'); if(quantityHolder.length > 0){ var kkartquantity = jQuery(quantityHolder).find('.kkart-quantity-input'); jQuery(kkartquantity).val(fetchcartdata.quantity); jQuery(quantityHolder).attr('data-cart-key',fetchcartdata.key); } } }, error: function(){ console.log('there is some issue while fetching cart data!'); } }); } var addtoCart = function(thisbutton, e){ if(thisbutton.is('.ajax_add_to_cart') || thisbutton.hasClass('kkart-plus')){ var thisbtn = thisbutton; if(thisbutton.hasClass('kkart-plus')){ thisparent = thisbutton.parents('.kkart-quantity-holder'); thisbtn = jQuery(thisparent); } if (!thisbtn.attr( 'data-product_id')){ return true; } e.preventDefault(); var data = {}; jQuery.each(thisbtn[0].dataset, function( key, value ) { if(key != 'data-cart-key'){ data[ key ] = value; } }); jQuery.ajax({ type: 'POST', url: kkart_add_to_cart_params.kkart_ajax_url.toString().replace( '%%endpoint%%', 'add_to_cart' ), data: data, dataType: 'json', success: function( response ) { if ( ! response ) { return; } if ( response.error && response.product_url ) { window.location = response.product_url; return; } //Redirect to cart option if ( kkart_add_to_cart_params.cart_redirect_after_add === 'yes' ) { window.location = kkart_add_to_cart_params.cart_url; return; } //Trigger event so themes can refresh other areas. // View cart text. if ( !pagelayer_empty(response.fragments) ) { kkart_update_cart_data(); updateButton(thisbutton); } }, error: function(){ console.log('error while adding product'); } }); } } var removefromCart = function(thisbutton, e){ thisparent = thisbutton.parents('.kkart-quantity-holder'); if (!thisparent.attr('data-cart-key')) { return true; } e.preventDefault(); quantityinput = jQuery(thisparent).find('.kkart-quantity-input'); var data_cart_key = jQuery(thisparent).attr( 'data-cart-key' ); var quantity = jQuery(quantityinput).val(); if(quantity > 0){ var quantity = --quantity; setquantity(data_cart_key, quantity); updateButton(thisbutton); } } var setquantity = function(data_cart_key, qty){ jQuery.ajax({ type: 'POST', url: kkart_ajaxurl+'action=kkart_set_cart_quantity', data:{ cart_item_key: data_cart_key, quantity: qty, kkart_nonce: kkart_ajax_nonce }, success: function(data){ if(!pagelayer_empty(data.success)){ kkart_update_cart_data(); return true; } }, error: function(){ console.log('error while removing from cart'); } }); } var deletefromCart = function(thisbutton, e){ thisparent = thisbutton.parents('.kkart-quantity-holder'); if (!thisparent.attr('data-cart-key')){ return true; } e.preventDefault(); var data_cart_key = thisparent.attr( 'data-cart-key' ); jQuery.ajax({ type: 'POST', url: kkart_ajaxurl+'action=kkart_remove_from_cart', data:{ cart_item_key:data_cart_key, kkart_nonce: kkart_ajax_nonce }, success: function(data){ if(pagelayer_empty(data)){ return; }else{ kkart_update_cart_data(); hidequantityHolder(thisbutton); } }, error: function(){ console.log('error while delete from cart'); } }); } var updateButton = function(thisbutton){ var thisbutton = jQuery(thisbutton); var thisparent = thisbutton.parents('.kkart-crt-btn-holder'); if ( thisbutton.hasClass( 'kkart-minus' ) ) { var inputquantity = thisparent.find('.kkart-quantity-input'); var qval = jQuery(inputquantity).val(); qval = --qval; if(qval > 0){ jQuery(inputquantity).val(qval); }else{ if(pagelayer_empty(pagelayer_is_live)){ hidequantityHolder(thisbutton); } } }else if(thisbutton.hasClass('kkart-plus')){ var inputquantity = thisparent.find('.kkart-quantity-input'); var qval = jQuery(inputquantity).val(); jQuery(inputquantity).val(++qval); }else if(thisbutton.hasClass( 'kkart-archive-crt-btn' )){ if(pagelayer_empty(pagelayer_is_live)){ if(!kkart_add_to_cart_params.is_cart){ var data_attribute = {}; jQuery.each( thisbutton[0].dataset, function( key, value ) { data_attribute[key] = value; }); thisbutton.hide(); var quantityHolder = jQuery(thisparent).find('.kkart-quantity-holder'); if(quantityHolder.length == 0){ thisparent.append('<div class="kkart-quantity-holder" data-quantity="'+data_attribute['quantity']+'" data-product_id="'+data_attribute['product_id']+'" data-product_sku="'+data_attribute['product_sku']+'"><div class="kkart-quantity"><i class="fas fa-minus kkart-minus"></i><input type="number" min="1" class="kkart-quantity-input" name="quantity" value=""><i class="fas fa-plus kkart-plus"></i></div><div class="kkart-quantity-close"><i class="fas fa-times kkart-close"></i></div></div>'); } var viewbtnHolder = jQuery(thisparent).find('.kkart-view-btn-holder'); if(viewbtnHolder.length == 0){ var view_btn_text = kkart_add_to_cart_params.i18n_view_cart; if(!pagelayer_empty(jQuery(thisparent).data('view-btn-text'))){ view_btn_text = jQuery(thisparent).data('view-btn-text'); } thisparent.append('<div class="kkart-view-btn-holder"><a href="' + kkart_add_to_cart_params.cart_url + '" class="kkart-view-btn" title="'+view_btn_text+'">'+view_btn_text+'</a></div>' ); } fetchCart(jEle); } } } } var hidequantityHolder = function(thiselement){ var thisparent = thiselement.parents('.kkart-crt-btn-holder'); var quantityHolder = jQuery(thisparent).find('.kkart-quantity-holder'); var cartbtn = jQuery(thisparent).find('.kkart-archive-crt-btn'); var viewbtn = jQuery(thisparent).find('.kkart-view-btn-holder') jQuery(quantityHolder).remove(); jQuery(viewbtn).remove(); jQuery(cartbtn).show(); } addtocartHandler(jEle); var quantityHolder = jQuery(jEle).find('.kkart-quantity-holder'); var view_btn = jQuery(jEle).find('.kkart-view-btn-holder'); var thisbutton = jQuery(jEle).find('.kkart-archive-crt-btn'); if(quantityHolder.length > 0 || view_btn.length > 0){ thisbutton.hide(); } } function kkart_shipping_form(jELe){ var shipping_methods = "", is_cart_tab = false, is_cart_tab = jELe.closest('.kkart-checkout-tab-holder').length ? true : false; // eslint-disable-next-line max-len var cart = $("#shipping_method").attr('cart'); $( 'select.shipping_method, input[name^="shipping_method"][type="radio"]:checked, input[name^="shipping_method"][type="hidden"]' ).each( function() { shipping_methods = $(this).val(); } ); jQuery.ajax({ type: 'POST', url: kkart_ajaxurl+'action=kkart_update_shipping_method', data:{ shipping_method:shipping_methods, cart:cart, kkart_nonce: kkart_ajax_nonce }, success: function (data){ kkart_price_update(data); var cartTab = jELe.closest('.kkart-checkout-tab'); if( is_cart_tab ) { kkart_reload_cart_tab( cartTab ); } } }); } // Login form handler function kkart_login_form_handler(jEle){ var login = jEle.find('.kkart-login-form'); var registration = jEle.find('.kkart-registration-form'); if(registration.length < 1){ login.find('.signup').remove(); return; } login.find('.signup').click(function(e){ e.preventDefault(); login.hide(); registration.show(); }); registration.find('.kkart-login-form-show').click(function(e){ e.preventDefault(); login.show(); registration.hide(); }); } function kkart_coupon_toggle( jEle ) { // Show coupon jQuery(jEle).unbind( 'click.showcoupon'); jQuery(jEle).on( 'click.showcoupon', 'a.showcoupon', function(e){ e.preventDefault(); var checkout_coupon = jQuery( '.checkout_coupon' ); checkout_coupon.slideToggle( 400, function() { checkout_coupon.find( ':input:eq(0)' ).focus(); }); }); jQuery( 'form.checkout_coupon' ).hide().submit( kkart_submit_coupon ); jQuery( document.body ).on( 'click', '.kkart-remove-coupon', kkart_remove_coupon ); } function kkart_remove_coupon(e) { e.preventDefault(); var coupon = jQuery( this ).data( 'coupon' ), container = jQuery( '.kkart_cart_price_holder' ); container.addClass( 'processing' ).block({ message: null, overlayCSS: { background: '#fff', opacity: 0.6 } }); jQuery.ajax({ type: 'POST', url: kkart_ajaxurl + 'action=kkart_remove_coupon', data: { security: kkart_ajax_nonce, coupon: coupon }, success: function( code ) { jQuery( '.kkart-error, .kkart-message' ).remove(); container.removeClass( 'processing' ).unblock(); if ( code ) { jQuery( '.kkart-form-coupon-toggle' ).after( code ); setTimeout(()=>{ jQuery( '.kkart-form-coupon-toggle' ).parent().find('.kkart-error, .kkart-message' ).remove(); }, 4000); kkart_shipping_form( jQuery(this) ); var tabs = jQuery('.kkart-checkout-tab'); jQuery( tabs ).each(function() { if( 'cart' == jQuery(this).data('checkout-tab') ) { kkart_reload_cart_tab( jQuery(this) ); } }); // Remove coupon code from coupon field jQuery( 'body' ).find( 'input[name="coupon_code"]' ).val( '' ); } }, error: function ( jqXHR ) { console.log( jqXHR.responseText ); }, dataType: 'html' }); } function kkart_submit_coupon() { var $form = jQuery( this ); if ( $form.is( '.processing' ) ) { return false; } $form.addClass( 'processing' ).block({ message: null, overlayCSS: { background: '#fff', opacity: 0.6 } }); jQuery.ajax({ type: 'POST', url: kkart_ajaxurl + 'action=kkart_apply_coupon', data: { security: kkart_ajax_nonce, coupon_code: $form.find( 'input[name="coupon_code"]' ).val() }, success: function( code ){ jQuery( '.kkart-error, .kkart-message' ).remove(); $form.removeClass( 'processing' ).unblock(); if ( code ) { $form.before( code ); setTimeout(()=>{ $form.parent().find('.kkart-error, .kkart-message' ).remove(); }, 4000); $form.slideUp(); kkart_shipping_form( jQuery(this) ); var tabs = jQuery('.kkart-checkout-tab'); jQuery( tabs ).each(function() { if( 'cart' == jQuery(this).data('checkout-tab') ) { kkart_reload_cart_tab( jQuery(this) ); } }); } }, dataType: 'html' }); return false; } // Updates the select option of state on country change function kkart_update_state(jEle, addrData){ addrData = addrData || {}; var country = jEle.val(), addrHolder = jEle.closest('.kkart-address-form-container'), stateBox = addrHolder.find('#billing_state, #shipping_state'), parent = stateBox.closest('.form-row'), input_name = stateBox.attr('name'), input_classes = stateBox.attr('data-input-classes'), label = parent.children('label'), input_id = stateBox.attr('id'), placeholder = stateBox.attr( 'placeholder' ) || stateBox.attr( 'data-placeholder' ) || '', addressID = addrHolder.data('addr-id'), oldStateSel = '', newStateBox; if( !pagelayer_empty(addrData) && !pagelayer_empty(addrData['address_data'])) { if( addrData['address_data'][addressID] ) { oldStateSel = addrData['address_data'][addressID]['billing_state']; } else{ oldStateSel = addrData['address_data']['billing_state']; } } jQuery.ajax({ method : 'POST', url : kkart_ajaxurl+'action=kkart_get_states', data : { kkart_nonce : kkart_ajax_nonce, country_name : country }, success: function(res) { kkart_get_country_local(country, label); // Make input box for states if(typeof(res) === 'boolean' || res.length < 1){ newStateBox = jQuery('<input type="text" />') .prop( 'id', input_id ) .prop( 'name', input_name ) .attr('data-input-classes', input_classes ) .addClass( 'input-text ' + input_classes ); parent.show(); stateBox.replaceWith( newStateBox ); return; }else{ // Make select box for states if( stateBox.is( 'input' ) ){ newStateBox = jQuery('<select></select>') .prop( 'id', input_id ) .prop( 'name', input_name ) .data( 'placeholder', placeholder ) .attr( 'data-input-classes', input_classes ) .addClass( 'state_select ' + input_classes ); parent.show(); stateBox.replaceWith( newStateBox ); stateBox = addrHolder.find( '#billing_state, #shipping_state'); } var state_options = '<option value>Select an option...</option>'; for(var state in res){ if(!pagelayer_empty(oldStateSel) && oldStateSel == state){ state_options += '<option value="'+state+'" selected>'+res[state]+'</option>'; continue; } state_options += '<option value="'+state+'">'+res[state]+'</option>'; } stateBox.empty(); stateBox.append(state_options); } } }); } // KKart cart function kkart_menu_cart(jEle){ // On click menu cart jEle.find('.pagelayer-menu-cart-toggle').click(function(e){ e.preventDefault(); jEle.find('.pagelayer-menu-cart-container').toggle(); }); // On click menu cart close jEle.find('.pagelayer-menu-cart-close').click(function(){ jEle.find('.pagelayer-menu-cart-container').hide(); }); } // Handle locale function kkart_get_country_local(country, label){ let countryObj; var parent = label.parent(); jQuery.ajax({ method : 'POST', url : kkart_ajaxurl+'action=kkart_get_country_locale', data : { kkart_nonce : kkart_ajax_nonce, }, success: function(res) { for(let key in res){ if(key === country){ countryObj = res[key]; } } label.contents().filter(function() { return this.nodeType === 3; }).replaceWith(countryObj['state']['label']); if(countryObj['state'] && 'required' in countryObj['state']){ parent.removeClass( 'validate-required' ); label.find('abbr').replaceWith('<span class="optional"> (Optional) </span>') } else{ parent.addClass('validate-required' ); label.find('span').replaceWith('<abbr class="required"> * </abbr>') } } }); }