ÿØÿà JFIF    ÿÛ „  ( %"1!%)+...383,7(-.+  -+++--++++---+-+-----+---------------+---+-++7-----ÿÀ  ß â" ÿÄ     ÿÄ H    !1AQaq"‘¡2B±ÁÑð#R“Ò Tbr‚²á3csƒ’ÂñDS¢³$CÿÄ   ÿÄ %  !1AQa"23‘ÿÚ   ? ôÿ ¨pŸªáÿ —åYõõ\?àÒü©ŠÄï¨pŸªáÿ —åYõõ\?àÓü©ŠÄá 0Ÿªáÿ Ÿå[úƒ ú®ði~TÁbqÐ8OÕpÿ ƒOò¤Oè`–RÂáœá™êi€ßÉ< FtŸI“öÌ8úDf´°å}“¾œ6  öFá°y¥jñÇh†ˆ¢ã/ÃÐ:ªcÈ "Y¡ðÑl>ÿ ”ÏËte:qž\oäŠe÷󲍷˜HT4&ÿ ÓÐü6ö®¿øþßèô Ÿ•7Ñi’•j|“ñì>b…þS?*Óôÿ ÓÐü*h¥£ír¶ü UãS炟[AÐaè[ûª•õ&õj?†Éö+EzP—WeÒírJFt ‘BŒ†Ï‡%#tE Øz ¥OÛ«!1›üä±Í™%ºÍãö]°î(–:@<‹ŒÊö×òÆt¦ãº+‡¦%ÌÁ²h´OƒJŒtMÜ>ÀÜÊw3Y´•牋4ǍýʏTì>œú=Íwhyë,¾Ôò×õ¿ßÊa»«þˆѪQ|%6ž™A õ%:øj<>É—ÿ Å_ˆCbõ¥š±ý¯Ýƒï…¶|RëócÍf溪“t.СøTÿ *Ä¿-{†çàczůŽ_–^XþŒ±miB[X±d 1,é”zEù»& î9gœf™9Ð'.;—™i}!ôšåîqêÛ٤ёý£½ÆA–àôe"A$˝Úsäÿ ÷Û #°xŸëí(l »ý3—¥5m! rt`†0~'j2(]S¦¦kv,ÚÇ l¦øJA£Šƒ J3E8ÙiŽ:cÉžúeZ°€¯\®kÖ(79«Ž:¯X”¾³Š&¡* ….‰Ž(ÜíŸ2¥ª‡×Hi²TF¤ò[¨íÈRëÉ䢍mgÑ.Ÿ<öäS0í„ǹÁU´f#Vß;Õ–…P@3ío<ä-±»Ž.L|kªÀê›fÂ6@»eu‚|ÓaÞÆŸ…¨ááå>åŠ?cKü6ùTÍÆ”†sĤÚ;H2RÚ†õ\Ö·Ÿn'¾ ñ#ºI¤Å´%çÁ­‚â7›‹qT3Iï¨ÖÚ5I7Ë!ÅOóŸ¶øÝñØôת¦$Tcö‘[«Ö³šÒ';Aþ ¸èíg A2Z"i¸vdÄ÷.iõ®§)¿]¤À†–‡É&ä{V¶iŽ”.Ó×Õÿ û?h¬Mt–íª[ÿ Ñÿ ÌV(í}=ibÔ¡›¥¢±b Lô¥‡piη_Z<‡z§èŒ)iÖwiÇ 2hÙ3·=’d÷8éŽ1¦¸c¤µ€7›7Ø ð\á)} ¹fËí›pAÃL%âc2 í§æQz¿;T8sæ°qø)QFMð‰XŒÂ±N¢aF¨…8¯!U  Z©RÊ ÖPVÄÀÍin™Ì-GˆªÅËŠ›•zË}º±ŽÍFò¹}Uw×#ä5B¤{î}Ð<ÙD é©¤&‡ïDbàÁôMÁ." ¤‡ú*õ'VŽ|¼´Úgllº¼klz[Æüï÷Aób‡Eÿ dÑ»Xx9ÃÜ£ÁT/`¼¸vI±Ýµ·Ë‚“G³þ*Ÿû´r|*}<¨îºœ @¦mÄ’M¹”.œ«Y–|6ÏU¤jç¥ÕÞqO ˜kDÆÁ¨5ÿ š;ÐЦ¦€GÙk \ –Þ=â¼=SͧµªS°ÚÍpÜãQűÀõ¬?ÃÁ1Ñ•õZà?hóœ€ L¦l{Y*K˜Ù›zc˜–ˆâ ø+¾ ­-Ök¥%ùEÜA'}ˆ><ÊIè“bpÍ/qÞâvoX€w,\úªò6Z[XdÒæ­@Ö—€$òJí#é>'°Ú ôª˜<)4ryÙ£|óAÅn5žêŸyÒäMÝ2{"}‰–¤l÷ûWX\l¾Á¸góÉOÔ /óñB¤f¸çñ[.P˜ZsÊË*ßT܈§QN¢’¡¨§V¼(Üù*eÕ“”5T¨‹Âê¥FŒã½Dü[8'Ò¥a…Ú¶k7a *•›¼'Ò·\8¨ª\@\õ¢¦íq+DÙrmÎ…_ªæ»ŠÓœ¡¯’Ré9MÅ×D™lælffc+ŒÑ,ý™ÿ ¯þǤ=Å’Á7µ÷ÚÛ/“Ü€ñýã¼àí¾ÕÑ+ƒ,uµMâÀÄbm:ÒÎPæ{˜Gz[ƒ¯«® KHà`ߨŠéí¯P8Aq.C‰ à€kòpj´kN¶qô€…Õ,ÜNŠª-­{Zö’æû44‰sŽè‰îVíRœÕm" 6?³D9¡ÇTíÅꋇ`4«¸ÝÁô ï’ýorqКÇZ«x4Žâéþuïf¹µö[P ,Q£éaX±`PÉÍZ ¸äYúg üAx ’6Lê‚xÝÓ*äQ  Ï’¨hÍ =²,6ï#rÃ<¯–£»ƒ‹,–ê•€ aÛsñ'%Æ"®ÛüìBᝠHÚ3ß°©$“XnœÖ’î2ËTeûìxîß ¦å¿çÉ ðK§þ{‘t‚Ϋ¬jéîZ[ ”š7L¥4VÚCE×]m¤Øy”ä4-dz£œ§¸x.*ãÊÊ b÷•h:©‡¦s`BTÁRû¾g⻩‹jø sF¢àJøFl‘È•Xᓁà~*j¯ +(ÚÕ6-£¯÷GŠØy‚<Ç’.F‹Hœw(+)ÜÜâÈzÄäT§FߘãÏ;DmVœ3Àu@mÚüXÝü•3B¨òÌÁÛ<·ÃÜ z,Ì@õÅ·d2]ü8s÷IôÞ¯^Ç9¢u„~ëAŸï4«M? K]­ÅàPl@s_ p:°¬ZR”´›JC[CS.h‹ƒïËœ«Æ]–÷ó‚wR×k7X‰k›‘´ù¦=¡«‰¨¨Â')—71ó’c‡Ðúµ `é.{§p¹ój\Ž{1h{o±Ý=áUÊïGÖŒõ–-BÄm+AZX¶¡ ïHðæ¥JmÙ;…䡟ˆ¦ ° äšiÉg«$üMk5¤L“’çÊvïâï ,=f“"íἊ5ô¬x6{ɏžID0e¸vçmi'︧ºð9$ò¹÷*£’9ÿ ²TÔ…×>JV¥}Œ}$p[bÔ®*[jzS*8 ”·T›Í–ñUîƒwo$áè=LT™ç—~ô·¤ÈÚ$榍q‰„+´kFm)ž‹©i–ËqÞŠ‰à¶ü( ‚•§ •°ò·‡#5ª•µÊ﯅¡X¨šÁ*F#TXJÊ ušJVÍ&=iÄs1‚3•'fý§5Ñ<=[íÞ­ PÚ;ѱÌ_~Ä££8rÞ ²w;’hDT°>ÈG¬8Á²ÚzŽ®ò®qZcqJêäÞ-ö[ܘbň±çb“ж31²n×iƒðÕ;1¶þÉ ªX‰,ßqÏ$>•î íZ¥Z 1{ç൵+ƒÕµ¥°T$§K]á»Ûï*·¤tMI’ÂZbŽÕiÒ˜}bÓ0£ª5›¨ [5Ž^ÝœWøÂÝh° ¢OWun£¤5 a2Z.G2³YL]jåtì”ä ÁÓ‘%"©<Ôúʰsº UZvä‡ÄiÆÒM .÷V·™ø#kèýiíÌ–ª)µT[)BˆõÑ xB¾B€ÖT¨.¥~ð@VĶr#¸ü*åZNDŽH;âi ],©£öØpù(šºãö¼T.uCê•4@ÿ GÕÛ)Cx›®0ø#:ÏðFÒbR\(€€Ä®fã4Þ‰Fä¯HXƒÅ,†öEÑÔÜ]Öv²?tLÃvBY£ú6Êu5ÅAQ³1‘’¬x–HŒÐ‡ ^ ¸KwJôÖŽ5×CÚ¨vÜ«/B0$×k°=ðbÇ(Ï)w±A†Á† 11Í=èQšµ626ŒÜ/`G«µ<}—-Ö7KEHÈÉðóȤmݱû±·ø«Snmá=“䫚mݱŸ¡¶~ó·“äUóJæúòB|E LêŽy´jDÔ$G¢þÐñ7óR8ýÒ…Ç› WVe#·Ÿ p·Fx~•ݤF÷0Èÿ K¯æS<6’¡WШ; ´ÿ ¥Êø\Òuî†åÝ–VNœkÒ7oòX¨Á­Ø÷FÎÑä±g÷ÿ M~Çî=p,X´ ÝÌÚÅ‹’ÃjÖ.ØöÏñ qïQ¤ÓZE†° =6·]܈ s¸>v•Ž^Ý\wq9r‰Î\¸¡kURÒ$­*‹Nq?Þª*!sŠÆ:TU_u±T+øX¡ ®¹¡,ÄâÃBTsÜ$Ø›4m椴zÜK]’’›Pƒ @€#â˜`é¹=I‡fiV•Ôî“nRm+µFPOhÍ0B£ €+¬5c v•:P'ÒyÎ ‰V~‚Ó†ÖuókDoh$å\*ö%Ю=£«…aȼ½÷Û.-½VŒŠ¼'lyî±1¬3ó#ÞE¿ÔS¤gV£m›=§\û"—WU¤ÚǼÿ ÂnÁGŒÃ ‚õN D³õNÚíŒÕ;HôyÄÈ©P¹Ä{:?R‘Ô¨âF÷ø£bÅó® JS|‚R÷ivýáâ€Æé¡è³´IئÑT!§˜•ت‚¬â@q€wnïCWÄ@JU€ê¯m6]Ï:£âx'+ÒðXvÓ¦Úm=–´7œ $ì“B£~p%ÕŸUþ« N@¼üï~w˜ñø5®—'Ôe»¤5ã//€ž~‰Tþ›Å7•#¤× Íö pÄ$ùeåì*«ÓŠEØWEÈsßg ¦ûvžSsLpºÊW–âµEWöˬH; ™!CYõZ ÃÄf æ#1W. \uWâ\,\Çf j’<qTbên›Î[vxx£ë 'ö¨1›˜ÀM¼Pÿ H)ƒêêŒA7s,|F“ 꺸k³9Ìö*ç®;Ö!Ö$Eiž•¹ÒÚ†ýóéÝû¾ÕS®ó$’NÝäŸz¤5r¦ãÄÃD÷Üø!°ø‡Ô&@m™Ì^Ãä­d q5Lnÿ N;.6½·N|#ä"1Nƒx“ã<3('&ñßt  ~ªu”1Tb㫨9ê–›–bìd$ߣ=#ÕãÒmU¯eí$EFù5ýYô櫨æì™Ç—±ssM]·á¿0ÕåJRÓªîiƒ+O58ÖñªŠÒx" \µâá¨i’¤i —Ö ” M+M¤ë9‚‰A¦°Qõ¾ßøK~¼Ã‘g…Ö´~÷Ï[3GUœÒ½#…kàÔ®Ò”‰³·dWV‰IP‰Ú8u¹”E ÖqLj¾êÕCBš{A^Âß;–¨`¯¬ìö ˼ ×tìø.tƐm*n¨y4o&Àx¥n¦×î‡aupáÛj8¿m›è¶ã!o½;ß0y^ý×^EÑ¿ÒjzŒ­)vÚÑnÄL …^ªô× ‡—‚3k Îý­hï]içå–îÏ*÷ñþ»Ô CÒjøjÍznˆ´ ¹#b'Fô‹ ‰v¥'’à'T´ƒHýÍ%M‰ ƒ&ÆÇŒï1 ‘ –Þ ‰i¬s žR-Ÿ kЬá¬7:þ 0ŒÅÒÕ/aÙ¬ÃÝ#Úøœ ©aiVc‰. ¹¦ãµ” ›Yg¦›ÆÎýº°f³7ƒhá·¸­}&D9¡ÂsÉÙÞèŠõØàC™¨ñbFC|´Ü(ŸƒÚÒ-%»'a Ì¿)ËÇn¿úÿ ÞŽX…4ÊÅH^ôΑí@ù¹Eh¶“L8Çjù ¼ÎåVªóR©Ï5uà V4lZß®=€xÖŸ–ÑÈ ÷”¨°¾__yM1tÉ?uÆþIkÄgæ@þ[¢†°XÃJ£j·:nkÅ¢u ‘}âGzö­/IµèЬ¼48q¦F°ŽR¼=ûì{´¯RýicS ÕÛ íNtÍÙï£,w4rêì®»~x(©Uñ§#Ñ&œÕ¤>ÎåÍÓ9’Ö{9eV­[Öjâ²ãu]˜å2›qÑšÕJç0€sÄ|Êëè0튔bÁ>“{×_F`Ø©ºê:µä,v¤ðfc1±"«ÔÍän1#=· Âøv~H½ÐßA¾¿Ü€Óš]Õ; I¾÷ç‚Qi†î¹9ywÔKG˜áñ zQY—§ÃÕZ07§X‚ Áh;ÁM)iÌCH-¯T‘ë|A0{Ò½LÚ–TâÖkÜ’dÀ“rmm»”جPF³ÖcbE§T€ÒxKºû’Ó®7±²(\4ŽÃ¸Uu@j™yĵ;³µ!Á¢b.W¤=mõ´êµK k ¸K^ÜÛ#p*Ü14qkZç5ïë †°5Ï%ÍÛ<Õ¤×Ô¥ê†C Õ´¼ú$ƒÖ“”]Ù¬qÞÚ[4©ý!ûÏ—Áb쳐XµA¬â~`›Çr¸8ìùÝ䫦<>ä÷«?xs´ÇÑ /á;¹øüÊÈÙà{"@Žïzâ¬[âß‚ U_<ÇŸ½4èN˜ú61®qŠu ¦þF£»äJ_ˆÙÎ~ ÞAã–݄ϗrŠD;xTž‘ô`É«…suãO`?³à™ô Lý#Íc5öoæØ‚y´´÷«ZR§<&JÇ+éâô´€i!Àˆ0æAoàðLèÖ-2ŸõW.’t^–(KÁmHµV@xÜÇy®Ñø­â^:Ú3w· 7½¹°ñ¸â¹®:',«Mœ—n­Á+Ãbš LÈ‘ÄnRÓÅœ%¦²‰¨ùQ:¤f‚ "PÕtô¸…cæl…&˜Ú˜Ôkv‹ž+vŠ,=¢v­6—Xy*¥t£«<™:“aîϲ=¦6rO]XI¿Œ÷¤zÚ­›¶ 6÷”w\d ü~v®ˆÌk«^m<ÿ ¢‰Õ\)ùºŽ;… lîÙÅEŠ®cѾ@vnMÏ,¼“ñ•ŽBxðÃzãÇç%3ˆ"}Ù•Åî> BÉú;Ò]V+P˜F_´ßé> Øše|ï‡ÄOmFæÇ ãqÞ$/xÐx­z`ï9"œÜij‚!7.\Td…9M‡•iŽ‹¾‘50ÞŽn¥ß4ÉôO ¹*í^QêËÜÇÌ8=ާs‰'ÂëÙ«á%Pú[O †ÅP¯Vsް.‰,kc¶ ¬A9n˜XÎ-ÞšN["¹QÕ‰ƒMýÁߺXJæÍaLj¾×Ãmã¾ãÚ uñÒþåQô¦¥ /ÄUx:‚ÍÜ’ Đ©ØÝ3V¨‰ÕnÐ6ó*óúK­«…c ¯U òhsý­jóÔj#,ímŒRµ«lbïUTŒÑ8†Ä0œÏr`ð¡¬É Ї ë"À² ™ 6¥ f¶ ¢ÚoܱԷ-<Àî)†a¶ž'Ú»¨TXqØæ¶÷YÄHy˜9ÈIW­YÀuMFë ºÏ’AqÌ4·/Ú †ô'i$øä­=Ä Ý|öK×40è|È6p‘0§)o¥ctî§H+CA-“ xØ|ÐXАç l8íºð3Ø:³¤¬KX¯UÿÙ getTemplate() ) { print( 'You should NOT set "'.$template.'" as Default Template.' ); die; } $app = JFactory::getApplication(); $instance = 'instance'; if ( isset( $app->cck_idx ) && $app->cck_idx[0] !== false ) { $instance = 'instance2'; } if ( !self::${$instance} ) { self::${$instance} = new CCK_Rendering(); } return self::${$instance}; } private $me; var $id; var $desc; var $form; var $mode; var $mode_property; var $name; var $type; var $type_infos; var $markup; var $markup_pos; var $method; var $methodRender; var $responsive; var $path; var $path_lib; var $params; var $positions; var $grid; var $infinite; var $css; var $browser; var $debug; var $js; var $js2; var $profiler; // __call public function __call( $method, $args ) { $prefix = strtolower( substr( $method, 0, 3 ) ); $property = strtolower( substr( $method, 3 ) ); if ( empty( $prefix ) ) { return; } if ( $prefix == 'get' ) { $fieldname = $args[0]; $count = count( $args ); if ( $count == 1 ) { if ( empty( $property ) ) { if ( isset ( $this->me[$fieldname] ) ) { return $this->me[$fieldname]; } } else { if ( isset ( $this->me[$fieldname]->$property ) ) { return $this->me[$fieldname]->$property; } } } else { if ( $count == 2 ) { return empty( $property ) ? @$this->me[$fieldname]->{$this->mode_property}[$args[1]] : @$this->me[$fieldname]->{$this->mode_property}[$args[1]]->$property; } else { return empty( $property ) ? @$this->me[$fieldname]->{$this->mode_property}[$args[1]]->{$this->mode_property}[$args[2]] : @$this->me[$fieldname]->{$this->mode_property}[$args[1]][$args[2]]->$property; } } } } // __get public function __get( $property ) { if ( isset( $this->$property ) ) { return $this->$property; } } // doDebug public function doDebug() { return $this->debug; } // isDesc protected function isDesc( $position = '' ) { return ( $this->desc && $this->desc == $position ) ? -1 : 0; } // renderDesc protected function renderDesc() { $desc = ''; if ( $desc != '' ) { JPluginHelper::importPlugin( 'content' ); $desc = JHtml::_( 'content.prepare', $desc ); } return $desc; } // -------- -------- -------- -------- -------- -------- -------- -------- // Init // initialize public function init() { $this->initialize(); } public function initialize() { $app = JFactory::getApplication(); $idx = '_'; if ( isset( $app->cck_idx ) ) { $app->cck_idx[0] = false; if ( count( $app->cck_idx ) > 1 ) { $idx = array_pop( $app->cck_idx ); } } $me = CCK_Document::getInstance( 'html' ); $this->me = ( isset( $me->fields ) ) ? $me->fields : array(); $this->config = array( 'doComputation'=>0, 'mode'=>$me->cck_mode ); $this->id = 'cck'.( ( (int)$me->pk > 0 ) ? $me->pk : $me->id.'r' ); $this->desc = ''; $this->mode = $me->cck_mode; $this->client = $me->cck_client; $this->name = $me->template; $this->template = $me->template; $this->type = $me->cck_type; $this->type_infos = NULL; $this->location = ( $app->isAdmin() ) ? 'admin' : 'site'; $this->theme = $me->theme; $this->infinite = $me->infinite; $this->params = $me->cck_params; $this->path = $me->cck_path; $this->path_lib = dirname(__FILE__); $this->positions = $me->positions; $this->positions2 = array(); $this->positions_m = $me->positions_more; $this->base = JUri::root( true ); $this->css = ''; $this->js = ''; $this->profiler = @$me->profiler; $this->profiler_log = @$me->profiler_log; $this->translate = JCck::getConfig_Param( 'language_jtext', 0 ); // Nested Lists.. yeah! if ( isset( $me->list[$idx] ) ) { $this->list = $me->list[$idx]; } elseif ( isset( $me->list ) ) { $this->list = $me->list; } // Additional parameters (renderItem) if ( isset( $me->i_infos ) ) { $this->i_infos = $me->i_infos; } if ( isset( $me->i_params ) ) { $this->i_params = $me->i_params; } if ( isset( $me->i_positions ) ) { $this->i_positions = $me->i_positions; } if ( isset( $me->i_positions_more ) ) { $this->i_positions_more = $me->i_positions_more; } if ( ! @$this->params['variation_default'] ) { if ( $app->isAdmin() ) { $this->params['variation_default'] = 'seb_css3b'; } else { $this->params['variation_default'] = JCck::getConfig_Param( ( $this->mode == 'form' ? 'site_variation_form' : 'site_variation' ), 'seb_css3' ); } } $this->id_attributes = ( isset( $this->params['rendering_custom_attributes'] ) && $this->params['rendering_custom_attributes'] ) ? ' '.$this->params['rendering_custom_attributes'].' ' : ''; $this->id_class = ( isset( $this->params['rendering_css_class'] ) && $this->params['rendering_css_class'] ) ? $this->params['rendering_css_class'].' ' : ''; $this->item_attributes = ( isset( $this->params['rendering_item_attributes'] ) && $this->params['rendering_item_attributes'] ) ? ' '.$this->params['rendering_item_attributes'].' ' : ''; if ( $this->initRendering() === false ) { $app = JFactory::getApplication(); $app->enqueueMessage( 'Oops! Template Init. failed.. ; (', 'error' ); return false; } $this->initHtml(); $this->initDebug(); // Scripts JCck::loadjQuery(); // Stylesheets $base = true; $css = $this->getStyleParam( 'rendering_css_core' ); $css = (int)( ( $css != '' ) ? $css : JCck::getConfig_Param( 'css_core', '1' ) ); $doc = JFactory::getDocument(); if ( !$css ) { return; } elseif ( $css < 0 ) { $base = false; $css = $css * -1; } if ( $base ) { $doc->addStyleSheet( JUri::root( true ).'/media/cck/css/cck.css' ); if ( $this->responsive ) { $doc->addStyleSheet( JUri::root( true ).'/media/cck/css/cck.responsive.css' ); } } if ( $css == 1 || ( $css == 2 && $this->mode == 'content' ) || ( $css == 3 && $this->mode == 'form' ) ) { if ( $this->client != 'list' ) { if ( $this->isFile( $this->path.'/css/'.$this->client.'.css' ) ) { $doc->addStyleSheet( JUri::root( true ).'/templates/'.$this->name. '/css/'.$this->client.'.css' ); } else { $doc->addStyleSheet( JUri::root( true ).'/media/cck/css/cck.'.$this->client.'.css' ); } } } } // initRendering protected function initRendering() { switch ( $this->mode ) { case 'content': $this->method = 'getValue'; $this->methodRender = 'onCCK_FieldRenderContent'; $this->mode_property = 'value'; break; case 'form': $this->method = 'getForm'; $this->methodRender = 'onCCK_FieldRenderForm'; $this->mode_property = 'form'; break; default: return false; break; } $this->config['client'] = $this->client; $this->config['computation'] = array(); $this->config['rendering_id'] = $this->id; // Markup $file2 = $this->path.'/fields/'.$this->type.'/markup.php'; $file1 = $this->path.'/fields/markup.php'; if ( $this->isFile( $file2 ) ) { $this->markup = 'cckMarkup_'.$this->name.'_'.$this->type; include_once $file2; } elseif ( $this->isFile( $file1 ) ) { $this->markup = 'cckMarkup_'.$this->name; include_once $file1; } $this->responsive = ( $this->location == 'admin' ) ? 1 : JCck::getConfig_Param( 'responsive', 0 ); return true; } // initHtml protected function initHtml() { $this->grid = array( 1=>array( 0=>1, 1=>'100' ), 2=>array( 0=>1, 1=>'50', 2=>'50' ), 3=>array( 0=>1, 1=>'33f', 2=>'34f', 3=>'33f' ), 4=>array( 0=>1, 1=>'25', 2=>'25', 3=>'25', 4=>'25' ), 5=>array( 0=>1, 1=>'20', 2=>'20', 3=>'20', 4=>'20', 5=>'20' ), 6=>array( 0=>1, 1=>'17f', 2=>'16f', 3=>'17f', 4=>'17f', 5=>'16f', 6=>'17f' ) ); return true; } // initDebug protected function initDebug() { if ( $this->getStyleParam( 'debug', 0 ) ) { $this->debug = true; if ( @$this->profiler ) { $this->profiler_log = '
'.$this->profiler_log.'
'; } else { jimport( 'joomla.error.profiler' ); $this->profiler = new JProfiler(); $this->profiler_log = '
'; } } return true; } // finalize public function finalize() { $app = JFactory::getApplication(); $doc = JFactory::getDocument(); $js = ''; $tmpl = $app->input->get( 'tmpl' ); // Computation if ( $this->mode == 'form' && $this->config['doComputation'] ) { $format = JCck::getConfig_Param( 'computation_format', 0 ); if ( !$format ) { $format = JText::_( 'COM_CCK_COMPUTATION_FORMAT_AUTO' ); } $doc->addScript( JUri::root( true ).'/media/cck/js/cck.calculation-3.0.0.min.js' ); if ( !( $format == '1,234,567.89' || $format == 'COM_CCK_COMPUTATION_FORMAT_AUTO' ) ) { if ( $format == '1 234 567.89' ) { $search = '/(-?\$?)(\d+( \d{3})*(\.\d{1,})?|\.\d{1,})/g'; $replace = 'v.replace(/[^0-9.\-]/g, "")'; $sepD = '.'; $sepT = ' '; } elseif ( $format == '1 234 567,89' ) { $search = '/(-?\$?)(\d+( \d{3})*(,\d{1,})?|,\d{1,})/g'; $replace = 'v.replace(/[^0-9,\-]/g, "").replace(/,/g, ".")'; $sepD = ','; $sepT = ' '; } elseif ( $format == '1.234.567,89' ) { $search = '/(-?\$?)(\d+(\.\d{3})*(,\d{1,})?|,\d{1,})/g'; $replace = 'v.replace(/[^0-9,\-]/g, "").replace(/,/g, ".")'; $sepD = ','; $sepT = '.'; } $formatNumber = JCck::getConfig_Param( 'computation_format_out', 0 ) ? 'formatNumber:1, ' : ''; $doc->addScriptDeclaration( 'jQuery.Calculation.setDefaults({ '.$formatNumber.'sepDecimals:"'.$sepD.'", sepThousands:"'.$sepT.'", reNumbers:'.$search.', cleanseNumber:function (v){ return '.$replace.'; } });' ); } elseif( JCck::getConfig_Param( 'computation_format_out', 0 ) ) { $doc->addScriptDeclaration( 'jQuery.Calculation.setDefaults({ formatNumber:1 });' ); } } if ( count( $this->config['computation'] ) ) { $computation = ''; foreach ( $this->config['computation'] as $event=>$compute ) { $ids = array(); if ( count( $compute ) ) { foreach ( $compute as $k=>$v ) { $computation .= $v['js'].' '; $ids_k = explode( ',', $v['_'] ); $ids = array_merge( $ids, $ids_k ); } } $ids = implode( ', ', array_unique( $ids ) ); if ( $event != 'none' ) { $this->js .= '$("'.$ids.'").bind("'.$event.'", JCck.Core.recalc);'; } } $js = 'JCck.Core.recalc = function() {'.$computation.'}'; $this->js .= 'JCck.Core.recalc();'; } // Stuff if ( $this->css != '' ) { if ( $tmpl == 'raw' ) { echo ''; } else { $doc->addStyleDeclaration( $this->css ); } } if ( $this->js != '' ) { $js = '(function ($){'.$js."\n".'$(document).ready(function(){'.$this->js.'});})(jQuery);'; if ( $tmpl == 'raw' ) { echo ''; } else { $doc->addScriptDeclaration( $js ); } } if ( $this->js2 != '' ) { $js = '(function ($){$(window).load(function(){'.$this->js2.'});})(jQuery);'; if ( $tmpl == 'raw' ) { echo ''; } else { $doc->addScriptDeclaration( $js ); } } } // -------- -------- -------- -------- -------- -------- -------- -------- // Fields // checkConditional public function checkConditional( $fieldname, $value ) { $values = explode( ',', $value ); $value = $this->getValue( $fieldname ); if ( is_array( $value ) ) { if ( array_diff( $value, $values ) ) { if ( array_diff( $values, $value ) ) { return 'style="display: none;"'; } } } else { if ( !in_array( $value, $values ) ) { return 'style="display: none;"'; } } return ''; } // countFields public function countFields( $position = '', $siblings = false ) { $count = 0; if ( $siblings === true ) { if ( $position == 'body' ) { $positions = array( 'mainbody', 'topbody', 'bottombody', 'sidebody-a', 'sidebody-b' ); foreach ( $positions as $p ) { if ( isset( $this->positions[$p] ) ) { $count++; } } } else { for ( $i = 0; $i < 6; $i++ ) { $p = chr( $i + 97 ); if ( isset( $this->positions[$position.'-'.$p] ) ) { $count++; } } } } else { if ( isset( $this->positions[$position] ) ) { $count = count( $this->positions[$position] ); } } return $count; //return $this->isDesc( $position ); } // doExist public function doExist( $fieldname = '' ) { if ( isset( $this->me[$fieldname] ) ) { return true; } return false; } // getLabel public function getLabel( $fieldname = '', $html = false, $suffix = '' ) { if ( ! isset ( $this->me[$fieldname] ) ) { return; } $label = trim( $this->me[$fieldname]->label ); if ( !( $html === true && $label ) ) { return trim( $label ); } if ( $this->mode_property == 'value' ) { $label = ''; } else { if ( $suffix ) { $label .= ' '.$suffix.''; } if ( $label ) { $label = ''; } } return $label; } // getFields public function getFields( $position = '', $type = '', $prepare = true ) { $fields = array(); if ( isset( $this->positions[$position] ) ) { if ( $type ) { foreach ( $this->positions[$position] as $name ) { if ( $type == $this->getType( $name ) ) { if ( $prepare === true ) { $fields[$name] = $this->get( $name ); } else { $fields[] = $name; } } } } else { if ( $prepare === true ) { foreach ( $this->positions[$position] as $name ) { $fields[$name] = $this->get( $name ); } } else { return $this->positions[$position]; } } } return $fields; } // renderField public function renderField( $fieldname, $options = NULL ) { $field = $this->get( $fieldname ); $html = ''; if ( !$field ) { return $html; } if ( $field->display ) { $html = JCck::callFunc_Array( 'plgCCK_Field'.$field->type, $this->methodRender, array( &$field, &$this->config ) ); if ( $field->display > 1 && $html != '' ) { if ( ! $options ) { $options = new JRegistry; } if ( $field->markup == 'none' ) { if ( $this->methodRender == 'onCCK_FieldRenderForm' ) { // Conditional if ( $field->conditional ) { $this->setConditionalStates( $field ); } } // Label $label = ''; if ( $options->get( 'field_label', $this->getStyleParam( 'field_label', 1 ) ) ) { $label = $this->getLabel( $fieldname, true, ( $field->required ? '*' : '' ) ); $html = $label.$html; } } elseif ( $this->markup ) { $call = $this->markup; $html = $call( $this, $html, $field, $options ); } else { if ( $this->methodRender == 'onCCK_FieldRenderForm' ) { // Computation if ( @$field->computation ) { $this->setComputationRules( $field ); } // Conditional if ( @$field->conditional ) { $this->setConditionalStates( $field ); } } // Description $desc = ''; if ( $this->getStyleParam( 'field_description', 0 ) ) { if ( $field->description != '' ) { if ( $this->getStyleParam( 'field_description', 0 ) == 5 ) { JHtml::_( 'bootstrap.popover', '.hasPopover', array( 'container'=>'body', 'html'=>true, 'trigger'=>'hover' ) ); $desc = '
'; } else { $desc = $field->description; } $desc = '
'.$desc.'
'; } } // Label $label = ''; if ( $options->get( 'field_label', $this->getStyleParam( 'field_label', 1 ) ) ) { $label = $this->getLabel( $fieldname, true, ( $field->required ? '*' : '' ) ); $label = ( $label != '' ) ? '
'.$label.'
' : ''; } // Markup $html = '
'.$html.'
'; $html = '
'.$label.$html.$desc.'
'; } } } return $html; } // retrieveValue public function retrieveValue( $fieldname ) { $field = $this->get( $fieldname ); if ( !$field->display ) { return ''; } return $field->value; } // setComputationRules public function setComputationRules( &$field ) { $computation = new JRegistry; $computation->loadString( $field->computation_options ); $computation_options = $computation->toObject(); if ( $computation_options->calc == 'custom' ) { $computed = ''; $computations = explode( ',', $field->computation ); if ( count( $computations ) ) { foreach ( $computations as $k=>$v ) { $computed .= chr( 97 + $k ).':$("'.$v.'")'.','; } $computed = substr( $computed, 0, -1 ); } $event = @$computation_options->event ? $computation_options->event : 'keyup'; $targets = @$computation_options->targets ? json_encode( $computation_options->targets ) : '[]'; $format = ''; if ( $computation_options->format == 'toFixed' ) { $format = '.'.$computation_options->format.'('.$computation_options->precision.')'; } elseif ( $computation_options->format ) { $format = '.'.$computation_options->format.'()'; } if ( @$computation_options->recalc ) { $this->config['computation'][$event][] = array( '_'=>$field->computation, 'js'=>'$("#'.$field->name.'").calc( "'.$computation_options->custom.'", {'.$computed.'}, ' .$targets.', function (s){return s'.$format.';} );' ); } else { $this->addScriptDeclaration( '(function ($){JCck.Core.recalc_'.$field->name.' = function() {' .'$("#'.$field->name.'").calc( "'.$computation_options->custom.'", {'.$computed.'}, '.$targets.', function (s){return s'.$format.';} );}'.'})(jQuery);' ); if ( $event != 'none' ) { $this->addJS( '$("'.$field->computation.'").bind("'.$event.'", JCck.Core.recalc_'.$field->name.'); JCck.Core.recalc_'.$field->name.'();' ); } } } else { $event = @$computation_options->event ? $computation_options->event : 'keyup'; $targets = @$computation_options->targets ? ', '.json_encode( $computation_options->targets ) : ''; if ( @$computation_options->recalc ) { $this->config['computation'][$event][] = array( '_'=>$field->computation, 'js'=>'$("'.$field->computation.'").' .$computation_options->calc.'("'.$event.'", "#'.$field->name.'"'.$targets.');' ); } else { $this->addJS( '$("'.$field->computation.'").'.$computation_options->calc.'("'.$event.'", "#'.$field->name.'"'.$targets.');' ); } } $this->config['doComputation'] = 1; } // setConditionalStates public function setConditionalStates( &$field ) { if ( $field->markup == 'none' ) { $field->conditional_options = str_replace( array( ' #form#', '#form#' ), '', $field->conditional_options ); $selector = $field->name; } else { $field->conditional_options = str_replace( '#form#', '#'.$field->name, $field->conditional_options ); $selector = $this->id.'_'.$field->name; } $this->addJS( '$("#'.$selector.'").conditionalStates('.$field->conditional_options.');' ); } // -------- -------- -------- -------- -------- -------- -------- -------- // Items // getItem public function getItem( $pk ) { return ( isset( $this->list[$pk] ) ) ? $this->list[$pk] : NULL; } // getItems public function getItems() { return $this->list; } // renderItem public function renderItem( $pk, $params = array() ) { $doc = CCK_Document::getInstance( 'html' ); $doc->fields = $this->list[$pk]->fields; $doc->finalize( 'content', $this->type, 'item', $this->i_positions, $this->i_positions_more, $this->i_infos, $this->list[$pk]->pid ); return $doc->render( false, $this->i_params ); } // renderItemField public function renderItemField( $pk, $params = array() ) { $fields = $this->list[$pk]->fields; $name = $params['field_name']; $target = $params['target']; $class = ''; $res = ''; $type = 'text'; if ( isset( $fields[$name] ) ) { $res = $fields[$name]->$target; $type = $fields[$name]->type; $class = $fields[$name]->markup_class; } return '
'.$res.'
'; } // renderItemLink public function renderItemLink( $pk ) { $res = ''; $items = $this->list[$pk]; if ( isset( $items ) ) { $res = $item->location .':'. $pk . ' (coming soon)'; } return '
'.$res.'
'; } // -------- -------- -------- -------- -------- -------- -------- -------- // Positions // forcePosition public function forcePosition( $position = '', $variation = 'none', $height = '', $excluded = array() ) { return $this->renderPosition( $position, 'none', $height, $excluded, true ); } // getPosition public function getPosition( $name ) { return ( isset( $this->positions_m[$name] ) ) ? $this->positions_m[$name] : new stdClass; } // getPositions public function getPositions() { if ( !count( $this->positions2 ) && count( $this->positions ) ) { foreach ( $this->positions as $k=>$v ) { $this->positions2[$k] =& $this->positions_m[$k]; } } return $this->positions2; } // renderPos protected function renderPos( $pos = '' ) { global $user; $cck =& $this; if ( $this->isFile( $pos ) ) { ob_start(); include $pos; return ob_get_clean(); } return; } // renderPosition public function renderPosition( $position = '', $variation = '', $height = '', $excluded = array(), $force = false ) { $html = ''; if ( ! $variation ) { $variation = ( isset( $this->positions_m[$position]->variation ) && $this->positions_m[$position]->variation ) ? $this->positions_m[$position]->variation : $this->params['variation_default']; } if ( isset( $this->positions_m[$position]->variation_options ) && $this->positions_m[$position]->variation_options != '' ) { $options = new JRegistry; $options->loadString( $this->positions_m[$position]->variation_options ); } else { $options = NULL; } $legend = ( isset( $this->positions_m[$position]->legend ) && $this->positions_m[$position]->legend ) ? trim( $this->positions_m[$position]->legend ) : (( $this->doDebug() ) ? $position : '' ); $pos2 = $this->path.'/positions/'.$this->type.'/'.$this->client.'/'.$position.'.php'; $pos1 = $this->path.'/positions/'.$position.'.php'; if ( $this->isFile( $pos2 ) && ! $force ) { $html .= $this->renderPos( $pos2 ); } elseif ( $this->isFile( $pos1 ) && ! $force ) { $html .= $this->renderPos( $pos1 ); } else { $n = $this->countFields( $position ); if ( $n > 0 ) { $names = $this->positions[$position]; if ( count( $excluded ) ) { $names = array_diff( $names, $excluded ); } foreach ( $names as $name ) { $html .= $this->renderField( $name, $options ); } } else { $legend = ''; } } if ( $html != '' && trim( $variation ) ) { $html = $this->renderVariation( $variation, $legend, $html, $options, $position, $height ); } return $html; } // renderPositions public function renderPositions( $position = '', $variation = '', $n = 0, $w = '', $h = '' ) { $doc = JFactory::getDocument(); $html = ''; $positions = array(); for ( $i = 0; $i < 6; $i++ ) { $p = chr( $i + 97 ); $pos = $position.'-'.$p; $width = ''; $height = ''; if ( @$this->positions_m[$pos]->width != '' ) { if ( strpos( $this->positions_m[$pos]->width, 'px' ) !== false ) { $width = $this->positions_m[$pos]->width; $doc->addStyleDeclaration( '.cck-w'.$width.'{width:'.$width.';}' ); } else { $width = str_replace( '%', '', $this->positions_m[$pos]->width); } } else { $width = $w; } if ( @$this->positions_m[$pos]->height != '' ) { //$height = 'cck-h'.$this->positions_m[$pos]->height; //$doc->addStyleDeclaration( '.cck-h'.$this->positions_m[$pos]->height.'{height:'.$this->positions_m[$pos]->height.';}' ); $height = $this->positions_m[$pos]->height; } elseif ( $h != '' ) { //$height = 'cck-h'.$h; //$doc->addStyleDeclaration( '.cck-h'.$h.'{height:'.$h.';}' ); $height = $h; } if ( $this->countFields( $pos ) ) { $pos_html = $this->renderPosition( $pos, '', $height ); if ( $pos_html != '' ) { $positions[$pos] = array( 'html'=>$pos_html, 'width'=>$width ); } } } $n = count( $positions ); foreach ( $positions as $k=>$p ) { $html .= '
' . '
' . $p['html'] . '
' . '
' ; } if ( $variation ) { $legend = ''; //Todo $options = new JRegistry; $html = $this->renderVariation( $variation, $legend, $html, $options, $position.'_line', '', false ); } if ( $html != '' ) { $html = '
' . $html . '
' . '
' ; // Height if ( $this->getStyleParam( 'position_'.$position, 1 ) == 2 ) { $js = '$("#'.$this->id.' .cck-line-'.$position.' > div:not(.clr)").deepestHeight();'; $js .= '$("#'.$this->id.' .cck-line-'.$position.' div.'.$this->id.'-deepest").deepestHeight();'; $this->addJS( $js ); } } return $html; } // -------- -------- -------- -------- -------- -------- -------- -------- // Variations // renderVariation public function renderVariation( $variation, $legend, $content, $options, $position, $height = 0, $markup = true ) { if ( $variation != 'none' ) { $file = 'variations/'.$variation.'/'.$variation.'.php'; if ( $this->isFile( $this->path.'/'.$file ) ) { $file = $this->path.'/'.$file; } else { $file = $this->path_lib.'/'.$file; } // Init global $user; static $loaded = array(); $id = $this->id.'_'.$position; $app = JFactory::getApplication(); $cck = &$this; $css = ''; $doc = JFactory::getDocument(); // Prepare if ( $this->translate && trim( $legend ) ) { $legend = JText::_( 'COM_CCK_' . str_replace( ' ', '_', trim( $legend ) ) ); } if ( is_object( $options ) ) { if ( strpos( $position, '_line' ) !== false ) { // } else { $orientation = $options->get( 'field_orientation', 'vertical' ); $field_width = $options->get( 'field_width', '100%' ); if ( $orientation == 'horizontal' ) { $field_width = ( $field_width == '100%') ? '50%' : $field_width; $css .= '#'.$id.'.'.$variation.'.'.$orientation.' div.cck_'.$cck->mode.'s { width: '.$field_width.'; }'."\n"; } $field_focus_border_color = trim( $options->get( 'field_focus_border_color', '' ) ); if ( $field_focus_border_color != '' && $field_focus_border_color != '#888888' ) { $css .= '#'.$id.'.'.$variation.'.'.$orientation.' div.cck_'.$cck->mode.'s input.inputbox:focus, '."\n" . '#'.$id.'.'.$variation.'.'.$orientation.' div.cck_'.$cck->mode.'s textarea.inputbox:focus, '."\n" . '#'.$id.'.'.$variation.'.'.$orientation.' div.cck_'.$cck->mode.'s select.inputbox:focus, '."\n" . '#'.$id.'.'.$variation.'.'.$orientation.' div.cck_'.$cck->mode.'s button.inputbox:focus{ border-color:'.$field_focus_border_color.'!important; }'."\n"; } $field_label_position = $options->get( 'field_label_position', 'left' ); if ( $field_label_position == 'top' ) { $css .= '#'.$id.'.'.$variation.'.'.$orientation.' div.cck_'.$cck->mode.'s div.cck_'.$cck->mode_property.'{ float:none; clear:both; }'."\n"; } $field_label_color = $options->get( 'field_label_color', '' ); if ( $field_label_color != '' ) { $css .= '#'.$id.'.'.$variation.'.'.$orientation.' div.cck_'.$cck->mode.'s div.cck_label{ color:'.$field_label_color.'; }'."\n"; } $field_label_align = $options->get( 'field_label_align', 'left' ); $field_label_width = $options->get( 'field_label_width', '145px' ); $field_label_padding = $options->get( 'field_label_padding', '0' ); $css .= '#'.$id.'.'.$variation.'.'.$orientation.' div.cck_label { width:'.$field_label_width.'; text-align:'.$field_label_align . '; padding:'.$field_label_padding.'; }'."\n"; $hasOptions = true; $legend2 = $options->get( 'legend_fieldname', '' ); if ( $legend2 != '' ) { if ( $this->getTypo( $legend2 ) != '' ) { $legend = $this->getTypo( $legend2 ); //} elseif ( $this->getLink( $legend2 ) != '' ) { // $legend = $this->getHtml( $legend2 ); } else { $target = $this->getTypo_target( $legend2 ); $legend = $this->{'get'.$target}( $legend2 ); } } } } elseif ( is_string( $options ) ) { $options2 = $options; $options = new JRegistry; $options->loadString( $options2 ); } else { $options = new JRegistry; $orientation = 'vertical'; $hasOptions = false; $field_label_width = '145px'; } $field_description = $this->getStyleParam( 'field_description', 0 ); if ( $field_description == 4 || $field_description == 5 ) { $css .= '#'.$id.'.'.$variation.'.'.$orientation.' div.cck_'.$this->mode.'s div.cck_desc{clear:none; float:left;}'."\n"; } elseif ( $field_description == 3 ) { $css .= '#'.$id.'.'.$variation.'.'.$orientation.' div.cck_'.$this->mode.'s div.cck_desc{width:'.$field_label_width.';}'."\n"; } elseif ( $field_description == 2 ) { $css .= '#'.$id.'.'.$variation.'.'.$orientation.' div.cck_'.$this->mode.'s div.cck_desc{margin-left:'.$field_label_width.';}'."\n"; } // Render if ( $this->isFile( $file ) ) { ob_start(); include $file; return ob_get_clean(); } } return $content; } // -------- -------- -------- -------- -------- -------- -------- -------- // Style // getStyleParam public function getStyleParam( $param = '', $default = '' ) { if ( isset( $this->params[$param] ) ) { return $this->params[$param]; } else { return $default; } } // -------- -------- -------- -------- -------- -------- -------- -------- // Type // getTypeInfos public function getTypeInfos() { if ( !$this->type_infos ) { $this->type_infos = ''; } return $this->type_infos; } // -------- -------- -------- -------- -------- -------- -------- -------- // Stuff // replaceLive public function replaceLive( $attr ) { if ( $attr != '' ) { if ( $attr != '' && strpos( $attr, '$cck' ) !== false ) { $matches = ''; $search = '#\$cck\->(get|retrieve)([a-zA-Z0-9_]*)\( ?\'([a-zA-Z0-9_,]*)\' ?\)(;)?#'; preg_match_all( $search, $attr, $matches ); if ( count( $matches[2] ) ) { foreach ( $matches[3] as $k=>$fieldname ) { $target = $matches[2][$k]; $method = ( $matches[1][$k] == 'retrieve' ) ? $matches[1][$k] : 'get'; $get = $method.$target; $replace = $this->$get( $fieldname ); $attr = str_replace( $matches[0][$k], $replace, $attr ); } } } } return $attr; } // getBrowser public function getBrowser( $property = 'name' ) { if ( ! $this->browser ) { $browser = JBrowser::getInstance(); $this->browser->name = $browser->getBrowser(); $this->browser->agent = $browser->getAgentString(); $this->browser->version = $browser->getVersion(); //todo: process to get the right info from agent...! } return @$this->browser->$property; } // isFile public function isFile( $path ) { static $paths = array(); if ( !isset( $paths[$path] ) ) { $paths[$path] = is_file( $path ); } return $paths[$path]; } // isGoingtoLoadMore public function isGoingtoLoadMore() { if ( $this->isLoadingMore() == -1 ) { return true; } return $this->infinite; } // isLoadingMore public function isLoadingMore() { $app = JFactory::getApplication(); if ( $app->input->get( 'format' ) == 'raw' ) { $infinite = $app->input->getInt( 'infinite' ); if ( $infinite == -1 ) { return -1; } elseif ( $infinite ) { return 1; } } return 0; } // fakeModule (deprecated) public function fakeModule( $legend, $content ) { $module = new stdClass; $module->showtitle = trim( $legend ) != '' ? 1 : 0; $module->title = $legend; $module->content = $content; return $module; } // w_grid public function w_grid( $n, $default = '' ) { if ( $default ) { return $default; } $w = $this->grid[$n][$this->grid[$n][0]++]; if ( $this->grid[$n][0] == count( $this->grid[$n] ) ) { $this->grid[$n][0] = 1; } return $w; } // w public function w( $position ) { return ( @$this->positions_m[$position]->width != '' ) ? $this->positions_m[$position]->width : ''; } // h public function h( $position ) { return ( @$this->positions_m[$position]->height != '' ) ? $this->positions_m[$position]->height : ''; } // setHeight public function setHeight( $height, $id, $class = '', $markup = '' ) { if ( $height ) { $class = ( $class ) ? ' .'.$class : ''; JFactory::getDocument()->addStyleDeclaration( '#'.$id.$class.' '.$markup.'{height:'.$height.';}' ); } } // addScript public function addScript( $url, $type = 'text/javascript', $defer = false, $async = false ) { JFactory::getDocument()->addScript( $url, $type, $defer, $async ); } // addScriptDeclaration public function addScriptDeclaration( $js, $event = '' ) { if ( $js ) { if ( $event == 'ready' ) { $js = '(function ($){$(document).ready(function(){'.$js.'});})(jQuery);'; } elseif ( $event == 'load' ) { $js = '(function ($){$(window).load(function(){'.$js.'});})(jQuery);'; } JFactory::getDocument()->addScriptDeclaration( $js ); } } // addStyleSheet public function addStyleSheet( $url, $type = 'text/css', $media = null, $attribs = array() ) { JFactory::getDocument()->addStyleSheet( $url, $type, $media, $attribs ); } // addStyleDeclaration public function addStyleDeclaration( $css ) { if ( $css ) { JFactory::getDocument()->addStyleDeclaration( $css ); } } // addCSS public function addCSS( $css ) { if ( $css ) { $this->css .= $css; } } // addJS public function addJS( $js, $event = 'ready' ) { if ( $js ) { if ( $event == 'load' ) { $this->js2 .= $js; } else { $this->js .= $js; } } } } ?>