PageRenderTime 65ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 1ms

/administrator/components/com_swmenufree/modules/mod_swmenufree/functions.php

https://github.com/viollarr/alab
PHP | 1819 lines | 1484 code | 232 blank | 103 comment | 394 complexity | 8f4ed9e1a005d55607ade2458a46d43e MD5 | raw file
Possible License(s): LGPL-2.1, GPL-2.0, AGPL-3.0, Apache-2.0, BSD-3-Clause, GPL-3.0
  1. <?php
  2. /**
  3. * swmenufree v6.0
  4. * http://swmenufree.com
  5. * Copyright 2006 Sean White
  6. * */
  7. defined('_JEXEC') or die('Restricted access');
  8. function swGetMenuFree($menu, $id, $hybrid, $cache, $cache_time, $use_table, $parent_id, $levels) {
  9. global $my, $mainframe;
  10. $start = time();
  11. $absolute_path = JPATH_ROOT;
  12. $config = &JFactory::getConfig();
  13. $langsw = $config->getValue('language');
  14. $swmenufree_array = array();
  15. $ordered = array();
  16. $final_menu = array();
  17. $file = $absolute_path . "/modules/mod_swmenufree/cache/$menu,$id,$hybrid,$cache,$cache_time,$use_table,$parent_id,$levels,$langsw.cache";
  18. if ($cache) {
  19. if (!file_exists($file)) {
  20. $swmenufree_array = swGetMenuLinksFree($menu, $id, $hybrid, $use_table);
  21. $final_menu = get_Final_MenuFree($swmenufree_array, $parent_id, $levels);
  22. $handle = fopen($file, 'w');
  23. fwrite($handle, var_export($final_menu, 1));
  24. fclose($handle);
  25. } else if (strtotime($cache_time, filemtime($file)) < strtotime("now") && is_writable($file)) {
  26. $swmenufree_array = swGetMenuLinksFree($menu, $id, $hybrid, $use_table);
  27. $final_menu = get_Final_MenuFree($swmenufree_array, $parent_id, $levels);
  28. $handle = fopen($file, 'w');
  29. fwrite($handle, var_export($final_menu, 1));
  30. fclose($handle);
  31. } else if (file_exists($file)) {
  32. $handle = fopen($file, 'r');
  33. $import = fread($handle, 1000000);
  34. fclose($handle);
  35. eval('$final_menu = ' . $import . ';');
  36. }
  37. } else {
  38. $swmenufree_array = swGetMenuLinksFree($menu, $id, $hybrid, $use_table);
  39. $final_menu = get_Final_MenuFree($swmenufree_array, $parent_id, $levels);
  40. }
  41. return $final_menu;
  42. }
  43. function get_Final_MenuFree($swmenufree_array, $parent_id, $levels) {
  44. global $mainframe;
  45. $valid = 0;
  46. $my = & JFactory::getUser();
  47. $final_menu = array();
  48. for ($i = 0; $i < count($swmenufree_array); $i++) {
  49. $swmenu = $swmenufree_array[$i];
  50. if ($swmenu['ACCESS'] <= $my->gid) {
  51. if ($swmenu['PARENT'] == $parent_id) {
  52. $valid++;
  53. }
  54. if (strcasecmp(substr($swmenu['URL'], 0, 4), "http")) {
  55. $swmenu['URL'] = JRoute::_($swmenu['URL'], 1);
  56. }
  57. $swmenu['URL'] = str_replace('&amp;', '&', $swmenu['URL']);
  58. $final_menu[] = array("TITLE" => $swmenu['TITLE'], "URL" => $swmenu['URL'], "ID" => $swmenu['ID'], "PARENT" => $swmenu['PARENT'], "ORDER" => $swmenu['ORDER'], "TARGET" => $swmenu['TARGET'], "ACCESS" => $swmenu['ACCESS']);
  59. }
  60. }
  61. if (count($final_menu) && $valid) {
  62. $final_menu = chainFree('ID', 'PARENT', 'ORDER', $final_menu, $parent_id, 25);
  63. } else {
  64. $final_menu = array();
  65. }
  66. return $final_menu;
  67. }
  68. function swGetMenuLinksFree($menu, $id, $hybrid, $use_tables) {
  69. global $lang, $database, $my, $absolute_path, $offset,$Itemid;
  70. $database = &JFactory::getDBO();
  71. $config = &JFactory::getConfig();
  72. $time_offset = $config->getValue('offset');
  73. $now = date("Y-m-d H:i:s", time() + $time_offset * 60 * 60);
  74. $swmenufree_array = array();
  75. if ($menu == "swcontentmenu") {
  76. $sql = "SELECT #__sections.*
  77. FROM #__sections
  78. INNER JOIN #__content ON #__content.sectionid = #__sections.id
  79. AND #__sections.published = 1
  80. AND ( publish_up = '0000-00-00 00:00:00' OR publish_up <= '$now' )
  81. AND ( publish_down = '0000-00-00 00:00:00' OR publish_down >= '$now' )
  82. ORDER BY #__content.ordering
  83. ";
  84. $database->setQuery($sql);
  85. $result = $database->loadObjectList();
  86. for ($i = 0; $i < count($result); $i++) {
  87. $result2 = $result[$i];
  88. if ($use_tables) {
  89. $url = "index.php?option=com_content&view=section&id=" . $result2->id;
  90. } else {
  91. $url = "index.php?option=com_content&view=section&layout=blog&id=" . $result2->id;
  92. }
  93. $swmenufree_array[] = array("TITLE" => $result2->title, "URL" => $url, "ID" => $result2->id, "PARENT" => 0, "ORDER" => $result2->ordering, "TARGET" => 0, "ACCESS" => $result2->access);
  94. }
  95. $sql = "SELECT #__categories.*
  96. FROM #__categories
  97. INNER JOIN #__content ON #__content.catid = #__categories.id
  98. AND #__categories.published = 1
  99. AND ( publish_up = '0000-00-00 00:00:00' OR publish_up <= '$now' )
  100. AND ( publish_down = '0000-00-00 00:00:00' OR publish_down >= '$now' )
  101. ORDER BY #__content.ordering
  102. ";
  103. $database->setQuery($sql);
  104. $result = $database->loadObjectList();
  105. for ($i = 0; $i < count($result); $i++) {
  106. $result2 = $result[$i];
  107. if ($use_tables) {
  108. $url = "index.php?option=com_content&view=category&id=" . $result2->id;
  109. } else {
  110. $url = "index.php?option=com_content&view=category&layout=blog&id=" . $result2->id;
  111. }
  112. $swmenufree_array[] = array("TITLE" => $result2->title, "URL" => $url, "ID" => $result2->id + 1000, "PARENT" => $result2->section, "ORDER" => $result2->ordering, "TARGET" => 0, "ACCESS" => $result2->access);
  113. }
  114. $sql = "SELECT #__content.*
  115. FROM #__content
  116. INNER JOIN #__categories ON #__content.catid = #__categories.id
  117. AND #__content.state = 1
  118. AND ( publish_up = '0000-00-00 00:00:00' OR publish_up <= '$now' )
  119. AND ( publish_down = '0000-00-00 00:00:00' OR publish_down >= '$now' )
  120. ORDER BY #__content.ordering
  121. ";
  122. $database->setQuery($sql);
  123. $result = $database->loadObjectList();
  124. for ($i = 0; $i < count($result); $i++) {
  125. $result2 = $result[$i];
  126. $url = "index.php?option=com_content&view=article&catid=" . $result2->catid . "&id=" . $result2->id;
  127. $swmenufree_array[] = array("TITLE" => $result2->title, "URL" => $url, "ID" => $result2->id + 10000, "PARENT" => $result2->catid + 1000, "ORDER" => $result2->ordering, "TARGET" => 0, "ACCESS" => $result2->access);
  128. }
  129. } else if ($menu == "virtuemart" || $menu == "virtueprod") {
  130. $sql = "SELECT #__vm_category.* ,#__vm_category_xref.*
  131. FROM #__vm_category
  132. INNER JOIN #__vm_category_xref ON #__vm_category_xref.category_child_id= #__vm_category.category_id
  133. AND #__vm_category.category_publish = 'Y'
  134. ORDER BY #__vm_category.list_order
  135. ";
  136. $database->setQuery($sql);
  137. $result = $database->loadObjectList();
  138. for ($i = 0; $i < count($result); $i++) {
  139. $result2 = $result[$i];
  140. $url = "index.php?option=com_virtuemart&page=shop.browse&category_id=" . $result2->category_id . "&Itemid=" . ($Itemid) . "&swid=" . ($result2->category_id + 10000);
  141. $swmenufree_array[] = array(
  142. "TITLE" => $result2->category_name,
  143. "URL" => $url,
  144. "ID" => ($result2->category_id + 10000),
  145. "SECURE" => 0,
  146. "PARENT" => ($result2->category_parent_id ? (($result2->category_parent_id + 10000)) : 0),
  147. "ORDER" => $result2->list_order,
  148. "TARGET" => 0,
  149. "ACCESS" => 0,
  150. );
  151. if ($menu == "virtueprod") {
  152. $sql = "SELECT #__vm_product.* ,#__vm_product_category_xref.*
  153. FROM #__vm_product
  154. INNER JOIN #__vm_product_category_xref ON #__vm_product_category_xref.product_id= #__vm_product.product_id
  155. AND #__vm_product.product_publish = 'Y'
  156. AND #__vm_product_category_xref.category_id = $result2->category_id
  157. ";
  158. $database->setQuery($sql);
  159. $result3 = $database->loadObjectList();
  160. for ($j = 0; $j < count($result3); $j++) {
  161. $result4 = $result3[$j];
  162. $url = "index.php?option=com_virtuemart&page=shop.product_details&flypage=shop.flypage&product_id=" . $result4->product_id . "&category_id=" . $result4->category_id . "&manufacturer_id=" . $result4->vendor_id . "&Itemid=" . ($Itemid) . "&swid=" . ($result4->product_id + 100000);
  163. $swmenufree_array[] = array(
  164. "TITLE" => $result4->product_name,
  165. "URL" => $url,
  166. "ID" => ($result4->product_id + 100000),
  167. "SECURE" => 0,
  168. "PARENT" => ($result2->category_id ? (($result2->category_id + 10000)) : 0),
  169. "ORDER" => $result2->list_order,
  170. "TARGET" => 0,
  171. "ACCESS" => 0,
  172. );
  173. }
  174. }
  175. }
  176. } else if ($menu == "virtuemart2" || $menu == "virtueprod2") {
  177. $sql = "SELECT #__virtuemart_categories_en_gb.* ,#__virtuemart_category_categories.*,#__virtuemart_categories.*
  178. FROM #__virtuemart_categories,#__virtuemart_categories_en_gb
  179. INNER JOIN #__virtuemart_category_categories ON #__virtuemart_category_categories.category_child_id= #__virtuemart_categories_en_gb.virtuemart_category_id
  180. WHERE #__virtuemart_categories.virtuemart_category_id=#__virtuemart_categories_en_gb.virtuemart_category_id
  181. AND #__virtuemart_categories.published='1'
  182. ORDER BY #__virtuemart_categories.ordering
  183. ";
  184. $database->setQuery($sql);
  185. $result = $database->loadObjectList();
  186. for ($i = 0; $i < count($result); $i++) {
  187. $result2 = $result[$i];
  188. $url = "index.php?option=com_virtuemart&view=category&virtuemart_category_id=" . $result2->virtuemart_category_id ;
  189. $swmenufree_array[] = array(
  190. "TITLE" => $result2->category_name,
  191. "URL" => $url,
  192. "ID" => ($result2->virtuemart_category_id + 10000),
  193. "SECURE" => 0,
  194. "PARENT" => ($result2->category_parent_id ? (($result2->category_parent_id + 10000)) : 0),
  195. "ORDER" => $result2->ordering,
  196. "TARGET" => 0,
  197. "ACCESS" => 0,
  198. );
  199. if ($menu == "virtueprod2") {
  200. $sql = "SELECT #__virtuemart_products_en_gb.* ,#__virtuemart_product_categories.*,#__virtuemart_products.*
  201. FROM #__virtuemart_products,#__virtuemart_products_en_gb
  202. INNER JOIN #__virtuemart_product_categories ON #__virtuemart_product_categories.virtuemart_product_id= #__virtuemart_products_en_gb.virtuemart_product_id
  203. WHERE #__virtuemart_products.virtuemart_product_id=#__virtuemart_products_en_gb.virtuemart_product_id
  204. AND #__virtuemart_product_categories.virtuemart_category_id = $result2->virtuemart_category_id
  205. AND #__virtuemart_products.published='1'
  206. ";
  207. $database->setQuery($sql);
  208. $result3 = $database->loadObjectList();
  209. // echo count($result3);
  210. for ($j = 0; $j < count($result3); $j++) {
  211. $result4 = $result3[$j];
  212. $url = "index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=" . $result4->virtuemart_product_id . "&virtuemart_category_id=" . $result4->virtuemart_category_id;
  213. $swmenufree_array[] = array(
  214. "TITLE" => $result4->product_name,
  215. "URL" => $url,
  216. "ID" => ($result4->virtuemart_product_id + 100000),
  217. "SECURE" => 0,
  218. "PARENT" => ($result2->virtuemart_category_id ? (($result2->virtuemart_category_id + 10000)) : 0),
  219. "ORDER" => $result2->ordering,
  220. "TARGET" => 0,
  221. "ACCESS" => 0,
  222. );
  223. }
  224. }
  225. }
  226. } else {
  227. if ($hybrid) {
  228. $sql = "SELECT #__content.*
  229. FROM #__content
  230. INNER JOIN #__categories ON #__content.catid = #__categories.id
  231. AND #__content.state = 1
  232. AND ( publish_up = '0000-00-00 00:00:00' OR publish_up <= '$now' )
  233. AND ( publish_down = '0000-00-00 00:00:00' OR publish_down >= '$now' )
  234. ORDER BY #__content.catid,#__content.ordering
  235. ";
  236. $database->setQuery($sql);
  237. $hybrid_content = $database->loadObjectList();
  238. $sql = "SELECT #__categories.*
  239. FROM #__categories
  240. WHERE #__categories.published = 1
  241. ORDER BY #__categories.ordering
  242. ";
  243. $database->setQuery($sql);
  244. $hybrid_cat = $database->loadObjectList();
  245. }
  246. $sql = "SELECT #__menu.*
  247. FROM #__menu
  248. WHERE #__menu.menutype = '" . $menu . "' AND published = '1'
  249. ORDER BY parent, ordering
  250. ";
  251. $database->setQuery($sql);
  252. $result = $database->loadObjectList();
  253. $swmenufree_array = array();
  254. for ($i = 0; $i < count($result); $i++) {
  255. $result2 = $result[$i];
  256. switch ($result2->type) {
  257. case 'separator';
  258. $mylink = "javascript:void(0);";
  259. break;
  260. case 'url':
  261. $mylink = $result2->link;
  262. if (preg_match("/index.php\?/i", $result2->link)) {
  263. if (!preg_match("/Itemid=/i", $result2->link)) {
  264. $mylink .= "&Itemid=$result2->id";
  265. }
  266. }
  267. break;
  268. case 'menulink';
  269. $mylink = $result2->link;
  270. break;
  271. default:
  272. $mylink = "index.php?Itemid=" . $result2->id;
  273. break;
  274. }
  275. $swmenufree_array[] = array("TITLE" => $result2->name, "URL" => $mylink, "ID" => $result2->id, "PARENT" => $result2->parent, "ORDER" => $result2->ordering, "TARGET" => $result2->browserNav, "ACCESS" => $result2->access);
  276. if ($hybrid) {
  277. $opt = array();
  278. parse_str($result2->link, $opt);
  279. $opt['view'] = @$opt['view'] ? $opt['view'] : 0;
  280. $opt['id'] = @$opt['id'] ? $opt['id'] : 0;
  281. if ($opt['view'] == "blogcategory" || $opt['view'] == "category") {
  282. for ($j = 0; $j < count($hybrid_content); $j++) {
  283. $row = $hybrid_content[$j];
  284. if ($row->catid == $opt['id']) {
  285. $url = "index.php?option=com_content&view=article&catid=" . $row->catid . "&id=" . $row->id . "&Itemid=" . $result2->id;
  286. $swmenufree_array[] = array("TITLE" => $row->title, "URL" => $url, "ID" => $row->id + 100000, "PARENT" => $result2->id, "ORDER" => $row->ordering, "TARGET" => 0, "ACCESS" => $row->access);
  287. }
  288. }
  289. } else if ($opt['view'] == "blogsection" || $opt['view'] == "section") {
  290. //echo "hello";
  291. for ($j = 0; $j < count($hybrid_cat); $j++) {
  292. $row = $hybrid_cat[$j];
  293. if ($row->section == $opt['id'] && $opt['id']) {
  294. //$j=count($hybrid_cat);
  295. if ($use_tables) {
  296. $url = "index.php?option=com_content&view=category&id=" . $row->id . "&Itemid=" . $result2->id;
  297. } else {
  298. $url = "index.php?option=com_content&view=category&layout=blog&id=" . $row->id . "&Itemid=" . $result2->id;
  299. }
  300. $swmenufree_array[] = array("TITLE" => $row->title, "URL" => $url, "ID" => $row->id + 10000, "PARENT" => $result2->id, "ORDER" => $row->ordering, "TARGET" => 0, "ACCESS" => $row->access);
  301. for ($k = 0; $k < count($hybrid_content); $k++) {
  302. $row2 = $hybrid_content[$k];
  303. if ($row2->catid == $row->id) {
  304. $url = "index.php?option=com_content&view=article&catid=" . $row->id . "&id=" . $row2->id . "&Itemid=" . $result2->id;
  305. $swmenufree_array[] = array("TITLE" => $row2->title, "URL" => $url, "ID" => $row2->id + 100000, "PARENT" => $row->id + 10000, "ORDER" => $row2->ordering, "TARGET" => 0, "ACCESS" => $row2->access);
  306. }
  307. }
  308. }
  309. }
  310. }
  311. }
  312. }
  313. }
  314. return $swmenufree_array;
  315. }
  316. function chainFree($primary_field, $parent_field, $sort_field, $rows, $root_id = 0, $maxlevel = 25) {
  317. $c = new chainFree($primary_field, $parent_field, $sort_field, $rows, $root_id, $maxlevel);
  318. return $c->chainFreemenu_table;
  319. }
  320. class chainFree {
  321. var $table;
  322. var $rows;
  323. var $chainFreemenu_table;
  324. var $primary_field;
  325. var $parent_field;
  326. var $sort_field;
  327. function chainFree($primary_field, $parent_field, $sort_field, $rows, $root_id, $maxlevel) {
  328. $this->rows = $rows;
  329. $this->primary_field = $primary_field;
  330. $this->parent_field = $parent_field;
  331. $this->sort_field = $sort_field;
  332. $this->buildchainFree($root_id, $maxlevel);
  333. }
  334. function buildchainFree($rootcatid, $maxlevel) {
  335. foreach ($this->rows as $row) {
  336. $this->table[$row[$this->parent_field]][$row[$this->primary_field]] = $row;
  337. }
  338. $this->makeBranch($rootcatid, 0, $maxlevel);
  339. }
  340. function makeBranch($parent_id, $level, $maxlevel) {
  341. $rows = $this->table[$parent_id];
  342. $key_array1 = array_keys($rows);
  343. $key_array_size1 = sizeOf($key_array1);
  344. //for ($j=0;$j<$key_array_size1;$j++)
  345. foreach ($rows as $key => $value) {
  346. //$key = $key_array1[$j];
  347. $rows[$key]['key'] = $this->sort_field;
  348. }
  349. usort($rows, 'chainFreemenuCMP');
  350. $row_array = array_values($rows);
  351. $row_array_size = sizeOf($row_array);
  352. $i = 0;
  353. foreach ($rows as $item) {
  354. //$item = $row_array[$i];
  355. $item['ORDER'] = ($i + 1);
  356. $item['indent'] = $level;
  357. $i++;
  358. $this->chainFreemenu_table[] = $item;
  359. if ((isset($this->table[$item[$this->primary_field]])) && (($maxlevel > $level + 1) || ($maxlevel == 0))) {
  360. $this->makeBranch($item[$this->primary_field], $level + 1, $maxlevel);
  361. }
  362. }
  363. }
  364. }
  365. function chainFreemenuCMP($a, $b) {
  366. if ($a[$a['key']] == $b[$b['key']]) {
  367. return 0;
  368. }
  369. return($a[$a['key']] < $b[$b['key']]) ? -1 : 1;
  370. }
  371. function transMenuFree($ordered, $swmenufree, $active_menu, $sub_indicator, $parent_id, $selectbox_hack, $auto_position, $overlay_hack) {
  372. global $mainframe;
  373. $live_site = $mainframe->isAdmin() ? $mainframe->getSiteURL() : JURI::base();
  374. if (substr($live_site, (strlen($live_site) - 1), 1) == "/") {
  375. $live_site = substr($live_site, 0, (strlen($live_site) - 1));
  376. }
  377. $str = "";
  378. $name = "";
  379. $topcounter = 0;
  380. $counter = 0;
  381. $number = count(chainFree('ID', 'PARENT', 'ORDER', $ordered, $parent_id, 1));
  382. $registry = new JRegistry();
  383. $registry->loadINI($swmenufree['sub_indicator']);
  384. $sub_indicator = $registry->toObject();
  385. $top_sub_indicator = $sub_indicator->top_sub_indicator ? $sub_indicator->top_sub_indicator : '';
  386. $sub_sub_indicator = $sub_indicator->sub_sub_indicator ? $sub_indicator->sub_sub_indicator : '';
  387. $sub_indicator_align = $sub_indicator->sub_indicator_align ? $sub_indicator->sub_indicator_align : 'left';
  388. $sub_indicator_top = $sub_indicator->sub_indicator_top ? $sub_indicator->sub_indicator_top : 0;
  389. $sub_indicator_left = $sub_indicator->sub_indicator_left ? $sub_indicator->sub_indicator_left : 0;
  390. $str .= "<table id=\"menu_wrap\" class=\"swmenu\" align=\"" . $swmenufree['position'] . "\"><tr><td id=\"td_menu_wrap\" class=\"td_menu_wrap\">\n";
  391. $str .= "<table cellspacing=\"0\" cellpadding=\"0\" id=\"swmenu\" class=\"swmenu\" > \n";
  392. if (substr($swmenufree['orientation'], 0, 10) == "horizontal") {
  393. $str.= "<tr> \n";
  394. }
  395. foreach ($ordered as $top) {
  396. if ($top['indent'] == 0) {
  397. $top['URL'] = str_replace('&', '&amp;', $top['URL']);
  398. $topcounter++;
  399. $name = $top['TITLE'];
  400. if (substr($swmenufree['orientation'], 0, 8) == "vertical") {
  401. $str.= "<tr> \n";
  402. }
  403. if (($topcounter == $number) && ($top["ID"] == $active_menu)) {
  404. $str.= "<td id=\"trans-active\" class='last'> \n";
  405. } else if ($top["ID"] == $active_menu) {
  406. $str.= "<td id='trans-active'> \n";
  407. } else if ($topcounter == $number) {
  408. $str.= "<td class=\"last\"> \n";
  409. } else {
  410. $str.= "<td> \n";
  411. }
  412. if ((@$ordered[$counter + 1]['indent'] > $top['indent']) && $top_sub_indicator) {
  413. $name = "<img src='" . $live_site . $top_sub_indicator . "' align='" . $sub_indicator_align . "' style='position:relative;left:" . $sub_indicator_left . "px;top:" . $sub_indicator_top . "px;' alt='' border='0' />" . $name;
  414. }
  415. switch ($top['TARGET']) {
  416. // cases are slightly different
  417. case 1:
  418. // open in a new window
  419. $str.= '<a id="menu' . $top['ID'] . '" href="' . $top['URL'] . '" target="_blank" >' . $name . '</a>' . "\n";
  420. break;
  421. case 2:
  422. // open in a popup window
  423. $str.= "<a href=\"#\" id=\"menu" . $top['ID'] . "\" onclick=\"javascript: window.open('" . $top['URL'] . "', '', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550'); return false\" >" . $name . "</a>\n";
  424. break;
  425. case 3:
  426. // don't link it
  427. $str.= '<a id="menu' . $top['ID'] . '" >' . $name . '</a>' . "\n";
  428. break;
  429. default: // formerly case 2
  430. $str.= '<a id="menu' . $top['ID'] . '" href="' . $top['URL'] . '" >';
  431. $str.= $name . '</a>' . "\n";
  432. break;
  433. }
  434. //$counter++;
  435. $str.= "</td> \n";
  436. if (substr($swmenufree['orientation'], 0, 8) == "vertical") {
  437. $str.= "</tr> \n";
  438. }
  439. }
  440. $counter++;
  441. }
  442. if (substr($swmenufree['orientation'], 0, 10) == "horizontal") {
  443. $str.= "</tr> \n";
  444. }
  445. $str .= "</table></td></tr></table><hr style=\"display:block;clear:left;margin:-0.66em 0;visibility:hidden;\" /> \n";
  446. $str.= "<div id=\"subwrap\"> \n";
  447. $str.="<script type=\"text/javascript\">\n";
  448. $str.="<!--\n";
  449. $str.="if (TransMenu.isSupported()) {\n";
  450. if ($swmenufree['orientation'] == "horizontal/down") {
  451. $str.= "var ms = new TransMenuSet(TransMenu.direction.down, " . $swmenufree['level1_sub_left'] . "," . $swmenufree['level1_sub_top'] . ", TransMenu.reference.bottomLeft);\n";
  452. } elseif ($swmenufree['orientation'] == "horizontal/up") {
  453. $str.= "var ms = new TransMenuSet(TransMenu.direction.up, " . $swmenufree['level1_sub_left'] . ", " . $swmenufree['level1_sub_top'] . ", TransMenu.reference.topLeft);\n";
  454. } elseif ($swmenufree['orientation'] == "horizontal/left") {
  455. $str.= "var ms = new TransMenuSet(TransMenu.direction.dleft, " . $swmenufree['level1_sub_left'] . "," . $swmenufree['level1_sub_top'] . ", TransMenu.reference.bottomRight);\n";
  456. } elseif ($swmenufree['orientation'] == "vertical/right") {
  457. $str.= "var ms = new TransMenuSet(TransMenu.direction.right, " . $swmenufree['level1_sub_left'] . ", " . $swmenufree['level1_sub_top'] . ", TransMenu.reference.topRight);\n";
  458. } elseif ($swmenufree['orientation'] == "vertical/left") {
  459. $str.= "var ms = new TransMenuSet(TransMenu.direction.left, " . $swmenufree['level1_sub_left'] . ", " . $swmenufree['level1_sub_top'] . ", TransMenu.reference.topLeft);\n";
  460. } elseif ($swmenufree['orientation'] == "vertical") {
  461. $str.= "var ms = new TransMenuSet(TransMenu.direction.right, " . $swmenufree['level1_sub_left'] . ", " . $swmenufree['level1_sub_top'] . ", TransMenu.reference.topRight);\n";
  462. } elseif ($swmenufree['orientation'] == "horizontal") {
  463. $str.= "var ms = new TransMenuSet(TransMenu.direction.down, " . $swmenufree['level1_sub_left'] . ", " . $swmenufree['level1_sub_top'] . ", TransMenu.reference.bottomLeft);\n";
  464. }
  465. $par = $ordered[0];
  466. foreach ($ordered as $sub) {
  467. $name = $sub['TITLE'];
  468. $sub2 = next($ordered);
  469. if ($sub['TARGET'] == "3") {
  470. $sub['TARGET'] = 0;
  471. $sub['URL'] = "javascript:void(0);";
  472. }
  473. if (($sub['indent'] == 0) && (($sub2['indent']) == 1)) {
  474. $str.= "var menu" . $sub['ID'] . " = ms.addMenu(document.getElementById(\"menu" . $sub['ID'] . "\"));\n ";
  475. } else if (($sub['ORDER'] == 1) && ($sub['indent'] > 1)) {
  476. $str.= "var menu" . ($sub['ID']) . " = menu" . findParFree($ordered, $par) . ".addMenu(menu" . findParFree($ordered, $par) . ".items[" . ($par['ORDER'] - 1) . "]," . $swmenufree['level2_sub_left'] . "," . $swmenufree['level2_sub_top'] . ");\n";
  477. }
  478. if ($sub['indent'] > 0) {
  479. $str.= "menu" . findParFree($ordered, $sub) . ".addItem(\"" . addslashes($name) . "\", \"" . addslashes($sub['URL']) . "\", \"" . $sub['TARGET'] . "\");\n";
  480. }
  481. $par = $sub;
  482. }
  483. if ($swmenufree['top_ttf']) {
  484. $registry = new JRegistry();
  485. $registry->loadINI($swmenufree['top_ttf']);
  486. $params = $registry->toObject();
  487. $topfontface = @$params->fontFace ? $params->fontFace : 'none';
  488. } else {
  489. $topfontface = "";
  490. }
  491. $str.="function init() {\n";
  492. $str.="if (TransMenu.isSupported()) {\n";
  493. $str.="TransMenu.initialize();\n";
  494. $counter = 0;
  495. for ($i = 0; $i < count($ordered); $i++) {
  496. if ($ordered[$i]['indent'] == 0) {
  497. $counter++;
  498. if (@$ordered[$i + 1]['indent'] == 1) {
  499. $str.= "menu" . ($ordered[$i]['ID']) . ".onactivate = function() {document.getElementById(\"menu" . $ordered[$i]['ID'] . "\").className = \"hover\"; };\n ";
  500. $str.= "menu" . ($ordered[$i]['ID']) . ".ondeactivate = function() {document.getElementById(\"menu" . $ordered[$i]['ID'] . "\").className = \"\"; };\n ";
  501. } else {
  502. $str.= "document.getElementById(\"menu" . $ordered[$i]['ID'] . "\").onmouseover = function() {\n";
  503. $str.= "ms.hideCurrent();\n";
  504. $str.= "this.className = \"hover\";\n";
  505. $str.= "}\n";
  506. $str.= "document.getElementById(\"menu" . $ordered[$i]['ID'] . "\").onmouseout = function() { this.className = \"\"; }\n";
  507. }
  508. }
  509. }
  510. $str.="}}\n";
  511. if ($sub_sub_indicator) {
  512. $str.="TransMenu.spacerGif = \"" . $live_site . "/modules/mod_swmenufree/images/transmenu/x.gif\";\n";
  513. $str.="TransMenu.dingbatOn = \"" . $live_site . $sub_sub_indicator . "\";\n";
  514. $str.="TransMenu.dingbatOff = \"" . $live_site . $sub_sub_indicator . "\"; \n";
  515. $str.="TransMenu.sub_indicator = true; \n";
  516. } else {
  517. $str.="TransMenu.dingbatSize = 0;\n";
  518. $str.="TransMenu.spacerGif = \"\";\n";
  519. $str.="TransMenu.dingbatOn = \"\";\n";
  520. $str.="TransMenu.dingbatOff = \"\"; \n";
  521. $str.="TransMenu.sub_indicator = false;\n";
  522. }
  523. $str.="TransMenu.menuPadding = 0;\n";
  524. $str.="TransMenu.itemPadding = 0;\n";
  525. $str.="TransMenu.shadowSize = 2;\n";
  526. $str.="TransMenu.shadowOffset = 3;\n";
  527. $str.="TransMenu.shadowColor = \"#888\";\n";
  528. $str.="TransMenu.shadowPng = \"" . $live_site . "/modules/mod_swmenufree/images/transmenu/grey-40.png\";\n";
  529. $str.="TransMenu.backgroundColor = \"" . $swmenufree['sub_back'] . "\";\n";
  530. $str.="TransMenu.backgroundPng = \"" . $live_site . "/modules/mod_swmenufree/images/transmenu/white-90.png\";\n";
  531. $str.="TransMenu.hideDelay = " . ($swmenufree['specialB'] * 2) . ";\n";
  532. $str.="TransMenu.slideTime = " . $swmenufree['specialB'] . ";\n";
  533. $str .= "TransMenu.selecthack = " . $selectbox_hack . ";\n";
  534. $str .= "TransMenu.autoposition = " . $auto_position . ";\n";
  535. $str .= "TransMenu.fontFace = \"" . $topfontface . "\";\n";
  536. $str .= "TransMenu.fontColor = \"" . $swmenufree['main_font_color'] . "\";\n";
  537. // $str .= "TransMenu.activeId = \"" . $active_id . "\";\n";
  538. // $str .= "TransMenu.preview = \"" . $preview . "\";\n";
  539. $str .= "TransMenu.renderAll();\n";
  540. $str.="if ( typeof window.addEventListener != \"undefined\" )\n";
  541. $str.="window.addEventListener( \"load\", init, false );\n";
  542. $str.="else if ( typeof window.attachEvent != \"undefined\" ) {\n";
  543. $str.="window.attachEvent( \"onload\", init);\n";
  544. $str.="}else{\n";
  545. $str.="if ( window.onload != null ) {\n";
  546. $str.="var oldOnload = window.onload;\n";
  547. $str.="window.onload = function ( e ) {\n";
  548. $str.="oldOnload( e );\n";
  549. $str.="init();\n";
  550. $str.="}\n}else\n";
  551. $str.="window.onload = init();\n";
  552. $str.="}\n}\n\n";
  553. $border1 = explode(" ", $swmenufree['main_border']);
  554. $border2 = explode(" ", $swmenufree['sub_border']);
  555. $border1[0] = rtrim(trim($border1[0]), 'px');
  556. $border2[0] = rtrim(trim($border2[0]), 'px');
  557. $border1[1] = trim($border1[1]);
  558. $border2[1] = trim($border2[1]);
  559. $border1[2] = trim($border1[2]);
  560. $border2[2] = trim($border2[2]);
  561. $border3 = explode(" ", $swmenufree['main_border_over']);
  562. $border4 = explode(" ", $swmenufree['sub_border_over']);
  563. $border3[0] = rtrim(trim($border3[0]), 'px');
  564. $border4[0] = rtrim(trim($border4[0]), 'px');
  565. $border3[1] = trim($border3[1]);
  566. $border4[1] = trim($border4[1]);
  567. $border3[2] = trim($border3[2]);
  568. $border4[2] = trim($border4[2]);
  569. if ($swmenufree['corners']) {
  570. $registry = new JRegistry();
  571. $registry->loadINI($swmenufree['corners']);
  572. $params = $registry->toObject();
  573. $c_corner_style = @$params->c_corner_style ? $params->c_corner_style : 0;
  574. if (($c_corner_style != 'none') && $c_corner_style) {
  575. $c_corner_size = @$params->c_corner_size ? $params->c_corner_size : 10;
  576. $ctl_corner = @$params->ctl_corner ? $params->ctl_corner : 0;
  577. $ctr_corner = @$params->ctr_corner ? $params->ctr_corner : 0;
  578. $cbl_corner = @$params->cbl_corner ? $params->cbl_corner : 0;
  579. $cbr_corner = @$params->cbr_corner ? $params->cbr_corner : 0;
  580. if (($border1[0] > 0) && ($border1[1] != 'none')) {
  581. $str .= "if (jQuery.browser.msie) {\n";
  582. // $str .= "jQuery('#menu_wrap').css('z-index','-1');\n";
  583. // $str .= "jQuery('#td_menu_wrap').css('z-index','-1');\n";
  584. // $str .= "jQuery('#td_menu_wrap').css('position','relative');\n";
  585. $str .= "}\n";
  586. // $str .= "jQuery('#outertable').css('border', '0');\n";
  587. $str .= "jQuery('#td_menu_wrap').css('border', '0');\n";
  588. $str .= "jQuery('#menu_wrap').wrap('<table ><tr><td id=\"#swwmenu_wrap\"></td></tr></table>');\n";
  589. $str .= "jQuery('#menu_wrap').parent().css('background-color', '" . $border1[2] . "');\n";
  590. //$str .= "jQuery('#menu_wrap').parent().css('position', 'relative');\n";
  591. // $str .= "jQuery('#menu_wrap').parent().position({left:" . $swmenufree['main_left'] . "});\n";
  592. $str .= "jQuery('#menu_wrap').parent().css('padding', '" . $border1[0] . "px');\n";
  593. $str .= "jQuery('#menu_wrap').parent().corner('" . $c_corner_style . " " . ($ctl_corner ? 'tl' : '') . " " . ($ctr_corner ? 'tr' : '') . " " . ($cbl_corner ? 'bl' : '') . " " . ($cbr_corner ? 'br' : '') . " " . ($c_corner_size + $border1[0]) . "px');\n";
  594. //$str .= "jQuery('#td_menu_wrap').css('z-index','1');\n";
  595. }
  596. //$str .= "jQuery('#wrap').wrap('<div></div>');\n";
  597. //$str .= "jQuery('#td_menu_wrap').css('z-index','-1');\n";
  598. $str .= "jQuery('#td_menu_wrap ').corner('" . $c_corner_style . " " . ($ctl_corner ? 'tl' : '') . " " . ($ctr_corner ? 'tr' : '') . " " . ($cbl_corner ? 'bl' : '') . " " . ($cbr_corner ? 'br' : '') . " " . $c_corner_size . "px');\n";
  599. // $str .= "jQuery('div#wrap').css('position','absolute');\n";
  600. }
  601. $t_corner_style = @$params->t_corner_style ? $params->t_corner_style : 0;
  602. if (($t_corner_style != 'none') && $t_corner_style) {
  603. $t_corner_size = @$params->t_corner_size ? $params->t_corner_size : 10;
  604. $ttl_corner = @$params->ttl_corner ? $params->ttl_corner : 0;
  605. $ttr_corner = @$params->ttr_corner ? $params->ttr_corner : 0;
  606. $tbl_corner = @$params->tbl_corner ? $params->tbl_corner : 0;
  607. $tbr_corner = @$params->tbr_corner ? $params->tbr_corner : 0;
  608. $str .= "jQuery('#menu_wrap a').corner('" . $t_corner_style . " " . ($ttl_corner ? 'tl' : '') . " " . ($ttr_corner ? 'tr' : '') . " " . ($tbl_corner ? 'bl' : '') . " " . ($tbr_corner ? 'br' : '') . " " . $t_corner_size . "px');\n";
  609. }
  610. $s_corner_style = @$params->s_corner_style ? $params->s_corner_style : 0;
  611. if (($s_corner_style != 'none') && $s_corner_style) {
  612. $s_corner_size = @$params->s_corner_size ? $params->s_corner_size : 10;
  613. $stl_corner = @$params->stl_corner ? $params->stl_corner : 0;
  614. $str_corner = @$params->str_corner ? $params->str_corner : 0;
  615. $sbl_corner = @$params->sbl_corner ? $params->sbl_corner : 0;
  616. $sbr_corner = @$params->sbr_corner ? $params->sbr_corner : 0;
  617. $str .= "jQuery('#subwrap .background').corner('" . $s_corner_style . " " . ($stl_corner ? 'tl' : '') . " " . ($str_corner ? 'tr' : '') . " " . ($sbl_corner ? 'bl' : '') . " " . ($sbr_corner ? 'br' : '') . " " . $s_corner_size . "px');\n";
  618. $str .= "jQuery('#subwrap .item.hover td ').corner('" . $s_corner_style . " " . ($stl_corner ? 'tl' : '') . " " . ($str_corner ? 'tr' : '') . " " . ($sbl_corner ? 'bl' : '') . " " . ($sbr_corner ? 'br' : '') . " " . $s_corner_size . "px');\n";
  619. }
  620. }
  621. if ($swmenufree['top_ttf']) {
  622. $registry = new JRegistry();
  623. $registry->loadINI($swmenufree['top_ttf']);
  624. $params = $registry->toObject();
  625. $topfontface = @$params->fontFace ? $params->fontFace : 'none';
  626. $str .= "Cufon.replace('table.swmenu a',{hover: true, fontFamily: '" . $topfontface . "' });\n";
  627. }
  628. if ($swmenufree['sub_ttf']) {
  629. $registry = new JRegistry();
  630. $registry->loadINI($swmenufree['sub_ttf']);
  631. $params = $registry->toObject();
  632. $subfontface = @$params->fontFace ? $params->fontFace : 'none';
  633. $str .= "Cufon.replace('#subwrap .item ',{hover: true, fontFamily: '" . $subfontface . "' });\n";
  634. }
  635. if ($overlay_hack) {
  636. $str .= "jQuery(document).ready(function($){\n";
  637. $str .= "jQuery('#menu_wrap').parents().css('overflow','visible');\n";
  638. $str .= "jQuery('html').css('overflow','auto');\n";
  639. $str .= "jQuery('#menu_wrap').parents().css('z-index','1');\n";
  640. $str .= "jQuery('#menu_wrap').css('z-index','101');\n";
  641. $str .= "});\n";
  642. }
  643. $str .= "//--> \n";
  644. $str .= "</script></div> \n";
  645. return $str;
  646. }
  647. function findParFree($ordered, $sub) {
  648. $submenu = chainFree('ID', 'PARENT', 'ORDER', $ordered, $sub['PARENT'], 1);
  649. if ($sub['indent'] == 1) {
  650. return $submenu[0]['PARENT'];
  651. } else {
  652. return $submenu[0]['ID'];
  653. }
  654. }
  655. function GosuMenuFree($ordered, $swmenufree, $active_menu, $selectbox_hack, $auto_position, $overlay_hack) {
  656. global $mainframe, $Itemid;
  657. $absolute_path = JPATH_ROOT;
  658. $live_site = $mainframe->isAdmin() ? $mainframe->getSiteURL() : JURI::base();
  659. if (substr($live_site, (strlen($live_site) - 1), 1) == "/") {
  660. $live_site = substr($live_site, 0, (strlen($live_site) - 1));
  661. }
  662. $sub_active = 0;
  663. $name = "";
  664. $counter = 0;
  665. $doMenu = 1;
  666. $uniqueID = $swmenufree['id'];
  667. $number = count($ordered);
  668. $activesub = -1;
  669. $activesub2 = -1;
  670. $topcount = 0;
  671. $subcounter = 0;
  672. $registry = new JRegistry();
  673. $registry->loadINI($swmenufree['sub_indicator']);
  674. $sub_indicator = $registry->toObject();
  675. $top_sub_indicator = $sub_indicator->top_sub_indicator ? $sub_indicator->top_sub_indicator : '';
  676. $sub_sub_indicator = $sub_indicator->sub_sub_indicator ? $sub_indicator->sub_sub_indicator : '';
  677. $sub_indicator_align = $sub_indicator->sub_indicator_align ? $sub_indicator->sub_indicator_align : 'left';
  678. $sub_indicator_top = $sub_indicator->sub_indicator_top ? $sub_indicator->sub_indicator_top : 0;
  679. $sub_indicator_left = $sub_indicator->sub_indicator_left ? $sub_indicator->sub_indicator_left : 0;
  680. $str = "<table id=\"outertable\" align=\"" . $swmenufree['position'] . "\" class=\"outer\"><tr><td><div id=\"outerwrap\">\n";
  681. $str .= "<table cellspacing=\"0\" border=\"0\" cellpadding=\"0\" id=\"menu\" class=\"ddmx\" > \n";
  682. if ($swmenufree['orientation'] == "horizontal/down" || $swmenufree['orientation'] == "horizontal" || $swmenufree['orientation'] == "horizontal/left" || $swmenufree['orientation'] == "horizontal/up") {
  683. $str .= "<tr> \n";
  684. }
  685. while ($doMenu) {
  686. if ($ordered[$counter]['indent'] == 0) {
  687. $ordered[$counter]['URL'] = str_replace('&', '&amp;', $ordered[$counter]['URL']);
  688. $name = ($ordered[$counter]['TITLE']);
  689. if ($swmenufree['orientation'] == "vertical/right" || $swmenufree['orientation'] == "vertical" || $swmenufree['orientation'] == "vertical/left") {
  690. $str .= "<tr> \n";
  691. }
  692. $act = 0;
  693. if (islastFree($ordered, $counter)) {
  694. if (($ordered[$counter]['ID'] == $active_menu)) {
  695. $str .= "<td class='item11 acton last'> \n";
  696. $act = 1;
  697. $activesub = $topcount;
  698. } else {
  699. $str .= "<td class='item11 last'> \n";
  700. }
  701. } else {
  702. if (($ordered[$counter]['ID'] == $active_menu)) {
  703. $str .= "<td class='item11 acton'> \n";
  704. $act = 1;
  705. $activesub = $topcount;
  706. } else {
  707. $str .= "<td class='item11'> \n";
  708. }
  709. }
  710. $topcount++;
  711. // echo $top_sub_indicator;
  712. $classname = "item1";
  713. if ($ordered[$counter]['indent'] > @$ordered[$counter - 1]['indent']) {
  714. $classname .= " first";
  715. }
  716. if (($counter + 1 == $number) || islastFree($ordered, $counter)) {
  717. $classname .= " last";
  718. }
  719. if (($counter + 1 != $number) && ($ordered[$counter + 1]['indent'] > $ordered[$counter]['indent']) && $top_sub_indicator) {
  720. $name = "<img src='" . $live_site . $top_sub_indicator . "' align='" . $sub_indicator_align . "' style='position:relative;left:" . $sub_indicator_left . "px;top:" . $sub_indicator_top . "px;' alt='' />" . $name;
  721. }
  722. switch ($ordered[$counter]['TARGET']) {
  723. case 1:
  724. $str .= '<a href="' . $ordered[$counter]['URL'] . '" target="_blank" class="' . $classname . '" >' . $name . '</a>';
  725. break;
  726. case 2:
  727. $str .= "<a href=\"#\" onclick=\"javascript: window.open('" . $ordered[$counter]['URL'] . "', '', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550'); return false\" class='" . $classname . "'>" . $name . "</a>\n";
  728. break;
  729. case 3:
  730. $str .= '<a class="' . $classname . '" >' . $name . '</a>';
  731. break;
  732. default:
  733. $str .= '<a href="' . $ordered[$counter]['URL'] . '" class="' . $classname . '">' . $name . '</a>';
  734. break;
  735. }
  736. if ($counter + 1 == $number) {
  737. $doSubMenu = 0;
  738. $doMenu = 0;
  739. $str .= "<div class=\"section\" style=\"border:0 !important;display:none;\"></div> \n";
  740. } elseif ($ordered[$counter + 1]['indent'] == 0) {
  741. $doSubMenu = 0;
  742. $str .= "<div class=\"section\" style=\"border:0 !important;display:none;\"></div> \n";
  743. } else {
  744. $doSubMenu = 1;
  745. }
  746. $counter++;
  747. if ($activesub2 == -1) {
  748. $subcounter = 0;
  749. }
  750. while ($doSubMenu) {
  751. if ($ordered[$counter]['indent'] != 0) {
  752. if ($ordered[$counter]['indent'] > $ordered[$counter - 1]['indent']) {
  753. if ($act && $sub_active && ($swmenufree['orientation'] == "vertical/right")) {
  754. $str .= '<div class="subsection" >';
  755. } else {
  756. $str .= '<div class="section" >';
  757. }
  758. }
  759. $ordered[$counter]['URL'] = str_replace('&', '&amp;', $ordered[$counter]['URL']);
  760. $name = ($ordered[$counter]['TITLE']);
  761. if (($counter + 1 == $number) || ($ordered[$counter + 1]['indent'] == 0)) {
  762. $doSubMenu = 0;
  763. }
  764. $style = " style=\"";
  765. $classname = "item2";
  766. if ($ordered[$counter]['indent'] > $ordered[$counter - 1]['indent']) {
  767. $classname .= " first";
  768. }
  769. if (($counter + 1 == $number) || islastFree($ordered, $counter)) {
  770. $classname .= " last";
  771. }
  772. if (($counter + 1 != $number) && ($ordered[$counter + 1]['indent'] > $ordered[$counter]['indent']) && $sub_sub_indicator) {
  773. $name = "<img src='" . $live_site . $sub_sub_indicator . "' align='" . $sub_indicator_align . "' style='position:relative;left:" . $sub_indicator_left . "px;top:" . $sub_indicator_top . "px;' alt='' />" . $name;
  774. }
  775. $style .= "\" ";
  776. switch ($ordered[$counter]['TARGET']) {
  777. case 1:
  778. $str .= '<a href="' . $ordered[$counter]['URL'] . '" ' . $style . ' target="_blank" class="' . $classname . '" >' . $name . '</a>';
  779. break;
  780. case 2:
  781. $str .= "<a href=\"#\" " . $style . " onclick=\"javascript: window.open('" . $ordered[$counter]['URL'] . "', '', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550'); return false\" class=\"" . $classname . "\">" . $name . "</a>\n";
  782. break;
  783. case 3:
  784. $str .= '<a class="' . $classname . '" ' . $style . ' >' . $name . '</a>';
  785. break;
  786. default:
  787. $str .= "<a href=\"" . $ordered[$counter]['URL'] . "\" class=\"" . $classname . "\" " . $style . ">" . $name . "</a>\n";
  788. break;
  789. }
  790. if (($counter + 1 == $number) || ($ordered[$counter + 1]['indent'] < $ordered[$counter]['indent'])) {
  791. $str .= str_repeat('</div>', (($ordered[$counter]['indent']) - (@$ordered[$counter + 1]['indent'])));
  792. }
  793. $counter++;
  794. }
  795. }
  796. }
  797. $str .= "</td> \n";
  798. if ($swmenufree['orientation'] == "vertical/right" || $swmenufree['orientation'] == "vertical/left" || $swmenufree['orientation'] == "vertical") {
  799. $str .= "</tr> \n";
  800. }
  801. if ($counter == ($number)) {
  802. $doMenu = 0;
  803. }
  804. }
  805. if ($swmenufree['orientation'] == "horizontal/down" || $swmenufree['orientation'] == "horizontal/left" || $swmenufree['orientation'] == "horizontal/up" || $swmenufree['orientation'] == "horizontal") {
  806. $str .= "</tr> \n";
  807. }
  808. $str .= "</table></div></td></tr></table><hr style=\"display:block;clear:left;margin:-0.66em 0;visibility:hidden;\" /> \n";
  809. $str .= "<script type=\"text/javascript\">\n";
  810. $str .= "<!--\n";
  811. $str .= "function makemenu(){\n";
  812. $str .= "var ddmx = new DropDownMenuX('menu');\n";
  813. $str .= "ddmx.type = '" . $swmenufree['orientation'] . "'; \n";
  814. $str .= "ddmx.delay.show = 0;\n";
  815. $str .= "ddmx.iframename = 'ddmx';\n";
  816. $str .= "ddmx.delay.hide = " . $swmenufree['specialB'] . ";\n";
  817. $str .= "ddmx.effect = '" . ($swmenufree['extra'] ? $swmenufree['extra'] : 'none') . "';\n";
  818. $str .= "ddmx.position.levelX.left = " . $swmenufree['level2_sub_left'] . ";\n";
  819. $str .= "ddmx.position.levelX.top = " . $swmenufree['level2_sub_top'] . ";\n";
  820. $str .= "ddmx.position.level1.left = " . $swmenufree['level1_sub_left'] . ";\n";
  821. $str .= "ddmx.position.level1.top = " . $swmenufree['level1_sub_top'] . "; \n";
  822. $str .= "ddmx.fixIeSelectBoxBug = " . ($selectbox_hack ? 'true' : 'false') . ";\n";
  823. $str .= "ddmx.autoposition = " . ($auto_position ? 'true' : 'false') . ";\n";
  824. if ($sub_active && ($swmenufree['orientation'] == "horizontal")) {
  825. $str .= "ddmx.activesub='menu-" . $activesub . "-section' ;\n";
  826. } else {
  827. $str .= "ddmx.activesub='' ;\n";
  828. }
  829. $str .= "ddmx.init(); \n";
  830. $str .= "}\n";
  831. $str .= "if ( typeof window.addEventListener != \"undefined\" )\n";
  832. $str .= "window.addEventListener( \"load\", makemenu, false );\n";
  833. $str .= "else if ( typeof window.attachEvent != \"undefined\" ) { \n";
  834. $str .= "window.attachEvent( \"onload\", makemenu );\n";
  835. $str .= "}\n";
  836. $str .= "else {\n";
  837. $str .= "if ( window.onload != null ) {\n";
  838. $str .= "var oldOnload = window.onload;\n";
  839. $str .= "window.onload = function ( e ) { \n";
  840. $str .= "oldOnload( e ); \n";
  841. $str .= "makemenu() \n";
  842. $str .= "} \n";
  843. $str .= "} \n";
  844. $str .= "else { \n";
  845. $str .= "window.onload = makemenu();\n";
  846. $str .= "} }\n";
  847. $str .= "//--> \n";
  848. $str .= "</script> \n";
  849. $str .= "<script type=\"text/javascript\">\n";
  850. $str .= "<!--\n";
  851. $border1 = explode(" ", $swmenufree['main_border']);
  852. $border2 = explode(" ", $swmenufree['sub_border']);
  853. $border1[0] = rtrim(trim($border1[0]), 'px');
  854. $border2[0] = rtrim(trim($border2[0]), 'px');
  855. $border1[1] = trim($border1[1]);
  856. $border2[1] = trim($border2[1]);
  857. $border1[2] = trim($border1[2]);
  858. $border2[2] = trim($border2[2]);
  859. $border3 = explode(" ", $swmenufree['main_border_over']);
  860. $border4 = explode(" ", $swmenufree['sub_border_over']);
  861. $border3[0] = rtrim(trim($border3[0]), 'px');
  862. $border4[0] = rtrim(trim($border4[0]), 'px');
  863. $border3[1] = trim($border3[1]);
  864. $border4[1] = trim($border4[1]);
  865. $border3[2] = trim($border3[2]);
  866. $border4[2] = trim($border4[2]);
  867. if ($swmenufree['corners']) {
  868. $registry = new JRegistry();
  869. $registry->loadINI($swmenufree['corners']);
  870. $params = $registry->toObject();
  871. $c_corner_style = @$params->c_corner_style ? $params->c_corner_style : 0;
  872. if (($c_corner_style != 'none') && $c_corner_style) {
  873. $c_corner_size = @$params->c_corner_size ? $params->c_corner_size : 10;
  874. $ctl_corner = @$params->ctl_corner ? $params->ctl_corner : 0;
  875. $ctr_corner = @$params->ctr_corner ? $params->ctr_corner : 0;
  876. $cbl_corner = @$params->cbl_corner ? $params->cbl_corner : 0;
  877. $cbr_corner = @$params->cbr_corner ? $params->cbr_corner : 0;
  878. if (($border1[0] > 0) && ($border1[1] != 'none')) {
  879. $str .= "if (jQuery.browser.msie) {\n";
  880. $str .= "jQuery('#outerwrap').css('z-index','-1');\n";
  881. $str .= "}\n";
  882. $str .= "jQuery('#outertable').css('border', '0');\n";
  883. $str .= "jQuery('#outerwrap').css('border', '0');\n";
  884. $str .= "jQuery('#outerwrap').wrap('<div></div>');\n";
  885. $str .= "jQuery('#outerwrap').parent().css('background-color', '" . $border1[2] . "');\n";
  886. $str .= "jQuery('#outerwrap').parent().css('padding', '" . $border1[0] . "px');\n";
  887. $str .= "jQuery('#outerwrap').parent().corner('" . $c_corner_style . " " . ($ctl_corner ? 'tl' : '') . " " . ($ctr_corner ? 'tr' : '') . " " . ($cbl_corner ? 'bl' : '') . " " . ($cbr_corner ? 'br' : '') . " " . ($c_corner_size + $border1[0]) . "px');\n";
  888. }
  889. $str .= "jQuery('#outerwrap ').corner('" . $c_corner_style . " " . ($ctl_corner ? 'tl' : '') . " " . ($ctr_corner ? 'tr' : '') . " " . ($cbl_corner ? 'bl' : '') . " " . ($cbr_corner ? 'br' : '') . " " . $c_corner_size . "px');\n";
  890. }
  891. $t_corner_style = @$params->t_corner_style ? $params->t_corner_style : 0;
  892. if (($t_corner_style != 'none') && $t_corner_style) {
  893. $t_corner_size = @$params->t_corner_size ? $params->t_corner_size : 10;
  894. $ttl_corner = @$params->ttl_corner ? $params->ttl_corner : 0;
  895. $ttr_corner = @$params->ttr_corner ? $params->ttr_corner : 0;
  896. $tbl_corner = @$params->tbl_corner ? $params->tbl_corner : 0;
  897. $tbr_corner = @$params->tbr_corner ? $params->tbr_corner : 0;
  898. if (($border3[0] != 0) && ($border3[1] != 'none')) {
  899. $str .= "if (jQuery.browser.msie) {\n";
  900. $str .= "jQuery('#menu .item1').css('z-index','-1');\n";
  901. $str .= "}\n";
  902. $str .= "jQuery('#menu .item1').css('border', '0');\n";
  903. $str .= "jQuery('#menu .item1').css('margin', '0');\n";
  904. $str .= "jQuery('#menu .item1').wrap('<div></div>');\n";
  905. $str .= "jQuery('#menu .item1').parent().css('margin', '" . $swmenufree['top_margin'] . "');\n";
  906. $str .= "jQuery('#menu .item1').parent().css('background-color', '" . $border3[2] . "');\n";
  907. $str .= "jQuery('#menu .item1').parent().css('padding', '" . $border3[0] . "px');\n";
  908. $str .= "jQuery('#menu .item1').css('left', '-0.5px');\n";
  909. $str .= "jQuery('#menu .item1').parent().corner('" . $t_corner_style . " " . ($ttl_corner ? 'tl' : '') . " " . ($ttr_corner ? 'tr' : '') . " " . ($tbl_corner ? 'bl' : '') . " " . ($tbr_corner ? 'br' : '') . " " . ($t_corner_size + $border3[0]) . "px');\n";
  910. }
  911. $str .= "jQuery('#menu .item1').corner('" . $t_corner_style . " " . ($ttl_corner ? 'tl' : '') . " " . ($ttr_corner ? 'tr' : '') . " " . ($tbl_corner ? 'bl' : '') . " " . ($tbr_corner ? 'br' : '') . " " . $t_corner_size . "px');\n";
  912. }
  913. $s_corner_style = @$params->s_corner_style ? $params->s_corner_style : 0;
  914. if (($s_corner_style != 'none') && $s_corner_style) {
  915. $s_corner_size = @$params->s_corner_size ? $params->s_corner_size : 10;
  916. $stl_corner = @$params->stl_corner ? $params->stl_corner : 0;
  917. $str_corner = @$params->str_corner ? $params->str_corner : 0;
  918. $sbl_corner = @$params->sbl_corner ? $params->sbl_corner : 0;
  919. $sbr_corner = @$params->sbr_corner ? $params->sbr_corner : 0;
  920. if (($border2[0] != 0) && ($border2[1] != 'none')) {
  921. $str .= "if (jQuery.browser.msie) {\n";
  922. $str .= "}\n";
  923. $str .= "jQuery('.ddmx .section .item2').wrap('<div></div>');\n";
  924. $str .= "jQuery('.ddmx .section').css('border','0');";
  925. $str .= "jQuery('.ddmx .section .item2').parent().css('padding-right', '" . $border2[0] . "px');\n";
  926. $str .= "jQuery('.ddmx .section .item2').parent().css('padding-left', '" . $border2[0] . "px');\n";
  927. $str .= "jQuery('.ddmx .section .item2.first').parent().css('padding-top', '" . $border2[0] . "px');\n";
  928. $str .= "jQuery('.ddmx .section .item2.last').parent().css('padding-bottom', '" . $border2[0] . "px');\n";
  929. $str .= "jQuery('.ddmx .section .item2' ).parent().css('background-color', '" . $border2[2] . "');\n";
  930. $str .= "jQuery('.ddmx .section .item2.first').parent().corner('" . $s_corner_style . " " . ($stl_corner ? 'tl' : '') . " " . ($str_corner ? 'tr' : '') . " " . ($s_corner_size + $border2[0]) . "px');\n";
  931. $str .= "jQuery('.ddmx .section .item2.last').parent().corner('" . $s_corner_style . " " . ($sbl_corner ? 'bl' : '') . " " . ($sbr_corner ? 'br' : '') . " " . ($s_corner_size + $border2[0]) . "px');\n";
  932. $str .= "jQuery('#menu .section .item2.first').corner('" . $s_corner_style . " " . ($stl_corner ? 'tl' : '') . " " . ($str_corner ? 'tr' : '') . " " . $s_corner_size . "px');\n";
  933. $str .= "jQuery('#menu .section .item2.last').corner('" . $s_corner_style . " " . ($sbl_corner ? 'bl' : '') . " " . ($sbr_corner ? 'br' : '') . " " . $s_corner_size . "px');\n";
  934. } else {
  935. if ($stl_corner + $str_corner != 0) {
  936. $str .= "jQuery('#menu .section .item2.first').corner('" . $s_corner_style . " " . ($stl_corner ? 'tl' : '') . " " . ($str_corner ? 'tr' : '') . " " . $s_corner_size . "px');\n";
  937. }
  938. if ($sbl_corner + $sbr_corner != 0) {
  939. $str .= "jQuery('#menu .section .item2.last').corner('" . $s_corner_style . " " . ($sbl_corner ? 'bl' : '') . " " . ($sbr_corner ? 'br' : '') . " " . $s_corner_size . "px');\n";
  940. }
  941. }
  942. }
  943. }
  944. if ($overlay_hack) {
  945. $str .= "jQuery('#menu').parents().css('overflow','visible');\n";
  946. $str .= "jQuery('html').css('overflow','auto');\n";
  947. $str .= "jQuery('#menu').parents().css('z-index','100');\n";
  948. $str .= "jQuery('#menu').css('z-index','101');\n";
  949. }
  950. if ($swmenufree['top_ttf']) {
  951. $registry = new JRegistry();
  952. $registry->loadINI($swmenufree['top_ttf']);
  953. $params = $registry->toObject();
  954. $fontfile = @$params->fontFile ? $params->fontFile : '';
  955. $fontface = @$params->fontFace ? $params->fontFace : '';
  956. $str .= "Cufon.replace('.ddmx .item1',{hover: true, fontFamily: '" . $fontface . "' });\n";
  957. }
  958. if ($swmenufree['sub_ttf']) {
  959. $registry = new JRegistry();
  960. $registry->loadINI($swmenufree['sub_ttf']);
  961. $params = $registry->toObject();
  962. $fontfile = @$params->fontFile ? $params->fontFile : '';
  963. $fontface = @$params->fontFace ? $params->fontFace : '';
  964. $str .= "Cufon.replace('.ddmx .item2',{hover: true, fontFamily: '" . $fontface . "' });\n";
  965. }
  966. $str .= "//-->\n";
  967. $str .= "</script>\n";
  968. return $str;
  969. }
  970. function SuperfishMenuFree($ordered, $swmenufree, $active_menu, $selectbox_hack, $overlay_hack) {
  971. global $mainframe, $Itemid;
  972. $absolute_path = JPATH_ROOT;
  973. $live_site = $mainframe->isAdmin() ? $mainframe->getSiteURL() : JURI::base();
  974. $name = "";
  975. $counter = 0;
  976. $doMenu = 1;
  977. //$uniqueID = $swmenufree['id'];
  978. $number = count($ordered);
  979. $activesub = -1;
  980. $activesub2 = -1;
  981. $topcount = 0;
  982. $subcounter = 0;
  983. $registry = new JRegistry();
  984. $registry->loadINI($swmenufree['sub_indicator']);
  985. $sub_indicator = $registry->toObject();
  986. $top_sub_indicator = $sub_indicator->top_sub_indicator ? $sub_indicator->top_sub_indicator : '';
  987. $sub_sub_indicator = $sub_indicator->sub_sub_indicator ? $sub_indicator->sub_sub_indicator : '';
  988. $sub_indicator_align = $sub_indicator->sub_indicator_align ? $sub_indicator->sub_indicator_align : 'left';
  989. $sub_indicator_top = $sub_indicator->sub_indicator_top ? $sub_indicator->sub_indicator_top : 0;
  990. $sub_indicator_left = $sub_indicator->sub_indicator_left ? $sub_indicator->sub_indicator_left : 0;
  991. $str = "<div id=\"sfmenu\" align=\"" . $swmenufree['position'] . "\" >\n";
  992. if ($swmenufree['orientation'] == "horizontal") {
  993. $str.= "<ul id=\"menu\" class=\"sw-sf\" > \n";
  994. } else {
  995. $str.= "<ul id=\"menu\" class=\"sw-sf sf-vertical\" > \n";
  996. }
  997. //if ($swmenufree['orientation']=="horizontal"){$str.= "<tr> \n";}
  998. while ($doMenu) {
  999. if ($ordered[$counter]['indent'] == 0) {
  1000. $ordered[$counter]['URL'] = str_replace('&', '&amp;', $ordered[$counter]['URL']);
  1001. $name = $ordered[$counter]['TITLE'];
  1002. if (($counter + 1 != $number) && ($ordered[$counter + 1]['indent'] > $ordered[$counter]['indent']) && $top_sub_indicator) {
  1003. $name = "<img src='" . $live_site . $top_sub_indicator . "' align='" . $sub_indicator_align . "' style='position:relative;left:" . $sub_indicator_left . "px;top:" . $sub_indicator_top . "px;' alt='' />" . $name;
  1004. }
  1005. if ($swmenufree['orientation'] == "vertical") {
  1006. // $str.= "<tr> \n";
  1007. }
  1008. $act = 0;
  1009. if (islastFree($ordered, $counter)) {
  1010. if (($ordered[$counter]['ID'] == $active_menu)) {
  1011. $str.= "<li id='sf-" . $ordered[$counter]['ID'] . "' class='current'> \n";
  1012. $act = 1;
  1013. $activesub = $topcount;
  1014. } else {
  1015. $str.= "<li id='sf-" . $ordered[$counter]['ID'] . "' > \n";
  1016. }
  1017. } else {
  1018. if (($ordered[$counter]['ID'] == $active_menu)) {
  1019. $str.= "<li id='sf-" . $ordered[$counter]['ID'] . "' class='current'> \n";
  1020. $act = 1;
  1021. $activesub = $topcount;
  1022. } else {
  1023. $str.= "<li id='sf-" . $ordered[$counter]['ID'] . "' > \n";
  1024. }
  1025. }
  1026. $topcount++;
  1027. //echo $ordered[$counter]['URL']."<br />";
  1028. switch ($ordered[$counter]['TARGET']) {
  1029. // cases are slightly different
  1030. case 1:
  1031. // open in a new window
  1032. if (islastFree($ordered, $counter)) {
  1033. $str.= '<a href="' . $ordered[$counter]['URL'] . '" target="_blank" class="item1 last" >' . $name . '</a>';
  1034. } else {
  1035. $str.= '<a href="' . $ordered[$counter]['URL'] . '" target="_blank" class="item1" >' . $name . '</a>';
  1036. }
  1037. break;
  1038. case 2:
  1039. // open in a popup window
  1040. if (islastFree($ordered, $counter)) {
  1041. $str.= "<a href=\"#\" onclick=\"javascript: window.open('" . $ordered[$counter]['URL'] . "', '', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550'); return false\" class=\"item1 last\">" . $name . "</a>\n";
  1042. } else {
  1043. $str.= "<a href=\"#\" onclick=\"javascript: window.open('" . $ordered[$counter]['URL'] . "', '', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550'); return false\" class=\"item1\">" . $name . "</a>\n";
  1044. }
  1045. break;
  1046. case 3:
  1047. // don't link it
  1048. if (islastFree($ordered, $counter)) {
  1049. $str.= '<a class="item1 last" >' . $name . '</a>';
  1050. } else {
  1051. $str.= '<a class="item1" >' . $name . '</a>';
  1052. }
  1053. break;
  1054. default: // formerly case 2
  1055. // open in parent window
  1056. if (islastFree($ordered, $counter)) {
  1057. $str.= "<a href='" . $ordered[$counter]['URL'] . "' class='item1 last'>" . $name . "</a>\n";
  1058. } else {
  1059. $str.= "<a href='" . $ordered[$counter]['URL'] . "' class='item1'>" . $name . "</a>\n";
  1060. }
  1061. break;
  1062. }
  1063. if ($counter + 1 == $number) {
  1064. $doSubMenu = 0;
  1065. $doMenu = 0;
  1066. //$str.= "<div class=\"section\" style=\"border:0 !important;\"></div> \n";
  1067. } elseif ($ordered[$counter + 1]['indent'] == 0) {
  1068. $doSubMenu = 0;
  1069. //$str.= "<div class=\"section\" style=\"border:0 !important;\"></div> \n";
  1070. } else {
  1071. $doSubMenu = 1;
  1072. }
  1073. $counter++;
  1074. if ($activesub2 == -1) {
  1075. $subcounter = 0;
  1076. }
  1077. while ($doSubMenu) {
  1078. if ($ordered[$counter]['indent'] != 0) {
  1079. if ($ordered[$counter]['indent'] > $ordered[$counter - 1]['indent']) {
  1080. $str.= "<ul class='sf-section' >\n";
  1081. }
  1082. $ordered[$counter]['URL'] = str_replace('&', '&amp;', $ordered[$counter]['URL']);
  1083. $name = $ordered[$counter]['TITLE'];
  1084. if (($counter + 1 == $number) || ($ordered[$counter + 1]['indent'] == 0)) {
  1085. $doSubMenu = 0;
  1086. //$str.= "</li> \n";
  1087. }
  1088. //$style=" style=\"";
  1089. $li_class = "";
  1090. $a_class = "item2";
  1091. if (($counter + 1 == $number) || islastFree($ordered, $counter)) {
  1092. $a_class.=" last";
  1093. }
  1094. if ($ordered[$counter]['indent'] > $ordered[$counter - 1]['indent']) {
  1095. $a_class.=" first";
  1096. }
  1097. if (($counter + 1 != $number) && ($ordered[$counter + 1]['indent'] > $ordered[$counter]['indent']) && $sub_sub_indicator) {
  1098. $name = "<img src='" . $live_site . $sub_sub_indicator . "' align='" . $sub_indicator_align . "' style='position:relative;left:" . $sub_indicator_left . "px;top:" . $sub_indicator_top . "px;' alt='' />" . $name;
  1099. }
  1100. if (($ordered[$counter]['ID'] == $Itemid)) {
  1101. $li_class = "sf-" . $ordered[$counter]['ID'] . "";
  1102. } else {
  1103. $li_class = "sf-" . $ordered[$counter]['ID'] . "";
  1104. }
  1105. $str.="<li id=\"" . $li_class . "\">";
  1106. switch ($ordered[$counter]['TARGET']) {
  1107. // cases are slightly different
  1108. case 1:
  1109. // open in a new window
  1110. $str.= '<a href="' . $ordered[$counter]['URL'] . '" target="_blank" class="' . $a_class . '" >' . $name . '</a>';
  1111. break;
  1112. case 2:
  1113. // open in a popup window
  1114. $str.= "<a href=\"#\" onclick=\"javascript: window.open('" . $ordered[$counter]['URL'] . "', '', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550'); return false\" class=\"" . $a_class . "\">" . $name . "</a>\n";
  1115. break;
  1116. case 3:
  1117. // don't link it
  1118. $str.= '<a class="' . $a_class . '" >' . $name . '</a>';
  1119. break;
  1120. default: // formerly case 2
  1121. // open in parent window
  1122. $str.= "<a href=\"" . $ordered[$counter]['URL'] . "\" class=\"" . $a_class . "\" >" . $name . "</a>\n";
  1123. break;
  1124. }
  1125. if (($counter + 1 == $number) || ($ordered[$counter + 1]['indent'] < $ordered[$counter]['indent'])) {
  1126. $str .= str_repeat("</li></ul>\n", (($ordered[$counter]['indent']) - (@$ordered[$counter + 1]['indent'])));
  1127. if (($ordered[$counter + 1]['indent'] > 0)) {
  1128. $str .= "</li> \n";
  1129. }
  1130. } else if (($ordered[$counter + 1]['indent'] <= $ordered[$counter]['indent'])) {
  1131. $str .= "</li> \n";
  1132. }
  1133. $counter++;
  1134. }
  1135. }
  1136. $str.= "</li> \n";
  1137. }
  1138. //$str.= "</li> \n";
  1139. if ($swmenufree['orientation'] == "vertical") {
  1140. //$str.= "</tr> \n";
  1141. }
  1142. if ($counter == ($number)) {
  1143. $doMenu = 0;
  1144. }
  1145. }
  1146. //if ($swmenufree['orientation']=="horizontal"){$str.= "</tr> \n";}
  1147. $str .= "</ul><hr style=\"display:block;clear:left;margin:-0.66em 0;visibility:hidden;\" /></div> \n";
  1148. if ($swmenufree['sub_width'] > 0) {
  1149. $str.="<script type=\"text/javascript\">\n";
  1150. $str.="<!--\n";
  1151. $str.="jQuery.noConflict();\n";
  1152. $str.="jQuery(document).ready(function($){\n";
  1153. $str.="$('.sw-sf').superfish({\n";
  1154. switch ($swmenufree['extra']) {
  1155. // cases are slightly different
  1156. case "fade":
  1157. $str.="animation: {opacity:'show'},";
  1158. $str.="speed: " . $swmenufree['specialB'] . ",";
  1159. break;
  1160. case "slide-down":
  1161. $str.="animation: {height:'show'},";
  1162. $str.="speed: " . $swmenufree['specialB'] . ",";
  1163. break;
  1164. case "slide-right":
  1165. $str.="animation: {width:'show'},";
  1166. $str.="speed: " . $swmenufree['specialB'] . ",";
  1167. break;
  1168. default:
  1169. // $str.="animation: {opacity:'show'},";
  1170. $str.="speed: 1,";
  1171. break;
  1172. }
  1173. // $str.="animation: {opacity:'show',width:'show'},";
  1174. $str.="autoArrows: false\n";
  1175. //$str.="dropShadows: true\n";
  1176. //$str.="pathClass: 'current' \n";
  1177. $str.="});\n";
  1178. if ($overlay_hack) {
  1179. //$str.="alert($.topZIndex());\n";
  1180. // $str.="$('#left_container').topZIndex();\n";
  1181. $str.="$('.sw-sf').parents().css('overflow','visible');\n";
  1182. $str.="$('html').css('overflow','auto');\n";
  1183. $str.="$('.sw-sf').parents().css('z-index','100');\n";
  1184. $str.="$('.sw-sf').css('z-index','101');\n";
  1185. }
  1186. /// $str.="$('#menu".$uniqueID." ).dropShadow();\n";
  1187. $str.="});\n";
  1188. } else {
  1189. $str.="<script type=\"text/javascript\">\n";
  1190. $str.="<!--\n";
  1191. $str.="jQuery.noConflict();\n";
  1192. //$str.="alert($.topZIndex());\n";
  1193. $str.="jQuery(document).ready(function($){\n";
  1194. $str.="$('.sw-sf').supersubs({ \n";
  1195. $str.="minWidth:8,\n";
  1196. $str.="maxWidth:80,\n";
  1197. $str.="extraWidth:2\n";
  1198. $str.="}).superfish({\n";
  1199. switch ($swmenufree['extra']) {
  1200. // cases are slightly different
  1201. case "fade":
  1202. $str.="animation: {opacity:'show'},";
  1203. $str.="speed: " . $swmenufree['specialB'] . ",";
  1204. break;
  1205. case "slide-down":
  1206. $str.="animation: {height:'show'},";
  1207. $str.="speed: " . $swmenufree['specialB'] . ",";
  1208. break;
  1209. case "slide-right":
  1210. $str.="animation: {width:'show'},";
  1211. $str.="speed: " . $swmenufree['specialB'] . ",";
  1212. break;
  1213. default:
  1214. // $str.="animation: {opacity:'show'},";
  1215. $str.="speed: 1,";
  1216. break;
  1217. }
  1218. //$str.="animation: {opacity:'show',width:'show'},";
  1219. $str.="autoArrows: false\n";
  1220. //$str.="dropShadows: true\n";
  1221. //$str.="pathClass: 'current' \n";
  1222. $str.="});\n";
  1223. //$str.="$.fx.off=true;\n";
  1224. if ($overlay_hack) {
  1225. //$str.="alert($.topZIndex());\n";
  1226. // $str.="$('#left_container').topZIndex();\n";
  1227. $str.="$('.sw-sf').parents().css('overflow','visible');\n";
  1228. $str.="$('html').css('overflow','auto');\n";
  1229. $str.="$('.sw-sf').parents().css('z-index','100');\n";
  1230. $str.="$('.sw-sf').css('z-index','101');\n";
  1231. }
  1232. $str.="});\n";
  1233. }
  1234. $str.= "//--> \n";
  1235. $str.= "</script> \n";
  1236. $str .= "<script type=\"text/javascript\">\n";
  1237. $str .= "<!--\n";
  1238. $border1 = explode(" ", $swmenufree['main_border']);
  1239. $border2 = explode(" ", $swmenufree['sub_border']);
  1240. $border1[0] = rtrim(trim($border1[0]), 'px');
  1241. $border2[0] = rtrim(trim($border2[0]), 'px');
  1242. $border1[1] = trim($border1[1]);
  1243. $border2[1] = trim($border2[1]);
  1244. $border1[2] = trim($border1[2]);
  1245. $border2[2] = trim($border2[2]);
  1246. $border3 = explode(" ", $swmenufree['main_border_over']);
  1247. $border4 = explode(" ", $swmenufree['sub_border_over']);
  1248. $border3[0] = rtrim(trim($border3[0]), 'px');
  1249. $border4[0] = rtrim(trim($border4[0]), 'px');
  1250. $border3[1] = trim($border3[1]);
  1251. $border4[1] = trim($border4[1]);
  1252. $border3[2] = trim($border3[2]);
  1253. $border4[2] = trim($border4[2]);
  1254. if ($swmenufree['corners']) {
  1255. $registry = new JRegistry();
  1256. $registry->loadINI($swmenufree['corners']);
  1257. $params = $registry->toObject();
  1258. $c_corner_style = @$params->c_corner_style ? $params->c_corner_style : 0;
  1259. if (($c_corner_style != 'none') && $c_corner_style) {
  1260. $c_corner_size = @$params->c_corner_size ? $params->c_corner_size : 10;
  1261. $ctl_corner = @$params->ctl_corner ? $params->ctl_corner : 0;
  1262. $ctr_corner = @$params->ctr_corner ? $params->ctr_corner : 0;
  1263. $cbl_corner = @$params->cbl_corner ? $params->cbl_corner : 0;
  1264. $cbr_corner = @$params->cbr_corner ? $params->cbr_corner : 0;
  1265. if (($border1[0] > 0) && ($border1[1] != 'none')) {
  1266. $str .= "if (jQuery.browser.msie) {\n";
  1267. $str .= "jQuery('#sfmenu').css('z-index','-1');\n";
  1268. // $str .= "jQuery('#td_menu_wrap').css('z-index','-1');\n";
  1269. // $str .= "jQuery('#td_menu_wrap').css('position','relative');\n";
  1270. $str .= "}\n";
  1271. // $str .= "jQuery('#outertable').css('border', '0');\n";
  1272. $str .= "jQuery('#sfmenu').css('border', '0 !important');\n";
  1273. $str .= "jQuery('#sfmenu').wrap('<div></div>');\n";
  1274. $str .= "jQuery('#sfmenu').parent().css('background-color', '" . $border1[2] . "');\n";
  1275. //$str .= "jQuery('#menu_wrap').parent().css('position', 'relative');\n";
  1276. // $str .= "jQuery('#menu_wrap').parent().position({left:" . $swmenupro['main_left'] . "});\n";
  1277. $str .= "jQuery('#sfmenu').parent().css('padding', '" . $border1[0] . "px');\n";
  1278. $str .= "jQuery('#sfmenu').parent().corner('" . $c_corner_style . " " . ($ctl_corner ? 'tl' : '') . " " . ($ctr_corner ? 'tr' : '') . " " . ($cbl_corner ? 'bl' : '') . " " . ($cbr_corner ? 'br' : '') . " " . ($c_corner_size + $border1[0]) . "px');\n";
  1279. //$str .= "jQuery('#td_menu_wrap').css('z-index','1');\n";
  1280. }
  1281. //$str .= "jQuery('#wrap').wrap('<div></div>');\n";
  1282. //$str .= "jQuery('#td_menu_wrap').css('z-index','-1');\n";
  1283. $str .= "jQuery('#sfmenu ').corner('" . $c_corner_style . " " . ($ctl_corner ? 'tl' : '') . " " . ($ctr_corner ? 'tr' : '') . " " . ($cbl_corner ? 'bl' : '') . " " . ($cbr_corner ? 'br' : '') . " " . $c_corner_size . "px');\n";
  1284. // $str .= "jQuery('div#wrap').css('position','absolute');\n";
  1285. }
  1286. $t_corner_style = @$params->t_corner_style ? $params->t_corner_style : 0;
  1287. if (($t_corner_style != 'none') && $t_corner_style) {
  1288. $t_corner_size = @$params->t_corner_size ? $params->t_corner_size : 10;
  1289. $ttl_corner = @$params->ttl_corner ? $params->ttl_corner : 0;
  1290. $ttr_corner = @$params->ttr_corner ? $params->ttr_corner : 0;
  1291. $tbl_corner = @$params->tbl_corner ? $params->tbl_corner : 0;
  1292. $tbr_corner = @$params->tbr_corner ? $params->tbr_corner : 0;
  1293. $str .= "jQuery('.sw-sf a.item1').corner('" . $t_corner_style . " " . ($ttl_corner ? 'tl' : '') . " " . ($ttr_corner ? 'tr' : '') . " " . ($tbl_corner ? 'bl' : '') . " " . ($tbr_corner ? 'br' : '') . " " . $t_corner_size . "px');\n";
  1294. }
  1295. $s_corner_style = @$params->s_corner_style ? $params->s_corner_style : 0;
  1296. if (($s_corner_style != 'none') && $s_corner_style) {
  1297. $s_corner_size = @$params->s_corner_size ? $params->s_corner_size : 10;
  1298. $stl_corner = @$params->stl_corner ? $params->stl_corner : 0;
  1299. $str_corner = @$params->str_corner ? $params->str_corner : 0;
  1300. $sbl_corner = @$params->sbl_corner ? $params->sbl_corner : 0;
  1301. $sbr_corner = @$params->sbr_corner ? $params->sbr_corner : 0;
  1302. $str .= "jQuery('.sf-section a.item2.last').corner('" . $s_corner_style . " " . ($sbl_corner ? 'bl' : '') . " " . ($sbr_corner ? 'br' : '') . " " . $s_corner_size . "px');\n";
  1303. $str .= "jQuery('.sf-section a.item2.first').corner('" . $s_corner_style . " " . ($stl_corner ? 'tl' : '') . " " . ($str_corner ? 'tr' : '') . " " . $s_corner_size . "px');\n";
  1304. }
  1305. }
  1306. if ($swmenufree['top_ttf']) {
  1307. $registry = new JRegistry();
  1308. $registry->loadINI($swmenufree['top_ttf']);
  1309. $params = $registry->toObject();
  1310. $fontfile = @$params->fontFile ? $params->fontFile : '';
  1311. $fontface = @$params->fontFace ? $params->fontFace : '';
  1312. $str .= "Cufon.replace('.sw-sf .item1',{hover: true, fontFamily: '" . $fontface . "' });\n";
  1313. }
  1314. if ($swmenufree['sub_ttf']) {
  1315. $registry = new JRegistry();
  1316. $registry->loadINI($swmenufree['sub_ttf']);
  1317. $params = $registry->toObject();
  1318. $fontfile = @$params->fontFile ? $params->fontFile : '';
  1319. $fontface = @$params->fontFace ? $params->fontFace : '';
  1320. $str .= "Cufon.replace('.sw-sf .item2',{hover: true, fontFamily: '" . $fontface . "' });\n";
  1321. }
  1322. $str .= "//-->\n";
  1323. $str .= "</script>\n";
  1324. return $str;
  1325. }
  1326. function islastFree($array, $id) {
  1327. $this_level = $array[$id]['indent'];
  1328. $last = 0;
  1329. $i = $id + 1;
  1330. $do = 1;
  1331. while ($do) {
  1332. if (@$array[$i]['indent'] < $this_level || $i == count($array)) {
  1333. $last = 1;
  1334. }
  1335. if (@$array[$i]['indent'] <= $this_level) {
  1336. $do = 0;
  1337. }
  1338. $i++;
  1339. }
  1340. return $last;
  1341. }
  1342. function swmenuGetBrowserFree() {
  1343. $br = new swBrowserFree;
  1344. // echo substr($br->Name.$br->Version,0,5);
  1345. return($br->Name . $br->Version);
  1346. }
  1347. function inAgentFree($agent) {
  1348. global $HTTP_USER_AGENT;
  1349. $notAgent = strpos($HTTP_USER_AGENT, $agent) === false;
  1350. return !$notAgent;
  1351. }
  1352. function fixPaddingFree(&$swmenufree) {
  1353. $padding1 = explode("px", $swmenufree['main_padding']);
  1354. $padding2 = explode("px", $swmenufree['sub_padding']);
  1355. for ($i = 0; $i < 4; $i++) {
  1356. $padding1[$i] = trim(@$padding1[$i]);
  1357. $padding2[$i] = trim(@$padding2[$i]);
  1358. }
  1359. if ($swmenufree['main_width'] != 0) {
  1360. $swmenufree['main_width'] = ($swmenufree['main_width'] - ($padding1[1] + $padding1[3]));
  1361. }
  1362. if ($swmenufree['main_height'] != 0) {
  1363. $swmenufree['main_height'] = ($swmenufree['main_height'] - ($padding1[0] + $padding1[2]));
  1364. }
  1365. if ($swmenufree['sub_width'] != 0) {
  1366. $swmenufree['sub_width'] = ($swmenufree['sub_width'] - ($padding2[1] + $padding2[3]));
  1367. }
  1368. if (@$swmenufree['sub_width'] != 0) {
  1369. $swmenufree['sub_height'] = ($swmenufree['sub_height'] - ($padding2[0] + $padding2[2]));
  1370. }
  1371. return($swmenufree);
  1372. }
  1373. function sw_getactiveFree($ordered) {
  1374. $current_itemid = trim(JRequest::getVar('Itemid', 0));
  1375. $current_id = trim(JRequest::getVar('id', 0));
  1376. $current_task = trim(JRequest::getVar('task', 0));
  1377. $cur_option = trim(JRequest::getVar('option', 0));
  1378. if (($cur_option == "com_virtuemart")) {
  1379. $prod_id = trim(JRequest::getVar('virtuemart_product_id', 0));
  1380. $cat_id = trim(JRequest::getVar('virtuemart_category_id', 0));
  1381. if ($prod_id) {
  1382. $current_itemid = $prod_id + 100000;
  1383. } else {
  1384. $current_itemid = $cat_id + 10000;
  1385. }
  1386. }
  1387. if (!$current_itemid && $current_id) {
  1388. if (preg_match("/category/i", $current_task)) {
  1389. $current_itemid = $current_id + 1000;
  1390. } elseif (preg_match("/section/i", $current_task)) {
  1391. $current_itemid = $current_id;
  1392. } elseif (preg_match("/view/i", $current_task)) {
  1393. $current_itemid = $current_id + 10000;
  1394. }
  1395. }
  1396. $indent = 0;
  1397. $parent_value = $current_itemid;
  1398. $parent = 1;
  1399. $id = 0;
  1400. while ($parent) {
  1401. for ($i = 0; $i < count($ordered); $i++) {
  1402. $row = $ordered[$i];
  1403. if ($row['ID'] == $parent_value) {
  1404. $parent_value = $row['PARENT'];
  1405. $indent = $row['indent'];
  1406. $id = $row['ID'];
  1407. }
  1408. }
  1409. if (!$indent) {
  1410. $parent = 0;
  1411. }
  1412. }
  1413. return ($id);
  1414. }
  1415. class swBrowserFree {
  1416. var $Name = "Unknown";
  1417. var $Version = "Unknown";
  1418. var $Platform = "Unknown";
  1419. var $UserAgent = "Not reported";
  1420. var $AOL = false;
  1421. function swBrowserFree() {
  1422. $agent = $_SERVER['HTTP_USER_AGENT'];
  1423. // initialize properties
  1424. $bd['platform'] = "Unknown";
  1425. $bd['swBrowserFree'] = "Unknown";
  1426. $bd['version'] = "Unknown";
  1427. $this->UserAgent = $agent;
  1428. // find operating system
  1429. if (preg_match("/win/i", $agent))
  1430. $bd['platform'] = "Windows";
  1431. elseif (preg_match("/mac/i", $agent))
  1432. $bd['platform'] = "MacIntosh";
  1433. elseif (preg_match("/linux/i", $agent))
  1434. $bd['platform'] = "Linux";
  1435. elseif (preg_match("/OS2/i", $agent))
  1436. $bd['platform'] = "OS/2";
  1437. elseif (preg_match("/BeOS/i", $agent))
  1438. $bd['platform'] = "BeOS";
  1439. // test for Opera
  1440. if (preg_match("/opera/i", $agent)) {
  1441. $val = stristr($agent, "opera");
  1442. if (preg_match("//i", $val)) {
  1443. $val = explode("/", $val);
  1444. $bd['swBrowserFree'] = $val[0];
  1445. $val = explode(" ", $val[1]);
  1446. $bd['version'] = $val[0];
  1447. } else {
  1448. $val = explode(" ", stristr($val, "opera"));
  1449. $bd['swBrowserFree'] = $val[0];
  1450. $bd['version'] = $val[1];
  1451. }
  1452. // test for WebTV
  1453. } elseif (preg_match("/webtv/i", $agent)) {
  1454. $val = explode("/", stristr($agent, "webtv"));
  1455. $bd['swBrowserFree'] = $val[0];
  1456. $bd['version'] = $val[1];
  1457. // test for MS Internet Explorer version 1
  1458. } elseif (preg_match("/microsoft internet explorer/i", $agent)) {
  1459. $bd['swBrowserFree'] = "MSIE";
  1460. $bd['version'] = "1.0";
  1461. $var = stristr($agent, "/");
  1462. if (preg("/308|425|426|474|0b1/", $var)) {
  1463. $bd['version'] = "1.5";
  1464. }
  1465. // test for NetPositive
  1466. } elseif (preg_match("/NetPositive/i", $agent)) {
  1467. $val = explode("/", stristr($agent, "NetPositive"));
  1468. $bd['platform'] = "BeOS";
  1469. $bd['swBrowserFree'] = $val[0];
  1470. $bd['version'] = $val[1];
  1471. // test for MS Internet Explorer
  1472. } elseif (preg_match("/msie/i", $agent) && !preg_match("/opera/i", $agent)) {
  1473. $val = explode(" ", stristr($agent, "msie"));
  1474. $bd['swBrowserFree'] = $val[0];
  1475. $bd['version'] = $val[1];
  1476. // test for MS Pocket Internet Explorer
  1477. } elseif (preg_match("/mspie/i", $agent) || preg_match('/pocket/i', $agent)) {
  1478. $val = explode(" ", stristr($agent, "mspie"));
  1479. $bd['swBrowserFree'] = "MSPIE";
  1480. $bd['platform'] = "WindowsCE";
  1481. if (preg_match("/mspie/i", $agent))
  1482. $bd['version'] = $val[1];
  1483. else {
  1484. $val = explode("/", $agent);
  1485. $bd['version'] = $val[1];
  1486. }
  1487. // test for Galeon
  1488. } elseif (preg_match("/galeon/i", $agent)) {
  1489. $val = explode(" ", stristr($agent, "galeon"));
  1490. $val = explode("/", $val[0]);
  1491. $bd['swBrowserFree'] = $val[0];
  1492. $bd['version'] = $val[1];
  1493. // test for Konqueror
  1494. } elseif (preg_match("/Konqueror/i", $agent)) {
  1495. $val = explode(" ", stristr($agent, "Konqueror"));
  1496. $val = explode("/", $val[0]);
  1497. $bd['swBrowserFree'] = $val[0];
  1498. $bd['version'] = $val[1];
  1499. // test for iCab
  1500. } elseif (preg_match("/icab/i", $agent)) {
  1501. $val = explode(" ", stristr($agent, "icab"));
  1502. $bd['swBrowserFree'] = $val[0];
  1503. $bd['version'] = $val[1];
  1504. // test for OmniWeb
  1505. } elseif (preg_match("/omniweb/i", $agent)) {
  1506. $val = explode("/", stristr($agent, "omniweb"));
  1507. $bd['swBrowserFree'] = $val[0];
  1508. $bd['version'] = $val[1];
  1509. // test for Phoenix
  1510. } elseif (preg_match("/Phoenix/i", $agent)) {
  1511. $bd['swBrowserFree'] = "Phoenix";
  1512. $val = explode("/", stristr($agent, "Phoenix/"));
  1513. $bd['version'] = $val[1];
  1514. // test for Firebird
  1515. } elseif (preg_match("/firebird/i", $agent)) {
  1516. $bd['swBrowserFree'] = "Firebird";
  1517. $val = stristr($agent, "Firebird");
  1518. $val = explode("/", $val);
  1519. $bd['version'] = $val[1];
  1520. // test for Firefox
  1521. } elseif (preg_match("/Firefox/i", $agent)) {
  1522. $bd['swBrowserFree'] = "Firefox";
  1523. $val = stristr($agent, "Firefox");
  1524. $val = explode("/", $val);
  1525. $bd['version'] = $val[1];
  1526. // test for Mozilla Alpha/Beta Versions
  1527. } elseif (preg_match("/mozilla/i", $agent) &&
  1528. preg_match("/rv:[0-9].[0-9][a-b]/i", $agent) && !preg_match("/netscape/i", $agent)) {
  1529. $bd['swBrowserFree'] = "Mozilla";
  1530. $val = explode(" ", stristr($agent, "rv:"));
  1531. preg_match("/rv:[0-9].[0-9][a-b]/i", $agent, $val);
  1532. $bd['version'] = str_replace("rv:", "", $val[0]);
  1533. // test for Mozilla Stable Versions
  1534. } elseif (preg_match("/mozilla/i", $agent) &&
  1535. preg_match("/rv:[0-9]\.[0-9]/i", $agent) && !preg_match("/netscape/i", $agent)) {
  1536. $bd['swBrowserFree'] = "Mozilla";
  1537. $val = explode(" ", stristr($agent, "rv:"));
  1538. preg_match("/rv:[0-9]\.[0-9]\.[0-9]/i", $agent, $val);
  1539. $bd['version'] = str_replace("rv:", "", $val[0]);
  1540. // test for Lynx & Amaya
  1541. } elseif (preg_match("/libwww/i", $agent)) {
  1542. if (preg_match("/amaya/i", $agent)) {
  1543. $val = explode("/", stristr($agent, "amaya"));
  1544. $bd['swBrowserFree'] = "Amaya";
  1545. $val = explode(" ", $val[1]);
  1546. $bd['version'] = $val[0];
  1547. } else {
  1548. $val = explode("/", $agent);
  1549. $bd['swBrowserFree'] = "Lynx";
  1550. $bd['version'] = $val[1];
  1551. }
  1552. // test for Safari
  1553. } elseif (preg_match("/safari/i", $agent)) {
  1554. $bd['swBrowserFree'] = "Safari";
  1555. $bd['version'] = "";
  1556. // remaining two tests are for Netscape
  1557. } elseif (preg_match("/netscape/i", $agent)) {
  1558. $val = explode(" ", stristr($agent, "netscape"));
  1559. $val = explode("/", $val[0]);
  1560. $bd['swBrowserFree'] = $val[0];
  1561. $bd['version'] = $val[1];
  1562. } elseif (preg_match("/mozilla/i", $agent) && !preg_match("/rv:[0-9]\.[0-9]\.[0-9]/i", $agent)) {
  1563. $val = explode(" ", stristr($agent, "mozilla"));
  1564. $val = explode("/", $val[0]);
  1565. $bd['swBrowserFree'] = "Netscape";
  1566. $bd['version'] = $val[1];
  1567. }
  1568. // clean up extraneous garbage that may be in the name
  1569. $bd['swBrowserFree'] = preg_replace("[^a-z,A-Z]", "", $bd['swBrowserFree']);
  1570. // clean up extraneous garbage that may be in the version
  1571. $bd['version'] = preg_replace("[^0-9,.,a-z,A-Z]", "", $bd['version']);
  1572. // check for AOL
  1573. if (preg_match("/AOL/i", $agent)) {
  1574. $var = stristr($agent, "AOL");
  1575. $var = explode(" ", $var);
  1576. $bd['aol'] = preg_replace("[^0-9,.,a-z,A-Z]", "", $var[1]);
  1577. }
  1578. // finally assign our properties
  1579. $this->Name = $bd['swBrowserFree'];
  1580. $this->Version = $bd['version'];
  1581. $this->Platform = $bd['platform'];
  1582. // $this->AOL = $bd['aol'];
  1583. //echo $this->Name;
  1584. }
  1585. }
  1586. ?>