From: <vo...@us...> - 2012-03-04 05:02:08
|
Revision: 9089 http://xoops.svn.sourceforge.net/xoops/?rev=9089&view=rev Author: voltan1 Date: 2012-03-04 05:01:59 +0000 (Sun, 04 Mar 2012) Log Message: ----------- Add two new blocks Modified Paths: -------------- XoopsModules/fmcontent/branches/news/class/story.php XoopsModules/fmcontent/branches/news/include/functions_update.php XoopsModules/fmcontent/branches/news/language/arabic/modinfo.php XoopsModules/fmcontent/branches/news/language/english/blocks.php XoopsModules/fmcontent/branches/news/language/english/modinfo.php XoopsModules/fmcontent/branches/news/language/persian/modinfo.php XoopsModules/fmcontent/branches/news/sql/mysql.sql XoopsModules/fmcontent/branches/news/xoops_version.php Added Paths: ----------- XoopsModules/fmcontent/branches/news/blocks/marquee.php XoopsModules/fmcontent/branches/news/blocks/slide.php XoopsModules/fmcontent/branches/news/css/marquee.css XoopsModules/fmcontent/branches/news/css/scrollable.css XoopsModules/fmcontent/branches/news/css/sliderkit-core.css XoopsModules/fmcontent/branches/news/css/sliderkit-demos.css XoopsModules/fmcontent/branches/news/js/marquee/ XoopsModules/fmcontent/branches/news/js/marquee/index.html XoopsModules/fmcontent/branches/news/js/marquee/marquee.js XoopsModules/fmcontent/branches/news/js/marquee/setting.js XoopsModules/fmcontent/branches/news/js/scrollable/ XoopsModules/fmcontent/branches/news/js/scrollable/index.html XoopsModules/fmcontent/branches/news/js/scrollable/scrollable.js XoopsModules/fmcontent/branches/news/js/scrollable/setting.js XoopsModules/fmcontent/branches/news/js/sliderkit/ XoopsModules/fmcontent/branches/news/js/sliderkit/index.html XoopsModules/fmcontent/branches/news/js/sliderkit/sliderkit.min.js XoopsModules/fmcontent/branches/news/js/sliderkit/sliderkitsetting.js XoopsModules/fmcontent/branches/news/templates/blocks/news_block_marquee.html XoopsModules/fmcontent/branches/news/templates/blocks/news_block_slide.html Added: XoopsModules/fmcontent/branches/news/blocks/marquee.php =================================================================== --- XoopsModules/fmcontent/branches/news/blocks/marquee.php (rev 0) +++ XoopsModules/fmcontent/branches/news/blocks/marquee.php 2012-03-04 05:01:59 UTC (rev 9089) @@ -0,0 +1,97 @@ +<?php +/* + You may not change or alter any portion of this comment or credits + of supporting developers from this source code or any supporting source code + which is considered copyrighted (c) material of the original comment or credit authors. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +*/ + +/** + * Module block marquee file + * + * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/ + * @license http://www.fsf.org/copyleft/gpl.html GNU public license + * @author Hossein Azizabadi (Aka Voltan) + * @version $Id$ + */ + +function news_marquee_show($options) { + + $story_handler = xoops_getmodulehandler ( 'story', 'news' ); + $topic_handler = xoops_getmodulehandler ( 'topic', 'news' ); + $module_handler = xoops_gethandler('module'); + + require_once XOOPS_ROOT_PATH . '/modules/news/include/functions.php'; + require_once XOOPS_ROOT_PATH . '/modules/news/class/perm.php'; + require_once XOOPS_ROOT_PATH . '/modules/news/class/utils.php'; + + global $xoTheme; + + $block = array(); + $story_infos = array(); + $NewsModule = $options[0]; + $story_infos['story_limit'] = $options[1]; + $story_infos['title_lenght'] = $options[2]; + $block['show_date'] = $options[3]; + + array_shift($options); + array_shift($options); + array_shift($options); + array_shift($options); + + $NewsModule = $module_handler->getByDirname($NewsModule); + $story_infos['topics'] = $topic_handler->getall (); + $block['marquee'] = $story_handler->News_Marquee($NewsModule, $story_infos ,$options); + + $xoTheme->addScript("browse.php?Frameworks/jquery/jquery.js"); + $xoTheme->addScript(XOOPS_URL . '/modules/' . $NewsModule->getVar('dirname') . '/js/marquee/marquee.js'); + $xoTheme->addScript(XOOPS_URL . '/modules/' . $NewsModule->getVar('dirname') . '/js/marquee/setting.js'); + $xoTheme->addStylesheet(XOOPS_URL . '/modules/' . $NewsModule->getVar('dirname') . '/css/marquee.css'); + + return $block; +} + +function news_marquee_edit($options) { + + //appel de la class + $story_handler = xoops_getmodulehandler('story', 'news'); + $topic_handler = xoops_getmodulehandler('topic', 'news'); + $module_handler = xoops_gethandler('module'); + $NewsModule = $module_handler->getByDirname($options[0]); + + $criteria = new CriteriaCompo(); + $criteria->setSort('topic_weight ASC, topic_title'); + $criteria->setOrder('ASC'); + $topic_arr = $topic_handler->getall($criteria); + + $form = "<input type=\"hidden\" name=\"options[]\" value=\"" . $options[0] . "\" />"; + $form .= _NEWS_MB_NUMBER . " : <input type=\"text\" name=\"options[1]\" size=\"5\" maxlength=\"10\" value=\"" . $options[1] . "\" type=\"text\" /><br />\n"; + $form .= _NEWS_MB_CHARS . ":<input type=\"text\" name=\"options[2]\" size=\"5\" maxlength=\"10\" value=\"" . $options[2] . "\" /><br />"; + + if ($options[3] == false) { + $checked_yes = ''; + $checked_no = 'checked="checked"'; + } else { + $checked_yes = 'checked="checked"'; + $checked_no = ''; + } + $form .= _NEWS_MB_DATE . " : <input name=\"options[3]\" value=\"1\" type=\"radio\" " . $checked_yes . "/>" . _YES . " \n"; + $form .= "<input name=\"options[3]\" value=\"0\" type=\"radio\" " . $checked_no . "/>" . _NO . "<br />\n"; + + array_shift($options); + array_shift($options); + array_shift($options); + array_shift($options); + + $form .= _NEWS_MB_TOPICDISPLAY . "<br /><select name=\"options[]\" multiple=\"multiple\" size=\"5\">\n"; + $form .= "<option value=\"0\" " . (array_search(0, $options) === false ? '' : 'selected="selected"') . ">" . _NEWS_MB_ALLMENUS . "</option>\n"; + foreach (array_keys($topic_arr) as $i) { + $form .= "<option value=\"" . $topic_arr[$i]->getVar('topic_id') . "\" " . (array_search($topic_arr[$i]->getVar('topic_id'), $options) === false ? '' : 'selected="selected"') . ">" . $topic_arr[$i]->getVar('topic_title') . "</option>\n"; + } + $form .= "</select>\n"; + return $form; +} +?> \ No newline at end of file Added: XoopsModules/fmcontent/branches/news/blocks/slide.php =================================================================== --- XoopsModules/fmcontent/branches/news/blocks/slide.php (rev 0) +++ XoopsModules/fmcontent/branches/news/blocks/slide.php 2012-03-04 05:01:59 UTC (rev 9089) @@ -0,0 +1,150 @@ +<?php +/* + You may not change or alter any portion of this comment or credits + of supporting developers from this source code or any supporting source code + which is considered copyrighted (c) material of the original comment or credit authors. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +*/ + +/** + * Module block slide file + * + * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/ + * @license http://www.fsf.org/copyleft/gpl.html GNU public license + * @author Hossein Azizabadi (Aka Voltan) + * @version $Id$ + */ + +function news_slide_show($options) { + $story_handler = xoops_getmodulehandler ( 'story', 'news' ); + $topic_handler = xoops_getmodulehandler ( 'topic', 'news' ); + $module_handler = xoops_gethandler('module'); + + require_once XOOPS_ROOT_PATH . '/modules/news/include/functions.php'; + require_once XOOPS_ROOT_PATH . '/modules/news/class/perm.php'; + require_once XOOPS_ROOT_PATH . '/modules/news/class/utils.php'; + + global $xoTheme; + + $block = array(); + $story_infos = array(); + + $NewsModule = $options[0]; + $story_infos['story_limit'] = $options[1]; + $block['slidetype'] = $options[2]; + $story_infos['title_lenght'] = $options[3]; + $story_infos['desc_lenght'] = $options[4]; + $block['slidewidth'] = $options[5]; + $block['slideheight'] = $options[6]; + $block['imagewidth'] = $options[7]; + $block['imageheight'] = $options[8]; + + array_shift($options); + array_shift($options); + array_shift($options); + array_shift($options); + array_shift($options); + array_shift($options); + array_shift($options); + array_shift($options); + array_shift($options); + + $NewsModule = $module_handler->getByDirname($NewsModule); + $story_infos['topics'] = $topic_handler->getall (); + $block['slide'] = $story_handler->News_Slide($NewsModule, $story_infos ,$options); + + switch($block['slidetype']) { + + case 'scrollable': + $style = ' + .slider { + width: '. $block['slidewidth'] .'px; + height: '. $block['slideheight']*1.06 .'px; + } + .slider .main { + height: '. $block['slideheight']*1.06 .'px; + } + .slider .page { + width: '. $block['slidewidth'] .'px; + height: '. $block['slideheight'] .'px; + } + .slider .scrollable { + width: '. $block['slidewidth'] .'px; + height: '. $block['slideheight'] .'px; + } + .slider .item { + width: '. $block['slidewidth'] .'px; + height: '. $block['slideheight'] .'px; + } + .slider .item .itemleft img { + width: '. $block['slidewidth']/2 .'px; + }'; + $xoTheme->addScript("browse.php?Frameworks/jquery/jquery.js"); + $xoTheme->addScript(XOOPS_URL . '/modules/' . $NewsModule->getVar('dirname') . '/js/scrollable/scrollable.js'); + $xoTheme->addScript(XOOPS_URL . '/modules/' . $NewsModule->getVar('dirname') . '/js/scrollable/setting.js'); + $xoTheme->addStylesheet(XOOPS_URL . '/modules/' . $NewsModule->getVar('dirname') . '/css/scrollable.css'); + $xoTheme->addStylesheet( null, array ('rel' => 'stylesheet'), $style ); + break; + + case 'sliderkit': + $xoTheme->addScript("browse.php?Frameworks/jquery/jquery.js"); + $xoTheme->addScript(XOOPS_URL . '/modules/' . $NewsModule->getVar('dirname') . '/js/sliderkit/sliderkit.min.js'); + $xoTheme->addScript(XOOPS_URL . '/modules/' . $NewsModule->getVar('dirname') . '/js/sliderkit/sliderkitsetting.js'); + $xoTheme->addStylesheet(XOOPS_URL . '/modules/' . $NewsModule->getVar('dirname') . '/css/sliderkit-core.css'); + $xoTheme->addStylesheet(XOOPS_URL . '/modules/' . $NewsModule->getVar('dirname') . '/css/sliderkit-demos.css'); + break; + } + + return $block; + +} + +function news_slide_edit($options) { + + //appel de la class + $story_handler = xoops_getmodulehandler('story', 'news'); + $topic_handler = xoops_getmodulehandler('topic', 'news'); + $module_handler = xoops_gethandler('module'); + $NewsModule = $module_handler->getByDirname($options[0]); + + $criteria = new CriteriaCompo(); + $criteria->setSort('topic_weight ASC, topic_title'); + $criteria->setOrder('ASC'); + $topic_arr = $topic_handler->getall($criteria); + + $form = "<input type=\"hidden\" name=\"options[]\" value=\"" . $options[0] . "\" />"; + $form .= _NEWS_MB_NUMBER . " : <input type=\"text\" name=\"options[1]\" size=\"5\" maxlength=\"10\" value=\"" . $options[1] . "\" type=\"text\" /><br />\n"; + $slide = new XoopsFormSelect(_NEWS_MB_SLIDETYPE, 'options[]', $options[2]); + $slide->addOption("scrollable", _NEWS_MB_SLIDETYPE_1); + $slide->addOption("sliderkit", _NEWS_MB_SLIDETYPE_2); + $form .= _NEWS_MB_SLIDETYPE . " : " . $slide->render() . '<br />'; + $form .= _NEWS_MB_CHARS . ":<input type=\"text\" name=\"options[3]\" size=\"5\" maxlength=\"10\" value=\"" . $options[3] . "\" /><br />"; + $form .= _NEWS_MB_CHARS_DESC . ":<input type=\"text\" name=\"options[4]\" size=\"5\" maxlength=\"10\" value=\"" . $options[4] . "\" /><br />"; + + $form .= _NEWS_MB_SLIDEW . ":<input type=\"text\" name=\"options[5]\" size=\"5\" maxlength=\"10\" value=\"" . $options[5] . "\" /><br />"; + $form .= _NEWS_MB_SLIDEh . ":<input type=\"text\" name=\"options[6]\" size=\"5\" maxlength=\"10\" value=\"" . $options[6] . "\" /><br />"; + $form .= _NEWS_MB_IMAGEW . ":<input type=\"text\" name=\"options[7]\" size=\"5\" maxlength=\"10\" value=\"" . $options[7] . "\" /><br />"; + $form .= _NEWS_MB_IMAGEH . ":<input type=\"text\" name=\"options[8]\" size=\"5\" maxlength=\"10\" value=\"" . $options[8] . "\" /><br />"; + + array_shift($options); + array_shift($options); + array_shift($options); + array_shift($options); + array_shift($options); + array_shift($options); + array_shift($options); + array_shift($options); + array_shift($options); + + $form .= _NEWS_MB_TOPICDISPLAY . "<br /><select name=\"options[]\" multiple=\"multiple\" size=\"5\">\n"; + $form .= "<option value=\"0\" " . (array_search(0, $options) === false ? '' : 'selected="selected"') . ">" . _NEWS_MB_ALLMENUS . "</option>\n"; + foreach (array_keys($topic_arr) as $i) { + $form .= "<option value=\"" . $topic_arr[$i]->getVar('topic_id') . "\" " . (array_search($topic_arr[$i]->getVar('topic_id'), $options) === false ? '' : 'selected="selected"') . ">" . $topic_arr[$i]->getVar('topic_title') . "</option>\n"; + } + $form .= "</select>\n"; + return $form; +} +?> \ No newline at end of file Modified: XoopsModules/fmcontent/branches/news/class/story.php =================================================================== --- XoopsModules/fmcontent/branches/news/class/story.php 2012-03-03 20:16:34 UTC (rev 9088) +++ XoopsModules/fmcontent/branches/news/class/story.php 2012-03-04 05:01:59 UTC (rev 9089) @@ -43,7 +43,7 @@ $this->initVar ( 'story_alias', XOBJ_DTYPE_TXTBOX, '' ); $this->initVar ( 'story_status', XOBJ_DTYPE_INT, 1 ); $this->initVar ( 'story_slide', XOBJ_DTYPE_INT, 0 ); - $this->initVar ( 'story_marque', XOBJ_DTYPE_INT, 0 ); + $this->initVar ( 'story_marquee', XOBJ_DTYPE_INT, 0 ); $this->initVar ( 'story_important', XOBJ_DTYPE_INT, 0 ); $this->initVar ( 'story_default', XOBJ_DTYPE_INT, 0 ); $this->initVar ( 'story_create', XOBJ_DTYPE_INT, '' ); @@ -238,7 +238,7 @@ // Slide $form->addElement ( new XoopsFormRadioYN ( _NEWS_AM_CONTENT_SLIDE, 'story_slide', $this->getVar ( 'story_slide', 'e' ) ) ); // Marque - $form->addElement ( new XoopsFormRadioYN ( _NEWS_AM_CONTENT_MARQUE, 'story_marque', $this->getVar ( 'story_marque', 'e' ) ) ); + $form->addElement ( new XoopsFormRadioYN ( _NEWS_AM_CONTENT_MARQUE, 'story_marquee', $this->getVar ( 'story_marquee', 'e' ) ) ); // Submit buttons $button_tray = new XoopsFormElementTray ( '', '' ); $submit_btn = new XoopsFormButton ( '', 'post', _SUBMIT, 'submit' ); @@ -1154,6 +1154,141 @@ $this->deleteAll($criteria); return true; } + + function News_Slide($NewsModule, $story_infos ,$topics) { + $ret = array(); + $access_topic = NewsPermission::News_GetItemIds ( 'news_access', $NewsModule); + if (! (count ( $topics ) == 1 && $topics [0] == 0)) { + $topiclist = array_intersect($access_topic , $topics); + } else { + $topiclist = $access_topic; + } + + $criteria = new CriteriaCompo (); + + $part1 = new CriteriaCompo (); + $part1->add ( new Criteria ( 'story_topic', '(' . implode ( ',', $topiclist ) . ')', 'IN' )); + $criteria->add($part1); + + $part2 = new CriteriaCompo (); + $part2->add ( new Criteria ( 'story_status', '1' )); + $criteria->add($part2); + + $q3 = new CriteriaCompo (); + $q3->add ( new Criteria ( 'story_slide', '1' )); + $criteria->add($q3); + + $part4 = new CriteriaCompo (); + $part4->add ( new Criteria ( 'story_publish', time() , '<=' )); + $part4->add ( new Criteria ( 'story_publish', 0 , '>' )); + $criteria->add($part4); + + $part5 = new CriteriaCompo (); + $part5->add ( new Criteria ( 'story_expire', time() , '>=' )); + $part5->add ( new Criteria ( 'story_expire', 0 ) ,'OR'); + $criteria->add($part5); + + $criteria->setSort ( 'story_publish' ); + $criteria->setOrder ( 'DESC' ); + $criteria->setLimit ( $story_infos ['story_limit'] ); + + $obj = $this->getObjects ( $criteria, false ); + if ($obj) { + foreach ( $obj as $root ) { + $tab = array (); + $tab = $root->toArray (); + + foreach ( array_keys ( $story_infos ['topics'] ) as $i ) { + $list [$i] ['topic_title'] = $story_infos ['topics'] [$i]->getVar ( "topic_title" ); + $list [$i] ['topic_id'] = $story_infos ['topics'] [$i]->getVar ( "topic_id" ); + $list [$i] ['topic_alias'] = $story_infos ['topics'] [$i]->getVar ( "topic_alias" ); + } + if ($root->getVar ( 'story_topic' )) { + $tab ['topic'] = $list [$root->getVar ( 'story_topic' )] ['topic_title']; + $tab ['topic_alias'] = $list [$root->getVar ( 'story_topic' )] ['topic_alias']; + $tab ['topicurl'] = NewsUtils::News_TopicUrl ( $NewsModule->getVar ( 'dirname' ), array('topic_id'=>$list [$root->getVar ( 'story_topic' )] ['topic_id'], 'topic_alias'=>$list [$root->getVar ( 'story_topic' )] ['topic_alias'] )); + } + + $tab ['url'] = NewsUtils::News_Url ( $NewsModule->getVar ( 'dirname' ), $tab ); + $tab ['story_publish'] = formatTimestamp ( $root->getVar ( 'story_publish' ), _MEDIUMDATESTRING ); + $tab ['imageurl'] = XOOPS_URL . xoops_getModuleOption ( 'img_dir', $NewsModule->getVar ( 'dirname' ) ) . '/medium/' . $root->getVar ( 'story_img' ); + $tab ['thumburl'] = XOOPS_URL . xoops_getModuleOption ( 'img_dir', $NewsModule->getVar ( 'dirname' ) ) . '/thumb/' . $root->getVar ( 'story_img' ); + $tab ['story_title'] = mb_substr ( strip_tags($root->getVar ( 'story_title' )), 0, $story_infos['title_lenght'], 'utf-8' ); + + if(!$root->getVar ( 'story_short' )) { + $tab ['story_short'] = mb_substr ( strip_tags($root->getVar ( 'story_text' )), 0, $story_infos['desc_lenght'], 'utf-8' ) . "..."; + } else { + $tab ['story_short'] = mb_substr ( strip_tags($root->getVar ( 'story_short' )), 0, $story_infos['desc_lenght'], 'utf-8' ) . "..."; + } + + $ret [] = $tab; + } + } + return $ret; + } + + function News_Marquee($NewsModule, $story_infos ,$topics) { + $ret = array(); + $access_topic = NewsPermission::News_GetItemIds ( 'news_access', $NewsModule); + if (! (count ( $topics ) == 1 && $topics [0] == 0)) { + $topiclist = array_intersect($access_topic , $topics); + } else { + $topiclist = $access_topic; + } + + $criteria = new CriteriaCompo (); + + $part1 = new CriteriaCompo (); + $part1->add ( new Criteria ( 'story_topic', '(' . implode ( ',', $topiclist ) . ')', 'IN' )); + $criteria->add($part1); + + $part2 = new CriteriaCompo (); + $part2->add ( new Criteria ( 'story_status', '1' )); + $criteria->add($part2); + + $q3 = new CriteriaCompo (); + $q3->add ( new Criteria ( 'story_marquee', '1' )); + $criteria->add($q3); + + $part4 = new CriteriaCompo (); + $part4->add ( new Criteria ( 'story_publish', time() , '<=' )); + $part4->add ( new Criteria ( 'story_publish', 0 , '>' )); + $criteria->add($part4); + + $part5 = new CriteriaCompo (); + $part5->add ( new Criteria ( 'story_expire', time() , '>=' )); + $part5->add ( new Criteria ( 'story_expire', 0 ) ,'OR'); + $criteria->add($part5); + + $criteria->setSort ( 'story_publish' ); + $criteria->setOrder ( 'DESC' ); + $criteria->setLimit ( $story_infos ['story_limit'] ); + + $obj = $this->getObjects ( $criteria, false ); + if ($obj) { + foreach ( $obj as $root ) { + $tab = array (); + $tab = $root->toArray (); + + foreach ( array_keys ( $story_infos ['topics'] ) as $i ) { + $list [$i] ['topic_title'] = $story_infos ['topics'] [$i]->getVar ( "topic_title" ); + $list [$i] ['topic_id'] = $story_infos ['topics'] [$i]->getVar ( "topic_id" ); + $list [$i] ['topic_alias'] = $story_infos ['topics'] [$i]->getVar ( "topic_alias" ); + } + if ($root->getVar ( 'story_topic' )) { + $tab ['topic'] = $list [$root->getVar ( 'story_topic' )] ['topic_title']; + $tab ['topic_alias'] = $list [$root->getVar ( 'story_topic' )] ['topic_alias']; + $tab ['topicurl'] = NewsUtils::News_TopicUrl ( $NewsModule->getVar ( 'dirname' ), array('topic_id'=>$list [$root->getVar ( 'story_topic' )] ['topic_id'], 'topic_alias'=>$list [$root->getVar ( 'story_topic' )] ['topic_alias'] )); + } + + $tab ['url'] = NewsUtils::News_Url ( $NewsModule->getVar ( 'dirname' ), $tab ); + $tab ['story_publish'] = formatTimestamp ( $root->getVar ( 'story_publish' ), _MEDIUMDATESTRING ); + $tab ['story_title'] = mb_substr ( strip_tags($root->getVar ( 'story_title' )), 0, $story_infos['title_lenght'], 'utf-8' ); + $ret [] = $tab; + } + } + return $ret; + } } ?> \ No newline at end of file Added: XoopsModules/fmcontent/branches/news/css/marquee.css =================================================================== --- XoopsModules/fmcontent/branches/news/css/marquee.css (rev 0) +++ XoopsModules/fmcontent/branches/news/css/marquee.css 2012-03-04 05:01:59 UTC (rev 9089) @@ -0,0 +1,34 @@ +#marquee { + height: 40px; + font-size: 1.1em; + font-weight: bold; + text-align: center; +} + + +ul.marquee { + display: block; + padding: 0; + margin: 0; + list-style: none; + line-height: 1; + position: relative; + overflow: hidden; + height: 25px; +} + +ul.marquee li { + position: absolute; + top: -999em; + display: block; + padding-top: 5px; + white-space: nowrap; + text-align: center !important; +} + +ul.marquee li a { + text-align: center !important; +} + +ul.marquee li a:hover { +} \ No newline at end of file Added: XoopsModules/fmcontent/branches/news/css/scrollable.css =================================================================== --- XoopsModules/fmcontent/branches/news/css/scrollable.css (rev 0) +++ XoopsModules/fmcontent/branches/news/css/scrollable.css 2012-03-04 05:01:59 UTC (rev 9089) @@ -0,0 +1,108 @@ +.slider { + /* width: 650px; + height: 260px; */ + margin: 0 auto; +} +.slider .navi { + width: 100%; + height: 20px; +} + +.slider .navi a { + width: 8px; + height: 8px; + float: left; + margin: 3px; + background: #525572; + display: block; + font-size: 1px; + text-align: center; + border-radius: 6px; + -moz-border-radius: 10px; + -khtml-border-radius: 6px; +} + +.slider .navi a: hover { + background: #F3F3F3; +} + +.slider .navi a.active { + background: #F3F3F3; +} + +.slider .main { + position: relative; + overflow: hidden; + /* height: 260px; */ +} + +.slider .pages { + position: absolute; +} + +.slider .page { + /* height: 260px; + width: 650px; */ +} + +.slider .scrollable { + position: relative; + overflow: hidden; + /* width: 650px; + height: 230px; */ +} + +.slider .scrollable .items { + width: 20000em; + position: absolute; + clear: both; +} + +.slider .item { + float: right; + cursor: pointer; + /* width: 650px; + height: 230px; */ + padding: 0; +} + +.slider .item .itemleft { + float: left; + width: 49%; +} + +.slider .item .itemright { + float: right; + width: 49%; + padding-top: 20px; + color: #000; +} + +.slider .item h2 { + text-align: center; + padding: 2px; +} + +.slider .item .itemshort { + +} + +.slider .item .itemmore { + margin: 20px 50px 10px 50px; + background-color: #ff0000; + width: 80px; + text-align: center; + float: right; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} + +.slider .item .itemmore a { + color: #fff; + font-weight: bold; +} + +.slider .item .itemmore a:hover { + color: #000; +} \ No newline at end of file Added: XoopsModules/fmcontent/branches/news/css/sliderkit-core.css =================================================================== --- XoopsModules/fmcontent/branches/news/css/sliderkit-core.css (rev 0) +++ XoopsModules/fmcontent/branches/news/css/sliderkit-core.css 2012-03-04 05:01:59 UTC (rev 9089) @@ -0,0 +1,60 @@ +/* + * sliderkit-core.css + * > Core CSS styles + * + * This file is part of Slider Kit jQuery plugin. + * http://www.kyrielles.net/sliderkit/ + * + * Copyright (c) 2010-2011 Alan Frog + * Licensed under the GNU General Public License + * See <license.txt> or <http://www.gnu.org/licenses/> + * + */ + +/* + * PLUGIN BASICS + * ------------------------------------------------ + */ +.sliderkit{display:none;position:relative;overflow:hidden;text-align:left;} +.sliderkit a, +.sliderkit a:hover{text-decoration:none;} +.sliderkit a:focus{outline:1px dotted #000;/*optional*/} +.sliderkit img{border:0;} + +/*--------------------------------- + * Navigation + *---------------------------------*/ +.sliderkit .sliderkit-nav{z-index:10;position:absolute;text-align:center;} + +/* Nav > Clip */ +.sliderkit .sliderkit-nav-clip{position:relative;overflow:hidden;margin:0 auto;} +.sliderkit .sliderkit-nav-clip ul{position:relative;left:0;top:0;list-style:none;margin:0;padding:0;} +.sliderkit .sliderkit-nav-clip ul li{float:left;} +.sliderkit .sliderkit-nav-clip ul li a{display:block;overflow:hidden;} + +/*--------------------------------- + * Buttons + *---------------------------------*/ +.sliderkit .sliderkit-btn{z-index:10;} + +/*--------------------------------- + * Panels + *---------------------------------*/ +.sliderkit .sliderkit-panel{z-index:1;position:absolute;overflow:hidden;} +.sliderkit .sliderkit-panel-active{z-index:5;} +.sliderkit .sliderkit-panel-old{z-index:4;} + +/* Panels > Overlay */ +.sliderkit .sliderkit-panel .sliderkit-panel-textbox{position:absolute;z-index:1;} +.sliderkit .sliderkit-panel .sliderkit-panel-text{position:absolute;z-index:3;top:0;left:0;} +.sliderkit .sliderkit-panel .sliderkit-panel-overlay{position:absolute;z-index:2;top:0;left:0;} + +/*--------------------------------- + * Counter + *---------------------------------*/ +.sliderkit .sliderkit-count{position:absolute;top:5px;right:5px;z-index:10;padding:5px;color:#fff;background:#000;} + +/*--------------------------------- + * Loader + *---------------------------------*/ +.sliderkit .sliderkit-timer{position:absolute;top:0;left:0;z-index:10;height:3px;background:#ccc;} Added: XoopsModules/fmcontent/branches/news/css/sliderkit-demos.css =================================================================== --- XoopsModules/fmcontent/branches/news/css/sliderkit-demos.css (rev 0) +++ XoopsModules/fmcontent/branches/news/css/sliderkit-demos.css 2012-03-04 05:01:59 UTC (rev 9089) @@ -0,0 +1,38 @@ +/*--------------------------------- + * Photos slider > 1 click + *---------------------------------*/ +.photoslider-1click{width:280px;height:220px;} + +/* Nav */ +.photoslider-1click .sliderkit-nav{position:absolute;bottom:10px;right:10px;} +.photoslider-1click .sliderkit-nav-clip ul li{float:left;margin:0 1px 0 0;} +.photoslider-1click .sliderkit-nav-clip ul li a{display:block;padding:2px 6px;color:#fff;background:#000} +.photoslider-1click .sliderkit-nav-clip ul li.sliderkit-selected a{color:#000;background:#fff;} +.photoslider-1click .sliderkit-nav-clip ul a:hover{color:#fff;background:#00668d;} + + +/*--------------------------------- + * News slider > Vertical + *---------------------------------*/ +.newslider-vertical{width: 600px;height: 380px;} + +/* Nav */ +.newslider-vertical .sliderkit-nav{width:200px; height:380px;} +.newslider-vertical .sliderkit-nav-clip li{height:45px; width:190px;margin-bottom:5px;padding-left:10px;} +.newslider-vertical .sliderkit-nav-clip li.sliderkit-selected a{ background-color: #E6E306 !important; color: #000 !important;} +.newslider-vertical .sliderkit-nav-clip li a {height:40px;width:180px;padding:5px;text-align: right;font-size:1em;color:#fff;text-decoration:none; background-color: #80AC00;} +.newslider-vertical .sliderkit-nav-clip li a:hover, +.newslider-vertical .sliderkit-nav-clip li a:focus{color:#fff;} + +/* Panel */ +.newslider-vertical .sliderkit-panels{ position:absolute; right:200px; width:390px; height:360px; overflow:hidden; border:1px solid #fff;} +.newslider-vertical .sliderkit-panel{ right:0; top:0; width:380px; height:350px; padding:10px; background:#fff;} + +/* News block */ +.newslider-vertical .sliderkit-news h3, +.newslider-vertical .sliderkit-news h3 a{ color:#000; font-weight: bold; text-align: right; } +.newslider-vertical .sliderkit-news h3{font-size:1em;} +.newslider-vertical .sliderkit-news img{width:380px; height: 250px; margin:0 5px; overflow:hidden;} +.newslider-vertical .sliderkit-news p{margin:0; text-align: right;} +.newslider-vertical .sliderkit-news-readmore{} + Modified: XoopsModules/fmcontent/branches/news/include/functions_update.php =================================================================== --- XoopsModules/fmcontent/branches/news/include/functions_update.php 2012-03-03 20:16:34 UTC (rev 9088) +++ XoopsModules/fmcontent/branches/news/include/functions_update.php 2012-03-04 05:01:59 UTC (rev 9089) @@ -37,9 +37,9 @@ NewsUtils::News_AddField('`story_slide` TINYINT( 1 ) NOT NULL AFTER `story_status`' ,$db->prefix('news_story')); } - if(!NewsUtils::News_FieldExists('story_marque' ,$db->prefix('news_story'))) + if(!NewsUtils::News_FieldExists('story_marquee' ,$db->prefix('news_story'))) { - NewsUtils::News_AddField('`story_marque` TINYINT( 1 ) NOT NULL AFTER `story_slide`' ,$db->prefix('news_story')); + NewsUtils::News_AddField('`story_marquee` TINYINT( 1 ) NOT NULL AFTER `story_slide`' ,$db->prefix('news_story')); } } @@ -139,7 +139,7 @@ `story_default` tinyint(1) NOT NULL, `story_status` tinyint(1) NOT NULL, `story_slide` tinyint(1) NOT NULL, - `story_marque` tinyint(1) NOT NULL, + `story_marquee` tinyint(1) NOT NULL, `story_create` int (10) NOT NULL default '0', `story_update` int (10) NOT NULL default '0', `story_publish` int (10) NOT NULL default '0', Added: XoopsModules/fmcontent/branches/news/js/marquee/index.html =================================================================== --- XoopsModules/fmcontent/branches/news/js/marquee/index.html (rev 0) +++ XoopsModules/fmcontent/branches/news/js/marquee/index.html 2012-03-04 05:01:59 UTC (rev 9089) @@ -0,0 +1 @@ +<script>history.go(-1);</script> \ No newline at end of file Added: XoopsModules/fmcontent/branches/news/js/marquee/marquee.js =================================================================== --- XoopsModules/fmcontent/branches/news/js/marquee/marquee.js (rev 0) +++ XoopsModules/fmcontent/branches/news/js/marquee/marquee.js 2012-03-04 05:01:59 UTC (rev 9089) @@ -0,0 +1,262 @@ +/*! + * Marquee jQuery Plug-in + * + * Copyright 2009 Giva, Inc. (http://www.givainc.com/labs/) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Date: 2009-05-20 + * Rev: 1.0.01 + */ +;(function($){ + // set the version of the link select + $.marquee = {version: "1.0.01"}; + + $.fn.marquee = function(options) { + var method = typeof arguments[0] == "string" && arguments[0]; + var args = method && Array.prototype.slice.call(arguments, 1) || arguments; + // get a reference to the first marquee found + var self = (this.length == 0) ? null : $.data(this[0], "marquee"); + + // if a method is supplied, execute it for non-empty results + if( self && method && this.length ){ + + // if request a copy of the object, return it + if( method.toLowerCase() == "object" ) return self; + // if method is defined, run it and return either it's results or the chain + else if( self[method] ){ + // define a result variable to return to the jQuery chain + var result; + this.each(function (i){ + // apply the method to the current element + var r = $.data(this, "marquee")[method].apply(self, args); + // if first iteration we need to check if we're done processing or need to add it to the jquery chain + if( i == 0 && r ){ + // if this is a jQuery item, we need to store them in a collection + if( !!r.jquery ){ + result = $([]).add(r); + // otherwise, just store the result and stop executing + } else { + result = r; + // since we're a non-jQuery item, just cancel processing further items + return false; + } + // keep adding jQuery objects to the results + } else if( !!r && !!r.jquery ){ + result = result.add(r); + } + }); + + // return either the results (which could be a jQuery object) or the original chain + return result || this; + // everything else, return the chain + } else return this; + // initializing request + } else { + // create a new marquee for each object found + return this.each(function (){ + new $.Marquee(this, options); + }); + }; + }; + + $.Marquee = function (marquee, options){ + options = $.extend({}, $.Marquee.defaults, options); + + var self = this, $marquee = $(marquee), $lis = $marquee.find("> li"), current = -1, hard_paused = false, paused = false, loop_count = 0; + + // store a reference to this marquee + $.data($marquee[0], "marquee", self); + + // pause the marquee + this.pause = function (){ + // mark as hard pause (no resume on hover) + hard_paused = true; + // pause scrolling + pause(); + } + + // resume the marquee + this.resume = function (){ + // mark as hard pause (no resume on hover) + hard_paused = false; + // resume scrolling + resume(); + } + + // update the marquee + this.update = function (){ + var iCurrentCount = $lis.length; + + // update the line items + $lis = $marquee.find("> li"); + + // if we only have one item, show the next item by resuming playback (which will scroll to the next item) + if( iCurrentCount <= 1 ) resume(); + } + + // code to introduce the new marquee message + function show(i){ + // if we're already scrolling an item, stop processing + if( $lis.filter("." + options.cssShowing).length > 0 ) return false; + + var $li = $lis.eq(i); + + // run the beforeshow callback + if( $.isFunction(options.beforeshow) ) options.beforeshow.apply(self, [$marquee, $li]); + + var params = { + top: (options.yScroll == "top" ? "-" : "+") + $li.outerHeight() + "px" + , left: 0 + }; + + $marquee.data("marquee.showing", true); + $li.addClass(options.cssShowing); + + $li.css(params).animate({top: "0px"}, options.showSpeed, options.fxEasingShow, function (){ + // run the show callback + if( $.isFunction(options.show) ) options.show.apply(self, [$marquee, $li]); + $marquee.data("marquee.showing", false); + scroll($li); + }); + } + + // keep the message on the screen for the user to read, scrolling long messages + function scroll($li, delay){ + // if paused, stop processing + if( paused == true ) return false; + + // get the delay speed + delay = delay || options.pauseSpeed; + // if item is wider than marquee, then scroll + if( doScroll($li) ){ + setTimeout(function (){ + // if paused, stop processing (we need to check to see if the pause state has changed) + if( paused == true ) return false; + + var width = $li.outerWidth(), endPos = width * -1, curPos = parseInt($li.css("left"), 10); + + // scroll the message to the left + $li.animate({left: endPos + "px"}, ((width + curPos) * options.scrollSpeed), options.fxEasingScroll, function (){ finish($li); }); + }, delay); + } else if ( $lis.length > 1 ){ + setTimeout(function (){ + // if paused, stop processing (we need to check to see if the pause state has changed) + if( paused == true ) return false; + + // scroll the message down + $li.animate({top: (options.yScroll == "top" ? "+" : "-") + $marquee.innerHeight() + "px"}, options.showSpeed, options.fxEasingScroll); + // finish showing this message + finish($li); + }, delay); + } + + } + + function finish($li){ + // run the aftershow callback, only after we've displayed the first option + if( $.isFunction(options.aftershow) ) options.aftershow.apply(self, [$marquee, $li]); + + // mark that we're done scrolling this element + $li.removeClass(options.cssShowing); + + // show the next message + showNext(); + } + + // this function will pause the current animation + function pause(){ + // mark the message as paused + paused = true; + // don't stop animation if we're just beginning to show the marquee message + if( $marquee.data("marquee.showing") != true ){ + // we must dequeue() the animation to ensure that it does indeed stop animation + $lis.filter("." + options.cssShowing).dequeue().stop(); + } + } + + // this function will resume the previous animation + function resume(){ + // mark the message as resumed + paused = false; + // don't resume animation if we haven't completed introducing the message + if( $marquee.data("marquee.showing") != true ) scroll($lis.filter("." + options.cssShowing), 1); + } + + // determine if we should pause on hover + if( options.pauseOnHover ){ + $marquee.hover( + function (){ + // if hard paused, prevent hover events + if( hard_paused ) return false; + // pause scrolling + pause(); + } + , function (){ + // if hard paused, prevent hover events + if( hard_paused ) return false; + // resume scrolling + resume(); + } + ); + } + + // determines if the message needs to be scrolled to read + function doScroll($li){ + return ($li.outerWidth() > $marquee.innerWidth()); + } + + // show the next message in the queue + function showNext(){ + // increase the current counter (starts at -1, to indicate a new marquee beginning) + current++; + + // if we only have 1 entry and it doesn't need to scroll, just cancel processing + if( current >= $lis.length ){ + // if we've reached our loop count, cancel processing + if( !isNaN(options.loop) && options.loop > 0 && (++loop_count >= options.loop ) ) return false; + current = 0; + } + + // show the next message + show(current); + } + + // run the init callback + if( $.isFunction(options.init) ) options.init.apply(self, [$marquee, options]); + + // show the first item + showNext(); + }; + + $.Marquee.defaults = { + yScroll: "top" // the position of the marquee initially scroll (can be either "top" or "bottom") + , showSpeed: 850 // the speed of to animate the initial dropdown of the messages + , scrollSpeed: 12 // the speed of the scrolling (keep number low) + , pauseSpeed: 5000 // the time to wait before showing the next message or scrolling current message + , pauseOnHover: true // determine if we should pause on mouse hover + , loop: -1 // determine how many times to loop through the marquees (#'s < 0 = infinite) + , fxEasingShow: "swing" // the animition easing to use when showing a new marquee + , fxEasingScroll: "linear" // the animition easing to use when showing a new marquee + + // define the class statements + , cssShowing: "marquee-showing" + + // event handlers + , init: null // callback that occurs when a marquee is initialized + , beforeshow: null // callback that occurs before message starts scrolling on screen + , show: null // callback that occurs when a new marquee message is displayed + , aftershow: null // callback that occurs after the message has scrolled + }; + +})(jQuery); Added: XoopsModules/fmcontent/branches/news/js/marquee/setting.js =================================================================== --- XoopsModules/fmcontent/branches/news/js/marquee/setting.js (rev 0) +++ XoopsModules/fmcontent/branches/news/js/marquee/setting.js 2012-03-04 05:01:59 UTC (rev 9089) @@ -0,0 +1,3 @@ +$(document).ready(function (){ + $("#marquee2").marquee({yScroll: "bottom"}); +}); \ No newline at end of file Added: XoopsModules/fmcontent/branches/news/js/scrollable/index.html =================================================================== --- XoopsModules/fmcontent/branches/news/js/scrollable/index.html (rev 0) +++ XoopsModules/fmcontent/branches/news/js/scrollable/index.html 2012-03-04 05:01:59 UTC (rev 9089) @@ -0,0 +1 @@ +<script>history.go(-1);</script> \ No newline at end of file Added: XoopsModules/fmcontent/branches/news/js/scrollable/scrollable.js =================================================================== --- XoopsModules/fmcontent/branches/news/js/scrollable/scrollable.js (rev 0) +++ XoopsModules/fmcontent/branches/news/js/scrollable/scrollable.js 2012-03-04 05:01:59 UTC (rev 9089) @@ -0,0 +1,54 @@ +/* + * jQuery Tools 1.2.3 - The missing UI library for the Web + * + * [tabs, tabs.slideshow, tooltip, tooltip.slide, tooltip.dynamic, scrollable, scrollable.autoscroll, scrollable.navigator, overlay, overlay.apple] + * + * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE. + * + * http://flowplayer.org/tools/ + * + * File generated: Tue Jul 27 12:02:30 GMT 2010 + */ +(function(c){function p(e,b,a){var d=this,l=e.add(this),h=e.find(a.tabs),i=b.jquery?b:e.children(b),j;h.length||(h=e.children());i.length||(i=e.parent().find(b));i.length||(i=c(b));c.extend(this,{click:function(f,g){var k=h.eq(f);if(typeof f=="string"&&f.replace("#","")){k=h.filter("[href*="+f.replace("#","")+"]");f=Math.max(h.index(k),0)}if(a.rotate){var n=h.length-1;if(f<0)return d.click(n,g);if(f>n)return d.click(0,g)}if(!k.length){if(j>=0)return d;f=a.initialIndex;k=h.eq(f)}if(f===j)return d; +g=g||c.Event();g.type="onBeforeClick";l.trigger(g,[f]);if(!g.isDefaultPrevented()){o[a.effect].call(d,f,function(){g.type="onClick";l.trigger(g,[f])});j=f;h.removeClass(a.current);k.addClass(a.current);return d}},getConf:function(){return a},getTabs:function(){return h},getPanes:function(){return i},getCurrentPane:function(){return i.eq(j)},getCurrentTab:function(){return h.eq(j)},getIndex:function(){return j},next:function(){return d.click(j+1)},prev:function(){return d.click(j-1)},destroy:function(){h.unbind(a.event).removeClass(a.current); +i.find("a[href^=#]").unbind("click.T");return d}});c.each("onBeforeClick,onClick".split(","),function(f,g){c.isFunction(a[g])&&c(d).bind(g,a[g]);d[g]=function(k){c(d).bind(g,k);return d}});if(a.history&&c.fn.history){c.tools.history.init(h);a.event="history"}h.each(function(f){c(this).bind(a.event,function(g){d.click(f,g);return g.preventDefault()})});i.find("a[href^=#]").bind("click.T",function(f){d.click(c(this).attr("href"),f)});if(location.hash)d.click(location.hash);else if(a.initialIndex=== +0||a.initialIndex>0)d.click(a.initialIndex)}c.tools=c.tools||{version:"1.2.3"};c.tools.tabs={conf:{tabs:"a",current:"current",onBeforeClick:null,onClick:null,effect:"default",initialIndex:0,event:"click",rotate:false,history:false},addEffect:function(e,b){o[e]=b}};var o={"default":function(e,b){this.getPanes().hide().eq(e).show();b.call()},fade:function(e,b){var a=this.getConf(),d=a.fadeOutSpeed,l=this.getPanes();d?l.fadeOut(d):l.hide();l.eq(e).fadeIn(a.fadeInSpeed,b)},slide:function(e,b){this.getPanes().slideUp(200); +this.getPanes().eq(e).slideDown(400,b)},ajax:function(e,b){this.getPanes().eq(0).load(this.getTabs().eq(e).attr("href"),b)}},m;c.tools.tabs.addEffect("horizontal",function(e,b){m||(m=this.getPanes().eq(0).width());this.getCurrentPane().animate({width:0},function(){c(this).hide()});this.getPanes().eq(e).animate({width:m},function(){c(this).show();b.call()})});c.fn.tabs=function(e,b){var a=this.data("tabs");if(a){a.destroy();this.removeData("tabs")}if(c.isFunction(b))b={onBeforeClick:b};b=c.extend({}, +c.tools.tabs.conf,b);this.each(function(){a=new p(c(this),e,b);c(this).data("tabs",a)});return b.api?a:this}})(jQuery); +(function(d){function r(g,a){function p(f){var e=d(f);return e.length<2?e:g.parent().find(f)}var c=this,j=g.add(this),b=g.data("tabs"),h,l,m,n=false,o=p(a.next).click(function(){b.next()}),k=p(a.prev).click(function(){b.prev()});d.extend(c,{getTabs:function(){return b},getConf:function(){return a},play:function(){if(!h){var f=d.Event("onBeforePlay");j.trigger(f);if(f.isDefaultPrevented())return c;n=false;h=setInterval(b.next,a.interval);j.trigger("onPlay");b.next()}},pause:function(){if(!h)return c; +var f=d.Event("onBeforePause");j.trigger(f);if(f.isDefaultPrevented())return c;h=clearInterval(h);m=clearInterval(m);j.trigger("onPause")},stop:function(){c.pause();n=true}});d.each("onBeforePlay,onPlay,onBeforePause,onPause".split(","),function(f,e){d.isFunction(a[e])&&c.bind(e,a[e]);c[e]=function(s){return c.bind(e,s)}});if(a.autopause){var t=b.getTabs().add(o).add(k).add(b.getPanes());t.hover(function(){c.pause();l=clearInterval(l)},function(){n||(l=setTimeout(c.play,a.interval))})}if(a.autoplay)m= +setTimeout(c.play,a.interval);else c.stop();a.clickable&&b.getPanes().click(function(){b.next()});if(!b.getConf().rotate){var i=a.disabledClass;b.getIndex()||k.addClass(i);b.onBeforeClick(function(f,e){if(e){k.removeClass(i);e==b.getTabs().length-1?o.addClass(i):o.removeClass(i)}else k.addClass(i)})}}var q;q=d.tools.tabs.slideshow={conf:{next:".forward",prev:".backward",disabledClass:"disabled",autoplay:false,autopause:true,interval:3E3,clickable:true,api:false}};d.fn.slideshow=function(g){var a= +this.data("slideshow");if(a)return a;g=d.extend({},q.conf,g);this.each(function(){a=new r(d(this),g);d(this).data("slideshow",a)});return g.api?a:this}})(jQuery); +(function(f){function p(a,b,c){var h=c.relative?a.position().top:a.offset().top,e=c.relative?a.position().left:a.offset().left,i=c.position[0];h-=b.outerHeight()-c.offset[0];e+=a.outerWidth()+c.offset[1];var j=b.outerHeight()+a.outerHeight();if(i=="center")h+=j/2;if(i=="bottom")h+=j;i=c.position[1];a=b.outerWidth()+a.outerWidth();if(i=="center")e-=a/2;if(i=="left")e-=a;return{top:h,left:e}}function t(a,b){var c=this,h=a.add(c),e,i=0,j=0,m=a.attr("title"),q=n[b.effect],k,r=a.is(":input"),u=r&&a.is(":checkbox, :radio, select, :button, :submit"), +s=a.attr("type"),l=b.events[s]||b.events[r?u?"widget":"input":"def"];if(!q)throw'Nonexistent effect "'+b.effect+'"';l=l.split(/,\s*/);if(l.length!=2)throw"Tooltip: bad events configuration for "+s;a.bind(l[0],function(d){clearTimeout(i);if(b.predelay)j=setTimeout(function(){c.show(d)},b.predelay);else c.show(d)}).bind(l[1],function(d){clearTimeout(j);if(b.delay)i=setTimeout(function(){c.hide(d)},b.delay);else c.hide(d)});if(m&&b.cancelDefault){a.removeAttr("title");a.data("title",m)}f.extend(c,{show:function(d){if(!e){if(m)e= +f(b.layout).addClass(b.tipClass).appendTo(document.body).hide().append(m);else if(b.tip)e=f(b.tip).eq(0);else{e=a.next();e.length||(e=a.parent().next())}if(!e.length)throw"Cannot find tooltip for "+a;}if(c.isShown())return c;e.stop(true,true);var g=p(a,e,b);d=d||f.Event();d.type="onBeforeShow";h.trigger(d,[g]);if(d.isDefaultPrevented())return c;g=p(a,e,b);e.css({position:"absolute",top:g.top,left:g.left});k=true;q[0].call(c,function(){d.type="onShow";k="full";h.trigger(d)});g=b.events.tooltip.split(/,\s*/); +e.bind(g[0],function(){clearTimeout(i);clearTimeout(j)});g[1]&&!a.is("input:not(:checkbox, :radio), textarea")&&e.bind(g[1],function(o){o.relatedTarget!=a[0]&&a.trigger(l[1].split(" ")[0])});return c},hide:function(d){if(!e||!c.isShown())return c;d=d||f.Event();d.type="onBeforeHide";h.trigger(d);if(!d.isDefaultPrevented()){k=false;n[b.effect][1].call(c,function(){d.type="onHide";k=false;h.trigger(d)});return c}},isShown:function(d){return d?k=="full":k},getConf:function(){return b},getTip:function(){return e}, +getTrigger:function(){return a}});f.each("onHide,onBeforeShow,onShow,onBeforeHide".split(","),function(d,g){f.isFunction(b[g])&&f(c).bind(g,b[g]);c[g]=function(o){f(c).bind(g,o);return c}})}f.tools=f.tools||{version:"1.2.3"};f.tools.tooltip={conf:{effect:"toggle",fadeOutSpeed:"fast",predelay:0,delay:30,opacity:1,tip:0,position:["top","center"],offset:[0,0],relative:false,cancelDefault:true,events:{def:"mouseenter,mouseleave",input:"focus,blur",widget:"focus mouseenter,blur mouseleave",tooltip:"mouseenter,mouseleave"}, +layout:"<div/>",tipClass:"tooltip"},addEffect:function(a,b,c){n[a]=[b,c]}};var n={toggle:[function(a){var b=this.getConf(),c=this.getTip();b=b.opacity;b<1&&c.css({opacity:b});c.show();a.call()},function(a){this.getTip().hide();a.call()}],fade:[function(a){var b=this.getConf();this.getTip().fadeTo(b.fadeInSpeed,b.opacity,a)},function(a){this.getTip().fadeOut(this.getConf().fadeOutSpeed,a)}]};f.fn.tooltip=function(a){var b=this.data("tooltip");if(b)return b;a=f.extend(true,{},f.tools.tooltip.conf,a); +if(typeof a.position=="string")a.position=a.position.split(/,?\s/);this.each(function(){b=new t(f(this),a);f(this).data("tooltip",b)});return a.api?b:this}})(jQuery); +(function(d){var i=d.tools.tooltip;d.extend(i.conf,{direction:"up",bounce:false,slideOffset:10,slideInSpeed:200,slideOutSpeed:200,slideFade:!d.browser.msie});var e={up:["-","top"],down:["+","top"],left:["-","left"],right:["+","left"]};i.addEffect("slide",function(g){var a=this.getConf(),f=this.getTip(),b=a.slideFade?{opacity:a.opacity}:{},c=e[a.direction]||e.up;b[c[1]]=c[0]+"="+a.slideOffset;a.slideFade&&f.css({opacity:0});f.show().animate(b,a.slideInSpeed,g)},function(g){var a=this.getConf(),f=a.slideOffset, +b=a.slideFade?{opacity:0}:{},c=e[a.direction]||e.up,h=""+c[0];if(a.bounce)h=h=="+"?"-":"+";b[c[1]]=h+"="+f;this.getTip().animate(b,a.slideOutSpeed,function(){d(this).hide();g.call()})})})(jQuery); +(function(g){function j(a){var c=g(window),d=c.width()+c.scrollLeft(),h=c.height()+c.scrollTop();return[a.offset().top<=c.scrollTop(),d<=a.offset().left+a.width(),h<=a.offset().top+a.height(),c.scrollLeft()>=a.offset().left]}function k(a){for(var c=a.length;c--;)if(a[c])return false;return true}var i=g.tools.tooltip;i.dynamic={conf:{classNames:"top right bottom left"}};g.fn.dynamic=function(a){if(typeof a=="number")a={speed:a};a=g.extend({},i.dynamic.conf,a);var c=a.classNames.split(/\s/),d;this.each(function(){var h= +g(this).tooltip().onBeforeShow(function(e,f){e=this.getTip();var b=this.getConf();d||(d=[b.position[0],b.position[1],b.offset[0],b.offset[1],g.extend({},b)]);g.extend(b,d[4]);b.position=[d[0],d[1]];b.offset=[d[2],d[3]];e.css({visibility:"hidden",position:"absolute",top:f.top,left:f.left}).show();f=j(e);if(!k(f)){if(f[2]){g.extend(b,a.top);b.position[0]="top";e.addClass(c[0])}if(f[3]){g.extend(b,a.right);b.position[1]="right";e.addClass(c[1])}if(f[0]){g.extend(b,a.bottom);b.position[0]="bottom";e.addClass(c[2])}if(f[1]){g.extend(b, +a.left);b.position[1]="left";e.addClass(c[3])}if(f[0]||f[2])b.offset[0]*=-1;if(f[1]||f[3])b.offset[1]*=-1}e.css({visibility:"visible"}).hide()});h.onBeforeShow(function(){var e=this.getConf();this.getTip();setTimeout(function(){e.position=[d[0],d[1]];e.offset=[d[2],d[3]]},0)});h.onHide(function(){var e=this.getTip();e.removeClass(a.classNames)});ret=h});return a.api?ret:this}})(jQuery); +(function(e){function n(f,c){var a=e(c);return a.length<2?a:f.parent().find(c)}function t(f,c){var a=this,l=f.add(a),g=f.children(),k=0,m=c.vertical;j||(j=a);if(g.length>1)g=e(c.items,f);e.extend(a,{getConf:function(){return c},getIndex:function(){return k},getSize:function(){return a.getItems().size()},getNaviButtons:function(){return o.add(p)},getRoot:function(){return f},getItemWrap:function(){return g},getItems:function(){return g.children(c.item).not("."+c.clonedClass)},move:function(b,d){return a.seekTo(k+ +b,d)},next:function(b){return a.move(1,b)},prev:function(b){return a.move(-1,b)},begin:function(b){return a.seekTo(0,b)},end:function(b){return a.seekTo(a.getSize()-1,b)},focus:function(){return j=a},addItem:function(b){b=e(b);if(c.circular){e(".cloned:last").before(b);e(".cloned:first").replaceWith(b.clone().addClass(c.clonedClass))}else g.append(b);l.trigger("onAddItem",[b]);return a},seekTo:function(b,d,h){if(c.circular&&b===0&&k==-1&&d!==0)return a;if(!c.circular&&b<0||b>a.getSize()||b<-1)return a; +var i=b;if(b.jquery)b=a.getItems().index(b);else i=a.getItems().eq(b);var q=e.Event("onBeforeSeek");if(!h){l.trigger(q,[b,d]);if(q.isDefaultPrevented()||!i.length)return a}i=m?{top:-i.position().top}:{left:-i.position().left};k=b;j=a;if(d===undefined)d=c.speed;g.animate(i,d,c.easing,h||function(){l.trigger("onSeek",[b])});return a}});e.each(["onBeforeSeek","onSeek","onAddItem"],function(b,d){e.isFunction(c[d])&&e(a).bind(d,c[d]);a[d]=function(h){e(a).bind(d,h);return a}});if(c.circular){var r=a.getItems().slice(-1).clone().prependTo(g), +s=a.getItems().eq(1).clone().appendTo(g);r.add(s).addClass(c.clonedClass);a.onBeforeSeek(function(b,d,h){if(!b.isDefaultPrevented())if(d==-1){a.seekTo(r,h,function(){a.end(0)});return b.preventDefault()}else d==a.getSize()&&a.seekTo(s,h,function(){a.begin(0)})});a.seekTo(0,0)}var o=n(f,c.prev).click(function(){a.prev()}),p=n(f,c.next).click(function(){a.next()});!c.circular&&a.getSize()>1&&a.onBeforeSeek(function(b,d){setTimeout(function(){if(!b.isDefaultPrevented()){o.toggleClass(c.disabledClass, +d<=0);p.toggleClass(c.disabledClass,d>=a.getSize()-1)}},1)});c.mousewheel&&e.fn.mousewheel&&f.mousewheel(function(b,d){if(c.mousewheel){a.move(d<0?1:-1,c.wheelSpeed||50);return false}});c.keyboard&&e(document).bind("keydown.scrollable",function(b){if(!(!c.keyboard||b.altKey||b.ctrlKey||e(b.target).is(":input")))if(!(c.keyboard!="static"&&j!=a)){var d=b.keyCode;if(m&&(d==38||d==40)){a.move(d==38?-1:1);return b.preventDefault()}if(!m&&(d==37||d==39)){a.move(d==37?-1:1);return b.preventDefault()}}}); +e(a).trigger("onBeforeSeek",[c.initialIndex])}e.tools=e.tools||{version:"1.2.3"};e.tools.scrollable={conf:{activeClass:"active",circular:false,clonedClass:"cloned",disabledClass:"disabled",easing:"swing",initialIndex:0,item:null,items:".items",keyboard:true,mousewheel:false,next:".next",prev:".prev",speed:400,vertical:false,wheelSpeed:0}};var j;e.fn.scrollable=function(f){var c=this.data("scrollable");if(c)return c;f=e.extend({},e.tools.scrollable.conf,f);this.each(function(){c=new t(e(this),f);e(this).data("scrollable", +c)});return f.api?c:this}})(jQuery); +(function(c){var g=c.tools.scrollable;g.autoscroll={conf:{autoplay:true,interval:3E3,autopause:true}};c.fn.autoscroll=function(d){if(typeof d=="number")d={interval:d};var b=c.extend({},g.autoscroll.conf,d),h;this.each(function(){var a=c(this).data("scrollable");if(a)h=a;var e,i,f=true;a.play=function(){if(!e){f=false;e=setInterval(function(){a.next()},b.interval);a.next()}};a.pause=function(){e=clearInterval(e)};a.stop=function(){a.pause();f=true};b.autopause&&a.getRoot().add(a.getNaviButtons()).hover(function(){a.pause(); +clearInterval(i)},function(){f||(i=setTimeout(a.play,b.interval))});b.autoplay&&setTimeout(a.play,b.interval)});return b.api?h:this}})(jQuery); +(function(d){function p(c,g){var h=d(g);return h.length<2?h:c.parent().find(g)}var m=d.tools.scrollable;m.navigator={conf:{navi:".navi",naviItem:null,activeClass:"active",indexed:false,idPrefix:null,history:false}};d.fn.navigator=function(c){if(typeof c=="string")c={navi:c};c=d.extend({},m.navigator.conf,c);var g;this.each(function(){function h(a,b,i){e.seekTo(b);if(j){if(location.hash)location.hash=a.attr("href").replace("#","")}else return i.preventDefault()}function f(){return k.find(c.naviItem|| +"> *")}function n(a){var b=d("<"+(c.naviItem||"a")+"/>").click(function(i){h(d(this),a,i)}).attr("href","#"+a);a===0&&b.addClass(l);c.indexed&&b.text(a+1);c.idPrefix&&b.attr("id",c.idPrefix+a);return b.appendTo(k)}function o(a,b){a=f().eq(b.replace("#",""));a.length||(a=f().filter("[href="+b+"]"));a.click()}var e=d(this).data("scrollable"),k=p(e.getRoot(),c.navi),q=e.getNaviButtons(),l=c.activeClass,j=c.history&&d.fn.history;if(e)g=e;e.getNaviButtons=function(){return q.add(k)};f().length?f().each(function(a){d(this).click(function(b){h(d(this), +a,b)})}):d.each(e.getItems(),function(a){n(a)});e.onBeforeSeek(function(a,b){setTimeout(function(){if(!a.isDefaultPrevented()){var i=f().eq(b);!a.isDefaultPrevented()&&i.length&&f().removeClass(l).eq(b).addClass(l)}},1)});e.onAddItem(function(a,b){b=n(e.getItems().index(b));j&&b.history(o)});j&&f().history(o)});return c.api?g:this}})(jQuery); +(function(a){function t(d,b){var c=this,i=d.add(c),o=a(window),k,f,m,g=a.tools.expose&&(b.mask||b.expose),n=Math.random().toString().slice(10);if(g){if(typeof g=="string")g={color:g};g.closeOnClick=g.closeOnEsc=false}var p=b.target||d.attr("rel");f=p?a(p):d;if(!f.length)throw"Could not find Overlay: "+p;d&&d.index(f)==-1&&d.click(function(e){c.load(e);return e.preventDefault()});a.extend(c,{load:function(e){if(c.isOpened())return c;var h=q[b.effect];if(!h)throw'Overlay: cannot find effect : "'+b.effect+ +'"';b.oneInstance&&a.each(s,function(){this.close(e)});e=e||a.Event();e.type="onBeforeLoad";i.trigger(e);if(e.isDefaultPrevented())return c;m=true;g&&a(f).expose(g);var j=b.top,r=b.left,u=f.outerWidth({margin:true}),v=f.outerHeight({margin:true});if(typeof j=="string")j=j=="center"?Math.max((o.height()-v)/2,0):parseInt(j,10)/100*o.height();if(r=="center")r=Math.max((o.width()-u)/2,0);h[0].call(c,{top:j,left:r},function(){if(m){e.type="onLoad";i.trigger(e)}});g&&b.closeOnClick&&a.mask.getMask().one("click", +c.close);b.closeOnClick&&a(document).bind("click."+n,function(l){a(l.target).parents(f).length||c.close(l)});b.closeOnEsc&&a(document).bind("keydown."+n,function(l){l.keyCode==27&&c.close(l)});return c},close:function(e){if(!c.isOpened())return c;e=e||a.Event();e.type="onBeforeClose";i.trigger(e);if(!e.isDefaultPrevented()){m=false;q[b.effect][1].call(c,function(){e.type="onClose";i.trigger(e)});a(document).unbind("click."+n).unbind("keydown."+n);g&&a.mask.close();return c}},getOverlay:function(){return f}, +getTrigger:function(){return d},getClosers:function(){return k},isOpened:function(){return m},getConf:function(){return b}});a.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","),function(e,h){a.isFunction(b[h])&&a(c).bind(h,b[h]);c[h]=function(j){a(c).bind(h,j);return c}});k=f.find(b.close||".close");if(!k.length&&!b.close){k=a('<a class="close"></a>');f.prepend(k)}k.click(function(e){c.close(e)});b.load&&c.load()}a.tools=a.tools||{version:"1.2.3"};a.tools.overlay={addEffect:function(d, +b,c){q[d]=[b,c]},conf:{close:null,closeOnClick:true,closeOnEsc:true,closeSpeed:"fast",effect:"default",fixed:!a.browser.msie||a.browser.version>6,left:"center",load:false,mask:null,oneInstance:true,speed:"normal",target:null,top:"10%"}};var s=[],q={};a.tools.overlay.addEffect("default",function(d,b){var c=this.getConf(),i=a(window);if(!c.fixed){d.top+=i.scrollTop();d.left+=i.scrollLeft()}d.position=c.fixed?"fixed":"absolute";this.getOverlay().css(d).fadeIn(c.speed,b)},function(d){this.getOverlay().fadeOut(this.getConf().closeSpeed, +d)});a.fn.overlay=function(d){var b=this.data("overlay");if(b)return b;if(a.isFunction(d))d={onBeforeLoad:d};d=a.extend(true,{},a.tools.overlay.conf,d);this.each(function(){b=new t(a(this),d);s.push(b);a(this).data("overlay",b)});return d.api?b:this}})(jQuery); +(function(i){function j(b){var d=b.offset();return{top:d.top+b.height()/2,left:d.left+b.width()/2}}var k=i.tools.overlay,f=i(window);i.extend(k.conf,{start:{top:null,left:null},fadeInSpeed:"fast",zIndex:9999});function n(b,d){var a=this.getOverlay(),c=this.getConf(),g=this.getTrigger(),o=this,l=a.outerWidth({margin:true}),h=a.data("img");if(!h){var e=a.css("backgroundImage");if(!e)throw"background-image CSS prop... [truncated message content] |