Your IP : 216.73.217.68


Current Path : /home/w/u/e/wuectly/www/03cbe/
Upload File :
Current File : /home/w/u/e/wuectly/www/03cbe/com_icagenda.tar

index.html000060400000000054152455705350006547 0ustar00<html><body bgcolor="#FFFFFF"></body></html>assets/index.html000060400000000032152455705350010045 0ustar00<html><body></body></html>assets/elements/titleimg.php000060400000004232152455705350012221 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.4 2015-04-02
 * @since       1.2.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('JPATH_BASE') or die;

jimport('joomla.form.formfield');

// Test if translation is missing, set to en-GB by default
$language = JFactory::getLanguage();
$language->load('com_icagenda', JPATH_ADMINISTRATOR, 'en-GB', true);
$language->load('com_icagenda', JPATH_ADMINISTRATOR, null, true);

JHtml::stylesheet('com_icagenda/icagenda-back.css', false, true);

class JFormFieldTitleImg extends JFormField
{
	protected $type = 'TitleImg';

	protected function getInput()
	{
		return ' ';
	}

	protected function getLabel()
	{
		$html = array();

		// Affichage texte

		$label = $this->element['label'];
		$label = $this->translateLabel ? JText::_($label) : $label;

		$style = $this->element['style'];
		$style = $this->translateLabel ? JText::_($style) : $style;

		$class = $this->element['class'];
		$class = $this->translateLabel ? JText::_($class) : $class;

		$icimage = $this->element['icimage'];
		$image = '../media/com_icagenda/images/'. $icimage .'';

		$icicon = $this->element['icicon'];

		// Contruction
		$html[] = '<div class="';
		$html[] = $class;
		$html[] = '" ';
		$html[] = 'style="';
		$html[] = $style;
		$html[] = 'display:block;clear:both;">';

		if ($icimage)
		{
			$html[] = '<img src="';
			$html[] = $image;
			$html[] = '" style="float:left; padding: 6px 10px 10px 0px;" />';
		}
		elseif ($icicon)
		{
			$html[] = '<span class="iCicon-';
			$html[] = $icicon;
			$html[] = '"></span> ';
		}

		$html[] = $label;
		$html[] = '</div>';

		return implode('',$html);
	}
}
assets/elements/index.html000060400000000054152455705350011665 0ustar00<html><body bgcolor="#FFFFFF"></body></html>assets/elements/titleheader.php000060400000002113152455705350012671 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.4 2015-04-13
 * @since       3.5.4
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('JPATH_BASE') or die;

jimport('joomla.form.formfield');


class JFormFieldTitleHeader extends JFormField
{
	protected $type = 'TitleHeader';

	protected function getInput()
	{
		return ' ';
	}

	protected function getLabel()
	{
    	$label = $this->element['label'];
		$label = $this->translateLabel ? JText::_($label) : $label;

    	$html = '<h3>' . $label . '</h3>';

    	return $html;
	}
}
assets/elements/desc.php000060400000006167152455705350011332 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.4 2015-04-02
 * @since       3.2.0.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('JPATH_BASE') or die;

jimport('joomla.form.formfield');

// Test if translation is missing, set to en-GB by default
$language = JFactory::getLanguage();
$language->load('com_icagenda', JPATH_ADMINISTRATOR, 'en-GB', true);
$language->load('com_icagenda', JPATH_ADMINISTRATOR, null, true);


class JFormFieldDesc extends JFormField
{
	protected $type = 'Desc';

	protected function getLabel()
	{
		return ' ';
	}

	protected function getInput()
	{
		$html = array();

		$document = JFactory::getDocument();

		// Joomla 2.5
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JHtml::stylesheet('com_icagenda/template.j25.css', false, true);
			JHtml::stylesheet('com_icagenda/icagenda-back.j25.css', false, true);

			JHTML::_('behavior.framework');

			// load jQuery, if not loaded before
			$scripts = array_keys($document->_scripts);
			$scriptFound = false;
			$scriptuiFound = false;

			for ($i = 0; $i < count($scripts); $i++)
			{
				if (stripos($scripts[$i], 'jquery.min.js') !== false)
				{
					$scriptFound = true;
				}
				// load jQuery, if not loaded before as jquery
				if (stripos($scripts[$i], 'jquery.js') !== false)
				{
					$scriptFound = true;
				}
				if (stripos($scripts[$i], 'jquery-ui.min.js') !== false)
				{
					$scriptuiFound = true;
				}
			}

			// jQuery Library Loader
			if (!$scriptFound)
			{
				// load jQuery, if not loaded before
				if (!JFactory::getApplication()->get('jquery'))
				{
					JFactory::getApplication()->set('jquery', true);
					// add jQuery
					$document->addScript('https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');
					$document->addScript( JURI::root( true ) . '/media/com_icagenda/js/jquery.noconflict.js' );
				}
			}

			if (!$scriptuiFound)
			{
				$document->addScript('https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js');
			}

			$document->addScript( JURI::root( true ) . '/media/com_icagenda/js/template.js' );
		}

		$label = $this->element['label'];
		$label = $this->translateLabel ? JText::_($label) : $label;

		$style = $this->element['style'];
		$style = $this->translateLabel ? JText::_($style) : $style;

		$class = $this->element['class'];
		$class = $this->translateLabel ? JText::_($class) : $class;


		// Contruction
		$html[] = "<div class='";
		$html[] = $class;
		$html[] = "' ";
		$html[] = "style='";
		$html[] = $style;
		$html[] = "display:block;clear:both;'>";
		$html[] = $label;
		$html[] = "</div>";

		return implode('',$html);

	}
}
assets/elements/title.php000060400000006471152455705350011533 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.4 2015-04-02
 * @since       1.2.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('JPATH_BASE') or die;

jimport('joomla.form.formfield');

// Test if translation is missing, set to en-GB by default
$language = JFactory::getLanguage();
$language->load('com_icagenda', JPATH_ADMINISTRATOR, 'en-GB', true);
$language->load('com_icagenda', JPATH_ADMINISTRATOR, null, true);

JHtml::stylesheet('com_icagenda/icagenda-back.css', false, true);


class JFormFieldTitle extends JFormField
{
	protected $type = 'Title';

	protected function getInput()
	{
		return ' ';
	}

	protected function getLabel()
	{
		$html = array();

		$document = JFactory::getDocument();
		$document->addStyleSheet( JURI::root( true ) . '/media/com_icagenda/icicons/style.css' );

		// Joomla 2.5
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JHtml::stylesheet('com_icagenda/template.j25.css', false, true);
			JHtml::stylesheet('com_icagenda/icagenda-back.j25.css', false, true);

			JHTML::_('behavior.framework');

			// load jQuery, if not loaded before
			$scripts = array_keys($document->_scripts);
			$scriptFound = false;
			$scriptuiFound = false;

			for ($i = 0; $i < count($scripts); $i++)
			{
				if (stripos($scripts[$i], 'jquery.min.js') !== false)
				{
					$scriptFound = true;
				}
				// load jQuery, if not loaded before as jquery
				if (stripos($scripts[$i], 'jquery.js') !== false)
				{
					$scriptFound = true;
				}
				if (stripos($scripts[$i], 'jquery-ui.min.js') !== false)
				{
					$scriptuiFound = true;
				}
			}

			// jQuery Library Loader
			if (!$scriptFound)
			{
				// load jQuery, if not loaded before
				if (!JFactory::getApplication()->get('jquery'))
				{
					JFactory::getApplication()->set('jquery', true);
					// add jQuery
					$document->addScript('https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');
					$document->addScript( JURI::root( true ) . '/media/com_icagenda/js/jquery.noconflict.js' );
				}
			}

			if (!$scriptuiFound)
			{
				$document->addScript('https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js');
			}

			$document->addScript( JURI::root( true ) . '/media/com_icagenda/js/template.js' );
		}

    	$label = $this->element['label'];
		$label = $this->translateLabel ? JText::_($label) : $label;

    	$style = $this->element['style'];
		$style = $this->translateLabel ? JText::_($style) : $style;

    	$class = $this->element['class'];
		$class = $this->translateLabel ? JText::_($class) : $class;


		// Contruction
    	$html[] = "<div class='";
    	$html[] = $class;
    	$html[] = "' ";
    	$html[] = "style='";
    	$html[] = $style;
    	$html[] = "display:block;clear:both;'>";
    	$html[] = $label;
    	$html[] = "</div>";

    	return implode('',$html);
	}
}
assets/jcms/info.php000060400000004333152455705350010460 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Adapted from Nicholas K. Dionysopoulos - www.akeebabackup.com
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-06-24
 * @since       3.5.6
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

class iCagendaSystemInfo
{
	/** @var string Unique identifier for the site, created from server variables */
	private $siteId;
	/** @var array Associative array of data being sent */
	private $data = array();
	/** @var string Remote url to upload the stats */
	private $remoteUrl = 'http://stats.joomlic.com/index.php';

	public function setSiteId($siteId)
	{
		$this->siteId = $siteId;
	}

	/**
	 * Sets the value of a collected variable. Use NULL as value to unset it
	 *
	 * @param   string  $key        Variable name
	 * @param   string  $value      Variable value
	 */
	public function setValue($key, $value)
	{
		if (is_null($value) && isset($this->data[$key]))
		{
			unset($this->data[$key]);
		}
		else
		{
			$this->data[$key] = $value;
		}
	}

	/**
	 * Uploads collected data to the remote server
	 *
	 * @param   bool    $useIframe  Should I create an iframe to upload data or should I use cURL/fopen?
	 *
	 * @return  string|bool     The HTML code if an iframe is requested or a boolean if we're using cURL/fopen
	 */
	public function sendInfo()
	{
		// No site ID? Well, simply do nothing
		if ( ! $this->siteId)
		{
			return '';
		}

		// First of all let's add the siteId
		$this->setValue('sid', $this->siteId);

		// Then let's create the url
		$url = array();

		foreach ($this->data as $param => $value)
		{
			$url[] .= $param . '=' . $value;
		}

		$url = $this->remoteUrl . '?' . implode('&', $url);

		return '<iframe style="display: none" src="' . $url . '"></iframe>';
	}
}
models/category.php000060400000010321152455705350010361 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rez�, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rez� (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-12-04
 * @since		1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modeladmin');


/**
 * iCagenda model.
 */
class iCagendaModelCategory extends JModelAdmin
{
	/**
	 * @var		string	The prefix to use with controller messages.
	 * @since	1.6
	 */
	protected $text_prefix = 'COM_ICAGENDA';


	/**
	 * Returns a reference to the a Table object, always creating it.
	 *
	 * @param	type	The table type to instantiate
	 * @param	string	A prefix for the table class name. Optional.
	 * @param	array	Configuration array for model. Optional.
	 * @return	JTable	A database object
	 * @since	1.6
	 */
	public function getTable($type = 'Category', $prefix = 'iCagendaTable', $config = array())
	{
		return JTable::getInstance($type, $prefix, $config);
	}

	/**
	 * Method to get the record form.
	 *
	 * @param	array	$data		An optional array of data for the form to interogate.
	 * @param	boolean	$loadData	True if the form is to load its own data (default case), false if not.
	 * @return	JForm	A JForm object on success, false on failure
	 * @since	1.6
	 */
	public function getForm($data = array(), $loadData = true)
	{
		// Initialise variables.
		$app	= JFactory::getApplication();

		// Get the form.
		$form = $this->loadForm('com_icagenda.category', 'category', array('control' => 'jform', 'load_data' => $loadData));
		if (empty($form)) {
			return false;
		}

		return $form;
	}

	/**
	 * Method to get the data that should be injected in the form.
	 *
	 * @return	mixed	The data for the form.
	 * @since	1.6
	 */
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$data = JFactory::getApplication()->getUserState('com_icagenda.edit.category.data', array());

		if (empty($data)) {
			$data = $this->getItem();
		}

		return $data;
	}

	/**
	 * Method to get a single record.
	 *
	 * @param	integer	The id of the primary key.
	 *
	 * @return	mixed	Object on success, false on failure.
	 * @since	1.6
	 */
	public function getItem($pk = null)
	{
		if ($item = parent::getItem($pk)) {

			//Do any procesing on fields here if needed

		}

		return $item;
	}

	/**
	 * Prepare and sanitise the table prior to saving.
	 *
	 * @since	1.0
	 */

	protected function prepareTable( $table )
	{
		if (empty($table->id)) {

			// Set ordering to the last item if not set
			if (@$table->ordering === '') {
				$db = JFactory::getDbo();
				$db->setQuery('SELECT MAX(ordering) FROM #__icagenda_category');
				$max = $db->loadResult();
				$table->ordering = $max+1;
			}

		}
	}

	/**
	 * Method to save the form data.
	 *
	 * @param   array  $data  The form data.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   3.4.0
	 */
	public function save($data)
	{
		$date = JFactory::getDate();

		// Fix version before 3.4.0 to set a created date (will use last modified date if exists, or current date)
		if (empty($data['created']))
		{
			$data['created'] = !empty($data['modified']) ? $data['modified'] : $date->toSql();
		}

		// Generates Alias if empty
		// Alias is not generated if non-latin characters, so we fix it by using created date, or title if unicode is activated, as alias
		if ($data['alias'] == null || empty($data['alias']))
		{
			$data['alias'] = JFilterOutput::stringURLSafe($data['title']);

			if ($data['alias'] == null || empty($data['alias']))
			{
				if (JFactory::getConfig()->get('unicodeslugs') == 1)
				{
					$data['alias'] = JFilterOutput::stringURLUnicodeSlug($data['title']);
				}
				else
				{
					$data['alias'] = JFilterOutput::stringURLSafe($data['created']);
				}
			}
		}

		$return = parent::save($data);

		return $return;
	}
}
models/fields/index.html000060400000000032152455705350011274 0ustar00<html><body></body></html>models/fields/iclist/index.html000060400000000032152455705350012563 0ustar00<html><body></body></html>models/fields/iclist/globalization.php000060400000021467152455705350014154 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.7 2015-07-12
 * @since       2.1.7
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldiClist_globalization extends JFormField
{
	protected $type='iclist_globalization';

	protected function getInput()
	{
		$lang		= JFactory::getLanguage();
		$langTag	= $lang->getTag();
		$langName	= $lang->getName();

		if ( ! file_exists(JPATH_LIBRARIES . '/ic_library/globalize/culture/' . $langTag . '.php'))
		{
			$langTag = 'en-GB';
			$currentText = JTEXT::_('COM_ICAGENDA_DATE_FORMAT_DEFAULT') . ' [' . $langTag . '] :';

		}
		else
		{
			$currentText = JTEXT::_('COM_ICAGENDA_DATE_FORMAT_CURRENT') . ' [' . $langTag . '] :';
		}

		$globalize		= JPATH_LIBRARIES . '/ic_library/globalize/culture/' . $langTag . '.php';
		$iso			= JPATH_LIBRARIES . '/ic_library/globalize/culture/iso.php';

		require_once $globalize;
		require_once $iso;

		$class		= isset($class) ? ' class="' . $class . '"' : '';
		$selected	= ' selected="selected" style="background:#D4D4D4;"';

		// Start Select List of Date Formats
		$html = '<select id="' . $this->id . '_id"' . $class . ' name="' . $this->name . '" style="width:250px;" >';

		if ($this->name != 'jform[format]' && $this->name != 'format')
		{
			$html.= '<option value="" style="text-align:center;">- ' . JTEXT::_('COM_ICAGENDA_SELECT_FORMAT') . ' -</option>';
		}

		// Date Formats in Current Language of User (admin)
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			$html.= '<optgroup label="&nbsp;"></optgroup>';
			$html.= '<optgroup label="' . $currentText . '" style="font-style:normal; color:#333333;"></optgroup>';
		}
		else
		{
			$html.= '<optgroup label="' . $currentText . '">';
		}

		$dateglobalize_array[] = array();
		$dateglobalize_array[] = $dateglobalize_1;
		$dateglobalize_array[] = $dateglobalize_2;
		$dateglobalize_array[] = $dateglobalize_3;
		$dateglobalize_array[] = $dateglobalize_4;
		$dateglobalize_array[] = isset($dateglobalize_5) ? $dateglobalize_5 : ''; // en-GB, en-US
		$dateglobalize_array[] = $dateglobalize_6;
		$dateglobalize_array[] = $dateglobalize_7;
		$dateglobalize_array[] = $dateglobalize_8;
		$dateglobalize_array[] = isset($dateglobalize_9) ? $dateglobalize_9 : ''; // en-GB
		$dateglobalize_array[] = isset($dateglobalize_10) ? $dateglobalize_10 : ''; // en-GB
		$dateglobalize_array[] = $dateglobalize_11;
		$dateglobalize_array[] = $dateglobalize_12;

		foreach ($dateglobalize_array as $format => $label)
		{
			if (isset($label) && $label)
			{
				$html.= '<option value="' . $format . '"';
				$html.= ($this->value == $format) ? $selected : '';
				$html.= '>' . $label . '</option>';
			}
		}

		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			$html.= '</optgroup>';
		}


		// Other date format in English (if 'en-GB' is current language)
		if ($langTag == 'en-GB')
		{
			// Extra en-US
			if (version_compare(JVERSION, '3.0', 'lt'))
			{
				$html.= '<optgroup label="&nbsp;"></optgroup>';
				$html.= '<optgroup label="Other date format in English" style="font-style:normal; color:#333333;"></optgroup>';
				$html.= '<optgroup label="en-US (more formats if current language) :" style="font-weight:normal; color:#777777;"></optgroup>';
			}
			else
			{
				$html.= '<optgroup label="en-US (more formats if current language) :">';
			}

			$extra_array = array(
					$extravalue_1 => $extra_1,
					$extravalue_2 => $extra_2,
					$extravalue_3 => $extra_3,
					$extravalue_4 => $extra_4,
					$extravalue_5 => $extra_5,
				);

			foreach ($extra_array as $format => $label)
			{
				$html.= '<option value="' . $format . '"';
				$html.= ($this->value == $format) ? $selected : '';
				$html.= '>' . $label . '</option>';
			}

			if (version_compare(JVERSION, '3.0', 'ge'))
			{
				$html.= '</optgroup>';
			}

			// Extra en-CA
			if (version_compare(JVERSION, '3.0', 'lt'))
			{
				$html.= '<optgroup label="en-CA :" style="font-weight:normal; color:#777777;"></optgroup>';
			}
			else
			{
				$html.= '<optgroup label="en-CA :">';
			}

			$html.= '<option value="' . $extravalue_6 . '"';
			$html.= ($this->value == $extravalue_6) ? $selected : '';
			$html.= '>' . $extra_6 . '</option>';

			if (version_compare(JVERSION, '3.0', 'ge'))
			{
				$html.= '</optgroup>';
			}

			// Extra en-SG
			if (version_compare(JVERSION, '3.0', 'lt'))
			{
				$html.= '<optgroup label="en-SG :" style="font-weight:normal; color:#777777;"></optgroup>';
			}
			else
			{
				$html.= '<optgroup label="en-SG :">';
			}

			$html.= '<option value="' . $extravalue_7 . '"';
			$html.= ($this->value == $extravalue_7) ? $selected : '';
			$html.= '>' . $extra_7 . '</option>';

			if (version_compare(JVERSION, '3.0', 'ge'))
			{
				$html.= '</optgroup>';
			}
		}


		// International Date Format (ISO)
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			$html.= '<optgroup label="&nbsp;"></optgroup>';
			$html.= '<optgroup label="' . JTEXT::_('COM_ICAGENDA_DATE_FORMAT_ISO') . '" style="font-style:normal; color:#333333;"></optgroup>';
		}
		else
		{
			$html.= '<optgroup label="' . JTEXT::_('COM_ICAGENDA_DATE_FORMAT_ISO') . '">';
		}

		$html.= '<option value="' . $iso . '"';
		$html.= ($this->value == $iso) ? $selected : '';
		$html.= '>1993-04-30</option>';

		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			$html.= '</optgroup>';
		}


		// Global date formats with separator
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			$html.= '<optgroup label="&nbsp;"></optgroup>';
			$html.= '<optgroup label="' . JTEXT::_('COM_ICAGENDA_DATE_FORMAT_SEPARATOR') . '" style="font-style:normal; color:#333333;"></optgroup>';
		}


		// DMY Little-endian (day, month, year), e.g. 22.04.96 or 22/04/96
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			$html.= '<optgroup label="' . JTEXT::_('COM_ICAGENDA_DATE_FORMAT_DMY') . ' :" style="font-weight:normal; color:#777777;"></optgroup>';
		}
		else
		{
			$html.= '<optgroup label="' . JTEXT::_('COM_ICAGENDA_DATE_FORMAT_DMY') . '">';
		}

		$dmy_array = array(
				$dmy_1 => '30␣04␣1993',
				$dmy_2 => '30␣04␣93',
				$dmy_3 => '30␣04',
				$dmy_4 => '04␣93',
				$dmy_5 => isset($dmy_text_5) ? $dmy_text_5 : '',
				$dmy_6 => isset($dmy_text_6) ? $dmy_text_6 : ''
			);

		foreach ($dmy_array as $format => $label)
		{
			if ($label)
			{
				$html.= '<option value="' . $format . '"';
				$html.= ($this->value == $format) ? $selected : '';
				$html.= '>' . $label . '</option>';
			}
		}

		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			$html.= '</optgroup>';
		}


		// MDY Middle-endian (month, day, year), e.g. 04/22/96
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			$html.= '<optgroup label="' . JTEXT::_('COM_ICAGENDA_DATE_FORMAT_MDY') . ' :" style="font-weight:normal; color:#777777;"></optgroup>';
		}
		else
		{
			$html.= '<optgroup label="' . JTEXT::_('COM_ICAGENDA_DATE_FORMAT_MDY') . '">';
		}

		$mdy_array = array(
				$mdy_1 => '04␣30␣1993',
				$mdy_2 => '04␣30␣93',
				$mdy_3 => '04␣30',
				$mdy_4 => '04␣93',
				$mdy_5 => isset($mdy_text_5) ? $mdy_text_5 : '',
				$mdy_6 => isset($mdy_text_6) ? $mdy_text_6 : ''
			);

		foreach ($mdy_array as $format => $label)
		{
			if ($label)
			{
				$html.= '<option value="' . $format . '"';
				$html.= ($this->value == $format) ? $selected : '';
				$html.= '>' . $label . '</option>';
			}
		}

		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			$html.= '</optgroup>';
		}


		// YMD Big-endian (year, month, day), e.g. 1996-04-22
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			$html.= '<optgroup label="' . JTEXT::_('COM_ICAGENDA_DATE_FORMAT_YMD') . ' :" style="font-weight:normal; color:#777777;"></optgroup>';
		}
		else
		{
			$html.= '<optgroup label="' . JTEXT::_('COM_ICAGENDA_DATE_FORMAT_YMD') . '">';
		}

		$ymd_array = array(
				$ymd_1 => '1993␣04␣30',
				$ymd_2 => '93␣04␣30',
				$ymd_3 => '04␣30',
				$ymd_4 => '93␣04',
				$ymd_5 => isset($ymd_text_5) ? $ymd_text_5 : '',
				$ymd_6 => isset($ymd_text_6) ? $ymd_text_6 : ''
			);

		foreach ($ymd_array as $format => $label)
		{
			if ($label)
			{
				$html.= '<option value="' . $format . '"';
				$html.= ($this->value == $format) ? $selected : '';
				$html.= '>' . $label . '</option>';
			}
		}

		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			$html.= '</optgroup>';
		}

		$html.= '</select>';

		return $html;
	}
}
models/fields/icmap/lat.php000060400000004112152455705350011664 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rez�, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rez� (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.0 2015-02-15
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

/**
 * Returns Latitude from Google Maps address auto-complete field.
 */
class JFormFieldiCmap_lat extends JFormField
{
	protected $type='icmap_lat';

	protected function getInput()
	{
		// Check if coords set (deprecated)
		$id = JRequest::getVar('id');

		$class = isset($this->class) ? ' class="' . $this->class . '"' : '';

		if (isset($id))
		{
			$db	= JFactory::getDBO();
			$db->setQuery(
				'SELECT a.coordinate' .
				' FROM #__icagenda_events AS a' .
				' WHERE a.id = '.(int) $id
			);

			$coords = $db->loadResult();
		}
		else
		{
			$coords = NULL;
		}

		$session = JFactory::getSession();
		$ic_submit_lat = $session->get('ic_submit_lat', '');

		$lat_value = $ic_submit_lat ? $ic_submit_lat : $this->value;

		if ($coords != NULL
			&& $lat_value == '0.0000000000000000')
		{
			$ex			= explode(', ', $coords);
			$lat_value	= $ex[0];
		}
		elseif ($lat_value != '0.0000000000000000')
		{
			$lat_value	= $lat_value;
		}
		else
		{
			$lat_value	= NULL;
		}

		$html= '<div class="clr"></div>';
		$html.= '<label class="icmap-label">' . JText::_('COM_ICAGENDA_GOOGLE_MAPS_LATITUDE_LBL') . '</label> <input name="' . $this->name . '" id="lat" type="text"' . $class . ' value="' . $lat_value . '"/>';

		// clear the data so we don't process it again
		$session->clear('ic_submit_lat');

		return $html;
	}
}

models/fields/icmap/city.php000060400000003031152455705350012053 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rez�, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rez� (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.0 2015-02-25
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

/**
 * Returns City from Google Maps address auto-complete field.
 */
class JFormFieldiCmap_city extends JFormField
{
	protected $type='icmap_city';

	protected function getInput()
	{
		$session = JFactory::getSession();
		$ic_submit_city = $session->get('ic_submit_city', '');

		$city_value = $ic_submit_city ? $ic_submit_city : $this->value;

		$class = isset($this->class) ? ' class="' . $this->class . '"' : '';

		$html = '<div class="clr"></div>';
		$html.= '<label class="icmap-label">' . JText::_('COM_ICAGENDA_FORM_LBL_EVENT_CITY') . '</label> <input name="' . $this->name . '" id="locality" type="text"' . $class . ' value="' . $city_value . '"/>';

		// clear the data so we don't process it again
		$session->clear('ic_submit_city');

		return $html;
	}
}
models/fields/icmap/index.html000060400000000032152455705350012365 0ustar00<html><body></body></html>models/fields/icmap/lng.php000060400000004112152455705350011664 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rez�, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rez� (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.0 2015-02-15
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

/**
 * Returns Latitude from Google Maps address auto-complete field.
 */
class JFormFieldiCmap_lng extends JFormField
{
	protected $type='icmap_lng';

	protected function getInput()
	{
		// Check if coords set (deprecated)
		$id = JRequest::getVar('id');

		$class = isset($this->class) ? ' class="' . $this->class . '"' : '';

		if (isset($id))
		{
			$db	= JFactory::getDBO();
			$db->setQuery(
				'SELECT a.coordinate' .
				' FROM #__icagenda_events AS a' .
				' WHERE a.id = '.(int) $id
			);

			$coords = $db->loadResult();
		}
		else
		{
			$coords = NULL;
		}

		$session = JFactory::getSession();
		$ic_submit_lng = $session->get('ic_submit_lng', '');

		$lng_value = $ic_submit_lng ? $ic_submit_lng : $this->value;

		if ($coords != NULL
			&& $lng_value == '0.0000000000000000')
		{
			$ex			= explode(', ', $coords);
			$lng_value	= $ex[1];
		}
		elseif ($lng_value != '0.0000000000000000')
		{
			$lng_value	= $lng_value;
		}
		else
		{
			$lng_value	= NULL;
		}

		$html= '<div class="clr"></div>';
		$html.= '<label class="icmap-label">' . JText::_('COM_ICAGENDA_GOOGLE_MAPS_LONGITUDE_LBL') . '</label> <input name="' . $this->name . '" id="lng" type="text"' . $class . ' value="' . $lng_value . '"/>';

		// clear the data so we don't process it again
		$session->clear('ic_submit_lng');

		return $html;
	}
}
models/fields/icmap/country.php000060400000003072152455705350012613 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rez�, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rez� (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.0 2015-02-25
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

/**
 * Returns Country from Google Maps address auto-complete field.
 */
class JFormFieldiCmap_country extends JFormField
{
	protected $type='icmap_country';

	protected function getInput()
	{
		$session = JFactory::getSession();
		$ic_submit_country = $session->get('ic_submit_country', '');

		$country_value = $ic_submit_country ? $ic_submit_country : $this->value;

		$class = isset($this->class) ? ' class="' . $this->class . '"' : '';

		$html = '<div class="clr"></div>';
		$html.= '<label class="icmap-label">' . JText::_('COM_ICAGENDA_FORM_LBL_EVENT_COUNTRY') . '</label> <input name="' . $this->name . '" id="country" type="text"' . $class . ' value="' . $country_value . '" />';

		// clear the data so we don't process it again
		$session->clear('ic_submit_country');

		return $html;
	}
}
models/fields/modal/tos_article.php000060400000015034152455705350013424 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.0 2013-09-18
 * @since       3.2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * Supports a modal article picker.
 */
class JFormFieldModal_tos_article extends JFormField
{
	/**
	 * The form field type.
	 */
	protected $type = 'modal_tos_article';

//	protected function getLabel()
//	{
//	   return ' ';
//	}

	/**
	 * Method to get the field input markup.
	 */
	protected function getInput()
	{
		$icagendaParams = JComponentHelper::getParams('com_icagenda');
		$tos_Type = $icagendaParams->get('tos_Type', '1');

		$allowEdit		= ((string) $this->element['edit'] == 'true') ? true : false;
		$allowClear		= ((string) $this->element['clear'] != 'false') ? true : false;

		// Load language
		JFactory::getLanguage()->load('com_content', JPATH_ADMINISTRATOR);

		// Load the modal behavior script.
		JHtml::_('behavior.modal', 'a.modal');

		// Build the script.
		$script = array();

		// Select button script
		$script[] = '	function jSelectArticle_'.$this->id.'(id, title, catid, object) {';
		$script[] = '		document.getElementById("'.$this->id.'_id").value = id;';
		$script[] = '		document.getElementById("'.$this->id.'_name").value = title;';

		if ($allowEdit)
		{
			$script[] = '		jQuery("#'.$this->id.'_edit").removeClass("hidden");';
		}

		if ($allowClear)
		{
			$script[] = '		jQuery("#'.$this->id.'_clear").removeClass("hidden");';
		}

		$script[] = '		SqueezeBox.close();';
		$script[] = '	}';

		// Clear button script
		static $scriptClear;

		if ($allowClear && !$scriptClear)
		{
			$scriptClear = true;

			$script[] = '	function jClearArticle(id) {';
			$script[] = '		document.getElementById(id + "_id").value = "";';
			$script[] = '		document.getElementById(id + "_name").value = "'.htmlspecialchars(JText::_('COM_CONTENT_SELECT_AN_ARTICLE', true), ENT_COMPAT, 'UTF-8').'";';
			$script[] = '		jQuery("#"+id + "_clear").addClass("hidden");';
			$script[] = '		if (document.getElementById(id + "_edit")) {';
			$script[] = '			jQuery("#"+id + "_edit").addClass("hidden");';
			$script[] = '		}';
			$script[] = '		return false;';
			$script[] = '	}';
		}

		// Add the script to the document head.
		JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));

		// Setup variables for display.
		$html	= array();
		$link	= 'index.php?option=com_content&amp;view=articles&amp;layout=modal&amp;tmpl=component&amp;function=jSelectArticle_'.$this->id;

		if (isset($this->element['language']))
		{
			$link .= '&amp;forcedLanguage='.$this->element['language'];
		}

		$db	= JFactory::getDbo();
		$db->setQuery(
			'SELECT title' .
			' FROM #__content' .
			' WHERE id = '.(int) $this->value
		);

		try
		{
			$title = $db->loadResult();
		}
		catch (RuntimeException $e)
		{
			JError::raiseWarning(500, $e->getMessage());
		}

		if (empty($title))
		{
			$title = JText::_('COM_CONTENT_SELECT_AN_ARTICLE');
		}
		$title = htmlspecialchars($title, ENT_QUOTES, 'UTF-8');

		// The active article id field.
		if (0 == (int) $this->value)
		{
			$value = '';
		}
		else
		{
			$value = (int) $this->value;
		}

		// The current article display field.
		$html[] = '<div id="ic_article"><fieldset class="span9 iCleft"><div>&nbsp;</div><span class="input-append">';
		$html[] = '<input type="text" class="input-medium" style="margin:0px" id="'.$this->id.'_name" value="'.$title.'" disabled="disabled" size="35" />';

		if(version_compare(JVERSION, '3.0', 'lt')) {
			$html[] = '<a class="modal btn hasTooltip" title="'.JText::_('COM_CONTENT_CHANGE_ARTICLE').'"  href="'.$link.'&amp;'.JSession::getFormToken().'=1" rel="{handler: \'iframe\', size: {x: 800, y: 450}}">'.JText::_('JSELECT').'</a>';
		} else {
			$html[] = '<a class="modal btn hasTooltip" title="'.JHtml::tooltipText('COM_CONTENT_CHANGE_ARTICLE').'"  href="'.$link.'&amp;'.JSession::getFormToken().'=1" rel="{handler: \'iframe\', size: {x: 800, y: 450}}"><i class="icon-file"></i> '.JText::_('JSELECT').'</a>';
		}

		// Edit article button
		if ($allowEdit)
		{
			if(version_compare(JVERSION, '3.0', 'lt')) {
				$html[] = '<a class="btn hasTooltip'.($value ? '' : ' hidden').'" href="index.php?option=com_content&view=article&layout=edit&id=' . $value. '" target="_blank" title="'.JText::_('COM_CONTENT_EDIT_ARTICLE').'" alt="'.JText::_('COM_CONTENT_EDIT_ARTICLE').'" >' . JText::_('JACTION_EDIT') . '</a>';
			} else {
				$html[] = '<a class="btn hasTooltip'.($value ? '' : ' hidden').'" href="index.php?option=com_content&layout=modal&tmpl=component&task=article.edit&id=' . $value. '" target="_blank" title="'.JHtml::tooltipText('COM_CONTENT_EDIT_ARTICLE').'" ><span class="icon-edit"></span> ' . JText::_('JACTION_EDIT') . '</a>';
			}
		}

		// Clear article button
		if ($allowClear)
		{
			if(version_compare(JVERSION, '3.0', 'lt')) {
				$html[] = '<a id="'.$this->id.'_clear" class="btn'.($value ? '' : ' hidden').'" onclick="return jClearArticle(\''.$this->id.'\')">' . JText::_('JCLEAR') . '</a>';
			} else {
				$html[] = '<button id="'.$this->id.'_clear" class="btn'.($value ? '' : ' hidden').'" onclick="return jClearArticle(\''.$this->id.'\')"><span class="icon-remove"></span> ' . JText::_('JCLEAR') . '</button>';
			}
		}

		$html[] = '</span>';

		// class='required' for client side validation
		$class = '';
		if ($this->required)
		{
			$class = ' class="required modal-value"';
		}


		$html[] = '<input type="hidden" id="'.$this->id.'_id"'.$class.' name="'.$this->name.'" value="'.$value.'" /></fieldset></div>';

//		if ($tos_Type == 'on') {
//			$tos_Type = '1';
//		}
		if ($tos_Type == '1') {
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("ic_default").style.display = "none";';
			$html[] = 'document.getElementById("ic_article").style.display = "block";';
			$html[] = 'document.getElementById("tos_custom").style.display = "none";';
			$html[] = '</script>';
		} else {
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("ic_article").style.display = "none";';
			$html[] = '</script>';
		}


		return implode("\n", $html);
	}
}
models/fields/modal/evt_date.php000060400000007245152455705350012714 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.9 2015-07-30
 * @since       3.3.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_evt_date extends JFormField
{
	protected $type = 'modal_evt_date';

	protected function getInput()
	{
		$jinput	= JFactory::getApplication()->input;
		$view	= $jinput->get('view');

		$id		= ($view == 'mail') ? $jinput->get('eventid', '0') : $jinput->get('id', '0');

		if ($id != 0)
		{
			$db		= JFactory::getDbo();
			$query	= $db->getQuery(true);
			$query->select('r.id as reg_id, r.date AS reg_date, r.period AS reg_period, r.eventid AS reg_eventid, sum(r.people) AS reg_count')
				->from('`#__icagenda_registration` AS r');

			if ($view == 'mail')
			{
				$query->where('r.state = 1');
				$query->group('r.date');
			}

			$query->where('r.eventid = ' . (int) $id);

			$db->setQuery($query);

			if ($view == 'mail')
			{
				$result = $db->loadObjectList();
			}
			else
			{
				$result = $db->loadObject();
				$event_id	= $result->reg_eventid;
				$saveddate	= $result->reg_date;
			}
		}
		elseif ($view == 'registration')
		{
			$event_id	= '';
			$saveddate	= '';
		}

		if ($view == 'registration')
		{
			// Test if date saved in in datetime data format
			$date_is_datetime_sql	= false;
			$array_ex_date			= array('-', ' ', ':');
			$d_ex					= str_replace($array_ex_date, '-', $saveddate);
			$d_ex					= explode('-', $d_ex);

			if (count($d_ex) > 4)
			{
				if (   strlen($d_ex[0]) == 4
					&& strlen($d_ex[1]) == 2
					&& strlen($d_ex[2]) == 2
					&& strlen($d_ex[3]) == 2
					&& strlen($d_ex[4]) == 2   )
				{
					$date_is_datetime_sql = true;
				}
			}

			// Test if registered date before 3.3.3 could be converted
			// Control if new date format (Y-m-d H:i:s)
			$input		= trim($saveddate);
			$is_valid	= date('Y-m-d H:i:s', strtotime($input)) == $input;

			if ($is_valid
				&& strtotime($saveddate))
			{
				$date_get		= explode (' ', $saveddate);
				$saved_date		= $date_get['0'];
				$saved_time		= date('H:i:s', strtotime($date_get['1']));
			}
			else
			{
				// Explode to test if stored in old format in database
				$ex_saveddate	= explode (' - ', $saveddate);
				$saved_date		= isset($ex_saveddate['0']) ? trim($ex_saveddate['0']) : '';
				$saved_time		= isset($ex_saveddate['1']) ? trim(date('H:i:s', strtotime($ex_saveddate['1']))) : '';
			}

			$data_eventid = $event_id;

			$eventid_url = JRequest::getVar('eventid', '');

			if ( ! $date_is_datetime_sql && $saveddate )
			{
				$saveddate_text = '"<b>' . $saveddate . '</b>"';
				echo '<div class="ic-alert ic-alert-note"><span class="iCicon-info"></span> <strong>' . JText::_('NOTICE') . '</strong><br />'
					. JText::sprintf('COM_ICAGENDA_REGISTRATION_ERROR_DATE_CONTROL', $saveddate_text) . '</div>';
			}

			$event_id = isset($event_id) ? $eventid_url : '';

			$html = '<select name="' . $this->name . '" id="' . $this->id . '_id" data-chosen="true"></select>';
		}
		else
		{
			$html = '<select name="' . $this->name . '" id="' . $this->id . '_id" data-chosen="true"></select>';
		}

		return $html;
	}
}
models/fields/modal/ph_regbt.php000060400000002610152455705350012702 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.1.3 2013-08-08
 * @since       3.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_ph_regbt extends JFormField
{
	protected $type='modal_ph_regbt';

	protected function getInput()
	{
		$class = JRequest::getVar('class');

		jimport('joomla.application.component.helper');
		$icagendaParams = JComponentHelper::getParams('com_icagenda');
		$extRegButtonText = $icagendaParams->get('RegButtonText');

		if (!isset($extRegButtonText)) { $extRegButtonText = JText::_( 'COM_ICAGENDA_REGISTRATION_REGISTER'); }

		$html ='<input type="text" id="'.$this->id.'" class="'.$class.'" name="'.$this->name.'" value="'.$this->value.'" placeholder="'.$extRegButtonText.'"/>';

		return $html;
	}
}
models/fields/modal/icvalue_field.php000060400000003350152455705350013705 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.3 2013-10-17
 * @since       3.2.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_icvalue_field extends JFormField
{
	protected $type='modal_icvalue_field';

	protected function getInput()
	{

		$Explode = explode('_', $this->name);
		$TypeName = $Explode[0].']';

		$replace = array("jform", "[params]", "[", "]");
		$name = str_replace($replace, "", $TypeName);

		$Type_default = $name.'_default';
		$Type_content = $name.'_custom';

		$html	= array();

		$html[] = '<div id="'.$Type_content.'"><fieldset class="span9 iCleft">';
		$html[] = '<input type="text" value="'.$this->value.'" name="'.$this->name.'"/>';
		$html[] = '</fieldset></div>';

		$html[] = '<script type="text/javascript">';
		$html[] = 'if (typeset == 1) {';
		$html[] = 'document.getElementById("'.$Type_content.'").style.display = "block";';
		$html[] = '}';
		$html[] = 'if (typeset == 0) {';
		$html[] = 'document.getElementById("'.$Type_content.'").style.display = "none";';
		$html[] = '}';
		$html[] = '</script>';

		return implode("\n", $html);
	}
}
models/fields/modal/ictextarea_counter.php000060400000013220152455705350014777 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.0 2015-02-14
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

/**
 * Textarea with a counter. Short Description and Meta Description
 *
 * @package		iCagenda
 * @subpackage	com_icagenda
 * @since		3.4.0
 */
class JFormFieldModal_ictextarea_counter extends JFormField
{
	protected $type = 'modal_ictextarea_counter';

	protected function getInput()
	{
		$app		= JFactory::getApplication();
		$replace	= array("jform", "[", "]");
		$name		= str_replace($replace, "", $this->name);
		$nb_chars	= strlen(trim(utf8_decode($this->value)));
		$class		= !empty($this->class) ? ' class="' . $this->class . '"' : '';

		if ($app->isAdmin())
		{
			$params	= JComponentHelper::getParams('com_icagenda');
			$iCparams	= JComponentHelper::getParams('com_icagenda');
		}
		else
		{
			$params	= $app->getParams();
			$iCparams	= JComponentHelper::getParams('com_icagenda');
		}

		$session = JFactory::getSession();
		$ic_submit_shortdesc = $session->get('ic_submit_shortdesc', '');
		$ic_submit_metadesc = $session->get('ic_submit_metadesc', '');

		$event_shortdesc = $ic_submit_shortdesc ? $ic_submit_shortdesc : $this->value;
		$event_metadesc = $ic_submit_metadesc ? $ic_submit_metadesc : $this->value;

		if ($name == 'shortdesc')
		{
			$ic_max_component	= $iCparams->get('char_limit_short_description', '100');
			$ic_max				= $params->get('char_limit_short_description', '100');
			$ic_max				= ($ic_max_component >= $ic_max) ? $ic_max : $ic_max_component;
		}
		elseif ($name == 'metadesc')
		{
			$ic_max_component	= $iCparams->get('char_limit_meta_description', '160');
			$ic_max				= $params->get('char_limit_meta_description', '160');
			$ic_max				= ($ic_max_component >= $ic_max) ? $ic_max : $ic_max_component;
		}
		else
		{
			$ic_max = $params->get('ShortDescLimit', '100');
		}

		// Alert if text stored in the database exceeds the character limit currently set.
		$display_alert	= ($nb_chars > $ic_max) ? true : false;

		$count_value = $nb_chars ? ($ic_max-$nb_chars) : $ic_max;
		$ic_size = (strlen($ic_max))-1;
		$ic_size = $ic_size ? $ic_size : '1';

		$counter_input = '<input id="' . $name . '-counter"';
//		$counter_input.= ' onblur="iCtextCounter(this.form.' . $this->name . ', this, ' . $ic_max . ');"';
		$counter_input.= ' class="valid"';
//		$counter_input.= ' onfocus="this.blur();"';
//		$counter_input.= ' tabindex="999" maxlength="' . $ic_size . '" size="' . $ic_size . '"';
		$counter_input.= ' size="' . $ic_size . '"';
		$counter_input.= ' value="' . $count_value . '"';
		$counter_input.= ' name="counter_' . $name . '">';

		$html = '<div>';

		if ($display_alert)
		{
			$html.= '<div class="alert alert-danger"><h3>Warning</h3><strong>'
					. JText::sprintf('COM_ICAGENDA_ALERT_S_TEXT_S_EXCEEDS_CHARACTER_LIMIT', $this->title) . '</strong><br />'
					. JText::_('COM_ICAGENDA_ALERT_EDIT_TEXT_TO_FIT_CHAR_LIMIT') . '<br /><br /><u>'
					. JText::sprintf('COM_ICAGENDA_ALERT_S_TEXT_S_CURRENTLY_STORED_IN_DATABASE', $this->title) . '</u> :<br/><i>'
					. $this->value . '</i></div>';
		}
		$html.= '<textarea';
		$html.= ' onKeyPress="iCtextCounter(this, this.form.counter_' . $name.', ' . $ic_max . ');"';
		$html.= ' onKeyUp="iCtextCounter(' . $name . ', counter_' . $name . ', ' . $ic_max . ');"';
		$html.= ' onkeydown="iCtextCounter(' . $name . ', counter_' . $name . ', ' . $ic_max . ');"';
		$html.= ' onmouseout="iCtextCounter(' . $name . ', counter_' . $name . ', ' . $ic_max . ');"';
//		$html.= ' onpaste="' . $name . 'useractions();"';
		$html.= $class . ' name="' . $this->name . '" id="' . $name . '">';

		if ($name == 'shortdesc')
		{
			$html.= $event_shortdesc;

			// clear the data so we don't process it again
			$session->clear('ic_submit_shortdesc');
		}
		elseif ($name == 'metadesc')
		{
			$html.= $event_metadesc;

			// clear the data so we don't process it again
			$session->clear('ic_submit_metadesc');
		}
		else
		{
			$html.= $this->value;
		}

		$html.= '</textarea>';

		$html.= '</div>';
		$html.= '<div id="'.$name.'-counter-container" class="ic-counter-container">';
		$html.= '<div class="ic-counter">';
		$html.= JText::sprintf('COM_ICAGENDA_MAXIMUM_N_CHARACTERS', $ic_max);
		$html.= '</div> ';
		$html.= '<div class="ic-counter">';
		$html.= JText::sprintf('COM_ICAGENDA_N_REMAINING', $counter_input);
		$html.= '</div>';
		$html.= '</div>';
		$html.= '<div>&nbsp;</div>';

//		$html.= '<textarea';
//		$html.= ' onMouseOut="CheckFieldLength(this.' . $name . ', \'' . $name . '_charcount\', \'' . $name . '_remaining\', 140);"';
//		$html.= ' onKeyDown="CheckFieldLength(this.' . $name . ', \'' . $name . '_charcount\', \'' . $name . '_remaining\', 140);"';
//		$html.= ' onkeyup="CheckFieldLength(this.' . $name . ', \'' . $name . '_charcount\', \'' . $name . '_remaining\', 140);"';
//		$html.= $class . ' name="' . $this->name . '" id ="' . $name . '">';
//		$html.= '</textarea>';
//		$html.= '<h2><span id="' . $name . '_charcount">0</span> characters entered   | <span id="' . $name . '_remaining">140</span> characters remaining</h2>';

		return $html;
	}
}
models/fields/modal/thumbs.php000060400000011033152455705350012411 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.2 2015-03-13
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_thumbs extends JFormField
{
	protected $type='modal_thumbs';

	protected function getInput()
	{
		$replace = array("jform", "params", "[", "]");
		$name_input = str_replace($replace, "", $this->name);

		jimport('joomla.application.component.helper');
		$iCparams = JComponentHelper::getParams('com_icagenda');

		if ($name_input == 'thumb_large')
		{
			$thumbOptions = $iCparams->get('thumb_large');
			$width = is_numeric($thumbOptions[0]) ? $thumbOptions[0] : '900';
			$height = is_numeric($thumbOptions[1]) ? $thumbOptions[1] : '600';
			$quality = is_numeric($thumbOptions[2]) ? $thumbOptions[2] : '100';
			$crop = $thumbOptions[3] ? $thumbOptions[3] : false;
			$default_width = '900';
			$default_height = '600';
			$default_quality = '100';
			$default_crop = '0';
		}
		elseif ($name_input == 'thumb_medium')
		{
			$thumbOptions = $iCparams->get('thumb_medium');
			$width = is_numeric($thumbOptions[0]) ? $thumbOptions[0] : '300';
			$height = is_numeric($thumbOptions[1]) ? $thumbOptions[1] : '300';
			$quality = is_numeric($thumbOptions[2]) ? $thumbOptions[2] : '100';
			$crop = $thumbOptions[3] ? $thumbOptions[3] : false;
			$default_width = '300';
			$default_height = '300';
			$default_quality = '100';
			$default_crop = '0';
		}
		elseif ($name_input == 'thumb_small')
		{
			$thumbOptions = $iCparams->get('thumb_small');
			$width = is_numeric($thumbOptions[0]) ? $thumbOptions[0] : '100';
			$height = is_numeric($thumbOptions[1]) ? $thumbOptions[1] : '100';
			$quality = is_numeric($thumbOptions[2]) ? $thumbOptions[2] : '100';
			$crop = $thumbOptions[3] ? $thumbOptions[3] : false;
			$default_width = '100';
			$default_height = '100';
			$default_quality = '100';
			$default_crop = '0';
		}
		elseif ($name_input == 'thumb_xsmall')
		{
			$thumbOptions = $iCparams->get('thumb_xsmall');
			$width = is_numeric($thumbOptions[0]) ? $thumbOptions[0] : '48';
			$height = is_numeric($thumbOptions[1]) ? $thumbOptions[1] : '48';
			$quality = is_numeric($thumbOptions[2]) ? $thumbOptions[2] : '80';
			$crop = $thumbOptions[3] ? $thumbOptions[3] : true;
			$default_width = '48';
			$default_height = '48';
			$default_quality = '80';
			$default_crop = '1';
		}

		$crop_false = $crop_true = '';

		if (!empty($crop))
		{
			$crop_true = ' selected="selected"';
		}
		else
		{
			$crop_false = ' selected="selected"';
		}

		$quality_80 = '';

		if ($quality == '80')
		{
			$quality_80 =  ' selected="selected"';
		}

		$quality_values = array('100', '95', '90', '85', '80', '75', '70', '60', '50');

		$html = array();

		$html[] = '<div class="span2">' . JText::_('IC_WIDTH') . '<br />';
		$html[] = '<input type="text" class="input-mini" name="'.$this->name.'[]" value="'.$width.'" default="'.$default_width.'"/></div>';

		$html[] = '<div class="span2">' . JText::_('IC_HEIGHT') . '<br />';
		$html[] = '<input type="text" class="input-mini" name="'.$this->name.'[]" value="'.$height.'" default="'.$default_height.'"/></div>';

		$html[] = '<div class="span2">' . JText::_('IC_QUALITY') . '<br />';
		$html[] = '<select id="ThumbMedium_quality" class="input-small" name="'.$this->name.'[]" value="'.$quality.'">';

		foreach ($quality_values AS $qv)
		{
			$html[] = '<option value="'.$qv.'"';

			if ($qv == $quality)
			{
				$html[] = ' selected="selected"';
			}

			$html[] = '>' . JText::_('IC'.$qv.'') . '</option>';
		}

		$html[] = '</select></div>';

		$html[] = '<div class="span2">' . JText::_('IC_CROPPED') . '<br />';
		$html[] = '<select id="ThumbMedium_crop" class="input-small" name="' . $this->name . '[]" value="' . $crop . '">';
		$html[] = '<option value="0" ' . $crop_false . '>'.JText::_('JNO').'</option>';
		$html[] = '<option value="1" ' . $crop_true . '>'.JText::_('JYES').'</option>';
		$html[] = '</select></div>';

		return implode("\n", $html);
	}
}
models/fields/modal/startdate.php000060400000003111152455705350013100 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.10 2015-08-13
 * @since       2.0.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.filesystem.path');
jimport('joomla.form.formfield');

/**
 * Form Field to load a startdate datetime picker input
 *
 * @since	2.0.0
 */
class JFormFieldModal_startdate extends JFormField
{
	protected $type = 'modal_startdate';

	protected function getInput()
	{
		$class = ! empty($this->class) ? ' class="' . $this->class . '"' : '';

		$lang = JFactory::getLanguage();

		if ($lang->getTag() == 'fa-IR')
		{
			// Including fallback code for HTML5 non supported browsers.
			JHtml::_('jquery.framework');
			JHtml::_('script', 'system/html5fallback.js', false, true);

			$attributes = '';

			$html = JHtml::_('calendar', $this->value, $this->name, 'startdate_jalali', '%Y-%m-%d %H:%M:%S', $attributes);
		}
		else
		{
			$html ='<input type="text" id="startdate"' . $class . ' name="' . $this->name . '" value="' . $this->value . '"/>';
		}

		return $html;
	}
}
models/fields/modal/ictxt_content.php000060400000003772152455705350014007 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.5 2013-11-10
 * @since       3.2.5
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_ictxt_content extends JFormField
{
	/**
	 * The form field type.
	 */
	protected $type = 'modal_ictxt_content';

	/**
	 * Method to get the field input markup.
	 */
	protected function getInput()
	{
		jimport('joomla.application.component.helper');
		$icagendaParams = JComponentHelper::getParams('com_icagenda');

		$replace = array("jform", "[", "]", "Content");
		$name = str_replace($replace, "", $this->name);

		$tosContent = $icagendaParams->get($name.'Content', '');
		$tos_Type = $icagendaParams->get($name.'_Type', '');

		$editor = JFactory::getEditor();

		$html	= array();

		$html[] = '<div id="'.$name.'_custom"><fieldset class="span9 iCleft">';
		$html[] = $editor->display($this->name, $tosContent, "100%", "300", "300", "20", 1, null, null, null, array('mode' => 'advanced'));
		$html[] = '</fieldset></div>';

		if ($tos_Type == '2') {
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("'.$name.'_custom").style.display = "block";';
			$html[] = '</script>';
		} else {
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("'.$name.'_custom").style.display = "none";';
			$html[] = '</script>';
		}

		return implode("\n", $html);
	}
}
models/fields/modal/coordinate.php000060400000002731152455705350013243 0ustar00<?php
/** 
 *	iCagenda
 *----------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright	Copyright (C) 2012 JOOMLIC - All rights reserved.
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Jooml!C - http://www.joomlic.com
 * 
 * @update		2013-04-18
 * @version		2.1.7
 *----------------------------------------------------------------------------
*/

// No direct access to this file
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');


class JFormFieldModal_coordinate extends JFormField
{
	protected $type='modal_coordinate';
	
	protected function getInput()
	{	
		$def=JRequest::getVar('def');
		if ($def=='')$def=$this->value;
	
	
	
		$html= '
			<!--div class="clr"></div>
			<div id="map_canvas" style="width:100%; height:300px"></div><br/>
			<label>'.JText::_('COM_ICAGENDA_FORM_LBL_EVENT_GPS').'</label>&nbsp;<input name="'.$this->name.'" id="jform_coordinate" type="text" size="41" value="'.$def.'"/-->
			<div class="clr"></div>
			<!--input name="latitude" id="lat" type="text"/>
			<input name="longitude" id="lng" type="text"/-->';

		
			$html.= '<input name="'.$this->name.'" id="lat" type="text" size="41" value="'.$this->value.'"/>
		<!--script>
			document.getElementById("coords").value=document.getElementById("lat").value+", "+document.getElementById("lng").value;
		</script-->';

		return $html;
	}
}models/fields/modal/checkdnsrr.php000060400000003055152455705350013242 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.1.7 2013-08-28
 * @since       3.1.7
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_checkdnsrr extends JFormField
{
	protected $type='modal_checkdnsrr';

	protected function getInput()
	{
		$test='0';
		if (function_exists('checkdnsrr')) {
			$test='1';
		}
		if ($test!=1) {
			if(version_compare(JVERSION, '3.0', 'lt')) {
				$html='<label style="color:red"><b> '.JText::_('COM_ICAGENDA_REGISTRATION_EMAIL_CHECKDNSRR_NOT_PRESENT_1').'</b><br/>'.JText::_('COM_ICAGENDA_REGISTRATION_EMAIL_CHECKDNSRR_NOT_PRESENT_2').'</label><br/>';
			} else {
				$html='<div class="alert alert-error"><span class="icon-warning"></span><b> '.JText::_('COM_ICAGENDA_REGISTRATION_EMAIL_CHECKDNSRR_NOT_PRESENT_1').'</b><br/>'.JText::_('COM_ICAGENDA_REGISTRATION_EMAIL_CHECKDNSRR_NOT_PRESENT_2').'</div>';
			}
			return $html;
		} else {
			return false;
		}

	}
}
models/fields/modal/period.php000060400000002542152455705350012376 0ustar00<?php
/** 
 *	iCagenda
 *----------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright	Copyright (C) 2012 JOOMLIC - All rights reserved.
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Jooml!C - http://www.joomlic.com
 * 
 * @since		1.3
 *----------------------------------------------------------------------------
*/

// No direct access to this file
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');


JText::script('COM_ICAGENDA_TP_CURRENT');
JText::script('COM_ICAGENDA_TP_CLOSE');
JText::script('COM_ICAGENDA_TP_TITLE');
JText::script('COM_ICAGENDA_TP_TIME');
JText::script('COM_ICAGENDA_TP_HOUR');
JText::script('COM_ICAGENDA_TP_MINUTE');


class JFormFieldModal_period extends JFormField
{
	protected $type='modal_period';
	
	protected function getInput()
	{
		$html ='<script>
		$(function(){
			$(\'#jform_period\').datetimepicker({
				dateFormat: \'yy-mm-dd\',
				hourGrid: 4,
				minuteGrid: 10
			});
		})

		</script>
		<input type="text" id="'.$this->id.'" class="'.$this->class.'" name="'.$this->name.'" value="'.$this->value.'"/>';
		$html ='<input type="text" id="'.$this->id.'" class="'.$this->class.'" name="'.$this->name.'" value="'.$this->value.'"/>';
			
		return $html;
	}
}models/fields/modal/ictxt_article.php000060400000014612152455705350013753 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.5 2013-11-10
 * @since       3.2.5
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * Supports a modal article picker.
 */
class JFormFieldModal_ictxt_article extends JFormField
{
	/**
	 * The form field type.
	 */
	protected $type = 'modal_ictxt_article';

	/**
	 * Method to get the field input markup.
	 */
	protected function getInput()
	{
		$icagendaParams = JComponentHelper::getParams('com_icagenda');

		$replace = array("jform", "[", "]", "Article");
		$name = str_replace($replace, "", $this->name);

		$tos_Type = $icagendaParams->get($name.'_Type', '');

		$allowEdit		= ((string) $this->element['edit'] == 'true') ? true : false;
		$allowClear		= ((string) $this->element['clear'] != 'false') ? true : false;

		// Load language
		JFactory::getLanguage()->load('com_content', JPATH_ADMINISTRATOR);

		// Load the modal behavior script.
		JHtml::_('behavior.modal', 'a.modal');

		// Build the script.
		$script = array();

		// Select button script
		$script[] = '	function jSelectArticle_'.$this->id.'(id, title, catid, object) {';
		$script[] = '		document.getElementById("'.$this->id.'_id").value = id;';
		$script[] = '		document.getElementById("'.$this->id.'_name").value = title;';

		if ($allowEdit)
		{
			$script[] = '		jQuery("#'.$this->id.'_edit").removeClass("hidden");';
		}

		if ($allowClear)
		{
			$script[] = '		jQuery("#'.$this->id.'_clear").removeClass("hidden");';
		}

		$script[] = '		SqueezeBox.close();';
		$script[] = '	}';

		// Clear button script
		static $scriptClear;

		if ($allowClear && !$scriptClear)
		{
			$scriptClear = true;

			$script[] = '	function jClearArticle(id) {';
			$script[] = '		document.getElementById(id + "_id").value = "";';
			$script[] = '		document.getElementById(id + "_name").value = "'.htmlspecialchars(JText::_('COM_CONTENT_SELECT_AN_ARTICLE', true), ENT_COMPAT, 'UTF-8').'";';
			$script[] = '		jQuery("#"+id + "_clear").addClass("hidden");';
			$script[] = '		if (document.getElementById(id + "_edit")) {';
			$script[] = '			jQuery("#"+id + "_edit").addClass("hidden");';
			$script[] = '		}';
			$script[] = '		return false;';
			$script[] = '	}';
		}

		// Add the script to the document head.
		JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));

		// Setup variables for display.
		$html	= array();
		$link	= 'index.php?option=com_content&amp;view=articles&amp;layout=modal&amp;tmpl=component&amp;function=jSelectArticle_'.$this->id;

		if (isset($this->element['language']))
		{
			$link .= '&amp;forcedLanguage='.$this->element['language'];
		}

		$db	= JFactory::getDbo();
		$db->setQuery(
			'SELECT title' .
			' FROM #__content' .
			' WHERE id = '.(int) $this->value
		);

		try
		{
			$title = $db->loadResult();
		}
		catch (RuntimeException $e)
		{
			JError::raiseWarning(500, $e->getMessage());
		}

		if (empty($title))
		{
			$title = JText::_('COM_CONTENT_SELECT_AN_ARTICLE');
		}
		$title = htmlspecialchars($title, ENT_QUOTES, 'UTF-8');

		// The active article id field.
		if (0 == (int) $this->value)
		{
			$value = '';
		}
		else
		{
			$value = (int) $this->value;
		}

		// The current article display field.
		$html[] = '<div id="'.$name.'_article"><fieldset class="span9 iCleft"><div>&nbsp;</div><span class="input-append">';
		$html[] = '<input type="text" class="input-medium" style="margin:0px" id="'.$this->id.'_name" value="'.$title.'" disabled="disabled" size="35" />';

		if(version_compare(JVERSION, '3.0', 'lt')) {
			$html[] = '<a class="modal btn hasTooltip" title="'.JText::_('COM_CONTENT_CHANGE_ARTICLE').'"  href="'.$link.'&amp;'.JSession::getFormToken().'=1" rel="{handler: \'iframe\', size: {x: 800, y: 450}}">'.JText::_('JSELECT').'</a>';
		} else {
			$html[] = '<a class="modal btn hasTooltip" title="'.JHtml::tooltipText('COM_CONTENT_CHANGE_ARTICLE').'"  href="'.$link.'&amp;'.JSession::getFormToken().'=1" rel="{handler: \'iframe\', size: {x: 800, y: 450}}"><i class="icon-file"></i> '.JText::_('JSELECT').'</a>';
		}

		// Edit article button
		if ($allowEdit)
		{
			if(version_compare(JVERSION, '3.0', 'lt')) {
				$html[] = '<a class="btn hasTooltip'.($value ? '' : ' hidden').'" href="index.php?option=com_content&view=article&layout=edit&id=' . $value. '" target="_blank" title="'.JText::_('COM_CONTENT_EDIT_ARTICLE').'" alt="'.JText::_('COM_CONTENT_EDIT_ARTICLE').'" >' . JText::_('JACTION_EDIT') . '</a>';
			} else {
				$html[] = '<a class="btn hasTooltip'.($value ? '' : ' hidden').'" href="index.php?option=com_content&layout=modal&tmpl=component&task=article.edit&id=' . $value. '" target="_blank" title="'.JHtml::tooltipText('COM_CONTENT_EDIT_ARTICLE').'" ><span class="icon-edit"></span> ' . JText::_('JACTION_EDIT') . '</a>';
			}
		}

		// Clear article button
		if ($allowClear)
		{
			if(version_compare(JVERSION, '3.0', 'lt')) {
				$html[] = '<a id="'.$this->id.'_clear" class="btn'.($value ? '' : ' hidden').'" onclick="return jClearArticle(\''.$this->id.'\')">' . JText::_('JCLEAR') . '</a>';
			} else {
				$html[] = '<button id="'.$this->id.'_clear" class="btn'.($value ? '' : ' hidden').'" onclick="return jClearArticle(\''.$this->id.'\')"><span class="icon-remove"></span> ' . JText::_('JCLEAR') . '</button>';
			}
		}

		$html[] = '</span>';

		// class='required' for client side validation
		$class = '';
		if ($this->required)
		{
			$class = ' class="required modal-value"';
		}


		$html[] = '<input type="hidden" id="'.$this->id.'_id"'.$class.' name="'.$this->name.'" value="'.$value.'" /></fieldset></div>';

		if ($tos_Type == '1') {
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("'.$name.'_article").style.display = "block";';
			$html[] = '</script>';
		} else {
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("'.$name.'_article").style.display = "none";';
			$html[] = '</script>';
		}


		return implode("\n", $html);
	}
}
models/fields/modal/icmulti_checkbox.php000060400000005042152455705350014426 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.6 2013-11-21
 * @since       3.2.6
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_icmulti_checkbox extends JFormField
{
	protected $type='modal_icmulti_checkbox';

	protected function getLabel()
	{
	   return ' ';
	}

	protected function getInput()
	{

		$Explode = explode('_', $this->name);
		$TypeName = $Explode[0].']';

		$replace = array("jform", "[params]", "[", "]");
		$name = str_replace($replace, "", $TypeName);

		$selected = $this->value;
		if (!is_array($selected)) $selected = array();

		$check_1 = ' checked="checked"';
		$check_2 = ' checked="checked"';

		if (in_array('1', $selected)) {
			$check_1 = ' checked="checked"';
		} else {
			$check_1 = '';
		}
		if (in_array('2', $selected)) {
			$check_2 = ' checked="checked"';
		} else {
			$check_2 = '';
		}

		$Type_none = $name.'_none';
		$Type_checkbox = $name.'_checkbox';

		$html	= array();

		$html[] = '<div id="'.$Type_checkbox.'"><fieldset class="span9 iCleft">';
//		$html[] = '<input type="text" value="'.$this->value.'" name="'.$this->name.'"/>';
		$html[] = '<div style="display: inline-block"><input type="checkbox" value="1" name="'.$this->name.'[]"'.$check_1.'/>&nbsp;'.JText::_( 'ICTITLE' ).'</div>';
		$html[] = '<div style="display: inline-block"><input type="checkbox" value="2" name="'.$this->name.'[]"'.$check_2.'/>&nbsp;'.JText::_( 'ICDESC' ).'</div>';
		$html[] = '</fieldset></div>';

		$html[] = '<script type="text/javascript">';
		$html[] = 'document.getElementById("'.$Type_checkbox.'").style.display = "none";';
		$html[] = 'if (typeset == 1) {';
		$html[] = 'document.getElementById("'.$Type_checkbox.'").style.display = "block";';
		$html[] = '}';
//		$html[] = 'if (typeset == 0) {';
//		$html[] = 'document.getElementById("'.$Type_checkbox.'").style.display = "none";';
//		$html[] = '}';
		$html[] = '</script>';

		return implode("\n", $html);
	}
}
models/fields/modal/icvalue_opt.php000060400000005524152455705350013431 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.9 2013-12-22
 * @since       3.2.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_icvalue_opt extends JFormField
{
	protected $type='modal_icvalue_opt';

	protected function getInput()
	{

		$replace = array("jform", "params", "[", "]");
		$name = str_replace($replace, "", $this->name);

		$Type = $this->value;

		if ($name == 'calendarclosebtn') {
			$default_text = JText::_( 'JTOOLBAR_DEFAULT' );
		} else {
			$default_text = JText::_( 'JGLOBAL_USE_GLOBAL' );
		}

		$Type_default = $name.'_default';
		$Type_content = $name.'_custom';

		$class_default = '';
		$class_custom = '';
		$checked_default = ' checked="checked"';
		$checked_custom = '';
		if ($Type == '0') {
			$class_default = 'btn-primary';
			$checked_default = ' checked="checked"';
			$checked_custom = '';
		}
		elseif ($Type == '1') {
			$class_custom = 'btn-success';
			$checked_default = '';
			$checked_custom = ' checked="checked"';
		} else {
			$class_default = 'btn-primary';
			$checked_default = ' checked="checked"';
			$checked_custom = '';
		}

		$html	= array();


		$html[]	= '<fieldset class="radio btn-group">';
		$html[]	= '<label class="'.$class_default.'">'.$default_text.'<input type="radio"  id="'.$name.'_0" name="'.$this->name.'" value="0"  onClick="icdefault_'.$name.'();"'.$checked_default.' /></label>';
		$html[]	= '<label class="'.$class_custom.'">'.JText::_( 'COM_ICAGENDA_LBL_CUSTOM_VALUE' ).'<input type="radio"  id="'.$name.'_1" name="'.$this->name.'" value="1"  onClick="iccustom_'.$name.'();"'.$checked_custom.' /></label>';
		$html[]	= '</fieldset>';


		$html[]	= '<script type="text/javascript">';
		$html[]	= 'var typeset = '.$Type.';';
		$html[]	= 'function icdefault_'.$name.'()';
		$html[]	= '{';
		$html[]	= 'document.getElementById("'.$Type_content.'").style.display = "none";';
		$html[]	= '$("#'.$name.'_0").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= 'function iccustom_'.$name.'()';
		$html[]	= '{';
		$html[]	= 'document.getElementById("'.$Type_content.'").style.display = "block";';
		$html[]	= '$("#'.$name.'_1").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= '</script>';

		return implode("\n", $html);
	}
}
models/fields/modal/tos_type.php000060400000010641152455705350012761 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.0 2013-09-18
 * @since       3.2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_tos_type extends JFormField
{
	protected $type='modal_tos_type';

	protected function getInput()
	{
		jimport('joomla.application.component.helper');

		$icagendaParams = JComponentHelper::getParams('com_icagenda');
		$tos_Type = $icagendaParams->get('tos_Type', '');
		$class_default = '';
		$class_article = '';
		$class_custom = '';
		$checked_default = '';
		$checked_article = '';
		$checked_custom = '';
		if ($tos_Type == '') {
			$class_default = 'btn-success';
			$checked_default = ' checked="checked"';
			$checked_article = '';
			$checked_custom = '';
		}
		elseif ($tos_Type == '1') {
			$class_article = 'btn-success';
			$checked_default = '';
			$checked_article = ' checked="checked"';
			$checked_custom = '';
		}
		elseif ($tos_Type == '2') {
			$class_custom = 'btn-success';
			$checked_default = '';
			$checked_article = '';
			$checked_custom = ' checked="checked"';
		} else {
			$class_default = 'btn-success';
			$checked_default = ' checked="checked"';
			$checked_article = '';
			$checked_custom = '';
		}

		$html	= array();
		$html[]	= '<fieldset class="radio btn-group">';
		$html[]	= '<label class="'.$class_default.'">'.JText::_( 'IC_DEFAULT' ).'<input type="radio"  id="tos_Type0" name="'.$this->name.'" value=""  onClick="tosdefault();"'.$checked_default.' /></label>';
		$html[]	= '<label class="'.$class_article.'">'.JText::_( 'IC_ARTICLE' ).'<input type="radio"  id="tos_Type1" name="'.$this->name.'" value="1"  onClick="tosarticle();"'.$checked_article.' /></label>';
		$html[]	= '<label class="'.$class_custom.'">'.JText::_( 'IC_CUSTOM_TEXT' ).'<input type="radio"  id="tos_Type2" name="'.$this->name.'" value="2"  onClick="toscustom();"'.$checked_custom.' /></label>';
		$html[]	= '</fieldset>';



		$html[]	= '<script type="text/javascript">';
//		$html[]	= 'var tos_Type0 = document.getElementById("tos_Type0").checked;';
//		$html[]	= 'var tos_Type1 = document.getElementById("tos_Type1").checked;';
//		$html[]	= 'var tos_Type2 = document.getElementById("tos_Type2").checked;';
//		$html[]	= 'if(tos_Type0==true)';
//		$html[]	= '{';
//		$html[]	= 'document.getElementByName("tos_Type").value = "";';
//		$html[]	= '$("#tos_Type1").attr("checked", "checked");';
//		$html[]	= '}';
//		$html[]	= 'if(tos_Type1==true)';
//		$html[]	= '{';
//		$html[]	= 'document.getElementByName("tos_Type").value = 1;';
//		$html[]	= '}';
//		$html[]	= 'if(tos_Type2==true)';
//		$html[]	= '{';
//		$html[]	= 'document.getElementByName("tos_Type").value = 2;';
//		$html[]	= '}';
//		$html[]	= '';
//		$html[]	= '';
		$html[]	= 'function tosdefault()';
		$html[]	= '{';
		$html[]	= 'document.getElementById("ic_default").style.display = "block";';
		$html[]	= 'document.getElementById("ic_article").style.display = "none";';
		$html[]	= 'document.getElementById("tos_custom").style.display = "none";';
		$html[]	= '$("#tos_Type0").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= 'function tosarticle()';
		$html[]	= '{';
		$html[]	= 'document.getElementById("ic_default").style.display = "none";';
		$html[]	= 'document.getElementById("ic_article").style.display = "block";';
		$html[]	= 'document.getElementById("tos_custom").style.display = "none";';
		$html[]	= '$("#tos_Type1").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= 'function toscustom()';
		$html[]	= '{';
		$html[]	= 'document.getElementById("ic_default").style.display = "none";';
		$html[]	= 'document.getElementById("ic_article").style.display = "none";';
		$html[]	= 'document.getElementById("tos_custom").style.display = "block";';
		$html[]	= '$("#tos_Type2").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= '</script>';

		return implode("\n", $html);
	}
}
models/fields/modal/cat.php000060400000007206152455705350011665 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.1 2015-01-03
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_cat extends JFormField
{
	protected $type='modal_cat';

	protected function getInput()
	{
		$app		= JFactory::getApplication();
		$session	= JFactory::getSession();

		// Initialize some field attributes.
		$class		= !empty($this->class) ? ' class="' . $this->class . '"' : '';

		if ($app->isAdmin())
		{
			$iCparams = JComponentHelper::getParams('com_icagenda');
		}
		else
		{
			$iCparams	= $app->getParams();
		}

		$orderby_catlist		= $iCparams->get('orderby_catlist', 'alpha');
		$default_catlist		= $iCparams->get('default_catlist', '');

		$admin_status_catlist	= $iCparams->get('admin_status_catlist', '1');
		$site_status_catlist	= $iCparams->get('site_status_catlist', '1');

		$admin_status_array		= is_array($admin_status_catlist) ? $admin_status_catlist : array($admin_status_catlist);
		$site_status_array		= is_array($site_status_catlist) ? $site_status_catlist : array($site_status_catlist);

		$admin_status			= implode(',', $admin_status_array);
		$site_status			= implode(',', $site_status_array);

		$catid = $session->get('ic_submit_catid', '');

		// Query List of Categories
		$db		= JFactory::getDbo();
		$query	= $db->getQuery(true);
		$query->select('c.ordering, c.title, c.state, c.id')
			->from('`#__icagenda_category` AS c');

		// Not display Trashed Categories
		$query->where('c.state <> -2');

		if ($app->isAdmin())
		{
			$query->where($db->qn('c.state') . ' IN (' . $admin_status . ') ');
		}
		else
		{
			$query->where($db->qn('c.state') . ' IN (' . $site_status . ') ');
		}

		if ($orderby_catlist == 'alpha')
		{
			$query->order('c.title ASC');
		}
		elseif ($orderby_catlist == 'ralpha')
		{
			$query->order('c.title DESC');
		}
		elseif ($orderby_catlist == 'order')
		{
			$query->order('c.ordering ASC');
		}

		$db->setQuery($query);
		$categories = $db->loadObjectList();

		$html = '<select id="' . $this->id . '" name="' . $this->name . '"' . $class . '>';

		$html.= ' <option value="">' . JTEXT::_('JOPTION_SELECT_CATEGORY') . '</option>';

		foreach ($categories as $c)
		{
			$html.= '<option value="' . $c->id . '"';

			if ($c->state == '0')
			{
				$html.= ' style="color:red"';
//				$c->title = '[' . $c->title . '] (' . JTEXT::_('JUNPUBLISHED') . ')';
				$c->title = '[' . $c->title . ']';
			}
			elseif ($c->state == '2')
			{
				$html.= ' style="color:orange"';
//				$c->title = $c->title . ' (' . JTEXT::_('JARCHIVED') . ')';
				$c->title = '[' . $c->title . ']';
			}

			if ($this->value == $c->id)
			{
				$html.= ' selected="selected"';
			}

			if ($catid == $c->id)
			{
				$html.= ' selected="selected"';
			}

			if (empty($this->value) && empty($catid)
				&& ($c->id == $default_catlist))
			{
				$html.= ' selected="selected"';
			}

			$html.= '>' . $c->title . '</option>';
		}

		$html.= '</select>';

		// clear the data so we don't process it again
		$session->clear('ic_submit_catid');

		return $html;
	}
}
models/fields/modal/enddate.php000060400000003130152455705350012512 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.10 2015-08-13
 * @since       2.0.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

/**
 * Form Field to load a enddate datetime picker input
 *
 * @since	2.0.0
 */
class JFormFieldModal_enddate extends JFormField
{
	protected $type = 'modal_enddate';

	protected function getInput()
	{
		$class = ! empty($this->class) ? ' class="' . $this->class . '"' : '';

		$lang = JFactory::getLanguage();

		if ($lang->getTag() == 'fa-IR')
		{
			// Including fallback code for HTML5 non supported browsers.
			JHtml::_('jquery.framework');
			JHtml::_('script', 'system/html5fallback.js', false, true);

			$attributes = '';

			$html = JHtml::_('calendar', $this->value, $this->name, 'enddate_jalali', '%Y-%m-%d %H:%M:%S', $attributes);
		}
		else
		{
			$html ='<input type="text" id="enddate"' . $class . ' name="' . $this->name . '" value="' . $this->value . '"/>';
		}

		return $html;
	}
}
models/fields/modal/icalert_msg.php000060400000012410152455705350013400 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.3.3 2014-04-12
 * @since       3.2.8
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_icalert_msg extends JFormField
{
	protected $type='modal_icalert_msg';

	protected function getLabel()
	{
		return ' ';
	}

	protected function getInput()
	{
		$replace = array("jform", "params", "[", "]");
		$name_input = str_replace($replace, "", $this->name);
		$get_error = explode('_', $name_input);
		$error = $get_error['1'];
		$name = $get_error['0'];

		$url=JPATH_SITE.'/components/com_icagenda/themes/packs';

		// Set Function to condition to be checked
		$events_php=$this->getList($url);
		$cal_date=$this->getCalDate($url);

		if ($name == 'eventsfile')
		{
			$list = $events_php;
			$doc_url = 'http://www.icagenda.com/theme-pack-upgrade/3-2-8-new-option-all-dates';
			$parent_field = 'datesDisplay';
			$action_value = '1';
		}
		elseif ($name == 'caldate')
		{
			$list = $cal_date;
			$doc_url = 'http://www.icagenda.com/theme-pack-upgrade/3-3-3-change-cal-date-to-data-cal-date';
			$parent_field = 'setTodayTimezone';
			$action_value = '';
		}

		$span_style	= 'input-xlarge';

		if (version_compare(JVERSION, '3.0', 'lt')) {
			$listP		= implode('<br /> - ', $list);
			$setlist	= ' - '.$listP.' ';
		} else {
			$listP		= implode('</li><li>', $list);
			$setlist	= '<ul><li>'.$listP.'</li></ul>';
//			$span_style	= 'span8';
		}

		$html	= array();

		if (count($list) >= 1)
		{
			$html[]	= '<div id="icalert_'.$this->id.'" class="'.$span_style.' alert alert-error" style="clear:both">';
			$html[]	=  '<b>'.JText::_( $this->title ).'</b>';
			$html[]	= '<p>';
			$html[]	=  JText::_( $this->description ) . ' <a class="modal" rel="{size: {x: 700, y: 500}, handler:\'iframe\'}" href="'.$doc_url.'">' .JText::_( 'IC_MORE_INFORMATION' ). '</a>';
			$html[]	= '</p>';

			if ($this->id == 'jform_params_'.$name.'_error')
			{
				$html[]	= '<p>';
				$html[]	= '<b><i>'.JText::_( 'COM_ICAGENDA_EVENTS_PHPFILE_MISSING_PACKS_LIST' ).'</i></b><br />';
				$html[]	= $setlist;
				$html[]	= '</p>';
			}
			$html[]	= '</div>';

			$html[] = '<script type="text/javascript">';
			$html[]	= '		var icdisplay = document.getElementById("jform_params_'.$parent_field.'").value;';
			$html[] = '		document.getElementById("icalert_'.$this->id.'").style.display = "none";';
			$html[] = '		if (icdisplay == "'.$action_value.'") {';
			$html[] = '			document.getElementById("icalert_'.$this->id.'").style.display = "block";';
			$html[] = '		}';
			$html[]	= '	function icalert()';
			$html[]	= '	{';
			$html[]	= '		var icdisplay = document.getElementById("jform_params_'.$parent_field.'").value;';
			$html[] = '		document.getElementById("icalert_'.$this->id.'").style.display = "none";';
			$html[] = '		if (icdisplay == "'.$action_value.'") {';
			$html[] = '			document.getElementById("icalert_'.$this->id.'").style.display = "block";';
			$html[] = '		}';
			$html[]	= '	}';
			$html[] = '</script>';
		}

		return implode("\n", $html);
	}

	/**
	 * Function to check if the file 'THEME_events.php' exists in each Theme Pack
	 */
	function getList($dirname)
	{
		$arrayfiles = Array();

		if(file_exists($dirname))
		{
			$handle = opendir($dirname);

			while (false !== ($file = readdir($handle)))
			{
				if ( !is_file($dirname.$file)
					&& $file!= '.'
					&& $file!='..'
					&& $file!='index.php'
					&& $file!='index.html'
					&& $file!='.DS_Store'
					&& $file!='.thumbs' )
				{
					if (!file_exists($dirname.'/'.$file.'/'.$file.'_events.php'))
					{
						array_push($arrayfiles,$file);
					}
				}
			}
			$handle = closedir($handle);
		}
		sort($arrayfiles);

		return $arrayfiles;
	}

	/**
	 * Function to check if 'data-cal-date' is defined inside the file 'THEME_day.php' for each Theme Pack.
	 * Returns an alert if deprecated 'cal_date' found.
	 */
	function getCalDate($dirname)
	{
		$arrayfiles = Array();

		if (ini_get('allow_url_fopen'))
		{
			if (file_exists($dirname))
			{
				$handle = opendir($dirname);

				while (false !== ($file = readdir($handle)))
				{
					if ( !is_file($dirname.$file)
						&& $file!= '.'
						&& $file!='..'
						&& $file!='index.php'
						&& $file!='index.html'
						&& $file!='.DS_Store'
						&& $file!='.thumbs' )
					{
						$t_day = $dirname.'/'.$file.'/'.$file.'_day.php';
						$file_t_day = file_get_contents($t_day);

						if (!strpos($file_t_day, "cal_date")
							&& !strpos($file_t_day, "data-cal-date"))
						{
							array_push($arrayfiles,$file);
						}
						elseif (strpos($file_t_day, "cal_date"))
						{
							array_push($arrayfiles,$file);
						}
					}
				}
			}
			$handle = closedir($handle);
		}
		sort($arrayfiles);

		return $arrayfiles;
	}

}
models/fields/modal/ictext_content.php000060400000004165152455705350014151 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.0.1 2013-09-22
 * @since       3.2.0.1
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_ictext_content extends JFormField
{
	protected $type='modal_ictext_content';

	protected function getInput()
	{

		jimport('joomla.application.component.helper');
		$icagendaParams = JComponentHelper::getParams('com_icagenda');

		$Explode = explode('_', $this->name);
		$TypeName = $Explode[0].']';

		$replace = array("jform", "[", "]");
		$name = str_replace($replace, "", $TypeName);
		$icContent = $icagendaParams->get($name.'_Content', '');

		$Type = $icagendaParams->get($name, '');

		$Type_default = $name.'_default';
		$Type_content = $name.'_custom';


		$editor = JFactory::getEditor();

		$html	= array();

		$html[] = '<div id="'.$Type_content.'"><fieldset class="span9 iCleft">';
		$html[] = $editor->display($this->name, $icContent, "100%", "300", "300", "20", 1, null, null, null, array('mode' => 'advanced'));
		$html[] = '</fieldset></div>';

		if ($Type == '2') {
			$html[] = '<script type="text/javascript">';
//			$html[] = 'document.getElementById("'.$Type_default.'").style.display = "none";';
			$html[] = 'document.getElementById("'.$Type_content.'").style.display = "block";';
			$html[] = '</script>';
		} else {
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("'.$Type_content.'").style.display = "none";';
			$html[] = '</script>';
		}

		return implode("\n", $html);
	}
}
models/fields/modal/iclink_type.php000060400000010042152455705350013420 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.1 2015-02-27
 * @since       3.3.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_iclink_type extends JFormField
{
	protected $type='modal_iclink_type';

	protected function getInput()
	{
		jimport('joomla.application.component.helper');

		$location = JRequest::getVar('option', 'com_config');

		if ($location != 'com_config')
		{
			$default_text	= JText::_('JGLOBAL_USE_GLOBAL');
		}
		else
		{
			$default_text = JText::_("IC_DEFAULT");
		}

		// Get Type value
		$Type			= isset($this->value) ? $this->value : '';

		// Clean jform name
		$replace		= array("jform", "params", "[", "]");
		$name			= str_replace($replace, "", $this->name);

		$Type_default	= $name . '_default';
		$Type_article	= $name . '_article';
		$Type_url		= $name . '_url';

		// Set Var type, to get selected option
		JRequest::setVar('type', $Type);

		// Article
		if ($Type == '1')
		{
			$class_default		= '';
			$class_article		= 'btn-success';
			$class_url			= '';
			$checked_default	= '';
			$checked_article	= ' checked="checked"';
			$checked_url		= '';
		}

		// URL
		elseif ($Type == '2')
		{
			$class_default		= '';
			$class_article		= '';
			$class_url			= 'btn-success';
			$checked_default	= '';
			$checked_article	= '';
			$checked_url		= ' checked="checked"';
		}

		// iCagenda default
		else
		{
			$class_default		= 'btn-primary';
			$class_article		= '';
			$class_url			= '';
			$checked_default	= ' checked="checked"';
			$checked_article	= '';
			$checked_url		= '';
		}

		$html	= array();
		$html[]	= '<fieldset class="radio btn-group">';
		$html[]	= '<label class="' . $class_default . '">' . $default_text . '<input type="radio"  id="' . $name . '_0" name="' . $this->name . '" value=""  onClick="icdefault_' . $name . '();"' . $checked_default . ' /></label>';
		$html[]	= '<label class="' . $class_article . '">' . JText::_( 'COM_ICAGENDA_REGISTRATION_LINK_ARTICLE' ) . '<input type="radio"  id="' . $name . '_1" name="' . $this->name . '" value="1"  onClick="icarticle_' . $name . '();"' . $checked_article . ' /></label>';
		$html[]	= '<label class="' . $class_url . '">' . JText::_( 'COM_ICAGENDA_REGISTRATION_LINK_URL' ) . '<input type="radio"  id="' . $name . '_2" name="' . $this->name . '" value="2"  onClick="icurl_' . $name . '();"' . $checked_url . ' /></label>';
		$html[]	= '</fieldset>';

		// Script
		$html[]	= '<script type="text/javascript">';
		$html[]	= 'function icdefault_' . $name . '()';
		$html[]	= '{';
		$html[]	= 'document.getElementById("' . $Type_article . '").style.display = "none";';
		$html[]	= 'document.getElementById("' . $Type_url . '").style.display = "none";';
//		$html[]	= '$("#'.$name.'_0").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= 'function icarticle_' . $name . '()';
		$html[]	= '{';
		$html[]	= 'document.getElementById("' . $Type_article . '").style.display = "block";';
		$html[]	= 'document.getElementById("' . $Type_url . '").style.display = "none";';
//		$html[]	= '$("#'.$name.'_1").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= 'function icurl_' . $name . '()';
		$html[]	= '{';
		$html[]	= 'document.getElementById("' . $Type_article . '").style.display = "none";';
		$html[]	= 'document.getElementById("' . $Type_url . '").style.display = "block";';
//		$html[]	= '$("#'.$name.'_2").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= '</script>';

		return implode("\n", $html);
	}
}
models/fields/modal/index.html000060400000000032152455705350012370 0ustar00<html><body></body></html>models/fields/modal/iclink_article.php000060400000016067152455705350014077 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.1 2015-02-27
 * @since       3.3.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

/**
 * Supports a modal article picker.
 */
class JFormFieldModal_iclink_article extends JFormField
{
	/**
	 * The form field type.
	 */
	protected $type = 'modal_iclink_article';

	/**
	 * Method to get the field input markup.
	 */
	protected function getInput()
	{
		jimport('joomla.application.component.helper');
		$icagendaParams	= JComponentHelper::getParams('com_icagenda');

		$Explode		= explode('_', $this->name);
		$TypeName		= $Explode[0] . ']';

		$replace		= array("jform", "params", "[", "]");
		$name			= str_replace($replace, "", $TypeName);

//		$Type = JRequest::getVar('type');

		$allowEdit		= ((string) $this->element['edit'] == 'true') ? true : false;
		$allowClear		= ((string) $this->element['clear'] != 'false') ? true : false;

		// Load language
		JFactory::getLanguage()->load('com_content', JPATH_ADMINISTRATOR);

		// Load the modal behavior script.
		JHtml::_('behavior.modal', 'a.modal');

		// Build the script.
		$script = array();

		// Select button script
		$script[] = '	function jSelectArticle_'.$this->id.'(id, title, catid, object) {';
		$script[] = '		document.getElementById("'.$this->id.'_id").value = id;';
		$script[] = '		document.getElementById("'.$this->id.'_name").value = title;';

		if ($allowEdit)
		{
			$script[] = '		jQuery("#'.$this->id.'_edit").removeClass("hidden");';
		}

		if ($allowClear)
		{
			$script[] = '		jQuery("#'.$this->id.'_clear").removeClass("hidden");';
		}

		$script[] = '		SqueezeBox.close();';
		$script[] = '	}';

		// Clear button script
		static $scriptClear;

		if ($allowClear && !$scriptClear)
		{
			$scriptClear = true;

			$script[] = '	function jClearArticle(id) {';
			$script[] = '		document.getElementById(id + "_id").value = "";';
			$script[] = '		document.getElementById(id + "_name").value = "'.htmlspecialchars(JText::_('COM_CONTENT_SELECT_AN_ARTICLE', true), ENT_COMPAT, 'UTF-8').'";';
			$script[] = '		jQuery("#"+id + "_clear").addClass("hidden");';
			$script[] = '		if (document.getElementById(id + "_edit")) {';
			$script[] = '			jQuery("#"+id + "_edit").addClass("hidden");';
			$script[] = '		}';
			$script[] = '		return false;';
			$script[] = '	}';
		}

		// Add the script to the document head.
		JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));

		// Setup variables for display.
		$html	= array();
		$link	= 'index.php?option=com_content&amp;view=articles&amp;layout=modal&amp;tmpl=component&amp;function=jSelectArticle_'.$this->id;

		if (isset($this->element['language']))
		{
			$link .= '&amp;forcedLanguage='.$this->element['language'];
		}

		$db	= JFactory::getDbo();
		$db->setQuery(
			'SELECT title' .
			' FROM #__content' .
			' WHERE id = '.(int) $this->value
		);

		try
		{
			$title = $db->loadResult();
		}
		catch (RuntimeException $e)
		{
			JError::raiseWarning(500, $e->getMessage());
		}

		if (empty($title))
		{
			$title = JText::_('COM_CONTENT_SELECT_AN_ARTICLE');
		}
		$title = htmlspecialchars($title, ENT_QUOTES, 'UTF-8');

		// The active article id field.
		if (0 == (int) $this->value)
		{
			$value = '';
		}
		else
		{
			$value = (int) $this->value;
		}

		// The current article display field.
		$html[] = '<div id="'.$name.'_article"><fieldset class="span9 iCleft"><div>&nbsp;</div><span class="input-append">';
		$html[] = '<input type="text" class="input-medium" style="margin:0px" id="'.$this->id.'_name" value="'.$title.'" disabled="disabled" size="35" />';

		if(version_compare(JVERSION, '3.0', 'lt'))
		{
			$html[] = '<a class="modal btn hasTooltip" title="'.JText::_('COM_CONTENT_CHANGE_ARTICLE').'"  href="'.$link.'&amp;'.JSession::getFormToken().'=1" rel="{handler: \'iframe\', size: {x: 800, y: 450}}">'.JText::_('JSELECT').'</a>';
		}
		else
		{
			$html[] = '<a class="modal btn hasTooltip" title="'.JHtml::tooltipText('COM_CONTENT_CHANGE_ARTICLE').'"  href="'.$link.'&amp;'.JSession::getFormToken().'=1" rel="{handler: \'iframe\', size: {x: 800, y: 450}}"><i class="icon-file"></i> '.JText::_('JSELECT').'</a>';
		}

		// Edit article button
		if ($allowEdit)
		{
			if(version_compare(JVERSION, '3.0', 'lt'))
			{
				$html[] = '<a class="btn hasTooltip'.($value ? '' : ' hidden').'" href="index.php?option=com_content&view=article&layout=edit&id=' . $value. '" target="_blank" title="'.JText::_('COM_CONTENT_EDIT_ARTICLE').'" alt="'.JText::_('COM_CONTENT_EDIT_ARTICLE').'" >' . JText::_('JACTION_EDIT') . '</a>';
			}
			else
			{
				$html[] = '<a class="btn hasTooltip'.($value ? '' : ' hidden').'" href="index.php?option=com_content&layout=modal&tmpl=component&task=article.edit&id=' . $value. '" target="_blank" title="'.JHtml::tooltipText('COM_CONTENT_EDIT_ARTICLE').'" ><span class="icon-edit"></span> ' . JText::_('JACTION_EDIT') . '</a>';
			}
		}

		// Clear article button
		if ($allowClear)
		{
			if(version_compare(JVERSION, '3.0', 'lt'))
			{
				$html[] = '<a id="'.$this->id.'_clear" class="btn'.($value ? '' : ' hidden').'" onclick="return jClearArticle(\''.$this->id.'\')">' . JText::_('JCLEAR') . '</a>';
			}
			else
			{
				$html[] = '<button id="'.$this->id.'_clear" class="btn'.($value ? '' : ' hidden').'" onclick="return jClearArticle(\''.$this->id.'\')"><span class="icon-remove"></span> ' . JText::_('JCLEAR') . '</button>';
			}
		}

		$html[] = '</span>';

		// class='required' for client side validation
		$class = '';
		if ($this->required)
		{
			$class = ' class="required modal-value"';
		}


		$html[] = '<input type="hidden" id="'.$this->id.'_id"'.$class.' name="'.$this->name.'" value="'.$value.'" /></fieldset></div>';

//		if ($Type == '1')
//		{
//			$html[] = '<script type="text/javascript">';
//			$html[] = 'document.getElementById("'.$name.'_article").style.display = "block";';
//			$html[] = 'document.getElementById("'.$name.'_url").style.display = "none";';
//			$html[] = '</script>';
//		}
//		elseif ($Type == '2')
//		{
//			$html[] = '<script type="text/javascript">';
//			$html[] = 'document.getElementById("'.$name.'_article").style.display = "none";';
//			$html[] = 'document.getElementById("'.$name.'_url").style.display = "block";';
//			$html[] = '</script>';
//		}
//		else
//		{
//			$html[] = '<script type="text/javascript">';
//			$html[] = 'document.getElementById("'.$name.'_article").style.display = "none";';
//			$html[] = 'document.getElementById("'.$name.'_url").style.display = "none";';
//			$html[] = '</script>';
//		}

		return implode("\n", $html);
	}
}
models/fields/modal/tos_content.php000060400000004037152455705350013454 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.0 2013-09-18
 * @since       3.2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_tos_content extends JFormField
{
	protected $type='modal_tos_content';

//	protected function getLabel()
//	{
//	   return ' ';
//	}

	protected function getInput()
	{

		jimport('joomla.application.component.helper');
		$icagendaParams = JComponentHelper::getParams('com_icagenda');
		$tosContent = $icagendaParams->get('tosContent', '');
		$tos_Type = $icagendaParams->get('tos_Type', '');


		$editor = JFactory::getEditor();
//		$editor = JEditor::getEditor();

		$html	= array();

		$html[] = '<div id="tos_custom"><fieldset class="span9 iCleft">';
		$html[] = $editor->display($this->name, $tosContent, "100%", "300", "300", "20", 1, null, null, null, array('mode' => 'advanced'));
		$html[] = '</fieldset></div>';

		if ($tos_Type == '2') {
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("ic_default").style.display = "none";';
			$html[] = 'document.getElementById("ic_article").style.display = "none";';
			$html[] = 'document.getElementById("tos_custom").style.display = "block";';
			$html[] = '</script>';
		} else {
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("tos_custom").style.display = "none";';
			$html[] = '</script>';
		}

		return implode("\n", $html);
	}
}
models/fields/modal/evt.php000060400000030331152455705350011707 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.9 2015-08-01
 * @since       3.3.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_evt extends JFormField
{
	protected $type = 'modal_evt';

	protected function getInput()
	{
		$jinput		= JFactory::getApplication()->input;
		$view		= $jinput->get('view');
		$id			= $jinput->get('id', null);
		$eventid	= $jinput->get('eventid', $this->value);

		$class		= isset($this->class) ? ' class="' . $this->class . '"' : '';

		$typeReg = $db_date = $db_period = $db_date_is_valid = '';

		$db		= JFactory::getDbo();
		$query	= $db->getQuery(true);
		$query->select('e.title, e.state, e.id, e.weekdays, e.params')
			->from('`#__icagenda_events` AS e');

		if ($view == 'mail')
		{
			// Join Total of registrations
			$query->select('r.count AS registered');
			$sub_query = $db->getQuery(true);
			$sub_query->select('r.state, r.date AS reg_date, r.period AS reg_period, r.eventid, sum(r.people) AS count');
			$sub_query->from('`#__icagenda_registration` AS r');
			$sub_query->where('r.state = 1');
			$sub_query->where('r.email <> ""');
			$sub_query->group('r.eventid');
			$query->leftJoin('(' . (string) $sub_query . ') AS r ON (e.id = r.eventid)');
			$query->where('r.count > 0');
		}

		$query->order('e.title ASC');

		$db->setQuery($query);
		$events	= $db->loadObjectList();

		if ($eventid != 0 && $view == 'registration')
		{
			$query	= $db->getQuery(true);
			$query->select('r.date AS reg_date, r.period AS reg_period')
				->from('`#__icagenda_registration` AS r');
			$query->where('r.eventid = ' . (int) $eventid);
			$query->where('r.id = ' . (int) $id);
			$db->setQuery($query);
			$reg	= $db->loadObject();
			$db_date			= $reg->reg_date;
			$db_date_is_valid	= iCDate::isDate($db_date);
			$db_period			= $reg->reg_period;
		}

		// User state used in Newsletter
		$data				= JFactory::getApplication()->getUserState('com_icagenda.mail.data', array());
		$session_eventid	= isset($data['eventid']) ? $data['eventid'] : $eventid;
		$session_date		= isset($data['date']) ? $data['date'] : '';

		$html = '<div style="margin-bottom: 10px">';
		$html.= '<select id="' . $this->id . '_id"' . $class . ' name="' .
			$this->name . '">';

		$value = isset($this->value) ? $this->value : '';

		$html.= '<option value=""';

		if ( ! $id || ! $this->value)
		{
			$html.= ' selected="selected"';
		}

		$html.= '>' . JText::_('COM_ICAGENDA_SELECT_EVENT') . '</option>';

		foreach ($events as $e)
		{
			if ($e->state == '1')
			{
				$html.= '<option value="' . $e->id . '"';

				if ($eventid == $e->id)
				{
					$eventparam			= new JRegistry($e->params);
					$typeReg			= $eventparam->get('typeReg', 1);
					$weekdays			= $e->weekdays;

					$html.= ' selected="selected"';
				}

				if ($view == 'registration')
				{
					$html.= '>' . $e->title . ' (id:' . $e->id . ')</option>';
				}
				else
				{
					$html.= '>' . $e->title . ' (&#10003;' . $e->registered . ' - id:' . $e->id . ')</option>';
				}
			}
			elseif ($eventid == $e->id)
			{
				$html.= '<option value="' . $value . '"';
				$html.= ' selected="selected"';
				$html.= '>' . JText::_('COM_ICAGENDA_REGISTRATION_EVENT_NOT_PUBLISHED') . '</option>';
			}
		}

		$html.= '</select>';
		$html.= '</div>';

		$id_display = $id ? '&id=' . (int) $id : '';

		if ($view == 'registration')
		{
			// Info message with 'Registration Type' option setting, if the saved date is not in the list of dates for selected event.
			if ($typeReg == 1)
			{
				$reg_type = JText::_('COM_ICAGENDA_REG_BY_INDIVIDUAL_DATE');
			}
			elseif ($typeReg == 2)
			{
				$reg_type = JText::_('COM_ICAGENDA_REG_FOR_ALL_DATES');
			}
			else
			{
				$reg_type = JText::_('COM_ICAGENDA_REG_BY_DATE_OR_PERIOD');
			}

			$registration_type = '<strong>' . $reg_type . '</strong>';

			$alert_reg_type = '<div class="alert alert-info">';
			$alert_reg_type.= '<small>' . JText::sprintf('COM_ICAGENDA_REGISTRATION_TYPE_FOR_THIS_EVENT', $registration_type) . '</small>';
			$alert_reg_type.= '</div>';
			$alert_reg_type = addslashes($alert_reg_type);

			// Alert message for a date saved with a version before 3.3.3 (date not formatted as expected in sql format)
			$date_no_longer_exists = '<strong>"' . $db_date . '"</strong>';
			$alert_date_format = '<div class="ic-alert ic-alert-note"><span class="iCicon-info"></span> <strong>' . JText::_('NOTICE') . '</strong><br />' . JText::sprintf('COM_ICAGENDA_REGISTRATION_ERROR_DATE_CONTROL', $date_no_longer_exists) . '</div>';
			$alert_date_format = addslashes($alert_date_format);

			// Alert message if a date does not exist anymore for the selected event
			$alert_date_no_longer_exists = '<div class="alert alert-error"><strong>' . JText::_('COM_ICAGENDA_FORM_WARNING') . '</strong><br /><small>' . JText::sprintf('COM_ICAGENDA_REGISTRATION_DATE_NO_LONGER_EXISTS', $date_no_longer_exists) . '</small></div>';
			$alert_date_no_longer_exists = addslashes($alert_date_no_longer_exists);

			// Alert message if a date does not exist anymore for the selected event
			$alert_full_period_no_longer_exists = '<div class="alert alert-error"><strong>' . JText::_('COM_ICAGENDA_FORM_WARNING') . '</strong><br /><small>' . JText::sprintf('COM_ICAGENDA_REGISTRATION_PERIOD_NO_LONGER_EXISTS', $date_no_longer_exists) . '</small></div>';
			$alert_full_period_no_longer_exists = addslashes($alert_full_period_no_longer_exists);

			// Alert message if a date or period is set for the registration, but event registration type is now 'for all dates of the event'
			$for_all_dates = '<strong>' . JText::_('COM_ICAGENDA_ADMIN_REGISTRATION_FOR_ALL_DATES') . '</strong>';
			$alert_by_date_no_longer_possible = '<div class="alert alert-error"><strong>' . JText::_('COM_ICAGENDA_FORM_WARNING') . '</strong><br /><small>' . JText::sprintf('COM_ICAGENDA_REGISTRATION_BY_DATE_NO_LONGER_POSSIBLE', $for_all_dates, $for_all_dates) . '</small></div>';
			$alert_by_date_no_longer_possible = addslashes($alert_by_date_no_longer_possible);

			// Alert message if registration for all dates of the event, but event registration type is now 'select list of dates'
			$by_date = '<strong>' . JText::_('COM_ICAGENDA_ADMIN_REGISTRATION_BY_INDIVIDUAL_DATE') . '</strong>';
			$alert_for_all_dates_no_longer_possible = '<div class="alert alert-error"><strong>' . JText::_('COM_ICAGENDA_FORM_WARNING') . '</strong><br /><small>' . JText::sprintf('COM_ICAGENDA_REGISTRATION_FOR_ALL_DATES_NO_LONGER_POSSIBLE', $by_date) . '</small></div>';
			$alert_for_all_dates_no_longer_possible = addslashes($alert_for_all_dates_no_longer_possible);

			$html.= '<div id="date-alert">';
			$html.= '</div>';

			if ($typeReg == '1')
			{
				?>
				<script type="text/javascript">
					jQuery(document).ready(function($) {
						var value = $('#jform_date_id').val(),
							db_date = '<?php echo $db_date; ?>',
							db_period = '<?php echo $db_period; ?>',
							db_weekdays = '<?php echo $weekdays; ?>',
							db_date_is_valid = '<?php echo $db_date_is_valid; ?>',
							alert_reg_type = '<?php echo $alert_reg_type; ?>',
							alert_date_format = '<?php echo $alert_date_format; ?>',
							alert_date_no_longer_exists = '<?php echo $alert_date_no_longer_exists; ?>',
							alert_full_period_no_longer_exists = '<?php echo $alert_full_period_no_longer_exists; ?>',
							alert_for_all_dates_no_longer_possible = '<?php echo $alert_for_all_dates_no_longer_possible; ?>';

						if ( db_date == '' && db_period == '1' ) {
							// Registration for all dates, not possible if registration type is per date
							$('#date-alert').html(alert_reg_type+alert_for_all_dates_no_longer_possible);
						}
						else if ( !db_date_is_valid && db_date !== '' ) {
							// Date is not empty, but not a valid sql format (registration before release 3.3.3)
							$('#date-alert').html(alert_reg_type+alert_date_format);
						}
						else if ( db_date !== value && db_period !== '0') {
							// Date is not empty, but date is not anymore set for this event
							$('#date-alert').html(alert_date_no_longer_exists);
						}
						else if ( db_date == '' && db_period == '0' &&
							db_weekdays !== '' && db_weekdays !== '0') {
							// Date is not empty, but date is not anymore set for this event
							$('#date-alert').html(alert_full_period_no_longer_exists);
						}

						$('#jform_date_id').change(function(e) {
							$('#jform_period').val('0');
							$('#date-alert').html('');
						});
					});
				</script>
				<?php
			}
			elseif ($typeReg == '2')
			{
				?>
				<script type="text/javascript">
					jQuery(document).ready(function($) {
						var value = $('#jform_date_id').val(),
							db_date = '<?php echo $db_date; ?>',
							db_period = '<?php echo $db_period; ?>',
							alert_reg_type = '<?php echo $alert_reg_type; ?>',
							alert_by_date_no_longer_possible = '<?php echo $alert_by_date_no_longer_possible; ?>';

						$('#date-alert').html(alert_reg_type);

						if ( db_period !== '1' ) {
							// Date is empty, not possible if registration type is per date
							$('#date-alert').html(alert_reg_type+alert_by_date_no_longer_possible);
						}

						$('#jform_date_id').change(function(e) {
//							if ( value == 'update' ) {
								$('#jform_period').val('1');
								$('#date-alert').html('');
//							}
						});
					});
				</script>
			<?php
			}
		}
		?>
		<script type="text/javascript">
		jQuery(document).ready(function($) {
			var view = '<?php echo $view; ?>',
				regid = '<?php echo $id; ?>',
				eventid = '<?php echo $session_eventid; ?>',
				date = '<?php echo $session_date; ?>',
				list_target_id = 'jform_date_id',
				list_select_id = '<?php echo $this->id; ?>_id',
				initial_target_html = '<option value=""><?php echo JText::_("COM_ICAGENDA_SELECT_NO_EVENT_SELECTED"); ?>...</option>',
				loading = '<?php echo JText::_("IC_LOADING"); ?>';

			if (eventid) {
				$('#'+list_target_id).removeAttr('readonly');
				$('#'+list_target_id).val(date);

				$.ajax({url: 'index.php?option=com_icagenda&task='+view+'.dates&eventid='+eventid+'&regid='+regid,
					success: function(output) {
							$('#'+list_target_id).html(output);
					},
					error: function (xhr, ajaxOptions, thrownError) {
							alert(xhr.status + " "+ thrownError);
					}
				});

				$('#'+list_select_id).change(function(e) {
					$('#'+list_target_id).removeAttr('readonly');

					var selectvalue = $(this).val();

					$('#'+list_target_id).html('<option value="">'+loading+'</option>');

					if (selectvalue == "") {
						$('#'+list_target_id).attr('readonly', 'true');
						$('#'+list_target_id).html(initial_target_html);
					} else {
						$.ajax({url: 'index.php?option=com_icagenda&task='+view+'.dates&eventid='+selectvalue+'&regid='+regid,
							success: function(output) {
									$('#'+list_target_id).html(output);
							},
							error: function (xhr, ajaxOptions, thrownError) {
									alert(xhr.status + " "+ thrownError);
							}
						});
					}
				});
			} else {
				$('#'+list_target_id).attr('readonly', 'true');
				$('#'+list_target_id).html(initial_target_html);

				$('#'+list_select_id).change(function(e) {
					$('#'+list_target_id).removeAttr('readonly');

					var selectvalue = $(this).val();

					$('#'+list_target_id).html('<option value="">'+loading+'</option>');

					if (selectvalue == "") {
						$('#'+list_target_id).attr('readonly', 'true');
						$('#'+list_target_id).html(initial_target_html);
					} else {
						$.ajax({url: 'index.php?option=com_icagenda&task='+view+'.dates&eventid='+selectvalue+'&regid='+regid,
							success: function(output) {
									$('#'+list_target_id).html(output);
							},
							error: function (xhr, ajaxOptions, thrownError) {
									alert(xhr.status + " "+ thrownError);
							}
						});
					}
				});
			}
		});
		</script>
		<?php

		return $html;
	}
}
models/fields/modal/param_place.php000060400000002643152455705350013362 0ustar00<?php
/** 
 *	iCagenda
 *----------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright	Copyright (C) 2012 JOOMLIC - All rights reserved.
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Jooml!C - http://www.joomlic.com
 * 
 * @since		1.0
 *----------------------------------------------------------------------------
*/

// No direct access to this file
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

JHTML::_('stylesheet', 'style.css', 'administrator/components/com_icagenda/add/css/');

class JFormFieldModal_param_place extends JFormField
{
	protected $type='modal_param_place';
	
	protected function getInput()
	{
		
		$db		= JFactory::getDbo();
		$query	= $db->getQuery(true);
		$query->select('a.place, a.id, a.coordinate')
			->from('`#__icagenda_events` AS a');
		$db->setQuery($query);
		$loc = $db->loadObjectList();
	
		$html= '
			<select id="'.$this->id.'_id"'.$class.' place="'.$this->place.'">
			<option value="NULL">-</option>';
		foreach ($loc as $l){
			$html.='<option value="'.$l->id.'"';
			if ($this->value == $l->id){
				$html.='selected="selected"';
			}
			$html.='>'.$l->place.'</option>';
			$span.='<span id="coord'.$l->id.'" style="display:none;">'.$l->coordinate.'</span>';
		}
		$html.='</select>'.$span;
			
		return $html;
	}
}models/fields/modal/ictext_placeholder.php000060400000003074152455705350014757 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.3 2014-03-24
 * @since       3.2.10
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_ictext_Placeholder extends JFormField
{
	protected $type='modal_ictext_Placeholder';

	protected function getInput()
	{
		$class = JRequest::getVar('class');

		jimport('joomla.application.component.helper');
		$icagendaParams = JComponentHelper::getParams('com_icagenda');

		$replace = array("jform", "[", "]", "_Placeholder");
		$name = str_replace($replace, "", $this->name);

		$Type = $name . '_Placeholder';
		$tos_Type = $icagendaParams->get($Type);

		$placeholder = ( ! isset($tos_Type)) ? JText::_( 'COM_ICAGENDA_' . strtoupper($name) . '_PLACEHOLDER') : '';

		$html ='<input type="text" id="' . $this->id . '" class="' . $class . ' input-xxlarge" name="' . $this->name . '" value="' . $this->value . '" placeholder="' . $placeholder . '"/>';

		return $html;
	}
}
models/fields/modal/template.php000060400000003665152455705350012736 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.1 2015-01-30
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_Template extends JFormField
{
	protected $type = 'modal_template';

	protected function getInput()
	{
		$url	= JPATH_SITE.'/components/com_icagenda/themes/packs';
		$list	= $this->getList($url);
		$class 	= !empty($this->class) ? ' class="' . $this->class . '"' : '';
		$html	= '<select id="' . $this->id . '_id"' . $class . ' name="' . $this->name . '">';

		foreach ($list as $l)
		{
			$html.= '<option value="' . $l . '"';

			if ($this->value == $l)
			{
				$html.= ' selected="selected"';
			}

			$html.= '>' . $l . '</option>';
		}

		$html.= '</select>';

		return $html;
	}

	function getList($dirname)
	{
		$arrayfiles = Array();

		if (file_exists($dirname))
		{
			$handle = opendir($dirname);

			while (false !== ($file = readdir($handle)))
			{
				if (!is_file($dirname.$file)
					&& $file != '.'
					&& $file != '..'
					&& $file != '.DS_Store'
					&& $file != '.htaccess'
					&& $file != '.thumbs'
					&& $file != 'index.php'
					&& $file != 'index.html'
					&& $file != 'php.ini'
					)
				{
					array_push($arrayfiles, $file);
				}
			}

			$handle = closedir($handle);
		}

		sort($arrayfiles);

		return $arrayfiles;
	}
}
models/fields/modal/ictxt_type.php000060400000010034152455705350013303 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.5 2013-11-10
 * @since       3.2.5
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_ictxt_type extends JFormField
{
	/**
	 * The form field type.
	 */
	protected $type = 'modal_ictxt_type';

	/**
	 * Method to get the field input markup.
	 */
	protected function getInput()
	{
		jimport('joomla.application.component.helper');
		$icagendaParams = JComponentHelper::getParams('com_icagenda');

		$replace = array("jform", "[", "]", "_Type");
		$name = str_replace($replace, "", $this->name);

		$Type = $name.'_Type';
		$tos_Type = $icagendaParams->get($Type, '');

		$class_default = '';
		$class_article = '';
		$class_custom = '';
		$checked_default = '';
		$checked_article = '';
		$checked_custom = '';
		if ($tos_Type == '') {
			$class_default = 'btn-success';
			$checked_default = ' checked="checked"';
			$checked_article = '';
			$checked_custom = '';
		}
		elseif ($tos_Type == '1') {
			$class_article = 'btn-success';
			$checked_default = '';
			$checked_article = ' checked="checked"';
			$checked_custom = '';
		}
		elseif ($tos_Type == '2') {
			$class_custom = 'btn-success';
			$checked_default = '';
			$checked_article = '';
			$checked_custom = ' checked="checked"';
		} else {
			$class_default = 'btn-success';
			$checked_default = ' checked="checked"';
			$checked_article = '';
			$checked_custom = '';
		}

		$html	= array();
		$html[]	= '<fieldset class="radio btn-group">';
		$html[]	= '<label class="'.$class_default.'">'.JText::_( 'IC_DEFAULT' ).'<input type="radio"  id="'.$name.'_Type0" name="'.$this->name.'" value=""  onClick="tosdefault_'.$name.'();"'.$checked_default.' /></label>';
		$html[]	= '<label class="'.$class_article.'">'.JText::_( 'IC_ARTICLE' ).'<input type="radio"  id="'.$name.'_Type1" name="'.$this->name.'" value="1"  onClick="tosarticle_'.$name.'();"'.$checked_article.' /></label>';
		$html[]	= '<label class="'.$class_custom.'">'.JText::_( 'IC_CUSTOM_TEXT' ).'<input type="radio"  id="'.$name.'_Type2" name="'.$this->name.'" value="2"  onClick="toscustom_'.$name.'();"'.$checked_custom.' /></label>';
		$html[]	= '</fieldset>';



		$html[]	= '<script type="text/javascript">';
		$html[]	= 'function tosdefault_'.$name.'()';
		$html[]	= '{';
		$html[]	= 'document.getElementById("'.$name.'_default").style.display = "block";';
		$html[]	= 'document.getElementById("'.$name.'_article").style.display = "none";';
		$html[]	= 'document.getElementById("'.$name.'_custom").style.display = "none";';
		$html[]	= '$("#'.$name.'_Type0").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= 'function tosarticle_'.$name.'()';
		$html[]	= '{';
		$html[]	= 'document.getElementById("'.$name.'_default").style.display = "none";';
		$html[]	= 'document.getElementById("'.$name.'_article").style.display = "block";';
		$html[]	= 'document.getElementById("'.$name.'_custom").style.display = "none";';
		$html[]	= '$("#'.$name.'_Type1").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= 'function toscustom_'.$name.'()';
		$html[]	= '{';
		$html[]	= 'document.getElementById("'.$name.'_default").style.display = "none";';
		$html[]	= 'document.getElementById("'.$name.'_article").style.display = "none";';
		$html[]	= 'document.getElementById("'.$name.'_custom").style.display = "block";';
		$html[]	= '$("#'.$name.'_Type2").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= '</script>';

		return implode("\n", $html);
	}
}
models/fields/modal/menulink.php000060400000003272152455705350012737 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rez�, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rez� (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.3.6 2014-04-29
 * @since       2.1.4
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_Menulink extends JFormField
{
	protected $type='modal_menulink';

	protected function getInput()
	{

		$db		= JFactory::getDbo();
		$query	= $db->getQuery(true);
		$query->select('a.title, a.published, a.id, a.path')
			->from('`#__menu` AS a')
			->where( "(link = 'index.php?option=com_icagenda&view=list') AND (published > 0)" );
		$db->setQuery($query);
		$link = $db->loadObjectList();
		$class = JRequest::getVar('class');

		$html= '
			<select id="'.$this->id.'_id"'.$class.' name="'.$this->name.'">';
		if ($this->name!='jform[catid]' && $this->name!='catid') $html.='<option value="">- '.JTEXT::_('JGLOBAL_AUTO').' -</option>';
		foreach ($link as $l){
		if ($l->published == '1') {
			$html.='<option value="'.$l->id.'"';
			if ($this->value == $l->id){
				$html.='selected="selected"';
			}
			$html.='>['.$l->id.'] '.$l->title.'</option>';
		}
		}
		$html.='</select>';
		return $html;

	}
}
models/fields/modal/tos_default.php000060400000003740152455705350013426 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.0 2013-09-18
 * @since       3.2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_tos_default extends JFormField
{
	protected $type='modal_tos_default';

//	protected function getLabel()
//	{
//	   return ' ';
//	}

	protected function getInput()
	{
		jimport('joomla.application.component.helper');
		$icagendaParams = JComponentHelper::getParams('com_icagenda');
		$tosContent = $icagendaParams->get('tosContent');
		$tos_Type = $icagendaParams->get('tos_Type', '');

		$html	= array();

		$html[] = '<div id="ic_default"><fieldset class="span9 iCleft">';
		$html[] = ''.JText::_( 'COM_ICAGENDA_SUBMIT_TOS_TYPE_DEFAULT_LBL' ).'<br /><div class="alert alert-info">'.JText::_( 'COM_ICAGENDA_TOS' ).'</div>';
		$html[] = '</fieldset></div>';

		if ($tos_Type == '') {
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("ic_default").style.display = "block";';
			$html[] = 'document.getElementById("ic_article").style.display = "none";';
			$html[] = 'document.getElementById("tos_custom").style.display = "none";';
			$html[] = '</script>';
		} else {
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("ic_default").style.display = "none";';
			$html[] = '</script>';
		}

		return implode("\n", $html);
	}
}
models/fields/modal/media.php000060400000010700152455705350012166 0ustar00<?php
/**
 *	iCagenda
 *----------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright	Copyright (C) 2012 JOOMLIC - All rights reserved.

 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Jooml!C - http://www.joomlic.com
 *
 * @update		2013-04-04
 * @version		2.1.4
 *----------------------------------------------------------------------------
*/

// No direct access to this file
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_media extends JFormField
{
	/**
	 * The form field type.
	 *
	 * @var    string
	 * @since  11.1
	 */
	protected $type = 'modal_media';

	/**
	 * The initialised state of the document object.
	 *
	 * @var    boolean
	 * @since  11.1
	 */
	protected static $initialised = false;

	/**
	 * Method to get the field input markup for a media selector.
	 * Use attributes to identify specific created_by and asset_id fields
	 *
	 * @return  string  The field input markup.
	 *
	 * @since   11.1
	 */
	protected function getInput()
	{
		$assetField = $this->element['asset_field'] ? (string) $this->element['asset_field'] : 'asset_id';
		$authorField = $this->element['created_by_field'] ? (string) $this->element['created_by_field'] : 'created_by';
		$asset = $this->form->getValue($assetField) ? $this->form->getValue($assetField) : (string) $this->element['asset_id'];
		if ($asset == '')
		{
			$asset = JRequest::getCmd('option');
		}

		$link = (string) $this->element['link'];
		if (!self::$initialised)
		{

			// Load the modal behavior script.
			JHtml::_('behavior.modal');

			// Build the script.
			$script = array();
			$script[] = '	function jInsertFieldValue(value, id) {';
			$script[] = '		var old_id = document.id(id).value;';
			$script[] = '		if (old_id != id) {';
			$script[] = '			var elem = document.id(id)';
			$script[] = '			elem.value = value;';
			$script[] = '			elem.fireEvent("change");';
			$script[] = '		}';
			$script[] = '	}';

			// Add the script to the document head.
			JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));

			self::$initialised = true;
		}

		// Initialize variables.
		$html = array();
		$attr = '';

		// Initialize some field attributes.
		$attr .= $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : '';
		$attr .= $this->element['size'] ? ' size="' . (int) $this->element['size'] . '"' : '';

		// Initialize JavaScript field attributes.
		$attr .= $this->element['onchange'] ? ' onchange="' . (string) $this->element['onchange'] . '"' : '';

		// The text field.
		$html[] = '<span class="media_field">';
		$html[] = '	<input type="text" name="' . $this->name . '" id="' . $this->id . '"' . ' value="'
			. htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '"' . ' readonly="readonly"' . $attr . ' />';
		$html[] = '</span>';

		$directory = (string) $this->element['directory'];
		if ($this->value && file_exists(JPATH_ROOT . '/' . $this->value))
		{
			$folder = explode('/', $this->value);
			array_shift($folder);
			array_pop($folder);
			$folder = implode('/', $folder);
		}
		elseif (file_exists(JPATH_ROOT . '/' . JComponentHelper::getParams('com_media')->get('image_path', 'images') . '/' . $directory))
		{
			$folder = $directory;
		}
		else
		{
			$folder = '';
		}
		// The button.
		$html[] = '<span class="ic_button">';
		$html[] = '	<span class="blank">';
		$html[] = '		<a class="modal" title="' . JText::_('JLIB_FORM_BUTTON_SELECT') . '"' . ' href="'
			. ($this->element['readonly'] ? ''
			: ($link ? $link
				: 'index.php?option=com_media&amp;view=images&amp;tmpl=component&amp;asset=' . $asset . '&amp;author='
				. $this->form->getValue($authorField)) . '&amp;fieldid=' . $this->id . '&amp;folder=' . $folder) . '"'
			. ' rel="{handler: \'iframe\', size: {x: 800, y: 500}}">';
		$html[] = JText::_('JLIB_FORM_BUTTON_SELECT') . '</a>';
		$html[] = '	</span>';
		$html[] = '</span>';

		$html[] = '<span class="ic_button">';
		$html[] = '	<span class="blank">';
		$html[] = '		<a title="' . JText::_('JLIB_FORM_BUTTON_CLEAR') . '"' . ' href="#" onclick="';
		$html[] = 'document.id(\'' . $this->id . '\').value=\'\';';
		$html[] = 'document.id(\'' . $this->id . '\').fireEvent(\'change\');';
		$html[] = 'return false;';
		$html[] = '">';
		$html[] = JText::_('JLIB_FORM_BUTTON_CLEAR') . '</a>';
		$html[] = '	</span>';
		$html[] = '</span>';

		return implode("\n", $html);
	}
}
models/fields/modal/icfile.php000060400000011750152455705350012350 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.13 2014-01-23
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.form.formfield');

class JFormFieldModal_icfile extends JFormField
{
	public $type = 'modal_icfile';


	protected static $initialised = false;

	/**
	 * Method to get the field input markup for a media selector.
	 * Use attributes to identify specific created_by and asset_id fields
	 *
	 * @return  string  The field input markup.
	 *
	 * @since   11.1
	 */
	protected function getInput()
	{
		$assetField = $this->element['asset_field'] ? (string) $this->element['asset_field'] : 'asset_id';
		$authorField = $this->element['created_by_field'] ? (string) $this->element['created_by_field'] : 'created_by';
		$asset = $this->form->getValue($assetField) ? $this->form->getValue($assetField) : (string) $this->element['asset_id'];
		if ($asset == '')
		{
			$asset = JRequest::getCmd('option');
		}

		$link = (string) $this->element['link'];
		if (!self::$initialised)
		{

			// Load the modal behavior script.
			JHtml::_('behavior.modal');

			// Build the script.
			$script = array();
			$script[] = '	function jInsertFieldValue(value, id) {';
			$script[] = '		var old_id = document.id(id).value;';
			$script[] = '		if (old_id != id) {';
			$script[] = '			var elem = document.id(id)';
			$script[] = '			elem.value = value;';
			$script[] = '			elem.fireEvent("change");';
			$script[] = '		}';
			$script[] = '	}';

			// Add the script to the document head.
			JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));

			self::$initialised = true;
		}

		// Initialize variables.
		$html = array();
		$attr = '';

		// Initialize some field attributes.
		$attr .= $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : '';
		$attr .= $this->element['size'] ? ' size="' . (int) $this->element['size'] . '"' : '';
		$attr .= $this->element['accept'] ? ' accept="' . (string) $this->element['accept'] . '"' : '';
		$attr .= ((string) $this->element['disabled'] == 'true') ? ' disabled="disabled"' : '';

		// Initialize JavaScript field attributes.
		$attr .= $this->element['onchange'] ? ' onchange="' . (string) $this->element['onchange'] . '"' : '';

		// The text field.
		if ($this->value == NULL) {
			$html[] = '<span>';
			$html[] = '	<input type="file" style="cursor: pointer" name="' . $this->name . '" id="' . $this->id . '"' . ' value="'
				. htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '"' . ' ' . $attr . ' />';
			$html[] = '</span>';
		} else {
			$html[] = '<span>';
			$html[] = '	<input type="text" name="' . $this->name . '" id="' . $this->id . '"' . ' value="'
				. htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '"' . ' readonly="readonly"' . $attr . ' />';
			$html[] = '</span>';
		}


		$folder = 'icagenda_doc';
		// The button.
//		$html[] = '<div class="button2-left">';
//		$html[] = '	<div class="blank">';
//		$html[] = '		<a class="modal" title="' . JText::_('JLIB_FORM_BUTTON_SELECT') . '"' . ' href="'
//			. ($this->element['readonly'] ? ''
//			: ($link ? $link
//				: 'index.php?option=com_media&amp;view=images&amp;tmpl=component&amp;asset=' . $asset . '&amp;author='
//				. $this->form->getValue($authorField)) . '&amp;fieldid=' . $this->id . '&amp;folder=' . $folder) . '"'
//			. ' rel="{handler: \'iframe\', size: {x: 800, y: 500}}">';
//		$html[] = JText::_('JLIB_FORM_BUTTON_SELECT') . '</a>';
//		$html[] = '	</div>';
//		$html[] = '</div>';

		if ($this->value == NULL) {
		$html[] = '<div class="button2-left">';
		$html[] = '	<div class="blank">';
		$html[] = '		<a title="' . JText::_('JLIB_FORM_BUTTON_CLEAR') . '"' . ' href="#" onclick="';
		$html[] = 'document.id(\'' . $this->id . '\').value=\'\';';
		$html[] = 'document.id(\'' . $this->id . '\').fireEvent(\'change\');';
		$html[] = 'return false;';
		$html[] = '">';
		$html[] = JText::_('JLIB_FORM_BUTTON_CLEAR') . '</a>';
		$html[] = '</div>';
		$html[] = '</div>';
		} else {
		$html[] = '<div class="button2-left">';
		$html[] = '	<div class="blank">';
		$html[] = '		<a title="' . JText::_('JLIB_FORM_BUTTON_CLEAR') . '"' . ' href="#" onclick="';
		$html[] = 'document.id(\'' . $this->id . '\').value=\'\';';
		$html[] = 'document.id(\'' . $this->id . '\').fireEvent(\'change\');';
		$html[] = 'return false;';
		$html[] = '">';
		$html[] = JText::_('JLIB_FORM_BUTTON_CLEAR') . '</a>';
		$html[] = '</div>';
		$html[] = '</div>';
		}

		return implode("\n", $html);







	}
}
models/fields/modal/ic_editor.php000060400000003774152455705350013065 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.3.7 2014-05-18
 * @since       3.3.7
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_iC_editor extends JFormField
{
	/**
	 * The form field type.
	 */
	protected $type = 'modal_iC_editor';

	/**
	 * Method to get the field input markup.
	 */
	protected function getInput()
	{
		$icName = $this->name;
		$icDefault = $this->default;
		$icValue = $this->value;

		if (strpos($icValue,'\n') !== false)
		{
			$array_newline = array('\\n', '\n');
			$icValue = str_replace($array_newline, '<br />', $icValue);
		}

		$get_period_string = JText::_('COM_ICAGENDA_REGISTRATION_EMAIL_USER_PERIOD_DEFAULT_BODY');
		$get_date_string = JText::_('COM_ICAGENDA_REGISTRATION_EMAIL_USER_DATE_DEFAULT_BODY');

		if  ($icValue == 'COM_ICAGENDA_REGISTRATION_EMAIL_USER_PERIOD_DEFAULT_BODY')
		{
			$icBody = $get_period_string;
		}
		elseif ($icValue == 'COM_ICAGENDA_REGISTRATION_EMAIL_USER_DATE_DEFAULT_BODY')
		{
			$icBody = $get_date_string;
		}
		else
		{
			$icBody = $icValue;
		}

		$editor = JFactory::getEditor();

		$html	= array();

		$html[] = '<div id="'.$this->name.'_ic_editor"><fieldset class="span9 iCleft">';
		$html[] = $editor->display($this->name, $icBody, "100%", "300", "300", "20", 1, null, null, null, array('mode' => 'advanced'));
		$html[] = '</fieldset></div>';

		return implode("\n", $html);
	}
}
models/fields/modal/date.php000060400000010726152455705350012034 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.10 2015-08-13
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

/**
 * Supports unlimited modal datetime picker (add / delete).
 *
 * @package		iCagenda
 * @subpackage	com_icagenda
 * @since		1.0
 */
class JFormFieldModal_date extends JFormField
{
	protected $type = 'modal_date';

	protected function getInput()
	{
		$lang = JFactory::getLanguage();

		$id_suffix = ($lang->getTag() == 'fa-IR') ? '_jalali' : '';

		if ($lang->getTag() == 'fa-IR')
		{
			// Including fallback code for HTML5 non supported browsers.
			JHtml::_('jquery.framework');
			JHtml::_('script', 'system/html5fallback.js', false, true);
		}

		$id = JRequest::getInt('id');
		$class = !empty($this->class) ? ' ' . $this->class : '';

		$session = JFactory::getSession();
		$datesDB = $session->get('ic_submit_dates', '');

		if ($id && empty($datesDB))
		{
			$db	= JFactory::getDBO();
			$db->setQuery(
				'SELECT a.dates' .
				' FROM #__icagenda_events AS a' .
				' WHERE a.id = '.(int) $id
			);
			$datesDB = $db->loadResult();
		}

		$dates = iCString::isSerialized($datesDB) ? unserialize($datesDB) : false;

//		if ($lang->getTag() == 'fa-IR'
//			&& $dates
//			&& $dates != array('0000-00-00 00:00'))
//		{
//			$dates_to_sql = array();

//			foreach ($dates AS $date)
//			{
//				if (iCDate::isDate($date))
//				{
//					$year		= date('Y', strtotime($date));
//					$month		= date('m', strtotime($date));
//					$day		= date('d', strtotime($date));
//					$time		= date('H:i', strtotime($date));

//					$dates_to_sql[] = iCGlobalizeConvert::gregorianToJalali($year, $month, $day, true) . ' ' . $time;
//				}
//			}

//			$dates = $dates_to_sql;
//		}

		$html = '<table id="dTable' . $id_suffix . '" style="border:0px">';

		$html.= '<thead>';
		$html.= '<tr>';
		$html.= '<th width="70%">';
		$html.= JText::_('COM_ICAGENDA_TB_DATE');
		$html.= '</th>';
		$html.= '<th width="30%">';
//		$html.= JText::_('COM_ICAGENDA_TB_ACT');
		$html.= '</th>';
		$html.= '</tr>';
		$html.= '</thead>';

		$add_counter = 0;

		if ($dates
			&& $dates != array('0000-00-00 00:00'))
		{
			foreach ($dates as $date)
			{
				$html.= '<tr>';
				$html.= '<td>';

				if ($lang->getTag() == 'fa-IR')
				{
					$add_counter = $add_counter+1;
//					$this_number = $add_counter ? $add_counter : '';
					$html.= JHtml::_('calendar', $date, 'd', 'date_jalali' . $add_counter, '%Y-%m-%d %H:%M', ' class="ic-date-input' . $id_suffix . '"');
				}
				else
				{
					$html.= '<input class="ic-date-input' . $id_suffix . '" type="text" name="d" value="' . $date . '" />';
				}

				$html.= '</td>';
				$html.= '<td>';
				$html.= '<a class="del btn btn-danger btn-mini" href="#">' . JText::_('COM_ICAGENDA_DELETE_DATE') . '</a>';
				$html.= '</td>';
				$html.= '</tr>';
			}

			// clear the data so we don't process it again
			$session->clear('ic_submit_dates');
		}
		else
		{
			$html.= '<tr>';
			$html.= '<td>';

			if ($lang->getTag() == 'fa-IR')
			{
				$html.= JHtml::_('calendar', '0000-00-00 00:00', 'd', 'date_jalali', '%Y-%m-%d %H:%M', ' class="ic-date-input' . $id_suffix . '"');
			}
			else
			{
				$html.= '<input class="ic-date-input' . $id_suffix . '" type="text" name="d" value="0000-00-00 00:00" />';
			}
			$html.= '</td>';
			$html.= '<td>';
			$html.= '<a class="del btn btn-danger btn-mini" href="#">' . JText::_('COM_ICAGENDA_DELETE_DATE') . '</a>';
			$html.= '</td>';
			$html.= '</tr>';
		}

		$html.= '</table>';

		$html.= '<a id="add" href="#"><span class="btn btn-success btn-small input-medium" style="float:left"><strong>' . JText::_('COM_ICAGENDA_ADD_DATE') . '</strong></span></a><br/>';

		$html.= '<input type="hidden"';
		$html.= ' class="date' . $class . '"';
		$html.= ' id="' . $this->id . '_id"';
		$html.= ' name="' . $this->name . '"';
		$html.= ' value=\''.$datesDB.'\'';
		$html.= '/>';

		return $html;
	}
}
models/fields/modal/ictext_type.php000060400000005643152455705350013462 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.0.1 2013-09-22
 * @since       3.2.0.1
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_ictext_type extends JFormField
{
	protected $type='modal_ictext_type';

	protected function getInput()
	{
		jimport('joomla.application.component.helper');

		$icagendaParams = JComponentHelper::getParams('com_icagenda');

		$replace = array("jform", "[", "]");
		$name = str_replace($replace, "", $this->name);
		$Type = $icagendaParams->get($name, '');

		$Type_default = $name.'_default';
		$Type_content = $name.'_custom';

		$class_default = '';
		$class_custom = '';
		$checked_default = '';
		$checked_custom = '';
		if ($Type == '') {
			$class_default = 'btn-success';
			$checked_default = ' checked="checked"';
			$checked_custom = '';
		}
		elseif ($Type == '2') {
			$class_custom = 'btn-success';
			$checked_default = '';
			$checked_custom = ' checked="checked"';
		} else {
			$class_default = 'btn-success';
			$checked_default = ' checked="checked"';
			$checked_custom = '';
		}

		$html	= array();
		$html[]	= '<fieldset class="radio btn-group">';
		$html[]	= '<label class="'.$class_default.'">'.JText::_( 'IC_DEFAULT' ).'<input type="radio"  id="'.$name.'_0" name="'.$this->name.'" value=""  onClick="icdefault_'.$name.'();"'.$checked_default.' /></label>';
		$html[]	= '<label class="'.$class_custom.'">'.JText::_( 'IC_CUSTOM_TEXT' ).'<input type="radio"  id="'.$name.'_2" name="'.$this->name.'" value="2"  onClick="iccustom_'.$name.'();"'.$checked_custom.' /></label>';
		$html[]	= '</fieldset>';



		$html[]	= '<script type="text/javascript">';
		$html[]	= 'function icdefault_'.$name.'()';
		$html[]	= '{';
//		$html[]	= 'document.getElementById("'.$Type_default.'").style.display = "block";';
		$html[]	= 'document.getElementById("'.$Type_content.'").style.display = "none";';
		$html[]	= '$("#'.$name.'_0").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= 'function iccustom_'.$name.'()';
		$html[]	= '{';
//		$html[]	= 'document.getElementById("'.$Type_default.'").style.display = "none";';
		$html[]	= 'document.getElementById("'.$Type_content.'").style.display = "block";';
		$html[]	= '$("#'.$name.'_2").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= '</script>';

		return implode("\n", $html);
	}
}
models/fields/modal/color.php000060400000001725152455705350012234 0ustar00<?php
/** 
 *	iCagenda
 *----------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright	Copyright (C) 2012 JOOMLIC - All rights reserved.
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Jooml!C - http://www.joomlic.com
 * 
 * @update		2.0.4
 *----------------------------------------------------------------------------
*/

// No direct access to this file
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');


class JFormFieldModal_color extends JFormField
{
	protected $type='modal_color';
	
	protected function getInput()
	{
		$html= '
		<div class="color">
			<div class="form-item">
				<input type="text" id="'.$this->id.'" name="'.$this->name.'" value="'.$this->value.'" />
			</div>
			<div id="picker"></div>
			<div class="clr"></div>
		</div>
		<div class="clr"></div>
		';

		return $html;
	}
}models/fields/modal/icmulti_opt.php000060400000007047152455705350013451 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.6 2013-11-20
 * @since       3.2.6
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_icmulti_opt extends JFormField
{
	protected $type='modal_icmulti_opt';

	protected function getInput()
	{

		$replace = array("jform", "params", "[", "]");
		$name_input = str_replace($replace, "", $this->name);
		$get_location = explode('_', $name_input);
		$location = $get_location['1'];
		$name = $get_location['0'];

		$Type = $this->value;

		$Type_none = $name.'_none';
		$Type_checkbox = $name.'_checkbox';

		$class_global = 'btn-primary';
		$class_none = 'btn-danger';
		$class_checkbox = 'btn-success';
		$checked_none = ' checked="checked"';
		$checked_checkbox = '';
		if ($Type == '0') {
			$class_global = '';
			$class_none = 'btn-danger';
			$class_checkbox = '';
			$checked_global = '';
			$checked_none = ' checked="checked"';
			$checked_checkbox = '';
		}
		elseif ($Type == '1') {
			$class_global = '';
			$class_none = '';
			$class_checkbox = 'btn-success';
			$checked_global = '';
			$checked_none = '';
			$checked_checkbox = ' checked="checked"';
		}
		else {
			$class_global = 'btn-primary';
			$class_none = '';
			$class_checkbox = '';
			$checked_global = ' checked="checked"';
			$checked_none = '';
			$checked_checkbox = '';
		}

		$html	= array();


		$html[]	= '<fieldset class="radio btn-group">';
		if ($location == 'menu') {
			$html[]	= '<label class="'.$class_global.'">'.JText::_( 'JGLOBAL_USE_GLOBAL' ).'<input type="radio"  id="'.$name.'_global" name="'.$this->name.'" value="global"  onClick="icglobal_'.$name.'();"'.$checked_global.' /></label>';
		}
		$html[]	= '<label class="'.$class_none.'">'.JText::_( 'JNO' ).'<input type="radio"  id="'.$name.'_0" name="'.$this->name.'" value="0"  onClick="icnone_'.$name.'();"'.$checked_none.' /></label>';
		$html[]	= '<label class="'.$class_checkbox.'">'.JText::_( 'JYES' ).'<input type="radio"  id="'.$name.'_1" name="'.$this->name.'" value="1"  onClick="iccheckbox_'.$name.'();"'.$checked_checkbox.' /></label>';
		$html[]	= '</fieldset>';


		$html[]	= '<script type="text/javascript">';
		$html[]	= 'var typeset = '.$Type.';';
		if ($location == 'menu') {
			$html[]	= 'function icglobal_'.$name.'()';
			$html[]	= '{';
			$html[]	= 'document.getElementById("'.$Type_checkbox.'").style.display = "none";';
			$html[]	= '$("#'.$name.'_global").attr("checked", "checked");';
			$html[]	= '}';
		}
		$html[]	= 'function icnone_'.$name.'()';
		$html[]	= '{';
		$html[]	= 'document.getElementById("'.$Type_checkbox.'").style.display = "none";';
		$html[]	= '$("#'.$name.'_0").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= 'function iccheckbox_'.$name.'()';
		$html[]	= '{';
		$html[]	= 'document.getElementById("'.$Type_checkbox.'").style.display = "block";';
		$html[]	= '$("#'.$name.'_1").attr("checked", "checked");';
		$html[]	= '}';
		$html[]	= '</script>';

		return implode("\n", $html);
	}
}
models/fields/modal/iclink_url.php000060400000005123152455705350013245 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.1 2015-02-27
 * @since       3.3.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

/**
 * Supports a url type field.
 */
class JFormFieldModal_iclink_url extends JFormField
{
	/**
	 * The form field type.
	 */
	protected $type='modal_iclink_url';

	/**
	 * Method to get the field input markup.
	 */
	protected function getInput()
	{
		jimport('joomla.application.component.helper');
		$icagendaParams	= JComponentHelper::getParams('com_icagenda');

		$Explode		= explode('_', $this->name);
		$TypeName		= $Explode[0] . ']';

		$replace		= array("jform", "params", "[", "]");
		$name			= str_replace($replace, "", $TypeName);

		$Type			= JRequest::getVar('type');

		$Type_default	= $name.'_default';
		$Type_article	= $name.'_article';
		$Type_url		= $name.'_url';


		$editor = JFactory::getEditor();

		$html	= array();

		$html[] = '<div id="' . $Type_url . '"><fieldset class="span9 iCleft">';
		$html[] = '<input type="url" name="' . $this->name . '" value="' . $this->value . '" />';
		$html[] = '</fieldset></div>';

		// Article
		if ($Type == '1')
		{
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("' . $Type_article . '").style.display = "block";';
			$html[] = 'document.getElementById("' . $Type_url . '").style.display = "none";';
			$html[] = '</script>';
		}

		// URL
		elseif ($Type == '2')
		{
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("' . $Type_article . '").style.display = "none";';
			$html[] = 'document.getElementById("' . $Type_url . '").style.display = "block";';
			$html[] = '</script>';
		}

		// iCagenda default
		else
		{
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("' . $Type_article . '").style.display = "none";';
			$html[] = 'document.getElementById("' . $Type_url . '").style.display = "none";';
			$html[] = '</script>';
		}

		return implode("\n", $html);
	}
}
models/fields/modal/ictxt_default.php000060400000005000152455705350013743 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.5 2013-11-10
 * @since       3.2.5
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_ictxt_default extends JFormField
{
	/**
	 * The form field type.
	 */
	protected $type = 'modal_ictxt_default';

	/**
	 * Method to create a blank label.
	 */
	protected function getLabel()
	{
	   return ' ';
	}

	/**
	 * Method to get the field input markup.
	 */
	protected function getInput()
	{
		jimport('joomla.application.component.helper');
		$icagendaParams = JComponentHelper::getParams('com_icagenda');

		$replace = array("jform", "[", "]", "Default");
		$name = str_replace($replace, "", $this->name);

		$tos_Type = $icagendaParams->get($name.'_Type', '');

		$Type_default = $name.'_default';
		$Type_article = $name.'_article';
		$Type_content = $name.'_custom';

		$html	= array();

		$html[] = '<div id="'.$name.'_default"><fieldset class="span9 iCleft">';
		$html[] = '<div class="alert alert-error">';
		if(version_compare(JVERSION, '3.0', 'ge')) {
			$html[] = '<i class="icon-warning-2"></i>';
		}
		$html[] = ' '.JText::sprintf( 'COM_ICAGENDA_TERMS_IMPORTANT_INFOS', $this->description ).'</div><div>'.JText::_( 'COM_ICAGENDA_SUBMIT_TOS_TYPE_DEFAULT_LBL' ).'<br /><small>'.$this->description.'</small></div><div class="alert alert-info">'.JText::_( $this->description ).'</div>';
		$html[] = '<input type="hidden" id="'.$this->id.'_id" name="'.$this->name.'" value="'.$this->value.'" />';
		$html[] = '</fieldset></div>';

		if ($tos_Type == '') {
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("'.$name.'_default").style.display = "block";';
			$html[] = '</script>';
		} else {
			$html[] = '<script type="text/javascript">';
			$html[] = 'document.getElementById("'.$name.'_default").style.display = "none";';
			$html[] = '</script>';
		}

		return implode("\n", $html);
	}
}
models/fields/modal/ic_password.php000060400000002352152455705350013430 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-12-21
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_ic_password extends JFormField
{
	protected $type='modal_ic_password';

	protected function getInput()
	{
		$_pass = str_replace('/', '.', $this->value);
		$pass_ex = explode('.', $_pass);

		if (isset($pass_ex[1]))
		{
			$value = base64_decode($pass_ex[1]);
		}
		else
		{
			$value = $this->value;
		}

		$html = '<input type="password" id="' . $this->id . '" name="' . $this->name . '" value="' . $value . '" />';

		return $html;
	}
}
models/fields/modal/multicat.php000060400000004063152455705350012736 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-12-06
 * @since       3.2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );
jimport('joomla.form.formfield');

class JFormFieldModal_multicat extends JFormField
{
	protected $type='modal_multicat';

	protected function getInput()
	{
		// Initialize some field attributes.
		$class	= !empty($this->class) ? ' class="' . $this->class . '"' : '';

		// Query List of Categories
		$db		= JFactory::getDbo();
		$query	= $db->getQuery(true);
		$query->select('a.title, a.state, a.id')
			->from('`#__icagenda_category` AS a');
		$db->setQuery($query);
		$cat	= $db->loadObjectList();

		if (!is_array($this->value))
		{
			$this->value = array($this->value);
		}

		$html = ' <select multiple id="' . $this->id . '_id" name="' . $this->name . '"' . $class . '>';

		if (version_compare(JVERSION, '3.0', 'lt'))
		 {
			if ($this->name != 'jform[catid]' && $this->name != 'catid')
			{
				$html.= '<option value="0"';

				if (in_array('0', $this->value))
				{
					$html.= ' selected="selected"';
				}

				$html.= '>-- '.JTEXT::_('COM_ICAGENDA_ALL_CATEGORIES').' --</option>';
			}
		}

		foreach ($cat as $c)
		{
			if ($c->state == '1')
			{
				$html.= '<option value="' . $c->id . '"';

				if ( (in_array($c->id, $this->value)) && (!in_array('0', $this->value)) )
				{
					$html.= ' selected="selected"';
				}

				$html.= '>' . $c->title . '</option>';
			}
		}

		$html.= '</select>';

		return $html;
	}
}
models/themes.php000060400000034351152455705350010042 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.0 2013-06-04
 * @since       2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modellist');
jimport( 'joomla.html.parameter' );

if(version_compare(JVERSION, '3.0', 'ge')) {
	jimport( 'joomla.installer.installer' );
	jimport( 'joomla.installer.helper' );
	jimport( 'joomla.filesystem.folder' );
}

/**
 * Model Admin - Theme Manager - iCagenda
 */
class iCagendaModelthemes extends JModelList
{

	protected 	$_paths 	= array();
	protected 	$_manifest 	= null;
	protected	$option 		= 'com_icagenda';
	protected 	$text_prefix	= 'com_icagenda';

	function __construct(){
		parent::__construct();
	}

	public function getForm($data = array(), $loadData = true) {

		$app	= JFactory::getApplication();
		$form 	= $this->loadForm('com_icagenda.template', 'themes', array('control' => 'jform', 'load_data' => $loadData));
		if (empty($form)) {
			return false;
		}
		return $form;
	}

	function install($theme) {
		$app		= JFactory::getApplication();
		$db 		= JFactory::getDBO();
		$package 	= $this->_getPackageFromUpload();

		if (!$package) {
			JError::raiseWarning(1, JText::_('COM_ICAGENDA_ERROR_FIND_INSTALL_PACKAGE'));
			$this->deleteTempFiles();
			return false;
		}

		if ($package['dir'] && JFolder::exists($package['dir'])) {
			$this->setPath('source', $package['dir']);
		} else {
			JError::raiseWarning(1, JText::_('COM_ICAGENDA_ERROR_INSTALL_PATH_NOT_EXISTS'));
			$this->deleteTempFiles();
			return false;
		}

		// We need to find the installation manifest file
		if (!$this->_findManifest()) {
			JError::raiseWarning(1, JText::_('COM_ICAGENDA_ERROR_FIND_INFO_INSTALL_PACKAGE'));
			$this->deleteTempFiles();
			return false;
		}

		// Files - copy files in manifest
		foreach ($this->_manifest->children() as $child)
		{
			if (is_a($child, 'JXMLElement') && $child->name() == 'files') {
				if ($this->parseFiles($child) === false) {
					JError::raiseWarning(1, JText::_('COM_ICAGENDA_ERROR_FIND_INFO_INSTALL_PACKAGE'));
					$this->deleteTempFiles();
					return false;
				}
			}
		}

		// File - copy the xml file
		$copyFile 		= array();
		$path['src']	= $this->getPath( 'manifest' ); // XML file will be copied too
		$path['dest']	= JPATH_SITE.DS.'components'.DS.'com_icagenda'.DS.'themes'.DS. basename($this->getPath('manifest'));
		$copyFile[] 	= $path;
		$this->copyFiles($copyFile, array());
		$this->deleteTempFiles();

		// -------------------
		// Themes
		// -------------------
		// Params -  Get new themes params
		$paramsThemes = $this->getParamsThemes();


		// -------------------
		// Component
		// -------------------
		if (isset($theme['component']) && $theme['component'] == 1 ) {

			$component			= 'com_icagenda';
			$paramsC			= JComponentHelper::getParams($component) ;

			foreach($paramsThemes as $keyT => $valueT) {
if(version_compare(JVERSION, '3.0', 'lt')) {
				$paramsC->setValue($valueT['name'], $valueT['value']);
} else {
				$paramsC->set($valueT['name'], $valueT['value']);
}
			}

			$data['params'] 	= $paramsC->toArray();
			$table 				= JTable::getInstance('extension');

			$idCom				= $table->find( array('element' => $component ));
			$table->load($idCom);

			if (!$table->bind($data)) {
				JError::raiseWarning( 500, 'Not a valid component' );
				return false;
			}

			// pre-save checks
			if (!$table->check()) {
				JError::raiseWarning( 500, $table->getError('Check Problem') );
				return false;
			}

			// save the changes
			if (!$table->store()) {
				JError::raiseWarning( 500, $table->getError('Store Problem') );
				return false;
			}
		}

		return true;
	}

	function _getPackageFromUpload()
	{
		// Get the uploaded file information
		$userfile = JRequest::getVar('Filedata', null, 'files', 'array' );
// 2.5		$userfile = JRequest::getVar('install_package', null, 'files', 'array' );

		// Make sure that file uploads are enabled in php
		if (!(bool) ini_get('file_uploads')) {
			JError::raiseWarning('SOME_ERROR_CODE', JText::_('COM_ICAGENDA_ERROR_INSTALL_FILE_UPLOAD'));
			return false;
		}

		// Make sure that zlib is loaded so that the package can be unpacked
		if (!extension_loaded('zlib')) {
			JError::raiseWarning('SOME_ERROR_CODE', JText::_('COM_ICAGENDA_ERROR_INSTALL_ZLIB'));
			return false;
		}

		// If there is no uploaded file, we have a problem...
		if (!is_array($userfile) ) {
			JError::raiseWarning('SOME_ERROR_CODE', JText::_('COM_ICAGENDA_ERROR_NO_FILE_SELECTED'));
			return false;
		}

		// Check if there was a problem uploading the file.
		if ( $userfile['error'] || $userfile['size'] < 1 ) {
			JError::raiseWarning('SOME_ERROR_CODE', JText::_('COM_ICAGENDA_ERROR_UPLOAD_FILE'));
			return false;
		}

		// Build the appropriate paths
if(version_compare(JVERSION, '3.0', 'lt')) {
		$config 	=& JFactory::getConfig();
		$tmp_dest 	= $config->getValue('config.tmp_path').DS.$userfile['name'];
} else {
		$config 	=& JFactory::getConfig();
		$tmp_dest 	= $config->get('tmp_path') . '/' . $userfile['name'];
}

		$tmp_src	= $userfile['tmp_name'];

		// Move uploaded file
		jimport('joomla.filesystem.file');
		$uploaded = JFile::upload($tmp_src, $tmp_dest);

		// Unpack the downloaded package file
if(version_compare(JVERSION, '3.0', 'lt')) {
		$package = JInstallerHelper::unpack($tmp_dest);
} else {
		$package = self::unpack($tmp_dest);
}

		$this->_manifest =& $manifest;

		$this->setPath('packagefile', $package['packagefile']);
		$this->setPath('extractdir', $package['extractdir']);

		return $package;
	}

	function getPath($name, $Default=null) {
		return (!empty($this->_paths[$name])) ? $this->_paths[$name] : $Default;
	}

	function setPath($name, $value) {
		$this->_paths[$name] = $value;
	}

	function _findManifest() {
		// Get an array of all the xml files from teh installation directory
		$xmlfiles = JFolder::files($this->getPath('source'), '.xml$', 1, true);

		// If at least one xml file exists
		if (count($xmlfiles) > 0) {
			foreach ($xmlfiles as $file)
			{
				// Is it a valid joomla installation manifest file?
				$manifest = $this->_isManifest($file);
				if (!is_null($manifest)) {

					$attr = $manifest->attributes();
					if ((string)$attr['method'] != 'icthemes') {
						JError::raiseWarning(1, JText::_('COM_ICAGENDA_ERROR_NO_THEME_FILE'));
						return false;
					}

					// Set the manifest object and path
					$this->_manifest =& $manifest;
					$this->setPath('manifest', $file);

					// Set the installation source path to that of the manifest file
					$this->setPath('source', dirname($file));

					return true;
				}
			}

			// None of the xml files found were valid install files
			JError::raiseWarning(1, JText::_('COM_ICAGENDA_ERROR_XML_INSTALL_ICAGENDA'));
			return false;
		} else {
			// No xml files were found in the install folder
			JError::raiseWarning(1, JText::_('COM_ICAGENDA_ERROR_XML_INSTALL'));
			return false;
		}
	}

	function _isManifest($file) {
		$xml	= JFactory::getXML($file, true);
		if (!$xml) {
			unset ($xml);
			return null;
		}
		if (!is_object($xml) || ($xml->name() != 'install' )) {
			unset ($xml);
			return null;
		}
		return $xml;
	}


	function parseFiles($element, $cid=0) {
		$copyfiles 		= array();
		$copyfolders 	= array();

		if (!is_a($element, 'JXMLElement') || !count($element->children())) {
			return 0;// Either the tag does not exist or has no children therefore we return zero files processed.
		}

		$files = $element->children();// Get the array of file nodes to process

		if (count($files) == 0) {
			return 0;// No files to process
		}

		$source 	 	= $this->getPath('source');
		$destination 	= JPATH_SITE.DS.'components'.DS.'com_icagenda'.DS.'themes';
		$destination2 	= JPATH_SITE.DS.'components'.DS.'com_icagenda'.DS.'themes'.DS.'packs';

if(version_compare(JVERSION, '3.0', 'lt')) {
		foreach ($files as $file) {
			if ($file->name() == 'folder') {
				$path['src']	= $source.DS.$file->data();
				$path['dest']	= $destination2.DS.$file->data();
				$copyfolders[] = $path;
			} else {
				$path['src']	= $source.DS.$file->data();
				$path['dest']	= $destination.DS.$file->data();
				$copyfiles[] = $path;
			}
		}
} else {
		if(!empty($files->folder)){
			foreach ($files->folder as $fk => $fv) {
				$path['src']	= $source . '/' . $fv;
				$path['dest']	= $destination2 . '/' . $fv;
				$copyfolders[] = $path;
			}
		}
		if (!empty($files->filename)) {
			foreach($files->filename as $fik => $fiv) {
				$path['src']	= $source . '/' . $fiv;
				$path['dest']	= $destination . '/' . $fiv;
				$copyfiles[] = $path;
			}
		}
}

		return $this->copyFiles($copyfiles, $copyfolders);
	}

	function copyFiles($files, $folders) {

		$i = 0;
		$fileIncluded = $folderIncluded = 0;
		if (is_array($folders) && count($folders) > 0)
		{
			foreach ($folders as $folder)
			{
				// Get the source and destination paths
				$foldersource	= JPath::clean($folder['src']);
				$folderdest		= JPath::clean($folder['dest']);

				if (!JFolder::exists($foldersource)) {
					JError::raiseWarning(1, JText::sprintf('COM_ICAGENDA_FOLDER_NOT_EXISTS', $foldersource));
					return false;
				} else {
					if (!(JFolder::copy($foldersource, $folderdest, '', true))) {
						JError::raiseWarning(1, JText::sprintf('COM_ICAGENDA_ERROR_COPY_FOLDER_TO', $foldersource, $folderdest));
						return false;
					} else {
						$i++;
					}
				}
			}
			$folderIncluded = 1;
		}

		if (is_array($files) && count($files) > 0)
		{
			foreach ($files as $file)
			{
				// Get the source and destination paths
				$filesource	= JPath::clean($file['src']);
				$filedest	= JPath::clean($file['dest']);

				if (!file_exists($filesource)) {
					JError::raiseWarning(1, JText::sprintf('COM_ICAGENDA_FILE_NOT_EXISTS', $filesource));
					return false;
				} else {
					if (!(JFile::copy($filesource, $filedest))) {
						JError::raiseWarning(1, JText::sprintf('COM_ICAGENDA_ERROR_COPY_FILE_TO', $filesource, $filedest));
						return false;
					} else {
						$i++;
					}
				}
			}
			$fileIncluded = 1;
		}

		if ($fileIncluded == 0 && $folderIncluded ==0) {
			JError::raiseWarning(1, JText::sprintf('COM_ICAGENDA_ERROR_INSTALL_FILE'));
			return false;
		}

		return $i;// Possible TO DO, now it returns count folders and files togeter, //return count($files);
	}

	protected function getParamsThemes() {

		$element = $this->_manifest->children()->params;

		if (!is_a($element, 'JXMLElement') || !count($element->children())) {
			return null;// Either the tag does not exist or has no children therefore we return zero files processed.
		}

		$params = $element->children();
		if (count($params) == 0) {
			return null;// No params to process
		}

		// Process each parameter in the $params array.
		$paramsArray = array();
		$i=0;
		foreach ($params as $param) {
			if (!$name = $param['name']) {
				continue;
			}
			if (!$value = $param['default']) {
				continue;
			}

			$paramsArray[$i]['name'] = (string)$name;
			$paramsArray[$i]['value'] = (string)$value;
			$i++;
		}
		return $paramsArray;
	}

	function deleteTempFiles() {
		$path = $this->getPath('source');
		if (is_dir($path)) {
			$val = JFolder::delete($path);
		} else if (is_file($path)) {
			$val = JFile::delete($path);
		}
		$packageFile = $this->getPath('packagefile');
		if (is_file($packageFile)) {
			$val = JFile::delete($packageFile);
		}
		$extractDir = $this->getPath('extractdir');
		if (is_dir($extractDir)) {
			$val = JFolder::delete($extractDir);
		}
	}


	/*
	 * Added @since 3.0.
	 */
	public static function unpack($p_filename)
	{
		// Path to the archive
		$archivename = $p_filename;

		// Temporary folder to extract the archive into
		$tmpdir = uniqid('install_');

		// Clean the paths to use for archive extraction
		$extractdir = JPath::clean(dirname($p_filename) . '/' . $tmpdir);
		$archivename = JPath::clean($archivename);

		// Do the unpacking of the archive
		try
		{
			JArchive::extract($archivename, $extractdir);
		}
		catch (Exception $e)
		{
			return false;
		}

		/*
		 * Let's set the extraction directory and package file in the result array so we can
		 * cleanup everything properly later on.
		 */
		$retval['extractdir'] = $extractdir;
		$retval['packagefile'] = $archivename;

		/*
		 * Try to find the correct install directory.  In case the package is inside a
		 * subdirectory detect this and set the install directory to the correct path.
		 *
		 * List all the items in the installation directory.  If there is only one, and
		 * it is a folder, then we will set that folder to be the installation folder.
		 */
		$dirList = array_merge(JFolder::files($extractdir, ''), JFolder::folders($extractdir, ''));

		if (count($dirList) == 1)
		{
			if (JFolder::exists($extractdir . '/' . $dirList[0]))
			{
				$extractdir = JPath::clean($extractdir . '/' . $dirList[0]);
			}
		}

		/*
		 * We have found the install directory so lets set it and then move on
		 * to detecting the extension type.
		 */
		$retval['dir'] = $extractdir;

		/*
		 * Get the extension type and return the directory/type array on success or
		 * false on fail.
		 */
		$retval['type'] = self::detectType($extractdir);
		if ($retval['type'])
		{
			return $retval;
		}
		else
		{
			return false;
		}
	}

	/*
	 * Added @since 3.0.
	 */
	public static function detectType($p_dir)
	{
		// Search the install dir for an XML file
		$files = JFolder::files($p_dir, '\.xml$', 1, true);

		if (!count($files))
		{
			JLog::add(JText::_('JLIB_INSTALLER_ERROR_NOTFINDXMLSETUPFILE'), JLog::WARNING, 'jerror');
			return false;
		}

		foreach ($files as $file)
		{
			$xml = simplexml_load_file($file);

			if (!$xml)
			{
				continue;
			}

			if ($xml->getName() != 'install')
			{
				unset($xml);
				continue;
			}

			$type = (string) $xml->attributes()->type;

			// Free up memory
			unset($xml);
			return $type;
		}

		JLog::add(JText::_('JLIB_INSTALLER_ERROR_NOTFINDJOOMLAXMLSETUPFILE'), JLog::WARNING, 'jerror');

		// Free up memory.
		unset($xml);
		return false;
	}

}
?>
models/feature.php000060400000010215152455705350010201 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      doorknob
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-12-05
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modeladmin');

/**
 * iCagenda model.
 */
class iCagendaModelfeature extends JModelAdmin
{
	/**
	 * @var		string	The prefix to use with controller messages.
	 * @since	3.4.0
	 */
	protected $text_prefix = 'COM_ICAGENDA';

	/**
	 * Returns a reference to the a Table object, always creating it.
	 *
	 * @param	type	The table type to instantiate
	 * @param	string	A prefix for the table class name. Optional.
	 * @param	array	Configuration array for model. Optional.
	 * @return	JTable	A database object
	 * @since	3.4.0
	 */
	public function getTable($type = 'Feature', $prefix = 'iCagendaTable', $config = array())
	{
		return JTable::getInstance($type, $prefix, $config);
	}

	/**
	 * Method to get the record form.
	 *
	 * @param	array	$data		An optional array of data for the form to interogate.
	 * @param	boolean	$loadData	True if the form is to load its own data (default case), false if not.
	 * @return	JForm	A JForm object on success, false on failure
	 * @since	3.4.0
	 */
	public function getForm($data = array(), $loadData = true)
	{
		// Initialise variables.
		$app	= JFactory::getApplication();

		// Get the form.
		$form = $this->loadForm('com_icagenda.feature', 'feature', array('control' => 'jform', 'load_data' => $loadData));

		if (empty($form))
		{
			return false;
		}

		return $form;
	}

	/**
	 * Method to get the data that should be injected in the form.
	 *
	 * @return	mixed	The data for the form.
	 * @since	3.4.0
	 */
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$data = JFactory::getApplication()->getUserState('com_icagenda.edit.feature.data', array());

		if (empty($data))
		{
			$data = $this->getItem();
		}

		return $data;
	}

	/**
	 * Method to get a single record.
	 *
	 * @param	integer	The id of the primary key.
	 *
	 * @return	mixed	Object on success, false on failure.
	 * @since	3.4.0
	 */
	public function getItem($pk = null)
	{
		if ($item = parent::getItem($pk))
		{
			//Do any procesing on fields here if needed
		}

		return $item;
	}

	/**
	 * Prepare and sanitise the table prior to saving.
	 *
	 * @since	3.4.0
	 */
	protected function prepareTable($table)
	{
		jimport('joomla.filter.output');

		if (empty($table->id))
		{
			// Set ordering to the last item if not set
			if (@$table->ordering === '')
			{
				$db = JFactory::getDbo();
				$db->setQuery('SELECT MAX(ordering) FROM #__icagenda_feature');
				$max = $db->loadResult();
				$table->ordering = $max+1;
			}
		}
	}

	/**
	 * Method to save the form data.
	 *
	 * @param   array  $data  The form data.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   3.4.0
	 */
	public function save($data)
	{
		$date = JFactory::getDate();

		if (empty($data['created']))
		{
			$data['created'] = !empty($data['created']) ? $data['created'] : $date->toSql();
		}

		// Generates Alias if empty
		// Alias is not generated if non-latin characters, so we fix it by using created date, or title if unicode is activated, as alias
		if ($data['alias'] == null || empty($data['alias']))
		{
			$data['alias'] = JFilterOutput::stringURLSafe($data['title']);

			if ($data['alias'] == null || empty($data['alias']))
			{
				if (JFactory::getConfig()->get('unicodeslugs') == 1)
				{
					$data['alias'] = JFilterOutput::stringURLUnicodeSlug($data['title']);
				}
				else
				{
					$data['alias'] = JFilterOutput::stringURLSafe($data['created']);
				}
			}
		}

		$return = parent::save($data);

		return $return;
	}
}
models/registration.php000060400000013331152455705350011262 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.7 2015-07-16
 * @since       3.3.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modeladmin');


/**
 * iCagenda model.
 */
class iCagendaModelregistration extends JModelAdmin
{
	/**
	 * @var		string	The prefix to use with controller messages.
	 * @since	3.3.3
	 */
	protected $text_prefix = 'COM_ICAGENDA';

	/**
	 * Method to test whether a record can be deleted.
	 *
	 * @param   object  $record  A record object.
	 *
	 * @return  boolean  True if allowed to delete the record. Defaults to the permission set in the component.
	 *
	 * @since   3.5.6
	 */
	protected function canDelete($record)
	{
		if ( ! empty($record->id))
		{
			if ($record->state != -2)
			{
				return false;
			}

			$user = JFactory::getUser();

			if ($user->authorise('core.delete'))
			{
				icagendaCustomfields::deleteData($record->id, 1);
				icagendaCustomfields::cleanData(1);

				return true;
			}
		}

		return false;
	}

	/**
	 * Returns a reference to the a Table object, always creating it.
	 *
	 * @param	type	The table type to instantiate
	 * @param	string	A prefix for the table class name. Optional.
	 * @param	array	Configuration array for model. Optional.
	 * @return	JTable	A database object
	 * @since	3.3.3
	 */
	public function getTable($type = 'Registration', $prefix = 'iCagendaTable', $config = array())
	{
		return JTable::getInstance($type, $prefix, $config);
	}

	/**
	 * Method to get the record form.
	 *
	 * @param	array	$data		An optional array of data for the form to interogate.
	 * @param	boolean	$loadData	True if the form is to load its own data (default case), false if not.
	 * @return	JForm	A JForm object on success, false on failure
	 * @since	3.3.3
	 */
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_icagenda.registration', 'registration',
								array('control' => 'jform', 'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		return $form;
	}

	/**
	 * Method to get the data that should be injected in the form.
	 *
	 * @return	mixed	The data for the form.
	 * @since	3.3.3
	 */
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$data_array = JFactory::getApplication()->getUserState('com_icagenda.edit.registration.data', array());

		if (empty($data_array))
		{
			$data = $this->getItem();
		}
		else
		{
			$data = new JObject;
			$data->setProperties($data_array);
		}

		return $data;
	}

	/**
	 * Method to save the form data.
	 *
	 * @param   array  $data  The form data.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since	3.5.6
	 */
	public function save($data)
	{
		$app	= JFactory::getApplication();
		$input	= $app->input;
		$date	= JFactory::getDate();
		$user	= JFactory::getUser();

//		if (empty($data['created'])) // not to be used, to leave created empty if before update to 3.5.7
//		{
//			$data['created'] = ( ! empty($data['modified'])) ? $data['modified'] : $date->toSql();
//		}

		// Set registration creator
		if (empty($data['created_by']))
		{
			$data['created_by'] = (int) $data['userid'];
		}

		// Set Params
		if (isset($data['params']) && is_array($data['params']))
		{
			// Convert the params field to a string.
			$parameter = new JRegistry;
			$parameter->loadArray($data['params']);
			$data['params'] = (string)$parameter;
		}

		if ($input->get('task') == 'delete')
		{
			icagendaCustomfields::deleteData($data['custom_fields'], $data['id'], 1);
			$app->enqueueMessage('Test', 'warning');
		}

		// Get Registration ID from the result back to the Table after saving.
		$table = $this->getTable();

		if ($table->save($data) === true)
		{
			$data['id'] = $table->id;
		}
		else
		{
			$data['id'] = null;
		}

		if (parent::save($data))
		{
			// Save Custom Fields to database
			if (isset($data['custom_fields']) && is_array($data['custom_fields']))
			{
				icagendaCustomfields::saveToData($data['custom_fields'], $data['id'], 1);
			}

			return true;
		}

		return false;
	}

	/**
	 * Method to get a single record.
	 *
	 * @param	integer	The id of the primary key.
	 *
	 * @return	mixed	Object on success, false on failure.
	 * @since	3.3.3
	 */
	public function getItem($pk = null)
	{
		if ($item = parent::getItem($pk))
		{
			// Do any procesing on fields here if needed
		}

		return $item;
	}

	/**
	 * Prepare and sanitise the table prior to saving.
	 *
	 * @since	3.3.3
	 */

	protected function prepareTable($table)
	{
		$date = JFactory::getDate();
		$user = JFactory::getUser();

		$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);

		if (empty($table->id))
		{
			// Set the values
			$table->created		= $date->toSql();
			$table->created_by	= $user->get('id');

			// Set ordering to the last item if not set
			if (empty($table->ordering))
			{
				$db = JFactory::getDbo();
				$query = $db->getQuery(true)
					->select('MAX(ordering)')
					->from($db->quoteName('#__icagenda_registration'));
				$db->setQuery($query);
				$max = $db->loadResult();

				$table->ordering = $max + 1;
			}
		}
		else
		{
			// Set the values
			$table->modified	= $date->toSql();
			$table->modified_by	= $user->get('id');
		}
	}
}
models/forms/event.xml000060400000032151152455705350011031 0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset addfieldpath="/administrator/components/com_icagenda/models/fields" >
		<field
			name="id"
			type="text"
			label="JGLOBAL_FIELD_ID_LABEL"
			description ="JGLOBAL_FIELD_ID_DESC"
			class="readonly"
			size="10"
			readonly="true"
			default="0"
			/>
		<field
			name="title"
			type="text"
			label="COM_ICAGENDA_FORM_LBL_EVENT_TITLE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_TITLE"
			class="input-xlarge"
			size="30"
			required="true"
			/>
		<field
			name="alias"
			type="text"
			label="JFIELD_ALIAS_LABEL"
			description="JFIELD_ALIAS_DESC"
			/>
		<field
			name="state"
			type="list"
			label="JSTATUS"
			description="JFIELD_PUBLISHED_DESC"
			class="span12 small"
			filter="intval"
			size="1"
			default="1"
			>
			<option value="1">JPUBLISHED</option>
			<option value="0">JUNPUBLISHED</option>
			<option value="2">JARCHIVED</option>
			<option value="-2">JTRASHED</option>
		</field>
		<field
			name="approval"
			type="list"
			label="COM_ICAGENDA_EVENTS_APPROVAL"
			description="COM_ICAGENDA_EVENTS_APPROVAL_DESC"
			class="span12 small"
			filter="intval"
			size="1"
			default="0"
			>
			<option value="0">COM_ICAGENDA_APPROVED</option>
			<option value="1">COM_ICAGENDA_UNAPPROVED</option>
		</field>
		<field
			name="site_itemid"
			type="test"
			label="COM_ICAGENDA_FORM_FRONTEND_SUBMIT_ITEMID_LBL"
			description="COM_ICAGENDA_FORM_FRONTEND_SUBMIT_ITEMID_DESC"
			size="3"
			class="inputbox"
			readonly="true"
			default="0"
			/>
		<field
			name="access"
			type="accesslevel"
			label="JFIELD_ACCESS_LABEL"
			description="COM_ICAGENDA_ACCESS_DESC"
			class="span12 small"
			size="1"
			default="1"
		/>
		<field
			name="language"
			type="contentlanguage"
			label="JFIELD_LANGUAGE_LABEL"
			description="COM_ICAGENDA_FORM_DESC_LANGUAGE"
			class="span12 small"
			>
			<option value="*">JALL</option>
		</field>
		<field
			name="created"
			type="calendar"
			label="JGLOBAL_FIELD_CREATED_LABEL"
			format="%Y-%m-%d %H:%M:%S"
			filter="user_utc"
			/>
		<field
			name="created_by"
			type="user"
			label="JGLOBAL_FIELD_CREATED_BY_LABEL"
			description="JGLOBAL_FIELD_CREATED_BY_DESC"
			/>
		<field
			name="created_by_alias"
			type="text"
			label="JGLOBAL_FIELD_CREATED_BY_ALIAS_LABEL"
			description="JGLOBAL_FIELD_CREATED_BY_ALIAS_DESC"
			class="inputbox"
			size="20"
			/>
		<field
			name="username"
			type="text"
			label="COM_ICAGENDA_FORM_LBL_EVENT_USERNAME"
			description="COM_ICAGENDA_FORM_DESC_EVENT_USERNAME"
			size="40"
			class="inputbox"
			filter="safehtml"
			/>
		<field
			name="modified"
			type="calendar"
			label="JGLOBAL_FIELD_MODIFIED_LABEL"
			class="readonly"
			size="22"
			readonly="true"
			format="%Y-%m-%d %H:%M:%S"
			filter="user_utc"
			/>
		<field
			name="modified_by"
			type="user"
			label="JGLOBAL_FIELD_MODIFIED_BY_LABEL"
			description="JGLOBAL_FIELD_MODIFIED_BY_DESC"
			class="readonly"
			readonly="true"
			filter="unset"
			/>
		<field name="checked_out" type="hidden" filter="unset" />
		<field name="checked_out_time" type="hidden" filter="unset" />
		<field
			name="catid"
			type="modal_cat"
			label="COM_ICAGENDA_FORM_LBL_EVENT_CATID"
			description="COM_ICAGENDA_FORM_DESC_EVENT_CATID"
			class="inputbox"
			required="true"
			/>
		<field
			name="image"
			type="media"
			label="COM_ICAGENDA_FORM_LBL_EVENT_IMAGE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_IMAGE"
			filter="safehtml"
			/>
		<field
			name="file"
			type="modal_icfile"
			class="inputbox"
			id="upload_file"
			label="COM_ICAGENDA_FORM_LBL_EVENT_FILE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_FILE"
			/>
		<field
			name="displaytime"
			type="radio"
			class="btn-group"
			label="COM_ICAGENDA_DISPLAY_TIME_LABEL"
			description="COM_ICAGENDA_DISPLAY_TIME_DESC"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="dates"
			type="modal_date"
			class="inputbox"
			label="COM_ICAGENDA_FORM_LBL_EVENT_DATES"
			description="COM_ICAGENDA_FORM_DESC_EVENT_DATES"
			default="0000-00-00 00:00"
			/>
		<!--field
			name="eventDates"
			type="modal_ic_singledates"
			label="COM_ICAGENDA_FORM_LBL_EVENT_DATES"
			description="COM_ICAGENDA_FORM_DESC_EVENT_DATES"
			class="inputbox"
			/-->
		<field
			name="startdate"
			type="modal_startdate"
			size="40"
			class="inputbox"
			label="COM_ICAGENDA_FORM_LBL_EVENTPERIOD_START"
			description="COM_ICAGENDA_FORM_DESC_EVENTPERIOD_START"
			/>
		<field
			name="enddate"
			type="modal_enddate"
			size="40"
			class="inputbox"
			label="COM_ICAGENDA_FORM_LBL_EVENTPERIOD_END"
			description="COM_ICAGENDA_FORM_DESC_EVENTPERIOD_END"
			/>
		<field
			name="weekdays"
			type="list"
			label="COM_ICAGENDA_FORM_LBL_WEEK_DAYS"
			description="COM_ICAGENDA_FORM_WEEK_DAYS_INFO_DESC"
			multiple="true"
			default=""
			>
			<option value="0">SUNDAY</option>
			<option value="1">MONDAY</option>
			<option value="2">TUESDAY</option>
			<option value="3">WEDNESDAY</option>
			<option value="4">THURSDAY</option>
			<option value="5">FRIDAY</option>
			<option value="6">SATURDAY</option>
		</field>
		<!--field
			name="weekdays_filter"
			type="modal_icfilter_weekdays"
			label="COM_ICAGENDA_FORM_LBL_WEEK_DAYS"
			description="COM_ICAGENDA_FORM_DESC_WEEK_DAYS"
			multiple="true"
			default=""
			/-->
		<field
			name="next"
			type="hidden"
			class="inputbox"
			default="0000-00-00 00:00:00"
			/>
		<field
			name="email"
			type="email"
			label="COM_ICAGENDA_FORM_LBL_EVENT_EMAIL"
			description="COM_ICAGENDA_FORM_DESC_EVENT_EMAIL"
			size="30"
			class="inputbox"
			filter="safehtml"
			/>
		<field
			name="phone"
			type="text"
			label="COM_ICAGENDA_FORM_LBL_EVENT_PHONE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_PHONE"
			size="30"
			class="inputbox"
			filter="safehtml"
			/>
		<field
			name="website"
			type="text"
			label="COM_ICAGENDA_FORM_LBL_EVENT_WEBSITE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_WEBSITE"
			size="30"
			class="inputbox"
			filter="safehtml"
			/>
		<field
			name="features"
			type="sql"
			label="COM_ICAGENDA_FORM_LBL_EVENT_FEATURES"
			description="COM_ICAGENDA_FORM_DESC_EVENT_FEATURES"
			query="SELECT id AS value, title AS features FROM #__icagenda_feature WHERE state=1 AND icon IS NOT NULL AND icon!='' ORDER BY features"
			multiple="true"
			class="inputbox"
			/>
		<!--field
			name="features"
			type="modal_features"
			label="COM_ICAGENDA_FORM_LBL_EVENT_FEATURES"
			description="COM_ICAGENDA_FORM_DESC_EVENT_FEATURES"
			multiple="true"
			class="inputbox"
			/-->
		<field
			name="custom_fields"
			type="hidden"
			class="inputbox"
			default=""
			/>
		<field
			name="place"
			type="text"
			label="COM_ICAGENDA_FORM_LBL_EVENT_VENUE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_VENUE"
			size="30"
			class="inputbox"
			filter="safehtml"
			/>
		<field
			name="coordinate"
			type="modal_coordinate"
			label="COM_ICAGENDA_FORM_LBL_EVENT_MAP"
			description="COM_ICAGENDA_FORM_DESC_EVENT_MAP"
			class="inputbox"
			/>
		<field
			name="address"
			type="text"
			label="COM_ICAGENDA_GOOGLE_MAPS_ADDRESS_LBL"
			description="COM_ICAGENDA_FORM_DESC_EVENT_LOCATION"
			class="inputbox"
			filter="safehtml"
			/>
		<field
			name="city"
			type="icmap_city"
			label="COM_ICAGENDA_FORM_LBL_EVENT_CITY"
			description="COM_ICAGENDA_FORM_DESC_EVENT_CITY"
			class="inputbox"
			filter="safehtml"
			/>
		<field
			name="country"
			type="icmap_country"
			label="COM_ICAGENDA_FORM_LBL_EVENT_COUNTRY"
			description="COM_ICAGENDA_FORM_DESC_EVENT_COUNTRY"
			class="inputbox"
			filter="safehtml"
			labelclass="control-label"
			/>
		<field
			name="lat"
			type="icmap_lat"
			label="LATITUDE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_MAP"
			class="inputbox"
			/>
		<field
			name="lng"
			type="icmap_lng"
			label="LONGITUDE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_MAP"
			class="inputbox"
			/>
		<field
			name="shortdesc"
			type="modal_ictextarea_counter"
			label="COM_ICAGENDA_FORM_EVENT_SHORT_DESCRIPTION_LBL"
			description="COM_ICAGENDA_FORM_EVENT_SHORT_DESCRIPTION_DESC"
			class="span-12"
			row="3"
			cols="80"
			/>
		<field
			name="desc"
			type="editor"
			label="COM_ICAGENDA_FORM_LBL_EVENT_DESC"
			description="COM_ICAGENDA_FORM_DESC_EVENT_DESC"
			buttons="true"
			hide="readmore,pagebreak,helix_shortcode"
			class="inputbox"
			filter="JComponentHelper::filterText"
			/>
		<field
			name="metadesc"
			type="modal_ictextarea_counter"
			label="COM_ICAGENDA_FORM_EVENT_METADESC_LBL"
			description="COM_ICAGENDA_FORM_EVENT_METADESC_DESC"
			class="span-12"
			row="3"
			cols="80"
			/>
	</fieldset>
	<fields name="params">

		<!-- Registrations Tab - Individual Params -->
		<fieldset name="registrations"
			addfieldpath="/administrator/components/com_icagenda/assets/elements"
			>
			<field type="TitleHeader" label="COM_ICAGENDA_REGISTRATION_LABEL" />
			<field
				name="statutReg"
				type="radio"
				label="COM_ICAGENDA_REGISTRATION_LABEL"
				description="COM_ICAGENDA_REGISTRATION_DESC"
				labelclass="control-label"
				class="btn-group"
				default=""
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JOFF</option>
				<option value="1">JON</option>
			</field>
			<field
				name="accessReg"
				type="accesslevel"
				label="JFIELD_ACCESS_LABEL"
				description="JFIELD_ACCESS_DESC"
				class="inputbox"
				size="1"
				default=""
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
			</field>
			<field type="TitleHeader" label="COM_ICAGENDA_REGISTRATION_FORM_OPTIONS_LABEL" />
			<field
				name="typeReg"
				type="list"
				label="COM_ICAGENDA_TYPE_REG_LABEL"
				description="COM_ICAGENDA_TYPE_REG_DESC"
				default="1"
				>
				<option value="1">COM_ICAGENDA_ADMIN_REGISTRATION_BY_INDIVIDUAL_DATE</option>
				<option value="2">COM_ICAGENDA_ADMIN_REGISTRATION_FOR_ALL_DATES</option>
			</field>
			<!--field type="Title" label="COM_ICAGENDA_MAX_REGISTRATIONS_DESC"
				class="styleblanck"/-->
			<!--field
				name="maxRegGlobal"
				type="radio"
				label="JGLOBAL_USE_GLOBAL"
				description="JGLOBAL_USE_GLOBAL"
				default="1"
				>
				<option value="1">JYES</option>
				<option value="0">JNO</option>
			</field-->
			<field
				name="maxReg"
				type="text"
				label="COM_ICAGENDA_MAX_REGISTRATIONS_LABEL"
				description="COM_ICAGENDA_MAX_REGISTRATIONS_DESC"
				size="3"
				default=""
				/>
			<field
				name="maxRlistGlobal"
				type="radio"
				label="COM_ICAGENDA_MAX_PER_REGISTRATION_LABEL"
				description="COM_ICAGENDA_MAX_PER_REGISTRATION_DESC"
				labelclass="control-label"
				class="btn-group"
				default=""
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="2">COM_ICAGENDA_LBL_CUSTOM_VALUE</option>
			</field>
			<field
				name="maxRlist"
				type="text"
				label="COM_ICAGENDA_LBL_CUSTOM_VALUE"
				description="COM_ICAGENDA_DESC_CUSTOM_VALUE"
				size="2"
				default=""
				/>
			<field type="TitleHeader" label="COM_ICAGENDA_REGISTRATION_BUTTON" />
			<!--field
				name="maxRlistGlobal"
				type="radio"
				label="COM_ICAGENDA_MAX_PER_REGISTRATION_LABEL"
				description="COM_ICAGENDA_MAX_PER_REGISTRATION_DESC"
				labelclass="control-label"
				class="btn-group"
				default=""
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="2">COM_ICAGENDA_LBL_CUSTOM_VALUE</option>
			</field-->
			<field
				name="RegButtonText"
				type="modal_ph_regbt"
				label="COM_ICAGENDA_REGISTRATION_BUTTON_TEXT"
				description="COM_ICAGENDA_REGISTRATION_BUTTON_TEXT_DESC"
				size="40"
				class="inputbox"
				default=""
				/>
			<field
				name="RegButtonLink"
				type="modal_iclink_type"
				label="COM_ICAGENDA_REGISTRATION_LINK_LBL"
				description="COM_ICAGENDA_REGISTRATION_LINK_DESC"
				labelclass="control-label"
				default=""
				/>
			<field
				name="RegButtonLink_Article"
				type="modal_iclink_article"
				label=" "
				class="inputbox"
				/>
			<field
				name="RegButtonLink_Url"
				type="modal_iclink_url"
				label=" "
				class="inputbox"
				/>
			<field
				name="RegButtonTarget"
				type="list"
				label="COM_ICAGENDA_BROWSER_TARGET"
				description="COM_ICAGENDA_REGISTRATION_LINK_BROWSER_TARGET_DESC"
				default="0"
				filter="options"
				class="inputbox"
				>
				<option value="0">JBROWSERTARGET_PARENT</option>
				<option value="1">JBROWSERTARGET_NEW</option>
			</field>
			<field type="Title" label=" "
				class="styleblanck"/>
		</fieldset>

		<!-- Registrations Tab - Actions -->
		<fieldset name="registration_actions">
		</fieldset>

		<!-- Option Tab - Options -->
		<fieldset name="options">
			<field type="Title" label="COM_ICAGENDA_ADDTHIS"
				class="styleblanck"/>
			<field
				name="atevent"
				type="radio"
				label="COM_ICAGENDA_ADDTHIS_DISPLAY_SHARING"
				description="COM_ICAGENDA_ADDTHIS_EVENT_DESC"
				class="btn-group"
				default=""
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<!--field
				name="mapTypeId"
				type="list"
				label="mapTypeId"
				description="mapTypeId"
				filter="safehtml"
				default="ROADMAP"
				>
				<option value="ROADMAP">ROADMAP</option>
				<option value="TERRAIN">TERRAIN</option>
				<option value="SATELLITE">SATELLITE</option>
				<option value="HYBRID">HYBRID</option>
			</field-->
		</fieldset>
	</fields>
</form>
models/forms/download.xml000060400000006150152455705350011517 0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="details" addfieldpath="/administrator/components/com_icagenda/assets/elements">
		<field
			type="TitleImg"
			label="JOPTIONS"
			class="stylebox lead input-xxlarge"
			icicon="options"
			/>
		<field
			name="event_title"
			type="radio"
			class="btn-group btn-group-yesno"
			label="COM_ICAGENDA_REGISTRATION_EVENTID"
			default="1"
		>
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field
			name="date"
			type="radio"
			class="btn-group btn-group-yesno"
			label="COM_ICAGENDA_REGISTRATION_DATE"
			default="1"
		>
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field
			name="tickets"
			type="radio"
			class="btn-group btn-group-yesno"
			label="COM_ICAGENDA_REGISTRATION_TICKETS"
			default="1"
		>
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field
			name="name"
			type="radio"
			class="btn-group btn-group-yesno"
			label="IC_NAME"
			default="1"
		>
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field
			name="email"
			type="radio"
			class="btn-group btn-group-yesno"
			label="COM_ICAGENDA_REGISTRATION_EMAIL"
			default="1"
		>
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field
			name="phone"
			type="radio"
			class="btn-group btn-group-yesno"
			label="COM_ICAGENDA_REGISTRATION_PHONE"
			default="1"
		>
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field
			name="customfields"
			type="radio"
			class="btn-group btn-group-yesno"
			label="COM_ICAGENDA_CUSTOMFIELDS"
			default="1"
		>
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field
			name="notes"
			type="radio"
			class="btn-group btn-group-yesno"
			label="COM_ICAGENDA_REGISTRATION_NOTES_DISPLAY_LABEL"
			default="0"
		>
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field
			name="status"
			type="radio"
			class="btn-group btn-group-yesno"
			label="JSTATUS"
			default="0"
		>
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_REGISTRATIONS_EXPORT"
			class="stylebox lead input-xxlarge"
			icicon="logo"
			/>
		<field
			name="basename"
			type="text"
			size="40"
			label="COM_ICAGENDA_EXPORT_BASENAME_LABEL"
			description="COM_ICAGENDA_EXPORT_BASENAME_DESC"
			class="inputbox"
			/>
		<field
			name="separator"
			type="radio"
			class="btn-group btn-group-yesno"
			label="COM_ICAGENDA_EXPORT_SEPARATOR_LABEL"
			description="COM_ICAGENDA_EXPORT_SEPARATOR_DESC"
			default="1"
		>
			<option value="1">IC_COMMA</option>
			<option value="2">IC_SEMICOLON</option>
		</field>
		<field
			name="compressed"
			type="radio"
			class="btn-group btn-group-yesno"
			label="COM_ICAGENDA_EXPORT_COMPRESSED_LABEL"
			description="COM_ICAGENDA_EXPORT_COMPRESSED_DESC"
			default="0"
		>
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field type="Title" label=" " class="stylenote"/>
	</fieldset>
</form>
models/forms/customfield.xml000060400000010221152455705350012220 0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset addfieldpath="/administrator/components/com_icagenda/models/fields">
		<field
			name="id"
			type="text"
			class="readonly"
			label="JGLOBAL_FIELD_ID_LABEL"
			description ="JGLOBAL_FIELD_ID_DESC"
			size="10"
			default="0"
			readonly="true"
			/>
		<field
			name="state"
			type="list"
			label="JSTATUS"
			description="JFIELD_PUBLISHED_DESC"
			class="span12 small"
			filter="intval"
			size="1"
			default="1"
			>
				<option value="1">JPUBLISHED</option>
				<option value="0">JUNPUBLISHED</option>
		</field>
		<field
			name="title"
			type="text"
			label="COM_ICAGENDA_CUSTOMFIELD_TITLE_LBL"
			description="COM_ICAGENDA_CUSTOMFIELD_TITLE_DESC"
			size="30"
			required="true"
			/>
		<field
			name="alias"
			type="text"
			label="JFIELD_ALIAS_LABEL"
			description="JFIELD_ALIAS_DESC"
			/>
		<field
			name="slug"
			type="text"
			label="COM_ICAGENDA_CUSTOMFIELD_SLUG_LBL"
			description="COM_ICAGENDA_CUSTOMFIELD_SLUG_DESC"
			/>
		<field
			name="description"
			type="editor"
			buttons="readmore,pagebreak"
			class="inputbox"
			filter="JComponentHelper::filterText"
			label="COM_ICAGENDA_CUSTOMFIELD_DESCRIPTION_LBL"
			description="COM_ICAGENDA_CUSTOMFIELD_DESCRIPTION_DESC"
			/>
		<field
			name="parent_form"
			type="list"
			filter="intval"
			required="true"
			label="COM_ICAGENDA_CUSTOMFIELD_PARENT_FORM_LBL"
			description="COM_ICAGENDA_CUSTOMFIELD_PARENT_FORM_DESC"
			default=""
			>
				<option value="">COM_ICAGENDA_CUSTOMFIELD_PARENT_SELECT</option>
				<option value="1">COM_ICAGENDA_CUSTOMFIELD_PARENT_REGISTRATION_FORM</option>
				<option value="2">COM_ICAGENDA_CUSTOMFIELD_PARENT_EVENT_EDIT</option>
		</field>
		<field
			name="type"
			type="list"
			required="true"
			label="COM_ICAGENDA_CUSTOMFIELD_TYPE_LBL"
			description="COM_ICAGENDA_CUSTOMFIELD_TYPE_DESC"
			default=""
			>
				<option value="">COM_ICAGENDA_CUSTOMFIELD_TYPE_SELECT</option>
				<option value="text">COM_ICAGENDA_CUSTOMFIELD_TYPE_TEXT</option>
				<option value="list">COM_ICAGENDA_CUSTOMFIELD_TYPE_LIST</option>
				<option value="radio">COM_ICAGENDA_CUSTOMFIELD_TYPE_RADIO</option>
		</field>
		<field
			name="options"
			type="textarea"
			label="COM_ICAGENDA_CUSTOMFIELD_OPTIONS_LBL"
			description="COM_ICAGENDA_CUSTOMFIELD_OPTIONS_DESC"
			/>
		<field
			name="default"
			type="text"
			label="COM_ICAGENDA_CUSTOMFIELD_DEFAULT_LBL"
			description="COM_ICAGENDA_CUSTOMFIELD_DEFAULT_DESC"
			/>
		<field
			name="required"
			type="radio"
			label="COM_ICAGENDA_CUSTOMFIELD_REQUIRED_LBL"
			description="COM_ICAGENDA_CUSTOMFIELD_REQUIRED_DESC"
			labelclass="control-label"
			class="btn-group"
			default="0"
			>
				<option value="0">JNO</option>
				<option value="1">JYES</option>
		</field>
		<field
			name="language"
			type="contentlanguage"
			label="JFIELD_LANGUAGE_LABEL"
			description="COM_ICAGENDA_CUSTOMFIELD_LANGUAGE_DESC"
			class="span12 small"
			>
				<option value="*">JALL</option>
		</field>
		<field
			name="created"
			type="calendar"
			label="JGLOBAL_FIELD_CREATED_LABEL"
			format="%Y-%m-%d %H:%M:%S"
			filter="user_utc"
			labelclass="control-label"
			/>
		<field
			name="created_by"
			type="user"
			label="JGLOBAL_FIELD_CREATED_BY_LABEL"
			description="JGLOBAL_FIELD_CREATED_BY_DESC"
			labelclass="control-label"
			/>
		<!-- created_by_alias to be removed ? Not really needed there... -->
		<field
			name="created_by_alias"
			type="text"
			label="JGLOBAL_FIELD_CREATED_BY_ALIAS_LABEL"
			description="JGLOBAL_FIELD_CREATED_BY_ALIAS_DESC"
			class="inputbox"
			size="20"
			labelclass="control-label"
			/>
		<field
			name="modified"
			type="calendar"
			class="readonly"
			label="JGLOBAL_FIELD_MODIFIED_LABEL"
			size="22"
			readonly="true"
			format="%Y-%m-%d %H:%M:%S"
			filter="user_utc"
			labelclass="control-label"
			/>
		<field
			name="modified_by"
			type="user"
			label="JGLOBAL_FIELD_MODIFIED_BY_LABEL"
			description="JGLOBAL_FIELD_MODIFIED_BY_DESC"
			class="readonly"
			readonly="true"
			filter="unset"
			labelclass="control-label"
			/>
		<field name="checked_out" type="hidden" filter="unset" />
		<field name="checked_out_time" type="hidden" filter="unset" />
	</fieldset>
</form>
models/forms/index.html000060400000000054152455705350011160 0ustar00<html><body bgcolor="#FFFFFF"></body></html>models/forms/feature.xml000060400000004256152455705350011350 0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset addfieldpath="/administrator/components/com_icagenda/models/fields">

		<field
			name="id"
			type="text"
			class="readonly"
			label="JGLOBAL_FIELD_ID_LABEL"
			description ="JGLOBAL_FIELD_ID_DESC"
			size="10"
			default="0"
			readonly="true"
		/>

		<field
			name="title"
			type="text"
			label="COM_ICAGENDA_FORM_FEATURE_TITLE_LABEL"
			description="COM_ICAGENDA_FORM_FEATURE_TITLE_DESC"
			size="30"
			required="true"
		/>

		<field
			name="alias"
			type="text"
			label="JFIELD_ALIAS_LABEL"
			description="JFIELD_ALIAS_DESC"
		/>

		<field
			name="icon"
			type="imagelist"
			directory="images/icagenda/feature_icons/16_bit"
			exclude="\.(?:html|htm)$"
			hide_none="false"
			hide_default="true"
			label="COM_ICAGENDA_FORM_FEATURE_ICON_LABEL"
			description="COM_ICAGENDA_FORM_FEATURE_ICON_DESC"
			required="false"
		/>

		<field
			name="new_icon"
			type="media"
			label="COM_ICAGENDA_FORM_FEATURE_NEW_ICON_LABEL"
			description="COM_ICAGENDA_FORM_FEATURE_NEW_ICON_LABEL"
			filter="safehtml"
		/>

		<field
			name="icon_alt"
			type="text"
			label="COM_ICAGENDA_FORM_FEATURE_ICON_ALT_LABEL"
			description="COM_ICAGENDA_FORM_FEATURE_ICON_ALT_DESC"
			size="30"
			required="false"
		/>

		<field
			name="show_filter"
			type="radio"
			class="btn-group"
			default="1"
			label="COM_ICAGENDA_FORM_FEATURE_SHOW_FILTER_LABEL"
			description="COM_ICAGENDA_FORM_FEATURE_SHOW_FILTER_DESC">
				<option value="0">JNO</option>
				<option value="1">JYES</option>
		</field>

		<field
			name="desc"
			type="editor"
			buttons="readmore,pagebreak"
			class="inputbox"
			filter="JComponentHelper::filterText"
			label="COM_ICAGENDA_FORM_FEATURE_DESCRIPTION_LABEL"
			description="COM_ICAGENDA_FORM_FEATURE_DESCRIPTION_DESC"
		/>

		<field
			name="state"
			type="list"
			label="JSTATUS"
			description="JFIELD_PUBLISHED_DESC"
			class="span12 small"
			filter="intval"
			size="1"
			default="1">
				<option value="1">JPUBLISHED</option>
				<option value="0">JUNPUBLISHED</option>
		</field>

		<field name="checked_out" type="hidden" filter="unset" />
		<field name="checked_out_time" type="hidden" filter="unset" />

	</fieldset>
</form>
models/forms/registration.xml000060400000000712152455705350012420 0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset addfieldpath="/administrator/components/com_icagenda/models/fields" >
		<field
			name="captcha"
			type="captcha"
			label="COM_ICAGENDA_CAPTCHA_LABEL"
			description="COM_ICAGENDA_CAPTCHA_DESC"
			validate="captcha"
			namespace="registration"
		/>
		<field
			name="date"
			type="calendar"
			label="COM_ICAGENDA_CAPTCHA_LABEL"
			description="COM_ICAGENDA_CAPTCHA_DESC"
		/>
	</fieldset>
</form>
models/forms/mail.xml000060400000001511152455705350010626 0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset>
		<field
			name="eventid"
			type="modal_evt"
			label="ICEVENT"
			description =" "
			class="inputbox"
			size="10"
			default="0"
			/>
		<field
			name="date"
			type="modal_evt_date"
			size="30"
			class="inputbox"
			label="COM_ICAGENDA_REGISTRATION_DATE"
			description=" "
			filter="safehtml"
			/>
		<field
			name="subject"
			type="text"
			size="40"
			class="inputbox input-xxlarge"
			label="COM_ICAGENDA_FORM_LBL_NEWSLETTER_OBJ"
			description="COM_ICAGENDA_FORM_DESC_NEWSLETTER_OBJ"
			/>
		<field
			name="message"
			type="editor"
			class="inputbox"
			buttons="readmore,pagebreak"
			label="COM_ICAGENDA_FORM_LBL_NEWSLETTER_BODY"
			description="COM_ICAGENDA_FORM_DESC_NEWSLETTER_BODY"
			cols="70"
			rows="20"
			filter="safehtml"
			/>
	</fieldset>
</form>
models/forms/category.xml000060400000003005152455705350011521 0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<!--fields addfieldpath="/administrator/components/com_icagenda/models/fields"-->
	<fieldset addfieldpath="/administrator/components/com_icagenda/models/fields">
		<field
			name="id"
			type="text"
			class="readonly"
			label="JGLOBAL_FIELD_ID_LABEL"
			description ="JGLOBAL_FIELD_ID_DESC"
			size="10"
			default="0"
			readonly="true"
		/>

		<field
 			name="title"
 			type="text"
 			label="COM_ICAGENDA_FORM_LBL_CATEGORY_TITLE"
			description="COM_ICAGENDA_FORM_DESC_CATEGORY_TITLE"
			size="30"
			required="true"
		/>

		<field
			name="alias"
			type="text"
			label="JFIELD_ALIAS_LABEL"
			description="JFIELD_ALIAS_DESC"
		/>

		<field
			name="color"
			type="color"
			size="40"
			class="inputbox"
			label="COM_ICAGENDA_FORM_LBL_CATEGORY_COLOR"
			description="COM_ICAGENDA_FORM_DESC_CATEGORY_COLOR"
			default="#bdbdbd"
		/>

		<field
			name="desc"
			type="editor"
			buttons="readmore,pagebreak"
			class="inputbox"
			filter="JComponentHelper::filterText"
			label="COM_ICAGENDA_FORM_LBL_EVENT_DESC"
			description="COM_ICAGENDA_FORM_DESC_EVENT_DESC"
		/>

		<field
			name="state"
			type="list"
			label="JSTATUS"
			description="JFIELD_PUBLISHED_DESC"
			class="span12 small"
			filter="intval"
			size="1"
			default="1">
				<option value="1">JPUBLISHED</option>
				<option value="0">JUNPUBLISHED</option>
		</field>

		<field name="checked_out" type="hidden" filter="unset" />
		<field name="checked_out_time" type="hidden" filter="unset" />

	</fieldset>
</form>
models/registrations.php000060400000051150152455705350011446 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.12 2015-09-22
 * @since		2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modellist');

/**
 * Methods supporting a list of iCagenda records.
 */
class iCagendaModelregistrations extends JModelList
{
	/**
	 * Constructor.
	 *
	 * @param	array			An optional associative array of configuration settings.
	 * @see		JController
	 * @since	1.6
	 */
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'id', 'a.id',
				'ordering', 'a.ordering',
				'userid', 'userid',
				'name', 'name',
				'username', 'username',
				'email', 'email',
				'phone', 'phone',
				'event', 'event',
				'date', 'a.date',
				'startdate', 'e.startdate',
				'people', 'a.people',
				'notes', 'a.notes',
				'evt_created_by', 'a.evt_created_by'
			);
		}

		parent::__construct($config);
	}

	/**
	 * Method to auto-populate the model state.
	 *
	 * Note. Calling getState in this method will result in recursion.
	 */
	protected function populateState($ordering = null, $direction = null)
	{
		// Initialise variables.
		$app = JFactory::getApplication('administrator');

		// Load the filter search.
		$search = $app->getUserStateFromRequest($this->context.'.filter.search', 'filter_search');
		$this->setState('filter.search', $search);

		// Filter (dropdown) state.
		$published = $app->getUserStateFromRequest($this->context.'.filter.state', 'filter_published', '', 'string');
		$this->setState('filter.state', $published);

		// Filter (dropdown) categories
		$categories = $this->getUserStateFromRequest($this->context.'.filter.categories', 'filter_categories', '', 'string');
		$this->setState('filter.categories', $categories);

		// Filter (dropdown) events
		$events = $this->getUserStateFromRequest($this->context.'.filter.events', 'filter_events', '', 'string');
		$this->setState('filter.events', $events);

		// Filter (dropdown) dates
		$dates = $this->getUserStateFromRequest($this->context.'.filter.dates', 'filter_dates', '', 'string');
		$this->setState('filter.dates', $dates);

		// Load the parameters.
		$params = JComponentHelper::getParams('com_icagenda');
		$this->setState('params', $params);

		// List state information.
		parent::populateState('a.id', 'desc');
	}

	/**
	 * Method to get a store id based on model configuration state.
	 *
	 * This is necessary because the model is used by the component and
	 * different modules that might need different sets of data or different
	 * ordering requirements.
	 *
	 * @param	string		$id	A prefix for the store id.
	 * @return	string		A store id.
	 * @since	1.6
	 */
	protected function getStoreId($id = '')
	{
		// Compile the store id.
		$id.= ':' . $this->getState('filter.search');
		$id.= ':' . $this->getState('filter.state');

		return parent::getStoreId($id);
	}

	/**
	 * Build an SQL query to load the list data.
	 *
	 * @return	JDatabaseQuery
	 * @since	1.6
	 */
	protected function getListQuery()
	{
		// Create a new query object.
		$db		= $this->getDbo();
		$query	= $db->getQuery(true);

		// Select the required fields from the table.
		$query->select(
			$this->getState(
				'list.select',
				'a.*'
			)
		);
		$query->from('`#__icagenda_registration` AS a');

		// Join over the events.
		$query->select('e.title AS event, e.created_by AS evt_created_by, e.state AS evt_state,
						e.startdate AS startdate, e.enddate AS enddate, e.displaytime AS displaytime');
		$query->join('LEFT', '#__icagenda_events AS e ON e.id=a.eventid');

		// Join over the categories.
		$query->select('c.id AS cat_id, c.title AS cat_title');
		$query->join('LEFT', '#__icagenda_category AS c ON c.id=e.catid');

		// Join over the users for the checked out user.
		$query->select('u.username AS username, u.name AS fullname');
		$query->join('LEFT', '#__users AS u ON u.id=a.userid');

		// Join over the users for the author.
		$query->select('ua.name AS author_name, ua.username AS author_username')
			->join('LEFT', '#__users AS ua ON ua.id = a.created_by');

		// Filter by published state
		$published = $this->getState('filter.state');

		if (is_numeric($published))
		{
			$query->where('a.state = '.(int) $published);
		}
		elseif ($published === '')
		{
			$query->where('(a.state IN (0, 1))');
		}

		// Filter by edit access
		if ( ! JFactory::getUser()->authorise('core.edit', 'com_icagenda')
			&& JFactory::getUser()->authorise('core.edit.own', 'com_icagenda'))
		{
			$userID = JFactory::getUser()->get('id');
			$query->where('a.userid = ' . (int) $userID);
		}

		// Filter by search in content
		$search = $this->getState('filter.search');

		if (!empty($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where('a.id = '.(int) substr($search, 3));
			}
			else
			{
				if(version_compare(JVERSION, '3.0', 'lt'))
				{
					$search = $db->Quote('%'.$db->getEscaped($search, true).'%');
				}
				else
				{
					$search = $db->Quote('%'.$db->escape($search, true).'%');
				}
				$query->where('(u.username LIKE '.$search.'  OR  a.name LIKE '.$search.'  OR  a.userid LIKE '.$search.'  OR  a.email LIKE '.$search.'  OR  a.phone LIKE '.$search.'  OR  a.date LIKE '.$search.'  OR  a.period LIKE '.$search.'  OR  a.people LIKE '.$search.'  OR  a.notes LIKE '.$search.'  OR  e.title LIKE '.$search.' )');
			}
		}

		// Filter categories
		$category = $db->escape($this->getState('filter.categories'));

		if (!empty($category))
		{
			$query->where('(c.id=' . $db->q($category) . ')');
		}

		// Filter events
		$event = $db->escape($this->getState('filter.events'));

		if (!empty($event))
		{
			$query->where('(a.eventid=' . $db->q($event) . ')');
		}

		// Filter dates
		$date = $db->escape($this->getState('filter.dates'));

		if (!empty($date) && ! in_array($date, array('1', '2')))
		{
			$query->where($db->qn('a.date') . ' = ' . $db->q($date));
		}
		elseif ($date == 1)
		{
			$query->where($db->qn('a.date') . ' = ""');
			$query->where($db->qn('a.period') . ' = "0"');
		}
		elseif ($date == 2)
		{
			$query->where($db->qn('a.date') . ' = ""');
			$query->where($db->qn('a.period') . ' = "1"');
		}

		// Add the list ordering clause.
		$orderCol	= $this->state->get('list.ordering');
		$orderDirn	= $this->state->get('list.direction');

		if ($orderCol && $orderDirn)
		{
			if (version_compare(JVERSION, '3.0', 'lt'))
			{
				if ($orderCol == 'a.date')
				{
					$query->order($db->getEscaped($db->qn('a.period') . ' ' . $orderDirn));
				}

				$query->order($db->getEscaped($orderCol . ' ' . $orderDirn));
			}
			else
			{
				if ($orderCol == 'a.date')
				{
					$query->order($db->escape($db->qn('a.period') . ' ' . $orderDirn));
				}

				$query->order($db->escape($orderCol . ' ' . $orderDirn));
			}
		}

		return $query;
	}

	/**
	 * Gets a list of categories.
	 */
	function getCategories()
	{
		// Create a new query object.
		$db		= JFactory::getDbo();
		$query	= $db->getQuery(true);

		// Select the required fields from the table.
		$query->select('c.id AS cat_id, c.title AS cat_title');
		$query->from('`#__icagenda_category` AS c');

		// Join over the events.
		$query->select('e.id AS id');
		$query->join('LEFT', '#__icagenda_events AS e ON e.catid=c.id');

		// Join over the registrations.
		$query->select('r.eventid AS event_id');
		$query->join('LEFT', '#__icagenda_registration AS r ON r.eventid=e.id');
		$query->where('(e.id = r.eventid)');
		$query->order('c.ordering ASC');

		$db->setQuery($query);
		$categories = $db->loadObjectList();

		$list = array();

		foreach ($categories as $c)
		{
			$list[$c->cat_id] = $c->cat_title . ' [' . $c->cat_id . ']';
		}

		return $list;
	}

	/**
	 * Gets a list of all events.
	 */
	function getEvents()
	{
		// Create a new query object.
		$db		= JFactory::getDBO();
		$query	= $db->getQuery(true);

		// Select the required fields from the table.
		$query->select('e.id AS event, e.title AS title');
		$query->from('`#__icagenda_events` AS e');

		// Join over the categories.
		$query->select('c.id AS cat_id, c.title AS cat_title');
		$query->join('LEFT', '#__icagenda_category AS c ON c.id=e.catid');

		// Join over the registrations.
		$query->select('r.eventid AS eventid');
		$query->join('LEFT', '#__icagenda_registration AS r ON r.eventid=e.id');
		$query->where('(e.id = r.eventid)');
		$query->order('e.title ASC');

		// Filter by published state
//		$query->where('(e.state IN (0, 1))');

		$db->setQuery($query);
		$events = $db->loadObjectList();

		$list = array();

		$catId = $db->escape($this->getState('filter.categories'));

		foreach ($events as $e)
		{
			if ( ! empty($catId) && $catId == $e->cat_id)
			{
				$list[$e->event] = $e->title . ' [' . $e->event . ']';
			}
			elseif (empty($catId))
			{
				$list[$e->event] = $e->title . ' [' . $e->event . ']';
			}
//			$list[$e->event] = $e->title . ' [' . $e->event . ']';
		}

		return $list;
	}

	/**
	 * Gets a list of dates.
	 */
	function getDates()
	{
		$params			= $this->getState('params');
		$dateFormat		= $params->get('date_format_global', 'Y - m - d');
		$dateSeparator	= $params->get('date_separator', ' ');
		$timeFormat		= ($params->get('timeformat', '1') == 1) ? 'H:i' : 'h:i A';

		// Create a new query object.
		$db		= JFactory::getDBO();
		$query	= $db->getQuery(true);

		// Select the required fields from the table.
		$query->select('r.date AS date, r.period AS period, r.eventid AS eventid');
		$query->from('`#__icagenda_registration` AS r');

		// Join over the events (period).
		$query->select('e.startdate AS startdate, e.enddate AS enddate, e.displaytime AS displaytime');
		$query->join('LEFT', '#__icagenda_events AS e ON e.id=r.eventid');

		$db->setQuery($query);
		$dates = $db->loadObjectList();

		$list = array();

		$eventId = $db->escape($this->getState('filter.events'));

		$p = $e = 0;

		// Add to select dropdown the filters 'For all dates of the event' and/or 'For all the period',
		// depending of registrations in data, and selected event
		foreach ($dates as $d)
		{
//			$date	= (empty($d->date) && $d->period == 0)
//					? '[ ' . ucfirst(JText::_('COM_ICAGENDA_ADMIN_REGISTRATION_FOR_ALL_PERIOD')) . ' ]'
//					: '';
			$period	= (empty($d->date) && $d->period == 1)
					? '[ ' . ucfirst(JText::_('COM_ICAGENDA_ADMIN_REGISTRATION_FOR_ALL_DATES')) . ' ]'
					: '';

			if (empty($d->date)
				&& $d->period == 1
				&& $e == 0
				)
			{
				if ( ! empty($eventId) && $eventId == $d->eventid)
				{
					$e = $e+1;
					$list[2] = $period;
				}
				elseif (empty($eventId))
				{
					$e = $e+1;
					$list[2] = $period;
				}
			}
		}

		// Add to select dropdown the list of dates,
		// depending of registrations in data, and selected event
		foreach ($dates as $d)
		{
			$date = '';

			if (empty($d->date) && $d->period == 0)
			{
				if ( ! empty($eventId) && $eventId == $d->eventid)
				{
					if (iCDate::isDate($d->startdate))
					{
						$date = iCGlobalize::dateFormat($d->startdate, $dateFormat, $dateSeparator);

						if ($d->displaytime)
						{
							$date.= ' - ' . date($timeFormat, strtotime($d->startdate));
						}
					}
					if (iCDate::isDate($d->enddate))
					{
						$date.= ' > ' . iCGlobalize::dateFormat($d->enddate, $dateFormat, $dateSeparator);

						if ($d->displaytime)
						{
							$date.= ' - ' . date($timeFormat, strtotime($d->enddate));
						}
					}
				}
				else
				{
					$date = '[ ' . ucfirst(JText::_('COM_ICAGENDA_ADMIN_REGISTRATION_FOR_ALL_PERIOD')) . ' ]';
				}
			}
			else
			{
				$date	= iCDate::isDate($d->date)
						? JHtml::date($d->date, JText::_('DATE_FORMAT_LC3'), null) . ' - ' . date('H:i', strtotime($d->date))
						: $d->date;
			}

			$display_date = ($date != '0000-00-00 00:00:00' && $d->date) ? true : false;

			if ($display_date
				&& ! empty($eventId)
				&& $eventId == $d->eventid
				)
			{
				$list[$d->date] = $date;
			}
			elseif ($display_date
				&& empty($eventId)
				)
			{
				$list[$d->date] = $date;
			}

			if (empty($d->date)
				&& $d->period == 0
				&& $p == 0
				)
			{
				if ( ! empty($eventId) && $eventId == $d->eventid)
				{
					$p = $p+1;
					$list[1] = $date;
				}
				elseif (empty($eventId))
				{
					$p = $p+1;
					$list[1] = $date;
				}
			}
		}

		return $list;
	}
	/**
	 * Get file name
	 *
	 * @return  string    The file name
	 *
	 * @since   1.6
	 */
	public function getBaseName()
	{
		if (!isset($this->basename))
		{
			$app = JFactory::getApplication();
			$basename = $this->getState('basename');
			$basename = str_replace('__SITE__', $app->getCfg('sitename'), $basename);

			$eventId = $this->getState('filter.events');

			if (is_numeric($eventId))
			{
				$basename = str_replace('__EVENTID__', $eventId, $basename);
				$basename = str_replace('__EVENT__', $this->getEventTitle($eventId), $basename);
			}
			else
			{
				$basename = str_replace('__EVENTID__', '', $basename);
				$basename = str_replace('__EVENT__', '', $basename);
			}

			$date = $this->getState('filter.dates');

			if (!empty($date))
			{
				if (iCDate::isDate($date))
				{
					$basename = str_replace('__DATE__', JHtml::date($date, JText::_('DATE_FORMAT_LC3'), null)
											. ' - ' . date('H:i', strtotime($date)),
											$basename);
				}
				else
				{
					$basename = str_replace('__DATE__', $date, $basename);
				}
			}
			else
			{
				$basename = str_replace('__DATE__', '', $basename);
			}

			$this->basename = $basename;
		}

		return $this->basename;
	}

	/**
	 * Get the event title.
	 *
	 * @return  string    The event title
	 *
	 * @since   3.5.0
	 */
	protected function getEventTitle()
	{
		$eventId = $this->getState('filter.events');

		if ($eventId)
		{
			$db = $this->getDbo();
			$query = $db->getQuery(true)
				->select('title')
				->from($db->quoteName('#__icagenda_events'))
				->where($db->quoteName('id') . '=' . $db->quote($eventId));
			$db->setQuery($query);

			try
			{
				$title = $db->loadResult();
			}
			catch (RuntimeException $e)
			{
				$this->setError($e->getMessage());

				return false;
			}
		}
		else
		{
			$title = JText::_('COM_ICAGENDA_NO_EVENT_TITLE');
		}

		return $title;
	}

	/**
	 * Get the status name.
	 *
	 * @return  string    The status name
	 *
	 * @since   3.5.0
	 */
	protected function getStatusName($status)
	{
		$status_array = JHtml::_('jgrid.publishedOptions');

		foreach ($status_array AS $key => $name)
		{
			if ($status == $name->value)
			{
				$status_name = $name->text;
			}
		}

		return JText::_($status_name);
	}

	/**
	 * Get the file type.
	 *
	 * @return  string    The file type
	 *
	 * @since   3.5.0
	 */
	public function getFileType()
	{
		return $this->getState('compressed') ? 'zip' : 'csv';
	}

	/**
	 * Get the mime type.
	 *
	 * @return  string    The mime type.
	 *
	 * @since   3.5.0
	 */
	public function getMimeType()
	{
		return $this->getState('compressed') ? 'application/zip' : 'text/csv';
	}

	/**
	 * Get the separator for values.
	 *
	 * @return  string    The separator.
	 *
	 * @since   3.5.9
	 */
	public function getSeparator()
	{
		return ($this->getState('separator') == 1) ? "," : ";";
	}

	/**
	 * Get the content
	 *
	 * @return  string    The content.
	 *
	 * @since   3.5.0
	 */
	public function getContent()
	{
		if (!isset($this->content))
		{
			$separator = $this->getSeparator();

			foreach ($this->getItems() as $item)
			{
				// Adds filled custom fields
				$customfields = icagendaCustomfields::getList($item->id, 1);

 				$header_cfs	= array();

				if ($customfields)
				{
					foreach ($customfields AS $customfield)
					{
						$header_cfs[]= $customfield->cf_title;
					}
				}
			}

			// Add BOM UTF-8 to csv content
			$this->content	= chr(239) . chr(187) . chr(191);

			$this->content .= '"';

			if ($this->getState('event_title'))
			{
				$this->content .= str_replace('"', '""', JText::_('COM_ICAGENDA_REGISTRATION_EVENTID')) . '"';
			}
			else
			{
				$this->content .= '#' . '"';
			}

			if ($this->getState('date'))
			{
				$this->content .= $separator . '"' . str_replace('"', '""', JText::_('COM_ICAGENDA_REGISTRATION_DATE')) . '"';
			}

			if ($this->getState('tickets'))
			{
				$this->content .= $separator . '"' . str_replace('"', '""', JText::_('COM_ICAGENDA_REGISTRATION_TICKETS')) . '"';
			}

			if ($this->getState('name'))
			{
				$this->content .= $separator . '"' . str_replace('"', '""', JText::_('IC_NAME')) . '"';
			}

			if ($this->getState('email'))
			{
				$this->content .= $separator . '"' . str_replace('"', '""', JText::_('COM_ICAGENDA_REGISTRATION_EMAIL')) . '"';
			}

			if ($this->getState('phone'))
			{
				$this->content .= $separator . '"' . str_replace('"', '""', JText::_('COM_ICAGENDA_REGISTRATION_PHONE')) . '"';
			}

			if ($this->getState('customfields'))
			{
				foreach ($header_cfs AS $header)
				{
					$this->content .= $separator . '"' . str_replace('"', '""', $header) . '"';
				}
			}

			if ($this->getState('notes'))
			{
				$this->content .= $separator . '"' . str_replace('"', '""', JText::_('COM_ICAGENDA_REGISTRATION_NOTES_DISPLAY_LABEL')) . '"';
			}

			if ($this->getState('status'))
			{
				$this->content .= $separator . '"' . str_replace('"', '""', JText::_('JSTATUS')) . '"';
			}

			$this->content .= "\n";

			// Data Rows
			$n = 0;

			foreach ($this->getItems() as $item)
			{
				// Adds filled custom fields
				$customfields = icagendaCustomfields::getList($item->id, 1);

 				$values_cfs	= array();

				if ($customfields)
				{
					foreach ($customfields AS $customfield)
					{
						$cf_value = isset($customfield->cf_value) ? $customfield->cf_value : JText::_('IC_NOT_SPECIFIED');
						$values_cfs[]= $cf_value;
					}
				}

				$this->content .= '"';

				if ($this->getState('event_title'))
				{
					$this->content .= str_replace('"', '""', $item->event) . '"';
				}
				else
				{
					$n = $n + 1;
					$this->content .= $n . '"';
				}

				if ($this->getState('date'))
				{
					$this->content .= $separator . '"' .
						str_replace('"', '""', ($item->period == 1 ? JText::_('COM_ICAGENDA_REGISTRATION_ALL_DATES') : $item->date)) . '"';
				}

				if ($this->getState('tickets'))
				{
					$this->content .= $separator . '"' . str_replace('"', '""', $item->people) . '"';
				}

				if ($this->getState('name'))
				{
					$this->content .= $separator . '"' . str_replace('"', '""', $item->name) . '"';
				}

				if ($this->getState('email'))
				{
					$this->content .= $separator . '"' . str_replace('"', '""', $item->email) . '"';
				}

				if ($this->getState('phone'))
				{
					$this->content .= $separator . '"' . str_replace('"', '""', $item->phone) . '"';
				}

				if ($this->getState('customfields'))
				{
					foreach ($values_cfs AS $value)
					{
						$this->content .= $separator . '"' . str_replace('"', '""', $value) . '"';
					}
				}

				if ($this->getState('notes'))
				{
					$this->content .= $separator . '"' . str_replace('"', '""', $item->notes) . '"';
				}

				if ($this->getState('status'))
				{
					$this->content .= $separator . '"' . str_replace('"', '""', $this->getStatusName($item->state)) . '"';
				}

				$this->content .= "\n";
			}

			if ($this->getState('compressed'))
			{
				$app = JFactory::getApplication('administrator');

				$this->content = str_replace(CHR(13).CHR(10), " ", $this->content);

				$files = array();
				$files['registrations'] = array();
				$files['registrations']['name'] = $this->getBasename() . '.csv';
				$files['registrations']['data'] = $this->content;
				$files['registrations']['time'] = time();
				$ziproot = $app->get('tmp_path') . '/' . uniqid('icagenda_registrations_') . '.zip';

				// Run the packager
				jimport('joomla.filesystem.folder');
				jimport('joomla.filesystem.file');
				$delete = JFolder::files($app->get('tmp_path') . '/', uniqid('icagenda_registrations_'), false, true);

				if (!empty($delete))
				{
					if (!JFile::delete($delete))
					{
						// JFile::delete throws an error
						$this->setError(JText::_('COM_ICAGENDA_EXPORT_ERR_ZIP_DELETE_FAILURE'));

						return false;
					}
				}

				if (!$packager = JArchive::getAdapter('zip'))
				{
					$this->setError(JText::_('COM_ICAGENDA_EXPORT_ERR_ZIP_ADAPTER_FAILURE'));

					return false;
				}
				elseif (!$packager->create($ziproot, $files))
				{
					$this->setError(JText::_('COM_ICAGENDA_EXPORT_ERR_ZIP_CREATE_FAILURE'));

					return false;
				}

				$this->content = file_get_contents($ziproot);
			}
		}

		return $this->content;
	}
}
models/index.html000060400000000054152455705350010032 0ustar00<html><body bgcolor="#FFFFFF"></body></html>models/categories.php000060400000010576152455705350010705 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.0 2013-07-03
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modellist');

/**
 * Methods supporting a list of iCagenda records.
 */
class iCagendaModelcategories extends JModelList
{

    /**
     * Constructor.
     *
     * @param    array    An optional associative array of configuration settings.
     * @see        JController
     * @since    1.6
     */
    public function __construct($config = array())
    {
        if (empty($config['filter_fields'])) {
            $config['filter_fields'] = array(
                'id', 'a.id',
                'ordering', 'a.ordering',
                'state', 'a.state',
                'title', 'a.title',
                'color', 'a.color',
                'desc', 'a.desc',

            );
        }

        parent::__construct($config);
    }


	/**
	 * Method to auto-populate the model state.
	 *
	 * Note. Calling getState in this method will result in recursion.
	 */
	protected function populateState($ordering = null, $direction = null)
	{
		// Initialise variables.
		$app = JFactory::getApplication('administrator');

		// Load the filter state.
		$search = $app->getUserStateFromRequest($this->context.'.filter.search', 'filter_search');
		$this->setState('filter.search', $search);

		$published = $app->getUserStateFromRequest($this->context.'.filter.state', 'filter_published', '', 'string');
		$this->setState('filter.state', $published);

		// Load the parameters.
		$params = JComponentHelper::getParams('com_icagenda');
		$this->setState('params', $params);

		// List state information.
		parent::populateState('a.title', 'asc');
	}

	/**
	 * Method to get a store id based on model configuration state.
	 *
	 * This is necessary because the model is used by the component and
	 * different modules that might need different sets of data or different
	 * ordering requirements.
	 *
	 * @param	string		$id	A prefix for the store id.
	 * @return	string		A store id.
	 * @since	1.6
	 */
	protected function getStoreId($id = '')
	{
		// Compile the store id.
		$id.= ':' . $this->getState('filter.search');
		$id.= ':' . $this->getState('filter.state');

		return parent::getStoreId($id);
	}

	/**
	 * Build an SQL query to load the list data.
	 *
	 * @return	JDatabaseQuery
	 * @since	1.6
	 */
	protected function getListQuery()
	{
		// Create a new query object.
		$db		= $this->getDbo();
		$query	= $db->getQuery(true);

		// Select the required fields from the table.
		$query->select(
			$this->getState(
				'list.select',
				'a.*'
			)
		);
		$query->from('`#__icagenda_category` AS a');


                // Join over the users for the checked out user.
               $query->select('uc.name AS editor');
               $query->join('LEFT', '#__users AS uc ON uc.id=a.checked_out');



                // Filter by published state
                $published = $this->getState('filter.state');
                if (is_numeric($published)) {
                    $query->where('a.state = '.(int) $published);
                } else if ($published === '') {
                    $query->where('(a.state IN (0, 1))');
                }


		// Filter by search in title
		$search = $this->getState('filter.search');
		if (!empty($search)) {
			if (stripos($search, 'id:') === 0) {
				$query->where('a.id = '.(int) substr($search, 3));
			} else {
				$search = $db->Quote('%'.$db->escape($search, true).'%');
                $query->where('( a.title LIKE '.$search.'  OR  a.color LIKE '.$search.'  OR  a.desc LIKE '.$search.' )');
			}
		}

		// Add the list ordering clause.
		$orderCol	= $this->state->get('list.ordering');
		$orderDirn	= $this->state->get('list.direction');
        if ($orderCol && $orderDirn) {
		    $query->order($db->escape($orderCol.' '.$orderDirn));
        }

		return $query;
	}
}
models/icagenda.php000060400000003711152455705350010304 0ustar00<?php
/** 
 *	iCagenda
 *----------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright	Copyright (C) 2012 JOOMLIC - All rights reserved.
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Jooml!C - http://www.joomlic.com
 * 
 * @since		1.0
 *----------------------------------------------------------------------------
*/

// No direct access to this file
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.application.component.model' );

/**
 * iCagenda Model
 */

class iCagendaModelicagenda extends JModelItem
{
	function getText()
	{
		$db =& JFactory::getDBO();
		$query = 'SELECT * FROM #__icagenda';
		$db->setQuery( $query );
		$value =& $db->loadObjectList();
		return $value;
	}
	/**
	 * @var object item
	 */
	protected $item;
 
	/**
	 * Method to auto-populate the model state.
	 *
	 * This method should only be called once per instantiation and is designed
	 * to be called on the first call to the getState() method unless the model
	 * configuration flag to ignore the request is set.
	 *
	 * Note. Calling getState in this method will result in recursion.
	 *
	 * @return	void
	 * @since	2.5
	 */
	protected function populateState() 
	{
		$app = JFactory::getApplication();
		// Get the message id
		$id = JRequest::getInt('id');
		$this->setState('message.id', $id);
 

		// Load the parameters.
		$params = $app->getParams();
		$this->setState('params', $params);
		parent::populateState();
	}
 
	/**
	 * Returns a reference to the a Table object, always creating it.
	 *
	 * @param	type	The table type to instantiate
	 * @param	string	A prefix for the table class name. Optional.
	 * @param	array	Configuration array for model. Optional.
	 * @return	JTable	A database object
	 * @since	2.5
	 */
	public function getTable($type = 'iCagenda', $prefix = 'iCagendaTable', $config = array()) 
	{
		return JTable::getInstance($type, $prefix, $config);
	}
 
}models/events.php000060400000025175152455705350010065 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.7 2015-07-14
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modellist');

/**
 * This models supports retrieving lists of events.
 */
class iCagendaModelEvents extends JModelList
{
	/**
	 * Constructor.
	 *
	 * @param	array		An optional associative array of configuration settings.
	 * @see		JController
	 * @since	3.4.0
	 */
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'id', 'e.id',
				'ordering', 'e.ordering',
				'state', 'e.state',
				'access', 'e.access', 'access_level',
				'approval', 'e.approval',
				'created', 'e.created',
				'title', 'e.title',
				'username', 'e.username',
				'email', 'e.email',
				'category', 'e.category',
				'cat_color', 'e.catcolor',
				'image', 'e.image',
				'file', 'e.file',
				'next', 'e.next',
				'place', 'e.place',
				'city', 'e.city',
				'country', 'e.country',
				'desc', 'e.desc',
				'language', 'e.language',
				'location', 'e.location',
				'category_id',
			);
		}

		parent::__construct($config);
	}

	/**
	 * Method to auto-populate the model state.
	 *
	 * Note. Calling getState in this method will result in recursion.
	 * NOT IN USE CURRENTLY
	 */
	protected function populateState($ordering = null, $direction = null)
	{
		// Initialise variables.
		$app = JFactory::getApplication();

		// Load the filter search.
		$search = $app->getUserStateFromRequest($this->context.'.filter.search', 'filter_search');
		$this->setState('filter.search', $search);

		// Load the filter state.
		$published = $app->getUserStateFromRequest($this->context.'.filter.state', 'filter_published', '', 'string');
		$this->setState('filter.state', $published);

		// Load the filter access.
		$access = $app->getUserStateFromRequest($this->context.'.filter.access', 'filter_access', '', 'string');
		$this->setState('filter.access', $access);

		// Load the filter language.
		$language = $app->getUserStateFromRequest($this->context.'.filter.language', 'filter_language', '', 'string');
		$this->setState('filter.language', $language);

		// Filter (dropdown) category
		$category = $this->getUserStateFromRequest($this->context.'.filter.category', 'filter_category');
//		$category = $app->input->get('filter_category');
		$this->setState('filter.category', $category);

		// Filter (dropdown) year
		$year = $this->getUserStateFromRequest($this->context.'.filter.year', 'filter_year', '', 'string');
		$this->setState('filter.year', $year);

		// Filter categoryId
		$categoryId = $this->getUserStateFromRequest($this->context . '.filter.category_id', 'filter_category_id');
		$this->setState('filter.category_id', $categoryId);

		// Filter (dropdown) upcoming
		$upcoming = $this->getUserStateFromRequest($this->context.'.filter.upcoming', 'filter_upcoming', '', 'string');
		$this->setState('filter.upcoming', $upcoming);

		// Load the parameters.
		$params = $app->getParams();
		$this->setState('params', $params);

		// List state information.
		parent::populateState('e.id', 'desc');
	}

	/**
	 * Method to get a store id based on model configuration state.
	 *
	 * This is necessary because the model is used by the component and
	 * different modules that might need different sets of data or different
	 * ordering requirements.
	 *
	 * @param	string		$id	A prefix for the store id.
	 * @return	string		A store id.
	 * @since	3.4.0
	 */
	protected function getStoreId($id = '')
	{
		// Compile the store id.
		$id .= ':' . $this->getState('filter.search');
		$id .= ':' . $this->getState('filter.access');
		$id .= ':' . $this->getState('filter.state');
		$id .= ':' . $this->getState('filter.access');
		$id .= ':' . $this->getState('filter.language');
		$id .= ':' . $this->getState('filter.category');
		$id .= ':' . $this->getState('filter.year');
//		$id .= ':' . $this->getState('filter.category_id.include');
		$id .= ':' . serialize($this->getState('filter.category_id'));

		return parent::getStoreId($id);
	}

	/**
	 * Build an SQL query to load the list data.
	 *
	 * @return	JDatabaseQuery
	 * @since	3.4.0
	 */
	protected function getListQuery()
	{
		// Get the current user for authorisation checks
		$user	= JFactory::getUser();

		// Create a new query object.
		$db		= $this->getDbo();
		$query	= $db->getQuery(true);

		// Select the required fields from the table.
		$query->select(
			$this->getState(
				'list.select',
				'e.*'
			)
		);
		$query->from($db->qn('#__icagenda_events') . ' AS e');

		// Join over the language
		$query->select('l.title AS language_title')
			->join('LEFT', $db->quoteName('#__languages') . ' AS l ON l.lang_code = e.language');

		// Join over the users for the checked out user.
//		$query->select('uc.name AS editor');
//		$query->join('LEFT', '#__users AS uc ON uc.id=e.checked_out');

		// Join over the asset groups.
//		$query->select('ag.title AS access_level')
//			->join('LEFT', '#__viewlevels AS ag ON ag.id = e.access');

		// Join the category
		$query->select('c.id AS cat_id, c.title AS cat_title, c.color AS cat_color, c.desc AS cat_desc,
						c.title AS category, c.color AS catcolor');
		$query->join('LEFT', '#__icagenda_category AS c ON c.id = e.catid');
		$query->where('c.state = 1');

		// Features - extract the number of displayable icons per event
		$query->select('feat.count AS features');
		$sub_query = $db->getQuery(true);
		$sub_query->select('fx.event_id, COUNT(*) AS count');
		$sub_query->from('`#__icagenda_feature_xref` AS fx');
		$sub_query->innerJoin("`#__icagenda_feature` AS f ON fx.feature_id=f.id AND f.state=1 AND f.icon<>'-1'");
		$sub_query->group('fx.event_id');
		$query->leftJoin('(' . (string) $sub_query . ') AS feat ON e.id=feat.event_id');

		// Join Total of registrations
		$query->select('r.count AS registered');
		$sub_query = $db->getQuery(true);
		$sub_query->select('r.state, r.date, r.eventid, sum(r.people) AS count');
		$sub_query->from('`#__icagenda_registration` AS r');
		$sub_query->where('r.state > 0');
		$sub_query->group('r.date, r.eventid');
		$query->leftJoin('(' . (string) $sub_query . ') AS r ON ((e.next = r.date OR r.date = "") AND e.id = r.eventid)');

		// Join over the users for the author.
//		$query->select('ua.name AS author_name, ua.username AS author_username')
//			->join('LEFT', '#__users AS ua ON ua.id = e.created_by');

		// Filter by published state
		$published = $this->getState('filter.state');

		if (is_numeric($published))
		{
			$query->where('e.state = '.(int) $published);
		}
		elseif ($published === '')
		{
			$query->where('(e.state IN (0, 1))');
		}

		$userGroups	= $user->groups;
		$groupid	= JComponentHelper::getParams('com_icagenda')->get('approvalGroups', array("8"));
		$groupid	= is_array($groupid) ? $groupid : array($groupid);

		// Test if user login have Approval Rights
		if ( ! array_intersect($userGroups, $groupid)
			&& ! in_array('8', $userGroups))
		{
			$query->where('e.approval <> 1');
		}
		else
		{
			$query->where('e.approval < 2');
		}

		// Filter by access level.
		$access = $this->getState('filter.access');

		if ( ! empty($access)
			&& ! in_array('8', $userGroups))
		{
			$access_levels = implode(',', $user->getAuthorisedViewLevels());

			$query->where('e.access IN (' . $access_levels . ')');
//				->where('c.access IN (' . $access_levels . ')'); // To be added later, when access integrated to category
		}

		// Filter by language
		if ($this->getState('filter.language'))
		{
			$query->where('e.language in (' . $db->q(JFactory::getLanguage()->getTag()) . ',' . $db->q('*') . ')');
		}

		// Filter by search in title
//		$search = $this->getState('filter.search');

//		if (!empty($search))
//		{
//			if (stripos($search, 'id:') === 0)
//			{
//				$query->where('e.id = '.(int) substr($search, 3));
//			}
//			else
//			{
//				$search = $db->Quote('%'.$db->escape($search, true).'%');
//				$query->where('( e.title LIKE '.$search.' OR e.username LIKE '.$search.' OR e.id LIKE '.$search.' OR e.email LIKE '.$search.' OR e.file LIKE '.$search.' OR e.place LIKE '.$search.' OR e.city LIKE '.$search.' OR e.country LIKE '.$search.' OR e.desc LIKE '.$search.' OR c.title LIKE '.$search.')');
//			}
//		}

		// Filter by categories.
		$categoryId = $this->getState('filter.category_id');

		if (is_numeric($categoryId) && !empty($categoryId))
		{
			$query->where('e.catid = ' . $categoryId . '');
		}
		elseif (is_array($categoryId) && !empty($categoryId) && !in_array('0', $categoryId))
		{
			JArrayHelper::toInteger($categoryId);
			$categoryId = implode(',', $categoryId);
			$query->where('e.catid IN (' . $categoryId . ')');
		}

		// Filter by Dates
		$dates_filter = $this->getState('filter.upcoming', '0');

		// Get today date and datetime based on Joomla Config Timezone.
		$datetime_today	= JHtml::date('now', 'Y-m-d H:i:s');
		$date_today		= JHtml::date('now', 'Y-m-d');

		$all_dates_with_id	= icagendaEventsData::getAllDates($dates_filter, '2', $this->state->get('list.direction'), 'no');

		$dpp_array = $dpp_dates = array();

		foreach ($all_dates_with_id AS $dpp)
		{
			$dpp_alldates_array	= explode('_', $dpp);
			$dpp_date			= $dpp_alldates_array['0'];
			$dpp_id				= $dpp_alldates_array['1'];
			$dpp_dates[]		= $dpp_date;
			$dpp_array[]		= $dpp_id;
		}

		$list_id = implode(', ', $dpp_array);

		if (count($dpp_array))
		{
			$query->where('e.id IN (' . $list_id . ')');
		}
		else
		{
			return false;
		}

		// Add the list ordering clause.
		$orderCol	= $this->state->get('list.ordering');
		$orderDirn	= $this->state->get('list.direction');

		if ($orderCol && $orderDirn)
		{
			$query->order($db->escape($orderCol.' '.$orderDirn));
		}

		return $query;
	}

	/**
	 * Method to get an array of data items.
	 *
	 * @return  mixed  An array of data items on success, false on failure.
	 *
	 * @since   12.2
	 */
	public function getItems()
	{
		if ($items = parent::getItems())
		{
			//Do any procesing on fields here if needed
//			foreach ($items AS $item)
//			{
//				$item->loadEventCustomFields	= icagendaEventData::loadEventCustomFields($item->id);
//				$item->registeredUsers			= icagendaRegistrationParticipants::registeredUsers($item);
//			}
		}

		return $items;
	}
}
models/customfields.php000060400000013062152455705350011252 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-07-16
 * @since		3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modellist');

/**
 * Methods supporting a list of iCagenda custom fields.
 */
class iCagendaModelcustomfields extends JModelList
{
	/**
	 * Constructor.
	 *
	 * @param	array		An optional associative array of configuration settings.
	 * @see		JController
	 * @since	3.4.0
	 */
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'id', 'cf.id',
				'ordering', 'cf.ordering',
				'state', 'cf.state',
				'title', 'cf.title',
				'slug', 'cf.slug',
				'parent_form', 'cf.parent_form',
				'type', 'cf.type',
				'required', 'cf.required',
			);
		}

		parent::__construct($config);
	}

	/**
	 * Method to auto-populate the model state.
	 *
	 * Note. Calling getState in this method will result in recursion.
	 *
	 * @since	3.4.0
	 */
	protected function populateState($ordering = null, $direction = null)
	{
		// Initialise variables.
		$app = JFactory::getApplication('administrator');

		// Load the filter state.
		$search = $app->getUserStateFromRequest($this->context.'.filter.search', 'filter_search');
		$this->setState('filter.search', $search);

		$published = $app->getUserStateFromRequest($this->context.'.filter.state', 'filter_published', '', 'string');
		$this->setState('filter.state', $published);

		// Filter (dropdown) parent form
		$parent_form = $this->getUserStateFromRequest($this->context.'.filter.parent_form', 'filter_parent_form', '', 'string');
		$this->setState('filter.parent_form', $parent_form);

		// Filter (dropdown) field type
		$type = $this->getUserStateFromRequest($this->context.'.filter.type', 'filter_type', '', 'string');
		$this->setState('filter.type', $type);

		// Load the parameters.
		$params = JComponentHelper::getParams('com_icagenda');
		$this->setState('params', $params);

		// List state information.
		parent::populateState('cf.title', 'asc');
	}

	/**
	 * Method to get a store id based on model configuration state.
	 *
	 * This is necessary because the model is used by the component and
	 * different modules that might need different sets of data or different
	 * ordering requirements.
	 *
	 * @param	string		$id	A prefix for the store id.
	 * @return	string		A store id.
	 * @since	3.4.0
	 */
	protected function getStoreId($id = '')
	{
		// Compile the store id.
		$id.= ':' . $this->getState('filter.search');
		$id.= ':' . $this->getState('filter.state');

		return parent::getStoreId($id);
	}

	/**
	 * Build an SQL query to load the list data.
	 *
	 * @return	JDatabaseQuery
	 * @since	3.4.0
	 */
	protected function getListQuery()
	{
		// Create a new query object.
		$db		= $this->getDbo();
		$query	= $db->getQuery(true);

		// Select the required fields from the table.
		$query->select(
			$this->getState(
				'list.select',
				'cf.*'
			)
		);
		$query->from('`#__icagenda_customfields` AS cf');

		// Join over the users for the checked out user.
		$query->select('uc.name AS editor');
		$query->join('LEFT', '#__users AS uc ON uc.id=cf.checked_out');

		// Filter by published state
		$published = $this->getState('filter.state');

		if (is_numeric($published))
		{
			$query->where($db->qn('cf.state') . ' = ' . (int) $published);
		}
		elseif ($published === '')
		{
			$query->where($db->qn('cf.state') . ' IN (0, 1)');
		}

		// Filter by Parent Form
		$parent_form = $db->escape($this->getState('filter.parent_form'));

		if (!empty($parent_form))
		{
			$query->where($db->qn('cf.parent_form') . ' = ' . (int) $parent_form);
		}

		// Filter by Field Type
		$type = $db->escape($this->getState('filter.type'));

		if (!empty($type))
		{
			$query->where($db->qn('cf.type') . ' = ' . (string) $db->q($type));
		}

		// Search Filters
		$search = $this->getState('filter.search');

		if (!empty($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where($db->qn('cf.id') . ' = ' . (int) substr($search, 3));
			}
			else
			{
				$search = $db->Quote('%'.$db->escape($search, true).'%');
				$query->where('( cf.title LIKE '.$search.'  OR  cf.slug LIKE '.$search.'  OR  cf.type LIKE '.$search.' )');
			}
		}

		// Add the list ordering clause.
		$orderCol	= $this->state->get('list.ordering');
		$orderDirn	= $this->state->get('list.direction');

		if ($orderCol && $orderDirn)
		{
			$query->order($db->escape($orderCol.' '.$orderDirn));
		}

		return $query;
	}

	/**
	 * Gets a list of Parent Forms.
	 *
	 * @since	3.4.0
	 */
	function getParentForm()
	{
		$list['1'] = JText::_('COM_ICAGENDA_CUSTOMFIELD_PARENT_REGISTRATION_FORM');
		$list['2'] = JText::_('COM_ICAGENDA_CUSTOMFIELD_PARENT_EVENT_EDIT');

		return $list;
	}

	/**
	 * Gets a list of Field Types.
	 *
	 * @since	3.4.0
	 */
	function getFieldTypes()
	{
		$type['text'] = JText::_('COM_ICAGENDA_CUSTOMFIELD_TYPE_TEXT');
		$type['list'] = JText::_('COM_ICAGENDA_CUSTOMFIELD_TYPE_LIST');
		$type['radio'] = JText::_('COM_ICAGENDA_CUSTOMFIELD_TYPE_RADIO');

		return $type;
	}
}
models/mail.php000060400000016364152455705350007503 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.9 2015-07-30
 * @since       2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modeladmin');
jimport('joomla.mail.mail');


/**
 * iCagenda model.
 */
class iCagendaModelMail extends JModelAdmin
{
	/**
	 * @var		string	The prefix to use with controller messages.
	 * @since	1.6
	 */
	protected $text_prefix = 'COM_ICAGENDA';

	/**
	 * Method to get the row form.
	 *
	 * @param   array    $data      An optional array of data for the form to interogate.
	 * @param   boolean  $loadData  True if the form is to load its own data (default case), false if not.
	 *
	 * @return  JForm	A JForm object on success, false on failure
	 *
	 * @since   1.6
	 */
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_icagenda.mail', 'mail', array('control' => 'jform', 'load_data' => $loadData));

		if (empty($form))
		{
			return false;
		}

		return $form;
	}

	/**
	 * Method to get the data that should be injected in the form.
	 *
	 * @return  mixed  The data for the form.
	 *
	 * @since   1.6
	 */
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			$data = JFactory::getApplication()->getUserState('com_icagenda.display.mail.data', array());

			if (empty($data))
			{
//				$data = $this->getItem();
				$data = JFactory::getApplication()->getUserState('com_icagenda.mail.data', array());
			}
		}
		else
		{
			$data = JFactory::getApplication()->getUserState('com_icagenda.display.mail.data', array());

			if (empty($data))
			{
				$data = JFactory::getApplication()->getUserState('com_icagenda.mail.data', array());
			}

			$this->preprocessData('com_icagenda.mail', $data);
		}

		return $data;
	}

	/**
	 * Method to preprocess the form
	 *
	 * @param   JForm   $form   A form object.
	 * @param   mixed   $data   The data expected for the form.
	 * @param   string  $group  The name of the plugin group to import (defaults to "content").
	 *
	 * @return  void
	 *
	 * @since   1.6
	 * @throws  Exception if there is an error loading the form.
	 */
	protected function preprocessForm(JForm $form, $data, $group = 'user')
	{
		parent::preprocessForm($form, $data, $group);
	}

	/**
	 * Send the email
	 *
	 * @return  boolean
	 */
	public function send()
	{
		$app    = JFactory::getApplication();
		$data   = $app->input->post->get('jform', array(), 'array');
		$user   = JFactory::getUser();
		$access = new JAccess;

		// Set Form Data to Session
		$session = JFactory::getSession();
		$session->set('ic_newsletter', $data);

		$mailer = JFactory::getMailer();
		$config = JFactory::getConfig();

		$send	= '';

		$sender = array(
		    $app->getCfg( 'mailfrom' ),
		    $app->getCfg( 'fromname' )
		    );

		$mailer->setSender($sender);

//		$list		= array_key_exists('list', $data) ? $data['list'] : ''; // DEPRECATED
		$eventid	= array_key_exists('eventid', $data) ? $data['eventid'] : '';
		$date		= array_key_exists('date', $data) ? $data['date'] : '';

		$db     = $this->getDbo();
		$query	= $db->getQuery(true);
		$query->select('r.email, r.eventid, r.state, r.date, r.people')
			->from('`#__icagenda_registration` AS r');
		$query->where('r.state = 1');
		$query->where('r.email <> ""');
		$query->where('r.eventid = ' . (int) $eventid);

		if ($date != 'all')
		{
			if (iCDate::isDate($date))
			{
				$query->where('r.date = ' . $db->q($date));
			}
			elseif ($date == 1)
			{
				$query->where('r.period = 1');
			}
			elseif ($date)
			{
				// Fix for old date saving data
				$query->where('r.date = ' . $db->q($date));
			}
			else
			{
				$query->where('r.period = 0');
			}
		}

		$db->setQuery($query);

		$result	= $db->loadObjectList();

		$list	= '';
		$people	= 0;

		foreach ($result as $v)
		{
			$list.= $v->email . ', ';
			$people = ($people + $v->people);
		}

		$subject	= array_key_exists('subject', $data) ? $data['subject'] : '';
		$messageget	= array_key_exists('message', $data) ? $data['message'] : '';

		$list_emails	= explode(', ', $list);

		// Remove dupplicated email addresses
		$recipient			= array_unique($list_emails);
		$dupplicated_emails	= count($list_emails) - count($recipient);

		$obj		= $subject;
		$message	= $messageget;

		$recipient	= array_filter($recipient);
//		$mailer->addRecipient($recipient);
//		$mailer->addRecipient($sender);
		$mailer->addBCC($recipient);

		$content	= stripcslashes($message);
		$body		= str_replace('src="images/', 'src="' . JURI::root() . '/images/', $content);

//		$mailer->setSender(array( $mailfrom, $fromname ));
		$mailer->setSubject($obj);
		$mailer->isHTML(true);
		$mailer->Encoding = 'base64';
		$mailer->setBody($body);

		if ($obj && $body && $eventid && ($date || $date == '0'))
		{
			$send = $mailer->Send();
		}

		if ($send !== true)
		{
		    $app->enqueueMessage(JText::_('COM_ICAGENDA_NEWSLETTER_ERROR_ALERT'), 'error');

		    if ( ! $obj)
		    {
		    	$app->enqueueMessage('- ' . JText::_('COM_ICAGENDA_NEWSLETTER_NO_OBJ_ALERT'), 'error');
		    }
		    if ( ! $body)
		    {
		    	$app->enqueueMessage('- ' . JText::_('COM_ICAGENDA_NEWSLETTER_NO_BODY_ALERT'), 'error');
		    }
		    if ( ! $eventid && ( ! $date && $date != '0'))
		    {
		    	$app->enqueueMessage('- ' . JText::_('COM_ICAGENDA_NEWSLETTER_NO_EVENT_SELECTED'), 'error');
		    }
		    elseif ( $eventid && ( ! $date && $date != '0'))
		    {
		    	$app->enqueueMessage('- ' . JText::_('COM_ICAGENDA_NEWSLETTER_NO_DATE_SELECTED'), 'error');
		    }

		    return false;
		}
		else
		{
		    $app->enqueueMessage('<h2>' . JText::_('COM_ICAGENDA_NEWSLETTER_SUCCESS') . '</h2>', 'message');

			$app->enqueueMessage($this->listSend($recipient, 0, $people), 'message');

			if ($dupplicated_emails)
			{
				$app->enqueueMessage('<i>' . JText::sprintf('COM_ICAGENDA_NEWSLETTER_NB_EMAIL_NOT_SEND', $dupplicated_emails) . '</i>', 'message');
			}

//			$app->setUserState('com_icagenda.mail.data', null);
//			echo '<pre>'.print_r($recipient, true).'</pre>';

		    return true;
		}
	}

	public function listSend($recipient, $level = 0, $people = null)
	{
		$number		= 0;
		$list_send	= '';

		foreach($recipient AS $key => $value)
		{
			if (is_array($value) | is_object($value))
			{
				parent::listArray($value, $level+=1);
			}
			else
			{
//				$number = ($key + 1);
				$number = ($number + 1);

				$list_send.= str_repeat("&nbsp;", $level*3);
				$list_send.= $number . " : " . $value . "<br>";
			}
		}

//		$list_send.= '<div>&nbsp;</div>';
		$list_send.= '<h4>' . JText::_('COM_ICAGENDA_NEWSLETTER_NB_EMAIL_SEND').' = ' . $number . '';
		$list_send.= '<small> (' . JText::_('COM_ICAGENDA_REGISTRATION_TICKETS').': ' . $people . ')</small></h4>';

		return $list_send;
	}
}
models/customfield.php000060400000007401152455705350011067 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-06-13
 * @since		3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modeladmin');


/**
 * iCagenda model.
 */
class iCagendaModelCustomfield extends JModelAdmin
{
	/**
	 * @var		string	The prefix to use with controller messages.
	 * @since	3.4.0
	 */
	protected $text_prefix = 'COM_ICAGENDA';

	/**
	 * Returns a reference to the a Table object, always creating it.
	 *
	 * @param	type	The table type to instantiate
	 * @param	string	A prefix for the table class name. Optional.
	 * @param	array	Configuration array for model. Optional.
	 * @return	JTable	A database object
	 * @since	3.4.0
	 */
	public function getTable($type = 'Customfield', $prefix = 'iCagendaTable', $config = array())
	{
		return JTable::getInstance($type, $prefix, $config);
	}

	/**
	 * Method to get the record form.
	 *
	 * @param	array	$data		An optional array of data for the form to interogate.
	 * @param	boolean	$loadData	True if the form is to load its own data (default case), false if not.
	 * @return	JForm	A JForm object on success, false on failure
	 * @since	3.4.0
	 */
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_icagenda.customfield', 'customfield',
								array('control' => 'jform', 'load_data' => $loadData));

		if (empty($form))
		{
			return false;
		}

		return $form;
	}

	/**
	 * Method to get the data that should be injected in the form.
	 *
	 * @return	mixed	The data for the form.
	 * @since	3.4.0
	 */
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$data = JFactory::getApplication()->getUserState('com_icagenda.edit.customfield.data', array());

		if (empty($data))
		{
			$data = $this->getItem();
		}

		return $data;
	}

	/**
	 * Method to get a single record.
	 *
	 * @param	integer	The id of the primary key.
	 *
	 * @return	mixed	Object on success, false on failure.
	 * @since	3.4.0
	 */
	public function getItem($pk = null)
	{
		if ($item = parent::getItem($pk))
		{
			//Do any procesing on fields here if needed
		}

		return $item;
	}

	/**
	 * Prepare and sanitise the table prior to saving.
	 *
	 * @since	3.4.0
	 */
	protected function prepareTable( $table )
	{
		$app = JFactory::getApplication();

		$date = JFactory::getDate();
		$user = JFactory::getUser();

		if (empty($table->id))
		{
			// Set the values
			$table->created = $date->toSql();

			// Set ordering to the last item if not set
			if (empty($table->ordering))
			{
				$db = JFactory::getDbo();
				$query = $db->getQuery(true)
					->select('MAX(ordering)')
					->from($db->quoteName('#__icagenda_customfields'));
				$db->setQuery($query);
				$max = $db->loadResult();

				$table->ordering = $max + 1;
			}
		}
		else
		{
			// Set the values
			$table->modified = $date->toSql();
			$table->modified_by = $user->get('id');
		}

		// Alter the title for save as copy
		if ($app->input->get('task') == 'save2copy')
		{
			$table->title = iCString::increment($table->title);
			$table->alias = iCString::increment($table->alias, 'dash');
			$table->slug = iCString::increment($table->slug, 'underscore');
			$table->state = '0';
		}
	}
}
models/features.php000060400000010142152455705350010363 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      doorknob & Cyril Rezé
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-07-02
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modellist');

/**
 * Methods supporting a list of iCagenda records.
 */
class iCagendaModelfeatures extends JModelList
{
	/**
	 * Constructor.
	 *
	 * @param	array		An optional associative array of configuration settings.
	 * @see		JController
	 * @since	3.4.0
	 */
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'id', 'a.id',
				'ordering', 'a.ordering',
				'state', 'a.state',
				'desc', 'a.desc',
				'icon', 'a.icon',
				'icon_alt', 'a.icon_alt',
				'show_filter', 'a.show_filter',
			);
		}

		parent::__construct($config);
	}


	/**
	 * Method to auto-populate the model state.
	 *
	 * Note. Calling getState in this method will result in recursion.
	 *
	 * @since	3.4.0
	 */
	protected function populateState($ordering = null, $direction = null)
	{
		// Initialise variables.
		$app = JFactory::getApplication('administrator');

		// Load the filter state.
		$search = $app->getUserStateFromRequest($this->context.'.filter.search', 'filter_search');
		$this->setState('filter.search', $search);

		$published = $app->getUserStateFromRequest($this->context.'.filter.state', 'filter_published', '', 'string');
		$this->setState('filter.state', $published);

		// Load the parameters.
		$params = JComponentHelper::getParams('com_icagenda');
		$this->setState('params', $params);

		// List state information.
		parent::populateState('a.title', 'asc');
	}

	/**
	 * Method to get a store id based on model configuration state.
	 *
	 * This is necessary because the model is used by the component and
	 * different modules that might need different sets of data or different
	 * ordering requirements.
	 *
	 * @param	string		$id	A prefix for the store id.
	 * @return	string		A store id.
	 * @since	3.4.0
	 */
	protected function getStoreId($id = '')
	{
		// Compile the store id.
		$id.= ':' . $this->getState('filter.search');
		$id.= ':' . $this->getState('filter.state');

		return parent::getStoreId($id);
	}

	/**
	 * Build an SQL query to load the list data.
	 *
	 * @return	JDatabaseQuery
	 * @since	3.4.0
	 */
	protected function getListQuery()
	{
		// Create a new query object.
		$db		= $this->getDbo();
		$query	= $db->getQuery(true);

		// Select the required fields from the table.
		$query->select(
			$this->getState(
				'list.select',
				'a.*'
			)
		);
		$query->from('#__icagenda_feature AS a');

		// Join over the users for the checked out user.
		$query->select('uc.name AS editor');
		$query->leftJoin('#__users AS uc ON uc.id=a.checked_out');

		// Filter by published state
		$published = $this->getState('filter.state');
		if (is_numeric($published))
		{
			$query->where('a.state=' . (int) $published);
		}
		elseif ($published === '')
		{
			$query->where('(a.state IN (0, 1))');
		}

		// Filter by search in title
		$search = $this->getState('filter.search');

		if (!empty($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where('a.id = ' . (int) substr($search, 3));
			}
			else
			{
				$search = $db->Quote('%'.$db->escape($search, true).'%');
				$query->where("(a.title LIKE $search OR a.desc LIKE $search)");
			}
		}

		// Add the list ordering clause.
		$orderCol	= $this->state->get('list.ordering');
		$orderDirn	= $this->state->get('list.direction');

		if ($orderCol && $orderDirn)
		{
			$query->order($db->escape("$orderCol $orderDirn"));
		}

		return $query;
	}
}
models/download.php000060400000005556152455705350010371 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.0 2015-02-05
 * @since       3.5.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

// Joomla 2.5 import
jimport('joomla.application.component.modelform');

/**
 * Download model.
 *
 * @since	3.5.0
 */
class icagendaModelDownload extends JModelForm
{
	protected $_context = 'com_icagenda.registrations';

	/**
	 * Auto-populate the model state.
	 *
	 * Note. Calling getState in this method will result in recursion.
	 *
	 * @return  void
	 *
	 * @since   3.5.0
	 */
	protected function populateState()
	{
		// Joomla 3
		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			$input = JFactory::getApplication()->input;

			$basename = $input->cookie->getString(JApplicationHelper::getHash($this->_context . '.basename'), '__SITE__');
			$this->setState('basename', $basename);

			$compressed = $input->cookie->getInt(JApplicationHelper::getHash($this->_context . '.compressed'), 1);
			$this->setState('compressed', $compressed);
		}

		// Joomla 2.5
		else
		{
			$basename = JRequest::getString(JApplication::getHash($this->_context.'.basename'), '__SITE__', 'cookie');
			$this->setState('basename', $basename);

			$compressed = JRequest::getInt(JApplication::getHash($this->_context.'.compressed'), 1, 'cookie');
			$this->setState('compressed', $compressed);
		}
	}

	/**
	 * Method to get the record form.
	 *
	 * @param   array    $data      Data for the form.
	 * @param   boolean  $loadData  True if the form is to load its own data (default case), false if not.
	 *
	 * @return  mixed  A JForm object on success, false on failure
	 *
	 * @since   3.5.0
	 */
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_icagenda.download', 'download', array('control' => 'jform', 'load_data' => $loadData));

		if (empty($form))
		{
			return false;
		}

		return $form;
	}

	/**
	 * Method to get the data that should be injected in the form.
	 *
	 * @return  mixed  The data for the form.
	 *
	 * @since   3.5.0
	 */
	protected function loadFormData()
	{
		$data = array(
			'basename'		=> $this->getState('basename'),
			'compressed'	=> $this->getState('compressed')
		);

		// Joomla 3
		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			$this->preprocessData('com_icagenda.download', $data);
		}

		return $data;
	}
}
models/info.php000060400000001240152455705350007477 0ustar00<?php
/** 
 *	iCagenda
 *----------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright	Copyright (C) 2012 JOOMLIC - All rights reserved.
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Jooml!C - http://www.joomlic.com
 * 
 * @since		1.2.6
 *----------------------------------------------------------------------------
*/

// No direct access to this file
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport('joomla.application.component.modellist');

/**
 * Methods supporting a list of iCagenda records.
 */
class iCagendaModelinfo extends JModelList
{
	

}
models/fields.php000060400000001242152455705350010014 0ustar00<?php
/** 
 *	iCagenda
 *----------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright	Copyright (C) 2012 JOOMLIC - All rights reserved.
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Jooml!C - http://www.joomlic.com
 * 
 * @since		1.2.6
 *----------------------------------------------------------------------------
*/

// No direct access to this file
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport('joomla.application.component.modellist');

/**
 * Methods supporting a list of iCagenda records.
 */
class iCagendaModelfields extends JModelList
{
	

}
models/event.php000060400000034177152455705350007704 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.12 2015-09-25
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modeladmin');


/**
 * iCagenda model.
 */
class iCagendaModelEvent extends JModelAdmin
{
	/**
	 * @var		string	The prefix to use with controller messages.
	 * @since	1.0
	 */
	protected $text_prefix = 'COM_ICAGENDA';

	/**
	 * Method to test whether a record can be deleted.
	 *
	 * @param   object  $record  A record object.
	 *
	 * @return  boolean  True if allowed to delete the record. Defaults to the permission set in the component.
	 *
	 * @since   3.5.6
	 */
	protected function canDelete($record)
	{
		if ( ! empty($record->id))
		{
			if ($record->state != -2)
			{
				return false;
			}

			$user = JFactory::getUser();

			if ($user->authorise('core.delete'))
			{
				icagendaCustomfields::deleteData($record->id, 2);
				icagendaCustomfields::cleanData(2);

				return true;
			}
		}

		return false;
	}

	/**
	 * Prepare and sanitise the table prior to saving.
	 *
	 * @param   JTable  $table  A JTable object.
	 *
	 * @return  void
	 *
	 * @since	1.0
	 */
	protected function prepareTable( $table )
	{
		$date = JFactory::getDate();
		$user = JFactory::getUser();

		$table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);

		if (empty($table->id))
		{
			// Set the values
			$table->created = $date->toSql();

			// Set ordering to the last item if not set
			if (empty($table->ordering))
			{
				$db = JFactory::getDbo();
				$query = $db->getQuery(true)
					->select('MAX(ordering)')
					->from($db->quoteName('#__icagenda_events'));
				$db->setQuery($query);
				$max = $db->loadResult();

				$table->ordering = $max + 1;
			}
		}
		else
		{
			// Set the values
			$table->modified = $date->toSql();
			$table->modified_by = $user->get('id');
		}
	}

	/**
	 * Returns a Table object, always creating it.
	 *
	 * @param   string  $type    The table type to instantiate
	 * @param   string  $prefix  A prefix for the table class name. Optional.
	 * @param   array   $config  Configuration array for model. Optional.
	 *
	 * @return  JTable    A database object
	 *
	 * @since	1.0
	 */
	public function getTable($type = 'Event', $prefix = 'iCagendaTable', $config = array())
	{
		return JTable::getInstance($type, $prefix, $config);
	}

	/**
	 * Method to get a single record.
	 *
	 * @param   integer $pk The id of the primary key.
	 *
	 * @return  mixed   Object on success, false on failure.
	 *
	 * @since	1.0
	 */
	public function getItem($pk = null)
	{
		if ($item = parent::getItem($pk))
		{
			// Do any procesing on fields here if needed
		}

		return $item;
	}

	/**
	 * Method to get the record form.
	 *
	 * @param   array    $data      Data for the form.
	 * @param   boolean  $loadData  True if the form is to load its own data (default case), false if not.
	 *
	 * @return  mixed  A JForm object on success, false on failure
	 *
	 * @since	1.0
	 */
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_icagenda.event', 'event',
								array('control' => 'jform', 'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		return $form;
	}

	/**
	 * Method to get the data that should be injected in the form.
	 *
	 * @return  mixed  The data for the form.
	 *
	 * @since	1.0
	 */
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$app = JFactory::getApplication();
		$data_array = $app->getUserState('com_icagenda.edit.event.data', array());

		if (empty($data_array))
		{
			$data = $this->getItem();
		}
		else
		{
			$data = new JObject;
			$data->setProperties($data_array);
		}

		// If not array, creates array with week days data
		if ( ! is_array($data->weekdays))
		{
			$data->weekdays = explode(',', $data->weekdays);
		}

		// Retrieves data, to display selected week days
		$arrayWeekDays = $data->weekdays;

		foreach ($arrayWeekDays as $allTest)
		{
			if ($allTest == '')
			{
				$data->weekdays = '0,1,2,3,4,5,6';
			}
		}

		// Set displaytime default value
		if ( ! isset($data->displaytime))
		{
			$data->displaytime = JComponentHelper::getParams('com_icagenda')->get('displaytime', '1');
		}

		// Set Features
		$data->features = $this->getFeatures($data->id);

		// Convert features into an array so that the form control can be set
		if ( ! isset($data->features))
		{
			$data->features = array();
		}

		if ( ! is_array($data->features))
		{
			$data->features = explode(',', $data->features);
		}

		return $data;
	}

	/**
	 * Method to save the form data.
	 *
	 * @param   array  $data  The form data.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since	3.4.0
	 */
	public function save($data)
	{
		$input	= JFactory::getApplication()->input;
		$date	= JFactory::getDate();
		$user	= JFactory::getUser();

		// Fix version before 3.4.0 to set a created date (will use last modified date if exists, or current date)
		if (empty($data['created']))
		{
			$data['created'] = ( ! empty($data['modified'])) ? $data['modified'] : $date->toSql();
		}

		// Alter the title for save as copy
		if ($input->get('task') == 'save2copy')
		{
			$origTable = clone $this->getTable();
			$origTable->load($input->getInt('id'));

			if ($data['title'] == $origTable->title)
			{
				list($title, $alias) = $this->generateNewTitle($data['catid'], $data['alias'], $data['title']);
				$data['title'] = $title;
				$data['alias'] = $alias;
			}
			else
			{
				if ($data['alias'] == $origTable->alias)
				{
					$data['alias'] = '';
				}
			}
			$data['state'] = 0;
		}

		// Automatic handling of alias for empty fields
		if (in_array($input->get('task'), array('apply', 'save', 'save2new')) && (int) $input->get('id') == 0)
		{
			if ($data['alias'] == null)
			{
				if (JFactory::getConfig()->get('unicodeslugs') == 1)
				{
					$data['alias'] = JFilterOutput::stringURLUnicodeSlug($data['title']);
				}
				else
				{
					$data['alias'] = JFilterOutput::stringURLSafe($data['title']);
				}

				$table = JTable::getInstance('Event', 'iCagendaTable');

				if ($table->load(array('alias' => $data['alias'], 'catid' => $data['catid'])))
				{
					$msg = JText::_('COM_ICAGENDA_ALERT_EVENT_SAVE_WARNING');
				}

				list($title, $alias) = $this->generateNewTitle($data['catid'], $data['alias'], $data['title']);
				$data['alias'] = $alias;

				if (isset($msg))
				{
					JFactory::getApplication()->enqueueMessage($msg, 'warning');
				}
			}
		}

		// Generates Alias if empty
		if ($data['alias'] == null || empty($data['alias']))
		{
			$data['alias'] = JFilterOutput::stringURLSafe($data['title']);

			if ($data['alias'] == null || empty($data['alias']))
			{
				if (JFactory::getConfig()->get('unicodeslugs') == 1)
				{
					$data['alias'] = JFilterOutput::stringURLUnicodeSlug($data['title']);
				}
				else
				{
					$data['alias'] = JFilterOutput::stringURLSafe($data['created']);
				}
			}
		}

		// Set File Uploaded
		if ( ! isset($data['file']))
		{
			$file = JRequest::getVar('jform', null, 'files', 'array');
			$fileUrl = $this->upload($file);
			$data['file'] = $fileUrl;
		}

		// Set Creator infos
		$userId	= $user->get('id');
		$userName = $user->get('name');

		if (empty($data['created_by']))
		{
			$data['created_by'] = (int) $userId;
		}

		$data['username'] = $userName;

		// Set Params
		if (isset($data['params']) && is_array($data['params']))
		{
			// Convert the params field to a string.
			$parameter = new JRegistry;
			$parameter->loadArray($data['params']);
			$data['params'] = (string)$parameter;
		}

		// Get Event ID from the result back to the Table after saving.
		$table = $this->getTable();

		if ($table->save($data) === true)
		{
			$data['id'] = $table->id;
		}
		else
		{
			$data['id'] = null;
		}

		if (parent::save($data))
		{
			// Save Features to database
			$this->maintainFeatures($data);

			// Save Custom Fields to database
			if (isset($data['custom_fields']) && is_array($data['custom_fields']))
			{
				icagendaCustomfields::saveToData($data['custom_fields'], $data['id'], 2);
			}

			return true;
		}

		return false;
	}

	/**
	 * Upload
	 *
	 * @since	3.5.3
	 */
	function upload($file)
	{
		jimport('joomla.filesystem.file');
		jimport('joomla.filesystem.folder');

		$filename = JFile::makeSafe($file['name']['file']);

		// Get media path
		$params_media	= JComponentHelper::getParams('com_media');
		$image_path		= $params_media->get('image_path', 'images');

		// Paths to thumbs folder
		$thumbsPath		= $image_path . '/icagenda/thumbs';

		if ($filename != '')
		{
			$src = $file['tmp_name']['file'];
			$dest =  JPATH_SITE . '/' . $image_path . '/icagenda/files/' . $filename;

			if ( ! is_dir($dest))
			{
				mkdir($intDir, 0755);
			}

			if (JFile::upload($src, $dest, false))
			{
				echo 'upload';
				return $image_path . '/icagenda/files/' . $filename;
			}

			return $image_path . '/icagenda/files/' . $filename;
		}
	}

	/**
	 * Maintain features to data
	 *
	 * @since	3.4.0
	 */
	protected function maintainFeatures($data)
	{
		// Get the list of feature ids to be linked to the event
		$features = isset($data['features']) && is_array($data['features']) ? implode(',', $data['features']) : '';

		$db = JFactory::getDbo();

		// Write any new feature records to the icagenda_feature_xref table
		if ( ! empty($features))
		{
			// Get a list of the valid features already present for this event
			$query = $db->getQuery(true);

			$query->select('feature_id')
				->from($db->qn('#__icagenda_feature_xref'));

			$query->where('event_id = ' . (int) $data['id']);
			$query->where('feature_id IN (' . $features . ')');

			$db->setQuery($query);

			$existing_features = $db->loadColumn(0);

			// Identify the insert list
			if (empty($existing_features))
			{
				$new_features = $data['features'];
			}
			else
			{
				$new_features = array();

				foreach ($data['features'] as $feature)
				{
					if ( ! in_array($feature, $existing_features))
					{
						$new_features[] = $feature;
					}
				}
			}
			// Write the needed xref records
			if ( ! empty($new_features))
			{
				$xref = new JObject;
				$xref->set('event_id', $data['id']);

				foreach ($new_features as $feature)
				{
					$xref->set('feature_id', $feature);
					$db->insertObject('#__icagenda_feature_xref', $xref);
					$db->setQuery($query);

					if ( ! $db->execute())
					{
						return false;
					}
				}
			}
		}

		// Delete any unwanted feature records from the icagenda_feature_xref table
		$query = $db->getQuery(true);
		$query->delete($db->qn('#__icagenda_feature_xref'));
		$query->where('event_id = ' . (int) $data['id']);

		if ( ! empty($features))
		{
			// Delete only unwanted features
			$query->where('feature_id NOT IN (' . $features . ')');
		}

		$db->setQuery($query);
		$db->execute($query);

		if ( ! $db->execute())
		{
			return false;
		}

		return true;
	}

	/**
	 * Extracts the list of Feature IDs linked to the event and returns an array
	 *
	 * @param	integer  $event_id
	 *
	 * @return	array/integer  Set of Feature IDs
	 *
	 * @since	3.5.3
	 */
	protected function getFeatures($event_id)
	{
		// Write any new feature records to the icagenda_feature_xref table
		if (empty($event_id))
		{
			return '';
		}
		else
		{
			$db = JFactory::getDbo();

			// Get a comma separated list of the ids of features present for this event
			// Note: Direct extraction of a comma separated list is avoided because each db type uses proprietary syntax
			$query = $db->getQuery(true);
			$query->select('fx.feature_id')
				->from($db->qn('#__icagenda_events', 'e'))
				->innerJoin('#__icagenda_feature_xref AS fx ON e.id=fx.event_id')
				->innerJoin('#__icagenda_feature AS f ON fx.feature_id=f.id AND f.state=1');
			$query->where('e.id = ' . (int) $event_id);
			$db->setQuery($query);
			$features = $db->loadColumn(0);

			// Return a comma separated list
			return implode(',', $features);
		}
	}

	/**
	 * Approve Function.
	 *
	 * @since   3.2.0
	 */
	function approve($cid, $publish)
	{
		if (count($cid))
		{
			JArrayHelper::toInteger($cid);
			$cids = implode( ',', $cid );
			$query = 'UPDATE #__icagenda_events'
					. ' SET approval = '.(int) $publish
					. ' WHERE id IN ( '.$cids.' )';
					$this->_db->setQuery( $query );

			if ( ! $this->_db->query())
			{
				$this->setError($this->_db->getErrorMsg());

				return false;
			}
		}

		return true;
	}

	/**
	 * Method to test whether a record can be deleted.
	 *
	 * @param   object  $record  A record object.
	 *
	 * @return  boolean  True if allowed to delete the record. Defaults to the permission set in the component.
	 *
	 * @since   3.6.0
	 */
//	protected function canDelete($record)
//	{
//		if ( ! empty($record->id))
//		{
//			if ($record->state != -2)
//			{
//				return false;
//			}

//			$user = JFactory::getUser();

//			return $user->authorise('core.delete', 'com_icagenda.event.' . (int) $record->id);
//		}

//		return false;
//	}

	/**
	 * Method to test whether a record can have its state edited.
	 *
	 * @param   object  $record  A record object.
	 *
	 * @return  boolean  True if allowed to change the state of the record. Defaults to the permission set in the component.
	 *
	 * @since   3.6.0
	 */
//	protected function canEditState($record)
//	{
//		$user = JFactory::getUser();

		// Check for existing event.
//		if (!empty($record->id))
//		{
//			return $user->authorise('core.edit.state', 'com_icagenda.event.' . (int) $record->id);
//		}
		// New event, so check against the category.
//		elseif (!empty($record->catid))
//		{
//			return $user->authorise('core.edit.state', 'com_icagenda.event.' . (int) $record->catid);
//		}
		// Default to component settings if neither event nor category known.
//		else
//		{
//			return parent::canEditState('com_icagenda');
//		}
//	}
}
access.xml000060400000005277152455705350006551 0ustar00<?xml version="1.0" encoding="utf-8"?>
<access component="com_icagenda">
	<section name="component">
		<action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" />
		<action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" />
		<action name="core.create" title="JACTION_CREATE" description="JACTION_CREATE_COMPONENT_DESC" />
		<action name="core.delete" title="JACTION_DELETE" description="JACTION_DELETE_COMPONENT_DESC" />
		<action name="core.edit" title="JACTION_EDIT" description="JACTION_EDIT_COMPONENT_DESC" />
		<action name="core.edit.state" title="JACTION_EDITSTATE" description="JACTION_EDITSTATE_COMPONENT_DESC" />
		<action name="core.edit.own" title="JACTION_EDITOWN" description="JACTION_EDITOWN_COMPONENT_DESC" />
		<action name="icagenda.access.categories" title="COM_ICAGENDA_ACCESS_VIEW_CATEGORIES"
			description="COM_ICAGENDA_ACCESS_VIEW_CATEGORIES_DESC" />
		<action name="icagenda.access.events" title="COM_ICAGENDA_ACCESS_VIEW_EVENTS"
			description="COM_ICAGENDA_ACCESS_VIEW_EVENTS_DESC" />
		<action name="icagenda.access.registrations" title="COM_ICAGENDA_ACCESS_VIEW_REGISTRATIONS"
			description="COM_ICAGENDA_ACCESS_VIEW_REGISTRATIONS_DESC" />
		<action name="icagenda.access.newsletter" title="COM_ICAGENDA_ACCESS_VIEW_NEWSLETTER"
			description="COM_ICAGENDA_ACCESS_VIEW_NEWSLETTER_DESC" />
		<action name="icagenda.access.customfields" title="COM_ICAGENDA_ACCESS_VIEW_CUSTOMFIELDS"
			description="COM_ICAGENDA_ACCESS_VIEW_CUSTOMFIELDS_DESC" />
		<action name="icagenda.access.features" title="COM_ICAGENDA_ACCESS_VIEW_FEATURES"
			description="COM_ICAGENDA_ACCESS_VIEW_FEATURES_DESC" />
		<action name="icagenda.access.themes" title="COM_ICAGENDA_ACCESS_VIEW_THEMES"
			description="COM_ICAGENDA_ACCESS_VIEW_THEMES_DESC" />
	</section>
	<section name="category">
		<action name="core.create" title="JACTION_CREATE" description="COM_CATEGORIES_ACCESS_CREATE_DESC" />
		<action name="core.delete" title="JACTION_DELETE" description="COM_CATEGORIES_ACCESS_DELETE_DESC" />
		<action name="core.edit" title="JACTION_EDIT" description="COM_CATEGORIES_ACCESS_EDIT_DESC" />
		<action name="core.edit.state" title="JACTION_EDITSTATE" description="COM_CATEGORIES_ACCESS_EDITSTATE_DESC" />
		<action name="core.edit.own" title="JACTION_EDITOWN" description="COM_CATEGORIES_ACCESS_EDITOWN_DESC" />
	</section>
	<section name="event">
		<action name="core.delete" title="JACTION_DELETE" description="COM_CONTENT_ACCESS_DELETE_DESC" />
		<action name="core.edit" title="JACTION_EDIT" description="COM_CONTENT_ACCESS_EDIT_DESC" />
		<action name="core.edit.state" title="JACTION_EDITSTATE" description="COM_CONTENT_ACCESS_EDITSTATE_DESC" />
	</section>
</access>
helpers/icagenda.php000060400000021155152455705350010465 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-07-02
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

// Access check.
if (!JFactory::getUser()->authorise('core.manage', 'com_icagenda')) {
	return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR'));
}

/**
 * iCagenda helper.
 */
class iCagendaHelper
{
	/**
	 * Configure the Linkbar.
	 */
	public static function addSubmenu($submenu)
	{
		if(version_compare(JVERSION, '3.0', 'lt'))
		{
			JSubMenuHelper::addEntry(
				JText::_('COM_ICAGENDA_TITLE_ICAGENDA'),
				'index.php?option=com_icagenda&view=icagenda',
				$submenu == 'icagenda'
			);
			if (JFactory::getUser()->authorise('icagenda.access.categories', 'com_icagenda'))
			{
				JSubMenuHelper::addEntry(
					JText::_('COM_ICAGENDA_TITLE_CATEGORIES'),
					'index.php?option=com_icagenda&view=categories',
					$submenu == 'categories'
				);
			}
			if (JFactory::getUser()->authorise('icagenda.access.events', 'com_icagenda'))
			{
				JSubMenuHelper::addEntry(
					JText::_('COM_ICAGENDA_TITLE_EVENTS'),
					'index.php?option=com_icagenda&view=events',
					$submenu == 'events'
				);
			}
			if (JFactory::getUser()->authorise('icagenda.access.registrations', 'com_icagenda'))
			{
				JSubMenuHelper::addEntry(
					JText::_('COM_ICAGENDA_TITLE_REGISTRATION'),
					'index.php?option=com_icagenda&view=registrations',
					$submenu == 'registrations'
				);
			}
			if (JFactory::getUser()->authorise('icagenda.access.newsletter', 'com_icagenda'))
			{
				JSubMenuHelper::addEntry(
					JText::_('COM_ICAGENDA_TITLE_NEWSLETTER'),
					'index.php?option=com_icagenda&view=mail&layout=edit',
					$submenu == 'newsletter'
				);
			}
			if (JFactory::getUser()->authorise('icagenda.access.customfields', 'com_icagenda'))
			{
				JSubMenuHelper::addEntry(
					JText::_('COM_ICAGENDA_TITLE_CUSTOMFIELDS'),
					'index.php?option=com_icagenda&view=customfields',
					$submenu == 'customfields'
				);
			}
			if (JFactory::getUser()->authorise('icagenda.access.features', 'com_icagenda'))
			{
				JSubMenuHelper::addEntry(
					JText::_('COM_ICAGENDA_TITLE_FEATURES'),
					'index.php?option=com_icagenda&view=features',
					$submenu == 'features'
				);
			}
			if (JFactory::getUser()->authorise('icagenda.access.themes', 'com_icagenda'))
			{
				JSubMenuHelper::addEntry(
					JText::_('COM_ICAGENDA_THEMES'),
					'index.php?option=com_icagenda&view=themes',
					$submenu == 'themes'
				);
			}
			JSubMenuHelper::addEntry(
				JText::_('COM_ICAGENDA_INFO'),
				'index.php?option=com_icagenda&view=info',
				$submenu == 'info'
			);

			$document = JFactory::getDocument();

			/**
			 * Set Titles iCagenda
			 */
			if ($submenu == 'icagenda')
			{
				$document->setTitle(JText::_('COM_ICAGENDA'));
			}
			if ($submenu == 'categories')
			{
				$document->setTitle(JText::_('COM_ICAGENDA') . ' | ' . JText::_('COM_ICAGENDA_TITLE_CATEGORIES'));
			}
			if ($submenu == 'events')
			{
				$document->setTitle(JText::_('COM_ICAGENDA') . ' | ' . JText::_('COM_ICAGENDA_TITLE_EVENTS'));
			}
			if ($submenu == 'registrations')
			{
				$document->setTitle(JText::_('COM_ICAGENDA') . ' | ' . JText::_('COM_ICAGENDA_TITLE_REGISTRATION'));
			}
			if ($submenu == 'newsletter')
			{
				$document->setTitle(JText::_('COM_ICAGENDA') . ' | ' . JText::_('COM_ICAGENDA_TITLE_NEWSLETTER'));
			}
			if ($submenu == 'customfields')
			{
				$document->setTitle(JText::_('COM_ICAGENDA') . ' | ' . JText::_('COM_ICAGENDA_TITLE_CUSTOMFIELDS'));
			}
			if ($submenu == 'features')
			{
				$document->setTitle(JText::_('COM_ICAGENDA') . ' | ' . JText::_('COM_ICAGENDA_TITLE_FEATURES'));
			}
			if ($submenu == 'themes')
			{
				$document->setTitle(JText::_('COM_ICAGENDA') . ' | ' . JText::_('COM_ICAGENDA_THEMES'));
			}
			if ($submenu == 'info')
			{
				$document->setTitle(JText::_('COM_ICAGENDA') . ' | ' . JText::_('COM_ICAGENDA_INFO'));
			}

			$document->addStyleDeclaration('
				.icon48icagenda{background: url(../media/com_icagenda/images/XXX.png);}
				.icon-48-events {background: url(../media/com_icagenda/images/all_events-48.png) no-repeat;}
				.icon-48-event {background: url(../media/com_icagenda/images/new_event-48.png) no-repeat;}
				.icon-48-registration {background: url(../media/com_icagenda/images/registration-48.png) no-repeat;}
				.icon-48-categories {background: url(../media/com_icagenda/images/all_cats-48.png) no-repeat;}
				.icon-48-category {background: url(../media/com_icagenda/images/new_cat-48.png) no-repeat;}
				.icon-48-generic {background: url(../media/com_icagenda/images/iconicagenda48.png) no-repeat;}
				.icon-48-mail {background: url(../media/com_icagenda/images/newsletter-48.png) no-repeat;}
				.icon-48-themes {background: url(../media/com_icagenda/images/themes-48.png) no-repeat;}
				.icon-48-customfields {background: url(../media/com_icagenda/images/customfields-48.png) no-repeat;}
				.icon-48-info {background: url(../media/com_icagenda/images/info-48.png) no-repeat;}
			');
		}
		else
		{
			JHtmlSidebar::addEntry(
				JText::_('COM_ICAGENDA_TITLE_ICAGENDA'),
				'index.php?option=com_icagenda&view=icagenda',
				$submenu == 'icagenda'
			);
			if (JFactory::getUser()->authorise('icagenda.access.categories', 'com_icagenda'))
			{
				JHtmlSidebar::addEntry(
					JText::_('COM_ICAGENDA_TITLE_CATEGORIES'),
					'index.php?option=com_icagenda&view=categories',
					$submenu == 'categories'
				);
			}
			if (JFactory::getUser()->authorise('icagenda.access.events', 'com_icagenda'))
			{
				JHtmlSidebar::addEntry(
					JText::_('COM_ICAGENDA_TITLE_EVENTS'),
					'index.php?option=com_icagenda&view=events',
					$submenu == 'events'
				);
			}
			if (JFactory::getUser()->authorise('icagenda.access.registrations', 'com_icagenda'))
			{
				JHtmlSidebar::addEntry(
					JText::_('COM_ICAGENDA_TITLE_REGISTRATION'),
					'index.php?option=com_icagenda&view=registrations',
					$submenu == 'registrations'
				);
			}
			if (JFactory::getUser()->authorise('icagenda.access.newsletter', 'com_icagenda'))
			{
				JHtmlSidebar::addEntry(
					JText::_('COM_ICAGENDA_TITLE_NEWSLETTER'),
					'index.php?option=com_icagenda&view=mail&layout=edit',
					$submenu == 'newsletter'
				);
			}
			if (JFactory::getUser()->authorise('icagenda.access.customfields', 'com_icagenda'))
			{
				JHtmlSidebar::addEntry(
					JText::_('COM_ICAGENDA_TITLE_CUSTOMFIELDS'),
					'index.php?option=com_icagenda&view=customfields',
					$submenu == 'customfields'
				);
			}
			if (JFactory::getUser()->authorise('icagenda.access.features', 'com_icagenda'))
			{
				JHtmlSidebar::addEntry(
					JText::_('COM_ICAGENDA_TITLE_FEATURES'),
					'index.php?option=com_icagenda&view=features',
					$submenu == 'features'
				);
			}
			if (JFactory::getUser()->authorise('icagenda.access.themes', 'com_icagenda'))
			{
				JHtmlSidebar::addEntry(
					JText::_('COM_ICAGENDA_THEMES'),
					'index.php?option=com_icagenda&view=themes',
					$submenu == 'themes'
				);
			}
			JHtmlSidebar::addEntry(
				JText::_('COM_ICAGENDA_INFO'),
				'index.php?option=com_icagenda&view=info',
				$submenu == 'info'
			);
		}
	}

	/**
	 * Gets a list of the actions that can be performed.
	 */
	public static function getActions($messageId = 0)
	{
		$user   = JFactory::getUser();
		$result = new JObject;

		if (empty($messageId))
		{
			$assetName = 'com_icagenda';
		}
		else
		{
			$assetName = 'com_icagenda.message.'.(int) $messageId;
		}

		$actions = array(
			'core.admin',
			'core.manage',
			'core.create',
			'core.edit',
			'core.delete',
			'core.edit.state',
			'core.edit.own',
			'icagenda.access.categories',
			'icagenda.access.events',
			'icagenda.access.registrations',
			'icagenda.access.newsletter',
			'icagenda.access.customfields',
			'icagenda.access.features',
			'icagenda.access.themes'
		);

		foreach ($actions as $action)
		{
			$result->set($action, $user->authorise($action, $assetName));
		}

		return $result;
	}

	/**
	 * Tests whether a string is serialized before attempting to unserialize it
	 *
	 * ( TO BE REMOVED WHEN ALL CALLS FROM IC LIBRARY !!! )
	 */
	public static function isSerialized($str)
	{
		return ($str == serialize(false) || @unserialize($str) !== false);
	}
}
helpers/html/events.php000060400000002761152455705350011204 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.1.10 2013-09-11
 * @since       3.2
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * Extended Utility class for the iCagenda component.
 *
 * @package     Joomla.Administrator
 * @subpackage  com_iCagenda
 * @since       3.2
 */
class JHtmlEvents
{

	public static function approveEvents()
	{
		$states = array(
			1	=> array(
				'img'				=> 'tick.png',
				'task'				=> 'approve',
				'text'				=> '',
				'active_title'		=> 'COM_ICAGENDA_TOOLBAR_APPROVE',
				'inactive_title'	=> '',
				'tip'				=> true,
				'active_class'		=> 'unpublish',
				'inactive_class'	=> 'unpublish'
			),
			0	=> array(
				'img'				=> 'publish_x.png',
				'task'				=> '',
				'text'				=> '',
				'active_title'		=> '',
				'inactive_title'	=> 'COM_ICAGENDA_APPROVED',
				'tip'				=> true,
				'active_class'		=> 'publish',
				'inactive_class'	=> 'publish'
			)
		);
		return $states;
	}
}
helpers/html/index.html000060400000000037152455705350011156 0ustar00<!DOCTYPE html><title></title>
helpers/index.html000060400000000054152455705350010211 0ustar00<html><body bgcolor="#FFFFFF"></body></html>controller.php000060400000003560152455705350007453 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.4 2015-04-11
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

require_once(JPATH_COMPONENT_SITE . '/helpers/iCicons.class.php');

/**
 * Controller class for iCagenda.
 */
class iCagendaController extends JControllerLegacy
{
	public function display($cachable = false, $urlparams = false)
	{
//		$cachable = true;

		$paramsC 	= JComponentHelper::getParams('com_icagenda');
		$cache 		= $paramsC->get('enable_cache', 0);
		$cachable 	= false;

		if ($cache == 1)
		{
			$cachable 	= true;
		}

		$document = JFactory::getDocument();

		$safeurlparams = array(
			'catid' => 'INT',
			'id' => 'INT',
			'cid' => 'ARRAY',
			'year' => 'INT',
			'month' => 'INT',
			'limit' => 'UINT',
			'limitstart' => 'UINT',
			'showall' => 'INT',
			'return' => 'BASE64',
			'filter' => 'STRING',
			'filter_order' => 'CMD',
			'filter_order_Dir' => 'CMD',
			'filter-search' => 'STRING',
			'print' => 'BOOLEAN',
			'lang' => 'CMD',
			'Itemid' => 'INT');

		parent::display($cachable, $safeurlparams);

		return $this;
	}

	public function payment()
	{

// Set base path
JLayoutHelper::$defaultBasePath = JPATH_PLUGINS . '/content/ic_paypal/layouts';

// Render mylayout.php
$renderedLayout = JLayoutHelper::render('payment_test');
echo $renderedLayout;
	}
}
tables/category.php000060400000011261152455705350010354 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rez�, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rez� (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-12-04
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * category Table class
 */
class iCagendaTablecategory extends JTable
{
	/**
	 * Constructor
	 *
	 * @param JDatabase A database connector object
	 */
	public function __construct(&$_db)
	{
		parent::__construct('#__icagenda_category', 'id', $_db);
	}

	/**
	 * Overloaded bind function to pre-process the params.
	 *
	 * @param	array		Named array
	 * @return	null|string	null is operation was satisfactory, otherwise returns an error
	 * @see		JTable:bind
	 * @since	1.5
	 */
	public function bind($array, $ignore = '')
	{
		if (isset($array['params']) && is_array($array['params'])) {
			$registry = new JRegistry();
			$registry->loadArray($array['params']);
			$array['params'] = (string)$registry;
		}

		if (isset($array['metadata']) && is_array($array['metadata'])) {
			$registry = new JRegistry();
			$registry->loadArray($array['metadata']);
			$array['metadata'] = (string)$registry;
		}
		return parent::bind($array, $ignore);
	}

    /**
    * Overloaded check function
    */
    public function check()
    {
		// If there is an ordering column and this is a new row then get the next ordering value
        if (property_exists($this, 'ordering') && $this->id == 0)
        {
            $this->ordering = self::getNextOrder();
        }

        return parent::check();
    }


    /**
     * Method to set the publishing state for a row or list of rows in the database
     * table.  The method respects checked out rows by other users and will attempt
     * to checkin rows that it can after adjustments are made.
     *
     * @param    mixed    An optional array of primary key values to update.  If not
     *                    set the instance property value is used.
     * @param    integer The publishing state. eg. [0 = unpublished, 1 = published]
     * @param    integer The user id of the user performing the operation.
     * @return    boolean    True on success.
     * @since    1.0.4
     */
    public function publish($pks = null, $state = 1, $userId = 0)
    {
        // Initialise variables.
        $k = $this->_tbl_key;

        // Sanitize input.
        JArrayHelper::toInteger($pks);
        $userId = (int) $userId;
        $state  = (int) $state;

        // If there are no primary keys set check to see if the instance key is set.
        if (empty($pks))
        {
            if ($this->$k) {
                $pks = array($this->$k);
            }
            // Nothing to set publishing state on, return false.
            else {
                $this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
                return false;
            }
        }

        // Build the WHERE clause for the primary keys.
        $where = $k.'='.implode(' OR '.$k.'=', $pks);

        // Determine if there is checkin support for the table.
        if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time')) {
            $checkin = '';
        }
        else {
            $checkin = ' AND (checked_out = 0 OR checked_out = '.(int) $userId.')';
        }

        // Update the publishing state for rows with the given primary keys.
        $this->_db->setQuery(
            'UPDATE `'.$this->_tbl.'`' .
            ' SET `state` = '.(int) $state .
            ' WHERE ('.$where.')' .
            $checkin
        );
        $this->_db->query();

        // Check for a database error.
        if ($this->_db->getErrorNum()) {
            $this->setError($this->_db->getErrorMsg());
            return false;
        }

        // If checkin is supported and all rows were adjusted, check them in.
        if ($checkin && (count($pks) == $this->_db->getAffectedRows()))
        {
            // Checkin the rows.
            foreach($pks as $pk)
            {
                $this->checkin($pk);
            }
        }

        // If the JTable instance value is in the list of primary keys that were set, set the instance.
        if (in_array($this->$k, $pks)) {
            $this->state = $state;
        }

        $this->setError('');
        return true;
    }
}
tables/event.php000060400000046062152455705350007667 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.10 2015-08-14
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * event Table class
 */
class iCagendaTableEvent extends JTable
{
	/**
	 * @var array $custom_fields  Property for the array of custom fields.
	 * This needs to be specified because there is no column for features in the events table
	 */
	protected $custom_fields = array();

	/**
	 * Constructor
	 *
	 * @param JDatabase A database connector object
	 */
	public function __construct(&$_db)
	{
		parent::__construct('#__icagenda_events', 'id', $_db);
	}

	/**
	 * Overloaded bind function to pre-process the params.
	 *
	 * @param	array		Named array
	 * @return	null|string	null is operation was satisfactory, otherwise returns an error
	 * @see		JTable:bind
	 * @since	1.3
	 */
	public function bind($array, $ignore = '')
	{
		$lang	= JFactory::getLanguage();

		// Serialize Single Dates
		$dev_option = '0';

		// Set Vars
		$eventTimeZone	= null;
		$nodate			= '0000-00-00 00:00:00';
		$date_today		= JHtml::date('now', 'Y-m-d'); // Joomla Time Zone

        if (iCString::isSerialized($array['dates']))
		{
			$dates = unserialize($array['dates']);
		}
		elseif ($dev_option == '1') // DEV.
		{
			$dates = $this->setDatesOptions($array['dates']);
		}
		else
		{
			$dates = $this->getDates($array['dates']);

			if ($lang->getTag() == 'fa-IR'
				&& $dates != array('0000-00-00 00:00')
				&& $dates != array('')
				)
			{
				$dates_to_sql = array();

				foreach ($dates AS $date)
				{
					if (iCDate::isDate($date))
					{
						$year		= date('Y', strtotime($date));
						$month		= date('m', strtotime($date));
						$day		= date('d', strtotime($date));
						$time		= date('H:i', strtotime($date));

						$converted_date = iCGlobalizeConvert::jalaliToGregorian($year, $month, $day, true) . ' ' . $time;
						$dates_to_sql[] = date('Y-m-d H:i', strtotime($converted_date));
					}
				}

				$dates = $dates_to_sql;
			}
		}

		$dates = ($dates == array('')) ? array('0000-00-00 00:00') : $dates;

		rsort($dates);

		if ($dev_option == '1') // DEV.
		{
			$array['dates']	= $array['dates'];
		}
		else
		{
			$array['dates']	= serialize($dates);
		}


		/**
		 * Set Week Days
		 */
		if (!isset($array['weekdays']))
		{
			$array['weekdays'] = '';
		}
		elseif (is_array($array['weekdays']))
		{
			$array['weekdays'] = implode(',', $array['weekdays']);
		}

		// Return the dates of the period.
		$startdate	= ($array['startdate'] == NULL) ? $nodate : $array['startdate'];
		$enddate	= ($array['enddate'] == NULL) ? $nodate : $array['enddate'];

		if (($startdate == $nodate) && ($enddate != $nodate))
		{
			$enddate = $nodate;
		}

		if (strtotime($startdate) > strtotime($enddate))
		{
			$errorperiod = '1';
		}
		else
		{
			$errorperiod = '';

			$period_all_dates_array	= iCDatePeriod::listDates($startdate, $enddate, $eventTimeZone);
			$WeeksDays				= iCDatePeriod::weekdaysToArray($array['weekdays']);

			$period_array = array();

			foreach ($period_all_dates_array AS $date_in_weekdays)
			{
				$datetime_period_date = JHtml::date($date_in_weekdays, 'Y-m-d H:i', $eventTimeZone);

				if (in_array(date('w', strtotime($datetime_period_date)), $WeeksDays))
				{
					array_push($period_array, $datetime_period_date);
				}
			}
		}

		// Serialize Period Dates
		if (($startdate != $nodate) && ($enddate != $nodate))
		{
			if ($errorperiod != '1')
			{
				$array['period'] = serialize($period_array);

				$period = (iCString::isSerialized($array['period'])) ? unserialize($array['period']) : array();

				if ($lang->getTag() == 'fa-IR')
				{
					$period_to_sql = array();

					foreach ($period AS $date)
					{
						if (iCDate::isDate($date))
						{
							$year		= date('Y', strtotime($date));
							$month		= date('m', strtotime($date));
							$day		= date('d', strtotime($date));
							$time		= date('H:i', strtotime($date));

							$converted_date = iCGlobalizeConvert::jalaliToGregorian($year, $month, $day, true) . ' ' . $time;
							$period_to_sql[] = date('Y-m-d H:i', strtotime($converted_date));
						}
					}

					$period = $period_to_sql;
				}

				rsort($period);

				$array['period'] = serialize($period);
			}
			else
			{
				$array['period'] = '';
			}
		}
		else
		{
			$array['period'] = '';
		}

		// Set Next Date
		$NextDates	= $this->getNextDates($dates);
		$NextPeriod	= isset($period)
					? $this->getNextPeriod($period, $array['weekdays'])
					: $this->getNextDates($dates);

		$date_NextDates		= JHtml::date($NextDates, 'Y-m-d', $eventTimeZone);
		$date_NextPeriod	= JHtml::date($NextPeriod, 'Y-m-d', $eventTimeZone);
		$time_NextDates		= JHtml::date($NextDates, 'H:i', $eventTimeZone);
		$time_NextPeriod	= JHtml::date($NextPeriod, 'H:i', $eventTimeZone);
//		$date_NextDates		= date('Y-m-d', strtotime($NextDates));
//		$date_NextPeriod	= date('Y-m-d', strtotime($NextPeriod));
//		$time_NextDates		= date('H:i', strtotime($NextDates));
//		$time_NextPeriod	= date('H:i', strtotime($NextPeriod));

		// Control the next date
		if ((strtotime($date_NextDates) >= strtotime($date_today)) && (strtotime($date_NextPeriod) >= strtotime($date_today)))
		{
			if (strtotime($date_NextDates) < strtotime($date_NextPeriod))
			{
				$array['next'] = $this->getNextDates($dates);
			}
			if (strtotime($date_NextDates) > strtotime($date_NextPeriod))
			{
				$array['next'] = $this->getNextPeriod($period, $array['weekdays']);
			}
			if (strtotime($date_NextDates) == strtotime($date_NextPeriod))
			{
				if (strtotime($time_NextDates) >= strtotime($time_NextPeriod))
				{
					if (isset($period))
					{
						$array['next'] = $this->getNextPeriod($period, $array['weekdays']);
					}
					else
					{
						$array['next'] = $this->getNextDates($dates);
					}
				}
				else
				{
					$array['next'] = $this->getNextDates($dates);
				}
			}
		}
		elseif ((strtotime($date_NextDates) < strtotime($date_today)) && (strtotime($date_NextPeriod) >= strtotime($date_today)))
		{
			$array['next'] = $this->getNextPeriod($period, $array['weekdays']);
		}
		elseif ((strtotime($date_NextDates) >= strtotime($date_today)) && (strtotime($date_NextPeriod) < strtotime($date_today)))
		{
			$array['next'] = $this->getNextDates($dates);
		}
		elseif ((strtotime($date_NextDates) < strtotime($date_today)) && (strtotime($date_NextPeriod) < strtotime($date_today)))
		{
			if (strtotime($date_NextDates) < strtotime($date_NextPeriod))
			{
				$array['next'] = $this->getNextPeriod($period, $array['weekdays']);
			}
			else
			{
				$array['next'] = $this->getNextDates($dates);
			}
		}

		// Control of dates if valid (EDIT SINCE VERSION 3.0 - update 3.1.4)
		if (((strtotime($NextDates) >= '943916400')
			&& (strtotime($NextDates) <= '944002800'))
			&& ($errorperiod == '1'))
		{
			$array['next'] = '-3600';
		}
		if (((strtotime($NextDates)=='943916400') || (strtotime($NextDates)=='943920000'))
			&& ((strtotime($NextPeriod)=='943916400') || (strtotime($NextPeriod)=='943920000')))
		{
			$array['next'] = '-3600';
		}

		if ($array['next'] == '-3600')
		{
			$state = 0;
			$this->_db->setQuery(
			'UPDATE `#__icagenda_events`' .
			' SET `state` = '.(int) $state .
			' WHERE `id` = '. (int) $array['id']
			);
			if(version_compare(JVERSION, '3.0', 'lt'))
			{
				$this->_db->query();
			}
			else
			{
				$this->_db->execute();
			}
		}

		$return[] = parent::bind($array, $ignore);


		// ====================================
		// START : HACK FOR A FEW PRO USERS !!!
		// ====================================

		$mail_new_event = JComponentHelper::getParams('com_icagenda')->get('mail_new_event', '0');
		if ($mail_new_event == 1)
		{
			$title = $array['title'];
			$id_event = $array['id'];
			$db = JFactory::getDbo();
			$query	= $db->getQuery(true);
			$query->select('id AS eventID')
					->from('#__icagenda_events')
					->order('id DESC');
			$db->setQuery($query);
			$eventID = $db->loadResult();
			$new_event = JRequest::getVar('new_event');
			$title = $array['title'];
			$description = $array['desc'];
			$venue = '';
			if ($array['place']) $venue.= $array['place'].' - ';
			if ($array['city']) $venue.= $array['city'];
			if ($array['city'] && $array['country']) $venue.= ', ';
			if ($array['country']) $venue.= $array['country'];
			if (strtotime($array['startdate']))
			{
				$date = 'Du '.$array['startdate'].' au '.$array['startdate'];
			}
			else
			{
				$date = $array['next'];
			}
			$baseURL = JURI::base();
			$baseURL = str_replace('/administrator', '', $baseURL);
			$baseURL = ltrim($baseURL, '/');
			if ($array['image']) $image = '<img src="'.$baseURL.'/'.$array['image'].'" />';
			if ($new_event == '1' && $eventID && $array['state'] == '1' && $array['approval'] == '0')
			{
					$return[] = self::notificationNewEvent(($eventID+1), $title, $description, $venue, $date, $image, $new_event);
			}
		}

		// ====================================
		// END : HACK FOR A FEW PRO USERS !!!
		// ====================================


		return $return;

	}

	/**
	 * DEV.
	 */
	function setDatesOptions($dates) // DEV.
	{
		$dates	= str_replace('day=', '', $dates);
		$dates	= str_replace('start=', '', $dates);
		$dates	= str_replace('end=', '', $dates);
//		$dates	= str_replace('+', ' ', $dates);
		$dates	= str_replace('%3A', ':', $dates);
		$dates	= str_replace('&', ',', $dates);

		$ex_dates = explode(',stop=stop', $dates);

		$singles_dates = array();

		foreach ($ex_dates AS $sd)
		{
			if ($sd != '')
			{
				array_push($singles_dates, $sd);
			}
		}

		return $singles_dates;
	}

	/**
	 * Get Dates for Single Dates Script Input
	 */
	function getDates($dates)
	{
		$dates		= str_replace('d=', '', $dates);
		$dates		= str_replace('+', ' ', $dates);
		$dates		= str_replace('%3A', ':', $dates);
		$ex_dates	= explode('&', $dates);

		return $ex_dates;
	}

	/**
	 * Get Next Date from Single Dates
	 */
	function getNextDates($dates)
	{
		// Set Vars
		$eventTimeZone	= null;
		$date_today		= JHtml::date('now', 'Y-m-d'); // Joomla Time Zone

		// Get Next
		$next			= JRequest::getVar('next');

		if (count($dates))
		{
			while (strtotime($next) <= strtotime($date_today))
			{
				$nextDate = $dates[0];

				foreach ($dates as $d)
				{
					if (strtotime($d) >= strtotime($date_today))
					{
						$nextDate = $d;
					}
				}

//				return JHtml::date($nextDate, 'Y-m-d H:i', $eventTimeZone);
				return date('Y-m-d H:i', strtotime($nextDate));
			}
		}
	}

	/**
	 * Get Next Date from Period
	 */
	function getNextPeriod($period, $i_weekdays)
	{
		// Set Vars
		$eventTimeZone	= null;
		$date_today		= JHtml::date('now', 'Y-m-d'); // Joomla Time Zone

		$WeeksDays = iCDatePeriod::weekdaysToArray($i_weekdays);

		// Set Next Date for Period, if dates exist in Period
		if (count($period))
		{
			$nextPeriod	= $period[0];

			foreach ($period as $e)
			{
				if (in_array(date('w', strtotime($e)), $WeeksDays))
				{
					if (strtotime($e) >= strtotime($date_today)) // if datetime in period >= date today
					{
						$nextPeriod = $e;
					}
				}
			}

//			return JHtml::date($nextPeriod, 'Y-m-d H:i', $eventTimeZone);
			return date('Y-m-d H:i', strtotime($nextPeriod));
		}
	}

	/**
	* Overloaded check function
	*/
	public function check()
	{
		// If there is an ordering column and this is a new row then get the next ordering value
		if (property_exists($this, 'ordering') && $this->id == 0)
		{
			$this->ordering = self::getNextOrder();
		}

		return parent::check();
	}


	/**
	* Method to set the publishing state for a row or list of rows in the database
	* table.  The method respects checked out rows by other users and will attempt
	* to checkin rows that it can after adjustments are made.
	*
	* @param	mixed	An optional array of primary key values to update.  If not
	*					set the instance property value is used.
	* @param    integer The publishing state. eg. [0 = unpublished, 1 = published]
	* @param    integer The user id of the user performing the operation.
	* @return    boolean    True on success.
	* @since    1.0.4
	*/
	public function publish($pks = null, $state = 1, $userId = 0)
	{
		// Initialise variables.
		$k = $this->_tbl_key;

		// Sanitize input.
		JArrayHelper::toInteger($pks);
		$userId = (int) $userId;
		$state  = (int) $state;

		// If there are no primary keys set check to see if the instance key is set.
		if (empty($pks))
		{
			if ($this->$k)
			{
				$pks = array($this->$k);
			}
			// Nothing to set publishing state on, return false.
			else
			{
				$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
				return false;
			}
		}

		// Build the WHERE clause for the primary keys.
		$where = $k.'='.implode(' OR '.$k.'=', $pks);

		// Determine if there is checkin support for the table.
		if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time'))
		{
			$checkin = '';
		}
		else
		{
			$checkin = ' AND (checked_out = 0 OR checked_out = '.(int) $userId.')';
		}

		// Update the publishing state for rows with the given primary keys.
		$this->_db->setQuery(
			'UPDATE `'.$this->_tbl.'`' .
			' SET `state` = '.(int) $state .
			' WHERE ('.$where.')' .
			$checkin
		);
		$this->_db->query();

		// Check for a database error.
		if ($this->_db->getErrorNum())
		{
			$this->setError($this->_db->getErrorMsg());
			return false;
		}

		// If checkin is supported and all rows were adjusted, check them in.
		if ($checkin && (count($pks) == $this->_db->getAffectedRows()))
		{
			// Checkin the rows.
			foreach($pks as $pk)
			{
				$this->checkin($pk);
			}
		}

		// If the JTable instance value is in the list of primary keys that were set, set the instance.
		if (in_array($this->$k, $pks))
		{
			$this->state = $state;
		}

		$this->setError('');

		return true;
	}


	/**
	 * HACK FOR A FEW PRO USERS !!!
	 *
	 * Will be removed when creation of a notification plugin
	 *
	 */
	function notificationNewEvent ($eventid, $title, $description, $venue, $date, $image, $new_event)
	{
		// Load iCagenda Global Options
		$iCparams = JComponentHelper::getParams('com_icagenda');

		// Load Joomla Config
		$config = JFactory::getConfig();

		// Switch Joomla 3.x / 2.5
		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			// Get the site name
			$sitename = $config->get('sitename');

			// Get Global Joomla Contact Infos
			$mailfrom = $config->get('mailfrom');
			$fromname = $config->get('fromname');

			// Get default language
			$langdefault = $config->get('language');
		}
		else
		{
			// Get the site name
			$sitename = $config->getValue('config.sitename');

			// Get Global Joomla Contact Infos
			$mailfrom = $config->getValue('config.mailfrom');
			$fromname = $config->getValue('config.fromname');

			// Get default language
			$langdefault = $config->getValue('config.language');
		}

		$siteURL = JURI::base();
		$siteURL = rtrim($siteURL,'/');

		$iCmenuitem = false;

		// Itemid Request (automatic detection of the first iCagenda menu-link, by menuID, and depending of current language)

		$langFrontend = $langdefault;
		$db = JFactory::getDbo();
		$query	= $db->getQuery(true);
		$query->select('id AS idm')
				->from('#__menu')
				->where( "(link = 'index.php?option=com_icagenda&view=list') AND (published > 0) AND (language = '$langFrontend')" );
		$db->setQuery($query);
		$idm = $db->loadResult();
		$mItemid = $idm;

		if ($mItemid == NULL)
		{
				$db = JFactory::getDbo();
				$query	= $db->getQuery(true);
				$query->select('id AS noidm')
						->from('#__menu')
						->where( "(link = 'index.php?option=com_icagenda&view=list') AND (published > 0) AND (language = '*')" );
				$db->setQuery($query);
				$noidm = $db->loadResult();
		}

		$nolink = '';

		if ($noidm == NULL && $mItemid == NULL)
		{
				$nolink = 1;
		}

		if (is_numeric($iCmenuitem))
		{
				$lien = $iCmenuitem;
		}
		else
		{
			if ($mItemid == NULL)
			{
					$lien = $noidm;
			}
			else
			{
					$lien = $mItemid;
			}
		}

		// Set Notification Email to each User groups allowed to receive a notification email when a new event created
		$groupid = $iCparams->get('newevent_Groups', array("8"));

		jimport( 'joomla.access.access' );
		$newevent_Groups_Array = array();
		foreach ($groupid AS $gp) {
			$GroupUsers = JAccess::getUsersByGroup($gp, False);
			$newevent_Groups_Array = array_merge($newevent_Groups_Array, $GroupUsers);
		}

		$db = JFactory::getDbo();
		$query	= $db->getQuery(true);

		$matches = implode(',', $newevent_Groups_Array);
		$query->select('ui.username AS username, ui.email AS email, ui.password AS passw, ui.block AS block, ui.activation AS activation')
			->from('#__users AS ui')
			->where( "ui.id IN ($matches) ");
		$db->setQuery($query);
		$users = $db->loadObjectList();

		foreach ($users AS $user)
		{
			// Create Notification Mailer
			$new_mailer = JFactory::getMailer();

			// Set Sender of Notification Email
			$new_mailer->setSender(array( $mailfrom, $fromname ));

        	$username = $user->username;
        	$passw = $user->passw;
        	$email = $user->email;

			// Set Recipient of Notification Email
			$new_recipient = $email;
			$new_mailer->addRecipient($email);

			// Set Subject of New Event Notification Email
			$new_subject = 'Nouvel évènement, '.$sitename;
			$new_mailer->setSubject($new_subject);

			// Set Url to preview new event
			$baseURL = JURI::base();
			$baseURL = str_replace('/administrator', '', $baseURL);

			$urlpreview = str_replace('&amp;','&', JRoute::_($baseURL.'index.php?option=com_icagenda&view=list&layout=event&id='.(int)$eventid.'&Itemid='.(int)$lien));

			// Set Body of User Notification Email
			$new_body_hello = 'Bonjour,';
			$new_bodycontent = $new_body_hello.'<br /><br />';
			$new_body_text = $sitename.' vous propose un nouvel évènement :';
			$new_bodycontent.= $new_body_text.'<br /><br />';

			// Event Details
			$new_bodycontent.= $title ? 'Titre: '.$title.'<br />' : '';
			$new_bodycontent.= $description ? 'Description: '.$description.'<br />' : '';
			$new_bodycontent.= $venue ? 'Lieu: '.$venue.'<br />' : '';
			$new_bodycontent.= $date ? 'Date: '.$date.'<br /><br />' : '';
			$new_bodycontent.= $image.'<br /><br />';

			// Link to event details view
			$new_bodycontent.= '<a href="'.$urlpreview.'">'.$urlpreview.'</a><br /><br />';

			// Footer
			$new_body_footer = 'Do not answer to this e-mail notification as it is a generated e-mail. You are receiving this email message because you are registered at '.$sitename.'.';
			$new_bodycontent.= '<hr><small>'.$new_body_footer.'<small>';

			// Removes spaces (leading, ending) from Body
			$new_body = rtrim($new_bodycontent);

			// Authorizes HTML
			$new_mailer->isHTML(true);
			$new_mailer->Encoding = 'base64';

			// Set Body
			$new_mailer->setBody($new_body);

			// Send User Notification Email
			if (isset($email)) {
				if($user->block == '0' && empty($user->activation)){
					$send = $new_mailer->Send();
				}
			}
		}
	}
}
tables/icagenda.php000060400000004357152455705350010302 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-06-29
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

// import Joomla table library
jimport('joomla.database.table');

/**
 * iCagenda Table class
 */
class iCagendaTableiCagenda extends JTable
{
	/**
	 * Constructor
	 *
	 * @param object Database connector object
	 */
	function __construct(&$db)
	{
		parent::__construct('#__icagenda_events', 'id', $db);
	}
	/**
	 * Overloaded bind function
	 *
	 * @param       array           named array
	 * @return      null|string     null is operation was satisfactory, otherwise returns an error
	 * @see JTable:bind
	 * @since 1.5
	 */
	public function bind($array, $ignore = '')
	{
		if (isset($array['params']) && is_array($array['params']))
		{
			// Convert the params field to a string.
			$parameter = new JRegistry;
			$parameter->loadArray($array['params']);
			$array['params'] = (string)$parameter;
		}
		return parent::bind($array, $ignore);
	}

	/**
	 * Overloaded load function
	 *
	 * @param       int $pk primary key
	 * @param       boolean $reset reset data
	 * @return      boolean
	 * @see JTable:load
	 */
	public function load($pk = null, $reset = true)
	{
		if (parent::load($pk, $reset))
		{
			// Convert the params field to a registry.
			$params = new JRegistry;
                       // loadJSON is @deprecated    12.1  Use loadString passing JSON as the format instead.
                       // $params->loadString($this->item->params, 'JSON');
                       // "item" should not be present.
                       $params->loadJSON($this->params);

			$this->params = $params;
			return true;
		}
		else
		{
			return false;
		}
	}
}
tables/customfield.php000060400000014075152455705350011063 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-12-03
 * @since		3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * Custom Field Table class
 */
class iCagendaTablecustomfield extends JTable
{
	/**
	 * Constructor
	 *
	 * @param	JDatabase A database connector object
	 * @since	3.4.0
	 */
	public function __construct(&$_db)
	{
		parent::__construct('#__icagenda_customfields', 'id', $_db);
	}

	/**
	 * Overloaded bind function.
	 *
	 * @param	array		Named array
	 * @return	null|string	null is operation was satisfactory, otherwise returns an error
	 * @see		JTable:bind
	 * @since	3.4.0
	 */
	public function bind($array, $ignore = '')
	{
		// Set Creator infos
		$user = JFactory::getUser();
		$userId	= $user->get('id');

		if ($array['created_by']=='0')
		{
			$array['created_by'] = (int)$userId;
		}

		// Set Params
		if (isset($array['params']) && is_array($array['params']))
		{
			$registry = new JRegistry();
			$registry->loadArray($array['params']);
			$array['params'] = (string)$registry;
		}

		return parent::bind($array, $ignore);
	}

    /**
    * Overloaded check function
	* @since	3.4.0
    */
    public function check()
    {
		// Import Joomla 2.5
		jimport( 'joomla.filter.output' );

		// If there is an ordering column and this is a new row then get the next ordering value
		if (property_exists($this, 'ordering')
			&& $this->id == 0)
		{
			$this->ordering = self::getNextOrder();
		}

		// URL alias
		if (empty($this->alias))
		{
			$this->alias = $this->title;
		}

		$this->alias = JFilterOutput::stringURLSafe($this->alias);

		// Alias is not generated if non-latin characters, so we fix it by using created date, or title if unicode is activated, as alias
		if ($this->alias == null || empty($this->alias))
		{
			if (JFactory::getConfig()->get('unicodeslugs') == 1)
			{
				$this->alias = JFilterOutput::stringURLUnicodeSlug($this->title);
			}
			else
			{
				$this->alias = JFilterOutput::stringURLSafe($this->created);
			}
		}

		// Slug auto-create
		$slug_empty = empty($this->slug) ? true : false;

		if ($slug_empty)
		{
			$this->slug = $this->title;
		}
		$this->slug = iCFilterOutput::stringToSlug($this->slug);

		// Slug is not generated if non-latin characters, so we fix it by using created date as a slug
		if ($this->slug == null)
		{
			$this->slug = iCFilterOutput::stringToSlug($this->created);
		}

		// Check if Slug already exists
		$db = JFactory::getDbo();
		$query = $db->getQuery(true)
			->select('slug')
			->from($db->qn('#__icagenda_customfields'))
			->where($db->qn('slug') . ' = ' . $db->q($this->slug));

		if (!empty($this->id))
		{
			$query->where('id <> ' . (int) $this->id);
		}

		$db->setQuery($query);
		$slug_exists = $db->loadResult();

		if ($slug_exists)
		{
			$error_slug = $slug_empty
						? JText::sprintf('COM_ICAGENDA_CUSTOMFIELD_DATABASE_ERROR_AUTO_SLUG',
										'<strong>' . $this->title . '</strong>', '<strong>' . $this->slug . '</strong>')
						: '<strong>' . JText::_('COM_ICAGENDA_CUSTOMFIELD_DATABASE_ERROR_UNIQUE_SLUG') . '</strong>';

			$this->setError($error_slug . '<br /><br /><span class="iCicon-info-circle"></span> <i>'
							. JTEXT::_('COM_ICAGENDA_CUSTOMFIELD_SLUG_DESC').'</i>');

			return false;
		}

		return parent::check();
	}


    /**
     * Method to set the publishing state for a row or list of rows in the database
     * table.  The method respects checked out rows by other users and will attempt
     * to checkin rows that it can after adjustments are made.
     *
     * @param	mixed		An optional array of primary key values to update.  If not
     *						set the instance property value is used.
     * @param	integer		The publishing state. eg. [0 = unpublished, 1 = published]
     * @param	integer		The user id of the user performing the operation.
     * @return	boolean		True on success.
	 * @since	3.4.0
     */
	public function publish($pks = null, $state = 1, $userId = 0)
	{
		// Initialise variables.
		$k = $this->_tbl_key;

		// Sanitize input.
		JArrayHelper::toInteger($pks);
		$userId = (int) $userId;
		$state  = (int) $state;

		// If there are no primary keys set check to see if the instance key is set.
		if (empty($pks))
		{
			if ($this->$k)
			{
				$pks = array($this->$k);
            }
			// Nothing to set publishing state on, return false.
			else
			{
				$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
				return false;
			}
		}

		// Build the WHERE clause for the primary keys.
		$where = $k.'='.implode(' OR '.$k.'=', $pks);

		// Determine if there is checkin support for the table.
		if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time'))
		{
			$checkin = '';
		}
		else
		{
			$checkin = ' AND (checked_out = 0 OR checked_out = '.(int) $userId.')';
		}

		// Update the publishing state for rows with the given primary keys.
		$this->_db->setQuery(
			'UPDATE `'.$this->_tbl.'`' .
			' SET `state` = '.(int) $state .
			' WHERE ('.$where.')' .
			$checkin
		);
		$this->_db->query();

		// Check for a database error.
		if ($this->_db->getErrorNum())
		{
			$this->setError($this->_db->getErrorMsg());
			return false;
		}

		// If checkin is supported and all rows were adjusted, check them in.
		if ($checkin && (count($pks) == $this->_db->getAffectedRows()))
		{
			// Checkin the rows.
			foreach($pks as $pk)
			{
				$this->checkin($pk);
			}
		}

		// If the JTable instance value is in the list of primary keys that were set, set the instance.
		if (in_array($this->$k, $pks))
		{
			$this->state = $state;
		}

		$this->setError('');
		return true;
	}
}
tables/registration.php000060400000010001152455705350011240 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-06-27
 * @since       3.3.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * category Table class
 */
class iCagendaTableregistration extends JTable
{
	/**
	 * Constructor
	 *
	 * @param JDatabase A database connector object
	 */
	public function __construct(&$_db)
	{
		parent::__construct('#__icagenda_registration', 'id', $_db);
	}

	/**
	 * Overloaded bind function to pre-process the params.
	 *
	 * @param	array		Named array
	 * @return	null|string	null is operation was satisfactory, otherwise returns an error
	 * @see		JTable:bind
	 * @since	3.3.3
	 */
	public function bind($array, $ignore = '')
	{
		if ($array['date'] == 'update')
		{
			$array['date'] = '';
		}

		return parent::bind($array, $ignore);
	}

    /**
    * Overloaded check function
    */
    public function check()
    {
		// If there is an ordering column and this is a new row then get the next ordering value
		if (property_exists($this, 'ordering') && $this->id == 0)
		{
			$this->ordering = self::getNextOrder();
		}

		return parent::check();
    }


    /**
     * Method to set the publishing state for a row or list of rows in the database
     * table.  The method respects checked out rows by other users and will attempt
     * to checkin rows that it can after adjustments are made.
     *
     * @param    mixed    An optional array of primary key values to update.  If not
     *                    set the instance property value is used.
     * @param    integer The publishing state. eg. [0 = unpublished, 1 = published]
     * @param    integer The user id of the user performing the operation.
     * @return    boolean    True on success.
	 * @since	3.3.3
     */
	public function publish($pks = null, $state = 1, $userId = 0)
	{
		// Initialise variables.
		$k = $this->_tbl_key;

		// Sanitize input.
		JArrayHelper::toInteger($pks);
		$userId = (int) $userId;
		$state  = (int) $state;

		// If there are no primary keys set check to see if the instance key is set.
		if (empty($pks))
		{
			if ($this->$k)
			{
				$pks = array($this->$k);
			}
            // Nothing to set publishing state on, return false.
            else
            {
				$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));

				return false;
			}
		}

		// Build the WHERE clause for the primary keys.
		$where = $k.'='.implode(' OR '.$k.'=', $pks);

		// Determine if there is checkin support for the table.
		if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time'))
		{
			$checkin = '';
		}
		else
		{
			$checkin = ' AND (checked_out = 0 OR checked_out = '.(int) $userId.')';
		}

		// Update the publishing state for rows with the given primary keys.
		$this->_db->setQuery(
			'UPDATE `'.$this->_tbl.'`' .
			' SET `state` = '.(int) $state .
			' WHERE ('.$where.')' .
			$checkin
		);
		$this->_db->query();

        // Check for a database error.
        if ($this->_db->getErrorNum())
        {
			$this->setError($this->_db->getErrorMsg());

			return false;
		}

		// If checkin is supported and all rows were adjusted, check them in.
		if ($checkin && (count($pks) == $this->_db->getAffectedRows()))
		{
			// Checkin the rows.
			foreach($pks as $pk)
			{
				$this->checkin($pk);
			}
		}

		// If the JTable instance value is in the list of primary keys that were set, set the instance.
		if (in_array($this->$k, $pks))
		{
			$this->state = $state;
		}

		$this->setError('');

		return true;
	}
}
tables/feature.php000060400000013566152455705350010204 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      doorknob
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-12-05
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * feature Table class
 */
class iCagendaTablefeature extends JTable
{
	protected $new_icon = null;

	/**
	 * Constructor
	 *
	 * @param JDatabase A database connector object
	 * @since	3.4.0
	 */
	public function __construct(&$_db)
	{
		parent::__construct('#__icagenda_feature', 'id', $_db);
	}

	/**
	 * Overloaded bind function to pre-process the params.
	 *
	 * @param	array		Named array
	 * @return	null|string	null is operation was satisfactory, otherwise returns an error
	 * @see		JTable:bind
	 * @since	3.4.0
	 */
	public function bind($array, $ignore = '')
	{
		if (isset($array['new_icon']))
		{
			// Get media path
			$params_media	= JComponentHelper::getParams('com_media');
			$image_path		= $params_media->get('image_path', 'images');

			// Paths to feature icons folder
			$thumbsPath		= $image_path . '/icagenda/feature_icons';

			// Get Image File Infos
			$link_image		= $array['new_icon'];
			$decomposition	= explode( '/' , $link_image );

			// in each parent
			$i = 0;

			while ( isset($decomposition[$i]) )
				$i++;
			$i--;

			$imgname		= $decomposition[$i];
			$fichier		= explode( '.', $decomposition[$i] );
			$imgtitle		= $fichier[0];
			$imgextension	= strtolower($fichier[1]);

			// Check file type if authorized to be generated as feature icon
			$authorized_types = array('jpg', 'jpeg', 'png', 'gif');

			if (!in_array($imgextension, $authorized_types) && $imgextension)
			{
				$this->setError('<strong>' . JText::_('COM_ICAGENDA_NOT_AUTHORIZED_IMAGE_TYPE') . '</strong><br />'
								. JText::_('COM_ICAGENDA_FORM_FEATURE_MIMETYPE_ERROR'));

				return false;
			}
			elseif ($imgextension)
			{
				// Clean icon name
				jimport( 'joomla.filter.output' );
				$icon_name = JFilterOutput::stringURLSafe($imgtitle) . '.' . $imgextension;

				// Generate 16_bit if not exist
				iCThumbGet::thumbnail($array['new_icon'], $thumbsPath, '16_bit', '16', '16', '100', false, '', '', '', $icon_name);

				// Generate 24_bit if not exist
				iCThumbGet::thumbnail($array['new_icon'], $thumbsPath, '24_bit', '24', '24', '100', false, '', '', '', $icon_name);

				// Generate 32_bit if not exist
				iCThumbGet::thumbnail($array['new_icon'], $thumbsPath, '32_bit', '32', '32', '100', false, '', '', '', $icon_name);

				// Generate 48_bit if not exist
				iCThumbGet::thumbnail($array['new_icon'], $thumbsPath, '48_bit', '48', '48', '100', false, '', '', '', $icon_name);

				// Generate 64_bit if not exist
				iCThumbGet::thumbnail($array['new_icon'], $thumbsPath, '64_bit', '64', '64', '100', false, '', '', '', $icon_name);

				$array['icon'] = $icon_name;
			}
		}

		return parent::bind($array, $ignore);
	}

	/**
	 * Overloaded check function
	 * @since	3.4.0
	*/
	public function check()
	{
		// If there is an ordering column and this is a new row then get the next ordering value
		if (property_exists($this, 'ordering') && $this->id == 0)
		{
			$this->ordering = self::getNextOrder();
		}

		return parent::check();
	}

	/**
	 * Method to set the publishing state for a row or list of rows in the database
	 * table.  The method respects checked out rows by other users and will attempt
	 * to checkin rows that it can after adjustments are made.
	 *
	 * @param	mixed    An optional array of primary key values to update.  If not
	 *                    set the instance property value is used.
	 * @param	integer The publishing state. eg. [0 = unpublished, 1 = published]
	 * @param	integer The user id of the user performing the operation.
	 * @return	boolean    True on success.
	 * @since	3.4.0
	 */
	public function publish($pks = null, $state = 1, $userId = 0)
	{
		// Initialise variables.
		$k = $this->_tbl_key;

		// Sanitize input.
		JArrayHelper::toInteger($pks);
		$userId = (int) $userId;
		$state  = (int) $state;

		// If there are no primary keys set check to see if the instance key is set.
		if (empty($pks))
		{
			if ($this->$k)
			{
				$pks = array($this->$k);
			}
			// Nothing to set publishing state on, return false.
			else
			{
				$this->setError(JText::_('JLIB_DATABASE_ERROR_NO_ROWS_SELECTED'));
				return false;
			}
		}

		// Build the WHERE clause for the primary keys.
		$where = $k.'='.implode(' OR '.$k.'=', $pks);

		// Determine if there is checkin support for the table.
		if (!property_exists($this, 'checked_out') || !property_exists($this, 'checked_out_time'))
		{
			$checkin = '';
		}
		else
		{
			$checkin = ' AND (checked_out = 0 OR checked_out = '.(int) $userId.')';
		}

		// Update the publishing state for rows with the given primary keys.
		$this->_db->setQuery(
			'UPDATE `'.$this->_tbl.'`' .
			' SET `state` = '.(int) $state .
			' WHERE ('.$where.')' .
			$checkin
		);
		$this->_db->query();

		// Check for a database error.
		if ($this->_db->getErrorNum())
		{
			$this->setError($this->_db->getErrorMsg());

			return false;
		}

		// If checkin is supported and all rows were adjusted, check them in.
		if ($checkin && (count($pks) == $this->_db->getAffectedRows()))
		{
			// Checkin the rows.
			foreach($pks as $pk)
			{
				$this->checkin($pk);
			}
		}

		// If the JTable instance value is in the list of primary keys that were set, set the instance.
		if (in_array($this->$k, $pks))
		{
			$this->state = $state;
		}

		$this->setError('');

		return true;
	}
}
tables/index.html000060400000000032152455705350010015 0ustar00<html><body></body></html>CHANGELOG.php000060400000436351152455705350006567 0ustar00<?php defined('_JEXEC') or die(); ?>

<div style="text-align:center"><img src='../media/com_icagenda/images/iconicagenda48.png' alt='iCagenda' /><br/><big style="color:#555">ChangeLog</big></div>
================================================================================
? <center><strong><big>Welcome to iCagenda 3.5.12 release!</big></strong></center><br />This is a maintenance release. See the release notes for details.<br />We recommend every user to update, to keep your iCagenda updated.<br />
================================================================================
: <span class="ic-box-important ic-box-12">!</span><span class="ic-important">important</span>&nbsp;<span class="ic-box-added ic-box-12">+</span><span class="ic-added">added</span>&nbsp;<span class="ic-box-removed ic-box-12">-</span><span class="ic-removed">removed</span>&nbsp;<span class="ic-box-changed ic-box-12">~</span><span class="ic-changed">changed</span>&nbsp;<span class="ic-box-fixed ic-box-12">#</span><span class="ic-fixed">fixed</span><br/><i>Info: access to the beta versions and pre-releases are reserved to users with a valid pro subscription.</i><br/>iCagenda™ is distributed under the terms of the GNU General Public License version 3 or later; see LICENSE.txt.
================================================================================


iCagenda 3.5.12 <small style="font-weight:normal;">(2015.10.12)</small>
================================================================================
+ Added : option field 'Time display' in 'Submit an event' form.
+ Added : global option to Select if 'Time Display' option is set by default on 'Show' or 'hide' when creating a new event ('General Settings' tab of the Global Options of the component).
+ Added : missing separator option in global options for date format.
+ [MODULE iC calendar] Added : option to set custom limit for auto-intro description.
+ [MODULE iC Event List][PRO] Added : option to set HTML filtering for auto-intro description.
~ Changed : use global date format option in registrations list, and display start and end date when registration for a period.
# [MODULE iC calendar][LOW] Fixed : display of "booking closed" when events only singles dates, and all upcoming, but registration type option for this event is set to "for all dates of the event".
# [MODULE iC calendar][LOW] Fixed : in "auto" mode for option "Link to Menu Item", the global option for filter by dates was not defined, if not on a list of events page ("auto" not working properly in this case, in a few cases, depending of your settings, if one at least of the menu item(s) to a list of events was set to use global options for Filter by dates).
# [MODULE iC calendar][LOW] Fixed : option for filtering HTML tags of intro-text not working in tooltip if not on list of events page.
# [LOW] Fixed : not displaying full address if country and/or city included in the place name.
# [LOW] Fixed : display of long content in registrations admin list (overlap in data display).

* Changed files in 3.5.12
~ admin/config.xml
~ admin/models/event.php
~ admin/models/forms/event.xml
~ admin/models/registrations.php
~ admin/utilities/events/events.php
~ admin/utilities/menus/menus.php
~ admin/views/registrations/tmpl/default.php
~ [MODULE][PRO] modules/mod_ic_event_list/helper.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/default.php
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/icrounded.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ script.icagenda.php
~ site/add/elements/icsetvar.php
~ site/helpers/icmodel.php
~ site/models/forms/submit.xml
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/default.xml
~ site/views/submit/view.html.php


iCagenda 3.5.11 <small style="font-weight:normal;">(2015.09.05)</small>
================================================================================
# [LOW] Fixed : date format with short month broken (in 3.5.10).
# [LOW] Fixed : date format with separator broken (since 3.5.6).
# [MODULE iC calendar][LOW] Fixed : display of current month, whereas option 'Loading on Date' is set on a day of the previous month.

* Changed files in 3.5.11
~ [LIBRARY] libraries/ic_library/globalize/culture/en-GB.php
~ [LIBRARY] libraries/ic_library/globalize/culture/en-US.php
~ [LIBRARY] libraries/ic_library/globalize/culture/fa-IR.php
~ [LIBRARY] libraries/ic_library/globalize/globalize.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ site/helpers/ichelper.php
~ site/helpers/icmodel.php


iCagenda 3.5.10 <small style="font-weight:normal;">(2015.09.01)</small>
================================================================================
+ Added : Compatible with Jalali/Persian calendar in admin (use of Joomla calendar for datetime picker).
+ Added : missing field to select 'Registration type' in the 'Submit an event' form, if registration options displayed.
+ Added : function to disable the submit button in frontend forms, after first click (to prevent multiple clicks during data process).
~ Changed : Asynchronous Loading of the AddThis widget script
~ Changed : auto-detect if https/ssl server for loading the AddThis widget script.
~ [MODULE iC calendar] Changed : you can now select one of the seven days of the week, as the first day of the calendar.
~ [THEME PACK] Changed : registration header is simplified, and use now its own css classes (ic-reg + suffix)
~ [THEME PACK] Changed : new ic-current-period class used to replace inline css when for the overline when period started and current (box date in list of events)
# [LOW] Fixed : a few issues with Jalali calendar in frontend (day 31 of a period not dislayed in calendar, possible datetime contruct error if no single dates in event details view).
# [LOW] Fixed : if only single dates with no period, and registration type option set to "for all dates of event", the date in registration email notifications was wrong.
# [LOW] Fixed : loading of event custom fields in registrations list if same id (missing parent_form control).
# [LOW] Fixed : date could include non-breaking space (&nbsp;) in notification email.
# [MODULE iC Event List][LOW] Fixed : display of month in the date box, on last day of a month (eg. 31 August) was next month, and not current month.

* Changed files in 3.5.10
~ admin/models/fields/modal/date.php
~ admin/models/fields/modal/enddate.php
~ admin/models/fields/modal/startdate.php
~ admin/tables/event.php
~ admin/utilities/customfields/customfields.php
~ admin/utilities/events/events.php
~ admin/utilities/form/form.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/registrations/tmpl/default.php
+ [LIBRARY] libraries/ic_library/globalize/convert.php
~ [LIBRARY] libraries/ic_library/globalize/globalize.php
+ [MEDIA] media/images/loader.gif
~ [MEDIA] media/js/icdates.js
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ site/add/elements/icsetvar.php
~ site/helpers/icmodel.php
~ site/models/forms/submit.xml
~ site/models/submit.php
~ [THEME PACK] site/themes/packs/default/css/default_component.css
~ [THEME PACK] site/themes/packs/default/default_registration.php
~ [THEME PACK] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACK] site/themes/packs/ic_rounded/ic_rounded_events.php
~ [THEME PACK] site/themes/packs/ic_rounded/ic_rounded_registration.php
~ site/views/list/tmpl/registration.php
~ site/views/submit/tmpl/default.php


iCagenda 3.5.9 <small style="font-weight:normal;">(2015.08.01)</small>
================================================================================
! Added options for export in csv of a list of registrations (select info to be exported, and select between comma or semicolon as separator for values)
! You can now send a newsletter for all users registered for an event (all dates), or only for users registered to only one date (or period) of the event.
~ Changed : dropdowns for event and date in registration form, as well as for newsletter now use ajax for updating the date depending of the selected event, without reloading the page.
~ Changed : set 'All Events' as default value for 'Filter by Dates' global option (on new install).
~ [THEME PACK] Changed : ic_rounded module calendar css for table, by addition of class ic-table (minor change to prevent some possible css conflict with site template).
~ Changed : minimum joomla 3 release is now 3.2.3 (for websites using iCagenda on Joomla 3).
# [MEDIUM] Fixed : when trying to change state of a registration (broken since 3.5.7) the event state was sometimes changed in the same time (but not removed from database). Sorry for any inconvenience.
# [LOW] Fixed : change state not working in admin registrations list (not possible to trash or unpublished a registration entry).
# [LOW] Fixed : lost of changes if changing event in registration admin edition (fixed by using ajax to generate the date list).
# [MODULES][LOW] Fixed : 'Filter by dates' could be broken for modules, if set in all menus to 'Use Global', and set to 'All Events' in global options.
# [MODULE iC Event List][LOW] Fixed : notice error if no events to be displayed (undefined variable).

* Changed files in 3.5.9
~ admin/config.xml
~ admin/controllers/mail.php
~ admin/controllers/registration.php
~ admin/controllers/registrations.php
~ admin/controllers/registrations.raw.php
~ admin/models/fields/modal/evt.php
~ admin/models/fields/modal/evt_date.php
- admin/models/fields/modal/mailinglist.php
~ admin/models/forms/download.xml
~ admin/models/forms/mail.xml
~ admin/models/forms/registration.xml
~ admin/models/mail.php
~ admin/models/registration.php
~ admin/models/registrations.php
- admin/tables/mail.php
~ admin/tables/registration.php
+ admin/utilities/ajax/ajax.php
~ admin/utilities/events/events.php
~ admin/utilities/menus/menus.php
~ admin/views/mail/tmpl/edit.php
~ admin/views/mail/view.html.php
~ admin/views/registration/tmpl/edit.php
~ admin/views/registrations/tmpl/default.php
~ admin/views/registrations/view.html.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ script.icagenda.php
~ [THEME PACK] site/themes/packs/ic_rounded/css/ic_rounded_module.css


iCagenda 3.5.8 <small style="font-weight:normal;">(2015.07.17)</small>
================================================================================
# [MODULE iC Calendar][LOW] Fixed : no events displayed in the calendar if menus option 'Filter by dates' is set to 'Use Global' (Sorry for any inconvenience).

* Changed files in 3.5.8
~ admin/utilities/menus/menus.php


iCagenda 3.5.7 <small style="font-weight:normal;">(2015.07.16)</small>
================================================================================
+ Added : publishing info for registrations; Created date/by (null if registration processed before update to 3.5.7 or later) and Modified date/by.
+ [MODULES] Added: alert message with number of events not displayed, when a user with admin permissions is logged-in in frontend (see current fix in modules for events with no menu link to allow the display.).
~ Changed : end time for single dates is now assumed to be midnight, when filtering today's events.
~ [THEME PACK] Changed : remove inline css used before to display Terms of Service, and use new names for the css classes.
# [MODULES][LOW] Fixed : no display of events if no menu link allows the display.
# [MODULE iC Calendar][LOW] Fixed : possible script conflict if joomla timezone or server timezone selected (highlightToday issue).
# [MODULE iC Calendar][LOW] Fixed : no display of December events.
# [LOW] Fixed : filtering of space for dates in notification emails if mail received in plain text.
# [LOW] Fixed : possible notice 'Undefined variable: dateglobalize_#' in backend, related to date format option (depends on your admin language).
# [LOW] Fixed : wrong place of a closing div in list of events (3.5.6).
# [LOW] Fixed : edit own access for registrations (user with only edit own access permissions, will see only its own registrations in the list).
# [LOW] Fixed : JS notice empty value if Terms of Services not displayed in registration form.

* Changed files in 3.5.7
~ admin/controllers/registration.php
~ admin/controllers/registrations.php
~ admin/models/fields/iclist/globalization.php
~ admin/models/forms/customfield.xml
~ admin/models/forms/event.xml
~ admin/models/forms/registration.xml
~ admin/models/registration.php
~ admin/models/registrations.php
~ admin/sql/install/mysql/icagenda.install.sql
~ admin/utilities/events/data.php
~ admin/utilities/events/events.php
~ admin/utilities/form/form.php
~ admin/utilities/menus/menus.php
~ admin/views/event/tmpl/edit.php
~ admin/views/registration/tmpl/edit.php
~ admin/views/registrations/tmpl/default.php
~ [LIBRARY] libraries/ic_library/globalize/globalize.php
~ [MODULE][PRO] modules/mod_ic_event_list/css/default_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/css/icrounded_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/helper.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ site/helpers/icmodel.php
~ site/models/events.php
~ site/models/submit.php
~ [THEME PACK] site/themes/packs/default/css/default_component.css
~ [THEME PACK] site/themes/packs/default/css/default_module.css
~ [THEME PACK] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACK] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/registration.php
~ site/views/submit/tmpl/default.php


iCagenda 3.5.6 <small style="font-weight:normal;">(2015.06.29)</small>
================================================================================
+ Added : Compatible with Jalali/Persian calendar in frontend.
~ Changed : Update of Info page (addition of credits: languages and external libraries).
~ Changed : Improvement of add to cal function for a better export to external calendars.
~ Changed : Improvement of valid dates control in frontend submit an event form.
~ Changed : migration of globalize date format function to the iC Library, and improvement.
# [MEDIUM] Fixed : delete custom fields data of an event if this one is deleted.
# [LOW] Fixed : add to cal issue when hide time selected.
# [LOW] Fixed : date/dates display in event details depending of number of dates for a period.
# [LOW] Fixed : registration button was not active when event with a past period, but upcoming single dates.
# [LOW] Fixed : line return in Notes field, when exporting list of registrations to csv.
# [LOW] Fixed : confirmed email field (registration form) was not removed from the session.
# [LOW] Fixed : no display of a few dates in today's events filtering (when period with weekdays, and event running).

* Changed files in 3.5.6
~ admin/add/ renamed admin/assets/
+ admin/assets/jcms/info.php
~ admin/config.xml
~ admin/controller.php
- [FOLDER] admin/globalization/
~ admin/icagenda.php
~ admin/models/event.php
~ admin/models/events.php
~ admin/models/fields/iclist/globalization.php
~ admin/models/fields/modal/date.php
~ admin/models/fields/modal/evt_date.php
~ admin/models/forms/event.xml
~ admin/models/registration.php
~ admin/models/registrations.php
~ admin/sql/install/mysql/icagenda.install.sql
~ admin/tables/registration.php
~ admin/utilities/customfields/customfields.php
~ admin/utilities/events/data.php
~ admin/utilities/events/events.php
+ admin/utilities/info/info.php
~ admin/views/category/tmpl/edit.php
~ admin/views/customfield/tmpl/edit.php
~ admin/views/event/tmpl/edit.php
~ admin/views/event/view.html.php
~ admin/views/events/tmpl/default.php
~ admin/views/events/view.html.php
~ admin/views/feature/tmpl/edit.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/icagenda/view.html.php
~ admin/views/info/tmpl/default.php
~ admin/views/info/view.html.php
~ admin/views/mail/tmpl/edit.php
~ admin/views/registration/tmpl/edit.php
~ admin/views/registration/view.html.php
~ admin/views/registrations/view.html.php
~ admin/views/themes/tmpl/default.php
~ icagenda.xml
~ [LIBRARY] libraries/ic_library/date/date.php
+ [LIBRARY][FOLDER] libraries/ic_library/globalize/
+ [LIBRARY] libraries/ic_library/globalize/culture/fa-IR.php
+ [LIBRARY] libraries/ic_library/globalize/globalize.php
~ [LIBRARY] libraries/ic_library/lib_ic_library.xml
~ [LIBRARY] libraries/ic_library/library/library.php
~ [LIBRARY] libraries/ic_library/string/string.php
~ [MEDIA] media/css/icagenda-back.css
~ [MEDIA] media/css/icagenda-front.css
~ [MEDIA] media/css/icagenda-front.j25.css
~ [MEDIA] media/js/icdates.js
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ script.icagenda.php
~ site/helpers/ichelper.php
~ site/helpers/icmodel.php
~ site/models/events.php
~ site/models/forms/submit.xml
~ site/models/list.php
~ site/models/submit.php
~ [THEME PACK] site/themes/packs/default/css/default_component.css
~ [THEME PACK] site/themes/packs/default/css/default_module.css
~ [THEME PACK] site/themes/packs/default/default_calendar.php
~ [THEME PACK] site/themes/packs/default/default_day.php
~ [THEME PACK] site/themes/packs/default/default_event.php
~ [THEME PACK] site/themes/packs/default/default_events.php
~ [THEME PACK] site/themes/packs/default/default_registration.php
~ [THEME PACK] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACK] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ [THEME PACK] site/themes/packs/ic_rounded/ic_rounded_calendar.php
~ [THEME PACK] site/themes/packs/ic_rounded/ic_rounded_day.php
~ [THEME PACK] site/themes/packs/ic_rounded/ic_rounded_event.php
~ [THEME PACK] site/themes/packs/ic_rounded/ic_rounded_events.php
~ [THEME PACK] site/themes/packs/ic_rounded/ic_rounded_registration.php
~ site/views/list/tmpl/actions.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/default.xml
~ site/views/list/tmpl/default_vcal.php
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/default.xml
~ site/views/submit/tmpl/send.php
~ site/views/submit/view.html.php


iCagenda 3.5.5 <small style="font-weight:normal;">(2015.04.27)</small>
================================================================================
~ Changed : removal of v1 and v2 release notes (link to online change log for these versions).
# [MEDIUM] Fixed : issue with admin event edition on IE (script error only on Internet Explorer).
# [LOW] Fixed : wrong file jquery.tipTip.js was included in 3.5.4. This version includes the correct new one with tooltip position fix (as announced in previous release).

* Changed files in 3.5.5
~ admin/CHANGELOG.php
~ [MEDIA] media/js/icdates.js
~ [MEDIA] media/js/jquery.tipTip.js


iCagenda 3.5.4 <small style="font-weight:normal;">(2015.04.24)</small>
================================================================================
! JComments ready : You can download the free iC JComments plugin to enable comments on events (http://icagenda.joomlic.com/resources/addons).
+ [GLOBALIZATION] Added : fa-IR Persan (Iran) date formats.
+ Added : global option to set text transformation of the event title (Global Options > General Settings tab).
+ Added : check image name in frontend 'Submit an Event form', and if file extension is missing, add the correct one.
~ Changed : location of css and js core files (removed from admin and site folder, and moved to media).
~ Changed : improve datetime picker validation (no need to click on validate button to be sure date entered is saved).
# [MEDIUM] Fixed : missing 404 error page, when SEF is enabled, and event alias in url doesn't exist (was returning the first event found).
# [MEDIUM] Fixed : Persan language issue, fixed date construct fatal error.
# [LOW] Fixed : possible iCtip position issue (add to cal, print... tooltip) if another script is changing window top offset().
# [LOW] Fixed : broken url to event details view in registration form header.
# [LOW] Fixed : broken approval icon function in admin list of events.
# [LOW] Fixed : special characters in breadcrumbs.
# [LOW] Fixed : Nb of registered user, if only one single date, and registration type is changed after a few registrations occured.

* Changed files in 3.5.4
- [FOLDER] admin/add/css/
~ admin/add/elements/desc.php
~ admin/add/elements/title.php
+ admin/add/elements/titleheader.php
~ admin/add/elements/titleimg.php
- [FOLDER] admin/add/image/
~ admin/config.xml
+ admin/globalization/fa-IR.php
~ admin/models/event.php
~ admin/models/forms/event.xml
~ admin/tables/feature.php
~ admin/utilities/customfields/customfields.php
~ admin/utilities/events/data.php
~ admin/utilities/events/events.php
~ admin/utilities/form/form.php
~ admin/views/categories/view.html.php
~ admin/views/category/tmpl/edit.php
~ admin/views/customfield/tmpl/edit.php
~ admin/views/customfields/view.html.php
~ admin/views/event/tmpl/edit.php
~ admin/views/events/tmpl/default.php
~ admin/views/events/view.html.php
~ admin/views/feature/tmpl/edit.php
~ admin/views/feature/view.html.php
~ admin/views/features/view.html.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/icagenda/view.html.php
~ admin/views/info/tmpl/default.php
~ admin/views/info/view.html.php
~ admin/views/mail/view.html.php
~ admin/views/registration/tmpl/edit.php
~ admin/views/registrations/view.html.php
~ admin/views/themes/tmpl/default.php
~ icagenda.xml
~ [LIBRARY] libraries/ic_library/date/period.php
~ [LIBRARY] libraries/ic_library/thumb/get.php
~ [MEDIA] media/css/icagenda-back.css
+ [MEDIA] media/css/icagenda-back.j25.css
~ [MEDIA] media/css/icagenda-front.css
+ [MEDIA] media/css/icagenda-front.j25.css
~ [MEDIA] media/css/icagenda.css
+ [MEDIA][FOLDER] media/css/images/
+ [MEDIA] media/css/jquery-ui-1.8.17.custom.css
+ [MEDIA] media/css/template.j25.css
~ [MEDIA][ICICONS][UPDATE] media/icicons/
~ [MEDIA][IMAGES][UPDATE] media/images/
~ [MEDIA] media/js/icdates.js
+ [MEDIA] media/js/icmap-front.js
~ [MEDIA] media/js/jquery.tipTip.js
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ script.icagenda.pro.php
- [FOLDER] site/add/css/
~ site/add/elements/icsetvar.php
- [FOLDER] site/add/image/
~ site/controller.php
~ site/helpers/ichelper.php
~ site/helpers/icmodel.php
- [FOLDER] site/js/
~ site/models/forms/submit.xml
~ site/models/list.php
~ site/models/submit.php
~ site/router.php
~ [THEME PACK] site/themes/packs/default/css/default_component.css
~ [THEME PACK] site/themes/packs/default/default_events.php
~ [THEME PACK] site/themes/packs/default/default_registration.php
~ [THEME PACK] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACK] site/themes/packs/ic_rounded/ic_rounded_events.php
~ [THEME PACK] site/themes/packs/ic_rounded/ic_rounded_registration.php
+ site/views/list/tmpl/actions.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/default_categories.php
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/send.php
~ site/views/submit/view.html.php


iCagenda 3.5.3 <small style="font-weight:normal;">(2015.03.25)</small>
================================================================================
+ Added : Confirm Email field in frontend Registration form, for not logged-in user.
+ Added : BOM utf-8 to csv export file (special characters).
~ Changed : improvement of the model for admin event edition.
~ Changed : postal code is now displayed (if available) in frontend address field.
# [MEDIUM] Fixed : saving of custom fields and features when new event (with not yet an ID) was broken (no data saved).
# [THEME PACKS][LOW] Fixed : display of empty participants list when registration not enabled.
# [LOW] Fixed : display of information details in event details view, was not always displayed depending of options and data filled.
# [LOW] Fixed : register button when only a single date, and the list display type is not set to display all dates.
# [LOW] Fixed : added back the alert message on Joomla 2.5 about the impossibility of trashing frontend submitted events if not edited (the issue with trash and empty asset_id is fixed in latest version of Joomla 3).

* Changed files in 3.5.3
~ admin/config.xml
~ admin/models/event.php
~ admin/models/fields/modal/ictext_placeholder.php
~ admin/models/forms/event.xml
~ admin/models/registrations.php
~ admin/tables/event.php
~ admin/utilities/events/data.php
~ admin/views/events/tmpl/default.php
~ admin/views/registrations/view.raw.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ site/add/elements/icsetvar.php
~ site/helpers/ichelper.php
~ site/helpers/icmodel.php
~ site/models/list.php
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/list/view.html.php


iCagenda 3.5.2 <small style="font-weight:normal;">(2015.03.13)</small>
================================================================================
~ Changed : name/username allows now numeric characters (server-side iCagenda validator), and addition of joomla client-side username validation.
~ Changed : minor re-ordering of period options in admin edition of an event, with info text for weekdays.
# [MEDIUM] Fixed : function to generate small icons in Features was broken.
# [LOW] Fixed : Custom fields data broken in csv export of registrations.
# [LOW] Fixed : Number of registered users, for events over a period with no weekdays selected.
# [LOW] Fixed : List of participants was broken if 'Avatar' and/or 'Username' list display option was selected (option 'Full' was working as expected).
# [LOW] Fixed : Url to event details view could return a wrong number of registered user if a period with no weekdays selected (component list of events).
# [LOW] Fixed : notice error when php function dateInterval does not exist on your server.
# [LOW] Fixed : improvement of the function to get the current layout.
# [LOW] Fixed : a few date format buggy depending of your settings, and the current language used.
# [LOW] Fixed : notice error $translator not defined in control panel (language issue) only on free version.
# [LOW] Fixed : filters display issue in registration admin list on Joomla 2.5 when event title length too high.
# [MODULE iC Event List][LOW] Fixed : blur x-small thumbs when created in admin.

* Changed files in 3.5.2
~ admin/add/css/icagenda.j25.css
~ admin/models/fields/modal/thumbs.php
~ admin/models/forms/event.xml
~ admin/models/registrations.php
~ admin/tables/feature.php
~ admin/views/event/tmpl/edit.php
~ admin/views/events/tmpl/default.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/registrations/tmpl/default.php
~ [LIBRARY] libraries/ic_library/date/period.php
~ [LIBRARY] libraries/ic_library/thumb/get.php
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/icrounded.php
~ site/add/elements/icsetvar.php
~ site/helpers/ichelper.php
~ site/helpers/icmodel.php
~ site/models/forms/submit.xml
~ site/models/list.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ site/views/list/tmpl/registration.php
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/view.html.php


iCagenda 3.5.1 <small style="font-weight:normal;">(2015.03.01)</small>
================================================================================
~ [MODULE iC calendar] Cleaned : not needed data attributs in arrows navigation.
# [MEDIUM] Fixed : no display of events if access registered, and user logged-in is not a Super User.
# [LOW] Fixed : possible issue with Joomla 3.4.0 (not saving event due to a script conflict), if admin module 'Multilanguage status' published (change of the modal for this module, using now Bootstrap).
# [LOW] Fixed : minor error issue in script used in edit form (admin) for link option on register button.
# [LOW] Fixed : 'No tickets are available for this date' displayed if no registration done for an event.
# [LOW] Fixed : incorrect count of available and booked tickets when Registration Type is set to 'all dates of the period'.
# [LOW] Fixed : link to view event after registration, not linking to registered date event view.

* Changed files in 3.5.1
~ admin/models/event.php
~ admin/models/fields/modal/iclink_article.php
~ admin/models/fields/modal/iclink_type.php
~ admin/models/fields/modal/iclink_url.php
~ admin/utilities/events/data.php
~ admin/utilities/form/form.php
~ admin/views/event/tmpl/edit.php
~ admin/views/events/view.html.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ site/add/elements/icsetvar.php
~ site/helpers/icmodel.php
~ site/models/events.php
~ site/views/list/tmpl/registration.php


iCagenda 3.5.0 <small style="font-weight:normal;">(2015.02.25)</small>
================================================================================
! [EXPORT CSV][Registrations] : integration of CSV exportation for a list of registrations. Use the filter dropdowns to select state, event and/or date, and export the list of registered users by clicking on the 'Export' button in the toolbar.
! [Registrations] : the max number of tickets is now applied to each individual date of an event, if registration per date is selected.
! [MODULES] Added : event url goes directly to the date selected in the event details view.
! [FORMS] Improvement in Form Validation. By default, the form validation is process first client-side, using now the joomla core form-validate, and in second validation is server-side, processed by iCagenda. You have option both for the 'Registration' and 'Submit an Event' forms, to select default (2 controls) or only server-side form validation (the most advanced and secured one. The client-side validation adds a more user-friendly way which is faster for user (page not reloaded) to know when a field or more are invalid).
+ Added : Admin filter by registered date in registrations list.
+ Added : Admin filter by category in registrations list.
+ [RSS] Added : get current menu options to filter the RSS feeds (Filter by date, ordering...).
+ [MODULE iC calendar] Added : option to close automatically the tooltip on Mouseout.
+ [PLUGIN Search] Added : Search in shortdesc and metadesc text.
~ [MODULE iC calendar] Changed : improvement of the tool tip design, and addition of auto vertical scrolling inside tooltip.
~ [MODULE iC calendar] Changed : All mktime php function changed to be standardized with component refactory.
~ Many code improvements and minor bugs fixed.
# [MEDIUM] Fixed : Possible blank page in frontend, or very slow loading of iCagenda. The issue was not identified (seems to be related to php 5.4.37), but the new release 3.5.0 fixes this problem.
# [MEDIUM] Fixed : Slow loading in frontend, when using distant images, the parent image to generate thumbnails was always controlled, and should not if thumb already existed.
# [LOW] Fixed : W3C validation.
# [LOW] Fixed : issue in checking menu item if published (could return a 404 error page if menu item not published).
# [LOW] Fixed : missing displaytime checking in list of dates rendering (could not display an event over a period, with week days selected, if time not set).
# [LOW] Fixed : when only single dates filled in 'Submit an Event' form, the event was unpublished.
# [LOW] Fixed : "Notice: Undefined index:" if some fields are not filled when captcha solution was incorrect in registration form.
# [LOW] Fixed : issue if captcha plugin option is not set correctly, and set to be shown in form options.
# [LOW] Fixed : do not display event not approved in RSS feeds.
# [LOW] Fixed : no display of toolbar in list of events (admin) if no category created (display issue hiding page header).
# [LOW] Fixed : infotips in registration form not working on Joomla 2.5 (bug introduced in 3.4.1).
# [LOW][PRO MODULE iC Event List] Fixed : wrong date if period has a start date before today, and end date after today (was displaying tomorrow).
# [LOW][PRO MODULE iC Event List] Fixed : missing ic- prefix for columns classes in default layout, and rtl files.
# [SQL] Fixed : possible issue when update from an old version of iCagenda (before 3.2.14 and 3.2.0), with sql updating using the joomla core sql updates system.

* Changed files in 3.5.0
- admin/add/css/icmap.css
~ admin/config.xml
+ admin/controllers/registrations.raw.php
~ admin/globalization/en-GB.php
+ admin/models/download.php
~ admin/models/events.php
~ admin/models/fields/icmap/city.php
~ admin/models/fields/icmap/country.php
~ admin/models/fields/icmap/lat.php
~ admin/models/fields/icmap/lng.php
~ admin/models/fields/modal/date.php
~ admin/models/fields/modal/ictextarea_counter.php
~ admin/models/fields/modal/thumbs.php
+ admin/models/forms/download.xml
~ admin/models/forms/event.xml
~ admin/models/registrations.php
~ admin/sql/updates/3.2.0.sql
~ admin/sql/updates/3.2.14.sql
~ admin/sql/updates/3.2.sql
~ admin/utilities/customfields/customfields.php
+ admin/utilities/events/data.php
~ admin/utilities/events/events.php
~ admin/utilities/form/form.php
~ admin/utilities/menus/menus.php
~ admin/utilities/thumb/thumb.php
~ admin/views/categories/view.html.php
+ admin/views/download/tmpl/default.php
+ admin/views/download/view.html.php
~ admin/views/event/tmpl/edit.php
~ admin/views/event/view.html.php
~ admin/views/events/tmpl/default.php
~ admin/views/events/view.html.php
~ admin/views/registrations/tmpl/default.php
~ admin/views/registrations/view.html.php
+ admin/views/registrations/view.raw.php
~ [LIBRARY] libraries/ic_library/date/date.php
~ [LIBRARY] libraries/ic_library/thumb/create.php
~ [LIBRARY] libraries/ic_library/thumb/get.php
~ [MEDIA] media/css/icagenda-back.css
~ [MEDIA] media/css/icagenda-front.css
+ [MEDIA] media/css/icagenda.css
~ [MEDIA] media/icicons/style.css
~ [MEDIA] media/js/icdates.js
~ [MEDIA] media/js/icform.js
~ [MODULE][PRO] modules/mod_ic_event_list/css/default_style-rtl.css
~ [MODULE][PRO] modules/mod_ic_event_list/css/default_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/css/icrounded_style-rtl.css
~ [MODULE][PRO] modules/mod_ic_event_list/css/icrounded_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/default.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ [PLUGIN] plugins/search/icagenda/icagenda.php
~ script.icagenda.php
- site/add/css/icmap.css
~ site/add/elements/icsetvar.php
~ site/helpers/ichelper.php
~ site/helpers/icmodel.php
~ site/models/events.php
~ site/models/forms/submit.xml
~ site/models/list.php
~ site/models/submit.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/default/css/default_component_xsmall.css
~ [THEME PACKS] site/themes/packs/default/css/default_module.css
~ [THEME PACKS] site/themes/packs/default/default_day.php
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/default/default_events.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component_xsmall.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_day.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_events.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/default_categories.php
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/view.html.php

iCagenda 3.4.1 <small style="font-weight:normal;">(2015.01.30)</small>
================================================================================
! Changed : To fix an issue when using a custom captcha plugin (not joomla core reCaptcha plugin), the options has been changed. Now, there's only one place where you can set the captcha plugin used in iCagenda: 'General Settings' tab of the Global Options of the component. And you have individual option to show/hide captcha in 'Registration' and 'Submit an Event' forms. The update script will try to migrate your settings, but it's possible that you will have to set again this option in the menu options of 'Submit en Event' menu item type.
! Fixed : the 404 error page on multi-language site (when clicking on a module link).
+ Added : Get menu id and title of an event submitted in frontend (notification email, and filter in admin list of events).
+ Added : Options to show/hide period, weekdays and single dates in 'Submit an Event' form.
+ Added : Filter RSS feeds by category filter set in the menu options.
+ Added : Tooltip legends to pagination.
+ Added : Option to show/hide time in date box (list of events).
+ Added : Global Option to set access level to registration form.
+ [Plugin Search] Added : Next date added in search result (after title of the event).
~ Changed : You can now enter date before 1970/1/1 and after 2038/1/19 (no more unix limitation due to mktime php function, removed from date functions).
~ Changed : pageclass_sfx moved from id icagenda to a class (ic-list, ic-event, ic-registration, ic-submit, ic-send) to follow joomla standard.
~ Changed : Google Maps script checking (if api not loaded, iCagenda will load it).
~ Changed : Main list of events filter by date is improved (full recoding of the dates filtering functions).
~ Changed : The option 'list of all dates/only next/last date' is changed into 'Display All Dates' yes/no option.
~ [PRO MODULE iC Event List] Changed : ic- prefix added to section, group and col class names (to prevent class names CSS conflict).
~ Changed : Many code improvements.
# [MEDIUM] Fixed : 'auto' mode for menu link in modules was not well filtering language when joomla multi-language enabled. Improvement of the language detection for the menu items to retrieve the correct url.
# [LOW] Fixed : do not send user notification email after an event submission in frontend, if user has permissions to approve an event.
# [LOW] Fixed : no thumbnails were generated when '.' found in the image filename (eg. image.name.jpg).
# [LOW] Fixed : detects if an image file is too large, depending of server memory_limit setting, to prevent a blank page in admin when thumbnails cannot be generated (alert message displayed when a file is too large).
# [LOW] Fixed : filtering by category in events admin list was broken.
# [LOW] Fixed : Minor warning message in admin 'Themes manager' page (don't worry, nothing is broken!), 'Error loading component: COM_ICAGENDA, Component not found'.
# [LOW] Fixed : a few minor issue in admin list of events (date in current language, notice error $list var, ...).
# [LOW] Fixed : no display of events if category is unpublished.
# [LOW] Fixed : Keep in session Terms and Conditions checked, when reCaptcha is not correct.
# [LOW] Fixed : alias not generated when latin and non-latin characters in title (no datetime url safe alias, depending of unicode slug joomla global config setting).
# [LOW] Fixed : wrong display of menu option 'Features' on Joomla 2.5.
# [LOW] Fixed : if click on cancel on registration form, and when back to event details view, the back arrow was returning to registration form (now returns to parent list of events).

* Changed files in 3.4.1
~ admin/add/css/jquery-ui-1.8.17.custom.css
~ admin/config.xml
~ admin/globalization/uk-UA.php
~ admin/models/events.php
~ admin/models/fields/modal/cat.php
~ admin/models/fields/modal/date.php
~ admin/models/fields/modal/enddate.php
~ admin/models/fields/modal/ictextarea_counter.php
~ admin/models/fields/modal/startdate.php
~ admin/models/fields/modal/template.php
~ admin/models/forms/event.xml
~ admin/tables/event.php
~ admin/utilities/events/events.php
~ admin/utilities/form/form.php
~ admin/utilities/menus/menus.php
~ admin/views/event/tmpl/edit.php
~ admin/views/event/view.html.php
~ admin/views/events/tmpl/default.php
~ admin/views/events/view.html.php
~ admin/views/themes/tmpl/default.php
~ admin/views/themes/view.html.php
~ [LIBRARY] libraries/ic_library/date/date.php
~ [LIBRARY] libraries/ic_library/date/period.php
~ [LIBRARY] libraries/ic_library/thumb/create.php
~ [LIBRARY] libraries/ic_library/thumb/get.php
~ [MEDIA] media/css/icagenda-front.css
~ [MEDIA] media/js/icdates.js
~ [MODULE][PRO] modules/mod_ic_event_list/css/default_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/css/icrounded_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/helper.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/default.php
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/icrounded.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [PLUGIN] plugins/search/icagenda/icagenda.php
~ script.icagenda.php
~ site/add/css/jquery-ui-1.8.17.custom.css
~ site/helpers/ichelper.php
~ site/helpers/icmodel.php
~ site/models/events.php
+ site/models/forms/registration.xml
~ site/models/forms/submit.xml
~ site/models/list.php
~ site/models/submit.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/default/default_events.php
~ [THEME PACKS] site/themes/packs/default/default_registration.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_day.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_events.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_registration.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/default.xml
+ site/views/list/tmpl/default_categories.php
~ site/views/list/tmpl/default_vcal.php
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/list/view.feed.php
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/default.xml
~ site/views/submit/tmpl/send.php
~ site/views/submit/view.html.php


iCagenda 3.4.0 <small style="font-weight:normal;">(2014.12.22)</small>
================================================================================
! New : Custom fields.
1 - Available in registration and event edition forms.
1 - Field types : text, list, radio buttons.
! New : Feature Icons.
1 - Create icons for each feature.
1 - Attribute one or more features individually for each event.
1 - Feature can be for example: Parking, Refreshments, Restaurant, Hotel, Free, TV, Toilets, Swimming, Airport... (no limit of usage!).
! New : Librairies
1 - iC Library : standalone library (loaded by a plugin).
1 - iCagenda Utilities : integrated library of iCagenda.
! New : Full Thumbnails generator
1 - Options for 4 predetermined sizes : large, medium, small, xsmall.
1 - For each thumbnail size, individual options : width, height, quality, crop.
! Improvement and new options:
1 - Captcha option added in 'Registration' and 'Submit an event' forms.
1 - RTL integration (component and modules)
1 - SQL requests improvement (faster process of database queries)
1 - Link to event details from modules and search plugin now detect the category filter setting from each menu items.
1 - Notification email to user who has submitted an event in frontend, with an Event Reference Number.
1 - ...
! Please check all release notes since 3.4.0-alpha1 to review all the changes and new options added since 3.3.8

* Release Notes 3.4.0
~ Changed : 'btn' class renamed in 'ic-btn' for frontend (mainly used for buttons).
~ Changed : a few css improvement (ic_rounded theme, liveupdate design...), and new classes added for a few core functions (date time display...).
# [LOW] Fixed : minor issues with 3.4.0-rc.

* Changed files in 3.4.0
~ admin/config.xml
~ admin/icagenda.php
~ admin/liveupdate/assets/liveupdate.css
~ admin/liveupdate/classes/abstractconfig.php
~ admin/liveupdate/classes/tmpl/nagscreen.php
~ admin/liveupdate/classes/tmpl/overview.php
~ admin/liveupdate/classes/updatefetch.php
~ admin/utilities/customfields/customfields.php
~ admin/utilities/events/events.php
+ admin/utilities/params/params.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/info/tmpl/default.php
~ [LIBRARY] libraries/ic_library/date/date.php
+ [LIBRARY] libraries/ic_library/date/period.php
~ [MEDIA] media/css/icagenda-front.css
+ [MEDIA] media/js/icagenda.js
~ [MODULE][PRO] modules/mod_ic_event_list/helper.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ [PLUGIN] plugins/system/ic_library/ic_library.php
~ script.icagenda.php
~ site/helpers/ichelper.php
~ site/helpers/icmodel.php
~ site/helpers/media_css.class.php
~ site/models/events.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/default/css/default_component_xsmall.css
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component_medium.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component_small.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component_xsmall.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/send.php
~ site/views/submit/view.html.php


$ iCagenda 3.4.0-rc <small style="font-weight:normal;">(2014.12.14)</small>
================================================================================
! RTL integration (component and modules)
! SQL requests improvement (faster process of database queries)
! [MODULES & PLUGIN] Link to event details from modules and search plugin now detect the category filter setting from each menu items.
! Notification email to user who has submitted an event in frontend, with an Event Reference Number (of type YYYYMMDDID where YYYY is year, MM is month, DD is day and ID is event id).
+ Added : form fields saved to session to keep data after submission of the form if a wrong captcha value was entered.
+ Added : nofollow for 'registration' and 'submit an event' form links (to not been read by search engine).
+ Added : option to set ordering of categories in drop-down field.
+ Added : option to set a category as default in drop-down field.
~ Changed : auto-generation of alias improved.
~ Changed : default order of categories in drop-down field by title (previously by id).
# [LOW] Fixed : issue with single date before 1999-11-30.
# [LOW] Fixed : tooltip not working in 'Submit an Event' form on Joomla 3.3.6 (fixed since alpha-1).
# [LOW] Fixed : pixelated event image in details view, if original image is too small.
# [LOW] Fixed : notice error 'DS' in admin and frontend after Joomla upgrade from 2.5 to 3.3.
# [LOW] Fixed : text counter bug in frontend 'Submit an Event' form on IE11.

* Changed files in 3.4.0-rc
~ admin/config.xml
~ admin/icagenda.php
~ admin/models/category.php
~ admin/models/event.php
~ admin/models/events.php
~ admin/models/feature.php
~ admin/models/fields/icmap/city.php
~ admin/models/fields/icmap/country.php
~ admin/models/fields/icmap/lat.php
~ admin/models/fields/icmap/lng.php
~ admin/models/fields/modal/cat.php
~ admin/models/fields/modal/date.php
~ admin/models/fields/modal/iclink_type.php
~ admin/models/fields/modal/ictextarea_counter.php
~ admin/models/fields/modal/multicat.php
~ admin/models/forms/feature.xml
~ admin/tables/category.php
~ admin/tables/customfield.php
~ admin/tables/event.php
~ admin/tables/feature.php
~ admin/tables/registration.php
~ admin/utilities/customfields/customfields.php
~ admin/utilities/events/events.php
~ admin/utilities/form/form.php
+ admin/utilities/menus/menus.php
~ admin/utilities/thumb/thumb.php
~ libraries/ic_library/filter/output.php
~ libraries/ic_library/url/url.php
~ media/css/icagenda-front.css
~ media/js/icform.js
+ [MODULE][PRO] modules/mod_ic_event_list/css/default_style-rtl.css
~ [MODULE][PRO] modules/mod_ic_event_list/css/default_style.css
+ [MODULE][PRO] modules/mod_ic_event_list/css/icrounded_style-rtl.css
~ [MODULE][PRO] modules/mod_ic_event_list/css/icrounded_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/helper.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/default.php
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/icrounded.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ site/add/css/style.css
~ site/add/elements/icsetvar.php
~ site/helpers/ichelper.php
~ site/helpers/icmodel.php
~ site/icagenda.php
+ site/models/events.php
~ site/models/forms/submit.xml
~ site/models/list.php
~ site/models/submit.php
+ [THEME PACKS] site/themes/packs/default/css/default_component-rtl.css
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
+ [THEME PACKS] site/themes/packs/default/css/default_module-rtl.css
~ [THEME PACKS] site/themes/packs/default/default_day.php
~ [THEME PACKS] site/themes/packs/default/default_registration.php
+ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component-rtl.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
+ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module-rtl.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_day.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_events.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_registration.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/default.xml
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/default.xml
~ site/views/submit/tmpl/send.php
~ site/views/submit/view.html.php


$ iCagenda 3.4.0-beta2 <small style="font-weight:normal;">(2014.11.09)</small>
================================================================================
+ Captcha option added in 'Registration' and 'Submit an event' forms. You can select the joomla captcha plugin that will be used in the form.
+ Added : Custom fields filled added in the registration notification emails.
+ Added : 3 tags in registration notification emails : [CUSTOMFIELDS] (list of custom fields), [DATE] (only date) and [TIME] (only time).
+ Added : Option to redirect after validation of the frontend 'Submit an Event' form (default, article or url).
+ Added : Option to set a characters limit for Title in List of Events.
+ Added : Option to create custom CSS stylesheets to add to the iCagenda styles or to override existing CSS styles and classes (Global Options).
+ [PRO MODULE iC Event List] Added : Options to set a header and/or footer custom text.
+ [MODULE iC Calendar] Added : Option to select the date on which the calendar will load (month and year).
+ [MODULE iC Calendar] Added : Option to show/hide Month and/or Year navigation.
~ Changed : display of "LiveUpdate" button only to user with component global options permissions.
~ [MODULE iC Calendar] Changed : navigation routing improved in calendar (now compatible with Advanced Module Manager by NoNumber).
~ [Theme Packs] Changed : load animated png is replaced by a animated gif (to prevent not working on not compatible browsers).
# [LOW] Fixed : 'view event' redirect link, after registration submission.
# [LOW] Fixed : nofollow for 'print' and 'add to cal' icons links.
# [LOW] Fixed : issue with custom field type 'list' if set to 'required'. Field was not checked properly if 'alias' and 'slug' identical.
# [LOW] Fixed : Add to iCal if SEF not activated (wrong url).
# [LOW] Fixed : displays users registered depending on the date (when 'All dates of each event' option is selected in menu options).
# [LOW] Fixed : possibility to edit or removed a registered user when the event is not published.
# [LOW] Fixed : changed 'all period' to 'all dates' in registration option, and fix an issue in data saved when no period for an event.
# [LOW] Fixed : possible issues with "edit own" permission for event edition.
# [LOW] Fixed : auto-increment of image name in frontend submit an event form, if image name already exists.
# [LOW] Fixed : error when searching in event with special characters (ą ę ć ś ź ł ż ó ż ń).
# [PRO MODULE iC Event List] [LOW] Fixed : wrong date depending of the time zone (only if datetime or date display is selected).

* Changed files in 3.4.0-beta2
~ admin/config.xml
~ admin/models/events.php
~ admin/models/fields/modal/evt.php
~ admin/models/fields/modal/evt_date.php
~ admin/models/fields/modal/iclink_type.php
~ admin/models/fields/modal/thumbs.php
~ admin/models/forms/event.xml
~ admin/models/forms/registration.xml
~ admin/utilities/customfields/customfields.php
+ admin/utilities/events/events.php
~ admin/utilities/form/form.php
~ admin/views/events/tmpl/default.php
~ admin/views/events/view.html.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/registrations/tmpl/default.php
+ libraries/ic_library/date/date.php
~ libraries/ic_library/lib_ic_library.xml
~ libraries/ic_library/thumb/create.php
~ libraries/ic_library/url/url.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/default.php
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/icrounded.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ [PLUGIN] plugins/system/ic_library/ic_library.php
~ site/add/elements/icsetvar.php
~ site/helpers/iCicons.class.php
~ site/helpers/icmodel.php
~ site/helpers/media_css.class.php
~ site/models/list.php
~ site/models/submit.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/default/css/default_module.css
+ [THEME PACKS] site/themes/packs/default/images/ic_load.gif
- [THEME PACKS] site/themes/packs/default/images/ic_load.png
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
+ [THEME PACKS] site/themes/packs/ic_rounded/images/ic_load.gif
- [THEME PACKS] site/themes/packs/ic_rounded/images/ic_load.png
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/default_vcal.php
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/default.xml
~ site/views/submit/view.html.php


$ iCagenda 3.4.0-beta1 <small style="font-weight:normal;">(2014.07.23)</small>
================================================================================
+ Added : Short Description field (you can now enter a special short description, to be used in the list of events as Intro Text).
+ Added : Limit options for Short Description, Auto-Introtext and Meta Description. Addition of a live counter of remaining characters both in admin event edit and submit an event forms.
+ Added : Option for maximum size of the uploaded image in frontend 'submit an event' form. This new function controls the file before upload, check the size and file type, and display a preview if the file is conformed.
+ Added : image added to rss feeds
+ [SQL] Added : 'shortdesc' in '#__icagenda_events' table
~ Changed : 'Meta' is replaced by 'Auto-Introtext' in Intro Text option (global component and modules options).
~ [THEME PACKS] Changed : Begin of renaming of existing CSS classes of ic_rounded theme pack (to use standardized naming, and prevent CSS conflicts with site templates and other third party extensions. Don't forget to update your custom theme pack if needed!)
~ Changed : a few code improvements, and control alert messages added.
# [LOW] Fixed : possible issue on a fresh install, with a wrong installation of the iC Library.
# [LOW] Fixed : wrong display in frontend of radio buttons, when using a Gantry Template.

* Changed files in 3.4.0-beta1
~ admin/add/css/icagenda.j25.css
~ admin/config.xml
+ admin/models/fields/modal/ictextarea_counter.php
~ admin/models/forms/event.xml
~ admin/views/event/tmpl/edit.php
~ admin/views/event/view.html.php
~ admin/views/icagenda/tmpl/color.php
~ icagenda.xml
~ libraries/ic_library/lib_ic_library.xml
~ media/css/icagenda-back.css
~ media/css/icagenda-front.css
+ media/js/icform.js
~ [MODULE][PRO] modules/mod_ic_event_list/css/default_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ script.icagenda.pro.php
~ site/add/css/icagenda.j25.css
~ site/add/elements/icsetvar.php
~ site/helpers/icmodel.php
~ site/icagenda.php
~ site/models/forms/submit.xml
~ site/models/list.php
~ site/models/submit.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/default.xml
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/default.xml
~ site/views/submit/view.html.php


$ iCagenda 3.4.0-alpha2 <small style="font-weight:normal;">(2014.07.16)</small>
================================================================================
+ Added : Alert message with list of custom theme packs not updated to be compatible with custom fields and feature icons.
+ Added : Check if at least 1 category is published before adding/editing an event.
+ Added : Option to show/hide custom fields in frontend 'Submit an event' form (Menu Item params and Global Options).
+ Added : Own server for Testing Updates (alpha & beta).
# [MEDIUM] Fixed : SQL error 1064 in event edit if no custom fields exists.
# [LOW] Fixed : bug in checking if a slug already exists (custom fields) (could display multiple times the custom field in event details view).
# [LOW] Fixed : bug in display of information option in Event Details view.
# [LOW] Fixed : bug in fields display options in the form to submit an event in frontend.
# [LOW][PRO][MODULE iC Event List] Fixed : today date was not always properly set depending on your hosting location (now uses Joomla config offset).

* Changed files in 3.4.0-alpha2
~ admin/config.xml
~ admin/liveupdate/classes/abstractconfig.php
~ admin/liveupdate/config.php
~ admin/models/customfields.php
+ admin/sql/install/mysql/icagenda.install.sql
- admin/sql/install.mysql.utf8.sql
+ admin/sql/uninstall/mysql/icagenda.uninstall.sql
- admin/sql/uninstall.mysql.utf8.sql
~ admin/tables/customfield.php
~ admin/utilities/categories/categories.php
~ admin/utilities/customfields/customfields.php
+ admin/utilities/theme/theme.php
~ admin/views/customfields/tmpl/default.php
~ admin/views/event/tmpl/edit.php
~ admin/views/event/view.html.php
~ admin/views/events/view.html.php
~ admin/views/features/tmpl/default.php
~ admin/views/icagenda/tmpl/color.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/info/tmpl/default.php
~ admin/views/themes/tmpl/default.php
~ icagenda.xml
+ [iC Library] libraries/ic_library/file/file.php
~ [iC Library] libraries/ic_library/lib_ic_library.xml
~ [MODULE][PRO] modules/mod_ic_event_list/css/icrounded_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [PLUGIN][iC Library] plugins/system/ic_library/ic_library.php
~ script.icagenda.pro.php
~ site/add/elements/icsetvar.php
~ site/helpers/icmodel.php
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/default.xml
~ site/views/submit/view.html.php


$ iCagenda 3.4.0-alpha1 <small style="font-weight:normal;">(2014.07.11)</small>
================================================================================
! New : Custom fields.
1 Available in registration and event edition forms.
1 Field types : text, list, radio buttons.
! New : Feature Icons.
1 Create icons for each feature.
1 Attribute one or more features individually for each event.
1 Feature can be for example: Parking, Refreshments, Restaurant, Hotel, Free, TV, Toilets, Swimming, Airport... (no limit of usage!).
! New : Librairies
1 iC Library : standalone library (loaded by a plugin).
1 iCagenda Utilities : integrated library of iCagenda.
! New : Full Thumbnails generator
1 Options for 4 predetermined sizes : large, medium, small, xsmall.
1 For each thumbnail size, individual options : width, height, quality, crop.
! Many code lines cleaned up, and global improvement. (zip is now 0,4 mb lighter!)
+ Added : Modified Date and Modified By fields in admin event edit form.
+ [PRO][MODULE iC Event List] Added : Detection of the categor(y)ies set in the menu items to generate link of an event.
+ [PRO][MODULE iC Event List] Added : Show/Hide venue name
~ [PRO][MODULE iC Event List] Changed : Improved design of icrounded layout.
~ Changed : default ordering of admin list of events is now ID descendant (latest created event in first position).
~ Changed : default ordering of admin list of registered users is now ID descendant (latest registered user in first position).
~ Changed : option to set 'Intro Text'; auto, hide, short desc or meta (global options and modules params).
# [LOW] Fixed : created date was missing in old versions of iCagenda (before 3.1.5). This version update database to set a valid created date for events created with versions of iCagenda < 3.1.5, and set in this order : modified date if valid or next/last date if valid or, at the end, will use current date. (this fix is to prevent wrong 'Created on 30 November -0001' in search results)

* Changed files in 3.4.0-alpha1
~ admin/access.xml
~ admin/add/elements/title.php
~ admin/add/elements/titleimg.php
~ admin/config.xml
+ admin/controllers/customfield.php
+ admin/controllers/customfields.php
~ admin/controllers/event.php
+ admin/controllers/feature.php
+ admin/controllers/features.php
~ admin/helpers/icagenda.php
~ admin/icagenda.php
+ admin/models/customfield.php
+ admin/models/customfields.php
~ admin/models/event.php
~ admin/models/events.php
+ admin/models/feature.php
+ admin/models/features.php
~ admin/models/fields/modal/date.php
+ admin/models/fields/modal/thumbs.php
+ admin/models/forms/customfield.xml
~ admin/models/forms/event.xml
+ admin/models/forms/feature.xml
~ admin/models/forms/registration.xml
~ admin/models/icagenda.php
~ admin/models/registration.php
~ admin/models/registrations.php
+ admin/tables/customfield.php
~ admin/tables/event.php
+ admin/tables/feature.php
~ admin/tables/icagenda.php
~ admin/tables/registration.php
+ admin/utilities/categories/categories.php
+ admin/utilities/class/class.php
+ admin/utilities/customfields/customfields.php
+ admin/utilities/form/form.php
+ admin/utilities/thumb/thumb.php
~ admin/views/category/tmpl/edit.php
+ admin/views/customfield/tmpl/edit.php
+ admin/views/customfield/view.html.php
+ admin/views/customfields/tmpl/default.php
+ admin/views/customfields/view.html.php
~ admin/views/event/tmpl/edit.php
~ admin/views/events/tmpl/default.php
~ admin/views/events/view.html.php
+ admin/views/feature/tmpl/edit.php
+ admin/views/feature/view.html.php
+ admin/views/features/tmpl/default.php
+ admin/views/features/view.html.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/icagenda/view.html.php
~ admin/views/info/tmpl/default.php
~ admin/views/registration/tmpl/edit.php
~ admin/views/registrations/tmpl/default.php
~ icagenda.xml
+ media/css/icagenda-back.css
+ media/css/icagenda-front.css
~ [iCicons][New icons] media/icicons/
+ media/images/customfields-16.png
+ media/images/customfields-48.png
+ media/images/features-16.png
+ media/images/features-48.png
+ media/images/panel_denied/customfields-48.png
+ media/images/panel_denied/features-48.png
~ [IMAGES][All png optimized] media/images/
~ media/js/icdates.js
- [FOLDER] media/scripts/
~ [MODULE][PRO] modules/mod_ic_event_list/css/default_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/css/icrounded_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/helper.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/default.php
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/icrounded.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
- [FOLDER] plugins/search/plg_icagenda/
+ [FOLDER] plugins/search/icagenda/
- [FOLDER] plugins/system/plg_ic_autologin/
+ [FOLDER] plugins/system/ic_autologin/
+ plugins/system/ic_library/ic_library.php
+ plugins/system/ic_library/ic_library.xml
~ script.icagenda.pro.php
~ site/add/elements/icsetvar.php
~ site/helpers/ichelper.php
~ site/helpers/iCicons.class.php
~ site/helpers/icmodel.php
~ site/icagenda.php
~ site/js/icmap.js
~ site/models/forms/submit.xml
~ site/models/list.php
~ site/models/submit.php
~ site/router.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/default/css/default_module.css
~ [THEME PACKS] site/themes/packs/default/default_day.php
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/default/default_events.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component_small.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component_xsmall.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_day.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_events.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/default.xml
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/list/view.feed.php
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php
+ [iC Library] libraries/ic_library/color/color.php
+ [iC Library] libraries/ic_library/filter/output.php
+ [iC Library] libraries/ic_library/lib_ic_library.xml
+ [iC Library] libraries/ic_library/library/library.php
+ [iC Library] libraries/ic_library/string/string.php
+ [iC Library] libraries/ic_library/thumb/create.php
+ [iC Library] libraries/ic_library/thumb/get.php
+ [iC Library] libraries/ic_library/thumb/image.php
+ [iC Library] libraries/ic_library/url/url.php
+ [SQL] #__icagenda_customfields_data
+ [SQL] #__icagenda_feature
+ [SQL] #__icagenda_feature_xref


iCagenda 3.3.8 <small style="font-weight:normal;">(2014.07.04)</small>
================================================================================
+ Added : Events RSS feeds integrated to Joomla (This is a partial integration, displaying all events. An advanced integration with options, and events image in the RSS feed, will be added in 3.4.0 version, thanks to the new iC Library not yet implemented).
~ Changed : ChangeLog design
# [HIGH] Fixed : did not save the date selected during registration in datetime database format , depending on date format settings (was not working properly with name of the day of the week display displayed, eg. Saturday, 21 June 2014, or if AM/PM selected).
# [LOW] Fixed : quote issue in short description when sharing on facebook.

* Changed files in 3.3.8
~ admin/add/css/icagenda.css
+ admin/CHANGELOG.php
- admin/UPDATELOGS.php
~ admin/models/fields/modal/evt_date.php
~ admin/views/icagenda/tmpl/color.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/icagenda/view.html.php
~ icagenda.xml
~ script.icagenda.php
~ site/helpers/icmodel.php
~ site/models/list.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
+ site/views/list/view.feed.php


iCagenda 3.3.7 <small style="font-weight:normal;">(2014.05.29)</small>
================================================================================
! New : Custom notification emails to a user after registration to an event can be edit in html using your favorite editor.
+ Added : individual options for the display of fields in menu "Submit an event".
~ Changed : New registration button (uses icons, colors, and a redirect to login with return page, if user has no permission).
# [MEDIUM] Fixed : link to past event if "only next/last date" selected in the menu option, returned a view with no data, depending of value set in option 'Selection of events'.
# [LOW] Fixed : bug if 'today' and 'all dates' selected, could display no events (missing offset in date controls).
# [LOW] Fixed : in iCagenda 3.3.6, the notification emails to a user after registration to an event, do not account for newlines.
# [LOW] Fixed : Print popup view, if SEF disabled.

* Changed files in 3.3.7
~ admin/add/css/icagenda.j25.css
~ admin/config.xml
+ admin/models/fields/modal/ic_editor.php
~ [iCicons][Update] media/icicons/
~ site/helpers/icmodel.php
~ site/models/forms/submit.xml
~ site/models/list.php
~ site/models/submit.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/default/css/default_module.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/default.xml
~ site/views/submit/view.html.php


iCagenda 3.3.6 <small style="font-weight:normal;">(2014.05.16)</small>
================================================================================
+ Added : Option for Intro Text : hide, the short description (generated from full description) or the meta description (Global Options of the component, and options of the modules).
+ [GLOBALIZATION] Added : tr-TR Turkish (Turkey) date formats.
+ [MODULE Calendar] Added : ID is added next to title of the menu, in option to select 'link to menu'.
+ [PRO] Added : Option to set minimum release stability for update notifications. (PRO OPTIONS tab in global options of iCagenda Pro)
~ [Optimization] : SQL request filtering improved in order to fix an issue, and speed up loading (more optimization to come concerning speed of page loading).
~ Changed : Division of the events tab in the global configuration into 2 tabs : Events (list of events options) and Event (details view options).
~ Changed : Updated addthis script (v300).
# [Optimization] Fixed : the list model was running the loading of data twice, and with this issue fixed the execution time for displaying a list is now halved (Thanks doorknob!).
# [HIGH]Fixed : Access to registration form if registration not activated in options.
# [LOW] Fixed : (only on Joomla 2.5) wrong display of print page if 'All Dates for each event' is selected in menu option.
# [LOW][MODULE Calendar][JS] Fixed : It was correctly deleting and adding the class style_Today but not the reverse for style_Day (by doorknob).
# [LOW]Fixed : Issue with Turkish language in admin events list (due to setlocale function, not used anymore).
# [LOW]Fixed : wrong closing select tags in 2 fields of the registration form.
# [LOW]Fixed : missing div tag in registration form.

* Changed files in 3.3.6
~ admin/config.xml
~ admin/globalization/iso.php
+ admin/globalization/tr-TR.php
~ admin/models/fields/modal/menulink.php
~ admin/views/events/tmpl/default.php
~ admin/views/events/view.html.php
~ media/scripts/icthumb.php
~ [MODULE][PRO] modules/mod_ic_event_list/helper.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/js/jQuery.highlightToday.js
~ [MODULE] modules/mod_iccalendar/js/jQuery.highlightToday.min.js
~ site/add/elements/icsetvar.php
~ site/helpers/ichelper.php
~ site/helpers/icmodel.php
~ site/models/list.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/list/view.html.php


iCagenda 3.3.5-1 (patch) <small style="font-weight:normal;">(2014.04.29)</small>
================================================================================
# Fixed : possible issue with uploaded files (image and/or file) not attached correctly in frontend submission form.

* Changed files in 3.3.5-1
~ site/views/submit/tmpl/default.php


iCagenda 3.3.5 <small style="font-weight:normal;">(2014.04.27)</small>
================================================================================
+ Added : Control if event is published before editing a user registered for an event. (prevent error if user is registered to an unpublished event)
+ Added : Control if registered date still exists when editing a user registered for an event.
~ Changed : can convert date format depending on the option setting for date format (menu or global), when registration saved since version 3.3.3.
# [MEDIUM] Fixed : Date selection in Registration edition.
# [LOW] Fixed : missing loading of template.js on registration edition (Joomla 2.5).
# [LOW] Fixed : wrong css styling of pagination (Joomla 2.5).

* Changed files in 3.3.5
~ admin/add/css/template.css
~ admin/models/fields/modal/evt_date.php
~ admin/models/fields/modal/evt.php
~ admin/models/registrations.php
~ admin/views/registration/tmpl/edit.php
~ admin/views/registrations/tmpl/default.php
~ site/helpers/icmodel.php


iCagenda 3.3.4 <small style="font-weight:normal;">(2014.04.25)</small>
================================================================================
! Joomla 3.3 Ready! This version has been tested on 3.3.0 rc, and a few improvements has been done to run well on the new Joomla 3.3 available soon !
+ Added : Displays 'Home Page' and 'Submit a New Event' buttons, after validation of the event submission form, if user is logged in (was only displayed when user not logged in).
+ Added : Show 'Registration Options' in frontend submission form, only if registration is activated in global options.
~ Changed : Hide User ID when logged-in in registration form (was visible only for registered user).
~ Changed : no more 'onload' to initialize Google Maps (could prevent onload conflict with other extensions).
# [MEDIUM][Joomla 3.2.x & 3.3-beta] Fixed : in the frontend submission form, when user logged-in, 'disabled' changed to 'readonly' for user name and email, as it will not be submitted on a Joomla 3.3 website, and was giving the bug of double-click-needed on the submit button on J3.2.
# [MEDIUM][Joomla 2.5] Fixed : Global Options BUG with options not accessible -> Not correct path for js files in admin (after change of location for the scripts files in 3.3.3), on Joomla 2.5.
# [LOW] Fixed : Possible missing close div in submission form, if registration not displayed.
# [LOW][MODULE Calendar] Fixed : time was displayed even if the option to show time in event edition was disabled. Control missing in default theme pack.

* Changed files in 3.3.4
~ admin/add/elements/desc.php
~ admin/add/elements/title.php
~ admin/icagenda.php
- admin/models/fields/modal/time.php
~ admin/models/forms/event.xml
~ admin/views/event/tmpl/edit.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/icagenda/view.html.php
~ script.icagenda.php
~ site/helpers/icmodel.php
~ site/models/submit.php
~ [THEME PACKS] site/themes/packs/default/default_day.php
~ site/views/list/tmpl/registration.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/send.php
~ site/views/submit/view.html.php
+ media/js/jquery.noconflict.js


iCagenda 3.3.3 <small style="font-weight:normal;">(2014.04.20)</small>
================================================================================
! New : Edition in admin of a user registered for an event, and possibility to create a new registered user.
! New : Advanced options for Registration Button. You can now replace individually for each event, the link on the button by an external url or an article ('Options' tab, in admin event edition). Another option is added for browser target of the registration button.
+ Added : Global option to set a default date format (general settings tab).
+ [MODULE Calendar] Added : Option to display a custom text in header of calendar. (Thanks doorknob)
+ [MODULE Calendar] Added : Option to set a padding for the tooltip, on mobile devices. (Thanks doorknob)
~ Changed : Date selected during a registration will be saved in database without formatting.
~ Changed : IcoMoon replaced by iCicon font (iCagenda vector icons font), for print and calendar icons on Joomla 3.
~ Changed : forms (Submission and Registration): uses iCtip script to generate information tooltips (replaces css3 tooltips, and adds responsive behaviour to detect screen border).
~ Changed : folder 'add/js' moved from admin and site folders to media folder.
~ [THEME PACKS] Changed : in THEME_day.php file, 'cal_date' changed to 'data-cal-date' (to avoid possible future conflicts as html5 is developed).
~ [ROUTER SEF] Changed : "event_registration" to "registration" at the end of url to registration form (when SEF enabled).
~ Code : many code cleaned and/or improved (Thank you Doorknob for your precious contribution!).
- [ROUTER SEF] Removed : "event_details" at the end of url to event details view (when SEF enabled) and provides a better SEO score.
- [MODULE] Removed : br tags after date/close header in calendar tooltip.
# [MEDIUM] Fixed : error in a php function which changes event time (winter/summer time) when event over a period starting before daylight saving, and finishing after daylight saving.
# [MEDIUM] Fixed : displaying of today, and/or upcoming, or past events are now using Joomla config time zone, to prevent issue with server timezone.
# [LOW] Fixed : ordering of categories (admin).
# [LOW] Fixed : possibility of a PHP Warning: Invalid argument supplied for foreach() in /components/com_icagenda/views/list/tmpl/event.php on line 48, in your site error log.
# [LOW] Fixed : Not sending notification to the user who registers for an event, if email is not set as required.
# [LOW] Fixed : Error if no events, with Addthis button.
# [LOW] Fixed : Bug in All Dates, when only sunday for period (wrong display : "Sunday & Sunday").
# [LOW] Fixed : It was not loading Google Maps script if only coordinates were indicated (empty address).
# [LOW][PLUGIN Search] Fixed : Display of events not filtered by current language.
# [LOW][PRO][MODULE iC Event List] Fixed : Possible missing thumbnail, if no leading "/" in image url.

* Changed files in 3.3.3
~ admin/add/css/icagenda.css
~ admin/add/image/joomlic_iCagenda.png
~ admin/add/image/logo_icagenda.png
- [FOLDER] admin/add/js/
~ admin/config.xml
~ admin/controllers/categories.php
~ admin/controllers/event.php
+ admin/controllers/registration.php
~ admin/helpers/icagenda.php
~ admin/liveupdate/liveupdate.php
~ admin/models/event.php
~ admin/models/events.php
~ admin/models/fields/modal/date.php
+ admin/models/fields/modal/evt.php
+ admin/models/fields/modal/evt_date.php
~ admin/models/fields/modal/icalert_msg.php
+ admin/models/fields/modal/iclink_article.php
+ admin/models/fields/modal/iclink_type.php
+ admin/models/fields/modal/iclink_url.php
~ admin/models/forms/event.xml
+ admin/models/forms/registration.xml
+ admin/models/registration.php
~ admin/tables/category.php
~ admin/tables/event.php
+ admin/tables/registration.php
~ admin/views/categories/tmpl/default.php
~ admin/views/event/tmpl/edit.php
~ admin/views/events/tmpl/default.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/info/tmpl/default.php
+ admin/views/registration/tmpl/edit.php
+ admin/views/registration/tmpl/index.html
+ admin/views/registration/view.html.php
~ admin/views/registrations/tmpl/default.php
~ admin/views/registrations/view.html.php
~ admin/views/themes/tmpl/default.php
~ media/scripts/icthumb.php
~ [MODULE][PRO] modules/mod_ic_event_list/css/default_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/css/icrounded_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/helper.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/js/jQuery.highlightToday.js
~ [MODULE] modules/mod_iccalendar/js/jQuery.highlightToday.min.js
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ [PLUGIN] plugins/search/plg_icagenda/icagenda.php
~ script.icagenda.php
~ site/add/css/icagenda.css
~ site/add/css/style.css
~ site/add/elements/icsetvar.php
- [FOLDER] site/add/js/
~ site/helpers/ichelper.php
~ site/helpers/iCicons.class.php
~ site/helpers/icmodel.php
~ site/router.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/default/css/default_component_xsmall.css
~ [THEME PACKS] site/themes/packs/default/css/default_module.css
~ [THEME PACKS] site/themes/packs/default/default_day.php
~ [THEME PACKS] site/themes/packs/default/default_registration.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component_xsmall.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module_small.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_day.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_registration.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/submit/tmpl/default.php


iCagenda 3.3.2 <small style="font-weight:normal;">(2014.03.17)</small>
================================================================================
! [PLUGIN] New plugin iCagenda search, enables searching in events.
- Removed : option 'All options' (by individual date and for all period) in 'Registration type' (not logical).
# [MEDIUM] Fixed : Not displaying singles dates in registration form.
# [LOW] Fixed : Not setting default value correctly for new global options: show/hide venue's name, city, country and short description.
# [LOW][THEME PACKS] Fixed : Missing ic-box-date class in ic_rounded xsmall media css file.
# [LOW][MODULE] Fixed : possibility of a notice message related to the jquery checking.

* Changed files in 3.3.2
~ admin/models/forms/event.xml
~ admin/tables/event.php
~ icagenda.xml
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
+ [PLUGIN] plugins/search/plg_icagenda/icagenda.php
+ [PLUGIN] plugins/search/plg_icagenda/icagenda.xml
+ [PLUGIN] plugins/search/plg_icagenda/index.html
+ [PLUGIN][FOLDER] language
~ script.icagenda.php
~ site/add/elements/icsetvar.php
~ site/helpers/icmodel.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component_xsmall.css
~ site/views/list/view.html.php


iCagenda 3.3.1 <small style="font-weight:normal;">(2014.03.14)</small>
================================================================================
+ Added : Global options to show/hide information in list of events (venue's name, city, country, short description).
+ Added : Global options to show/hide day, month and/or year in date box of the list of events.
+ Added : Global option to set HTML filtering in Short Description (All italicized, No HTML or Authorized tags: <br />, <b>, <strong>, <i>, <em>, <u>).
+ Added : Global option to set first day of the week (used when list of weekdays is displayed).
+ [MODULE iC Calendar] Added : Options to select a background color for days with only one event or more than one event.
+ [MODULE iC Calendar] Added : HTML Filtering Option for Short Description in tooltip.
~ Changed : redirect to login page if user has no access to submission form or is not logged-in.
~ [THEME PACKS] Changed : display order of Venue's name, city and country in tooltip of the calendar (now on the same line).
~ [THEME PACKS][ic_rounded] Changed class names for day, month and year in date box.
- [THEME PACKS] Removed, module iC calendar : <i> tags for short description in tooltip.
# [MEDIUM] Fixed : Duplicate display of alert message, and not display of event details, if event not approved, and user logged-in with approval permissions.
# [MODULE iC Calendar][LOW] Fixed : Not displaying events in module calendar on Joomla 2.5, if all categories selected.

* Changed files in 3.3.1
~ admin/config.xml
~ admin/models/registrations.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/info/tmpl/default.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ site/add/elements/icsetvar.php
~ site/helpers/icmodel.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/default/css/default_module.css
~ [THEME PACKS] site/themes/packs/default/default_day.php
~ [THEME PACKS] site/themes/packs/default/default_events.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_day.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_events.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/event.php
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php


iCagenda 3.3.0 <small style="font-weight:normal;">(2014.03.06)</small>
================================================================================
! [Theme Packs] Added media css files for Responsive Design.
! [SQL] Creates table #__icagenda_customfields database to prepare future Custom Fields System.
+ Added : Options to show/hide the fields in Event Submission Form.
+ Added : Option "Contact's email" in Admin notification mailing list for registrations.
+ Added : Filter by Upcoming/Past/Today events (Admin Events List).
+ Added : Filter by event (Admin Registrations List).
+ [MODULE iC Calendar] Added : Multi-selection of categories.
+ [MODULE iC Calendar] Added : Option to select a default font color for calendar.
+ [SQL] Added : 'metadesc' field to store an event meta-description (if not set, uses the new function to generate a short meta-description based on full description (limited to 160 characters to give the best SEO performance).
+ [SQL] Added : 'custom_fields' field to store data from custom fields (not yet available).
~ [Theme Pack] DEFAULT : major changes in event details view (default_event.php) and list view (default_events.php) by removing table tags, and using div to display content. Many class names changed with a leading prefix 'ic-' added to prevent possible conflict of naming with site templates css files.
~ Updated : iCalcreator updated from v2.16.12 to v2.18 (Add to iCal and Outlook).
~ Changed : limited length for url when adding an event to Yahoo and Google calendar (to prevent errors).
~ Changed : Updating preview of event image in edit admin when mouseover preview link.
~ Changed : Removal of the 404 block in order to prevent double display of an error page (depending of the site template used).
~ [SEO] Changed and enhanced : meta title and description are improved, better filtering, and give the best possible SEO performance.
~ [PRO][MODULE iC Event List] Changed : Using user timezone or if not set, Joomla server time zone, to set today time.
# [HIGH] Security : Fixed access to registration form when an event is unpublished or finished (prevents spamming).
# [MEDIUM] Fixed : conflict with module login, when a user log-in or log-out on the event details view, if 'add to cal' activated (loading iCal/outlook .ics file).
# [MEDIUM] Fixed : redirect to login page if user has no access to registration form and event details page (if direct visit to this page).
# [LOW] Fixed : not sending if missing space after comma, in custom list of emails for notification email.
# [LOW] Fixed : add to outlook calendar if no end date.
# [LOW] Fixed : Error introduced in a previous version with 'add to cal' function, concerning Windows live and yahoo calendars (url broken).
# [LOW] Fixed : Error to get show_page_heading from menu, when not set.
# [LOW] Fixed : conflict of 'date' variable between event details view and calendar (renamed 'iccaldate' in calendar).
# [LOW] Fixed : Error in setting next date if only one date (and/or only sunday) selected as weekday (period events).
#  Many minor bugs fixed, and many code improvement.

* Changed files in 3.3.0
~ admin/config.xml
~ admin/models/category.php
~ admin/models/event.php
~ admin/models/events.php
~ admin/models/forms/event.xml
~ admin/models/mail.php
~ admin/models/registrations.php
~ admin/sql/install.mysql.utf8.sql
~ admin/sql/uninstall.mysql.utf8.sql
~ admin/tables/event.php
~ admin/views/categories/tmpl/default.php
~ admin/views/event/tmpl/edit.php
~ admin/views/events/tmpl/default.php
~ admin/views/events/view.html.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/info/tmpl/default.php
~ admin/views/registrations/tmpl/default.php
~ admin/views/registrations/view.html.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ script.icagenda.php
~ site/add/css/icagenda.css
~ site/add/css/style.css
~ site/add/elements/icsetvar.php
~ site/helpers/iCalcreator.class.php
~ site/helpers/ichelper.php
~ site/helpers/iCicons.class.php
~ site/helpers/icmodel.php
+ site/helpers/media_css.class.php
~ site/models/list.php
~ site/models/submit.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
+ [THEME PACKS] site/themes/packs/default/css/default_component_large.css
+ [THEME PACKS] site/themes/packs/default/css/default_component_medium.css
+ [THEME PACKS] site/themes/packs/default/css/default_component_small.css
+ [THEME PACKS] site/themes/packs/default/css/default_component_xsmall.css
~ [THEME PACKS] site/themes/packs/default/css/default_module.css
+ [THEME PACKS] site/themes/packs/default/css/default_module_large.css
+ [THEME PACKS] site/themes/packs/default/css/default_module_medium.css
+ [THEME PACKS] site/themes/packs/default/css/default_module_small.css
+ [THEME PACKS] site/themes/packs/default/css/default_module_xsmall.css
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/default/default_events.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
+ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component_large.css
+ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component_medium.css
+ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component_small.css
+ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component_xsmall.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
+ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module_large.css
+ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module_medium.css
+ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module_small.css
+ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module_xsmall.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_events.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/default.xml
~ site/views/list/tmpl/default_vcal.php
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/view.html.php
+ SQL : Adding 'metadesc' column to table #__icagenda_events
+ SQL : Adding 'custom_fields' column to table #__icagenda_registration
+ SQL : Create table #__icagenda_customfields



iCagenda 3.2.13 <small style="font-weight:normal;">(2014.02.01)</small>
================================================================================
! [COMPONENT] Advanced Admin ACL (manage access permissions in iCagenda Backend).
! [MODULE iC Calendar] Enhancement of tooltip display on mobile device. Addition of new options in params of the module. (Thanks doorknob!)
! [MODULE iC Calendar] Beta timezone options removed. A new script, developped by doorknob, is now setting "today" highlight according to visitor local time. You keep option to use Joomla Server Time Zone, and you can set highlight on UTC time zone.
! [GNU/GLP License] Update license to version 3 (or later).
+ Added : Category filtering in administration list of events.
+ Added : Category ordering in administration list of events.
~ [Source Language] Fixed of a few errors in english (en-GB British) source translations files (centre, information...). (Thanks Phil Winsor!)
# [LOW] Fixed : limited length to 2068 bytes of the url to add an event to Google Calendar, to prevent 404 error (url length limitation).
# [LOW] Fixed : missing [...] for short description, in default Theme Pack.
# [LOW] Fixed : attachment field in event form (mouseover).
# [LOW] Fixed : Some global styling error in main css files, and some other needed replacements.
# [LOW] Fixed : Conflict Bootstrap/Google Maps, on Zoom Control and street view button (Joomla 3.2).
# [LOW][THEME PACKS] Fixed : Email cloacking click in 'Default' Theme Pack.
# [LOW][MODULE iC Calendar] Fixed : Missing <tr> tags in week days thead.
# [MEDIUM][MODULE iC Calendar] Fixed : Removed limit of sql request.

* Changed files in 3.2.13
! [GNU/GLP License v3] LICENSE.txt
~ admin/access.xml
~ admin/add/css/icagenda.css
~ admin/helpers/icagenda.php
~ admin/icagenda.php
~ admin/liveupdate/classes/tmpl/nagscreen.php
~ admin/models/events.php
~ admin/models/fields/modal/icalert_msg.php
~ admin/models/fields/modal/icfile.php
~ admin/tables/event.php
~ admin/views/categories/tmpl/default.php
~ admin/views/category/tmpl/edit.php
~ admin/views/event/tmpl/edit.php
~ admin/views/events/tmpl/default.php
~ admin/views/events/view.html.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/info/tmpl/default.php
~ admin/views/mail/tmpl/edit.php
~ admin/views/registrations/tmpl/default.php
~ admin/views/themes/tmpl/default.php
+ media/images/global_options-48.png
+ [Folder] media/images/panel_denied/
+ [MODULE][PRO] modules/mod_ic_event_list/LICENSE.txt
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/icrounded.php
~ [MODULE] modules/mod_iccalendar/helper.php
- [MODULE] modules/mod_iccalendar/js/function.js
- [MODULE] modules/mod_iccalendar/js/function_312.js
- [MODULE] modules/mod_iccalendar/js/function_316.js
- [MODULE] modules/mod_iccalendar/js/ictip.js
+ [MODULE] modules/mod_iccalendar/js/jQuery.highlightToday.js
+ [MODULE] modules/mod_iccalendar/js/jQuery.highlightToday.min.js
+ [MODULE] modules/mod_iccalendar/LICENSE.txt
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ [PLUGIN] plugins/plg_ic_autologin/ic_autologin.php
+ [PLUGIN] plugins/plg_ic_autologin/LICENSE.txt
~ script.icagenda.php
~ site/add/css/icagenda.css
~ site/add/css/style.css
~ site/helpers/ichelper.php
~ site/helpers/icmodel.php
~ site/icagenda.php
~ site/js/icmap.js
- site/js/map.js
~ [THEME PACKS] site/themes/packs/default/css/default_module.css
~ [THEME PACKS] site/themes/packs/default/default_day.php
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/default/default_events.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_day.php
~ site/views/list/tmpl/event.php


iCagenda 3.2.12 <small style="font-weight:normal;">(2014.01.08)</small>
================================================================================
! [MODULE iC Calendar] Disabling by default the function detecting the visitor time zone in module calendar, in order to highlight 'today'. This script function was giving some issue depending of your server, settings, and joomla version. You can now find an option in parameters of the module calendar, where you can use the visitor time zone to set 'today' highlight. If option 'Beta 1 - Visitor Time Zone' selected, when a new visitor comes to your website, it sets a variable containing his time zone in session cookies (so could slow a little when first visit of this user, as it reloads the page one time). And it keeps this information in browser cookies. If option 'Beta 2 - Visitor Time Zone' selected, retrieves the time zone of the visitor each time a page with a calendar module is loaded. If you encounter an error or problem during loading of a page where a module calendar is displayed, select 'Joomla - Server Time Zone' to use the global configuration Time Zone set for your website, and clean your cookies. A better and more advanced solution will be developped to set the detection of visitor time zone.
~ Minor enhancements and corrections in code.
~ [iCicons] Update of iCagenda iCicons font.
# [LOW][MODULE iC Event List][PRO] Fixed : Issue on joomla 2.5 with option 'All' in multi-select of categories resulting in an empty list.
# [LOW] Fixed : missing strip_tags in event.php tmpl view file.

* Changed files in 3.2.12
~ [FOLDER][iCicons] media/icicons
+ media/js/detect_timezone.js
+ media/js/jquery.detect_timezone.js
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ script.icagenda.php
~ site/helpers/icmodel.php
~ site/models/forms/submit.xml
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/default/default_registration.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css


iCagenda 3.2.11 FIX for 3.2.10 <small style="font-weight:normal;">(2014.01.04)</small>
================================================================================
! The function detecting the visitor time zone, in order to highlight 'today', and introduced in version 3.2.10, is now disabled on Joomla 2.5 website due to a possible alert message (no error on Joomla 3). This feature needs more developpement and testing before being introduced again for Joomla 2.5 sites, because of all possible script conflicts that happen on this platform (Joomla 3.2.1 is much more fluid!).
# [HIGH][MODULE iC Calendar] Fixed : Possible issue with calendar (redirecting to home page if script for setting visitor time zone failed).
# [MEDIUM] Fixed : Issue when 'All Dates' selected, and SEF not activated, in opening event details (error 404).

* Changed files in 3.2.11
~ [MODULE] modules/mod_iccalendar/helper.php
~ site/views/list/tmpl/default.php


iCagenda 3.2.10 <small style="font-weight:normal;">(2014.01.03)</small>
================================================================================
+ Added : Options for emails of notification and confirmation - Registration form.
+ [MODULE iC Event List][PRO] Added : 'Upcoming & Today' and 'Today' filter options.
+ [MODULE iC Event List][PRO] Added : Multi-selection of categories.
+ [MODULE iC Calendar] Added : Option to display 'country'.
~ Updated : Translation Credits and Contributors informations.
~ [MODULE iC Calendar] Enhancement : get visitor timezone and set it to session using javascript (client side) to highlight correctly 'today'.
~ [MODULE iC Calendar] Changed : get option 'display time' and global setting 'time format', in tooltip.
# [LOW] Fixed : Filtering of html content of the tip related to 'Add to Cal' button.
# [LOW][MODULE iC Calendar] Fixed : Error on a php 5.2 server, because of the new function to order events per hour in the tooltip (We really recommend switching to minimum php 5.3).
# [LOW][THEME PACKS] Fixed : Link on title in default theme pack.

* Changed files in 3.2.10
~ admin/config.xml
+ admin/models/fields/modal/ictext_placeholder.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/info/tmpl/default.php
~ [MODULE][PRO] modules/mod_ic_event_list/helper.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ script.icagenda.php
~ site/helpers/iCicons.class.php
~ site/helpers/icmodel.php
~ [THEME PACKS] site/themes/packs/default/default_day.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_day.php


iCagenda 3.2.9 <small style="font-weight:normal;">(2013.12.28)</small>
================================================================================
+ Added : Add to calendar icon (iCal, Google, Yahoo, Windows Live and Outlook calendars) in event details view.
+ Added : Print icon in event details view.
+ [MODULE Calendar] Added : Time for each event, in infotip.
+ [MODULE Calendar] Added : Option to used the text 'Close' in the infotip, translated in your current language, or use of a custom value.
+ [MODULE iC Event List][PRO] Added : Option to display list in columns (1 to 4 columns per row).
~ [THEME PACKS] Changed : style class 'content' renamed in 'ic-content'.
~ [THEME PACKS] Removed : Back button from Theme Packs, and added it in view file (to add future options for this button).
# [LOW] Fixed : Missing date in url, when clicking on [...] in short description, if 'All Dates' option selected for the list of events page view.
# [MEDIUM] Fixed : Change og tag description to full description, for sharing on social networks (remove html tags).
# [MEDIUM][MODULES] Fixed : Date display in Event details view after click on module links, was wrong if 'All Dates' option selected for the list of events page view.
# [MEDIUM][MODULE CALENDAR] Fixed : missing closing div in loading html (may in a rare cases give an error in displaying script code).

* Changed files in 3.2.9
~ admin/config.xml
~ admin/models/fields/modal/ictxt_default.php
~ admin/models/fields/modal/icvalue_opt.php
~ admin/views/info/tmpl/default.php
+ [FOLDER] media/images/cal/
~ [MODULE][PRO] modules/mod_ic_event_list/css/default_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/css/icrounded_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/default.php
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/icrounded.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ site/add/css/style.css
~ site/add/elements/icsetvar.php
~ site/controller.php
+ site/helpers/iCalcreator.class.php
~ site/helpers/ichelper.php
+ site/helpers/iCicons.class.php
~ site/helpers/icmodel.php
~ site/models/list.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/default/css/default_module.css
~ [THEME PACKS] site/themes/packs/default/default_day.php
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/default/default_events.php
~ [THEME PACKS] site/themes/packs/default/default_registration.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_day.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_events.php
~ site/views/list/tmpl/default.php
+ site/views/list/tmpl/default_vcal.php
~ site/views/list/tmpl/event.php
~ site/views/list/view.html.php


iCagenda 3.2.8 <small style="font-weight:normal;">(2013.12.15)</small>
================================================================================
! New : Option to display All Dates for each event (or Next/last date of each event as it was before this release).
! [THEME PACKS] Important : New file THEME_events.php to replace THEME_list.php, and new names of data variables.
+ Added : Globalization Date Format file for Ukrainian uk-UA
+ Added : Localization of Google-maps based on the current language of the site. (Thanks SLV!)
~ [MODULE iC Event List][PRO] Changed : Enhancement of Date and Time option.
~ Changed : Enhancement of css of Submission form on J2.5 websites.
# [LOW] Fixed : alone div tag, which can give problem of display of submission form page.
# [LOW] Fixed : issue in style display of category title.
# [LOW] Fixed : category title and description in header of list of events sometimes in double.
# [THEME PACKS][LOW] Fixed : css missing style for category name in header of the list of events.
# [MODULE iC Event List][PRO][LOW] Fixed : Possible issue with module display.
# [MODULE Calendar][MEDIUM] Fixed : Possible issue with module changing months, due to a bug in text "loading...".

* Changed files in 3.2.8
~ admin/add/css/icagenda.css
~ admin/config.xml
+ admin/globalization/uk-UA.php
+ admin/models/fields/modal/icalert_msg.php
~ admin/views/event/tmpl/edit.php
~ [MODULE][PRO] modules/mod_ic_event_list/css/icrounded_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/default.php
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/icrounded.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ script.icagenda.php
~ site/add/css/icagenda.j25.css
- site/add/css/template.css
+ site/add/elements/icsetvar.php
~ site/helpers/ichelper.php
~ site/helpers/icmodel.php
~ site/models/list.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/default/css/default_module.css
~ [THEME PACKS] site/themes/packs/default/default_event.php
+ [THEME PACKS] site/themes/packs/default/default_events.php
- [THEME PACKS] site/themes/packs/default/default_list.php
~ [THEME PACKS] site/themes/packs/default/default_registration.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
+ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_events.php
- [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_list.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_registration.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/default.xml
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/send.php


iCagenda 3.2.7 <small style="font-weight:normal;">(2013.11.23)</small>
================================================================================
~ [MODULE iC calendar] Changed : minor edit in sql request of module iC calendar
# [LOW] Fixed : bug in breadcrumbs event details view.
# [THEME PACKS][LOW] Fixed : possible issue of display break when using ic_rounded theme (depending of your site template).

* Changed files in 3.2.7
~ [MODULE] modules/mod_iccalendar/helper.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_list.php
~ site/views/list/tmpl/event.php


iCagenda 3.2.6 <small style="font-weight:normal;">(2013.11.21)</small>
================================================================================
! New : Option (menu and global) to display Category informations; title and/or description (in header of list of events).
+ Added : Event Details view added to Breadcrumbs.
+ Added : Option Top & Bottom for navigation arrows (list of events).
# [MODULE iC Event List][PRO] Fixed : time not displayed correctly in module iC Event List.
# [MODULE iC Event List][PRO] Fixed : clic to event details views was not working on IE 9 (and under) with icrounded layout.

* Changed files in 3.2.6
~ admin/config.xml
+ admin/models/fields/modal/icmulti_checkbox.php
+ admin/models/fields/modal/icmulti_opt.php
~ admin/models/forms/category.xml
~ admin/views/icagenda/tmpl/default.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/default.php
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/icrounded.php
~ site/helpers/icmodel.php
~ site/models/list.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/default.xml
~ site/views/list/tmpl/event.php
~ site/views/list/view.html.php


iCagenda 3.2.5 <small style="font-weight:normal;">(2013.11.11)</small>
================================================================================
! Terms and Conditions Option added to registration form.
! Design compatibility with Joomla 3.2.0 (admin header html) and enhancements in admin display.
+ [THEME PACKS] Added css and php integration of registration infos in calendar tooltip.
+ [MODULE iC Calendar] Added : Options to display city, name of venue, short description, and registration infos (number of seats, seats available and already registered).
~ [MODULE iC Calendar] Changed : 'today' day is now using joomla timezone (was server timezone before).

* Changed files in 3.2.5
~ admin/add/css/icagenda.css
~ admin/add/css/icagenda.j25.css
~ admin/config.xml
- admin/models/fields/eventtitle.php
+ admin/models/fields/modal/ictxt_article.php
+ admin/models/fields/modal/ictxt_content.php
+ admin/models/fields/modal/ictxt_default.php
+ admin/models/fields/modal/ictxt_type.php
~ admin/models/forms/category.xml
~ admin/models/forms/event.xml
~ admin/views/categories/view.html.php
~ admin/views/category/tmpl/edit.php
~ admin/views/category/view.html.php
~ admin/views/event/tmpl/edit.php
~ admin/views/event/view.html.php
~ admin/views/events/view.html.php
~ admin/views/icagenda/view.html.php
~ admin/views/info/view.html.php
~ admin/views/mail/view.html.php
~ admin/views/registrations/view.html.php
~ admin/views/themes/view.html.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ script.icagenda.php
- site/add/js/address.js
- site/add/js/dates.js
~ [THEME PACKS] site/themes/packs/default/css/default_module.css
~ [THEME PACKS] site/themes/packs/default/default_day.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_day.php
~ site/views/list/tmpl/registration.php


iCagenda 3.2.4 <small style="font-weight:normal;">(2013.10.29)</small>
================================================================================
+ [MODULE iC Event List][PRO] Added : category color as background of the date, in 'default' layout.
~ [MODULE iC Calendar] Changed : authorizes <br /> and <br> html tags in Short Description.
# Fixed : Issue when only sunday selected for period events, all days of the week were displayed.
# Fixed : Not display of Google Maps (blank) after update to last release 3.2.3, when Google Maps Global Options were not set before.
# Fixed : safehtml filter from joomla not working in frontend (skipping html tags, as should not). Filter set now to raw to not skip tags.
# Fixed : issue when access levels to Event Submission Form set to multiple levels (was not filtering access levels as expected).
# [THEME PACKS] Fixed : Issue Alignement of editor buttons in submission form.
# [MODULE iC Event List][PRO] Fixed : wrong display of events in column, due to a conflict in some site templates.

* Changed files in 3.2.4
~ admin/views/event/tmpl/edit.php
~ [MODULE][PRO] modules/mod_ic_event_list/css/default_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/css/icrounded_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/helper.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/default.php
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/icrounded.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ site/helpers/icmodel.php
~ site/models/forms/submit.xml
~ site/models/submit.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ site/views/list/tmpl/default.php
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/view.html.php


iCagenda 3.2.3 <small style="font-weight:normal;">(2013.10.20)</small>
================================================================================
! [THEME PACKS] Updated : enhancements of ic_rounded theme pack, to give a better responsive experience. All table tags have been removed, and replace with div tags, and with addition of @media css styling depending of the device (mobile, tablet, desktop). This new version of ic_rounded theme pack will now have version number respectively to the component version. (to improve tracking updates by users creating their own theme. For your information, a website page is in preparation for you to get more information and documentation about creating and updating a personal Theme Pack, and new features for Theme Pack manager are in brainstorming!).
! No loading of Google Maps scripts, if no address is set, or if global option is set on Hide (to speed up loading when this files are not needed).
+ Added : missing Options Week Days in Frontend Submission Form.
+ [MODULE iC Event List][PRO] Added : Options to display date and time, city, short description, and registration infos (number of seats, seats available and already booked).
~ [THEME PACKS] Changed : enhancements of the back arrow to detect if a previous page has been visited. Code in themes php file is now simplified.
~ Changed : enhancements of Open Graph tags (title, type, image, url, description, sitename).
~ Changed : enhancements and changes in <hn> tags used in iCagenda, to able a better structural hierarchy of list of events. (auto-detect if page heading is displayed in content or not, to set properly the Hn tag).
~ Changed : views php files to speed up loading of iCagenda (list of events, event details and event registration).
# Fixed : Calendar Issue; Bug in some countries about the time change. If a date of an event over a period was the day of the time change, it was generated 2 times. The new feature integrates this setting to not double this day.


* Changed files in 3.2.3
+ admin/models/fields/modal/icvalue_field.php
+ admin/models/fields/modal/icvalue_opt.php
~ [MODULE][PRO] modules/mod_ic_event_list/css/default_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/css/icrounded_style.css
~ [MODULE][PRO] modules/mod_ic_event_list/helper.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE][PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/default.php
~ [MODULE][PRO] modules/mod_ic_event_list/tmpl/icrounded.php
~ [MODULE] modules/mod_iccalendar/helper.php
+ site/helpers/ichelper.php
~ site/helpers/icmodel.php
~ site/models/forms/submit.xml
~ site/models/list.php
~ site/models/submit.php
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/default/css/default_module.css
~ [THEME PACKS] site/themes/packs/default/default_calendar.php
~ [THEME PACKS] site/themes/packs/default/default_day.php
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/default/default_list.php
~ [THEME PACKS] site/themes/packs/default/default_registration.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
+ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_alldates.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_calendar.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_day.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_list.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_registration.php
~ site/views/list/tmpl/default.php
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/send.php


iCagenda 3.2.2 <small style="font-weight:normal;">(2013.10.10)</small>
================================================================================
! [iCicons] Use of integrated vector icons 'iCicons' designed for iCagenda (will evolve!).
# Fixed : List of dates in registration form (was not filtering by weekdays).
# [iCicons] Fixed : Android not display of arrows in ascii code (calendar, back button, back/next navigation).
# [iCicons] Fixed : Iphone/Ipad, arrows were not clickable (calendar, back button, back/next navigation).
# Fixed : ACL access levels filtering for events in front-end.
# Fixed : Request of Itemid in submit form.
~ Changed : better filtering of Approval access.
~ Changed : clean-up of some php functions, and sql request in frontend.
~ [THEME PACKS] Changed : enhancements of module css, and adding vector icon for back button.

* Changed files in 3.2.2
~ admin/views/events/tmpl/default.php
~ icagenda.xml
~ [MODULE] modules/mod_iccalendar/helper.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.php
~ [MODULE] modules/mod_iccalendar/mod_iccalendar.xml
~ site/helpers/icmodel.php
~ site/models/submit.php
~ [THEME PACKS] site/themes/default.xml
~ [THEME PACKS] site/themes/ic_rounded.xml
~ [THEME PACKS] site/themes/packs/default/css/default_module.css
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php
+ [FOLDER] media/icicons/
+ [FOLDER] media/icicons/fonts/
+ media/icicons/fonts/iCicons.eot
+ media/icicons/fonts/iCicons.svg
+ media/icicons/fonts/iCicons.ttf
+ media/icicons/fonts/iCicons.woff
+ media/icicons/lte-ie7.js
+ media/icicons/style.css


iCagenda 3.2.1 <small style="font-weight:normal;">(2013.10.07)</small>
================================================================================
! First Stable release with 'Submit an Event' feature. For Users of the free version, see all the Release Notes of previous RC versions (available for Pro).
~ Changed : Use of DATE_FORMAT_LC3 in list of events, admin (to get date in Russian on windows server).
# Fixed : Remove nowrap css class attribute, to prevent not wrapping to the next line for long title (this is solved in iCagenda, but you may have the same problem in Joomla 3 articles. Proposal of modification added on Joomla core Github).
# Fixed : Error message when updating from an older version, if category filter was set to one category (new option multiple-categories filtering).

* Changed files in 3.2.1
~ admin/views/events/tmpl/default.php
~ site/helpers/icmodel.php
~ site/models/list.php


iCagenda 3.2.0 RC4 <small style="font-weight:normal;">(2013.10.04)</small>
================================================================================
! Added : New option, Multi-selection of categories, in parameters of the menu link to list of events.
! Changed : Updated Google Maps API to V3 https
+ Added : Notification email to a user when his event submitted has been approved by a manager.
+ Added : Redirect to login page if Approval Manager is not connected on event details page (replacing 404 page).
+ Added : New icons for 'Approve this event' (J2.5 using icons, and J3 using icomoon).
+ Added : New tooltip script for manager icons.
+ Added : Router SEF for Submit an Event.
# [LOW] Bug : inserting an extra number data at the end of the footer text line, in notification email send to Approval managers.
# [LOW] Bug : Number of events in header was not well set, when an Approval Manager is logged-in.
# [LOW] Display : Display of info tooltip when Phone Field not shown in registration form.
# [MEDIUM] Bug : display of 'sunday', when no days of the week selected for a period event, in event details view.
~ [THEME PACKS] Changed : Manager Icons are removed from theme packs (to prevent not display in personal theme pack) and added in event.php file.
~ Changed : Attachment opens now in a new window (target blank).

* Changed files in 3.2.0 RC4
~ admin/config.xml
~ admin/models/fields/modal/cat.php
+ admin/models/fields/modal/multicat.php
~ admin/models/forms/event.xml
~ admin/views/event/tmpl/edit.php
~ admin/views/events/tmpl/default.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/info/tmpl/default.php
~ icagenda.xml
~ site/add/css/style.css
~ site/helpers/icmodel.php
~ site/models/forms/submit.xml
~ site/models/list.php
~ site/models/submit.php
~ site/router.php
~ [THEME PACKS] site/themes/default.xml
~ [THEME PACKS] site/themes/ic_rounded.xml
~ [THEME PACKS] site/themes/packs/default/css/default_component.css
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/default/default_list.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_list.php
~ site/views/list/tmpl/default.xml
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php
~ site/views/list/view.html.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/send.php
~ site/views/submit/view.html.php
+ [FOLDER] media/css/
+ media/css/tipTip.css
+ [FOLDER] media/css/manager/
+ media/images/manager/approval_16.png
+ [FOLDER] media/js/
+ media/js/jquery.tipTip.js



iCagenda 3.2.0 RC3 <small style="font-weight:normal;">(2013.09.26)</small>
================================================================================
! Changes in the display of Global Options (added General Settings Tab)
! Fixed : important issue in notification emails send to managers authorized to approve events (due to a bug if user is depending of more than one user groups)
! Changed : Approval can be processed directly in Frontend, at event preview page.
+ Added : Check if managers with Approval permissions are Enabled and Activated.
+ Added : Option to select Template in menu-item link 'Submit an Event'.
+ Added : Global option to enable or disable auto login in url links included in notification emails.
+ Added : implemented Page Header and page class suffix in 'Submit an Event' page.
~ Changed : Events submitted in Frontend by a user (manager) belonging to an authorized group will be automatically approved.
~ Changed : Back button in event details view return to list of events ( replace history.go(-1) ).

* Changed files in 3.2.0 RC3
+ admin/add/elements/desc.php
~ admin/config.xml
~ admin/models/forms/event.xml
~ script.icagenda.pro.php
~ site/helpers/icmodel.php
~ site/models/forms/submit.xml
~ site/models/list.php
~ site/models/submit.php
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ site/views/list/tmpl/registration.php
~ site/views/submit/tmpl/default.php
~ site/views/submit/tmpl/default.xml
~ site/views/submit/tmpl/send.php
~ site/views/submit/view.html.php


iCagenda 3.2.0 RC2 <small style="font-weight:normal;">(2013.09.22)</small>
================================================================================
# Fixed : Access Permissions to 'Submit an Event' form (missing global option).
+ Added : Options to customize the content when a user access to the 'Submit an Event' page, and this user is not connected, or connected but does not have sufficient rights.

* Changed files in 3.2.0 RC2
~ admin/config.xml
+ admin/models/fields/modal/ictext_content.php
+ admin/models/fields/modal/ictext_type.php
~ site/helpers/icmodel.php
~ site/models/list.php
~ site/views/submit/tmpl/default.php


iCagenda 3.2.0 RC <small style="font-weight:normal;">(2013.09.20)</small>
================================================================================
! NEW : Menu Type to 'Submit an Event' in frontend.
! NEW : Selection of days of the week for period events (additional options to come for dates settings!).
! NEW : Plugin iCagenda Autologin.

* Changed files in 3.2.0 RC
~ admin/config.xml
~ admin/models/event.php
~ admin/models/events.php
+ admin/models/fields/modal/tos_article.php
~ admin/models/fields/modal/tos_content.php
+ admin/models/fields/modal/tos_default.php
+ admin/models/fields/modal/tos_type.php
~ admin/tables/event.php
~ admin/views/event/tmpl/edit.php
~ [MODULE PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [MODULE] modules/mod_iccalendar/helper.php
~ script.icagenda.php
~ site/helpers/icmodel.php
~ site/models/list.php
~ site/models/submit.php
~ [THEME PACKS] site/themes/default.xml
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/default/default_list.php
~ [THEME PACKS] site/themes/ic_rounded.xml
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_list.php
+ site/views/submit/tmpl/default.php
+ site/views/submit/tmpl/default.xml
+ site/views/submit/tmpl/send.php
+ site/views/submit/view.html.php
+ [PLUGIN] plugins/plg_ic_autologin/ic_autologin.php
+ [PLUGIN] plugins/plg_ic_autologin/ic_autologin.xml
+ SQL : Adding 'daystime' column to table icagenda_events


iCagenda 3.1.13 <small style="font-weight:normal;">(2013.09.20)</small>
================================================================================
# Fixed : display in frontend of the fake date 30 november 1999, if no single date is set.

* Changed files in 3.1.13
~ site/helpers/icmodel.php


iCagenda 3.1.12 <small style="font-weight:normal;">(2013.09.17)</small>
================================================================================
# Fixed : A problem with the control of the upcoming date for events over a period (unpublished event and message 'no valid date'). This bug is present since version 3.1.5, and rarely appeared.
# Fixed : conflict CSS days font color in calendar module with some Shape5 templates.

* Changed files in 3.1.12
~ site/helpers/icmodel.php
~ [THEME PACKS] site/themes/default.xml
~ [THEME PACKS] site/themes/ic_rounded.xml
~ [THEME PACKS] site/themes/packs/default/css/default_module.css
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css


iCagenda 3.1.11 <small style="font-weight:normal;">(2013.09.13)</small>
================================================================================
# Fixed : Italian bug in translation files, responsible of missing features in event edit (admin).
# Fixed : Error mktime when saving a new event (due to no filling of single dates). A fix should update in the same way events with this issue in the frontend.

* Changed files in 3.1.11
~ admin/models/fields/modal/date.php
~ admin/views/event/tmpl/edit.php
~ site/helpers/icmodel.php


iCagenda 3.1.10 <small style="font-weight:normal;">(2013.09.12)</small>
================================================================================
+ added : control if allow_url_fopen and GD are enabled (thumbnails generator)
+ added : files to prepare the next release with Submit an Event feature!
+ added : Approval option in event edit (will be operating in release 3.2!).
~ Changed : new dates control when saving an event, display now an alert message for new event, and block saving of a new event if no valid date.
~ Changed : enhancement of period datepicker (not possible now to have end date before start date)
# Fixed : not generation of thumbs when extension of a file in caps.
# MODULE iC calendar : Fixed possible conflicts due to div tags enclosed within scripts (rare conflict, manifested by the appearance of a part of the script on the page, and the non-functioning of the calendar).
# THEME IC_ROUNDED : display of next date (Time 2 times), list of events.

* Changed files in 3.1.10
~ admin/add/js/icdates.js
~ admin/config.xml
~ admin/controllers/events.php
+ admin/helpers/html/events.php
~ admin/models/event.php
~ admin/models/fields/modal/date.php
~ admin/models/fields/modal/enddate.php
~ admin/models/fields/modal/startdate.php
+ admin/models/fields/modal/tos_content.php
~ admin/models/forms/event.xml
~ admin/tables/event.php
~ admin/views/event/tmpl/edit.php
~ admin/views/events/tmpl/default.php
~ [PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ modules/mod_iccalendar/helper.php
~ modules/mod_iccalendar/mod_iccalendar.php
~ site/add/js/icdates.js
~ site/helpers/icmodel.php
+ site/models/forms/submit.xml
~ site/models/list.php
+ site/models/submit.php
~ [THEME PACKS] site/themes/ic_rounded.xml
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_list.php
+ SQL : Adding 'approval' column to table icagenda_events


iCagenda 3.1.9 <small style="font-weight:normal;">(2013.09.06)</small>
================================================================================
! MODULE iC calendar : possibility now to publish many calendars on a single page.
+ Added : Extra-control if mime-type of the event's image is correct (in order to process thumbnails creation).
+ Added : Complete or not form fields 'Name' and 'Email' with the profile information of a Joomla user connected, in registration form.
+ Added : Option to enable or disable the thumbnail generator.
+ Added : 'Notes' field text area in Registration form (set disabled as default).
+ Added : Option Show/Hide 'Notes' in registration form.
+ Added : Option Show/Hide 'Phone' in registration form.
+ Added : Information and control of folder creation used by iCagenda (thumbnails, attachments).
~ THEME PACKS : version 2.0 (default and ic_rounded).
~ Changed : period of dates with start date the same day than end date is now displayed as 'date start time - end time' (eg. 23 April 2013 10:00-19:00)
~ Changed : list of date formats was without <optgroup> infos in Joomla 3
# MODULE iC calendar : Fixed, Tooltip Close X button was not working on Apple mobile devices.
# Fixed : bugs in thumbnails generator if ROOT/images folder doesn't exist. Solve an issue if path to images is not 'images'.

* Changed files in 3.1.9
~ admin/config.xml
~ admin/models/event.php
~ admin/models/fields/iclist/globalization.php
~ admin/models/fields/modal/enddate.php
~ admin/models/fields/modal/startdate.php
~ admin/models/forms/event.xml
~ admin/models/registrations.php
~ admin/tables/event.php
~ admin/views/event/tmpl/edit.php
~ admin/views/events/tmpl/default.php
~ admin/views/registrations/tmpl/default.php
~ media/scripts/icthumb.php
~ [PRO] modules/mod_ic_event_list/mod_ic_event_list.php
~ [PRO] modules/mod_ic_event_list/mod_ic_event_list.xml
+ modules/mod_iccalendar/helper.php
~ modules/mod_iccalendar/mod_iccalendar.php
~ modules/mod_iccalendar/mod_iccalendar.xml
~ script.icagenda.php
- site/helpers/icmodcalendar.php
~ site/helpers/icmodel.php
~ site/models/list.php
~ [THEME PACKS] site/themes/default.xml
~ [THEME PACKS] site/themes/ic_rounded.xml
~ [THEME PACKS] site/themes/packs/default/default_event.php
~ [THEME PACKS] site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_day.php
~ [THEME PACKS] site/themes/packs/ic_rounded/ic_rounded_event.php
~ site/views/list/tmpl/registration.php
~ site/views/list/view.html.php
+ SQL : Adding 'created_by_email' column to table icagenda_events
+ SQL : Adding 'weekdays' column to table icagenda_events
+ SQL : Adding 'notes' column to table icagenda_registration


iCagenda 3.1.8 <small style="font-weight:normal;">(2013.08.30)</small>
================================================================================
# Fixed : Error message in liveupdate (developped by Nicholas from Akeeba) to work under php 5.2. I've added a php control to be able to load storage.php file. But, we truly recommend every user to upgrade their php version to a minimum of 5.3, as recommended by Joomla core, and as minimum to be able to install Joomla 3. In the future, you can encounter other such issue, or error message, if you're still in a PHP version lower than 5.3.
+ Added : Alert Message in control panel of the component, if PHP version is lower than 5.3.

* Changed files in 3.1.8
~ admin/liveupdate/classes/storage/storage.php
~ admin/views/icagenda/tmpl/default.php


iCagenda 3.1.7 <small style="font-weight:normal;">(2013.08.29)</small>
================================================================================
+ Added : Created_by filter in list of registered users (admin).
+ Added : Option to use php function checkdnsrr in registration form, to check if email provider is valid (this option is now disabled by default).
+ Added : Options for event details view: show/hide dates, Google Maps, information... and set access level for some.
+ Added : Options to order by dates list of single dates, and display a vertical or horizontal list.
+ Added : Option for registration form : auto-filled name or username, in name's form field (was only name before).
+ MODULE iC calendar : Option to display only start date in the calendar, in case of an event over a period.
~ MODULE iC calendar : Changes in script code of function.js file to prevent some conflict.
~ Changed : Search in registrations list extended: username, name, email, date, phone, people... (only search in Title before this release)
~ Changed : Default value is now set to "by individual date" in 'Registration Type' field.
~ Changed : Upgraded files of LiveUpdate by Akeeba, updates system integrated in iCagenda.
# Fixed : sending notification email to author of an event, when new registration. Fixed of [AUTHOREMAIL] tag.
# Fixed : Error Debug of Google Maps (icmap.js).

* Changed files in 3.1.7
~ admin/config.xml
~ admin/liveupdate/ (All php files of this folder updated)
+ admin/models/fields/modal/checkdnsrr.php
~ admin/models/forms/event.xml
~ admin/models/registrations.php
~ admin/views/icagenda/tmpl/default.php
~ admin/views/registrations/tmpl/default.php
~ modules/mod_iccalendar/js/function.js
~ modules/mod_iccalendar/mod_iccalendar.xml
~ site/helpers/icmodcalendar.php
~ site/helpers/icmodel.php
~ site/js/icmap.js
~ site/themes/packs/default/default_event.php
~ site/views/list/tmpl/registration.php


iCagenda 3.1.6 <small style="font-weight:normal;">(2013.08.20)</small>
================================================================================
# Fixed : NextDate control when event set on a period in the future.
+ Added : Control of time when event with a date in a period the same as a single date.
+ Added : On windows server and php version < 5.3, disable check function if provider of an email address during registration is valid, as checkdnsrr is implemented on windows server only since php 5.3.0

* Changed files in 3.1.6
~ site/helpers/icmodel.php


iCagenda 3.1.5 Security Release and enhancements! <small style="font-weight:normal;">(2013.08.19)</small>
================================================================================
! Security Release : fixed a XSS vulnerability discovered by Stefan Horlacher from Compass Security AG (www.csnc.ch) (many thanks Stefan to keep the web clean and secured!). Another issue was resolved, discovered by Giusebos, which allowed sending spam to the administrator and the creator of the event, using cookies via registration form. And that's not all! As we always want to add much more security, some filtering enhancements have been added to the registration form (see below).
! Change : Now, when an event over a period with an end date and its time set to 00:00:00, this end date is displayed in frontend (list of events, and modules).
+ Added : New options in filtering events in menuitem. Now you can display all events, upcoming events, past events, events of the day and upcoming, or today's events.
+ Added : Page 404 when event not found.
+ Added : Enhancement of Email control during registration. Test if provider is valid.
+ Added : Test of the Name during registration. Now, a name cannot start with a number and cannot contain any of the following characters: / \ < > "_QQ_" [ ] ( ) " ; = + &.
+ Added : Control in front-end if dates of events are valid (control was before only in admin edit)
# Fixed : was counted archived events in header of list of events, and should not.
# Fixed : if end time is lower or equal to start time of an event over a period, end date is displayed.
# Fixed : Author name and username were not correctly displayed in admin events list, and now display correctly the user selected in 'created by'.

* Changed files in 3.1.5
~ admin/models/events.php
~ admin/tables/event.php
~ admin/views/events/tmpl/default.php
~ site/helpers/icmodcalendar.php
~ site/helpers/icmodel.php
~ site/views/list/tmpl/default.xml
~ site/views/list/tmpl/event.php
~ site/views/list/tmpl/registration.php


iCagenda 3.1.4 <small style="font-weight:normal;">(2013.08.13)</small>
================================================================================
# Fixed : bug in function for detecting wrong dates entered by user, which was not always working as expected, depending of time setting in joomla config
# Fixed : change in function for globalized date format of month and of day, to prevent some errors due to locale (Russian...)
# Fixed : Not sending notification email to the registered user (if his email address is entered and required)
+ Added : Control of event ID to prevent spamming emails to administrator by a robot (notification email admin)
~ Changed : Translation of Date in current language (admin - list of events)

* Changed files in 3.1.4
~ admin/tables/event.php
~ admin/views/events/tmpl/default.php
~ site/helpers/icmodcalendar.php
~ site/helpers/icmodel.php
~ site/themes/packs/default/css/default_module.css
~ site/themes/packs/ic_rounded/css/ic_rounded_module.css


iCagenda 3.1.3 <small style="font-weight:normal;">(2013.08.09)</small>
================================================================================
# Fixed : global option to hide the participants list not working properly
# Fixed : notice message above registration option field, in event edit
~ MODULE iC calendar : changed, access levels control, to speed up loading of pages with calendar
+ MODULE iC calendar : loading picture when charging a new month

* Changed files in 3.1.3
~ admin/models/fields/modal/ph_regbt.php
~ modules/mod_iccalendar/js/function.js
~ modules/mod_iccalendar/mod_iccalendar.php
~ site/helpers/icmodcalendar.php
~ site/helpers/icmodel.php
~ site/themes/packs/default/css/default_module.css
~ site/themes/packs/ic_rounded/css/ic_rounded_module.css
~ (added) site/themes/packs/default/images/ic_load.png
~ (added) site/themes/packs/ic_rounded/images/ic_load.png


iCagenda 3.1.2 <small style="font-weight:normal;">(2013.08.05)</small>
================================================================================
! Important editing of thumbnails generator (List of events in admin, Calendar module, and Event List module). Now, file renaming for thumbnails (remove all special caracters to get a clean url for image), and copy of distant pictures (to prevent broken link). Accepted as image extensions (File Types) for event image : jpg, jpeg, png, gif, bmp
# Fixed : Slow change of month of the calendar (thumbnail generator error function)
# Fixed : Slow display of events in module iC Event List (Pro Version)
~ changed : [J3 issue] jQuery UI version in admin, from 1.9.2 to 1.8.23 to prevent a conflict with description tooltip (appeared since joomla 3.1.4)

* Changed files in 3.1.2
~ admin/views/event/tmpl/edit.php
~ admin/views/events/tmpl/default.php
~ media/scripts/icthumb.php
~ script.icagenda.php
~ site/helpers/icmodcalendar.php


iCagenda 3.1.1 <small style="font-weight:normal;">(2013.07.29)</small>
================================================================================
# Fixed : Wrong filtering of Viewing Access Levels in list of events page
# Fixed : error in modules (front-end), when url to image is broken or invalid
~ changed : url of image when sharing on facebook (other enhancements planned)

* Changed files in 3.1.1
~ admin/views/icagenda/view.html.php
~ script.icagenda.php
~ site/helpers/icmodcalendar.php
~ site/helpers/icmodel.php
~ site/views/list/tmpl/event.php


iCagenda 3.1.0 <small style="font-weight:normal;">(2013.07.26)</small>
================================================================================
! New : Automatic thumbnails generator in modules (some options, and enhancements will be added later in theme packs)
# Fixed : Issues with J3 after upgrade from joomla 3.1.x to 3.1.4 (error 500 default layout missing, and JFile not found)
# Fixed : not sending admin notification email (error in 3.0.1 and 3.0 pre-releases)
# Fixed : No updating of Next Date when menu set to Upcoming Events
# Fixed : participant slide effect and display options not working
+ Added : Global Option for email field in frontend registration (required or not)
~ many code review

* Changed files in 3.1.0
~ admin/config.xml
~ admin/models/categories.php
~ admin/models/fields/modal/ph_regbt.php
~ admin/tables/event.php
~ admin/views/events/tmpl/default.php
~ admin/views/icagenda/view.html.php
~ media/scripts/icthumb.php
~ script.icagenda.php
~ site/helpers/icmodcalendar.php
~ site/helpers/icmodel.php
~ site/models/list.php
~ site/themes/packs/default/default_event.php
~ site/themes/packs/default/css/default_component.css
~ site/themes/packs/ic_rounded/ic_rounded_event.php
~ site/themes/packs/ic_rounded/css/ic_rounded_component.css
~ site/views/list/tmpl/registration.php


iCagenda 3.0.1 <small style="font-weight:normal;">(2013.07.04)</small>
================================================================================
# Fixed : auto-play of the tutorial video on Chrome and Safari (the video should not autoplay)
# Fixed : missing admin pagination in categories list
# Fixed : buttons display over the datepicker (time show/hide button activated)

* Changed files in 3.0.1
~ admin/add/css/jquery-ui-1.8.17.custom.css
~ admin/views/categories/tmpl/default.php
~ admin/views/categories/view.html.php
~ admin/views/event/tmpl/edit.php
~ admin/views/event/view.html.php


iCagenda 3.0 RC <small style="font-weight:normal;">(2013.06.30)</small>
================================================================================
# Fixed : Thumbnail generator in events list admin : error when using a distant url
# Fixed : Position and zooming in admin, in events created before update
# Fixed : Colors of options buttons in event admin edit : not always visible, in events created before update
# Fixed : Theme ic_rounded : problem of display with long title
+ Added : Custom text option for registration button
+ Added : Control if link to event picture is valid, in admin
~ updated : display in Global Options of the component and modules


iCagenda 3.0 beta 1 <small style="font-weight:normal;">(2013.06.09)</small>
================================================================================
! First beta version compatible with Joomla 3 and Joomla 2.5

* Changed files in 3.0
! Given that this new version brings compatibility with Joomla 3, all php files were reviewed to allow dual Joomla 2.5 / 3.x compatibility. Other files were also reviewed, with a major overhaul of logic and graphic structure of iCagenda. The list of modified files is reset with this new version 3.0 of iCagenda and the list of modified files will be detailed again from future release 3.0.1


iCagenda v2 ChangeLog <small style="font-weight:normal;">(2012.12.31 > 2013.05.29)</small>
? <a href="http://icagenda.joomlic.com/docs/changelog/87-v2-changelog" target="_blank" style="color:#fff">http://icagenda.joomlic.com/docs/changelog/87-v2-changelog</a>

iCagenda v1 ChangeLog <small style="font-weight:normal;">(2012.08.07 > 2012.08.29)</small>
? <a href="http://icagenda.joomlic.com/docs/changelog/89-v1-changelog" target="_blank" style="color:#fff">http://icagenda.joomlic.com/docs/changelog/89-v1-changelog</a>

;
utilities/theme/theme.php000060400000010616152455705350011507 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     iCagenda
 * @subpackage  utilities
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-07-13
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * class icagendaTheme
 */
class icagendaTheme
{
	/**
	 * Function to Check Theme Packs Compatibility
	 *
	 * @return	list of Incompatible Theme Packs
	 *
	 * @since	3.4.0
	 */
	static public function checkThemePacks()
	{
		// Check Theme Packs Compatibility
		icagendaTheme::checkIncompatibleThemePacks('CUSTOM_FIELDS',
													'event',
													'COM_ICAGENDA_TITLE_CUSTOMFIELDS',
													'http://www.icagenda.com/theme-pack-upgrade/3-4-0-add-custom-fields');

		icagendaTheme::checkIncompatibleThemePacks('FEATURES_ICONS',
													'events',
													'COM_ICAGENDA_TITLE_FEATURES',
													'http://www.icagenda.com/theme-pack-upgrade/3-4-0-add-feature-icons');
	}
	/**
	 * Function to set an alert message if a string is missing in a theme pack
	 *
	 * @params	$string				string to be checked
	 * 			$file_name			file to be tested
	 * 			$functionnality		functionnality not usable with theme pack
	 *
	 * @return	list of Incompatible Theme Packs
	 *
	 * @since	3.4.0
	 */
	static public function checkIncompatibleThemePacks($string, $file_name, $functionnality, $info_url = null)
	{
		$app = JFactory::getApplication();

		// Render list of incompatible Theme Packs
		$list = self::incompatibleList($string, $file_name);

		if ($list)
		{
			if (version_compare(JVERSION, '3.0', 'lt'))
			{
				$im_list	= implode('<br /> - ', $list);
				$setlist	= ' - '.$im_list.' ';
			}
			else
			{
				$im_list	= implode('</li><li>', $list);
				$setlist	= '<ul><li>'.$im_list.'</li></ul>';
			}

			$title = 'COM_ICAGENDA_THEME_PACKS_COMPATIBILITY';
			$description = 'COM_ICAGENDA_THEME_PACKS_INCOMPATIBLE_ALERT';

			// Set Alert Message
			$alert	= array();

			if (count($list) >= 1)
			{
				$alert[]	= '<div style="clear:both">';
				$alert[]	=  '<b>'.JText::_( $title ).'</b>';
				$alert[]	= '<p>';
				$alert[]	=  JText::sprintf( $description, '<strong>' . JText::_($functionnality) . '</strong>' );
				if ($info_url) $alert[]	=  ' <a class="modal" rel="{size: {x: 700, y: 500}, handler:\'iframe\'}" href="'.$info_url.'">' .JText::_( 'IC_MORE_INFORMATION' ). '</a>';
				$alert[]	= '</p>';

				$alert[]	= '<p>';
				$alert[]	= $setlist;
				$alert[]	= '</p>';

				$alert[]	= '</div>';
			}

			$alert_message = implode("\n", $alert);

			$app->enqueueMessage($alert_message, 'warning');
		}
	}

	/*
	 * Function to check if 'string' is defined inside the file THEME_$file.php for each Theme Pack.
	 *
	 * @return	list of incompatible Theme Packs.
	 *
	 * @since	3.4.0
	 */
	static public function incompatibleList($string, $file_name)
	{
		$array_themes = Array();

		$dirname = JPATH_SITE.'/components/com_icagenda/themes/packs';

		if (ini_get('allow_url_fopen') && file_exists($dirname))
		{
			$handle = opendir($dirname);

			while (false !== ($theme = readdir($handle)))
			{
				if ( !is_file($dirname.$theme)
					&& $theme!= '.'
					&& $theme!='..'
					&& $theme!='index.php'
					&& $theme!='index.html'
					&& $theme!='.DS_Store'
					&& $theme!='.thumbs' )
				{
					$day_php = $dirname.'/'.$theme.'/'.$theme.'_day.php';
					$event_php = $dirname.'/'.$theme.'/'.$theme.'_event.php';
					$events_php = $dirname.'/'.$theme.'/'.$theme.'_events.php';
					$registration_php = $dirname.'/'.$theme.'/'.$theme.'_registration.php';

					$array_files_php = array($day_php, $event_php, $events_php, $registration_php);

					$count = 0;

					foreach ($array_files_php AS $file_php)
					{
						if (iCFile::hasString($string, $file_php))
						{
							$count = $count+1;
						}
					}

					if ($count < 1)
					{
						array_push($array_themes, $theme);
					}
				}
			}

			$handle = closedir($handle);
		}

		sort($array_themes);

		if ($array_themes) return $array_themes;

		return false;
	}
}
utilities/theme/index.html000060400000000037152455705350011665 0ustar00<!DOCTYPE html><title></title>
utilities/info/info.php000060400000002430152455705350011164 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     iCagenda
 * @subpackage  utilities
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-05-17
 * @since       3.5.6
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * class icagendaInfo
 */
class icagendaInfo
{
	/**
	 * Function to add comment with iCagenda version (used for faster support)
	 *
	 * @since	3.4.0
	 */
	static public function commentVersion()
	{
		$params		= JComponentHelper::getParams('com_icagenda');
		$release	= $params->get('release', '');
		$icsys		= $params->get('icsys', 'core');

		$icagenda	= 'iCagenda ' . strtoupper($icsys) . ' ' . $release;

		if ($icsys == 'core')
		{
			$icagenda.= ' by Jooml!C - http://www.joomlic.com';
		}

		echo "<!-- " . $icagenda . " -->";

		return true;
	}
}
utilities/info/index.html000060400000000037152455705350011516 0ustar00<!DOCTYPE html><title></title>
utilities/ajax/ajax.php000060400000023371152455705350011153 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     iCagenda
 * @subpackage  utilities
 * @copyright   Copyright (c)2014-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.9 2015-07-30
 * @since       3.5.9
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * class icagendaAjax
 */
class icagendaAjax
{
	/**
	 * Function to return options for date select, depending of event
	 *
	 * @since	3.5.9
	 */
	static public function getOptionsEventDates($view = null, $id = null)
	{
		$jinput		= JFactory::getApplication()->input;
		$regid		= $jinput->get('regid', '0');
		$eventid	= $jinput->get('eventid', '0');

		$data	= JFactory::getApplication()->getUserState('com_icagenda.' . $view . '.data', array());
		$date	= isset($data['date']) ? $data['date'] : '';

		$date_format_global	= JComponentHelper::getParams('com_icagenda')->get('date_format_global', 'Y - m - d');
		$separator			= JComponentHelper::getParams('com_icagenda')->get('date_separator', ' ');

		if ($eventid != 0 && $view == 'mail')
		{
			$db		= JFactory::getDbo();
			$query	= $db->getQuery(true);
			$query->select('r.id as reg_id, r.date AS reg_date, r.period AS reg_period, r.eventid AS reg_eventid, sum(r.people) AS reg_count')
				->from('`#__icagenda_registration` AS r');
			$query->select('e.startdate AS startdate, e.enddate AS enddate, e.weekdays AS weekdays')
				->join('LEFT', $db->quoteName('#__icagenda_events') . ' AS e ON e.id = r.eventid');
			$query->where('r.state = 1');
			$query->where('r.email <> ""');
			$query->group('r.date');
			$query->where('r.eventid = ' . (int) $eventid);
			$db->setQuery($query);

			$result = $db->loadObjectList();
		}
		elseif ($view == 'registration')
		{
			$db	= JFactory::getDbo();

			$query = $db->getQuery(true);
			$query->select('next AS next, dates AS dates,
							startdate AS startdate, enddate AS enddate, weekdays AS weekdays,
							id AS id, state AS state, access AS access, params AS params');
			$query->from('`#__icagenda_events` AS e');
			$query->where(' e.id = ' . $eventid);

			$db->setQuery($query);

			$i = $db->loadObject();

			if ($regid != 0)
			{
				$reg_query	= $db->getQuery(true);
				$reg_query->select('r.id as reg_id, r.date AS reg_date, r.period AS reg_period, r.eventid AS reg_eventid')
					->from('`#__icagenda_registration` AS r');
				$reg_query->where('r.id = ' . (int) $regid);
				$db->setQuery($reg_query);

				$obj = $db->loadObject();

				$reg_date	= $obj->reg_date;
				$reg_period	= $obj->reg_period;
			}
			else
			{
				$reg_date	= '';
				$reg_period	= '';
			}
		}

		$options = '';

		if ($view == 'mail')
		{
			$options.= '<option value="">' . JText::_('COM_ICAGENDA_SELECT_DATE') . '</option>';
			$options.= '<option value="all"';
			$options.= ($date == 'all') ? ' selected="selected"' : '';
			$options.= '>' . strtoupper(JText::_('COM_ICAGENDA_REGISTRATION_ALL_DATES')) . '</option>';
		}
		elseif ($i && $view == 'registration')
		{
			$options.= self::getOptionsAllDates($i, 'registration', $reg_date, $reg_period);
		}

		if (isset($result) && $view == 'mail')
		{
			foreach($result as $r)
			{
				// Full period (no single date selected, supposes registration for full period)
				if ( ! $r->reg_date && $r->reg_period == 0)
				{
					// Check the period if is separated into individual dates
					$is_full_period = ($r->weekdays || $r->weekdays == '0') ? false : true;

					if ($is_full_period
						&& iCDate::isDate($r->startdate)
						&& iCDate::isDate($r->enddate))
					{
						$option_value = '0';
						$option_date = self::formatDate($r->startdate) . ' &#x279c; ' . self::formatDate($r->startdate);
					}
					else
					{
						$option_value	= '0';
						$option_date	= JText::_( 'COM_ICAGENDA_ADMIN_REGISTRATION_FOR_ALL_PERIOD' );
					}
				}

				// All dates of the event (single dates + period)
				elseif ( ! $r->reg_date && $r->reg_period == 1)
				{
					$option_value	= '1';
					$option_date	= JText::_( 'COM_ICAGENDA_ADMIN_REGISTRATION_FOR_ALL_DATES' );
				}

				// One date selected (from single dates or split period into single dates)
				else
				{
					if (iCDate::isDate($r->reg_date))
					{
						$regDate		= iCGlobalize::dateFormat($r->reg_date, $date_format_global, $separator);
						$time			= date('H:i', strtotime($r->reg_date));
						$regTime		= ($time && $time != '00:00') ? ' - ' . $time : '';
					}

					$option_value	= $r->reg_date;

					// Date format (global option).
					// NOTE: Date saved in database with versions before 3.3.8 can not be formatted
					//       Will return a string (date in old format) with double quote.
					$option_date	= iCDate::isDate($r->reg_date) ? $regDate . $regTime : '"' . $r->reg_date . '"';
				}

				$options.= '<option value="' . $option_value . '"';
				$options.= ($date == $option_value) ? ' selected="selected"' : '';
				$options.= '>' . $option_date . ' (&#10003;' . $r->reg_count . ')</option>';
			}
		}

		echo $options;

		Jexit();
	}

	static public function getOptionsAllDates($i, $view = null, $reg_date = null, $reg_period = null)
	{
		$options = '';

		if ($i)
		{
			// Set Event Params
			$eventparam		= new JRegistry($i->params);

			$typeReg		= $eventparam->get('typeReg');

			// Registration type for event is set to "All dates of the event"
			if ($typeReg == '2')
			{
				if ( $reg_period != 1 )
				{
					$options.= '<option value="' . $reg_date . '" selected="selected">' . JText::_('COM_ICAGENDA_SELECT_DATE') . '</option>';
					$options.= '<option value="update"';
					$options.= '>' . JText::_('COM_ICAGENDA_ADMIN_REGISTRATION_FOR_ALL_DATES') . '</option>';
				}
				else
				{
					$options.= '<option value=""';
					$options.= ' selected="selected"';
					$options.= '>' . JText::_('COM_ICAGENDA_ADMIN_REGISTRATION_FOR_ALL_DATES') . '</option>';
				}
			}
			else
			{
				if ( ( ! $reg_date && $reg_period == 1)
					|| ($reg_date && ! iCDate::isDate($reg_date))
					|| ( ! $reg_date && $reg_period == 0)
					|| ( iCDate::isDate($reg_date) && $reg_period == 1) )
				{
					$options.= '<option value="' . $reg_date . '"';
					$options.= ' selected="selected"';
					$options.= '>' . JText::_('COM_ICAGENDA_SELECT_DATE') . '</option>';
				}

				// Declare AllDates array
				$AllDates		= array();

				// Get WeekDays setting
				$WeeksDays		= iCDatePeriod::weekdaysToArray($i->weekdays);

				// If Single Dates, added each one to All Dates for this event
				$singledates	= iCString::isSerialized($i->dates) ? unserialize($i->dates) : array();

				foreach($singledates as $sd)
				{
					if (iCDate::isDate($sd))
					{
						array_push($AllDates, $sd);
					}
				}

				// If Period Dates, added each one to All Dates for this event (filter week Days, and if date not null)
				$perioddates = iCDatePeriod::listDates($i->startdate, $i->enddate);

				if (isset($perioddates)
					&& is_array($perioddates))
				{
					// Check the period if is separated into individual dates
					$is_full_period = ($i->weekdays || $i->weekdays == '0') ? false : true;

					if ($is_full_period
						&& iCDate::isDate($i->startdate)
						&& iCDate::isDate($i->enddate))
					{
						$value_datetime = '';

						$options.= '<option value="' . $value_datetime . '"';

						if ($reg_date == '' && $reg_period != 1)
						{
							$date_exist = true;
							$options.= ' selected="selected"';
						}

						$options.= '>' . self::formatDate($i->startdate) . ' &#x279c; ' . self::formatDate($i->startdate) . '</option>';
					}
					else
					{
						foreach ($perioddates as $Dat)
						{
							if (in_array(date('w', strtotime($Dat)), $WeeksDays))
							{
								// May not work in php < 5.2.3 (should return false if date null since 5.2.4)
								$isValid = iCDate::isDate($Dat);

								if ($isValid)
								{
									$SingleDate = date('Y-m-d H:i', strtotime($Dat));
									array_push($AllDates, $SingleDate);
								}
							}
						}
					}
				}

				// get Time Format
				$timeformat = JComponentHelper::getParams('com_icagenda')->get('timeformat', '1');

				$lang_time = ($timeformat == 1) ? 'H:i' : 'h:i A';

				if ( ! empty($AllDates))
				{
					sort($AllDates);
				}

				foreach($AllDates as $date)
				{
					if (iCDate::isDate($date))
					{
						$value_datetime = date('Y-m-d H:i:s', strtotime($date));

						$options.= '<option value="' . $value_datetime . '"';

						if ($reg_date == $value_datetime)
						{
							$date_exist = true;
							$options.= ' selected="selected"';
						}

						$options.= '>' . self::formatDate($date) . ' - ' . date($lang_time, strtotime($date)) . '</option>';
					}
				}
			}

			return $options;
		}

		return false;
	}


	// Function to get Format Date (using option format, and translation)
	static public function formatDate($date)
	{
		// Date Format Option (Global Component Option)
		$date_format_global	= JComponentHelper::getParams('com_icagenda')->get('date_format_global', 'Y - m - d');
		$format				= ($date_format_global != 0) ? $date_format_global : 'Y - m - d'; // Previous 3.5.6 setting

		// Separator Option
		$separator			= JComponentHelper::getParams('com_icagenda')->get('date_separator', ' ');

		if ( ! is_numeric($format))
		{
			// Update old Date Format options of versions before 2.1.7
			$format = str_replace(array('nosep', 'nosep', 'sepb', 'sepa'), '', $format);
			$format = str_replace('.', ' .', $format);
			$format = str_replace(',', ' ,', $format);
		}

		$dateFormatted = iCGlobalize::dateFormat($date, $format, $separator);

		return $dateFormatted;
	}
}
utilities/ajax/index.html000060400000000037152455705350011506 0ustar00<!DOCTYPE html><title></title>
utilities/categories/index.html000060400000000037152455705350012710 0ustar00<!DOCTYPE html><title></title>
utilities/categories/categories.php000060400000002671152455705350013557 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     iCagenda
 * @subpackage  utilities
 * @copyright   Copyright (c)2014-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-05-12
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * class icagendaCategories
 */
class icagendaCategories
{
	/**
	 * Function to return list of categories
	 *
	 * @access	public static
	 * @param	$state (if not defined, state is published ('1'))
	 * @return	list array of categories
	 *
	 * @since   1.0.0
	 */
	static public function getList($state = null)
	{
		// Preparing connection to db
		$db		= JFactory::getDbo();

		// Preparing the query
		$query	= $db->getQuery(true);
		$query->select('c.color AS color, c.title AS title')
			->from('#__icagenda_category AS c');

		if ($state) $query->where("(c.state = '$state')");

		$db->setQuery($query);
		$list = $db->loadObjectList();

		if ($list)
		{
			return $list;
		}
		else
		{
			return false;
		}
	}
}
utilities/params/index.html000060400000000037152455705350012046 0ustar00<!DOCTYPE html><title></title>
utilities/params/params.php000060400000005135152455705350012051 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     iCagenda
 * @subpackage  utilities
 * @copyright   Copyright (c)2014-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-12-21
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * class icagendaParams
 */
class icagendaParams
{
	/**
	 * Function to encrypt user pro password
	 *
	 * @access	public static
	 * @param	$id - id of the event
	 * @return	list array of access levels, approval and event access status
	 *
	 * @since	3.4.0
	 */
	static public function encryptPassword()
	{
		$params = JComponentHelper::getParams( 'com_icagenda' );
		$icsys = $params->get('icsys', 'core');

		if ($icsys == 'pro')
		{
			jimport('joomla.user.helper');

			$crypt1 = JUserHelper::genRandomPassword(2);
			$crypt2 = JUserHelper::genRandomPassword(2);
			$salt_8 = JUserHelper::genRandomPassword(8);
			$salt_16 = JUserHelper::genRandomPassword(16);
			$salt_32 = JUserHelper::genRandomPassword(32);
			$password = $params->get('password', '');

			$is_crypted = substr_count($password, '$');

			if ($is_crypted != 3 && strlen($password) != 0)
			{
				$encoded = base64_encode($password);

				if (strlen($encoded) > 32)
				{
					$salt1 = $salt_16;
					$salt2 = $salt_8;
				}
				elseif (strlen($encoded) < 32 && strlen($encoded) > 16)
				{
					$salt1 = $salt_16;
					$salt2 = $salt_8;
				}
				else
				{
					$salt1 = $salt_32;
					$salt2 = $salt_16;
				}

				$pass_encoded = '$' . $crypt1 . '$' . $crypt2 . '$' . $salt1 . '.' . $encoded . '/' . $salt2;
//				$_pass = str_replace('/', '.', $pass_encoded);
//				$pass_ex = explode('.', $_pass);
//				$decoded = base64_decode($encoded);
				$password = $pass_encoded;

				// Get the params and set the new values
				$params->set('password', $password);

				// Get a new database query instance
				$db = JFactory::getDBO();
				$query = $db->getQuery(true);

				// Build the query
				$query->update('#__extensions AS a');
				$query->set('a.params = ' . $db->quote((string)$params));
				$query->where('a.element = "com_icagenda"');

				// Execute the query
				$db->setQuery($query);
				$db->query();
			}
		}
	}
}
utilities/customfields/customfields.php000060400000040407152455705350014506 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     iCagenda
 * @subpackage  utilities
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.10 2015-08-25
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * class icagendaCustomfields
 */
class icagendaCustomfields
{
	/**
	 * Function to return list of custom fields depending on the parent form
	 *
	 * @access	public static
	 * @param	$parent_form (1 registration, 2 event edit)
	 * 			$state (if not defined, state is published ('1'))
	 * @return	object list array of custom fields depending on the item ID
	 *
	 * @since   3.4.0
	 */
	static public function getListCustomFields($parent_form, $state = null)
	{
		$filter_state = isset($state) ? $state : 1;

		// Create a new query object.
		$db		= JFactory::getDbo();
		$query	= $db->getQuery(true);
		$query->select('cf.slug AS cf_slug, cf.type AS cf_type, cf.options AS cf_options,
						cf.title AS cf_title, cf.type AS cf_type, cf.required AS cf_required')
			->from('#__icagenda_customfields AS cf')
			->where($db->qn('cf.state') . ' = ' . $db->q($filter_state))
			->where($db->qn('cf.parent_form') . ' = ' . $db->q($parent_form))
			->order('cf.ordering ASC');
		$db->setQuery($query);
		$list = $db->loadObjectList();

		if ($list) return $list;

		return false;
	}

	/**
	 * Function to return list of custom fields depending on the item ID
	 *
	 * @access	public static
	 * @param	$id item ID
	 * 			$parent_form (1 registration, 2 event edit)
	 * 			$state (if not defined, state is published ('1'))
	 * @return	object list array of custom fields depending on the item ID
	 *
	 * @since   3.4.0
	 */
	static public function getList($id, $parent_form = null, $state = null)
	{
		$filter_state = isset($state) ? $state : 1;

		// Create a new query object.
		$db		= JFactory::getDbo();
		$query	= $db->getQuery(true);
		$query->select('cf.slug AS cf_slug, cfd.value AS cf_value, cfd.parent_id AS cf_parent_id, cf.title AS cf_title, cf.required AS cf_required')
			->from('#__icagenda_customfields AS cf')
			->leftJoin($db->qn('#__icagenda_customfields_data') . ' AS cfd'
				. ' ON ' . $db->qn('cfd.parent_id') .' = ' . (int)$id
				. ' AND ' . $db->qn('cf.slug') .' = ' . $db->qn('cfd.slug'))
			->where($db->qn('cf.state') . ' = ' . $db->q($filter_state))
			->where($db->qn('cf.parent_form') . ' = ' . $db->q($parent_form))
			->order('cf.ordering ASC');
		$db->setQuery($query);
		$list = $db->loadObjectList();

		if ($list) return $list;

		return false;
	}

	/**
	 * Function to return a list of filled custom fields depending on the item ID
	 *
	 * @access	public static
	 * @param	$id item ID
	 * 			$parent_form (1 registration, 2 event edit)
	 * 			$state (if not defined, state is published ('1'))
	 * @return	object list array of custom fields not empty depending on the item ID
	 *
	 * @since   3.4.0
	 */
	static public function getListNotEmpty($id, $parent_form = null, $state = null)
	{
		$filter_state = isset($state) ? $state : 1;

		// Create a new query object.
		$db		= JFactory::getDbo();
		$query	= $db->getQuery(true);
		$query->select('cfd.slug AS cf_slug, cfd.value AS cf_value, cfd.parent_id AS cf_parent_id, cf.title AS cf_title')
			->from('#__icagenda_customfields_data AS cfd')
			->leftJoin($db->qn('#__icagenda_customfields') . ' AS cf'
				. ' ON ' . $db->qn('cf.slug') .' = ' . $db->qn('cfd.slug'))
			->where($db->qn('cf.state') . ' = ' . $db->q($filter_state));

		if ($parent_form)
		{
			$query->where($db->qn('cfd.parent_form') . ' = ' . $db->q($parent_form));
		}

		$query->where($db->qn('cfd.parent_id') . ' = ' . (int)$id);
		$query->order('cf.ordering ASC');
		$db->setQuery($query);
		$list = $db->loadObjectList();

		if ($list) return $list;

		return false;
	}

	/**
	 * Return the HTML body of Custom fields for this parent form (parent_id)
	 *
	 * @return HTML fields
	 *
	 * @since	3.4.0
	 */
	static public function loader($parent_form)
	{
		$app = JFactory::getApplication();
		$session = JFactory::getSession();
		$custom_fields = $session->get('custom_fields');

		$customfields = icagendaCustomfields::getCustomfields($parent_form);

		$cf_display = '';

		if ( $customfields )
		{
			foreach ($customfields as $icf)
			{
				if (empty($icf->value)) $icf->value = '';

//				if ($custom_fields) $icf->value = $custom_fields[$icf->slug];
				if ( $app->isSite() )
				{
					$icf->value = isset($custom_fields[$icf->slug]) ? $custom_fields[$icf->slug] : '';
				}

				$options_required = array('list', 'radio');

				// If type is list or radio, should have options
				if ((in_array($icf->type, $options_required) && $icf->options)
					|| ! in_array($icf->type, $options_required))
				{
					$cf_display.= icagendaCustomfields::displayField(
						$icf->type,
						$icf->title,
						$icf->alias,
						$icf->slug,
						$icf->description,
						$icf->value,
						$icf->options,
						$icf->required
					);
				}
			}

			if ($app->isAdmin()) $cf_display.= '<hr>';
		}
		elseif ( $app->isAdmin() )
		{
			$cf_display.= '<div class="alert alert-info">';
			$cf_display.= JText::_('COM_ICAGENDA_CUSTOMFIELDS_NONE');
			$cf_display.= '</div>';
		}
		elseif ( $app->isSite() )
		{
			return false;
		}

		return $cf_display;
	}

	/**
	 * Gets the custom fields for this form
	 *
	 * @return object list
	 *
	 * @since	3.4.0
	 */
	static public function getCustomfields($parent_form)
	{
		$app = JFactory::getApplication();
		$id = $app->input->getInt('id');

		// Get the database connector.
		$db = JFactory::getDbo();

		$list_slugs = array();

		if ($id)
		{
			// Get the query from the database connector.
			$query = $db->getQuery(true);

			// Build the query
			$query->select('id, slug')
				->from($db->qn('#__icagenda_customfields').' AS cf');
			$query->where($db->qn('cf.parent_form').' = ' .$db->q($parent_form));

			// Run Query
			$db->setQuery($query);

			// Invoke the Query
			$all_slugs = $db->loadObjectList();

			// Create array of custom fields slugs for this event
			foreach ($all_slugs as $s)
			{
				$list_slugs[] = '"' . $s->slug . '"';
			}

			$list_slugs = implode(',', $list_slugs);
		}

		// Get the query from the database connector.
		$query = $db->getQuery(true);

		// Build the query
		$query->select('cf.*')
			->from($db->qn('#__icagenda_customfields').' AS cf');

		if ($id && $list_slugs)
		{
			// Build the query
			$query->select('cfd.value AS value')
				->leftJoin($db->qn('#__icagenda_customfields_data') . ' AS cfd'
					. ' ON (' . $db->qn('cfd.parent_id') . ' = ' . (int)$id
					. ' AND ' . $db->qn('cfd.slug') . ' = ' .$db->qn('cf.slug') . ')')
				->where($db->qn('cf.slug').' IN ('.$list_slugs.')');
		}

		$query->where($db->qn('cf.parent_form').' = ' .$db->q($parent_form));
		$query->where($db->qn('cf.state').' = 1');

		$query->order('cf.ordering ASC');

		// Tell the database connector what query to run.
		$db->setQuery($query);

		// Invoke the query.
		if ($db->loadObjectList()) return $db->loadObjectList();

		return false;
	}

	/**
	 * Create the HTML body of the custom fields
	 *
	 * @return object list
	 *
	 * @since	3.4.0
	 */
	static public function displayField($type, $title, $alias, $slug, $description, $value, $options, $required)
	{
		$options_required = array('list', 'radio');

		// If type is list or radio, should have options
		if (in_array($type, $options_required) && ! $options) return false;

		$app = JFactory::getApplication();
		$view = $app->input->get('view');

		$ic_prefix = $app->isSite() ? 'ic-' : '';
		$ic_data = ($app->isSite() && $view != 'registration') ? 'custom_fields' : 'jform[custom_fields]';

		if (empty($value)) $value = '';
// Remove to get session value frontend		$value = $app->isAdmin() ? $value : '';

		$text_required	= $required ? ' required="true"' : '';
		$list_required	= $required ? ' required' : '';
		$radio_required	= $required ? ' required' : '';

		// Required, '*' after label
		$required_icon = $required ? ' *' : '';

		$class_label = ($type == 'radio') ? $ic_prefix . 'control-label' : '';
		$icTip_custom = $description
			? htmlspecialchars('<strong>' . $title . '</strong><br />' . $description . '')
			: '';
		if ($type == 'list' || $type == 'radio') { $is_list = ' ic-select'; } else { $is_list = ''; }

		$cf_fields = '<div class="' . $ic_prefix . 'control-group clearfix" id="' . $alias . '_alias">';
		$cf_fields.= '<div id="' . $alias . '_message"></div>';
		$cf_fields.= '<div class="' . $ic_prefix . 'control-label">';

		// Label
		$label = '<label';

		if ($app->isAdmin())
		{
			if ($class_label || $icTip_custom)
			{
				if ($icTip_custom) $label.= ' title="" data-original-title="'.$icTip_custom.'"';
				$label.= ' class="';
				if ($icTip_custom) $label.= 'hasTooltip';
				if ($icTip_custom && $class_label) $label.= ' ';
				if ($class_label) $label.= $class_label;
				$label.= '"';
			}
		}

		if ($type != 'radio')
		{
			$label.= ' for="' . $slug . '_slug"';
		}

		$label.= '>';
		$label.= $title;

//		if ($type != 'radio')
//		{
			$label.= $required_icon;
//		}

		$label.= '</label>';

		$cf_fields.= $label;
		$cf_fields.= '</div>';

		$cf_fields.= '<div class="' . $ic_prefix . 'controls' . $is_list . '">';

		// Field Type TEXT
		if ($type == 'text')
		{
			$cf_fields.= '<input type="'.$type.'"';
			$cf_fields.= ' class="input-large"';
			$cf_fields.= ' id="' . $slug . '_slug"';
			$cf_fields.= ' name="' . $ic_data . '['.$slug.']"';
			$cf_fields.= ' value="' . $value . '"';
			$cf_fields.= ' placeholder="' . $options . '"';
			$cf_fields.= $text_required;
			$cf_fields.= ' />';
		}

		// Field Type LIST
		elseif ($type == 'list')
		{
//			$cf_fields.= '<select'.$list_required.' id="' . $slug . '" name="' . $ic_data . '['.$slug.']">';
			$cf_fields.= '<select'.$list_required.' type="list" class="select-large" id="' . $slug . '_slug" name="' . $ic_data . '['.$slug.']">';

			$empty_selected = empty($value) ? ' selected="selected"' : '';

//			$cf_fields.= '<option value=""'.$empty_selected.'>- ' . JText::_('IC_SELECT_AN_OPTION') . ' -</option>';
			$cf_fields.= '<option value="">- ' . JText::_('IC_SELECT_AN_OPTION') . ' -</option>';

			$opts_list = str_replace("\n", "##BREAK##", $options);
			$opts_list = explode("##BREAK##", $opts_list);

			foreach ($opts_list as $opts)
			{
				$opt = explode("=", $opts);

				if ($opt[0] && $opt[1])
				{
					if (empty($value))
					{
						$selected = isset($opt[2]) ? ' selected="selected"' : '';
					}
						else
					{
						$selected = '';
					}

					$cf_fields.= '<option value="'.$opt[0].'"';

					if ($value == $opt[0])
					{
						$cf_fields.= ' selected="selected"';
					}

					$cf_fields.= ''.$selected.'>';
					$cf_fields.= $opt[1].'</option>';
				}
			}
			$cf_fields.= '</select>';
		}

		// Field Type RADIO
		elseif ($type == 'radio')
		{
			$cf_fields.= '<fieldset class="' . $ic_prefix . 'radio ' . $ic_prefix . 'btn-group">';

			$opts_list = str_replace("\n", "##BREAK##", $options);
			$opts_list = explode("##BREAK##", $opts_list);

			foreach ($opts_list as $opts)
			{
				$opt = explode("=", $opts);

				if (($opt[0] || $opt[0] == 0) && $opt[1])
				{
					if (empty($value))
					{
						$checked = isset($opt[2]) ? ' checked="checked"' : '';
						$default = $checked ? $ic_prefix . 'btn-success' : '';
					}
					elseif ($value == $opt[0])
					{
						$checked = '';
						$default = $ic_prefix . 'btn-success';
					}
					else
					{
						$checked = '';
						$default = '';
					}

					$class_btn = $app->isSite() ? 'ic-btn ' : '';

					$cf_fields.= '<label class="' . $class_btn . $default . '">';
					$cf_fields.= '<input type="radio"';
					$cf_fields.= ' id="' . $slug . '_slug"';
					$cf_fields.= ' name="' . $ic_data . '[';
					$cf_fields.= $slug;
					$cf_fields.= ']"';
					$cf_fields.= ' value="'.$opt[0].'"';

					if ($value == $opt[0])
					{
						$cf_fields.= ' checked="checked"';
					}

					$cf_fields.= $checked.'/>';
					$cf_fields.= $opt[1].'</label>';
				}
			}

			$cf_fields.= '</fieldset>';
		}

		if ($icTip_custom && $app->isSite())
		{
			$cf_fields.= ' <span class="iCFormTip iCicon-info-circle" title="' . $icTip_custom . '"></span>';
		}

		$cf_fields.= '</div>';
		$cf_fields.= '</div>';

		return $cf_fields;
	}


	/**
	 * Save Custom Fields to the database if at least one is filled
	 * or update existing data from custom fields.
	 *
	 * @since	3.4.0
	 */
	static public function saveToData($custom_fields, $parent_id, $parent_form, $state = 1, $language = '*')
	{
		// Get the database connector.
		$db = JFactory::getDBO();

		if (isset($custom_fields) && is_array($custom_fields))
		{
			foreach ( $custom_fields as $name => $value )
			{
				$customfields_data = new stdClass();
				$customfields_data->slug = $name;
				$customfields_data->value = $value;
				$customfields_data->state = $state;
				$customfields_data->parent_form = $parent_form;
				$customfields_data->parent_id = $parent_id;
				$customfields_data->language = $language;

				$query = $db->getQuery(true)
					->select('id')
					->from($db->qn('#__icagenda_customfields_data'))
					->where($db->qn('slug') . ' = ' . $db->q($customfields_data->slug))
					->where($db->qn('parent_form') . ' = ' . $db->q($customfields_data->parent_form))
					->where($db->qn('parent_id') . ' = ' . $db->q($customfields_data->parent_id));
				$db->setQuery($query);
				$id_exists = $db->loadResult();

				if ( ! $id_exists && $customfields_data->value)
				{
					$db->insertObject( '#__icagenda_customfields_data', $customfields_data, 'id' );
				}
				elseif (empty($customfields_data->value))
				{
					$query = $db->getQuery(true);

					// Delete any empty slug records from the __icagenda_customfields_data table if exists
					$conditions = array(
    					$db->quoteName('parent_id') . ' = ' . $db->quote($customfields_data->parent_id),
    					$db->quoteName('slug') . ' = ' . $db->quote($customfields_data->slug)
					);

					$query->delete($db->quoteName('#__icagenda_customfields_data'));
					$query->where($conditions);

					$db->setQuery($query);
					$db->execute($query);

					if ( ! $db->execute())
					{
						return false;
					}
				}
				else
				{
					$customfields_data->id = $id_exists;
					$db->updateObject('#__icagenda_customfields_data', $customfields_data, 'id');
				}
			}
		}
	}

	/**
	 * Delete Custom Fields from the database
	 * or update existing data from custom fields.
	 *
	 * @since	3.5.6
	 */
	static public function deleteData($parent_id, $parent_form)
	{
		// Get the database connector.
		$db = JFactory::getDbo();

		// Delete any unwanted customfields records from the __icagenda_customfields_data table
		$query = $db->getQuery(true);
		$query->delete($db->qn('#__icagenda_customfields_data'));
		$query->where('parent_id = ' . (int) $parent_id);
		$query->where('parent_form = ' . (int) $parent_form);

		$db->setQuery($query);
		$db->execute($query);

		if ( ! $db->execute())
		{
			return false;
		}

		return true;
	}

	/**
	 * Clean Custom Fields from the database (fix for previous versions)
	 *
	 * @since	3.5.6
	 */
	static public function cleanData($parent_form)
	{
		// Get the database connector.
		$db = JFactory::getDbo();

		// Get Registrations ids
		if ($parent_form == 1)
		{
			$query = $db->getQuery(true)
				->select('id')
				->from($db->qn('#__icagenda_registration'));
			$db->setQuery($query);
			$list = $db->loadColumn();
		}

		// Get Events ids
		elseif ($parent_form == 2)
		{
			// Get Registrations ids
			$query = $db->getQuery(true)
				->select('id')
				->from($db->qn('#__icagenda_events'));
			$db->setQuery($query);
			$list = $db->loadColumn();
		}

		$parent_ids = isset($list) && is_array($list) ? implode(',', $list) : '';

		// Delete any unwanted customfields records from the __icagenda_customfields_data table
		$query = $db->getQuery(true);
		$query->delete($db->qn('#__icagenda_customfields_data'));
		$query->where('parent_form = ' . (int) $parent_form);
		$query->where('parent_id NOT IN (' . $parent_ids . ')');

		$db->setQuery($query);
		$db->execute($query);

		if ( ! $db->execute())
		{
			return false;
		}

		return true;
	}
}
utilities/customfields/index.html000060400000000037152455705350013264 0ustar00<!DOCTYPE html><title></title>
utilities/class/class.php000060400000003322152455705350011511 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     iCagenda
 * @subpackage  utilities
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-06-29
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * class icagendaClass
 */
class icagendaClass
{
	/**
	 * Function to set an alert message if a class from Utilities is not loaded
	 *
	 * @since	3.4.0
	 */
	static public function isLoaded($class = null)
	{
		if (!class_exists($class) && $class)
		{
			$app = JFactory::getApplication();

			$alert_message = JText::sprintf('ICAGENDA_CLASS_NOT_FOUND', '<strong>' . $class . '</strong>') . '<br />'
							. JText::_('ICAGENDA_IS_NOT_CORRECTLY_INSTALLED');

			// Get the message queue
			$messages = $app->getMessageQueue();

			$display_alert_message = false;

			// If we have messages
			if (is_array($messages) && count($messages))
			{
				// Check each message for the one we want
				foreach ($messages as $key => $value)
				{
					if ($value['message'] == $alert_message)
					{
						$display_alert_message = true;
					}
				}
			}

			if (!$display_alert_message)
			{
				$app->enqueueMessage($alert_message, 'error');
			}

			return false;
		}
		else
		{
			return true;
		}
	}
}
utilities/class/index.html000060400000000037152455705350011670 0ustar00<!DOCTYPE html><title></title>
utilities/form/index.html000060400000000037152455705350011526 0ustar00<!DOCTYPE html><title></title>
utilities/form/form.php000060400000032521152455705350011210 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     iCagenda
 * @subpackage  utilities
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.10 2015-08-14
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * class icagendaForm
 */
class icagendaForm
{
	/**
	 * Function to return script validation for a form used in iCagenda
	 *
	 * @access	public static
	 * @param	$parent_form form type ID ('1' registration, '2' event edit or new)
	 * 			// $form_location ('site' or 'admin')
	 * @return	script
	 *
	 * @since   3.4.0
	 */
	static public function submit($parent_form = null)
	{
		if (!$parent_form) return false;
		if ($parent_form == 1) $parent_name = 'registration';
		if ($parent_form == 2) $parent_name = 'event';

		$app	= JFactory::getApplication();
		$lang	= JFactory::getLanguage();

		$id_suffix = ($lang->getTag() == 'fa-IR') ? '_jalali' : '';

		if ($app->isAdmin())
		{
			$params		= JComponentHelper::getParams('com_icagenda');
		}
		elseif ($app->isSite())
		{
			$params		= $app->getParams();
		}

		$submit_periodDisplay = $params->get('submit_periodDisplay', 1);
		$submit_datesDisplay = $params->get('submit_datesDisplay', 1);

		JText::script('COM_ICAGENDA_REGISTRATION_NO_EVENT_SELECTED_ALERT');
		JText::script('COM_ICAGENDA_FORM_NC');
		JText::script('COM_ICAGENDA_FORM_NO_DATES_ALERT');
		JText::script('COM_ICAGENDA_TERMS_AND_CONDITIONS_NOT_CHECKED_REGISTRATION');
		JText::script('COM_ICAGENDA_ALERT_TEXT_EXCEEDS_CHARACTER_LIMIT');

		$prefix_id = $app->isAdmin() ? 'jform_' : '';

		// Copyleft function strpos
		// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
		// +   improved by: Onno Marsman
		// +   bugfixed by: Daniel Esteban
		// +   improved by: Brett Zamir (http://brett-zamir.me)
		// +     edited by: Cyril Rezé (http://www.joomlic.com)
		// *     example 1: strpos('Kevin van Zonneveld', 'e', 5);
		// *     returns 1: 14

		$ic_script = array();

		if ( $app->isSite() )
		{
			$ic_script[] = '	function iCheckForm() {';
			$ic_script[] = '		var agree = document.getElementById("formAgree");';

			if ($parent_form == 2)
			{
				$ic_script[] = '		if (agree.checked) {';
				$ic_script[] = '			document.getElementById("tos").value = "checked";';
				$ic_script[] = '		}';
			}
		}
		elseif ( $app->isAdmin() )
		{
			$ic_script[] = 'jQuery(document).ready(function() {';
			$ic_script[] = '	Joomla.submitbutton = function(task) {';
		}

		if ($parent_form == 1 && $app->isAdmin())
		{
			$ic_script[] = '		var eventid = document.getElementById("' . $prefix_id . 'eventid_id");';
			$ic_script[] = '		if ((eventid.value == "") && (task != "' . $parent_name . '.cancel")) {';
			$ic_script[] = '			alert(Joomla.JText._("COM_ICAGENDA_REGISTRATION_NO_EVENT_SELECTED_ALERT"));';
			$ic_script[] = '			return false;';
			$ic_script[] = '		}';
		}

		if ($parent_form == 2)
		{
			$ic_script[] = '		function strpos (haystack, needle, offset) {';
			$ic_script[] = '			var i = (haystack + "").indexOf(needle, (offset || 0));';
			$ic_script[] = '			return i === -1 ? false : i;';
			$ic_script[] = '		}';

			$ic_script[] = '		var nodate = "0";';
			$ic_script[] = '		var noserialdate = \'a:1:{i:0;s:19:"0000-00-00 00:00:00";}\';';
			$ic_script[] = '		var noserialdate2 = \'a:1:{i:0;s:16:"0000-00-00 00:00";}\';';
			$ic_script[] = '		var emptydatetime = "0000-00-00 00:00:00";';

			if ($submit_periodDisplay && $app->isSite())
			{
				$ic_script[] = '		var startDate = document.getElementById("startdate' . $id_suffix . '");';
				$ic_script[] = '		var endDate = document.getElementById("enddate' . $id_suffix . '");';
				$ic_script[] = '		var isValidStartDate = strpos(startDate.value, nodate, 0);';
				$ic_script[] = '		var isValidEndDate = strpos(endDate.value, nodate, 0);';
			}
			elseif ($app->isAdmin())
			{
				$ic_script[] = '		var startDate = document.getElementById("startdate' . $id_suffix . '");';
				$ic_script[] = '		var endDate = document.getElementById("enddate' . $id_suffix . '");';
				$ic_script[] = '		var isValidStartDate = strpos(startDate.value, nodate, 0);';
				$ic_script[] = '		var isValidEndDate = strpos(endDate.value, nodate, 0);';
			}
			if ($submit_datesDisplay && $app->isSite())
			{
				$ic_script[] = '		var Dates = document.getElementById("' . $prefix_id . 'dates_id");';
				$ic_script[] = '		var isValidSingleDate = strpos(Dates.value, nodate, 2);';
			}
			elseif ($app->isAdmin())
			{
				$ic_script[] = '		var Dates = document.getElementById("' . $prefix_id . 'dates_id");';
				$ic_script[] = '		var isValidSingleDate = strpos(Dates.value, nodate, 2);';
			}

			$ic_script[] = '		if (';

			if ($submit_datesDisplay && $app->isSite())
			{
				$ic_script[] = '			( !isValidSingleDate';
				$ic_script[] = '			|| (Dates.value == noserialdate && isValidSingleDate)';
				$ic_script[] = '			|| (Dates.value == noserialdate2 && isValidSingleDate)';
				$ic_script[] = '			|| Dates.value == "" )';
			}
			elseif ($app->isAdmin())
			{
				$ic_script[] = '			( !isValidSingleDate';
				$ic_script[] = '			|| (Dates.value == noserialdate && isValidSingleDate)';
				$ic_script[] = '			|| (Dates.value == noserialdate2 && isValidSingleDate)';
				$ic_script[] = '			|| Dates.value == "" )';
			}

			if ($submit_periodDisplay && $submit_datesDisplay && $app->isSite())
			{
				$ic_script[] = '			&& ';
			}

			if ($submit_periodDisplay && $app->isSite())
			{
				$ic_script[] = '			( (!isValidStartDate || (startDate.value == emptydatetime)) )';
			}
			elseif ($app->isAdmin())
			{
				$ic_script[] = '			&& ( (!isValidStartDate || (startDate.value == emptydatetime)) )';
			}

			if ($app->isAdmin()) $ic_script[] = '			&& ( task != "' . $parent_name . '.cancel" ) ';

			$ic_script[] = '		) {';
			$ic_script[] = '			alert(Joomla.JText._("COM_ICAGENDA_FORM_NO_DATES_ALERT"));';
			$ic_script[] = '			document.getElementById("message_error").innerHTML = "'
											. JText::_("COM_ICAGENDA_FORM_NO_DATES_ALERT") . '";';
			$ic_script[] = '			document.getElementById("form_errors").style.display = "block";';

			if ($submit_periodDisplay && $app->isSite())
			{
				$ic_script[] = '			document.getElementById("startdate' . $id_suffix . '").value = emptydatetime;';
				$ic_script[] = '			document.getElementById("enddate' . $id_suffix . '").value = emptydatetime;';
				$ic_script[] = '			document.getElementById("startdate' . $id_suffix . '").addClass("ic-date-invalid");';
				$ic_script[] = '			document.getElementById("enddate' . $id_suffix . '").addClass("ic-date-invalid");';
			}
			elseif ($app->isAdmin())
			{
				$ic_script[] = '			document.getElementById("startdate' . $id_suffix . '").value = emptydatetime;';
				$ic_script[] = '			document.getElementById("enddate' . $id_suffix . '").value = emptydatetime;';
				$ic_script[] = '			document.getElementById("startdate' . $id_suffix . '").addClass("ic-date-invalid");';
				$ic_script[] = '			document.getElementById("enddate' . $id_suffix . '").addClass("ic-date-invalid");';
			}

			if ($submit_datesDisplay && $app->isSite())
			{
				$ic_script[] = '			document.getElementById("dTable' . $id_suffix . '").addClass("ic-date-invalid");';
			}
			elseif ($app->isAdmin())
			{
				$ic_script[] = '			document.getElementById("dTable' . $id_suffix . '").addClass("ic-date-invalid");';
			}

			$ic_script[] = '			scroll_to = document.getElementById("ic-dates-fieldset");';
			$ic_script[] = '			scroll_to.scrollIntoView();';
			$ic_script[] = '			return false;';
			$ic_script[] = '		}';
			$ic_script[] = '		else {';
			$ic_script[] = '			document.getElementById("form_errors").style.display = "none";';

			if ($submit_periodDisplay && $app->isSite())
			{
				$ic_script[] = '			document.getElementById("startdate' . $id_suffix . '").removeClass("ic-date-invalid");';
				$ic_script[] = '			document.getElementById("enddate' . $id_suffix . '").removeClass("ic-date-invalid");';
			}
			elseif ($app->isAdmin())
			{
				$ic_script[] = '			document.getElementById("startdate' . $id_suffix . '").removeClass("ic-date-invalid");';
				$ic_script[] = '			document.getElementById("enddate' . $id_suffix . '").removeClass("ic-date-invalid");';
			}

			if ($submit_datesDisplay && $app->isSite())
			{
				$ic_script[] = '			document.getElementById("dTable' . $id_suffix . '").removeClass("ic-date-invalid");';
			}
			elseif ($app->isAdmin())
			{
				$ic_script[] = '			document.getElementById("dTable' . $id_suffix . '").removeClass("ic-date-invalid");';
			}

			$ic_script[] = '		}';

			if ($submit_periodDisplay && $app->isSite())
			{
				$ic_script[] = '		if (isValidStartDate && !isValidEndDate) {';
				$ic_script[] = '			document.getElementById("enddate' . $id_suffix . '").value = startDate.value;';
				$ic_script[] = '		}';
			}
			elseif ($app->isAdmin())
			{
				$ic_script[] = '		if (isValidStartDate && !isValidEndDate) {';
				$ic_script[] = '			document.getElementById("enddate' . $id_suffix . '").value = startDate.value;';
				$ic_script[] = '		}';
			}
		}

		$customfields = icagendaCustomfields::getCustomfields($parent_form);

		if ($customfields && $app->isAdmin())
		{
			$options_required = array('list', 'radio');

			foreach ($customfields as $icf)
			{
				// If type is list or radio, should have options. All, field required.
				if (((in_array($icf->type, $options_required) && $icf->options)
					|| ! in_array($icf->type, $options_required))
					&& $icf->required)
				{
					$ic_script[] = '		var ' . $icf->slug . '_slug = document.getElementById("' . $icf->slug . '_slug");';
					$ic_script[] = '		if ( ( ' . $icf->slug . '_slug.value == "" ) ';

					if ($app->isAdmin()) $ic_script[] = '			&& ( task != "' . $parent_name . '.cancel" ) ';

					$ic_script[] = '		) {';
					$ic_script[] = '			alert(Joomla.JText._("COM_ICAGENDA_FORM_NC"));';
					$ic_script[] = '			document.getElementById("message_error").innerHTML = "'
												. JText::sprintf("COM_ICAGENDA_FORM_VALIDATE_FIELD_REQUIRED_NAME", $icf->title) . '";';
					$ic_script[] = '			document.getElementById("form_errors").style.display = "block";';
					$ic_script[] = '			document.getElementById("' . $icf->alias . '_alias").addClass("ic-field-invalid");';
					$ic_script[] = '			document.getElementById("' . $icf->slug . '_slug").addClass("ic-field-invalid");';
					$ic_script[] = '			scroll_to = document.getElementById("' . $icf->alias . '_alias");';
					$ic_script[] = '			scroll_to.scrollIntoView();';
					$ic_script[] = '			return false;';
					$ic_script[] = '		}';
					$ic_script[] = '		else {';
					$ic_script[] = '			document.getElementById("form_errors").style.display = "none";';
					$ic_script[] = '			document.getElementById("' . $icf->alias . '_alias").removeClass("ic-field-invalid");';
					$ic_script[] = '			document.getElementById("' . $icf->slug . '_slug").removeClass("ic-field-invalid");';
					$ic_script[] = '		}';
				}
			}
		}

		if ($app->isAdmin())
		{
			$ic_script[] = '		if (task == "' . $parent_name . '.cancel"';
			$ic_script[] = '			|| document.formvalidator.isValid(document.id("' . $parent_name . '-form")))';
			$ic_script[] = '		{';
			$ic_script[] = '			// do field validation';
			$ic_script[] = '			Joomla.submitform(task, document.getElementById("' . $parent_name . '-form"));';
			$ic_script[] = '		}';
			$ic_script[] = '		else {';
			$ic_script[] = '			alert("' . JText::_("JGLOBAL_VALIDATION_FORM_FAILED") . '");';
			$ic_script[] = '		}';
		}

		if ($app->isSite())
		{
			$ic_script[] = '		if (!agree.checked) {';
			if ($parent_form == 1) $ic_script[] = '			alert(Joomla.JText._("COM_ICAGENDA_TERMS_AND_CONDITIONS_NOT_CHECKED_REGISTRATION"));';
			if ($parent_form == 2) $ic_script[] = '			alert(Joomla.JText._("COM_ICAGENDA_TERMS_OF_SERVICE_NOT_CHECKED_SUBMIT_EVENT"));';
			$ic_script[] = '			scroll_to = document.getElementById("content");';
			$ic_script[] = '			scroll_to.scrollIntoView();';
			$ic_script[] = '			return false;';
			$ic_script[] = '		}';
		}

		$ic_script[] = '	}';

		if ($app->isAdmin())
		{
			$ic_script[] = '});';
		}

		return implode("\n", $ic_script);
	}

	/**
	 * Function to set timepicker.js and date function strings of translation
	 *
	 * @access	public static
	 *
	 * @since   3.4.1
	 */
	static public function loadDateTimePickerJSLanguage()
	{
		// icdates.js Strings of Translation
		JText::script('COM_ICAGENDA_DELETE_DATE');

		// timepicker.js Strings of Translation
		JText::script('JANUARY');
		JText::script('FEBRUARY');
		JText::script('MARCH');
		JText::script('APRIL');
		JText::script('MAY');
		JText::script('JUNE');
		JText::script('JULY');
		JText::script('AUGUST');
		JText::script('SEPTEMBER');
		JText::script('OCTOBER');
		JText::script('NOVEMBER');
		JText::script('DECEMBER');

		JText::script('SA');
		JText::script('SU');
		JText::script('MO');
		JText::script('TU');
		JText::script('WE');
		JText::script('TH');
		JText::script('FR');

		JText::script('COM_ICAGENDA_TP_CURRENT');
		JText::script('COM_ICAGENDA_TP_CLOSE');
		JText::script('COM_ICAGENDA_TP_TITLE');
		JText::script('COM_ICAGENDA_TP_TIME');
		JText::script('COM_ICAGENDA_TP_HOUR');
		JText::script('COM_ICAGENDA_TP_MINUTE');
	}
}
utilities/events/events.php000060400000037135152455705350012120 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     iCagenda
 * @subpackage  utilities
 * @copyright   Copyright (c)2014-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.12 2015-10-01
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * class icagendaEvents
 */
class icagendaEvents
{
	/**
	 * Function to return event access (access levels, approval and event access status)
	 *
	 * @access	public static
	 * @param	$id - id of the event
	 * @return	list array of access levels, approval and event access status
	 *
	 * @since	3.4.0
	 */
	static public function eventAccess($id = null)
	{
		// Preparing connection to db
		$db = Jfactory::getDbo();

		// Preparing the query
		$query = $db->getQuery(true);
		$query->select('e.state AS evtState, e.approval AS evtApproval, e.access AS evtAccess')
			->from($db->qn('#__icagenda_events').' AS e')
			->where($db->qn('e.id').' = '.$db->q($id));
		$query->select('v.title AS accessName')
			->join('LEFT', $db->quoteName('#__viewlevels') . ' AS v ON v.id = e.access');
		$db->setQuery($query);
		$eventAccess = $db->loadObject();

		if ($eventAccess)
		{
			return $eventAccess;
		}
		else
		{
			return false;
		}
	}

	/**
	 * Function to return feature Icons for an event
	 *
	 * @access	public static
	 * @param	$id - id of the event
	 * @return	list array of feature icons
	 *
	 * @since	3.4.0
	 */
	public static function featureIcons($id = null)
	{
		$db = JFactory::getDbo();
		$query = $db->getQuery(true);
		$query->select('DISTINCT f.icon, f.icon_alt');
		$query->from('`#__icagenda_feature_xref` AS fx');
		$query->innerJoin("`#__icagenda_feature` AS f ON fx.feature_id=f.id AND f.state=1 AND f.icon<>'-1'");
		$query->where('fx.event_id=' . $id);
		$query->order('f.ordering DESC'); // Order descending because the icons are floated right
		$db->setQuery($query);
		$feature_icons = $db->loadObjectList();

		return $feature_icons;
	}

	/**
	 * Function to return footer list of events
	 *
	 * @since	3.4.0
	 */
	public static function isListOfEvents()
	{
		$app = JFactory::getApplication();
		$params = $app->getParams();
		$list_of_events = $params->get('copy', '');
		$core = $params->get('icsys');
		$string = '<a href="ht';
		$string.= 'tp://icag';
		$string.= 'enda.jooml';
		$string.= 'ic.com" target="_blank" style="font-weight: bold; text-decoration: none !important;">';
		$string.= 'iCagenda';
		$string.= '</a>';
		$icagenda = JText::sprintf('ICAGENDA_THANK_YOU_NOT_TO_REMOVE', $string);
		$default = '&#80;&#111;&#119;&#101;&#114;&#101;&#100;&nbsp;&#98;&#121;&nbsp;';
		$footer = '<div style="text-align: center; font-size: 10px; text-decoration: none"><p>';
		$footer.= preg_match('/iCagenda/',$icagenda) ? $icagenda : $default . $string;
		$footer.= '</p></div>';

		if ($list_of_events || $core == 'core')
		{
			echo $footer;
		}
	}

	/**
	 * DAY in Date Box (list of events)
	 *
	 * @since 3.5.0
	 */
	public static function day($date, $item = null)
	{
		$eventTimeZone	= null;

		$this_date		= JHtml::date($date, 'Y-m-d H:i', $eventTimeZone);
		$day_date		= JHtml::date($date, 'd', $eventTimeZone);
		$day_today		= JHtml::date('now', 'd');
		$date_today		= JHtml::date('now', 'Y-m-d');

		if ($item)
		{
			$weekdays		= $item->weekdays;
			$period			= unserialize($item->period);
			$period			= is_array($period) ? $period : array();
			$is_in_period	= (in_array($this_date, $period)) ? true : false;
			$startdate		= $item->startdatetime;
			$day_startdate	= JHtml::date($startdate, 'd', $eventTimeZone);
			$enddate		= $item->enddatetime;
			$day_enddate	= JHtml::date($enddate, 'd', $eventTimeZone);
		}

		if ($item && $is_in_period
			&& $weekdays == ''
			&& strtotime($startdate) <= strtotime($date_today)
			&& strtotime($enddate) >= strtotime($date_today)
			)
		{
			$day = '';

			if ($day_today > $day_startdate)
			{
//				$day.= '<span style="font-size: 14px; vertical-align: middle">' . $day_startdate . '&nbsp;</span>';
//				$day.= '<span style="font-size: 16px; vertical-align: middle">&#8676;</span>';
			}
			else
			{
//				$day.= '<span style="font-size: 14px; vertical-align: middle; color: transparent; text-shadow: none; text-decoration: none;">' . $day_startdate . '&nbsp;</span>';
//				$day.= '<span style="font-size: 16px; vertical-align: middle; color: transparent; text-shadow: none; text-decoration: none;">&#8676;</span>';
			}

//			$day.= '<span style="border-radius: 10px; padding: 0 5px; border: 2px dotted gray;">' . $day_today . '</span>';
			$day.= '<span class="ic-current-period">' . $day_today . '</span>';
//			$day.= $day_today;

			if ($day_today < $day_enddate)
			{
//				$day.= '<span style="font-size: 16px; vertical-align: middle">&#8677;</span>';
//				$day.= '<span style="font-size: 14px; vertical-align: middle">&nbsp;' . $day_enddate . '</span>';
			}
			else
			{
//				$day.= '<span style="font-size: 16px; vertical-align: middle; color: transparent; text-shadow: none; text-decoration: none;">&#8677;</span>';
//				$day.= '<span style="font-size: 14px; vertical-align: middle; color: transparent; text-shadow: none; text-decoration: none;">' . $day_enddate . '&nbsp;</span>';
			}

			return $day;
		}
		else
		{
			return $day_date;
		}
	}

	/**
	 * MONTH SHORT in Date Box (list of events)
	 *
	 * @since 3.5.0
	 */
	public static function dateBox($date, $type, $ongoing = null)
	{
		$datetime_today		= JHtml::date('now', 'Y-m-d H:i');

		$monthshort_date	= iCDate::monthShortJoomla($date);
		$monthshort_today	= iCDate::monthShortJoomla($datetime_today);
		$year_date			= JHtml::date($date, 'Y', null);
//		$year_date			= date('Y', strtotime($date));
		$year_today			= JHtml::date('now', 'Y');

		if ($ongoing)
		{
			switch($type)
			{
				case 'monthshort': $value = $monthshort_today; break;
				case 'year': $value = $year_today; break;
			}
		}
		else
		{
			switch($type)
			{
				case 'monthshort': $value = $monthshort_date; break;
				case 'year': $value = $year_date; break;
			}
		}

		return $value;
	}

// DEPRECATED 3.6
	/**
	 * Function to return time formated depending on AM/PM option
	 * Format Time (eg. 00:00 (AM/PM))
	 * $oldtime to be removed (not used since 2.0.0)
	 *
	 * @since 3.4.1
	 */
	public static function dateToTimeFormat($evt, $oldtime = null)
	{
		$app			= JFactory::getApplication();
		$params			= $app->getParams();
		$timeformat		= $params->get('timeformat', 1);
		$eventTimeZone	= null;

		$date_time		= strtotime(JHtml::date($evt, 'Y-m-d H:i', $eventTimeZone));
 		$t_time			= date('H:i', $date_time);

		$time_format	= ($timeformat == 1) ? '%H:%M' : '%I:%M %p';
		$lang_time		= strftime($time_format, strtotime($t_time));

		$time = ($oldtime != NULL && $t_time == '00:00') ? $oldtime : JText::_($lang_time);

		return $time;
	}

	/**
	 * Function to return Auto Short Description (Full Description > Short)
	 *
	 * @since 3.5.6
	 */
	public static function shortDescription($text, $isModule = null, $option = null, $limit = null)
	{
		$descdata		= $text;
		$desc_full		= self::deleteAllBetween('{', '}', $descdata);

		// Menu Options
		$app			= JFactory::getApplication();
		$params			= $app->getParams();

//		$limitGlobal	= ! $isModule ? $params->get('limitGlobal', 0) : 1;
//		$customlimit	= ! $isModule ? $params->get('limit', '100') : false;
		$limitGlobal	= ! $isModule ? $params->get('limitGlobal', 0) : 0;
		$customlimit	= ! $isModule ? $params->get('limit', '100') : $limit;

		// Global Options Component iCagenda
		$iCparams		= JComponentHelper::getParams('com_icagenda');

		if ($limitGlobal == 1)
		{
			$limit = $params->get('ShortDescLimit', '100');
		}
		else
		{
			$limit_global_option = $iCparams->get('ShortDescLimit', '100');
			$limit = is_numeric($customlimit) ? $customlimit : $limit_global_option;
		}

		// Html tags removal Global Option (component iCagenda) - Short Description
		$Filtering_ShortDesc_Global	= $iCparams->get('Filtering_ShortDesc_Global', '');
		$HTMLTags_ShortDesc_Global	= $iCparams->get('HTMLTags_ShortDesc_Global', array());

		// Get Module Option
		$Filtering_ShortDesc_Module	= $isModule ? $option : '';

		/**
		 * START Filtering HTML method
		 */
		$limit				= is_numeric($limit) ? $limit : false;

		// Gets length of the short desc, when not filtered
		$limit_not_filtered	= substr($desc_full, 0, $limit);
		$text_length		= strlen($limit_not_filtered);

		// Gets length of the short desc, after html filtering
		$limit_filtered		= preg_replace('/[\p{Z}\s]{2,}/u', ' ', $limit_not_filtered);
		$limit_filtered		= strip_tags($limit_filtered);
		$text_short_length	= strlen($limit_filtered);

		// Sets Limit + special tags authorized
		$limit_short		= $limit + ($text_length - $text_short_length);

		// Replaces all authorized html tags with tag strings
		if (empty($Filtering_ShortDesc_Module)
			&& ($Filtering_ShortDesc_Global == '1') )
		{
			$desc_full = str_replace('+', '@@', $desc_full);
			$desc_full = in_array('1', $HTMLTags_ShortDesc_Global) ? str_replace('<br>', '+@br@', $desc_full) : $desc_full;
			$desc_full = in_array('1', $HTMLTags_ShortDesc_Global) ? str_replace('<br/>', '+@br@', $desc_full) : $desc_full;
			$desc_full = in_array('1', $HTMLTags_ShortDesc_Global) ? str_replace('<br />', '+@br@', $desc_full) : $desc_full;
			$desc_full = in_array('2', $HTMLTags_ShortDesc_Global) ? str_replace('<b>', '+@b@', $desc_full) : $desc_full;
			$desc_full = in_array('2', $HTMLTags_ShortDesc_Global) ? str_replace('</b>', '@bc@', $desc_full) : $desc_full;
			$desc_full = in_array('3', $HTMLTags_ShortDesc_Global) ? str_replace('<strong>', '@strong@', $desc_full) : $desc_full;
			$desc_full = in_array('3', $HTMLTags_ShortDesc_Global) ? str_replace('</strong>', '@strongc@', $desc_full) : $desc_full;
			$desc_full = in_array('4', $HTMLTags_ShortDesc_Global) ? str_replace('<i>', '@i@', $desc_full) : $desc_full;
			$desc_full = in_array('4', $HTMLTags_ShortDesc_Global) ? str_replace('</i>', '@ic@', $desc_full) : $desc_full;
			$desc_full = in_array('5', $HTMLTags_ShortDesc_Global) ? str_replace('<em>', '@em@', $desc_full) : $desc_full;
			$desc_full = in_array('5', $HTMLTags_ShortDesc_Global) ? str_replace('</em>', '@emc@', $desc_full) : $desc_full;
			$desc_full = in_array('6', $HTMLTags_ShortDesc_Global) ? str_replace('<u>', '@u@', $desc_full) : $desc_full;
			$desc_full = in_array('6', $HTMLTags_ShortDesc_Global) ? str_replace('</u>', '@uc@', $desc_full) : $desc_full;
		}
		elseif ( $Filtering_ShortDesc_Module == '2'
			|| (($Filtering_ShortDesc_Global == '') && empty($Filtering_ShortDesc_Module)) )
		{
			$desc_full		= '@i@'.$desc_full.'@ic@';
			$limit_short	= $limit_short + 7;
		}
		else
		{
			$desc_full		= $desc_full;
		}

		// Removes HTML tags
		$desc_nohtml	= strip_tags($desc_full);

		// Replaces all sequences of two or more spaces, tabs, and/or line breaks with a single space
		$desc_nohtml	= preg_replace('/[\p{Z}\s]{2,}/u', ' ', $desc_nohtml);

		// Replaces all spaces with a single +
		$desc_nohtml	= str_replace(' ', '+', $desc_nohtml);

		if (strlen($desc_nohtml) > $limit_short)
		{
			// Cuts full description, to get short description
			$string_cut	= substr($desc_nohtml, 0, $limit_short);

			// Detects last space of the short description
			$last_space	= strrpos($string_cut, '+');

			// Cuts the short description after last space
			$string_ok	= substr($string_cut, 0, $last_space);

			// Counts number of tags converted to string, and returns lenght
			$nb_br			= substr_count($string_ok, '+@br@');
			$nb_plus		= substr_count($string_ok, '@@');
			$nb_bopen		= substr_count($string_ok, '@b@');
			$nb_bclose		= substr_count($string_ok, '@bc@');
			$nb_strongopen	= substr_count($string_ok, '@strong@');
			$nb_strongclose	= substr_count($string_ok, '@strongc@');
			$nb_iopen		= substr_count($string_ok, '@i@');
			$nb_iclose		= substr_count($string_ok, '@ic@');
			$nb_emopen		= substr_count($string_ok, '@em@');
			$nb_emclose		= substr_count($string_ok, '@emc@');
			$nb_uopen		= substr_count($string_ok, '@u@');
			$nb_uclose		= substr_count($string_ok, '@uc@');

			// Replaces tag strings with html tags
			$string_ok	= str_replace('@br@', '<br />', $string_ok);
			$string_ok	= str_replace('@b@', '<b>', $string_ok);
			$string_ok	= str_replace('@bc@', '</b>', $string_ok);
			$string_ok	= str_replace('@strong@', '<strong>', $string_ok);
			$string_ok	= str_replace('@strongc@', '</strong>', $string_ok);
			$string_ok	= str_replace('@i@', '<i>', $string_ok);
			$string_ok	= str_replace('@ic@', '</i>', $string_ok);
			$string_ok	= str_replace('@em@', '<em>', $string_ok);
			$string_ok	= str_replace('@emc@', '</em>', $string_ok);
			$string_ok	= str_replace('@u@', '<u>', $string_ok);
			$string_ok	= str_replace('@uc@', '</u>', $string_ok);
			$string_ok	= str_replace('+', ' ', $string_ok);
			$string_ok	= str_replace('@@', '+', $string_ok);

			$text = $string_ok;

			// Close html tags if not closed
			if ($nb_bclose < $nb_bopen) $text = $string_ok.'</b>';
			if ($nb_strongclose < $nb_strongopen) $text = $string_ok.'</strong>';
			if ($nb_iclose < $nb_iopen) $text = $string_ok.'</i>';
			if ($nb_emclose < $nb_emopen) $text = $string_ok.'</em>';
			if ($nb_uclose < $nb_uopen) $text = $string_ok.'</u>';

			$return_text = $text.' ';

			$descShort	= $limit ? $return_text : '';
		}
		else
		{
			$desc_full	= $desc_nohtml;
			$desc_full	= str_replace('@br@', '<br />', $desc_full);
			$desc_full	= str_replace('@b@', '<b>', $desc_full);
			$desc_full	= str_replace('@bc@', '</b>', $desc_full);
			$desc_full	= str_replace('@strong@', '<strong>', $desc_full);
			$desc_full	= str_replace('@strongc@', '</strong>', $desc_full);
			$desc_full	= str_replace('@i@', '<i>', $desc_full);
			$desc_full	= str_replace('@ic@', '</i>', $desc_full);
			$desc_full	= str_replace('@em@', '<em>', $desc_full);
			$desc_full	= str_replace('@emc@', '</em>', $desc_full);
			$desc_full	= str_replace('@u@', '<u>', $desc_full);
			$desc_full	= str_replace('@uc@', '</u>', $desc_full);
			$desc_full	= str_replace('+', ' ', $desc_full);
			$desc_full	= str_replace('@@', '+', $desc_full);

			$descShort	= $limit ? $desc_full : '';
		}
		/** END Filtering HTML function */

		return $descShort;
	}

	/**
	 * Function to check if user has access rights to defined access
	 *
	 * $accessLevel		Access level of the item to check User Permissions
	 *
	 * If in super user group, always allowed
	 */
	static public function accessLevels($accessLevel)
	{
		// Get User Access Levels
		$user		= JFactory::getUser();
		$userLevels	= $user->getAuthorisedViewLevels();
		$userGroups = version_compare(JVERSION, '3.0', 'ge') ? $user->groups : $user->getAuthorisedGroups();

		// Control: if access level, or Super User
		if (in_array($accessLevel, $userLevels)
			|| in_array('8', $userGroups))
		{
			return true;
		}

		return false;
	}

	/**
	 * Process a string in a JOOMLA_TRANSLATION_STRING standard.
	 * This method processes a string and replaces all accented UTF-8 characters by unaccented
	 * ASCII-7 "equivalents" and the string is uppercase. Spaces replaced by underscore.
	 *
	 * @param   string  $string  String to process
	 *
	 * @return  string  Processed string
	 *
	 * @since   3.3.3
	 */
	public static function deleteAllBetween($start, $end, $string)
	{
		$startPos = strpos($string, $start);
		$endPos = strpos($string, $end);

		if (!$startPos || !$endPos)
		{
			return $string;
		}

		$textToDelete = substr($string, $startPos, ($endPos + strlen($end)) - $startPos);

		return str_replace($textToDelete, '', $string);
	}
}
utilities/events/data.php000060400000106353152455705350011524 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     iCagenda
 * @subpackage  utilities
 * @copyright   Copyright (c)2014-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.7 2015-07-14
 * @since       3.5.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * class icagendaEventsData
 * Transitional class and functions
 *
 * DEPRECATED and TO BE REMOVED in 3.7.x
 */
class icagendaEventsData
{
	/**
	 * ALL DATES
	 *
	 * @since 3.5.0
	 */
	public static function getAllDates($filterTime = null, $datesDisplay = null, $orderby = null, $mcatid = null, $module = null)
	{
		$app	= JFactory::getApplication();
		$jinput = $app->input;
		$params = $app->getParams();

		// Get Settings
		$filterTime		= ($filterTime == 'no') ? '0' : $filterTime;
		$filterTime		= (isset($filterTime) || $filterTime == '0') ? $filterTime : $params->get('time', 1);
		$datesDisplay	= $datesDisplay ? $datesDisplay : $params->get('datesDisplay', 1);
		$orderby		= $orderby ? $orderby : $params->get('orderby', 2);
		$mcatid			= ($mcatid == 'no') ? array() : $params->get('mcatid');
//		$module			= ($module == 'calendar') ? $module : false;

		// Set vars
		$nodate 		= '0000-00-00 00:00:00';
		$ic_nodate		= '0000-00-00 00:00';
		$eventTimeZone	= null;
		$datetime_today	= JHtml::date('now', 'Y-m-d H:i'); // Joomla Time Zone
		$date_today		= JHtml::date('now', 'Y-m-d'); // Joomla Time Zone
//		$datetime_today	= date('Y-m-d H:i');
//		$date_today		= date('Y-m-d');


		// Get Data
		$db		= Jfactory::getDbo();
		$query	= $db->getQuery(true);
        $query->select('e.next, e.dates, e.startdate, e.enddate, e.period, e.weekdays, e.displaytime, e.id, e.catid');
        $query->from('#__icagenda_events AS e');
		$query->leftJoin('`#__icagenda_category` AS c ON c.id = e.catid');

		// CATEGORY STATE Filtering
		$query->where('c.state = 1');

		// EVENT STATE Filtering
		$query->where('e.state = 1');

		// CATEGORY Filtering
//		$mcatid = is_array($mcatid) ? $mcatid : array();
//		$selcat = implode(', ', $mcatid);

//		if ( ! in_array('0', $mcatid)
//			&& count($mcatid)
//			)
//		{
//			$query->where('e.catid IN (' . $selcat . ')');
//		}
		// Filter by categories.
		$categoryId = $mcatid;

		if (is_numeric($categoryId) && ! empty($categoryId))
		{
			$query->where('e.catid = ' . $categoryId . '');
		}
		elseif (is_array($categoryId) && ! empty($categoryId)
			&& ! in_array('0', $categoryId))
		{
			JArrayHelper::toInteger($categoryId);
			$categoryId = implode(',', $categoryId);
			$query->where('e.catid IN (' . $categoryId . ')');
		}

		// FRONTEND FILTERS

		// Filter by published state
		$published = $jinput->get('filter_state');
//		$published = $this->state->get('filter.state');

		if (is_numeric($published))
		{
			$query->where('e.state = '.(int) $published);
		}
		elseif ($published === '')
		{
			$query->where('(e.state IN (0, 1))');
		}

		// Filter by category
		$category = $jinput->get('filter_category');
//		$category = $this->state->get('filter.category');

		if (is_numeric($category))
		{
			$query->where('e.catid = '.(int) $category);
		}

		$filter_startdate	= $jinput->get('filter_startdate');
		$filter_enddate		= $jinput->get('filter_enddate');
		$filter_year		= $jinput->get('filter_year');

		// FEATURES Filtering
		$query->where(self::getFeaturesFilter());

		// LANGUAGE Filtering
		$query->where('e.language IN (' . $db->q(JFactory::getLanguage()->getTag()) . ',' . $db->q('*') . ')');

		// ACCESS Filtering
		$user		= JFactory::getUser();
		$userID		= $user->id;
		$userLevels	= $user->getAuthorisedViewLevels();
		$userGroups	= $user->groups;
		$groupid	= JComponentHelper::getParams('com_icagenda')->get('approvalGroups', array("8"));
		$groupid	= is_array($groupid) ? $groupid : array($groupid);

		if (!in_array('8', $userGroups) )
		{
			$useraccess	= implode(', ', $userLevels);
			$query->where('e.access IN (' . $useraccess . ')');
		}

		// APPROVAL RIGHTS Filtering
		if (!array_intersect($userGroups, $groupid)
			&& !in_array('8', $userGroups))
		{
			$query->where('e.approval <> 1');
		}
		else
		{
			$query->where('e.approval < 2');
		}

		$db->setQuery($query);
		$list = $db->loadObjectList();

		$list_all_dates = array();

		foreach ($list AS $i)
		{
			$i_id			= $i->id;
			$i_startdate	= $i->startdate;
			$i_enddate		= $i->enddate;
			$i_weekdays		= $i->weekdays;
			$i_dates		= $i->dates;
			$i_displaytime	= $i->displaytime;

			// Declare AllDates array
			$AllDatesDisplay	= array();

			// Get WeekDays Array
			$WeeksDays			= iCDatePeriod::weekdaysToArray($i_weekdays);

			// If Single Dates, added each one to All Dates for this event
			$singledates 		= iCString::isSerialized($i_dates) ? unserialize($i_dates) : array();
			$singleDatesArray	= array();

			$no_filtering		= '0';

			foreach ($singledates as $sd)
			{
				$isValid = iCDate::isDate($sd);

				if ($isValid)
				{
					$date_Dat			= JHtml::date($sd, 'Y-m-d', $eventTimeZone);
					$SingleDate			= JHtml::date($sd, 'Y-m-d H:i', $eventTimeZone);

					$data_SingleDate	= date('Y-m-d H:i', strtotime($sd));

					// Frontend Filtering
					if ( ! empty($filter_year))
					{
						if (date('Y', strtotime($date_Dat)) == $filter_year)
						{
							$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
						}
					}
					elseif ( ! empty($filter_startdate) && ! empty($filter_enddate))
					{
						if (strtotime($date_Dat) >= strtotime($filter_startdate)
							&& strtotime($date_Dat) <= strtotime($filter_enddate)
							)
						{
							$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
						}
					}

					// All Dates for each event
					elseif ($datesDisplay == 1)
					{
						$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
					}

					// Current Today
					elseif ($filterTime == 4
						&& strtotime($SingleDate) >= strtotime($date_today)
						)
					{
						$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
					}

					// Upcoming Events
					elseif ($filterTime == 3
						&& strtotime($SingleDate) > strtotime($datetime_today)
						)
					{
						$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
					}

					// Past event
					elseif ($filterTime == 2
						&& strtotime($SingleDate) < strtotime($datetime_today)
						)
					{
						$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
					}

					// Current and Upcoming Events
					elseif ($filterTime == 1
						&& strtotime($SingleDate) > strtotime($datetime_today)
						)
					{
						$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
					}

					// All Dates
					elseif (!$filterTime)
					{
						// All Upcoming dates
						if (strtotime($SingleDate) >= strtotime($datetime_today))
						{
							$no_filtering = $no_filtering + 1;

							$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
						}

						// If no Upcoming dates, get the last date
						elseif ($no_filtering == 0
							&& strtotime($SingleDate) < strtotime($datetime_today))
						{
							$no_filtering = $no_filtering + 1;

							$singleDatesArray[] = $data_SingleDate . '_' . $i_id;
						}
					}
				}
			}

			if ($datesDisplay == 2
				&& $filterTime == 2
				&& count($singleDatesArray) > 0) // Past Events
			{
				$AllDatesDisplay[] = max($singleDatesArray);
			}
			elseif ($datesDisplay == 2
				&& count($singleDatesArray) > 0)
			{
				$AllDatesDisplay[] = min($singleDatesArray);
			}
			else
			{
				$AllDatesDisplay = array_merge($AllDatesDisplay, $singleDatesArray);
			}

			// If Period Dates, added each one to All Dates for this event (filter week Days, and if date not null)
//			$perioddates = iCDatePeriod::listDates($i_startdate, $i_enddate, $eventTimeZone);

			$perioddates = iCDatePeriod::listDates($i_startdate, $i_enddate);

			$period_array = array();

			foreach ($perioddates AS $date_in_weekdays)
			{
//				$datetime_period_date = JHtml::date($date_in_weekdays, 'Y-m-d H:i', $eventTimeZone);
//				$datetime_period_date = date('Y-m-d H:i', strtotime($date_in_weekdays));
//				$datetime_period_date = $date_in_weekdays;

				if (in_array(date('w', strtotime($date_in_weekdays)), $WeeksDays)
					&& iCDate::isDate($date_in_weekdays))
				{
					$period_array[] = $date_in_weekdays;
				}
			}

			$only_startdate = ($i_weekdays || $i_weekdays == '0') ? false : true;
//			$only_startdate = ! $module ? $only_startdate : false;

			$StDate = JHtml::date($i_startdate, 'Y-m-d H:i', $eventTimeZone);
			$EnDate = JHtml::date($i_enddate, 'Y-m-d H:i', $eventTimeZone);

			$date_startdate	= JHtml::date($i_startdate, 'Y-m-d', $eventTimeZone);
			$date_enddate	= JHtml::date($i_enddate, 'Y-m-d', $eventTimeZone);
			$time_startdate	= JHtml::date($i_startdate, 'H:i', $eventTimeZone);
			$time_enddate	= JHtml::date($i_enddate, 'H:i', $eventTimeZone);

			$data_StDate = date('Y-m-d H:i', strtotime($i_startdate));
			$data_time_startdate	= date('H:i', strtotime($i_startdate));

//			$StDate = date('Y-m-d H:i', strtotime($i_startdate));
//			$EnDate = date('Y-m-d H:i', strtotime($i_enddate));

//			$date_startdate	= date('Y-m-d', strtotime($i_startdate));
//			$date_enddate	= date('Y-m-d', strtotime($i_enddate));
//			$time_startdate	= date('H:i', strtotime($i_startdate));
//			$time_enddate	= date('H:i', strtotime($i_enddate));

			if (isset($period_array)
				&& ($period_array != NULL && $period_array)
				)
			{
				if ($only_startdate)
				{
					$AllDatesDisplay[] = $data_StDate . '_' . $i_id;
				}
				else
				{
					$dp = 0;
					$count_period = count($period_array);
					$cp = 0;
					$no_filtering = 0;

					foreach ($period_array as $Dat)
					{
						$date_Dat	= JHtml::date($Dat, 'Y-m-d', $eventTimeZone);
						$SingleDate	= JHtml::date($Dat, 'Y-m-d H:i', $eventTimeZone);

						$data_date_Dat	= date('Y-m-d', strtotime($Dat));
						$data_SingleDate	= date('Y-m-d H:i', strtotime($Dat));

//						$date_Dat	= date('Y-m-d', strtotime($Dat));
//						$SingleDate	= date('Y-m-d H:i', strtotime($Dat));

						if (in_array(date('w', strtotime($Dat)), $WeeksDays)
							&& $dp == 0
							)
						{
							// Frontend Filtering
							if ( ! empty($filter_year))
							{
								if (date('Y', strtotime($date_Dat)) == $filter_year)
								{
									$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
								}
							}
							elseif ( ! empty($filter_startdate) && ! empty($filter_enddate))
							{
								if (strtotime($date_Dat) >= strtotime($filter_startdate)
									&& strtotime($date_Dat) <= strtotime($filter_enddate)
									)
								{
									$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
								}
							}

							// Current Today and Upcoming Today
							elseif ($filterTime == 4
								&& strtotime($date_Dat) == strtotime($date_today))
							{
								if ($i_displaytime == 1
									&& strtotime($date_Dat . ' ' . $time_enddate) >= strtotime($datetime_today))
								{
									$dp = ($datesDisplay == 2) ? $dp+1 : 0;

									$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
								}
								else
								{
									$dp = ($datesDisplay == 2) ? $dp+1 : 0;

									$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
								}
							}

							// Upcoming
							elseif ($filterTime == 3
								&& strtotime($SingleDate) > strtotime($datetime_today))
							{
								$dp = ($datesDisplay == 2) ? $dp+1 : 0;

								$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
							}

							// Past
							elseif ($filterTime == 2
								&& strtotime($date_Dat) < strtotime($date_today))
							{
								$dp = ($datesDisplay == 2) ? $dp+1 : 0;

								$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
							}

							// Current Today and Upcoming
							elseif ($filterTime == 1)
							{
								if ($i_displaytime == 1
									&& strtotime($date_Dat . ' ' . $time_enddate) >= strtotime($datetime_today))
								{
									$dp = ($datesDisplay == 2) ? $dp+1 : 0;

									$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
								}
								elseif ($i_displaytime != 1
									&& strtotime($date_Dat) >= strtotime($date_today))
								{
									$dp = ($datesDisplay == 2) ? $dp+1 : 0;

									$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
								}
							}

							// No Filtering
							elseif ( ! $filterTime)
							{
								// All Upcoming dates
								if (strtotime($SingleDate) >= strtotime($datetime_today))
								{
									$dp = ($datesDisplay == 2) ? $dp+1 : 0;
									$no_filtering = ($datesDisplay == 2) ? $no_filtering+1 : 0;

									$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
								}

								// If no Upcoming dates, get the last date
								elseif ($no_filtering == 0 && $datesDisplay == 2
									&& strtotime($SingleDate) < strtotime($datetime_today))
								{
									$dp = $dp+1;

									$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
								}

								// If display All Dates, get the last dates
								elseif ( $datesDisplay == 1
									&& strtotime($SingleDate) < strtotime($datetime_today))
								{
									$dp = 0;

									$AllDatesDisplay[] = $data_SingleDate . '_' . $i_id;
								}
							}
						}
					}
				}
			}

			// If not All Dates display (select only one date for each event)
			if ( $datesDisplay == 2
				&& count($AllDatesDisplay) > 0 )
			{
				$ex_min 	= explode('_', min($AllDatesDisplay));
//				$min_date	= $ex_min[0];
				$min_date	= JHtml::date($ex_min[0], 'Y-m-d H:i', null);
				$ex_max 	= explode('_', max($AllDatesDisplay));
//				$max_date	= $ex_max[0];
				$max_date	= JHtml::date($ex_max[0], 'Y-m-d H:i', null);

				if ($filterTime != '4')
				{
					// min date is upcoming
					if ( $min_date >= $datetime_today )
					{
						$AllDatesDisplay = array(min($AllDatesDisplay));
					}

					// All events
					elseif ($filterTime == '0')
					{
						// min date in Period and upcoming
						if (in_array($min_date, $period_array)
							&& $min_date >= $datetime_today )
						{
							$AllDatesDisplay = array(min($AllDatesDisplay));
						}

						// min date is Single date and not past
						elseif ( ! in_array($min_date, $period_array)
							&& ($min_date > $datetime_today) )
						{
							$AllDatesDisplay = array(min($AllDatesDisplay));
						}

						// min date is Single date and past
						else
						{
							$AllDatesDisplay = array(max($AllDatesDisplay));
						}
					}
					else
					{
						$AllDatesDisplay = array(max($AllDatesDisplay));
					}
				}
				else
				{
					$AllDatesDisplay = array(min($AllDatesDisplay));
				}
			}

			$AllDatesFilterTime = array();

			foreach ($AllDatesDisplay as $fD)
			{
				$ex_date		= explode('_', $fD);
				$get_date		= $ex_date['0'];
				$date_get_date	= JHtml::date($get_date, 'Y-m-d', $eventTimeZone);
				$data_date_get_date	= date('Y-m-d', strtotime($get_date));

				// Frontend Filtering
				if ( ! empty($filter_year))
				{
					if (date('Y', strtotime($get_date)) == $filter_year)
					{
						$AllDatesFilterTime[] = $fD;
					}
				}
				elseif ( ! empty($filter_startdate) && ! empty($filter_enddate))
				{
					if (strtotime($get_date) >= strtotime($filter_startdate)
						&& strtotime($get_date) <= strtotime($filter_enddate)
						)
					{
						$AllDatesFilterTime[] = $fD;
					}
				}

				// (0) Filter Dates : All Dates
				elseif ($filterTime == 0)
				{
					// Period with no weekdays selected
					if ( in_array($get_date, $perioddates)
						&& $only_startdate
						&& ! in_array($StDate . '_' . $i_id, $AllDatesFilterTime)
						)
					{
						$AllDatesFilterTime[] = $data_StDate . '_' . $i_id;
					}

					// Period with weekdays selected
					elseif ( in_array($get_date, $perioddates)
						&& ! $only_startdate
						)
					{
						$AllDatesFilterTime[] = $fD;
					}

					// Single Dates
					elseif ( ! in_array($get_date, $perioddates) )
					{
						$AllDatesFilterTime[] = $fD;
					}
				}

				// (1) Filter Dates : Ongoing and Upcoming
				elseif ($filterTime == 1)
				{
					// Period with no weekdays selected
					if (in_array($get_date, $perioddates)
						&& $only_startdate
						&& strtotime($EnDate) >= strtotime($datetime_today)
						&& !in_array($StDate . '_' . $i_id, $AllDatesFilterTime)
						)
					{
						$AllDatesFilterTime[] = $data_StDate . '_' . $i_id;
					}

					// Period with weekdays selected
					elseif (in_array($get_date, $perioddates)
						&& !$only_startdate
						)
					{
						// If display time, control end time of the day
						if ($i_displaytime == 1
							&& strtotime($date_get_date . ' ' . $time_enddate) >= strtotime($datetime_today))
						{
							$AllDatesFilterTime[] = $fD;
						}

						// If do not display time, control start time of the day
						elseif ($i_displaytime != 1
							&& strtotime($date_get_date) >= strtotime($date_today))
						{
							$AllDatesFilterTime[] = $fD;
						}
					}

					// Single Dates
					elseif (!in_array($get_date, $perioddates)
//						&& strtotime($get_date) >= strtotime($datetime_today)
						// Changed because single dates have no end time, so admitted end time is midnight.
						&& strtotime($get_date) >= strtotime($date_today)
						)
					{
						$AllDatesFilterTime[] = $fD;
					}
				}

				// (2) Filter Dates : Past Dates
				elseif ($filterTime == 2)
				{
					// Period with no weekdays selected
					if ( in_array($get_date, $perioddates)
						&& $only_startdate
						&& (strtotime($EnDate) < strtotime($datetime_today))
						 )
					{
						$AllDatesFilterTime[] = $fD;
					}

					// Period with weekdays selected
					elseif ( in_array($get_date, $perioddates)
						&& !$only_startdate
						&&  strtotime($get_date) < strtotime($datetime_today)
						&&  strtotime($date_get_date . ' ' . $time_enddate) < strtotime($datetime_today)
						 )
					{
						$AllDatesFilterTime[] = $fD;
					}

					// Single Dates
					elseif ( !in_array($get_date, $perioddates)
						&& strtotime($get_date) < strtotime($datetime_today)
						 )
					{
						$AllDatesFilterTime[] = $fD;
					}
				}

				// (3) Filter Dates : Upcoming
				elseif ($filterTime == 3)
				{
					// Period with no weekdays selected
					if (in_array($get_date, $perioddates)
						&& $only_startdate
						&& (strtotime($StDate) > strtotime($datetime_today))
						)
					{
						$AllDatesFilterTime[] = $fD;
					}

					// Period with weekdays selected
					elseif (in_array($get_date, $perioddates)
						&& ! $only_startdate
						&&  strtotime($get_date) > strtotime($datetime_today)
						&&  strtotime($date_get_date . ' ' . $time_startdate) > strtotime($datetime_today)
						)
					{
						$AllDatesFilterTime[] = $fD;
					}

					// Single Dates
					elseif ( ! in_array($get_date, $perioddates)
						&& strtotime($get_date) > strtotime($datetime_today)
						)
					{
						$AllDatesFilterTime[] = $fD;
					}
				}

				// (4) Filter Dates : Ongoing Events today
				elseif ($filterTime == 4)
				{
					// Period with no weekdays selected
					if (in_array($get_date, $perioddates)
						&& $only_startdate
						&& strtotime($EnDate) > strtotime($datetime_today)
						&& strtotime($StDate) < (strtotime($date_today) + 86400)
						)
					{
						$AllDatesFilterTime[] = $data_date_get_date . ' ' . $data_time_startdate . '_' . $i_id;
					}

					// Period with weekdays selected
					elseif ( in_array($get_date, $perioddates)
						&& ! $only_startdate
						&& ( strtotime($date_get_date) == strtotime($date_today)
						&& strtotime($date_get_date . ' ' . $time_enddate) < (strtotime($date_today) + 86400) )
						 )
					{
						$AllDatesFilterTime[] = $fD;
					}

					// Single Dates
					elseif ( !in_array($get_date, $perioddates)
//						&& ( strtotime($get_date) >= strtotime($datetime_today)
						// Changed because single dates have no end time, so admitted end time is midnight.
						&& ( strtotime($get_date) >= strtotime($date_today)
						&& strtotime($get_date) < (strtotime($date_today) + 86400) )
						 )
					{
						$AllDatesFilterTime[] = $fD;
					}
				}
			}

			$list_all_dates = array_merge($list_all_dates, $AllDatesFilterTime);
		}

		if ($orderby == 2)
		{
			sort($list_all_dates);
		}
		else
		{
			rsort($list_all_dates);
		}

		return $list_all_dates;
	}

	/**
	 * Get and update NEXT DATE
	 *
	 * @since 3.5.4
	 */

	public static function getNext()
	{
		$app = JFactory::getApplication();
		$params = $app->getParams();

		// Get Settings
		$filterTime		= $params->get('time', 1);

		// Set vars
		$nodate			= '0000-00-00 00:00:00';
		$eventTimeZone	= null;
		$datetime_today	= JHtml::date('now', 'Y-m-d H:i:s'); // Joomla Time Zone
		$date_today		= JHtml::date('now', 'Y-m-d'); // Joomla Time Zone
		$time_today		= JHtml::date('now', 'H:i:s'); // Joomla Time Zone
//		$datetime_today	= date('Y-m-d H:i:s');
//		$date_today		= date('Y-m-d');
//		$time_today		= date('H:i:s');

		// Preparing connection to db
		$db	= Jfactory::getDbo();

		// Preparing the query
		$query = $db->getQuery(true);

		$query->select('next AS tNext, dates AS tDates, startdate AS tStartdate, enddate AS tEnddate,
						weekdays AS tWeekdays, id AS tId, state AS tState, access AS tAccess');
		$query->from('`#__icagenda_events` AS e');
		$query->where(' e.state = 1 OR e.state = 0 ');
		$db->setQuery($query);

		$all_next_dates = $db->loadObjectList();

		foreach ($all_next_dates as $nd)
		{
			$nd_next		= $nd->tNext;
			$nd_id			= $nd->tId;
			$nd_state		= $nd->tState;
			$nd_dates		= $nd->tDates;
			$nd_startdate	= $nd->tStartdate;
			$nd_enddate		= $nd->tEnddate;
			$nd_weekdays	= $nd->tWeekdays;

			// If Single Dates, added to all dates for this event
			$singleDates	= iCString::isSerialized($nd_dates) ? unserialize($nd_dates) : array();

			$AllDates = array();

			// Get WeekDays Array
			$WeeksDays = iCDatePeriod::weekdaysToArray($nd_weekdays);

			if (isset ($singleDates)
				&& $singleDates != NULL
				&& !in_array($nodate, $singleDates)
				&& !in_array('', $singleDates)
				)
			{
				$AllDates = array_merge($AllDates, $singleDates);
			}
			elseif (in_array('', $singleDates))
			{
				$datesarray		= array();
				$nodate			= array('0000-00-00 00:00');
				$datesmerger	= array_push($datesarray, $nodate);
				$DatesUpdate	= serialize($nodate);

				$query	= $db->getQuery(true);
				$query->update('#__icagenda_events');
				$query->set("`dates`='" . (string)$DatesUpdate . "'");
				$query->where('`id`=' . (int)$nd_id);
				$db->setQuery($query);
				$db->query($query);

				$nosingledates	= unserialize($DatesUpdate);
				$AllDates		= array_merge($AllDates, $nosingledates);
			}

//			$StDate			= JHtml::date($nd_startdate, 'Y-m-d H:i', $eventTimeZone);
//			$EnDate			= JHtml::date($nd_enddate, 'Y-m-d H:i', $eventTimeZone);

//			$date_enddate	= JHtml::date($nd_enddate, 'Y-m-d', $eventTimeZone);
//			$time_enddate	= JHtml::date($nd_enddate, 'H:i', $eventTimeZone);
//			$date_startdate = JHtml::date($nd_startdate, 'Y-m-d', $eventTimeZone);
//			$time_startdate = JHtml::date($nd_startdate, 'H:i', $eventTimeZone);

			$StDate			= date('Y-m-d H:i', strtotime($nd_startdate));
			$EnDate			= date('Y-m-d H:i', strtotime($nd_enddate));

			$date_enddate	= date('Y-m-d', strtotime($nd_enddate));
			$time_enddate	= date('H:i', strtotime($nd_enddate));
			$date_startdate = date('Y-m-d', strtotime($nd_startdate));
			$time_startdate = date('H:i', strtotime($nd_startdate));

//			$perioddates	= iCDatePeriod::listDates($nd_startdate, $nd_enddate, $eventTimeZone);
			$perioddates	= iCDatePeriod::listDates($nd_startdate, $nd_enddate);

			$only_startdate	= ($nd_weekdays || $nd_weekdays == '0') ? false : true;

			if (isset($perioddates)
				&& $perioddates != NULL
				)
			{
				// Period with no weekdays in Upcoming and Past options
				if ($only_startdate
					&& ($filterTime == '3' || $filterTime == '2')
					)
				{
					array_push($AllDates, $StDate);
				}
				else
				{
					foreach ($perioddates as $Dat)
					{
						if (in_array(date('w', strtotime($Dat)), $WeeksDays))
						{
							$date_Dat	= date('Y-m-d', strtotime($Dat));
							$SingleDate	= date('Y-m-d H:i', strtotime($Dat));

							if ( $date_Dat == $date_today && $filterTime != 3 )
							{
								// Next in Period is today, so set end time
								array_push($AllDates, $date_Dat . ' ' .$time_startdate);
							}
							else
							{
								array_push($AllDates, $SingleDate);
							}
						}
					}
				}
			}

			rsort($AllDates);

			if ($AllDates == NULL)
			{
				$next ='0000-00-00 00:00:00';
			}
			else
			{
				$date_lastdate		= date('Y-m-d', strtotime($AllDates[0]));
				$datetime_lastdate	= date('Y-m-d H:i:s', strtotime($AllDates[0]));

				$date_startdate		= date('Y-m-d', strtotime($nd_startdate));
				$date_enddate		= date('Y-m-d', strtotime($nd_enddate));

				$time_startdate		= date('H:i:s', strtotime($nd_startdate));
				$time_enddate		= date('H:i:s', strtotime($nd_enddate));

				$returnNext			= $nd_next;

				$next_is_set		= '0';

//				$today_SD	= '0';
				$today_upcoming_SD	= '0';
				$upcoming_SD		= '0';

				foreach ($AllDates as $a)
				{
					$tsdate_a = date('Y-m-d', strtotime($a));

					if ($tsdate_a == $date_today)
					{
						// All single dates today
//						$today_SD = $today_SD + 1;
						// All single dates today and not yet started
						$today_upcoming_SD	= (strtotime($a) > strtotime($datetime_today)) ? ($today_upcoming_SD + 1) : $today_upcoming_SD;
					}

					if ($tsdate_a >= $datetime_today)
					{
						// All upcoming single dates
						$upcoming_SD	= $upcoming_SD + 1;
					}
				}

				$total_today_SD = $today_upcoming_SD;

				foreach ($AllDates as $a)
				{
					$tsdatetime_a	= date('Y-m-d H:i:s', strtotime($a));
					$tsdate_a		= date('Y-m-d', strtotime($a));

					// Only past single dates
					if ($datetime_lastdate < $datetime_today
						&& $date_lastdate != $date_today
						&& $next_is_set == '0')
					{
						$returnNext = date('Y-m-d H:i:s', strtotime($AllDates[0]));
						$next_is_set = $next_is_set + 1;
					}

					// The last date is today
					elseif ($date_lastdate == $date_today
						&& $next_is_set == '0'
						&& $total_today_SD == 1)
					{
						// Period divided into days
						if ($nd_startdate != $nodate
							&& $nd_enddate != $nodate
							&& in_array($a, $perioddates)
							&& !$only_startdate
							)
						{
							$returnNext = date('Y-m-d', strtotime($nd_enddate)) . ' ' . $time_startdate;
							$next_is_set = $next_is_set + 1;
						}

						// Full period (from ... to ...)
						elseif ($nd_startdate != $nodate
							&& $nd_enddate != $nodate
							&& in_array($a, $perioddates)
							&& $only_startdate
							)
						{
							$returnNext = date('Y-m-d', strtotime($nd_startdate)) . ' ' . $time_startdate;
							$next_is_set = $next_is_set + 1;
						}

						// Single date
						else
						{
							if ($datetime_lastdate > $datetime_today)
							{
								$today_upcoming_SD = $today_upcoming_SD - 1;
							}

							if ($datetime_lastdate > $datetime_today
								&& $today_upcoming_SD == '0')
							{
								$returnNext = date('Y-m-d H:i:s', strtotime($AllDates[0]));
								$next_is_set = $next_is_set + 1;
							}
						}
					}

					// Multiple upcoming single dates
//					elseif ($tsdatetime_a > $datetime_today)
					// Changed because single dates have no end time, so admitted end time is midnight.
					elseif ($tsdatetime_a > $date_today
						&& $next_is_set == '0')
					{
						// Remaining Today's upcoming dates
						if ($tsdate_a == $date_today)
						{
							if ($tsdatetime_a > $datetime_today)
							{
								$today_upcoming_SD = $today_upcoming_SD - 1;
							}
						}

						// Remaining Upcoming dates
						if ($tsdate_a >= $datetime_today)
						{
							$upcoming_SD = $upcoming_SD - 1;
						}

						if ($today_upcoming_SD == '0'
							&& $upcoming_SD == '0')
						{
							$returnNext = date('Y-m-d H:i:s', strtotime($a));
							$next_is_set = $next_is_set + 1;
						}
					}
				}

				// Test End Date if Next Date or Last Date (3.1.5)
				$date_returnNext	= date('Y-m-d', strtotime($returnNext));
				$time_returnNext	= date('H:i:s', strtotime($returnNext));

				if ( ($date_enddate != '0000-00-00')
					&& ( $date_today == $date_enddate || $date_today == $date_returnNext) )
				{
					$time_LastTime = $time_startdate;
				}
				else
				{
					$time_LastTime = $time_returnNext;
				}

				// Fix 3.1.12 (removed isset($tPeriod))
				if ( ($nd_enddate != $nodate)
					&& ($date_startdate < $date_today)
					&& ($date_enddate == $date_today)
					&& ($time_LastTime >= $time_today) )
				{
//					$returnNextPediod = JHtml::date($nd_enddate, 'Y-m-d', $eventTimeZone) . ' ' . $time_startdate;
					$returnNextPediod = date('Y-m-d', strtotime($nd_enddate)) . ' ' . $time_startdate;
				}
				else
				{
					$returnNextPediod = $returnNext;
				}

				// Set next var
				if ( ($date_returnNext == $date_enddate)
					&& ($date_enddate == $date_today) )
				{
					$next = $returnNextPediod;
				}
				elseif (strtotime($date_startdate) < strtotime($date_today)
					&& strtotime($date_enddate) >= strtotime($date_today)
					&& strtotime($time_enddate) != strtotime($time_returnNext)
					&& strtotime($time_LastTime) > strtotime($time_today)
					)
				{
					$next = $date_returnNext . ' ' . date('H:i:s', strtotime($time_LastTime));
				}
				else
				{
					$next = $returnNext;
				}
			}
			// 3.1.12 Fixed and update events with bug
			if ($nd_next == $nodate
				&& $nd_state == 0
				&& $nd_startdate != $nodate
				&& $nd_enddate != $nodate
				&& strtotime($nd_enddate) >= strtotime($nd_startdate)
				)
			{
				$next = $returnNext;

				$query	= $db->getQuery(true);
				$query->update('#__icagenda_events');
				$query->set('`state`=1');
				$query->where('`id`='.(int)$nd_id);
				$db->setQuery($query);
				$db->query($query);
			}

			if ($next != $nd_next)
			{
				$query	= $db->getQuery(true);
				$query->update('#__icagenda_events');
				$query->set("`next`='".$next."'");
				$query->where('`id`='.(int)$nd_id);
				$db->setQuery($query);
				$db->query($query);
			}
		}
	}

	/**
	 * Returns the element of a SQL query WHERE clause to support filtering the selection of Events using Event Features
	 *
	 * Controlled by menu parameters:
	 *  features_filter - array of Feature IDs
	 *  features_incl_excl - indicates whether the Feature IDs are to be used to include or exclude Events
	 *  features_any_all - indicates whether any Feature ID or all Feature IDs required to include or exclude an Event
	 *
	 * One or more sub-queries is referenced in a WHERE clause with IN() or NOT IN() to include or exclude Events.
	 *
	 * If any Feature ID in isolation is to include or exclude Event records then a single sub-query is used that
	 * uses a simple inner join between the feature and feature_xref tables to identify the distinct set of Event IDs
	 * linked to any one of the spacific Feature IDs.
	 *
	 * If all Feature IDs combined are required to include or exclude Events then separate sub-queries are used for
	 * each of the spacific Feature IDs. For this case, a more efficient option is available involving a direct join
	 * with either an inner or outer join, according to whether records are being included or excluded but this
	 * puts an unreasonable constraint on the overall syntax of the query.
	 */
	public static function getFeaturesFilter()
	{
		// get the application object
		$app = JFactory::getApplication();
		$params = $app->getParams();

		// Initialise a return value that can be included harmlessly in a WHERE clause, if necessary
		$filter = ' TRUE ';
		$featureids = $params->get('features_filter', '');

		if (is_array($featureids) && !empty($featureids))
		{
			$db = Jfactory::getDbo();
			$incl_excl = $params->get('features_incl_excl', '1') == '1' ? '' : 'NOT';

			if ($params->get('features_any_all', '1') == '1')
			{
				// Any single Feature ID will include or exclude events
				// Create comma separated list of Feature IDs
				$featureids = implode(',', $featureids);
				// Create a single sub-query
				$sub_query = $db->getQuery(true);
				$sub_query->select('fx.event_id')
					->from('#__icagenda_feature_xref AS fx')
					->innerJoin("#__icagenda_feature AS f ON fx.feature_id=f.id AND f.state=1 AND f.show_filter=1 AND f.id IN($featureids)");
				// Join the sub-query to the main query
				$filter = "(e.id $incl_excl IN(" . (string) $sub_query . '))';
			}
			else
			{
				// All Feature IDs combined will include or exclude events
				// Create a separate sub-query for each of the Feature IDs
				$sub_queries = array();

				foreach ($featureids as $featureid)
				{
					$sub_query = $db->getQuery(true);
					$sub_query->select('fx.event_id')
						->from('#__icagenda_feature_xref AS fx')
						->innerJoin("#__icagenda_feature AS f ON fx.feature_id=f.id AND f.state=1 AND f.show_filter=1 AND f.id=$featureid");
					$sub_queries[] = "e.id $incl_excl IN(" . (string) $sub_query . ')';
				}

				// Combine the sub-queries depending on inclusion or exclusion of events
				$filter = "(" . implode($incl_excl == 'NOT' ? " \nOR " : " \nAND ", $sub_queries) . ')';
			}
		}

		return $filter;
	}

	/**
	 * Return Array of all registrations from an event (date@@people)
	 * date : registered date
	 * people : nb of tickets for this registration
	 *
	 * @since	3.5.0
	 */
	public static function registeredList($id = null)
	{
		// Registrations total
		$db		= Jfactory::getDbo();
		$query	= $db->getQuery(true);
		$query->select('r.date AS date, r.eventid AS eventid, r.people AS people');
		$query->from('`#__icagenda_registration` AS r');
		$query->where('r.state = 1');

		if ($id)
		{
			$query->where('r.eventid = ' . $db->q($id));
		}

		$db->setQuery($query);
		$result = $db->loadObjectList();

		$registeredList = array();

		foreach ($result AS $r)
		{
			$reg_date = $r->date ? $r->date : 'period';
			$registeredList[] = $r->eventid . '@@' . $reg_date . '@@' . $r->people;
		}

		return $registeredList;
	}

	/**
	 * Return list of all dates (singles and period) from an event
	 *
	 * @since	3.5.0 (Not Yet Used)
	 */
	public static function thisEventDates($id)
	{
		// Set vars
		$nodate			= '0000-00-00 00:00:00';
		$ic_nodate		= '0000-00-00 00:00';
		$eventTimeZone	= null;

		// Get Data
		$db		= Jfactory::getDbo();
		$query	= $db->getQuery(true);
        $query->select('e.next, e.dates, e.startdate, e.enddate, e.period, e.weekdays, e.displaytime, e.id');
        $query->from('#__icagenda_events AS e');
		$query->leftJoin('`#__icagenda_category` AS c ON c.id = e.catid');
		$query->where('c.state = 1');
		$query->where('e.id = ' . $db->q($id));
		$db->setQuery($query);
		$result = $db->loadObjectList();

		// Get Data
		$tId			= $id;
		$tDates			= $result->dates;
		$tStartdate		= $result->startdate;
		$tEnddate		= $result->enddate;
		$tWeekdays		= $result->weekdays;

		// Declare AllDates array
		$thisEventDates = array();

		// Get WeekDays Array
		$WeeksDays = iCDatePeriod::weekdaysToArray($tWeekdays);

		// If Single Dates, added each one to All Dates for this event
		$singledates = unserialize($tDates);

		foreach ($singledates as $sd)
		{
			$isValid = iCDate::isDate($sd);

			if ($isValid)
			{
				array_push($thisEventDates, $sd);
			}
		}

		$perioddates = iCDatePeriod::listDates($tStartdate, $tEnddate, $eventTimeZone);

		if (isset ($perioddates)
			&& $perioddates != NULL)
		{
			foreach ($perioddates as $Dat)
			{
				if (in_array(date('w', strtotime($Dat)), $WeeksDays))
				{
					$isValid = iCDate::isDate($Dat);

					if ($isValid)
					{
//						$SingleDate = JHtml::date($Dat, 'Y-m-d H:i:s', $eventTimeZone);
						$SingleDate = date('Y-m-d H:i:s', strtotime($Dat));

						array_push($thisEventDates, $SingleDate);
					}
				}
			}
		}

		return $thisEventDates;
	}
}
utilities/events/index.html000060400000000037152455705350012067 0ustar00<!DOCTYPE html><title></title>
utilities/menus/menus.php000060400000016174152455705350011566 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     iCagenda
 * @subpackage  utilities
 * @copyright   Copyright (c)2014-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.12 2015-09-10
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * class icagendaCategories
 */
class icagendaMenus
{
	/**
	 * Function to return all published 'List of Events' menu items
	 *
	 * @access	public static
	 * @param	none
	 * @return	array of menu item info this way : Itemid-mcatid-lang
	 *
	 * @since	3.4.0
	 */
	static public function iClistMenuItemsInfo()
	{
		$app = JFactory::getApplication();
//		$params		= $app->getParams();
		$iCparams	= JComponentHelper::getParams('com_icagenda');

		// List all menu items linking to list of events
		$db		= JFactory::getDbo();
		$query	= $db->getQuery(true);
		$query->select('m.title, m.published, m.id, m.params, m.language')
			->from('`#__menu` AS m')
			->where( "(m.link = 'index.php?option=com_icagenda&view=list') AND (m.published = 1)" );

		if (JLanguageMultilang::isEnabled())
		{
			$query->where('m.language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ')');
		}

		$db->setQuery($query);
		$link = $db->loadObjectList();

		$iC_list_menus = array();

		foreach ($link as $iClistMenu)
		{
			$menuitemid	= $iClistMenu->id;
//			$menulang	= $iClistMenu->language;

			if ($menuitemid)
			{
				$menu		= $app->getMenu();
				$menuparams	= $menu->getParams($menuitemid);
			}

			$mcatid		= $menuparams->get('mcatid');
			$menufilter	= $menuparams->get('time') ? $menuparams->get('time') : $iCparams->get('time', '0');

			if (is_array($mcatid))
			{
				$mcatid	= implode(',', $mcatid);
			}

//			array_push($iC_list_menus, $menuitemid . '_' . $mcatid . '_' . $menulang . '_' . $menufilter);
			array_push($iC_list_menus, $menuitemid . '_' . $mcatid . '_' . $menufilter);
		}

		return $iC_list_menus;
	}

	/**
	 * Function to return all published 'List of Events' menu items
	 *
	 * @access	public static
	 * @param	none
	 * @return	array of menu item info this way : Itemid-mcatid-lang
	 *
	 * @since	3.4.0
	 */
	static public function iClistMenuItems()
	{
		$app = JFactory::getApplication();

		// List all menu items linking to list of events
		$db		= JFactory::getDbo();
		$query	= $db->getQuery(true);
		$query->select('m.title, m.published, m.id, m.params, m.language')
			->from('`#__menu` AS m')
			->where( "(m.link = 'index.php?option=com_icagenda&view=list') AND (m.published = 1)" );

		if (JLanguageMultilang::isEnabled())
		{
			$query->where('m.language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ')');
		}

		$query->order('m.id ASC');

		$db->setQuery($query);
		$iC_list_menu_items = $db->loadObjectList();

		if ($iC_list_menu_items)
		{
			return $iC_list_menu_items;
		}
		else
		{
			return array();
		}
	}

	/**
	 * Function to return menu Itemid to display an event
	 *
	 * @access	public static
	 * @return	menu Itemid
	 *
	 * @since	3.5.7
	 */
	static public function thisEventItemid($date, $category, $array_menuitems = null)
	{
		$iC_list_menus = $array_menuitems ? $array_menuitems : self::iClistMenuItemsInfo();

		$datetime_today	= JHtml::date('now', 'Y-m-d H:i');
		$date_today		= JHtml::date('now', 'Y-m-d');

		// set menu link for each event (itemID) depending of category and/or language
		$onecat		= $multicat		= '0';
		$link_one	= $link_multi	= '';

		$menu_IDs_category	= array();
		$menu_IDs_all		= array();
		$itemID_is_set		= 0;

		foreach ($iC_list_menus AS $iCm)
		{
			$value			= explode('_', $iCm);
			$iCmenu_id		= $value['0'];
			$iCmenu_mcatid	= $value['1'];
			$iCmenu_filter	= $value['2'];

			$iCmenu_mcatid_array = ! is_array($iCmenu_mcatid) ? explode(',', $iCmenu_mcatid) : array();

			// Menu can display past events
			if ($iCmenu_filter == 2
				&& strtotime($date) < strtotime($datetime_today)
				&& ! $itemID_is_set)
			{
				// If menu category filter is set, and item category is in filtered categories
				if (in_array($category, $iCmenu_mcatid_array))
				{
					$menu_IDs_category[] = $iCmenu_id;
					$itemID_is_set = $itemID_is_set + 1;
				}
				elseif ( ! $iCmenu_mcatid)
				{
					$menu_IDs_all[] = $iCmenu_id;
				}
			}

			// Menu can display today's events
			elseif ($iCmenu_filter == 4
				&& strtotime($date) > strtotime($date_today)
				&& strtotime($date) < strtotime("+1 DAY", strtotime($date_today))
				&& ! $itemID_is_set)
			{
				// If menu category filter is set, and item category is in filtered categories
				if (in_array($category, $iCmenu_mcatid_array))
				{
					$menu_IDs_category[] = $iCmenu_id;
					$itemID_is_set = $itemID_is_set + 1;
				}
				elseif ( ! $iCmenu_mcatid)
				{
					$menu_IDs_all[] = $iCmenu_id;
				}
			}

			// Menu can display today's events and upcoming events
			elseif ($iCmenu_filter == 1
				&& strtotime($date) > strtotime($date_today)
				&& ! $itemID_is_set)
			{
				// If menu category filter is set, and item category is in filtered categories
				if (in_array($category, $iCmenu_mcatid_array))
				{
					$menu_IDs_category[] = $iCmenu_id;
					$itemID_is_set = $itemID_is_set + 1;
				}
				elseif ( ! $iCmenu_mcatid)
				{
					$menu_IDs_all[] = $iCmenu_id;
				}
			}

			// Menu can display upcoming events
			elseif ($iCmenu_filter == 3
				&& strtotime($date) > strtotime($datetime_today)
				&& ! $itemID_is_set)
			{
				// If menu category filter is set, and item category is in filtered categories
				if (in_array($category, $iCmenu_mcatid_array))
				{
					$menu_IDs_category[] = $iCmenu_id;
					$itemID_is_set = $itemID_is_set + 1;
				}
				elseif ( ! $iCmenu_mcatid)
				{
					$menu_IDs_all[] = $iCmenu_id;
				}
			}

			// Menu can display all events
			elseif ($iCmenu_filter == '0'
				&&  ! $itemID_is_set)
			{
				// If menu category filter is set, and item category is in filtered categories
				if (in_array($category, $iCmenu_mcatid_array))
				{
					$menu_IDs_category[] = $iCmenu_id;
					$itemID_is_set = $itemID_is_set + 1;
				}
				elseif ( ! $iCmenu_mcatid)
				{
					$menu_IDs_all[] = $iCmenu_id;
				}
			}

			if ($iCmenu_mcatid)
			{
				$nb_cat_filter = count($iCmenu_mcatid_array);

				for ($i = $category; in_array($i, $iCmenu_mcatid_array); $i++)
				{
					if ($nb_cat_filter == 1)
					{
						$link_one = $iCmenu_id;
					}
					elseif ($nb_cat_filter > 1)
					{
						$link_multi = $iCmenu_id;
					}
				}
			}
		}

		if (count($menu_IDs_category))
		{
			if ($link_one)
			{
				$linkid = $link_one;
			}
			elseif ($link_multi)
			{
				$linkid = $link_multi;
			}
			else
			{
				$linkid = $menu_IDs_category[0];
			}
		}
		elseif (count($menu_IDs_all))
		{
			$linkid = $menu_IDs_all[0];
		}
		else
		{
//			$linkid = '#';
			$linkid = null;
		}

		return $linkid;
	}
}
utilities/menus/index.html000060400000000037152455705350011712 0ustar00<!DOCTYPE html><title></title>
utilities/index.html000060400000000037152455705350010563 0ustar00<!DOCTYPE html><title></title>
utilities/thumb/thumb.php000060400000010541152455705350011536 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iC Library - Library by Jooml!C, for Joomla!
 *------------------------------------------------------------------------------
 * @package     iCagenda
 * @subpackage  utilities
 * @copyright   Copyright (c)2014-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.0 2015-02-20
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * class icagendaThumb
 */
class icagendaThumb
{
	/**
	 * Return the LARGE thumbnail from an image
	 * Generated by iCagenda with Global Options settings
	 *
	 * @since       3.4.0
	 */
	static public function sizeLarge($image, $type = null, $checksize = null)
	{
		$thumbsPath = self::iCagendaImagesPath();

		// Options Large Size
		$thumbOptions = JComponentHelper::getParams('com_icagenda')->get('thumb_large');
		$width = is_numeric($thumbOptions[0]) ? $thumbOptions[0] : '900';
		$height = is_numeric($thumbOptions[1]) ? $thumbOptions[1] : '600';
		$quality = is_numeric($thumbOptions[2]) ? $thumbOptions[2] : '100';
		$crop = !empty($thumbOptions[3]) ? true : false;

		// Generate large thumb if not exist
		$sizeLarge = iCThumbGet::thumbnail($image, $thumbsPath, 'themes', $width, $height, $quality, $crop, 'ic_large', $type, $checksize);

		return $sizeLarge;
	}

	/**
	 * Return the MEDIUM thumbnail from an image
	 * Generated by iCagenda with Global Options settings
	 *
	 * @since       3.4.0
	 */
	static public function sizeMedium($image, $type = null, $checksize = null)
	{
		$thumbsPath = self::iCagendaImagesPath();

		// Options Medium Size
		$thumbOptions = JComponentHelper::getParams('com_icagenda')->get('thumb_medium');
		$width = is_numeric($thumbOptions[0]) ? $thumbOptions[0] : '300';
		$height = is_numeric($thumbOptions[1]) ? $thumbOptions[1] : '300';
		$quality = is_numeric($thumbOptions[2]) ? $thumbOptions[2] : '100';
		$crop = !empty($thumbOptions[3]) ? true : false;

		// Generate medium thumb if not exist
		$sizeMedium = iCThumbGet::thumbnail($image, $thumbsPath, 'themes', $width, $height, $quality, $crop, 'ic_medium', $type, $checksize);

		return $sizeMedium;
	}

	/**
	 * Return the SMALL thumbnail from an image
	 * Generated by iCagenda with Global Options settings
	 *
	 * @since       3.4.0
	 */
	static public function sizeSmall($image, $type = null, $checksize = null)
	{
		$thumbsPath = self::iCagendaImagesPath();

		// Options Small Size
		$thumbOptions = JComponentHelper::getParams('com_icagenda')->get('thumb_small');
		$width = is_numeric($thumbOptions[0]) ? $thumbOptions[0] : '100';
		$height = is_numeric($thumbOptions[1]) ? $thumbOptions[1] : '100';
		$quality = is_numeric($thumbOptions[2]) ? $thumbOptions[2] : '100';
		$crop = !empty($thumbOptions[3]) ? true : false;

		// Generate small thumb if not exist
		$sizeSmall = iCThumbGet::thumbnail($image, $thumbsPath, 'themes', $width, $height, $quality, $crop, 'ic_small', $type, $checksize);

		return $sizeSmall;
	}

	/**
	 * Return the SMALL thumbnail from an image
	 * Generated by iCagenda with Global Options settings
	 *
	 * @since       3.4.0
	 */
	static public function sizeXSmall($image, $type = null, $checksize = null)
	{
		$thumbsPath = self::iCagendaImagesPath();

		// Options XSmall Size
		$thumbOptions = JComponentHelper::getParams('com_icagenda')->get('thumb_xsmall');
		$width = is_numeric($thumbOptions[0]) ? $thumbOptions[0] : '48';
		$height = is_numeric($thumbOptions[1]) ? $thumbOptions[1] : '48';
		$quality = is_numeric($thumbOptions[2]) ? $thumbOptions[2] : '80';
		$crop = !empty($thumbOptions[3]) ? true : false;

		// Generate xsmall thumb if not exist
		$sizeXSmall = iCThumbGet::thumbnail($image, $thumbsPath, 'themes', $width, $height, $quality, $crop, 'ic_xsmall', $type, $checksize);

		return $sizeXSmall;
	}

	/**
	 * Return the iCagenda images path
	 *
	 * @since       3.4.0
	 */
	static public function iCagendaImagesPath()
	{
		// Get media path
		$params_media = JComponentHelper::getParams('com_media');
		$image_path = $params_media->get('image_path', 'images');

		// Paths to thumbs folder
		$thumbsPath = $image_path . '/icagenda/thumbs';

		return $thumbsPath;
	}
}
utilities/thumb/index.html000060400000000037152455705350011702 0ustar00<!DOCTYPE html><title></title>
config.xml000060400000151244152455705350006551 0ustar00<?xml version="1.0" encoding="utf-8"?>
<config>
	<fieldset name="component"
		label="COM_ICAGENDA_COMPONENT_LABEL"
		addfieldpath="/administrator/components/com_icagenda/assets/elements"
		>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_DESC"
			class="styleblanck"
			icimage="joomlic_iCagenda.png"
			/>
		<field name="version" type="hidden" class="inputbox" />
		<field name="release" type="hidden" class="inputbox" />
		<field name="icsys" type="hidden" class="inputbox" />
		<field name="author" type="hidden" class="inputbox" />
		<field name="bootstrapType" type="hidden" class="inputbox" default="1"/>
	</fieldset>

	<fieldset name="list"
		label="ICLIST" description="COM_ICAGENDA_LIST_PARAMS_DESC"
		addfieldpath="/administrator/components/com_icagenda/models/fields"
		>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_LIST_FILTERS"
			class="stylebox lead input-xxlarge"
			icicon="filter"
			/>
		<!--field
			name="datesDisplay"
			type="list"
			label="COM_ICAGENDA_LIST_TYPE_LBL"
			description="COM_ICAGENDA_LIST_TYPE_DESC"
			class="inputbox"
			default="2"
			>
			<option value="1">COM_ICAGENDA_LIST_ALL_DATES</option>
			<option value="2">COM_ICAGENDA_LIST_ALL_EVENTS</option>
		</field-->
		<field
			name="time"
			type="list"
			class="inputbox"
			label="COM_ICAGENDA_TIME_LBL"
			description="COM_ICAGENDA_TIME_DESC"
			default="0">
			<option value="2">COM_ICAGENDA_OPTION_PAST_EVENTS</option>
			<option value="4">COM_ICAGENDA_OPTION_CURRENT_EVENTS_TODAY_EVENTS</option>
			<option value="1">COM_ICAGENDA_OPTION_CURRENT_EVENTS_TODAY_AND_UPCOMING_EVENTS</option>
			<option value="3">COM_ICAGENDA_OPTION_UPCOMING_EVENTS</option>
			<option value="0">COM_ICAGENDA_OPTION_ALL_EVENTS</option>
		</field>
		<field
			name="orderby"
			type="list"
			label="COM_ICAGENDA_LBL_DATE"
			description="COM_ICAGENDA_DESC_DATE"
			default="2">
				<option value="1">COM_ICAGENDA_DATE_DESC</option>
				<option value="2">COM_ICAGENDA_DATE_ASC</option>
		</field>
		<field
			name="datesDisplay"
			type="radio"
			label="COM_ICAGENDA_LIST_TYPE_LBL"
			description="COM_ICAGENDA_LIST_TYPE_DESC"
			class="btn-group"
			labelclass="control-label"
			onchange="icalert()"
			default="1">
				<option value="1">JYES</option>
				<option value="2">JNO</option>
		</field>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_LIST_HEADER"
			class="stylebox lead input-xxlarge"
			icicon="bi-color-header"
			/>
		<field
			name="headerList"
			type="list"
			default="1"
			label="COM_ICAGENDA_LIST_HEADER_LABEL"
			description="COM_ICAGENDA_LIST_HEADER_DESC"
			>
			<option value="1">JALL</option>
			<option value="2">COM_ICAGENDA_LIST_HEADER_ONLY_TITLE</option>
			<option value="3">COM_ICAGENDA_LIST_HEADER_ONLY_SUBTITLE</option>
			<option value="4">JNONE</option>
		</field>
		<field
			name="CatDesc_global"
			type="modal_icmulti_opt"
			label="COM_ICAGENDA_DISPLAY_CATINFOS_LABEL"
			description="COM_ICAGENDA_DISPLAY_CATINFOS_DESC"
			default="0"
			labelclass="control-label"
			/>
		<field
			name="CatDesc_checkbox"
			type="modal_icmulti_checkbox"
			label=" "
			class="checkbox"
			labelclass="control-label"
			/>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_LIST_NAVIGATOR"
			class="stylebox lead input-xxlarge"
			icicon="navigation"
			/>
		<field
			name="navposition"
			type="list"
			label="COM_ICAGENDA_LIST_NAVIGATOR_POSITION_LABEL"
			description="COM_ICAGENDA_LIST_NAVIGATOR_POSITION_DESC"
			default="1"
			>
			<option value="0">COM_ICAGENDA_TOP</option>
			<option value="1">COM_ICAGENDA_BOTTOM</option>
			<option value="2">COM_ICAGENDA_TOP_AND_BOTTOM</option>
		</field>
		<field
			name="arrowtext"
			type="radio"
			label="COM_ICAGENDA_LIST_ARROWS_TEXT_LABEL"
			description="COM_ICAGENDA_LIST_ARROWS_TEXT_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="pagination"
			type="radio"
			label="COM_ICAGENDA_LIST_PAGINATION_LABEL"
			description="COM_ICAGENDA_LIST_PAGINATION_TEXT_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_LIST_DATEBOX"
			class="stylebox lead input-xxlarge"
			icicon="calendar-2"
			/>
		<field
			name="day_display_global"
			type="radio"
			label="COM_ICAGENDA_LIST_DATEBOX_DAY_DISPLAY_LABEL"
			description="COM_ICAGENDA_LIST_DATEBOX_DAY_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="month_display_global"
			type="radio"
			label="COM_ICAGENDA_LIST_DATEBOX_MONTH_DISPLAY_LABEL"
			description="COM_ICAGENDA_LIST_DATEBOX_MONTH_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="year_display_global"
			type="radio"
			label="COM_ICAGENDA_LIST_DATEBOX_YEAR_DISPLAY_LABEL"
			description="COM_ICAGENDA_LIST_DATEBOX_YEAR_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="time_display_global"
			type="radio"
			label="COM_ICAGENDA_LIST_DATEBOX_TIME_DISPLAY_LABEL"
			description="COM_ICAGENDA_LIST_DATEBOX_TIME_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="0"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_LIST_INFORMATION"
			class="stylebox lead input-xxlarge"
			icicon="info"
			/>
		<field
			name="list_title_length"
			type="text"
			class="input-mini"
			label="COM_ICAGENDA_LIST_TITLE_LENGTH_LABEL"
			description="COM_ICAGENDA_LIST_TITLE_LENGTH_DESC"
			default=""
			/>
		<field
			name="venue_display_global"
			type="radio"
			label="COM_ICAGENDA_LIST_VENUE_DISPLAY_LABEL"
			description="COM_ICAGENDA_LIST_VENUE_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="city_display_global"
			type="radio"
			label="COM_ICAGENDA_LIST_CITY_DISPLAY_LABEL"
			description="COM_ICAGENDA_LIST_CITY_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="country_display_global"
			type="radio"
			label="COM_ICAGENDA_LIST_COUNTRY_DISPLAY_LABEL"
			description="COM_ICAGENDA_LIST_COUNTRY_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="shortdesc_display_global"
			type="radio"
			label="COM_ICAGENDA_LIST_INTROTEXT_DISPLAY_LABEL"
			description="COM_ICAGENDA_LIST_INTROTEXT_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default=""
			>
			<option value="">IC_AUTO</option>
			<option value="0">JHIDE</option>
			<option value="1">IC_SHORTDESC</option>
			<option value="2">IC_AUTO_INTROTEXT</option>
		</field>
	</fieldset>

	<fieldset name="details"
		label="ICEVENT"
		description="COM_ICAGENDA_EVENT_PARAMS_DESC"
		>
		<field
			type="TitleImg"
			label="ICDESC"
			class="stylebox lead input-xxlarge"
			icicon="iclogo"
			/>
		<field
			name="desc_display_event"
			type="list"
			label="COM_ICAGENDA_EVENT_DESCRIPTION_DISPLAY_LABEL"
			description="COM_ICAGENDA_EVENT_DESCRIPTION_DISPLAY_DESC"
			filter="options"
			default=""
			>
			<option value="">IC_AUTO</option>
			<option value="1">IC_FULLDESC</option>
			<option value="2">IC_SHORTDESCRIPTION</option>
			<option value="3">IC_SHORT_AND_FULL_DESCRIPTION</option>
			<option value="0">JHIDE</option>
		</field>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_LEGEND_INFORMATION"
			class="stylebox lead input-xxlarge"
			icicon="info"
			/>
		<field
			name="infoDetails"
			type="radio"
			label="COM_ICAGENDA_INFORMATION_LABEL"
			description="COM_ICAGENDA_INFORMATION_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="accessInfoDetails"
			type="accesslevel"
			label="JFIELD_ACCESS_LABEL"
			description="JFIELD_ACCESS_DESC"
			class="inputbox"
			size="1"
			default="1"
			/>
		<field
			name="targetLink"
			type="list"
			label="COM_ICAGENDA_TARGET_LINK_LABEL"
			description="COM_ICAGENDA_TARGET_LINK_DESC"
			class="inputbox"
			filter="options"
			default="1"
			>
			<option value="0">JBROWSERTARGET_PARENT</option>
			<option value="1">JBROWSERTARGET_NEW</option>
		</field>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_LEGEND_GOOGLE_MAPS"
			class="stylebox lead input-xxlarge"
			icicon="location"
			/>
		<field
			name="GoogleMaps"
			type="radio"
			label="COM_ICAGENDA_LEGEND_GOOGLE_MAPS"
			description="COM_ICAGENDA_GOOGLE_MAPS_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="accessGoogleMaps"
			type="accesslevel"
			label="JFIELD_ACCESS_LABEL"
			description="JFIELD_ACCESS_DESC"
			class="inputbox"
			size="1"
			default="1"
			/>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_EVENT_ALL_DATES"
			class="stylebox lead input-xxlarge"
			icicon="calendar"
			/>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_EVENT_ALL_DATES_DESC"
			class="stylenote alert alert-info input-xxlarge"
			icicon="info-circle"
			/>
		<field
			name="SingleDates"
			type="radio"
			label="COM_ICAGENDA_EVENT_SINGLE_DATES_LABEL"
			description="COM_ICAGENDA_EVENT_SINGLE_DATES_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<!--field
			name="accessSingleDates"
			type="accesslevel"
			label="JFIELD_ACCESS_LABEL"
			description="JFIELD_ACCESS_DESC"
			class="inputbox"
			size="1"
		/-->
		<field
			name="SingleDatesOrder"
			type="list"
			label="COM_ICAGENDA_LBL_DATE"
			description="COM_ICAGENDA_DESC_DATE"
			class="inputbox"
			default="1"
			>
			<option value="1">COM_ICAGENDA_DATE_DESC</option>
			<option value="2">COM_ICAGENDA_DATE_ASC</option>
		</field>
		<field
			name="SingleDatesListModel"
			type="list"
			label="COM_ICAGENDA_EVENT_SINGLE_DATES_LIST_LABEL"
			description="COM_ICAGENDA_EVENT_SINGLE_DATES_LIST_DESC"
			class="inputbox"
			default="1"
			>
			<option value="1">COM_ICAGENDA_EVENT_SINGLE_DATES_VERTICAL</option>
			<option value="2">COM_ICAGENDA_EVENT_SINGLE_DATES_HORIZONTAL</option>
		</field>
		<field type="Title" label=" " class="stylenote" />
		<field
			name="PeriodDates"
			type="radio"
			label="COM_ICAGENDA_EVENT_PERIOD_LABEL"
			description="COM_ICAGENDA_EVENT_PERIOD_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<!--field
			name="accessPeriodDates"
			type="accesslevel"
			label="JFIELD_ACCESS_LABEL"
			description="JFIELD_ACCESS_DESC"
			class="inputbox"
			size="1"
		/-->
		<field
			type="TitleImg"
			label="COM_ICAGENDA_LIST_OF_PARTICIPANTS_LABEL"
			class="stylebox lead input-xxlarge"
			icicon="people"
			/>
		<field
			name="participantList"
			type="radio"
			label="COM_ICAGENDA_LIST_OF_PARTICIPANTS_LABEL"
			description="COM_ICAGENDA_LIST_OF_PARTICIPANTS_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="accessParticipantList"
			type="accesslevel"
			label="JFIELD_ACCESS_LABEL"
			description="JFIELD_ACCESS_DESC"
			class="inputbox"
			size="1"
			default="1"
			/>
		<field
			name="participantSlide"
			type="radio"
			label="COM_ICAGENDA_LIST_OF_PARTICIPANTS_SLIDE_LABEL"
			description="COM_ICAGENDA_LIST_OF_PARTICIPANTS_SLIDE_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="1"
			>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field
			name="participantDisplay"
			type="list"
			label="COM_ICAGENDA_LIST_OF_PARTICIPANTS_DISPLAY_LABEL"
			description="COM_ICAGENDA_LIST_OF_PARTICIPANTS_DISPLAY_DESC"
			class="inputbox"
			filter="options"
			default="1"
			>
			<option value="1">COM_ICAGENDA_LIST_OF_PARTICIPANTS_DISPLAY_FULL</option>
			<option value="2">COM_ICAGENDA_LIST_OF_PARTICIPANTS_DISPLAY_AVATAR</option>
			<option value="3">COM_ICAGENDA_LIST_OF_PARTICIPANTS_DISPLAY_NAMES</option>
		</field>
		<field
			name="fullListColumns"
			type="radio"
			label="COM_ICAGENDA_LIST_DISPLAY_FULL_COLUMN_LABEL"
			description="COM_ICAGENDA_LIST_DISPLAY_FULL_COLUMN_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="tiers"
			>
			<option value="total">1</option>
			<option value="demi">2</option>
			<option value="tiers">3</option>
			<option value="quart">4</option>
		</field>
	</fieldset>

	<fieldset name="register"
		label="COM_ICAGENDA_REGISTRATION_LABEL"
		description="COM_ICAGENDA_REGISTRATION_TO_EVENT_DESC"
		>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_TITLE_REGISTRATION"
			class="stylebox lead input-xxlarge"
			icicon="register"
			/>
		<field
			name="statutReg"
			type="radio"
			label="COM_ICAGENDA_REGISTRATIONS_LABEL"
			description="COM_ICAGENDA_REGISTRATIONS_DESC"
			class="btn-group"
			labelclass="control-label"
			default="0"
			>
			<option value="0">JOFF</option>
			<option value="1">JON</option>
		</field>
		<field
			name="reg_form_access"
			type="accesslevel"
			label="JFIELD_ACCESS_LABEL"
			description="COM_ICAGENDA_REGISTRATION_ACCESS_LEVEL_DESC"
			class="inputbox"
			size="1"
			default="1"
			/>
		<field
			name="maxRlist"
			type="text"
			label="COM_ICAGENDA_MAX_PER_REGISTRATION_LABEL"
			description="COM_ICAGENDA_MAX_PER_REGISTRATION_DESC"
			class="inputbox input-mini"
			size="2"
			default="5"
			/>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_FORM_LABEL"
			class="stylebox lead input-xxlarge"
			icicon="form"
			/>
		<field
			name="RegButtonText"
			type="modal_ph_regbt"
			label="COM_ICAGENDA_REGISTRATION_BUTTON_TEXT"
			description="COM_ICAGENDA_OVERRIDE_BUTTON_TEXT_DESC"
			default=""
			/>
		<!-- Hidden Control Field for Checkdnsrr -->
		<field
			name="Checkdnsrr"
			type="modal_checkdnsrr"
			label=" "
			description=" "
			/>
		<field type="Title" label="COM_ICAGENDA_REGISTRATION_EMAIL_FIELD" class="stylesub" />
		<field
			name="emailRequired"
			type="radio"
			label="COM_ICAGENDA_REGISTRATION_EMAIL_REQUIRED_LABEL"
			description="COM_ICAGENDA_REGISTRATION_EMAIL_REQUIRED_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field
			name="limitRegEmail"
			type="radio"
			label="COM_ICAGENDA_REGISTRATION_LIMIT_EMAIL_LABEL"
			description="COM_ICAGENDA_REGISTRATION_LIMIT_EMAIL_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field
			name="limitRegDate"
			type="radio"
			label="COM_ICAGENDA_REGISTRATION_LIMIT_DATE_LABEL"
			description="COM_ICAGENDA_REGISTRATION_LIMIT_DATE_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field
			name="emailCheckdnsrr"
			type="radio"
			label="COM_ICAGENDA_REGISTRATION_EMAIL_CHECKDNSRR_LABEL"
			description="COM_ICAGENDA_REGISTRATION_EMAIL_CHECKDNSRR_DESC"
			class="btn-group"
			labelclass="control-label"
			default="0"
			>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field type="Title" label="COM_ICAGENDA_REGISTRATION_EMAIL_CONFIRM_FIELD" class="stylesub" />
		<field
			name="emailConfirm"
			type="radio"
			label="COM_ICAGENDA_REGISTRATION_EMAIL_CONFIRM_DISPLAY_LABEL"
			description="COM_ICAGENDA_REGISTRATION_EMAIL_CONFIRM_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field type="Title" label="COM_ICAGENDA_REGISTRATION_PHONE_FIELD" class="stylesub" />
		<field
			name="phoneDisplay"
			type="radio"
			label="COM_ICAGENDA_REGISTRATION_PHONE_DISPLAY_LABEL"
			description="COM_ICAGENDA_REGISTRATION_PHONE_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="phoneRequired"
			type="radio"
			label="COM_ICAGENDA_REGISTRATION_PHONE_REQUIRED_LABEL"
			description="COM_ICAGENDA_REGISTRATION_PHONE_REQUIRED_DESC"
			class="btn-group"
			labelclass="control-label"
			default="0"
			>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field type="Title" label="COM_ICAGENDA_REGISTRATION_NOTES_FIELD" class="stylesub" />
		<field
			name="notesDisplay"
			type="radio"
			label="COM_ICAGENDA_REGISTRATION_NOTES_DISPLAY_LABEL"
			description="COM_ICAGENDA_REGISTRATION_NOTES_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="0"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field type="Title" label="COM_ICAGENDA_CAPTCHA" class="stylesub" />
		<field
			name="reg_captcha"
			type="radio"
			label="COM_ICAGENDA_CAPTCHA"
			description="COM_ICAGENDA_REGISTRATION_CAPTCHA_DESC"
			class="btn-group"
			labelclass="control-label"
			default="0"
			>
			<option
				value="0">JHIDE</option>
			<option
				value="1">JSHOW</option>
		</field>
		<field type="Title" label="COM_ICAGENDA_FORM_VALIDATE_LBL" class="stylesub" />
		<field
			name="reg_form_validation"
			type="radio"
			label="COM_ICAGENDA_FORM_VALIDATE_LBL"
			description="COM_ICAGENDA_FORM_VALIDATE_DESC"
			class="btn-group"
			labelclass="control-label"
			default=""
			>
			<option
				value="">COM_ICAGENDA_FORM_SERVER_CLIENT_VALIDATION</option>
			<option
				value="1">COM_ICAGENDA_FORM_SERVER_VALIDATION</option>
		</field>
		<!--field
			name="reg_captcha"
			type="plugins"
			folder="captcha"
			default=""
			label="COM_ICAGENDA_CAPTCHA_LABEL"
			description="COM_ICAGENDA_REGISTRATION_CAPTCHA_DESC"
			filter="cmd" >
			<option
				value="">JOPTION_USE_DEFAULT</option>
			<option
				value="0">COM_ICAGENDA_NONE_SELECTED</option>
		</field-->
		<field
			type="TitleImg"
			label="COM_ICAGENDA_REGISTRATION_TERMS_LABEL"
			class="stylebox lead input-xxlarge"
			icicon="iclogo"
			/>
		<field
			name="terms"
			type="radio"
			label="COM_ICAGENDA_REGISTRATION_TERMS_LABEL"
			description="COM_ICAGENDA_REGISTRATION_TERMS_DESC"
			class="btn-group"
			labelclass="control-label"
			default="0"
			>
			<option value="0">JDISABLED</option>
			<option value="1">JENABLED</option>
		</field>
		<field
			name="terms_Type"
			type="modal_ictxt_type"
			label="COM_ICAGENDA_REGISTRATION_TERMS_TEXTTYPE_LABEL"
			description="COM_ICAGENDA_REGISTRATION_TERMS_TEXTTYPE_DESC"
			class="btn-group"
			labelclass="control-label"
			default=""
			/>
		<field
			name="termsArticle"
			type="modal_ictxt_article"
			label=" "
			description="COM_ICAGENDA_FIELD_SELECT_ARTICLE_DESC"
			edit="true"
			clear="true"
			default=""
			/>
		<field
			name="termsContent"
			type="modal_ictxt_content"
			label=" "
			buttons="readmore,pagebreak"
			class="inputbox"
			placeholder="text"
			filter="JComponentHelper::filterText"
			labelclass="control-label"
			/>
		<field
			name="termsDefault"
			type="modal_ictxt_default"
			label=" "
			description="COM_ICAGENDA_REGISTRATION_TERMS"
			/>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_TITLE_REGISTRATION_NOTIFICATIONS"
			class="stylebox lead input-xxlarge"
			icicon="iclogo"
			/>
		<field type="Title" label="COM_ICAGENDA_NOTIFICATION_BY_EMAIL_ADMIN" class="stylesub" />
		<field
			name="emailAdminSend"
			type="radio"
			label="COM_ICAGENDA_NOTIFICATION_BY_EMAIL_ADMIN_LBL"
			description="COM_ICAGENDA_NOTIFICATION_BY_EMAIL_ADMIN_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JDISABLED</option>
			<option value="1">JENABLED</option>
		</field>
		<field type="Title" label="COM_ICAGENDA_NOTIFICATION_BY_EMAIL_ADMIN_SELECTION_INFO"
			class="stylenote alert alert-info" />
		<field
			name="emailAdminSend_select"
			type="list"
			label=" "
			description="COM_ICAGENDA_NOTIFICATION_BY_EMAIL_ADMIN_SELECTION_INFO"
			labelclass="control-label"
			multiple="true"
			default="0"
			>
			<option value="0">COM_ICAGENDA_EMAIL_SITE</option>
			<option value="1">COM_ICAGENDA_EMAIL_CREATOR</option>
			<option value="3">COM_ICAGENDA_EMAIL_EVENT_CONTACT</option>
			<option value="2">COM_ICAGENDA_EMAIL_CUSTOM_LIST</option>
		</field>
		<field
			name="emailAdminSend_Placeholder"
			type="modal_ictext_Placeholder"
			label="COM_ICAGENDA_EMAIL_CUSTOM_LIST"
			description="COM_ICAGENDA_REGISTRATION_EMAIL_ADMIN_CUSTOM_LIST_DESC"
			/>
		<field type="Title" label="COM_ICAGENDA_REGISTRATION_EMAIL_USER" class="stylesub" />
		<field
			name="emailUserSend"
			type="radio"
			label="COM_ICAGENDA_CONFIRMATION_BY_EMAIL_USER_LBL"
			description="COM_ICAGENDA_CONFIRMATION_BY_EMAIL_USER_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JDISABLED</option>
			<option value="1">JENABLED</option>
		</field>
		<field
			name="regEmailUser"
			type="radio"
			label="COM_ICAGENDA_REGISTRATION_EMAIL_USER_PERIOD_DEFAULT_LABEL"
			description="COM_ICAGENDA_REGISTRATION_EMAIL_USER_PERIOD_DEFAULT_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">COM_ICAGENDA_CUSTOM_EMAILS</option>
			<option value="1">JDEFAULT</option>
		</field>
		<field type="Title" label=" " class="stylenote" />
		<field
			type="TitleImg"
			label="COM_ICAGENDA_CUSTOM_EMAILS"
			class="stylebox lead input-xxlarge"
			icicon="iclogo"
			/>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_REGISTRATION_EMAIL_USER_NOTICE"
			class="stylenote alert alert-info"
			icimage="info.png"
			/>
		<field
			type="Title"
			label="COM_ICAGENDA_REGISTRATION_EMAIL_USER_PERIOD"
			class="stylesub"
			/>
		<field
			name="emailUserSubjectPeriod"
			type="modal_ictext_Placeholder"
			label="COM_ICAGENDA_REGISTRATION_EMAIL_USER_PERIOD_CUSTOM_SUBJECT_LBL"
			description="COM_ICAGENDA_REGISTRATION_EMAIL_USER_PERIOD_CUSTOM_SUBJECT_DESC"
			class="input-xxlarge"
			/>
		<field
			name="emailUserBodyPeriod"
			type="modal_iC_editor"
			label="COM_ICAGENDA_REGISTRATION_EMAIL_USER_PERIOD_CUSTOM_BODY_LBL"
			description="COM_ICAGENDA_REGISTRATION_EMAIL_USER_PERIOD_CUSTOM_BODY_DESC"
			rows="10"
			cols="80"
			class="input-xxlarge"
			filter="JComponentHelper::filterText"
			default="COM_ICAGENDA_REGISTRATION_EMAIL_USER_PERIOD_DEFAULT_BODY"
			/>
		<field type="Title" label="COM_ICAGENDA_REGISTRATION_EMAIL_USER_DATE" class="stylesub" />
		<field
			name="emailUserSubjectDate"
			type="modal_ictext_Placeholder"
			label="COM_ICAGENDA_REGISTRATION_EMAIL_USER_DATE_CUSTOM_SUBJECT_LBL"
			description="COM_ICAGENDA_REGISTRATION_EMAIL_USER_DATE_CUSTOM_SUBJECT_DESC"
			class="input-xxlarge"
			/>
		<field
			name="emailUserBodyDate"
			type="modal_iC_editor"
			label="COM_ICAGENDA_REGISTRATION_EMAIL_USER_DATE_CUSTOM_BODY_LBL"
			description="COM_ICAGENDA_REGISTRATION_EMAIL_USER_DATE_CUSTOM_BODY_DESC"
			rows="10"
			cols="80"
			class="input-xxlarge"
			filter="JComponentHelper::filterText"
			default="COM_ICAGENDA_REGISTRATION_EMAIL_USER_DATE_DEFAULT_BODY"
			/>
	</fieldset>

	<fieldset name="submit"
		label="COM_ICAGENDA_SUBMIT_AN_EVENT_LABEL"
		description="COM_ICAGENDA_SUBMIT_AN_EVENT_DESC"
		addfieldpath="/administrator/components/com_content/models/fields"
		>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_SUBMIT_PERMISSIONS_LABEL"
			class="stylebox lead input-xxlarge"
			icicon="private"
			/>
		<field type="Title" label="COM_ICAGENDA_SUBMIT_FRONTEND_ACCESS_LABEL" class="stylesub" />
		<field
			name="submitAccess"
			type="accesslevel"
			label="JFIELD_ACCESS_LABEL"
			description="COM_ICAGENDA_SUBMIT_FRONTEND_ACCESS_DESC"
			multiple="true"
			default="2"
			/>
		<field
			name="submitNotLogin"
			type="modal_ictext_type"
			label="COM_ICAGENDA_SUBMIT_NOT_LOGIN_LBL"
			description="COM_ICAGENDA_SUBMIT_NOT_LOGIN_DESC"
			labelclass="control-label"
			default=""
			/>
		<field
			name="submitNotLogin_Content"
			type="modal_ictext_content"
			label=" "
			class="inputbox"
			labelclass="control-label"
			buttons="readmore,pagebreak"
			placeholder="text"
			filter="JComponentHelper::filterText"
			/>
		<field
			name="submitNoRights"
			type="modal_ictext_type"
			label="COM_ICAGENDA_SUBMIT_NO_RIGHTS_LBL"
			description="COM_ICAGENDA_SUBMIT_NO_RIGHTS_DESC"
			labelclass="control-label"
			default=""
			/>
		<field
			name="submitNoRights_Content"
			type="modal_ictext_content"
			label=" "
			class="inputbox"
			labelclass="control-label"
			buttons="readmore,pagebreak"
			placeholder="text"
			filter="JComponentHelper::filterText"
			/>
		<field type="Title" label="COM_ICAGENDA_SUBMIT_APPROVAL_LABEL" class="stylesub" />
		<field
			name="approvalGroups"
			type="usergroup"
			label="IC_MANAGERS"
			description="COM_ICAGENDA_SUBMIT_APPROVAL_GROUPS_DESC"
			multiple="true"
			default="8"
			/>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_SUBMIT_MANAGERS_NOTE"
			class="stylenote alert alert-info input-xxlarge"
			icicon="info-circle"
			/>
		<!--field
			name="managers_note"
			type="Desc"
			label="COM_ICAGENDA_SUBMIT_MANAGERS_NOTE"
			description="COM_ICAGENDA_SUBMIT_APPROVAL_GROUPS_DESC"
			class="alert span9"
			labelclass="control-label"
			/-->
		<field
			type="TitleImg"
			label="COM_ICAGENDA_FORM_LABEL"
			class="stylebox lead input-xxlarge"
			icicon="form"
			/>
		<field
			name="submit_imageDisplay"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_EVENT_IMAGE_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_EVENT_IMAGE_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_imageMaxSize"
			type="text"
			label="COM_ICAGENDA_SUBMIT_EVENT_IMAGE_MAX_SIZE_LABEL"
			description="COM_ICAGENDA_SUBMIT_EVENT_IMAGE_MAX_SIZE_DESC"
			class="inputbox input-mini"
			default="800"
			/>
		<field
			name="submit_periodDisplay"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_PERIOD_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_PERIOD_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_weekdaysDisplay"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_WEEKDAYS_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_WEEKDAYS_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_datesDisplay"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_DATES_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_DATES_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_displaytimeDisplay"
			type="radio"
			class="btn-group"
			default="0"
			label="COM_ICAGENDA_SUBMIT_DISPLAYTIME_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_DISPLAYTIME_DISPLAY_DESC"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_shortdescDisplay"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_SHORTDESC_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_SHORTDESC_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_descDisplay"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_DESCRIPTION_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_DESCRIPTION_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_metadescDisplay"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_METADESCRIPTION_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_METADESCRIPTION_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="0"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_venueDisplay"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_VENUE_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_VENUE_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_emailDisplay"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_EMAIL_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_EMAIL_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_phoneDisplay"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_PHONE_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_PHONE_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_websiteDisplay"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_WEBSITE_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_WEBSITE_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_customfieldsDisplay"
			type="radio"
			label="COM_ICAGENDA_CUSTOMFIELDS"
			description="COM_ICAGENDA_SUBMIT_CUSTOMFIELDS_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_fileDisplay"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_ATTACHMENT_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_ATTACHMENT_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_gmapDisplay"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_GMAP_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_GMAP_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="submit_regoptionsDisplay"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_REGISTRATION_OPTIONS_DISPLAY_LABEL"
			description="COM_ICAGENDA_SUBMIT_REGISTRATION_OPTIONS_DISPLAY_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<!--field
			name="submit_captcha"
			type="plugins"
			folder="captcha"
			default=""
			label="COM_ICAGENDA_CAPTCHA_LABEL"
			description="COM_ICAGENDA_SUBMIT_CAPTCHA_DESC"
			filter="cmd" >
			<option
				value="">JOPTION_USE_DEFAULT</option>
			<option
				value="0">COM_ICAGENDA_NONE_SELECTED</option>
		</field-->
		<field
			name="submit_captcha"
			type="radio"
			label="COM_ICAGENDA_CAPTCHA"
			description="COM_ICAGENDA_SUBMIT_CAPTCHA_DESC"
			class="btn-group"
			labelclass="control-label"
			default="0"
			>
			<option
				value="0">JHIDE</option>
			<option
				value="1">JSHOW</option>
		</field>
		<field type="Title" label="COM_ICAGENDA_FORM_VALIDATE_LBL" class="stylesub" />
		<field
			name="submit_form_validation"
			type="radio"
			label="COM_ICAGENDA_FORM_VALIDATE_LBL"
			description="COM_ICAGENDA_FORM_VALIDATE_DESC"
			class="btn-group"
			labelclass="control-label"
			default=""
			>
			<option
				value="">COM_ICAGENDA_FORM_SERVER_CLIENT_VALIDATION</option>
			<option
				value="1">COM_ICAGENDA_FORM_SERVER_VALIDATION</option>
		</field>
		<!--field
			type="TitleImg"
			label="COM_ICAGENDA_SUBMIT_REDIRECT_LABEL"
			class="stylebox lead input-xxlarge"
			icicon="iclogo"
			/-->
		<!--field
			name="submit_redirectUrl"
			type="url"
			label="COM_ICAGENDA_SUBMIT_REDIRECT_URL_LABEL"
			description="COM_ICAGENDA_SUBMIT_REDIRECT_URL_DESC"
			default=""
			hint="http://www.example.com"
			/-->
		<field
			name="submitReturn"
			type="modal_iclink_type"
			label="COM_ICAGENDA_SUBMIT_RETURN_LBL"
			description="COM_ICAGENDA_SUBMIT_RETURN_DESC"
			labelclass="control-label"
			default=""
			/>
		<field
			name="submitReturn_Article"
			type="modal_iclink_article"
			label=" "
			class="inputbox"
			/>
		<field
			name="submitReturn_Url"
			type="modal_iclink_url"
			label=" "
			class="inputbox"
			hint="http://www.example.com"
			/>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_SUBMIT_TOS_LABEL"
			class="stylebox lead input-xxlarge"
			icicon="iclogo"
			/>
		<field
			name="tos"
			type="radio"
			label="COM_ICAGENDA_SUBMIT_TOS_LABEL"
			description="COM_ICAGENDA_SUBMIT_TOS_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JDISABLED</option>
			<option value="1">JENABLED</option>
		</field>
		<field
			name="tos_Type"
			type="modal_ictxt_type"
			label="COM_ICAGENDA_SUBMIT_TOS_TEXTTYPE_LABEL"
			description="COM_ICAGENDA_SUBMIT_TOS_TEXTTYPE_DESC"
			class="btn-group"
			labelclass="control-label"
			default=""
			/>
		<field
			name="tosArticle"
			type="modal_ictxt_article"
			label=" "
			description="COM_ICAGENDA_FIELD_SELECT_ARTICLE_DESC"
			edit="true"
			clear="true"
			default=""
			/>
		<field
			name="tosContent"
			type="modal_ictxt_content"
			label=" "
			class="inputbox"
			labelclass="control-label"
			buttons="readmore,pagebreak"
			placeholder="text"
			filter="JComponentHelper::filterText"
			/>
		<field
			name="tosDefault"
			type="modal_ictxt_default"
			label=" "
			description="COM_ICAGENDA_TOS"
			/>
	</fieldset>

	<fieldset name="global"
		label="COM_ICAGENDA_GLOBAL_PARAMS_LABEL"
		description="COM_ICAGENDA_GLOBAL_PARAMS_INFO"
		>
		<!-- Captcha plugin -->
		<field
			type="TitleImg"
			label="COM_ICAGENDA_CAPTCHA_LABEL"
			class="stylebox lead input-xxlarge"
			icicon="iclogo"
			/>
		<field
			name="captcha"
			type="plugins"
			folder="captcha"
			default=""
			label="COM_ICAGENDA_CAPTCHA_LABEL"
			description="COM_ICAGENDA_CAPTCHA_DESC"
			filter="cmd" >
			<option
				value="">JOPTION_USE_DEFAULT</option>
			<!--option
				value="0">COM_ICAGENDA_NONE_SELECTED</option-->
		</field>
		<!-- Screen Width Thresholds -->
		<field
			type="TitleImg"
			label="COM_ICAGENDA_SCREEN_WIDTH_THRESHOLDS_LABEL"
			class="stylebox lead input-xxlarge"
			icicon="screen"
			/>
		<field
			name="largewidththreshold"
			type="text"
			label="COM_ICAGENDA_LARGE_WIDTH_THRESHOLD_LABEL"
			description="COM_ICAGENDA_LARGE_WIDTH_THRESHOLD_DESC"
			size="30"
			class="inputbox"
			default="1201"
			/>
		<field
			name="mediumwidththreshold"
			type="text"
			label="COM_ICAGENDA_MEDIUM_WIDTH_THRESHOLD_LABEL"
			description="COM_ICAGENDA_MEDIUM_WIDTH_THRESHOLD_DESC"
			size="30"
			class="inputbox"
			default="769"
			/>
		<field
			name="smallwidththreshold"
			type="text"
			label="COM_ICAGENDA_SMALL_WIDTH_THRESHOLD_LABEL"
			description="COM_ICAGENDA_SMALL_WIDTH_THRESHOLD_DESC"
			size="30"
			class="inputbox"
			default="481"
			/>
		<!-- Thumbnails -->
		<field
			type="TitleImg"
			label="COM_ICAGENDA_THUMBNAILS_LABEL"
			class="stylebox lead input-xxlarge"
			icicon="thumbs"
			/>
		<field
			name="thumb_generator"
			type="radio"
			label="COM_ICAGENDA_ICTHUMB_LABEL"
			description="COM_ICAGENDA_ICTHUMB_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field
			name="thumb_large"
			type="modal_thumbs"
			label="COM_ICAGENDA_THUMB_LARGE_LBL"
			description="COM_ICAGENDA_THUMB_LARGE_DESC"
			class="input-small"
			labelclass="control-label"
			/>
		<field
			name="thumb_medium"
			type="modal_thumbs"
			label="COM_ICAGENDA_THUMB_MEDIUM_LBL"
			description="COM_ICAGENDA_THUMB_MEDIUM_DESC"
			class="input-small"
			labelclass="control-label"
			/>
		<field
			name="thumb_small"
			type="modal_thumbs"
			label="COM_ICAGENDA_THUMB_SMALL_LBL"
			description="COM_ICAGENDA_THUMB_SMALL_DESC"
			class="input-small"
			labelclass="control-label"
			/>
		<field
			name="thumb_xsmall"
			type="modal_thumbs"
			label="COM_ICAGENDA_THUMB_XSMALL_LBL"
			description="COM_ICAGENDA_THUMB_XSMALL_DESC"
			class="input-small"
			labelclass="control-label"
			/>
		<!-- Icons -->
		<field
			type="TitleImg"
			label="COM_ICAGENDA_ICONS"
			class="stylebox lead input-xxlarge"
			icicon="icons"
			/>
		<field
			name="iconPrint_global"
			type="list"
			label="COM_ICAGENDA_ICON_PRINT_LABEL"
			description="COM_ICAGENDA_ICON_PRINT_DESC"
			default="0"
			>
			<option value="0">JHIDE</option>
			<!--option value="1">IC_ONLY_EVENTS_LIST</option-->
			<option value="2">IC_ONLY_EVENT_DETAILS</option>
			<!--option value="3">JALL</option-->
		</field>
		<field
			name="iconAddToCal_global"
			type="list"
			label="COM_ICAGENDA_ICON_ADDTOCAL_LABEL"
			description="COM_ICAGENDA_ICON_ADDTOCAL_DESC"
			default="0"
			>
			<option value="0">JHIDE</option>
			<!--option value="1">IC_ONLY_EVENTS_LIST</option-->
			<option value="2">IC_ONLY_EVENT_DETAILS</option>
			<!--option value="3">JALL</option-->
		</field>
		<field
			name="iconAddToCal_size"
			type="radio"
			label="COM_ICAGENDA_ICON_ADDTOCAL_SIZE_LABEL"
			description="COM_ICAGENDA_ICON_ADDTOCAL_SIZE_DESC"
			class="btn-group"
			labelclass="control-label"
			default="16"
			>
			<option value="16">16 px</option>
			<option value="24">24 px</option>
			<option value="32">32 px</option>
		</field>
		<field
			name="iconAddToCal_options"
			type="list"
			label="COM_ICAGENDA_ICON_ADDTOCAL_OPTIONS_LABEL"
			description="COM_ICAGENDA_ICON_ADDTOCAL_OPTIONS_DESC"
			multiple="true"
			>
			<option value="1">COM_ICAGENDA_GCALENDAR_LABEL</option>
			<option value="2">COM_ICAGENDA_VCAL_ICAL_LABEL</option>
			<option value="3">COM_ICAGENDA_OUTLOOK_LABEL</option>
			<option value="4">COM_ICAGENDA_LIVE_CALENDAR_LABEL</option>
			<option value="5">COM_ICAGENDA_YAHOO_CALENDAR_LABEL</option>
		</field>
		<field
			name="features_icon_size_list"
			type="list"
			label="COM_ICAGENDA_FEATURES_ICONSIZE_LIST_LABEL"
			description="COM_ICAGENDA_FEATURES_ICONSIZE_LIST_DESC"
			class="inputbox"
			filter="options"
			default=""
			>
			<option value="">COM_ICAGENDA_FEATURES_ICONSIZE_NONE</option>
			<option value="16_bit">COM_ICAGENDA_FEATURES_ICONSIZE_16</option>
			<option value="24_bit">COM_ICAGENDA_FEATURES_ICONSIZE_24</option>
			<option value="32_bit">COM_ICAGENDA_FEATURES_ICONSIZE_32</option>
			<option value="48_bit">COM_ICAGENDA_FEATURES_ICONSIZE_48</option>
			<option value="64_bit">COM_ICAGENDA_FEATURES_ICONSIZE_64</option>
		</field>
		<field
			name="features_icon_size_event"
			type="list"
			label="COM_ICAGENDA_FEATURES_ICONSIZE_EVENT_LABEL"
			description="COM_ICAGENDA_FEATURES_ICONSIZE_EVENT_DESC"
			class="inputbox"
			filter="options"
			default=""
			>
			<option value="">COM_ICAGENDA_FEATURES_ICONSIZE_NONE</option>
			<option value="16_bit">COM_ICAGENDA_FEATURES_ICONSIZE_16</option>
			<option value="24_bit">COM_ICAGENDA_FEATURES_ICONSIZE_24</option>
			<option value="32_bit">COM_ICAGENDA_FEATURES_ICONSIZE_32</option>
			<option value="48_bit">COM_ICAGENDA_FEATURES_ICONSIZE_48</option>
			<option value="64_bit">COM_ICAGENDA_FEATURES_ICONSIZE_64</option>
		</field>
		<field
			name="show_icon_title"
			type="radio"
			label="COM_ICAGENDA_SHOW_FEATURE_ICON_TITLE_LABEL"
			description="COM_ICAGENDA_SHOW_FEATURE_ICON_TITLE_DESC"
			class="btn-group"
			labelclass="control-label"
			filter="options"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<!-- AddThis -->
		<field
			type="TitleImg"
			label="COM_ICAGENDA_ADDTHIS"
			class="stylebox lead input-xxlarge"
			icimage="addthis_16.png"
			/>
		<field type="Title" label="COM_ICAGENDA_ADDTHIS_DESC" class="stylered input-xxlarge" />
		<field
			name="atlist"
			type="radio"
			label="COM_ICAGENDA_ADDTHIS_LIST_LABEL"
			description="COM_ICAGENDA_ADDTHIS_LIST_DESC"
			class="btn-group"
			labelclass="control-label"
			default="0"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="atevent"
			type="radio"
			label="COM_ICAGENDA_ADDTHIS_EVENT_LABEL"
			description="COM_ICAGENDA_ADDTHIS_EVENT_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="atfloat"
			type="radio"
			label="COM_ICAGENDA_ADDTHIS_FLOAT_LABEL"
			description="COM_ICAGENDA_ADDTHIS_FLOAT_DESC"
			class="btn-group"
			labelclass="control-label"
			default="2"
			>
			<option value="0">JNO</option>
			<option value="1">JGLOBAL_LEFT</option>
			<option value="2">JGLOBAL_RIGHT</option>
		</field>
		<field
			name="aticon"
			type="radio"
			label="COM_ICAGENDA_ADDTHIS_ICON_LABEL"
			description="COM_ICAGENDA_ADDTHIS_ICON_DESC"
			class="btn-group"
			labelclass="control-label"
			default="2"
			>
			<option value="1">COM_ICAGENDA_ADDTHIS_16</option>
			<option value="2">COM_ICAGENDA_ADDTHIS_32</option>
		</field>
		<field
			name="addthis"
			type="text"
			label="COM_ICAGENDA_ADDTHIS_ID_LABEL"
			description="COM_ICAGENDA_ADDTHIS_ID_DESC"
			/>
		<field
			type="TitleImg"
			label="COM_ICAGENDA_ADDTHIS_NOTE"
			class="stylenote alert alert-info input-xxlarge"
			icimage="info.png"
			/>
		<!-- Date and Time -->
		<field
			type="TitleImg"
			label="COM_ICAGENDA_DATETIME_LABEL"
			class="stylebox lead input-xxlarge"
			icicon="clock"
			/>
		<field
			name="date_format_global"
			type="iclist_globalization"
			label="COM_ICAGENDA_LBL_FORMAT"
			description="COM_ICAGENDA_LBL_FORMAT"
			class="inputbox"
			default=""
			/>
		<field
			name="date_separator"
			type="text"
			label="COM_ICAGENDA_LBL_DATE_SEPARATOR"
			description="COM_ICAGENDA_DESC_DATE_COMPONENTS_SEPARATOR"
			size="5"
			class="inputbox"
			default=""
			/>
		<field
			name="displaytime"
			type="radio"
			label="COM_ICAGENDA_TIMEDISPLAY_DEFAULT_LABEL"
			description="COM_ICAGENDA_TIMEDISPLAY_DEFAULT_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="timeformat"
			type="radio"
			label="COM_ICAGENDA_TIME_FORMAT_LABEL"
			description="COM_ICAGENDA_TIME_FORMAT_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="1">COM_ICAGENDA_24</option>
			<option value="2">COM_ICAGENDA_12</option>
		</field>
		<field
			name="firstday_week_global"
			type="list"
			label="COM_ICAGENDA_FIRSTDAY_WEEK_LABEL"
			description="COM_ICAGENDA_FIRSTDAY_WEEK_DESC"
			default="1"
			>
			<option value="1">MONDAY</option>
			<option value="0">SUNDAY</option>
		</field>
		<!-- Categories -->
		<field
			type="TitleImg"
			label="COM_ICAGENDA_CATEGORY_SELECT_LIST"
			class="stylebox lead input-xxlarge"
			icicon="iclogo"
			/>
		<field name="orderby_catlist"
			type="list"
			default="alpha"
			label="COM_ICAGENDA_CATEGORY_ORDER_LABEL"
			description="COM_ICAGENDA_CATEGORY_SELECT_LIST_ORDER_DESC">
			<option
				value="none">JGLOBAL_NO_ORDER</option>
			<option
				value="alpha">JGLOBAL_TITLE_ALPHABETICAL</option>
			<option
				value="ralpha">JGLOBAL_TITLE_REVERSE_ALPHABETICAL</option>
			<option
				value="order">JGLOBAL_CATEGORY_MANAGER_ORDER</option>
		</field>
		<field
			name="default_catlist"
			type="modal_cat"
			label="COM_ICAGENDA_CATEGORY_SELECT_LIST_DEFAULT_LABEL"
			description="COM_ICAGENDA_CATEGORY_SELECT_LIST_DEFAULT_DESC"
			class="inputbox"
			/>
		<field name="admin_status_catlist"
			type="list"
			label="COM_ICAGENDA_CATEGORY_SELECT_LIST_STATUS_ADMIN_LABEL"
			description="COM_ICAGENDA_CATEGORY_SELECT_LIST_STATUS_ADMIN_DESC"
			default="1"
			multiple="true"
			>
			<option
				value="1">JPUBLISHED</option>
			<option
				value="0">JUNPUBLISHED</option>
			<option
				value="2">JARCHIVED</option>
		</field>
		<field name="site_status_catlist"
			type="list"
			label="COM_ICAGENDA_CATEGORY_SELECT_LIST_STATUS_SITE_LABEL"
			description="COM_ICAGENDA_CATEGORY_SELECT_LIST_STATUS_SITE_DESC"
			default="1"
			multiple="true"
			>
			<option
				value="1">JPUBLISHED</option>
			<option
				value="0">JUNPUBLISHED</option>
			<option
				value="2">JARCHIVED</option>
		</field>
		<!-- Users -->
		<field
			type="TitleImg"
			label="IC_USERS"
			class="stylebox lead input-xxlarge"
			icicon="people"
			/>
		<field type="Title" label="COM_ICAGENDA_JOOMLA_USER_LABEL" class="stylesub" />
		<field
			name="autofilluser"
			type="radio"
			label="COM_ICAGENDA_REGISTRATION_JOOMLA_USER_AUTOFILL_LABEL"
			description="COM_ICAGENDA_REGISTRATION_JOOMLA_USER_AUTOFILL_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field
			name="nameJoomlaUser"
			type="radio"
			label="COM_ICAGENDA_REGISTRATION_JOOMLA_USER_NAME_LABEL"
			description="COM_ICAGENDA_REGISTRATION_JOOMLA_USER_NAME_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="1">IC_NAME</option>
			<option value="2">IC_USERNAME</option>
		</field>
		<field type="Title" label="COM_ICAGENDA_SENDING_EMAIL_LABEL" class="stylesub" />
		<field
			name="auto_login"
			type="radio"
			label="COM_ICAGENDA_AUTOLOGIN_LABEL"
			description="COM_ICAGENDA_AUTOLOGIN_DESC"
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<!-- Miscellaneous -->
		<field
			type="TitleImg"
			label="COM_ICAGENDA_MISCELLANEOUS_LABEL"
			class="stylebox lead input-xxlarge"
			icicon="options"
			/>
		<field type="Title" label="COM_ICAGENDA_EVENT_TITLE_LBL" class="stylesub" />
		<field
			name="titleTransform"
			type="list"
			label="COM_ICAGENDA_TEXT_TRANSFORM_LBL"
			description="COM_ICAGENDA_TEXT_TRANSFORM_DESC"
			class="btn-group"
			default=""
			>
			<option value="">JNONE</option>
			<option value="1">IC_FIRST_UPPERCASE</option>
			<option value="2">IC_CAPITALIZE</option>
			<option value="3">IC_UPPERCASE</option>
			<option value="4">IC_LOWERCASE</option>
		</field>
		<field type="Title" label="COM_ICAGENDA_SHORT_DESCRIPTION_LBL" class="stylesub" />
		<field
			name="char_limit_short_description"
			type="text"
			label="COM_ICAGENDA_LBL_LIMIT"
			description="COM_ICAGENDA_SHORT_DESCRIPTION_LIMIT_DESC"
			class="inputbox input-mini"
			size="5"
			default="100"
			/>
		<field type="Title" label="COM_ICAGENDA_META_DESCRIPTION_LBL" class="stylesub" />
		<field
			name="char_limit_meta_description"
			type="text"
			label="COM_ICAGENDA_LBL_LIMIT"
			description="COM_ICAGENDA_META_DESCRIPTION_LIMIT_DESC"
			class="inputbox input-mini"
			size="5"
			default="160"
			/>
		<field type="Title" label="COM_ICAGENDA_AUTO_SHORT_DESCRIPTION_LBL" class="stylesub" />
		<field
			name="ShortDescLimit"
			type="text"
			label="COM_ICAGENDA_LBL_LIMIT"
			description="COM_ICAGENDA_AUTO_INTROTEXT_LIMIT_DESC"
			class="inputbox input-mini"
			size="5"
			default="100"
			/>
		<field
			name="Filtering_ShortDesc_Global"
			type="list"
			label="COM_ICAGENDA_HTML_FILTERING_LABEL"
			description="COM_ICAGENDA_FILTERING_SHORTDESC_DESC"
			class="btn-group"
			default=""
			>
			<option value="">COM_ICAGENDA_ALL_ITALIC</option>
			<option value="0">COM_ICAGENDA_NO_HTML</option>
			<option value="1">COM_ICAGENDA_AUTHORIZED_HTML_TAGS</option>
		</field>
		<field
			name="HTMLTags_ShortDesc_Global"
			type="list"
			label="COM_ICAGENDA_AUTHORIZED_HTML_TAGS"
			description="COM_ICAGENDA_FILTERING_SHORTDESC_AUTHORIZED_HTML_TAGS_DESC"
			class="btn-group"
			multiple="true"
			>
			<option value="1">&lt;br &#47;&gt;</option>
			<option value="2">&lt;b&gt;</option>
			<option value="3">&lt;strong&gt;</option>
			<option value="4">&lt;i&gt;</option>
			<option value="5">&lt;em&gt;</option>
			<option value="6">&lt;u&gt;</option>
		</field>
		<field type="Title" label="COM_ICAGENDA_CUSTOMIZATION" class="stylesub" />
		<field
			name="customCSS_activation"
			type="radio"
			label="COM_ICAGENDA_CUSTOM_CSS_ACTIVATION_LBL"
			description="COM_ICAGENDA_CUSTOM_CSS_ACTIVATION_DESC"
			class="btn-group"
			labelclass="control-label"
			default="0"
			>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field type="Title" label=" " class="stylenote"/>
		<field
			name="customCSS"
			type="textarea"
			label="COM_ICAGENDA_CUSTOM_CSS_LBL"
			description="COM_ICAGENDA_CUSTOM_CSS_DESC"
			rows="5"
			cols="50"
			class="input-xxlarge"
			hint="COM_ICAGENDA_CUSTOM_CSS_HINT"
			default=""
			/>
	</fieldset>

	<fieldset name="permissions"
		label="JCONFIG_PERMISSIONS_LABEL"
		description="JCONFIG_PERMISSIONS_DESC"
		>
		<field
			name="rules"
			type="rules"
			label="JCONFIG_PERMISSIONS_LABEL"
			class="inputbox"
			validate="rules"
			filter="rules"
			component="com_icagenda"
			section="component"
			/>
	</fieldset>

	<fieldset name="pro"
		label="COM_ICAGENDA_PRO_LABEL"
		description=""
		>
		<field
			type="Title"
			label="COM_ICAGENDA_PRO_ACCOUNT_INFO"
			class="stylenote alert alert-info"
			/>
		<field
			name="copy"
			type="radio"
			label="COM_ICAGENDA_PRO_COPY_LABEL"
			description="COM_ICAGENDA_PRO_COPY_DESC"
			class="btn-group"
			labelclass="control-label"
			default=""
			>
			<option value="">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			type="TitleImg"
			label="PRO_JOOMLIC_UPDATES_INFORMATION"
			class="stylebox lead input-xxlarge"
			icicon="iclogo"
			/>
		<field
			name="downloadid"
			type="password"
			label="COM_ICAGENDA_PRO_ID_LABEL"
			description ="COM_ICAGENDA_PRO_ID_DESC"
			labelclass="control-label"
			default=""
			/>
		<field type="Title" label="&#8597;" />
		<field
			name="username"
			type="text"
			label="PRO_JOOMLIC_USERNAME_LBL"
			description="PRO_JOOMLIC_USERNAME_DESC"
			size="30"
			default=""
			/>
		<field
			name="password"
			type="modal_ic_password"
			label="PRO_JOOMLIC_PASSWORD"
			description="PRO_JOOMLIC_PASSWORD_DESC"
			size="30"
			default=""
			/>
		<field type="Title" label="COM_ICAGENDA_PRO_CONFIG_LIVEUPDATE_MINSTABILITY_LABEL" class="stylesub" />
		<field
			name="min_stability"
			type="list"
			label="COM_ICAGENDA_PRO_UPDATE_SERVER"
			description="COM_ICAGENDA_PRO_CONFIG_LIVEUPDATE_MINSTABILITY_DESC"
			default="stable"
			>
			<option value="alpha">ICAGENDA_STABILITY_TESTING</option>
			<!--option value="beta">ICAGENDA_STABILITY_BETA</option-->
			<option value="rc">ICAGENDA_STABILITY_RC</option>
			<option value="stable">ICAGENDA_STABILITY_STABLE</option>
		</field>
		<field
			name="time_loading"
			type="hidden"
			label="COM_ICAGENDA_PRO_TIME_LOADING_LABEL"
			description="COM_ICAGENDA_PRO_TIME_LOADING_DESC"
			class="btn-group"
			labelclass="control-label"
			default="0"
			>
			<option value="0">JHIDE</option>
			<option value="1">JSHOW</option>
		</field>
		<field
			name="reg_end_period"
			type="hidden"
			label="Registration until end datetime (period)"
			description=""
			class="btn-group"
			labelclass="control-label"
			default="0"
			>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field
			name="system_info"
			type="hidden"
			label="Anonymous usage statistics"
			description="Usage statistics or 'Telemetry' is a feature in iCagenda that sends anonymously and automatically your system info (PHP, MySQL, Joomla! and iCagenda versions). Usage statistics are collected during the update, and help us improve future versions of iCagenda. We do NOT collect any of your personal info, including your IP address, site name, other than the anonymous system info you voluntarily provide."
			class="btn-group"
			labelclass="control-label"
			default="1"
			>
			<option value="0">JDISABLED</option>
			<option value="1">JENABLED</option>
		</field>
		<!--field name="Title5" type="TitleImg" label="BETA" class="stylebox lead input-xxlarge" icimage="iconicagenda16.png"/>
		<field name="mail_new_event" type="radio" default="0" label="BETA - Notification New Event" description="COM_ICAGENDA_MAIL_NEW_EVENT_DESC" class="btn-group" labelclass="control-label">
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field name="newevent_Groups" type="usergroup" multiple="true" default="8" label="Notified Groups" description="COM_ICAGENDA_MAIL_NEW_EVENT_GROUPS_DESC" labelclass="control-label" /-->
	</fieldset>
</config>
views/index.html000060400000000054152455705350007704 0ustar00<html><body bgcolor="#FFFFFF"></body></html>views/customfields/index.html000060400000000032152455705350012401 0ustar00<html><body></body></html>views/customfields/tmpl/index.html000060400000000032152455705350013355 0ustar00<html><body></body></html>views/customfields/tmpl/default.php000060400000040017152455705350013524 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-07-16
 * @since		3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

$app = JFactory::getApplication();

// Access Administration Customfields check.
if (JFactory::getUser()->authorise('icagenda.access.customfields', 'com_icagenda'))
{
	// Check Theme Packs Compatibility
	if (class_exists('icagendaTheme')) icagendaTheme::checkThemePacks();

	$user		= JFactory::getUser();
	$userId		= $user->get('id');
	$listOrder	= $this->escape($this->state->get('list.ordering'));
	$listDirn	= $this->escape($this->state->get('list.direction'));
	$canOrder	= $user->authorise('core.edit.state', 'com_icagenda');

	$saveOrder	= $listOrder == 'cf.ordering';

	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		JHtml::_('behavior.tooltip');
		JHtml::_('script','system/multiselect.js',false,true);
	}
	else
	{
		// Include the component HTML helpers.
		JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
		JHtml::_('bootstrap.tooltip');
		JHtml::_('behavior.multiselect');
		JHtml::_('formbehavior.chosen', 'select');
		JHtml::_('dropdown.init');

		$extension	= $this->escape($this->state->get('filter.extension'));
		$archived	= $this->state->get('filter.published') == 2 ? true : false;
		$trashed	= $this->state->get('filter.published') == -2 ? true : false;

		if ($saveOrder)
		{
			$saveOrderingUrl = 'index.php?option=com_icagenda&task=customfields.saveOrderAjax&tmpl=component';
			JHtml::_('sortablelist.sortable', 'customfieldsList', 'adminForm', strtolower($listDirn), $saveOrderingUrl, false, true);
		}
		$sortFields = array();
		?>
		<script type="text/javascript">
			Joomla.orderTable = function()
			{
				table = document.getElementById("sortTable");
				direction = document.getElementById("directionTable");
				order = table.options[table.selectedIndex].value;
				if (order != '<?php echo $listOrder; ?>')
				{
					dirn = 'asc';
				}
				else
				{
					dirn = direction.options[direction.selectedIndex].value;
				}
				Joomla.tableOrdering(order, dirn, '');
			}
		</script>
		<?php
	}
	?>

	<form action="<?php echo JRoute::_('index.php?option=com_icagenda&view=customfields'); ?>" method="post" name="adminForm" id="adminForm">
	<?php if (!empty( $this->sidebar)) : ?>
		<div id="j-sidebar-container" class="span2">
			<?php echo $this->sidebar; ?>
		</div>
		<div id="j-main-container" class="span10">
	<?php else : ?>
		<div id="j-main-container">
	<?php endif;?>

		<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
			<fieldset id="filter-bar">

				<div class="filter-search fltlft">
					<label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label>
					<input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('Search'); ?>" />
					<button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button>
					<button type="button" onclick="document.id('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button>
				</div>

				<div class="filter-select fltrt">
					<select name="filter_published" class="inputbox" onchange="this.form.submit()">
						<option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option>
						<?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), "value", "text", $this->state->get('filter.state'), true);?>
					</select>
				</div>

				<div class="filter-select fltrt">
					<select name="filter_parent_form" class="inputbox" onchange="this.form.submit()">
						<option value=""><?php echo JText::_('COM_ICAGENDA_CUSTOMFIELDS_FILTER_OPTION_SELECT_PARENT_FORM');?></option>
						<?php echo JHtml::_('select.options', $this->get('ParentForm'), "value", "text", $this->state->get('filter.parent_form'), true);?>
					</select>
				</div>

				<div class="filter-select fltrt">
					<select name="filter_type" class="inputbox" onchange="this.form.submit()">
						<option value=""><?php echo JText::_('COM_ICAGENDA_CUSTOMFIELDS_FILTER_OPTION_SELECT_TYPE');?></option>
						<?php echo JHtml::_('select.options', $this->get('FieldTypes'), "value", "text", $this->state->get('filter.type'), true);?>
					</select>
				</div>

			</fieldset>
			<div class="clr"> </div>

		<?php else : ?>

			<div id="filter-bar" class="btn-toolbar">

				<div class="filter-search btn-group pull-left">
					<label for="filter_search" class="element-invisible"><?php echo JText::_('COM_ICAGENDA_CUSTOMFIELDS_FILTER_SEARCH_DESC'); ?></label>
					<input type="text" name="filter_search" placeholder="<?php echo JText::_('COM_ICAGENDA_CUSTOMFIELDS_FILTER_SEARCH_DESC'); ?>" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_ICAGENDA_CUSTOMFIELDS_FILTER_SEARCH_DESC'); ?>" />
				</div>

				<div class="btn-group pull-left">
					<button class="btn tip hasTooltip" type="submit" title="<?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?>"><i class="icon-search"></i></button>
					<button class="btn tip hasTooltip" type="button" onclick="document.id('filter_search').value='';this.form.submit();" title="<?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?>"><i class="icon-remove"></i></button>
				</div>

				<div class="btn-group pull-right hidden-phone">
					<label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label>
					<?php echo $this->pagination->getLimitBox(); ?>
				</div>

			</div>
			<div class="clearfix"> </div>

		<?php endif;?>

		<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
			<table class="adminlist">
		<?php else : ?>
			<table class="table table-striped" id="customfieldsList">
		<?php endif; ?>

				<thead>
					<tr>
					<?php // JOOMLA 3.x ?>
					<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>

						<?php // Ordering HEADER Joomla 3.x ?>
 						<th width="1%" class="nowrap center hidden-phone">
							<?php echo JHtml::_('grid.sort', '<i class="icon-menu-2"></i>', 'cf.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?>
						</th>

					<?php endif; ?>
					<?php // END JOOMLA 3.x ?>

						<?php // CheckBox HEADER ?>
						<th width="1%" class="hidden-phone">
							<input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" />
						</th>

						<?php // Status HEADER ?>
						<th width="1%" style="min-width:55px" class="nowrap center">
							<?php echo JHtml::_('grid.sort', 'JSTATUS', 'cf.state', $listDirn, $listOrder); ?>
						</th>

						<?php // Title HEADER ?>
						<th>
							<?php echo JHtml::_('grid.sort',  'COM_ICAGENDA_CUSTOMFIELD_TITLE_LBL', 'cf.title', $listDirn, $listOrder); ?>
						</th>

						<?php // Slug HEADER ?>
						<th>
							<?php echo JHtml::_('grid.sort',  'COM_ICAGENDA_CUSTOMFIELD_SLUG_LBL', 'cf.slug', $listDirn, $listOrder); ?>
						</th>

						<?php // Parent Form HEADER ?>
						<th>
							<?php echo JHtml::_('grid.sort',  'COM_ICAGENDA_CUSTOMFIELD_PARENT_FORM_LBL', 'cf.parent_form', $listDirn, $listOrder); ?>
						</th>

						<?php // Field Type HEADER ?>
						<th>
							<?php echo JHtml::_('grid.sort',  'COM_ICAGENDA_CUSTOMFIELD_TYPE_LBL', 'cf.type', $listDirn, $listOrder); ?>
						</th>

						<?php // Required HEADER ?>
						<th>
							<?php echo JHtml::_('grid.sort',  'COM_ICAGENDA_CUSTOMFIELD_REQUIRED_LBL', 'cf.required', $listDirn, $listOrder); ?>
						</th>

				<?php // JOOMLA 2.5 ?>
				<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>

						<?php // Ordering HEADER Joomla 2.5 ?>
					<?php if (isset($this->items[0]->ordering)) { ?>
						<th width="10%">
							<?php echo JHtml::_('grid.sort',  'JGRID_HEADING_ORDERING', 'cf.ordering', $listDirn, $listOrder); ?>
							<?php if ($canOrder && $saveOrder) :?>
								<?php echo JHtml::_('grid.order',  $this->items, 'filesave.png', 'customfields.saveorder'); ?>
							<?php endif; ?>
						</th>
					<?php } ?>

				<?php // END JOOMLA 2.5 ?>
				<?php endif; ?>

						<?php // ID HEADER ?>
						<th width="1%" class="nowrap hidden-phone">
							<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'cf.id', $listDirn, $listOrder); ?>
						</th>
					</tr>
				</thead>
				<tfoot>
					<tr>
						<td colspan="10">
							<?php echo $this->pagination->getListFooter(); ?>
						</td>
					</tr>
				</tfoot>
				<tbody>
			<?php foreach ($this->items as $i => $item) :
				$ordering	= ($listOrder == 'cf.ordering');
				$canCreate	= $user->authorise('core.create',		'com_icagenda');
				$canEdit	= $user->authorise('core.edit',			'com_icagenda');
				$canCheckin	= $user->authorise('core.manage',		'com_icagenda');
				$canChange	= $user->authorise('core.edit.state',	'com_icagenda');
				$canEditOwn	= $user->authorise('core.edit.own',		'com_icagenda');
				?>

					<tr class="row<?php echo $i % 2; ?>">

					<?php // JOOMLA 3.x ?>
					<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>

						<?php // Ordering Joomla 3.x ?>
						<td class="order nowrap center hidden-phone">
							<?php if ($canChange) :
								$disableClassName = '';
								$disabledLabel	  = '';

								if (!$saveOrder) :
									$disabledLabel    = JText::_('JORDERINGDISABLED');
									$disableClassName = 'inactive tip-top';
								endif;
								?>
								<span class="sortable-handler hasTooltip <?php echo $disableClassName; ?>" title="<?php echo $disabledLabel; ?>">
									<i class="icon-menu"></i>
								</span>
								<input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order " />
							<?php else : ?>
								<span class="sortable-handler inactive" >
									<i class="icon-menu"></i>
								</span>
							<?php endif; ?>
						</td>

					<?php endif; ?>
					<?php // END JOOMLA 3.x ?>

						<?php // Ordering Joomla 3.x ?>
						<td class="center hidden-phone">
							<?php echo JHtml::_('grid.id', $i, $item->id); ?>
						</td>

						<?php // Status ?>
					<?php if (isset($this->items[0]->state)) { ?>
						<td class="center">
							<?php echo JHtml::_('jgrid.published', $item->state, $i, 'customfields.', $canChange, 'cb'); ?>
						</td>
					<?php } ?>

						<?php // Title ?>
						<td class="nowrap has-context">
							<div class="pull-left">
								<?php if ($item->checked_out) : ?>
									<?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'customfields.', $canCheckin); ?>
								<?php endif; ?>
								<?php //if ($item->language == '*'):?>
									<?php //$language = JText::alt('JALL', 'language'); ?>
								<?php //else:?>
									<?php //$language = $item->language ? $this->escape($item->language) : JText::_('JUNDEFINED'); ?>
								<?php //endif;?>
								<?php if ($canEdit) : ?>
									<a href="<?php echo JRoute::_('index.php?option=com_icagenda&task=customfield.edit&id=' . $item->id); ?>" title="<?php echo JText::_('JACTION_EDIT'); ?>">
									<?php echo $this->escape($item->title); ?></a>
								<?php else : ?>
									<span title="<?php echo JText::sprintf('JFIELD_ALIAS_LABEL', $this->escape($item->alias)); ?>"><?php echo $this->escape($item->title); ?></span>
								<?php endif; ?>
							</div>

							<?php // DropDown Edit Joomla 3 ?>
						<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
							<div class="pull-left">
								<?php
								// Create dropdown items
								JHtml::_('dropdown.edit', $item->id, 'customfield.');
								JHtml::_('dropdown.divider');

								if ($item->state) :
									JHtml::_('dropdown.unpublish', 'cb' . $i, 'customfields.');
								else :
									JHtml::_('dropdown.publish', 'cb' . $i, 'customfields.');
								endif;

								JHtml::_('dropdown.divider');

								if ($archived) :
									JHtml::_('dropdown.unarchive', 'cb' . $i, 'customfields.');
								else :
									JHtml::_('dropdown.archive', 'cb' . $i, 'customfields.');
								endif;

								if ($item->checked_out) :
									JHtml::_('dropdown.checkin', 'cb' . $i, 'customfields.');
								endif;

								if ($trashed) :
									JHtml::_('dropdown.untrash', 'cb' . $i, 'customfields.');
								else :
									JHtml::_('dropdown.trash', 'cb' . $i, 'customfields.');
								endif;

								// Render dropdown list
								echo JHtml::_('dropdown.render');
								?>
							</div>
						<?php endif; ?>
						</td>

						<?php // Slug ?>
						<td class="hidden-phone">
							<?php if ($item->slug) : ?>
								<?php echo $this->escape($item->slug); ?>
							<?php endif; ?>
						</td>

						<?php // Parent Form ?>
						<td class="hidden-phone">
							<?php if ($item->parent_form == 1) : ?>
								<?php echo JText::_('COM_ICAGENDA_CUSTOMFIELD_PARENT_REGISTRATION_FORM'); ?>
							<?php elseif ($item->parent_form == 2) : ?>
								<?php echo JText::_('COM_ICAGENDA_CUSTOMFIELD_PARENT_EVENT_EDIT'); ?>
							<?php endif; ?>
						</td>

						<?php // Field Type ?>
						<td class="hidden-phone">
							<?php if ($item->type) : ?>
								<?php echo $this->escape($item->type); ?>
							<?php endif; ?>
						</td>

						<?php // Required ?>
						<td class="hidden-phone">
							<?php if ($item->required == 1) : ?>
								<?php //echo '<div class="btn btn-mini btn-success">' . JText::_('JYES') . '</div>'; ?>
								<?php echo JText::_('JYES'); ?>
							<?php else : ?>
								<?php //echo '<div class="btn btn-mini">' . JText::_('JNO') . '</div>'; ?>
								<?php echo JText::_('JNO'); ?>
							<?php endif; ?>
						</td>

				<?php // JOOMLA 2.5 ?>
				<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>

						<?php // Ordering Joomla 2.5 ?>
					<?php if (isset($this->items[0]->ordering)) { ?>
						<td class="order">
							<?php if ($canChange) : ?>
								<?php if ($saveOrder) :?>
									<?php if ($listDirn == 'asc') : ?>
										<span><?php echo $this->pagination->orderUpIcon($i, true, 'customfields.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span>
										<span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'customfields.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span>
									<?php elseif ($listDirn == 'desc') : ?>
										<span><?php echo $this->pagination->orderUpIcon($i, true, 'customfields.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span>
										<span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'customfields.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span>
									<?php endif; ?>
								<?php endif; ?>
								<?php $disabled = $saveOrder ?  '' : 'disabled="disabled"'; ?>
								<?php echo '<input type="text" name="order[]" size="5" value="'
											. $item->ordering . '" ' . $disabled . ' class="text-area-order" />'; ?>
							<?php else : ?>
								<?php echo $item->ordering; ?>
							<?php endif; ?>
						</td>
					<?php } ?>

				<?php endif; ?>
				<?php // END JOOMLA 2.5 ?>

						<?php // ID ?>
					<?php if (isset($this->items[0]->id)) { ?>
						<td class="center hidden-phone">
							<?php echo (int) $item->id; ?>
						</td>
					<?php } ?>

					</tr>
				<?php endforeach; ?>
				</tbody>
			</table>

			<div>
				<input type="hidden" name="task" value="" />
				<input type="hidden" name="boxchecked" value="0" />
				<input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" />
				<input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" />
				<?php echo JHtml::_('form.token'); ?>
			</div>
		</div>
	</form>
<?php
}
else
{
	$app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning');
	$app->redirect(htmlspecialchars_decode('index.php?option=com_icagenda&view=icagenda'));
}
views/customfields/view.html.php000060400000012624152455705350013044 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.4 2015-04-02
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * View class Admin - List of Custom Fields - iCagenda.
 */
class iCagendaViewCustomfields extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;

	/**
	 * Display the view
	 *
	 * @since	3.4.0
	 */
	public function display($tpl = null)
	{
		// Joomla 2.5
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			jimport( 'joomla.environment.request' );

			JHtml::stylesheet( 'com_icagenda/icagenda-back.j25.css', false, true );
		}

		$this->state		= $this->get('State');
		$this->items		= $this->get('Items');
		$this->pagination	= $this->get('Pagination');

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));

			return false;
		}

		// We don't need toolbar in the modal window.
		if ($this->getLayout() !== 'modal')
		{
			$this->addToolbar();

			if (version_compare(JVERSION, '3.0', 'ge'))
			{
				$this->sidebar = JHtmlSidebar::render();
			}
		}

		parent::display($tpl);
	}

	/**
	 * Add the page title and toolbar.
	 *
	 * @since	3.4.0
	 */
	protected function addToolbar()
	{
		require_once JPATH_COMPONENT.DS.'helpers'.DS.'icagenda.php';

		$state		= $this->get('State');
		$user		= JFactory::getUser();
		$userId		= $user->get('id');
        $canDo		= iCagendaHelper::getActions();

		// Set Title
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JToolBarHelper::title('iCagenda - ' . JText::_('COM_ICAGENDA_CUSTOMFIELDS'), 'customfields.png');
		}
		else
		{
			JToolBarHelper::title('iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_CUSTOMFIELDS') . '</span>', 'list-2');
		}

		$icTitle = JText::_('COM_ICAGENDA_CUSTOMFIELDS');

		$document	= JFactory::getDocument();
		$app		= JFactory::getApplication();
		$sitename = $app->getCfg('sitename');
		$title = $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;
		$document->setTitle($title);

		//Check if the form exists before showing the add/edit buttons
		$formPath = JPATH_COMPONENT_ADMINISTRATOR.'/views/customfield';

		if (file_exists($formPath))
		{
			if ($canDo->get('core.create'))
			{
				JToolBarHelper::addNew('customfield.add','JTOOLBAR_NEW');
			}

			if ($canDo->get('core.edit'))
			{
				JToolBarHelper::editList('customfield.edit','JTOOLBAR_EDIT');
			}
		}

		if ($canDo->get('core.edit.state'))
		{
            if (isset($this->items[0]->state))
            {
			    JToolBarHelper::divider();
			    JToolBarHelper::custom('customfields.publish', 'publish.png', 'publish_f2.png','JTOOLBAR_PUBLISH', true);
			    JToolBarHelper::custom('customfields.unpublish', 'unpublish.png', 'unpublish_f2.png', 'JTOOLBAR_UNPUBLISH', true);
            }
            else
            {
                //If this component does not use state then show a direct delete button as we can not trash
                JToolBarHelper::deleteList('', 'customfields.delete','JTOOLBAR_DELETE');
            }

            if (isset($this->items[0]->state))
            {
			    JToolBarHelper::divider();
			    JToolBarHelper::archiveList('customfields.archive','JTOOLBAR_ARCHIVE');
            }

            if (isset($this->items[0]->checked_out))
            {
            	JToolBarHelper::custom('customfields.checkin', 'checkin.png', 'checkin_f2.png', 'JTOOLBAR_CHECKIN', true);
            }
		}

        // Show trash and delete for components that uses the state field
        if (isset($this->items[0]->state))
        {
		    if ($state->get('filter.state') == -2 && $canDo->get('core.delete'))
		    {
			    JToolBarHelper::deleteList('', 'customfields.delete','JTOOLBAR_EMPTY_TRASH');
			    JToolBarHelper::divider();
		    }
		    elseif ($canDo->get('core.edit.state'))
		    {
			    JToolBarHelper::trash('customfields.trash','JTOOLBAR_TRASH');
			    JToolBarHelper::divider();
		    }
        }

		if ($canDo->get('core.admin'))
		{
			JToolBarHelper::preferences('com_icagenda');
		}

		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			JHtmlSidebar::setAction('index.php?option=com_icagenda&view=customfields');

			JHtmlSidebar::addFilter(
				JText::_('JOPTION_SELECT_PUBLISHED'),
				'filter_published',
				JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.state'), true)
			);

			JHtmlSidebar::addFilter(
				JText::_('COM_ICAGENDA_CUSTOMFIELDS_FILTER_OPTION_SELECT_PARENT_FORM'),
				'filter_parent_form',
				JHtml::_('select.options', $this->get('ParentForm'), 'value', 'text', $this->state->get('filter.parent_form'), true)
			);

			JHtmlSidebar::addFilter(
				JText::_('COM_ICAGENDA_CUSTOMFIELDS_FILTER_OPTION_SELECT_TYPE'),
				'filter_type',
				JHtml::_('select.options', $this->get('FieldTypes'), 'value', 'text', $this->state->get('filter.type'), true)
			);
		}
	}
}
views/categories/view.html.php000060400000011242152455705350012463 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.4 2015-04-02
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * View class Admin - List of Categories - iCagenda.
 */
class iCagendaViewCategories extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;

	/**
	 * Display the view
	 */
	public function display($tpl = null)
	{
		// Joomla 2.5
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			jimport( 'joomla.environment.request' );

			JHtml::stylesheet( 'com_icagenda/icagenda-back.j25.css', false, true );
		}

		$this->state		= $this->get('State');
		$this->items		= $this->get('Items');
		$this->pagination	= $this->get('Pagination');

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));
			return false;
		}

		// We don't need toolbar in the modal window.
		if ($this->getLayout() !== 'modal')
		{
			$this->addToolbar();

			if (version_compare(JVERSION, '3.0', 'ge'))
			{
				$this->sidebar = JHtmlSidebar::render();
			}
		}

		parent::display($tpl);
	}

	/**
	 * Add the page title and toolbar.
	 *
	 * @since	1.6
	 */
	protected function addToolbar()
	{
		require_once JPATH_COMPONENT . '/helpers/icagenda.php';

		$state		= $this->get('State');
		$user		= JFactory::getUser();
		$userId		= $user->get('id');
		$canDo		= iCagendaHelper::getActions();

		// Set Title
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JToolBarHelper::title('iCagenda - ' . JText::_('COM_ICAGENDA_TITLE_CATEGORIES'), 'categories.png');
		}
		else
		{
			JToolBarHelper::title('iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_TITLE_CATEGORIES') . '</span>', 'folder');
		}

		$icTitle	= JText::_('COM_ICAGENDA_TITLE_CATEGORIES');

		$document	= JFactory::getDocument();
		$app		= JFactory::getApplication();
		$sitename	= $app->getCfg('sitename');
		$title		= $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;

		$document->setTitle($title);

		//Check if the form exists before showing the add/edit buttons
		$formPath = JPATH_COMPONENT_ADMINISTRATOR.'/views/category';

		if (file_exists($formPath))
		{
			if ($canDo->get('core.create'))
			{
				JToolBarHelper::addNew('category.add', 'JTOOLBAR_NEW');
			}

			if ($canDo->get('core.edit'))
			{
				JToolBarHelper::editList('category.edit', 'JTOOLBAR_EDIT');
			}
		}

		if ($canDo->get('core.edit.state'))
		{
			if (isset($this->items[0]->state))
			{
				JToolBarHelper::divider();
				JToolBarHelper::custom('categories.publish', 'publish.png', 'publish_f2.png', 'JTOOLBAR_PUBLISH', true);
				JToolBarHelper::custom('categories.unpublish', 'unpublish.png', 'unpublish_f2.png', 'JTOOLBAR_UNPUBLISH', true);
			}
			else
			{
				// If this component does not use state then show a direct delete button as we can not trash
				JToolBarHelper::deleteList('', 'categories.delete', 'JTOOLBAR_DELETE');
			}

			if (isset($this->items[0]->state))
			{
				JToolBarHelper::divider();
				JToolBarHelper::archiveList('categories.archive', 'JTOOLBAR_ARCHIVE');
			}

			if (isset($this->items[0]->checked_out))
			{
				JToolBarHelper::custom('categories.checkin', 'checkin.png', 'checkin_f2.png', 'JTOOLBAR_CHECKIN', true);
			}
		}

		// Show trash and delete for components that uses the state field
		if (isset($this->items[0]->state))
		{
			if ($state->get('filter.state') == -2 && $canDo->get('core.delete'))
			{
				JToolBarHelper::deleteList('', 'categories.delete','JTOOLBAR_EMPTY_TRASH');
				JToolBarHelper::divider();
			}
			elseif ($canDo->get('core.edit.state'))
			{
				JToolBarHelper::trash('categories.trash','JTOOLBAR_TRASH');
				JToolBarHelper::divider();
			}
		}

		if ($canDo->get('core.admin'))
		{
			JToolBarHelper::preferences('com_icagenda');
		}

		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			JHtmlSidebar::setAction('index.php?option=com_icagenda&view=categories');

			JHtmlSidebar::addFilter(
				JText::_('JOPTION_SELECT_PUBLISHED'),
				'filter_published',
				JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.state'), true)
			);
		}
	}
}
views/categories/tmpl/index.html000060400000000032152455705350013001 0ustar00<html><body></body></html>views/categories/tmpl/default.php000060400000040523152455705350013152 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.3.3 2014-04-12
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

$app = JFactory::getApplication();

// Access Administration Categories check.
if (JFactory::getUser()->authorise('icagenda.access.categories', 'com_icagenda'))
{
	$user		= JFactory::getUser();
	$userId		= $user->get('id');
	$listOrder	= $this->escape($this->state->get('list.ordering'));
	$listDirn	= $this->escape($this->state->get('list.direction'));
	$canOrder	= $user->authorise('core.edit.state', 'com_icagenda');

	$saveOrder	= $listOrder == 'a.ordering';

	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		JHtml::_('behavior.tooltip');
		JHtml::_('script','system/multiselect.js',false,true);
	}
	else
	{
		// Include the component HTML helpers.
		JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
		JHtml::_('bootstrap.tooltip');
		JHtml::_('behavior.multiselect');
		JHtml::_('formbehavior.chosen', 'select');
		JHtml::_('dropdown.init');

		$extension	= $this->escape($this->state->get('filter.extension'));

		$archived	= $this->state->get('filter.published') == 2 ? true : false;
		$trashed	= $this->state->get('filter.published') == -2 ? true : false;

		if ($saveOrder)
		{
			$saveOrderingUrl = 'index.php?option=com_icagenda&task=categories.saveOrderAjax&tmpl=component';
			JHtml::_('sortablelist.sortable', 'categoriesList', 'adminForm', strtolower($listDirn), $saveOrderingUrl, false, true);
		}
		//$sortFields = $this->getSortFields();
		$sortFields = array(); // Alchemy - tmp bug fix
		?>
		<script type="text/javascript">
			Joomla.orderTable = function()
			{
				table = document.getElementById("sortTable");
				direction = document.getElementById("directionTable");
				order = table.options[table.selectedIndex].value;
				if (order != '<?php echo $listOrder; ?>')
				{
					dirn = 'asc';
				}
				else
				{
					dirn = direction.options[direction.selectedIndex].value;
				}
				Joomla.tableOrdering(order, dirn, '');
			}
		</script>
		<?php
	}
	?>

	<form action="<?php echo JRoute::_('index.php?option=com_icagenda&view=categories'); ?>" method="post" name="adminForm" id="adminForm">
	<?php if (!empty( $this->sidebar)) : ?>
		<div id="j-sidebar-container" class="span2">
			<?php echo $this->sidebar; ?>
		</div>
		<div id="j-main-container" class="span10">
	<?php else : ?>
		<div id="j-main-container">
	<?php endif;?>

		<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
			<fieldset id="filter-bar">
				<div class="filter-search fltlft">
					<label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label>
					<input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('Search'); ?>" />
					<button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button>
					<button type="button" onclick="document.id('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button>
				</div>
				<div class="filter-select fltrt">
					<select name="filter_published" class="inputbox" onchange="this.form.submit()">
						<option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option>
						<?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), "value", "text", $this->state->get('filter.state'), true);?>
					</select>
				</div>
			</fieldset>
			<div class="clr"> </div>

		<?php else : ?>

			<div id="filter-bar" class="btn-toolbar">
				<div class="filter-search btn-group pull-left">
					<label for="filter_search" class="element-invisible"><?php echo JText::_('COM_ICAGENDA_FILTER_SEARCH_CATEGORIES_DESC'); ?></label>
					<input type="text" name="filter_search" placeholder="<?php echo JText::_('COM_ICAGENDA_FILTER_SEARCH_CATEGORIES_DESC'); ?>" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_ICAGENDA_FILTER_SEARCH_CATEGORIES_DESC'); ?>" />
				</div>
				<div class="btn-group pull-left">
					<button class="btn tip hasTooltip" type="submit" title="<?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?>"><i class="icon-search"></i></button>
					<button class="btn tip hasTooltip" type="button" onclick="document.id('filter_search').value='';this.form.submit();" title="<?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?>"><i class="icon-remove"></i></button>
				</div>
				<div class="btn-group pull-right hidden-phone">
					<label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label>
					<?php echo $this->pagination->getLimitBox(); ?>
				</div>
				<!--div class="btn-group pull-right hidden-phone">
					<label for="directionTable" class="element-invisible"><?php echo JText::_('JFIELD_ORDERING_DESC'); ?></label>
					<select name="directionTable" id="directionTable" class="input-medium" onchange="Joomla.orderTable()">
						<option value=""><?php echo JText::_('JFIELD_ORDERING_DESC'); ?></option>
						<option value="asc" <?php if ($listDirn == 'asc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_ASCENDING'); ?></option>
						<option value="desc" <?php if ($listDirn == 'desc') echo 'selected="selected"'; ?>><?php echo JText::_('JGLOBAL_ORDER_DESCENDING');  ?></option>
					</select>
				</div-->
				<!--div class="btn-group pull-right">
					<label for="sortTable" class="element-invisible"><?php echo JText::_('JGLOBAL_SORT_BY'); ?></label>
					<select name="sortTable" id="sortTable" class="input-medium" onchange="Joomla.orderTable()">
						<option value=""><?php echo JText::_('JGLOBAL_SORT_BY');?></option>
						<?php echo JHtml::_('select.options', $sortFields, 'value', 'text', $listOrder); ?>
					</select>
				</div-->
			</div>
			<div class="clearfix"> </div>

		<?php endif;?>


		<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
			<table class="adminlist">
		<?php else : ?>
			<table class="table table-striped" id="categoriesList">
		<?php endif; ?>

				<thead>
					<tr>
	<!-- Ordering HEADER Joomla 3.x (Test) -->
						<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
 						<th width="1%" class="nowrap center hidden-phone">
							<?php echo JHtml::_('grid.sort', '<i class="icon-menu-2"></i>', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?>
						</th>
						<?php endif; ?>

	<!-- CheckBox HEADER -->
						<th width="1%" class="hidden-phone">
							<input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" />
						</th>

	<!-- Status HEADER -->
						<th width="1%" style="min-width:55px" class="nowrap center">
							<?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?>
						</th>

	<!-- Color HEADER -->
						<th width="5%" class="nowrap hidden-phone">
							<?php echo JHtml::_('grid.sort',  'COM_ICAGENDA_CATEGORIES_COLOR', 'a.color', $listDirn, $listOrder); ?>
						</th>

	<!-- Title HEADER -->
						<th>
							<?php echo JHtml::_('grid.sort',  'COM_ICAGENDA_CATEGORIES_TITLE', 'a.title', $listDirn, $listOrder); ?>
						</th>


	<!-- Ordering HEADER Joomla 2.5 -->
					<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
						<?php if (isset($this->items[0]->ordering)) { ?>
						<th width="10%">
							<?php echo JHtml::_('grid.sort',  'JGRID_HEADING_ORDERING', 'a.ordering', $listDirn, $listOrder); ?>
							<?php if ($canOrder && $saveOrder) :?>
								<?php echo JHtml::_('grid.order',  $this->items, 'filesave.png', 'categories.saveorder'); ?>
							<?php endif; ?>
						</th>
	                	<?php } ?>
					<?php endif; ?>

	<!-- ID HEADER -->
						<th width="1%" class="nowrap hidden-phone">
							<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?>
						</th>


				</tr>
			</thead>
			<tfoot>
				<tr>
					<td colspan="10">
						<?php echo $this->pagination->getListFooter(); ?>
					</td>
				</tr>
			</tfoot>
			<tbody>
			<?php foreach ($this->items as $i => $item) :
				$ordering	= ($listOrder == 'a.ordering');
				$canCreate	= $user->authorise('core.create',		'com_icagenda');
				$canEdit	= $user->authorise('core.edit',			'com_icagenda');
				$canCheckin	= $user->authorise('core.manage',		'com_icagenda');
				$canChange	= $user->authorise('core.edit.state',	'com_icagenda');
//				$canEditOwn	= $user->authorise('core.edit.own',		'com_icagenda') && $item->created_by == $userId;
				$canEditOwn	= $user->authorise('core.edit.own',		'com_icagenda');
				?>
				<?php
	/* (Not in used currently)
				$originalOrders = array();
				foreach ($this->items as $i => $item) :
					$orderkey   = array_search($item->id, $this->ordering[$item->parent_id]);
					$canEdit    = $user->authorise('core.edit',       $extension . '.category.' . $item->id);
					$canCheckin = $user->authorise('core.admin',      'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0;
					$canEditOwn = $user->authorise('core.edit.own',   $extension . '.category.' . $item->id) && $item->created_user_id == $userId;
					$canChange  = $user->authorise('core.edit.state', $extension . '.category.' . $item->id) && $canCheckin;

					// Get the parents of item for sorting
					if ($item->level > 1)
					{
						$parentsStr = "";
						$_currentParentId = $item->parent_id;
						$parentsStr = " " . $_currentParentId;
						for ($i2 = 0; $i2 < $item->level; $i2++)
						{
							foreach ($this->ordering as $k => $v)
							{
								$v = implode("-", $v);
								$v = "-".$v."-";
								if (strpos($v, "-" . $_currentParentId . "-") !== false)
								{
									$parentsStr .= " " . $k;
									$_currentParentId = $k;
									break;
								}
							}
						}
					}
					else
					{
						$parentsStr = "";
					}
*/
					?>

			<!--tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php //echo $item->parent_id // invalid ?>" item-id="<?php echo $item->id ?>" parents="<?php //echo $parentsStr // invalid ?>" level="<?php //echo $item->level // invalid ?>"-->
				<tr class="row<?php echo $i % 2; ?>">

	<!-- Ordering Joomla 3.x (Test 3.3.3) -->
	<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
					<td class="order nowrap center hidden-phone">
					<?php if ($canChange) :
						$disableClassName = '';
						$disabledLabel	  = '';

						if (!$saveOrder) :
							$disabledLabel    = JText::_('JORDERINGDISABLED');
							$disableClassName = 'inactive tip-top';
						endif; ?>
						<span class="sortable-handler hasTooltip <?php echo $disableClassName; ?>" title="<?php echo $disabledLabel; ?>">
							<i class="icon-menu"></i>
						</span>
						<input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order " />
					<?php else : ?>
						<span class="sortable-handler inactive" >
							<i class="icon-menu"></i>
						</span>
					<?php endif; ?>
					</td>
	<?php endif; ?>


	<!-- CheckBox -->
						<td class="center hidden-phone">
							<?php echo JHtml::_('grid.id', $i, $item->id); ?>
						</td>

	<!-- Status -->
 	              <?php if (isset($this->items[0]->state)) { ?>
					    <td class="center">
						    <?php echo JHtml::_('jgrid.published', $item->state, $i, 'categories.', $canChange, 'cb'); ?>
					    </td>
  	              <?php } ?>

	<!-- Color -->
						<td class="small hidden-phone">
							<div style="display:block; width:50px; height:40px; border-radius:5px; background:<?php echo $item->color; ?>;"></div>
						</td>

	<!-- Title -->
						<td class="nowrap has-context">
							<div class="pull-left">
								<?php if ($item->checked_out) : ?>
									<?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'categories.', $canCheckin); ?>
								<?php endif; ?>
								<?php //if ($item->language == '*'):?>
									<?php //$language = JText::alt('JALL', 'language'); ?>
								<?php //else:?>
									<?php //$language = $item->language ? $this->escape($item->language) : JText::_('JUNDEFINED'); ?>
								<?php //endif;?>
								<?php if ($canEdit) : ?>
									<a href="<?php echo JRoute::_('index.php?option=com_icagenda&task=category.edit&id=' . $item->id); ?>" title="<?php echo JText::_('JACTION_EDIT'); ?>">
										<?php echo $this->escape($item->title); ?></a>
								<?php else : ?>
									<span title="<?php echo JText::sprintf('JFIELD_ALIAS_LABEL', $this->escape($item->alias)); ?>"><?php echo $this->escape($item->title); ?></span>
								<?php endif; ?>
							</div>

	<!-- DropDown Edit Joomla 3 -->
	<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
							<div class="pull-left">
								<?php
									// Create dropdown items
									JHtml::_('dropdown.edit', $item->id, 'category.');
									JHtml::_('dropdown.divider');
									if ($item->state) :
										JHtml::_('dropdown.unpublish', 'cb' . $i, 'categories.');
									else :
										JHtml::_('dropdown.publish', 'cb' . $i, 'categories.');
									endif;

//									if ($item->featured) :
//										JHtml::_('dropdown.unfeatured', 'cb' . $i, 'categories.');
//									else :
//										JHtml::_('dropdown.featured', 'cb' . $i, 'categories.');
//									endif;

									JHtml::_('dropdown.divider');

									if ($archived) :
										JHtml::_('dropdown.unarchive', 'cb' . $i, 'categories.');
									else :
										JHtml::_('dropdown.archive', 'cb' . $i, 'categories.');
									endif;

									if ($item->checked_out) :
										JHtml::_('dropdown.checkin', 'cb' . $i, 'categories.');
									endif;

									if ($trashed) :
										JHtml::_('dropdown.untrash', 'cb' . $i, 'categories.');
									else :
										JHtml::_('dropdown.trash', 'cb' . $i, 'categories.');
									endif;

									// Render dropdown list
									echo JHtml::_('dropdown.render');
									?>
							</div>
		<?php endif; ?>


						</td>

	<!-- Ordering Joomla 2.5 -->
	<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
             	   <?php if (isset($this->items[0]->ordering)) { ?>
					    <td class="order">
						    <?php if ($canChange) : ?>
							    <?php if ($saveOrder) :?>
								    <?php if ($listDirn == 'asc') : ?>
									    <span><?php echo $this->pagination->orderUpIcon($i, true, 'categories.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span>
									    <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'categories.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span>
								    <?php elseif ($listDirn == 'desc') : ?>
									    <span><?php echo $this->pagination->orderUpIcon($i, true, 'categories.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span>
									    <span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'categories.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span>
								    <?php endif; ?>
							    <?php endif; ?>
							    <?php $disabled = $saveOrder ?  '' : 'disabled="disabled"'; ?>
							    <input type="text" name="order[]" size="5" value="<?php echo $item->ordering;?>" <?php echo $disabled ?> class="text-area-order" />
						    <?php else : ?>
							    <?php echo $item->ordering; ?>
						    <?php endif; ?>
					    </td>
             	   <?php } ?>
		<?php endif; ?>


	<!-- ID -->
						<?php if (isset($this->items[0]->id)) { ?>
						<td class="center hidden-phone">
							<?php echo (int) $item->id; ?>
						</td>
        	        	<?php } ?>
					</tr>
					<?php endforeach; ?>
				</tbody>
			</table>

			<div>
				<input type="hidden" name="task" value="" />
				<input type="hidden" name="boxchecked" value="0" />
				<input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" />
				<input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" />
				<?php echo JHtml::_('form.token'); ?>
			</div>
		</div>
	</form>
	<?php
}
else
{
	$app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning');
	$app->redirect(htmlspecialchars_decode('index.php?option=com_icagenda&view=icagenda'));
}
views/categories/index.html000060400000000032152455705350012025 0ustar00<html><body></body></html>views/themes/index.html000060400000000032152455705350011165 0ustar00<html><body></body></html>views/themes/view.html.php000060400000004304152455705350011624 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.1 2014-12-29
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

// Access check.
if (JFactory::getUser()->authorise('core.admin', 'com_icagenda'))
{
	JToolBarHelper::preferences('com_icagenda');
}

/**
 * View class Admin - Theme Manager - iCagenda
 */
class iCagendaViewthemes extends JViewLegacy
{
	/**
	 * Display the view
	 */
	public function display($tpl = null)
	{
		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));
			return false;
		}

		// We don't need toolbar in the modal window.
		if ($this->getLayout() !== 'modal')
		{
			$this->addToolbar();
			if(version_compare(JVERSION, '3.0', 'ge'))
			{
				$this->sidebar = JHtmlSidebar::render();
			}
		}

		parent::display($tpl);
	}

	/**
	 * Add the page title and toolbar.
	 *
	 * @since	1.6
	 */
	protected function addToolbar()
	{
		require_once JPATH_COMPONENT . '/helpers/icagenda.php';

		$state	= $this->get('State');

		// Set Title
		if(version_compare(JVERSION, '3.0', 'lt'))
		{
			JToolBarHelper::title('iCagenda - ' . JText::_('COM_ICAGENDA_THEME_MANAGER'), 'themes.png');
		}
		else
		{
			JToolBarHelper::title('iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_THEME_MANAGER') . '</span>', 'palette');
		}

		$icTitle = JText::_('COM_ICAGENDA_THEME_MANAGER');

		$document	= JFactory::getDocument();
		$app		= JFactory::getApplication();
		$sitename = $app->getCfg('sitename');
		$title = $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;
		$document->setTitle($title);
	}
}
views/themes/tmpl/index.html000060400000000032152455705350012141 0ustar00<html><body></body></html>views/themes/tmpl/default.php000060400000030144152455705350012310 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-06-23
 * @since       2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );

JHtml::_('behavior.framework');
JHtml::_('behavior.modal');

$app = JFactory::getApplication();
$document = JFactory::getDocument();

// Access Administration Registrations check.
if (JFactory::getUser()->authorise('icagenda.access.themes', 'com_icagenda'))
{
	// Check Theme Packs Compatibility
	if (class_exists('icagendaTheme')) icagendaTheme::checkThemePacks();

	$user	= JFactory::getUser();
	$userId	= $user->get('id');

	$params = JComponentHelper::getParams( 'com_icagenda' );
	$version = $params->get('version');
	?>

<?php if (!empty( $this->sidebar)) : ?>
	<div id="j-sidebar-container" class="span2">
		<?php echo $this->sidebar; ?>
	</div>
	<div id="j-main-container" class="span10">
<?php else : ?>
	<div id="j-main-container">
<?php endif;?>

		<!-- Begin Content -->
		<div class="row-fluid">
			<div class="span12">
				<div class="span6">
					<div style="background-color:#FFFFFF; border: 1px solid #D4D4D4; padding:30px; border-radius: 10px;">
						<form enctype="multipart/form-data" action="index.php" method="post" name="adminForm" id="themes-form" class="form-validate">
							<?php
							if (isset($this->require_ftp)) {
							echo iCagendaFileUpload::renderFTPaccess();
							}
							?>
							<div class="control-group">
								<label for="install_package"><b><?php echo JText::_( 'COM_ICAGENDA_UPLOAD_THEME_PACKAGE_FILE' ); ?></b></label>
								<div class="controls">
									<input type="file" id="sfile-upload" class="input" name="Filedata" />
									<button onclick="submitbutton()" class="btn btn-primary" id="upload-submit">
	<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
										<?php echo JText::_( 'COM_ICAGENDA_UPLOAD_AND_INSTALL' ); ?>
	<?php else : ?>
										<i class="icon-upload icon-white"></i> <?php echo JText::_( 'COM_ICAGENDA_UPLOAD_AND_INSTALL' ); ?>
	<?php endif; ?>
									</button>
								</div>
							</div>
							<input type="hidden" name="type" value="" />
							<input type="hidden" name="option" value="com_icagenda" />
							<input type="hidden" name="task" value="themes.themeinstall" />
							<?php echo JHTML::_( 'form.token' ); ?>
						</form>
					</div>
				</div>
				<div class="span1">
				</div>
				<div class="span5">
					<div style="float:right; padding:0px 0px 0px 20px;">
						<img src="../media/com_icagenda/images/logo_icagenda.png" alt="logo_icagenda" />
					</div>
					<div>
						<h2 style="font-size:2em;">
							<b style="color:#cc0000;">iC</b><b style="color: #666666;">agenda<sup style="font-size:0.6em">&trade;</sup></b><?php echo $version ;?>
						</h2>
					</div>
					<div>
						<h4>
							<?php echo JText::_('COM_ICAGENDA_THEME_MANAGER') ?> v1
						</h4>
					</div>
					<br/>
				</div>
			</div>
		</div>
		<div class="clearfix"> </div>

		<div class="row-fluid">
			<h2><?php echo JText::_('COM_ICAGENDA_THEMES_LIST_TITLE'); ?></h2>
			<div class="span12 small" style="margin-left: 0px">
				<?php

				$url=JPATH_SITE.DS.'components'.DS.'com_icagenda'.DS.'themes'.DS.'packs';
				$urlxml=JPATH_SITE.DS.'components'.DS.'com_icagenda'.DS.'themes/';

				$nb_themes = 0;

				function url_exists($url) {
					$a_url = parse_url($url);
					if (!isset($a_url['port'])) $a_url['port'] = 80;
					$errno = 0;
					$errstr = '';
					$timeout = 30;
					if(isset($a_url['host']) && $a_url['host']!=gethostbyname($a_url['host'])){
						$fid = fsockopen($a_url['host'], $a_url['port'], $errno, $errstr, $timeout);
						if (!$fid) return false;
						$page = isset($a_url['path']) ?$a_url['path']:'';
						$page .= isset($a_url['query'])?'?'.$a_url['query']:'';
						fputs($fid, 'HEAD '.$page.' HTTP/1.0'."\r\n".'Host: '.$a_url['host']."\r\n\r\n");
						$head = fread($fid, 4096);
						fclose($fid);
						return preg_match('#^HTTP/.*\s+[200|302]+\s#i', $head);
					} else {
						return false;
					}
				}

				if($dossier = opendir($url)) {
					while(false !== ($pack = readdir($dossier))) {
						if($pack != '.' && $pack != '..' && $pack != 'index.php' && $pack != 'index.html' && $pack != '.DS_Store' && $pack!='.thumbs') {
							$nb_themes++; // On incrémente le compteur de 1
							$xml = '.xml';
							$themeurl = $urlxml.$pack.$xml;

							$dom = new DomDocument;
							$dom->load($themeurl);

							$getthemeUpdate = $dom->getElementsByTagName('themeUpdate');
							foreach ($getthemeUpdate AS $themeUpdate)
							$themeUpdate = $themeUpdate->firstChild->nodeValue;
							$urltheme = $themeUpdate.'/'.$pack.'/update.xml';
							$unknown = JText::_('COM_ICAGENDA_THEME_UNKNOWN');

							// Test si fichier de mise à jour
							$urlex = $urltheme;

							if (url_exists($urlex))
							{
								// Récupération données fichier distant de MàJ
								$update = new DomDocument;
								$update->load($urltheme);

								$getUpdateversion = $update->getElementsByTagName('version');
								$getUpdatedownload = $update->getElementsByTagName('download');
								foreach ($getUpdateversion AS $Updatevers)
								foreach ($getUpdatedownload AS $download)
								$updateVersion = $Updatevers->firstChild->nodeValue;
								$updateDownload = $download->firstChild->nodeValue;
							}
							else
							{
								$updateVersion = $unknown;
								$updateDownload = '#';
							}


//							$getUpdatestatus = $dom->getElementsByTagName('status');

							// Récupération données fichier manifest install
							$getthemename = $dom->getElementsByTagName('name');
							$getversion = $dom->getElementsByTagName('version');
							$getcreationDate = $dom->getElementsByTagName('creationDate');
							$getauthor = $dom->getElementsByTagName('author');
							$getauthorEmail = $dom->getElementsByTagName('authorEmail');
							$getauthorWebsite = $dom->getElementsByTagName('authorWebsite');
							$getauthorUrl = $dom->getElementsByTagName('authorUrl');
							$getdescription = $dom->getElementsByTagName('description');

							// Conversion des données
							foreach ($getthemename AS $name)
//							foreach ($getUpdatestatus AS $status)
							foreach ($getversion AS $version)
							foreach ($getcreationDate AS $creationDate)
							foreach ($getauthor AS $author)
							foreach ($getauthorEmail AS $authorEmail)
							foreach ($getauthorWebsite AS $authorWebsite)
							foreach ($getauthorUrl AS $authorUrl)
							foreach ($getdescription AS $description)

							$authorWebsitetest = $authorWebsite->firstChild->nodeValue;

							// Affichage fiches Themes
							echo '<div class="span3" style="padding: 10px; margin:10px 20px 10px 0px; background: #D9D9D9; border-radius:10px;">';

								// Affichage Titre et Nom
								echo '<div style="text-align:center"><h4>' . $name->firstChild->nodeValue . ' <br><small>[&nbsp;<span style="color:grey">' . $pack . '</span>&nbsp;]</small></h4></div>';

								//Image Theme
								$urlimg		= '../components/com_icagenda/themes/packs';
								$thumb		= $urlimg.'/'.$pack.'/images/'.$pack.'_thumbnail.png';
								$preview	= $urlimg.'/'.$pack.'/images/'.$pack.'_preview.png';
								if (file_exists($thumb))
								{
									$img	= '<img width=280px height=160px src="'.$thumb.'" alt="">';
									if (file_exists($preview))
									{
										$imgtheme	= '<div style="text-align:center; max-width=280px"><a href="'.$preview.'" class="modal" title="'.JText::_('COM_ICAGENDA_CLICK_TO_ENLARGE').'">'.$img.'</a></div>';
									}
								} else {
									$imgtheme ='<div style="text-align:center; max-width=280px">'.JText::_('COM_ICAGENDA_THEME_NO_PREVIEW').'</div>';
								}

								echo $imgtheme;

								// Affichage Description
								echo '<p><div style="text-align:justify;"><i>' . $description->firstChild->nodeValue . '</i></div>';

								// Affichage Auteur
								echo '<div>'.JText::_('COM_ICAGENDA_THEME_AUTHOR').' : <a href="mailto:'.$authorEmail->firstChild->nodeValue.'">' . $author->firstChild->nodeValue . '</a></div>';

								// Affichage Site Auteur
								$authorWebsite = $authorWebsite->firstChild->nodeValue;
								if ($authorWebsite != NULL) {
									echo '<div>'.JText::_('COM_ICAGENDA_THEME_AUTHOR_WEBSITE').' : <a href="'.$authorUrl->firstChild->nodeValue.'" target="_blank">' . $authorWebsite . '</a></div>';
								}

								// Affichage Version installée
								echo '<div>'.JText::_('COM_ICAGENDA_THEME_INSTALLED_VERSION').' : ' . $version->firstChild->nodeValue . '</div>';

								// Affichage Dernière version publiée
								if (($updateVersion > $version->firstChild->nodeValue) && ($updateVersion != $unknown)) {
									echo '<div>'.JText::_('COM_ICAGENDA_THEME_LATEST_VERSION').' : ' . $updateVersion . '</div></p>';
								}

								echo '<p></p><div style="display:block; margin-left:auto; margin-right: auto;">';

									if (($updateVersion > $version->firstChild->nodeValue) && ($updateVersion != $unknown)) {
										echo '<a href="'.$updateDownload.'" target="_blank"><div class="btn_update">'.JText::_('COM_ICAGENDA_THEME_UPDATE').' ' . $updateVersion . ' !</div></a>';
									} elseif ($updateVersion == $unknown) {
										echo '<div style="text-align:center; background:#333333; padding:5px; border-radius:5px; color:#FFFFFF;">'.JText::_('COM_ICAGENDA_THEME_AUTHOR_CONTACT').'</div>';
									} else {
										echo '<div style="text-align:center; background:#FFFFFF; padding:5px; border-radius:5px;">'.JText::_('COM_ICAGENDA_THEME_LATEST').'</div>';
									}

								echo '</div>';
							echo '</div>';
							} // On ferme le if (qui permet de ne pas afficher index.php, etc.)

						} // On termine la boucle

						echo '<div style="clear: both;"></div>';

						echo '<div>&nbsp;</div>';

						echo '<div>' . JText::_('COM_ICAGENDA_THEME_NB_THEMES_1') . '<strong> ' . $nb_themes . ' </strong>' . JText::_('COM_ICAGENDA_THEME_NB_THEMES_2') .'</div>';
						echo '<div>&nbsp;</div>';

						closedir($dossier);

						} else {
							echo 'ERROR: Folder not opened!';
						}
						?>

			</div>

			<div class="span12" style="margin-left: 0px">
				<div class="span6">
					<div>
						<a href="http://icagenda.joomlic.com/resources/translations" target="_blank" class="btn"><?php echo JText::_('COM_ICAGENDA_PANEL_TRANSLATION_PACKS_DONWLOAD');?></a>
						<a href='http://www.joomlic.com/forum/icagenda'  target="_blank" class="btn"><?php echo JText::_('COM_ICAGENDA_PANEL_HELP_FORUM'); ?></a>
					</div>
				</div>
				<div class="span6">
				</div>
			</div>
		</div>
		<div class="clearfix"> </div>
	</div>


	<div class="row-fluid">
		<div class="span12">
		<hr>
			<div class="span9">
				Copyright ©2012-<?php echo date("Y"); ?> joomlic.com -&nbsp;
				<?php echo JText::_('COM_ICAGENDA_PANEL_COPYRIGHT');?>&nbsp;<a href="http://extensions.joomla.org/extensions/calendars-a-events/events/events-management/22013" target="_blank">Joomla! Extensions Directory</a>.
				<br />
				<br />
			</div>
			<div class="span3" style="text-align: right">
				<a href='http://www.joomlic.com' target='_blank'><img src="../media/com_icagenda/images/logo_joomlic.png" alt="JoomliC" border="0"/></a>
				<br />
				<i><b><?php echo JText::_('COM_ICAGENDA_PANEL_SITE_VISIT');?>&nbsp;<a href='http://www.joomlic.com' target='_blank'>www.joomlic.com</a></b></i>
			</div>
		</div>
	</div>

	<div class="clearfix"> </div>

	<?php
	// Joomla 2.5 CSS
	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		JHtml::stylesheet('com_icagenda/template.j25.css', false, true);
		JHtml::stylesheet('com_icagenda/icagenda-back.j25.css', false, true);
	}
}
else
{
	$app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning');
	$app->redirect(htmlspecialchars_decode('index.php?option=com_icagenda&view=icagenda'));
}
views/category/index.html000060400000000032152455705350011515 0ustar00<html><body></body></html>views/category/view.html.php000060400000007330152455705350012156 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.5 2013-11-09
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

// iCagenda Class control (Joomla 2.5/3.x)
if(!class_exists('iCJView')) {
   if(version_compare(JVERSION,'3.0.0','ge')) {
      class iCJView extends JViewLegacy {
      };
   } else {
      jimport('joomla.application.component.view');
      class iCJView extends JView {};
   }
}

/**
 * View class Admin - Edit a Category - iCagenda
 */
class iCagendaViewCategory extends iCJView
{
	protected $state;
	protected $item;
	protected $form;

	/**
	 * Display the view
	 */
	public function display($tpl = null)
	{
		$this->state	= $this->get('State');
		$this->item		= $this->get('Item');
		$this->form		= $this->get('Form');


		// Check for errors.
		if (count($errors = $this->get('Errors'))) {
			JError::raiseError(500, implode("\n", $errors));
			return false;
		}

		$this->addToolbar();
		parent::display($tpl);
	}

	/**
	 * Add the page title and toolbar.
	 */
	protected function addToolbar()
	{
		JRequest::setVar('hidemainmenu', true);

		$user		= JFactory::getUser();
		$isNew		= ($this->item->id == 0);
        if (isset($this->item->checked_out)) {
		    $checkedOut	= !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id'));
        } else {
            $checkedOut = false;
        }
		$canDo		= iCagendaHelper::getActions();

		//JToolBarHelper::title(JText::_('COM_ICAGENDA_TITLE_CATEGORY'), 'category.png');
		// Set Title
		if(version_compare(JVERSION, '3.0', 'lt')) {
			JToolBarHelper::title($isNew ? 'iCagenda - ' . JText::_('COM_ICAGENDA_LEGEND_NEW_CATEGORY') : 'iCagenda - ' . JText::_('COM_ICAGENDA_LEGEND_EDIT_CATEGORY'), 'category.png');
		} else {
			JToolBarHelper::title($isNew ? 'iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_LEGEND_NEW_CATEGORY') . '</span>'  : 'iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_LEGEND_EDIT_CATEGORY') . '</span>' , $isNew ? 'new' : 'pencil-2');
		}

		$icTitle = $isNew ? JText::_('COM_ICAGENDA_LEGEND_NEW_CATEGORY') : JText::_('COM_ICAGENDA_LEGEND_EDIT_CATEGORY');

		$document	= JFactory::getDocument();
		$app		= JFactory::getApplication();
		$sitename = $app->getCfg('sitename');
		$title = $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;
		$document->setTitle($title);

		// If not checked out, can save the item.
		if (!$checkedOut && ($canDo->get('core.edit')||($canDo->get('core.create'))))
		{

			JToolBarHelper::apply('category.apply', 'JTOOLBAR_APPLY');
			JToolBarHelper::save('category.save', 'JTOOLBAR_SAVE');
		}
		if (!$checkedOut && ($canDo->get('core.create'))){
			JToolBarHelper::custom('category.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
		}
		// If an existing item, can save to a copy.
		if (!$isNew && $canDo->get('core.create')) {
			JToolBarHelper::custom('category.save2copy', 'save-copy.png', 'save-copy_f2.png', 'JTOOLBAR_SAVE_AS_COPY', false);
		}
		if (empty($this->item->id)) {
			JToolBarHelper::cancel('category.cancel', 'JTOOLBAR_CANCEL');
		}
		else {
			JToolBarHelper::cancel('category.cancel', 'JTOOLBAR_CLOSE');
		}

	}
}
views/category/tmpl/edit.php000060400000023173152455705350012145 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-05-06
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');

$app = JFactory::getApplication();

// Access Administration Categories check.
if (JFactory::getUser()->authorise('icagenda.access.categories', 'com_icagenda'))
{
	$document			= JFactory::getDocument();
	$bootstrapType		= '1';
	$CategoryTag		='category';
	$CategoryTitle		= JText::_('COM_ICAGENDA_TITLE_CATEGORY', true);
	$DescTag			= 'desc';
	$DescTitle			= JText::_('COM_ICAGENDA_LEGEND_DESC', true);
	$PublishingTag		= 'publishing';
	$PublishingTitle	= JText::_('JGLOBAL_FIELDSET_PUBLISHING', true);

	// Joomla 2.5
	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		jimport('joomla.html.html.tabs');

		$iCmapDisplay		= '3';

		$icPanCategory		= JText::_('COM_ICAGENDA_TITLE_CATEGORY');
		$icPanDesc			= JText::_('COM_ICAGENDA_LEGEND_DESC');
		$icPanPublishing	= JText::_('JGLOBAL_FIELDSET_PUBLISHING');
		$startPane			= 'tabs.start';
		$addPanel			= 'tabs.panel';
		$endPanel			= 'tabs.end';
		$endPane			= 'tabs.end';
		$CategoryTag1		= $CategoryTag;
		$CategoryTag2		= $CategoryTitle;
		$DescTag1			= $DescTag;
		$DescTag2			= $DescTitle;
		$PublishingTag1		= $PublishingTag;
		$PublishingTag2		= $PublishingTitle;
	}

	// Joomla 3
	else
	{
		JHtml::_('formbehavior.chosen', 'select');
		jimport('joomla.html.html.bootstrap');

		$icPanCategory		= 'icTab';
		$icPanDesc			= 'icTab';
		$icPanPublishing	= 'icTab';

		if ($bootstrapType == '1')
		{
			$iCmapDisplay	= '1';
			$startPane		= 'bootstrap.startTabSet';
			$addPanel		= 'bootstrap.addTab';
			$endPanel		= 'bootstrap.endTab';
			$endPane		= 'bootstrap.endTabSet';
			$CategoryTag1	= $CategoryTag;
			$CategoryTag2	= $CategoryTitle;
			$DescTag1		= $DescTag;
			$DescTag2		= $DescTitle;
			$PublishingTag1	= $PublishingTag;
			$PublishingTag2	= $PublishingTitle;
		}
		elseif ($bootstrapType == '2')
		{
			$iCmapDisplay	= '2';
			$startPane		= 'bootstrap.startAccordion';
			$addPanel		= 'bootstrap.addSlide';
			$endPanel		= 'bootstrap.endSlide';
			$endPane		= 'bootstrap.endAccordion';
			$CategoryTag1	= $CategoryTitle;
			$CategoryTag2	= $CategoryTag;
			$DescTag1		= $DescTitle;
			$DescTag2		= $DescTag;
			$PublishingTag1	= $PublishingTitle;
			$PublishingTag2	= $PublishingTag;
		}
	}
	?>

	<script type="text/javascript">
		Joomla.submitbutton = function(task)
		{
			if (task == 'category.cancel' || document.formvalidator.isValid(document.id('category-form'))) {
				Joomla.submitform(task, document.getElementById('category-form'));
			}
			else {
				alert('<?php echo $this->escape(JText::_('JGLOBAL_VALIDATION_FORM_FAILED'));?>');
			}
		}
	</script>

<form action="<?php echo JRoute::_('index.php?option=com_icagenda&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="category-form" class="form-validate">
	<div class="container">

		<!-- iCheader top bar -->
		<!--div class="iCheader-top">
			<a href="#">
				<strong>&laquo; Previous </strong>event
			</a>
			<span class="right">
				<a href="#">
					<strong>Next</strong> event <strong>&raquo;</strong>
				</a>
			</span>
			<div class="clr"></div>
		</div-->
		<!--/ iCheader top bar -->


		<!-- iCagenda Header -->
		<header>
			<h1>
				<?php echo empty($this->item->id) ? JText::_('COM_ICAGENDA_LEGEND_NEW_CATEGORY') : JText::sprintf('COM_ICAGENDA_LEGEND_EDIT_CATEGORY', $this->item->id); ?>&nbsp;<span>iCagenda</span>
			</h1>
			<h2>
				<?php echo JText::_('COM_ICAGENDA_COMPONENT_DESC'); ?>
				<!--nav class="iCheader-videos">
					<span style="font-variant:small-caps">Tutorial Videos</span>
					<a href="#">Add a event</a>
					<a href="#">Video 2</a>
					<a href="#">Video 3</a>
				</nav-->
			</h2>
		</header>

		<div>&nbsp;</div>



		<!-- Begin Content -->
		<div class="row-fluid">
			<div class="span10 form-horizontal">

				<!-- Open Panel Set -->
				<?php echo JHtml::_($startPane, 'icTab', array('active' => 'category')); ?>

					<!-- Panel Event -->
					<?php echo JHtml::_($addPanel, $icPanCategory, $CategoryTag1, $CategoryTag2); ?>

						<div class="icpanel iCleft">
							<h1><?php echo empty($this->item->id) ? JText::_('COM_ICAGENDA_LEGEND_NEW_CATEGORY') : JText::sprintf('COM_ICAGENDA_LEGEND_EDIT_CATEGORY', $this->item->id); ?></h1>
							<hr>
							<div class="row-fluid">
								<div class="span6 iCleft">
									<div class="control-group">
										<div class="control-label">
											<?php echo $this->form->getLabel('title'); ?>
										</div>
										<div class="controls">
											<?php echo $this->form->getInput('title'); ?>
										</div>
									</div>
								</div>
								<div class="span6 iCleft">
									<div class="control-group">
										<div class="control-label">
											<?php echo $this->form->getLabel('color'); ?>
										</div>
										<div class="controls">
											<?php echo $this->form->getInput('color'); ?>
										</div>
									</div>
								</div>
							</div>
						</div>


					<?php
					if(version_compare(JVERSION, '3.0', 'ge')) {
						echo JHtml::_($endPanel);
					}
					?>


					<!-- Panel Description -->
					<?php echo JHtml::_($addPanel, $icPanDesc, $DescTag1, $DescTag2); ?>

						<div class="icpanel iCleft">
							<h1><?php echo JText::_('COM_ICAGENDA_LEGEND_DESC'); ?></h1>
							<hr>
							<div class="row-fluid">
								<div class="span12 iCleft">
									<h3><?php echo JText::_('COM_ICAGENDA_FORM_DESC_CATEGORY_DESC'); ?></h3>
									<?php echo $this->form->getInput('desc'); ?>
								</div>
							</div>
						</div>


				<?php
				if(version_compare(JVERSION, '3.0', 'ge')) {
					echo JHtml::_($endPanel);
				}
				?>

				<?php
				echo JHtml::_($addPanel, $icPanPublishing, $PublishingTag1, $PublishingTag2);
				?>
				<div class="icpanel iCleft">
					<h1><?php echo JText::_('JGLOBAL_FIELDSET_PUBLISHING'); ?></h1>
					<hr>
					<div class="row-fluid">
						<div class="span6 iCleft">
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('alias'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('alias'); ?>
								</div>
							</div>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('id'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('id'); ?>
								</div>
							</div>
							<!--div class="control-group">
								<?php echo $this->form->getLabel('created_by'); ?>
								<div class="controls">
									<?php echo $this->form->getInput('created_by'); ?>
								</div>
							</div>
							<div class="control-group">
								<?php echo $this->form->getLabel('created_by_alias'); ?>
								<div class="controls">
									<?php echo $this->form->getInput('created_by_alias'); ?>
								</div>
							</div>
							<div class="control-group">
								<?php echo $this->form->getLabel('created'); ?>
								<div class="controls">
									<?php echo $this->form->getInput('created'); ?>
								</div>
							</div-->
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('checked_out'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('checked_out'); ?>
								</div>
							</div>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('checked_out_time'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('checked_out_time'); ?>
								</div>
							</div>
						</div>
					</div>
				</div>


				<?php echo JHtml::_($endPanel); ?>

				<?php echo JHtml::_($endPane, 'icTab'); ?>
			</div>

		<!-- Begin Sidebar -->
			<div class="span2 iCleft">
						<h4><?php echo JText::_('COM_ICAGENDA_TITLE_SIDEBAR_DETAILS'); ?></h4>
						<hr>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('state'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('state'); ?>
								</div>
							</div>
							<!--div class="control-group">
								<?php echo $this->form->getLabel('access'); ?>
								<div class="controls">
									<?php echo $this->form->getInput('access'); ?>
								</div>
							</div>
							<div class="control-group">
								<?php echo $this->form->getLabel('language'); ?>
								<div class="controls">
									<?php echo $this->form->getInput('language'); ?>
								</div>
							</div-->
			</div>
		<!-- End Sidebar -->
		</div>

		<div class="clr"></div>

	</div>

	</div>

	<input type="hidden" name="task" value="" />
	<?php echo JHtml::_('form.token'); ?>
	<div class="clr"></div>
</form>

	<?php
	// Joomla 2.5
	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		JHtml::stylesheet('com_icagenda/template.j25.css', false, true);
		JHtml::stylesheet('com_icagenda/icagenda-back.j25.css', false, true);
	}
}
else
{
	$app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning');
	$app->redirect(htmlspecialchars_decode('index.php?option=com_icagenda&view=icagenda'));
}
views/category/tmpl/index.html000060400000000032152455705350012471 0ustar00<html><body></body></html>views/customfield/tmpl/index.html000060400000000032152455705350013172 0ustar00<html><body></body></html>views/customfield/tmpl/edit.php000060400000030725152455705350012647 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-05-06
 * @since		3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');

$app = JFactory::getApplication();
$document = JFactory::getDocument();

// Access Administration Categories check.
if (JFactory::getUser()->authorise('icagenda.access.customfields', 'com_icagenda'))
{
	$bootstrapType		= '1';
	$PanelOne_Tag		= 'customfield';
	$PanelOne_Title		= JText::_('COM_ICAGENDA_CUSTOMFIELD_PANEL_TITLE', true);
	$PanelTwo_Tag		= 'desc';
	$PanelTwo_Title		= JText::_('COM_ICAGENDA_LEGEND_DESC', true);
	$PublishingTag		= 'publishing';
	$PublishingTitle	= JText::_('JGLOBAL_FIELDSET_PUBLISHING', true);

	// Joomla 2.5
	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		jimport( 'joomla.html.html.tabs' );

		$iCmapDisplay		= '3';

		$icPanFirst			= JText::_('COM_ICAGENDA_CUSTOMFIELD_PANEL_TITLE');
		$icPanDesc			= JText::_('COM_ICAGENDA_LEGEND_DESC');
		$icPanPublishing	= JText::_('JGLOBAL_FIELDSET_PUBLISHING');
		$startPane			= 'tabs.start';
		$addPanel			= 'tabs.panel';
		$endPanel			= 'tabs.end';
		$endPane			= 'tabs.end';
		$PanelOne_Tag1		= $PanelOne_Tag;
		$PanelOne_Tag2		= $PanelOne_Title;
		$PanelTwo_Tag1		= $PanelTwo_Tag;
		$PanelTwo_Tag2		= $PanelTwo_Title;
		$PublishingTag1		= $PublishingTag;
		$PublishingTag2		= $PublishingTitle;
	}

	// Joomla 3
	else
	{
		JHtml::_('formbehavior.chosen', 'select');
		jimport('joomla.html.html.bootstrap');

		$icPanFirst			= 'icTab';
		$icPanDesc			= 'icTab';
		$icPanPublishing	= 'icTab';

		if ($bootstrapType == '1')
		{
			$iCmapDisplay	= '1';
			$startPane		= 'bootstrap.startTabSet';
			$addPanel		= 'bootstrap.addTab';
			$endPanel		= 'bootstrap.endTab';
			$endPane		= 'bootstrap.endTabSet';
			$PanelOne_Tag1	= $PanelOne_Tag;
			$PanelOne_Tag2	= $PanelOne_Title;
			$PanelTwo_Tag1	= $PanelTwo_Tag;
			$PanelTwo_Tag2	= $PanelTwo_Title;
			$PublishingTag1	= $PublishingTag;
			$PublishingTag2	= $PublishingTitle;
		}
		elseif ($bootstrapType == '2')
		{
			$iCmapDisplay	= '2';
			$startPane		= 'bootstrap.startAccordion';
			$addPanel		= 'bootstrap.addSlide';
			$endPanel		= 'bootstrap.endSlide';
			$endPane		= 'bootstrap.endAccordion';
			$PanelOne_Tag1	= $PanelOne_Title;
			$PanelOne_Tag2	= $PanelOne_Tag;
			$PanelTwo_Tag1	= $PanelTwo_Title;
			$PanelTwo_Tag2	= $PanelTwo_Tag;
			$PublishingTag1	= $PublishingTitle;
			$PublishingTag2	= $PublishingTag;
		}
	}
	?>

<script type="text/javascript">
	Joomla.submitbutton = function(task)
	{
		if (task == 'customfield.cancel' || document.formvalidator.isValid(document.id('customfield-form'))) {
			Joomla.submitform(task, document.getElementById('customfield-form'));
		}
		else {
			alert('<?php echo $this->escape(JText::_('JGLOBAL_VALIDATION_FORM_FAILED'));?>');
		}
	}
</script>

<form action="<?php echo JRoute::_('index.php?option=com_icagenda&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="customfield-form" class="form-validate">

	<div class="container">

		<!-- iCheader top bar -->
		<!--div class="iCheader-top">
			<a href="#">
				<strong>&laquo; Previous </strong>event
			</a>
			<span class="right">
				<a href="#">
					<strong>Next</strong> event <strong>&raquo;</strong>
				</a>
			</span>
			<div class="clr"></div>
		</div-->
		<!--/ iCheader top bar -->


		<!-- iCagenda Header -->
		<header>
			<h1>
				<?php echo empty($this->item->id) ? JText::_('COM_ICAGENDA_CUSTOMFIELD_LEGEND_NEW') : JText::sprintf('COM_ICAGENDA_CUSTOMFIELD_LEGEND_EDIT', $this->item->id); ?>&nbsp;<span>iCagenda</span>
			</h1>
			<h2>
				<?php echo JText::_('COM_ICAGENDA_COMPONENT_DESC'); ?>
				<!--nav class="iCheader-videos">
					<span style="font-variant:small-caps">Tutorial Videos</span>
					<a href="#">Add a event</a>
					<a href="#">Video 2</a>
					<a href="#">Video 3</a>
				</nav-->
			</h2>
		</header>

		<div>&nbsp;</div>



		<!-- Begin Content -->
		<div class="row-fluid">
			<div class="span10 form-horizontal">

				<!-- Open Panel Set -->
				<?php echo JHtml::_($startPane, 'icTab', array('active' => 'customfield')); ?>

					<!-- Panel Event -->
					<?php echo JHtml::_($addPanel, $icPanFirst, $PanelOne_Tag1, $PanelOne_Tag2); ?>

						<div class="icpanel iCleft">
							<h1><?php echo empty($this->item->id) ? JText::_('COM_ICAGENDA_CUSTOMFIELD_LEGEND_NEW') : JText::sprintf('COM_ICAGENDA_CUSTOMFIELD_LEGEND_EDIT', $this->item->id); ?></h1>
							<hr>
							<div class="row-fluid">
								<div class="span6 iCleft">
									<div class="control-group">
										<div class="control-label">
											<?php echo $this->form->getLabel('title'); ?>
										</div>
										<div class="controls">
											<?php echo $this->form->getInput('title'); ?>
										</div>
									</div>
									<div class="control-group">
										<div class="control-label">
											<?php echo $this->form->getLabel('slug'); ?>
										</div>
										<div class="controls">
											<?php echo $this->form->getInput('slug'); ?>
										</div>
									</div>
									<div class="control-group">
										<div class="control-label">
											<?php echo $this->form->getLabel('parent_form'); ?>
										</div>
										<div class="controls">
											<?php echo $this->form->getInput('parent_form'); ?>
										</div>
									</div>
								</div>
								<div class="span6 iCleft">
									<div class="control-group">
										<div class="control-label">
											<?php echo $this->form->getLabel('type'); ?>
										</div>
										<div class="controls">
											<?php echo $this->form->getInput('type'); ?>
										</div>
									</div>
									<div class="control-group">
										<div class="control-label">
											<?php echo $this->form->getLabel('options'); ?>
										</div>
										<div class="controls">
											<?php echo $this->form->getInput('options'); ?>
										</div>
									</div>
									<div class="control-group">
										<div class="control-label">
											<?php echo $this->form->getLabel('required'); ?>
										</div>
										<div class="controls">
											<?php echo $this->form->getInput('required'); ?>
										</div>
									</div>
								</div>
							</div>
							<hr>
						</div>


					<?php
					if(version_compare(JVERSION, '3.0', 'ge')) {
						echo JHtml::_($endPanel);
					}
					?>


					<!-- Panel Description -->
					<?php echo JHtml::_($addPanel, $icPanDesc, $PanelTwo_Tag1, $PanelTwo_Tag2); ?>

						<div class="icpanel iCleft">
							<h1><?php echo JText::_('COM_ICAGENDA_LEGEND_DESC'); ?></h1>
							<hr>
							<div class="row-fluid">
								<div class="span12 iCleft">
									<h3><?php echo JText::_('COM_ICAGENDA_CUSTOMFIELD_DESCRIPTION_DESC'); ?></h3>
									<?php echo $this->form->getInput('description'); ?>
								</div>
							</div>
						</div>


				<?php
				if(version_compare(JVERSION, '3.0', 'ge')) {
					echo JHtml::_($endPanel);
				}
				?>

				<?php
				echo JHtml::_($addPanel, $icPanPublishing, $PublishingTag1, $PublishingTag2);
				?>
				<div class="icpanel iCleft">
					<h1><?php echo JText::_('JGLOBAL_FIELDSET_PUBLISHING'); ?></h1>
					<hr>
					<div class="row-fluid">
						<div class="span6 iCleft">
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('id'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('id'); ?>
								</div>
							</div>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('alias'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('alias'); ?>
								</div>
							</div>
							<div class="control-group">
								<?php echo $this->form->getLabel('created'); ?>
								<div class="controls">
									<?php echo $this->form->getInput('created'); ?>
								</div>
							</div>
							<div class="control-group">
								<?php echo $this->form->getLabel('created_by'); ?>
								<div class="controls">
									<?php echo $this->form->getInput('created_by'); ?>
								</div>
							</div>
							<div class="control-group">
								<?php echo $this->form->getLabel('created_by_alias'); ?>
								<div class="controls">
									<?php echo $this->form->getInput('created_by_alias'); ?>
								</div>
							</div>
							<div class="control-group">
								<?php echo $this->form->getLabel('modified'); ?>
								<div class="controls">
									<?php echo $this->form->getInput('modified'); ?>
								</div>
							</div>
							<div class="control-group">
								<?php echo $this->form->getLabel('modified_by'); ?>
								<div class="controls">
									<?php echo $this->form->getInput('modified_by'); ?>
								</div>
							</div>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('checked_out'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('checked_out'); ?>
								</div>
							</div>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('checked_out_time'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('checked_out_time'); ?>
								</div>
							</div>
						</div>
					</div>
				</div>


				<?php echo JHtml::_($endPanel); ?>

				<?php echo JHtml::_($endPane, 'icTab'); ?>
			</div>

		<!-- Begin Sidebar -->
			<div class="span2 iCleft">
						<h4><?php echo JText::_('COM_ICAGENDA_TITLE_SIDEBAR_DETAILS'); ?></h4>
						<hr>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('state'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('state'); ?>
								</div>
							</div>
							<!--div class="control-group">
								<?php echo $this->form->getLabel('access'); ?>
								<div class="controls">
									<?php echo $this->form->getInput('access'); ?>
								</div>
							</div-->
							<!--div class="control-group">
								<?php echo $this->form->getLabel('language'); ?>
								<div class="controls">
									<?php echo $this->form->getInput('language'); ?>
								</div>
							</div-->
							<input type="hidden" name="language" value="*" />
			</div>
		<!-- End Sidebar -->
		</div>

		<div class="clr"></div>

	</div>




	</div>


	<input type="hidden" name="task" value="" />
	<?php echo JHtml::_('form.token'); ?>
	<div class="clr"></div>
</form>

	<?php
	// Joomla 2.5
	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		JHtml::stylesheet('com_icagenda/template.j25.css', false, true);
		JHtml::stylesheet('com_icagenda/icagenda-back.j25.css', false, true);

		JHtml::_('behavior.framework');

		// load jQuery, if not loaded before
		$scripts = array_keys($document->_scripts);
		$scriptFound = false;
		$scriptuiFound = false;

		for ($i = 0; $i < count($scripts); $i++)
		{
			if (stripos($scripts[$i], 'jquery.min.js') !== false)
			{
				$scriptFound = true;
			}
			if (stripos($scripts[$i], 'jquery.js') !== false)
			{
				$scriptFound = true;
			}
			if (stripos($scripts[$i], 'jquery-ui.min.js') !== false)
			{
				$scriptuiFound = true;
			}
		}

		// jQuery Library Loader
		if (!$scriptFound)
		{
			// load jQuery, if not loaded before
			if (!$app->get('jquery'))
			{
				$app->set('jquery', true);
				// add jQuery
				$document->addScript('https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');
				$document->addScript( JURI::root( true ) . '/media/com_icagenda/js/jquery.noconflict.js' );
			}
		}

		if (!$scriptuiFound)
		{
			$document->addScript('https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js');
		}

		$document->addScript( JURI::root( true ) . '/media/com_icagenda/js/template.js' );
	}
	else
	{
		JHtml::_('bootstrap.framework');
		JHtml::_('jquery.framework');
	}

}
else
{
	$app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning');
	$app->redirect(htmlspecialchars_decode('index.php?option=com_icagenda&view=icagenda'));
}
views/customfield/view.html.php000060400000007307152455705350012663 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-07-02
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

// iCagenda Class control (Joomla 2.5/3.x)
if (!class_exists('iCJView')) {
	if (version_compare(JVERSION,'3.0.0','ge')) {
		class iCJView extends JViewLegacy {};
	} else {
		jimport('joomla.application.component.view');
		class iCJView extends JView {};
	}
}

/**
 * View class Admin - Edit a Custom Field - iCagenda
 */
class iCagendaViewCustomfield extends iCJView
{
	protected $state;
	protected $item;
	protected $form;

	/**
	 * Display the view
	 */
	public function display($tpl = null)
	{
		$this->state	= $this->get('State');
		$this->item		= $this->get('Item');
		$this->form		= $this->get('Form');

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));
			return false;
		}

		$this->addToolbar();

		parent::display($tpl);
	}

	/**
	 * Add the page title and toolbar.
	 */
	protected function addToolbar()
	{
		JRequest::setVar('hidemainmenu', true);

		$user		= JFactory::getUser();
		$isNew		= ($this->item->id == 0);

        if (isset($this->item->checked_out))
        {
		    $checkedOut	= !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id'));
        }
        else
        {
            $checkedOut = false;
        }

		$canDo		= iCagendaHelper::getActions();

		// Set Title
		if(version_compare(JVERSION, '3.0', 'lt'))
		{
			JToolBarHelper::title($isNew ? 'iCagenda - ' . JText::_('COM_ICAGENDA_CUSTOMFIELD_LEGEND_NEW') : 'iCagenda - ' . JText::_('COM_ICAGENDA_CUSTOMFIELD_LEGEND_EDIT'), 'category.png');
		}
		else
		{
			JToolBarHelper::title($isNew ? 'iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_CUSTOMFIELD_LEGEND_NEW') . '</span>'  : 'iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_CUSTOMFIELD_LEGEND_EDIT') . '</span>' , $isNew ? 'new' : 'pencil-2');
		}

		$icTitle = $isNew ? JText::_('COM_ICAGENDA_CUSTOMFIELD_LEGEND_NEW') : JText::_('COM_ICAGENDA_CUSTOMFIELD_LEGEND_EDIT');

		$document	= JFactory::getDocument();
		$app		= JFactory::getApplication();
		$sitename	= $app->getCfg('sitename');
		$title		= $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;
		$document->setTitle($title);

		// If not checked out, can save the item.
		if (!$checkedOut && ($canDo->get('core.edit')||($canDo->get('core.create'))))
		{
			JToolBarHelper::apply('customfield.apply', 'JTOOLBAR_APPLY');
			JToolBarHelper::save('customfield.save', 'JTOOLBAR_SAVE');
		}

		if (!$checkedOut && ($canDo->get('core.create')))
		{
			JToolBarHelper::custom('customfield.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
		}

		// If an existing item, can save to a copy.
		if (!$isNew && $canDo->get('core.create'))
		{
			JToolBarHelper::custom('customfield.save2copy', 'save-copy.png', 'save-copy_f2.png', 'JTOOLBAR_SAVE_AS_COPY', false);
		}

		if (empty($this->item->id))
		{
			JToolBarHelper::cancel('customfield.cancel', 'JTOOLBAR_CANCEL');
		}
		else
		{
			JToolBarHelper::cancel('customfield.cancel', 'JTOOLBAR_CLOSE');
		}
	}
}
views/customfield/index.html000060400000000032152455705350012216 0ustar00<html><body></body></html>views/registration/view.html.php000060400000007157152455705350013062 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-06-10
 * @since       3.3.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * View class Admin - Registration Edit - iCagenda
 */
class iCagendaViewRegistration extends JViewLegacy
{
	protected $state;
	protected $item;
	protected $form;

	/**
	 * Display the view
	 */
	public function display($tpl = null)
	{
		// Initialiase variables.
		$this->state	= $this->get('State');
		$this->item		= $this->get('Item');
		$this->form		= $this->get('Form');

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));
			return false;
		}

		$this->addToolbar();

		parent::display($tpl);
	}

	/**
	 * Add the page title and toolbar.
	 */
	protected function addToolbar()
	{
		JRequest::setVar('hidemainmenu', true);

		$user		= JFactory::getUser();
		$isNew		= ($this->item->id == 0);

        if (isset($this->item->checked_out))
        {
		    $checkedOut	= ! ($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id'));
        }
        else
        {
            $checkedOut = false;
        }

		$canDo		= iCagendaHelper::getActions();

		//JToolBarHelper::title(JText::_('COM_ICAGENDA_TITLE_CATEGORY'), 'category.png');
		// Set Title
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JToolBarHelper::title($isNew ? 'iCagenda - ' . JText::_('COM_ICAGENDA_LEGEND_NEW_REGISTRATION') : 'iCagenda - ' . JText::_('COM_ICAGENDA_LEGEND_EDIT_REGISTRATION'), 'registration.png');
		}
		else
		{
			JToolBarHelper::title($isNew ? 'iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_LEGEND_NEW_REGISTRATION') . '</span>'  : 'iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_LEGEND_EDIT_REGISTRATION') . '</span>' , $isNew ? 'new' : 'pencil-2');
		}

		$icTitle	= $isNew ? JText::_('COM_ICAGENDA_LEGEND_NEW_REGISTRATION') : JText::_('COM_ICAGENDA_LEGEND_EDIT_REGISTRATION');

		$document	= JFactory::getDocument();
		$app		= JFactory::getApplication();
		$sitename	= $app->getCfg('sitename');
		$title		= $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;

		$document->setTitle($title);

		// If not checked out, can save the item.
		if ( ! $checkedOut && ($canDo->get('core.edit') || $canDo->get('core.edit.own') || $canDo->get('core.create')))
		{
			JToolBarHelper::apply('registration.apply', 'JTOOLBAR_APPLY');
			JToolBarHelper::save('registration.save', 'JTOOLBAR_SAVE');
		}

		if ( ! $checkedOut && ($canDo->get('core.create')))
		{
			JToolBarHelper::custom('registration.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
		}

		// If an existing item, can save to a copy.
		if ( ! $isNew && $canDo->get('core.create'))
		{
			JToolBarHelper::custom('registration.save2copy', 'save-copy.png', 'save-copy_f2.png', 'JTOOLBAR_SAVE_AS_COPY', false);
		}

		if (empty($this->item->id))
		{
			JToolBarHelper::cancel('registration.cancel', 'JTOOLBAR_CANCEL');
		}
		else
		{
			JToolBarHelper::cancel('registration.cancel', 'JTOOLBAR_CLOSE');
		}
	}
}
views/registration/index.html000060400000000032152455705350012412 0ustar00<html><body></body></html>views/registration/tmpl/index.html000060400000000032152455705350013366 0ustar00<html><body></body></html>views/registration/tmpl/edit.php000060400000031060152455705350013034 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.9 2015-07-31
 * @since       3.3.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

JHtml::_('behavior.tooltip');
JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidation');

$app = JFactory::getApplication();

// Access Administration Categories check.
if (JFactory::getUser()->authorise('icagenda.access.registrations', 'com_icagenda'))
{
	$document			= JFactory::getDocument();
	$bootstrapType		= '1';
	$RegistrationTag	= 'Registration';
	$RegistrationTitle	= JText::_('COM_ICAGENDA_REGISTRATION_INFORMATION', true);
	$DescTag			= 'desc';
	$DescTitle			= JText::_('COM_ICAGENDA_REGISTRATION_NOTES_DISPLAY_LABEL', true);
	$PublishingTag		= 'publishing';
	$PublishingTitle	= JText::_('JGLOBAL_FIELDSET_PUBLISHING', true);

	// Joomla 2.5
	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		jimport( 'joomla.html.html.tabs' );

		$iCmapDisplay		= '3';

		$icPanRegistration	= JText::_('COM_ICAGENDA_TITLE_REGISTRATION');
		$icPanDesc			= JText::_('COM_ICAGENDA_REGISTRATION_NOTES_DISPLAY_LABEL');
		$icPanPublishing	= JText::_('JGLOBAL_FIELDSET_PUBLISHING');
		$startPane			= 'tabs.start';
		$addPanel			= 'tabs.panel';
		$endPanel			= 'tabs.end';
		$endPane			= 'tabs.end';
		$RegistrationTag1	= $RegistrationTag;
		$RegistrationTag2	= $RegistrationTitle;
		$DescTag1			= $DescTag;
		$DescTag2			= $DescTitle;
		$PublishingTag1		= $PublishingTag;
		$PublishingTag2		= $PublishingTitle;
	}

	// Joomla 3
	else
	{
		JHtml::_('formbehavior.chosen', 'select');
		jimport('joomla.html.html.bootstrap');

		$icPanRegistration	= 'icTab';
		$icPanDesc			= 'icTab';
		$icPanPublishing	= 'icTab';

		if ($bootstrapType == '1')
		{
			$iCmapDisplay		= '1';
			$startPane			= 'bootstrap.startTabSet';
			$addPanel			= 'bootstrap.addTab';
			$endPanel			= 'bootstrap.endTab';
			$endPane			= 'bootstrap.endTabSet';
			$RegistrationTag1	= $RegistrationTag;
			$RegistrationTag2	= $RegistrationTitle;
			$DescTag1			= $DescTag;
			$DescTag2			= $DescTitle;
			$PublishingTag1		= $PublishingTag;
			$PublishingTag2		= $PublishingTitle;
		}
		if ($bootstrapType == '2')
		{
			$iCmapDisplay		= '2';
			$startPane			= 'bootstrap.startAccordion';
			$addPanel			= 'bootstrap.addSlide';
			$endPanel			= 'bootstrap.endSlide';
			$endPane			= 'bootstrap.endAccordion';
			$RegistrationTag1	= $RegistrationTitle;
			$RegistrationTag2	= $RegistrationTag;
			$DescTag1			= $DescTitle;
			$DescTag2			= $DescTag;
			$PublishingTag1		= $PublishingTitle;
			$PublishingTag2		= $PublishingTag;
		}
	}
	?>

	<?php // ERROR ALERT ?>
	<div id="form_errors" class="alert alert-danger" style="display:none">
		<strong><?php echo JText::_('JGLOBAL_VALIDATION_FORM_FAILED'); ?></strong>
		<div id="message_error">
		</div>
	</div>

	<form action="<?php echo JRoute::_('index.php?option=com_icagenda&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="registration-form" class="form-validate" enctype="multipart/form-data">
		<div class="container">

			<!-- iCagenda Header -->
			<header>
				<h1>
					<?php echo empty($this->item->id) ? JText::_('COM_ICAGENDA_LEGEND_NEW_REGISTRATION') : JText::sprintf('COM_ICAGENDA_LEGEND_EDIT_REGISTRATION', $this->item->id); ?>&nbsp;<span>iCagenda</span>
				</h1>
				<h2>
					<?php echo JText::_('COM_ICAGENDA_COMPONENT_DESC'); ?>
				</h2>
			</header>

			<div>&nbsp;</div>

			<!-- Begin Content -->
			<div class="row-fluid">
				<div class="span10 form-horizontal">

					<!-- Open Panel Set -->
					<?php echo JHtml::_($startPane, 'icTab', array('active' => 'Registration')); ?>

						<!-- Panel Event -->
						<?php echo JHtml::_($addPanel, $icPanRegistration, $RegistrationTag1, $RegistrationTag2); ?>

							<div class="icpanel iCleft">
								<h1>
									<?php echo empty($this->item->id) ? JText::_('COM_ICAGENDA_LEGEND_NEW_REGISTRATION') : JText::sprintf('COM_ICAGENDA_LEGEND_EDIT_REGISTRATION', $this->item->id); ?>
								</h1>
								<hr>
								<div class="row-fluid">
									<div class="span6 iCleft">
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('name'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('name'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('email'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('email'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('phone'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('phone'); ?>
											</div>
										</div>
										<h3><?php echo JText::_('COM_ICAGENDA_CUSTOMFIELDS'); ?></h3>
										<?php
										// Load Custom fields - Registration form (1)
										echo icagendaCustomfields::loader(1);
										?>
									</div>
									<div class="span6 iCleft">
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('eventid'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('eventid'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('date'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('date'); ?>
											</div>
										</div>
										<?php //if ($this->item->period) : ?>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('period'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('period'); ?>
											</div>
										</div>
										<?php //endif; ?>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('people'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('people'); ?>
											</div>
										</div>
									</div>
								</div>
							</div>


						<?php
						if(version_compare(JVERSION, '3.0', 'ge')) {
							echo JHtml::_($endPanel);
						}
						?>


						<!-- Panel Description -->
						<?php echo JHtml::_($addPanel, $icPanDesc, $DescTag1, $DescTag2); ?>

							<div class="icpanel iCleft">
								<h1><?php echo JText::_('COM_ICAGENDA_REGISTRATION_NOTES_DISPLAY_LABEL'); ?></h1>
								<hr>
								<div class="row-fluid">
									<div class="span12 iCleft">
										<!--h3><?php echo JText::_('COM_ICAGENDA_FORM_DESC_REGISTRATION_DESC'); ?></h3-->
										<?php echo $this->form->getInput('notes'); ?>
									</div>
								</div>
							</div>


						<?php
						if(version_compare(JVERSION, '3.0', 'ge')) {
							echo JHtml::_($endPanel);
						}
						?>

						<?php
						echo JHtml::_($addPanel, $icPanPublishing, $PublishingTag1, $PublishingTag2);
						?>
							<div class="icpanel iCleft">
								<h1><?php echo JText::_('JGLOBAL_FIELDSET_PUBLISHING'); ?></h1>
								<hr>
								<div class="row-fluid">
									<div class="span6 iCleft">
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('id'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('id'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('userid'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('userid'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('created'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('created'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('created_by'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('created_by'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('modified'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('modified'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('modified_by'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('modified_by'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('checked_out'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('checked_out'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('checked_out_time'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('checked_out_time'); ?>
											</div>
										</div>
									</div>
								</div>
							</div>

						<?php echo JHtml::_($endPanel); ?>

					<?php echo JHtml::_($endPane, 'icTab'); ?>
				</div>

				<!-- Begin Sidebar -->
				<div class="span2 iCleft">
					<h4><?php echo JText::_('COM_ICAGENDA_TITLE_SIDEBAR_DETAILS'); ?></h4>
					<hr>
					<div class="control-group">
						<div class="control-label">
							<?php echo $this->form->getLabel('state'); ?>
						</div>
						<div class="controls">
							<?php echo $this->form->getInput('state'); ?>
						</div>
					</div>
				</div>
				<!-- End Sidebar -->

			</div>
			<div class="clr"></div>
		</div>

		<input type="hidden" name="task" value="" />
		<?php echo JHtml::_('form.token'); ?>
	</form>

	<?php
	// Script validation for Registration form (1)
	$iCheckForm = icagendaForm::submit(1);
	$document->addScriptDeclaration($iCheckForm);

	// Joomla 2.5
	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		JHtml::stylesheet('com_icagenda/template.j25.css', false, true);
		JHtml::stylesheet('com_icagenda/icagenda-back.j25.css', false, true);

		// load jQuery, if not loaded before (NEW VERSION IN 1.2.6)
		$scripts = array_keys($document->_scripts);
		$scriptFound = false;
		$scriptuiFound = false;
		$mapsgooglescriptFound = false;
		for ($i = 0; $i < count($scripts); $i++)
		{
			if (stripos($scripts[$i], 'jquery.min.js') !== false)
			{
				$scriptFound = true;
			}
			// load jQuery, if not loaded before as jquery - added in 1.2.7
			if (stripos($scripts[$i], 'jquery.js') !== false)
			{
				$scriptFound = true;
			}
			if (stripos($scripts[$i], 'jquery-ui.min.js') !== false)
			{
				$scriptuiFound = true;
			}
			if (stripos($scripts[$i], 'maps.google') !== false)
			{
				$mapsgooglescriptFound = true;
			}
		}

		// jQuery Library Loader
		if (!$scriptFound)
		{
			// load jQuery, if not loaded before
			if (!JFactory::getApplication()->get('jquery'))
			{
				JFactory::getApplication()->set('jquery', true);
				// add jQuery
				$document->addScript('https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');
				$document->addScript( JURI::root( true ) . '/media/com_icagenda/js/jquery.noconflict.js' );
			}
		}

		if (!$scriptuiFound)
		{
			$document->addScript('https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js');
		}

		$document->addScript( JURI::root( true ) . '/media/com_icagenda/js/template.js' );
	}
}
else
{
	$app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning');
	$app->redirect(htmlspecialchars_decode('index.php?option=com_icagenda&view=icagenda'));
}
views/info/index.html000060400000000032152455705350010633 0ustar00<html><body></body></html>views/info/view.html.php000060400000004613152455705350011275 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-06-23
 * @since       1.2.6
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

// Access check.
if (JFactory::getUser()->authorise('core.admin', 'com_icagenda'))
{
	JToolBarHelper::preferences('com_icagenda');
}

/**
 * View class for a list of iCagenda.
 */
class iCagendaViewinfo extends JViewLegacy
{
	/**
	 * Display the view
	 */
	public function display($tpl = null)
	{
		// Joomla 2.5
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JHtml::stylesheet('com_icagenda/template.j25.css', false, true);

			JHtml::_('behavior.tooltip');
			jimport( 'joomla.filesystem.path' );
		}

		JHtml::_('behavior.modal');

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));

			return false;
		}

		// We don't need toolbar in the modal window.
		if ($this->getLayout() !== 'modal')
		{
			$this->addToolbar();

			if (version_compare(JVERSION, '3.0', 'ge'))
			{
				$this->sidebar = JHtmlSidebar::render();
			}
		}

		parent::display($tpl);
	}

	/**
	 * Add the page title and toolbar.
	 *
	 * @since	1.6
	 */
	protected function addToolbar()
	{
		require_once JPATH_COMPONENT . '/helpers/icagenda.php';

		$state		= $this->get('State');

		// Set Title
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JToolBarHelper::title(JText::_('COM_ICAGENDA_TITLE_ICAGENDA_IMAGE'));
		}
		else
		{
			JToolBarHelper::title('iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_INFO') . '</span>', 'info-2');
		}

		$icTitle	= JText::_('COM_ICAGENDA_INFO');

		$document	= JFactory::getDocument();
		$app		= JFactory::getApplication();
		$sitename	= $app->getCfg('sitename');
		$title		= $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;
		$document->setTitle($title);
	}
}
views/info/tmpl/index.html000060400000000032152455705350011607 0ustar00<html><body></body></html>views/info/tmpl/default.php000060400000032501152455705350011755 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-06-23
 * @since       2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

$user		= JFactory::getUser();
$userId		= $user->get('id');

$db			= JFactory::getDbo();
$query		= $db->getQuery(true);
$query->select('version AS icv, releasedate AS icd')->from('#__icagenda')->where('id = 3');
$db->setQuery($query);
$version	= $db->loadObject()->icv;
$date		= $db->loadObject()->icd;
?>

<?php if (!empty( $this->sidebar)) : ?>
	<div id="j-sidebar-container" class="span2">
		<?php echo $this->sidebar; ?>
	</div>
	<div id="j-main-container" class="span10">
<?php else : ?>
	<div id="j-main-container">
<?php endif;?>
		<!-- Begin Content -->
		<div class="row-fluid">
			<div class="span12">
				<div class="row-fluid">
					<div class="span6">
						<div class="icpanel" style="background-color:#FFFFFF; border: 1px solid #D4D4D4; padding:10px; border-radius: 10px;">
							<h2 style="font-size:2em; color: Gray; text-align: center">
								<?php echo JText::_('COM_ICAGENDA_PANEL_CONTRIBUTORS');?>
							</h2>
							<div>&nbsp;</div>
							<p style="margin:10px 30px; text-align:center; color: grey;">
								<i>&ldquo; <?php echo JText::_('COM_ICAGENDA_PANEL_THANKS_TEXT'); ?> &rdquo;</i>
							</p>
							<p class="small" style="margin:20px 0px; text-align:justify; color: DimGray;">
								Ervin Bizjak, Bong, Giuseppe Bosco, Carosouza, Davor Čolić, doorknob, Reinhard Ekker, elirezo, jedi, jowe3, JonxDuo, KISweb, kredo9, macedorl, Kai Metsävainio, mussool, NicoDeluxe, Rickard Norberg, Andrzej Opejda, Régis, Tom-Henning, Rikard Tømte Reitan, Vlad Shuh, Leland Vandervort, Wilfred van Dijk, Roland van Wanrooy, David White ...
							</p>
							<h3><?php echo JText::_('COM_ICAGENDA_PANEL_TRANSLATION');?></h3>
							<div style="margin-left: 20px; padding:0px; color: DimGray;">
	<img src='../media/mod_languages/images/ar.gif' alt="ar" class='iCflag' /> &nbsp;<b>Arabic (Unitag) :</b> haneen2013, fkinanah <br />
	<img src='../media/mod_languages/images/eu_es.gif' alt="eu_es" class='iCflag' /> &nbsp;<b>Basque (Spain) :</b> Bizkaitarra <br />
	<img src='../media/mod_languages/images/bg.gif' alt="bg-BG" class='iCflag' /> &nbsp;<b>Bulgarian (Bulgaria) :</b> bimbongr <br />
	<img src='../media/mod_languages/images/ca.gif' alt="ca" class='iCflag' /> &nbsp;<b>Catalan (Spain) :</b> Mussool, Figuerolero, riquib <br />
	<img src='../media/mod_languages/images/zh.gif' alt="zh-CN" class='iCflag' /> &nbsp;<b>Chinese (China) :</b> Foxyman <br />
	<img src='../media/mod_languages/images/tw.gif' alt="zh-TW" class='iCflag' /> &nbsp;<b>Chinese (Taiwan) :</b> jedi, hkce, rowdytang <br />
	<img src='../media/mod_languages/images/hr.gif' alt="hr" class='iCflag' /> &nbsp;<b>Croatian (Croatia) :</b> Davor Čolić, komir <br />
	<img src='../media/mod_languages/images/cz.gif' alt="cz" class='iCflag' /> &nbsp;<b>Czech (Czech Republic) :</b> Bong <br />
	<img src='../media/mod_languages/images/dk.gif' alt="dk" class='iCflag' /> &nbsp;<b>Danish (Denmark) :</b> olewolf.dk, hvitnov, torbenspetersen, poulfrom, AhmadHamid <br />
	<img src='../media/mod_languages/images/nl.gif' alt="nl-NL" class='iCflag' /> &nbsp;<b>Dutch (Netherlands) :</b> Molenwal1, AnneM, Mario Guagliardo, wfvdijk, Walldorff <br />
	<img src='../media/mod_languages/images/en.gif' alt="en-GB" class='iCflag' /> &nbsp;<b>English (United Kingdom) :</b> Lyr!C <br />
	<img src='../media/mod_languages/images/us.gif' alt="en-US" class='iCflag' /> &nbsp;<b>English (United States) :</b> Lyr!C <br />
	<img src='../media/mod_languages/images/eo.gif' alt="eo" class='iCflag' /> &nbsp;<b>Esperanto :</b> Anita_Dagmarsdotter, Amema <br />
	<img src='../media/mod_languages/images/et.gif' alt="et" class='iCflag' /> &nbsp;<b>Estonian (Estonia) :</b> Eraser, Reijo <br />
	<img src='../media/mod_languages/images/fi.gif' alt="fi-FI" class='iCflag' /> &nbsp;<b>Finnish (Finland) :</b> Kai Metsävainio <br />
	<img src='../media/mod_languages/images/fr.gif' alt="fr-FR" class='iCflag' /> &nbsp;<b>French (France) :</b> Lyr!C <br />
	<img src='../media/mod_languages/images/de.gif' alt="de-DE" class='iCflag' /> &nbsp;<b>German (Germany) :</b> grisuu, mPino, Wasilis, bmbsbr, chuerner, Proton_11, keraM <br />
	<img src='../media/mod_languages/images/el.gif' alt="el-GR" class='iCflag' /> &nbsp;<b>Greek (Greece) :</b> E.Gkana-D.Kontogeorgis (elinag), rinenweb, kost36, mbini, Wasilis <br />
	<img src='../media/mod_languages/images/hu.gif' alt="hu-HU" class='iCflag' /> &nbsp;<b>Hungarian (Hungary) :</b> Halilaci, magicf, Cerbo, mester93 <br />
	<img src='../media/mod_languages/images/it.gif' alt="it-IT" class='iCflag' /> &nbsp;<b>Italian (Italy) :</b> Giuseppe Bosco (giusebos) <br />
	<img src='../media/mod_languages/images/ja.gif' alt="ja-JP" class='iCflag' /> &nbsp;<b>Japanese (Japan) :</b> nagata, taimai908 <br />
	<img src='../media/mod_languages/images/lv.gif' alt="lv-LV" class='iCflag' /> &nbsp;<b>Latvian (Latvia) :</b> kredo9 <br />
	<img src='../media/mod_languages/images/lt.gif' alt="lt-LT" class='iCflag' /> &nbsp;<b>Lithuanian (Lithuania) :</b> ahxoohx <br />
	<img src='../media/mod_languages/images/icon-16-language.png' alt="lb-LU" class='iCflag' /> &nbsp;<b>Luxembourgish (Luxembourg) :</b> Superjhemp <br />
	<img src='../media/mod_languages/images/no.gif' alt="nb-NO" class='iCflag' /> &nbsp;<b>Norwegian Bokmål (Norway) :</b> Rikard Tømte Reitan (Rikrei) <br />
	<img src='../media/mod_languages/images/fa_ir.gif' alt="fa-IR" class='iCflag' /> &nbsp;<b>Persian (Iran) :</b> Arash Rezvani (al3n.nvy) <br />
	<img src='../media/mod_languages/images/pl.gif' alt="pl-PL" class='iCflag' /> &nbsp;<b>Polish (Poland) :</b> mbsrz, KISweb, gienio22, traktor, niewidzialny <br />
	<img src='../media/mod_languages/images/pt_br.gif' alt="pt-BR" class='iCflag' /> &nbsp;<b>Portuguese (Brazil) :</b> Carosouza, alxaraujo <br />
	<img src='../media/mod_languages/images/pt.gif' alt="pt-PT" class='iCflag' /> &nbsp;<b>Portuguese (Portugal) :</b> LFGM, macedorl, horus68, helfer <br />
	<img src='../media/mod_languages/images/ro.gif' alt="ro-RO" class='iCflag' /> &nbsp;<b>Romanian (Romania) :</b> hat, mester93 <br />
	<img src='../media/mod_languages/images/ru.gif' alt="ru-RU" class='iCflag' /> &nbsp;<b>Russian (Russia) :</b> nshash, MSV <br />
	<img src='../media/mod_languages/images/sr.gif' alt="sr-YU" class='iCflag' /> &nbsp;<b>Serbian (latin) :</b> Nenad Mihajlović <br />
	<img src='../media/mod_languages/images/sk.gif' alt="sk-SK" class='iCflag' /> &nbsp;<b>Slovak (Slovakia) :</b> ischindl, J.Ribarszki <br />
	<img src='../media/mod_languages/images/sl.gif' alt="sl-SI" class='iCflag' /> &nbsp;<b>Slovenian (Slovenia) :</b> erbi (Ervin Bizjak) <br />
	<img src='../media/mod_languages/images/es.gif' alt="es-ES" class='iCflag' /> &nbsp;<b>Spanish (Spain) :</b> elerizo, mPino, albertodg, adolf64, Goncatín, virem1, leoxordonez, claugardia, sterroso <br />
	<img src='../media/mod_languages/images/sv.gif' alt="sv-SE" class='iCflag' /> &nbsp;<b>Swedish (Sweden) :</b> Rickard Norberg (metska), Amema, kricke <br />
	<img src='../media/mod_languages/images/th.gif' alt="th-TH" class='iCflag' /> &nbsp;<b>Thai (Thailand) :</b> rattanachai.ha <br />
	<img src='../media/mod_languages/images/tr.gif' alt="tr-TR" class='iCflag' /> &nbsp;<b>Turkish (Turkey) :</b> harikalarkutusu, farukzeynep, kemalokmen <br />
	<img src='../media/mod_languages/images/uk.gif' alt="uk" class='iCflag' /> &nbsp;<b>Ukrainian (Ukraine) :</b> Vlad Shuh (slv54) <br />
							</div>
							<br />
						</div>
					</div>
					<div class="span1">
					</div>
					<div class="span5">
						<div style="float:right; padding:0px 0px 0px 20px;">
							<img src="../media/com_icagenda/images/logo_icagenda.png" alt="logo_icagenda" />
						</div>
						<div>
							<h2 style="font-size:2em;">
								<b style="color:#cc0000;">iC</b><b style="color: #666666;">agenda<sup style="font-size:0.6em">&trade;</sup></b>&nbsp;<b style="font-size:0.5em;"></b>
							</h2>
						</div>
						<div>
							<h4>
								<?php echo JText::_('COM_ICAGENDA_INFORMATION') ?>
							</h4>
						</div>
						<div>&nbsp;</div>
						<div>&nbsp;</div>
						<div>&nbsp;</div>
						<div>&nbsp;</div>
						<div>&nbsp;</div>
						<div>&nbsp;</div>

						<h3><?php echo JText::_('iCagenda Team');?></h3>
						<p>
							<strong><?php echo JText::_('COM_ICAGENDA_PANEL_LEAD_DEVELOPER');?></strong><br />
							Cyril Rezé (Lyr!C) | <a href="http://www.joomlic.com" target="_blank">www.joomlic.com</a>
						</p>
						<p>
							<strong><?php echo JText::_('COM_ICAGENDA_PANEL_TEAM_1');?></strong><br>
							Giuseppe Bosco (giusebos) | <a href="http://www.newideasproject.com/" target="_blank">www.newideasproject.com</a>
						</p>
						<p>
							<strong><?php echo JText::_('COM_ICAGENDA_PANEL_TEAM_CODE_CONTRIBUTORS');?></strong>
							<div class="span12">
							Doorknob :
								<ul>
									<small>
									<li>Features</li>
									<li>Responsive Screen Threshold Widths (media css)</li>
									<li>jQuery.highlightToday.js (module calendar)</li>
									</small>
								</ul>
							</div>
							<div class="span12">
							Tom-Henning (MaW) :
								<ul>
									<small>
									<li>iCalcreator integration (Add to iCal/Outlook)</li>
									</small>
								</ul>
							</div>
						</p>
						<h3><?php echo JText::_('COM_ICAGENDA_VERSION');?></h3>
						<p>
							<?php echo $version ;?>
						</p>
						<h3><?php echo JText::_('COM_ICAGENDA_COPYRIGHT');?></h3>
						<p>
							© 2012 - <?php echo date("Y"); ?> Cyril Rezé / Jooml!C<br/>
							<a href="http://www.joomlic.com" target="_blank">www.Jooml!C.com</a>
						</p>
						<h3><?php echo JText::_('COM_ICAGENDA_LICENSE');?></h3>
						<p>
							<a href="http://www.gnu.org/licenses/gpl.html" target="_blank">GPLv3 or later</a>
						</p>
						<hr>
						<h3><?php echo JText::_('COM_ICAGENDA_LIBRARIES');?></h3>
						<p>
							<strong>Akeeba Live Update (ARS)</strong><br/>
							© Nicholas K. Dionysopoulos | <a href="https://www.akeebabackup.com" target="_blank">www.akeebabackup.com</a><br/>
							<small>Licensed under <a href="http://www.gnu.org/copyleft/lesser.html" target="_blank">GNU LGPLv3</a> or later.</small><br/>
						</p>
						<p>
							<strong>Timepicker jQuery addon</strong><br/>
							© Trent Richardson | <a href="http://trentrichardson.com" target="_blank">trentrichardson.com</a><br/>
							<small>Project licensed under the <a href="http://trentrichardson.com/Impromptu/MIT-LICENSE.txt" target="_blank">MIT</a> or <a href="http://trentrichardson.com/Impromptu/GPL-LICENSE.txt" target="_blank">GPL</a> licenses.</small><br/>
						</p>
						<p>
							<strong>TipTip jQuery plugin</strong><br/>
							© Drew Wilson | <a href="http://www.drewwilson.com" target="_blank">www.drewwilson.com</a><br/>
							<small>Dual licensed under the <a href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT</a> and <a href="http://www.gnu.org/licenses/gpl.html" target="_blank">GPL</a> licenses.</small><br/>
						</p>
						<p>
							<strong>Google Maps™</strong><br/>
							© Google Inc. | <a href="https://developers.google.com/maps/terms" target="_blank">Google Maps/Google Earth APIs Terms of Service</a><br/>
							<small>Google™ and Google Maps™ are registered trademarks of Google Inc.</small><br/>
						</p>
						<p>
							<strong>and of course... Joomla!</strong><br/>
							<a href="http://www.joomla.org" target="_blank">www.joomla.org</a><br/>
						</p>

					</div>
				</div>
			</div>
		</div>

		<div class="row-fluid">
			<div class="span12">
				<tbody>
					<table style="border: 0px;">
						<tr>
							<td>
								<a href="http://icagenda.joomlic.com/resources/translations" target="_blank" class="btn">
									<?php echo JText::_('COM_ICAGENDA_PANEL_TRANSLATION_PACKS_DONWLOAD');?>
								</a>
							</td>
							<td>
								<a href='http://www.joomlic.com/forum/icagenda'  target="_blank" class="btn">
									<?php echo JText::_('COM_ICAGENDA_PANEL_HELP_FORUM'); ?>
								</a>
							</td>
						</tr>
					</table>
				</tbody>
			</div>
		</div>
	</div>

	<!-- footer -->
	<div>
		<div class="row-fluid">
			<div class="span12">
				<hr>
				<div class="row-fluid">
					<div class="span9">
						Copyright ©2012-<?php echo date("Y"); ?> joomlic.com -&nbsp;
						<?php echo JText::_('COM_ICAGENDA_PANEL_COPYRIGHT');?>&nbsp;<a href="http://extensions.joomla.org/extensions/calendars-a-events/events/events-management/22013" target="_blank">Joomla! Extensions Directory</a>.
						<br />
						<br />
					</div>
					<div class="span3" style="text-align: right">
						<a href='http://www.joomlic.com' target='_blank'>
							<img src="../media/com_icagenda/images/logo_joomlic.png" alt="JoomliC" border="0"/>
						</a>
						<br />
						<i><b><?php echo JText::_('COM_ICAGENDA_PANEL_SITE_VISIT');?>&nbsp;<a href='http://www.joomlic.com' target='_blank'>www.joomlic.com</a></b></i>
					</div>
				</div>
			</div>
		</div>
	</div>
views/feature/index.html000060400000000037152455705350011340 0ustar00<!DOCTYPE html><title></title>
views/feature/tmpl/index.html000060400000000037152455705350012314 0ustar00<!DOCTYPE html><title></title>
views/feature/tmpl/edit.php000060400000025615152455705350011766 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      doorknob & Cyril Rezé
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-05-06
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');

$app = JFactory::getApplication();
$document = JFactory::getDocument();

// Access Administration Features check.
if (JFactory::getUser()->authorise('icagenda.access.features', 'com_icagenda'))
{
	$bootstrapType		= '1';
	$PanelOne_Tag		= 'feature';
	$PanelOne_Title		= JText::_('COM_ICAGENDA_TITLE_FEATURE', true);
	$PanelTwo_Tag		= 'desc';
	$PanelTwo_Title		= JText::_('COM_ICAGENDA_LEGEND_DESC', true);
	$PublishingTag		= 'publishing';
	$PublishingTitle	= JText::_('JGLOBAL_FIELDSET_PUBLISHING', true);

	// Joomla 2.5
	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		jimport( 'joomla.html.html.tabs' );

		$iCmapDisplay		= '3';

		$icPanOne			= JText::_('COM_ICAGENDA_TITLE_EVENT');
		$icPanTwo			= JText::_('COM_ICAGENDA_LEGEND_DESC');
		$icPanPublishing	= JText::_('JGLOBAL_FIELDSET_PUBLISHING');
		$startPane			= 'tabs.start';
		$addPanel			= 'tabs.panel';
		$endPanel			= 'tabs.end';
		$endPane			= 'tabs.end';
		$PanelOne_Tag1		= $PanelOne_Tag;
		$PanelOne_Tag2		= $PanelOne_Title;
		$PanelTwo_Tag1		= $PanelTwo_Tag;
		$PanelTwo_Tag2		= $PanelTwo_Title;
		$PublishingTag1		= $PublishingTag;
		$PublishingTag2		= $PublishingTitle;
	}

	// Joomla 3
	else
	{
		JHtml::_('formbehavior.chosen', 'select');
		jimport('joomla.html.html.bootstrap');

		$icPanOne			= 'icTab';
		$icPanTwo			= 'icTab';
		$icPanPublishing	= 'icTab';

		if ($bootstrapType == '1')
		{
			$iCmapDisplay	= '1';
			$startPane		= 'bootstrap.startTabSet';
			$addPanel		= 'bootstrap.addTab';
			$endPanel		= 'bootstrap.endTab';
			$endPane		= 'bootstrap.endTabSet';
			$PanelOne_Tag1	= $PanelOne_Tag;
			$PanelOne_Tag2	= $PanelOne_Title;
			$PanelTwo_Tag1	= $PanelTwo_Tag;
			$PanelTwo_Tag2	= $PanelTwo_Title;
			$PublishingTag1	= $PublishingTag;
			$PublishingTag2	= $PublishingTitle;
		}
		if ($bootstrapType == '2')
		{
			$iCmapDisplay	= '2';
			$startPane		= 'bootstrap.startAccordion';
			$addPanel		= 'bootstrap.addSlide';
			$endPanel		= 'bootstrap.endSlide';
			$endPane		= 'bootstrap.endAccordion';
			$PanelOne_Tag1	= $PanelOne_Title;
			$PanelOne_Tag2	= $PanelOne_Tag;
			$PanelTwo_Tag1	= $PanelTwo_Title;
			$PanelTwo_Tag2	= $PanelTwo_Tag;
			$PublishingTag1	= $PublishingTitle;
			$PublishingTag2	= $PublishingTag;
		}
	}
	?>

	<script type="text/javascript">
		Joomla.submitbutton = function(task)
		{
			if (task == 'feature.cancel' || document.formvalidator.isValid(document.id('feature-form'))) {
				Joomla.submitform(task, document.getElementById('feature-form'));
			}
			else {
				alert('<?php echo $this->escape(JText::_('JGLOBAL_VALIDATION_FORM_FAILED'));?>');
			}
		}
	</script>

	<form action="<?php echo JRoute::_('index.php?option=com_icagenda&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="feature-form" class="form-validate">
		<div class="container">
			<?php // iCagenda Header ?>
			<header>
				<h1>
					<?php echo empty($this->item->id) ? JText::_('COM_ICAGENDA_LEGEND_NEW_FEATURE') : JText::sprintf('COM_ICAGENDA_LEGEND_EDIT_FEATURE', $this->item->id); ?>&nbsp;<span>iCagenda</span>
				</h1>
				<h2>
					<?php echo JText::_('COM_ICAGENDA_COMPONENT_DESC'); ?>
				</h2>
			</header>
			<div>&nbsp;</div>

			<?php // Begin Content ?>
			<div class="row-fluid">
				<div class="span10 form-horizontal">

					<?php // Open Panel Set ?>
					<?php echo JHtml::_($startPane, 'icTab', array('active' => 'feature')); ?>

						<?php // Panel Feature ?>
						<?php echo JHtml::_($addPanel, $icPanOne, $PanelOne_Tag1, $PanelOne_Tag2); ?>

							<div class="icpanel iCleft">
								<h1>
									<?php echo empty($this->item->id) ? JText::_('COM_ICAGENDA_LEGEND_NEW_FEATURE') : JText::sprintf('COM_ICAGENDA_LEGEND_EDIT_FEATURE', $this->item->id); ?>
								</h1>
								<hr>
								<div class="row-fluid">
									<div class="span12 iCleft">
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('title'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('title'); ?>
											</div>
										</div>
									</div>
								</div>
								<div class="row-fluid">
									<div class="span12 iCleft">
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('icon'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('icon'); ?>
											</div>
										</div>
									</div>
								</div>
								<div class="row-fluid">
									<div class="span12 iCleft">
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('new_icon'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('new_icon'); ?>
											</div>
										</div>
									</div>
								</div>
								<div class="row-fluid">
									<div class="span12 iCleft">
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('icon_alt'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('icon_alt'); ?>
											</div>
										</div>
									</div>
								</div>
								<div class="row-fluid">
									<div class="span12 iCleft">
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('show_filter'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('show_filter'); ?>
											</div>
										</div>
									</div>
								</div>
							</div>

							<?php // End Panel Feature ?>
							<?php if(version_compare(JVERSION, '3.0', 'ge')) echo JHtml::_($endPanel); ?>


							<?php // Panel Description ?>
							<?php //echo JHtml::_($addPanel, $icPanTwo, $PanelTwo_Tag1, $PanelTwo_Tag2); ?>

								<!--div class="icpanel iCleft">
								<h1>
								<?php //echo JText::_('COM_ICAGENDA_FORM_FEATURE_DESCRIPTION_LABEL'); ?>
								</h1>
								<hr>
								<div class="row-fluid">
									<div class="span12 iCleft">
										<h3>
											<?php //echo JText::_('COM_ICAGENDA_FORM_FEATURE_DESCRIPTION_DESC'); ?>
										</h3>
										<?php //echo $this->form->getInput('desc'); ?>
									</div>
								</div>
							</div-->

						<?php // End Panel Description ?>
						<?php //if(version_compare(JVERSION, '3.0', 'ge')) echo JHtml::_($endPanel); ?>


						<?php // Panel Publishing ?>
						<?php echo JHtml::_($addPanel, $icPanPublishing, $PublishingTag1, $PublishingTag2); ?>

							<div class="icpanel iCleft">
								<h1>
									<?php echo JText::_('JGLOBAL_FIELDSET_PUBLISHING'); ?>
								</h1>
								<hr>
								<div class="row-fluid">
									<div class="span6 iCleft">
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('alias'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('alias'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('id'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('id'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('checked_out'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('checked_out'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('checked_out_time'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('checked_out_time'); ?>
											</div>
										</div>
									</div>
								</div>
							</div>

						<?php // End Panel Publishing ?>
						<?php echo JHtml::_($endPanel); ?>

					<?php // End Panel Set ?>
					<?php echo JHtml::_($endPane, 'icTab'); ?>

				</div>


				<?php // Begin Sidebar ?>
				<div class="span2 iCleft">

					<h4>
						<?php echo JText::_('COM_ICAGENDA_TITLE_SIDEBAR_DETAILS'); ?>
					</h4>
					<hr>
					<div class="control-group">
						<div class="control-label">
							<?php echo $this->form->getLabel('state'); ?>
						</div>
						<div class="controls">
							<?php echo $this->form->getInput('state'); ?>
						</div>
					</div>

				<?php // End Sidebar ?>
				</div>

				<div class="clr"></div>
			</div>
		</div>
		<input type="hidden" name="task" value="" />
		<?php echo JHtml::_('form.token'); ?>
		<div class="clr"></div>
	</form>

	<?php
	// Joomla 2.5
	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		JHtml::stylesheet('com_icagenda/template.j25.css', false, true);
		JHtml::stylesheet('com_icagenda/icagenda-back.j25.css', false, true);

		JHtml::_('behavior.framework');

		// load jQuery, if not loaded before
		$scripts = array_keys($document->_scripts);
		$scriptFound = false;
		$scriptuiFound = false;

		for ($i = 0; $i < count($scripts); $i++)
		{
			if (stripos($scripts[$i], 'jquery.min.js') !== false)
			{
				$scriptFound = true;
			}
			if (stripos($scripts[$i], 'jquery.js') !== false)
			{
				$scriptFound = true;
			}
			if (stripos($scripts[$i], 'jquery-ui.min.js') !== false)
			{
				$scriptuiFound = true;
			}
		}

		// jQuery Library Loader
		if (!$scriptFound)
		{
			// load jQuery, if not loaded before
			if (!$app->get('jquery'))
			{
				$app->set('jquery', true);
				// add jQuery
				$document->addScript('https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');
				$document->addScript( JURI::root( true ) . '/media/com_icagenda/js/jquery.noconflict.js' );
			}
		}

		if (!$scriptuiFound)
		{
			$document->addScript('https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js');
		}

		$document->addScript( JURI::root( true ) . '/media/com_icagenda/js/template.js' );
	}
	else
	{
		JHtml::_('bootstrap.framework');
		JHtml::_('jquery.framework');
	}

	}
else
{
	$app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning');
	$app->redirect(htmlspecialchars_decode('index.php?option=com_icagenda&view=icagenda'));
}
views/feature/view.html.php000060400000006523152455705350011777 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      doorknob
 * @link        http://www.joomlic.com
 *
 * @version     3.5.4 2015-04-09
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * View class Admin - Edit a Feature - iCagenda
 */
class iCagendaViewFeature extends JViewLegacy
{
	protected $state;
	protected $item;
	protected $form;

	/**
	 * Display the view
	 */
	public function display($tpl = null)
	{
		$this->state	= $this->get('State');
		$this->item		= $this->get('Item');
		$this->form		= $this->get('Form');


		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));
			return false;
		}

		$this->addToolbar();

		parent::display($tpl);
	}

	/**
	 * Add the page title and toolbar.
	 */
	protected function addToolbar()
	{
		JRequest::setVar('hidemainmenu', true);

		$user		= JFactory::getUser();
		$isNew		= ($this->item->id == 0);

		if (isset($this->item->checked_out))
		{
			$checkedOut	= !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id'));
		}
		else
		{
			$checkedOut = false;
		}

		$canDo		= iCagendaHelper::getActions();

		// Set Title
		if(version_compare(JVERSION, '3.0', 'lt'))
		{
			JToolBarHelper::title($isNew ? 'iCagenda - ' . JText::_('COM_ICAGENDA_LEGEND_NEW_FEATURE') : 'iCagenda - ' . JText::_('COM_ICAGENDA_LEGEND_EDIT_FEATURE'), 'feature.png');
		}
		else
		{
			JToolBarHelper::title($isNew ? 'iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_LEGEND_NEW_FEATURE') . '</span>'  : 'iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_LEGEND_EDIT_FEATURE') . '</span>' , $isNew ? 'new' : 'pencil-2');
		}

		$icTitle = $isNew ? JText::_('COM_ICAGENDA_LEGEND_NEW_FEATURE') : JText::_('COM_ICAGENDA_LEGEND_EDIT_FEATURE');

		$document	= JFactory::getDocument();
		$app		= JFactory::getApplication();
		$sitename	= $app->getCfg('sitename');
		$title		= $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;
		$document->setTitle($title);

		// If not checked out, can save the item.
		if (!$checkedOut && ($canDo->get('core.edit')||($canDo->get('core.create'))))
		{
			JToolBarHelper::apply('feature.apply', 'JTOOLBAR_APPLY');
			JToolBarHelper::save('feature.save', 'JTOOLBAR_SAVE');
		}

		if (!$checkedOut && ($canDo->get('core.create')))
		{
			JToolBarHelper::custom('feature.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
		}

		// If an existing item, can save to a copy.
		if (!$isNew && $canDo->get('core.create'))
		{
			JToolBarHelper::custom('feature.save2copy', 'save-copy.png', 'save-copy_f2.png', 'JTOOLBAR_SAVE_AS_COPY', false);
		}

		if (empty($this->item->id))
		{
			JToolBarHelper::cancel('feature.cancel', 'JTOOLBAR_CANCEL');
		}
		else
		{
			JToolBarHelper::cancel('feature.cancel', 'JTOOLBAR_CLOSE');
		}
	}
}
views/features/tmpl/index.html000060400000000037152455705350012477 0ustar00<!DOCTYPE html><title></title>
views/features/tmpl/default.php000060400000036003152455705350012641 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      doorknob
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-07-14
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

$app = JFactory::getApplication();

// Access Administration Features check.
if (JFactory::getUser()->authorise('icagenda.access.features', 'com_icagenda'))
{
	// Check Theme Packs Compatibility
	if (class_exists('icagendaTheme')) icagendaTheme::checkThemePacks();

	$user		= JFactory::getUser();
	$userId		= $user->get('id');
	$listOrder	= $this->escape($this->state->get('list.ordering'));
	$listDirn	= $this->escape($this->state->get('list.direction'));
	$canOrder	= $user->authorise('core.edit.state', 'com_icagenda');
	$saveOrder	= $listOrder == 'a.ordering';

	if(version_compare(JVERSION, '3.0', 'lt'))
	{
		JHtml::_('behavior.tooltip');
		JHtml::_('script','system/multiselect.js',false,true);
	}
	else
	{
		// Include the component HTML helpers.
		JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
		JHtml::_('bootstrap.tooltip');
		JHtml::_('behavior.multiselect');
		JHtml::_('formbehavior.chosen', 'select');
		JHtml::_('dropdown.init');

		$extension	= $this->escape($this->state->get('filter.extension'));

		$archived	= $this->state->get('filter.published') == 2 ? true : false;
		$trashed	= $this->state->get('filter.published') == -2 ? true : false;

		if ($saveOrder)
		{
			$saveOrderingUrl = 'index.php?option=com_icagenda&task=features.saveOrderAjax&tmpl=component';
			JHtml::_('sortablelist.sortable', 'featuresList', 'adminForm', strtolower($listDirn), $saveOrderingUrl, false, true);
		}

		$sortFields = array();
		?>

		<script type="text/javascript">
		Joomla.orderTable = function()
		{
			table = document.getElementById("sortTable");
			direction = document.getElementById("directionTable");
			order = table.options[table.selectedIndex].value;

			if (order != '<?php echo $listOrder; ?>')
			{
				dirn = 'asc';
			}
			else
			{
				dirn = direction.options[direction.selectedIndex].value;
			}
			Joomla.tableOrdering(order, dirn, '');
		}
		</script>
	<?php
	}

	// Get media path
	$params_media = JComponentHelper::getParams('com_media');
	$image_path = $params_media->get('image_path', 'images');
	?>

	<form action="<?php echo JRoute::_('index.php?option=com_icagenda&view=features'); ?>" method="post" name="adminForm" id="adminForm">
	<?php if (!empty( $this->sidebar)) : ?>
		<div id="j-sidebar-container" class="span2">
			<?php echo $this->sidebar; ?>
		</div>
		<div id="j-main-container" class="span10">
	<?php else : ?>
		<div id="j-main-container">
	<?php endif;?>

		<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
			<fieldset id="filter-bar">
				<div class="filter-search fltlft">
					<label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label>
					<input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('Search'); ?>" />
					<button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button>
					<button type="button" onclick="document.id('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button>
				</div>
				<div class="filter-select fltrt">
					<select name="filter_published" class="inputbox" onchange="this.form.submit()">
						<option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option>
						<?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), "value", "text", $this->state->get('filter.state'), true);?>
					</select>
				</div>
			</fieldset>
			<div class="clr"> </div>

		<?php else : ?>

			<div id="filter-bar" class="btn-toolbar">
				<div class="filter-search btn-group pull-left">
					<label for="filter_search" class="element-invisible"><?php echo JText::_('COM_ICAGENDA_FILTER_SEARCH_FEATURES_DESC'); ?></label>
					<input type="text" name="filter_search" placeholder="<?php echo JText::_('COM_ICAGENDA_FILTER_SEARCH_FEATURES_DESC'); ?>" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_ICAGENDA_FILTER_SEARCH_FEATURES_DESC'); ?>" />
				</div>
				<div class="btn-group pull-left hidden-phone">
					<button class="btn tip hasTooltip" type="submit" title="<?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?>"><i class="icon-search"></i></button>
					<button class="btn tip hasTooltip" type="button" onclick="document.id('filter_search').value='';this.form.submit();" title="<?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?>"><i class="icon-remove"></i></button>
				</div>
				<div class="btn-group pull-right hidden-phone">
					<label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label>
					<?php echo $this->pagination->getLimitBox(); ?>
				</div>
			</div>
			<div class="clearfix"> </div>

		<?php endif;?>


		<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
			<table class="adminlist">
		<?php else : ?>
			<table class="table table-striped" id="featuresList">
		<?php endif; ?>

				<thead>
					<tr>

					<?php // START Joomla 3.x ?>
					<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>

						<?php // Ordering HEADER Joomla 3.x ?>
						<th width="1%" class="nowrap center hidden-phone">
							<?php echo JHtml::_('grid.sort', '<i class="icon-menu-2"></i>', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?>
						</th>

					<?php // END Joomla 3.x ?>
					<?php endif; ?>

						<?php // CheckBox HEADER ?>
						<th width="1%" class="hidden-phone">
							<input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" />
						</th>

						<?php // Status HEADER ?>
						<th width="1%" style="min-width:55px" class="nowrap center">
							<?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?>
						</th>

						<?php // Title HEADER ?>
						<th>
							<?php echo JHtml::_('grid.sort', 'COM_ICAGENDA_FEATURES_TITLE', 'a.title', $listDirn, $listOrder); ?>
						</th>

						<?php // Icon HEADER ?>
						<th width="30%" class="nowrap">
							<?php echo JHtml::_('grid.sort', 'COM_ICAGENDA_FEATURES_ICON', 'a.icon', $listDirn, $listOrder); ?>
						</th>

						<?php // Icon ALT HEADER ?>
						<th width="30%" class="nowrap">
							<?php echo JHtml::_('grid.sort', 'COM_ICAGENDA_FORM_FEATURE_ICON_ALT_LABEL', 'a.icon_alt', $listDirn, $listOrder); ?>
						</th>

						<?php // Show Filter HEADER ?>
						<th width="5%" class="center nowrap">
							<?php echo JHtml::_('grid.sort', 'COM_ICAGENDA_FEATURES_SHOW_FILTER', 'a.show_filter', $listDirn, $listOrder); ?>
						</th>

					<?php // START Joomla 2.5 ?>
					<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>

						<?php // Ordering HEADER Joomla 2.5 ?>
						<?php if (isset($this->items[0]->ordering)) { ?>
						<th width="10%">
							<?php echo JHtml::_('grid.sort',  'JGRID_HEADING_ORDERING', 'a.ordering', $listDirn, $listOrder); ?>
							<?php if ($canOrder && $saveOrder) :?>
								<?php echo JHtml::_('grid.order',  $this->items, 'filesave.png', 'features.saveorder'); ?>
							<?php endif; ?>
						</th>
						<?php } ?>

					<?php // END Joomla 2.5 ?>
					<?php endif; ?>

						<?php // ID HEADER ?>
						<th width="1%" class="nowrap hidden-phone">
							<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?>
						</th>
					</tr>
				</thead>

				<?php // FOOTER ?>
				<tfoot>
					<tr>
						<td colspan="10">
							<?php echo $this->pagination->getListFooter(); ?>
						</td>
					</tr>
				</tfoot>

				<?php // BODY ?>
				<tbody>

					<?php foreach ($this->items as $i => $item) :
						$ordering	= ($listOrder == 'a.ordering');
						$canCreate	= $user->authorise('core.create',		'com_icagenda');
						$canEdit	= $user->authorise('core.edit',			'com_icagenda');
						$canCheckin	= $user->authorise('core.manage',		'com_icagenda');
						$canChange	= $user->authorise('core.edit.state',	'com_icagenda');
						$canEditOwn	= $user->authorise('core.edit.own',		'com_icagenda');
						?>

						<tr class="row<?php echo $i % 2; ?>">

						<?php // START Joomla 3.x ?>
						<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>

							<?php // Ordering Joomla 3.x ?>
							<td class="order nowrap center hidden-phone">
								<?php if ($canChange) :
									$disableClassName = '';
									$disabledLabel	  = '';

									if (!$saveOrder) :
										$disabledLabel    = JText::_('JORDERINGDISABLED');
										$disableClassName = 'inactive tip-top';
									endif; ?>
									<span class="sortable-handler hasTooltip <?php echo $disableClassName; ?>" title="<?php echo $disabledLabel; ?>">
										<i class="icon-menu"></i>
									</span>
									<input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order " />
								<?php else : ?>
									<span class="sortable-handler inactive" >
										<i class="icon-menu"></i>
									</span>
								<?php endif; ?>
							</td>

						<?php // END Joomla 3.x ?>
						<?php endif; ?>

							<?php // CheckBox ?>
							<td class="center hidden-phone">
								<?php echo JHtml::_('grid.id', $i, $item->id); ?>
							</td>

							<?php // Status ?>
						<?php if (isset($this->items[0]->state)) { ?>
							<td class="center">
								<?php echo JHtml::_('jgrid.published', $item->state, $i, 'features.', $canChange, 'cb'); ?>
							</td>
						<?php } ?>

							<?php // Title ?>
							<td class="nowrap has-context">
								<div class="pull-left">
									<?php if ($item->checked_out) : ?>
										<?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'features.', $canCheckin); ?>
									<?php endif; ?>
									<?php //if ($item->language == '*'):?>
										<?php //$language = JText::alt('JALL', 'language'); ?>
									<?php //else:?>
										<?php //$language = $item->language ? $this->escape($item->language) : JText::_('JUNDEFINED'); ?>
									<?php //endif;?>
									<?php if ($canEdit) : ?>
										<a href="<?php echo JRoute::_('index.php?option=com_icagenda&task=feature.edit&id=' . $item->id); ?>" title="<?php echo JText::_('JACTION_EDIT'); ?>">
											<?php echo $this->escape($item->title); ?></a>
									<?php else : ?>
										<span title="<?php echo JText::sprintf('JFIELD_ALIAS_LABEL', $this->escape($item->alias)); ?>"><?php echo $this->escape($item->title); ?></span>
									<?php endif; ?>
								</div>

							<?php // START DropDown Edit Joomla 3.x ?>
							<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>

								<?php // Show Filter ?>
								<div class="pull-left">
									<?php
									// Create dropdown items
									JHtml::_('dropdown.edit', $item->id, 'feature.');
									JHtml::_('dropdown.divider');
									if ($item->state) :
										JHtml::_('dropdown.unpublish', 'cb' . $i, 'features.');
									else :
										JHtml::_('dropdown.publish', 'cb' . $i, 'features.');
									endif;

									JHtml::_('dropdown.divider');

									if ($archived) :
										JHtml::_('dropdown.unarchive', 'cb' . $i, 'features.');
									else :
										JHtml::_('dropdown.archive', 'cb' . $i, 'features.');
									endif;

									if ($item->checked_out) :
										JHtml::_('dropdown.checkin', 'cb' . $i, 'features.');
									endif;

									if ($trashed) :
										JHtml::_('dropdown.untrash', 'cb' . $i, 'features.');
									else :
										JHtml::_('dropdown.trash', 'cb' . $i, 'features.');
									endif;

									// Render dropdown list
									echo JHtml::_('dropdown.render');
									?>
								</div>

							<?php // END DropDown Edit Joomla 3.x ?>
							<?php endif; ?>
							</td>

							<?php // Icon ?>
							<td>
								<div>
									<?php echo '<img src="../' . $image_path . '/icagenda/feature_icons/24_bit/' . $item->icon . '" alt="[' . $item->icon . ']" />'; ?>
									<?php echo $item->icon == -1 ? JText::_('JOPTION_DO_NOT_USE') : $item->icon; ?>
								</div>
							</td>

							<?php // Icon ALT Value ?>
							<td>
								<div>
									<?php echo $this->escape($item->icon_alt) ?>
								</div>
							</td>

							<?php // Show Filter ?>
							<td class="center">
								<div>
									<i class="icon-<?php echo $item->show_filter ? 'publish' : 'unpublish';// Note:'publish/unpublish' preferred to 'checkmark/cancel' because of colour ?>"></i>
								</div>
							</td>

						<?php // START Joomla 2.5 ?>
						<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>

							<?php // Ordering Joomla 2.5 ?>
						<?php if (isset($this->items[0]->ordering)) { ?>
							<td class="order">
								<?php if ($canChange) : ?>
									<?php if ($saveOrder) :?>
										<?php if ($listDirn == 'asc') : ?>
											<span><?php echo $this->pagination->orderUpIcon($i, true, 'features.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span>
											<span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'features.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span>
										<?php elseif ($listDirn == 'desc') : ?>
											<span><?php echo $this->pagination->orderUpIcon($i, true, 'features.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span>
											<span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'features.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span>
										<?php endif; ?>
									<?php endif; ?>
									<?php $disabled = $saveOrder ?  '' : 'disabled="disabled"'; ?>
									<input type="text" name="order[]" size="5" value="<?php echo $item->ordering;?>" <?php echo $disabled ?> class="text-area-order" />
								<?php else : ?>
									<?php echo $item->ordering; ?>
								<?php endif; ?>
							</td>
						<?php } ?>

						<?php // END Joomla 2.5 ?>
						<?php endif; ?>

							<?php // ID ?>
						<?php if (isset($this->items[0]->id)) { ?>
							<td class="center hidden-phone">
								<?php echo (int) $item->id; ?>
							</td>
						<?php } ?>

						</tr>

					<?php endforeach; ?>

				</tbody>
			</table>
			<div>
				<input type="hidden" name="task" value="" />
				<input type="hidden" name="boxchecked" value="0" />
				<input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" />
				<input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" />
				<?php echo JHtml::_('form.token'); ?>
			</div>
		</div>
	</form>
<?php
}
else
{
	$app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning');
	$app->redirect(htmlspecialchars_decode('index.php?option=com_icagenda&view=icagenda'));
}
views/features/index.html000060400000000037152455705350011523 0ustar00<!DOCTYPE html><title></title>
views/features/view.html.php000060400000011212152455705350012151 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      doorknob
 * @link        http://www.joomlic.com
 *
 * @version     3.5.4 2015-04-02
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * View class Admin - List of Features - iCagenda.
 */
class iCagendaViewFeatures extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;

	/**
	 * Display the view
	 *
	 * @since	3.4.0
	 */
	public function display($tpl = null)
	{
		// Joomla 2.5
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			jimport( 'joomla.environment.request' );

			JHtml::stylesheet( 'com_icagenda/icagenda-back.j25.css', false, true );
		}

		$this->state		= $this->get('State');
		$this->items		= $this->get('Items');
		$this->pagination	= $this->get('Pagination');

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));

			return false;
		}

		// We don't need toolbar in the modal window.
		if ($this->getLayout() !== 'modal')
		{
			$this->addToolbar();

			if(version_compare(JVERSION, '3.0', 'ge'))
			{
				$this->sidebar = JHtmlSidebar::render();
			}
		}

		parent::display($tpl);
	}

	/**
	 * Add the page title and toolbar.
	 *
	 * @since	3.4.0
	 */
	protected function addToolbar()
	{
		require_once JPATH_COMPONENT.DS.'helpers'.DS.'icagenda.php';

		$state	= $this->get('State');
		$user		= JFactory::getUser();
		$userId		= $user->get('id');
		$canDo		= iCagendaHelper::getActions();

		// Set Title
		if(version_compare(JVERSION, '3.0', 'lt'))
		{
			JToolBarHelper::title('iCagenda - ' . JText::_('COM_ICAGENDA_TITLE_FEATURES'), 'features.png');
		}
		else
		{
			JToolBarHelper::title('iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_TITLE_FEATURES') . '</span>', 'folder');
		}

		$icTitle = JText::_('COM_ICAGENDA_TITLE_FEATURES');

		$document	= JFactory::getDocument();
		$app		= JFactory::getApplication();
		$sitename = $app->getCfg('sitename');
		$title = $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;
		$document->setTitle($title);

		//Check if the form exists before showing the add/edit buttons
		$formPath = JPATH_COMPONENT_ADMINISTRATOR.'/views/feature';

		if (file_exists($formPath))
		{
			if ($canDo->get('core.create'))
			{
				JToolBarHelper::addNew('feature.add','JTOOLBAR_NEW');
			}

			if ($canDo->get('core.edit'))
			{
				JToolBarHelper::editList('feature.edit','JTOOLBAR_EDIT');
			}
		}

		if ($canDo->get('core.edit.state'))
		{
			if (isset($this->items[0]->state))
			{
				JToolBarHelper::divider();
				JToolBarHelper::custom('features.publish', 'publish.png', 'publish_f2.png','JTOOLBAR_PUBLISH', true);
				JToolBarHelper::custom('features.unpublish', 'unpublish.png', 'unpublish_f2.png', 'JTOOLBAR_UNPUBLISH', true);
			}
			else
			{
				//If this component does not use state then show a direct delete button as we can not trash
				JToolBarHelper::deleteList('', 'features.delete','JTOOLBAR_DELETE');
			}

			if (isset($this->items[0]->state))
			{
				JToolBarHelper::divider();
				JToolBarHelper::archiveList('features.archive','JTOOLBAR_ARCHIVE');
			}

			if (isset($this->items[0]->checked_out))
			{
				JToolBarHelper::custom('features.checkin', 'checkin.png', 'checkin_f2.png', 'JTOOLBAR_CHECKIN', true);
			}
		}

		//Show trash and delete for components that uses the state field
		if (isset($this->items[0]->state))
		{
			if ($state->get('filter.state') == -2 && $canDo->get('core.delete'))
			{
				JToolBarHelper::deleteList('', 'features.delete','JTOOLBAR_EMPTY_TRASH');
				JToolBarHelper::divider();
			}
			elseif ($canDo->get('core.edit.state'))
			{
				JToolBarHelper::trash('features.trash','JTOOLBAR_TRASH');
				JToolBarHelper::divider();
			}
		}

		if ($canDo->get('core.admin'))
		{
			JToolBarHelper::preferences('com_icagenda');
		}

		if(version_compare(JVERSION, '3.0', 'ge'))
		{
			JHtmlSidebar::setAction('index.php?option=com_icagenda&view=features');

			JHtmlSidebar::addFilter(
				JText::_('JOPTION_SELECT_PUBLISHED'),
				'filter_published',
				JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.state'), true)
			);
		}
	}
}
views/event/view.html.php000060400000011706152455705350011464 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-06-10
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * View class Admin - Edit an Event - iCagenda
 */
class iCagendaViewEvent extends JViewLegacy
{
	protected $state;
	protected $item;
	protected $form;

	/**
	 * Display the view
	 *
	 * @since	1.0
	 */
	public function display($tpl = null)
	{
		// Initialiase variables.
		$this->state	= $this->get('State');
		$this->item		= $this->get('Item');
		$this->form		= $this->get('Form');

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));
			return false;
		}

		$icagenda_categories = class_exists('icagendaCategories') ? icagendaCategories::getList('1') : false;

		if ($icagenda_categories)
		{
			$this->addToolbar();
		}
		else
		{
			$app = JFactory::getApplication();
			$app->enqueueMessage(JText::_('COM_ICAGENDA_ALERT_NO_CATEGORY_PUBLISHED')
								. '<br /><br /><a class="btn btn-success" href="index.php?option=com_icagenda&view=category&layout=edit" >'
								. JText::_('COM_ICAGENDA_LEGEND_NEW_CATEGORY') . '</a>'
								. ' <a class="btn btn-inverse btn-mini" href="index.php?option=com_icagenda&view=categories" >'
								. JText::_('ICCATEGORIES')
								. '</a>', 'warning');
			$app->redirect(htmlspecialchars_decode('index.php?option=com_icagenda&view=events'));
		}

		parent::display($tpl);

		icagendaForm::loadDateTimePickerJSLanguage();

		JHtml::stylesheet( 'com_icagenda/icagenda.css', false, true );
	}

	/**
	 * Add the page title and toolbar.
	 *
	 * @since	1.0
	 */
	protected function addToolbar()
	{
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JRequest::setVar('hidemainmenu', true);
		}
		else
		{
			JFactory::getApplication()->input->set('hidemainmenu', true);
		}

		$user		= JFactory::getUser();
		$userId		= $user->get('id');
		$isNew		= ($this->item->id == 0);
		$checkedOut	= !($this->item->checked_out == 0 || $this->item->checked_out == $userId);
		$canDo		= iCagendaHelper::getActions();

		// Set Title
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JToolBarHelper::title($isNew	? 'iCagenda - ' . JText::_('COM_ICAGENDA_LEGEND_NEW_EVENT')
											: 'iCagenda - ' . JText::_('COM_ICAGENDA_LEGEND_EDIT_EVENT'),
											'event');
		}
		else
		{
			JToolBarHelper::title($isNew	? 'iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_LEGEND_NEW_EVENT') . '</span>'
											: 'iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_LEGEND_EDIT_EVENT') . '</span>',
											$isNew ? 'new' : 'pencil-2');
		}

		$icTitle	= $isNew ? JText::_('COM_ICAGENDA_LEGEND_NEW_EVENT') : JText::_('COM_ICAGENDA_LEGEND_EDIT_EVENT');

		$document	= JFactory::getDocument();
		$app		= JFactory::getApplication();
		$sitename	= $app->getCfg('sitename');
		$title		= $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;

		$document->setTitle($title);

		// Build the actions for new and existing records.
		if ($isNew)
		{
			// For new records, check the create permission.
			if ($canDo->get('core.create'))
			{
				JToolBarHelper::apply('event.apply', 'JTOOLBAR_APPLY');
				JToolBarHelper::save('event.save', 'JTOOLBAR_SAVE');
				JToolBarHelper::custom('event.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
			}

			JToolBarHelper::cancel('event.cancel', 'JTOOLBAR_CANCEL');
		}
		else
		{
			// Can't save the record if it's checked out.
			if ( ! $checkedOut)
			{
				// Since it's an existing record, check the edit permission, or fall back to edit own if the owner.
				if ($canDo->get('core.edit') || ($canDo->get('core.edit.own') && $this->item->created_by == $userId))
				{
					// We can save the new record
					JToolBarHelper::apply('event.apply', 'JTOOLBAR_APPLY');
					JToolBarHelper::save('event.save', 'JTOOLBAR_SAVE');

					// We can save this record, but check the create permission to see
					// if we can return to make a new one.
					if ($canDo->get('core.create'))
					{
						JToolBarHelper::custom('event.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
					}
				}
			}

			// If checked out, we can still save
			if ($canDo->get('core.create'))
			{
				JToolBarHelper::custom('event.save2copy', 'save-copy.png', 'save-copy_f2.png', 'JTOOLBAR_SAVE_AS_COPY', false);
			}

			JToolBarHelper::cancel('event.cancel', 'JTOOLBAR_CLOSE');
		}
	}
}
views/event/tmpl/edit.php000060400000111447152455705350011453 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.7 2015-07-16
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

JHtml::_('behavior.formvalidation');
//JHtml::_('behavior.formvalidator'); // j!3.4.0 ?
JHtml::_('behavior.keepalive');

$app = JFactory::getApplication();
$document = JFactory::getDocument();

// Access Administration Events check.
if (JFactory::getUser()->authorise('icagenda.access.events', 'com_icagenda')
	&& defined('IC_LIBRARY'))
{
	$bootstrapType		= '1';

	$EventTag			= 'event';
	$EventTitle			= JText::_('COM_ICAGENDA_TITLE_EVENT', true);

	$DatesTag			= 'dates';
	$DatesTitle			= JText::_('COM_ICAGENDA_LEGEND_DATES', true);

	$DescTag			= 'desc';
	$DescTitle			= JText::_('COM_ICAGENDA_LEGEND_DESC', true);

	$InfosTag			= 'infos';
	$InfosTitle			= JText::_('COM_ICAGENDA_LEGEND_INFORMATION', true);

	$GooglemapTag		= 'googlemap';
	$GooglemapTitle		= JText::_('COM_ICAGENDA_LEGEND_GOOGLE_MAPS', true);

	$RegistrationsTag	= 'registrations';
	$RegistrationsTitle	= JText::_('COM_ICAGENDA_REGISTRATIONS_LABEL', true);

	$OptionsTag			= 'options';
	$OptionsTitle		= JText::_('JOPTIONS', true);

	$PublishingTag		= 'publishing';
	$PublishingTitle	= JText::_('JGLOBAL_FIELDSET_PUBLISHING', true);

	// Joomla 2.5
	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		jimport( 'joomla.html.html.tabs' );

		$iCmapDisplay		= '3';

		$icPanEvent			= JText::_('COM_ICAGENDA_TITLE_EVENT', true);
		$icPanDates			= JText::_('COM_ICAGENDA_LEGEND_DATES', true);
		$icPanDesc			= JText::_('COM_ICAGENDA_LEGEND_DESC', true);
		$icPanInfos			= JText::_('COM_ICAGENDA_LEGEND_INFORMATION', true);
		$icPanGooglemap		= JText::_('COM_ICAGENDA_LEGEND_GOOGLE_MAPS', true);
		$icPanRegistrations	= JText::_('COM_ICAGENDA_REGISTRATIONS_LABEL', true);
		$icPanOptions		= JText::_('JOPTIONS', true);
		$icPanPublishing	= JText::_('JGLOBAL_FIELDSET_PUBLISHING', true);
		$startPane			= 'tabs.start';
		$addPanel			= 'tabs.panel';
		$endPanel			= 'tabs.end';
		$endPane			= 'tabs.end';
		$EventTag1			= $EventTag;
		$EventTag2			= $EventTitle;
		$DatesTag1			= $DatesTag;
		$DatesTag2			= $DatesTitle;
		$DescTag1			= $DescTag;
		$DescTag2			= $DescTitle;
		$InfosTag1			= $InfosTag;
		$InfosTag2			= $InfosTitle;
		$GooglemapTag1		= $GooglemapTag;
		$GooglemapTag2		= $GooglemapTitle;
		$RegistrationsTag1	= $RegistrationsTag;
		$RegistrationsTag2	= $RegistrationsTitle;
		$OptionsTag1		= $OptionsTag;
		$OptionsTag2		= $OptionsTitle;
		$PublishingTag1		= $PublishingTag;
		$PublishingTag2		= $PublishingTitle;
	}

	// Joomla 3
	else
	{
		JHtml::_('formbehavior.chosen', 'select');
		jimport('joomla.html.html.bootstrap');

		$icPanEvent			= 'icTab';
		$icPanDates			= 'icTab';
		$icPanDesc			= 'icTab';
		$icPanInfos			= 'icTab';
		$icPanGooglemap		= 'icTab';
		$icPanRegistrations	= 'icTab';
		$icPanOptions		= 'icTab';
		$icPanPublishing	= 'icTab';

		if ($bootstrapType == '1')
		{
			$iCmapDisplay		= '1';
			$startPane			= 'bootstrap.startTabSet';
			$addPanel			= 'bootstrap.addTab';
			$endPanel			= 'bootstrap.endTab';
			$endPane			= 'bootstrap.endTabSet';
			$EventTag1			= $EventTag;
			$EventTag2			= $EventTitle;
			$DatesTag1			= $DatesTag;
			$DatesTag2			= $DatesTitle;
			$DescTag1			= $DescTag;
			$DescTag2			= $DescTitle;
			$InfosTag1			= $InfosTag;
			$InfosTag2			= $InfosTitle;
			$GooglemapTag1		= $GooglemapTag;
			$GooglemapTag2		= $GooglemapTitle;
			$RegistrationsTag1	= $RegistrationsTag;
			$RegistrationsTag2	= $RegistrationsTitle;
			$OptionsTag1		= $OptionsTag;
			$OptionsTag2		= $OptionsTitle;
			$PublishingTag1		= $PublishingTag;
			$PublishingTag2		= $PublishingTitle;
		}
		elseif ($bootstrapType == '2')
		{
			$iCmapDisplay		= '2';
			$startPane			= 'bootstrap.startAccordion';
			$addPanel			= 'bootstrap.addSlide';
			$endPanel			= 'bootstrap.endSlide';
			$endPane			= 'bootstrap.endAccordion';
			$EventTag1			= $EventTitle;
			$EventTag2			= $EventTag;
			$DatesTag1			= $DatesTitle;
			$DatesTag2			= $DatesTag;
			$DescTag1			= $DescTitle;
			$DescTag2			= $DescTag;
			$InfosTag1			= $InfosTitle;
			$InfosTag2			= $InfosTag;
			$GooglemapTag1		= $GooglemapTitle;
			$GooglemapTag2		= $GooglemapTag;
			$RegistrationsTag1	= $RegistrationsTitle;
			$RegistrationsTag2	= $RegistrationsTag;
			$OptionsTag1		= $OptionsTitle;
			$OptionsTag2		= $OptionsTag;
			$PublishingTag1		= $PublishingTitle;
			$PublishingTag2		= $PublishingTag;
		}
	}

	$params = $this->form->getFieldsets('params');

	// ZOOM
	$zoom		= '1';
	// HYBRID, ROADMAP, SATELLITE, TERRAIN
	$mapTypeId	= 'ROADMAP';

	$coords		= '0, 0';
	$oldcoordinate = $this->item->coordinate;
	$lat		= $this->item->lat;
	$lng		= $this->item->lng;

	if (($oldcoordinate == NULL) && ($lat == '0') && ($lng == '0'))
	{
		$zoom = '1';
	}
	// Notes: 	zoomControl: false, mapTypeControl: false

	// Control of dates if valid (Alert Messages)
	$messagealert	= '';
	$alert			= '';
	$nodate			= '0000-00-00 00:00:00';
	$nextget		= $this->item->next;

	if ($nextget == '-3600'
		|| $nextget == $nodate)
	{
		$messagealert = '<div><h4><b>' . JText::_('COM_ICAGENDA_FORM_ALERT_UNPUBLISHED') . '</b></h4></div>';

		if (($this->item->startdate == $nodate) && ($this->item->enddate != $nodate))
		{
			$messagealert.= '<p>' . JText::_('COM_ICAGENDA_FORM_ERROR_NO_STARTDATE') . '</p><br>';
		}
		if (($this->item->enddate == $nodate) && ($this->item->startdate != $nodate))
		{
			$messagealert.= '<p>' . JText::_('COM_ICAGENDA_FORM_ERROR_NO_ENDDATE') . '</p><br>';
		}
		if (($this->item->enddate < $this->item->startdate)
			&& (($this->item->next != '-3600') || ($this->item->next != $nodate)))
		{
			$messagealert.= '<p>' . JText::_('COM_ICAGENDA_FORM_ERROR_INVALID_PERIOD') . '</p><br>';
		}
	}
	else
	{
		if (($this->item->startdate == $nodate) && ($this->item->enddate != $nodate))
		{
			$alert.= '<p>' . JText::_('COM_ICAGENDA_FORM_ERROR_NO_STARTDATE') . '</p><br>';
		}
		if (($this->item->enddate == $nodate) && ($this->item->startdate != $nodate))
		{
			$alert.= '<p>' . JText::_('COM_ICAGENDA_FORM_ERROR_NO_ENDDATE') . '</p><br>';
		}
		if (($this->item->enddate < $this->item->startdate)
			&& (($this->item->next != '-3600') || ($this->item->next != $nodate)))
		{
			$alert.= '<p>' . JText::_('COM_ICAGENDA_FORM_ERROR_INVALID_PERIOD') . '</p><br>';
		}
	}
	?>

	<?php // ERROR ALERT ?>
	<div id="form_errors" class="alert alert-danger" style="display:none">
		<strong><?php echo JText::_('JGLOBAL_VALIDATION_FORM_FAILED'); ?></strong>
		<div id="message_error">
		</div>
	</div>

	<div class="alert alert-danger" id="error_dates" style="display:none">
		<?php echo '<strong>' . JText::_('COM_ICAGENDA_FORM_WARNING') . '</strong><br />' . JText::_('COM_ICAGENDA_FORM_NO_DATES_ALERT'); ?>
	</div>

	<form action="<?php echo JRoute::_('index.php?option=com_icagenda&layout=edit&id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="event-form" class="form-validate" enctype="multipart/form-data">
		<div class="container">

			<!-- iCheader top bar -->
			<!--div class="iCheader-top">
				<a href="#">
					<strong>&laquo; Previous </strong>event
				</a>
				<span class="right">
					<a href="#">
						<strong>Next</strong> event <strong>&raquo;</strong>
					</a>
				</span>
				<div class="clr"></div>
			</div-->
			<!--/ iCheader top bar -->

			<!-- iCagenda Header -->
			<?php
			$new_event_value = empty($this->item->id) ? '1' : '0';
			?>
			<header>
				<h1>
					<?php echo '<input type="hidden" value="' . $new_event_value . '" name="new_event" />'; ?>
					<?php echo empty($this->item->id) ? JText::_('COM_ICAGENDA_LEGEND_NEW_EVENT') : JText::sprintf('COM_ICAGENDA_LEGEND_EDIT_EVENT', $this->item->id); ?>&nbsp;<span>iCagenda</span>
				</h1>
				<h2>
					<?php echo JText::_('COM_ICAGENDA_COMPONENT_DESC'); ?>
					<!--nav class="iCheader-videos">
						<span style="font-variant:small-caps">Tutorial Videos</span>
						<a href="#">Add a event</a>
						<a href="#">Video 2</a>
						<a href="#">Video 3</a>
					</nav-->
				</h2>
			</header>

			<div>&nbsp;</div>

			<!-- Alert Messages -->
			<div>
				<?php if ($messagealert) :?>
				<div style="background: #990000; color: #FFFFFF; border-radius: 10px; border: 1px solid #D4D4D4; padding: 20px; margin-bottom:20px;">
					<?php echo '<h2>' . JText::_('COM_ICAGENDA_FORM_WARNING') . '</h2>' . $messagealert; ?>
				</div>
				<?php endif; ?>
				<?php if ($alert && ! $messagealert) : ?>
				<div style="background: #FFFFFF; color: red; border-radius: 10px; border: 1px solid #D4D4D4; padding: 10px; margin-bottom:20px;">
					<strong><?php echo $alert; ?></strong>
				</div>
				<?php endif; ?>
			</div>

			<!-- Begin Content -->
			<div class="row-fluid">
				<div class="span10 form-horizontal">

					<!-- Open Panel Set -->
					<?php echo JHtml::_($startPane, 'icTab', array('active' => 'event')); ?>

						<!-- Panel Event -->
						<?php echo JHtml::_($addPanel, $icPanEvent, $EventTag1, $EventTag2); ?>

							<div class="icpanel iCleft">
								<h1>
									<?php echo empty($this->item->id) ? JText::_('COM_ICAGENDA_LEGEND_NEW_EVENT') : JText::sprintf('COM_ICAGENDA_LEGEND_EDIT_EVENT', $this->item->id); ?>
								</h1>
								<hr>
								<div class="row-fluid">
									<div class="span6 iCleft">
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('title'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('title'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('catid'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('catid'); ?>
											</div>
										</div>
									</div>
									<div class="span6 iCleft">
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('image'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('image'); ?>
											</div>
										</div>
										<div class="control-group">
											<div>
												<img src="../<?php echo $this->item->image; ?>" alt="" id="jform_image_preview" class="media-preview" style="float:right; max-width:100%; max-height:350px;">
											</div>
										</div>
									</div>
								</div>
							</div>


						<?php
						if (version_compare(JVERSION, '3.0', 'ge'))
						{
							echo JHtml::_($endPanel);
						}
						?>

						<!-- Panel Dates -->
						<?php echo JHtml::_($addPanel, $icPanDates, $DatesTag1, $DatesTag2); ?>

							<div class="icpanel iCleft">
								<h1><?php echo JText::_('COM_ICAGENDA_LEGEND_DATES'); ?></h1>
								<!--div class="row-fluid">
									<div class="span12 iCleft">
										<h3><?php echo JText::_('COM_ICAGENDA_LEGEND_SINGLE_DATES'); ?></h3>
										<div class="control-group">
											<?php echo $this->form->getInput('eventDates'); ?>
										</div>
									</div>
								</div-->
								<hr>
								<div class="row-fluid">
									<div class="span6 iCleft">
										<h3><?php echo JText::_('COM_ICAGENDA_LEGEND_PERIOD_DATES'); ?></h3>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('startdate'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('startdate'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('enddate'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('enddate'); ?>
											</div>
										</div>
										<!--div class="control-group">
										</div-->
									</div>
									<div class="span6 iCleft">
										<h3>&nbsp;</h3>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('weekdays'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('weekdays'); ?>
											</div>
										</div>
										<!--div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('weekdays_filter'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('weekdays_filter'); ?>
											</div>
										</div-->
										<div class="control-group">
											<div class="alert alert-info">
												<h4><?php echo JText::_('COM_ICAGENDA_FORM_WEEK_DAYS_INFO_TITLE'); ?></h4>
												<?php echo JText::_('COM_ICAGENDA_FORM_WEEK_DAYS_INFO_DESC'); ?>
											</div>
										</div>
										<!--div class="control-group">
										</div-->
									</div>
								</div>
								<hr>
								<div class="row-fluid">
									<div class="span6 iCleft">
										<h3><?php echo JText::_('COM_ICAGENDA_LEGEND_SINGLE_DATES'); ?></h3>
										<div class="control-group">
											<?php echo $this->form->getInput('dates'); ?>
										</div>
									</div>
								</div>
								<hr>
								<div class="row-fluid">
									<div class="span6 iCleft">
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('displaytime'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('displaytime'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('next'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('next'); ?>
											</div>
										</div>
									</div>
								</div>
								<hr>

								<?php
								echo '<fieldset style="margin:0">'
									.JHtml::_('sliders.start', 'info-slider', array('useCookie'=>0, 'startOffset'=>-1, 'startTransition'=>1))
									.JHtml::_('sliders.panel', JText::_('COM_ICAGENDA_DATES_HELP'), 'slide1')
									.'<fieldset class="panelform" >'
									.'<ul class="adminformlist" style="color:#555555;">'
									.'<div>'. JText::_('COM_ICAGENDA_DATES_HELP_INTRO').'</div><br>'
									.'<div style="text-transform:uppercase;"><b>'. JText::_('COM_ICAGENDA_LEGEND_SINGLE_DATES').'</b></div>'
									.'<div><b>&#9658; '. JText::_('COM_ICAGENDA_DATES_HELP_LINE1').'</b></div>'
									.'<div><i>'. JText::_('COM_ICAGENDA_DATES_HELP_EXAMPLE1').'</i></div><br>'
									.'<div><b>&#9658; '. JText::_('COM_ICAGENDA_DATES_HELP_LINE2').'</b></div>'
									.'<div><i>'. JText::_('COM_ICAGENDA_DATES_HELP_EXAMPLE2').'</i></div><br>'
									.'<div style="text-transform:uppercase;"><b>'. JText::_('COM_ICAGENDA_LEGEND_PERIOD_DATES').'</b></div>'
									.'<div><b>&#9658; '. JText::_('COM_ICAGENDA_DATES_HELP_LINE3').'</b></div>'
									.'<div><i>'. JText::_('COM_ICAGENDA_DATES_HELP_EXAMPLE3').'</i></div><br>'
									.'<div style="text-transform:uppercase;"><b>'. JText::_('COM_ICAGENDA_LEGEND_PERIOD_DATES').' & '. JText::_('COM_ICAGENDA_LEGEND_SINGLE_DATES').'</b></div>'
									.'<div><b>&#9658; '. JText::_('COM_ICAGENDA_DATES_HELP_LINE4').'</b></div>'
									.'<div><i>'. JText::_('COM_ICAGENDA_DATES_HELP_EXAMPLE4').'</i></div><br>'
									.'<div><b>&#9658; '. JText::_('COM_ICAGENDA_DATES_HELP_LINE5').'</b></div>'
									.'<div><i>'. JText::_('COM_ICAGENDA_DATES_HELP_EXAMPLE5').'</i></div><br>'
									.'</ul>'
									.'</fieldset>'
									.JHtml::_('sliders.end')
									.'<br />';
								?>
							</div>

						<?php
						if(version_compare(JVERSION, '3.0', 'ge'))
						{
							echo JHtml::_($endPanel);
						}
						?>

						<!-- Panel Description -->
						<?php echo JHtml::_($addPanel, $icPanDesc, $DescTag1, $DescTag2); ?>

							<div class="icpanel iCleft">
								<h1><?php echo JText::_('COM_ICAGENDA_LEGEND_DESC'); ?></h1>
								<hr>
								<div class="row-fluid">
									<h3><?php echo JText::_('COM_ICAGENDA_FORM_EVENT_SHORT_DESCRIPTION_LBL'); ?></h3>
									<div class="alert alert-info"><?php echo JText::_('COM_ICAGENDA_FORM_EVENT_SHORT_DESCRIPTION_DESC'); ?></div>
									<?php echo $this->form->getInput('shortdesc'); ?>
								</div>
								<hr>
								<div class="row-fluid">
									<h3><?php echo JText::_('COM_ICAGENDA_FORM_DESC_EVENT_DESC'); ?></h3>
									<?php echo $this->form->getInput('desc'); ?>
								</div>
								<hr>
								<div class="row-fluid">
									<h3><?php echo JText::_('COM_ICAGENDA_FORM_EVENT_METADESC_LBL'); ?></h3>
									<div class="alert alert-info"><?php echo JText::_('COM_ICAGENDA_FORM_EVENT_METADESC_DESC'); ?></div>
									<?php echo $this->form->getInput('metadesc'); ?>
								</div>
							</div>

						<?php
						if (version_compare(JVERSION, '3.0', 'ge'))
						{
							echo JHtml::_($endPanel);
						}
						?>

						<!-- Panel Information -->
						<?php echo JHtml::_($addPanel, $icPanInfos, $InfosTag1, $InfosTag2); ?>

							<div class="icpanel iCleft">
								<h1><?php echo JText::_('COM_ICAGENDA_LEGEND_INFORMATION'); ?></h1>
								<hr>
								<div class="row-fluid">
									<div class="span6 iCleft">
										<h3><?php echo JText::_('COM_ICAGENDA_LEGEND_VENUE'); ?></h3>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('place'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('place'); ?>
											</div>
										</div>
										<hr>
										<h3><?php echo JText::_('COM_ICAGENDA_LEGEND_CONTACT'); ?></h3>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('email'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('email'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('phone'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('phone'); ?>
											</div>
										</div>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('website'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('website'); ?>
											</div>
										</div>
										<hr>
										<h3><?php echo JText::_('COM_ICAGENDA_LEGEND_ALLEG'); ?></h3>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('file'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('file'); ?>
											</div>
										</div>
										<hr>
									</div>
									<div class="span6 iCleft">
										<h3><?php echo JText::_('COM_ICAGENDA_LEGEND_FEATURES'); ?></h3>
										<div class="control-group">
											<div class="control-label">
												<?php echo $this->form->getLabel('features'); ?>
											</div>
											<div class="controls">
												<?php echo $this->form->getInput('features'); ?>
											</div>
										</div>
										<hr>
										<h3><?php echo JText::_('COM_ICAGENDA_CUSTOMFIELDS'); ?></h3>
										<?php
										// Load Custom fields - Event form (2)
										echo icagendaCustomfields::loader(2);
										?>
									</div>
								</div>
							</div>

						<?php
						if (version_compare(JVERSION, '3.0', 'ge'))
						{
							echo JHtml::_($endPanel);
						}
						?>

						<!-- Panel Google Maps -->
						<?php echo JHtml::_($addPanel, $icPanGooglemap, $GooglemapTag1, $GooglemapTag2); ?>

					<div class="icpanel iCleft" id="googlemap">
						<h1><?php echo JText::_('COM_ICAGENDA_LEGEND_GOOGLE_MAPS'); ?></h1>
						<hr>
						<div class="row-fluid">
							<div class="span6 iCleft">

							<h3><?php echo JText::_('COM_ICAGENDA_GOOGLE_MAPS_SUBTITLE_LBL'); ?></h3>
							<div>
								<?php echo JText::_('COM_ICAGENDA_GOOGLE_MAPS_NOTE1'); ?>
								<br/>
								<?php echo JText::_('COM_ICAGENDA_GOOGLE_MAPS_NOTE2'); ?><br/>
							</div>
							<!--div class='clearfix'-->
							<div class="icmap-box">

								<div class="control-group">
									<div class="control-label">
										<?php echo $this->form->getLabel('address'); ?>
									</div>
									<div class="controls">
										<?php echo $this->form->getInput('address'); ?>
									</div>
								</div>
								<div class="icmap-field">
									<?php echo $this->form->getInput('city'); ?>
								</div>
								<div class="icmap-field">
									<?php echo $this->form->getInput('country'); ?>
								</div>
								<div class="icmap-field">
									<?php echo $this->form->getInput('lat'); ?>
								</div>
								<div class="icmap-field">
									<?php echo $this->form->getInput('lng'); ?>
								</div>
								<!--label>District: </label> <input id="administrative_area_level_2" disabled=disabled> <br/>
								<label>State/Province: </label> <input id="administrative_area_level_1" disabled=disabled> <br/-->
								<!--label>route: </label> <input id="route"> <br/>
								<label>Postal Code: </label> <input id="postal_code" disabled=disabled> <br/>
								<label>type: </label> <input id="type" disabled=disabled> <br/-->

							</div>
						</div>
						<div class="span6 iCleft">
							<div class='map-wrapper'>
								<h3>Map</h3>
								<label id="geo_label" for="reverseGeocode"><?php echo JText::_('COM_ICAGENDA_GOOGLE_MAPS_REVERSE'); ?></label>
								<select id="reverseGeocode">
									<option value="false" selected><?php echo JText::_('JNO'); ?></option>
									<option value="true"><?php echo JText::_('JYES'); ?></option>
								</select><br/>

								<div id="map"></div>
								<div id="legend"><?php echo JText::_('COM_ICAGENDA_GOOGLE_MAPS_LEGEND'); ?></div>
							</div>
						</div>

						<!--div class='input-positioned'>
							<label>Callback: </label>
							<textarea id='callback_result' rows="15"></textarea>
						</div-->
					</div>
				</div>

				<?php
				if (version_compare(JVERSION, '3.0', 'ge'))
				{
					echo JHtml::_($endPanel);
				}
				?>

				<?php
				echo JHtml::_($addPanel, $icPanRegistrations, $RegistrationsTag1, $RegistrationsTag2);
				?>
				<div class="icpanel iCleft">
					<h1><?php echo JText::_('COM_ICAGENDA_REGISTRATIONS_LABEL'); ?></h1>
					<hr>
					<div class="row-fluid">
					<?php foreach ($params as $name => $fieldSet) : ?>
						<?php if ( ! in_array($name, array('frontend', 'options'))) : ?>
							<?php if (isset($fieldSet->description) && trim($fieldSet->description)) : ?>
								<p class="tip"><?php echo $this->escape(JText::_($fieldSet->description));?></p>
							<?php endif; ?>
							<div class="span6 iCleft">
								<h3><?php echo $this->escape(JText::_($fieldSet->label)); ?></h3>
								<?php foreach ($this->form->getFieldset($name) as $field) : ?>
									<div class="control-group">
										<div class="control-label">
											<?php echo $field->label; ?>
										</div>
										<div class="controls">
											<?php
											$language = JFactory::getLanguage();
											$language->load('com_icagenda', JPATH_SITE, 'en-GB', true);
											$language->load('com_icagenda', JPATH_SITE, null, true);

											if (($field->name == 'jform[params][statutReg]') && ($field->value == '2'))
											{
												echo '<select name="jform[params][statutReg]">';
												echo '<option value="">' . JText::_('JGLOBAL_USE_GLOBAL') . '</option>';
												echo '<option value="0" selected>' . JText::_('JOFF') . '</option>';
												echo '<option value="1">' . JText::_('JON') . '</option>';
												echo '</select>';
											}
											elseif ($field->name == 'jform[params][maxRlistGlobal]')
											{
												 if ($field->value == '1')
												 {
													echo '<select name="jform[params][maxRlistGlobal]">';
													echo '<option value="" selected>' . JText::_('JGLOBAL_USE_GLOBAL') . '</option>';
													echo '<option value="2">' . JText::_('COM_ICAGENDA_LBL_CUSTOM_VALUE') . '</option>';
													echo '</select>';
												}
												 elseif ($field->value == '0')
												 {
													echo '<select name="jform[params][maxRlistGlobal]">';
													echo '<option value="">' . JText::_('JGLOBAL_USE_GLOBAL') . '</option>';
													echo '<option value="2" selected>' . JText::_('COM_ICAGENDA_LBL_CUSTOM_VALUE') . '</option>';
													echo '</select>';
												}
												else
												{
													echo $field->input;
												}
											}
											else
											{
												echo $field->input;
											}
											?>
										</div>
									</div>
								<?php endforeach; ?>
							</div>
						<?php endif; ?>
					<?php endforeach; ?>
					</div>
				</div>


				<?php
				if (version_compare(JVERSION, '3.0', 'ge'))
				{
					echo JHtml::_($endPanel);
				}
				?>

				<?php
				echo JHtml::_($addPanel, $icPanOptions, $OptionsTag1, $OptionsTag2);
				?>
				<div class="icpanel iCleft">
					<h1><?php echo JText::_('JOPTIONS'); ?></h1>
					<hr>
					<div class="row-fluid">
					<?php foreach ($params as $name => $fieldSet) : ?>
						<?php if ($name == 'options') : ?>
							<?php if (isset($fieldSet->description) && trim($fieldSet->description)) : ?>
								<p class="tip"><?php echo $this->escape(JText::_($fieldSet->description));?></p>
							<?php endif; ?>
							<div class="span6 iCleft">
								<h3><?php echo $this->escape(JText::_($fieldSet->label)); ?></h3>
								<?php foreach ($this->form->getFieldset($name) as $field) : ?>
									<div class="control-group">
										<div class="control-label">
											<?php echo $field->label; ?>
										</div>
										<div class="controls">
											<?php
											$language = JFactory::getLanguage();
											$language->load('com_icagenda', JPATH_SITE, 'en-GB', true);
											$language->load('com_icagenda', JPATH_SITE, null, true);
											echo $field->input;
											?>
										</div>
									</div>
								<?php endforeach; ?>
							</div>
						<?php endif; ?>
					<?php endforeach; ?>
					</div>
				</div>


				<?php
				if (version_compare(JVERSION, '3.0', 'ge'))
				{
					echo JHtml::_($endPanel);
				}
				?>

				<?php
				echo JHtml::_($addPanel, $icPanPublishing, $PublishingTag1, $PublishingTag2);
				?>
				<div class="icpanel iCleft">
					<h1><?php echo JText::_('JGLOBAL_FIELDSET_PUBLISHING'); ?></h1>
					<hr>
					<div class="row-fluid">
						<div class="span6 iCleft">
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('alias'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('alias'); ?>
								</div>
							</div>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('id'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('id'); ?>
								</div>
							</div>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('created'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('created'); ?>
								</div>
							</div>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('created_by'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('created_by'); ?>
								</div>
							</div>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('created_by_alias'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('created_by_alias'); ?>
								</div>
							</div>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('modified'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('modified'); ?>
								</div>
							</div>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('modified_by'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('modified_by'); ?>
								</div>
							</div>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('checked_out'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('checked_out'); ?>
								</div>
							</div>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('checked_out_time'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('checked_out_time'); ?>
								</div>
							</div>
							<?php if (!empty($this->item->site_itemid)) : ?>
							<h2><?php echo $this->escape(JText::_('COM_ICAGENDA_FORM_FRONTEND_OPTIONS'));?></h2>
							<hr>
							<div class="control-group">
								<div class="control-label">
									<?php echo $this->form->getLabel('site_itemid'); ?>
								</div>
								<div class="controls">
									<?php echo $this->form->getInput('site_itemid'); ?>
								</div>
							</div>
							<?php endif; ?>
							<!--
							<?php foreach ($params as $name => $fieldSet) : ?>
								<?php if ($name == 'publishing') : ?>
									<?php foreach ($this->form->getFieldset($name) as $field) : ?>
										<?php if (($field->name == 'jform[params][start_publishing]')
													&& ($field->value != '') && ($field->value != '0')) : ?>
											<?php if (isset($fieldSet->label) && trim($fieldSet->label)) : ?>
												<h2><?php echo $this->escape(JText::_($fieldSet->label));?></h2>
												<hr>
											<?php endif; ?>
											<div class="control-group">
												<div class="control-label">
													<?php echo $field->label; ?>
												</div>
												<div class="controls">
													<?php echo $field->input; ?>
												</div>
											</div>
										<?php endif; ?>
									<?php endforeach; ?>
								<?php endif; ?>
							<?php endforeach; ?>
							-->
						</div>
					</div>
				</div>



				<?php echo JHtml::_($endPanel); ?>

				<?php echo JHtml::_($endPane, 'icTab'); ?>
			</div>

		<!-- Begin Sidebar -->
			<div class="span2 iCleft">
			<h4><?php echo JText::_('COM_ICAGENDA_TITLE_SIDEBAR_DETAILS'); ?></h4>
			<hr>
				<div class="control-group">
					<div class="control-label">
						<?php echo $this->form->getLabel('state'); ?>
					</div>
					<div class="controls">
						<?php echo $this->form->getInput('state'); ?>
					</div>
				</div>
				<div class="control-group">
					<div class="control-label">
						<?php echo $this->form->getLabel('approval'); ?>
					</div>
					<div class="controls">
						<?php echo $this->form->getInput('approval'); ?>
					</div>
				</div>
				<div class="control-group">
					<div class="control-label">
						<?php echo $this->form->getLabel('access'); ?>
					</div>
					<div class="controls">
						<?php echo $this->form->getInput('access'); ?>
					</div>
				</div>
				<div class="control-group">
					<div class="control-label">
						<?php echo $this->form->getLabel('language'); ?>
					</div>
					<div class="controls">
						<?php echo $this->form->getInput('language'); ?>
					</div>
				</div>


			</div>
		<!-- End Sidebar -->
		</div>

		<div class="clr"></div>
		</div>
		<?php
		if ($messagealert)
		{
			$this->item->state=='0';
		}
		?>
		<div>
			<input type="hidden" name="task" value="" />
			<?php echo JHtml::_('form.token'); ?>
		</div>
	</form>

	<script type="text/javascript">
		//<![CDATA[
		var iCmapDisplay = '<?php echo $iCmapDisplay; ?>';

		jQuery(function($) {
			// Tabs
			if (iCmapDisplay=='1') {
				$iCgvar='a[href="#googlemap"]';
				$iCmapShow='shown';
			}
			if (iCmapDisplay=='3') {
				$iCgvar='.googlemap';
				$iCmapShow='click';
			}
			// Slides
			if (iCmapDisplay=='2') {
				$iCgvar='#googlemap';
				$iCmapShow='shown';
			}

			$(''+$iCgvar+'').on(''+$iCmapShow+'', function() {   // When tab is displayed...
//			$('.googlemap').on('click', function (e) {

				var addresspicker = $( "#addresspicker" ).addresspicker();
				var addresspickerMap = $( '#jform_address' ).addresspicker({
					regionBias: "fr",
					updateCallback: showCallback,
					mapOptions: {
						zoom: <?php echo $zoom; ?>,
						center: new google.maps.LatLng(<?php echo $coords; ?>),
						scrollwheel: false,
						mapTypeId: google.maps.MapTypeId.<?php echo $mapTypeId; ?>,
						streetViewControl: false
					},
					elements: {
						map: "#map",
						lat: "#lat",
						lng: "#lng",
						street_number: '#street_number',
						route: '#route',
						locality: '#locality',
						administrative_area_level_2: '#administrative_area_level_2',
						administrative_area_level_1: '#administrative_area_level_1',
						country: '#country',
						postal_code: '#postal_code',
						type: '#type',
					}
				});

				var gmarker = addresspickerMap.addresspicker( "marker");
				gmarker.setVisible(true);
				addresspickerMap.addresspicker( "updatePosition");

				$('#reverseGeocode').change(function(){
					$("#jform_address").addresspicker("option", "reverseGeocode", ($(this).val() === 'true'));
				});

				function showCallback(geocodeResult, parsedGeocodeResult){
					$('#callback_result').text(JSON.stringify(parsedGeocodeResult, null, 4));
				}
			});
		});
		//]]>
	</script>

	<?php

	// Script validation for Event Edit form (2)
	$iCheckForm = icagendaForm::submit(2);
	$document->addScriptDeclaration($iCheckForm);

	// CSS files which could be overridden into your site template. (eg. /templates/my_template/css/com_icagenda/icagenda-back.css)
	JHtml::stylesheet( 'com_icagenda/icagenda.css', false, true );
	JHtml::stylesheet( 'com_icagenda/jquery-ui-1.8.17.custom.css', false, true );

	$ic_style = 'div.tip img.media-preview {display:none}';
	$document->addStyleDeclaration($ic_style);

	// Joomla 2.5
	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		JHtml::stylesheet('com_icagenda/template.j25.css', false, true);
		JHtml::stylesheet('com_icagenda/icagenda-back.j25.css', false, true);

		JHtml::_('behavior.framework');

		// load jQuery, if not loaded before (NEW VERSION IN 1.2.6)
		$scripts = array_keys($document->_scripts);
		$scriptFound = false;
		$scriptuiFound = false;
		$mapsgooglescriptFound = false;
		for ($i = 0; $i < count($scripts); $i++)
		{
			if (stripos($scripts[$i], 'jquery.min.js') !== false)
			{
				$scriptFound = true;
			}
			// load jQuery, if not loaded before as jquery - added in 1.2.7
			if (stripos($scripts[$i], 'jquery.js') !== false)
			{
				$scriptFound = true;
			}
			if (stripos($scripts[$i], 'jquery-ui.min.js') !== false)
			{
				$scriptuiFound = true;
			}
			if (stripos($scripts[$i], 'maps.google') !== false)
			{
				$mapsgooglescriptFound = true;
			}
		}

		// jQuery Library Loader
		if (!$scriptFound)
		{
			// load jQuery, if not loaded before
			if (!$app->get('jquery'))
			{
				$app->set('jquery', true);
				// add jQuery
				$document->addScript('https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');
				$document->addScript( JURI::root( true ) . '/media/com_icagenda/js/jquery.noconflict.js' );
			}
		}

		if (!$scriptuiFound)
		{
			$document->addScript('https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js');
		}

		$document->addScript( JURI::root( true ) . '/media/com_icagenda/js/template.js' );
	}
	else
	{
		JHtml::_('bootstrap.framework');
		JHtml::_('jquery.framework');

		// Change jQuery UI version from 1.9.2 to 1.8.23 to prevent a conflict in tooltip that appeared since Joomla 3.1.4
//		$document->addScript('https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js');
		$document->addScript('https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js');
	}

	/**
	 * Google Maps api V3
	 */
	$curlang	= $document->language;
	$lang		= substr($curlang,0,2);
	$document->addScript('https://maps.googleapis.com/maps/api/js?sensor=false&language='.$lang);

	/**
	 * Script files which could be overridden into your site template.
	 * (eg. /templates/my_template/js/com_icagenda/FILE_NAME.js)
	 */
	JHtml::script( 'com_icagenda/timepicker.js', false, true );
	JHtml::script( 'com_icagenda/icdates.js', false, true );
	JHtml::script( 'com_icagenda/icmap.js', false, true );
	JHtml::script( 'com_icagenda/icform.js', false, true );
}
else
{
	if (defined('IC_LIBRARY')) $app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning');
	$app->redirect(htmlspecialchars_decode('index.php?option=com_icagenda&view=icagenda'));
}
views/event/tmpl/index.html000060400000000032152455705350011775 0ustar00<html><body></body></html>views/event/index.html000060400000000032152455705350011021 0ustar00<html><body></body></html>views/mail/view.html.php000060400000006515152455705350011267 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.9 2015-07-30
 * @since       2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * View class Admin - Mail Newsletter - iCagenda
 */
class iCagendaViewMail extends JViewLegacy
{
	protected $data;

	protected $state;

	protected $item;

	protected $form;

	/**
	 * Display the view
	 */
	public function display($tpl = null)
	{
		// Joomla 2.5
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			jimport( 'joomla.environment.request' );

			JHtml::stylesheet('com_icagenda/template.j25.css', false, true);
			JHtml::stylesheet('com_icagenda/icagenda-back.j25.css', false, true);

			JHtml::_('behavior.mootools');

			$app		= JFactory::getApplication();
			$document	= JFactory::getDocument();

			// load jQuery, if not loaded before
			$scripts = array_keys($document->_scripts);
			$scriptFound = false;

			for ($i = 0; $i < count($scripts); $i++)
			{
				if (stripos($scripts[$i], 'jquery.min.js') !== false
					|| stripos($scripts[$i], 'jquery.js') !== false)
				{
					$scriptFound = true;
				}
			}

			// jQuery Library Loader
			if (!$scriptFound)
			{
				// load jQuery, if not loaded before
				if (!$app->get('jquery'))
				{
					$app->set('jquery', true);

					// Add jQuery Library
					$document->addScript('https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');
					JHtml::script('com_icagenda/jquery.noconflict.js', false, true);
				}
			}
		}

		$this->form		= $this->get('Form');

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));

			return false;
		}

		$this->addToolbar();

		parent::display($tpl);
	}

	/**
	 * Add the page title and toolbar.
	 */
	protected function addToolbar()
	{
		JRequest::setVar('hidemainmenu', true);

		$user	= JFactory::getUser();

		$canDo	= iCagendaHelper::getActions();

		// Set Title
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JToolBarHelper::title(JText::_('COM_ICAGENDA_TITLE_MAIL'), 'mail.png');
		}
		else
		{
			JToolBarHelper::title('iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_TITLE_MAIL') . '</span>', 'mail');
		}

		$icTitle = JText::_('COM_ICAGENDA_TITLE_MAIL');

		$document	= JFactory::getDocument();
		$app		= JFactory::getApplication();
		$sitename	= $app->getCfg('sitename');
		$title		= $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;
		$document->setTitle($title);


		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JToolBarHelper::custom('mail.send', 'forward.png', 'forward.png', 'ICAGENDA_JTOOLBAR_SEND', false );
		}
		else
		{
			JToolbarHelper::custom('mail.send', 'envelope.png', 'send_f2.png', 'ICAGENDA_JTOOLBAR_SEND', false);
		}

		JToolBarHelper::cancel('mail.cancel', 'JTOOLBAR_CLOSE');
	}
}
views/mail/tmpl/edit.php000060400000012016152455705350011244 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.9 2015-07-30
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

JHtml::_('behavior.tooltip');
JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidation');

if (version_compare(JVERSION, '3.0', 'ge'))
{
	JHtml::_('formbehavior.chosen', 'select');
}

$app = JFactory::getApplication();

//$session		= JFactory::getSession();
//$ic_newsletter	= $session->get('ic_newsletter', array());

$script = "\t" . 'Joomla.submitbutton = function(pressbutton) {' . "\n";
$script .= "\t\t" . 'var form = document.adminForm;' . "\n";
$script .= "\t\t" . 'if (pressbutton == \'mail.cancel\') {' . "\n";
$script .= "\t\t\t" . 'Joomla.submitform(pressbutton);' . "\n";
$script .= "\t\t\t" . 'return;' . "\n";
$script .= "\t\t" . '}' . "\n";
$script .= "\t\t" . '// do field validation' . "\n";
$script .= "\t\t" . 'if (form.jform_subject.value == ""){' . "\n";
$script .= "\t\t\t" . 'alert("' . JText::_('COM_ICAGENDA_NEWSLETTER_NO_OBJ_ALERT', true) . '");' . "\n";
$script .= "\t\t" . '} else if (getSelectedValue(\'adminForm\',\'jform[eventid]\') == ""){' . "\n";
$script .= "\t\t\t" . 'alert("' . JText::_('COM_ICAGENDA_NEWSLETTER_NO_EVENT_SELECTED', true) . '");' . "\n";
$script .= "\t\t" . '} else if (getSelectedValue(\'adminForm\',\'jform[date]\') == ""){' . "\n";
$script .= "\t\t\t" . 'alert("' . JText::_('COM_ICAGENDA_NEWSLETTER_NO_DATE_SELECTED', true) . '");' . "\n";
//$script .= "\t\t" . '} else if (form.jform_message.value == ""){' . "\n";
//$script .= "\t\t\t" . 'alert("' . JText::_('COM_ICAGENDA_NEWSLETTER_NO_BODY_ALERT', true) . '");' . "\n";
$script .= "\t\t" . '} else {' . "\n";
$script .= "\t\t\t" . 'Joomla.submitform(pressbutton);' . "\n";
$script .= "\t\t" . '}' . "\n";
$script .= "\t\t" . '}' . "\n";

//JFactory::getDocument()->addScriptDeclaration($script);

// Access Administration Newsletter check.
if (JFactory::getUser()->authorise('icagenda.access.newsletter', 'com_icagenda'))
{
	?>
	<!--script type="text/javascript">
		Joomla.submitbutton = function(task)
		{
			if (task == 'event.cancel' || document.formvalidator.isValid(document.id('event-form'))) {
				Joomla.submitform(task, document.getElementById('event-form'));
			}
			else {
				alert('<?php echo $this->escape(JText::_('JGLOBAL_VALIDATION_FORM_FAILED'));?>');
			}
		}
	</script-->

	<form action="<?php echo JRoute::_('index.php?option=com_icagenda&view=mail&layout=edit') ?>" method="post" name="adminForm" id="adminForm" class="form-validate" enctype="multipart/form-data">
		<div class="container">
			<!-- iCagenda Header -->
			<header>
				<h1>
					<?php echo JText::_('COM_ICAGENDA_TITLE_MAIL'); ?>&nbsp;<span>iCagenda</span>
				</h1>
				<h2>
					<?php echo JText::_('COM_ICAGENDA_COMPONENT_DESC'); ?>
					<!--nav class="iCheader-videos">
						<span style="font-variant:small-caps">Tutorial Videos</span>
						<a href="#">Video</a>
					</nav-->
				</h2>
			</header>

			<div>&nbsp;</div>

			<!-- Begin Content -->
			<h4><?php echo JText::_('COM_ICAGENDA_FORM_LBL_NEWSLETTER_LIST'); ?></h4>
			<div class="row-fluid">
				<div class="span12">
					<div class="span4 iCleft">
						<div class="control-group">
							<?php echo $this->form->getLabel('eventid'); ?>
							<div class="controls">
								<?php echo $this->form->getInput('eventid'); ?>
							</div>
						</div>
					</div>
					<div class="span4 iCleft">
						<div class="control-group">
							<?php echo $this->form->getLabel('date'); ?>
							<div class="controls">
								<?php echo $this->form->getInput('date'); ?>
							</div>
						</div>
					</div>
				</div>
			</div>
			<hr>
			<h4><?php echo JText::_('COM_ICAGENDA_TITLE_NEWSLETTER'); ?></h4>
			<div class="row-fluid">
				<div class="span12">
					<div class="control-group">
						<?php echo $this->form->getLabel('subject'); ?>
						<div class="controls">
							<?php echo $this->form->getInput('subject'); ?>
						</div>
					</div>
					<div class="control-group">
						<?php echo $this->form->getLabel('message'); ?>
						<div class="controls">
							<?php echo $this->form->getInput('message'); ?>
						</div>
					</div>
				</div>
			</div>
			<input type="hidden" name="option" value="com_icagenda" />
			<input type="hidden" name="task" value="" />
			<?php echo JHtml::_('form.token'); ?>
		</div>
		<div class="clr"></div>
	</form>
	<?php
}
else
{
	$app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning');
	$app->redirect(htmlspecialchars_decode('index.php?option=com_icagenda&view=icagenda'));
}
views/mail/tmpl/index.html000060400000000032152455705350011576 0ustar00<html><body></body></html>views/mail/index.html000060400000000032152455705350010622 0ustar00<html><body></body></html>views/events/view.html.php000060400000016450152455705350011650 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-06-22
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * View class Admin - List of Events - iCagenda.
 */
class iCagendaViewEvents extends JViewLegacy
{
	protected $params;
	protected $state;
	protected $items;
	protected $pagination;
	protected $categories;
	protected $upcoming;

	/**
	 * Display the view
	 */
	public function display($tpl = null)
	{
		$app = JFactory::getApplication();

		// Joomla 2.5
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			jimport( 'joomla.environment.request' );

			JHtml::stylesheet( 'com_icagenda/icagenda-back.j25.css', false, true );
		}

		$this->params		= JComponentHelper::getParams('com_icagenda');
		$this->state		= $this->get('State');
		$this->items		= $this->get('Items');
		$this->pagination	= $this->get('Pagination');

		$this->categories	= $this->get('Categories');
		$this->upcoming		= $this->get('Upcoming');
		$this->itemids		= $this->get('MenuItemID');

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));
			return false;
		}

		$icagenda_categories = class_exists('icagendaCategories') ? icagendaCategories::getList('1') : false;

		if ( ! $icagenda_categories)
		{
			$app->enqueueMessage( JText::_('COM_ICAGENDA_ALERT_NO_CATEGORY_PUBLISHED')
								. '<br /><br /><a class="btn btn-success" href="index.php?option=com_icagenda&view=category&layout=edit" >'
								. JText::_('COM_ICAGENDA_LEGEND_NEW_CATEGORY') . '</a>'
								. ' <a class="btn btn-inverse btn-mini" href="index.php?option=com_icagenda&view=categories" >'
								. JText::_('ICCATEGORIES')
								. '</a>', 'warning' );
		}

		// We don't need toolbar in the modal window.
		if ($this->getLayout() !== 'modal')
		{
			$this->addToolbar();

			if (version_compare(JVERSION, '3.0', 'ge'))
			{
				$this->sidebar = JHtmlSidebar::render();
			}
		}

		$canDo = iCagendaHelper::getActions();

		if (defined('IC_LIBRARY')
			&& $canDo->get('icagenda.access.events'))
		{
			parent::display($tpl);
		}
		else
		{
			if (defined('IC_LIBRARY')) $app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning');
			$app->redirect(htmlspecialchars_decode('index.php?option=com_icagenda&view=icagenda'));
		}
	}

	/**
	 * Add the page title and toolbar.
	 *
	 * @since	1.6
	 */
	protected function addToolbar()
	{
		require_once JPATH_COMPONENT . '/helpers/icagenda.php';

		$state					= $this->get('State');
		$user					= JFactory::getUser();
		$userId					= $user->get('id');
		$canDo					= iCagendaHelper::getActions();
		$icagenda_categories	= class_exists('icagendaCategories') ? icagendaCategories::getList() : false;

		// Set Title
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JToolBarHelper::title('iCagenda - ' . JText::_('COM_ICAGENDA_TITLE_EVENTS'), 'events.png');
		}
		else
		{
			JToolBarHelper::title('iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_TITLE_EVENTS') . '</span>', 'calendar');
		}

		$icTitle = JText::_('COM_ICAGENDA_TITLE_EVENTS');

		$document		= JFactory::getDocument();
		$app			= JFactory::getApplication();
		$sitename		= $app->getCfg('sitename');
		$title			= $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;

		$document->setTitle($title);

		//Check if the form exists before showing the add/edit buttons
		$formPath = JPATH_COMPONENT_ADMINISTRATOR . '/views/event';

		if (file_exists($formPath)
			&& $icagenda_categories
			)
		{
			if ($canDo->get('core.create'))
			{
				JToolBarHelper::addNew('event.add','JTOOLBAR_NEW');
			}

			if ($canDo->get('core.edit') || $canDo->get('core.edit.own'))
			{
				JToolBarHelper::editList('event.edit');
			}

		}

		if ($canDo->get('core.edit.state')
			&& $icagenda_categories
			)
		{
			if (isset($this->items[0]->state))
			{
				JToolBarHelper::divider();
				JToolBarHelper::custom('events.publish', 'publish.png', 'publish_f2.png','JTOOLBAR_PUBLISH', true);
				JToolBarHelper::custom('events.unpublish', 'unpublish.png', 'unpublish_f2.png', 'JTOOLBAR_UNPUBLISH', true);
			}
			else
			{
				// If this component does not use state then show a direct delete button as we can not trash
				JToolBarHelper::deleteList('', 'events.delete','JTOOLBAR_DELETE');
			}

			if (isset($this->items[0]->state))
			{
				JToolBarHelper::divider();
				JToolBarHelper::archiveList('events.archive','JTOOLBAR_ARCHIVE');
			}

			if (isset($this->items[0]->checked_out))
			{
				JToolBarHelper::custom('events.checkin', 'checkin.png', 'checkin_f2.png', 'JTOOLBAR_CHECKIN', true);
			}
		}

		// Show trash and delete for components that uses the state field
		if (isset($this->items[0]->state)
			&& $icagenda_categories
			)
		{
			if ($state->get('filter.state') == -2 && $canDo->get('core.delete'))
			{
				JToolBarHelper::deleteList('', 'events.delete','JTOOLBAR_EMPTY_TRASH');
				JToolBarHelper::divider();
			}
			elseif ($canDo->get('core.edit.state'))
			{
				JToolBarHelper::trash('events.trash','JTOOLBAR_TRASH');
				JToolBarHelper::divider();
			}
		}

		if ($canDo->get('core.admin'))
		{
			JToolBarHelper::preferences('com_icagenda');
		}

		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			JHtmlSidebar::setAction('index.php?option=com_icagenda&view=events');

			JHtmlSidebar::addFilter(
				JText::_('COM_ICAGENDA_SELECT_STATE'),
				'filter_published',
				JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.state'), true)
			);
			JHtmlSidebar::addFilter(
				JText::_('COM_ICAGENDA_SELECT_CATEGORY'),
				'filter_category',
				JHtml::_('select.options', $this->get('Categories'), 'value', 'text', $this->state->get('filter.category'), true)
			);
			JHtmlSidebar::addFilter(
				JText::_('COM_ICAGENDA_SELECT_DATES'),
				'filter_upcoming',
				JHtml::_('select.options', $this->get('Upcoming'), 'value', 'text', $this->state->get('filter.upcoming'), true)
			);
			JHtmlSidebar::addFilter(
				JText::_('COM_ICAGENDA_SELECT_SITE_ITEMID'),
				'filter_site_itemid',
				JHtml::_('select.options', $this->get('MenuItemID'), 'value', 'text', $this->state->get('filter.site_itemid'), true)
			);
		}
	}

	/**
	 * Method to save the submitted ordering values for records via AJAX.
	 *
	 * @return    void
	 *
	 * @since   3.0
	 */
	public function saveOrderAjax()
	{
		// Get the input
		$input	= JFactory::getApplication()->input;
		$pks	= $input->post->get('cid', array(), 'array');
		$order	= $input->post->get('order', array(), 'array');

		// Sanitize the input
		JArrayHelper::toInteger($pks);
		JArrayHelper::toInteger($order);

		// Get the model
		$model	= $this->getModel();

		// Save the ordering
		$return	= $model->saveorder($pks, $order);

		if ($return)
		{
			echo "1";
		}

		// Close the application
		JFactory::getApplication()->close();
	}
}
views/events/tmpl/default.php000060400000064400152455705350012331 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-06-29
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

JHtml::_('behavior.modal');
JHtml::_('behavior.multiselect');

$app		= JFactory::getApplication();
$user		= JFactory::getUser();
$userId		= $user->get('id');
$listOrder	= $this->state->get('list.ordering');
$listDirn	= $this->state->get('list.direction');
$canOrder	= $user->authorise('core.edit.state', 'com_icagenda');
$saveOrder	= $listOrder == 'a.ordering';

// Switch Joomla 2.5 / 3.x
if (version_compare(JVERSION, '3.0', 'lt'))
{
	JHtml::_('behavior.tooltip');
}
else
{
	// Include the component HTML helpers.
	JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
	JHtml::_('bootstrap.tooltip');
	JHtml::_('formbehavior.chosen', 'select');
	JHtml::_('dropdown.init');

	$archived	= $this->state->get('filter.published') == 2 ? true : false;
	$trashed	= $this->state->get('filter.published') == -2 ? true : false;

	if ($saveOrder)
	{
		$saveOrderingUrl = 'index.php?option=com_icagenda&task=events.saveOrderAjax&tmpl=component';
		JHtml::_('sortablelist.sortable', 'eventsList', 'adminForm', strtolower($listDirn), $saveOrderingUrl);
	}
}

// Check if GD is enabled
if (extension_loaded('gd') && function_exists('gd_info'))
{
	$thumb_generator = $this->params->get('thumb_generator', 1);
//	echo "It looks like GD is installed";
}
else
{
	$thumb_generator = 0;
	JError::raiseWarning('101', JText::_('COM_ICAGENDA_PHP_ERROR_GD'));
}

// Check if fopen is allowed
$fopen = true;
$result = ini_get('allow_url_fopen');

if (empty($result))
{
	JError::raiseWarning('101', JText::_('COM_ICAGENDA_PHP_ERROR_FOPEN'));
	$fopen = false;
}

// 3.3.3
$sortFields = array();
?>
<form action="<?php echo JRoute::_('index.php?option=com_icagenda&view=events'); ?>" method="post" name="adminForm" id="adminForm">
<?php if (!empty($this->sidebar)) : ?>
	<div id="j-sidebar-container" class="span2">
		<?php echo $this->sidebar; ?>
	</div>
	<div id="j-main-container" class="span10">
<?php else : ?>
	<div id="j-main-container">
<?php endif;?>

	<!-- Filters Joomla 2.5 (DEPRECATED iCagenda 3.7.x and after) -->
	<?php if (version_compare(JVERSION, '3.0', 'lt')) : ?>

		<fieldset id="filter-bar">
			<div class="filter-search fltlft">
				<label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label>
				<input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('Search'); ?>" />
				<button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button>
				<button type="button" onclick="document.id('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button>
			</div>
			<div class="filter-select fltrt">
				<select name="filter_published" class="inputbox" onchange="this.form.submit()">
					<option value=""><?php echo JText::_('COM_ICAGENDA_SELECT_STATE');?></option>
					<?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), "value", "text", $this->state->get('filter.state'), true);?>
				</select>

				<select name="filter_category" class="inputbox" onchange="this.form.submit()">
					<option value=""><?php echo JText::_('COM_ICAGENDA_SELECT_CATEGORY');?></option>
					<?php echo JHtml::_('select.options', $this->categories, 'value', 'text', $this->state->get('filter.category'));?>
				</select>

				<select name="filter_upcoming" class="inputbox" onchange="this.form.submit()">
					<option value=""><?php echo JText::_('COM_ICAGENDA_SELECT_DATES');?></option>
					<?php echo JHtml::_('select.options', $this->upcoming, 'value', 'text', $this->state->get('filter.upcoming'));?>
				</select>

				<select name="filter_site_itemid" class="inputbox" onchange="this.form.submit()">
					<option value=""><?php echo JText::_('COM_ICAGENDA_SELECT_SITE_ITEMID');?></option>
					<?php echo JHtml::_('select.options', $this->itemids, 'value', 'text', $this->state->get('filter.site_itemid'));?>
				</select>
			</div>
		</fieldset>
		<div class="clr"> </div>

	<!-- Search Tools Joomla 3 -->
	<?php else : ?>

		<div id="filter-bar" class="btn-toolbar">
			<div class="filter-search btn-group pull-left">
				<label for="filter_search" class="element-invisible"><?php echo JText::_('COM_ICAGENDA_FILTER_SEARCH_EVENTS_DESC'); ?></label>
				<input type="text" name="filter_search" placeholder="<?php echo JText::_('COM_ICAGENDA_FILTER_SEARCH_EVENTS_DESC'); ?>" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('COM_ICAGENDA_FILTER_SEARCH_EVENTS_DESC'); ?>" />
			</div>
			<div class="btn-group pull-left">
				<button class="btn tip hasTooltip" type="submit" title="<?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?>"><i class="icon-search"></i></button>
				<button class="btn tip hasTooltip" type="button" onclick="document.id('filter_search').value='';this.form.submit();" title="<?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?>"><i class="icon-remove"></i></button>
			</div>
			<div class="btn-group pull-right hidden-phone">
				<label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label>
				<?php echo $this->pagination->getLimitBox(); ?>
			</div>
		</div>
		<div class="clearfix"> </div>

	<?php endif;?>

	<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
		<table class="adminlist">
	<?php else : ?>
		<table class="table table-striped" id="eventsList">
	<?php endif; ?>
			<!-- START HEAD -->
			<thead>
				<tr>

				<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
					<!-- Ordering HEADER Joomla 3.x -->
					<th width="1%" class="nowrap center hidden-phone">
						<?php echo JHtml::_('grid.sort', '<i class="icon-menu-2"></i>', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?>
					</th>
				<?php endif; ?>

					<!-- CheckBox HEADER -->
					<th width="1%" class="hidden-phone">
						<input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" />
					</th>

					<!-- Status HEADER -->
					<th width="1%" style="min-width:55px" class="nowrap center">
						<?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?>
					</th>

					<!-- Approval HEADER -->
					<th width="1%" style="min-width:55px" class="nowrap center">
						<?php echo JHtml::_('grid.sort', 'COM_ICAGENDA_EVENTS_APPROVAL', 'a.approval', $listDirn, $listOrder); ?>
					</th>

					<!-- Image HEADER -->
					<th width="130px" class="nowrap center hidden-phone">
						<?php echo JHtml::_('grid.sort', 'COM_ICAGENDA_EVENTS_IMAGE', 'a.image', $listDirn, $listOrder); ?>
					</th>

					<!-- Title HEADER -->
					<th>
						<?php echo JHtml::_('grid.sort', 'COM_ICAGENDA_EVENTS_TITLE', 'a.title', $listDirn, $listOrder); ?> |
						<?php echo JHtml::_('grid.sort', 'COM_ICAGENDA_TITLE_CATEGORY', 'category', $listDirn, $listOrder); ?>
						<?php //echo JHtml::_('grid.sort', 'COM_ICAGENDA_FORM_FRONTEND_SUBMIT_ITEMID_LBL', 'a.site_itemid', $listDirn, $listOrder); ?>
					</th>

					<!-- Image HEADER -->
					<th width="15%" class="nowrap hidden-phone">
						<?php echo JHtml::_('grid.sort',  'COM_ICAGENDA_EVENTS_NEXT', 'a.next', $listDirn, $listOrder); ?>
					</th>

				<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
					<!-- Ordering HEADER Joomla 2.5 -->
					<?php if (isset($this->items[0]->ordering)) { ?>
					<th width="10%">
						<?php echo JHtml::_('grid.sort',  'JGRID_HEADING_ORDERING', 'a.ordering', $listDirn, $listOrder); ?>
						<?php if ($canOrder && $saveOrder) :?>
							<?php echo JHtml::_('grid.order',  $this->items, 'filesave.png', 'events.saveorder'); ?>
						<?php endif; ?>
					</th>
					<?php } ?>
				<?php endif; ?>

					<!-- Access HEADER -->
					<th width="10%" class="nowrap hidden-phone">
						<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ACCESS', 'access', $listDirn, $listOrder); ?>
					</th>

					<!-- Author HEADER -->
					<th width="10%" class="nowrap hidden-phone">
						<?php echo JHtml::_('grid.sort',  'JAUTHOR', 'a.username', $listDirn, $listOrder); ?>
					</th>

					<!-- Language HEADER -->
					<th width="5%" class="nowrap hidden-phone">
						<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_LANGUAGE', 'language', $listDirn, $listOrder); ?>
					</th>

					<!-- ID HEADER -->
					<th width="1%" class="nowrap hidden-phone">
						<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?>
					</th>

				</tr>
			</thead>
			<!-- END HEAD -->

			<!-- START FOOT -->
			<tfoot>
				<tr>
					<td colspan="12">
						<?php echo $this->pagination->getListFooter(); ?>
					</td>
				</tr>
			</tfoot>
			<!-- END FOOT -->

			<!-- START BODY -->
			<tbody valign="top">
			<?php foreach ($this->items as $i => $item) : ?>
				<?php
				$ordering	= ($listOrder == 'a.ordering');
				$canCreate	= $user->authorise('core.create', 'com_icagenda');
				$canEdit	= $user->authorise('core.edit', 'com_icagenda');
				$canCheckin	= $user->authorise('core.manage', 'com_icagenda') || $item->checked_out == $userId || $item->checked_out == 0;
				$canChange	= $user->authorise('core.edit.state', 'com_icagenda') && $canCheckin;
				$canEditOwn	= $user->authorise('core.edit.own', 'com_icagenda') && $item->created_by == $userId;
//				$canEditOwn = $user->authorise('core.edit.own', 'com_icagenda.events.'.$item->id) && $item->created_by == $userId;

				// Get Access Names
				$db = JFactory::getDBO();
				$db->setQuery(
					'SELECT `title`' .
					' FROM `#__viewlevels`' .
					' WHERE `id` = '. (int) $item->access
				);
				$access_title = $db->loadObject()->title;

				// Get Today and Next Date (Y-m-d)
				$eventTimeZone	= null;
				$today			= JHtml::date('now', 'Y-m-d');
				$nextdate		= JHtml::date($item->next, 'Y-m-d', $eventTimeZone);
				$isDate			= iCDate::isDate($item->next);
				?>
				<tr class="row<?php echo $i % 2; ?>" sortable-group-id="<?php echo $item->catid?>">

					<!-- Ordering Joomla 3.x -->
				<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
					<td class="order nowrap center hidden-phone">
					<?php if ($canChange) :
						$disableClassName = '';
						$disabledLabel	  = '';

						if ( ! $saveOrder) :
							$disabledLabel    = JText::_('JORDERINGDISABLED');
							$disableClassName = 'inactive tip-top';
						endif; ?>
						<span class="sortable-handler hasTooltip <?php echo $disableClassName; ?>" title="<?php echo $disabledLabel; ?>">
							<i class="icon-menu"></i>
						</span>
						<input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order " />
					<?php else : ?>
						<span class="sortable-handler inactive" >
							<i class="icon-menu"></i>
						</span>
					<?php endif; ?>
					</td>
				<?php endif; ?>

					<!-- CheckBox Joomla -->
					<td class="center hidden-phone">
						<?php echo JHtml::_('grid.id', $i, $item->id); ?>
					</td>

					<!-- Status Joomla -->
				<?php if (isset($this->items[0]->state)) : ?>
					<td class="center">
						<?php
						// Control of dates if valid (EDIT SINCE VERSION 3.0)
						if ( ! $isDate)
						{
							echo '<br/><i class="icon-warning"></i><br/>';
							echo '<span style="color:red;"><strong>' . JText::_('COM_ICAGENDA_NO_VALID_DATE') . '</strong></span>';
							if ($item->state == '1')
							{
								//$state = 0;
								$db		= Jfactory::getDbo();
								$query	= $db->getQuery(true);
								$query->clear();
								$query->update(' #__icagenda_events ');
								$query->set(' state = 0 ' );
								$query->where(' id = ' . (int) $item->id );
								$db->setQuery((string)$query);
								$db->query($query);
 							}
						}
						else
						{
							echo JHtml::_('jgrid.published', $item->state, $i, 'events.', $canChange, 'cb');
						}
						?>
					</td>
					<td class="center">
						<?php
						require_once JPATH_COMPONENT .'/helpers/html/events.php';
						$approved = empty( $item->approval ) ? 0 : 1;
						echo JHtml::_('jgrid.state', JHtmlEvents::approveEvents(), $approved, $i, 'events.', (boolean) $approved);
						?>
						<?php
						//require_once JPATH_COMPONENT .'/helpers/approved.php';
						//echo JHtml::_('approved.approved', $item->approval, $i, 'events.'); ?>
						<?php //echo JHtml::_('approved.approved', $item->approval, $i); ?>
						<?php //echo icHtmlHelper::approveEvent($item->approval, $i, 'events', $canChange, 'cb'); ?>
					</td>
				<?php endif; ?>

					<!-- Image Joomla -->
					<td class="small hidden-phone">
						<div style="background:#F4F4F4; padding:5px; width:120px; text-align:center; overflow:hidden;">
							<?php
							// Set if run iCthumb
							if (($item->image) && ($thumb_generator == 1))
							{
								// Get media path
								$params_media = JComponentHelper::getParams('com_media');
								$image_path = $params_media->get('image_path', 'images');

								// Paths to thumbs folder
								$thumbsPath 			= $image_path.'/icagenda/thumbs';

								// Large Size Options
								$l_thumbOptions		= $this->params->get('thumb_large');
								$l_width			= is_numeric($l_thumbOptions[0]) ? $l_thumbOptions[0] : '900';
								$l_height			= is_numeric($l_thumbOptions[1]) ? $l_thumbOptions[1] : '600';
								$l_quality			= is_numeric($l_thumbOptions[2]) ? $l_thumbOptions[2] : '100';
								$l_crop				= ! empty($l_thumbOptions[3]) ? true : false;

								// Medium Size Options
								$m_thumbOptions		= $this->params->get('thumb_medium');
								$m_width			= is_numeric($m_thumbOptions[0]) ? $l_thumbOptions[0] : '300';
								$m_height			= is_numeric($m_thumbOptions[1]) ? $l_thumbOptions[1] : '300';
								$m_quality			= is_numeric($m_thumbOptions[2]) ? $l_thumbOptions[2] : '100';
								$m_crop				= ! empty($m_thumbOptions[3]) ? true : false;

								// Small Size Options
								$s_thumbOptions		= $this->params->get('thumb_small');
								$s_width			= is_numeric($s_thumbOptions[0]) ? $s_thumbOptions[0] : '100';
								$s_height			= is_numeric($s_thumbOptions[1]) ? $s_thumbOptions[1] : '100';
								$s_quality			= is_numeric($s_thumbOptions[2]) ? $s_thumbOptions[2] : '100';
								$s_crop				= ! empty($s_thumbOptions[3]) ? true : false;

								// XSmall Size Options
								$xs_thumbOptions	= $this->params->get('thumb_xsmall');
								$xs_width			= is_numeric($xs_thumbOptions[0]) ? $xs_thumbOptions[0] : '48';
								$xs_height			= is_numeric($xs_thumbOptions[1]) ? $xs_thumbOptions[1] : '48';
								$xs_quality			= is_numeric($xs_thumbOptions[2]) ? $xs_thumbOptions[2] : '80';
								$xs_crop			= ! empty($xs_thumbOptions[3]) ? true : false;

								// Generate large thumb if not exist
								iCThumbGet::thumbnail($item->image, $thumbsPath, 'themes',
									$l_width, $l_height, $l_quality, $l_crop, 'ic_large', null, true);

								// Generate medium thumb if not exist
								iCThumbGet::thumbnail($item->image, $thumbsPath, 'themes',
									$m_width, $m_height, $m_quality, $m_crop, 'ic_medium');

								// Generate small thumb if not exist
								iCThumbGet::thumbnail($item->image, $thumbsPath, 'themes',
									$s_width, $s_height, $s_quality, $s_crop, 'ic_small');

								// Generate x-small thumb if not exist
								iCThumbGet::thumbnail($item->image, $thumbsPath, 'themes',
									$xs_width, $xs_height, $xs_quality, $xs_crop, 'ic_xsmall');

								// Sub-folder Destination ($thumbsPath / 'subfolder' /)
								$subFolder = 'system';

								// Display thumbnail in admin events list
								echo iCThumbGet::thumbnailImgTagLinkModal($item->image, $thumbsPath, $subFolder, '120', '100', '100', false);
							}
							elseif ($item->image
								&& $thumb_generator == 0)
							{
								if (filter_var($item->image, FILTER_VALIDATE_URL))
								{
									echo '<a href="' . $item->image . '" class="modal">';
									echo '<img src="' . $item->image . '" alt="" /></a>';
								}
								else
								{
									echo '<a href="../' . $item->image . '" class="modal">';
									echo '<img src="../' . $item->image . '" alt="" /></a>';
								}
							}
							else
							{
								echo '<img style="max-width:120px; max-height:100px;" src="../media/com_icagenda/images/nophoto.jpg" alt="" />';
							}
							// END iCthumb
							?>
						</div>
					</td>

					<!-- Title & Category -->
					<td class="has-context">
						<div class="pull-left">
							<?php if ($item->checked_out) : ?>
								<?php echo JHtml::_('jgrid.checkedout', $i, $item->editor, $item->checked_out_time, 'events.', $canCheckin); ?>
							<?php endif; ?>
							<?php if ($item->language == '*'):?>
								<?php $language = JText::alt('JALL', 'language'); ?>
							<?php else:?>
								<?php $language = $item->language ? $this->escape($item->language) : JText::_('JUNDEFINED'); ?>
							<?php endif;?>
							<?php if ($canEdit || $canEditOwn) : ?>
								<a href="<?php echo JRoute::_('index.php?option=com_icagenda&task=event.edit&id=' . $item->id); ?>" title="<?php echo JText::_('JACTION_EDIT'); ?>">
									<?php echo $this->escape($item->title); ?></a>
							<?php else : ?>
								<span title="<?php echo JText::sprintf('JFIELD_ALIAS_LABEL', $this->escape($item->alias)); ?>"><?php echo $this->escape($item->title); ?></span>
							<?php endif; ?>
							<div class="small">
								<?php echo JText::_('JCATEGORY') . ": " . $this->escape($item->category); ?>
							</div>
							<?php if (($item->place) OR ($item->city) OR ($item->country)) : ?>
							<p>
								<?php if ($item->place) : ?>
								<div class="small iC-italic-grey">
									<?php echo JText::_('COM_ICAGENDA_TITLE_LOCATION') . ": " . $this->escape($item->place); ?>
								</div>
								<?php endif; ?>
								<?php if ($item->city) : ?>
								<div class="small iC-italic-grey">
									<?php echo JText::_('COM_ICAGENDA_FORM_LBL_EVENT_CITY') . ": " . $this->escape($item->city); ?>
								</div>
								<?php endif; ?>
								<?php if ($item->country) : ?>
								<div class="small iC-italic-grey">
									<?php echo JText::_('COM_ICAGENDA_FORM_LBL_EVENT_COUNTRY') . ": " . $this->escape($item->country); ?>
								</div>
							</p>
							<?php endif; ?>
							<?php endif; ?>
							<?php if (!empty($item->site_itemid)) : ?>
							<a class="hasTooltip" href="<?php echo JURI::root() . 'index.php?option=com_icagenda&view=submit&Itemid=' . $item->site_itemid; ?>" title="<?php echo JText::_('COM_ICAGENDA_FORM_FRONTEND_SUBMIT_ITEMID_DESC'); ?>" target="_blank">
								<div class="btn btn-primary btn-mini">
									<?php echo JText::_('COM_ICAGENDA_FORM_FRONTEND_SUBMIT_ITEMID_LBL') . ": " . $this->escape($item->site_itemid); ?>
								</div>
							</a>
							<?php endif; ?>
						</div>

					<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>

						<!-- DropDown Edit Joomla 3 -->
						<div class="pull-left">
							<?php
							if ($canChange || $canEditOwn)
							{
								// Create dropdown items
								JHtml::_('dropdown.edit', $item->id, 'event.');
								JHtml::_('dropdown.divider');

								if ($item->state) :
									JHtml::_('dropdown.unpublish', 'cb' . $i, 'events.');
								else :
									JHtml::_('dropdown.publish', 'cb' . $i, 'events.');
								endif;

//								if ($item->featured) :
//									JHtml::_('dropdown.unfeatured', 'cb' . $i, 'events.');
//								else :
//									JHtml::_('dropdown.featured', 'cb' . $i, 'events.');
//								endif;

								JHtml::_('dropdown.divider');

								if ($archived) :
									JHtml::_('dropdown.unarchive', 'cb' . $i, 'events.');
								else :
									JHtml::_('dropdown.archive', 'cb' . $i, 'events.');
								endif;

								if ($item->checked_out) :
									JHtml::_('dropdown.checkin', 'cb' . $i, 'events.');
								endif;

								if ($trashed) :
									JHtml::_('dropdown.untrash', 'cb' . $i, 'events.');
								else :
									JHtml::_('dropdown.trash', 'cb' . $i, 'events.');
								endif;

								// Render dropdown list
								echo JHtml::_('dropdown.render');
							}
							?>
						</div>

					<?php endif; ?>

					</td>

					<!-- Dates -->
					<td class="small hidden-phone">
						<?php
						$date_format_global	= $this->params->get('date_format_global', 'Y - m - d');
						$separator			= $this->params->get('date_separator', ' ');
						$eventDate			= iCGlobalize::dateFormat($item->next, $date_format_global, $separator);
						$eventTime			= $item->displaytime ? ' - ' . JHtml::date($item->next, 'H:i', null) : '';
						$eventDate			= $eventDate ? $eventDate : date('Y-m-d', strtotime($item->next));
						$dateshow			= $eventDate . $eventTime;

						// Upcoming Next Date
						if (iCDate::isDate($item->next))
						{
							if ($nextdate > $today)
							{
								echo '<div class="ic-nextdate ic-upcoming">';
								echo JText::_('COM_ICAGENDA_EVENTS_NEXT_FUTUR') . '<br />';
								echo '<center>' . $dateshow . '</center>';
								echo '</div>';
							}
							// Next Date is today
							elseif ($nextdate == $today)
							{
								echo '<div class="ic-nextdate ic-today">';
								echo JText::_('COM_ICAGENDA_EVENTS_NEXT_TODAY') . '<br />';
								echo '<center>' . $dateshow . '</center>';
								echo '</div>';
							}
							elseif ($nextdate < $today)
							{
								echo '<div class="ic-nextdate ic-past">';
								echo JText::_('COM_ICAGENDA_EVENTS_NEXT_PAST') . '<br />';
								echo '<center>' . $dateshow . '</center>';
								echo '</div>';
							}
						}
						else
						{
							echo '<div class="ic-nextdate ic-no-date">';
							echo JText::_('COM_ICAGENDA_EVENTS_NEXT_ALERT');
							echo '</div>';
						}
						?>
					</td>


				<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>

					<!-- Ordering Joomla 2.5 -->
				<?php if (isset($this->items[0]->ordering)) : ?>
					<td class="order">
						<?php if ($canChange) : ?>
							<?php if ($saveOrder) :?>
								<?php if ($listDirn == 'asc') : ?>
									<span><?php echo $this->pagination->orderUpIcon($i, true, 'events.orderup', 'JLIB_HTML_MOVE_UP', $ordering); ?></span>
									<span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'events.orderdown', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span>
								<?php elseif ($listDirn == 'desc') : ?>
									<span><?php echo $this->pagination->orderUpIcon($i, true, 'events.orderdown', 'JLIB_HTML_MOVE_UP', $ordering); ?></span>
									<span><?php echo $this->pagination->orderDownIcon($i, $this->pagination->total, true, 'events.orderup', 'JLIB_HTML_MOVE_DOWN', $ordering); ?></span>
								<?php endif; ?>
							<?php endif; ?>
							<?php $disabled = $saveOrder ?  '' : 'disabled="disabled"'; ?>
							<input type="text" name="order[]" size="5" value="<?php echo $item->ordering;?>" <?php echo $disabled ?> class="text-area-order" />
						<?php else : ?>
							<?php echo $item->ordering; ?>
						<?php endif; ?>
					</td>
				<?php endif; ?>

				<?php endif; ?>

					<!-- Access -->
					<td class="small hidden-phone">
						<?php echo $this->escape($access_title); ?>
					</td>

					<!-- Username -->
					<td class="small hidden-phone">
						<?php
						if ($item->username == '' && ! $item->created_by)
						{
							$undefined = '<i>' . JText::_('JUNDEFINED') . '</i>';
							echo $undefined;
						}
						elseif ( ! $item->created_by || ! $item->author_name)
						{
							echo $this->escape($item->username);
						}
						else
						{
							echo $this->escape($item->author_name);
							echo ' [' . $this->escape($item->author_username) . ']';
						}
						?>
						<?php //echo JText::_('JGLOBAL_USERNAME').': '.$this->escape($username); ?>
						<?php if ($item->created_by_alias) : ?>
						<p class="smallsub">
							<?php echo JText::sprintf('JGLOBAL_LIST_ALIAS', $this->escape($item->created_by_alias)); ?>
						</p>
						<?php endif; ?>
					</td>

					<!-- Language -->
					<td class="small hidden-phone">
						<?php if ($item->language == '*'):?>
							<?php echo JText::alt('JALL', 'language'); ?>
						<?php else:?>
							<?php echo $item->language ? $this->escape($item->language) : JText::_('JUNDEFINED'); ?>
						<?php endif; ?>
					</td>

					<!-- ID -->
					<?php if (isset($this->items[0]->id)) : ?>
					<td class="center hidden-phone">
						<?php echo (int) $item->id; ?>
					</td>
					<?php endif; ?>

				</tr>
			<?php endforeach;

			// Old Joomla versions asset_id issue. (all Joomla 2.5.x versions, and Joomla 3 NOT updated!)
			$asset_issue = version_compare(JVERSION, '3.0', 'lt') ? true : false;

			if ($asset_issue)
			{
				$ia = '0';
				unset($msg);
				unset($type);
				$msg = $type = $front_submit = '';
				$edittx = '<b>' . JText::_( 'JACTION_EDIT' ) . '</b>';
				$savetx = '<b>' . JText::_( 'JSAVE' ) . '</b>';

				foreach ($this->items as $i => $item)
				{
					if (($item->asset_id == '0') && ($item->state == '-2'))
					{
						$ia = $ia+1;
						$front_submit = '1';
					}
				}

				if ($front_submit == 1 && $ia == 1)
				{
					$app->enqueueMessage(JText::sprintf( 'COM_ICAGENDA_TRASH_FRONTEND_SUBMITTED_1', $edittx, $savetx ), 'notice');
				}
				elseif ($front_submit == 1 && $ia > 1)
				{
					$app->enqueueMessage(JText::sprintf( 'COM_ICAGENDA_TRASH_FRONTEND_SUBMITTED', $edittx, $savetx ), 'notice');
				}

				foreach ($this->items as $i => $item)
				{
					if ($item->asset_id == '0' && $item->state == '-2')
					{
						$editLink = 'index.php?option=com_icagenda&task=event.edit&id=' . $item->id;
						$msg	= '- ' . $item->title . ' [' . $item->id . '] : <a href="' . $editLink . '"><b>'.JText::_( 'JACTION_EDIT' ).'</b></a>';
						$type	= JText::_( 'JGLOBAL_LIST' ).' :';
					}
					if ( ! empty($msg))
					{
						$app->enqueueMessage($msg, $type);
					}
				}
			}
			?>
			</tbody>
			<!-- END BODY -->

		</table>
		<div>
			<input type="hidden" name="task" value="" />
			<input type="hidden" name="boxchecked" value="0" />
			<input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" />
			<input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" />
			<?php echo JHtml::_('form.token'); ?>
		</div>
	</div>
</form>
views/events/tmpl/index.html000060400000000122152455705350012160 0ustar00<html><body>

<img src="thumb.php?src=nophoto.jpg&x=50&y=50&f=0">

</body></html>
views/events/index.html000060400000000032152455705350011204 0ustar00<html><body></body></html>views/icagenda/view.html.php000060400000007474152455705350012105 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-06-27
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );

// Access check.
if (JFactory::getUser()->authorise('core.admin', 'com_icagenda'))
{
	JToolBarHelper::preferences('com_icagenda');
}

/**
 * View class for a list of iCagenda.
 */
class iCagendaViewicagenda extends JViewLegacy
{
	/**
	 * Display the view
	 * @since	1.0
	 */
	public function display($tpl = null)
	{
		$document = JFactory::getDocument();

		// Joomla 2.5
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JHtml::stylesheet('com_icagenda/template.j25.css', false, true);
			JHtml::stylesheet('com_icagenda/icagenda-back.j25.css', false, true);

			JHTML::_('behavior.tooltip');
			JHTML::_('behavior.modal');
			$document->addScript( JURI::root( true ) . '/media/com_icagenda/js/template.js' );
			jimport( 'joomla.filesystem.path' );
		}
		// Joomla 3
		else
		{
 			JHtml::_('behavior.modal');
		}

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));
			return false;
		}

		$this->addToolbar();

		parent::display($tpl);
	}

	/**
	 * Add the page title and toolbar.
	 *
	 * @since	1.0
	 */
	protected function addToolbar()
	{
		require_once JPATH_COMPONENT . '/helpers/icagenda.php';

		$document	= JFactory::getDocument();
		$app		= JFactory::getApplication();

		$state	= $this->get('State');
		$canDo	= iCagendaHelper::getActions($state->get('filter.category_id'));

		//JToolBarHelper::title(JText::_('COM_ICAGENDA_TITLE_ICAGENDA_IMAGE'));
		// Set Title
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JToolBarHelper::title(JText::_('COM_ICAGENDA_TITLE_ICAGENDA_IMAGE'));
		}
		else
		{
			$logo_icagenda_url = '../media/com_icagenda/images/iconicagenda36.png';

			if (file_exists($logo_icagenda_url))
			{
				$logo_icagenda = '<img src="' . $logo_icagenda_url . '" height="36px" alt="iCagenda" />';
			}
			else
			{
				$logo_icagenda = 'iCagenda :: ' . JText::_('COM_ICAGENDA_TITLE_ICAGENDA') . '';
			}

			JToolBarHelper::title($logo_icagenda, 'icagenda');
		}

		$icTitle = JText::_('COM_ICAGENDA_TITLE_ICAGENDA');

		$sitename = $app->getCfg('sitename');
		$title = $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;
		$document->setTitle($title);
	}

	/**
	 * Save iCagenda Params
	 *
	 * Update Database
	 *
	 * @since   3.3.8
	 */
	public function saveDefault($var, $name, $value)
	{
		if ($var)
		{
			$params[$name] = $value;

			$this->updateParams( $params );
		}
	}

	/**
	 * Update iCagenda Params
	 *
	 * Update Database
	 *
	 * @since   3.3.8
	 */
	protected function updateParams($params_array)
	{
		// read the existing component value(s)
		$db = JFactory::getDbo();
		$db->setQuery('SELECT params FROM #__icagenda WHERE id = "3"');
		$params = json_decode( $db->loadResult(), true );

		// add the new variable(s) to the existing one(s)
		foreach ( $params_array as $name => $value )
		{
			$params[ (string) $name ] = $value;
		}

		// store the combined new and existing values back as a JSON string
		$paramsString = json_encode( $params );
		$db->setQuery('UPDATE #__icagenda SET params = ' .
		$db->quote( $paramsString ) . ' WHERE id = "3"' );
		$db->query();
	}
}
views/icagenda/index.html000060400000000032152455705350011433 0ustar00<html><body></body></html>views/icagenda/tmpl/default.php000060400000113412152455705350012556 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.10 2015-08-15
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

// Check Theme Packs Compatibility (to be changed to a little note button with modal)
//if (class_exists('icagendaTheme')) icagendaTheme::checkThemePacks();

$user		= JFactory::getUser();
$userId		= $user->get('id');

$params		= JComponentHelper::getParams( 'com_icagenda' );
$version	= $params->get('version');
$icsys		= $params->get('icsys');
$translator	= JText::_('COM_ICAGENDA_TRANSLATOR');

if (version_compare(phpversion(), '5.3.10', '<'))
{
	$JoomlaRecommended = '5.4 +';

	// Get Application
	$app = JFactory::getApplication();

	$icon_warning = (version_compare(JVERSION, '3.0', 'lt')) ? '' : '<span class="icon-warning"></span>';

	$php_warning_msg = '<strong> ' . JText::sprintf('COM_ICAGENDA_YOUR_PHP_VERSION_IS', phpversion()) . '</strong><br />';
	$php_warning_msg.= JText::sprintf('COM_ICAGENDA_PHP_VERSION_JOOMLA_RECOMMENDED', $JoomlaRecommended);
	$php_warning_msg.= ' ( ' . JText::_('IC_READMORE') . ': ';
	$php_warning_msg.= '<a href="http://www.joomla.org/technical-requirements.html"';
	$php_warning_msg.= ' target="_blank">http://www.joomla.org/technical-requirements.html</a> )<br />';
	$php_warning_msg.= JText::_('COM_ICAGENDA_PHP_VERSION_ICAGENDA_RECOMMENDATION');

	$app->enqueueMessage( $icon_warning . $php_warning_msg, 'error' );
}
?>
<div id="j-main-container">
	<?php JHtml::_('behavior.modal'); ?>
	<!-- Start Content -->
	<div class="row-fluid icpanel">
		<div class="span12">
			<div class="row-fluid">
				<div class="span6">
					<div class="row-fluid">
						<?php if ( $user->authorise('icagenda.access.categories', 'com_icagenda') ) : ?>
						<div class="span6" style="text-align: center">
							<table>
								<tbody>
									<tr>
										<td colspan="2">
											<h3><?php echo JText::_('COM_ICAGENDA_TITLE_CATEGORIES'); ?></h3>
										</td>
									</tr>
									<tr>
										<td>
											<div class="icon right">
												<a href="index.php?option=com_icagenda&view=categories">
													<?php if ($user->authorise('icagenda.access.categories', 'com_icagenda')) : ?>
														<img alt=""
															src="../media/com_icagenda/images/all_cats-48.png">
														<span class="iconText">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_CATEGORY' ); ?>
														</span>
													<?php else : ?>
														<img alt="<?php echo JText::_( 'JERROR_ALERTNOAUTHOR' ); ?>"
															src="../media/com_icagenda/images/panel_denied/all_cats-48.png">
														<span class="iconText denied">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_CATEGORY' ); ?>
														</span>
													<?php endif; ?>
												</a>
											</div>
										</td>
										<td>
											<div class="icon left">
												<a href="index.php?option=com_icagenda&view=category&layout=edit">
													<?php if ($user->authorise('icagenda.access.categories', 'com_icagenda')) : ?>
														<img alt=""
															src="../media/com_icagenda/images/new_cat-48.png">
														<span class="iconText">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_NEW_CATEGORY' ); ?>
														</span>
													<?php else : ?>
														<img alt="<?php echo JText::_( 'JERROR_ALERTNOAUTHOR' ); ?>"
															src="../media/com_icagenda/images/panel_denied/new_cat-48.png">
														<span class="iconText denied">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_NEW_CATEGORY' ); ?>
														</span>
													<?php endif; ?>
												</a>
											</div>
										</td>
									</tr>
								</tbody>
							</table>
						</div>
						<?php endif; ?>
						<?php if ( $user->authorise('icagenda.access.events', 'com_icagenda') ) : ?>
						<div class="span6" style="text-align: center">
				    		<table>
				    			<tbody>
				    				<tr>
				    					<td colspan="2">
											<h3><?php echo JText::_('COM_ICAGENDA_TITLE_EVENTS'); ?></h3>
										</td>
									</tr>
				    				<tr>
	 				   					<td>
											<div class="icon right">
												<a href="index.php?option=com_icagenda&view=events">
													<?php if ($user->authorise('icagenda.access.events', 'com_icagenda')) : ?>
														<img alt=""
															src="../media/com_icagenda/images/all_events-48.png">
														<span class="iconText">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_EVENTS' ); ?>
														</span>
													<?php else : ?>
														<img alt="<?php echo JText::_( 'JERROR_ALERTNOAUTHOR' ); ?>"
															src="../media/com_icagenda/images/panel_denied/all_events-48.png">
														<span class="iconText denied">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_EVENTS' ); ?>
														</span>
													<?php endif; ?>
												</a>
											</div>
										</td>
	 				   					<td>
											<div class="icon left">
												<a href="index.php?option=com_icagenda&view=event&layout=edit">
													<?php if ($user->authorise('icagenda.access.events', 'com_icagenda')) : ?>
														<img alt=""
															src="../media/com_icagenda/images/new_event-48.png">
														<span class="iconText">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_NEW_EVENT' ); ?>
														</span>
													<?php else : ?>
														<img alt="<?php echo JText::_( 'JERROR_ALERTNOAUTHOR' ); ?>"
															src="../media/com_icagenda/images/panel_denied/new_event-48.png">
														<span class="iconText denied">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_NEW_EVENT' ); ?>
														</span>
													<?php endif; ?>
												</a>
											</div>
										</td>
									</tr>
								</tbody>
							</table>
						</div>
						<?php endif; ?>
					</div>

					<div class="row-fluid">
						<?php if ( $user->authorise('icagenda.access.registrations', 'com_icagenda')
								|| $user->authorise('icagenda.access.newsletter', 'com_icagenda') ) : ?>
						<div class="span6" style="text-align: center">
			    			<table>
					    		<tbody>
				    				<tr>
				    					<td colspan="2">
											<h3><?php echo JText::_('COM_ICAGENDA_TITLE_REGISTRATION'); ?></h3>
										</td>
									</tr>
				    				<tr>
	 				   					<td>
											<div class="icon right">
												<a href="index.php?option=com_icagenda&view=registrations">
													<?php if ($user->authorise('icagenda.access.registrations', 'com_icagenda')) : ?>
														<img alt=""
															src="../media/com_icagenda/images/registration-48.png">
														<span class="iconText">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_REGISTRATION' ); ?>
														</span>
													<?php else : ?>
														<img alt="<?php echo JText::_( 'JERROR_ALERTNOAUTHOR' ); ?>"
															src="../media/com_icagenda/images/panel_denied/registration-48.png">
														<span class="iconText denied">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_REGISTRATION' ); ?>
														</span>
													<?php endif; ?>
												</a>
											</div>
										</td>
	 				   					<td>
											<div class="icon left">
												<a href="index.php?option=com_icagenda&view=mail&layout=edit">
													<?php if ($user->authorise('icagenda.access.newsletter', 'com_icagenda')) : ?>
														<img alt=""
															src="../media/com_icagenda/images/newsletter-48.png">
														<span class="iconText">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_NEWSLETTER' ); ?>
														</span>
													<?php else : ?>
														<img alt="<?php echo JText::_( 'JERROR_ALERTNOAUTHOR' ); ?>"
															src="../media/com_icagenda/images/panel_denied/newsletter-48.png">
														<span class="iconText denied">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_NEWSLETTER' ); ?>
														</span>
													<?php endif; ?>
												</a>
											</div>
										</td>
									</tr>
								</tbody>
							</table>
						</div>
						<?php endif; ?>
						<?php if ( $user->authorise('icagenda.access.customfields', 'com_icagenda')
								|| $user->authorise('icagenda.access.features', 'com_icagenda') ) : ?>
						<div class="span6" style="text-align: center">
				    		<table>
				    			<tbody>
				    				<tr>
				    					<td colspan="2">
											<h3><?php echo JText::_('COM_ICAGENDA_ADDITIONALS_LABEL'); ?></h3>
										</td>
									</tr>
				    				<tr>
	 				   					<td>
											<div class="icon right">
												<a href="index.php?option=com_icagenda&view=customfields">
													<?php if ($user->authorise('icagenda.access.customfields', 'com_icagenda')) : ?>
														<img alt=""
															src="../media/com_icagenda/images/customfields-48.png" />
														<span class="iconText">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_CUSTOMFIELDS' ); ?>
														</span>
													<?php else : ?>
														<img alt="<?php echo JText::_( 'JERROR_ALERTNOAUTHOR' ); ?>"
															src="../media/com_icagenda/images/panel_denied/customfields-48.png" />
														<span class="iconText denied">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_CUSTOMFIELDS' ); ?>
														</span>
													<?php endif; ?>
												</a>
											</div>
										</td>
	 				   					<td>
											<div class="icon left">
												<a href="index.php?option=com_icagenda&view=features">
													<?php if ($user->authorise('icagenda.access.features', 'com_icagenda')) : ?>
														<img alt=""
															src="../media/com_icagenda/images/features-48.png">
														<span class="iconText">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_FEATURES' ); ?>
														</span>
													<?php else : ?>
														<img alt="<?php echo JText::_( 'JERROR_ALERTNOAUTHOR' ); ?>"
															src="../media/com_icagenda/images/panel_denied/features-48.png">
														<span class="iconText denied">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_FEATURES' ); ?>
														</span>
													<?php endif; ?>
												</a>
											</div>
										</td>
									</tr>
								</tbody>
							</table>
						</div>
						<?php endif; ?>
					</div>

					<div class="row-fluid">
						<?php if ( $user->authorise('core.admin', 'com_icagenda')
								|| $user->authorise('icagenda.access.themes', 'com_icagenda') ) : ?>
						<div class="span6" style="text-align: center">
			    			<table>
					    		<tbody>
				    				<tr>
				    					<td colspan="2">
											<h3><?php echo JText::_('COM_ICAGENDA_GLOBAL_PARAMS_LABEL'); ?></h3>
										</td>
									</tr>
				    				<tr>
	 				   					<td>
											<div class="icon right">
												<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
													<a href="index.php?option=com_config&view=component&component=com_icagenda&path=&return=<?php echo base64_encode(JURI::getInstance()->toString()) ?>">
												<?php else : ?>
													<a href="index.php?option=com_config&view=component&component=com_icagenda&path=&tmpl=component"
														class="modal"
														rel="{handler: 'iframe', size: {x: 870, y: 550}}">
												<?php endif; ?>
													<?php if ($user->authorise('core.admin', 'com_icagenda')) : ?>
														<img alt=""
															src="../media/com_icagenda/images/global_options-48.png">
														<span class="iconText">
															<?php echo JText::_( 'JTOOLBAR_OPTIONS' ); ?>
														</span>
													<?php else : ?>
														<img alt="<?php echo JText::_( 'JERROR_ALERTNOAUTHOR' ); ?>"
															src="../media/com_icagenda/images/panel_denied/global_options-48.png">
														<span class="iconText denied">
															<?php echo JText::_( 'JTOOLBAR_OPTIONS' ); ?>
														</span>
													<?php endif; ?>
												</a>
											</div>
										</td>
	 				   					<td>
											<div class="icon left">
												<a href="index.php?option=com_icagenda&view=themes">
													<?php if ($user->authorise('icagenda.access.themes', 'com_icagenda')) : ?>
														<img alt=""
															src="../media/com_icagenda/images/themes-48.png">
														<span class="iconText">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_THEMES' ); ?>
														</span>
													<?php else : ?>
														<img alt="<?php echo JText::_( 'JERROR_ALERTNOAUTHOR' ); ?>"
															src="../media/com_icagenda/images/panel_denied/themes-48.png">
														<span class="iconText denied">
															<?php echo JText::_( 'COM_ICAGENDA_PANEL_THEMES' ); ?>
														</span>
													<?php endif; ?>
												</a>
											</div>
										</td>
									</tr>
								</tbody>
							</table>
						</div>
						<?php endif; ?>
						<?php if ( $user->authorise('core.admin', 'com_icagenda') ) : ?>
						<div class="span6" style="text-align: center">
			    			<table>
					    		<tbody>
				    				<tr>
				    					<td colspan="2">
											<h3><?php echo JText::_('COM_ICAGENDA_PANEL_UPDATE_AND_INFOS'); ?></h3>
										</td>
									</tr>
				    				<tr>
	 				   					<td>
											<div class="icon right">
												<a href="index.php?option=com_icagenda&view=info">
													<img src="../media/com_icagenda/images/info-48.png">
													<span class="iconText"><?php echo JText::_( 'COM_ICAGENDA_INFO' ); ?></span>
												</a>
											</div>
										</td>
	 				   					<td class="left">
											<?php echo LiveUpdate::getIcon(); ?>
										</td>
									</tr>
								</tbody>
							</table>
						</div>
						<?php endif; ?>
					</div>

					<?php if ($icsys == 'core') : ?>
					<div class="row-fluid">

						<div class="span12">
							<div class="alert alert-block alert-info">
							<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
								<button type="button" class="close" data-dismiss="alert">×</button>
							<?php endif; ?>
								<p>&nbsp;</p>
								<div style="font-weight: bold; color: #555555;">
									<p>
										<?php echo JText::_('COM_ICAGENDA_PANEL_FREE_VERSION') ?><br/>
										<?php echo JText::_('COM_ICAGENDA_PANEL_PRO_VERSION') ?>:
										<?php echo JText::_('COM_ICAGENDA_PANEL_PRO_MODULE_IC_EVENT_LIST') ?>
									</p>
								</div>
								<div style="display:none;">
									<div id="loadDiv" style="background-color:#F4F4F4;">
										<table style="width:600px; height:350px;" cellpadding="0" cellspacing="0">
											<tbody>
												<tr>
													<td style="text-align: center; height:140px;" rowspan="1" colspan="3">
														&nbsp;&nbsp;&nbsp;<img src="../media/com_icagenda/images/iconicagenda48.png" alt="" />
													</td>
												</tr>
												<tr>
													<td style="text-align: right; width: 280px; height:60px;">
														<form action="https://secure.shareit.com/shareit/checkout.html?PRODUCT[300582128]=1&stylefrom=300582128" method="post" target="_blank">
															<input type="submit" class="btn" width="120px" value="<?php echo JText::_( 'COM_ICAGENDA_PURCHASE_1_YEAR' ); ?>" />
														</form>
													</td>
													<td style="width: 40px; height:60px;">
													</td>
													<td style="width: 280px; height:60px;">
														<form action="https://secure.shareit.com/shareit/checkout.html?PRODUCT[300579672]=1&stylefrom=300579672" method="post" target="_blank">
															<input type="submit" class="btn" value="<?php echo JText::_( 'COM_ICAGENDA_PURCHASE_UNLIMITED' ); ?>" />
														</form>
													</td>
												</tr>
												<tr>
													<td style="text-align: center; height:50px;" colspan="3">
														<a href="http://www.joomlic.com/extensions/icagenda" alt ="<?php echo JText::_( 'COM_ICAGENDA_INFO' ); ?>" target="_blank"><?php echo JText::_( 'COM_ICAGENDA_VERSIONS_COMPARISON' ); ?></a>
													</td>
												</tr>
												<tr>
													<td style="text-align: center;" rowspan="1" colspan="3">
														<div>
															<p>
																<img src="../media/com_icagenda/images/payment/icon_cca.gif" alt="" border="0"/>
																<img src="../media/com_icagenda/images/payment/icon_pal.gif" alt="" border="0"/>
																<img src="../media/com_icagenda/images/payment/icon_wtr.gif" alt="" border="0"/>
																<img src="../media/com_icagenda/images/payment/icon_chk.gif" alt="" border="0"/>
															</p>
														</div>
														<div>
															<img src="../media/com_icagenda/images/payment/shareit_ani.gif" alt="" border="0"/>
														</div>
													</td>
												</tr>
											</tbody>
										</table>
									</div>
								</div>

								<p>
									&nbsp;
								</p>
								<div>
									<p style="text-align: center;">
										<a href="#loadDiv" class="modal" rel="{size: {x: 600, y: 350}}">
											<input type="submit" class="btn" value="<?php echo JText::_( 'COM_ICAGENDA_PURCHASE' ); ?>" />
										</a>
										<!--a href="http://www.joomlic.com/extensions/icagenda" alt ="<?php echo JText::_( 'COM_ICAGENDA_INFO' ); ?>" target="_blank">
											<?php echo JText::_( 'COM_ICAGENDA_INFO' ); ?>
										</a-->
									</p>
									<p style="text-align: center; font-size:11px;">
										<a href="http://www.joomlic.com/extensions/icagenda" alt ="<?php echo JText::_( 'COM_ICAGENDA_INFO' ); ?>" target="_blank"><?php echo JText::_( 'COM_ICAGENDA_VERSIONS_COMPARISON' ); ?></a>
									</p>
								</div>

							</div>

						</div><!--end span12-->

					</div><!--end row-->
					<?php endif; ?>

				</div><!--end span 6-->
				<div class="span1">
				</div><!--end span 1-->
				<div class="span5">
					<div class="span12">

						<?php
						$db = JFactory::getDbo();
						$query	= $db->getQuery(true);
						//$query->select('version AS icv, releasedate AS icd')->from('#__icagenda')->where('id = 1');
						//$query->select('version AS icv, releasedate AS icd')->from('#__icagenda')->where('id = 2');
						$query->select('version AS icv, releasedate AS icd, params AS icp')->from('#__icagenda')->where('id = 3');
						$db->setQuery($query);
						$release	= $db->loadObject()->icv;
						$date		= $db->loadObject()->icd;
						$icp		= json_decode( $db->loadObject()->icp, true );

						if ($icsys == 'pro')
						{
							$app = JFactory::getApplication();
							$welcome_pro =  $app->input->get('welcome', '');

							// Get Current URL
							$thisURL = JURI::getInstance()->toString();

							$return_cp = 'index.php?option=com_icagenda';

							if ($welcome_pro == -1)
							{
								$this->saveDefault($welcome_pro, 'msg_procp', '-1');
								$app->enqueueMessage(JText::_('COM_ICAGENDA_WELCOME_HIDE_SUCCESS'), 'message');
								$app->redirect($return_cp);
							}
							elseif ($welcome_pro == 1)
							{
								$this->saveDefault($welcome_pro, 'msg_procp', '1');
//								$app->enqueueMessage(JText::_('COM_ICAGENDA_WELCOME_SHOW_SUCCESS'), 'message');
								$app->redirect($return_cp);
							}

							$options_link = version_compare(JVERSION, '3.0', 'ge')
											? ' : <a href="index.php?option=com_config&view=component&component=com_icagenda&path=&return='
												.  base64_encode(JURI::getInstance()->toString()) . '#pro">'
												. JText::_('JTOOLBAR_OPTIONS') . '</a>'
											: '.';
							?>
							<?php if ($icp['msg_procp'] == -1) : ?>
								<a class="hasTooltip" href="<?php echo JRoute::_($thisURL.'&welcome=1') ?>" data-original-title="Clear" data-toggle="tooltip" title="<?php echo JText::_('COM_ICAGENDA_WELCOME_RELOAD_DESC') ?>">
									<div class="btn btn-mini"><?php echo JText::_('COM_ICAGENDA_WELCOME_RELOAD'); ?></div>
								</a>
							<?php else : ?>
							<?php
			$app->enqueueMessage('<h2>' . JText::sprintf('COM_ICAGENDA_PRO_WELCOME', 'iCagenda PRO') . '</h2>'
								. '<p>' . JText::sprintf('COM_ICAGENDA_PRO_WELCOME_PRO_ACCOUNT_INFO', 'iCagenda PRO', '<a href="http://pro.joomlic.com" target="_blank">pro.joomlic.com</a>') . '</p>'
								. '<p>' . JText::sprintf('COM_ICAGENDA_PRO_WELCOME_PRO_NOTIFICATION_EMAILS', 'info(at)joomlic.com') . '</p>'
								. '<p>' . JText::sprintf('COM_ICAGENDA_PRO_WELCOME_PRO_NOTIFICATION_EMAILS_FIRST', 'Pro JoomliC') . '<br />'
								. JText::_('COM_ICAGENDA_PRO_WELCOME_PRO_NOTIFICATION_EMAILS_SECOND') . '<br />'
								. JText::_('COM_ICAGENDA_PRO_WELCOME_PRO_CHECK_YOUR_EMAIL') . '</p>'
								. '<p>' . JText::sprintf('COM_ICAGENDA_PRO_WELCOME_PRO_FIRST_LOGIN_1', '<a href="http://pro.joomlic.com" target="_blank">pro.joomlic.com</a>') . '<br />'
								. JText::sprintf('COM_ICAGENDA_PRO_WELCOME_PRO_FIRST_LOGIN_2', '<a href="http://pro.joomlic.com" target="_blank">pro.joomlic.com</a>') . '<br />'
								. JText::sprintf('COM_ICAGENDA_PRO_WELCOME_PRO_OPTIONS', $options_link) . '</p>'
								. '<p>' . JText::sprintf('COM_ICAGENDA_PRO_WELCOME_PRO_ID_1', 'iCagenda PRO') . '</p>'
								. '<p>' . JText::_('COM_ICAGENDA_PRO_WELCOME_CONTACT') . '<br />'
								. JText::sprintf('COM_ICAGENDA_PRO_WELCOME_SUPPORT', '<a href="http://pro.joomlic.com/support" target="_blank">Pro Ticket System</a>') . '</p>'
								. '<p><small><strong>' . JText::_('COM_ICAGENDA_PRO_WELCOME_NOTE') . '</strong></small></p>'
								. '<div style="text-align:center">'
								. '<a class="hasTooltip" href="' . JRoute::_($thisURL.'&welcome=-1') . '" data-original-title="Clear" data-toggle="tooltip" title="' . JText::_('COM_ICAGENDA_WELCOME_SHOW_SUCCESS_DESC') . '">'
								. '<div class="btn btn-inverse btn-small">' . JText::_('IC_HIDE_THIS_MESSAGE') . '</div>'
								. '</a>'
								. '</div>'
								, 'message');
								?>
							<?php endif; ?>
						<?php } ?>

						<div style="float:right; padding:0px 0px 0px 20px;">
							<img src="../media/com_icagenda/images/logo_icagenda.png" alt="logo_icagenda" />
						</div>
						<div>
							<h2 style="font-size:2em;">
								<b style="color:#cc0000;">iC</b><b style="color: #666666;">agenda<sup style="font-size:0.6em">&trade;</sup></b><?php echo $version;?>
							</h2>
						</div>
						<div>
							<h4>
								<?php echo JText::_('COM_ICAGENDA_COMPONENT_DESC') ?>
							</h4>
						</div>

						<div class="small">
							<?php echo JText::_('COM_ICAGENDA_FEATURES_BACKEND') ?><br />
							<?php echo JText::_('COM_ICAGENDA_FEATURES_FRONTEND') ?>
						</div>

						<div>&nbsp;</div>

						<div style="font-size:0.9em" class="blockbtn">
							<?php echo JText::_('COM_ICAGENDA_PANEL_VERSION');?>:&nbsp;<b><?php echo $release ;?></b> | <?php echo JText::_('COM_ICAGENDA_PANEL_DATE');?>:&nbsp;<b><?php echo $date ;?></b>&nbsp;&nbsp;

							<?php JHtml::_('behavior.modal'); ?>
							<div style="display:none;">
								<div id="icagenda-changelog">
									<?php
										require_once dirname(__FILE__).'/color.php';
										echo iCagendaUpdateLogsColoriser::colorise(JPATH_COMPONENT_ADMINISTRATOR.'/CHANGELOG.php');
									?>
								</div>
							</div>
							<a href="#icagenda-changelog" class="btn modal"><?php echo JText::_('COM_ICAGENDA_PANEL_UPDATE_LOGS') ?></a>
							<?php //  rel="{size: {x: 800, y: 350}}" ?>
						</div>

						<br/>
						<?php
							$urlposter = '../media/com_icagenda/images/video_poster_icagenda.jpg';
						?>

						<div>&nbsp;</div>
						<div>&nbsp;</div>

						<div onclick="thevid=document.getElementById('thevideo'); thevid.style.display='block'; this.style.display='none'">
							<img style="cursor: pointer;" src="<?php echo $urlposter; ?>" alt="" width="100%" />
						</div>

						<div id="thevideo" style="display: none;">
							<?php
								jimport('joomla.application.component.helper'); // Import component helper library
								$icagendaParams = JComponentHelper::getParams('com_icagenda');
								$icfolder = $icagendaParams->get('icsys');
							?>
							<iframe src="http://www.joomlic.com/_icagenda/<?php echo $icfolder; ?>/tutorial_video_cp.html" frameborder="0" width="100%" height="340" scrolling="no"></iframe>
						</div>

						<div style="color:#333; margin-top: 5px; font-size: 0.8em;">
							© <?php echo date("Y"); ?> <?php echo JText::_('COM_ICAGENDA_VIDEO_TUTORIALS');?> - Giuseppe Bosco (giusebos) | <a href="http://www.newideasproject.com/" target="_blank">www.newideasproject.com</a>
						</div>

						<div style="color:#333; margin-top: 5px; font-size: 0.8em; line-height:14px; height:30px;">
							<a href="http://www.youtube.com/user/iCagenda" target="_blank"><img src="../media/com_icagenda/images/youtube_iCagenda.png" alt="" style="vertical-align:bottom;" /></a> : <a href="http://www.youtube.com/user/iCagenda" target="_blank"><?php echo JText::_('COM_ICAGENDA_VIDEO_TUTORIALS');?></a>
						</div>

						<div>&nbsp;</div>
					</div>
				</div>
			</div>
		</div>
	</div>

	<div class="row-fluid">
		<div class="span12">
			<div class="row-fluid">
				<div class="span12">
					<h3>40&nbsp;<?php echo JText::_('COM_ICAGENDA_PANEL_TRANSLATION_PACKS');?></h3>
					<p>
						<?php
							if(version_compare(JVERSION, '3.0', 'lt')) {
								$iCtag = '::';
							} else {
								$iCtag = '<br>';
							}
						?>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Arabic (Unitag)
							<?php echo $iCtag;?><?php echo $translator;?>: haneen2013, fkinanah " >
							<img src="../media/mod_languages/images/ar.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Basque (Spain)
							<?php echo $iCtag;?><?php echo $translator;?>: Bizkaitarra " >
							<img src="../media/mod_languages/images/eu_es.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Bulgarian (Bulgaria)
							<?php echo $iCtag;?><?php echo $translator;?>: bimbongr " >
							<img src="../media/mod_languages/images/bg.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Catalan (Spain)
							<?php echo $iCtag;?><?php echo $translator;?>: Mussool, Figuerolero, riquib " >
							<img src="../media/mod_languages/images/ca.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Chinese (China)
							<?php echo $iCtag;?><?php echo $translator;?>: Foxyman " >
							<img src="../media/mod_languages/images/zh.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Chinese (Taiwan)
							<?php echo $iCtag;?><?php echo $translator;?>: jedi, hkce, rowdytang " >
							<img src="../media/mod_languages/images/tw.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Croatian (Croatia)
							<?php echo $iCtag;?><?php echo $translator;?>: Davor Čolić, komir " >
							<img src="../media/mod_languages/images/hr.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Czech (Czech Republic)
							<?php echo $iCtag;?><?php echo $translator;?>: Bong " >
							<img src="../media/mod_languages/images/cz.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Danish (Denmark)
							<?php echo $iCtag;?><?php echo $translator;?>: olewolf.dk, hvitnov, torbenspetersen, poulfrom, AhmadHamid " >
							<img src="../media/mod_languages/images/dk.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Dutch (Netherlands)
							<?php echo $iCtag;?><?php echo $translator;?>: Molenwal1, AnneM, Mario Guagliardo, wfvdijk, Walldorff " >
							<img src="../media/mod_languages/images/nl.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" English (United Kingdom)
							<?php echo $iCtag;?><?php echo $translator;?>: Lyr!C " >
							<img src="../media/mod_languages/images/en.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" English (United States)
							<?php echo $iCtag;?><?php echo $translator;?>: Lyr!C " >
							<img src="../media/mod_languages/images/us.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Esperanto
							<?php echo $iCtag;?><?php echo $translator;?>: Anita_Dagmarsdotter, Amema " >
							<img src="../media/mod_languages/images/eo.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Estonian (Estonia)
							<?php echo $iCtag;?><?php echo $translator;?>: Eraser, Reijo " >
							<img src="../media/mod_languages/images/et.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Finnish (Finland)
							<?php echo $iCtag;?><?php echo $translator;?>: Kai Metsävainio " >
							<img src="../media/mod_languages/images/fi.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" French (France)
							<?php echo $iCtag;?><?php echo $translator;?>: Lyr!C " >
							<img src="../media/mod_languages/images/fr.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" German (Germany)
							<?php echo $iCtag;?><?php echo $translator;?>: grisuu, mPino, Wasilis, bmbsbr, chuerner, Proton_11, keraM " >
							<img src="../media/mod_languages/images/de.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Greek (Greece)
							<?php echo $iCtag;?><?php echo $translator;?>: E.Gkana-D.Kontogeorgis (elinag), rinenweb, kost36, mbini, Wasilis " >
							<img src="../media/mod_languages/images/el.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Hungarian (Hungary)
							<?php echo $iCtag;?><?php echo $translator;?>: Halilaci, magicf, Cerbo, mester93 " >
							<img src="../media/mod_languages/images/it.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Italian (Italy)
							<?php echo $iCtag;?><?php echo $translator;?>: Giuseppe Bosco (giusebos) " >
							<img src="../media/mod_languages/images/it.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Japanese (Japan)
							<?php echo $iCtag;?><?php echo $translator;?>: nagata, taimai908 " >
							<img src="../media/mod_languages/images/ja.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Latvian (Latvia)
							<?php echo $iCtag;?><?php echo $translator;?>: kredo9 " >
							<img src="../media/mod_languages/images/lv.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Lithuanian (Lithuania)
							<?php echo $iCtag;?><?php echo $translator;?>: ahxoohx " >
							<img src="../media/mod_languages/images/lt.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Luxembourgish (Luxembourg)
							<?php echo $iCtag;?><?php echo $translator;?>: Superjhemp " >
							<img src="../media/mod_languages/images/icon-16-language.png" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Macedonian (Macedonia)
							<?php echo $iCtag;?><?php echo $translator;?>: Strumjan (Ilija Iliev) " >
							<img src="../media/mod_languages/images/mk.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Norwegian Bokmål (Norway)
							<?php echo $iCtag;?><?php echo $translator;?>: Rikard Tømte Reitan " >
							<img src="../media/mod_languages/images/no.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Persian (Iran)
							<?php echo $iCtag;?><?php echo $translator;?>: Arash Rezvani (al3n.nvy) " >
							<img src="../media/mod_languages/images/fa_ir.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Polish (Poland)
							<?php echo $iCtag;?><?php echo $translator;?>: mbsrz, KISweb, gienio22, traktor, niewidzialny " >
							<img src="../media/mod_languages/images/pl.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Portuguese (Brazil)
							<?php echo $iCtag;?><?php echo $translator;?>: Carosouza, alxaraujo " >
							<img src="../media/mod_languages/images/pt_br.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Portuguese (Portugal)
							<?php echo $iCtag;?><?php echo $translator;?>: LFGM, macedorl, horus68, helfer " >
							<img src="../media/mod_languages/images/pt.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Romanian (Romania)
							<?php echo $iCtag;?><?php echo $translator;?>: hat, mester93 " >
							<img src="../media/mod_languages/images/ro.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Russian (Russia)
							<?php echo $iCtag;?><?php echo $translator;?>: nshash, MSV " >
							<img src="../media/mod_languages/images/ru.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Serbian (latin)
							<?php echo $iCtag;?><?php echo $translator;?>: Nenad Mihajlović " >
							<img src="../media/mod_languages/images/sr.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Slovak (Slovakia)
							<?php echo $iCtag;?><?php echo $translator;?>: ischindl, J.Ribarszki " >
							<img src="../media/mod_languages/images/sk.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Slovenian (Slovenia)
							<?php echo $iCtag;?><?php echo $translator;?>: erbi (Ervin Bizjak) " >
							<img src="../media/mod_languages/images/sl.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Spanish (Spain)
							<?php echo $iCtag;?><?php echo $translator;?>: elerizo, mPino, albertodg, adolf64, Goncatín, virem1, leoxordonez, claugardia, sterroso " >
							<img src="../media/mod_languages/images/es.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Swedish (Sweden)
							<?php echo $iCtag;?><?php echo $translator;?>: Rickard Norberg (metska), Amema, kricke " >
							<img src="../media/mod_languages/images/sv.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Thai (Thailand)
							<?php echo $iCtag;?><?php echo $translator;?>: rattanachai.ha " >
							<img src="../media/mod_languages/images/th.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Turkish (Turkey)
							<?php echo $iCtag;?><?php echo $translator;?>: harikalarkutusu, farukzeynep, kemalokmen " >
							<img src="../media/mod_languages/images/tr.gif" border="0" alt="Tooltip"/>
						</span>
						<span rel="tooltip" data-placement="right" class="editlinktip hasTip" title=" Ukrainian (Ukraine)
							<?php echo $iCtag;?><?php echo $translator;?>: Vlad Shuh (slv54) " >
							<img src="../media/mod_languages/images/uk.gif" border="0" alt="Tooltip"/>
						</span>
					</p>
				</div>
			</div>
		</div>
	</div>

	<div class="row-fluid">
		<div class="span12">
			<table style="width: 100%; border: 0px;">
				<tbody>
					<tr>
						<td>
							<a href="http://icagenda.joomlic.com/resources/translations" target="_blank" class="btn">
								<?php echo JText::_('COM_ICAGENDA_PANEL_TRANSLATION_PACKS_DONWLOAD');?>
							</a>
						</td>
						<td style="text-align:right; vertical-align: bottom;">
							<a href='http://www.joomlic.com/forum/icagenda'  target="_blank" class="btn">
								<?php echo JText::_('COM_ICAGENDA_PANEL_HELP_FORUM'); ?>
							</a>
						</td>
					</tr>
				</tbody>
			</table>
		</div>
	</div>

	<hr>

	<div class="row-fluid">
		<div class="span12">
			<div class="row-fluid">
				<div class="span9">
					Copyright ©2012-<?php echo date("Y"); ?> joomlic.com -&nbsp;
					<?php echo JText::_('COM_ICAGENDA_PANEL_COPYRIGHT');?>&nbsp;<a href="http://extensions.joomla.org/extensions/calendars-a-events/events/events-management/22013" target="_blank">Joomla! Extensions Directory</a>.
					<br />
					<br />
				</div>
				<div class="span3" style="text-align: right">
					<a href='http://www.joomlic.com' target='_blank'>
						<img src="../media/com_icagenda/images/logo_joomlic.png" alt="" border="0"/>
					</a>
					<br />
					<i><b><?php echo JText::_('COM_ICAGENDA_PANEL_SITE_VISIT');?>&nbsp;<a href='http://www.joomlic.com' target='_blank'>www.joomlic.com</a></b></i>
				</div>
			</div>
		</div>
	</div>
</div>
views/icagenda/tmpl/index.html000060400000000032152455705350012407 0ustar00<html><body></body></html>views/icagenda/tmpl/color.php000060400000006220152455705350012246 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.3.8 2014-07-04
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();


class iCagendaUpdateLogsColoriser
{
	public static function colorise($file, $onlyLast = false)
	{
		$ret = '';

		$lines = @file($file);

		if(empty($lines)) return $ret;

		array_shift($lines);

		foreach($lines as $line)
		{
			$line = trim($line);

			if(empty($line)) continue;

			$type = substr($line,0,1);

			switch($type)
			{
				case '=':
					continue;
					break;

				case ':':
					$ret .= "\t".'<div style="font-size:8pt;">Legend'.$line."</div>\n";
					break;

				case '?':
					$ret .= "<div class=\"ic-message-info\">".trim(substr($line,2))."</div>\n";
					break;

				case '!':
					$ret .= "\t".'<li class="ic-bold ic-important"><div class="ic-box-16 ic-box-important">!</div>'
							. htmlentities(trim(substr($line,2))) . "</li>\n";
					break;

				case '1':
					$ret .= "\t".'<li class="ic-changelog-important-sub"><span></span> '.trim(substr($line,2))."</li>\n";
					break;

				case '+':
					$ret .= "\t".'<li class="ic-added"><div class="ic-box-16 ic-box-added">+</div>'
							. htmlentities(trim(substr($line,2))) . "</li>\n";
					break;

				case '-':
					$ret .= "\t".'<li class="ic-removed"><div class="ic-box-16 ic-box-removed">-</div>'
							. htmlentities(trim(substr($line,2))) . "</li>\n";
					break;

				case '~':
					$ret .= "\t".'<li class="ic-changed"><div class="ic-box-16 ic-box-changed">~</div>'
							. htmlentities(trim(substr($line,2))) . "</li>\n";
					break;

				case '#':
					$ret .= "\t".'<li class="ic-fixed"><div class="ic-box-16 ic-box-fixed">#</div>'
							. htmlentities(trim(substr($line,2))) . "</li>\n";
					break;

//				case 'H':
//					$ret .= "\t".'<li class="ic-fixed"><div class="ic-box-16 ic-box-fixed">#</div><div class="ic-box ic-box-removed">HIGH</div> '
//							. htmlentities(trim(substr($line,2))) . "</li>\n";
//					break;

				case '*':
					$ret .= "\t".'<h4 class="ic-changelog">' . htmlentities(trim(substr($line,2))) . "</h4>\n";
					break;

				case '$':
					$ret .= "</ul>";
					$ret .= "<h3 class=\"ic-changelog-pro\">&nbsp;&nbsp;" . substr($line,2) . " <SUP>[ PRO Testing ]</SUP></h3>\n";
					$ret .= "<ul class=\"ic-changelog\">\n";
					break;

				// End
				case ';':
					$ret .= "</ul>";
					break;

				default:

					if(!empty($ret))
					{
						$ret .= "</ul>";
						if($onlyLast) return $ret;
					}

					if(!$onlyLast) $ret .= "<h3 class=\"ic-changelog\">&nbsp;&nbsp;$line</h3>\n";

					$ret .= "<ul class=\"ic-changelog\">\n";
					break;
			}
		}

		return $ret;
	}
}
views/registrations/index.html000060400000000032152455705350012575 0ustar00<html><body></body></html>views/registrations/view.html.php000060400000014046152455705350013240 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.9 2015-07-22
 * @since       2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * View class Admin - List of Registrations - iCagenda
 */
class iCagendaViewRegistrations extends JViewLegacy
{
	protected $params;
	protected $state;
	protected $items;
	protected $pagination;
	protected $events;
	protected $dates;

	/**
	 * Display the view
	 */
	public function display($tpl = null)
	{
		// Joomla 2.5
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			jimport( 'joomla.environment.request' );

			JHtml::stylesheet('com_icagenda/template.j25.css', false, true);
			JHtml::stylesheet('com_icagenda/icagenda-back.j25.css', false, true);
		}

		$this->params		= JComponentHelper::getParams('com_icagenda');
		$this->state		= $this->get('State');
		$this->items		= $this->get('Items');
		$this->pagination	= $this->get('Pagination');

		$this->events		= $this->get('Events');
		$this->dates		= $this->get('Dates');

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));
			return false;
		}

		// We don't need toolbar in the modal window.
		if ($this->getLayout() !== 'modal')
		{
			$this->addToolbar();

			if (version_compare(JVERSION, '3.0', 'ge'))
			{
				$this->sidebar = JHtmlSidebar::render();
			}
		}

		parent::display($tpl);
	}

	/**
	 * Add the page title and toolbar.
	 *
	 * @since	1.6
	 */
	protected function addToolbar()
	{
		require_once JPATH_COMPONENT . '/helpers/icagenda.php';

		$state	= $this->get('State');
//		$canDo	= iCagendaHelper::getActions($state->get('filter.registration_id'));
		$canDo	= iCagendaHelper::getActions();

		// Set Title
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			JToolBarHelper::title('iCagenda - ' . JText::_('COM_ICAGENDA_TITLE_REGISTRATION'), 'registration.png');
		}
		else
		{
			JToolBarHelper::title('iCagenda <span style="font-size:14px;">- ' . JText::_('COM_ICAGENDA_TITLE_REGISTRATION') . '</span>', 'users');
		}

		$icTitle = JText::_('COM_ICAGENDA_TITLE_REGISTRATION');

		$document	= JFactory::getDocument();
		$app		= JFactory::getApplication();
		$sitename	= $app->getCfg('sitename');
		$title		= $app->getCfg('sitename') . ' - ' . JText::_('JADMINISTRATION') . ' - iCagenda: ' . $icTitle;

		$document->setTitle($title);

		//Check if the form exists before showing the add/edit buttons
		$formPath = JPATH_COMPONENT_ADMINISTRATOR . '/views/registration';

		if (file_exists($formPath))
		{
			// Add Export Button to the ToolBar
			$bar = JToolBar::getInstance('toolbar');
			$export_icon = version_compare(JVERSION, '3.0', 'ge') ? 'download' : 'export';
			$bar->appendButton('Popup', $export_icon, 'JTOOLBAR_EXPORT', 'index.php?option=com_icagenda&amp;view=download&amp;tmpl=component', 600, 300);

			JToolBarHelper::divider();

			if ($canDo->get('core.create'))
			{
				JToolBarHelper::addNew('registration.add', 'JTOOLBAR_NEW');
			}

			if ($canDo->get('core.edit') || $canDo->get('core.edit.own'))
			{
				JToolBarHelper::editList('registration.edit', 'JTOOLBAR_EDIT');
			}

		}

		if ($canDo->get('core.edit.state'))
		{
			if (isset($this->items[0]->state))
			{
//				JToolBarHelper::divider();
				JToolBarHelper::custom('registrations.publish', 'publish.png', 'publish_f2.png','JTOOLBAR_PUBLISH', true);
				JToolBarHelper::custom('registrations.unpublish', 'unpublish.png', 'unpublish_f2.png', 'JTOOLBAR_UNPUBLISH', true);
			}
			else
			{
				// If this component does not use state then show a direct delete button as we can not trash
				JToolBarHelper::deleteList('', 'registrations.delete', 'JTOOLBAR_DELETE');
			}

			if (isset($this->items[0]->state))
			{
				JToolBarHelper::divider();
				JToolBarHelper::archiveList('registrations.archive', 'JTOOLBAR_ARCHIVE');
			}

			if (isset($this->items[0]->checked_out))
			{
				JToolBarHelper::custom('registrations.checkin', 'checkin.png', 'checkin_f2.png', 'JTOOLBAR_CHECKIN', true);
			}
		}

		// Show trash and delete for components that uses the state field
		if (isset($this->items[0]->state))
		{
			if ($state->get('filter.state') == -2 && $canDo->get('core.delete'))
			{
				JToolBarHelper::deleteList('', 'registrations.delete', 'JTOOLBAR_EMPTY_TRASH');
				JToolBarHelper::divider();
			}
			elseif ($canDo->get('core.edit.state'))
			{
				JToolBarHelper::trash('registrations.trash', 'JTOOLBAR_TRASH');
				JToolBarHelper::divider();
			}
		}

		if ($canDo->get('core.admin'))
		{
			JToolBarHelper::preferences('com_icagenda');
		}

		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			JHtmlSidebar::setAction('index.php?option=com_icagenda&view=registrations');

			JHtmlSidebar::addFilter(
				JText::_('COM_ICAGENDA_REGISTRATIONS_SELECT_STATUS'),
				'filter_published',
				JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', $this->state->get('filter.state'), true)
			);
			JHtmlSidebar::addFilter(
				JText::_('COM_ICAGENDA_REGISTRATIONS_SELECT_CATEGORY'),
				'filter_categories',
				JHtml::_('select.options', $this->get('Categories'), 'value', 'text', $this->state->get('filter.categories'), true)
			);
			JHtmlSidebar::addFilter(
				JText::_('COM_ICAGENDA_REGISTRATIONS_SELECT_EVENT'),
				'filter_events',
				JHtml::_('select.options', $this->get('Events'), 'value', 'text', $this->state->get('filter.events'), true)
			);
			JHtmlSidebar::addFilter(
				JText::_('COM_ICAGENDA_REGISTRATIONS_SELECT_DATE'),
				'filter_dates',
				JHtml::_('select.options', $this->get('Dates'), 'value', 'text', $this->state->get('filter.dates'), true)
			);
		}
	}
}
views/registrations/view.raw.php000060400000004254152455705350013065 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.3 2015-03-23
 * @since       3.5.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * View class for a list of registrations.
 *
 * @since	3.5.0
 */
class icagendaViewRegistrations extends JViewLegacy
{
	/**
	 * Display the view
	 *
	 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.
	 *
	 * @return  void
	 */
	public function display($tpl = null)
	{
		$basename		= $this->get('BaseName');
		$filetype		= $this->get('FileType');
		$mimetype		= $this->get('MimeType');
		$content		= $this->get('Content');

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));

			return false;
		}

		$document = JFactory::getDocument();
		$document->setMimeEncoding($mimetype);

		// Joomla 3
		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			JFactory::getApplication()
				->setHeader(
					'Content-disposition',
					'attachment; filename="' . $basename . '.' . $filetype . '"; creation-date="' . JFactory::getDate()->toRFC822() . '"',
					true
				);
		}
		// Joomla 2.5
		else
		{
			JResponse::setHeader('Content-disposition', 'attachment; filename="' . $basename . '.' . $filetype . '"; creation-date="' . JFactory::getDate()->toRFC822() . '"', true);
		}

		// Open file pointer to standard output
//		$fp = fopen('php://output', 'w');

		// Add BOM to fix UTF-8 in Excel
//		fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));

//		fclose($fp);

//$content = mb_convert_encoding($content, 'UTF-16LE', 'UTF-8');

		echo $content;
	}
}
views/registrations/tmpl/default.php000060400000051045152455705350013723 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.12 2015-09-21
 * @since		2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

JHtml::_('behavior.modal');
JHtml::_('behavior.multiselect');

$app = JFactory::getApplication();

// Access Administration Registrations check.
if (JFactory::getUser()->authorise('icagenda.access.registrations', 'com_icagenda'))
{
	$user			= JFactory::getUser();
	$userId			= $user->get('id');
	$listOrder		= $this->state->get('list.ordering');
	$listDirn		= $this->state->get('list.direction');
	$canOrder		= $user->authorise('core.edit.state', 'com_icagenda');
	$saveOrder		= $listOrder == 'a.ordering';
	$dateFormat		= $this->params->get('date_format_global', 'Y - m - d');
	$dateSeparator	= $this->params->get('date_separator', ' ');
	$timeFormat		= ($this->params->get('timeformat', '1') == 1) ? 'H:i' : 'h:i A';

	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		JHtml::_('behavior.tooltip');
	}
	else
	{
		// Include the component HTML helpers.
		JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
		JHtml::_('bootstrap.tooltip');
		JHtml::_('formbehavior.chosen', 'select');
		JHtml::_('dropdown.init');

//		$archived	= $this->state->get('filter.published') == 2 ? true : false;
//		$trashed	= $this->state->get('filter.published') == -2 ? true : false;

		if ($saveOrder)
		{
	    	$saveOrderingUrl = 'index.php?option=com_icagenda&task=registrations.saveOrderAjax&tmpl=component';
	    	JHtml::_('sortablelist.sortable', 'registrationsList', 'adminForm', strtolower($listDirn), $saveOrderingUrl);
		}
	}

	?>

	<form action="<?php echo JRoute::_('index.php?option=com_icagenda&view=registrations'); ?>" method="post" name="adminForm" id="adminForm">
	<?php if (!empty( $this->sidebar)) : ?>
		<div id="j-sidebar-container" class="span2">
			<?php echo $this->sidebar; ?>
		</div>
		<div id="j-main-container" class="span10">
	<?php else : ?>
		<div id="j-main-container">
	<?php endif;?>

		<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
			<fieldset id="filter-bar">
				<div class="filter-search fltlft">
					<label class="filter-search-lbl" for="filter_search"><?php echo JText::_('JSEARCH_FILTER_LABEL'); ?></label>
					<input type="text" name="filter_search" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('Search'); ?>" />
					<button type="submit"><?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?></button>
					<button type="button" onclick="document.id('filter_search').value='';this.form.submit();"><?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?></button>
				</div>
				<div class="filter-select fltrt">

					<select name="filter_published" class="inputbox" onchange="this.form.submit()">
						<option value=""><?php echo JText::_('JOPTION_SELECT_PUBLISHED');?></option>
						<?php echo JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), "value", "text", $this->state->get('filter.state'), true);?>
					</select>

					<select name="filter_categories" class="inputbox" onchange="this.form.submit()">
						<option value=""><?php echo JText::_('COM_ICAGENDA_REGISTRATIONS_SELECT_CATEGORY');?></option>
						<?php echo JHtml::_('select.options', $this->categories, 'value', 'text', $this->state->get('filter.categories'));?>
					</select>

					<select name="filter_events" class="inputbox" onchange="this.form.submit()">
						<option value=""><?php echo JText::_('COM_ICAGENDA_REGISTRATIONS_SELECT_EVENT');?></option>
						<?php echo JHtml::_('select.options', $this->events, 'value', 'text', $this->state->get('filter.events'));?>
					</select>

					<select name="filter_dates" class="inputbox" onchange="this.form.submit()">
						<option value=""><?php echo JText::_('COM_ICAGENDA_REGISTRATIONS_SELECT_DATE');?></option>
						<?php echo JHtml::_('select.options', $this->dates, 'value', 'text', $this->state->get('filter.dates'));?>
					</select>

				</div>
			</fieldset>
			<div class="clr"> </div>

		<?php else : ?>

			<div id="filter-bar" class="btn-toolbar">
				<div class="filter-search btn-group pull-left">
					<label for="filter_search" class="element-invisible"><?php echo JText::_('JSEARCH_FILTER'); ?></label>
					<input type="text" name="filter_search" placeholder="<?php echo JText::_('JSEARCH_FILTER'); ?>" id="filter_search" value="<?php echo $this->escape($this->state->get('filter.search')); ?>" title="<?php echo JText::_('JSEARCH_FILTER'); ?>" />
				</div>
				<div class="btn-group pull-left">
					<button class="btn tip hasTooltip" type="submit" title="<?php echo JText::_('JSEARCH_FILTER_SUBMIT'); ?>"><i class="icon-search"></i></button>
					<button class="btn tip hasTooltip" type="button" onclick="document.id('filter_search').value='';this.form.submit();" title="<?php echo JText::_('JSEARCH_FILTER_CLEAR'); ?>"><i class="icon-remove"></i></button>
				</div>
				<div class="btn-group pull-right hidden-phone">
					<label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC'); ?></label>
					<?php echo $this->pagination->getLimitBox(); ?>
				</div>
			</div>
			<div class="clearfix"> </div>

		<?php endif;?>


		<?php if(version_compare(JVERSION, '3.0', 'lt')) : ?>
			<table class="adminlist">
		<?php else : ?>
			<table class="table table-striped" id="registrationsList">
		<?php endif; ?>

				<thead>
					<tr>
						<?php // *** Ordering HEADER (Joomla 3.x) *** ?>
						<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
 						<th width="1%" class="nowrap center hidden-phone">
							<?php echo JHtml::_('grid.sort', '<i class="icon-menu-2"></i>', 'a.ordering', $listDirn, $listOrder, null, 'asc', 'JGRID_HEADING_ORDERING'); ?>
						</th>
						<?php endif; ?>

						<?php // *** CheckBox HEADER *** ?>
						<th width="1%" class="hidden-phone">
							<input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_('JGLOBAL_CHECK_ALL'); ?>" onclick="Joomla.checkAll(this)" />
						</th>

						<?php // *** Status HEADER *** ?>
						<th width="1%" style="min-width:55px" class="nowrap center hidden-phone">
							<?php echo JHtml::_('grid.sort', 'JSTATUS', 'a.state', $listDirn, $listOrder); ?>
						</th>

						<?php // *** User HEADER *** ?>
						<th>
							<?php echo JText::_('COM_ICAGENDA_REGISTRATION_INFORMATION'); ?><span class="hidden-phone">:</span><span class="visible-phone"></span>
							<?php echo JHtml::_('grid.sort',  'IC_NAME', 'name', $listDirn, $listOrder); ?>&nbsp;|
							<?php echo JHtml::_('grid.sort',  'COM_ICAGENDA_REGISTRATION_USER_ID', 'userid', $listDirn, $listOrder); ?>&nbsp;|
							<?php echo JHtml::_('grid.sort',  'COM_ICAGENDA_REGISTRATION_EMAIL', 'email', $listDirn, $listOrder); ?>&nbsp;|
							<?php echo JHtml::_('grid.sort',  'COM_ICAGENDA_REGISTRATION_PHONE', 'phone', $listDirn, $listOrder); ?>&nbsp;|
							<?php //echo JText::_('COM_ICAGENDA_REGISTRATION_LABEL'); ?><!--span class="hidden-phone">:</span><span class="visible-phone"></span-->
							<?php echo JHtml::_('grid.sort',  'COM_ICAGENDA_REGISTRATION_NUMBER_PLACES', 'a.people', $listDirn, $listOrder); ?>&nbsp;-
							<?php echo JHtml::_('grid.sort',  'COM_ICAGENDA_REGISTRATION_EVENTID', 'event', $listDirn, $listOrder); ?>&nbsp;|
							<?php echo JHtml::_('grid.sort',  'ICDATE', 'a.date', $listDirn, $listOrder); ?>&nbsp;|
							<?php echo JHtml::_('grid.sort',  'JGLOBAL_FIELD_CREATED_BY_LABEL', 'evt_created_by', $listDirn, $listOrder); ?>
						</th>

						<?php // *** ID HEADER *** ?>
						<th width="1%" class="nowrap hidden-phone">
							<?php echo JHtml::_('grid.sort', 'JGRID_HEADING_ID', 'a.id', $listDirn, $listOrder); ?>
						</th>

					</tr>
				</thead>
				<tfoot>
					<tr>
						<td colspan="5">
							<?php echo $this->pagination->getListFooter(); ?>
						</td>
					</tr>
				</tfoot>
				<tbody valign="top">
				<?php foreach ($this->items as $i => $item) :
					$ordering		= ($listOrder == 'a.ordering');
					$canCreate		= $user->authorise('core.create', 'com_icagenda');
					$canEdit		= $user->authorise('core.edit', 'com_icagenda');
					$canCheckin		= $user->authorise('core.manage', 'com_icagenda') || $item->checked_out == $userId || $item->checked_out == 0;
					$canChange		= $user->authorise('core.edit.state', 'com_icagenda') && $canCheckin;
					$canEditOwn		= $user->authorise('core.edit.own', 'com_icagenda') && $item->userid == $userId;

					// Get avatar of the registered user
					$avatar			= md5(strtolower(trim($item->email)));

					// Get Username and name
					$data_name		= ($item->userid) ? $item->fullname : $item->name;
					$data_username	= ($item->userid) ? $item->username : false;

					// Load Custom fields DATA
					$customfields	= icagendaCustomfields::getListNotEmpty($item->id, 1);
					?>
					<tr class="row<?php echo $i % 2; ?>">

						<?php // START J3 CODE ?>
						<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>

						<?php // *** Ordering (Joomla 3.x) *** ?>
						<td class="order nowrap center hidden-phone">
						<?php if ($canChange) :
							$disableClassName = '';
							$disabledLabel	  = '';

							if (!$saveOrder) :
								$disabledLabel    = JText::_('JORDERINGDISABLED');
								$disableClassName = 'inactive tip-top';
							endif; ?>
							<span class="sortable-handler hasTooltip <?php echo $disableClassName; ?>" title="<?php echo $disabledLabel; ?>">
								<i class="icon-menu"></i>
							</span>
							<input type="text" style="display:none" name="order[]" size="5" value="<?php echo $item->ordering; ?>" class="width-20 text-area-order " />
						<?php else : ?>
							<span class="sortable-handler inactive" >
								<i class="icon-menu"></i>
							</span>
						<?php endif; ?>
						</td>

						<?php // END J3 CODE ?>
						<?php endif; ?>

						<?php // *** CheckBox *** ?>
						<td class="center hidden-phone">
							<?php //if ( $item->evt_state == 1) : ?>
								<?php echo JHtml::_('grid.id', $i, $item->id); ?>
							<?php //else : ?>
								<?php //echo ''; ?>
							<?php //endif; ?>
						</td>

 						<?php // *** Status *** ?>
				    	<td class="center hidden-phone">
               				<?php if (isset($this->items[0]->state)) : ?>
					    		<?php echo JHtml::_('jgrid.published', $item->state, $i, 'registrations.', $canChange, 'cb'); ?>
                			<?php endif; ?>
				    	</td>

 						<?php // *** User Information *** ?>
						<td class="has-context">
							<div class="pull-left hidden-phone" style="margin-right:10px;">
								<img alt="<?php echo $item->name; ?>" src="http://www.gravatar.com/avatar/<?php echo $avatar; ?>?s=36&d=mm"/>
							</div>
							<div class="pull-left" style="width:45%">
								<?php if ($item->checked_out) : ?>
									<?php echo JHtml::_('jgrid.checkedout', $i, $item->username, $item->checked_out_time, 'registrations.', $canCheckin); ?>
								<?php endif; ?>
								<?php //if ($item->language == '*'):?>
									<?php //$language = JText::alt('JALL', 'language'); ?>
								<?php //else:?>
									<?php //$language = $item->language ? $this->escape($item->language) : JText::_('JUNDEFINED'); ?>
								<?php //endif;?>
								<?php //if ($canEdit || $canEditOwn) : ?>
								<!--a href="<?php //echo JRoute::_('index.php?option=com_icagenda&task=registration.edit&id=' . $item->id); ?>" title="<?php //echo JText::_('JACTION_EDIT'); ?>"-->


								<?php if ($data_name) : ?>
									<p class="smallsub">
										<?php echo JText::_('IC_NAME') . ': '; ?>
										<?php //if ($canEdit && $item->evt_state == 1) : ?>
										<?php if ($canEdit || $canEditOwn) : ?>
											<a href="<?php echo JRoute::_('index.php?option=com_icagenda&task=registration.edit&id=' . $item->id); ?>" title="<?php echo JText::_('JACTION_EDIT'); ?>">
												<?php echo '<strong>' . $this->escape($item->name). '</strong>'; ?>
											</a>
										<?php else : ?>
												<?php echo '<strong>' . $this->escape($item->name). '</strong>'; ?>
										<?php endif; ?>
									</p>
									<?php if ($data_username) : ?>
										<?php echo '<strong>' . $this->escape($data_username) . '</strong>'; ?>
										<?php echo '<small>[' . $this->escape($data_name) . ']</small>'; ?>
									<?php endif; ?>

									<!--/a-->
									<?php //else : ?>
										<!--span title="<?php //echo JText::sprintf('JFIELD_ALIAS_LABEL', $this->escape($item->alias)); ?>"--><?php //echo $this->escape($item->name); ?><!--/span-->
									<?php //endif; ?>
									<?php if ($item->userid != '0') : ?>
										<p class="smallsub">
											<?php echo JText::_('COM_ICAGENDA_REGISTRATION_USER_ID') . ": " . $this->escape($item->userid); ?>
										</p>
									<?php else:?>
										<p class="smallsub">
											<?php echo JText::_('COM_ICAGENDA_REGISTRATION_NO_USER_ID'); ?>
										</p>
									<?php endif; ?>
									<?php if (($item->email) OR ($item->phone)) : ?>
										<!--div class="small" style="height:5px; border-bottom: solid 1px #D4D4D4">
										</div-->
										<p>
										<?php if ($item->email) : ?>
											<div class="small iC-italic-grey">
												<?php echo JText::_('COM_ICAGENDA_REGISTRATION_EMAIL') . ": <b>" . $this->escape($item->email) . "</b>"; ?>
											</div>
										<?php endif; ?>
										<?php if ($item->phone) : ?>
											<div class="small iC-italic-grey">
												<?php echo JText::_('COM_ICAGENDA_REGISTRATION_PHONE') . ": <b>" . $this->escape($item->phone) . "</b>"; ?>
											</div>
										<?php endif; ?>
										</p>
									<?php endif; ?>
								<?php endif; ?>

								<?php if ($item->notes) : ?>
									<br />
									<a href="#loadDiv<?php echo $item->id; ?>" class="modal" rel="{size: {x: 600, y: 350}}">
										<input type="submit" class="btn" value="<?php echo JText::_( 'COM_ICAGENDA_REGISTRATION_NOTES_DISPLAY_LABEL' ); ?>" />
									</a>
									<div style="display:none;">
										<div id="loadDiv<?php echo $item->id; ?>">
											<?php echo "<h3>".JText::_('COM_ICAGENDA_REGISTRATION_NOTES_DISPLAY_LABEL') . ": </h3><hr>" . nl2br(html_entity_decode($item->notes)); ?>
										</div>
									</div>
								<?php endif; ?>

 								<?php // Custom Fields ?>
 								<?php if ($customfields) : ?>
									<?php foreach ($customfields AS $customfield) : ?>
										<?php $cf_value = isset($customfield->cf_value) ? $customfield->cf_value : JText::_('IC_NOT_SPECIFIED'); ?>
										<div class="small iC-italic-grey">
											<?php echo $customfield->cf_title . ': <strong>' . $cf_value . '</strong>'; ?>
										</div>
									<?php endforeach; ?>
								<?php endif; ?>

							</div>
							<div class="pull-right visible-phone" style="margin-right:5%;">
								<img alt="<?php echo $item->name; ?>" src="http://www.gravatar.com/avatar/<?php echo $avatar; ?>?s=36&d=mm"/>
							</div>
							<div class="pull-left" style="width:50%">
								<?php if ( $item->evt_state != 1) : ?>
									<div class="small">
										<div style="font-weight:bold; background:#c30000; color:#FFFFFF; padding: 2px 5px; border-radius: 5px;">
											<?php echo JText::_( 'COM_ICAGENDA_REGISTRATION_EVENT_NOT_PUBLISHED' ); ?>
										</div>
									</div>
								<?php endif; ?>
								<div class="small">
									<?php echo JText::_('ICEVENT'); ?>
								</div>
								<div class="small iC-italic-grey">
									<?php echo JText::_('ICTITLE') . ': <strong>' . $this->escape($item->event) . '</strong>'; ?>
								</div>
								<div class="small iC-italic-grey">
									<?php if (( ! $item->date && $item->period == 0) || ($item->period == 1)) : ?>
										<?php echo JText::_('ICDATES') . ': '; ?>
									<?php else : ?>
										<?php echo JText::_('ICDATE') . ': '; ?>
									<?php endif; ?>
									<strong>
									<?php if ( ! $item->date && $item->period == 0) : ?>
										<?php // echo JText::_( 'COM_ICAGENDA_ADMIN_REGISTRATION_FOR_ALL_PERIOD' ); ?>
										<?php if (iCDate::isDate($item->startdate)) : ?>
											<?php echo iCGlobalize::dateFormat($item->startdate, $dateFormat, $dateSeparator); ?>
											<?php if ($item->displaytime) : ?>
												<?php echo ' - ' . date($timeFormat, strtotime($item->startdate)); ?>
											<?php endif; ?>
										<?php else : ?>
											<?php echo $item->startdate; ?>
										<?php endif; ?>
										<?php if ($item->enddate) echo ' > '; ?>
										<?php if (iCDate::isDate($item->enddate)) : ?>
											<?php echo iCGlobalize::dateFormat($item->enddate, $dateFormat, $dateSeparator); ?>
											<?php if ($item->displaytime) : ?>
												<?php echo ' - ' . date($timeFormat, strtotime($item->enddate)); ?>
											<?php endif; ?>
										<?php else : ?>
											<?php echo $item->enddate; ?>
										<?php endif; ?>
									<?php elseif ( ! $item->date && $item->period == 1) : ?>
										<?php echo JText::_( 'COM_ICAGENDA_ADMIN_REGISTRATION_FOR_ALL_DATES' ); ?>
									<?php else : ?>
										<?php if (iCDate::isDate($item->date)) : ?>
											<?php echo iCGlobalize::dateFormat($item->date, $dateFormat, $dateSeparator); ?>
											<?php if ($item->displaytime) : ?>
												<?php echo ' - ' . date($timeFormat, strtotime($item->date)); ?>
											<?php endif; ?>
										<?php else : ?>
											<?php echo $item->date; ?>
										<?php endif; ?>
									<?php endif; ?>
									</strong>
								</div>
								<?php if ($item->evt_created_by) :
									// Get Author Name
									$db = JFactory::getDBO();
									$db->setQuery(
										'SELECT `name`' .
										' FROM `#__users`' .
										' WHERE `id` = '. (int) $item->evt_created_by
									);
									$authorname = $db->loadObject()->name;
 								?>
								<div class="small iC-italic-grey">
									<?php echo JText::_('JGLOBAL_FIELD_CREATED_BY_LABEL') . ': <strong>' . $this->escape($authorname) . '</strong>'; ?>
								</div>
								<?php endif; ?>
								<p>
								<div class="small">
									<?php echo JText::_('ICINFORMATION'); ?>
								</div>
								<div class="small iC-italic-grey">
									<?php echo JText::_('COM_ICAGENDA_REGISTRATION_NUMBER_PLACES') . ': <strong>' . $item->people . '</strong>'; ?>
								</div>
								</p>
							</div>
						</td>

						<?php // *** ID *** ?>
						<td class="center hidden-phone">
							<?php if (isset($this->items[0]->id)) : ?>
								<?php echo (int) $item->id; ?>
							<?php endif; ?>
						</td>

					</tr>
				<?php endforeach; ?>

			<?php
			// Old Joomla versions asset_id issue. (all Joomla 2.5.x versions, and Joomla 3 NOT updated!)
			$asset_issue = version_compare(JVERSION, '3.0', 'lt') ? true : false;

			if ($asset_issue)
			{
				$ia = '0';
				unset($msg);
				unset($type);
				$msg = $type = $front_submit = '';
				$edittx = '<b>' . JText::_( 'JACTION_EDIT' ) . '</b>';
				$savetx = '<b>' . JText::_( 'JSAVE' ) . '</b>';

				foreach ($this->items as $i => $item)
				{
					if (($item->asset_id == '0') && ($item->state == '-2'))
					{
						$ia = $ia+1;
						$front_submit = '1';
					}
				}

				if ($front_submit == 1 && $ia == 1)
				{
					$app->enqueueMessage(JText::sprintf( 'COM_ICAGENDA_TRASH_FRONTEND_REGISTRATION_1', $edittx, $savetx ), 'notice');
				}
				elseif ($front_submit == 1 && $ia > 1)
				{
					$app->enqueueMessage(JText::sprintf( 'COM_ICAGENDA_TRASH_FRONTEND_REGISTRATION', $edittx, $savetx ), 'notice');
				}

				foreach ($this->items as $i => $item)
				{
					if ($item->asset_id == '0' && $item->state == '-2')
					{
						$editLink = 'index.php?option=com_icagenda&task=registration.edit&id=' . $item->id;
						$msg	= '- ' . $item->name . ' [' . $item->id . '] : <a href="' . $editLink . '"><b>'.JText::_( 'JACTION_EDIT' ).'</b></a>';
						$type	= JText::_( 'JGLOBAL_LIST' ).' :';
					}
					if ( ! empty($msg))
					{
						$app->enqueueMessage($msg, $type);
					}
				}
			}
			?>

				</tbody>
			</table>

			<div>
				<input type="hidden" name="task" value="" />
				<input type="hidden" name="boxchecked" value="0" />
				<input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>" />
				<input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>" />
				<?php echo JHtml::_('form.token'); ?>
			</div>
		</div>
	</form>
	<?php
}
else
{
	$app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'warning');
	$app->redirect(htmlspecialchars_decode('index.php?option=com_icagenda&view=icagenda'));
}
views/registrations/tmpl/index.html000060400000000032152455705350013551 0ustar00<html><body></body></html>views/download/view.html.php000060400000002430152455705350012144 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.0 2015-02-05
 * @since       3.5.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * View class for download a list of registered users.
 *
 * @since	3.5.0
 */
class icagendaViewdownload extends JViewLegacy
{
	protected $form;

	/**
	 * Display the view
	 *
	 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.
	 *
	 * @return  void
	 */
	public function display($tpl = null)
	{
		$this->form = $this->get('Form');

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));

			return false;
		}

		parent::display($tpl);
	}
}
views/download/index.html000060400000000037152455705350011514 0ustar00<!DOCTYPE html><title></title>
views/download/tmpl/index.html000060400000000037152455705350012470 0ustar00<!DOCTYPE html><title></title>
views/download/tmpl/default.php000060400000003267152455705350012640 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.0 2015-02-05
 * @since       3.5.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();
?>
<form
	action="<?php echo JRoute::_('index.php?option=com_icagenda&task=registrations.display&format=raw'); ?>"
	method="post"
	name="adminForm"
	id="download-form"
	class="form-validate">
	<fieldset class="adminform">
		<legend><?php echo JText::_('COM_ICAGENDA_REGISTRATIONS_DOWNLOAD'); ?></legend>
		<?php foreach ($this->form->getFieldset() as $field) : ?>
		<div class="control-group">
			<?php if (!$field->hidden) : ?>
			<div class="control-label">
				<?php echo $field->label; ?>
			</div>
			<?php endif; ?>
			<div class="controls">
				<?php echo $field->input; ?>
			</div>
		</div>
		<?php endforeach; ?>
		<div class="clr"></div>
		<button type="button" class="btn" onclick="this.form.submit();window.top.setTimeout('window.parent.jModalClose()', 700);"><?php echo JText::_('COM_ICAGENDA_REGISTRATIONS_EXPORT'); ?></button>
		<!--button type="button" class="btn" onclick="window.parent.jModalClose()"><?php echo JText::_('COM_ICAGENDA_CANCEL'); ?></button-->
	</fieldset>
</form>
icagenda.xml000060400000013227152455705350007035 0ustar00<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.6" method="upgrade">
	<name>iCagenda</name>
	<creationDate>2015-10-12</creationDate>
	<copyright>Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved</copyright>
	<license>GNU General Public License version 3 or later; see LICENSE.txt</license>
	<author>Jooml!C</author>
	<authorEmail>info@joomlic.com</authorEmail>
	<authorUrl>www.joomlic.com</authorUrl>
	<version>3.5.12</version>
	<description>COM_ICAGENDA_DESC</description>

	<scriptfile>script.icagenda.pro.php</scriptfile>

	<install> <!-- Runs on install -->
		<sql>
			<file driver="mysql" charset="utf8">sql/install/mysql/icagenda.install.sql</file>
			<file driver="mysql">sql/install/mysql/icagenda.install.sql</file>
			<file driver="mysqli" charset="utf8">sql/install/mysql/icagenda.install.sql</file>
			<file driver="mysqli">sql/install/mysql/icagenda.install.sql</file>
		</sql>
	</install>

	<uninstall> <!-- Runs on uninstall -->
		<sql>
			<file driver="mysql" charset="utf8">sql/uninstall/mysql/icagenda.uninstall.sql</file>
			<file driver="mysql">sql/uninstall/mysql/icagenda.uninstall.sql</file>
			<file driver="mysqli" charset="utf8">sql/uninstall/mysql/icagenda.uninstall.sql</file>
			<file driver="mysqli">sql/uninstall/mysql/icagenda.uninstall.sql</file>
		</sql>
	</uninstall>

	<update> <!-- Runs on update -->
		<schemas>
			<schemapath type="mysql">sql/updates</schemapath>
		</schemas>
	</update>

	<libraries>
		<library folder="libraries" library="ic_library" name="iC Library" element="lib_ic_library" />
	</libraries>

	<modules>
		<module folder="modules" module="mod_iccalendar" name="iCagenda - Calendar" />
		<module folder="modules" module="mod_ic_event_list" name="iCagenda - Event List" />
	</modules>

	<plugins>
		<plugin folder="plugins" plugin="ic_library" name="System - iC Library" group="system" element="ic_library" />
		<plugin folder="plugins" plugin="icagenda" name="Search - iCagenda" group="search" element="ic_search" />
		<plugin folder="plugins" plugin="ic_autologin" name="System - iCagenda :: Autologin" group="system" element="ic_autologin" />
	</plugins>

	<files folder="site">
		<!-- FILE -->
		<filename>index.html</filename>
		<filename>icagenda.php</filename>
		<filename>controller.php</filename>
		<filename>router.php</filename>
		<!-- FOLDER -->
		<folder>add</folder>
		<folder>helpers</folder>
		<folder>models</folder>
		<folder>themes</folder>
		<folder>views</folder>
	</files>

	<languages folder="site">
		<language tag="en-GB">language/en-GB/en-GB.com_icagenda.ini</language>
		<language tag="fr-FR">language/fr-FR/fr-FR.com_icagenda.ini</language>
		<language tag="it-IT">language/it-IT/it-IT.com_icagenda.ini</language>
	</languages>

	<media destination="com_icagenda" folder="media">
		<filename>index.html</filename>
		<folder>css</folder>
		<folder>icicons</folder>
		<folder>images</folder>
		<folder>js</folder>
	</media>

	<administration>

		<menu link="option=com_icagenda&amp;view=icagenda" img='../media/com_icagenda/images/iconicagenda16.png'>COM_ICAGENDA_MENU</menu>
		<submenu>
			<menu link="option=com_icagenda&amp;view=icagenda" view="icagenda" img='../media/com_icagenda/images/iconicagenda16.png' alt="iCagenda/Home">COM_ICAGENDA_TITLE_ICAGENDA</menu>
			<menu link="option=com_icagenda&amp;view=categories" view="categories" img='../media/com_icagenda/images/all_cats-16.png' alt="iCagenda/Categories">COM_ICAGENDA_MENU_CATEGORIES</menu>
			<menu link="option=com_icagenda&amp;view=events" view="events" img='../media/com_icagenda/images/all_events-16.png' alt="iCagenda/Events">COM_ICAGENDA_EVENTS</menu>
			<menu link="option=com_icagenda&amp;view=registrations" view="registrations" img='../media/com_icagenda/images/registration-16.png' alt="iCagenda/Registrations">COM_ICAGENDA_REGISTRATION</menu>
			<menu link="option=com_icagenda&amp;view=mail&amp;layout=edit" view="mail" img='../media/com_icagenda/images/newsletter-16.png' alt="iCagenda/Newsletter">COM_ICAGENDA_MAIL</menu>
			<menu link="option=com_icagenda&amp;view=customfields" view="customfields" img='../media/com_icagenda/images/customfields-16.png' alt="iCagenda/Newsletter">COM_ICAGENDA_MENU_CUSTOMFIELDS</menu>
			<menu link="option=com_icagenda&amp;view=features" view="features" img='../media/com_icagenda/images/features-16.png' alt="iCagenda/Newsletter">COM_ICAGENDA_MENU_FEATURES</menu>
			<menu link="option=com_icagenda&amp;view=themes" view="themes" img='../media/com_icagenda/images/themes-16.png' alt="iCagenda/themes">COM_ICAGENDA_THEMES</menu>
			<menu link="option=com_icagenda&amp;view=info" view="info" img='../media/com_icagenda/images/info-16.png' alt="iCagenda/info">COM_ICAGENDA_INFO</menu>
		</submenu>

		<files folder="admin">
			<filename>access.xml</filename>
			<filename>CHANGELOG.php</filename>
			<filename>config.xml</filename>
			<filename>controller.php</filename>
			<filename>index.html</filename>
			<filename>icagenda.php</filename>
			<folder>assets</folder>
			<folder>controllers</folder>
			<folder>helpers</folder>
			<folder>liveupdate</folder>
			<folder>models</folder>
			<folder>sql</folder>
			<folder>tables</folder>
			<folder>utilities</folder>
			<folder>views</folder>
		</files>
		<languages folder="admin">
			<language tag="en-GB">language/en-GB/en-GB.com_icagenda.ini</language>
			<language tag="en-GB">language/en-GB/en-GB.com_icagenda.sys.ini</language>
			<language tag="fr-FR">language/fr-FR/fr-FR.com_icagenda.ini</language>
			<language tag="fr-FR">language/fr-FR/fr-FR.com_icagenda.sys.ini</language>
			<language tag="it-IT">language/it-IT/it-IT.com_icagenda.ini</language>
			<language tag="it-IT">language/it-IT/it-IT.com_icagenda.sys.ini</language>
		</languages>
	</administration>

</extension>
icagenda.php000060400000011622152455705350007021 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-12-14
 * @since       1.0
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

// J3 DS Define :
if (!defined('DS')) define('DS',DIRECTORY_SEPARATOR);

// Get Application
$app = JFactory::getApplication();

// Check Errors: iC Library & iCagenda Utilities
$UTILITIES_DIR = is_dir(JPATH_ADMINISTRATOR . '/components/com_icagenda/utilities');

if ( (!$UTILITIES_DIR)
	|| (!class_exists('iCLibrary')) )
{
	$alert_message = JText::_('ICAGENDA_CAN_NOT_LOAD').'<br />';
	$alert_message.= '<ul>';
	if (!class_exists('iCLibrary')) $alert_message.= '<li>' . JText::_('IC_LIBRARY_NOT_LOADED') . '</li>';
	if (!$UTILITIES_DIR) $alert_message.= '<li>' . JText::_('ICAGENDA_A_FOLDER_IS_MISSING') . '</li>';
	$alert_message.= '</ul>';
	if (!$UTILITIES_DIR) $alert_message.= JText::_('ICAGENDA_IS_NOT_CORRECTLY_INSTALLED') . ' ';
	if (!$UTILITIES_DIR) $alert_message.= JText::_('ICAGENDA_INSTALL_AGAIN') . '<br />';
	if (!$UTILITIES_DIR) $alert_message.= JText::_('IC_ALTERNATIVELY') . ':<br /><ul>';
	if ($UTILITIES_DIR) $alert_message.= JText::_('IC_PLEASE') . ', ';
	if (!class_exists('iCLibrary'))
	{
		if (!$UTILITIES_DIR) $alert_message.= '<li>';
		$alert_message.= JText::_('IC_LIBRARY_CHECK_PLUGIN_AND_LIBRARY');
		if (!$UTILITIES_DIR) $alert_message.= '</li>';
	}
	if (!$UTILITIES_DIR)
	{
		$alert_message.= '<li>' . JText::Sprintf('ICAGENDA_UTILITIES_FIX_MANUAL'
						, '<strong>admin/utilities</strong>'
						, '<strong>administrator/components/com_icagenda/</strong>');
		$alert_message.= '</li></ul>';
	}

	// Get the message queue
	$messages = $app->getMessageQueue();

	$display_alert_message = false;

	// If we have messages
	if (is_array($messages) && count($messages))
	{
		// Check each message for the one we want
		foreach ($messages as $key => $value)
		{
			if ($value['message'] == $alert_message)
			{
				$display_alert_message = true;
			}
		}
	}

	if (!$display_alert_message)
	{
		$app->enqueueMessage($alert_message, 'error');
	}

	return false;
}

// Load Utilities
JLoader::registerPrefix('icagenda', JPATH_ADMINISTRATOR . '/components/com_icagenda/utilities');

// Test if translation is missing, set to en-GB by default
$language = JFactory::getLanguage();
$language->load('com_icagenda', JPATH_SITE, 'en-GB', true);
$language->load('com_icagenda', JPATH_SITE, null, true);

// Set Input J3
// not in use, because of known issues with JInput and Magic Quotes (Deprecated in PHP 5.3.0 and removed in PHP 5.4.0).
$iCinput = $app->input;

// Load Vector iCicons Font
JHtml::stylesheet( 'media/com_icagenda/icicons/style.css' );

// CSS files which could be overridden into your site template. (eg. /templates/my_template/css/com_icagenda/icagenda-front.css)
JHtml::stylesheet( 'com_icagenda/icagenda-front.css', false, true );
JHtml::stylesheet( 'com_icagenda/tipTip.css', false, true );

// Set iCtip
$iCtip	 = array();
$iCtip[] = '	jQuery(document).ready(function(){';
$iCtip[] = '		jQuery(".iCtip").tipTip({maxWidth: "200", defaultPosition: "top", edgeOffset: 1});';
$iCtip[] = '	});';

// Add the script to the document head.
JFactory::getDocument()->addScriptDeclaration(implode("\n", $iCtip));

// Require the base controller
require_once( JPATH_COMPONENT.'/controller.php' );

// Require specific controller if requested
if ( $controller = JRequest::getVar( 'controller' ) )
{
	$path = JPATH_COMPONENT.'/controllers/'.$controller.'.php';
	if ( file_exists( $path ) ) { require_once $path; }
	else { $controller = ''; }
}

// Create the controller
$classname	= 'icagendaController'.ucfirst($controller);
$controller	= new $classname( );

// Perform the Requested task
$controller->execute( JRequest::getVar( 'task' ) );

// Redirect if set by the controller
$controller->redirect();
controllers/categories.php000060400000002132152455705350011755 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.3.3 2014-04-12
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.controlleradmin');

/**
 * Categories list controller class.
 */
class iCagendaControllerCategories extends JControllerAdmin
{
	/**
	 * Proxy for getModel.
	 * @since	1.0
	 */
	public function getModel($name = 'category', $prefix = 'iCagendaModel')
	{
		$model = parent::getModel($name, $prefix, array('ignore_request' => true));

		return $model;
	}

}
controllers/customfield.php000060400000001742152455705350012154 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rez�, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rez� (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-05-01
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.controllerform');

/**
 * Category controller class.
 */
class iCagendaControllerCustomfield extends JControllerForm
{
    function __construct()
    {
        $this->view_list = 'customfields';
        parent::__construct();
    }
}
controllers/events.php000060400000005355152455705350011146 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.1.10 2013-09-12
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.controlleradmin');

/**
 * Events list controller class.
 */
class iCagendaControllerEvents extends JControllerAdmin
{
	/**
	 * Proxy for getModel.
	 * @since	1.6
	 */
	public function getModel($name = 'event', $prefix = 'iCagendaModel', $config = array('ignore_request' => true))
	{
		return parent::getModel($name, $prefix, $config);
	}

	/**
     * Method to save the submitted ordering values for records via AJAX.
     *
     * @return    void
     *
     * @since   3.0
     */

    public function saveOrderAjax()
    {
        // Get the input
        $input = JFactory::getApplication()->input;
        $pks = $input->post->get('cid', array(), 'array');
		$order = $input->post->get('order', array(), 'array');

        // Sanitize the input
		JArrayHelper::toInteger($pks);
        JArrayHelper::toInteger($order);

        // Get the model
		$model = $this->getModel();

        // Save the ordering
        $return = $model->saveorder($pks, $order);

        if ($return)
        {
            echo "1";
        }

        // Close the application
        JFactory::getApplication()->close();
	}

	public function __construct($config = array())
	{
		parent::__construct($config);

		$this->registerTask('unapprove', 'approve');
    }

	/**
	 * Method to approve an event.
	 *
	 * @return  void
	 *
	 * @since   3.2
	 */
	public function approve()
	{
		// Check for request forgeries.
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

        $input = JFactory::getApplication()->input;
		$ids = $input->post->get('cid', array(), 'array');

		if (empty($ids))
		{
			JError::raiseWarning(500, JText::_('JERROR_NO_ITEMS_SELECTED'));
		}
		else
		{
			// Get the model.
			$model = $this->getModel();

			// Change the state of the records.
			if (!$model->approve($ids))
			{
				JError::raiseWarning(500, $model->getError());
			}
			else
			{
				$this->setMessage(JText::plural('COM_ICAGENDA_N_EVENTS_APPROVED', count($ids)));
			}
		}

		$this->setRedirect('index.php?option=com_icagenda&view=events');
	}
}
controllers/category.php000060400000001732152455705350011452 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rez�, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rez� (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.2.13 2014-01-26
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.controllerform');

/**
 * Category controller class.
 */
class iCagendaControllerCategory extends JControllerForm
{

    function __construct() {
        $this->view_list = 'categories';
        parent::__construct();
    }

}
controllers/registration.php000060400000005017152455705350012347 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.9 2015-07-22
 * @since       3.3.3
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.controllerform');

/**
 * Registration controller class.
 */
class iCagendaControllerRegistration extends JControllerForm
{
    function __construct()
    {
        $this->view_list = 'registrations';
        parent::__construct();
    }

	/**
	 * Return Ajax to load date select options
	 *
	 * @since 3.5.9
	 */
	function dates()
	{
		icagendaAjax::getOptionsEventDates('registration');

		// Cut the execution short
//		JFactory::getApplication()->close();
	}

	/**
	 * Method override to check if you can edit an existing record.
	 *
	 * @param   array   $data  An array of input data.
	 * @param   string  $key   The name of the key for the primary key.
	 *
	 * @return  boolean
	 *
	 * @since   3.3.3
	 */
	protected function allowEdit($data = array(), $key = 'id')
	{
		// Initialise variables.
		$recordId	= (int) isset($data[$key]) ? $data[$key] : 0;
		$user		= JFactory::getUser();
		$userId		= $user->get('id');

		// Check general edit permission first.
		if ($user->authorise('core.edit', 'com_icagenda.registration.' . $recordId))
		{
			return true;
		}

		// Fallback on edit.own.
		// First test if the permission is available.
		if ($user->authorise('core.edit.own', 'com_icagenda.registration.' . $recordId))
		{
			// Now test the owner is the user.
			$ownerId = (int) isset($data['created_by']) ? $data['created_by'] : 0;
			if (empty($ownerId) && $recordId)
			{
				// Need to do a lookup from the model.
				$record = $this->getModel()->getItem($recordId);

				if (empty($record))
				{
					return false;
				}

				$ownerId = $record->created_by;
			}

			// If the owner matches 'me' then do the test.
			if ($ownerId == $userId)
			{
				return true;
			}
		}

		// Since there is no asset tracking, revert to the component permissions.
		return parent::allowEdit($data, $key);
	}
}
controllers/features.php000060400000002133152455705350011447 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      doorknob & Cyril Rezé
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-07-02
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.controlleradmin');

/**
 * Features list controller class.
 */
class iCagendaControllerFeatures extends JControllerAdmin
{
	/**
	 * Proxy for getModel.
	 * @since	3.4.0
	 */
	public function getModel($name = 'feature', $prefix = 'iCagendaModel')
	{
		$model = parent::getModel($name, $prefix, array('ignore_request' => true));

		return $model;
	}
}
controllers/mail.php000060400000005703152455705350010561 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rez�, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rez� (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.9 2015-07-30
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.controllerform');

/**
 * Event controller class.
 */
class iCagendaControllerMail extends JControllerForm
{
	function __construct()
	{
		$this->view_list = 'icagenda';
		parent::__construct();
	}

	/**
	 * Return Ajax to load date select options
	 *
	 * @since 3.5.9
	 */
	function dates()
	{
		icagendaAjax::getOptionsEventDates('mail');

		// Cut the execution short
//		JFactory::getApplication()->close();
	}

	/**
	 * Send the mail
	 *
	 * @return void
	 *
	 * @since 3.5.9
	 */
	public function send()
	{
		// Check for request forgeries.
		JSession::checkToken('request') or jexit(JText::_('JINVALID_TOKEN'));

		$app	= JFactory::getApplication();
		$jinput	= $app->input;
		$model	= $this->getModel('Mail');

		if ( ! $model->send())
		{
//			$msg = 'ok';
//			$type = 'message';
//		}
//		else
//		{
//			$msg = 'NOT ok';
//			$type = 'error';

			// Get the user data.
			if (version_compare(JVERSION, '3.0', 'lt'))
			{
				$requestData = JRequest::getVar('jform', array(), 'post');
			}
			else
			{
				$requestData = $this->input->post->get('jform', array(), 'array');
			}

			// Save the data in the session.
			$app->setUserState('com_icagenda.mail.data', $requestData);

			// Redirect back to the newsletter screen.
			$this->setRedirect(JRoute::_('index.php?option=com_icagenda&view=mail&layout=edit', false));
//			$this->setredirect('index.php?option=com_icagenda&view=mail&layout=edit', $msg, $type);

			return false;
		}

		// Flush the data from the session.
		$app->setUserState('com_icagenda.mail.data', null);

//		$msg = $model->getError();

		// Redirect back to the newsletter screen.
		$this->setRedirect(JRoute::_('index.php?option=com_icagenda&view=mail&layout=edit', false));
//		$this->setredirect('index.php?option=com_icagenda&view=mail&layout=edit', $msg, $type);

		return true;
	}

	/**
	 * Cancel the mail
	 *
	 * @return void
	 *
	 * @since 3.5.9
	 */
	public function cancel($key = null)
	{
		// Check for request forgeries.
		JSession::checkToken('request') or jexit(JText::_('JINVALID_TOKEN'));

		$app	= JFactory::getApplication();

		// Flush the data from the session.
		$app->setUserState('com_icagenda.mail.data', null);

		$this->setRedirect(JRoute::_('index.php?option=com_icagenda', false));
	}
}
controllers/customfields.php000060400000002140152455705350012330 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-05-01
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.controlleradmin');

/**
 * Categories list controller class.
 */
class iCagendaControllerCustomfields extends JControllerAdmin
{
	/**
	 * Proxy for getModel.
	 * @since	1.0
	 */
	public function getModel($name = 'customfield', $prefix = 'iCagendaModel')
	{
		$model = parent::getModel($name, $prefix, array('ignore_request' => true));

		return $model;
	}
}
controllers/registrations.raw.php000060400000013565152455705350013331 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.9 2015-07-23
 * @since       3.5.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * Registrations list controller class.
 *
 * @since	3.5.0
 */
class icagendaControllerRegistrations extends JControllerLegacy
{
	/**
	 * @var    string  The context for persistent state.
	 *
	 * @since  3.5.0
	 */
	protected $context = 'com_icagenda.registrations';

	/**
	 * Proxy for getModel.
	 *
	 * @param   string  $name    The name of the model.
	 * @param   string  $prefix  The prefix for the model class name.
	 * @param   array   $config  Configuration array for model. Optional.
	 *
	 * @return  JModel
	 *
	 * @since   3.5.0
	 */
	public function getModel($name = 'Registrations', $prefix = 'iCagendaModel', $config = array())
	{
		$model = parent::getModel($name, $prefix, array('ignore_request' => true));

		return $model;
	}

	/**
	 * Display method for the raw track data.
	 *
	 * @param   boolean  $cachable   If true, the view output will be cached
	 * @param   array    $urlparams  An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}.
	 *
	 * @return  JController  This object to support chaining.
	 *
	 * @since   3.5.0
	 * @todo    This should be done as a view, not here!
	 */
	public function display($cachable = false, $urlparams = false)
	{
		// Get the document object.
		$document	= JFactory::getDocument();
		$vName		= 'registrations';
		$vFormat	= 'raw';

		// Get and render the view.
		if ($view = $this->getView($vName, $vFormat))
		{
			// Get the model for the view.
			$model = $this->getModel($vName);

			// Load the filter state.
			$app = JFactory::getApplication();

			$published = $app->getUserState($this->context . '.filter.state');
			$model->setState('filter.state', $published);

			$eventId = $app->getUserState($this->context . '.filter.events');
			$model->setState('filter.events', $eventId);

			$date = $app->getUserState($this->context . '.filter.dates');
			$model->setState('filter.dates', $date);

			$model->setState('list.limit', 0);
			$model->setState('list.start', 0);

			$input = JFactory::getApplication()->input;
			$form  = $input->get('jform', array(), 'array');

			$model->setState('event_title', $form['event_title']);
			$model->setState('date', $form['date']);
			$model->setState('tickets', $form['tickets']);
			$model->setState('name', $form['name']);
			$model->setState('email', $form['email']);
			$model->setState('phone', $form['phone']);
			$model->setState('customfields', $form['customfields']);
			$model->setState('notes', $form['notes']);
			$model->setState('status', $form['status']);

			$model->setState('basename', $form['basename']);
			$model->setState('separator', $form['separator']);
			$model->setState('compressed', $form['compressed']);

			$config = JFactory::getConfig();
			$cookie_domain = $config->get('cookie_domain', '');
			$cookie_path = $config->get('cookie_path', '/');

			// Joomla 3
			if (version_compare(JVERSION, '3.0', 'ge'))
			{
				setcookie(JApplicationHelper::getHash($this->context . '.event_title'), $form['event_title'], time() + 365 * 86400, $cookie_path, $cookie_domain);
				setcookie(JApplicationHelper::getHash($this->context . '.date'), $form['date'], time() + 365 * 86400, $cookie_path, $cookie_domain);
				setcookie(JApplicationHelper::getHash($this->context . '.tickets'), $form['tickets'], time() + 365 * 86400, $cookie_path, $cookie_domain);
				setcookie(JApplicationHelper::getHash($this->context . '.name'), $form['name'], time() + 365 * 86400, $cookie_path, $cookie_domain);
				setcookie(JApplicationHelper::getHash($this->context . '.email'), $form['email'], time() + 365 * 86400, $cookie_path, $cookie_domain);
				setcookie(JApplicationHelper::getHash($this->context . '.phone'), $form['phone'], time() + 365 * 86400, $cookie_path, $cookie_domain);
				setcookie(JApplicationHelper::getHash($this->context . '.customfields'), $form['customfields'], time() + 365 * 86400, $cookie_path, $cookie_domain);
				setcookie(JApplicationHelper::getHash($this->context . '.notes'), $form['notes'], time() + 365 * 86400, $cookie_path, $cookie_domain);
				setcookie(JApplicationHelper::getHash($this->context . '.status'), $form['status'], time() + 365 * 86400, $cookie_path, $cookie_domain);

				setcookie(JApplicationHelper::getHash($this->context . '.basename'), $form['basename'], time() + 365 * 86400, $cookie_path, $cookie_domain);
				setcookie(JApplicationHelper::getHash($this->context . '.separator'), $form['separator'], time() + 365 * 86400, $cookie_path, $cookie_domain);
				setcookie(JApplicationHelper::getHash($this->context . '.compressed'), $form['compressed'], time() + 365 * 86400, $cookie_path, $cookie_domain);
			}
			// Joomla 2.5
			else
			{
				setcookie(JApplication::getHash($this->context.'.basename'), $form['basename'], time() + 365 * 86400, $cookie_path, $cookie_domain);
				setcookie(JApplication::getHash($this->context.'.separator'), $form['separator'], time() + 365 * 86400, $cookie_path, $cookie_domain);
				setcookie(JApplication::getHash($this->context.'.compressed'), $form['compressed'], time() + 365 * 86400, $cookie_path, $cookie_domain);
			}

			// Push the model into the view (as default).
			$view->setModel($model, true);

			// Push document object into the view.
			$view->document = $document;

			$view->display();
		}
	}
}
controllers/themes.php000060400000003354152455705350011124 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.0 2013-06-03
 * @since       2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.controllerform');
jimport('joomla.client.helper');

class iCagendaControllerthemes extends JControllerForm
{
	protected	$option 		= 'com_icagenda';

	function __construct() {
		parent::__construct();
		$this->registerTask( 'themeinstall'  , 	'themeinstall' );
	}

	function themeinstall() {

		JRequest::checkToken() or die( 'Invalid Token' );
		$post	= JRequest::get('post');
		$theme = array();

		if (isset($post['theme_component'])) {
			$theme['component'] = 1;
		}

		if (empty($theme)) {

			$ftp =& JClientHelper::setCredentialsFromRequest('ftp');

			$model	= &$this->getModel( 'themes' );

			if ($model->install($theme)) {
				$cache = &JFactory::getCache('mod_menu');
				$cache->clean();
				$msg = JText::_('COM_ICAGENDA_SUCCESS_THEME_INSTALLED');
			}
		} else {
			$msg = JText::_('COM_ICAGENDA_ERROR_THEME_APPLICATION_AREA');
		}

		$this->setRedirect( 'index.php?option=com_icagenda&view=themes', $msg );
	}

	function cancel() {
		$this->setRedirect( 'index.php?option=com_icagenda' );
	}

}
?>
controllers/event.php000060400000007044152455705350010760 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     2.1 2013-02-17
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.controllerform');

/**
 * Event controller class.
 */
class iCagendaControllerEvent extends JControllerForm
{
    function __construct()
    {
        $this->view_list = 'events';
        parent::__construct();
    }

	/**
	 * Method override to check if you can add a new record.
	 *
	 * @param   array  $data  An array of input data.
	 *
	 * @return  boolean
	 *
	 * @since   1.6
	 */
	protected function allowAdd($data = array())
	{
		// Initialise variables.
		$user = JFactory::getUser();
		$categoryId = JArrayHelper::getValue($data, 'catid', JRequest::getInt('filter_category_id'), 'int');
		$allow = null;

		if ($categoryId)
		{
			// If the category has been passed in the data or URL check it.
			$allow = $user->authorise('core.create', 'com_icagenda.category.' . $categoryId);
		}

		if ($allow === null)
		{
			// In the absense of better information, revert to the component permissions.
			return parent::allowAdd();
		}
		else
		{
			return $allow;
		}
	}

	/**
	 * Method override to check if you can edit an existing record.
	 *
	 * @param   array   $data  An array of input data.
	 * @param   string  $key   The name of the key for the primary key.
	 *
	 * @return  boolean
	 *
	 * @since   1.6
	 */
	protected function allowEdit($data = array(), $key = 'id')
	{
		// Initialise variables.
		$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
		$user = JFactory::getUser();
		$userId = $user->get('id');

		// Check general edit permission first.
		if ($user->authorise('core.edit', 'com_icagenda.event.' . $recordId))
		{
			return true;
		}

		// Fallback on edit.own.
		// First test if the permission is available.
		if ($user->authorise('core.edit.own', 'com_icagenda.event.' . $recordId))
		{
			// Now test the owner is the user.
			$ownerId = (int) isset($data['created_by']) ? $data['created_by'] : 0;
			if (empty($ownerId) && $recordId)
			{
				// Need to do a lookup from the model.
				$record = $this->getModel()->getItem($recordId);

				if (empty($record))
				{
					return false;
				}

				$ownerId = $record->created_by;
			}

			// If the owner matches 'me' then do the test.
			if ($ownerId == $userId)
			{
				return true;
			}
		}

		// Since there is no asset tracking, revert to the component permissions.
		return parent::allowEdit($data, $key);
	}

	/**
	 * Method to run batch operations.
	 *
	 * @param   object  $model  The model.
	 *
	 * @return  boolean	 True if successful, false otherwise and internal error is set.
	 *
	 * @since   1.6
	 */
	public function batch($model = null)
	{
		JRequest::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

		// Set the model
		$model = $this->getModel('Event', '', array());

		// Preset the redirect
		$this->setRedirect(JRoute::_('index.php?option=com_icagenda&view=events' . $this->getRedirectToListAppend(), false));

		return parent::batch($model);
	}
}
controllers/icagenda.php000060400000002235152455705350011367 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rez�, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rez� (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.0 2013-05-05
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.controlleradmin');

/**
 * Categories list controller class.
 */
// J2.5 : class iCagendaControlleriCagenda extends JControllerAdmin
class iCagendaControlleriCagenda extends JControllerLegacyAdmin
{
	/**
	 * Proxy for getModel.
	 * @since	1.6
	 */
	public function &getModel($name = 'icagenda', $prefix = 'iCagendaModel')
	{
		$model = parent::getModel($name, $prefix, array('ignore_request' => true));
		return $model;
	}
}
controllers/registrations.php000060400000002144152455705350012530 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rez�, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rez� (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.9 2015-07-22
 * @since       2.0.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.controlleradmin');

/**
 * Registrations list controller class.
 */
class iCagendaControllerRegistrations extends JControllerAdmin
{
	/**
	 * Proxy for getModel.
	 * @since	2.0.0
	 */
	public function getModel($name = 'registration', $prefix = 'iCagendaModel', $config = array('ignore_request' => true))
	{
		return parent::getModel($name, $prefix, $config);
	}
}
controllers/feature.php000060400000001674152455705350011275 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      doorknob
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-07-02
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.controllerform');

/**
 * Feature controller class.
 */
class iCagendaControllerFeature extends JControllerForm
{
	function __construct()
	{
		$this->view_list = 'features';

		parent::__construct();
	}
}
controllers/index.html000060400000000032152455705350011111 0ustar00<html><body></body></html>script.icagenda.pro.php000060400000125416152455705350011132 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda PRO v3 by Jooml!C - Events Management Extension - Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.12 2015-10-12
 * @since       2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

//Système Installation/Mises à jour, composant iCagenda http://www.joomlic.com
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');


class com_icagendaInstallerScript
{
	/*
	 * $parent is the class calling this method.
	 * $type is the type of change (install, update or discover_install, not uninstall).
	 * preflight runs before anything else and while the extracted files are in the uploaded temp folder.
	 * If preflight returns false, Joomla will abort the update and undo everything already done.
	 */
	private $ictype = 'pro';

	/** @var array The list of extra modules and plugins to install */
	private $installation_queue = array(
		// modules => { (folder) => { (module) => { (position), (published) } }* }*
		'modules' => array(
			'admin' => array(
			),
			'site' => array(
				'mod_iccalendar'	=> array('', 0),
			)
		),
		// plugins => { (folder) => { (element) => (published) }* }*
		// plugins => { (folder) => { (element) => { (name), (published) } }* }*
		'plugins' => array(
			'system' => array(
				'ic_autologin'		=> array('System - iCagenda :: Autologin', 1),
				'ic_library'		=> array('System - iC Library', 1),
			),
			'search' => array(
				'icagenda'			=> array('Search - iCagenda', 1),
			)
		)
	);

	/** @var array Obsolete files and folders to remove from the iCagenda oldest releases*/
	private $icagendaRemoveFiles = array(
		'files'	=> array(
			'components/com_icagenda/views/list/tmpl/search.php',
			'components/com_icagenda/views/list/tmpl/search.xml',
			'modules/mod_iccalendar/js/bottomcenter_function.js',
			'modules/mod_iccalendar/js/center_function.js',
			'modules/mod_iccalendar/js/left_function.js',
			'modules/mod_iccalendar/js/right_function.js',
			'modules/mod_iccalendar/js/topcenter_function.js',
			'components/com_icagenda/helpers/icmodcalendar.php',
			'administrator/components/com_icagenda/models/fields/eventtitle.php',
			'components/com_icagenda/themes/packs/ic_rounded/ic_rounded_alldates.php',
			'media/com_icagenda/icicons/lte-ie7.js',
			'media/com_icagenda/icicons/fonts/iCicons.dev.svg',
			'media/com_icagenda/icicons/selection.json',
			'modules/mod_iccalendar/js/function.js',
			'modules/mod_iccalendar/js/function_312.js',
			'modules/mod_iccalendar/js/function_316.js',
			'modules/mod_iccalendar/js/ictip.js',
			'components/com_icagenda/themes/packs/default/default_list.php',
			'components/com_icagenda/themes/packs/ic_rounded/ic_rounded_list.php',
			'media/com_icagenda/images/iconicagenda48 - copie.png',
			'administrator/components/com_icagenda/views/event/tmpl/ajaxfile.php',
			'administrator/components/com_icagenda/views/registration/tmpl/default.php',
			'administrator/components/com_icagenda/models/fields/modal/time.php',
			'administrator/components/com_icagenda/UPDATELOGS.php',
			'administrator/components/com_icagenda/sql/install.mysql.utf8.sql',
			'administrator/components/com_icagenda/sql/uninstall.mysql.utf8.sql',
			'administrator/components/com_icagenda/models/fields/custom_field.php',
//			'modules/mod_ic_event_list/css/icrounded-full_style.css', // dev. PRO
//			'modules/mod_ic_event_list/tmpl/icrounded-full.php', // dev. PRO
			'administrator/components/com_icagenda/tables/mail.php',
			'administrator/components/com_icagenda/models/fields/modal/mailinglist.php',
		),
		'folders' => array(
			'modules/mod_iccalendar/tmpl',
			'components/com_icagenda/views/event',
			'components/com_icagenda/css',
			'modules/mod_ic_event_list/language',
			'modules/mod_iccalendar/language',
			'administrator/components/com_icagenda/add/js',
			'components/com_icagenda/add/js',
			'media/com_icagenda/scripts',
			'components/com_icagenda/js',
			'administrator/components/com_icagenda/add/css',
			'components/com_icagenda/add/css',
			'administrator/components/com_icagenda/add/image',
			'components/com_icagenda/add/image',
			'administrator/components/com_icagenda/globalization',
			'administrator/components/com_icagenda/add',
			'components/com_icagenda/views/events',
		)
	);


	private function _removeObsoleteFilesAndFolders($icagendaRemoveFiles)
	{
		// Remove files
		jimport('joomla.filesystem.file');
		if(!empty($icagendaRemoveFiles['files'])) foreach($icagendaRemoveFiles['files'] as $file) {
			$f = JPATH_ROOT.'/'.$file;
			if(!JFile::exists($f)) continue;
			JFile::delete($f);
		}

		// Remove folders
		jimport('joomla.filesystem.file');
		if(!empty($icagendaRemoveFiles['folders'])) foreach($icagendaRemoveFiles['folders'] as $folder) {
			$f = JPATH_ROOT.'/'.$folder;
			if(!JFolder::exists($f)) continue;
			JFolder::delete($f);
		}
	}

	function preflight( $type, $parent )
	{
		$jversion = new JVersion();

		// Installing component manifest file version
		$this->release = $parent->get( "manifest" )->version;

		// Manifest file minimum Joomla version
		$this->minimum_joomla_release = $parent->get( "manifest" )->attributes()->version;

		// Load translations
		$language = JFactory::getLanguage();
		$language->load('com_icagenda.sys', JPATH_ADMINISTRATOR, 'en-GB', true);
		$language->load('com_icagenda.sys', JPATH_ADMINISTRATOR, null, true);

//		if (version_compare(phpversion(), '5.3.0', '<')) {
//			JError::raiseWarning( 100, '<span class="icon-warning"></span><b> '.JText::sprintf('COM_ICAGENDA_YOUR_PHP_VERSION_IS', phpversion()).'</b><br />'.JText::_('COM_ICAGENDA_PHP_VERSION_JOOMLA_RECOMMENDED').' ( '.JText::_('IC_READMORE').': <a href="http://www.joomla.org/technical-requirements.html" target="_blanck">http://www.joomla.org/technical-requirements.html</a> )<br />'.JText::_('COM_ICAGENDA_PHP_VERSION_ICAGENDA_RECOMMENDATION').'' );
//		}

		echo '<table><tr><td><img src="../media/com_icagenda/images/logo_icagenda.png" /></td><td width="10px"></td><td style="font-size: 20px"><b>' . JText::_('COM_ICAGENDA') . '&trade; PRO<span style="font-size: 11px"> v '.$this->release.' </span></b><br /><span style="font-size: 16px; color:#555555;">' . JText::_('COM_ICAGENDA_XML_DESCRIPTION') . '</span><br /><br /><span style="font-size: 13px">&#8226; <b>' . JText::_('COM_ICAGENDA_FEATURES_LANGUAGES') . '</b> English <img src="../media/mod_languages/images/en.gif" height="10px"/> - French <img src="../media/mod_languages/images/fr.gif" height="10px"/> - Italian <img src="../media/mod_languages/images/it.gif" height="10px"/><br />'
		.'&#8226; <b>' . JText::_('COM_ICAGENDA_FEATURES_TRANSLATION_PACKS') . '</b> '
		.'Arabic (Unitag) <img src="../media/mod_languages/images/ar.gif" alt="" height="10px"/> - '
		.'Basque <img src="../media/mod_languages/images/eu_es.gif" alt="" height="10px"/> - '
		.'Catalan <img src="../media/mod_languages/images/ca.gif" alt="" height="10px"/> - '
		.'Chinese (Taiwan) <img src="../media/mod_languages/images/tw.gif" alt="" height="10px"/> - '
		.'Croatian <img src="../media/mod_languages/images/hr.gif" alt="" height="10px"/> - '
		.'Czech <img src="../media/mod_languages/images/cz.gif" alt="" height="10px"/> - '
		.'Danish <img src="../media/mod_languages/images/dk.gif" alt="" height="10px"/> - '
		.'Dutch <img src="../media/mod_languages/images/nl.gif" alt="" height="10px"/> - '
		.'English (USA) <img src="../media/mod_languages/images/us.gif" alt="" height="10px"/> - '
		.'Esperanto <img src="../media/mod_languages/images/eo.gif" alt="" height="10px"/> - '
		.'Estonian <img src="../media/mod_languages/images/et.gif" alt="" height="10px"/> - '
		.'Finnish <img src="../media/mod_languages/images/fi.gif" alt="" height="10px"/> - '
		.'German <img src="../media/mod_languages/images/de.gif" alt="" height="10px"/> - '
		.'Greek <img src="../media/mod_languages/images/el.gif" alt="" height="10px"/> - '
		.'Hungarian <img src="../media/mod_languages/images/hu.gif" alt="" height="10px"/> - '
		.'Japanese <img src="../media/mod_languages/images/ja.gif" alt="" height="10px"/> - '
		.'Latvian <img src="../media/mod_languages/images/lv.gif" alt="" height="10px"/> - '
		.'Lithuanian <img src="../media/mod_languages/images/lt.gif" alt="" height="10px"/> - '
		.'Luxembourgish <img src="../media/mod_languages/images/icon-16-language.png" alt="" height="10px"/> - '
		.'Norwegian <img src="../media/mod_languages/images/no.gif" alt="" height="10px"/> - '
		.'Polish <img src="../media/mod_languages/images/pl.gif" alt="" height="10px"/> - '
		.'Portuguese (Brasil) <img src="../media/mod_languages/images/pt_br.gif" alt="" height="10px"/> - '
		.'Portuguese <img src="../media/mod_languages/images/pt.gif" alt="" height="10px"/> - '
		.'Romanian <img src="../media/mod_languages/images/ro.gif" alt="" height="10px"/> - '
		.'Russian <img src="../media/mod_languages/images/ru.gif" alt="" height="10px"/> - '
		.'Serbian (latin) <img src="../media/mod_languages/images/sr.gif" alt="" height="10px"/> - '
		.'Slovak <img src="../media/mod_languages/images/sk.gif" alt="" height="10px"/> - '
		.'Slovenian <img src="../media/mod_languages/images/sl.gif" alt="" height="10px"/> - '
		.'Spanish <img src="../media/mod_languages/images/es.gif" alt="" height="10px"/> - '
		.'Swedish <img src="../media/mod_languages/images/sv.gif" alt="" height="10px"/> - '
		.'Ukrainian <img src="../media/mod_languages/images/uk.gif" alt="" height="10px"/>'
		.'<br />&#8226; ' . JText::_('COM_ICAGENDA_FEATURES_BACKEND') . '<br />&#8226; ' . JText::_('COM_ICAGENDA_FEATURES_FRONTEND') . '<br /></span></td></tr></table><br /><br />';


		if ( $type != 'install' )
		{
			echo '<span style="text-transform:uppercase; font-size: 14px"><b>' . JText::_('COM_ICAGENDA_WELCOME_1') . $this->release . '</span>';
			echo '<span style="text-transform:uppercase; font-size: 14px">' . JText::_('COM_ICAGENDA_WELCOME_2') . '</b></span>';
			echo '<span style="text-transform:uppercase; letter-spacing: 3px; font-size: 14px">' . JText::_('COM_ICAGENDA_WELCOME_3') . '</span><br /><br />';
			echo '<div style="margin-left:10px"><span style="font-size: 16px; color:#555555;">'.JText::_('COM_ICAGENDA_VIDEO_GETTING_STARTED') . '</span>';
			$urlposter = '../media/com_icagenda/images/video_poster_icagenda.jpg';
			?>

			<div onclick="thevid=document.getElementById('thevideo'); thevid.style.display='block'; this.style.display='none'">
				<img style="cursor: pointer;" src="<?php echo $urlposter; ?>" alt=""  width="500px" />
			</div>

			<div id="thevideo" style="display: none;">
				<iframe src="http://www.joomlic.com/_icagenda/<?php echo $this->ictype; ?>/tutorial_video_install.html" frameborder="0" width="500px" height="340" scrolling="no"></iframe>
			</div>

			<div style="color:#333; margin-top: 5px; font-size: 0.8em;">
				© <?php echo date("Y"); ?> <?php echo JText::_('COM_ICAGENDA_VIDEO_TUTORIALS');?> - Giuseppe Bosco (giusebos) | <a href="http://www.newideasproject.com/" target="_blanck">www.newideasproject.com</a>
			</div>

			<div style="color:#333; margin-top: 5px; font-size: 0.8em; line-height:14px; height:30px;">
				<a href="http://www.youtube.com/user/iCagenda" target="_blank"><img src='../media/com_icagenda/images/youtube_iCagenda.png' style='vertical-align:bottom;' /></a> : <a href="http://www.youtube.com/user/iCagenda" target="_blanck"><?php echo JText::_('COM_ICAGENDA_VIDEO_TUTORIALS');?></a>
			</div>
			<br />
			</div>
			<?php
		}

		// Show the essential information at the install/update back-end
		echo '<br /><p style="font-size: 10px">' . JText::_('COM_ICAGENDA_INSTALL_THIS_RELEASE') . '<b> '.$this->release.'</b>';
		if ( $type == 'update' ) {
			echo '<br />'.JText::_('COM_ICAGENDA_INSTALL_CACHE_VERSION') . '<b> '.$this->getParam('version').'</b>';
		}
		echo '<br />'.JText::_('COM_ICAGENDA_INSTALL_MINIMUM_JOOMLA_VERSION') . '<b> '.$this->minimum_joomla_release.'</b>';
		echo '<br />'.JText::_('COM_ICAGENDA_INSTALL_CURRENT_JOOMLA_VERSION') . '<b> '.$jversion->getShortVersion().'</b><br /><br />';

		// Abort if the current Joomla release is older
		if (version_compare($jversion->getShortVersion(), $this->minimum_joomla_release, 'lt'))
		{
			Jerror::raiseWarning(null, ' ' . JText::_('COM_ICAGENDA_INSTALL_ERROR_JOOMLA_VERSION') . ' ' . $this->minimum_joomla_release);

			return false;
		}

		// Abort if Joomla 3 release is prior to 3.2.3
		if (version_compare(JVERSION, '3.0.0', 'ge')
			&& version_compare(JVERSION, '3.2.3', 'lt'))
		{
			JFactory::getApplication()->enqueueMessage(JText::_('COM_ICAGENDA_INSTALL_ERROR_JOOMLA_VERSION') . ' ' . '3.2.3', 'error');

			return false;
		}


		// Abort if the component being installed is not newer than the currently installed version
		if ($type == 'update')
		{
			echo '<span style="text-transform:uppercase; font-size: 14px"><b>' . JText::_('COM_ICAGENDA') . ' : ' . JText::_('COM_ICAGENDA_UPDATE') . ' ' . $this->release . ' !</b></span><br><br>';
			$oldRelease = $this->getParam('version');
			$rel = ' ' . $oldRelease . ' to ' . $this->release;
//			if ( version_compare( $this->release, $oldRelease, 'le' ) ) {
//				Jerror::raiseWarning(null, ' ' . JText::_('COM_ICAGENDA_INSTALL_INCORRECT_VERSION') . ' ' . $rel);
//				return false;
//			}

		}
		else
		{
			$rel = $this->release;
		}

//		echo '<span style="text-transform:uppercase; font-size: 8px">' . JText::_('COM_ICAGENDA_PREFLIGHT_') . ': ' . $type . $rel . ' | </span>';
	}

	/*
	 * $parent is the class calling this method.
	 * install runs after the database scripts are executed.
	 * If the extension is new, the install method is run.
	 * If install returns false, Joomla will abort the install and undo everything already done.
	 */
	function install( $parent )
	{
		// Load language
		JFactory::getLanguage()->load('com_installer', JPATH_ADMINISTRATOR);
		$module_type = JText::_( 'COM_INSTALLER_TYPE_TYPE_MODULE' );
		$plugin_type = JText::_( 'COM_INSTALLER_TYPE_TYPE_PLUGIN' );
		$library_type = JText::_( 'COM_INSTALLER_TYPE_TYPE_LIBRARY' );

		// Addons install (library, modules, plugins)
		$db = JFactory::getDbo();
		$manifest = $parent->get("manifest");
		$parent = $parent->getParent();
		$source = $parent->getPath("source");
		$installer = new JInstaller();
		$installLibraries = array();
		$installModules = array();
		$installPlugins = array();
		echo '<div><i>'.JText::_('JTOOLBAR_INSTALL').'</i></div>';

        // Proceed Libraries Install
		if (is_object($manifest->libraries) && isset($manifest->libraries->library))
		{
			foreach($manifest->libraries->library as $library)
			{
				$attributes = $library->attributes();
				$lib = $source.'/'.$attributes['folder'].'/'.$attributes['library'];
				$installer->install($lib);
				$installLibraries[] =  $attributes['library'];
				$installed_lib = '<b>'.$attributes['name'].'</b>';
				echo '<div><span style="color:blue">['.$library_type.']</span> '.JText::sprintf( 'COM_INSTALLER_INSTALL_SUCCESS', $installed_lib ).' &#8680; <span style="color:green"><b>'.JText::_( 'JPUBLISHED' ).'</b></span></div>';
			}
		}

        // Proceed Modules Install
		if (is_object($manifest->modules) && isset($manifest->modules->module))
		{
         foreach($manifest->modules->module as $module)
			{
				$attributes = $module->attributes();
				$mod = $source.'/'.$attributes['folder'].'/'.$attributes['module'];
				$installer->install($mod);
				$installed_mod = '<b>'.$attributes['name'].'</b>';
				echo '<div><span style="color:blue">['.$module_type.']</span> '.JText::sprintf( 'COM_INSTALLER_INSTALL_SUCCESS', $installed_mod ).' &#8680; <span style="color:red"><b>'.JText::_( 'JUNPUBLISHED' ).'</b></span></div>';
            }
        }

        // Proceed Plugins Install
		$this->_installAddons($parent, $source);

		echo '<br /><br />';

//		echo '<span style="text-transform:uppercase; font-size: 8px"><b>' . JText::_('COM_ICAGENDA_INSTALL') . $this->release . '</b> | </span>';
		// You can have the backend jump directly to the newly installed component configuration page
		// $parent->getParent()->setRedirectURL('index.php?option=com_democompupdate');


		// Get Joomla Images PATH setting
		$params = JComponentHelper::getParams('com_media');
		$image_path = $params->get('image_path');

		// Create Folder iCagenda in ROOT/IMAGES_PATH/icagenda
		$folder[0][0]	=	'icagenda/' ;
		$folder[0][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folder[0][0];
		$folder[1][0]	=	'icagenda/files/';
		$folder[1][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folder[1][0];
		$folder[2][0]	=	'icagenda/thumbs/';
		$folder[2][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folder[2][0];
		$folder[3][0]	=	'icagenda/thumbs/system/';
		$folder[3][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folder[3][0];
		$folder[4][0]	=	'icagenda/thumbs/themes/';
		$folder[4][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folder[4][0];
		$folder[5][0]	=	'icagenda/thumbs/copy/';
		$folder[5][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folder[5][0];
		$folder[6][0]	=	'icagenda/feature_icons/';
		$folder[6][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folder[6][0];
		$folder[7][0]	=	'icagenda/feature_icons/16_bit';
		$folder[7][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folder[7][0];
		$folder[8][0]	=	'icagenda/feature_icons/24_bit';
		$folder[8][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folder[8][0];
		$folder[9][0]	=	'icagenda/feature_icons/32_bit';
		$folder[9][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folder[9][0];
		$folder[10][0]	=	'icagenda/feature_icons/48_bit';
		$folder[10][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folder[10][0];
		$folder[11][0]	=	'icagenda/feature_icons/64_bit';
		$folder[11][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folder[11][0];


		$message = '<div><i>'.JText::_('COM_ICAGENDA_FOLDER_CREATION').'</i></div>';
		$error	 = array();
		foreach ($folder as $key => $value)
		{
			if (!JFolder::exists( $value[1]))
			{
				if (JFolder::create( $value[1], 0755 ))
				{

					$data = "<html>\n<body bgcolor=\"#FFFFFF\">\n</body>\n</html>";
					JFile::write($value[1]."/index.html", $data);
					$message .= '<div><b><span style="color:#009933">'.JText::_('COM_ICAGENDA_FOLDER').'</span> ' . $image_path.'/'.$value[0]
							   .' <span style="color:#009933">'.JText::_('COM_ICAGENDA_CREATED').'</span></b></div>';
					$error[] = 0;
				}
				else
				{
					$message .= '<div><b><span style="color:#CC0033">'.JText::_('COM_ICAGENDA_FOLDER').'</span> ' . $image_path.'/'.$value[0]
							   .' <span style="color:#CC0033">'.JText::_('COM_ICAGENDA_CREATION_FAILED').'</span></b> '.JText::_('COM_ICAGENDA_PLEASE_CREATE_MANUALLY').'</div>';
					$error[] = 1;
				}
			}
			else//Folder exist
			{
				$message .= '<div><b><span style="color:#009933">'.JText::_('COM_ICAGENDA_FOLDER').'</span> ' . $image_path.'/'.$value[0]
							   .' <span style="color:#009933">'.JText::_('COM_ICAGENDA_EXISTS').'</span></b></div>';
				$error[] = 0;
			}
		}

		$message.= '<br /><br />';
		echo $message;


	}

	/*
	 * $parent is the class calling this method.
	 * update runs after the database scripts are executed.
	 * If the extension exists, then the update method is run.
	 * If this returns false, Joomla will abort the update and undo everything already done.
	 */
	function update( $parent )
	{
		// Load language
		JFactory::getLanguage()->load('com_installer', JPATH_ADMINISTRATOR);
		$module_type = JText::_( 'COM_INSTALLER_TYPE_TYPE_MODULE' );
		$plugin_type = JText::_( 'COM_INSTALLER_TYPE_TYPE_PLUGIN' );
		$library_type = JText::_( 'COM_INSTALLER_TYPE_TYPE_LIBRARY' );

		// Addons update (library, modules, plugins)
		$db = JFactory::getDbo();
		$manifest = $parent->get("manifest");
		$parent = $parent->getParent();
		$source = $parent->getPath("source");
		$installer = new JInstaller();
		$installLibraries = array();
		$installModules = array();
		$installPlugins = array();
		echo '<div><i>'.JText::_('COM_INSTALLER_TOOLBAR_UPDATE').'</i></div>';

		// Pre-test iC Library
		$query	= $db->getQuery(true);
		$query->select('p.enabled')
			->from('`#__extensions` AS p')
			->where($db->qn('type').' = '.$db->q('library'))
			->where($db->qn('element').' = '.$db->q('lib_ic_library'));
		$db->setQuery($query);
		$ic_library_ok = $db->loadResult();

		// Proceed Libraries Update
		if (is_object($manifest->libraries) && isset($manifest->libraries->library))
		{
			foreach($manifest->libraries->library as $library)
			{
				$attributes = $library->attributes();
				$lib = $source.'/'.$attributes['folder'].'/'.$attributes['library'];
				$installer->install($lib);
				$element = $attributes['element'];
				$installLibraries[] =  $attributes['library'];
				$installed_lib = '<b>'.$attributes['name'].'</b>';
				if (($ic_library_ok == '1') AND ($element == 'lib_ic_library'))
				{
					echo '<div><span style="color:orange">['.$library_type.']</span> '.JText::sprintf( 'COM_INSTALLER_MSG_UPDATE_SUCCESS', $installed_lib ).' </div>';
				}
				else
				{
					echo '<div><span style="color:orange">['.$library_type.']</span> '.JText::sprintf( 'COM_INSTALLER_INSTALL_SUCCESS', $installed_lib ).' &#8680; <span style="color:green"><b>'.JText::_( 'JPUBLISHED' ).'</b></span></div>';
				}
			}
		}

        // Proceed Modules Update
		if (is_object($manifest->modules) && isset($manifest->modules->module))
		{
         foreach($manifest->modules->module as $module)
			{
				$attributes = $module->attributes();
				$mod = $source.'/'.$attributes['folder'].'/'.$attributes['module'];
				$installer->install($mod);
				$installModules[] =  $attributes['module'];
				$installed_mod = '<b>'.$attributes['name'].'</b>';

				echo '<div><span style="color:red">['.$module_type.']</span> '.JText::sprintf( 'COM_INSTALLER_MSG_UPDATE_SUCCESS', $installed_mod ).' </div>';
            }
        }

        // Proceed Plugins Update
		$this->_installAddons($parent, $source);

		echo '<br /><br />';

//		echo '<span style="text-transform:uppercase; font-size: 8px">' . JText::_('COM_ICAGENDA_UPDATE') . $this->release . ' | </span>';
		// You can have the backend jump directly to the newly updated component configuration page
		// $parent->getParent()->setRedirectURL('index.php?option=com_democompupdate');


		// Get Joomla Images PATH setting
		$params = JComponentHelper::getParams('com_media');
		$image_path = $params->get('image_path');

		// Create Folder iCagenda in ROOT/IMAGES_PATH/icagenda
		$folderimg[0][0]	=	'icagenda/' ;
		$folderimg[0][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folderimg[0][0];
		$folderimg[1][0]	=	'icagenda/files/';
		$folderimg[1][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folderimg[1][0];
		$folderimg[2][0]	=	'icagenda/thumbs/';
		$folderimg[2][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folderimg[2][0];
		$folderimg[3][0]	=	'icagenda/thumbs/system/';
		$folderimg[3][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folderimg[3][0];
		$folderimg[4][0]	=	'icagenda/thumbs/themes/';
		$folderimg[4][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folderimg[4][0];
		$folderimg[5][0]	=	'icagenda/thumbs/copy/';
		$folderimg[5][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folderimg[5][0];
		$folderimg[6][0]	=	'icagenda/feature_icons/';
		$folderimg[6][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folderimg[6][0];
		$folderimg[7][0]	=	'icagenda/feature_icons/16_bit';
		$folderimg[7][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folderimg[7][0];
		$folderimg[8][0]	=	'icagenda/feature_icons/24_bit';
		$folderimg[8][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folderimg[8][0];
		$folderimg[9][0]	=	'icagenda/feature_icons/32_bit';
		$folderimg[9][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folderimg[9][0];
		$folderimg[10][0]	=	'icagenda/feature_icons/48_bit';
		$folderimg[10][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folderimg[10][0];
		$folderimg[11][0]	=	'icagenda/feature_icons/64_bit';
		$folderimg[11][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folderimg[11][0];


		$message = '<div><i>'.JText::_('COM_ICAGENDA_FOLDER_CREATION').'</i></div>';
		$error	 = array();
		foreach ($folderimg as $key => $value)
		{
			if (!JFolder::exists( $value[1]))
			{
				if (JFolder::create( $value[1], 0755 ))
				{

					$data = "<html>\n<body bgcolor=\"#FFFFFF\">\n</body>\n</html>";
					JFile::write($value[1]."/index.html", $data);
					$message .= '<div><b><span style="color:#009933">'.JText::_('COM_ICAGENDA_FOLDER').'</span> ' . $image_path.'/'.$value[0]
							   .' <span style="color:#009933">'.JText::_('COM_ICAGENDA_CREATED').'</span></b></div>';
					$error[] = 0;
				}
				else
				{
					$message .= '<div><b><span style="color:#CC0033">'.JText::_('COM_ICAGENDA_FOLDER').'</span> ' . $image_path.'/'.$value[0]
							   .' <span style="color:#CC0033">'.JText::_('COM_ICAGENDA_CREATION_FAILED').'</span></b> '.JText::_('COM_ICAGENDA_PLEASE_CREATE_MANUALLY').'</div>';
					$error[] = 1;
				}
			}
			else//Folder exist
			{
				$message .= '<div><b><span style="color:#009933">'.JText::_('COM_ICAGENDA_FOLDER').'</span> ' . $image_path.'/'.$value[0]
							   .' <span style="color:#009933">'.JText::_('COM_ICAGENDA_EXISTS').'</span></b></div>';
				$error[] = 0;
			}
		}

		$message.= '<br /><br />';

		echo $message;
	}


	/**
	 * Installs subextensions (modules, plugins) bundled with the main extension
	 * NOTE: Currently installing only plugins (3.4.0-alpha). Modules install to be added later.
	 *
	 * @param JInstaller $parent
	 *
	 * @return JObject The subextension installation status
	 */
	private function _installAddons($parent, $source)
	{
		// Load language
		JFactory::getLanguage()->load('com_installer', JPATH_ADMINISTRATOR);
		$module_type = JText::_( 'COM_INSTALLER_TYPE_TYPE_MODULE' );
		$plugin_type = JText::_( 'COM_INSTALLER_TYPE_TYPE_PLUGIN' );
		$library_type = JText::_( 'COM_INSTALLER_TYPE_TYPE_LIBRARY' );

		$db = JFactory::getDbo();

		/*
		 * PLUGINS UPDATE
		 */

		// Pre-test if AutoLogin plugin is already installed
		$db->setQuery('SELECT `extension_id` FROM #__extensions WHERE `type` = "plugin" AND `element` = "ic_autologin" AND `folder` = "system"');
		$ic_autologin_ok = $db->loadResult();

		// Pre-test if iCagenda search plugin is already installed
		$db->setQuery('SELECT `extension_id` FROM #__extensions WHERE `type` = "plugin" AND `element` = "icagenda" AND `folder` = "search"');
		$search_ok = $db->loadResult();

		// Pre-test if iC Library plugin is already installed
		$db->setQuery('SELECT `extension_id` FROM #__extensions WHERE `type` = "plugin" AND `element` = "ic_library" AND `folder` = "system"');
		$plg_ic_library_ok = $db->loadResult();

		$status = new JObject();
		$status->plugins = array();


		// Plugins installation
		if (count($this->installation_queue['plugins']))
		{
			foreach ($this->installation_queue['plugins'] as $folder => $plugins)
			{
				if (count($plugins))
				{
					foreach ($plugins as $plugin => $pluginPreferences)
					{
						$path = "$source/plugins/$folder/$plugin";

						if (!is_dir($path))
						{
							$path = "$source/plugins/$folder/plg_$plugin";
						}

						if (!is_dir($path))
						{
							$path = "$source/plugins/$plugin";
						}

						if (!is_dir($path))
						{
							$path = "$source/plugins/plg_$plugin";
						}

						if (!is_dir($path))
						{
							continue;
						}

						// Was the plugin already installed?
						$query = $db->getQuery(true)
							->select('COUNT(*)')
							->from($db->qn('#__extensions'))
							->where($db->qn('element') . ' = ' . $db->q($plugin))
							->where($db->qn('folder') . ' = ' . $db->q($folder));
						$db->setQuery($query);

						try
						{
							$count = $db->loadResult();
						}
						catch (Exception $exc)
						{
							$count = 0;
						}

						$installer = new JInstaller;
						$result = $installer->install($path);

						$status->plugins[] = array('name' => 'plg_' . $plugin, 'group' => $folder, 'result' => $result);

						list($pluginName, $pluginPublished) = $pluginPreferences;

						if ($pluginPublished && !$count)
						{
							$query = $db->getQuery(true)
								->update($db->qn('#__extensions'))
								->set($db->qn('enabled') . ' = ' . $db->q('1'))
								->where($db->qn('element') . ' = ' . $db->q($plugin))
								->where($db->qn('folder') . ' = ' . $db->q($folder));
							$db->setQuery($query);

							try
							{
								$db->execute();
							}
							catch (Exception $exc)
							{
								// Nothing
							}
						}

						$pluginName = '<strong>'.$pluginName.'</strong>';

						if ($ic_autologin_ok && ($plugin == 'ic_autologin'))
						{
							echo '<div><span style="color:blue">['.$plugin_type.']</span> '.JText::sprintf( 'COM_INSTALLER_MSG_UPDATE_SUCCESS', $pluginName ).' </div>';
						}
						elseif ($search_ok && ($plugin == 'icagenda'))
						{
							echo '<div><span style="color:blue">['.$plugin_type.']</span> '.JText::sprintf( 'COM_INSTALLER_MSG_UPDATE_SUCCESS', $pluginName ).' </div>';
						}
						elseif ($plg_ic_library_ok && ($plugin == 'ic_library'))
						{
							echo '<div><span style="color:blue">['.$plugin_type.']</span> '.JText::sprintf( 'COM_INSTALLER_MSG_UPDATE_SUCCESS', $pluginName ).' </div>';
						}
						else
						{
							echo '<div><span style="color:blue">['.$plugin_type.']</span> '.JText::sprintf( 'COM_INSTALLER_INSTALL_SUCCESS', $pluginName ).' &#8680; <span style="color:green"><b>'.JText::_( 'JPUBLISHED' ).'</b></span></div>';
						}
					}
				}
			}
		}

		return $status;
	}


	/*
	 * $parent is the class calling this method.
	 * $type is the type of change (install, update or discover_install, not uninstall).
	 * postflight is run after the extension is registered in the database.
	 */
	function postflight( $type, $parent )
	{
		$this->release = $parent->get( "manifest" )->version;
		$oldRelease = $this->getParam('version');
		$icparams = JComponentHelper::getParams('com_icagenda');
		$oldSys = $icparams->get('icsys');

		// Fix old versions created date missing (runs if version previously installed is before 3.3.7)
		// update database to set a valid created date for events created with versions of iCagenda < 3.1.5,
		// and set in this order : modified date if valid or next/last date if valid or, at the end, will use current date.
		// (this fix is to prevent wrong 'Created on 30 November -0001' in search results)
		if ( version_compare( $oldRelease, '3.3.7', 'le' ) )
		{
			$db = JFactory::getDbo();
			$date = JFactory::getDate();
			$null_created = '0000-00-00 00:00:00';

			$query = $db->getQuery(true);
			$query->select('e.id, e.created, e.modified, e.next')
				->from('`#__icagenda_events` AS e')
				->where($db->qn('e.created').' = '.$db->q($null_created));
			$db->setQuery($query);
			$list_created_null = $db->loadObjectList();

			foreach ($list_created_null AS $cn)
			{
				if ($cn->modified != $null_created)
				{
					$new_created = $cn->modified;
				}
				elseif ($cn->next != $null_created)
				{
					$new_created = $cn->next;
				}
				else
				{
					$new_created = $date->toSql();
				}
				$query = $db->getQuery(true)
					->update($db->qn('#__icagenda_events'))
					->set($db->qn('created').' = '.$db->q($new_created))
					->where($db->qn('id').' = '.intval($cn->id));
				$db->setQuery($query);
				$db->execute();
			}
		}

		// Remove obsolete files and folders
		$icagendaRemoveFiles = $this->icagendaRemoveFiles;

		$this->_removeObsoleteFilesAndFolders($icagendaRemoveFiles);

		// always create or modify these parameters
		$params['version'] = ' PRO <b style="font-size:0.5em;">v ' . $this->release . '</b>';
		$params['release'] = $this->release;
		$params['author'] = 'JoomliC';
		$params['icsys'] = 'pro';
		if ($oldSys == 'core') $params['copy'] = NULL;

		// define the following parameters only if it is an original install
		if ( $type == 'install' ) {
			$params['copy'] = NULL;
			$params['atlist'] = '1';
			$params['atevent'] = '1';
			$params['atfloat'] = '2';
			$params['aticon'] = '2';
			$params['arrowtext'] = '1';
			$params['statutReg'] = '1';
			$params['maxRlist'] = '5';
			$params['navposition'] = '0';
			$params['targetLink'] = '1';
			$params['participantList'] = '1';
			$params['participantSlide'] = '1';
			$params['participantDisplay'] = '1';
			$params['fullListColumns'] = 'tiers';
			$params['regEmailUser'] = '1';
			$params['timeformat'] = '1';
			$params['ShortDescLimit'] = '100';
			$params['limitRegEmail'] = '1';
			$params['limitRegDate'] = '1';
			$params['phoneRequired'] = '2';
			$params['headerList'] = '1';
		}

		if ( version_compare( $oldRelease, '1.2.9', 'le' ) ) {
			$params['statutReg'] = '1';
			$params['maxRlist'] = '5';
			$params['navposition'] = '0';
			$params['targetLink'] = '1';
			$params['participantList'] = '1';
			$params['participantSlide'] = '1';
			$params['participantDisplay'] = '1';
			$params['fullListColumns'] = 'tiers';
			$params['regEmailUser'] = '1';
			$params['timeformat'] = '1';
		}

		if ( version_compare( $oldRelease, '2.0.6', 'le' ) ) {
			$params['navposition'] = '0';
			$params['targetLink'] = '1';
			$params['participantList'] = '1';
			$params['participantSlide'] = '1';
			$params['participantDisplay'] = '1';
			$params['fullListColumns'] = 'tiers';
			$params['regEmailUser'] = '1';
			$params['timeformat'] = '1';
		}

		if ( version_compare( $oldRelease, '2.1.1', 'le' ) ) {
			$params['limitRegEmail'] = '1';
			$params['limitRegDate'] = '1';
			$params['phoneRequired'] = '2';
			$params['headerList'] = '1';
		}

		if ( version_compare( $oldRelease, '3.0', 'le' ) ) {
			$params['bootstrapType'] = '1';
		}

		if ( version_compare( $oldRelease, '3.1.0', 'lt' ) ) {
			$params['emailRequired'] = '1';
		}

		// Updating Params to ensure a correct value
		jimport('joomla.application.component.helper'); // Import component helper library
		$icagendaParams = JComponentHelper::getParams('com_icagenda');

		$extparticipantList		= $icagendaParams->get('participantList');
		$extparticipantSlide	= $icagendaParams->get('participantSlide');
		$extstatutReg			= $icagendaParams->get('statutReg');
		$extlimitRegEmail		= $icagendaParams->get('limitRegEmail');
		$extlimitRegDate		= $icagendaParams->get('limitRegDate');
		$extphoneRequired		= $icagendaParams->get('phoneRequired');
		$extregEmailUser		= $icagendaParams->get('regEmailUser');
		$largewidththreshold	= $icagendaParams->get('largewidththreshold', '1201');
		$mediumwidththreshold	= $icagendaParams->get('mediumwidththreshold', '769');
		$smallwidththreshold	= $icagendaParams->get('smallwidththreshold', '481');

		$params['largewidththreshold']	= $largewidththreshold;
		$params['mediumwidththreshold']	= $mediumwidththreshold;
		$params['smallwidththreshold']	= $smallwidththreshold;

		if ($extparticipantList == '2') {
			$params['participantList'] = '0';
		}
		if ($extparticipantSlide == '2') {
			$params['participantSlide'] = '0';
		}
		if ($extstatutReg == '2') {
			$params['statutReg'] = '0';
		}
		if ($extlimitRegEmail == '2') {
			$params['limitRegEmail'] = '0';
		}
		if ($extlimitRegDate == '2') {
			$params['limitRegDate'] = '0';
		}
		if ($extphoneRequired == '2') {
			$params['phoneRequired'] = '0';
		}
		if ($extregEmailUser == '2') {
			$params['regEmailUser'] = '0';
		}

		// Update 3.1.1
		$emailRequired = $icagendaParams->get('emailRequired');

		if ($emailRequired == '')
		{
			$params['emailRequired'] = '1';
		}

		// Update 3.4.1
		$datesDisplay_global	= $icagendaParams->get('datesDisplay_global');
		$reg_captcha			= $icagendaParams->get('reg_captcha', '');
		$submit_captcha			= $icagendaParams->get('submit_captcha', '');
		$captcha				= $icagendaParams->get('captcha', '');

		if ($datesDisplay_global)
		{
			$params['datesDisplay'] = $datesDisplay_global;
		}

		if (in_array($reg_captcha, array('', '0'))
			&& in_array($submit_captcha, array('', '0'))
			)
		{
			$params['captcha'] = $captcha;
//			$params['captcha'] = JFactory::getApplication()->getCfg('captcha');
		}
		elseif (!in_array($reg_captcha, array('', '0', '1')))
		{
			$params['captcha'] = $reg_captcha;
		}
		elseif (!in_array($submit_captcha, array('', '0', '1')))
		{
			$params['captcha'] = $submit_captcha;
		}
		else
		{
			$params['captcha'] = $captcha;
		}

		$params['reg_captcha']		= (in_array($reg_captcha, array('', '0'))) ? '0' : '1';
		$params['submit_captcha']	= (in_array($submit_captcha, array('', '0'))) ? '0' : '1';

		// UPDATE PARAMS
		$this->setParams( $params );

		// Set default Access Permissions for iCagenda component
		$rules['core.manage']					= array('6' => 1);
		$rules['icagenda.access.categories']	= array('7' => 1);
		$rules['icagenda.access.events']		= array('6' => 1);
		$rules['icagenda.access.registrations']	= array('7' => 1);
		$rules['icagenda.access.newsletter']	= array('7' => 1);
		$rules['icagenda.access.themes']		= array('7' => 1);
		$rules['icagenda.access.customfields']	= array('7' => 1);
		$rules['icagenda.access.features']		= array('7' => 1);

		// UPDATE RULES
		$this->setRules( $rules );

		$this->clean();

		$sendSystemInfo = $this->getSystemInfo( $type, $parent );

		if ($sendSystemInfo)
		{
			echo $sendSystemInfo;
		}
	}


	/*
	 * $parent is the class calling this method
	 * uninstall runs before any other action is taken (file removal or database processing).
	 */
	function uninstall( $parent )
	{
		echo '<p>' . JText::_('COM_ICAGENDA_UNINSTALL') . '</p>';
	}


	/*
	 * get a variable from the manifest file (actually, from the manifest cache).
	 */
	function getParam( $name )
	{
		$db = JFactory::getDbo();
		$db->setQuery('SELECT manifest_cache FROM #__extensions WHERE element = "com_icagenda"');
		$manifest = json_decode( $db->loadResult(), true );
		return $manifest[ $name ];
	}


	/*
	 * sets parameter values in the component's row of the extension table
	 */
	function setParams( $param_array )
	{
		if ( count($param_array) > 0 )
		{
			// read the existing component value(s)
			$db = JFactory::getDbo();
			$db->setQuery('SELECT params FROM #__extensions WHERE element = "com_icagenda"');
			$params = json_decode( $db->loadResult(), true );
			// add the new variable(s) to the existing one(s)
			foreach ( $param_array as $name => $value )
			{
				$params[ (string) $name ] = (string) $value;
			}
			// store the combined new and existing values back as a JSON string
			$paramsString = json_encode( $params );
			$db->setQuery('UPDATE #__extensions SET params = ' .
				$db->quote( $paramsString ) .
				' WHERE element = "com_icagenda"' );
				$db->query();
		}
	}


	/*
	 * sets access permissions values (rules) in the component's row of the assets table
	 */
	function setRules( $rule_array )
	{
		if ( count($rule_array) > 0 )
		{
			// read the existing rules values
			$db = JFactory::getDbo();
			$db->setQuery('SELECT rules FROM #__assets WHERE name = "com_icagenda"');
			$rules = json_decode( $db->loadResult(), true );
			// add the new variable(s) to the existing one(s)
			foreach ( $rule_array as $name => $value )
			{
				if (!array_key_exists($name, $rules))
				{
					$rules[ (string) $name ] = (array) $value;
				}
			}
			// store the combined new and existing values back as a JSON string
			$rulesString = json_encode( $rules );
			$db->setQuery('UPDATE #__assets SET rules = ' .
				$db->quote( stripslashes($rulesString) ) .
				' WHERE name = "com_icagenda"' );
				$db->query();
		}
	}

	/**
	 * Purge the cache.
	 *
	 * @return  void
	 */
	public function purgeCache()
	{
		$app = JFactory::getApplication();

		$ret = $this->clean();

		$msg = JText::_('COM_ICAGENDA_CACHE_EXPIRED_ITEMS_HAVE_BEEN_PURGED');
		$msgType = 'message';

		if ($ret === false)
		{
			$msg = JText::_('COM_ICAGENDA_CACHE_EXPIRED_ITEMS_PURGING_ERROR');
			$msgType = 'error';
		}

		$app->redirect('index.php?option=com_icagenda&view=icagenda', $msg, $msgType);
	}

	/**
	 * Clean out a cache group as named by param.
	 * If no param is passed clean all cache groups.
	 *
	 * @param   string  $group  Cache group name.
	 *
	 * @return  void
	 */
	public function clean($group = '')
	{
		$cache = JFactory::getCache('');
		$cache->clean($group);
	}

	/**
	 * Send site system information
	 * Adapted from Nicholas K. Dionysopoulos's code (Akeeba - www.akeebabackup.com).
	 */
	public function getSystemInfo($type, $parent)
	{
		$this->release = $parent->get( "manifest" )->version;

		// Do not system info on localhost
		if ((strpos(JUri::root(), 'localhost') !== false)
			|| (strpos(JUri::root(), '127.0.0.1') !== false))
		{
			return false;
		}

		// Set site ID
		$siteId = md5(JUri::base());

		// If info file is missing, stop it!
		if ( ! file_exists(JPATH_ROOT . '/administrator/components/com_icagenda/assets/jcms/info.php'))
		{
			return false;
		}

		if ( ! class_exists('iCagendaSystemInfo', false))
		{
			require_once JPATH_ROOT . '/administrator/components/com_icagenda/assets/jcms/info.php';
		}

		if ( ! class_exists('iCagendaSystemInfo', false))
		{
			return false;
		}

		$params = JComponentHelper::getParams('com_icagenda');

		// Get system info is turned off
		if ( ! $params->get('system_info', 1))
		{
			return false;
		}

		$db = JFactory::getDbo();
		$stats = new iCagendaSystemInfo();

		$stats->setSiteId($siteId);

		// Get iCagenda release
		$ic_parts = explode('.', $this->release);
		$ic_major = $ic_parts[0];
		$ic_minor = isset($ic_parts[1]) ? $ic_parts[1] : '';
		$ic_revision = isset($ic_parts[2]) ? $ic_parts[2] : '';

		// Get PHP version
		list($php_major, $php_minor, $php_revision) = explode('.', phpversion());
		$php_qualifier = strpos($php_revision, '~') !== false ? substr($php_revision, strpos($php_revision, '~')) : '';

		// Get Joomla version
		list($cms_major, $cms_minor, $cms_revision) = explode('.', JVERSION);

		// Get Database version
		list($db_major, $db_minor, $db_revision) = explode('.', $db->getVersion());
		$db_qualifier = strpos($db_revision, '~') !== false ? substr($db_revision, strpos($db_revision, '~')) : '';

		// Get Database type
		$db_driver = get_class($db);

        if (stripos($db_driver, 'mysql') !== false)
        {
            $db_type = '1';
        }
        elseif (stripos($db_driver, 'sqlsrv') !== false || stripos($db_driver, 'sqlazure'))
        {
            $db_type = '2';
        }
        elseif (stripos($db_driver, 'postgresql') !== false)
        {
            $db_type = '3';
        }
        else
        {
            $db_type = '0';
        }

		$installtype	= ($type == 'install') ? '1' : '2';
		$ictype			= $this->ictype;

		$stats->setValue('ins', $installtype); // software_install

		// Version : major(x).minor(y).revision/patch(z)

		$stats->setValue('swn', 'iCagenda'); // software_name
		$stats->setValue('swt', $ictype); // software_type
		$stats->setValue('swx', $ic_major); // software_major
		$stats->setValue('swy', $ic_minor); // software_minor
		$stats->setValue('swz', $ic_revision); // software_revision

		$stats->setValue('cmst', 1); // cms_type
		$stats->setValue('cmsx', $cms_major); // cms_major
		$stats->setValue('cmsy', $cms_minor); // cms_minor
		$stats->setValue('cmsz', $cms_revision); // cms_revision

		$stats->setValue('phpx', $php_major); // php_major
		$stats->setValue('phpy', $php_minor); // php_minor
		$stats->setValue('phpz', $php_revision); // php_revision
		$stats->setValue('phpq', $php_qualifier); // php_qualifiers

		$stats->setValue('dbt', $db_type); // db_type
		$stats->setValue('dbx', $db_major); // db_major
		$stats->setValue('dby', $db_minor); // db_minor
		$stats->setValue('dbz', $db_revision); // db_revision
		$stats->setValue('dbq', $db_qualifier); // db_qualifiers

		$return = $stats->sendInfo();

		return $return;
	}
}
sql/index.html000060400000000055152455705350007347 0ustar00<html><body bgcolor="#FFFFFF"></body></html>
sql/install/mysql/icagenda.install.sql000060400000015706152455705350014117 0ustar00--
-- iCagenda: Install Database `icagenda`
--

-- --------------------------------------------------------

--
-- Table structure for table `#__icagenda`
--

CREATE TABLE IF NOT EXISTS `#__icagenda` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `version` varchar(255) DEFAULT NULL,
  `releasedate` varchar(255) DEFAULT NULL,
  `params` text NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

--
-- Dumping data for table `#__icagenda`
--

INSERT IGNORE INTO `#__icagenda` (`id`, `version`, `releasedate`, `params`) VALUES
(3,'3.5.12','2015-10-12','');

-- --------------------------------------------------------

--
-- Table structure for table `#__icagenda_category`
--

CREATE TABLE IF NOT EXISTS `#__icagenda_category` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `ordering` int(11) NOT NULL,
  `state` tinyint(1) NOT NULL DEFAULT '1',
  `checked_out` int(11) NOT NULL,
  `checked_out_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `title` varchar(255) NOT NULL,
  `alias` varchar(255) NOT NULL,
  `color` varchar(255) NOT NULL,
  `desc` text(65535) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `#__icagenda_events`
--

CREATE TABLE IF NOT EXISTS `#__icagenda_events` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `asset_id` int(10) NOT NULL DEFAULT '0',
  `ordering` int(11) NOT NULL,
  `state` tinyint(1) NOT NULL DEFAULT '1',
  `approval` int(11) NOT NULL DEFAULT '0',
  `site_itemid` int(10) NOT NULL DEFAULT '0',
  `checked_out` int(11) NOT NULL,
  `checked_out_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `title` varchar(255) NOT NULL,
  `alias` varchar(255) NOT NULL,
  `access` int(10) unsigned NOT NULL DEFAULT '0',
  `language` CHAR(7) NOT NULL,
  `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `created_by` int(10) unsigned NOT NULL DEFAULT '0',
  `created_by_alias` varchar(255) NOT NULL,
  `created_by_email` varchar(100) NOT NULL,
  `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `modified_by` int(10) unsigned NOT NULL DEFAULT '0',
  `username` varchar(255) NOT NULL,
  `catid` int(11) NOT NULL,
  `image` varchar(255) NOT NULL,
  `file` varchar(255) NOT NULL,
  `displaytime` int(10) NOT NULL DEFAULT '1',
  `weekdays` varchar(255) NOT NULL,
  `daystime` varchar(255) NOT NULL,
  `startdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `enddate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `period` text(65535) NOT NULL,
  `dates` text(65535) NOT NULL,
  `next` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `time` varchar(255) NOT NULL,
  `place` varchar(255) NOT NULL,
  `website` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `name` varchar(255) NOT NULL,
  `city` varchar(255) NOT NULL,
  `country` varchar(255) NOT NULL,
  `address` varchar(255) NOT NULL,
  `coordinate` varchar(255) NOT NULL,
  `lat` float( 20, 16 ) NOT NULL,
  `lng` FLOAT( 20, 16 ) NOT NULL,
  `shortdesc` text NOT NULL,
  `desc` text(65535) NOT NULL ,
  `metadesc` text NOT NULL,
  `params` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `#__icagenda_registration`
--

CREATE TABLE IF NOT EXISTS `#__icagenda_registration` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `asset_id` int(10) NOT NULL DEFAULT '0',
  `ordering` int(11) NOT NULL,
  `state` tinyint(1) NOT NULL DEFAULT '1',
  `checked_out` int(11) NOT NULL,
  `checked_out_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `userid` int(11) NOT NULL,
  `itemid` int(11) NOT NULL,
  `eventid` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone` varchar(255) NOT NULL,
  `date` text(65535) NOT NULL,
  `period` tinyint(1) NOT NULL DEFAULT '0',
  `people` int(2) NOT NULL,
  `notes` text(65535) NOT NULL ,
  `params` text NOT NULL ,
  `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `created_by` int(10) unsigned NOT NULL DEFAULT '0',
  `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `modified_by` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `#__icagenda_customfields`
--

CREATE TABLE IF NOT EXISTS `#__icagenda_customfields` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `ordering` int(11) NOT NULL,
  `state` tinyint(1) NOT NULL DEFAULT '1',
  `checked_out` int(11) NOT NULL,
  `checked_out_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `title` varchar(255) NOT NULL,
  `alias` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `description` mediumtext NOT NULL,
  `parent_form` int(11) NOT NULL DEFAULT '0',
  `type` varchar(255) NOT NULL,
  `options` mediumtext,
  `default` varchar(255) NOT NULL,
  `required` tinyint(3) NOT NULL DEFAULT '0',
  `language` varchar(10) NOT NULL DEFAULT '*',
  `params` mediumtext,
  `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `created_by` int(10) unsigned NOT NULL DEFAULT '0',
  `created_by_alias` varchar(255) NOT NULL DEFAULT '',
  `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `modified_by` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure for table `#__icagenda_customfields_data`
--

CREATE TABLE IF NOT EXISTS `#__icagenda_customfields_data` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `state` tinyint(1) NOT NULL DEFAULT '1',
  `slug` varchar(255) NOT NULL,
  `parent_form` int(11) NOT NULL DEFAULT '0',
  `parent_id` int(11) NOT NULL DEFAULT '0',
  `value` varchar(255) NOT NULL,
  `language` varchar(10) NOT NULL DEFAULT '*',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure for table `#__icagenda_feature`
--

CREATE TABLE IF NOT EXISTS  `#__icagenda_feature` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `ordering` int(11) NOT NULL,
  `state` tinyint(1) NOT NULL DEFAULT '1',
  `checked_out` int(11) NOT NULL,
  `checked_out_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `title` varchar(255) NOT NULL,
  `alias` varchar(255) NOT NULL,
  `desc` mediumtext NOT NULL,
  `icon` varchar(255) NOT NULL,
  `icon_alt` varchar(255) NOT NULL,
  `show_filter` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `#__icagenda_feature_xref`
--

CREATE TABLE IF NOT EXISTS  `#__icagenda_feature_xref` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `event_id` int(11) NOT NULL,
  `feature_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci;
sql/updates/1.3.0.1.4.sql000060400000000220152455705350010472 0ustar00UPDATE `#__icagenda` SET version='1.3 beta1', releasedate='2012-12-11' WHERE id=1;

ALTER TABLE `#__icagenda_events` DROP COLUMN `registration`;sql/updates/1.0.sql000060400000000000152455705350010024 0ustar00sql/updates/1.3.0.1.3.sql000060400000000246152455705350010501 0ustar00UPDATE `#__icagenda` SET version='1.3 beta1', releasedate='2012-12-10' WHERE id=1;

ALTER TABLE `#__icagenda_events` MODIFY COLUMN `params` TEXT NOT NULL DEFAULT '';
sql/updates/1.1.1.sql000060400000000065152455705350010177 0ustar00UPDATE `#__icagenda` SET version='1.1.1' WHERE id=1;
sql/updates/3.5.7.sql000060400000001232152455705350010210 0ustar00UPDATE `#__icagenda` SET version='3.5.7', releasedate='2015-07-16' WHERE id=3;

ALTER TABLE `#__icagenda_registration` ADD COLUMN `asset_id` int(10) NOT NULL DEFAULT '0' AFTER `id`;
ALTER TABLE `#__icagenda_registration` ADD COLUMN `modified_by` int(10) unsigned NOT NULL DEFAULT '0' AFTER `params`;
ALTER TABLE `#__icagenda_registration` ADD COLUMN `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `params`;
ALTER TABLE `#__icagenda_registration` ADD COLUMN `created_by` int(10) unsigned NOT NULL DEFAULT '0' AFTER `params`;
ALTER TABLE `#__icagenda_registration` ADD COLUMN `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `params`;
sql/updates/3.5.0.sql000060400000000117152455705350010202 0ustar00UPDATE `#__icagenda` SET version='3.5.0', releasedate='2015-02-25' WHERE id=3;
sql/updates/3.2.4.sql000060400000000117152455705350010203 0ustar00UPDATE `#__icagenda` SET version='3.2.4', releasedate='2013-10-29' WHERE id=2;
sql/updates/2.1.4.sql000060400000000117152455705350010201 0ustar00UPDATE `#__icagenda` SET version='2.1.4', releasedate='2013-04-05' WHERE id=1;
sql/updates/2.1.3.sql000060400000000117152455705350010200 0ustar00UPDATE `#__icagenda` SET version='2.1.3', releasedate='2013-04-01' WHERE id=1;
sql/updates/3.5.9.sql000060400000000117152455705350010213 0ustar00UPDATE `#__icagenda` SET version='3.5.9', releasedate='2015-08-01' WHERE id=3;
sql/updates/3.2.3.sql000060400000000117152455705350010202 0ustar00UPDATE `#__icagenda` SET version='3.2.3', releasedate='2013-10-20' WHERE id=2;
sql/updates/1.3.0.1.sql000060400000002206152455705350010336 0ustar00UPDATE `#__icagenda` SET version='1.3 beta1', releasedate='2012-10-28' WHERE id=1;

ALTER TABLE `#__icagenda_events` ADD `period` TEXT(65535) NOT NULL AFTER `file`;
ALTER TABLE `#__icagenda_events` ADD `enddate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `file`;
ALTER TABLE `#__icagenda_events` ADD `startdate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `file`;
ALTER TABLE `#__icagenda_events` MODIFY `next` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00';
ALTER TABLE `#__icagenda_events` ADD `website` VARCHAR(255) NOT NULL AFTER `place`;

DROP TABLE IF EXISTS `#__icagenda_registration`;

CREATE TABLE `#__icagenda_registration` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`ordering` INT(11)  NOT NULL ,
`state` TINYINT(11)  NOT NULL DEFAULT '1',
`checked_out` INT(11)  NOT NULL ,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`userid` INT(11)  NOT NULL ,
`eventid` INT(11)  NOT NULL ,
`name` VARCHAR(255)  NOT NULL ,
`email` VARCHAR(255)  NOT NULL ,
`phone` VARCHAR(255)  NOT NULL ,
`date` DATE NOT NULL ,
`people` INT(2)  NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci;

sql/updates/2.1.11.sql000060400000000120152455705350010251 0ustar00UPDATE `#__icagenda` SET version='2.1.11', releasedate='2013-05-13' WHERE id=1;
sql/updates/3.1.5.sql000060400000000117152455705350010203 0ustar00UPDATE `#__icagenda` SET version='3.1.5', releasedate='2013-08-19' WHERE id=2;
sql/updates/3.1.2.sql000060400000000117152455705350010200 0ustar00UPDATE `#__icagenda` SET version='3.1.2', releasedate='2013-08-05' WHERE id=2;
sql/updates/3.1.10.sql000060400000000265152455705350010263 0ustar00UPDATE `#__icagenda` SET version='3.1.10', releasedate='2013-09-12' WHERE id=2;

ALTER TABLE `#__icagenda_events` ADD COLUMN `approval` INT(11)  NOT NULL DEFAULT '0' AFTER `state`;
sql/updates/3.2.14.sql000060400000002707152455705350010273 0ustar00ALTER TABLE `#__icagenda` ADD COLUMN `params` TEXT NOT NULL DEFAULT '' AFTER `releasedate`;
INSERT INTO `#__icagenda` (id,version,releasedate,params) VALUES (3,'3.2.14','2014-03-01','');

ALTER TABLE `#__icagenda_events` ADD COLUMN `metadesc` TEXT NOT NULL DEFAULT '' AFTER `desc`;

ALTER TABLE `#__icagenda_registration` ADD COLUMN `custom_fields` TEXT NOT NULL DEFAULT '' AFTER `notes`;

-- --------------------------------------------------------

--
-- Table structure for table `#__icagenda_customfields`
--

CREATE TABLE IF NOT EXISTS `#__icagenda_customfields` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `ordering` INT(11) NOT NULL,
  `state` TINYINT(1) NOT NULL DEFAULT '1',
  `checked_out` INT(11) NOT NULL,
  `checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
  `title` VARCHAR(255) NOT NULL,
  `alias` VARCHAR(255) NOT NULL,
  `parent_form` INT(11) NOT NULL DEFAULT '0',
  `type` VARCHAR(255) NOT NULL,
  `options` mediumtext,
  `default` VARCHAR(255) NOT NULL,
  `required` tinyint(3) NOT NULL DEFAULT '0',
  `language` varchar(10) NOT NULL DEFAULT '*',
  `params` mediumtext,
  `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `created_by` int(10) unsigned NOT NULL DEFAULT '0',
  `created_by_alias` varchar(255) NOT NULL DEFAULT '',
  `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `modified_by` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
sql/updates/1.2.6.3.sql000060400000000127152455705350010345 0ustar00UPDATE `#__icagenda` SET version='1.2.6 beta3', releasedate='2012-10-13' WHERE id=1;


sql/updates/3.2.13.sql000060400000000120152455705350010255 0ustar00UPDATE `#__icagenda` SET version='3.2.13', releasedate='2014-02-01' WHERE id=2;
sql/updates/3.4.0.sql000060400000000117152455705350010201 0ustar00UPDATE `#__icagenda` SET version='3.4.0', releasedate='2014-12-22' WHERE id=3;
sql/updates/1.2.6.4.sql000060400000000121152455705350010340 0ustar00UPDATE `#__icagenda` SET version='1.2.6', releasedate='2012-10-15' WHERE id=1;


sql/updates/1.2.7.sql000060400000000121152455705350010177 0ustar00UPDATE `#__icagenda` SET version='1.2.7', releasedate='2012-10-18' WHERE id=1;


sql/updates/2.1.sql000060400000000115152455705350010035 0ustar00UPDATE `#__icagenda` SET version='2.1', releasedate='2013-03-11' WHERE id=1;
sql/updates/2.0.4.sql000060400000000117152455705350010200 0ustar00UPDATE `#__icagenda` SET version='2.0.4', releasedate='2013-01-23' WHERE id=1;
sql/updates/3.3.5-1.sql000060400000000121152455705350010336 0ustar00UPDATE `#__icagenda` SET version='3.3.5-1', releasedate='2014-04-29' WHERE id=3;
sql/updates/1.2.9.sql000060400000000121152455705350010201 0ustar00UPDATE `#__icagenda` SET version='1.2.9', releasedate='2012-10-28' WHERE id=1;


sql/updates/3.3.4.sql000060400000000117152455705350010204 0ustar00UPDATE `#__icagenda` SET version='3.3.4', releasedate='2014-04-25' WHERE id=3;
sql/updates/3.3.3.sql000060400000000117152455705350010203 0ustar00UPDATE `#__icagenda` SET version='3.3.3', releasedate='2014-04-20' WHERE id=3;
sql/updates/3.5.11.sql000060400000000120152455705350010256 0ustar00UPDATE `#__icagenda` SET version='3.5.11', releasedate='2015-09-05' WHERE id=3;
sql/updates/2.0.3.sql000060400000000117152455705350010177 0ustar00UPDATE `#__icagenda` SET version='2.0.3', releasedate='2013-01-10' WHERE id=1;
sql/updates/2.1.2.sql000060400000000117152455705350010177 0ustar00UPDATE `#__icagenda` SET version='2.1.2', releasedate='2013-03-21' WHERE id=1;
sql/updates/3.5.8.sql000060400000000117152455705350010212 0ustar00UPDATE `#__icagenda` SET version='3.5.8', releasedate='2015-07-17' WHERE id=3;
sql/updates/3.2.2.sql000060400000000117152455705350010201 0ustar00UPDATE `#__icagenda` SET version='3.2.2', releasedate='2013-10-10' WHERE id=2;
sql/updates/3.2.5.sql000060400000000117152455705350010204 0ustar00UPDATE `#__icagenda` SET version='3.2.5', releasedate='2013-11-11' WHERE id=2;
sql/updates/2.1.5.sql000060400000000117152455705350010202 0ustar00UPDATE `#__icagenda` SET version='2.1.5', releasedate='2013-04-10' WHERE id=1;
sql/updates/3.0.sql000060400000000122152455705350010033 0ustar00INSERT INTO `#__icagenda` (id,version,releasedate) VALUES (2,'3.0','2013-06-04');
sql/updates/3.5.1.sql000060400000000117152455705350010203 0ustar00UPDATE `#__icagenda` SET version='3.5.1', releasedate='2015-03-01' WHERE id=3;
sql/updates/3.5.6.sql000060400000000354152455705350010213 0ustar00UPDATE `#__icagenda` SET version='3.5.6', releasedate='2015-06-29' WHERE id=3;

ALTER TABLE `#__icagenda_registration` DROP COLUMN `custom_fields`;
ALTER TABLE `#__icagenda_registration` ADD COLUMN `params` text NOT NULL AFTER `notes`;
sql/updates/2.1.2.2.sql000060400000000121152455705350010332 0ustar00UPDATE `#__icagenda` SET version='2.1.2.2', releasedate='2013-03-27' WHERE id=1;
sql/updates/3.2.0.1.sql000060400000000123152455705350010333 0ustar00UPDATE `#__icagenda` SET version='3.2.0 RC2', releasedate='2013-09-22' WHERE id=2;
sql/updates/2.0.6.1.sql000060400000001513152455705350010342 0ustar00UPDATE `#__icagenda` SET version='2.1 beta', releasedate='2013-02-21' WHERE id=1;

ALTER TABLE `#__icagenda_events` ADD COLUMN `asset_id` INT(10) NOT NULL DEFAULT '0' AFTER `id`;


ALTER TABLE `#__icagenda_events` ADD COLUMN `modified_by` INT(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `alias`;
ALTER TABLE `#__icagenda_events` ADD COLUMN `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `alias`;
ALTER TABLE `#__icagenda_events` ADD COLUMN `created_by_alias` VARCHAR(255) NOT NULL AFTER `alias`;
ALTER TABLE `#__icagenda_events` ADD COLUMN `created_by` INT(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `alias`;
ALTER TABLE `#__icagenda_events` ADD COLUMN `created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER `alias`;
ALTER TABLE `#__icagenda_events` ADD COLUMN `access` INT(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `alias`;
sql/updates/1.3.0.1.2.sql000060400000000301152455705350010470 0ustar00UPDATE `#__icagenda` SET version='1.3 beta1', releasedate='2012-12-03' WHERE id=1;

ALTER TABLE `#__icagenda_registration` MODIFY COLUMN `date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00';
sql/updates/1.3.0.1.5.sql000060400000000275152455705350010505 0ustar00UPDATE `#__icagenda` SET version='1.3 beta1', releasedate='2012-12-11' WHERE id=1;

ALTER TABLE `#__icagenda_registration` ADD COLUMN `period` TINYINT(1) NOT NULL DEFAULT '0' AFTER `date`;
sql/updates/1.1.sql000060400000000063152455705350010036 0ustar00UPDATE `#__icagenda` SET version='1.1' WHERE id=1;
sql/updates/3.3.2.sql000060400000000117152455705350010202 0ustar00UPDATE `#__icagenda` SET version='3.3.2', releasedate='2014-03-17' WHERE id=3;
sql/updates/3.5.10.sql000060400000000120152455705350010255 0ustar00UPDATE `#__icagenda` SET version='3.5.10', releasedate='2015-09-01' WHERE id=3;
sql/updates/2.0.2.sql000060400000000122152455705350010172 0ustar00UPDATE `#__icagenda` SET version='2.0.2 RC', releasedate='2013-01-04' WHERE id=1;
sql/updates/2.0.sql000060400000000122152455705350010032 0ustar00UPDATE `#__icagenda` SET version='2.0.0 RC', releasedate='2012-12-31' WHERE id=1;
sql/updates/2.0.5.sql000060400000000117152455705350010201 0ustar00UPDATE `#__icagenda` SET version='2.0.5', releasedate='2013-02-01' WHERE id=1;
sql/updates/1.2.8.sql000060400000000121152455705350010200 0ustar00UPDATE `#__icagenda` SET version='1.2.8', releasedate='2012-10-22' WHERE id=1;


sql/updates/3.3.5.sql000060400000000117152455705350010205 0ustar00UPDATE `#__icagenda` SET version='3.3.5', releasedate='2014-04-27' WHERE id=3;
sql/updates/3.2.12.sql000060400000000120152455705350010254 0ustar00UPDATE `#__icagenda` SET version='3.2.12', releasedate='2014-01-08' WHERE id=2;
sql/updates/3.4.1.sql000060400000000117152455705350010202 0ustar00UPDATE `#__icagenda` SET version='3.4.1', releasedate='2015-01-30' WHERE id=3;
sql/updates/1.2.6.sql000060400000001317152455705350010206 0ustar00ALTER TABLE `#__icagenda` ADD COLUMN `releasedate` TEXT(65535)  NOT NULL AFTER `version`;
UPDATE `#__icagenda` SET version='1.2.6', releasedate='2012-10-06' WHERE id=1;

DROP TABLE IF EXISTS `#__icagenda_registration`;

CREATE TABLE `#__icagenda_registration` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`ordering` INT(11)  NOT NULL ,
`checked_out` INT(11)  NOT NULL ,
`checked_out_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`userid` INT(11)  NOT NULL ,
`eventid` INT(11)  NOT NULL ,
`name` VARCHAR(255)  NOT NULL ,
`email` VARCHAR(255)  NOT NULL ,
`phone` VARCHAR(255)  NOT NULL ,
`date` DATE NOT NULL ,
`people` INT(2)  NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci;

sql/updates/1.2.6.2.sql000060400000000127152455705350010344 0ustar00UPDATE `#__icagenda` SET version='1.2.6 beta2', releasedate='2012-10-11' WHERE id=1;


sql/updates/1.2.1.sql000060400000000223152455705350010174 0ustar00UPDATE `#__icagenda` SET version='1.2.1' WHERE id=1;
DROP TABLE IF EXISTS `#__icagenda_registration`;
DROP TABLE IF EXISTS `#__icagenda_location`;
sql/updates/3.1.11.sql000060400000000120152455705350010252 0ustar00UPDATE `#__icagenda` SET version='3.1.11', releasedate='2013-09-13' WHERE id=2;
sql/updates/3.4.1-alpha1.sql000060400000000300152455705350011340 0ustar00UPDATE `#__icagenda` SET version='3.4.1-alpha1', releasedate='2015-01-24' WHERE id=3;

ALTER TABLE `#__icagenda_events` ADD COLUMN `site_itemid` INT(10) NOT NULL DEFAULT '0' AFTER `approval`;
sql/updates/3.1.3.sql000060400000000117152455705350010201 0ustar00UPDATE `#__icagenda` SET version='3.1.3', releasedate='2013-08-09' WHERE id=2;
sql/updates/3.4.0-beta1.sql000060400000000264152455705350011176 0ustar00UPDATE `#__icagenda` SET version='3.4.0-beta1', releasedate='2014-07-23' WHERE id=3;

ALTER TABLE `#__icagenda_events` ADD COLUMN `shortdesc` TEXT NOT NULL DEFAULT '' AFTER `lng`;
sql/updates/3.4.0-alpha2.sql000060400000000126152455705350011346 0ustar00UPDATE `#__icagenda` SET version='3.4.0-alpha2', releasedate='2014-07-16' WHERE id=3;
sql/updates/2.1.10.sql000060400000000120152455705350010250 0ustar00UPDATE `#__icagenda` SET version='2.1.10', releasedate='2013-05-07' WHERE id=1;
sql/updates/3.1.4.sql000060400000000117152455705350010202 0ustar00UPDATE `#__icagenda` SET version='3.1.4', releasedate='2013-08-13' WHERE id=2;
sql/updates/2.0.6.sql000060400000000117152455705350010202 0ustar00UPDATE `#__icagenda` SET version='2.0.6', releasedate='2013-02-07' WHERE id=1;
sql/updates/index.html000060400000000055152455705350011014 0ustar00<html><body bgcolor="#FFFFFF"></body></html>
sql/updates/3.3.6.sql000060400000000271152455705350010207 0ustar00UPDATE `#__icagenda` SET version='3.3.6', releasedate='2014-05-16' WHERE id=3;

ALTER TABLE `#__icagenda_customfields` ADD COLUMN `slug` VARCHAR(255) NOT NULL DEFAULT '' AFTER `alias`;
sql/updates/3.3.1.sql000060400000000117152455705350010201 0ustar00UPDATE `#__icagenda` SET version='3.3.1', releasedate='2014-03-14' WHERE id=3;
sql/updates/2.0.1.sql000060400000000122152455705350010171 0ustar00UPDATE `#__icagenda` SET version='2.0.1 RC', releasedate='2013-01-01' WHERE id=1;
sql/updates/1.2.2.sql000060400000000223152455705350010175 0ustar00UPDATE `#__icagenda` SET version='1.2.2' WHERE id=1;
DROP TABLE IF EXISTS `#__icagenda_registration`;
DROP TABLE IF EXISTS `#__icagenda_location`;
sql/updates/1.2.6.1.sql000060400000000127152455705350010343 0ustar00UPDATE `#__icagenda` SET version='1.2.6 beta1', releasedate='2012-10-09' WHERE id=1;


sql/updates/3.2.11.sql000060400000000120152455705350010253 0ustar00UPDATE `#__icagenda` SET version='3.2.11', releasedate='2014-01-04' WHERE id=2;
sql/updates/1.2.5.sql000060400000000067152455705350010206 0ustar00UPDATE `#__icagenda` SET version='1.2.5' WHERE id=1;


sql/updates/3.3.8.sql000060400000000117152455705350010210 0ustar00UPDATE `#__icagenda` SET version='3.3.8', releasedate='2014-07-04' WHERE id=3;
sql/updates/3.1.12.sql000060400000000120152455705350010253 0ustar00UPDATE `#__icagenda` SET version='3.1.12', releasedate='2013-09-17' WHERE id=2;
sql/updates/3.1.9.sql000060400000000641152455705350010211 0ustar00UPDATE `#__icagenda` SET version='3.1.9', releasedate='2013-09-06' WHERE id=2;

ALTER TABLE `#__icagenda_registration` ADD COLUMN `notes` TEXT(65535) NOT NULL DEFAULT '' AFTER `people`;
ALTER TABLE `#__icagenda_events` ADD COLUMN `created_by_email` VARCHAR(100) NOT NULL DEFAULT '' AFTER `created_by_alias`;
ALTER TABLE `#__icagenda_events` ADD COLUMN `weekdays` VARCHAR(255) NOT NULL DEFAULT '' AFTER `displaytime`;
sql/updates/3.1.7.sql000060400000000117152455705350010205 0ustar00UPDATE `#__icagenda` SET version='3.1.7', releasedate='2013-08-29' WHERE id=2;
sql/updates/2.1.13.sql000060400000000120152455705350010253 0ustar00UPDATE `#__icagenda` SET version='2.1.13', releasedate='2013-05-23' WHERE id=1;
sql/updates/3.1.0.sql000060400000000117152455705350010176 0ustar00UPDATE `#__icagenda` SET version='3.1.0', releasedate='2013-07-26' WHERE id=2;
sql/updates/2.1.14.sql000060400000000355152455705350010266 0ustar00UPDATE `#__icagenda` SET version='2.1.14', releasedate='2013-05-29' WHERE id=1;
UPDATE `#__icagenda_events` SET language='*' WHERE language='';

ALTER TABLE `#__icagenda_registration` ADD COLUMN `itemid` INT(11) NOT NULL AFTER `userid`;
sql/updates/3.4.0-beta2.sql000060400000000125152455705350011173 0ustar00UPDATE `#__icagenda` SET version='3.4.0-beta2', releasedate='2014-11-09' WHERE id=3;
sql/updates/3.4.0-alpha1.sql000060400000000126152455705350011345 0ustar00UPDATE `#__icagenda` SET version='3.4.0-alpha1', releasedate='2014-07-11' WHERE id=3;
sql/updates/3.4.0-rc.sql000060400000000122152455705350010577 0ustar00UPDATE `#__icagenda` SET version='3.4.0-rc', releasedate='2014-12-14' WHERE id=3;
sql/updates/3.2.6.sql000060400000000117152455705350010205 0ustar00UPDATE `#__icagenda` SET version='3.2.6', releasedate='2013-11-21' WHERE id=2;
sql/updates/3.3.sql000060400000000117152455705350010042 0ustar00UPDATE `#__icagenda` SET version='3.3.0', releasedate='2014-03-06' WHERE id=3;
sql/updates/2.1.6.sql000060400000000117152455705350010203 0ustar00UPDATE `#__icagenda` SET version='2.1.6', releasedate='2013-04-12' WHERE id=1;
sql/updates/3.4.sql000060400000003405152455705350010046 0ustar00UPDATE `#__icagenda` SET version='3.4', releasedate='2014-07-03' WHERE id=3;

ALTER TABLE `#__icagenda_customfields` ADD COLUMN `description` VARCHAR(255) NOT NULL DEFAULT '' AFTER `slug`;

-- --------------------------------------------------------

--
-- Table structure for table `#__icagenda_customfields_data`
--

CREATE TABLE IF NOT EXISTS `#__icagenda_customfields_data` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `state` TINYINT(1) NOT NULL DEFAULT '1',
  `slug` VARCHAR(255) NOT NULL,
  `parent_form` INT(11) NOT NULL DEFAULT '0',
  `parent_id` INT(11) NOT NULL DEFAULT '0',
  `value` VARCHAR(255) NOT NULL,
  `language` varchar(10) NOT NULL DEFAULT '*',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure for table `#__icagenda_feature`
--

CREATE TABLE IF NOT EXISTS  `#__icagenda_feature` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `ordering` int(11) NOT NULL,
  `state` tinyint(1) NOT NULL DEFAULT '1',
  `checked_out` int(11) NOT NULL,
  `checked_out_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `title` varchar(255) NOT NULL,
  `alias` varchar(255) NOT NULL,
  `desc` mediumtext NOT NULL,
  `icon` varchar(255) NOT NULL,
  `icon_alt` varchar(255) NOT NULL,
  `show_filter` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci;

-- --------------------------------------------------------

--
-- Table structure for table `#__icagenda_feature_xref`
--

CREATE TABLE IF NOT EXISTS  `#__icagenda_feature_xref` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `event_id` int(11) NOT NULL,
  `feature_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT COLLATE=utf8_general_ci;
sql/updates/2.1.1.sql000060400000000117152455705350010176 0ustar00UPDATE `#__icagenda` SET version='2.1.1', releasedate='2013-03-14' WHERE id=1;
sql/updates/3.2.1.sql000060400000000117152455705350010200 0ustar00UPDATE `#__icagenda` SET version='3.2.1', releasedate='2013-10-07' WHERE id=2;
sql/updates/3.5.5.sql000060400000000117152455705350010207 0ustar00UPDATE `#__icagenda` SET version='3.5.5', releasedate='2015-04-27' WHERE id=3;
sql/updates/3.2.8.sql000060400000000117152455705350010207 0ustar00UPDATE `#__icagenda` SET version='3.2.8', releasedate='2013-12-15' WHERE id=2;
sql/updates/2.1.8.sql000060400000000117152455705350010205 0ustar00UPDATE `#__icagenda` SET version='2.1.8', releasedate='2013-04-30' WHERE id=1;
sql/updates/3.5.2.sql000060400000000117152455705350010204 0ustar00UPDATE `#__icagenda` SET version='3.5.2', releasedate='2015-03-13' WHERE id=3;
sql/updates/1.1.3.sql000060400000000065152455705350010201 0ustar00UPDATE `#__icagenda` SET version='1.1.3' WHERE id=1;
sql/updates/3.2.0.2.sql000060400000000123152455705350010334 0ustar00UPDATE `#__icagenda` SET version='3.2.0 RC2', releasedate='2013-09-22' WHERE id=2;
sql/updates/1.3.0.1.8.sql000060400000000256152455705350010507 0ustar00UPDATE `#__icagenda` SET version='1.3 beta4', releasedate='2012-12-24' WHERE id=1;

ALTER TABLE `#__icagenda_events` ADD COLUMN `country` VARCHAR(255) NOT NULL AFTER `city`;
sql/updates/1.1.4.sql000060400000000065152455705350010202 0ustar00UPDATE `#__icagenda` SET version='1.1.4' WHERE id=1;
sql/updates/1.3.0.1.6.sql000060400000000123152455705350010476 0ustar00UPDATE `#__icagenda` SET version='1.3 beta2', releasedate='2012-12-15' WHERE id=1;
sql/updates/1.2.sql000060400000000063152455705350010037 0ustar00UPDATE `#__icagenda` SET version='1.2' WHERE id=1;
sql/updates/2.0.6.2.sql000060400000000270152455705350010342 0ustar00UPDATE `#__icagenda` SET version='2.1 beta', releasedate='2013-02-22' WHERE id=1;

ALTER TABLE `#__icagenda_events` ADD COLUMN `displaytime` INT(10) NOT NULL DEFAULT '1' AFTER `file`;
sql/updates/1.3.0.1.1.sql000060400000000262152455705350010475 0ustar00UPDATE `#__icagenda` SET version='1.3 beta1', releasedate='2012-10-28' WHERE id=1;

ALTER TABLE `#__icagenda_events` ADD COLUMN `registration` TINYINT(1)  NOT NULL DEFAULT '1';

sql/updates/3.1.1.sql000060400000000117152455705350010177 0ustar00UPDATE `#__icagenda` SET version='3.1.1', releasedate='2013-07-29' WHERE id=2;
sql/updates/3.1.6.sql000060400000000117152455705350010204 0ustar00UPDATE `#__icagenda` SET version='3.1.6', releasedate='2013-08-20' WHERE id=2;
sql/updates/2.1.12.sql000060400000000120152455705350010252 0ustar00UPDATE `#__icagenda` SET version='2.1.12', releasedate='2013-05-21' WHERE id=1;
sql/updates/3.1.13.sql000060400000000120152455705350010254 0ustar00UPDATE `#__icagenda` SET version='3.1.13', releasedate='2013-09-20' WHERE id=2;
sql/updates/3.1.8.sql000060400000000117152455705350010206 0ustar00UPDATE `#__icagenda` SET version='3.1.8', releasedate='2013-08-30' WHERE id=2;
sql/updates/3.2.10.sql000060400000000120152455705350010252 0ustar00UPDATE `#__icagenda` SET version='3.2.10', releasedate='2014-01-03' WHERE id=2;
sql/updates/1.2.4.sql000060400000000065152455705350010203 0ustar00UPDATE `#__icagenda` SET version='1.2.4' WHERE id=1;
sql/updates/1.2.3.sql000060400000000065152455705350010202 0ustar00UPDATE `#__icagenda` SET version='1.2.3' WHERE id=1;
sql/updates/3.5.12.sql000060400000000120152455705350010257 0ustar00UPDATE `#__icagenda` SET version='3.5.12', releasedate='2015-10-12' WHERE id=3;
sql/updates/3.3.7.sql000060400000000117152455705350010207 0ustar00UPDATE `#__icagenda` SET version='3.3.7', releasedate='2014-05-29' WHERE id=3;
sql/updates/3.0.1.sql000060400000000117152455705350010176 0ustar00UPDATE `#__icagenda` SET version='3.0.1', releasedate='2013-07-04' WHERE id=2;
sql/updates/1.3.0.1.7.sql000060400000000123152455705350010477 0ustar00UPDATE `#__icagenda` SET version='1.3 beta3', releasedate='2012-12-16' WHERE id=1;
sql/updates/1.3.sql000060400000000115152455705350010036 0ustar00UPDATE `#__icagenda` SET version='1.3', releasedate='2012-10-19' WHERE id=1;
sql/updates/1.3.0.1.9.sql000060400000000247152455705350010510 0ustar00UPDATE `#__icagenda` SET version='1.3 beta4', releasedate='2012-12-28' WHERE id=1;

ALTER TABLE `#__icagenda_registration` MODIFY COLUMN `date` TEXT(65535)  NOT NULL;
sql/updates/3.2.0.4.sql000060400000000123152455705350010336 0ustar00UPDATE `#__icagenda` SET version='3.2.0 RC4', releasedate='2013-10-04' WHERE id=2;
sql/updates/1.1.2.sql000060400000000065152455705350010200 0ustar00UPDATE `#__icagenda` SET version='1.1.2' WHERE id=1;
sql/updates/3.2.0.3.sql000060400000000123152455705350010335 0ustar00UPDATE `#__icagenda` SET version='3.2.0 RC3', releasedate='2013-09-26' WHERE id=2;
sql/updates/3.2.9.sql000060400000000117152455705350010210 0ustar00UPDATE `#__icagenda` SET version='3.2.9', releasedate='2013-12-28' WHERE id=2;
sql/updates/2.1.9.sql000060400000000117152455705350010206 0ustar00UPDATE `#__icagenda` SET version='2.1.9', releasedate='2013-05-03' WHERE id=1;
sql/updates/3.5.3.sql000060400000000117152455705350010205 0ustar00UPDATE `#__icagenda` SET version='3.5.3', releasedate='2015-03-25' WHERE id=3;
sql/updates/3.5.4.sql000060400000000117152455705350010206 0ustar00UPDATE `#__icagenda` SET version='3.5.4', releasedate='2015-04-24' WHERE id=3;
sql/updates/3.2.0.sql000060400000000272152455705350010201 0ustar00UPDATE `#__icagenda` SET version='3.2.0', releasedate='2013-09-20' WHERE id=2;

ALTER TABLE `#__icagenda_events` ADD COLUMN `daystime` VARCHAR(255) NOT NULL DEFAULT '' AFTER `weekdays`;
sql/updates/3.2.7.sql000060400000000117152455705350010206 0ustar00UPDATE `#__icagenda` SET version='3.2.7', releasedate='2013-11-23' WHERE id=2;
sql/updates/3.2.sql000060400000000115152455705350010037 0ustar00UPDATE `#__icagenda` SET version='3.2', releasedate='2013-09-20' WHERE id=2;
sql/updates/2.1.7.sql000060400000000547152455705350010213 0ustar00UPDATE `#__icagenda` SET version='2.1.7', releasedate='2013-04-29' WHERE id=1;

ALTER TABLE `#__icagenda_events` ADD COLUMN `language` CHAR(7) NOT NULL AFTER `access`;

ALTER TABLE `#__icagenda_events` ADD COLUMN `lng` FLOAT( 20, 16 ) NOT NULL AFTER `coordinate`;
ALTER TABLE `#__icagenda_events` ADD COLUMN `lat` FLOAT( 20, 16 ) NOT NULL AFTER `coordinate`;
sql/uninstall/mysql/icagenda.uninstall.sql000060400000001015152455705350015011 0ustar00--
-- iCagenda: Uninstall Database `icagenda`
--

-- --------------------------------------------------------

DROP TABLE IF EXISTS `#__icagenda`;
DROP TABLE IF EXISTS `#__icagenda_category`;
DROP TABLE IF EXISTS `#__icagenda_events`;
DROP TABLE IF EXISTS `#__icagenda_registration`;
DROP TABLE IF EXISTS `#__icagenda_customfields`;
DROP TABLE IF EXISTS `#__icagenda_customfields_data`;
DROP TABLE IF EXISTS `#__icagenda_feature`;
DROP TABLE IF EXISTS `#__icagenda_feature_xref`;
DROP TABLE IF EXISTS `#__icagenda_location`;
liveupdate/config.php000060400000002657152455705350010705 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5
 * @copyright Copyright ©2011-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.4.0 2014-07-16
 * @since       1.2.6
 *
 * CHANGED (3.3.6) : _versionStrategy set to 'vcompare'
 * CHANGED (3.4.0) : Removal of updateURL (set with getUpdateURL depending on getMinimumStability)
 */

defined('_JEXEC') or die();

/**
 * Configuration class for your extension's updates.
 */
class LiveUpdateConfig extends LiveUpdateAbstractConfig
{
	var $_extensionName			= 'com_icagenda';
	var $_extensionTitle		= 'iCagenda PRO Release System';
//	var $_updateURL				= 'http://pro.joomlic.com/index.php?option=com_ars&view=update&format=ini&id=1';
	var $_requiresAuthorization	= true;
	var $_versionStrategy		= 'vcompare';
	var $_storageAdapter		= 'file';
	var $_storageConfig = array('path' => JPATH_CACHE);

	public function __construct()
	{
		JLoader::import('joomla.filesystem.file');

		// Should I use our private CA store?
		if (@file_exists(dirname(__FILE__).'/../assets/cacert.pem'))
		{
			$this->_cacerts = dirname(__FILE__).'/../assets/cacert.pem';
		}

		parent::__construct();
	}
}
liveupdate/language/cs-CZ/cs-CZ.liveupdate.ini000060400000010142152455705350015176 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Aktualizace"

LIVEUPDATE_NOTSUPPORTED_HEAD="Tento server nepodporuje kontrolu aktualizací"
LIVEUPDATE_NOTSUPPORTED_INFO="Nastavení Vašeho serveru nedovoluje spustit aktualizaci. Kontaktujte prosím provozovatele serveru a požádejte ho o zprovoznění PHP rozšíření cUrl nebo o povolení možnosti allow_url_fopen. Pokud je jedna z těchto možností již povolena, požádejte o prověření nastavení firewall, zda je povolena komunikace s následující adresou URL:"
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Aktualizaci rozšíření <var>%s</var> můžete provést ručně, stažením nejnovější verze z našich stránek a instalací ve správci rozšíření."

LIVEUPDATE_STUCK_HEAD="Poslední pokus o získání aktualizace se nezdařil"
LIVEUPDATE_STUCK_INFO="Poslední pokus o komunikaci se serverem aktualizací se nezdařil. Obvykle je to způsobeno nastavením serveru, které neumožňuje komunikaci s jinými servery. Pro opětovný pokus získání informací o aktualizacích stiskněte tlačítko "_QQ_"Aktualizovat informace"_QQ_". Pokud se Vám po stisknutí tohoto tlačítka zobrazí prázdná bílá stránka, kontaktujte prosím provozovatele serveru."

LIVEUPDATE_ERROR_NEEDSAUTH="Tato aktualizace vyžaduje vyplněné Přihlašovací jméno a Heslo, nebo Klientské ID (Download ID) v nastavení komponenty. Po vyplnění potřebných informací bude povoleno tlačítko Aktualizovat."
LIVEUPDATE_HASUPDATES_HEAD="Je k dispozici nová verze"
LIVEUPDATE_NOUPDATES_HEAD="Instalovaná verze je aktuální"
LIVEUPDATE_CURRENTVERSION="Instalovaná verze"
LIVEUPDATE_LATESTVERSION="Nejnovější verze"
LIVEUPDATE_LATESTRELEASED="Datum nejnovější verze"
LIVEUPDATE_DOWNLOADURL="Adresa pro ruční stažení"

LIVEUPDATE_REFRESH_INFO="Najít aktualizace"
LIVEUPDATE_DO_UPDATE="Aktualizovat"

LIVEUPDATE_FTP_REQUIRED="Pro dokončení instalace na Vašem serveru je nutné využít vrstvu FTP, v globálním nastavení Joomla! však nejsou vyplněny všechna potřebná nastavení.<br/><br/>Vyplňte prosím informace pro připojení k serveru FTP níže."
LIVEUPDATE_FTP="Nastavení FTP"
LIVEUPDATE_FTPUSERNAME="FTP Přihlašovací jméno"
LIVEUPDATE_FTPPASSWORD="FTP Heslo"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Stáhnout a nainstalovat aktualizaci"

LIVEUPDATE_DOWNLOAD_FAILED="Nepodařilo se stáhnout aktualizační balíček. Ověřte prosím, zda je Vaše dočasná složka zapisovatelná, nebo zda máte povolenu Vrstvu FTP v globálním nastavení Joomla!."
LIVEUPDATE_EXTRACT_FAILED="Nepodařilo se rozbalit aktualizační balíček. Zkuste prosím rozšíření aktualizovat ručně."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Nebyl rozpoznán formát aktualizačního balíčku. V aktualizaci nelze pokračovat."
LIVEUPDATE_INSTALLEXT="Instalovat %s %s"
LIVEUPDATE_ERROR="Chyba"
LIVEUPDATE_SUCCESS="Dokončeno"

LIVEUPDATE_ICON_UNSUPPORTED="Aktualizace není podporována"
LIVEUPDATE_ICON_CRASHED="Aktualizace skončila chybou"
LIVEUPDATE_ICON_CURRENT="Vaše verze je aktuální"
LIVEUPDATE_ICON_UPDATES="NALEZENA NOVÁ VERZE! AKTUALIZOVAT"

LIVEUPDATE_RELEASEINFO="Informace"
LIVEUPDATE_RELEASENOTES="Poznámky k verzi"
LIVEUPDATE_READMOREINFO="Podrobnosti"

LIVEUPDATE_NAGSCREEN_HEAD="UPOZORNĚNÍ! Chystáte se instalovat nestabilní verzi."
LIVEUPDATE_NAGSCREEN_BODY="Chystáte se instalovat nestabilní verzi (%s - %s). Nestabilní verze jsou minimálně, nebo nejsou vůbec testovány a mohou obsahovat chyby, ovlivňující stabilitu a funkčnost Vašich stránek. Pokud si nejste jisti tím co děláte, uzavřete prosím okno prohlížeče. Pokud jste si naprosto jisti a rozumíte rizikům spojeným s instalací nestabilní verze, klikněte na tlačítko níže pro pokračování v instalaci této nestabilní verze."
LIVEUPDATE_NAGSCREEN_BUTTON="Rozumím rizikům. Pokračovat v instalaci."

LIVEUPDATE_STABILITY_ALPHA="Alfa"
LIVEUPDATE_STABILITY_BETA="Beta"
LIVEUPDATE_STABILITY_RC="RC"
LIVEUPDATE_STABILITY_STABLE="Stable"
LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/ru-RU/ru-RU.liveupdate.ini000060400000014026152455705350015271 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Автоматическое обновление"

LIVEUPDATE_NOTSUPPORTED_HEAD="Автоматическое обновление не поддерживается на этом сервере"
LIVEUPDATE_NOTSUPPORTED_INFO="Ваш сервер сообщает, что автоматическое обновление не поддерживается. Пожалуйста, обратитесь к Вашему хостеру и попросите его разрешить CURL расширение для PHP или включить функцию URL FOPEN(). Если они уже включены, пожалуйста, попросите его настроить их сетевой экран так, чтобы она позволяла получить доступ к следующему адресу:"_QQ_""
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Вы всегда сможете обновить <var>%s</var> посетив наш сайт, вручную, загрузив последнюю версию и установив ее с помощью Joomla!."

LIVEUPDATE_STUCK_HEAD="Автоматическое обновление обнаружило ошибку"
LIVEUPDATE_STUCK_INFO="Автоматическое обновление обнаружило, что произошла ошибка при последнем сеансе связи с сервером обновлений. Обычно это означает, что хост блокирует связи с внешними сайтами. Если Вы желаете снова получить информацию об обновлении, пожалуйста, нажмите кнопку "_QQ_"Освежить информацию об обновлении"_QQ_" , расположенную ниже. Если это приводит к появлению пустой страницы, пожалуйста, свяжитесь с Вашим хостером и сообщите об этой проблеме."

LIVEUPDATE_ERROR_NEEDSAUTH="Перед попыткой обновления до последней версии, Вы должны ввести Ваше имя пользователя/пароль или ID загрузки в параметры компонента. Кнопка обновления будет оставаться неактивной, пока Вы этого не сделаете."
LIVEUPDATE_HASUPDATES_HEAD="Доступна новая версия"
LIVEUPDATE_NOUPDATES_HEAD="У Вас уже установлена последняя версия"
LIVEUPDATE_CURRENTVERSION="Установленная версия"
LIVEUPDATE_LATESTVERSION="Последняя версия"
LIVEUPDATE_LATESTRELEASED="Дата выхода последней версии"
LIVEUPDATE_DOWNLOADURL="Ссылка для прямой загрузки"

LIVEUPDATE_REFRESH_INFO="Освежить информацию об обновлении"
LIVEUPDATE_DO_UPDATE="Обновить до последней версии"

LIVEUPDATE_FTP_REQUIRED="Автоматическое обновление определило, что необходимо использовать FTP для загрузки и установки обновления, но Вы не сохранили данные для авторизации на FTP в общих настройках Joomla!.<br/><br/>Просьба ввести свое имя пользователя и пароль FTP для продолжения обновления."
LIVEUPDATE_FTP="Информация FTP"
LIVEUPDATE_FTPUSERNAME="Имя пользователя FTP"
LIVEUPDATE_FTPPASSWORD="Пароль пользователя FTP"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Загрузить и установить обновление"

LIVEUPDATE_DOWNLOAD_FAILED="Загрузка пакета обновления не удалась. Убедитесь, что временный каталог доступен для записи или что Вы включили и настроили FTP в общих настройках Joomla!."
LIVEUPDATE_EXTRACT_FAILED="Извлечение пакета обновления не удалось. Пожалуйста, попробуйте обновить компонент вручную."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Неверный тип пакета. Обновление не может продолжаться."
LIVEUPDATE_INSTALLEXT="Установлено %s %s"
LIVEUPDATE_ERROR="Ошибка"
LIVEUPDATE_SUCCESS="Успешно"

LIVEUPDATE_ICON_UNSUPPORTED="Автоматическое обновление не поддерживается"
LIVEUPDATE_ICON_CRASHED="Автоматическое обновление не удалось!"
LIVEUPDATE_ICON_CURRENT="У Вас последняя версия"
LIVEUPDATE_ICON_UPDATES="НАЙДЕНА НОВАЯ ВЕРСИЯ! НАЖМИТЕ ДЛЯ ОБНОВЛЕНИЯ."

; LIVEUPDATE_RELEASEINFO="Information"
; LIVEUPDATE_RELEASENOTES="Release notes"
; LIVEUPDATE_READMOREINFO="Read more"

; LIVEUPDATE_NAGSCREEN_HEAD="WARNING! You are about to install an unstable version."
; LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an serious adverse to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
; LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

; LIVEUPDATE_STABILITY_ALPHA="Alpha"
; LIVEUPDATE_STABILITY_BETA="Beta"
; LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/es-ES/es-ES.liveupdate.ini000060400000011337152455705350015177 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Actualización automática"

LIVEUPDATE_NOTSUPPORTED_HEAD="Este servidor no soporta la Actualización automática"
LIVEUPDATE_NOTSUPPORTED_INFO="Su servidor indica que no soporta la Actualización automática. Por favor, contacte con su proveedor de hosting y pídale que active la función cURL de PHP, o bien que active los wrappers de URL fopen(). Si alguna de las opciones anteriores ya está activada, por favor pídale que que configure su cortafuegos de manera que permita el acceso a la siguiente URL:"_QQ_""
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Siempre puede actualizar <var>%s</var> manualmente visitando nuestro sitio, descargando la última versión e instalándola mediante el instalador del gestor de extensiones de Joomla!"_QQ_""

LIVEUPDATE_STUCK_HEAD="La actualización automática informa de un fallo"
LIVEUPDATE_STUCK_INFO="La actualización automática determinó que hubo un fallo la última vez que intentó contactar con el servidor de actualizaciones. Esto habitualmente ocurre cuando un host bloquea activamente las comunicaciones con sitios externos. Si desea trata de obtener de nuevo la información sobre nuevas actualizaciones, por favor haga clic en el botón "_QQ_"Refrescar la información sobre actualizaciones"_QQ_" que hay a continuación. Si tras hacerlo obtiene una página en blanco, por favor contacte con su proveedor de hosting y coméntele el problema."

LIVEUPDATE_ERROR_NEEDSAUTH="Debe introducir su nombre de usuario/contraseña su ID de Descarga (Download ID) en los parámetros de configuración del componente antes de intentar actualizar a la última versión. El botón de actualización permanecerá deshabilitado hasta que lo haga."
LIVEUPDATE_HASUPDATES_HEAD="Hay disponible una nueva versión"
LIVEUPDATE_NOUPDATES_HEAD="Ya tiene instalada la última vesión"
LIVEUPDATE_CURRENTVERSION="Versión instalada"
LIVEUPDATE_LATESTVERSION="Última versión"
LIVEUPDATE_LATESTRELEASED="Fecha de la última versión"
LIVEUPDATE_DOWNLOADURL="URL de descarga directa"

LIVEUPDATE_REFRESH_INFO="Refrescar la información de actualización"
LIVEUPDATE_DO_UPDATE="Actualizar a la última versión"

LIVEUPDATE_FTP_REQUIRED="La actualización automática determinó que es necesario usar FTP para poder descargar e instalar su actualización, pero usted aún no ha guardado la información de inicio de sesión FTP en la configuración global de Joomla!.<br/><br/>Por favor introduzca el nombre de usuario y la contraseña de su cuenta FTP a continuación para proceder con la actualización."
LIVEUPDATE_FTP="Información FTP"
LIVEUPDATE_FTPUSERNAME="Usuario FTP"
LIVEUPDATE_FTPPASSWORD="Contraseña FTP"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Descargar e instalar la actualización"

LIVEUPDATE_DOWNLOAD_FAILED="La descarga del paquete de actualización no se pudo completar. Asegúrese de que su directorio temporal (temp) tiene permisos de escritura o de que ha habilitado la configuración de FTP en la configuración global de su sitio."
LIVEUPDATE_EXTRACT_FAILED="La extracción de los archivos del paquete de actualización falló. Por favor, trate de actualizar la extensión manualmente."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Tipo de paquete erróneo. No se puede proceder con la actualización."
LIVEUPDATE_INSTALLEXT="Instalando %s %s"
LIVEUPDATE_ERROR="Error"
LIVEUPDATE_SUCCESS="Éxito"

LIVEUPDATE_ICON_UNSUPPORTED="La actualización automática no está soportada"
LIVEUPDATE_ICON_CRASHED="La actualización automática falló"
LIVEUPDATE_ICON_CURRENT="Ya tiene la última versión"
LIVEUPDATE_ICON_UPDATES="¡ACTUALIZACIÓN DISPONIBLE! CLIC PARA INSTALAR."

LIVEUPDATE_RELEASEINFO="Información"
LIVEUPDATE_RELEASENOTES="Notas de la versión"
LIVEUPDATE_READMOREINFO="Leer más"

LIVEUPDATE_NAGSCREEN_HEAD="ATENCIÓN! Usted está a punto de instalar una versión inestable."
LIVEUPDATE_NAGSCREEN_BODY="Usted está a punto de instalar una versión inestable (%s - %s). Las versiones inestables pueden tener mínimos o ningún test y contener errores que pueden causar serios problemas a la estabilidad y funcionalidad de su sitio web. Si usted no está seguro sobre qué hacer, por favor cierre esta ventana del explorador. Si usted está totalmente seguro de entender los riesgos involucrados con la instalación de versiones inestables, por favor pulse el botón de abajo para continuar con la instalación de esta versión inestable."
LIVEUPDATE_NAGSCREEN_BUTTON="Entiendo los riesgos. Continuar con la instalación"

LIVEUPDATE_STABILITY_ALPHA="Alfa"
LIVEUPDATE_STABILITY_BETA="Beta"
LIVEUPDATE_STABILITY_RC="RC"
LIVEUPDATE_STABILITY_STABLE="Estable"
LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/bg-BG/bg-BG.liveupdate.ini000060400000011123152455705350015074 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

; LIVEUPDATE_TASK_OVERVIEW="Live Update"

; LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update is not supported on this server"
; LIVEUPDATE_NOTSUPPORTED_INFO="Your server indicates that Live Update is not supported. Please contact your host and ask them to enable the cURL PHP extension or activate the URL fopen() wrappers. If these are already enabled, please ask them to configure their firewall so that it allows access to the following URL:"
; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="You can always update <var>%s</var> by visiting our site manually, downloading the latest release and installing it using Joomla!'s extension installer."

; LIVEUPDATE_STUCK_HEAD="Live Update has marked itself as crashed"
; LIVEUPDATE_STUCK_INFO="Live Update determined that it crashed the last time it tried to contact the update server. This usually indicates a host which actively blocks communications with external sites. If you would like to retry fetching the update information, please click the "_QQ_"Refresh update information"_QQ_" button below. If that results to a blank page, please contact your host and report this issue."

; LIVEUPDATE_ERROR_NEEDSAUTH="You have to supply your username/password or Download ID to the component's parameters before trying to upgrade to the latest release. The upgrade button will remain disabled until you do that."
; LIVEUPDATE_HASUPDATES_HEAD="A new version is available"
; LIVEUPDATE_NOUPDATES_HEAD="You already have the latest version"
LIVEUPDATE_CURRENTVERSION="инсталирана версия"
LIVEUPDATE_LATESTVERSION="последна налична версия"
; LIVEUPDATE_LATESTRELEASED="Latest release date"
LIVEUPDATE_DOWNLOADURL="директно сваляне от URL адрес"

LIVEUPDATE_REFRESH_INFO="актуализиране на информация за актуализацията"
LIVEUPDATE_DO_UPDATE="актуализиране към последната налична версия"

; LIVEUPDATE_FTP_REQUIRED="Live Update determined that it needs to use FTP in order to download and install your update, but you have not saved your FTP login information in your Joomla! Global Configuration.<br/><br/>Please provide the FTP username and password below to proceed with the update."
LIVEUPDATE_FTP="FTP информация"
LIVEUPDATE_FTPUSERNAME="FTP потребителско име"
LIVEUPDATE_FTPPASSWORD="FTP парола"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="изтегли и инсталирай актуализацията"

; LIVEUPDATE_DOWNLOAD_FAILED="Downloading the update package failed. Make sure that your temp-directory is writable or that you have enabled Joomla!'s FTP options in your site's Global Configuration."
; LIVEUPDATE_EXTRACT_FAILED="Extracting the update package failed. Please try updating the extension manually."

; LIVEUPDATE_INVALID_PACKAGE_TYPE="Invalid package type. The update can not proceed."
LIVEUPDATE_INSTALLEXT="инсталирайте %s %s"
LIVEUPDATE_ERROR="грешка"
LIVEUPDATE_SUCCESS="успех"

; LIVEUPDATE_ICON_UNSUPPORTED="Live Update not supported"
; LIVEUPDATE_ICON_CRASHED="Live Update crashed"
LIVEUPDATE_ICON_CURRENT="Вие имате последната версия"
LIVEUPDATE_ICON_UPDATES="НАМЕРЕНА Е АКТУАЛИЗАЦИЯ! ЩРАКНЕТЕ, ЗА ДА АКТУАЛИЗИРАТЕ."

LIVEUPDATE_RELEASEINFO="информация"
; LIVEUPDATE_RELEASENOTES="Release notes"
LIVEUPDATE_READMOREINFO="прочети още"

LIVEUPDATE_NAGSCREEN_HEAD="ПРЕДУПРЕЖДЕНИЕ! Вие се опитвате да инсталирате нестабилна версия."
; LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an serious adverse to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
LIVEUPDATE_NAGSCREEN_BUTTON="разбирам какви са възможните рискове. Продължи с инсталацията."

LIVEUPDATE_STABILITY_ALPHA="алфа версия"
LIVEUPDATE_STABILITY_BETA="бета версия"
; LIVEUPDATE_STABILITY_RC="RC"
LIVEUPDATE_STABILITY_STABLE="стабилна версия"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/it-IT/it-IT.liveupdate.ini000060400000011004152455705350015212 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Live Update"

LIVEUPDATE_NOTSUPPORTED_HEAD="La funzionalità di Live Update non è supportata su questo server"
LIVEUPDATE_NOTSUPPORTED_INFO="Il vostro server indica che la funzionalità di Live Update non è supportata. Contattate il fornitore e chiedete di abilitare l'estensione PHP cURL oppure attivare le funzionalità di URL fopen(). Se queste opzioni sono già attive, fate verificare la configurazione del firewall per permettere l'accesso al seguente URL:"_QQ_""
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="E' sempre possibile aggiornare <var>%s</var> visitando il nostro sito, scaricando l'ultima versione disponibile ed installandola in Joomla usando i normali comando di installazione delle estensioni."

LIVEUPDATE_STUCK_HEAD="Live Update ha rilevato un precedente crash"
LIVEUPDATE_STUCK_INFO="Live Update ha determinato che, nell'ultimo tentativo di contattare il server di aggiornamento, l'operazione è fallita con un crash. Generalmente questo indica la presenza di un servizio che blocca la comunicazione con siti esterni. Se volete riprovare a recuperare le informazioni di aggiornamento utilizzate il pulsante "_QQ_"Verifica disponibilità aggiornamenti"_QQ_" più sotto. Se il risultato è una pagina vuota, contattate il vostro fornitore per segnalare il problema."

LIVEUPDATE_ERROR_NEEDSAUTH="E' necessario inserire Username e Password oppure il proprio Download ID tra i parametri di configurazione del componente prima di tentare l'aggiornamento all'ultima versione. Il pulsante di aggiornamento sarà attivato solamente dopo l'inserimento di tali informazioni."
LIVEUPDATE_HASUPDATES_HEAD="E' disponibile una nuova versione"
LIVEUPDATE_NOUPDATES_HEAD="Non sono disponibili nuovi aggiornamenti"
LIVEUPDATE_CURRENTVERSION="Versione installata"
LIVEUPDATE_LATESTVERSION="Ultima versione"
LIVEUPDATE_LATESTRELEASED="Data rilascio ultima versione"
LIVEUPDATE_DOWNLOADURL="URL di scaricamento diretto"

LIVEUPDATE_REFRESH_INFO="Verifica disponibilità aggiornamenti"
LIVEUPDATE_DO_UPDATE="Aggiorna all'ultima versione"

LIVEUPDATE_FTP_REQUIRED="Live Update ha determinato che è necessario l'utilizzo di FTP per scaricamente ed installare l'aggiornamento, tuttavia non sono state impostate correttamente le informazioni di configurazione in Joomla. Inserite qui sotto Username e Password per il servizio FTP per proseguire con l'aggiornamento."
LIVEUPDATE_FTP="Informazioni FTP"
LIVEUPDATE_FTPUSERNAME="Username FTP"
LIVEUPDATE_FTPPASSWORD="Password FTP"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Scarica ed installa aggiornamento"

LIVEUPDATE_DOWNLOAD_FAILED="Lo scaricamento dell'aggiornamento è fallito. Verificate che la cartella temporanea sia scrivibile e che siano abilitate le opzioni FTP di Joomla all'interno della sezione di Configurazione Globale del sito."
LIVEUPDATE_EXTRACT_FAILED="L'estrazione del pacchetto di aggiornamento è fallita. Sarà necessario effettuare l'aggiornamento tramite procedura manuale."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Formato del pacchetto di aggiornamento non riconosciuto. L'aggiornamento non può essere effettuato."
LIVEUPDATE_INSTALLEXT="Installazione %s %s"
LIVEUPDATE_ERROR="Errore"
LIVEUPDATE_SUCCESS="Completato"

LIVEUPDATE_ICON_UNSUPPORTED="Live Update non supportato"
LIVEUPDATE_ICON_CRASHED="Live Update non funziona correttamente"
LIVEUPDATE_ICON_CURRENT="Non sono disponibili nuovi aggiornamenti"
LIVEUPDATE_ICON_UPDATES="INSTALLA NUOVO AGGIORNAMENTO!"

; LIVEUPDATE_RELEASEINFO="Information"
; LIVEUPDATE_RELEASENOTES="Release notes"
; LIVEUPDATE_READMOREINFO="Read more"

; LIVEUPDATE_NAGSCREEN_HEAD="WARNING! You are about to install an unstable version."
; LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an serious adverse to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
; LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

; LIVEUPDATE_STABILITY_ALPHA="Alpha"
; LIVEUPDATE_STABILITY_BETA="Beta"
; LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/nl-NL/nl-NL.liveupdate.ini000060400000007773152455705350015220 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Live Update"

LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update wordt op deze server niet ondersteund"
LIVEUPDATE_NOTSUPPORTED_INFO="De server geeft aan dat Live Update niet wordt ondersteund. Neem contact op met de hoster en vraag de cURL PHP extensie of om de URL fopen() wrappers te activeren. Vraag, als ze al geactiveerd zijn, de firewall zo in te stellen dat er toegang tot de volgende URL is:"_QQ_""
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="U kunt <var>%s</var> altijd updaten door onze site te bezoeken, de laatste versie te downloaden en doormiddel van Joomla!'s extensiebeheer te installeren."

LIVEUPDATE_STUCK_HEAD="Live Update is gecrasht"
LIVEUPDATE_STUCK_INFO="Live Update stelt vast dat het, de laatste keer dat het de update-server trachtte te bereiken, gecrasht is. Dit betekent meestal dat de host actief de communicatie met externe sites blokkeert. Klik, als u de update informatie opnieuw wilt ophalen, op de "_QQ_"Ververs update informatie"_QQ_" knop hieronder. Als dat leidt tot een blanco pagina, neem dan contact op met uw hoster en meld dit."

LIVEUPDATE_ERROR_NEEDSAUTH="U moet uw gebruikersnaam / wachtwoord of download ID opgegeven in de parameters van de component om naar de laatste release te upgraden. De upgrade knop zal geblokkeerd blijven tot dit gedaan is."
LIVEUPDATE_HASUPDATES_HEAD="Er is een nieuwe versie beschikbaar"
LIVEUPDATE_NOUPDATES_HEAD="U heeft de laatste versie al"
LIVEUPDATE_CURRENTVERSION="Geïnstalleerde versie"
LIVEUPDATE_LATESTVERSION="Nieuwste versie"
LIVEUPDATE_LATESTRELEASED="Datum laatste release"
LIVEUPDATE_DOWNLOADURL="URL voor directe download"

LIVEUPDATE_REFRESH_INFO="Ververs update-informatie"
LIVEUPDATE_DO_UPDATE="Update naar de laatste versie"

LIVEUPDATE_FTP_REQUIRED="Live Update stelt vast dat het FTP moet gebruiken om de updates te downloaden en installeren, maar uw FTP logingegevens zijn bij de Joomla algemene instellingen niet opgeslagen.<br/><br/>Vul a.u.b. hieronder de FTP gebruikersnaam en het wachtwoord in om verder te gaan met updaten."
LIVEUPDATE_FTP="FTP informatie"
LIVEUPDATE_FTPUSERNAME="FTP gebruikersnaam"
LIVEUPDATE_FTPPASSWORD="FTP wachtwoord"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Download en installeer de update"

LIVEUPDATE_DOWNLOAD_FAILED="Het downloaden van het updatepakket is mislukt. Zorg dat de temp map beschrijfbaar is of dat de FTP opties bij de algemene instellingen goed ingevuld zijn."
LIVEUPDATE_EXTRACT_FAILED="Uitpakken van het pakket mislukt. Probeer de extensie handmatig bij te werken."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Verkeerd pakkettype. Updaten kan niet verder gaan."
LIVEUPDATE_INSTALLEXT="Installeer %s %s"
LIVEUPDATE_ERROR="Fout"
LIVEUPDATE_SUCCESS="Succesvol"

LIVEUPDATE_ICON_UNSUPPORTED="Live Update niet ondersteund"
LIVEUPDATE_ICON_CRASHED="Live Update gecrasht"
LIVEUPDATE_ICON_CURRENT="U heeft de laatste versie"
LIVEUPDATE_ICON_UPDATES="UPDATE GEVONDEN! KLIK OM TE UPDATEN."

; LIVEUPDATE_RELEASEINFO="Information"
; LIVEUPDATE_RELEASENOTES="Release notes"
; LIVEUPDATE_READMOREINFO="Read more"

; LIVEUPDATE_NAGSCREEN_HEAD="WARNING! You are about to install an unstable version."
; LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an serious adverse to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
; LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

; LIVEUPDATE_STABILITY_ALPHA="Alpha"
; LIVEUPDATE_STABILITY_BETA="Beta"
; LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/lt-LT/lt-LT.liveupdate.ini000060400000010626152455705350015237 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Automatinis atnaujinimas"

LIVEUPDATE_NOTSUPPORTED_HEAD="Šiame serveryje automatinis atnaujinimas negalimas"
LIVEUPDATE_NOTSUPPORTED_INFO="Jūsų serveris rodo, kad automatinis atnaujinimas yra negalimas. Prašome susisiekti su savo tinklapio talpintojais ir paprašyti įgalinti cURL PHP plėtinį arba aktyvuoti URL fopen(). Jei šie plėtiniai jau yra įgalinti, paprašykite jų sukonfigūruoti savo ugniasienę taip, kad ji leistų prieigą prie šios URL:"
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Jūs visada galite atnaujinti <var>%s</var> rankiniu būdu, aplankydami mūsų tinklapį, parsisiųsdami naujausią programos laidą ir įdiegdami standartiniu Joomla! Būdu."

LIVEUPDATE_STUCK_HEAD="Automatinis atnaujinimas nurodė, kad įvyko programinė klaida"
LIVEUPDATE_STUCK_INFO="Automatinis atnaujinimas nurodė, kad bandant susisiekti su atnaujinimų serveriu įvyko programinė klaida. Paprastai tai rodo, kad tinklapio talpintojas aktyviai blokuoja ryšius su išorinėmis svetainėmis. Jei norite pabandyti iš naujo parsisiųsti atnaujinimo informaciją, prašome spragtelėti žemiau esantį mygtuką "_QQ_"Atnaujinti informaciją"_QQ_". Jei parodomas tuščias puslapis, norint išspręsti šią problemą turėsite kreiptis į savo tinklapio talpintoją."

LIVEUPDATE_ERROR_NEEDSAUTH="Norėdami atsinaujinti į naujausią programos versiją, turite nurodyti savo prisijungimo vardą/slaptažodį arba Parsisiuntimo ID komponento parametruose. Kol to nepadarysite, atnaujinimo mygtukas išliks neaktyvus."
LIVEUPDATE_HASUPDATES_HEAD="Yra nauja versija"
LIVEUPDATE_NOUPDATES_HEAD="Jūs turite naujausią programos versiją."
LIVEUPDATE_CURRENTVERSION="Įdiegta versija"
LIVEUPDATE_LATESTVERSION="Naujausia versija"
LIVEUPDATE_LATESTRELEASED="Naujausios versijos išleidimo data"
LIVEUPDATE_DOWNLOADURL="Tiesioginė parsisiuntimo nuoroda"

LIVEUPDATE_REFRESH_INFO="Atnaujinti informaciją"
LIVEUPDATE_DO_UPDATE="Atnaujinti į naujausią versiją"

LIVEUPDATE_FTP_REQUIRED="Automatinis atnaujinimas nustatė, kad norint atsisiųsti ir įdiegti atnaujinimą turi būti naudojamas FTP sluoksnis, tačiau Jūs nenurodėte savo FTP prisijungimo duomenų globaliose savo tinklapio Joomla! nuostatose.<br/><br/>Jei norite įdiegti naujinimą, nurodykite FTP prisijungimo duomenis."
LIVEUPDATE_FTP="FTP informacija"
LIVEUPDATE_FTPUSERNAME="FTP naudotojo vardas"
LIVEUPDATE_FTPPASSWORD="FTP slaptažodis"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Atsisiųsti ir įdiegti naujinimą"

LIVEUPDATE_DOWNLOAD_FAILED="Nepavyko atsisiųsti atnaujinimo paketo. Įsitikinkite, kad į tinklapio laikinąjį aplanką leidžiama rašyti ir tai, kad Jūsų tinklapio globaliose Joomla! nuostatose įgalintas FTP naudojimas."
LIVEUPDATE_EXTRACT_FAILED="Nepavyko išpakuoti atnaujinimo paketo. Prašome bandyti atsinaujinti rankiniu būdu."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Neteisingas paketo tipas. Atnaujinimas negalimas"
LIVEUPDATE_INSTALLEXT="Įdiegti %s %s"
LIVEUPDATE_ERROR="Klaida"
LIVEUPDATE_SUCCESS="Pavyko"

LIVEUPDATE_ICON_UNSUPPORTED="Automatinis atnaujinimas nepalaikomas"
LIVEUPDATE_ICON_CRASHED="Įvyko automatinio atnaujinimo programinis lūžis"
LIVEUPDATE_ICON_CURRENT="Jūs turite naujausią programos versiją."
LIVEUPDATE_ICON_UPDATES="GALIMAS ATNAUJINIMAS! NORĖDAMI ATSINAUJINTI SPRAGTELĖKITE ČIA"

; LIVEUPDATE_RELEASEINFO="Information"
; LIVEUPDATE_RELEASENOTES="Release notes"
; LIVEUPDATE_READMOREINFO="Read more"

; LIVEUPDATE_NAGSCREEN_HEAD="WARNING! You are about to install an unstable version."
; LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an serious adverse to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
; LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

; LIVEUPDATE_STABILITY_ALPHA="Alpha"
; LIVEUPDATE_STABILITY_BETA="Beta"
; LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/sv-SE/sv-SE.liveupdate.ini000060400000010141152455705350015231 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Live Update"

LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update stöds inte på denna server"
LIVEUPDATE_NOTSUPPORTED_INFO="Din server indikerar att Live Update inte stöds. Kontakta ditt webbhotell och be dem aktivera PHP-tillägget cURL och att aktivera URL fopen() wrappers. Om detta redan är aktiverat skall du be dem konfiurera brandväggen så att den accepterar anslutningar från följande URL:"_QQ_""
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Du kan alltid uppdatera <var>%s</var> manuellt genom att vår webbplats och ladda ned senaste utgåvan och installera via Joomla som vanligt."

LIVEUPDATE_STUCK_HEAD="Live Update har markerat sig själv som krashad"
LIVEUPDATE_STUCK_INFO="Live Update har indikerat att den kraschade förra gången den försökte kontakta uppdateringsservern. Detta händer vanligen om kommunikationen med externa webbplatser aktivt har blockerats. Om du vill fortsätta hämta uppdateringsinformation, klicka på knappen "_QQ_"Hämta uppdateringsinfo på nytt"_QQ_" här nedan. Om detta resluterar i en blank sida skall du kontakta ditt webbhotell och rapportera ärendet."

LIVEUPDATE_ERROR_NEEDSAUTH="Du måste ange användarnamn/lösenord eller Nedladdnings-ID i komponentens Inställningar innan du försöker uppdatera till senaste version. Uppgraderingsknappen kommer att vara inaktiv till dess detta är gjort."
LIVEUPDATE_HASUPDATES_HEAD="Det finns en ny version tillgänglig"
LIVEUPDATE_NOUPDATES_HEAD="Du har den senatste versionen"
LIVEUPDATE_CURRENTVERSION="Installerad version"
LIVEUPDATE_LATESTVERSION="Senaste version"
LIVEUPDATE_LATESTRELEASED="Senaste utgåvodatum"
LIVEUPDATE_DOWNLOADURL="Direkt nedladdnings-URL"

LIVEUPDATE_REFRESH_INFO="Hämta uppdateringsinformation"
LIVEUPDATE_DO_UPDATE="Uppdatera till senaste version"

LIVEUPDATE_FTP_REQUIRED="Live Update har upptäckt att den behöver använda FTP för att kunna ladda ned och installera uppdateringen. Du har inte sparat din FTP-inloggningsinfo i Joomlas globala inställningar.<br/><br/>Ange ditt FTP användarnamn och lösenord nedan för att fortsätta med uppdateringen."
LIVEUPDATE_FTP="FTP-Information"
LIVEUPDATE_FTPUSERNAME="FTP användarnamn"
LIVEUPDATE_FTPPASSWORD="FTP Lösenord"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Ladda ned och installera uppdateringen"

LIVEUPDATE_DOWNLOAD_FAILED="Nedladdningen av uppdateringen misslyckades. Kontrollera att temp-mappen är skrivbar och att du aktiverat Joomla!s FTP-lager i de globala inställningarna för din webbplats."
LIVEUPDATE_EXTRACT_FAILED="Uppackningen av uppdaterinspaketet misslyckades. Försök att uppdatera tillägget manuellt."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Ogiltig pakettyp. Uppdateringen kan inte fortsätta."
LIVEUPDATE_INSTALLEXT="Installera %s %s"
LIVEUPDATE_ERROR="FEL!"
LIVEUPDATE_SUCCESS="Klart"

LIVEUPDATE_ICON_UNSUPPORTED="Live Update stöds inte"
LIVEUPDATE_ICON_CRASHED="Live Update krashade"
LIVEUPDATE_ICON_CURRENT="Du har den senaste versionen"
LIVEUPDATE_ICON_UPDATES="UPPDATERING HITTAD! KLICKA FÖR ATT UPPDATERA."

LIVEUPDATE_RELEASEINFO="Information"
LIVEUPDATE_RELEASENOTES="Release notes"
LIVEUPDATE_READMOREINFO="Läs mer"

; LIVEUPDATE_NAGSCREEN_HEAD="WARNING! You are about to install an unstable version."
; LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an serious adverse to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
; LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

; LIVEUPDATE_STABILITY_ALPHA="Alpha"
; LIVEUPDATE_STABILITY_BETA="Beta"
; LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/tr-TR/tr-TR.liveupdate.ini000060400000010010152455705350015252 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Canlı Güncelleme"

LIVEUPDATE_NOTSUPPORTED_HEAD="Canlı Güncelleme bu sunucu üzerinde desteklenmiyor"
LIVEUPDATE_NOTSUPPORTED_INFO="Sunucunuz Canlı Güncellemeyi desteklemiyor. Lütfen sunucu yöneticinizle görüşerek cURL PHP ekini ya da URL fopen() sarıcılarını etkinleştirmelerini isteyin. Bu ekler zaten etkinleştirilmişse, güvenlik duvarını şu İnternet adresine izin verecek şekilde ayarlamalarını isteyin:"
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="<var>%s</var> güncellemelerini istediğiniz zaman el ile kurmak için, sitemizden en son sürümü indirip Joomla! bileşen kurucusu ile yükleyebilirsiniz."

LIVEUPDATE_STUCK_HEAD="Canlı güncellemede bir sorun çıkmış"
LIVEUPDATE_STUCK_INFO="Canlı Güncelleme, güncelleme sunucusuna son kez bağlanmaya çalıştığında bir sorun çıkmış. Bu duruma genellikle dışarıdaki sunuculara yapılan bağlantıları engelleyen bir ayar yol açar. Güncelleme bilgisini yeniden almak isterseniz lütfen aşağıdaki "_QQ_"Güncelleme bilgisini alın"_QQ_" düğmesine tıklayın. Boş beyaz bir sayfa ile karşılaşırsanız bu durumu sunucu yöneticinize iletin."

LIVEUPDATE_ERROR_NEEDSAUTH="Son sürüme güncellemeyi denemeden önce, bileşen ayarları bölümüne kullanıcı adınızı/parolanızı ya da indirme kodunuzu yazmalısınız. Bu bilgileri yazana kadar Güncelleyin düğmesi devre dışı kalır."
LIVEUPDATE_HASUPDATES_HEAD="Yeni bir sürüm var"
LIVEUPDATE_NOUPDATES_HEAD="Son sürümü kullanıyorsunuz"
LIVEUPDATE_CURRENTVERSION="Kullandığınız sürüm"
LIVEUPDATE_LATESTVERSION="Son sürüm"
LIVEUPDATE_LATESTRELEASED="Son yayın tarihi"
LIVEUPDATE_DOWNLOADURL="Doğrudan indirme adresi"

LIVEUPDATE_REFRESH_INFO="Güncelleme bilgisini alın"
LIVEUPDATE_DO_UPDATE="Son sürüme güncelleyin"

LIVEUPDATE_FTP_REQUIRED="Canlı Güncelleme, güncellemeyi indirip kurmak yerine FTP kullanmaya gerek duyuyor, ancak FTP bilgilerinizi Joomla! Genel Ayarlarına kaydetmemişsiniz.<br/><br/>Bu güncellemeyi yapabilmek için FTP kullanıcı adı ve parolanızı aşağıya yazın."
LIVEUPDATE_FTP="FTP Bilgileri"
LIVEUPDATE_FTPUSERNAME="FTP Kullanıcı Adı"
LIVEUPDATE_FTPPASSWORD="FTP Parolası"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Güncellemeyi indirin ve yükleyin"

LIVEUPDATE_DOWNLOAD_FAILED="Güncelleme paketi indirilemedi. Geçici klasörünüzün yazılabilir olduğundan ya da Joomla! Genel Ayarlarından FTP seçeneğini etkinleştirdiğinizden emin olun."
LIVEUPDATE_EXTRACT_FAILED="Güncelleme paketi ayıklanamadı. Lütfen bileşeni el ile güncellemeyi deneyin."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Geçersiz paket tipi. Güncelleme yapılamıyor."
LIVEUPDATE_INSTALLEXT="%s %s yükleyin"
LIVEUPDATE_ERROR="Hata"
LIVEUPDATE_SUCCESS="Başarılı"

LIVEUPDATE_ICON_UNSUPPORTED="Canlı Güncelleme desteklenmiyor"
LIVEUPDATE_ICON_CRASHED="Canlı Güncelleme hata verdi"
LIVEUPDATE_ICON_CURRENT="Son sürümü kullanıyorsunuz"
LIVEUPDATE_ICON_UPDATES="GÜNCELLEME VAR! YÜKLEMEK İÇİN TIKLAYIN."

LIVEUPDATE_RELEASEINFO="Bilgiler"
LIVEUPDATE_RELEASENOTES="Yayın Notları"
LIVEUPDATE_READMOREINFO="Devamını okuyun"

LIVEUPDATE_NAGSCREEN_HEAD="DİKKAT! Kararsız bir sürüm yüklemek üzeresiniz."
LIVEUPDATE_NAGSCREEN_BODY="Kararsız bir sürüm yüklemek üzeresiniz (%s - %s). Kararsız sürümler çok az denendiği ya da hiç denenmediği için hatalar içerir ve web sitenizin düzgün çalışmasını engelleyebilir. Ne yaptığınızdan emin değilseniz bu tarayıcı penceresini kapatın. Kararsız sürümleri yüklemekle alacağınız risklerin farkındaysanız, yüklemeye devam etmek için aşağıdaki düğmeye tıklayın."
LIVEUPDATE_NAGSCREEN_BUTTON="Riskleri anladım. Yüklemeye devam edeceğim."

LIVEUPDATE_STABILITY_ALPHA="Alfa"
LIVEUPDATE_STABILITY_BETA="Beta"
LIVEUPDATE_STABILITY_RC="Yayın adayı"
LIVEUPDATE_STABILITY_STABLE="Kararlı"
LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/sl-SI/sl-SI.liveupdate.ini000060400000010165152455705350015223 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Posodobljanje v živo"

LIVEUPDATE_NOTSUPPORTED_HEAD="Posodabljanje v živo ni podprto na tem strežniku"
LIVEUPDATE_NOTSUPPORTED_INFO="Vaš server ne podpira Live Posodobitev. Obrnite se na svojega gostitelja in ga prosite, da se omogoči razširitev CURL PHP ali aktivira URL fopen () ovoje. Če so ti že omogočeno, ga prosite, naj svoje požarni zid konfigurirate tako, da omogoča dostop do naslednjih URL:"
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Vedno lahko posodobite <var>%s</var> tako, da obiščete našo spletno stran, ročno prenesete najnovejše sprostitve in jih namestite z Joomla! 's namestitev razširitve."

LIVEUPDATE_STUCK_HEAD="Posodobitev v živo je označena kot spodletelo"
LIVEUPDATE_STUCK_INFO="Posodobitev v živo je določila, da se je zrušila v zadnjem času, ko je poskušala stopiti v stik strežnika za posodabljanje. To ponavadi pomeni, gostitelja, ki aktivno blokira komunikacijo z zunanjimi spletnimi stranmi. Če želite ponoviti ljubek posodabljanje informacij, prosimo, kliknite "_QQ_"Osvežite informacije posodabljanja"_QQ_" spodnji gumb. Če bo rezultat prazna stran, prosimo, obrnite se na gostitelja, in poročajte o tej zadevi."

LIVEUPDATE_ERROR_NEEDSAUTH="Morate predloži svoje uporabniško ime / geslo ali ID Prenosa s parametri sestavnega dela, preden poskušate nadgraditi na najnovejšo različico. Gumb Nadgradnja bo ostal onemogočen."
LIVEUPDATE_HASUPDATES_HEAD="Nova različica je na voljo"
LIVEUPDATE_NOUPDATES_HEAD="Že imate zadnjo verzijo"
LIVEUPDATE_CURRENTVERSION="Nameščena različica"
LIVEUPDATE_LATESTVERSION="Zadnja različica"
LIVEUPDATE_LATESTRELEASED="Zadnji Datum izdaje"
LIVEUPDATE_DOWNLOADURL="Direktni prenos URL"

LIVEUPDATE_REFRESH_INFO="Osveži informacij posodobitev"
LIVEUPDATE_DO_UPDATE="Posodobitev na najnovejšo različico"

LIVEUPDATE_FTP_REQUIRED="Posodobitev v živo določa, da morate uporabiti FTP, da prenesete in namestite posodobitev, vendar niste shranili FTP podatke za prijavo v vaši Joomla! Globalne Konfiguracije.<br/><br/>Prosimo, za FTP uporabniško ime in geslo za nadaljevanje posodobitve."
LIVEUPDATE_FTP="FTP Informacije"
LIVEUPDATE_FTPUSERNAME="FTP Uporabniško ime"
LIVEUPDATE_FTPPASSWORD="FTP Geslo"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Prenesite in namestite posodobitev"

LIVEUPDATE_DOWNLOAD_FAILED="Nalaganje posodobitvenega paketa ni uspela. Prepričajte se, da je vaš temp-imenik zapisljiv ali da ste omogočili Joomla! 'S FTP možnosti v vaše strani Globalne Konfiguracije."
LIVEUPDATE_EXTRACT_FAILED="Pridobivanja posodobitvenega paketa ni uspela. Poskusite posodabljanje razširitve ročno."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Neveljavna vrsta paketa.Posodobitev ne morem nadaljevati."
LIVEUPDATE_INSTALLEXT="Nameščeno %s %s"
LIVEUPDATE_ERROR="Napaka"
LIVEUPDATE_SUCCESS="Uspešno"

LIVEUPDATE_ICON_UNSUPPORTED="Posodabljanje v živo ni podprto"
LIVEUPDATE_ICON_CRASHED="Posodabljanje v živo je spodletelo"
LIVEUPDATE_ICON_CURRENT="Imate najnovejšo različico"
LIVEUPDATE_ICON_UPDATES="POSODOBITEV NA VOLJO! KLIKNITE ZA POSODOBITEV."

LIVEUPDATE_RELEASEINFO="Informacije"
LIVEUPDATE_RELEASENOTES="Opombe ob izdaji"
LIVEUPDATE_READMOREINFO="Preberite več"

LIVEUPDATE_NAGSCREEN_HEAD="OPOZORILO! Ste pred tem namestiti nestabilno različico."
LIVEUPDATE_NAGSCREEN_BODY="Ste pred tem namestili nestabilno različico (%s - %s). Nestabilne različice so lahko opravili minimalno ali brez testiranja in vsebujejo napake, ki imajo lahko resno škodljivost za stabilnost in funkcionalnost vaše spletne strani. Če niste prepričani o tem, kaj si o tem narediti, zaprite to okno brskalnika. Če ste popolnoma prepričani, da razumete tveganja, povezana z namestitvijo nestabilnih izdaj, kliknite na spodnji gumb, da nadaljujte z namestitvijo te nestabilne izdaje."
LIVEUPDATE_NAGSCREEN_BUTTON="Razumem tveganja. Nadaljujte z namestitvijo."

LIVEUPDATE_STABILITY_ALPHA="Alfa"
LIVEUPDATE_STABILITY_BETA="Beta"
LIVEUPDATE_STABILITY_RC="RC"
LIVEUPDATE_STABILITY_STABLE="Stabilna"
LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/pt-PT/pt-PT.liveupdate.ini000060400000010631152455705350015253 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Atualizações"

LIVEUPDATE_NOTSUPPORTED_HEAD="Atualizações diretas não são suportadas neste servidor"
LIVEUPDATE_NOTSUPPORTED_INFO="O seu servidor indica que a atualização direta não é suportada. Por favor contate o seu alojamento e peça-lhes para ativar a extensão cURL do PHP ou ativar a função fopen(). Se estas já estiverem ativadas, por favor peça-lhes para configurar o firewall para permitir o acesso à seguinte URL:"
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Pode sempre atualizar pelo processo normal <var>%s</var> visita o nosso sítio, descarrega a última versão e instala pelo instalador de extensões do Joomla."

LIVEUPDATE_STUCK_HEAD="O atualizador direto marcou-se a si mesmo como defeituoso"
LIVEUPDATE_STUCK_INFO="O atualizador direto indica que bloqueou na última vez que tentou entrar em contato com o servidor de atualização. Isso geralmente indica um alojamento que bloqueia ativamente as comunicações com sites externos. Se quiser tentar novamente obter as informações de atualização, por favor clique no botão ATUALIZAR INFORMAÇÕES DE ATUALIZAÇÃO. Se isto resultar numa página em branco, carrtegue no botão voltar e depois contate seu gestor de alojamento e relate este problema."

LIVEUPDATE_ERROR_NEEDSAUTH="Deve indicar um nome de utilizador/senha ou Download ID para os parâmetros do componente antes de tentar fazer a atualização para a última versão. O botão de atualização continuará desativado até que faça isso."
LIVEUPDATE_HASUPDATES_HEAD="Está disponível uma nova versão"
LIVEUPDATE_NOUPDATES_HEAD="Existe uma nova versão disponível"
LIVEUPDATE_CURRENTVERSION="Versão instalada"
LIVEUPDATE_LATESTVERSION="Última versão"
LIVEUPDATE_LATESTRELEASED="Data da última versão"
LIVEUPDATE_DOWNLOADURL="URL de transferência direta"

LIVEUPDATE_REFRESH_INFO="Atualizar as informações de atualização"
LIVEUPDATE_DO_UPDATE="Atualizar para versão mais recente"

LIVEUPDATE_FTP_REQUIRED="O atualizador direto indica necessitar de utilizar o FTP para descarregar e instalar a sua atualização, mas você não indicou as suas informações de autenticação FTP na Configuração Global do Joomla!.<br/><br/>Por favor, indique abaixo o nome de utilizador e senha FTP para prosseguir com a atualização."
LIVEUPDATE_FTP="Informação de FTP"
LIVEUPDATE_FTPUSERNAME="Nome de utilizador FTP"
LIVEUPDATE_FTPPASSWORD="Senha FTP"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Transferir e instalar atualização"

LIVEUPDATE_DOWNLOAD_FAILED="A transferência do pacote de atualização falhou. Certifique-se de que a pasta TEMP é editável ou que ativou as opções de FTP do Joomla nas configurações globais de seu sítio."
LIVEUPDATE_EXTRACT_FAILED="A extração do pacote de atualização falhou. Por favor tente atualizar a extensão manualmente."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Tipo de pacote inválido. A atualização não pode continuar."
LIVEUPDATE_INSTALLEXT="Instalar %s %s"
LIVEUPDATE_ERROR="Erro"
LIVEUPDATE_SUCCESS="Sucesso"

LIVEUPDATE_ICON_UNSUPPORTED="Atualização direta não suportada"
LIVEUPDATE_ICON_CRASHED="Atualização direta bloqueou"
LIVEUPDATE_ICON_CURRENT="Tem a versão mais recente"
LIVEUPDATE_ICON_UPDATES="ATUALIZAÇÃO ENCONTRADA! Clique para atualizar."

LIVEUPDATE_RELEASEINFO="Informação"
LIVEUPDATE_RELEASENOTES="Notas da versão"
LIVEUPDATE_READMOREINFO="Ver mais"

LIVEUPDATE_NAGSCREEN_HEAD="ATENÇÃO: Está prestes a instalar uma versão não estável!"
LIVEUPDATE_NAGSCREEN_BODY="Está prestes a instalar uma versão instável (%s - %s). Versões instáveis destinam-se a programadores avançados já que podem ​​podem ter sofrido testes mínimos ou mesmo nenhuns e conter falhas desconhecidas que podem ter um efeito adverso grave à estabilidade e funcionalidade do seu sítio. Se não tiver a certeza sobre o que está prestes a fazer, por favor, feche esta janela. Se estiver certo dos riscos envolvidos com a instalação de versões instáveis​​, então clique no botão abaixo para continuar a instalação desta versão instável."
LIVEUPDATE_NAGSCREEN_BUTTON="Compreendo os riscos. Continuar com a instalação."

LIVEUPDATE_STABILITY_ALPHA="Alfa"
LIVEUPDATE_STABILITY_BETA="Beta"
LIVEUPDATE_STABILITY_RC="RC"
LIVEUPDATE_STABILITY_STABLE="Estável"
LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/pt-BR/pt-BR.liveupdate.ini000060400000010467152455705350015222 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Actualização ao vivo"

LIVEUPDATE_NOTSUPPORTED_HEAD="A atualização ao vivo não esta suportada neste servidor"
LIVEUPDATE_NOTSUPPORTED_INFO="O servidor indica que Atualização ao Vivo não é compatível. Entre em contato com seu Hosting e solicite que permitam a extensão  cURL PHP ou desativem o URL fopen(). Se estão já desabilitadas, por favor, solicite que configurem seu firewall para que permita o acesso do seguinte endereço URL:"_QQ_""
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Sempre é possível atualizar <var>%s</var>, visite nosso site manualmente, baixe a última versão e instale usando o instalador de extensões Joomla!."

LIVEUPDATE_STUCK_HEAD="Actualização ao Vivo marcou como se danificou"
LIVEUPDATE_STUCK_INFO="Live Update determinou que foi danificado a última vez que tratou de contatar com o servidor de atualizações. Isto d emodo geral indica uma série de bloqueios ativos de comunicação com sites externos. Se deseja voltar a tentar buscar a informação de atualização, por favor clique em 'Atualizar informação de atualização' no botão abaixo. Em caso de ontér uma página em branco como resultado, por favor contate com seu Hosting e informe sobre este tema."

LIVEUPDATE_ERROR_NEEDSAUTH="Tem que facilitar seu nome de usuário/senha ou ID de download nos parâmetros do componente antes de tentar atualizar a última versão. O botão de atualização permanecerá desativado até que não realize esta ação."
LIVEUPDATE_HASUPDATES_HEAD="Existe uma versão nova disponível"
LIVEUPDATE_NOUPDATES_HEAD="Você já tem a última versão"
LIVEUPDATE_CURRENTVERSION="Versão instalada"
LIVEUPDATE_LATESTVERSION="Última versão"
LIVEUPDATE_LATESTRELEASED="Data do último lançamento"
LIVEUPDATE_DOWNLOADURL="URL de download direto"

LIVEUPDATE_REFRESH_INFO="Refrescar a informação de atualização"
LIVEUPDATE_DO_UPDATE="Atualizar a última versão"

LIVEUPDATE_FTP_REQUIRED="Live Update determina que é necessário o uso de FTP para baixar e instalar a atualização, mas não guardou sua informação de acesso FTP em seu site Joomla!, em Configuração Global. <br/><br/> Indique o nome de usuário FTP e senha para continuar com a atualização."
LIVEUPDATE_FTP="Informação FTP"
LIVEUPDATE_FTPUSERNAME="Usuário FTP"
LIVEUPDATE_FTPPASSWORD="Senha FTP"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Baixar e instalar a atualização"

LIVEUPDATE_DOWNLOAD_FAILED="O download do pacote de atualização falhou. Assegure-se que seu diretório  /tmp pode escrever ou que habilitou as opções de FTP na Configuração Global do seu site Joomla!"
LIVEUPDATE_EXTRACT_FAILED="Falhou a descompressão do pacote de atualização. Por favor, tente atualizar a extensão manualmente."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Tipo de pacote não é válido. A atualização não pode continuar."
LIVEUPDATE_INSTALLEXT="Instale %s %s"
LIVEUPDATE_ERROR="Erro"
LIVEUPDATE_SUCCESS="Êxito"

LIVEUPDATE_ICON_UNSUPPORTED="Atualização ao Vivo não suportadactualización en Vivo no soportada"
LIVEUPDATE_ICON_CRASHED="Atualização ao Vivo foi danificada"
LIVEUPDATE_ICON_CURRENT="Você tem a última versão"
LIVEUPDATE_ICON_UPDATES="ATUALIZAÇÃO ENCONTRADA! CLIQUE PARA ATUALIZAR."

LIVEUPDATE_RELEASEINFO="Informações"
LIVEUPDATE_RELEASENOTES="Notas de lançamento"
LIVEUPDATE_READMOREINFO="Leia mais"

; LIVEUPDATE_NAGSCREEN_HEAD="WARNING! You are about to install an unstable version."
; LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an serious adverse to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
; LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

; LIVEUPDATE_STABILITY_ALPHA="Alpha"
; LIVEUPDATE_STABILITY_BETA="Beta"
; LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/pl-PL/pl-PL.liveupdate.ini000060400000010403152455705350015210 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Aktualizacja"

LIVEUPDATE_NOTSUPPORTED_HEAD="Aktualizacja nie jest obsługiwana na tym serwerze"
LIVEUPDATE_NOTSUPPORTED_INFO="Twój serwer sygnalizuje, że Aktualizacja nie jest obsługiwana. Proszę skontaktować się administratorem hosta i poprosić o włączenie rozszerzenia cURL PHP albo aktywowanie URL fopen() wrappers. Jeżeli te są już włączone, poproś o skonfigurowanie firewalla tak, by umożliwił dostęp do następującego adresu URL:"_QQ_""
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Zawsze można zaktualizować <var>%s</var> odwiedzając naszeą witrynę ręcznie, pobranie najnowszej wersji i instalacji za pomocą instalatora rozszerzeń Joomla!."

LIVEUPDATE_STUCK_HEAD="Aktualizacja oznaczona jako niepowodzenie"
LIVEUPDATE_STUCK_INFO="Aktualizacja zaznacza o niepowodzeniu podczas ostatniej próby kontaktu z serwerem aktualizacji. To zwykle wskazuje na hosta, który aktywnie blokuje komunikacje z zewnętrznymi stronami. Jeśli chcesz ponowić próbę pobierania informacje o aktualizacji, kliknij przycisk "_QQ_"Odśwież informacje o aktualizacji"_QQ_" poniżej. Jeśli wynikiem jest pusta strona, proszę skontaktować się z administracją hosta i zgłosić ten problem."

LIVEUPDATE_ERROR_NEEDSAUTH="Musisz podać swój login/hasło lub Download ID w parametrach komponentu przed próbą aktualizacji do najnowszej wersji. Przycisk aktualizacji pozostanie wyłączony do czasu aż to zrobisz."
LIVEUPDATE_HASUPDATES_HEAD="Nowa wersja jest dostępna"
LIVEUPDATE_NOUPDATES_HEAD="Masz już najnowszą wersję"
LIVEUPDATE_CURRENTVERSION="Zainstalowana wersja"
LIVEUPDATE_LATESTVERSION="Najnowsza wersja"
LIVEUPDATE_LATESTRELEASED="Data najnowszej wersji"
LIVEUPDATE_DOWNLOADURL="URL bezpośredniego pobierania"

LIVEUPDATE_REFRESH_INFO="Odśwież informacje o aktualizacji"
LIVEUPDATE_DO_UPDATE="Aktualizacja do najnowszej wersji"

LIVEUPDATE_FTP_REQUIRED="Aktualizacja zaznacza, że musi korzystać z protokołu FTP w celu pobrania i zainstalowania aktualizacji, ale nie zostały wcześniej zapisane dane logowania FTP w twojej Konfiguracji Globalnej Joomla!.<br/><br/>Prosimy o podanie nazwy użytkownika i hasła FTP poniżej, aby kontynuować aktualizację."
LIVEUPDATE_FTP="Informacje FTP"
LIVEUPDATE_FTPUSERNAME="Login FTP"
LIVEUPDATE_FTPPASSWORD="Hasło FTP"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Pobierz i zainstaluj aktualizację"

LIVEUPDATE_DOWNLOAD_FAILED="Pobranie pakietu aktualizacji nie powiodło się. Upewnij się, że katalog tymczasowy jest zapisywalny lub, że masz włączoną opcję FTP Joomla! w Konfiguracji Globalnej twojej witryny."
LIVEUPDATE_EXTRACT_FAILED="Rozpakowanie pakietu aktualizacji nie powiodło się. Proszę spróbować aktualizacji rozszerzenia ręcznie."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Nieprawidłowy typ pakietu. Aktualizacja nie może być kontynuowana."
LIVEUPDATE_INSTALLEXT="Instalacja %s %s"
LIVEUPDATE_ERROR="Błąd"
LIVEUPDATE_SUCCESS="Powodzenie"

LIVEUPDATE_ICON_UNSUPPORTED="Aktualizacja nie jest obsługiwana"
LIVEUPDATE_ICON_CRASHED="Aktualizacja nie powiodła się"
LIVEUPDATE_ICON_CURRENT="Masz najnowszą wersję"
LIVEUPDATE_ICON_UPDATES="ZNALEZIONO AKTUALIZACJĘ! Kliknij!."

; LIVEUPDATE_RELEASEINFO="Information"
; LIVEUPDATE_RELEASENOTES="Release notes"
; LIVEUPDATE_READMOREINFO="Read more"

; LIVEUPDATE_NAGSCREEN_HEAD="WARNING! You are about to install an unstable version."
; LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an serious adverse to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
; LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

; LIVEUPDATE_STABILITY_ALPHA="Alpha"
; LIVEUPDATE_STABILITY_BETA="Beta"
; LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/el-GR/el-GR.liveupdate.ini000060400000016556152455705350015173 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Απευθείας Ενημέρωση"

LIVEUPDATE_NOTSUPPORTED_HEAD="Η Απευθείας Ενημέρωση δεν υποστηρίζεται από αυτόν τον διακομιστή"
LIVEUPDATE_NOTSUPPORTED_INFO="Ο διακομιστής σας δείχνει ότι η Απευθείας Ενημέρωση δεν υποστηρίζεται. Παρακαλώ επικοινωνήστε με τον πάροχο φιλοξενίας σας και ζητήστε του να ενεργοποιήσει την επέκταση cURL της PHP ή τους URL fopen() wrappers. Εάν είναι ήδη ενεργοποιημένα, παρακαλώ ζητήστε του να ανοίξει το τείχος ασφαλείας ώστε να επιτρέπει την πρόσβαση στην παρακάτω διεύθυνση URL:"_QQ_""
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Μπορείτε πάντα να ενημερώστε το λογισμικό <var>%s</var> επισκεπτόμενοι τον ιστότοπό μας, κατεβάζοντας την τελευταία έκδοση και εγκαθιστόντας την με την εγκατάσταση εφαρμογών του Joomla!."

LIVEUPDATE_STUCK_HEAD="Η Απευθείας Ενημέρωση ανίχνευσε αποτυχία λειτουργίας"
LIVEUPDATE_STUCK_INFO="Η Απευθείας Ενημέρωση εντόπισε ότι η τελευταία απόπειρα επικοινωνίας με τον διακομιστή ενημερώσεων κατέληξε σε κόλλημα. Αυτό συνήθως υποδυκνείει έναν πάροχο φιλοξενίας που μπλοκάρει ενεργά τις προσπάθειες επικοινωνίας με εξωετρικούς ιστοχώρους. Εάν θα θέλατε να δοκιμάσετε να ξαναπροσπαθήσουμε να λάβουμε τις πληροφορίες ενημέρωσεις, παρακαλώ κάντε κλικ στο κουμπί "_QQ_"Ανανέωση πληροφοριών ενημερώσεων"_QQ_" πιο κάτω. Εάν αυτό οδηγήσει σε λευκή σελίδα, παρακαλώ επικοινωνήστε με τον πάροχο φιλοξενίας και αναφέρετε αυτό το πρόβλημα."

LIVEUPDATE_ERROR_NEEDSAUTH="Πρέπει να εισάγετε το όνομα χρήστη και συνθηματικό ή το Αναγνωριστικό Μεταφόρτωσης στις παραμέτρους της εφαρμογής πριν προσπαθήσετε να αναβαθμίσετε στην τελευταία έκδοση. Το κουμπί ενημέρωσης θα παραμείνει ανενεργό έως ότου το κάνετε."
LIVEUPDATE_HASUPDATES_HEAD="Μια νέα έκδοση είναι διαθέσιμη"
LIVEUPDATE_NOUPDATES_HEAD="Έχετε ήδη την τελευταία έκδοση"
LIVEUPDATE_CURRENTVERSION="Εγκατεστημένη έκδοση"
LIVEUPDATE_LATESTVERSION="Τελευταία έκδοση"
LIVEUPDATE_LATESTRELEASED="Ημερομηνία έκδοσης"
LIVEUPDATE_DOWNLOADURL="Διεύθυνση απευθείας μεταφόρτωσης"

LIVEUPDATE_REFRESH_INFO="Ανανέωση πληροφοριών ενημερώσεων"
LIVEUPDATE_DO_UPDATE="Ενημέρωση στην τελευταία έκδοση"

LIVEUPDATE_FTP_REQUIRED="Η Απευθείας Ενημέρωση εντόπισε ότι απαιτείται η χρήση FTP για να μεταφορτώσει και να εγκαταστήσει την ενημέρωσή σας, αλλά δεν έχετε σώσει τις πληροφορίες εισόδου στο FTP στις Γενικές Ρυθμίσεις του Joomla!.<br/><br/>Παρακαλώ εισάγετε το όνομα χρήστη και το συνθηματικό για το FTP προκειμένου να προχωρήσετε με την ενημέρωση."
LIVEUPDATE_FTP="Πληροφορίες FTP"
LIVEUPDATE_FTPUSERNAME="Όνομα Χρήστη FTP"
LIVEUPDATE_FTPPASSWORD="Συνθηματικό FTP"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Μεταφόρτωση και εγκατάσταση ενημέρωσης"

LIVEUPDATE_DOWNLOAD_FAILED="Η μεταφόρτωση του πακέτου ενημέρωσης απέτυχε. Παρακαλώ βεβαιωθείτε ότι ο κάταλογος προσωρινής αποθήκευσης είναι εγγράψιμος ή ότι έχετε ενεργοποιήσει τις επιλογές FTP στις Γενικές Ρυθμίσεις του ιστοχώρου σας."
LIVEUPDATE_EXTRACT_FAILED="Η αποσυμπίεση του πακέτου αναβάθμισης απέτυχε. Παρακαλώ δοκιμάστε να εγκαταστήσετε την επέκταση χειροκίνητα."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Ο τύπος του πακέτου δεν είναι έγκυρος. Η αναβάθμιση δεν μπορεί να συνεχίσει."
LIVEUPDATE_INSTALLEXT="Εγκατάσταση %s %s"
LIVEUPDATE_ERROR="Σφάλμα"
LIVEUPDATE_SUCCESS="Επιτυχία"

LIVEUPDATE_ICON_UNSUPPORTED="Η Απευθείας Ενημέρωση δεν υποστηρίζεται"
LIVEUPDATE_ICON_CRASHED="Η Απευθείας Ενημέρωση κόλλησε"
LIVEUPDATE_ICON_CURRENT="Έχετε την τελευταία έκδοση"
LIVEUPDATE_ICON_UPDATES="ΒΡΕΘΗΚΕ ΕΝΗΜΕΡΩΣΗ! ΚΑΝΤΕ ΚΛΙΚ ΓΙΑ ΑΝΑΒΑΘΜΙΣΗ."

LIVEUPDATE_RELEASEINFO="Πληροφορίες"
LIVEUPDATE_RELEASENOTES="Σημειώσεις έκδοσης"
LIVEUPDATE_READMOREINFO="Διαβάστε περισσότερα"

LIVEUPDATE_NAGSCREEN_HEAD="ΠΡΟΣΟΧΗ! Πρόκειται να εγκαταστήσετε μια ασταθή έκδοση."
LIVEUPDATE_NAGSCREEN_BODY="Πρόκειται να εγκαταστήσετε μια ασταθή έκδοση (%s - %s). Οι ασταθείς εκδόσεις μπορεί να έχουν υποβληθεί σε ελάχιστο ή περιορισμένο ποιοτικό έλεγχο και να περιέχουν σφάλματα που μπορεί να έχουν σοβαρές παρενέργειες στην σταθερότητα και λειτουργία τουιστοχώρου σας. Εάν δεν είστε βέβαιος για αυτό που πρόκειται να κάνετε, παρακαλώ κλείστε αυτό το παράθυρο του περιηγητή σας. Εάν κατανοείτε πλήρως τους κινδύνους που συνοδεύουν την εγκατάσταση ασταθών εκδόσεων παρακαλώ κάντε κλικ στο παρακάτω κουμπί για να συνεχίσετε την εγκατάσταση αυτής της ασταθούς έκδοσης."
LIVEUPDATE_NAGSCREEN_BUTTON="Καταννοώ τους κινδύνους. Συνέχισε την εγκατάσταση."

LIVEUPDATE_STABILITY_ALPHA="Άλφα"
LIVEUPDATE_STABILITY_BETA="Βήτα"
LIVEUPDATE_STABILITY_RC="Υποψήφια Έκδοσης"
LIVEUPDATE_STABILITY_STABLE="Σταθερή"
LIVEUPDATE_STABILITY_SVN="Έκδοση Προγραμματιστή"liveupdate/language/fa-IR/fa-IR.liveupdate.ini000060400000013745152455705350015150 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="به روز رسانی آنلاین"

LIVEUPDATE_NOTSUPPORTED_HEAD="به روز رسانی آنلاین در این سرور پشتیبانی نمی شود"
LIVEUPDATE_NOTSUPPORTED_INFO="سرور شما نشان می دهد که به روز رسانی آنلاین پشتیبانی نمی شود. لطفا با میزبان خود تماس بگیرید و از آن ها بخواهید که افزونه cURL یا URL fopen() wrapper را در PHP فعال نمایند. اگر این در حال حاضر فعال است، لطفا از آن ها بخواهید که پیکربندی فایروال خود را به طوری که اجازه دسترسی به این آدرس را بدهد تنظیم نمایند:"
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="شما همچنین می توانید با مراجعه به سایت ما و دانلود آخرین نسخه و نصب آن از طریق نصب کننده جوملا اقدام به به روز رسانی <var>%s</var> نمایید."

LIVEUPDATE_STUCK_HEAD="به روز رسانی آنلاین با مشکل مواجه شد."
LIVEUPDATE_STUCK_INFO="به روز رسانی آنلاین در آخرین باری که تلاش برای ارتباط با سرور به روز رسانی نموده است، با مشکل مواجه شد. این معمولا در مورد میزبان هایی به وجود می آید که ارتباط با سایت های دیگر را مسدود می نمایند. در صورتی که می خواهید اطلاعات به روز رسانی را مجددا دریافت نمایید، روی دکمه "_QQ_"بازیابی مجدد اطلاعات به روز رسانی"_QQ_" در زیر کلیک نمایید. در صورتی که با صفحه ی خالی مواجه شدید، با میزبان خود تماس حاصل نموده و مشکل را گزارش دهید."

LIVEUPDATE_ERROR_NEEDSAUTH="شما می بایستی نام کاربری/رمز عبور یا شناسه دانلود خود را قبل از تلاش برای به روز رسانی به نسخه نهایی در تنظیمات کامپوننت وارد نمایید. دکمه به روز رسانی تا وقتی که شما این کار را انجام دهید غیرفعال خواهد ماند."
LIVEUPDATE_HASUPDATES_HEAD="نسخه جدیدی موجود می باشد"
LIVEUPDATE_NOUPDATES_HEAD="نسخه شما به روز می باشد"
LIVEUPDATE_CURRENTVERSION="نسخه نصب شده"
LIVEUPDATE_LATESTVERSION="آخرین نسخه"
LIVEUPDATE_LATESTRELEASED="تاریخ آخرین نسخه"
LIVEUPDATE_DOWNLOADURL="آدرس دانلود مستقیم"

LIVEUPDATE_REFRESH_INFO="بارگزاری مجدد اطلاعات به روز رسانی"
LIVEUPDATE_DO_UPDATE="به روز رسانی به آخرین نسخه"

LIVEUPDATE_FTP_REQUIRED="به روز رسانی آنلاین تشخیص داده است که شما برای دانلود و نصب به روز رسانی، می بایستی از FTP استفاده نمایید، ولی شما اطلاعات ورود FTP را در تنظیمات سراسری جوملا وارد نکرده اید.<br/><br/>لطفا نام کاربری و رمز عبور FTP را جهت اجرای عملیات به روز رسانی در قسمت های زیر وارد نمایید."
LIVEUPDATE_FTP="اطلاعات FTP"
LIVEUPDATE_FTPUSERNAME="نام کاربری FTP"
LIVEUPDATE_FTPPASSWORD="رمز عبور FTP"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="دانلود و نصب به روز رسانی"

LIVEUPDATE_DOWNLOAD_FAILED="دانلود فایل به روز رسانی با شکست مواجه شد. جهت رفع این مشکل بررسی نمایید که پوشه موقت سایتتان (temp) قابل نوشتن بوده و یا تنظیمات FTP جوملا را در تنظیمات سراسری سایت فعال کرده باشید."
LIVEUPDATE_EXTRACT_FAILED="استخراج فایل به روز رسانی از حالت فشرده با شکست مواجه شد. لطفا افزونه را به طور دستی به روز رسانی نمایید."

LIVEUPDATE_INVALID_PACKAGE_TYPE="نوع فایل نامعتبر می باشد. عملیات به روز رسانی قابل اجرا نمی باشد."
LIVEUPDATE_INSTALLEXT="نصب %s %s"
LIVEUPDATE_ERROR="خطا"
LIVEUPDATE_SUCCESS="انجام شد"

LIVEUPDATE_ICON_UNSUPPORTED="به روز رسانی آنلاین پشتیبانی نمی شود"
LIVEUPDATE_ICON_CRASHED="به روز رسانی آنلاین به خطا مواجه شد"
LIVEUPDATE_ICON_CURRENT="نسخه شما به روز می باشد"
LIVEUPDATE_ICON_UPDATES="به روز رسانی جدیدی یافت شد! جهت به روز رسانی کلیک نمایید."

LIVEUPDATE_RELEASEINFO="اطلاعات"
LIVEUPDATE_RELEASENOTES="اطلاعات نسخه"
LIVEUPDATE_READMOREINFO="مطالعه بیشتر"

LIVEUPDATE_NAGSCREEN_HEAD="اخطار! شما در حال نصب نسخه ای ناپایدار هستید."
LIVEUPDATE_NAGSCREEN_BODY="شما در حال نصب نسخه ای ناپایدار هستید (%s - %s). نسخه های ناپایدار ممکن است تحت آزمایش کم و یا هیچ بوده باشند و عوارض جانبی جدی برای پایداری سایت شما داشته باشند. در صورتی که اطلاعاتی در این مورد ندارید، لطفا این صفحه را ببندید. و در صورتی که از ریسک این موضوع مطلع هستید و می خواهید ادامه دهید، روی دکمه زیر جهت ادامه نصب این نسخه ناپایدار کلیک نمایید."
LIVEUPDATE_NAGSCREEN_BUTTON="از خطرات این عمل آگاه هستم. عملیات نصب را ادامه بده."

LIVEUPDATE_STABILITY_ALPHA="آلفا"
LIVEUPDATE_STABILITY_BETA="بتا"
LIVEUPDATE_STABILITY_RC="کاندید"
LIVEUPDATE_STABILITY_STABLE="پایدار"
LIVEUPDATE_STABILITY_SVN="svn"liveupdate/language/da-DK/da-DK.liveupdate.ini000060400000010201152455705350015074 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Live Opdatering"

LIVEUPDATE_NOTSUPPORTED_HEAD="Live opdatering understøttes ikke af denne server"
LIVEUPDATE_NOTSUPPORTED_INFO="Din server indikerer at Live opdatering ikke er understøttet. Kontakt venligst din udbyder og spørg dem om at aktivere cURL PHP udvidelsen eller aktivere URL fopen() wrappers. Hvis disse allerede er aktive, så spørg dem venligst om at konfigurere deres firewall, således at den tillader adgang til følgende :"
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Du kan altid opdatere <var>%s</var> ved at besøge vores hjemmeside manuelt og hente den seneste udgivelse og derefter installere den ved at bruge Joomla!'s udvidelsesinstalleren."

LIVEUPDATE_STUCK_HEAD="Live opdatering melder at den gik ned"
LIVEUPDATE_STUCK_INFO="Live opdatering opdagede at den gik ned sidste gang den prøvede at kontakte opdateringsserveren. Dette indikerer nomalt en udbyder der aktivt blokerer kommunikation med eksterne sider. Hvis du vil forsøge at hente opdateringsinformationen igen, klik da venligst på "_QQ_"Opdatér opdateringsinformation"_QQ_" herunder. Hvis det resulterer i en blank side, så kontakt venligst din udbyder og rapportér dette problem."

LIVEUPDATE_ERROR_NEEDSAUTH="Du skal angive dit brugernavn/adgangskode eller Overførsel's ID i komponenten's indstillinger, før du kan opdatere til den seneste version. Opdateringsknappen vil forblive inaktiv indtil da."
LIVEUPDATE_HASUPDATES_HEAD="En ny version er tilgængelig"
LIVEUPDATE_NOUPDATES_HEAD="Du har allerede den seneste version"
LIVEUPDATE_CURRENTVERSION="Installeret version"
LIVEUPDATE_LATESTVERSION="Seneste version"
LIVEUPDATE_LATESTRELEASED="Seneste udgivelsesdato"
LIVEUPDATE_DOWNLOADURL="Direkte link"

LIVEUPDATE_REFRESH_INFO="Opdatér opdateringsinformation"
LIVEUPDATE_DO_UPDATE="Opdatér til seneste version"

LIVEUPDATE_FTP_REQUIRED="Live opdatering har opdaget at den skal bruge FTP for at kunne overføre og installere din opdatering, men du har ikke gemt en FTP log ind information i din Joomla!'s konfiguration.<br/><br/>Angiv venligst FTP brugernavn og adgangskode herunder for at fortsætte med opdateringen."
LIVEUPDATE_FTP="FTP information"
LIVEUPDATE_FTPUSERNAME="FTP Brugernavn"
LIVEUPDATE_FTPPASSWORD="FTP Adgangskode"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Overfør og installér opdatering"

LIVEUPDATE_DOWNLOAD_FAILED="Overførsel af opdateringspakken fejlede. Vær venligst sikker på der kan skrives til din midlertidige mappe og at du har aktiveret Joomla!'s FTP mulighed i Joomla!'s konfiguration."
LIVEUPDATE_EXTRACT_FAILED="Udpakning af opdateringspakken fejlede. Opdatér venligst udvidelsen manuelt."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Ugyldig pakketype. Opdateringen kan ikke fortsætte."
LIVEUPDATE_INSTALLEXT="Installér %s %s"
LIVEUPDATE_ERROR="Fejl"
LIVEUPDATE_SUCCESS="Korrekt"

LIVEUPDATE_ICON_UNSUPPORTED="Live opdatering er ikke understøttet"
LIVEUPDATE_ICON_CRASHED="Live opdatering gik ned"
LIVEUPDATE_ICON_CURRENT="Du har den seneste version"
LIVEUPDATE_ICON_UPDATES="OPDATERING FUNDET! OPDATER NU."

; LIVEUPDATE_RELEASEINFO="Information"
; LIVEUPDATE_RELEASENOTES="Release notes"
; LIVEUPDATE_READMOREINFO="Read more"

; LIVEUPDATE_NAGSCREEN_HEAD="WARNING! You are about to install an unstable version."
; LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an serious adverse to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
; LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

; LIVEUPDATE_STABILITY_ALPHA="Alpha"
; LIVEUPDATE_STABILITY_BETA="Beta"
; LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/de-DE/de-DE.liveupdate.ini000060400000010750152455705350015101 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Echtzeitaktualisierung"

LIVEUPDATE_NOTSUPPORTED_HEAD="Die Echtzeitaktualisierung wird auf diesem Server nicht unterstützt"
LIVEUPDATE_NOTSUPPORTED_INFO="Ihr Server zeigt an, dass die Echtzeitaktualisierung nicht unterstützt wird. Bitte kontaktieren Sie Ihren Anbieter und bitten ihn, die cURL-PHP-Erweiterung zu aktivieren oder die URL fopen() Wrapper. Sollten diese schon aktviert sein, bitten Sie ihn, die Firewall so zu konfigurieren, dass sie den Zugriff auf folgende URL zulässt:"_QQ_""
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Sie können immer aktualisieren <var>%s</var> indem Sie unsere Internetseite besuchen, die neueste Version herunterladen und ganz normal installieren."

LIVEUPDATE_STUCK_HEAD="Die Echtzeitaktualisierung hat sich selbst als abgestürzt gemeldet"
LIVEUPDATE_STUCK_INFO="Die Echtzeitaktualisierung hat festgestellt, dass sie beim letzten Versuch den Aktualisierungsserver zu erreichen abgestürzt ist. Dies deutet meist auf einen Anbieter hin, der die Kommunikation mit externen Servern blockiert. Sollten Sie die Aktulalisierungsinformationen nochmals abrufen wollen, klicken Sie bitte auf den Knopf "_QQ_"Aktualisierungsinformationen abrufen"_QQ_". Sollte dieser Versuch auf einer weißen Seite enden, melden Sie diesen Fehler ihrem Anbieter."

LIVEUPDATE_ERROR_NEEDSAUTH="Bevor Sie eine Echtzeitaktualisierung durchführen können, müssen Sie Ihren Benutzernamen, das Passwort bzw. die Download-ID angeben. Der Aktualisierungsknopf wird solange ohne Funktion bleiben."
LIVEUPDATE_HASUPDATES_HEAD="Es gibt eine neue Version"
LIVEUPDATE_NOUPDATES_HEAD="Sie haben die aktuelle Version"
LIVEUPDATE_CURRENTVERSION="Installierte Version"
LIVEUPDATE_LATESTVERSION="Neueste Version"
LIVEUPDATE_LATESTRELEASED="Neuestes Veröffentlichungsdatum"
LIVEUPDATE_DOWNLOADURL="Direkte Download-URL"

LIVEUPDATE_REFRESH_INFO="Aktualisierungsinformationen abrufen"
LIVEUPDATE_DO_UPDATE="Auf die neueste Version aktualisieren"

LIVEUPDATE_FTP_REQUIRED="Die Echtzeitaktualisierung hat festgestellt, dass FTP für die Aktualisierung und Installation verwednet werden muss. Sie haben aber noch keine FTP-Daten in der Joomla!-Konfiguraton angegeben.<br/><br/>BItte geben Sie Ihre FTP-Daten ein, bevor Sie mit der Aktualisierung fortfahren."
LIVEUPDATE_FTP="FTP Informationen"
LIVEUPDATE_FTPUSERNAME="FTP Benutzername"
LIVEUPDATE_FTPPASSWORD="FTP Passwort"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Aktualisierung herunterladen und installieren"

LIVEUPDATE_DOWNLOAD_FAILED="Das Herunterladen des Aktualisierungspakets ist fehlgeschlagen. Bitte stellen Sie sicher, dass Ihr temp-Verzeichnis Schreibrechte besitzt und Sie Ihre FTP-Nutzerdaten in der Joomla!-Konfiguration angegeben haben."
LIVEUPDATE_EXTRACT_FAILED="Das Auspacken des Aktualisierungspakets ist fehlgeschlagen. Bitte aktualisieren Sie die Erweiterung manuell."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Falscher Aktualisierungspakettyp. Die Aktualisierung kann nicht durchgeführt werden."
LIVEUPDATE_INSTALLEXT="Installiere %s %s"
LIVEUPDATE_ERROR="Fehler"
LIVEUPDATE_SUCCESS="Erfolg"

LIVEUPDATE_ICON_UNSUPPORTED="Echtzeitaktualisierung nicht unterstützt"
LIVEUPDATE_ICON_CRASHED="Live Update abgestürzt"
LIVEUPDATE_ICON_CURRENT="Sie haben die aktuelle Version"
LIVEUPDATE_ICON_UPDATES="AKTUALISIERUNG GEFUNDEN! JETZT AKTUALISIEREN."

LIVEUPDATE_RELEASEINFO="Information"
LIVEUPDATE_RELEASENOTES="Infos zur Veröffentlichung"
LIVEUPDATE_READMOREINFO="Weiterlesen"

LIVEUPDATE_NAGSCREEN_HEAD="ACHTUNG! Sie sind dabei, eine instabile Version zu installieren."
LIVEUPDATE_NAGSCREEN_BODY="Sie sind dabei, eine instabile Version zu installieren (%s - %s). Instabile Versionen sind noch in Entwicklung oder nicht final getestet und können Bugs enthalten, die die Stabilität und Funktionalität Ihrer Webseite beeinträchtigen können. Wenn Sie nicht sicher sind, was Sie tun sollen, dann schließen Sie dieses Browserfenster. Sollten Sie absolut sicher sein, dass Sie das Risiko eingehen und die möglichen Folgen einer unfertigen Version auf eigene Gefahr in Kauf nehmen wollen,  klicken Sie auf den unten stehenden Button um die instabile Version zu installieren."
LIVEUPDATE_NAGSCREEN_BUTTON="Ich kenne die Risiken. Mit der Installation fortfahren."

; LIVEUPDATE_STABILITY_ALPHA="Alpha"
; LIVEUPDATE_STABILITY_BETA="Beta"
; LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/nb-NO/nb-NO.liveupdate.ini000060400000010260152455705350015163 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Direkteoppdatering"

LIVEUPDATE_NOTSUPPORTED_HEAD="Direkteoppdatering støttes ikke på denne serveren."
LIVEUPDATE_NOTSUPPORTED_INFO="Din server indikerer at direkteoppdatering ikke støttes. Kontakt din leverandør og spør om de kan aktivere cURL PHP eller aktivere URL fopen(). Dersom disse allerede er aktivert kan du spørre om de kan konfigurere sin brannmur slik at den gir tilgang til følgende URL:"
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Du kan alltid oppdatere <var>%s</var> manuelt ved å besøke vår side. Laste ned og installer den nyeste versjonen ved hjelp av Joomlas installasjonsfunksjon."

LIVEUPDATE_STUCK_HEAD="Direkteoppdateringen har merket seg selv som krasjet."
LIVEUPDATE_STUCK_INFO="Direkteoppdatering avdekket at den krasjet forrige gang den forsøkte å kontakte oppdateringsserveren. Dette betyr vanligvis at du benytter en leverandør av netthotell som aktivt blokkerer kommunikasjon med eksterne nettsteder. Hvis du ønsker å forsøke på nytt å hente oppdateringsinformasjonen, klikk på knappen "_QQ_"Oppdater informasjon"_QQ_" nedenfor. Dersom dette resulterer i en blank side bør du kontakte din leverandør av netthotell for å melde fra om dette problemet."

LIVEUPDATE_ERROR_NEEDSAUTH="Du må oppgi ditt brukernavn/passord eller nedlastnings-id i komponentens innstillinger før du forsøker å oppdatere til siste versjon. Oppdateringsknappen vil forbli deaktivert inntil du gjøre dette."
LIVEUPDATE_HASUPDATES_HEAD="En ny versjon er tilgjengelig"
LIVEUPDATE_NOUPDATES_HEAD="Du har allerede den nyeste versjonen"
LIVEUPDATE_CURRENTVERSION="Installert versjon"
LIVEUPDATE_LATESTVERSION="Nyeste versjon"
LIVEUPDATE_LATESTRELEASED="Siste utgivelsesdato"
LIVEUPDATE_DOWNLOADURL="Nedlastingsadresse"

LIVEUPDATE_REFRESH_INFO="Oppdater informasjon"
LIVEUPDATE_DO_UPDATE="Oppdater til siste versjon"

LIVEUPDATE_FTP_REQUIRED="Direkteoppdatering har avdekket at den må bruke FTP, for å laste ned og installere oppdateringen, men du har ikke angitt og lagret FTP-informasjonen under nettstedets globale konfigurasjon .<br /><br />Du må oppgi FTP-brukernavn og passord nedenfor for å kunne fortsette med oppdateringen."
LIVEUPDATE_FTP="FTP-informasjon"
LIVEUPDATE_FTPUSERNAME="FTP-brukernavn"
LIVEUPDATE_FTPPASSWORD="FTP-passord"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Last ned og installer oppdateringen"

LIVEUPDATE_DOWNLOAD_FAILED="Nedlasting av oppdateringspakke mislyktes. Påse at temp-mappen er skrivbar, eller at du har aktivert Joomlas FTP-innstillinger under nettstedets globale konfigurasjon."
LIVEUPDATE_EXTRACT_FAILED="Utpakking av oppdateringspakken mislyktes. Forsøk å oppdatere utvidelsen manuelt."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Ugyldig pakketype. Oppdateringen kan ikke fortsette."
LIVEUPDATE_INSTALLEXT="Installer %s %s"
LIVEUPDATE_ERROR="Feil"
LIVEUPDATE_SUCCESS="Vellykket"

LIVEUPDATE_ICON_UNSUPPORTED="Direkteoppdatering støttes ikke."
LIVEUPDATE_ICON_CRASHED="Direkteoppdatering krasjet."
LIVEUPDATE_ICON_CURRENT="Du har den nyeste versjonen."
LIVEUPDATE_ICON_UPDATES="OPPDATERING FUNNET! KLIKK FOR Å OPPDATERE."

; LIVEUPDATE_RELEASEINFO="Information"
; LIVEUPDATE_RELEASENOTES="Release notes"
; LIVEUPDATE_READMOREINFO="Read more"

; LIVEUPDATE_NAGSCREEN_HEAD="WARNING! You are about to install an unstable version."
; LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an serious adverse to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
; LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

; LIVEUPDATE_STABILITY_ALPHA="Alpha"
; LIVEUPDATE_STABILITY_BETA="Beta"
; LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/fi-FI/fi-FI.liveupdate.ini000060400000007520152455705350015132 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Live Update"

LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update ei ole tuettu tällä palvelimella"
LIVEUPDATE_NOTSUPPORTED_INFO="Palvelimesi mukaan Live Update ei ole tuettu. Ota yhteyttä palveluntarjoajaasi ja pyydä heitä ottamaan cURL PHP laajennus tai URL fopen() lisätoiminnot käyttöön. Jos nämä ovat jo käytössä, pyydä heitä muuttamaan palomuurinsa asetuksia niin, että se sallii yhteydet seuraavaan osoitteeseen:"_QQ_""
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Voit aina päivittää <var>%s</var> lisäosan käymällä sivustollamme, lataamalla viimeisimmän version ja asentamalla sen Joomla! lisäosien asennuksella."

LIVEUPDATE_STUCK_HEAD="Live Update on havainnut kaatuneensa"
LIVEUPDATE_STUCK_INFO="Live Update on havainnut, että se kaatui edellisellä kerralla päivitystä hakiessaan. Yleensä tämä johtuu palvelimestä, joka pyrkii estämään yhteydet muille palvelimille. Jos haluat yrittää päivitystietojen hakemista uudelleen, napsauta "_QQ_"Päivitä päivitystiedot"_QQ_" painiketta. Jos tästä seuraa tyhjä sivu, ota yhteyttä palveluntarjoajaasi ja ilmoita ongelmasta."

LIVEUPDATE_ERROR_NEEDSAUTH="Sinun täytyy syöttää pyydetty käyttäjätunniste komponentin asetuksissa ennenkuin voit päivittää viimeisimpään versioon. Päivityspainike pysyy estettynä siihen asti."
LIVEUPDATE_HASUPDATES_HEAD="Uusi versio on saatavilla"
LIVEUPDATE_NOUPDATES_HEAD="Sinulla on jo uusin versio"
LIVEUPDATE_CURRENTVERSION="Asennettu versio"
LIVEUPDATE_LATESTVERSION="Uusin versio"
LIVEUPDATE_LATESTRELEASED="Uusimman julkaisupäivä"
LIVEUPDATE_DOWNLOADURL="Suora latauslinkki"

LIVEUPDATE_REFRESH_INFO="Päivitä päivitystiedot"
LIVEUPDATE_DO_UPDATE="Päivitä uusimpaan versioon"

LIVEUPDATE_FTP_REQUIRED="Live Update havaitsi, että se tarvitsee FTP yhteyden ladatakseen päivityksesi, mutta FTP tietoja ei ole asetettu Joomla! asetuksissa.<br/><br/>Syötä FTP tunnus ja salasana päivittääksesi."
LIVEUPDATE_FTP="FTP tiedot"
LIVEUPDATE_FTPUSERNAME="FTP käyttäjänimi"
LIVEUPDATE_FTPPASSWORD="FTP salasana"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Lataa ja asenna päivitys"

LIVEUPDATE_DOWNLOAD_FAILED="Päivityspaketin lataaminen epäonnistui. Varmista, että temp-kansioom voi kirjoittaa tai Joomla! FTP toiminnot on sallittu sivuston asetuksissa."
LIVEUPDATE_EXTRACT_FAILED="Päivityspaketin purkaminen epäonnistui. Yritä päivittää lisäosa manuaalisesti."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Paketin tyyppi ei kelpaa. Päivitystä ei voida tehdä."
LIVEUPDATE_INSTALLEXT="Asenna %s %s"
LIVEUPDATE_ERROR="Virhe"
LIVEUPDATE_SUCCESS="Onnistui"

LIVEUPDATE_ICON_UNSUPPORTED="Live Update ei tuettu"
LIVEUPDATE_ICON_CRASHED="Live Update kaatui"
LIVEUPDATE_ICON_CURRENT="Sinulla on uusin versio"
LIVEUPDATE_ICON_UPDATES="Päivitys löydetty! Napsauta päivittääksesi."

LIVEUPDATE_RELEASEINFO="Tietoja"
LIVEUPDATE_RELEASENOTES="Julkaisutiedot"
LIVEUPDATE_READMOREINFO="Lue lisää"

LIVEUPDATE_NAGSCREEN_HEAD="Varoitus. Olet asentamassa mahdollisesti epävakaata versiota."
LIVEUPDATE_NAGSCREEN_BODY="Olet asentamassa epävakaata versiota (%s - %s). Epävakaita versiota ei ole testattu riittävästi ja ne voivat sisältää ohjelmointivirheitä jotka voivat vahingoittaa sivustosi vakautta ja toimintaa. Jos et ole varma siitä mitä olet tekemässä, sulje tämä selain ikkuna. Jos olet aivan varma, että ymmärrät epävakaiden versioiden asentamiseen liittyvät riskit, napsauta alla olevaa painiketta jatkaaksesi asennusta."
; LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

LIVEUPDATE_STABILITY_ALPHA="Alpha"
LIVEUPDATE_STABILITY_BETA="Beta"
LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/sk-SK/sk-SK.liveupdate.ini000060400000010047152455705350015224 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

; LIVEUPDATE_TASK_OVERVIEW="Live Update"

; LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update is not supported on this server"
; LIVEUPDATE_NOTSUPPORTED_INFO="Your server indicates that Live Update is not supported. Please contact your host and ask them to enable the cURL PHP extension or activate the URL fopen() wrappers. If these are already enabled, please ask them to configure their firewall so that it allows access to the following URL:"
; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="You can always update <var>%s</var> by visiting our site manually, downloading the latest release and installing it using Joomla!'s extension installer."

; LIVEUPDATE_STUCK_HEAD="Live Update has marked itself as crashed"
; LIVEUPDATE_STUCK_INFO="Live Update determined that it crashed the last time it tried to contact the update server. This usually indicates a host which actively blocks communications with external sites. If you would like to retry fetching the update information, please click the "_QQ_"Refresh update information"_QQ_" button below. If that results to a blank page, please contact your host and report this issue."

; LIVEUPDATE_ERROR_NEEDSAUTH="You have to supply your username/password or Download ID to the component's parameters before trying to upgrade to the latest release. The upgrade button will remain disabled until you do that."
; LIVEUPDATE_HASUPDATES_HEAD="A new version is available"
; LIVEUPDATE_NOUPDATES_HEAD="You already have the latest version"
; LIVEUPDATE_CURRENTVERSION="Installed version"
; LIVEUPDATE_LATESTVERSION="Latest version"
; LIVEUPDATE_LATESTRELEASED="Latest release date"
; LIVEUPDATE_DOWNLOADURL="Direct download URL"

; LIVEUPDATE_REFRESH_INFO="Refresh update information"
; LIVEUPDATE_DO_UPDATE="Update to the latest version"

; LIVEUPDATE_FTP_REQUIRED="Live Update determined that it needs to use FTP in order to download and install your update, but you have not saved your FTP login information in your Joomla! Global Configuration.<br/><br/>Please provide the FTP username and password below to proceed with the update."
; LIVEUPDATE_FTP="FTP Information"
; LIVEUPDATE_FTPUSERNAME="FTP Username"
; LIVEUPDATE_FTPPASSWORD="FTP Password"
; LIVEUPDATE_DOWNLOAD_AND_INSTALL="Download and install update"

; LIVEUPDATE_DOWNLOAD_FAILED="Downloading the update package failed. Make sure that your temp-directory is writable or that you have enabled Joomla!'s FTP options in your site's Global Configuration."
; LIVEUPDATE_EXTRACT_FAILED="Extracting the update package failed. Please try updating the extension manually."

; LIVEUPDATE_INVALID_PACKAGE_TYPE="Invalid package type. The update can not proceed."
; LIVEUPDATE_INSTALLEXT="Install %s %s"
; LIVEUPDATE_ERROR="Error"
; LIVEUPDATE_SUCCESS="Success"

; LIVEUPDATE_ICON_UNSUPPORTED="Live Update not supported"
; LIVEUPDATE_ICON_CRASHED="Live Update crashed"
; LIVEUPDATE_ICON_CURRENT="You have the latest version"
; LIVEUPDATE_ICON_UPDATES="UPDATE FOUND! CLICK TO UPDATE."

; LIVEUPDATE_RELEASEINFO="Information"
; LIVEUPDATE_RELEASENOTES="Release notes"
; LIVEUPDATE_READMOREINFO="Read more"

; LIVEUPDATE_NAGSCREEN_HEAD="WARNING! You are about to install an unstable version."
; LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an serious adverse to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
; LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

; LIVEUPDATE_STABILITY_ALPHA="Alpha"
; LIVEUPDATE_STABILITY_BETA="Beta"
; LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/et-EE/et-EE.liveupdate.ini000060400000010047152455705350015142 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

; LIVEUPDATE_TASK_OVERVIEW="Live Update"

; LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update is not supported on this server"
; LIVEUPDATE_NOTSUPPORTED_INFO="Your server indicates that Live Update is not supported. Please contact your host and ask them to enable the cURL PHP extension or activate the URL fopen() wrappers. If these are already enabled, please ask them to configure their firewall so that it allows access to the following URL:"
; LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="You can always update <var>%s</var> by visiting our site manually, downloading the latest release and installing it using Joomla!'s extension installer."

; LIVEUPDATE_STUCK_HEAD="Live Update has marked itself as crashed"
; LIVEUPDATE_STUCK_INFO="Live Update determined that it crashed the last time it tried to contact the update server. This usually indicates a host which actively blocks communications with external sites. If you would like to retry fetching the update information, please click the "_QQ_"Refresh update information"_QQ_" button below. If that results to a blank page, please contact your host and report this issue."

; LIVEUPDATE_ERROR_NEEDSAUTH="You have to supply your username/password or Download ID to the component's parameters before trying to upgrade to the latest release. The upgrade button will remain disabled until you do that."
; LIVEUPDATE_HASUPDATES_HEAD="A new version is available"
; LIVEUPDATE_NOUPDATES_HEAD="You already have the latest version"
; LIVEUPDATE_CURRENTVERSION="Installed version"
; LIVEUPDATE_LATESTVERSION="Latest version"
; LIVEUPDATE_LATESTRELEASED="Latest release date"
; LIVEUPDATE_DOWNLOADURL="Direct download URL"

; LIVEUPDATE_REFRESH_INFO="Refresh update information"
; LIVEUPDATE_DO_UPDATE="Update to the latest version"

; LIVEUPDATE_FTP_REQUIRED="Live Update determined that it needs to use FTP in order to download and install your update, but you have not saved your FTP login information in your Joomla! Global Configuration.<br/><br/>Please provide the FTP username and password below to proceed with the update."
; LIVEUPDATE_FTP="FTP Information"
; LIVEUPDATE_FTPUSERNAME="FTP Username"
; LIVEUPDATE_FTPPASSWORD="FTP Password"
; LIVEUPDATE_DOWNLOAD_AND_INSTALL="Download and install update"

; LIVEUPDATE_DOWNLOAD_FAILED="Downloading the update package failed. Make sure that your temp-directory is writable or that you have enabled Joomla!'s FTP options in your site's Global Configuration."
; LIVEUPDATE_EXTRACT_FAILED="Extracting the update package failed. Please try updating the extension manually."

; LIVEUPDATE_INVALID_PACKAGE_TYPE="Invalid package type. The update can not proceed."
; LIVEUPDATE_INSTALLEXT="Install %s %s"
; LIVEUPDATE_ERROR="Error"
; LIVEUPDATE_SUCCESS="Success"

; LIVEUPDATE_ICON_UNSUPPORTED="Live Update not supported"
; LIVEUPDATE_ICON_CRASHED="Live Update crashed"
; LIVEUPDATE_ICON_CURRENT="You have the latest version"
; LIVEUPDATE_ICON_UPDATES="UPDATE FOUND! CLICK TO UPDATE."

; LIVEUPDATE_RELEASEINFO="Information"
; LIVEUPDATE_RELEASENOTES="Release notes"
; LIVEUPDATE_READMOREINFO="Read more"

; LIVEUPDATE_NAGSCREEN_HEAD="WARNING! You are about to install an unstable version."
; LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an serious adverse to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
; LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

; LIVEUPDATE_STABILITY_ALPHA="Alpha"
; LIVEUPDATE_STABILITY_BETA="Beta"
; LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/uk-UA/uk-UA.liveupdate.ini000060400000013750152455705350015214 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Live Update"

LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update не підтримується на цьому сервері"
LIVEUPDATE_NOTSUPPORTED_INFO="Ваш сервер сигналізує, що Live Update не підтримується. Будь ласка, зв’яжіться з вашим постачальником послуг хостингу і попросіть його ввімкнути розширення PHP cURL або активувати пакувальники URL fopen(). Якщо вони вже ввімкнені, будь ласка, попросіть його сконфігурувати  мережеві екрани так, щоб вони дозволяли доступ до цих URL:"_QQ_""
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Ви можете завжди оновити <var>%s</var> відвідавши наш сайт персонально, завантажити останній випуск та встановити його, використовуючи інсталятор розширень Joomla!."

LIVEUPDATE_STUCK_HEAD="Live Update позначив себе таким, що зазнав краху"
LIVEUPDATE_STUCK_INFO="Live Update визначив, що він зазнав краху останнього разу, коли намагався зв’язатися з сервером оновлень. Це зазвичай означає, що хост активно блокує комунікацію з зовнішніми сайтами. Якщо ви ви захочете спробувати знову отримати інформацію про оновлення, будь ласка, натисніть на кнопку "_QQ_"Оновити інформацію "_QQ_" нижче. Якщо це видасть пусту сторінку, будь ласка, зв’яжіться з постачальником послуг хостингу і опишіть цю проблему."

LIVEUPDATE_ERROR_NEEDSAUTH="Ви повинні надати ваше ім’я користувача/пароль або ID завантаження в параметрах компоненту перед тим, як намагатися оновитися до останнього випуску. Кнопка оновлення буде залишатися неактивною, доки ви цього не зробите."
LIVEUPDATE_HASUPDATES_HEAD="Доступна нова версія"
LIVEUPDATE_NOUPDATES_HEAD="У вас уже встановлена остання версія"
LIVEUPDATE_CURRENTVERSION="Встановлена версія"
LIVEUPDATE_LATESTVERSION="Остання версія"
LIVEUPDATE_LATESTRELEASED="Дата останнього випуску"
LIVEUPDATE_DOWNLOADURL="URL для безпосереднього завантаження"

LIVEUPDATE_REFRESH_INFO="Оновити інформацію"
LIVEUPDATE_DO_UPDATE="Оновити до останньої версії"

LIVEUPDATE_FTP_REQUIRED="Live Update визначив, що йому потрібно використовувати FTP для завантаження та встановлення вашого оновлення, але ви не зберегли  інформацію вашого логіну FTP на сторінці Загальної Конфігурації Joomla! .<br/><br/>Будь ласка, надайте ім’я користувача і пароль FTP нижче, щоб продовжити процес оновлення."
LIVEUPDATE_FTP="Інформація FTP"
LIVEUPDATE_FTPUSERNAME="Ім’я користувача FTP"
LIVEUPDATE_FTPPASSWORD="Пароль FTP"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Завантажити і встановити оновлення"

LIVEUPDATE_DOWNLOAD_FAILED="Завантаження пакету оновлень не вдалося. Переконайтесь, що ваш тимчасовий каталог доступний для запису або що ви ввімкнули налаштування FTP в Загальній Конфігурації Joomla!."
LIVEUPDATE_EXTRACT_FAILED="Видобування пакету оновлень не вдалося. Будь ласка, спробуйте оновити розширення вручну."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Неправильний тип пакету. Оновлення не може бути продовжено."
LIVEUPDATE_INSTALLEXT="Встановлення %s %s"
LIVEUPDATE_ERROR="Помилка"
LIVEUPDATE_SUCCESS="Успішно"

LIVEUPDATE_ICON_UNSUPPORTED="Live Update не підтримується"
LIVEUPDATE_ICON_CRASHED="Live Update зазнало краху"
LIVEUPDATE_ICON_CURRENT="У вас остання версія"
LIVEUPDATE_ICON_UPDATES="ЗНАЙДЕНО ОНОВЛЕННЯ! НАТИСНІТЬ ДЛЯ ЗАПУСКУ ОНОВЛЕННЯ."

; LIVEUPDATE_RELEASEINFO="Information"
; LIVEUPDATE_RELEASENOTES="Release notes"
; LIVEUPDATE_READMOREINFO="Read more"

; LIVEUPDATE_NAGSCREEN_HEAD="WARNING! You are about to install an unstable version."
; LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an serious adverse to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
; LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

; LIVEUPDATE_STABILITY_ALPHA="Alpha"
; LIVEUPDATE_STABILITY_BETA="Beta"
; LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/hu-HU/hu-HU.liveupdate.ini000060400000010533152455705350015220 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Live Update"

LIVEUPDATE_NOTSUPPORTED_HEAD="Ez a szerver nem támogatja a Live Update-ot"
LIVEUPDATE_NOTSUPPORTED_INFO="A szerver nem támogatja a Live Update-et. Lépj kapcsolatba a szolgáltatóddal és kérd a cURL PHP bővítmény vagy az URL fopen() aktiválását. Ha ezek már engedélyezve vannak, akkor kérd meg őket, hogy úgy állítsák be a tűzfalukat, hogy hozzáférhető legyen a következő URL:"_QQ_""
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Bármikor frissítheted a(z) <var>%s</var> úgy, hogy meglátogatod a webhelyünket, letöltöd a legfrissebb verziót és a Joomla! bővítmény telepítőjével felrakod."

LIVEUPDATE_STUCK_HEAD="A saját jelzése szerint a Live Update összeomlott"
LIVEUPDATE_STUCK_INFO="Az utolsó használat során a Live Update összeomlott amikor kapcsolatot próbált létesíteni a frissítő szerverrel. Ez általában azt jelzi, hogy a szolgáltató aktívan blokkolja a külső webhelyekkel való kommunikációt. Ha meg akarod ismételni a frissítési információk lekérését, akkor kattints alul a "_QQ_"Frissítési információk újra letöltése"_QQ_" gombra. Ha ez üres oldalt eredményez, akkor lépj kapcsolatba a szolgáltatóddal és jelezd nekik ezt a problémát"

LIVEUPDATE_ERROR_NEEDSAUTH="Mielőtt frissíteni szeretnél, meg kell adnod a felhasználói neved/jelszavad vagy a letöltési AZ-t a komponens paraméterekben. A frissítés gomb addig nem lesz aktív, amíg ezeket nem adod meg."
LIVEUPDATE_HASUPDATES_HEAD="Elérhető az új verzió"
LIVEUPDATE_NOUPDATES_HEAD="Már a legújabb verzióval rendelkezel"
LIVEUPDATE_CURRENTVERSION="Telepített verzió"
LIVEUPDATE_LATESTVERSION="Legújabb verzió"
LIVEUPDATE_LATESTRELEASED="A legújabb verzió kiadási időpontja"
LIVEUPDATE_DOWNLOADURL="Direkt letöltési URL"

LIVEUPDATE_REFRESH_INFO="Frissítési információk újratöltése"
LIVEUPDATE_DO_UPDATE="Frissítés a legújabb verzióra"

LIVEUPDATE_FTP_REQUIRED="A Live Update-nek szüksége van az FTP használatára, hogy le tudja tölteni és feltelepíteni a frissítést, de te nem adtál meg FTP elérési adatokat a Joomla! globális beállításaiban.<br/><br/>Kérjük, hogy add meg az FTP felhasználói nevet és jelszót, hogy folytatni lehessen a frissítést."
LIVEUPDATE_FTP="FTP információk"
LIVEUPDATE_FTPUSERNAME="FTP felhasználói név"
LIVEUPDATE_FTPPASSWORD="FTP jelszó"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="A frissítés letöltése és telepítése"

LIVEUPDATE_DOWNLOAD_FAILED="A frissítési csomag letöltése sikertelen. Ellenőrizd az átmeneti (temp) könyvtár írhatóságát vagy a globális beállításoknál engedélyezd a Joomla! FTP feltöltést."
LIVEUPDATE_EXTRACT_FAILED="A frissítési csomag kitömörítése sikertelen. Kérjük, hogy a frissítést próbáld meg manuális módban."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Hibás csomagtípus. A frissítés nem folytatható."
LIVEUPDATE_INSTALLEXT="Telepítés %s %s"
LIVEUPDATE_ERROR="Hiba"
LIVEUPDATE_SUCCESS="Sikeres"

LIVEUPDATE_ICON_UNSUPPORTED="A Live Update nem támogatott"
LIVEUPDATE_ICON_CRASHED="A Live Update összeomlott"
LIVEUPDATE_ICON_CURRENT="A legfrissebb verzióval rendelkezel"
LIVEUPDATE_ICON_UPDATES="FRISSÍTÉST TALÁLTAM! KATTINTS IDE."

LIVEUPDATE_RELEASEINFO="Információk"
LIVEUPDATE_RELEASENOTES="Kiadási megjegyzések"
LIVEUPDATE_READMOREINFO="Bővebben"

; LIVEUPDATE_NAGSCREEN_HEAD="WARNING! You are about to install an unstable version."
; LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an serious adverse to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
; LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

; LIVEUPDATE_STABILITY_ALPHA="Alpha"
; LIVEUPDATE_STABILITY_BETA="Beta"
; LIVEUPDATE_STABILITY_RC="RC"
; LIVEUPDATE_STABILITY_STABLE="Stable"
; LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/en-GB/en-GB.liveupdate.ini000060400000007724152455705350015134 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Live Update"

LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update is not supported on this server"
LIVEUPDATE_NOTSUPPORTED_INFO="Your server indicates that Live Update is not supported. Please contact your host and ask them to enable the cURL PHP extension or activate the URL fopen() wrappers. If these are already enabled, please ask them to configure their firewall so that it allows access to the following URL:"
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="You can always update <var>%s</var> by visiting our site manually, downloading the latest release and installing it using Joomla!'s extension installer."

LIVEUPDATE_STUCK_HEAD="Live Update has marked itself as crashed"
LIVEUPDATE_STUCK_INFO="Live Update determined that it crashed the last time it tried to contact the update server. This usually indicates a host which actively blocks communications with external sites. If you would like to retry fetching the update information, please click the "_QQ_"Refresh update information"_QQ_" button below. If that results to a blank page, please contact your host and report this issue."

LIVEUPDATE_ERROR_NEEDSAUTH="You have to supply your username/password or Download ID to the component's parameters before trying to upgrade to the latest release. The upgrade button will remain disabled until you do that."
LIVEUPDATE_HASUPDATES_HEAD="A new version is available"
LIVEUPDATE_NOUPDATES_HEAD="You already have the latest version"
LIVEUPDATE_CURRENTVERSION="Installed version"
LIVEUPDATE_LATESTVERSION="Latest version"
LIVEUPDATE_LATESTRELEASED="Latest release date"
LIVEUPDATE_DOWNLOADURL="Direct download URL"

LIVEUPDATE_REFRESH_INFO="Refresh update information"
LIVEUPDATE_DO_UPDATE="Update to the latest version"

LIVEUPDATE_FTP_REQUIRED="Live Update determined that it needs to use FTP in order to download and install your update, but you have not saved your FTP login information in your Joomla! Global Configuration.<br/><br/>Please provide the FTP username and password below to proceed with the update."
LIVEUPDATE_FTP="FTP Information"
LIVEUPDATE_FTPUSERNAME="FTP Username"
LIVEUPDATE_FTPPASSWORD="FTP Password"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Download and install update"

LIVEUPDATE_DOWNLOAD_FAILED="Downloading the update package failed. Make sure that your temp-directory is writable or that you have enabled Joomla!'s FTP options in your site's Global Configuration."
LIVEUPDATE_EXTRACT_FAILED="Extracting the update package failed. Please try updating the extension manually."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Invalid package type. The update can not proceed."
LIVEUPDATE_INSTALLEXT="Install %s %s"
LIVEUPDATE_ERROR="Error"
LIVEUPDATE_SUCCESS="Success"

LIVEUPDATE_ICON_UNSUPPORTED="Live Update not supported"
LIVEUPDATE_ICON_CRASHED="Live Update crashed"
LIVEUPDATE_ICON_CURRENT="You have the latest version"
LIVEUPDATE_ICON_UPDATES="UPDATE FOUND! CLICK TO UPDATE."

LIVEUPDATE_RELEASEINFO="Information"
LIVEUPDATE_RELEASENOTES="Release notes"
LIVEUPDATE_READMOREINFO="Read more"

LIVEUPDATE_NAGSCREEN_HEAD="WARNING! You are about to install an unstable version."
LIVEUPDATE_NAGSCREEN_BODY="You are about to install an unstable version (%s - %s). Unstable versions may have undergone minimal or no testing and contain bugs which may have an adverse effect to the stability and functionality of your web site. If you are not sure about what you are about to do, please close this browser window. If you are absolutely certain you understand the risks involved with the installation of unstable releases, please click the button below to continue the installation of this unstable release."
LIVEUPDATE_NAGSCREEN_BUTTON="I understand the risks. Continue with the installation."

LIVEUPDATE_STABILITY_ALPHA="Alpha"
LIVEUPDATE_STABILITY_BETA="Beta"
LIVEUPDATE_STABILITY_RC="RC"
LIVEUPDATE_STABILITY_STABLE="Stable"
LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/bs-BA/bs-BA.liveupdate.ini000060400000010270152455705350015112 0ustar00; Akeeba Live Update
; Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>

LIVEUPDATE_TASK_OVERVIEW="Nadogradnja uživo"

LIVEUPDATE_NOTSUPPORTED_HEAD="Nadogradnaj uživo nije podržana na ovo serveru"
LIVEUPDATE_NOTSUPPORTED_INFO="Vaš server ukazuje da Nadogradnja uživo nije podržana. Molimo kontaktirajte vaš host i pitajte da omoguće cURL PHP ekstenziju ili aktiviraju URL fopen() omotače. Ako su ove već omogućene, molimo da ih pitate da podese vatreni zid kako bi dozvolio pristup sljedećem URL-u:"
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Možete uvijek nadograditi <var>%s</var> tako što će te ručno posjetiti našu stanicu, gdje možete preuzeti posljednje izdanje i instalirati upotrebom Joomla! instalera za ekstenzije."

LIVEUPDATE_STUCK_HEAD="Nadogradnja uživo se označila kao srušena"
LIVEUPDATE_STUCK_INFO="Nadogradnja uživo je odredila da se srušila posljednji put pri pokušaju da kontaktira server za nadogradnu. Ovo pretežno ukazuje na host koji aktivno blokira komunikaciju sa eksternim stranicama. Ako želite pokušati povući informacije o nadogradnji, molimo kliknite na "_QQ_"Osvježi informacije o nadogradnji"_QQ_" dugme ispod. Ako to rezultira sa praznom stranicom, molimo kontaktirajte svoj host i prijavite ovaj problem."

LIVEUPDATE_ERROR_NEEDSAUTH="Morate obezbijediti vaše korisničko ime/šifru ili ID za preuzimanje na parametre komponente prije pokušavanja nadogradnej na zadnje izdanje. Dugme za nadogradnju će ostati isključeno sve dok to ne učinite."
LIVEUPDATE_HASUPDATES_HEAD="Dostupna je nova verzija"
LIVEUPDATE_NOUPDATES_HEAD="Već posjedujete posljednju verziju"
LIVEUPDATE_CURRENTVERSION="Instalirana verzija"
LIVEUPDATE_LATESTVERSION="Posljednja verzija"
LIVEUPDATE_LATESTRELEASED="Datum posljednjeg izdanja"
LIVEUPDATE_DOWNLOADURL="Direktan URL za preuzimanje"

LIVEUPDATE_REFRESH_INFO="Osvježi informacije o nadogradnji"
LIVEUPDATE_DO_UPDATE="Nadogradi na posljednju verziju"

LIVEUPDATE_FTP_REQUIRED="Nadogradnja uživo je odredila da je potrebna upotreba FTP-a kako bi se preuzela i instalirala vaša nadogradnja, ali niste snimili vaše FTP informacije za prijavu u Joomla! globalnoj konfiguraciji.<br/><br/>Molimo da obezbjedite FTP korisničko ime i šifru ispod kako bi nastavili sa nadogradnjom."
LIVEUPDATE_FTP="FTP informacija"
LIVEUPDATE_FTPUSERNAME="FTP korisničko ime"
LIVEUPDATE_FTPPASSWORD="FTP šifra"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Preuzmi i instaliraj nadogradnju"

LIVEUPDATE_DOWNLOAD_FAILED="Preuzimanje paketa nadogradnje je neuspješno. Provjerite da li je vaš privremeni direktorij zapisiv ili da li imate uključene Joomla! FTP opcije na vašoj globalnoj konfiguraciji za stranicu."
LIVEUPDATE_EXTRACT_FAILED="Otpakivanje paketa nadogradnje neuspješno. Molimo da pokušate ručno nadograditi ekstenziju."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Nevažeći tip paketa. Nadogradnja se ne može nastaviti."
LIVEUPDATE_INSTALLEXT="Instaliraj %s %s"
LIVEUPDATE_ERROR="Greška"
LIVEUPDATE_SUCCESS="Uspjeh"

LIVEUPDATE_ICON_UNSUPPORTED="Nadogradnja uživo nije podržana"
LIVEUPDATE_ICON_CRASHED="Nadogradnja uživo se srušila"
LIVEUPDATE_ICON_CURRENT="Posjedujete posljednju verziju"
LIVEUPDATE_ICON_UPDATES="NADOGRADNJA PRONAĐENA! KLIKNITE ZA NADOGRADNJU."

LIVEUPDATE_RELEASEINFO="Informacije"
LIVEUPDATE_RELEASENOTES="Obavijesti o izdanju"
LIVEUPDATE_READMOREINFO="Pročitaj više"

LIVEUPDATE_NAGSCREEN_HEAD="UPOZORENJE! Upravo će te instalirati nestabilnu verziju."
LIVEUPDATE_NAGSCREEN_BODY="Upravo će te instalirati nestabilnu verziju (%s - %s). Nestabilne verzije su prošle minimalno ili nikakvo testiranje i sadrže greške koje štete stabilnosti i funkcionalnosti vaše web-stranice. Ako niste sigurno šta će te raditi, molimo da zatvorite prozor preglednika. Ako se potpuno sigurni da razumijete rizike uključene za instalacijom nestabilnih izdanja, molimo da kliknete dugme ispod kako bi nastavili instalaciju ovog nestabilnog izdanja."
LIVEUPDATE_NAGSCREEN_BUTTON="Razumijem rizike. Nastavi sa instalacijom."

LIVEUPDATE_STABILITY_ALPHA="Alfa"
LIVEUPDATE_STABILITY_BETA="Beta"
LIVEUPDATE_STABILITY_RC="RC"
LIVEUPDATE_STABILITY_STABLE="Stabilna"
LIVEUPDATE_STABILITY_SVN="SVN"liveupdate/language/fr-FR/fr-FR.liveupdate.ini000060400000015002152455705350015170 0ustar00; Akeeba Live Update
; Copyright (c)2010-2012 Nicholas K. Dionysopoulos / AkeebaBackup.com
; Licensed under the GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
;
; ADMIN [com_icagenda/liveupdate]	: liveupdate.ini
; Translation on Transifex			: https://www.transifex.com/projects/p/icagenda/
; iCagenda Version					: Copyright (c) 2013 JoomliC.com


LIVEUPDATE_TASK_OVERVIEW="Live Update"

LIVEUPDATE_NOTSUPPORTED_HEAD="Live Update n'est pas pris en charge sur ce serveur"
LIVEUPDATE_NOTSUPPORTED_INFO="Votre serveur indique que Live Update n'est pas supporté. Veuillez contactez votre hébergeur et lui demander d'activer l'extension PHP cURL ou activer la fonction fopen URL (). Si ceux-ci sont déjà activés, veuillez lui demander d'adapter le pare-feu pour qu'il autorise l'accès à l'URL suivante:";
LIVEUPDATE_NOTSUPPORTED_ALTMETHOD="Vous pouvez toujours mettre à jour <var>%s</ var> à partir de notre site internet, après avoir télécharger la dernière version et effectuer son installation via la gestion des extensions de Joomla!"

LIVEUPDATE_STUCK_HEAD="Live Update a échoué !"
LIVEUPDATE_STUCK_INFO="Live Update a échoué la dernière fois qu'il a essayé de se connecter au serveur de mise à jour. Cela signifie généralement que votre hébergeur bloque activement les communications avec des sites externes. Si vous souhaitez réessayer de récupérer les informations de mise à jour, cliquez sur le bouton " Rafraichir les informations de mise à jour ". S'il en résulte une page blanche, veuillez contactez votre hébergeur et lui signaler ce problème."

LIVEUPDATE_ERROR_NEEDSAUTH="Pour activer le bouton de mise à jour, vous devez indiquer vos identifiant/mot de passe ou votre Download ID dans les paramètres du composant. Le bouton de mise à niveau restera désactivé jusqu'à ce que vous le faites."
LIVEUPDATE_HASUPDATES_HEAD="Une nouvelle version est disponible"
LIVEUPDATE_NOUPDATES_HEAD="Vous avez la dernière version"
LIVEUPDATE_CURRENTVERSION="Version installée"
LIVEUPDATE_LATESTVERSION="Dernière version"
LIVEUPDATE_LATESTRELEASED="Date de la dernière version "
LIVEUPDATE_DOWNLOADURL="URL de téléchargement direct"

LIVEUPDATE_REFRESH_INFO="Rafraîchir les informations de mise à jour"
LIVEUPDATE_DO_UPDATE="Mettre à jour vers la dernière version"

LIVEUPDATE_FTP_REQUIRED="Live Update a besoin d'utiliser la couche FTP pour télécharger et installer la mise à jour, mais vous n'avez pas sauvegardé vos informations de connexion FTP dans la 'Configuration' de Joomla!<br/><br/>Veuillez fournir ci-dessous votre nom d'utilisateur et votre mot de passe FTP afin de procéder à la mise à jour."
LIVEUPDATE_FTP="Informations FTP"
LIVEUPDATE_FTPUSERNAME="Nom d'utilisateur FTP"
LIVEUPDATE_FTPPASSWORD="Mot de passe FTP"
LIVEUPDATE_DOWNLOAD_AND_INSTALL="Télécharger et installer la mise à jour"

LIVEUPDATE_DOWNLOAD_FAILED="Le téléchargement du package de mise à jour a échoué. Assurez-vous que votre répertoire temporaire (tmp) est accessible en écriture et que vous avez activé les options FTP dans la configuration globale de Joomla!."
LIVEUPDATE_EXTRACT_FAILED="L'extraction du package de mise à jour a échoué. Veuillez mettre à jour l'extension manuellement."

LIVEUPDATE_INVALID_PACKAGE_TYPE="Le type du package n'est pas valide. La mise à jour ne peut pas être effectuée."
LIVEUPDATE_INSTALLEXT="Installation %s %s"
LIVEUPDATE_ERROR="Erreur"
LIVEUPDATE_SUCCESS="effectuée avec succès"

; Added iCagenda
LIVEUPDATE_INSTALL_ERROR="Erreur à l'installation %s"
LIVEUPDATE_INSTALL_SUCCESS="Installation %s effectuée avec succès."
LIVEUPDATE_INSTALL_TYPE_COMPONENT="du composant iCagenda"
LIVEUPDATE_INSTALL_TYPE_FILE="du fichier"
LIVEUPDATE_INSTALL_TYPE_LANGUAGE="de la langue"
LIVEUPDATE_INSTALL_TYPE_LIBRARY="de la bibliothèque"
LIVEUPDATE_INSTALL_TYPE_MODULE="du module"
LIVEUPDATE_INSTALL_TYPE_PACKAGE="du paquet"
LIVEUPDATE_INSTALL_TYPE_PLUGIN="du plug-in"
LIVEUPDATE_INSTALL_TYPE_TEMPLATE="du template"

LIVEUPDATE_ICON_UNSUPPORTED="Live Update n'est pas pris en charge"
LIVEUPDATE_ICON_CRASHED="Live Update a échoué!"
LIVEUPDATE_ICON_CURRENT="Vous avez la dernière version"
LIVEUPDATE_ICON_UPDATES="Mise à jour disponible! Cliquez pour mettre à jour."

LIVEUPDATE_RELEASEINFO="Informations"
LIVEUPDATE_RELEASENOTES="Notes de version"
LIVEUPDATE_READMOREINFO="Plus d'infos"

LIVEUPDATE_NAGSCREEN_HEAD="ATTENTION! Vous êtes sur le point d'installer une version instable."
LIVEUPDATE_NAGSCREEN_BODY="Vous êtes sur le point d'installer une version dite instable (%s - %s). Les versions instables sont des versions ayant subi peu de tests, voir aucun, et qui peuvent contenir des bugs avec une conséquence importante sur la stabilité et la fonctionnalité de votre site internet. Si vous n'êtes pas sûr de ce que vous êtes sur le point de faire, merci de fermer cette fenêtre et de revenir en arrière. Si vous comprenez parfaitement les risques liés à l'utilisation d'une version instable, vous pouvez cliquer sur le bouton ci-dessous pour continuer l'installation de cette version."
LIVEUPDATE_NAGSCREEN_BUTTON="Je comprends les risques. Poursuivre l'installation."

LIVEUPDATE_STABILITY_ALPHA="Alpha"
LIVEUPDATE_STABILITY_BETA="Bêta"
LIVEUPDATE_STABILITY_RC="RC"
LIVEUPDATE_STABILITY_STABLE="Stable"

; Added iCagenda
LIVEUPDATE_ERROR_NEEDS_PRO_ID="Pour activer le bouton de mise à jour, vous devez indiquer dans les paramètres d'iCagenda votre licence Pro ID de mise à jour."
LIVEUPDATE_NAGSCREEN_HEAD_ICAGENDA = "ATTENTION! Vous êtes sur le point d'installer une version beta-test d'iCagenda."
LIVEUPDATE_NAGSCREEN_VERSION_ICAGENDA = "Version de test et de développement(iCagenda %s - %s)."
LIVEUPDATE_NAGSCREEN_BODY_ICAGENDA = "Le cycle de vie d'une version d'un logiciel est la somme des phases de développement, de tests et de maturité.<br/><b>Alpha :</b>peut être instable et peut causer des accidents ou des pertes de données.<br/><b>Beta :</b>a généralement plus de bugs que le logiciel terminée, cette version est destinée aux sites de tests uniquement.<br/><b>RC (Release Candidate) :</b> version bêta avec le potentiel pour être un produit final, qui est prête à être libérée à moins que des bugs importants émergent.<br/>Si vous n'êtes pas sûr de ce que vous êtes sur le point de faire, merci de fermer cette fenêtre et de revenir en arrière. Si vous êtes absolument certain que vous comprenez les risques liés à l'installation des versions instables, vous pouvez cliquer sur le bouton ci-dessous pour continuer l'installation de cette version.<br/>"
LIVEUPDATE_NAGSCREEN_FOOTER_ICAGENDA = "info:"
liveupdate/LICENSE.txt000060400000020215152455705350010540 0ustar00==============================================================================
Akeeba Live Update - One-click updates for Joomla! extensions
Copyright ©2011 Nicholas K. Dionysopoulos / AkeebaBackup.com

Live Update is a sub-component to assist you in providing one-click updates
for your Joomla! 1.5 and Joomla! 1.6 extensions. It is licensed under the
GNU Lesser General Public License version 3 or, at your option, any later
version published by the Free Software Foundation. You can use it royalty-
free in any Joomla! extension, Free or Proprietary. The full text of its
license is provided below.
==============================================================================

                   GNU LESSER GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.


  This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.

  0. Additional Definitions.

  As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.

  "The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.

  An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.

  A "Combined Work" is a work produced by combining or linking an
Application with the Library.  The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".

  The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.

  The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.

  1. Exception to Section 3 of the GNU GPL.

  You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.

  2. Conveying Modified Versions.

  If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:

   a) under this License, provided that you make a good faith effort to
   ensure that, in the event an Application does not supply the
   function or data, the facility still operates, and performs
   whatever part of its purpose remains meaningful, or

   b) under the GNU GPL, with none of the additional permissions of
   this License applicable to that copy.

  3. Object Code Incorporating Material from Library Header Files.

  The object code form of an Application may incorporate material from
a header file that is part of the Library.  You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:

   a) Give prominent notice with each copy of the object code that the
   Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the object code with a copy of the GNU GPL and this license
   document.

  4. Combined Works.

  You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:

   a) Give prominent notice with each copy of the Combined Work that
   the Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the Combined Work with a copy of the GNU GPL and this license
   document.

   c) For a Combined Work that displays copyright notices during
   execution, include the copyright notice for the Library among
   these notices, as well as a reference directing the user to the
   copies of the GNU GPL and this license document.

   d) Do one of the following:

       0) Convey the Minimal Corresponding Source under the terms of this
       License, and the Corresponding Application Code in a form
       suitable for, and under terms that permit, the user to
       recombine or relink the Application with a modified version of
       the Linked Version to produce a modified Combined Work, in the
       manner specified by section 6 of the GNU GPL for conveying
       Corresponding Source.

       1) Use a suitable shared library mechanism for linking with the
       Library.  A suitable mechanism is one that (a) uses at run time
       a copy of the Library already present on the user's computer
       system, and (b) will operate properly with a modified version
       of the Library that is interface-compatible with the Linked
       Version.

   e) Provide Installation Information, but only if you would otherwise
   be required to provide such information under section 6 of the
   GNU GPL, and only to the extent that such information is
   necessary to install and execute a modified version of the
   Combined Work produced by recombining or relinking the
   Application with a modified version of the Linked Version. (If
   you use option 4d0, the Installation Information must accompany
   the Minimal Corresponding Source and Corresponding Application
   Code. If you use option 4d1, you must provide the Installation
   Information in the manner specified by section 6 of the GNU GPL
   for conveying Corresponding Source.)

  5. Combined Libraries.

  You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:

   a) Accompany the combined library with a copy of the same work based
   on the Library, uncombined with any other library facilities,
   conveyed under the terms of this License.

   b) Give prominent notice with the combined library that part of it
   is a work based on the Library, and explaining where to find the
   accompanying uncombined form of the same work.

  6. Revised Versions of the GNU Lesser General Public License.

  The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.

  Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.

  If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.liveupdate/classes/abstractconfig.php000060400000022555152455705350014065 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2012 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.4.0.1 2014-12-25
 * @since       1.2.6
 *
 * ADDED (3.3.6)			: option for min_stability in getMinimumStability()
 * CHANGED (3.4.0-alpha2)	: option for updateURL in getUpdateURL() (set updateURL depending on getMinimumStability())
 * ADDED (3.4.0-alpha2)		: Own server for Testing Updates (Alpha & Beta)
 * ADDED (3.4.0)			: filter getAuthorization()
 */

defined('_JEXEC') or die();

/**
 * This is the base class inherited by the config.php file in LiveUpdate's root.
 * You may override it non-final members to customise its behaviour.
 * @author Nicholas K. Dionysopoulos <nicholas@akeebabackup.com>
 *
 */
abstract class LiveUpdateAbstractConfig extends JObject
{
	/** @var string The extension name, e.g. com_foobar, plg_foobar, mod_foobar, tpl_foobar etc */
	protected $_extensionName = 'com_icagenda';
	/** @var string The human-readable name of your extension */
	protected $_extensionTitle = 'iCagenda - Events Management Extension for Joomla!';
	/**
	 * The filename of the XML manifest of your extension. Leave blank to use extensionname.xml. For example,
	 * if the extension is com_foobar, it will look for com_foobar.xml and foobar.xml in the component's
	 * directory.
	 * @var string
	 * */
	protected $_xmlFilename = '';

	/** @var string The information storage adapter to use. Can be 'file' or 'component' */
	protected $_storageAdapter = 'file';
	/** @var array The configuration options for the storage adapter used */
	protected $_storageConfig = array('path' => JPATH_CACHE);
	/**
	 * How to determine if a new version is available. 'different' = if the version number is different,
	 * the remote version is newer, 'vcompare' = use version compare between the two versions, 'newest' =
	 * compare the release dates to find the newest. I suggest using 'different' on most cases.
	 * @var string
	 */
	protected $_versionStrategy = 'different';

	/** @var The current version of your extension. Populated automatically from the XML manifest. */
	protected $_currentVersion = '';
	/** @var The current release date of your extension. Populated automatically from the XML manifest. */
	protected $_currentReleaseDate = '';

	/** @var string The URL to the INI update stream of this extension */
	protected $_updateURL = '';
	/** @var bool Does the download URL require authorization to download the package? */
	protected $_requiresAuthorization = false;

	/** @var string The username to authorize a download on your site */
	protected $_username = '';
	/** @var string The password to authorize a download on your site */
	protected $_password = '';
	/** @var string The Download ID to authorize a download on your site; use it instead of the username/password pair */
	protected $_downloadID = '';

	/** @var string The path to a local copy of cacert.pem, required if you plan on using HTTPS URLs to fetch live udpate information or download files from */
	protected $_cacerts = null;

	/** @var string The minimum stability level to report as available update. One of alpha, beta, rc and stable. */
	protected $_minStability = 'stable';

	/**
	 * Singleton implementation
	 * @return LiveUpdateConfig An instance of the Live Update configuration class
	 */
	public static function &getInstance()
	{
		static $instance = null;

		if(!is_object($instance)) {
			$instance = new LiveUpdateConfig();
		}

		return $instance;
	}

	/**
	 * Public constructor. It populates all extension-specific fields. Override to your liking if necessary.
	 */
	public function __construct()
	{
		parent::__construct();
		$this->populateExtensionInfo();
		$this->populateAuthorization();
	}

	/**
	 * Returns the URL to the update INI stream. By default it returns the value to
	 * the protected $_updateURL property of the class. Override with your implementation
	 * if you want to modify its logic.
	 */
	public function getUpdateURL()
	{
		$minStability = self::getMinimumStability();

		switch($minStability) {
			case 'alpha':
			default:
				// Reports any stability level as an available update
				$ic_updateURL = 'http://pro.joomlic.com/index.php?option=com_ars&view=update&format=ini&id=2';
				break;

//			case 'beta':
				// Do not report alphas as available updates
//				if(in_array($stability, array('alpha'))) return 0;
//				break;

			case 'rc':
				// Do not report alphas and betas as available updates
				$ic_updateURL = 'http://pro.joomlic.com/index.php?option=com_ars&view=update&format=ini&id=1';
				break;

			case 'stable':
				// Do not report alphas, betas and rcs as available updates
				$ic_updateURL = 'http://pro.joomlic.com/index.php?option=com_ars&view=update&format=ini&id=1';
				break;
		}


		return $ic_updateURL;
//		return $this->_updateURL;
	}

	/**
	 * Override this ethod to load customized CSS and media files instead of the stock
	 * CSS and media provided by Live Update. If you override this class it MUST return
	 * true, otherwise LiveUpdate's CSS will be loaded after yours and will override your
	 * settings.
	 *
	 * @return bool Return true to stop Live Update from loading its own CSS files.
	 */
	public function addMedia()
	{
		return false;
	}

	/**
	 * Gets the authorization string to append to the download URL. It returns either the
	 * download ID or username/password pair. Please override the class constructor, not
	 * this method, if you want to fetch these values.
	 */
	public final function getAuthorization()
	{
		if (!empty($this->_downloadID))
		{
			return "dlid=".urlencode($this->_downloadID);
		}
		elseif (!empty($this->_username) && !empty($this->_password))
		{
			$_pass = str_replace('/', '.', $this->_password);
			$pass_ex = explode('.', $_pass);

			if (isset($pass_ex[1]))
			{
				$password = base64_decode($pass_ex[1]);
			}
			else
			{
				$password = $this->_password;
			}

			return "username=".urlencode($this->_username)."&password=".urlencode($password);
		}

		return "";
	}

	public final function requiresAuthorization()
	{
		return $this->_requiresAuthorization;
	}

	/**
	 * Returns all the information we have about the extension and its update preferences
	 * @return array The extension information
	 */
	public final function getExtensionInformation()
	{
		return array(
			'name'			=> $this->_extensionName,
			'title'			=> $this->_extensionTitle,
			'version'		=> $this->_currentVersion,
			'date'			=> $this->_currentReleaseDate,
//			'updateurl'		=> $this->_updateURL,
			'updateurl'		=> self::getUpdateURL(),
			'requireauth'	=> $this->_requiresAuthorization
		);
	}

	/**
	 * Returns the information regarding the storage adapter
	 * @return array
	 */
	public final function getStorageAdapterPreferences()
	{
		$config = $this->_storageConfig;
		$config['extensionName'] = $this->_extensionName;

		return array(
			'adapter'		=> $this->_storageAdapter,
			'config'		=> $config
		);
	}

	public final function getVersionStrategy()
	{
		return $this->_versionStrategy;
	}

	/**
	 * Get the current version from the XML manifest of the extension and
	 * populate the class' properties.
	 */
	private function populateExtensionInfo()
	{
		require_once dirname(__FILE__).'/xmlslurp.php';
		$xmlslurp = new LiveUpdateXMLSlurp();
		$data = $xmlslurp->getInfo($this->_extensionName, $this->_xmlFilename);
		if(empty($this->_currentVersion)) $this->_currentVersion = $data['version'];
		if(empty($this->_currentReleaseDate)) $this->_currentReleaseDate = $data['date'];
	}

	/**
	 * Fetch username/password and Download ID from the component's configuration.
	 */
	protected function populateAuthorization()
	{
		if(!$this->_requiresAuthorization) return;

		// Do we already have authorizaton information?
		if( (!empty($this->_username) && !empty($this->_password)) || !empty($this->_downloadID) ) {
			return;
		}

		if(substr($this->_extensionName,0,3) != 'com') return;

		// Not using JComponentHelper to avoid conflicts ;)
		$db = JFactory::getDbo();
		$sql = $db->getQuery(true)
			->select($db->qn('params'))
			->from($db->qn('#__extensions'))
			->where($db->qn('type').' = '.$db->q('component'))
			->where($db->qn('element').' = '.$db->q($this->_extensionName));
		$db->setQuery($sql);
		$rawparams = $db->loadResult();
		$params = new JRegistry();
		$params->loadString($rawparams, 'JSON');

		$this->_username	= $params->get('username','');
		$this->_password	= $params->get('password','');
		$this->_downloadID	= $params->get('downloadid','');
	}

	public function applyCACert(&$ch)
	{
		if(!empty($this->_cacerts)) {
			if(file_exists($this->_cacerts)) {
				@curl_setopt($ch, CURLOPT_CAINFO, $this->_cacerts);
			}
		}
	}

	public function getMinimumStability()
	{
		// Not using JComponentHelper to avoid conflicts ;)
		$db = JFactory::getDbo();
		$sql = $db->getQuery(true)
			->select($db->qn('params'))
			->from($db->qn('#__extensions'))
			->where($db->qn('type').' = '.$db->q('component'))
			->where($db->qn('element').' = '.$db->q('com_icagenda'));
		$db->setQuery($sql);
		$rawparams = $db->loadResult();
		$params = new JRegistry();
		$params->loadString($rawparams, 'JSON');

		$ic_minStability	= $params->get('min_stability','stable');

		return $ic_minStability;
	}
}
liveupdate/classes/updatefetch.php000060400000025330152455705350013362 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.4.0.1 2014-12-25
 * @since       1.2.6
 *
 * CHANGED (3.4.0)	: Remove Duplicated Auth info at end of url
 */

defined('_JEXEC') or die();

/**
 * Fetches the update information from the server or the cache, depending on
 * whether the cache is fresh or not.
 */
class LiveUpdateFetch extends JObject
{
	private $cacheTTL = 24;

	private $storage = null;

	/**
	 * One-stop-shop function which fetches update information and tells you
	 * if there are updates available or not, or if updates are not supported.
	 *
	 * @return int 0 = no updates, 1 = updates available, -1 = updates not supported, -2 = fetching updates crashes the server
	 */
	public function hasUpdates($force = false)
	{
		$updateInfo = $this->getUpdateInformation($force);

		if($updateInfo->stuck) return -2;

		if(!$updateInfo->supported) return -1;

		$config = LiveUpdateConfig::getInstance();
		$extInfo = $config->getExtensionInformation();

		// Filter by stability level
		$minStability = $config->getMinimumStability();
		$stability = strtolower($updateInfo->stability);

		switch($minStability) {
			case 'alpha':
			default:
				// Reports any stability level as an available update
				break;

			case 'beta':
				// Do not report alphas as available updates
				if(in_array($stability, array('alpha'))) return 0;
				break;

			case 'rc':
				// Do not report alphas and betas as available updates
				if(in_array($stability, array('alpha','beta'))) return 0;
				break;

			case 'stable':
				// Do not report alphas, betas and rcs as available updates
				if(in_array($stability, array('alpha','beta','rc'))) return 0;
				break;
		}

		if(empty($updateInfo->version) && empty($updateInfo->date)) return 0;

		// Use the version strategy to determine the availability of an update
		switch($config->getVersionStrategy()) {
			case 'newest':
				JLoader::import('joomla.utilities.date');
				if(empty($extInfo)) {
					$mine = new JDate('2000-01-01 00:00:00');
				} else {
					try {
						$mine = new JDate($extInfo['date']);
					} catch(Exception $e) {
						$mine = new JDate('2000-01-01 00:00:00');
					}
				}

				$theirs = new JDate($updateInfo->date);

				return ($theirs->toUnix() > $mine->toUnix()) ? 1 : 0;
				break;

			case 'vcompare':
				$mine = $extInfo['version'];
				if(empty($mine)) $mine = '0.0.0';
				$theirs = $updateInfo->version;
				if(empty($theirs)) $theirs = '0.0.0';

				return (version_compare($theirs, $mine, 'gt')) ? 1 : 0;
				break;

			case 'different':
				$mine = $extInfo['version'];
				if(empty($mine)) $mine = '0.0.0';
				$theirs = $updateInfo->version;
				if(empty($theirs)) $theirs = '0.0.0';

				return ($theirs != $mine) ? 1 : 0;
				break;
		}
	}

	/**
	 * Get the latest version (update) information, either from the cache or
	 * from the update server.
	 *
	 * @param $force bool Set to true to force fetching fresh data from the server
	 *
	 * @return stdClass The update information, in object format
	 */
	public function getUpdateInformation($force = false)
	{
		// Get the Live Update configuration
		$config = LiveUpdateConfig::getInstance();

		// Get an instance of the storage class
		$storageOptions = $config->getStorageAdapterPreferences();
		require_once dirname(__FILE__).'/storage/storage.php';
		$this->storage = LiveUpdateStorage::getInstance($storageOptions['adapter'], $storageOptions['config']);

		// If we are requested to forcibly reload the information, clear old data first
		if($force) {
			$this->storage->set('lastcheck', null);
			$this->storage->set('updatedata', null);
			$this->storage->save();
		}

		// Fetch information from the cache
		$lastCheck = $this->storage->get('lastcheck', 0);
		$cachedData = $this->storage->get('updatedata', null);

		if (!is_object($cachedData))
		{
			$cachedData = null;
		}

		if(empty($cachedData)) {
			$lastCheck = 0;
		}

		// Check if the cache is at most $cacheTTL hours old
		$now = time();
		$maxDifference = $this->cacheTTL * 3600;
		$difference = abs($now - $lastCheck);

		if(!($force) && ($difference <= $maxDifference)) {
			// The cache is fresh enough; return cached data
			return $cachedData;
		} else {
			// The cache is stale; fetch new data, cache it and return it to the caller
			$data = $this->getUpdateData($force);
			$this->storage->set('lastcheck', $now);
			$this->storage->set('updatedata', $data);
			$this->storage->save();
			return $data;
		}
	}

	/**
	 * Retrieves the update data from the server, unless previous runs indicate
	 * that the download process gets stuck and ends up in a WSOD.
	 *
	 * @param bool $force Set to true to force fetching new data no matter if the process is marked as stuck
	 * @return stdClass
	 */
	private function getUpdateData($force = false)
	{
		$ret = array(
			'supported'		=> false,
			'stuck'			=> true,
			'version'		=> '',
			'date'			=> '',
			'stability'		=> '',
			'downloadURL'	=> '',
			'infoURL'		=> '',
			'releasenotes'	=> ''
		);

		// If the process is marked as "stuck", we won't bother fetching data again; well,
		// unless you really force me to, by setting $force = true.
		if( ($this->storage->get('stuck',0) != 0) && !$force) return (object)$ret;

		$ret['stuck'] = false;

		require_once dirname(__FILE__).'/download.php';

		// First we mark Live Updates as getting stuck. This way, if fetching the update
		// fails with a server error, reloading the page will not result to a White Screen
		// of Death again. Hey, Joomla! core team, are you listening? Some hosts PRETEND to
		// support cURL or URL fopen() wrappers but using them throws an immediate WSOD.
		$this->storage->set('stuck', 1);
		$this->storage->save();

		$config = LiveUpdateConfig::getInstance();
		$extInfo = $config->getExtensionInformation();
		$url = $extInfo['updateurl'];
		$rawData = LiveUpdateDownloadHelper::downloadAndReturn($url);

		// Now that we have some data returned, let's unmark the process as being stuck ;)
		$this->storage->set('stuck', 0);
		$this->storage->save();

		// If we didn't get anything, assume Live Update is not supported (communication error)
		if(empty($rawData) || ($rawData == false)) return (object)$ret;

		// TODO Detect the content type of the returned update stream. For now, I will pretend it's an INI file.

		$data = $this->parseINI($rawData);
		$ret['supported'] = true;

		return (object)array_merge($ret, $data);
	}

	/**
	 * Fetches update information from the server using cURL
	 * @return string The raw server data
	 */
	private function fetchCURL()
	{
		$config = LiveUpdateConfig::getInstance();
		$extInfo = $config->getExtensionInformation();
		$url = $extInfo['updateurl'];

		$process = curl_init($url);
		$config = new LiveUpdateConfig();
		$config->applyCACert($process);
		curl_setopt($process, CURLOPT_HEADER, 0);
		// Pretend we are Firefox, so that webservers play nice with us
		curl_setopt($process, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.14) Gecko/20110105 Firefox/3.6.14');
		curl_setopt($process, CURLOPT_ENCODING, 'gzip');
		curl_setopt($process, CURLOPT_TIMEOUT, 10);
		curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);
		// The @ sign allows the next line to fail if open_basedir is set or if safe mode is enabled
		@curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);
		@curl_setopt($process, CURLOPT_MAXREDIRS, 20);
		$inidata = curl_exec($process);
		curl_close($process);
		return $inidata;
	}

	/**
	 * Fetches update information from the server using file_get_contents, which internally
	 * uses URL fopen() wrappers.
	 * @return string The raw server data
	 */
	private function fetchFOPEN()
	{
		$config = LiveUpdateConfig::getInstance();
		$extInfo = $config->getExtensionInformation();
		$url = $extInfo['updateurl'];

		return @file_get_contents($url);
	}

	/**
	 * Parses the raw INI data into an array of update information
	 * @param string $rawData The raw INI data
	 * @return array The parsed data
	 */
	private function parseINI($rawData)
	{
		$ret = array(
			'version'		=> '',
			'date'			=> '',
			'stability'		=> '',
			'downloadURL'	=> '',
			'infoURL'		=> '',
			'releasenotes'	=> ''
		);

		// Get the magic string
		$magicPos = strpos($rawData, '; Live Update provision file');

		if($magicPos === false) {
			// That's not an INI file :(
			return $ret;
		}

		if($magicPos !== 0) {
			$rawData = substr($rawData, $magicPos);
		}

		require_once dirname(__FILE__).'/inihelper.php';
		$iniData = LiveUpdateINIHelper::parse_ini_file($rawData, false, true);

		// Get the supported platforms
		$supportedPlatform = false;
		$versionParts = explode('.',JVERSION);
		$currentPlatform = $versionParts[0].'.'.$versionParts[1];

		if(array_key_exists('platforms', $iniData)) {
			$rawPlatforms = explode(',', $iniData['platforms']);
			foreach($rawPlatforms as $platform) {
				$platform = trim($platform);
				if(substr($platform,0,7) != 'joomla/') {
					continue;
				}
				$platform = substr($platform, 7);
				if($currentPlatform == $platform) {
					$supportedPlatform = true;
				}
			}
		} else {
			// Lies, damn lies
			$supportedPlatform = true;
		}

		if(!$supportedPlatform) {
			return $ret;
		}

		$ret['version'] = array_key_exists('version', $iniData) ? $iniData['version'] : '';
		$ret['date'] = array_key_exists('date', $iniData) ? $iniData['date'] : '';
		$config = LiveUpdateConfig::getInstance();
		$auth = $config->getAuthorization();
		if(!array_key_exists('link', $iniData)) $iniData['link'] = '';
		$glue = strpos($iniData['link'],'?') === false ? '?' : '&';
		$ret['downloadURL'] = $iniData['link'] . (empty($auth) ? '' : $glue.$auth);
//		$ret['downloadURL'] = $iniData['link'];
		if(array_key_exists('stability', $iniData)) {
			$stability = $iniData['stability'];
		} else {
			// Stability not defined; guesswork mode enabled
			$version = $ret['version'];
			if( preg_match('#^[0-9\.]*a[0-9\.]*#', $version) == 1 ) {
				$stability = 'alpha';
			} elseif( preg_match('#^[0-9\.]*b[0-9\.]*#', $version) == 1 ) {
				$stability = 'beta';
			} elseif( preg_match('#^[0-9\.]*rc[0-9\.]*#', $version) == 1 ) {
				$stability = 'rc';
			} elseif( preg_match('#^[0-9\.]*$#', $version) == 1 ) {
				$stability = 'stable';
			} else {
				$stability = 'svn';
			}
		}
		$ret['stability'] = $stability;

		if(array_key_exists('releasenotes', $iniData)) {
			$ret['releasenotes'] = $iniData['releasenotes'];
		}

		if(array_key_exists('infourl', $iniData)) {
			$ret['infoURL'] = $iniData['infourl'];
		}

		return $ret;
	}
}
liveupdate/classes/model.php000060400000014112152455705350012162 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.1.7 2013-08-28
 * @since       1.2.6
 */
/**
 * Specific error message update - iCagenda
 */

defined('_JEXEC') or die();

JLoader::import('joomla.application.component.model');

if(!class_exists('JoomlaCompatModel')) {
	if(interface_exists('JModel')) {
		abstract class JoomlaCompatModel extends JModelLegacy {}
	} else {
		class JoomlaCompatModel extends JModel {}
	}
}

/**
 * The Live Update MVC model
 */
class LiveUpdateModel extends JoomlaCompatModel
{
	public function download()
	{
		// Get the path to Joomla!'s temporary directory
		$jreg = JFactory::getConfig();
		$tmpdir = $jreg->get('tmp_path');

		JLoader::import('joomla.filesystem.folder');
		// Make sure the user doesn't use the system-wide tmp directory. You know, the one that's
		// being erased periodically and will cause a real mess while installing extensions (Grrr!)
		if(realpath($tmpdir) == '/tmp') {
			// Someone inform the user that what he's doing is insecure and stupid, please. In the
			// meantime, I will fix what is broken.
			$tmpdir = JPATH_SITE.'/tmp';
		} // Make sure that folder exists (users do stupid things too often; you'd be surprised)
		elseif(!JFolder::exists($tmpdir)) {
			// Darn it, user! WTF where you thinking? OK, let's use a directory I know it's there...
			$tmpdir = JPATH_SITE.'/tmp';
		}

		// Oki. Let's get the URL of the package
		$updateInfo = LiveUpdate::getUpdateInformation();
		$config = LiveUpdateConfig::getInstance();
		$auth = $config->getAuthorization();
		$url = $updateInfo->downloadURL;

		// Sniff the package type. If sniffing is impossible, I'll assume a ZIP package
		$basename = basename($url);
		if(strstr($basename,'?')) {
			$basename = substr($basename, strstr($basename,'?')+1);
		}
		if(substr($basename,-4) == '.zip') {
			$type = 'zip';
		} elseif(substr($basename,-4) == '.tar') {
			$type = 'tar';
		} elseif(substr($basename,-4) == '.tgz') {
			$type = 'tar.gz';
		} elseif(substr($basename,-7) == '.tar.gz') {
			$type = 'tar.gz';
		} else {
			$type = 'zip';
		}

		// Cache the path to the package file and the temp installation directory in the session
		$target = $tmpdir.'/'.$updateInfo->extInfo->name.'.update.'.$type;
		$tempdir = $tmpdir.'/'.$updateInfo->extInfo->name.'_update';

		$session = JFactory::getSession();
		$session->set('target', $target, 'liveupdate');
		$session->set('tempdir', $tempdir, 'liveupdate');

		// Let's download!
		require_once dirname(__FILE__).'/download.php';
		return LiveUpdateDownloadHelper::download($url, $target);
	}

	public function extract()
	{
		$session = JFactory::getSession();
		$target = $session->get('target', '', 'liveupdate');
		$tempdir = $session->get('tempdir', '', 'liveupdate');

		JLoader::import('joomla.filesystem.archive');
		return JArchive::extract( $target, $tempdir);
	}

	public function install()
	{
		$session = JFactory::getSession();
		$tempdir = $session->get('tempdir', '', 'liveupdate');

		JLoader::import('joomla.installer.installer');
		JLoader::import('joomla.installer.helper');
		$installer = JInstaller::getInstance();
		$packageType = JInstallerHelper::detectType($tempdir);

		if(!$packageType) {
			$msg = JText::_('LIVEUPDATE_INVALID_PACKAGE_TYPE');
			$result = false;
		} elseif (!$installer->install($tempdir)) {
			// There was an error installing the package
//			$msg = JText::sprintf('LIVEUPDATE_INSTALLEXT', JText::_($packageType), JText::_('LIVEUPDATE_Error'));
			$msg = JText::sprintf('LIVEUPDATE_INSTALL_ERROR', JText::_('LIVEUPDATE_INSTALL_TYPE_'.strtoupper($packageType)));
			$result = false;
		} else {
			// Package installed sucessfully
//			$msg = JText::sprintf('LIVEUPDATE_INSTALLEXT', JText::_($packageType), JText::_('LIVEUPDATE_Success'));
			$msg = JText::sprintf('LIVEUPDATE_INSTALL_SUCCESS', JText::_('LIVEUPDATE_INSTALL_TYPE_'.strtoupper($packageType)));
			$result = true;
		}

		$app = JFactory::getApplication();
		$app->enqueueMessage($msg);
		$this->setState('result', $result);
		$this->setState('packageType', $packageType);
		if($packageType) {
			$this->setState('name', $installer->get('name'));
			$this->setState('message', $installer->message);
			$this->setState('extmessage', $installer->get('extension_message'));
		}

		return $result;
	}

	public function cleanup()
	{
		$session = JFactory::getSession();
		$target = $session->get('target', '', 'liveupdate');
		$tempdir = $session->get('tempdir', '', 'liveupdate');

		JLoader::import('joomla.installer.helper');
		JInstallerHelper::cleanupInstall($target, $tempdir);

		$session->clear('target','liveupdate');
		$session->clear('tempdir','liveupdate');
	}

	public function getSRPURL($return = '')
	{
		$session = JFactory::getSession();
		$tempdir = $session->get('tempdir', '', 'liveupdate');

		JLoader::import('joomla.installer.installer');
		JLoader::import('joomla.installer.helper');
		JLoader::import('joomla.filesystem.file');

		$instModelFile = JPATH_ADMINISTRATOR.'/components/com_akeeba/models/installer.php';
		if(!JFile::exists($instModelFile)) {
			$instModelFile = JPATH_ADMINISTRATOR.'/components/com_akeeba/plugins/models/installer.php';
		};
		if(!JFile::exists($instModelFile)) return false;

		require_once $instModelFile;
		$model	= JoomlaCompatModel::getInstance('Installer', 'AkeebaModel');
		$packageType = JInstallerHelper::detectType($tempdir);
		$name = $model->getExtensionName($tempdir);

		$url = 'index.php?option=com_akeeba&view=backup&tag=restorepoint&type='.$packageType.'&name='.urlencode($name['name']);
		switch($packageType) {
			case 'module':
			case 'template':
				$url .= '&group='.$name['client'];
				break;
			case 'plugin':
				$url .= '&group='.$name['group'];
				break;
		}

		if(!empty($return)) $url .= '&returnurl='.urlencode($return);

		return $url;
	}
}
liveupdate/classes/download.php000060400000024051152455705350012674 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright  Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license    GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.1.7 2013-08-28
 * @since       1.2.6
 */

defined('_JEXEC') or die();

/**
 * Allows downloading packages over the web to your server
 */
class LiveUpdateDownloadHelper
{
	/**
	 * Downloads from a URL and saves the result as a local file
	 *
	 * @param   string  $url     The URL to fetch
	 * @param   string  $target  Where to save the file
	 *
	 * @return  boolean  True on success
	 */
	public static function download($url, $target)
	{
		// Import Joomla! libraries
		JLoader::import('joomla.filesystem.file');

		/** @var bool Did we try to force permissions? */
		$hackPermissions = false;

		// Make sure the target does not exist
		if (JFile::exists($target))
		{
			if (!@unlink($target))
			{
				JFile::delete($target);
			}
		}

		// Try to open the output file for writing
		$fp = @fopen($target, 'wb');

		if ($fp === false)
		{
			// The file can not be opened for writing. Let's try a hack.
			$empty = '';
			if (JFile::write($target, $empty))
			{
				if (self::chmod($target, 511))
				{
					$fp				 = @fopen($target, 'wb');
					$hackPermissions = true;
				}
			}
		}

		$result = false;

		if ($fp !== false)
		{
			// First try to download directly to file if $fp !== false
			$adapters	 = self::getAdapters();
			$result		 = false;

			while (!empty($adapters) && ($result === false))
			{
				// Run the current download method
				$method	 = 'get' . strtoupper(array_shift($adapters));
				$result	 = self::$method($url, $fp);

				// Check if we have a download
				if ($result === true)
				{
					// The download is complete, close the file pointer
					@fclose($fp);

					// If the filesize is not at least 1 byte, we consider it failed.
					clearstatcache();
					$filesize = @filesize($target);

					if ($filesize <= 0)
					{
						$result	 = false;
						$fp		 = @fopen($target, 'wb');
					}
				}
			}

			// If we have no download, close the file pointer
			if ($result === false)
			{
				@fclose($fp);
			}
		}

		if ($result === false)
		{
			// Delete the target file if it exists
			if (file_exists($target))
			{
				if (!@unlink($target))
				{
					JFile::delete($target);
				}
			}
			// Download and write using JFile::write();
			$result = JFile::write($target, self::downloadAndReturn($url));
		}

		return $result;
	}

	/**
	 * Downloads from a URL and returns the result as a string
	 *
	 * @param   string  $url  The URL to download from
	 *
	 * @return  mixed  Result string on success, false on failure
	 */
	public static function downloadAndReturn($url)
	{
		$adapters	 = self::getAdapters();
		$result		 = false;

		while (!empty($adapters) && ($result === false))
		{
			// Run the current download method
			$method	 = 'get' . strtoupper(array_shift($adapters));
			$result	 = self::$method($url, null);
		}

		return $result;
	}

	/**
	 * Does the server support PHP's cURL extension?
	 *
	 * @return   boolean  True if it is supported
	 */
	private static function hasCURL()
	{
		static $result = null;

		if (is_null($result))
		{
			$result = function_exists('curl_init');
		}

		return $result;
	}

	/**
	 * Downloads the contents of a URL and writes them to disk (if $fp is not null)
	 * or returns them as a string (if $fp is null) using cURL
	 *
	 * @param   string    $url  The URL to download from
	 * @param   resource  $fp   The file pointer to download to. Omit to return the contents.
	 *
	 * @return  boolean|string  False on failure, true on success ($fp not null) or the URL contents (if $fp is null)
	 */
	private static function &getCURL($url, $fp = null, $nofollow = false)
	{
		$result = false;

		$ch		 = curl_init($url);
		$config	 = new LiveUpdateConfig();
		$config->applyCACert($ch);

		if (!@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1) && !$nofollow)
		{
			// Safe Mode is enabled. We have to fetch the headers and
			// parse any redirections present in there.
			curl_setopt($ch, CURLOPT_AUTOREFERER, true);
			curl_setopt($ch, CURLOPT_FAILONERROR, true);
			curl_setopt($ch, CURLOPT_HEADER, true);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
			curl_setopt($ch, CURLOPT_TIMEOUT, 30);

			// Get the headers
			$data = curl_exec($ch);
			curl_close($ch);

			// Init
			$newURL = $url;

			// Parse the headers
			$lines = explode("\n", $data);

			foreach ($lines as $line)
			{
				if (substr($line, 0, 9) == "Location:")
				{
					$newURL = trim(substr($line, 9));
				}
			}

			// Download from the new URL
			if ($url != $newURL)
			{
				return self::getCURL($newURL, $fp);
			}
			else
			{
				return self::getCURL($newURL, $fp, true);
			}
		}
		else
		{
			@curl_setopt($ch, CURLOPT_MAXREDIRS, 20);
		}

		curl_setopt($ch, CURLOPT_AUTOREFERER, true);
		curl_setopt($ch, CURLOPT_FAILONERROR, true);
		curl_setopt($ch, CURLOPT_HEADER, false);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
		curl_setopt($ch, CURLOPT_TIMEOUT, 30);
		// Pretend we are IE7, so that webservers play nice with us
		curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)');

		if (is_resource($fp))
		{
			curl_setopt($ch, CURLOPT_FILE, $fp);
		}

		$result = curl_exec($ch);
		curl_close($ch);

		return $result;
	}

	/**
	 * Does the server support URL fopen() wrappers?
	 *
	 * @return  boolean
	 */
	private static function hasFOPEN()
	{
		static $result = null;

		if (is_null($result))
		{
			// If we are not allowed to use ini_get, we assume that URL fopen is
			// disabled.
			if (!function_exists('ini_get'))
			{
				$result = false;
			}
			else
			{
				$result = ini_get('allow_url_fopen');
			}
		}

		return $result;
	}

	/**
	 * Downloads the contents of a URL and writes them to disk (if $fp is not null)
	 * or returns them as a string (if $fp is null) using fopen() URL wrappers
	 *
	 * @param   string    $url  The URL to download from
	 * @param   resource  $fp   The file pointer to download to. Omit to return the contents.
	 *
	 * @return  boolean|string  False on failure, true on success ($fp not null) or the URL contents (if $fp is null)
	 */
	private static function &getFOPEN($url, $fp = null)
	{
		$result = false;

		// Track errors
		if (function_exists('ini_set'))
		{
			$track_errors = ini_set('track_errors', true);
		}

		// Open the URL for reading
		if (function_exists('stream_context_create'))
		{
			// PHP 5+ way (best)
			$httpopts	 = array(
				'user_agent' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)',
				'timeout'	 => 10.0,
			);
			$context	 = stream_context_create(array('http' => $httpopts));
			$ih			 = @fopen($url, 'r', false, $context);
		}
		else
		{
			// PHP 4 way (actually, it's just a fallback as we can't run this code in PHP4)
			if (function_exists('ini_set'))
			{
				ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)');
			}
			$ih = @fopen($url, 'r');
		}

		// If fopen() fails, abort
		if (!is_resource($ih))
		{
			return $result;
		}

		// Try to download
		$bytes	 = 0;
		$result	 = true;
		$return	 = '';
		while (!feof($ih) && $result)
		{
			$contents = fread($ih, 4096);
			if ($contents === false)
			{
				@fclose($ih);
				$result = false;
				return $result;
			}
			else
			{
				$bytes += strlen($contents);
				if (is_resource($fp))
				{
					$result = @fwrite($fp, $contents);
				}
				else
				{
					$return .= $contents;
					unset($contents);
				}
			}
		}

		@fclose($ih);

		if (is_resource($fp))
		{
			return $result;
		}
		elseif ($result === true)
		{
			return $return;
		}
		else
		{
			return $result;
		}
	}

	/**
	 * Detect and return available download methods
	 *
	 * @return  array
	 */
	private static function getAdapters()
	{
		// Detect available adapters
		$adapters	 = array();
		if (self::hasCURL())
			$adapters[]	 = 'curl';
		if (self::hasFOPEN())
			$adapters[]	 = 'fopen';
		return $adapters;
	}

	/**
	 * Change the permissions of a file, optionally using FTP
	 *
	 * @param   string  $file  Absolute path to file
	 * @param   int     $mode  Permissions, e.g. 0755
	 *
	 * @return  boolean  Ture if successful
	 */
	private static function chmod($path, $mode)
	{
		if (is_string($mode))
		{
			$mode	 = octdec($mode);
			if (($mode < 0600) || ($mode > 0777))
				$mode	 = 0755;
		}

		// Initialize variables
		JLoader::import('joomla.client.helper');
		$ftpOptions = JClientHelper::getCredentials('ftp');

		// Check to make sure the path valid and clean
		$path = JPath::clean($path);

		if ($ftpOptions['enabled'] == 1)
		{
			// Connect the FTP client
			JLoader::import('joomla.client.ftp');
			if (version_compare(JVERSION, '3.0', 'ge'))
			{
				$ftp = JClientFTP::getInstance(
						$ftpOptions['host'], $ftpOptions['port'], array(), $ftpOptions['user'], $ftpOptions['pass']
				);
			}
			else
			{
				if (version_compare(JVERSION, '3.0', 'ge'))
				{
					$ftp = JClientFTP::getInstance(
							$ftpOptions['host'], $ftpOptions['port'], array(), $ftpOptions['user'], $ftpOptions['pass']
					);
				}
				else
				{
					$ftp = JFTP::getInstance(
							$ftpOptions['host'], $ftpOptions['port'], array(), $ftpOptions['user'], $ftpOptions['pass']
					);
				}
			}
		}

		if (@chmod($path, $mode))
		{
			$ret = true;
		}
		elseif ($ftpOptions['enabled'] == 1)
		{
			// Translate path and delete
			JLoader::import('joomla.client.ftp');
			$path	 = JPath::clean(str_replace(JPATH_ROOT, $ftpOptions['root'], $path), '/');
			// FTP connector throws an error
			$ret	 = $ftp->chmod($path, $mode);
		}
		else
		{
			return false;
		}
	}

}
liveupdate/classes/tmpl/startupdate.php000060400000003636152455705350014407 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.1.7 2013-08-28
 * @since       1.2.6
 */

defined('_JEXEC') or die();
?>

<div class="liveupdate">
	<div class="liveupdate-ftp">
		<p><?php echo JText::_('LIVEUPDATE_FTP_REQUIRED')?></p>
		<form name="adminForm" id="adminForm" action="index.php" method="get">
			<input name="option" value="<?php echo JRequest::getCmd('option','')?>" type="hidden" />
			<input name="view" value="<?php echo JRequest::getCmd('view','liveupdate')?>" type="hidden" />
			<input name="task" value="download" type="hidden" />
			<fieldset>
				<legend><?php echo JText::_('LIVEUPDATE_FTP') ?></legend>

				<table class="adminform">
					<tbody>
						<tr>
							<td width="120">
								<label for="username"><?php echo JText::_('LIVEUPDATE_FTPUSERNAME'); ?></label>
							</td>
							<td>
								<input type="text" id="username" name="username" class="input_box" size="70" value="" />
							</td>
						</tr>
						<tr>
							<td width="120">
								<label for="password"><?php echo JText::_('LIVEUPDATE_FTPPASSWORD'); ?></label>
							</td>
							<td>
								<input type="password" id="password" name="password" class="input_box" size="70" value="" />
							</td>
						</tr>
					</tbody>
				</table>
				<input type="submit" value="<?php echo JText::_('LIVEUPDATE_DOWNLOAD_AND_INSTALL'); ?>" />
			</fieldset>
		</form>
	</div>

	<p class="liveupdate-poweredby">
		Powered by <a href="https://www.akeebabackup.com/software/akeeba-live-update.html">Akeeba Live Update</a>
	</p>

</div>
liveupdate/classes/tmpl/install.php000060400000002446152455705350013513 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.1.7 2013-08-28
 * @since       1.2.6
 */

defined( '_JEXEC' ) or die();

$state			= $this->get('State');
$message1		= $state->get('message');
$message2		= $state->get('extmessage');
?>
<table class="adminform">
	<tbody>
		<?php if($message1) : ?>
		<tr>
			<th><?php echo JText::_($message1) ?></th>
		</tr>
		<?php endif; ?>
		<?php if($message2) : ?>
		<tr>
			<td><?php echo $message2; ?></td>
		</tr>
		<?php endif; ?>
	</tbody>
</table>

<p class="liveupdate-poweredby">
	Powered by <a href="https://www.akeebabackup.com/software/akeeba-live-update.html">Akeeba Live Update</a>
</p>

<iframe style="width: 0px; height: 0px; border: none;" frameborder="0" marginheight="0" marginwidth="0" height="0" width="0"
	src="index.php?option=<?php echo JRequest::getCmd('option','')?>&view=<?php echo JRequest::getCmd('view','')?>&task=cleanup"></iframe>
liveupdate/classes/tmpl/overview.php000060400000013736152455705350013717 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.4.0 2014-12-21
 * @since       1.2.6
 */
/**
 * Specific strings iCagenda
 */

defined('_JEXEC') or die();

JHtml::_('behavior.framework');
JHtml::_('behavior.modal');
?>

<div class="liveupdate">

	<?php if($this->updateInfo->releasenotes): ?>
	<div style="display:none;">
		<div id="liveupdate-releasenotes">
			<div class="liveupdate-releasenotes-text">
			<?php echo $this->updateInfo->releasenotes ?>
			</div>
		</div>
	</div>
	<?php endif; ?>

	<?php if(!$this->updateInfo->supported): ?>
	<div class="liveupdate-notsupported">
		<h3><?php echo JText::_('LIVEUPDATE_NOTSUPPORTED_HEAD') ?></h3>

		<p><?php echo JText::_('LIVEUPDATE_NOTSUPPORTED_INFO'); ?></p>
		<p class="liveupdate-url">
			<?php echo $this->escape($this->updateInfo->extInfo->updateurl) ?>
		</p>
		<p><?php echo JText::sprintf('LIVEUPDATE_NOTSUPPORTED_ALTMETHOD', $this->escape($this->updateInfo->extInfo->title)); ?></p>
		<p class="liveupdate-buttons">
			<button onclick="window.location='<?php echo $this->requeryURL ?>'" ><?php echo JText::_('LIVEUPDATE_REFRESH_INFO') ?></button>
		</p>
	</div>

	<?php elseif($this->updateInfo->stuck):?>
	<div class="liveupdate-stuck">
		<h3><?php echo JText::_('LIVEUPDATE_STUCK_HEAD') ?></h3>

		<p><?php echo JText::_('LIVEUPDATE_STUCK_INFO'); ?></p>
		<p><?php echo JText::sprintf('LIVEUPDATE_NOTSUPPORTED_ALTMETHOD', $this->escape($this->updateInfo->extInfo->title)); ?></p>

		<p class="liveupdate-buttons">
			<button onclick="window.location='<?php echo $this->requeryURL ?>'" ><?php echo JText::_('LIVEUPDATE_REFRESH_INFO') ?></button>
		</p>
	</div>

	<?php else: ?>
	<?php
		$class = $this->updateInfo->hasUpdates ? 'hasupdates' : 'noupdates';
		$auth = $this->config->getAuthorization();
		$auth = empty($auth) ? '' : '?'.$auth;
	?>
	<?php if($this->needsAuth): ?>
	<p class="liveupdate-error-needsauth">
		<?php echo JText::_('LIVEUPDATE_ERROR_NEEDS_PRO_ID'); ?>
	</p>
	<?php endif; ?>
	<div class="liveupdate-<?php echo $class?>">
		<h3><?php echo JText::_('LIVEUPDATE_'.strtoupper($class).'_HEAD') ?><?php if ($class == 'hasupdates') : ?>!<?php endif; ?></h3>
		<div class="liveupdate-infotable">
			<div class="liveupdate-row row0">
				<span class="liveupdate-label"><?php echo JText::_('LIVEUPDATE_CURRENTVERSION') ?></span>
				<span class="liveupdate-data"><?php echo $this->updateInfo->extInfo->version ?></span>
			</div>
			<div class="liveupdate-row row1">
				<span class="liveupdate-label"><?php echo JText::_('LIVEUPDATE_LATESTVERSION') ?></span>
				<span class="liveupdate-data"><?php echo $this->updateInfo->version ?></span>
			</div>
			<div class="liveupdate-row row0">
				<span class="liveupdate-label"><?php echo JText::_('LIVEUPDATE_LATESTRELEASED') ?></span>
				<span class="liveupdate-data"><?php echo $this->updateInfo->date ?></span>
			</div>
			<div class="liveupdate-row row1">
				<span class="liveupdate-label"><?php echo JText::_('LIVEUPDATE_DOWNLOADURL') ?></span>
				<span class="liveupdate-data"><a href="<?php echo $this->updateInfo->downloadURL.$auth?>"><?php echo $this->escape($this->updateInfo->downloadURL)?></a></span>
			</div>
			<?php if(!empty($this->updateInfo->releasenotes) || !empty($this->updateInfo->infoURL)): ?>
			<div class="liveupdate-row row0">
				<span class="liveupdate-label"><?php echo JText::_('LIVEUPDATE_RELEASEINFO') ?></span>
				<span class="liveupdate-data">
					<?php if($this->updateInfo->releasenotes): ?>
					<a href="#" id="btnLiveUpdateReleaseNotes" class="btn btn-warning btn-small"><i class="icon-file"></i> <?php echo JText::_('LIVEUPDATE_RELEASENOTES') ?></a>
					<?php
					JHTML::_('behavior.framework');
					JHTML::_('behavior.modal');

					$script = <<<ENDSCRIPT
					window.addEvent( 'domready' ,  function() {
						$('btnLiveUpdateReleaseNotes').addEvent('click', showLiveUpdateReleaseNotes);
					});

					function showLiveUpdateReleaseNotes()
					{
						var liveupdateReleasenotes = $('liveupdate-releasenotes').clone();

						SqueezeBox.fromElement(
							liveupdateReleasenotes, {
								handler: 'adopt',
								size: {
									x: 450,
									y: 350
								}
							}
						);
					}
ENDSCRIPT;
					$document = JFactory::getDocument();
					$document->addScriptDeclaration($script,'text/javascript');
					?>
					<?php endif; ?>
					<?php if($this->updateInfo->releasenotes && $this->updateInfo->infoURL): ?>
					<!-- &nbsp;&bull;&nbsp; -->
					<?php endif; ?>
					<?php if($this->updateInfo->infoURL): ?>
					<!-- a class="btn btn-small" href="http://icagenda.joomlic.com" target="_blank"><?php echo JText::_('LIVEUPDATE_READMOREINFO') ?></a -->
					<?php endif; ?>
					<button class="btn btn-info btn-small" onclick="window.location='<?php echo $this->requeryURL ?>'" ><i class="icon-refresh"></i> <?php echo JText::_('LIVEUPDATE_REFRESH_INFO') ?></button>
				</span>
			</div>
			<?php endif; ?>
		</div>

		<p class="liveupdate-buttons">
			<?php if($this->updateInfo->hasUpdates):?>
			<?php $disabled = $this->needsAuth ? 'disabled="disabled"' : ''?>
			<button class="btn btn-success btn-large" <?php echo $disabled?> onclick="window.location='<?php echo $this->runUpdateURL ?>'" ><i class="icon-download"></i>&nbsp;&nbsp;<?php echo JText::_('LIVEUPDATE_DO_UPDATE') ?></button>
			<?php endif;?>
			<!--button class="btn btn-info btn-small" onclick="window.location='<?php echo $this->requeryURL ?>'" ><i class="icon-refresh"></i> <?php echo JText::_('LIVEUPDATE_REFRESH_INFO') ?></button-->
		</p>
	</div>

	<?php endif; ?>

	<p class="liveupdate-poweredby">
		Powered by <a href="https://www.akeebabackup.com/software/akeeba-live-update.html">Akeeba Live Update</a>
	</p>

</div>
liveupdate/classes/tmpl/nagscreen.php000060400000005113152455705350014004 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.4.0 2014-12-21
 * @since       1.2.6
 */
/**
 * Specific strings iCagenda
 */

defined('_JEXEC') or die();

$stability = JText::_('LIVEUPDATE_STABILITY_'.$this->updateInfo->stability);
?>

<div class="liveupdate">

	<div id="nagscreen">
		<h2><?php echo JText::_('LIVEUPDATE_NAGSCREEN_HEAD_ICAGENDA') ?></h2>

		<p class="nagversioninfo">
			<?php echo JText::sprintf('LIVEUPDATE_NAGSCREEN_VERSION_ICAGENDA', $this->updateInfo->version, $stability) ?>
		</p>
		<?php if (JText::_('LIVEUPDATE_NAGSCREEN_BODY_ICAGENDA') != 'LIVEUPDATE_NAGSCREEN_BODY_ICAGENDA') : ?>
			<p class="nagtext">
				<?php echo JText::_('LIVEUPDATE_NAGSCREEN_BODY_ICAGENDA') ?>
			</p>
		<?php else : ?>
			<p class="nagtext">
				<?php echo JText::_('LIVEUPDATE_NAGSCREEN_BODY_PRE_RELEASES_ALERT_TOP') ?>
			</p>
			<p class="nagstability alert alert-danger">
				<strong><?php echo JText::_('LIVEUPDATE_NAGSCREEN_BODY_PRE_RELEASES_ICAGENDA_ALPHA') ?></strong>:
				<?php echo JText::_('LIVEUPDATE_NAGSCREEN_BODY_PRE_RELEASES_ALERT_ALPHA') ?>
			</p>
			<p class="nagstability alert alert-warning">
				<strong><?php echo JText::_('LIVEUPDATE_NAGSCREEN_BODY_PRE_RELEASES_ICAGENDA_BETA') ?></strong>:
				<?php echo JText::_('LIVEUPDATE_NAGSCREEN_BODY_PRE_RELEASES_ALERT_BETA') ?>
			</p>
			<p class="nagstability alert alert-info">
				<strong><?php echo JText::_('LIVEUPDATE_NAGSCREEN_BODY_PRE_RELEASES_ICAGENDA_RC') ?></strong>:
				<?php echo JText::_('LIVEUPDATE_NAGSCREEN_BODY_PRE_RELEASES_ALERT_RC') ?>
			</p>
			<p class="nagtext">
				<?php echo JText::_('LIVEUPDATE_NAGSCREEN_BODY_PRE_RELEASES_ALERT_BOTTOM') ?>
			</p>
		<?php endif; ?>
		<!--p>
			<small><?php echo JText::_('LIVEUPDATE_NAGSCREEN_FOOTER_ICAGENDA') ?>
			<a href="http://www.joomlic.com" target="_blank">www.joomlic.com</a></small>
		</p-->
	</div>
	<p class="liveupdate-buttons">
		<button class="btn btn-danger btn-large" onclick="window.location='<?php echo $this->runUpdateURL ?>'" ><?php echo JText::_('LIVEUPDATE_NAGSCREEN_BUTTON') ?></button>
	</p>

	<p class="liveupdate-poweredby">
		Powered by <a href="https://www.akeebabackup.com/software/akeeba-live-update.html">Akeeba Live Update</a>
	</p>

</div>
liveupdate/classes/view.php000060400000006717152455705350012050 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.1.7 2013-08-28
 * @since       1.2.6
 */

defined('_JEXEC') or die();

JLoader::import('joomla.application.component.view');

if(!class_exists('JoomlaCompatView')) {
	if(interface_exists('JView')) {
		abstract class JoomlaCompatView extends JViewLegacy {}
	} else {
		class JoomlaCompatView extends JView {}
	}
}

/**
 * The Live Update MVC view
 */
class LiveUpdateView extends JoomlaCompatView
{
	public function display($tpl = null)
	{
		// Load the CSS
		$config = LiveUpdateConfig::getInstance();
		$this->assign('config', $config);
		if(!$config->addMedia()) {
			// No custom CSS overrides were set; include our own
			$document = JFactory::getDocument();
			$url = JURI::base().'/components/'.JRequest::getCmd('option','').'/liveupdate/assets/liveupdate.css';
			$document->addStyleSheet($url, 'text/css');
		}

		$requeryURL = rtrim(JURI::base(),'/').'/index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&force=1';
		$this->assign('requeryURL', $requeryURL);

		$model = $this->getModel();

		$extInfo = (object)$config->getExtensionInformation();
		JToolBarHelper::title($extInfo->title.' &ndash; '.JText::_('LIVEUPDATE_TASK_OVERVIEW'),'liveupdate');
		JToolBarHelper::back('JTOOLBAR_BACK', 'index.php?option='.JRequest::getCmd('option',''));

		if(version_compare(JVERSION, '3.0', 'ge')) {
			$j3css = <<<ENDCSS
div#toolbar div#toolbar-back button.btn span.icon-back::before {
	content: "";
}
ENDCSS;
			JFactory::getDocument()->addStyleDeclaration($j3css);
		}

		switch(JRequest::getCmd('task','default'))
		{
			case 'startupdate':
				$this->setLayout('startupdate');
				$this->assign('url','index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=download');
				break;

			case 'install':
				$this->setLayout('install');

				// Get data from the model
				$state		= $this->get('State');

				// Are there messages to display ?
				$showMessage	= false;
				if ( is_object($state) )
				{
					$message1		= $state->get('message');
					$message2		= $state->get('extension.message');
					$showMessage	= ( $message1 || $message2 );
				}

				$this->assign('showMessage',	$showMessage);
				$this->assignRef('state',		$state);

				break;

			case 'nagscreen':
				$this->setLayout('nagscreen');
				$this->assign('updateInfo', LiveUpdate::getUpdateInformation());
				$this->assign('runUpdateURL','index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=startupdate&skipnag=1');
				break;

			case 'overview':
			default:
				$this->setLayout('overview');

				$force = JRequest::getInt('force',0);
				$this->assign('updateInfo', LiveUpdate::getUpdateInformation($force));
				$this->assign('runUpdateURL','index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=startupdate');

				$needsAuth = !($config->getAuthorization()) && ($config->requiresAuthorization());
				$this->assign('needsAuth', $needsAuth);
				break;
		}

		parent::display($tpl);
	}
}
liveupdate/classes/storage/file.php000060400000004114152455705350013446 0ustar00<?php

/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.1.7 2013-08-28
 * @since       1.2.6
 */
defined('_JEXEC') or die();

/**
 * Live Update File Storage Class
 * Allows to store the update data to files on disk. Its configuration options are:
 * path			string	The absolute path to the directory where the update data will be stored as INI files
 *
 */
class LiveUpdateStorageFile extends LiveUpdateStorage
{
	private $filename = null;
	private $extname = null;

	public function __construct()
	{
	}

	public function load($config)
	{
		JLoader::import('joomla.registry.registry');
		JLoader::import('joomla.filesystem.file');

		if (array_key_exists('path', $config))
		{
			$path	= $config['path'];
		}
		else
		{
			$path	= JPATH_CACHE;
		}
		$extname	= $config['extensionName'];
		$filename	= "$path/$extname.updates.php";

		// Kill old files
		$filenameKill = "$path/$extname.updates.ini";
		if (JFile::exists($filenameKill))
		{
			JFile::delete($filenameKill);
		}

		$this->filename	 = $filename;
		$this->extname	 = $extname;

		$this->registry = new JRegistry('update');

		if (JFile::exists($this->filename))
		{
			// Workaround for broken JRegistryFormatPHP API...
			@include_once $this->filename;

			$className = 'LiveUpdate' . ucwords($extname) . 'Cache';

			if (class_exists($className))
			{
				$object = new $className;
				$this->registry->loadObject($object);
			}
		}
	}

	public function save()
	{
		JLoader::import('joomla.registry.registry');
		JLoader::import('joomla.filesystem.file');

		$options = array(
			'class' => 'LiveUpdate' . ucwords($this->extname) . 'Cache'
		);
		$data	 = $this->registry->toString('PHP', $options);
		JFile::write($this->filename, $data);
	}

}
liveupdate/classes/storage/component.php000060400000006357152455705350014544 0ustar00<?php

/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.1.7 2013-08-28
 * @since       1.2.6
 */
defined('_JEXEC') or die();

/**
 * Live Update Component Storage Class
 * Allows to store the update data to a component's parameters. This is the most reliable method.
 * Its configuration options are:
 * component	string	The name of the component which will store our data. If not specified the extension name will be used.
 * key			string	The name of the component parameter where the serialized data will be stored. If not specified "liveupdate" will be used.
 */
class LiveUpdateStorageComponent extends LiveUpdateStorage
{
	private $component = null;

	private $key = null;

	public function __construct()
	{
		$this->keyPrefix = '';
	}

	public function load($config)
	{
		if (!array_key_exists('component', $config))
		{
			$this->component = $config['extensionName'];
		}
		else
		{
			$this->component = $config['component'];
		}

		if (!array_key_exists('key', $config))
		{
			$this->key = 'liveupdate';
		}
		else
		{
			$this->key = $config['key'];
		}

		// Not using JComponentHelper to avoid conflicts ;)
		$db			 = JFactory::getDbo();
		$sql		 = $db->getQuery(true)
			->select($db->qn('params'))
			->from($db->qn('#__extensions'))
			->where($db->qn('type') . ' = ' . $db->q('component'))
			->where($db->qn('element') . ' = ' . $db->q($this->component));
		$db->setQuery($sql);
		$rawparams	 = $db->loadResult();
		$params		 = new JRegistry();
		$params->loadString($rawparams, 'JSON');

		$data = $params->get($this->key, '');

		JLoader::import('joomla.registry.registry');
		$this->registry = new JRegistry('update');

		$this->registry->loadString($data, 'INI');
	}

	public function save()
	{
		$data = $this->registry->toString('INI');

		$db = JFactory::getDBO();

		// An interesting discovery: if your component is manually updating its
		// component parameters before Live Update is called, then calling Live
		// Update will reset the modified component parameters because
		// JComponentHelper::getComponent() returns the old, cached version of
		// them. So, we have to forget the following code and shoot ourselves in
		// the feet. Dammit!!!
		$sql = $db->getQuery(true)
			->select($db->qn('params'))
			->from($db->qn('#__extensions'))
			->where($db->qn('type') . ' = ' . $db->q('component'))
			->where($db->qn('element') . ' = ' . $db->q($this->component));
		$db->setQuery($sql);
		$rawparams	 = $db->loadResult();
		$params		 = new JRegistry();
		$params->loadString($rawparams, 'JSON');

		$params->set($this->key, $data);

		$data	 = $params->toString('JSON');
		$sql	 = $db->getQuery(true)
			->update($db->qn('#__extensions'))
			->set($db->qn('params') . ' = ' . $db->q($data))
			->where($db->qn('type') . ' = ' . $db->q('component'))
			->where($db->qn('element') . ' = ' . $db->q($this->component));

		$db->setQuery($sql);
		$db->execute();
	}

}
liveupdate/classes/storage/storage.php000060400000006055152455705350014201 0ustar00<?php

/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.1.8 2013-08-30
 * @since       1.2.6
 */
/**
 * Specific PHP 5.3 min control - iCagenda
 */
defined('_JEXEC') or die();

/**
 * Abstract class for the update parameters storage
 * @author nicholas
 *
 */
abstract class LiveUpdateStorage
{
	/**
	 * @var  JRegistry  The update data registry
	 */
	protected $registry = null;

	/**
	 * @var  string  The key prefix for the registry data
	 */
	protected $keyPrefix = 'update.';

	/**
	 * Singleton implementation
	 *
	 * @param   string  $type    Storage tyme (file, component)
	 * @param   array   $config  Configuration array
	 *
	 * @return  LiveUpdateStorage
	 */
	public static function getInstance($type, $config)
	{
		static $instances = array();

		$sig = md5($type, serialize($config));
		if (!array_key_exists($sig, $instances))
		{
			$className = 'LiveUpdateStorage' . ucfirst($type);

			if (!class_exists($className))
			{
				if (version_compare(phpversion(), '5.3.0', '<')) {
					require_once dirname(__FILE__).'/'.strtolower($type).'.php';
				} else {
					require_once __DIR__ . '/' . strtolower($type) . '.php';
				}
			}

			$object	= new $className($config);
			$object->load($config);

			$instances[$sig] = $object;
		}

		return $instances[$sig];
	}

	/**
	 * Set a value to the storage registry. Automatically encodes updatedata.
	 *
	 * @param   string  $key    The key to set
	 * @param   mixed   $value  The value of the key to set
	 *
	 * @return  void
	 */
	public final function set($key, $value)
	{
		if ($key == 'updatedata')
		{
			if (function_exists('base64_encode') && function_exists('base64_decode'))
			{
				$value = base64_encode(serialize($value));
			}
			else
			{
				$value = serialize($value);
			}
		}

		$this->registry->set($this->keyPrefix . $key, $value);
	}

	/**
	 * Read a value from the storage registry
	 *
	 * @param   string  $key      The key to read
	 * @param   mixed   $default  The default value of the key, if the key is not present
	 *
	 * @return  mixed  The value of the key
	 */
	public final function get($key, $default)
	{
		$value = $this->registry->get($this->keyPrefix . $key, $default);

		if ($key == 'updatedata')
		{
			if (function_exists('base64_encode') && function_exists('base64_decode'))
			{
				$value = unserialize(base64_decode($value));
			}
			else
			{
				$value = unserialize($value);
			}
		}

		return $value;
	}

	/**
	 * Save the contents of the registry to the appropriate storage
	 *
	 * @return  void
	 */
	abstract public function save();

	/**
	 * Load data from the storage
	 *
	 * @param   array  The configuration options
	 *
	 * @return  void
	 */
	abstract public function load($config);
}
liveupdate/classes/xmlslurp.php000060400000027100152455705350012751 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.1.7 2013-08-28
 * @since       1.2.6
 */

defined('_JEXEC') or die();

class LiveUpdateXMLSlurp extends JObject
{
	private $_info = array();

	public function getInfo($extensionName, $xmlName)
	{
		if(!array_key_exists($extensionName, $this->_info)) {
			$this->_info[$extensionName] = $this->fetchInfo($extensionName, $xmlName);
		}

		return $this->_info[$extensionName];
	}

	/**
	 * Gets the version information of an extension by reading its XML file
	 * @param string $extensionName The name of the extension, e.g. com_foobar, mod_foobar, plg_foobar or tpl_foobar.
	 * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml
	 */
	private function fetchInfo($extensionName, $xmlName)
	{
		$type = strtolower(substr($extensionName,0,3));
		switch($type) {
			case 'com':
				return $this->getComponentData($extensionName, $xmlName);
				break;
			case 'mod':
				return $this->getModuleData($extensionName, $xmlName);
				break;
			case 'plg':
				return $this->getPluginData($extensionName, $xmlName);
				break;
			case 'tpl':
				return $this->getTemplateData($extensionName, $xmlName);
				break;
			case 'pkg':
				return $this->getPackageData($extensionName, $xmlName);
				break;
			case 'lib':
				return $this->getPackageData($extensionName, $xmlName);
				break;
			default:
				if(strtolower(substr($extensionName, 0, 4)) == 'file') {
					return $this->getPackageData($extensionName, $xmlName);
				} else {
					return array('version'=>'', 'date'=>'');
				}
		}
	}

	/**
	 * Gets the version information of a component by reading its XML file
	 * @param string $extensionName The name of the extension, e.g. com_foobar
	 * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml
	 */
	private function getComponentData($extensionName, $xmlName)
	{
		$extensionName = strtolower($extensionName);
		$path = JPATH_ADMINISTRATOR.'/components/'.$extensionName;
		$altExtensionName = substr($extensionName,4);

		JLoader::import('joomla.filesystem.file');
		if(JFile::exists("$path/$xmlName")) {
			$filename = "$path/$xmlName";
		} elseif(JFile::exists("$path/$extensionName.xml")) {
			$filename = "$path/$extensionName.xml";
		} elseif(JFile::exists("$path/$altExtensionName.xml")) {
			$filename = "$path/$altExtensionName.xml";
		} elseif(JFile::exists("$path/manifest.xml")) {
			$filename = "$path/manifest.xml";
		} else {
			$filename = $this->searchForManifest($path);
			if($filename === false)	$filename = null;
		}

		if(empty($filename)) {
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		try {
			$xml = new SimpleXMLElement($filename, LIBXML_NONET, true);
		} catch(Exception $e) {
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		// Need to check for extension (since 1.6) and install (supported through 2.5)
		if ($xml->getName() != 'extension' && $xml->getName() != 'install') {
			unset($xml);
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		$data['version'] = $xml->version ? (string) $xml->version : '';
		$data['date'] = $xml->creationDate ? (string) $xml->creationDate : '';
		$data['xmlfile'] = $filename;

		return $data;
	}

	/**
	 * Gets the version information of a module by reading its XML file
	 * @param string $extensionName The name of the extension, e.g. mod_foobar
	 * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml
	 */
	private function getModuleData($extensionName, $xmlName)
	{
		$extensionName = strtolower($extensionName);
		$altExtensionName = substr($extensionName,4);

		JLoader::import('joomla.filesystem.folder');
		JLoader::import('joomla.filesystem.file');
		$path = JPATH_SITE.'/modules/'.$extensionName;
		if(!JFolder::exists($path)) {
			$path = JPATH_ADMINISTRATOR.'/modules/'.$extensionName;
		}
		if(!JFolder::exists($path)) {
			// Joomla! 1.5
			// 1. Check front-end
			$path = JPATH_ADMINISTRATOR.'/modules';
			$filename = "$path/$xmlName";
			if(!JFile::exists($filename)) {
				$filename = "$path/$extensionName.xml";
			}
			if(!JFile::exists($filename)) {
				$filename = "$path/$altExtensionName.xml";
			}
			// 2. Check front-end
			if(!JFile::exists($filename)) {
				$path = JPATH_SITE.'/modules';
				$filename = "$path/$xmlName";
				if(!JFile::exists($filename)) {
					$filename = "$path/$extensionName.xml";
				}
				if(!JFile::exists($filename)) {
					$filename = "$path/$altExtensionName.xml";
				}
				if(!JFile::exists($filename)) {
					return array('version' => '', 'date' => '');
				}
			}
		} else {
			// Joomla! 1.6
			$filename = "$path/$xmlName";
			if(!JFile::exists($filename)) {
				$filename = "$path/$extensionName.xml";
			}
			if(!JFile::exists($filename)) {
				$filename = "$path/$altExtensionName.xml";
			}
			if(!JFile::exists($filename)) {
				return array('version' => '', 'date' => '');
			}
		}

		if(empty($filename)) {
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		try {
			$xml = new SimpleXMLElement($filename, LIBXML_NONET, true);
		} catch(Exception $e) {
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		// Need to check for extension (since 1.6) and install (supported through 2.5)
		if ($xml->getName() != 'extension' && $xml->getName() != 'install') {
			unset($xml);
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		$data['version'] = $xml->version ? (string) $xml->version : '';
		$data['date'] = $xml->creationDate ? (string) $xml->creationDate : '';
		$data['xmlfile'] = $filename;

		return $data;
	}

	/**
	 * Gets the version information of a plugin by reading its XML file
	 * @param string $extensionName The name of the plugin, e.g. plg_foobar
	 * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml
	 */
	private function getPluginData($extensionName, $xmlName)
	{
		$extensionName = strtolower($extensionName);
		$altExtensionName = substr($extensionName,4);

		JLoader::import('joomla.filesystem.folder');
		JLoader::import('joomla.filesystem.file');

		$base = JPATH_PLUGINS;

		// Get a list of directories
		$stack = JFolder::folders($base,'.',true,true);
		foreach($stack as $path)
		{
			$filename = "$path/$xmlName";
			if(JFile::exists($filename)) break;
			$filename = "$path/$extensionName.xml";
			if(JFile::exists($filename)) break;
			$filename = "$path/$altExtensionName.xml";
			if(JFile::exists($filename)) break;
		}

		if(!JFile::exists($filename)) {
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		try {
			$xml = new SimpleXMLElement($filename, LIBXML_NONET, true);
		} catch(Exception $e) {
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		// Need to check for extension (since 1.6) and install (supported through 2.5)
		if ($xml->getName() != 'extension' && $xml->getName() != 'install') {
			unset($xml);
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		$data['version'] = $xml->version ? (string) $xml->version : '';
		$data['date'] = $xml->creationDate ? (string) $xml->creationDate : '';
		$data['xmlfile'] = $filename;

		return $data;
	}

	/**
	 * Gets the version information of a template by reading its XML file
	 * @param string $extensionName The name of the template, e.g. tpl_foobar
	 * @param string $xmlName The name of the XML manifest filename. If empty uses $extensionName.xml or templateDetails.xml
	 */
	private function getTemplateData($extensionName, $xmlName)
	{
		$extensionName = strtolower($extensionName);
		$altExtensionName = substr($extensionName,4);

		JLoader::import('joomla.filesystem.folder');
		JLoader::import('joomla.filesystem.file');

		// First look for administrator templates
		$path = JPATH_THEMES.'/'.$altExtensionName;
		if(!JFolder::exists($path)) {
			// Then look for front-end templates
			$path = JPATH_SITE.'/templates/'.$altExtensionName;
			if(!JFolder::exists($path)) return array('version' => '', 'date' => '');
		}

		$filename = "$path/$xmlName";
		if(!JFile::exists($filename)) {
			$filename = "$path/templateDetails.xml";
		}
		if(!JFile::exists($filename)) {
			$filename = "$path/$extensionName.xml";
		}
		if(!JFile::exists($filename)) {
			$filename = "$path/$altExtensionName.xml";
		}
		if(!JFile::exists($filename)) {
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		try {
			$xml = new SimpleXMLElement($filename, LIBXML_NONET, true);
		} catch(Exception $e) {
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		// Need to check for extension (since 1.6) and install (supported through 2.5)
		if ($xml->getName() != 'extension' && $xml->getName() != 'install') {
			unset($xml);
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		$data['version'] = $xml->version ? (string) $xml->version : '';
		$data['date'] = $xml->creationDate ? (string) $xml->creationDate : '';
		$data['xmlfile'] = $filename;

		return $data;
	}

	/**
	 * This method parses the manifest information of package, library and file
	 * extensions. All of those extensions do not store their manifests in the
	 * extension's directory, but in administrator/manifests. Kudos to @mbabker
	 * for sharing this method!
	 *
	 * @param string $extensionName
	 * @param string $xmlName
	 * @return type
	 */
	private function getPackageData($extensionName, $xmlName)
	{
		$extensionName = strtolower($extensionName);
		$altExtensionName = substr($extensionName,4);

		JLoader::import('joomla.filesystem.folder');
		JLoader::import('joomla.filesystem.file');
		$path = JPATH_ADMINISTRATOR.'/manifests/packages';

		$filename = "$path/$xmlName";
		if(!JFile::exists($filename)) {
			$filename = "$path/$extensionName.xml";
		}
		if(!JFile::exists($filename)) {
			$filename = "$path/$altExtensionName.xml";
		}
		if(!JFile::exists($filename)) {
			return array('version' => '', 'date' => '');
		}

		if(empty($filename)) {
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		try {
			$xml = new SimpleXMLElement($filename, LIBXML_NONET, true);
		} catch(Exception $e) {
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		// Need to check for extension (since 1.6) and install (supported through 2.5)
		if ($xml->getName() != 'extension') {
			unset($xml);
			return array('version' => '', 'date' => '', 'xmlfile' => '');
		}

		$data['version'] = $xml->version ? (string) $xml->version : '';
		$data['date'] = $xml->creationDate ? (string) $xml->creationDate : '';
		$data['xmlfile'] = $filename;

		return $data;
	}

	/**
	 * Scans a directory for XML manifest files. The first XML file to be a
	 * manifest wins.
	 *
	 * @var $path string The path to look into
	 *
	 * @return string|bool The full path to a manifest file or false if not found
	 */
	private function searchForManifest($path)
	{
		JLoader::import('joomla.filesystem.folder');
		$files = JFolder::files($path, '\.xml$', false, true);
		if(!empty($files)) foreach($files as $filename) {
			try {
				$xml = new SimpleXMLElement($filename, LIBXML_NONET, true);
			} catch(Exception $e) {
				continue;
			}

			// Check for extension (since 1.6) and install (supported through 2.5)
			if(($xml->getName() != 'extension' && $xml->getName() != 'install')) continue;
			unset($xml);
			return $filename;
		}

		return false;
	}
}
liveupdate/classes/inihelper.php000060400000010031152455705350013035 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.1.7 2013-08-28
 * @since       1.2.6
 */

defined('_JEXEC') or die();

/**
 * A smart INI file parser with reproducible behaviour among different PHP versions
 */
class LiveUpdateINIHelper
{
	/**
	 * Parse an INI file and return an associative array. Since PHP versions before
	 * 5.1 are bitches with regards to INI parsing, I use a PHP-only solution to
	 * overcome this obstacle.
	 * @param	string	$file	The file to process
	 * @param	bool	$process_sections	True to also process INI sections
	 * @return	array	An associative array of sections, keys and values
	 */
	public static function parse_ini_file( $file, $process_sections, $rawdata = false )
	{
		if($rawdata)
		{
			return self::parse_ini_file_php($file, $process_sections, $rawdata);
		}
		else
		{
			if( version_compare(PHP_VERSION, '5.1.0', '>=') && (!$rawdata) )
			{
				if( function_exists('parse_ini_file') )
				{
					return parse_ini_file($file, $process_sections);
				}
				else
				{
					return self::parse_ini_file_php($file, $process_sections);
				}
			} else {
				return self::parse_ini_file_php($file, $process_sections, $rawdata);
			}
		}
	}

	/**
	 * A PHP based INI file parser.
	 * Thanks to asohn ~at~ aircanopy ~dot~ net for posting this handy function on
	 * the parse_ini_file page on http://gr.php.net/parse_ini_file
	 * @param	string	$file	Filename to process
	 * @param	bool	$process_sections	True to also process INI sections
	 * @param	bool	$rawdata	If true, the $file contains raw INI data, not a filename
	 * @return	array	An associative array of sections, keys and values
	 */
	static function parse_ini_file_php($file, $process_sections = false, $rawdata = false)
	{
		$process_sections = ($process_sections !== true) ? false : true;

		if(!$rawdata)
		{
			$ini = file($file);
		}
		else
		{
			$file = str_replace("\r","",$file);
			$ini = explode("\n", $file);
		}

		if (count($ini) == 0) {return array();}

		$sections = array();
		$values = array();
		$result = array();
		$globals = array();
		$i = 0;
		foreach ($ini as $line) {
			$line = trim($line);
			$line = str_replace("\t", " ", $line);

			// Comments
			if (!preg_match('/^[a-zA-Z0-9[]/', $line)) {continue;}

			// Sections
			if ($line{0} == '[') {
				$tmp = explode(']', $line);
				$sections[] = trim(substr($tmp[0], 1));
				$i++;
				continue;
			}

			// Key-value pair
			list($key, $value) = explode('=', $line, 2);
			$key = trim($key);
			$value = trim($value);
			if (strstr($value, ";")) {
				$tmp = explode(';', $value);
				if (count($tmp) == 2) {
					if ((($value{0} != '"') && ($value{0} != "'")) ||
					preg_match('/^".*"\s*;/', $value) || preg_match('/^".*;[^"]*$/', $value) ||
					preg_match("/^'.*'\\s*;/", $value) || preg_match("/^'.*;[^']*$/", $value) ){
						$value = $tmp[0];
					}
				} else {
					if ($value{0} == '"') {
						$value = preg_replace('/^"(.*)".*/', '$1', $value);
					} elseif ($value{0} == "'") {
						$value = preg_replace("/^'(.*)'.*/", '$1', $value);
					} else {
						$value = $tmp[0];
					}
				}
			}
			$value = trim($value);
			$value = trim($value, "'\"");

			if ($i == 0) {
				if (substr($line, -1, 2) == '[]') {
					$globals[$key][] = $value;
				} else {
					$globals[$key] = $value;
				}
			} else {
				if (substr($line, -1, 2) == '[]') {
					$values[$i-1][$key][] = $value;
				} else {
					$values[$i-1][$key] = $value;
				}
			}
		}

		for($j = 0; $j < $i; $j++) {
			if ($process_sections === true) {
				if( isset($sections[$j]) && isset($values[$j]) )	$result[$sections[$j]] = $values[$j];
			} else {
				if( isset($values[$j]) ) $result[] = $values[$j];
			}
		}

		return $result + $globals;
	}
}
liveupdate/classes/controller.php000060400000016345152455705350013257 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * @version     3.1.7 2013-08-28
 * @since       1.2.6
 */

defined('_JEXEC') or die();

JLoader::import('joomla.application.component.controller');

if(!class_exists('JoomlaCompatController')) {
	if(interface_exists('JController')) {
		abstract class JoomlaCompatController extends JControllerLegacy {}
	} else {
		class JoomlaCompatController extends JController {}
	}
}

/**
 * The Live Update MVC controller
 */
class LiveUpdateController extends JoomlaCompatController
{
	/**
	 * Object contructor
	 * @param array $config
	 *
	 * @return LiveUpdateController
	 */
	public function __construct($config = array())
	{
		parent::__construct();

		$this->registerDefaultTask('overview');
	}

	/**
	 * Runs the overview page task
	 */
	public function overview()
	{
		$this->display();
	}

	/**
	 * Starts the update procedure. If the FTP credentials are required, it asks for them.
	 */
	public function startupdate()
	{
		$updateInfo = LiveUpdate::getUpdateInformation();
		if($updateInfo->stability != 'stable') {
			$skipNag = JRequest::getBool('skipnag', false);
			if(!$skipNag) {
				$this->setRedirect('index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=nagscreen');
				$this->redirect();
			}
		}

		$ftp = $this->setCredentialsFromRequest('ftp');
		if($ftp === true) {
			// The user needs to supply the FTP credentials
			$this->display();
		} else {
			// No FTP credentials required; proceed with the download
			$this->setRedirect('index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=download');
			$this->redirect();
		}
	}

	/**
	 * Download the update package
	 */
	public function download()
	{
		$ftp = $this->setCredentialsFromRequest('ftp');
		$model = $this->getThisModel();
		$result = $model->download();
		if(!$result) {
			// Download failed
			$msg = JText::_('LIVEUPDATE_DOWNLOAD_FAILED');
			$this->setRedirect('index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=overview', $msg, 'error');
		} else {
			// Download successful. Let's extract the package.
			$url = 'index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=extract';
			$user = JRequest::getString('username', null, 'GET', JREQUEST_ALLOWRAW);
			$pass = JRequest::getString('password', null, 'GET', JREQUEST_ALLOWRAW);
			if($user) {
				$url .= '&username='.urlencode($user).'&password='.urlencode($pass);
			}
			$this->setRedirect($url);
		}
		$this->redirect();
	}

	public function extract()
	{
		$ftp = $this->setCredentialsFromRequest('ftp');
		$model = $this->getThisModel();
		$result = $model->extract();
		if(!$result) {
			// Download failed
			$msg = JText::_('LIVEUPDATE_EXTRACT_FAILED');
			$this->setRedirect('index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=overview', $msg, 'error');
		} else {
			// Extract successful. Let's install the package.
			$url = 'index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=install';
			$user = JRequest::getString('username', null, 'GET', JREQUEST_ALLOWRAW);
			$pass = JRequest::getString('password', null, 'GET', JREQUEST_ALLOWRAW);
			if($user) {
				$url .= '&username='.urlencode($user).'&password='.urlencode($pass);
			}

			// Do we have SRP installed yet?
			$app = JFactory::getApplication();
			$jResponse = $app->triggerEvent('onSRPEnabled');
			$status = false;
			if(!empty($jResponse)) {
				$status = false;
				foreach($jResponse as $response)
				{
					$status = $status || $response;
				}
			}

			// SRP enabled, use it
			if($status) {
				$return = $url;
				$url = $model->getSRPURL($return);
				if(!$url) {
					$url = $return;
				}
			}

			$this->setRedirect($url);
		}
		$this->redirect();
	}

	public function install()
	{
		$ftp = $this->setCredentialsFromRequest('ftp');
		$model = $this->getThisModel();
		$result = $model->install();
		if(!$result) {
			// Installation failed
			$model->cleanup();
			$this->setRedirect('index.php?option='.JRequest::getCmd('option','').'&view='.JRequest::getCmd('view','liveupdate').'&task=overview');
			$this->redirect();
		} else {
			// Installation successful. Show the installation message.
			$cache = JFactory::getCache('mod_menu');
			$cache->clean();

			$this->display();
		}
	}

	public function cleanup()
	{
		// Perform the cleanup
		$ftp = $this->setCredentialsFromRequest('ftp');
		$model = $this->getThisModel();
		$model->cleanup();

		// Force reload update information
		$dummy = LiveUpdate::getUpdateInformation(true);

		die('OK');
	}

	/**
	 * Displays the current view
	 * @param bool $cachable Ignored!
	 */
	public final function display($cachable = false, $urlparams = false)
	{
		$viewLayout	= JRequest::getCmd( 'layout', 'default' );

		$view = $this->getThisView();

		// Get/Create the model
		$model = $this->getThisModel();
		$view->setModel($model, true);

		// Assign the FTP credentials from the request, or return TRUE if they are required
		JLoader::import('joomla.client.helper');
		$ftp	= $this->setCredentialsFromRequest('ftp');
		$view->assignRef('ftp', $ftp);

		// Set the layout
		$view->setLayout($viewLayout);

		// Display the view
		$view->display();
	}

	public final function getThisView()
	{
		static $view = null;

		if(is_null($view))
		{
			$basePath = $this->basePath;
			$tPath = dirname(__FILE__).'/tmpl';

			require_once('view.php');
			$view = new LiveUpdateView(array('base_path'=>$basePath, 'template_path'=>$tPath));
		}

		return $view;
	}

	public final function getThisModel()
	{
		static $model = null;

		if(is_null($model))
		{
			require_once('model.php');
			$model = new LiveUpdateModel();
			$task = $this->task;

			$model->setState( 'task', $task );

			$app	= JFactory::getApplication();
			$menu	= $app->getMenu();
			if (is_object( $menu ))
			{
				$item = $menu->getActive();
				if ($item)
				{
					$params	= $menu->getParams($item->id);
					// Set Default State Data
					$model->setState( 'parameters.menu', $params );
				}
			}

		}

		return $model;
	}

	private function setCredentialsFromRequest($client)
	{
		// Determine wether FTP credentials have been passed along with the current request
		JLoader::import('joomla.client.helper');
		$user = JRequest::getString('username', null, 'GET', JREQUEST_ALLOWRAW);
		$pass = JRequest::getString('password', null, 'GET', JREQUEST_ALLOWRAW);
		if ($user != '' && $pass != '')
		{
			// Add credentials to the session
			if (JClientHelper::setCredentials($client, $user, $pass)) {
				$return = false;
			} else {
				$return = JError::raiseWarning('SOME_ERROR_CODE', 'JClientHelper::setCredentialsFromRequest failed');
			}
		}
		else
		{
			// Just determine if the FTP input fields need to be shown
			$return = !JClientHelper::hasCredentials('ftp');
		}

		return $return;
	}
}
liveupdate/index.html000060400000000165152455705350010714 0ustar00<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title></title></head><body></body></html>liveupdate/liveupdate.php000060400000011762152455705350011577 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 *
 * @package LiveUpdate 2.1.5 - 2.2.1
 * @copyright Copyright (c)2010-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 *
 * One-click updater for Joomla! extensions
 * Copyright (C) 2011-2013  Nicholas K. Dionysopoulos / AkeebaBackup.com
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @version     3.3.3 2014-04-12
 * @since       1.2.6
 */

defined('_JEXEC') or die();

require_once dirname(__FILE__).'/classes/abstractconfig.php';
require_once dirname(__FILE__).'/config.php';

class LiveUpdate
{
	/** @var string The current version of Akeeba Live Update */
	public static $version = '1.1';

	/**
	 * Loads the translation strings -- this is an internal function, called automatically
	 */
	private static function loadLanguage()
	{
		// Load translations
		$basePath = dirname(__FILE__);
		$jlang = JFactory::getLanguage();
		$jlang->load('liveupdate', $basePath, 'en-GB', true); // Load English (British)
		$jlang->load('liveupdate', $basePath, $jlang->getDefault(), true); // Load the site's default language
		$jlang->load('liveupdate', $basePath, null, true); // Load the currently selected language
	}

	/**
	 * Handles requests to the "liveupdate" view which is used to display
	 * update information and perform the live updates
	 */
	public static function handleRequest()
	{
		// Load language strings
		self::loadLanguage();

		// Load the controller and let it run the show
		require_once dirname(__FILE__).'/classes/controller.php';
		$controller = new LiveUpdateController();
		$controller->execute(JRequest::getCmd('task','overview'));
		$controller->redirect();
	}

	/**
	 * Returns update information about your extension, based on your configuration settings
	 * @return stdClass
	 */
	public static function getUpdateInformation($force = false)
	{
		require_once dirname(__FILE__).'/classes/updatefetch.php';
		$update = new LiveUpdateFetch();
		$info = $update->getUpdateInformation($force);
		$hasUpdates = $update->hasUpdates($force);
		$info->hasUpdates = $hasUpdates;

		$config = LiveUpdateConfig::getInstance();
		$extInfo = $config->getExtensionInformation();

		$info->extInfo = (object)$extInfo;

		return $info;
	}

	public static function getIcon($config=array())
	{
		// Load language strings
		self::loadLanguage();

		// Initialize the array of button options
		$button = array();

		$defaultConfig = array(
			'option'			=> JRequest::getCmd('option',''),
			'view'				=> 'liveupdate',
			'mediaurl'			=> JURI::base().'components/'.JRequest::getCmd('option','').'/liveupdate/assets/'
		);
		$c = array_merge($defaultConfig, $config);

		$button['link'] = 'index.php?option='.$c['option'].'&view='.$c['view'];
		$button['image'] = $c['mediaurl'];

		$updateInfo = self::getUpdateInformation();
		if(!$updateInfo->supported) {
			// Unsupported
			$button['class'] = 'liveupdate-icon-notsupported';
			$button['image'] .= 'nosupport-32.png';
			$button['text'] = JText::_('LIVEUPDATE_ICON_UNSUPPORTED');
		} elseif($updateInfo->stuck) {
			// Stuck
			$button['class'] = 'liveupdate-icon-crashed';
			$button['image'] .= 'nosupport-32.png';
			$button['text'] = JText::_('LIVEUPDATE_ICON_CRASHED');
		} elseif($updateInfo->hasUpdates) {
			// Has updates
			$button['class'] = 'liveupdate-icon-updates';
			$button['image'] .= 'update-32.png';
			$button['text'] = JText::_('LIVEUPDATE_ICON_UPDATES');
		} else {
			// Already in the latest release
			$button['class'] = 'liveupdate-icon-noupdates';
			$button['image'] .= 'current-32.png';
			$button['text'] = JText::_('LIVEUPDATE_ICON_CURRENT');
		}
		if(version_compare(JVERSION, '2.5', 'ge')) {
			return '<div class="icon"><a href="'.$button['link'].'">'.
			'<div style="text-align: center;"><img src="'.$button['image'].'" alt="" width="32" height="32" border="0" align="middle" style="float: none" /></div>'.
			'<span class="'.$button['class'].'">'.$button['text'].'</span></a></div>';
		} else {
			return '<div class="icon"><a href="'.$button['link'].'">'.
			'<div><img src="'.$button['image'].'" alt="" width="32" height="32" border="0" align="middle" style="float: none" /></div>'.
			'<span class="'.$button['class'].'">'.$button['text'].'</span></a></div>';
		}
	}
}
liveupdate/assets/liveupdate.css000060400000010174152455705350013076 0ustar00/**
 * @package LiveUpdate
 * @copyright Copyright (c)2010-2012 Nicholas K. Dionysopoulos / AkeebaBackup.com
 * @license GNU LGPLv3 or later <http://www.gnu.org/copyleft/lesser.html>
 */
@CHARSET "UTF-8";

.icon-48-liveupdate { background-image: url(liveupdate-48.png) }

var { font-style: italic; font-weight: bold; }
p.liveupdate-url { font-family: "Lucida Sans Mono", "Courier New", Courier, monospace; }

div.liveupdate-notsupported,
div.liveupdate-stuck {
	border: thin solid #990000;
	background: #fff0f0;
	padding: 1em;
	color: #330000;
	-moz-border-radius: 10px;
	-webkit-border-radius: 10px;
	-o-border-radius: 10px;
	border-radius: 10px;
	-moz-box-shadow: 5px 5px 5px #f9f9f9;
	-webkit-box-shadow: 5px 5px 5px #f9f9f9;
	box-shadow: 5px 5px 5px #f9f9f9;
}
div.liveupdate-notsupported h3,
div.liveupdate-stuck h3 {
/*	background: transparent url("fail-24.png") top left no-repeat; */
	text-align: center;
	min-height: 24px;
	padding: 2px 0 0 28px;
	font-size: x-large;
	color: red;
	text-shadow: 1px 1px 6px #333;
}

div.liveupdate-hasupdates {
	border: thin solid #999900;
	background: #2F96B4;
	padding: 1em;
	color: #333300;
	-moz-border-radius: 10px;
	-webkit-border-radius: 10px;
	-o-border-radius: 10px;
	border-radius: 10px;
	-moz-box-shadow: 5px 5px 5px #f9f9f9;
	-webkit-box-shadow: 5px 5px 5px #f9f9f9;
	box-shadow: 5px 5px 5px #f9f9f9;
}

div.liveupdate-hasupdates h3 {
/*	background: transparent url("warn-24.png") top left no-repeat; */
	text-align: center;
	min-height: 24px;
	padding: 2px 0 12px 0;
	font-size: x-large;
	color: #fff;
	text-shadow: 1px 1px 6px #333;
}

div.liveupdate-noupdates {
	border: thin solid #009900;
	background: #51A351;
	padding: 1em;
	color: #003300;
	-moz-border-radius: 10px;
	-webkit-border-radius: 10px;
	-o-border-radius: 10px;
	border-radius: 10px;
	-moz-box-shadow: 5px 5px 5px #d4d4d4;
	-webkit-box-shadow: 5px 5px 5px #d4d4d4;
	box-shadow: 5px 5px 5px #d4d4d4;
}

div.liveupdate-noupdates h3 {
/*	background: transparent url("ok-24.png") top left no-repeat; */
	text-align: center;
	min-height: 24px;
	padding: 2px 0 12px 0;
	font-size: x-large;
	color: #fff;
	text-shadow: 1px 1px 6px #333;
}

div.liveupdate-infotable {
	width: 600px;
	margin: auto auto;
	padding: 10px;
	border: thin solid #333;
	background: #fefefe;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	-o-border-radius: 5px;
	border-radius: 5px;
}
div.liveupdate-infotable .row0 { background: #fcfcfc }
div.liveupdate-infotable .row1 { background: #f0f0f0 }
div.liveupdate-row { padding: 5px; }
span.liveupdate-label { display: inline-block; vertical-align: top; width: 160px; font-weight: bold; }
span.liveupdate-data { display: inline-block; vertical-align: top; max-width: 420px; overflow: none }

p.liveupdate-buttons { text-align: center; margin: 1em; }

p.liveupdate-error-needsauth {
	margin: 1em;
	background: #ffcccc;
	border: medium solid #ff0000;
	color: #660000;
	font-size: large;
	font-weight: bold;
	padding: 1em;
	text-align: center;
	text-shadow: 1px 1px 2px white;
	-moz-border-radius: 10px;
	-webkit-border-radius: 10px;
	-o-border-radius: 10px;
	border-radius: 10px;
	-moz-box-shadow: 5px 5px 5px #d4d4d4;
	-webkit-box-shadow: 5px 5px 5px #d4d4d4;
	box-shadow: 5px 5px 5px #d4d4d4;
}

p.liveupdate-poweredby { font-size: 8pt; color: silver; margin: 1em 0 0.5em 0 }
p.liveupdate-poweredby a { color: silver; }
div.liveupdate-ftp p { margin: 1em 2em; line-height: 140%; border: thin solid #00c; padding: 0.5em; color: #006; background-color: #f0f0ff; font-size: 12pt; text-shadow: 1px 1px 3px silver }

#nagscreen {
	margin: 1em;
	background: #BD362F;
	color: #fff;
	font-size: 14px;
	font-weight: bold;
	padding: 1em;
	text-align: center;
	text-shadow: 1px 1px 2px #333;
	-moz-border-radius: 10px;
	-webkit-border-radius: 10px;
	-o-border-radius: 10px;
	border-radius: 10px;
	-moz-box-shadow: 5px 5px 5px #d4d4d4;
	-webkit-box-shadow: 5px 5px 5px #d4d4d4;
	box-shadow: 5px 5px 5px #d4d4d4;
}
.nagversioninfo {
	font-size: 1em;
	text-align: center;
	margin: 20px 15% 30px 15%;
}
.nagtext {
	font-weight: normal;
	font-size: 1.2em;
	text-align: center;
	margin: 20px 15%;
}
.nagstability {
	font-weight: normal;
	font-size: 1em;
	text-align: left;
	margin: 10px 20%
}
liveupdate/assets/fail-24.png000060400000003534152455705350012070 0ustar00�PNG


IHDR�w=�	pHYs��IDATH
mVmlS�~ι��c;q� $1��	�#F�Ơ�&Ԋ�
jGº��ǴN�U'��X;m	մ�`C�Z������ʀB)]��n�I k�hY������~�{�P*�Z�^�s�y��>�ǹ����|��N"��qh��@
)&0��\>I4��CO����a�%�J���XL�K�|FzJ���G�m-=�ֶ��
5X�Wf.��71;4tm���'.��/]�1�t����K�^b��۾�j�ݱ�����Ex�҃�&@���\�ܸ���]���_���.&���u��)o
�~pW�UuQ(��L�6L�-`�<���������p��??:[x���;$����>^�/�K�n�ή�{�k�x����v���`&��|6+X��ʺe�)T��ܼO�	tm��v���>�|�|U�>���~Y�͏}s]jU
t�+B!q�̐ǯ~�φ��e&�Y�8,L,������M-m�}�e���Ν��P��__z֤WNoܨ�Q&�NS�%zd3Q�����;ܹ�^��M}�a��
.n�J<�>��ljR�<Z�H�����A�)�
��T�o?3��Ț6�x�ǻtfZ�zcl���辵�:;U�?��0��zʭOQ>����6/�ȃ�
H"C����je�w�ܒ�k��+ғ�hj���#���dlv�q�3���؇�����I�vF�7��F13��1�ʊ%E��^63��#c�7�.��>5)Ē�6.Y{un�b�T������}6��ˈ�~\�P��3��j�Hzũ�k�#-��gο�1mˎ�~��0��#��OX-7DѨ�T��i#��%sf��ͣy����/�G��Lc��C�C�p����3ł��+�ဪ^w\G匪ֵU25>+���S���mX�S��l�ٵ�\)ϡ�+:aC�7By$3s�x�|������ӎ���-�P����mv�%�[�TQ���S����j�{�
�MljhR���|o2{�脳�
-��6�R�s"�IU�m��g��<nP$T��<Su���k���ڞ)����X��YUU>�)��քÕ�
��S��I"6b9(H��ìKYyi�YE�'�?�l�C��vӎ������l'K.dTU�Y�īw+�7
�v.�,U�H$�9#f�v��i��p�A9O4zӲ.V�����f�B���kCC�k��yD\ǭR�Ҭ��v���$|YL.*�A���)�C�D"^�t�j��X��5v�������Ft_
dr�����Ҫ�b���>�4?�L�}}g�ɱ�~�����E�����*Ր�+f�$od�N��=\M,��+�0ɻ
��[+��7��ǵ�~���R������L�}k�DY�=��������������:�Y~��k���WU��̤;�A	�4����i��xy��to�SHS�e�M�M[W�@�p�W�[bme�=+H�;����,#{���	��E�&v?^S�Bi&�qn9Pu���2B>�#=�C������)���l��ztM}cf���"=Đ�>A��>�뾔�K�k���ifi9ѠS0�C!Ţ�*�R�D�[��I�g�谬�a�V�;��[��|n�X,��?���Ϯ��[���hF����CM
���%7ř�ŕ�8�������\�8A���s��¹|����7�w� %DS��-�Ȗ{��MK�����4d�tŵ���@v��Eo���>�bp���Ҁ�͓ww D�:`5���0P�.\^��|�_.�������
���4Ʒ��$�;�G�IEND�B`�liveupdate/assets/nosupport-32.png000060400000005250152455705350013222 0ustar00�PNG


IHDR  szz�	pHYs��
ZIDATX	uWkl��3��O��x�k0�P��3�ƴȩ��I("-�h�R�Vi�?H-D�!
$���!@B	Dv��)�cH(�#,ػ�玽ρ�]�|sϹ�>��B&��']-uu���fm�֭�U�o�ȱ�TA���B�O����Q��jF�4�s���߽�ƭ�������D`φ
�ݻ�W�-�|ᩧZ�L�(V��#�� II`�!���d���~uݸ�<�qaɖÇO_�5K��ޮ>
O�X{��z��q�ڊ&]o�m����*�SI6��&�
PP0�E�',�͠x�r��ϵ��D���[�>&����5MM�M�qv�O{�dJ˄"��5�7�aH��Q�8�ۭ��f���I�8Hl;r�$ ���F��>[єɴ����+��E����>.��`L�8zG:����C7�v�S_jG���]�͏�!���…/B��E�^g4�Q,f1l6aY�x?�
�?7/IB&�
&a���%}z�~4��[{{�A��g8W�/m��ݸ1mڴ�u�xv�����hT3�h����P���F�C��:D`�|
�Θ��$�ݽK��B2@@G:J�@��'�Hݑ��[��B-�9��~<fLE�$�����u�b���%�{x��
j�ͥ�H���K�t�@'��3!t���.�����0-�2���B	��g�i�}�֡�DG;U΋�ښ��
��6XR`oË�/\�kO?M����7ߤ}׮����v�Bd�%��T�s�ȷe���1�,]J����i��H�}��:���#�M��r�/rs/�\ZZ�O&U5�m��e����Q�V�؁.C�!�� t�������L�ɹ1ݼI�o���<cJ/�2�x�-J��͞<�P��%Ғ$�uK�4��!�"���UUǥR��~�XV,
�(�|9-۶�M�ـ_i)9�̡/>���c-��O��r����$�s�L�;��L����|
��b1�*��d�XO_�zE���w�
��R/�i�%�h��E&�	y�c��1����G�Q�((�ܵ�f64����_�jkM��HW"�|�C!q��tZ��D�Ӽ�_B�L"��`�i{"�sWV�mŕ/˜DAI	٦O��z�β#:&�� � z�2]~�EJ�F� � &��F\Q�+��Q������xI���N�����Q�޽4z��Ri��ق�VΛg�w&�{���d��(z�u�\I
�5̐4��N�g���[���x�p���s�r@-B_�^M��bȜL$��_0�b�	�C�g���Aj�'�N�����a�Jc���*n�@�b���di8�q���׬��ÇMPv�J�H�s6b��V:�bE��4���:`�gQ�K	�,�Z*��#�5J��E�)6,ʁ#��]K���^KB	��#�vw�	ͻs��(��cu���D����NE�|��X�T�D��Y.�Z<q<�\����:�b���(��앁.��YXsDm?���5�e��g֢��q��8�_��`4����{N�k�}�]*_TO���E���Kp�\`Pӎ�����)��a��ŧ'.:�������Iㆁ_ЎT����X��-�g[SC�ޞ!p��0�m9
(28h�[�6��}�&Q
'�LF��y�f�0���J�A�0	��f��q;FP�3��'*E��z����H��9��H��$”��	M%T�	����c��d�o7|��7���#��zFDɹ��l�ԁ��@A��d�_�cw����Gqy{z������\��)�l�	��cK�_F
��n��le�v�F�Nԋ�tZ�<���vG<UTdɗe�O�N��A~Ͽ/Sq��b(Py�(�؄�`7�|�9�X��MכV�k�&L�0�@SA�Q���o�%fGRɁ�%��~k��E�����s�z��Ӳ�瓝�2u�V���(�n�L"���i*���*����ICZ�
�_���9��n_�)P��t��WI@�]׍��+~���g#� �i,��y<��ا7Z�AcBr�q&��M�H|�u�a��0UD'�Pb>�+���{�{���Ν��kD���NFƠ�'�)�:m$��U@	��뭞.ͯY�������J�瓂=_��2ƭ��y��yב&��n�b(��{�я�w#�g���F�nb�J�7�JJ�')J�JJ�PHO��u�$d8��]�d�Æ�$l��L�&�OA	����H���k`��,���(e|��(+��H&����Z'��:&�IBb�ȹ4�p��;�����a��剿�h��Ʈ@�p��W��ĉ�}�h�_Ǎ�N��qðXlF�`<AG.�3l|�@a=n����^�Q�w}}#����/#)x��p~J&O��[�/�HEo�
�M�,x��>(N�,[Ww�P�(4���?p����
�g�Y��_kڗ���
v�����*b x	H�~mjŐ���M*و������0	nѳ�V���ۋk�A���f���@#��R^�;gmҴNX�IUU���se3�W�{��?	�3�wb9IEND�B`�liveupdate/assets/warn-24.png000060400000002234152455705350012120 0ustar00�PNG


IHDR�w=�	pHYs��NIDATH
�U�kU���v�[kX����`P�M���.	�>��Pė�}RD((�m!-�
FPb� 6`c-5��M��nw�M�i�?f���f���x؝;s����s�(c��ԇ*ܾ6��l՚��,�ޓ(� v3pE�>�ː
�BF.����>T�nbש��4u��X4���a8�M`��߃R�hL�<���CP��
��
]$��>U�`���~`�卌�Ϥi�R�H�M�NF�e(�o��.9\��Ь���
X
1�=	��Vp%z��;�g��TŁ��PtCm��Q[Ϋ*���YǦg�Ug��vKƇ�,��=��s0�_���Y��6��Us��Fe��1�rKP�2K ;�Q[ɿ2�n�M3�A
�]�%X�g���hp��g���/!�j�	��A2=K�_ZU��(��jW�74��)6U4�#d��p@)'�@4lv�U�)���i+]Ś�m�4�L�@��Q�s��s���j6n�v�Z+�_�ձ�i�%����*��d`�b8�֏7g����@Y6�U���NL�5S�;*�f�#;�u[���;�-3�"96�o9�ޓ9T�a�t�����t��Q�#��I6Bﱁ�d�F�����nvy.�B���n��ͣ�f�$Z��
q.�]f YX�A8A���&�2��}S@~#�q|�E�����R�{�9����|�;z��ܸ���m 5,�U0�������Ġo�
�~�=�t�0���"��Gκs�ѿr�*!�h���"�x9��p���@�~�1��>�)�6��s�W���W?E�_t���5a�K`�K�)8އB�m:C���b���|����M�z���9����cv�>3�x��O��=G(z�~b'#�� -v���H�5�k.�jPӱ�5�Af�+o����x��	a	��>�ۋ�GY��{ǰ�\km‹i��)e?u�Ld�7}�W�<�ij���q��cX�痢K���i(tq<,��d�,J�ޅ��E�|�
����0R�H�����l
��]|��ĵf�����A͚���q������
�Y�ڛ�!�IEND�B`�liveupdate/assets/liveupdate-48.png000060400000011536152455705350013326 0ustar00�PNG


IHDR00W��	pHYs��IDATh�Z	p\ř���1����}K6���Ɩ���m"A�.��%���d�@��@�%�Y6��V�Eq�2+�����!˧�oɺl3:�~G����1�1�ð=��͌��}�W����̨B���I,k�3�ݧ��敃�Np.T�Z$�\L�:('�1����L�����TW\�o?����T��xf�Z�����8_�W}�A����
�����/�\����zVۉc�Ku���J�����d!Q.�*��p<�
z�H�&��o��g�+�|�~�����"@�		��zn��'���V�{|�q�iB4���25�"���$ ���n�L�u`�T�=A)<A�=�s/����$�H����s?o�M�%r[kŝN��O��HKh02�F�P�RER�,� IHTJ�EA<\�0M4]��T:�d��Q3O���-M�-��"�i��d��I�(4�TiC�!�~���T�s	��?[i@]�j�RI�s.�s-G͏E��R��
Ъ��M���($4|���- �D�	��!�� �Db�D",���P�\Z0>�?��ڦ{��<5�z�zt�QM����ʙ�/=W�������'��l���t������ZP�,��	�0�v�3��c~�N�E\�R&gx_�'If�bE��pQ#
\�T�m8�l�)Pqݍ�c7�B��wy
��XQ�-��W9%�??����������,��"J��>��P�;$7u���f�8GiJDJ^�v6�1������"jwةAH�IHĒ�Y�NIr���=���bf�ka�v-�M��g��n&�������%�/]4w4�����$Z����L�q�s�l*i�d�O�A��rnL����|/S�G���L��Q�����dy����dr�d:h��h��^�{ẄK�x�X�>Pr�kUj��:�.9ʼO��t��x��K���T{�l�H� ���|�-+���6�h�~&9�ڲ�É:czN�++��o#<
y�؃��}^�1�4np��'u�C� �HB��kJ�r?h��T��������J�H�r�[�ܲ�T��6�"g�
��N��Q��a���	��-�j^���)�?�
�~-ȉdJ���
�
<#�@��[��|�
�VU��I�I�/�T�s���G{���6Dn�[2`�����ף��Cv����[/R9ԗף�}b������?\�=%x6�9nB����p���S�E<:
�B})���:��>�O��,���]\&/�~a�\°~5k�P��U�,��YC�-�ίzW�Od�w{)���F��*�/.��Hǿw<���֋�fT����Ⲣ����m�a����3ch|
zg�r������\����!~̀�y��$7%F�lw.ާ���_Xz��� ;R��HV�_	`��e�Q�
��>�pW��LnZ\S�m�c��=ONv3��KeY�����g�op��0	)��/)�1�K�q�V��նΩN���I��n�� R!p&�`�3��S�J�H]b�c��%�P�/^��"ֈ��ӑ���� �����!/7V�Z����g �F����nq&��J2w�;�H$�d�:g>����1i��,07��w}[^�����a��'�lM�%ߪj�����˾?7t�+f�d�dTI�2E^(T�B��ͳ����s�&)!2����G~��(ږ%}#�\��g#��B�Qp�n3�8Gn�w��_?�0��I|M𣹞?��(g,x��t�o
-�1���w��P!�Wk&�yY����)�G�gosP�����Hb��!�	X�Y��:
�@���)>��9t�詿������Xꡍ�/=��im�&�c��;�%��!���7����mo��T�Dt_!XFX��XZd���M���A@Bfp\��Ѹ�����B�����/��'�n�|+T��阛c���1`��+�{��WO���$�]Y��TB��<����M��e�H�<���=���Z�G\���J
!aSe+�$aԿ���0�x����gY뭦�]gS�
=E�e`����=�E��j	0��+y�����U�|�w� �i.L��+�6�C�BH
T�f(%�a��3x�-T�Z�?��`�fGعj]�?̟z��˺ǃ��'s�CBiЀ76�M,7�:T��`���Vbn�
�մ�k�L
B��*R�й���$�m����Pӌ��3�f������f�IS�O�IF��o�ۼ)�
3
��~����­�,��!�lkCCqe���L]x��¢8x�m��Y@l��C^u�!qh���Ԉɿ�q������[Fhu}݀��|�O�Β]dgC�>[h|�Lzb���[��پ���y�{���������~Е�,$�֪XS�*X/|�
60^^wq:�YD��:���,<���Xlњ���f�_�,�y�����Y��~�IqAnCJQ�,�k.D���|/���-�����_���u�e��s3�U%k�~xd{8K������C���!~G=yx�0bK=���zLK���Z����/%ˎ�]��.�5t�u�ɦ��*Há�!�_�Į
wTx|�d��
�S���l�۲h�K���N���C�M&6��p�g7\K�+�x��Uw޿�G��葖	�[�Cg_FUP%�bd����� ��C�&��9>�c��H�)���SG�t[�i�*U��G�<��3���o�����Ykz{�C�{ޕUiSr��@M8Cfxe��7I��/���� 	9���ۄ��Ġ("+&O������͡C���[P�q�#҄�$	#0�A����ն��m
���x����d�]�sf�x����s��M��D?X�f�A(�U��L��c]���&��I����Z�^�O��K�R�++Ww�׆�wmw���׶�o�izS�ك���J���CjG*
o���d�j[��������ƺ*�������#�u�Gc���Q�<>��n�D�҃ro��v�w�����s�1ɉ���{����l�,|u��b�-�+2����w~:5UB"ረg�D*}}�����������
dz�|��0��
�p��¼rHhq�c��0�S����Ԡ�z�"[۱g�	Хٖ�_��UU��bZ����ʹZ��q;�I�ʘ�Co$Si������/Y,GN\UU��ޒ�a�k���ͥ��av�<H�u�(�b]�azM�j�fcq�Z�2=�.0�
,�~))��{fq�qO#*;v���~�
{�A�w���v6�dQ[�
���	F)�8�l�	�X
fd_	#�����p��cpr�Aq�~}�f���ٺE�/��&���I�ǥ\?pc�p�Q#q{���i�dCE���K�	|�����ܚuK/��$�d�A8=��`�iڍ�Q�	 �x�X���^^پ`����t� ,�|Q"�ZQ����%3&BA�RmE���c���%K9\H㠌].�^Dl��al[�L1�\��Y-eQ0��HX�����X(�څ�1�`��]t�I���P��0�vQ����̵�>�Л]�$���⏂H��ʃW����:>�ᇻ��D��t8!n� ����$v���Ȁ$�f�?�<k�"�5���L�׳\�����v�Il��`�z��1te�pUA	8�v@1�ك�`QRF���>��+h��K��+���S��<i�?M\SJ�x�V�_�Hv��<�]��3�oɏ�E��꿟�[m�̤�+0R�ͩ�M����>��Y8!G*�}M8zY�Ƅ)!8�r>er���l*�QC<;�&�gv�X����%�IH7Cf���j�e^�[�s�M�M�!8�r���u;��QI����B׹8�,��q����� �/��C��-�7�ޜ���m0w񜞜�ܜ�N���&��B�j�}U��3�o���wJ�ά�l<��n�ΰ<���p�U���W��ch�eG����y�c� XW�.'^N)
=��W)��O[v���kv3����B?������V�st��-���6v�~�%�O9�lҮӍ�['�4�� ������G|<dϡc���D�ά��X�L
����X'�&�(^>��ص�S��:v8%#���e���}�Nn��e��V@|Ɍe�rc)u��z���VP�H�-/Z�K1�'��i�+�R�׍+��'^����z���\�%���]8G�bCJO
ln���MCeA�i<�Txf�6��;e=�����]���q�mc�)b�pŭe��ܤ���ԭ�3�sdܚ�7o����:��3���XG�n���K�
I`G	�.{V�#�A�
���!�ޘ�ٰ�vyd�)At z�q��N�Q��
!���&^�?E@�("sm�UL���nv/߽辉��OR'�������.L��N�*�P��/���I�D!lbQV4]�N�(U��:�D���ך�w����HG|��qY����G��d3	���݇���݊C-��D�A��	�:'
v�D�"a@��Ə"�B�Ɨ����M!6ԁ�����?Ը���g��尌��7	}�P_.����.q����,�SnwJ�Pm&�n�&�4~P���@���7��f[�z[�'�,QsXm��.�%�?*pY�;��׍���?�5q9
u���ߌ�C�wŁ�I�zn_�,��{���C�����9ُ�o��pL�5vB[�&؉avx��bB�}�@��O��s8�<�x�.IEND�B`�liveupdate/assets/current-32.png000060400000003416152455705350012635 0ustar00�PNG


IHDR  szz�	pHYs���IDATX	ŖPT���}����쏷��n�!AM�a�C�$m"t��&hLm"�2��)���d���4�i���)�G�8qL�?�Ѡ�
��rY�Dx�xwo�}�dA4��zw��w�;s?�s��]D)�{ٸ{	g�.�V�0�t�-�ݺ������������
������u�u+�XwE܀���op��O�=�_����f��<P
��h�^o�+�*�g7��`sH��9�Dk(ay�'a,|�\�T���*����{��*ti��_����P�jI�`v~χ7�S�p�*(�~//bZ�����R~dJ�G�/���3ჴy�%Д���!>yU�2�̹��+ޠ��m�f85���?a*�:�A�rv�����_���l�^M�[��Y��M����3�RF^�����pj�tE�Z�Xo��?w<�Z�s��&Sq��г�Ϩ��[d�[�Y��p~��,c�3۔�x9�s���Vp�;��ȁ�,�9�����]9���ӯ�o���-{�h��e��Rli���;
���4�EF�"�Z��h�O2x�g�i�2R��$�k���@��@/������γ�~A���2�4��P-ږb��5��cCz��d�����\4�+"j���}Sc�[�7;s��/4��8s�.���f��MO�'~��Q�t;m�_E�#Z��PllX�M��u�̪D���s�(�?
��[<���^�N�����n�JInc�}40\�)c�s��:\�D8;}��ݠ�tgՓ�0v�Aq�c��o=�¨���{������J-FrX&��GDA�^Ψ"X|w��ڪXB�V�A�9�$ÿJ�+s��W+�a��y�|�#�`5Z���O��p�
�w3���5�kLzE|���,G���P�-KP̀a�0
�U�:)�
?�0ы�z��?\����lC�2I'xQ���~��`M�ȕc�|ח�n}1l��\�	#D2�S|��t.�e<8�	I3.�� UDE89R��\��w�靅��t���0�|P�#�`�h%�Z&qGS���S���E�Ů9��6��|�[k+2,Y����0q�Jqa�Phf�vr�J�� B	GB��`H	`�Ld�����i��1�r�l�p&$Z�r"�R�Po��]�$M'L�e8?��Q0b#�T֪�E'ѱ�%��s0L�"��b1+�#�7�9�N.���U42��b=��R�%�lB���Mzþ�-u�	�x������
�ȋ��H�"���L��a����^Q�Ty4��;=�
�F`��4����#��v}Y�d��Y��e�4H2@T���a���p��t������.*ȭ�,���LĬm�&뙈�sG*`XW��ɞO�MMaI��[�*���9�	V��?�Ow�qor�Xg>p|~�d�ݮ��YƲ����~�V��=��SZ�"��a����T��(��
����.���o�|���p��VB��i��G��D����r��/l�r��'�ď�A�}�]�θ]���W`��5(���N��j��|~S�s���U=;�R^�1�<}��}���źy�߅�ճ�Q�J����|αw��oz_�����s�~�?ï��EnA�5�;O�;�:}�:�FGm錄m�O�@p��Íc���w2�i����`Αl1<m�,�p�6�<�
]@w׼��IEND�B`�liveupdate/assets/update-32.png000060400000003120152455705350012425 0ustar00�PNG


IHDR  szz�	pHYs��IDATX	�W[lU�Μ��K�Q�o�R"�b0��& �/ĤM|��'�>h�t��4���BbL4��'i����(!1�z#U
�Жnﻳ3��?��������̜�}����9����Z������Xu�9
Ӿ	%�L�Č�.���6';��DV6l@�p0
@~Hr��4�����Vo�PJ�Rml@2l��M�8�A	��Ri����c �TTA�T�P����B:�`#Ќ��~؋�	�%�"�\���F�<�-!c��f�Ad��Ԉ���p eY�(�����S�$���-�@�
a�+�$�bZ��5^�TgyM5�5)���NK���
l"	Y�-� R�f�R�00k8����D@��!2	k	����I� !]��Q�9P�(�EU~k"۰nk��������I���b#?��j?uc����p�<0=�l�m)�UC��xmI�h�%��N�~�	��#��U��P��n�:)=RO�H�<��Ⱦ;iu+`Aj&$�܆�E޳�B��ŝ �5R�2�Տo빼:�tv�
R��#��v9FD��`���2��@qGTm�@Ŷr��}Q
�G�<Պ�-}�Z��|�hM���"�<�'�(eR(�w	LE[���n!��^��+�1��U��u�=Mk��T��Gv)}��r�QBX⏂���X�kd��S�]�T�-�&��|`�Q���.�������`�S[v��7ٛwΘ�
�W��ptE��׌��1
	���%S�Jq޼��]�:V��҉r;K�	�˰�������P����s�^|����ܝHQn��e��"���f�i��q�Œ�t�K�x`+OE��Yքp� �D?F�	�VS�����E�`$a>6f�n?�s�=��[:�d�H0�H���ˎOt� g�8w���"�dO(�@Iج|v�S�K��(������1$��Z����PZ��$�>p�6�i�H��!	z1��F/C��6£/
<� �I���y㐴����п�XP���Lҁ�����(�$E_��~�mz]gU�$�I���yC�V����4к>�QA�T��!���l>��"�E�w/���[H�b�H�+�h{u��wX�z��2$s��B��U�qVPP���a]�x���9��B�I��/�/�3���N�4|[�\5r#�ZSꑱH�y�����2��J�c�
��$^�o;���'�BǞ�����M�s�Dg�Gϋ�y�1�>�.�D�o.X�$a��'f�R^�'��C�T�$1�e*M2LJ��oI�?��p����x��=�1�A<(�X�nc�_�a�|cN�w�[�_������p��F�@�DŽ��p�_U�$-V��J�|P^�$�a����	��i���=��C� �R�,,�[U�xY�D�J|��3xƜp�H�yzΘ���5+��@��.��o/����$>L6�XX�籽�	؅��c[±m'�:+0�j���D�DZ��wF��^-ʷ��k
xS�m��4�‚IEND�B`�liveupdate/assets/ok-24.png000060400000002367152455705350011571 0ustar00�PNG


IHDR�w=�	pHYs���IDATH
��mLSW���mo�@h�ka����P4$(ʋ���ɾ��܊K�d#�`�lֲ����1gt&��e��0�`A	hGA���!Ph������K[/l��q�{�9���?��B�X�qü@z=�06†���_��#`��q��^8Nh��%B�G�9�����OGTd\a��~]�'@Myk��G�>D���sx'���y��;��lax����R��d��ٹŹ*+�`6<�\(�(WX�,��i(��*�V�?�5%��-�q�˲�ՉNٯ�N>NoN(T��01%n\�!�P��D8�D~֖$��i�0�p�X�I_�\�l8ה6��3ql
A����w@%<�ϠQ��X�@�i����Zve�fBR�D��,�g��R枦;;5���%�֦��݁�h�Wٗ��D���ӂ"��sP��b����z��o����D)mJd�^�e�NB�5�nPr�Z|ᴴ#�D����Lu��{�M/��d1�a#L�;�e@���_�ڲ�m����Z*��Q�N`h
	������ޘu-ա~�4��d��4��4�6Vm�{(�6����*P�C�<�5�ۏ^Ene;4����i(c�$7��7/�C��p�����.�;4��Iz)��l�?��xd>�e��d�lx&ɒ���qb�Upq�KMUfuSnZ�J�d�?F��N���B�vv�8�0p}��b���m�p�y��{f��:�C9�R�4��$Z�i�:��ް��P(��?n�.��8�u�t������t�!�|p9r'����N�{;���&����&��"JJˀ��al�dy³hZ2��F���H9~�w,�g,��"p�.�B�&U=��14+ӥ	�D.�ʧdZ�$a4��Q~��Jnv�K�v�;(E�nh���i"�܄��b3:52>Q?~e����j�875���@>	�:���[�n�&o�Zւ�X��Q��D��n�05��X,�*h>̅)���|n����a�L�|k��7CőG��_��}��?5��ozC�a=�����k�����[� �8Ru…+X�����Yj-�P�y�AU��{Ρ�B�F�?��q�X<I0>"���鍊����|2���b��/iG�2ar�3�1�����b��}�� ���GO�Z����]4��q�cIEND�B`�router.php000060400000010437152455753310006610 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-07-08
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();


function iCagendaBuildRoute( &$query )
{
	$segments = array();

	// link event
	if (isset($query['layout']) && $query['layout'] == 'event')
	{
		// Make sure we have the id and the alias
		if (strpos($query['id'], ':') === false)
		{
			$db = JFactory::getDbo();
			$aquery = $db->setQuery($db->getQuery(true)
				->select('alias')
				->from('#__icagenda_events')
				->where('id=' . (int) $query['id'])
			);
			$alias = $db->loadResult();

			$query['id'] = $query['id'] . ':' . $alias;
		}

		$segments[] = $query['id'];

		unset($query['id']);
		unset($query['view']);
		unset($query['layout']);
	}

	// link submit
	if (isset($query['layout']) && $query['layout'] == 'send')
	{
		$segments[] = $query['id'];
		unset($query['id']);

		$segments[] = 'sending';
		unset($query['view']);
		unset($query['layout']);
	}

	// link registration
	if (isset($query['layout']) && $query['layout'] == 'registration')
	{
		// Make sure we have the id and the alias
		if (strpos($query['id'], ':') === false)
		{
			$db = JFactory::getDbo();
			$aquery = $db->setQuery($db->getQuery(true)
				->select('alias')
				->from('#__icagenda_events')
				->where('id='.(int)$query['id'])
			);
			$alias = $db->loadResult();

			$query['id'] = $query['id'].':'.$alias;
		}

		$segments[] = $query['id'];
		unset($query['id']);

		$segments[] = 'registration';
		unset($query['view']);
		unset($query['layout']);
	}

	// link payment
	if (isset($query['layout']) && $query['layout'] == 'actions')
	{
		// Make sure we have the id and the alias
		if (strpos($query['id'], ':') === false)
		{
			$db = JFactory::getDbo();
			$aquery = $db->setQuery($db->getQuery(true)
				->select('alias')
				->from('#__icagenda_events')
				->where('id='.(int)$query['id'])
			);
			$alias = $db->loadResult();

			$query['id'] = $query['id'].':'.$alias;
		}

		$segments[] = $query['id'];
		unset($query['id']);

		$segments[] = 'actions';
		unset($query['view']);
		unset($query['layout']);
	}

	// link search
	if (isset($query['view']) && $query['view'] == 'search')
	{
		$segments[] = 'search';
	}

	// link submit
	if (isset($query['view']) && $query['view'] == 'submit')
	{
		$segments[] = 'submission';
		unset($query['view']);
		unset($query['layout']);
	}

	// link list (since 3.4.0)
	if (isset($query['view']) && $query['view'] == 'list')
	{
		$segments[] = 'list';
		unset($query['view']);
		unset($query['layout']);
	}

	return $segments;
}

function iCagendaParseRoute( $segments )
{
	$app = JFactory::getApplication();
	$menu = $app->getMenu();
	$item = $menu->getActive();
	$vars = array();

	// Count route segments
	$count = count($segments);

	if (in_array('sending', $segments))
	{
		$vars['option']	= 'com_icagenda';
		$vars['view']	= 'submit';
		$vars['layout']	= 'send';
		$vars['id'] 	= $segments[0];
	}
	elseif (in_array('actions', $segments))
	{
		$vars['option']	= 'com_icagenda';
		$vars['view']	= 'list';
		$vars['layout']	= 'actions';
		$vars['id'] 	= $segments[0];
	}
	elseif (in_array('registration', $segments))
	{
		$vars['option']	= 'com_icagenda';
		$vars['view']	= 'list';
		$vars['layout']	= 'registration';
		$vars['id'] 	= $segments[0];
	}
	elseif (in_array('search', $segments))
	{
		$vars['option']	= 'com_icagenda';
		$vars['view']	= 'list';
		$vars['layout']	= 'search';
	}
	elseif (in_array('submission', $segments))
	{
		$vars['option']	= 'com_icagenda';
		$vars['view']	= 'submit';
	}
	elseif (in_array('list', $segments))
	{
		$vars['option']	= 'com_icagenda';
		$vars['view']	= 'list';
	}
	else
	{
		$vars['option']	= 'com_icagenda';
		$vars['view']	= 'list';
		$vars['layout']	= 'event';
		$vars['id'] 	= $segments[0];
	}

	return $vars;
}
views/submit/view.html.php000060400000012350152455753310011641 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.12 2015-09-25
 * @since       3.2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.helper');

/**
 * View class Site - Add an Event - iCagenda
 */
class iCagendaViewSubmit extends JViewLegacy
{
	// TODO: check and remove
	protected $return_page;

	protected $state;
	protected $item;
	protected $form;

	protected $params;

	/**
	 * Display the view
	 */
	public function display($tpl = null)
	{
		// Initialiase variables.
		$this->state	= $this->get('State');
		$this->item		= $this->get('Item');
		$this->form		= $this->get('Form');

		if (JRequest::get( 'POST' )) $this->get('data');

		// loading params
		$app = JFactory::getApplication();
		$params = $app->getParams();

		$this->template = $params->get('template');
		$this->title = $params->get('title');
		$this->format = $params->get('format');
		$this->copy = $params->get('copy');
		$this->submit = "media/com_icagenda/js/jsevt.js";
		$this->submit_imageDisplay			= $params->get('submit_imageDisplay', 1);
		$this->submit_periodDisplay			= $params->get('submit_periodDisplay', 1);
		$this->submit_weekdaysDisplay		= $params->get('submit_weekdaysDisplay', 1);
		$this->submit_datesDisplay			= $params->get('submit_datesDisplay', 1);
		$this->submit_displaytimeDisplay	= $params->get('submit_displaytimeDisplay', 0);
		$this->submit_shortdescDisplay		= $params->get('submit_shortdescDisplay', 1);
		$this->submit_descDisplay			= $params->get('submit_descDisplay', 1);
		$this->submit_metadescDisplay		= $params->get('submit_metadescDisplay', 0);
		$this->submit_venueDisplay			= $params->get('submit_venueDisplay', 1);
		$this->submit_emailDisplay			= $params->get('submit_emailDisplay', 1);
		$this->submit_phoneDisplay			= $params->get('submit_phoneDisplay', 1);
		$this->submit_websiteDisplay		= $params->get('submit_websiteDisplay', 1);
		$this->submit_customfieldsDisplay	= $params->get('submit_customfieldsDisplay', 1);
		$this->submit_fileDisplay			= $params->get('submit_fileDisplay', 1);
		$this->submit_gmapDisplay			= $params->get('submit_gmapDisplay', 1);
		$this->submit_regoptionsDisplay		= $params->get('submit_regoptionsDisplay', 1);
		$this->statutReg					= $params->get('statutReg', 0);
		$this->ShortDescLimit				= $params->get('ShortDescLimit', '160');
		$this->submit_imageMaxSize			= $params->get('submit_imageMaxSize', '800');
		$this->submit_captcha				= $params->get('submit_captcha', 0);
		$this->submit_form_validation		= $params->get('submit_form_validation', '');

		$this->pageclass_sfx	= htmlspecialchars($params->get('pageclass_sfx'));

		$this->params = $this->state->get('params');
		$this->iCparams = $this->params;

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode('<br />', $errors));
			return false;
		}
		// ASSIGN (deprecated)
//		$this->assignRef('params', $iCparams);

		$this->_prepareDocument();

		icagendaInfo::commentVersion();

		parent::display($tpl);

		icagendaEvents::isListOfEvents();
		icagendaForm::loadDateTimePickerJSLanguage();

		$jlayout		= JRequest::getCmd('layout', '');
		$layouts_array	= array('event', 'registration');
		$layout			= in_array($jlayout, $layouts_array) ? $jlayout : '';

		if ( ! $layout || $layout == 'submit')
		{
			JHtml::stylesheet( 'com_icagenda/icagenda.css', false, true );
			JHtml::stylesheet( 'com_icagenda/jquery-ui-1.8.17.custom.css', false, true );
		}
	}


	protected function _prepareDocument()
	{
		$app		= JFactory::getApplication();
		$menus		= $app->getMenu();
		$pathway 	= $app->getPathway();
		$title 		= null;

		$menu = $menus->getActive();

		if ($menu)
		{
			$this->params->def('page_heading', $this->params->get('page_title', $menu->title));
		}
		else
		{
			$this->params->def('page_heading', JText::_('JGLOBAL_ARTICLES'));
		}

		$title = $this->params->get('page_title', '');

		if (empty($title))
		{
			$title = $app->getCfg('sitename');
		}
		elseif ($app->getCfg('sitename_pagetitles', 0) == 1)
		{
			$title = JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $title);
		}
		elseif ($app->getCfg('sitename_pagetitles', 0) == 2)
		{
			$title = JText::sprintf('JPAGETITLE', $title, $app->getCfg('sitename'));
		}

		$this->document->setTitle($title);

		if ($this->params->get('menu-meta_description', ''))
		{
			$this->document->setDescription($this->params->get('menu-meta_description', ''));
		}

		if ($this->params->get('menu-meta_keywords', ''))
		{
			$this->document->setMetadata('keywords', $this->params->get('menu-meta_keywords', ''));
		}

		if ($app->getCfg('MetaTitle') == '1'
			&& $this->params->get('menupage_title', ''))
		{
			$this->document->setMetaData('title', $this->params->get('page_title', ''));
		}
	}
}
views/submit/index.html000060400000000054152455753310011206 0ustar00<html><body bgcolor="#FFFFFF"></body></html>views/submit/tmpl/default.php000060400000136273152455753310012337 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.12 2015-10-05
 * @since       3.2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidation');

// JFactory
$app		= JFactory::getApplication();
$document	= JFactory::getDocument();
$lang		= JFactory::getLanguage();
$user		= JFactory::getUser();

// Global Options
//$iCparams = JComponentHelper::getParams('com_icagenda');
$iCparams = $app->getParams();

// Get User Info (Access Levels, id, email)
$userLevels	= $user->getAuthorisedViewLevels();
$u_id		= $user->get('id');
$u_mail		= $user->get('email');

// Get Access Levels to the form
$accessDefault = array('2');
$submitAccess = $iCparams->get('submitAccess', $accessDefault);

// Get Content of the page for not logged-in users
$NotLoginDefault = JText::_( 'COM_ICAGENDA_EVENT_SUBMISSION_ACCESS' ).'<br />';
$submitNotLogin = $iCparams->get('submitNotLogin', '');

if ($submitNotLogin == 2)
{
	$submitNotLogin_Content = $iCparams->get('submitNotLogin_Content', $NotLoginDefault);
}
else
{
	$submitNotLogin_Content = $NotLoginDefault;
}

// Get Content of the page for not authorised logged-in users
$NoRightsDefault = JText::_( 'COM_ICAGENDA_EVENT_SUBMISSION_NO_RIGHTS' ).'<br />';
$submitNoRights = $iCparams->get('submitNoRights', '');
if ($submitNoRights == 2)
{
	$submitNoRights_Content = $iCparams->get('submitNoRights_Content', $NoRightsDefault);
}
else
{
	$submitNoRights_Content = $NoRightsDefault;
}

// Control: if access level, set true to display form
$AccessForm = false;

foreach ($submitAccess AS $ac)
{
	if ( in_array($ac, $userLevels ))
	{
		$AccessForm = true;
	}
}

// Set Return Page
$uri		= JFactory::getURI();
$return		= base64_encode($uri);
$rlink		= JRoute::_("index.php?option=com_users&view=login&return=$return", false);

// Loading Submission Page
if ( !$u_id && !in_array('1', $submitAccess ))
{
	// if not login, and submission form not "public"
	$app->enqueueMessage($submitNotLogin_Content, 'info');
	$app->redirect($rlink);

}
elseif (!$AccessForm)
{
	// if No Access Permissions
	$app->enqueueMessage($submitNoRights_Content, 'info');
	$app->redirect($rlink);

}
else
{
	// Display Form

	// Set name or username for logged-in user
	$nameJoomlaUser = $iCparams->get('nameJoomlaUser', 1);
	if ($nameJoomlaUser == 1)
	{
		$u_name=$user->get('name');
	}
	else
	{
		$u_name=$user->get('username');
	}

	// Autofill name and email if registered user log in
	$autofilluser = $iCparams->get('autofilluser', 1);
	if ($autofilluser != 1)
	{
		$u_name='';
		$u_mail='';
	}

	$theme = $this->template;
//	$infoimg = JURI::root().'components/com_icagenda/themes/packs/default/images/info.png';

	JText::script('COM_ICAGENDA_TERMS_OF_SERVICE_NOT_CHECKED_SUBMIT_EVENT');
	JText::script('COM_ICAGENDA_FORM_NO_DATES_ALERT');

	$period_display			= $this->submit_periodDisplay;
	$weekdays_display		= $this->submit_weekdaysDisplay;
	$dates_display			= $this->submit_datesDisplay;
	$displaytime_display	= $this->submit_displaytimeDisplay;
	$displaytime_default	= $iCparams->get('displaytime', '1');

	$tos = $iCparams->get('tos', 1);

	// Set Tooltips
	$icTip_name			= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_SUBMIT_FORM_USER_NAME' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_SUBMIT_FORM_USER_NAME_DESC' ) . '');
	$icTip_Uemail		= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_SUBMIT_FORM_USER_EMAIL' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_SUBMIT_FORM_USER_EMAIL_DESC' ) . '');
	$icTip_title		= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_TITLE' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_FORM_DESC_EVENT_TITLE' ) . '');
	$icTip_category		= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_CATID' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_FORM_DESC_EVENT_CATID' ) . '');
	$icTip_image		= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_IMAGE' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_FORM_DESC_EVENT_IMAGE' ) . '');
	$icTip_startD		= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_FORM_LBL_EVENTPERIOD_START' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_FORM_DESC_EVENTPERIOD_START' ) . '');
	$icTip_endD			= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_FORM_LBL_EVENTPERIOD_END' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_FORM_DESC_EVENTPERIOD_END' ) . '');
	$icTip_weekDays		= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_FORM_WEEK_DAYS_INFO_TITLE' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_FORM_WEEK_DAYS_INFO_DESC' ) . '');
	$icTip_displayTime	= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_DISPLAY_TIME_LABEL' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_DISPLAY_TIME_DESC' ) . '');
	$icTip_venue		= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_VENUE' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_FORM_DESC_EVENT_VENUE' ) . '');
	$icTip_email		= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_EMAIL' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_FORM_DESC_EVENT_EMAIL' ) . '');
	$icTip_phone		= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_PHONE' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_FORM_DESC_EVENT_PHONE' ) . '');
	$icTip_website		= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_WEBSITE' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_FORM_DESC_EVENT_WEBSITE' ) . '');
	$icTip_file			= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_FILE' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_FORM_DESC_EVENT_FILE' ) . '');
	$icTip_reg			= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_REGISTRATION_LABEL' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_REGISTRATION_DESC' ) . '');
	$icTip_tickets		= htmlspecialchars('<strong>' . JText::_( 'COM_ICAGENDA_MAX_REGISTRATIONS_LABEL' ) . '</strong><br />' . JText::_( 'COM_ICAGENDA_MAX_REGISTRATIONS_DESC' ) . '');

	$session			= JFactory::getSession();
	$address_session	= $session->get('ic_submit_address', '');
	$ic_submit_tos		= $session->get('ic_submit_tos', '');
	$post				= $session->get('ic_submit', '');

	$post_username			= $post ? $post->username : '';
	$post_created_by_email	= $post ? $post->created_by_email : '';
	$post_title				= $post ? $post->title : '';
	$post_image				= $post ? $post->image : '';
	$post_startdate			= $post ? $post->startdate : '0000-00-00 00:00:00';
	$post_enddate			= $post ? $post->enddate : '0000-00-00 00:00:00';
	$post_weekdays			= $post ? explode(',', $post->weekdays) : array();
	$post_displaytime		= $post ? $post->displaytime : '1';
	$post_desc				= $post ? $post->desc : '';
	$post_venue				= $post ? $post->place : '';
	$post_email				= $post ? $post->email : '';
	$post_phone				= $post ? $post->phone : '';
	$post_website			= $post ? $post->website : '';
	$post_file				= $post ? $post->file : '';
	$post_address			= $post ? $post->address : '';
	$post_lat				= $post ? $post->lat : '0';
	$post_lng				= $post ? $post->lng : '0';
	$post_params			= $post ? $post->params : '';

	if ($post_params)
	{
//		foreach ($post_image as $key => $value)
//		{
//			$post_img[$key] = $value;
//		}

		$post_params = json_decode( $post_params, true );

		foreach ($post_params as $key => $value)
		{
			$post_param[$key] = $value;
		}
	}

	$params = $this->form->getFieldsets('params');


	// Set default values for Google Maps
	// ZOOM
	$zoom = '16';
	// HYBRID, ROADMAP, SATELLITE, TERRAIN
	$mapTypeId = 'ROADMAP';

	$coords = $post_lat . ', ' . $post_lng;
	$lat = '0';
	$lng = '0';
	$zoom = $post ? '16' : '1';

	// Form Validation
	$novalidate			= ($this->submit_form_validation == 1) ? ' novalidate' : '';
	$form_validate		= ($this->submit_form_validation == 1) ? '' : ' form-validate';
	$iCheckForm			= ($this->submit_form_validation == 1) ? '' : ' onsubmit="return iCheckForm();"';
	?>

	<?php // ERROR ALERT ?>
	<div id="form_errors" class="alert alert-danger" style="display:none">
		<strong><?php echo JText::_('JGLOBAL_VALIDATION_FORM_FAILED'); ?></strong>
		<div id="message_error">
		</div>
	</div>

	<div id="icagenda" class="ic-submit-view<?php echo $this->pageclass_sfx; ?>">
		<?php if ($this->params->get('show_page_heading', 1)) : ?>
		<h1 class="componentheading">
			<?php echo $this->escape($this->params->get('page_heading')); ?>
		</h1>
		<?php endif; ?>

		<form id="submitevent" action="<?php echo JRoute::_('index.php?option=com_icagenda&view=submit'); ?>" method="post" class="icagenda_form<?php echo $form_validate; ?>" enctype="multipart/form-data"<?php echo $iCheckForm . $novalidate; ?>>
			<div>
			<legend><?php echo JText::_('COM_ICAGENDA_LEGEND_USERINFOS'); ?></legend>
			<div class="fieldset">
				<div class="ic-control-group ic-clearfix">
					<div class="ic-control-label">
						<label id="submit_username-lbl" for="submit_username"><?php echo JText::_( 'COM_ICAGENDA_SUBMIT_FORM_USER_NAME' ); ?> *</label>
					</div>
					<div class="ic-controls">
						<?php
						if ($u_name)
						{
							echo '<input type="text" id="submit_username" name="username" value="'.$this->escape($u_name).'" size="40" class="input-large required" aria-required="true" readonly="true" />';
						}
						else
						{
							echo '<input type="text" id="submit_username" name="username" value="' . $post_username . '" size="40" class="input-large required" aria-required="true" required="true" />';
						}
						?>
						<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_name . '"></span>'; ?>
					</div>
				</div>
				<div class="ic-control-group ic-clearfix">
					<div class="ic-control-label">
						<label id="submit_created_by_email-lbl" for="submit_created_by_email"><?php echo JText::_( 'COM_ICAGENDA_SUBMIT_FORM_USER_EMAIL' ); ?> *</label>
					</div>
					<div class="ic-controls">
						<?php
						if ($u_mail)
						{
							echo '<input type="text" id="submit_created_by_email" name="created_by_email" value="' . $this->escape($u_mail) . '" size="40" class="input-large required" aria-required="true" readonly="true" />';
						}
						else
						{
							echo '<input type="text" id="submit_created_by_email" name="created_by_email" value="' . $post_created_by_email . '" size="40" class="input-large required" aria-required="true" required="true" />';
						}
						?>
						<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_Uemail . '"></span>'; ?>
					</div>
				</div>
			</div>
			<div>&nbsp;</div>

			<legend id="ic-event-fieldset"><?php echo JText::_('COM_ICAGENDA_LEGEND_NEW_EVENT'); ?></legend>

			<div class="fieldset">
				<div class="ic-control-group ic-clearfix">
					<div class="ic-control-label">
						<label id="title-lbl" for="title"><?php echo JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_TITLE' ); ?> *</label>
					</div>
					<div class="ic-controls">
						<input id="title" type="text" name="title" size="60" value="<?php echo $post_title; ?>" class="input-xlarge required" aria-required="true" required="true"/>
						<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_title . '"></span>'; ?>
					</div>
				</div>
				<div class="ic-control-group ic-clearfix">
					<div class="ic-control-label">
						<label id="catid-lbl" for="catid"><?php echo JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_CATID' ); ?> *</label>
					</div>
					<div class="ic-controls ic-select">
						<?php echo $this->form->getInput('catid'); ?>
						<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_category . '"></span>'; ?>
					</div>
				</div>
				<?php if ($this->submit_imageDisplay) : ?>
				<div class="ic-control-group ic-clearfix">
					<div class="ic-control-label">
						<label><?php echo JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_IMAGE' ); ?></label>
					</div>
					<div class="ic-controls ic-select">
						<?php if (!$post_image) : ?>
							<?php echo $this->form->getInput('image'); ?>
							<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_image . '"></span>'; ?>
						<?php else : ?>
							<?php echo '<input type="hidden" name="image_session" value="' . $post_image . '" />'; ?>
							<?php echo '<img src="' . $post_image .'" alt="" />'; ?>
						<?php endif; ?>
					</div>
				</div>
				<div id="ic-upload-preview"></div>
				<?php endif; ?>
			</div>
			<div>&nbsp;</div>

			<legend id="ic-dates-fieldset"><?php echo JText::_('COM_ICAGENDA_LEGEND_DATES'); ?></legend>

			<div class="fieldset">
				<?php if ($period_display == '1') : ?>
				<h3><?php echo JText::_('COM_ICAGENDA_LEGEND_PERIOD_DATES'); ?></h3>
				<div class="ic-control-group ic-clearfix">
					<div class="ic-control-label">
						<label><?php echo JText::_( 'COM_ICAGENDA_FORM_LBL_EVENTPERIOD_START' ); ?></label>
					</div>
					<div class="ic-controls">
						<?php if ($lang->getTag() == 'fa-IR') : ?>
							<?php echo JHtml::_('calendar', $post_startdate, 'startdate', 'startdate_jalali', '%Y-%m-%d %H:%M:%S', ''); ?>
						<?php else : ?>
							<input type="text" name="startdate" id="startdate" class="ic-date-input" value="<?php echo $post_startdate; ?>">
						<?php endif; ?>
						<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_startD . '"></span>'; ?>
					</div>
				</div>
				<div class="ic-control-group ic-clearfix">
					<div class="ic-control-label">
						<label><?php echo JText::_( 'COM_ICAGENDA_FORM_LBL_EVENTPERIOD_END' ); ?></label>
					</div>
					<div class="ic-controls">
						<?php if ($lang->getTag() == 'fa-IR') : ?>
							<?php echo JHtml::_('calendar', $post_enddate, 'enddate', 'enddate_jalali', '%Y-%m-%d %H:%M:%S', ''); ?>
						<?php else : ?>
							<input type="text" name="enddate" id="enddate" class="ic-date-input" value="<?php echo $post_enddate; ?>">
						<?php endif; ?>
						<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_endD . '"></span>'; ?>
					</div>
				</div>
				<?php if ($weekdays_display == '1') : ?>
				<div class="ic-control-group ic-clearfix">
					<div class="ic-control-label">
						<?php echo $this->form->getLabel('weekdays'); ?>
					</div>
					<div class="ic-controls ic-select">
						<?php if (!$post_weekdays) : ?>
							<?php echo $this->form->getInput('weekdays'); ?>
						<?php else : ?>
							<select
								name="weekdays"
								type="list"
								label="COM_ICAGENDA_FORM_LBL_WEEK_DAYS"
								description="COM_ICAGENDA_FORM_DESC_WEEK_DAYS"
								multiple="true"
								labelclass="control-label"
								>
								<option value="0" <?php if (in_array('0', $post_weekdays)) { echo "selected"; } ?>>
									<?php echo JText::_('SUNDAY') ?></option>
								<option value="1" <?php if (in_array('1', $post_weekdays)) { echo "selected"; } ?>>
									<?php echo JText::_('MONDAY') ?></option>
								<option value="2" <?php if (in_array('2', $post_weekdays)) { echo "selected"; } ?>>
									<?php echo JText::_('TUESDAY') ?></option>
								<option value="3" <?php if (in_array('3', $post_weekdays)) { echo "selected"; } ?>>
									<?php echo JText::_('WEDNESDAY') ?></option>
								<option value="4" <?php if (in_array('4', $post_weekdays)) { echo "selected"; } ?>>
									<?php echo JText::_('THURSDAY') ?></option>
								<option value="5" <?php if (in_array('5', $post_weekdays)) { echo "selected"; } ?>>
									<?php echo JText::_('FRIDAY') ?></option>
								<option value="6" <?php if (in_array('6', $post_weekdays)) { echo "selected"; } ?>>
									<?php echo JText::_('SATURDAY') ?></option>
							</select>
						<?php endif; ?>
						<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_weekDays . '"></span>'; ?>
					</div>
				</div>
				<?php endif; ?>
				<?php endif; ?>

				<?php if ($dates_display == '1') : ?>
				<h3><?php echo JText::_('COM_ICAGENDA_LEGEND_SINGLE_DATES'); ?></h3>
				<div class="ic-control-group ic-clearfix">
					<?php echo $this->form->getInput('dates'); ?>
				</div>
				<?php endif; ?>

				<?php if ($displaytime_display == '1' && ($period_display == '1' || $dates_display == '1')) : ?>
				<h3><?php echo JText::_('COM_ICAGENDA_DISPLAY_TIME_LABEL'); ?></h3>
				<?php
				if ($post)
				{
					$time_checked_0			= empty($post_displaytime) ? ' checked="checked"' : '';
					$time_checked_1			= ! empty($post_displaytime) ? ' checked="checked"' : '';
				}
				else
				{
					$time_checked_0			= ($displaytime_default == '0') ? ' checked="checked"' : '';
					$time_checked_1			= ($displaytime_default == '1') ? ' checked="checked"' : '';;
				}
				?>
				<div class="ic-control-group ic-clearfix">
					<fieldset id="displaytime" class="ic-radio ic-btn-group">
						<?php echo '<input id="displaytime0" class="ic-btn" type="radio" value="0"' . $time_checked_0 . ' name="displaytime"></input>'; ?>
						<?php echo '<label class="ic-btn" for="displaytime0">' . JText::_('JHIDE') . '</label>'; ?>
						<?php echo '<input id="displaytime1" class="ic-btn" type="radio" value="1"' . $time_checked_1 . ' name="displaytime"></input>'; ?>
						<?php echo '<label class="ic-btn" for="displaytime1">' . JText::_('JSHOW') . '</label>'; ?>
					</fieldset>
					<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_displayTime . '"></span>'; ?>
				</div>
				<?php else : ?>
				<?php echo '<input type="hidden" value="' . $displaytime_default . '" name="displaytime" />'; ?>
				<?php endif; ?>

				<?php echo $this->form->getInput('next'); ?>
			</div>
			<div>&nbsp;</div>

			<?php // Description Field Set ?>
			<?php if ($this->submit_descDisplay
				|| $this->submit_shortdescDisplay
				|| $this->submit_metadescDisplay) : ?>
				<legend><?php echo JText::_('COM_ICAGENDA_LEGEND_DESC'); ?></legend>
				<div class="fieldset">

					<?php // Short Description ?>
					<?php if ($this->submit_shortdescDisplay) : ?>
					<div class="ic-control-group ic-clearfix">
						<h3><?php echo JText::_('COM_ICAGENDA_SUBMIT_AN_EVENT_SHORT_DESCRIPTION_LBL') . ' <small class="iCFormTip iCicon iCicon-info-circle" title="' . JText::_('COM_ICAGENDA_SUBMIT_AN_EVENT_SHORT_DESCRIPTION_DESC') . '"></small>'; ?></h3>
						<?php echo $this->form->getInput('shortdesc'); ?>
					</div>
					<?php endif; ?>

					<?php // Description ?>
					<?php if ($this->submit_descDisplay) : ?>
					<div class="ic-control-group ic-clearfix">
						<h3><?php echo JText::_('COM_ICAGENDA_FORM_LBL_EVENT_DESC') . ' <small class="iCFormTip iCicon iCicon-info-circle" title="' . JText::_('COM_ICAGENDA_SUBMIT_AN_EVENT_DESCRIPTION_DESC') . '"></small>'; ?></h3>
						<div>
							<?php
							if ($post_desc)
							{
								$editor = JFactory::getEditor();
								echo '<div id="tos_custom">';
								echo $editor->display("desc", $post_desc, "100%", "300", "300", "20", 1, null, null, null, array('mode' => 'advanced'));
								echo '</div>';
							}
							else
							{
								echo $this->form->getInput('desc');
							}
							?>
						</div>
						<div>&nbsp;</div>
					</div>
					<?php endif; ?>

					<?php // Meta-description ?>
					<?php if ($this->submit_metadescDisplay) : ?>
					<div class="ic-control-group ic-clearfix">
						<h3><?php echo JText::_('COM_ICAGENDA_FORM_EVENT_METADESC_LBL') . ' <small class="iCFormTip iCicon iCicon-info-circle" title="' . JText::_('COM_ICAGENDA_SUBMIT_AN_EVENT_METADESC_DESC') . '"></small>'; ?></h3>
						<?php echo $this->form->getInput('metadesc'); ?>
					</div>
					<?php endif; ?>
      <!--textarea name="taMessage2" cols="50" rows="3" class="textarea" id="taMessage2" onMouseOut="CheckFieldLength(taMessage2, 'charcount2', 'remaining2', 140);" onKeyDown="CheckFieldLength(taMessage2, 'charcount2', 'remaining2', 140);" window.onmousemove="CheckFieldLength(taMessage2, 'charcount2', 'remaining2', 140);"></textarea-->
      <!--h2><span id="charcount2">0</span> characters entered | <span id="remaining2">140</span> characters remaining</h2>
		<script type="text/javascript">
		window.onmousemove = iCuseractions;
		window.onscroll = iCuseractions;
		function iCuseractions()
		{
			CheckFieldLength(taMessage2, 'charcount2', 'remaining2', 140);
		}
		</script-->
				</div>
				<div>&nbsp;</div>
			<?php endif; ?>

			<?php // Information Field Set ?>
			<?php if ($this->submit_venueDisplay
				OR $this->submit_emailDisplay
				OR $this->submit_phoneDisplay
				OR $this->submit_websiteDisplay
				OR $this->submit_fileDisplay
				OR $this->submit_customfieldsDisplay) : ?>
				<legend><?php echo JText::_('COM_ICAGENDA_LEGEND_INFORMATION'); ?></legend>
				<div class="fieldset">

					<?php // Venue ?>
					<?php if ($this->submit_venueDisplay) : ?>
						<h3><?php echo JText::_('COM_ICAGENDA_LEGEND_VENUE'); ?></h3>
						<div class="ic-control-group ic-clearfix">
							<div class="ic-control-label">
								<label><?php echo JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_VENUE' ); ?></label>
							</div>
							<div class="ic-controls">
								<?php
								if ($post_venue)
								{
									echo '<input type="text" name="place" value="' . $post_venue . '" size="40" class="input-large" />';
								}
								else
								{
									echo $this->form->getInput('place');
								}
								?>
								<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_venue . '"></span>'; ?>
							</div>
						</div>
					<?php endif; ?>

					<?php // Contact ?>
					<?php if ($this->submit_emailDisplay
						OR $this->submit_phoneDisplay
						OR $this->submit_websiteDisplay) : ?>
						<h3><?php echo JText::_('COM_ICAGENDA_LEGEND_CONTACT'); ?></h3>

						<?php // Email ?>
						<?php if ($this->submit_emailDisplay) : ?>
						<div class="ic-control-group ic-clearfix">
							<div class="ic-control-label">
								<label><?php echo JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_EMAIL' ); ?></label>
							</div>
							<div class="ic-controls">
								<?php
								if ($post_email)
								{
									echo '<input type="text" name="email" value="' . $post_email . '" size="40" class="input-xlarge" />';
								}
								else
								{
									echo $this->form->getInput('email');
								}
								?>
								<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_email . '"></span>'; ?>
							</div>
						</div>
						<?php endif; ?>

						<?php // Phone ?>
						<?php if ($this->submit_phoneDisplay) : ?>
						<div class="ic-control-group ic-clearfix">
							<div class="ic-control-label">
								<label><?php echo JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_PHONE' ); ?></label>
							</div>
							<div class="ic-controls">
								<?php
								if ($post_phone)
								{
									echo '<input type="text" name="phone" value="' . $post_phone . '" size="40" class="input-large" />';
								}
								else
								{
									echo $this->form->getInput('phone');
								}
								?>
								<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_phone . '"></span>'; ?>
							</div>
						</div>
						<?php endif; ?>

						<?php // Website ?>
						<?php if ($this->submit_websiteDisplay) : ?>
						<div class="ic-control-group ic-clearfix">
							<div class="ic-control-label">
								<label><?php echo JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_WEBSITE' ); ?></label>
							</div>
							<div class="ic-controls">
								<?php
								if ($post_website)
								{
									echo '<input type="text" name="website" value="' . $post_website . '" size="40" class="input-large" />';
								}
								else
								{
									echo $this->form->getInput('website');
								}
								?>
								<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_website . '"></span>'; ?>
							</div>
						</div>
						<?php endif; ?>

					<?php endif; ?>

					<?php // Load Custom fields - Event form (2) ?>
					<?php if ($this->submit_customfieldsDisplay) : ?>
						<?php if (icagendaCustomfields::loader(2)) : ?>
							<h3><?php echo JText::_('COM_ICAGENDA_LEGEND_OTHER_INFORMATION'); ?></h3>
							<?php echo icagendaCustomfields::loader(2); ?>
							<br />
						<?php endif; ?>
					<?php endif; ?>

					<?php // Attachment ?>
					<?php if ($this->submit_fileDisplay) : ?>
						<h3><?php echo JText::_('COM_ICAGENDA_LEGEND_ALLEG'); ?></h3>
						<div class="ic-control-group ic-clearfix">
							<div class="ic-control-label">
								<label><?php echo JText::_( 'COM_ICAGENDA_FORM_LBL_EVENT_FILE' ); ?></label>
							</div>
							<div class="ic-controls">
								<?php if ($post_file) : ?>
									<?php echo '<input type="hidden" name="file_session" value="' . $post_file . '" />'; ?>
									<?php
									$path_parts = pathinfo($post_file);
									echo $path_parts['basename'];
									?>
								<?php else : ?>
									<?php echo $this->form->getInput('file'); ?>
									<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_file . '"></span>'; ?>
								<?php endif; ?>
							</div>
						</div>
					<?php endif; ?>
				</div>
				<div>&nbsp;</div>
			<?php endif; ?>

			<?php // Google Maps Field Set ?>
			<?php if ($this->submit_gmapDisplay) : ?>
				<legend><?php echo JText::_('COM_ICAGENDA_LEGEND_GOOGLE_MAPS'); ?></legend>
				<div class="fieldset">
					<div id="googlemap">
						<div class="row-fluid">
							<div class="span6 ic-align-left">
								<h3><?php echo JText::_('COM_ICAGENDA_GOOGLE_MAPS_SUBTITLE_LBL'); ?></h3>
								<div>
									<?php echo JText::_('COM_ICAGENDA_GOOGLE_MAPS_NOTE1'); ?>
									<br/>
									<?php echo JText::_('COM_ICAGENDA_GOOGLE_MAPS_NOTE2'); ?>
									<br/>
								</div>
								<div style="clear:both"></div>
								<div>
									<div class="icmap-address">
										<?php
										if ($address_session)
										{
											echo '<input type="hidden" name="address_session" value="' . $address_session . '" size="40" class="input-xlarge" readonly="true" />';
//											echo '<div><strong>' . $address_session . '</strong></div>';
										}
										?>
										<div class="icmap-label">
											<?php echo $this->form->getLabel('address'); ?>
										</div>
										<?php echo $this->form->getInput('address'); ?>
									</div>
									<div class="icmap-field">
										<?php echo $this->form->getInput('city'); ?>
									</div>
									<div class="icmap-field">
										<?php echo $this->form->getInput('country'); ?>
									</div>
									<div class="icmap-field">
										<?php echo $this->form->getInput('lat'); ?>
									</div>
									<div class="icmap-field">
										<?php echo $this->form->getInput('lng'); ?>
									</div>
								</div>
							</div>
							<div class="span6 ic-align-left">
								<div class='map-wrapper'>
									<h3>Map</h3>
									<label id="geo_label" for="reverseGeocode"><?php echo JText::_('COM_ICAGENDA_GOOGLE_MAPS_REVERSE'); ?></label>
									<select id="reverseGeocode">
										<option value="false" selected><?php echo JText::_('JNO'); ?></option>
										<option value="true"><?php echo JText::_('JYES'); ?></option>
									</select><br/>
									<div id="map"></div>
									<div id="legend"><?php echo JText::_('COM_ICAGENDA_GOOGLE_MAPS_LEGEND'); ?></div>
								</div>
							</div>
						</div>
					</div>
					<div style="clear:both"></div>
				</div>
				<div>&nbsp;</div>
			<?php endif; ?>

			<?php // Registration Field Set ?>
			<?php if ($this->submit_regoptionsDisplay && $this->statutReg == 1) : ?>
				<legend><?php echo JText::_('COM_ICAGENDA_REGISTRATION_OPTIONS'); ?></legend>
				<div class="fieldset">

					<?php
					if ($post && $post_param)
					{
						$statutReg	= $post_param['statutReg'];
						$checked_0	= empty($statutReg) ? ' checked="checked"' : '';
						$checked_1	= !empty($statutReg) ? ' checked="checked"' : '';
						$maxReg		= $post_param['maxReg'];
					}
					else
					{
						$statutReg	= $iCparams->get('statutReg', '0');
						$checked_0	= ($statutReg == '0') ? ' checked="checked"' : '';
						$checked_1	= ($statutReg == '1') ? ' checked="checked"' : '';;
						$maxReg		= '';
					}
					?>

					<?php // Registration Activation ?>
					<div class="ic-control-group ic-clearfix">
						<div class="ic-control-label">
							<label><?php echo JText::_( 'COM_ICAGENDA_REGISTRATION_LABEL' ); ?></label>
						</div>
						<div class="ic-controls">
							<fieldset id="params_statutReg" class="ic-radio ic-btn-group">
								<?php echo '<input id="params_statutReg0" class="ic-btn" type="radio"' . $checked_0 . ' value="0" name="params[statutReg]"></input>'; ?>
								<?php echo '<label class="ic-btn" for="params_statutReg0">' . JText::_('JOFF') . '</label>'; ?>
								<?php echo '<input id="params_statutReg1" class="ic-btn" type="radio"' . $checked_1 . ' value="1" name="params[statutReg]"></input>'; ?>
								<?php echo '<label class="ic-btn" for="params_statutReg1">' . JText::_('JON') . '</label>'; ?>
							</fieldset>
							<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_reg . '"></span>'; ?>
						</div>
					</div>

					<?php // Nb of Tickets ?>
					<div class="ic-control-group ic-clearfix">
						<div class="ic-control-label">
							<label><?php echo JText::_( 'COM_ICAGENDA_MAX_REGISTRATIONS_LABEL' ); ?></label>
						</div>
						<div class="ic-controls">
							<?php echo '<input type="text" class="input-small" name="params[maxReg]" value="' . $maxReg . '" />'; ?>
							<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_tickets . '"></span>'; ?>
						</div>
					</div>

					<?php foreach ($params as $name => $fieldSet) : ?>
						<?php if ($fieldSet->name != 'captcha') : ?>
							<?php if (isset($fieldSet->description) && trim($fieldSet->description)) : ?>
								<p class="tip"><?php echo $this->escape(JText::_($fieldSet->description));?></p>
							<?php endif; ?>
							<!--h3><?php echo $this->escape(JText::_($fieldSet->label)); ?></h3-->
							<?php foreach ($this->form->getFieldset($name) as $field) : ?>
								<div class="ic-control-group ic-clearfix">
									<div class="ic-control-label">
										<?php echo $field->label; ?>
									</div>
									<div class="ic-controls">
										<?php
										if ($post_params)
										{
											foreach ($post_params as $key => $value)
											{
												$post_param[$key] = $value;
											}
											echo $field->input;
										}
										else
										{
											echo $field->input;
										}
										?>
									</div>
								</div>
							<?php endforeach; ?>
						<?php endif; ?>
					<?php endforeach; ?>
				</div>
				<div>&nbsp;</div>
			<?php endif; ?>

			<?php // Hidden Fields ?>
			<div style="display:none">
				<?php echo $this->form->getInput('alias'); ?>
				<?php echo $this->form->getInput('id'); ?>
				<?php echo $this->form->getInput('created_by'); ?>
				<?php echo $this->form->getInput('created_by_alias'); ?>
				<?php echo $this->form->getInput('created'); ?>
				<?php echo $this->form->getInput('checked_out'); ?>
				<?php echo $this->form->getInput('checked_out_time'); ?>
				<?php
				$current_url	= JURI::getInstance()->toString();
				$menu			= JFactory::getApplication()->getMenu();
				$current_menu	= $menu->getActive();
				?>
				<!--input type="hidden" name="menuID" value="<?php echo $menuID; ?>" /-->
				<input type="hidden" name="current_url" value="<?php echo $current_url; ?>" />
				<input type="hidden" name="site_itemid" value="<?php echo $current_menu->id; ?>" />
				<input type="hidden" name="site_menu_title" value="<?php echo $current_menu->title; ?>" />
				<input type="hidden" id="tos" name="submit_tos" value="<?php echo $ic_submit_tos; ?>" />
			</div>

				<?php
				/**
				 * Terms of Service Display
				 */
				if ($tos == 0) // No Terms of Service
				{
					// Terms of Service not displayed
					$tokenHTML = str_replace('type="hidden"','id="formAgree" name="tos" value="checked" class="required" required="true" type="checkbox" checked style="display:none"',JHTML::_( 'form.token' ));
					echo $tokenHTML;
					?>
					<div class="bgButton">

						<?php // RECAPTCHA ?>
						<?php if ($this->submit_captcha != '0') : ?>
						<div class="ic-control-group ic-clearfix">
							<div class="ic-control-label">
								<label> </label>
							</div>
							<div class="ic-controls">
								<?php echo $this->form->getInput('captcha'); ?>
							</div>
						</div>
						<br />
						<?php endif; ?>

						<span>
							<!--input type="submit" value="<?php echo JText::_( 'COM_ICAGENDA_EVENT_FORM_SUBMIT' ); ?>" class="button" name="submit"/-->
							<button type="submit" class="button validate"><?php echo JText::_('COM_ICAGENDA_EVENT_FORM_SUBMIT');?></button>
							<input type="hidden" name="task" value="" />
							<input type="hidden" name="return" value="index.php" />
							<?php if (false) echo JHtml::_( 'form.token' ); ?>
						</span>
						<!--span class="buttonx">
							<a href="javascript:history.go(-1)" title="<?php echo JTEXT::_('COM_ICAGENDA_CANCEL'); ?>">
								<?php echo JTEXT::_('COM_ICAGENDA_CANCEL'); ?>
							</a>
						</span-->
					</div><?php // End Div bgButton ?>
					<?php
				}
				elseif ($tos == 1) // Terms of Service Required
				{
					// Terms of Service
					$checked = ($ic_submit_tos == 'checked') ? ' checked' : '';

					$tokenHTML = str_replace('type="hidden"', 'id="formAgree" name="tos" value="checked" class="required" required="true" type="checkbox"' . $checked, JHtml::_( 'form.token' ));

					// Get the site name
					$config = JFactory::getConfig();
					if (version_compare(JVERSION, '3.0', 'ge')) {
						$sitename = $config->get('sitename');
					} else {
						$sitename = $config->getValue('config.sitename');
					}

					// Tos Type
					$iCparams	= JComponentHelper::getParams('com_icagenda');
					$tos_Type	= $iCparams->get('tos_Type', '');
					$tosArticle	= $iCparams->get('tosArticle', '');
					$tosContent	= $iCparams->get('tosContent', '');

					$tosDEFAULT	= JText::sprintf( 'COM_ICAGENDA_TOS', $sitename, $sitename);
					$tosARTICLE	= 'index.php?option=com_content&view=article&id=' . $tosArticle . '&tmpl=component';
					$tosCUSTOM	= $tosContent;

					?>
					<div class="ic-tos-content bgButton">
						<div>
							<b><big><?php echo JText::_( 'COM_ICAGENDA_TERMS_OF_SERVICE'); ?></big></b>
						</div>
						<?php
						if ($tos_Type == 1)
						{
							echo '<iframe src="'.htmlentities($tosARTICLE).'" width="98%" height="150"></iframe>';
						}
						elseif ($tos_Type == 2)
						{
							echo '<div class="ic-tos-text">';
							echo $tosCUSTOM;
							echo '</div>';
						}
						else
						{
							echo '<div class="ic-tos-text">';
							echo $tosDEFAULT;
							echo '</div>';
						}
						?>
						<!--iframe src="<?php echo htmlentities($tosURL); ?>" width="98%" height="150"></iframe-->
						<div class="ic-tos-agree agreeToS">
							<p>
							<span><?php echo $tokenHTML; ?></span>
							<span id="formAgree-lbl" for="formAgree"><?php echo JText::_( 'COM_ICAGENDA_TERMS_OF_SERVICE_AGREE'); ?> *<label style="display:none" id="formAgree-lbl" for="formAgree"><?php echo JText::_( 'COM_ICAGENDA_TERMS_AND_CONDITIONS'); ?></label></span>
							</p>
						</div>

						<?php // RECAPTCHA ?>
						<?php if ($this->submit_captcha != '0') : ?>
						<div class="ic-control-group ic-clearfix">
							<div class="ic-control-label ic-captcha-label">
								<label> </label>
							</div>
							<div class="ic-controls">
								<?php echo $this->form->getInput('captcha'); ?>
							</div>
						</div>
						<br />
						<?php endif; ?>

						<div id="submit">
							<!--input id="submit" type="submit" value="<?php echo JText::_( 'COM_ICAGENDA_EVENT_FORM_SUBMIT' ); ?>" class="button" name="Submit" /--><!--  onclick="javascript:Recaptcha.reload()" -->
							<button type="submit" class="button validate">
								<?php echo JText::_('COM_ICAGENDA_EVENT_FORM_SUBMIT');?>
							</button>
							<input type="hidden" name="task" value="" />
							<input type="hidden" name="return" value="index.php" />
							<?php if (false) echo JHtml::_( 'form.token' ); ?>
						</div>
						<!--span class="buttonx">
							<a href="javascript:history.go(-1)" title="<?php echo JTEXT::_('COM_ICAGENDA_CANCEL'); ?>">
								<?php echo JTEXT::_('COM_ICAGENDA_CANCEL'); ?>
							</a>
						</span-->
					</div><?php // End Div bgButton ?>
					<?php
				}
				?>
			</div><?php // End Form Fields ?>
			<div style="clear:both"></div>
		</form>
	</div>

	<?php
	$limitSize = $this->submit_imageMaxSize;

	// Script to test Text Counter limit on mouse move and on scroll
	$ic_max_com_shortdesc	= JComponentHelper::getParams('com_icagenda')->get('char_limit_short_description', '100');
	$ic_max_shortdesc		= $this->params->get('char_limit_short_description', '100');
	$ic_max_shortdesc		= ($ic_max_com_shortdesc >= $ic_max_shortdesc) ? $ic_max_shortdesc : $ic_max_com_shortdesc;

	$ic_max_com_metadesc	= JComponentHelper::getParams('com_icagenda')->get('char_limit_meta_description', '160');
	$ic_max_metadesc		= $this->params->get('char_limit_meta_description', '160');
	$ic_max_metadesc		= ($ic_max_com_metadesc >= $ic_max_metadesc) ? $ic_max_metadesc : $ic_max_com_metadesc;

	$script = '<script type="text/javascript">';
	$script.= 'window.onmousemove = useractions;';
	$script.= 'window.onscroll = useractions;';
	$script.= 'function useractions()';
	$script.= '{';

	if ($this->submit_shortdescDisplay)
	{
		$script.= '	var shortdesc_control = document.getElementById("shortdesc");';
		$script.= '	var counter_shortdesc = document.getElementById("shortdesc-counter");';
		$script.= '	if (shortdesc_control.value.length > ' . $ic_max_shortdesc . ')';
		$script.= '	{';
		$script.= '		shortdesc_control.value = shortdesc_control.value.substring(0,' . $ic_max_shortdesc . ');';
		$script.= '		counter_shortdesc.value = 0;';
		$script.= '		shortdesc_control.addClass("ic-counter-limit");';
		$script.= '		counter_shortdesc.addClass("ic-counter-limit");';
		$script.= '		alert(Joomla.JText._("COM_ICAGENDA_ALERT_TEXT_EXCEEDS_CHARACTER_LIMIT"));';
		$script.= '		shortdesc_control.scrollIntoView();';
		$script.= '	}';
	}

	if ($this->submit_metadescDisplay)
	{
		$script.= '	var metadesc_control = document.getElementById("metadesc");';
		$script.= '	var counter_metadesc = document.getElementById("metadesc-counter");';
		$script.= '	if (metadesc_control.value.length > ' . $ic_max_metadesc . ')';
		$script.= '	{';
		$script.= '		metadesc_control.value = metadesc_control.value.substring(0,' . $ic_max_metadesc . ');';
		$script.= '		counter_metadesc.value = 0;';
		$script.= '		metadesc_control.addClass("ic-counter-limit");';
		$script.= '		counter_metadesc.addClass("ic-counter-limit");';
		$script.= '		alert(Joomla.JText._("COM_ICAGENDA_ALERT_TEXT_EXCEEDS_CHARACTER_LIMIT"));';
		$script.= '		metadesc_control.scrollIntoView();';
		$script.= '	}';
	}

	$script.= '}';
	$script.= '</script>';

	echo $script;

	// Disable submit button after first click
	JFactory::getDocument()->addScriptDeclaration('
		jQuery(function($) {
			$("#submitevent").one("submit", function() {
				$(this).find(\'button[type="submit"]\')
					.attr("disabled","disabled")
					.css({
						"background-color": "transparent",
						"color": "grey"
					});
				$("#submit").addClass("ic-loader");
			});
		});
	');
	?>

	<script type="text/javascript">
	jQuery(function($) {

		// var url = window.URL || window.webkitURL; // alternate use

		function readImage(file, accept, mimetype, limitSize) {

			var reader = new FileReader();
			var image  = new Image();

			reader.readAsDataURL(file);
			reader.onload = function(_file) {
				image.src    = _file.target.result;              // url.createObjectURL(file);
				image.onload = function() {
					var w = file.width,
						h = file.height,
						t = file.type,                           // ext only: // file.type.split('/')[1],
						n = file.name,
						size = ~~(file.size/1024),
						s = ~~(file.size/1024) +' <?php echo JText::_("IC_LIBRARY_KILO_BYTES"); ?>';

					if ( inArray(t, mimetype) )
					{
						if (size < limitSize)
						{
							$('#ic-upload-preview').empty();
							$('#ic-upload-preview').append('<center><img src="'+ image.src +'"><br />'+w+'x'+h+' - '+s+' - '+t+' - '+n+'</center><br />');
						}
						else
						{
							var uploadInvalidSize_string = "<?php echo JText::sprintf('IC_LIBRARY_UPLOAD_INVALID_SIZE', '<strong>"+ n +"</strong>', '"+ size +"', '"+ limitSize +"'); ?>";
							$('#ic-upload-preview').empty();
							$('#ic-upload-preview').append('<div class="alert alert-error">'+uploadInvalidSize_string+'</div>');
							$('input[name=image]').val('');
						}
					}
					else
					{
						$('#ic-upload-preview').empty();
						$('#ic-upload-preview').append('<div class="alert alert-error"><?php echo JText::sprintf("IC_LIBRARY_UPLOAD_INVALID_FILE_TYPE", "<strong>'+ n +'</strong>", "'+accept+'"); ?></div>');
						$('input[name=image]').val('');
					}
				};
				image.onerror= function() {
					alert('<?php echo JText::_("IC_LIBRARY_UPLOAD_INVALID_FILE_TYPE_ALERT"); ?> '+ file.type);
				};
			};

		}

		$("#image").change(function (e){
			if(this.disabled) return alert('<?php echo JText::_("IC_LIBRARY_UPLOAD_NOT_SUPPORTED"); ?>');
			var F = this.files;
			if(F && F[0]) for(var i=0; i<F.length; i++) readImage( F[i], "jpg, jpeg, png, gif", ['image/jpg','image/jpeg','image/png','image/gif'], "<?php echo $limitSize; ?>" );
		});
	});

	</script>

	<?php if ($this->submit_gmapDisplay) : ?>
	<script type="text/javascript">
		//<![CDATA[
		jQuery(function($) {
			var address_session = '<?php echo $address_session; ?>';

			if (address_session)
			{
				$('#address').val(address_session);
			}

			var addresspicker = $( "#addresspicker" ).addresspicker();
			var addresspickerMap = $( '#address' ).addresspicker({
				regionBias: "fr",
				updateCallback: showCallback,
				mapOptions: {
					zoom: <?php echo $zoom; ?>,
					center: new google.maps.LatLng(<?php echo $coords; ?>),
					scrollwheel: false,
					mapTypeId: google.maps.MapTypeId.<?php echo $mapTypeId; ?>,
					streetViewControl: false
				},
				elements: {
					map:      "#map",
					lat:      "#lat",
					lng:      "#lng",
					street_number: '#street_number',
					route: '#route',
					locality: '#locality',
					administrative_area_level_2: '#administrative_area_level_2',
					administrative_area_level_1: '#administrative_area_level_1',
					country:  '#country',
					postal_code: '#postal_code',
					type:    '#type',
				}
			});

			var gmarker = addresspickerMap.addresspicker( "marker");
			gmarker.setVisible(true);
			addresspickerMap.addresspicker( "updatePosition");

			$('#reverseGeocode').change(function(){
				$("#address").addresspicker("option", "reverseGeocode", ($(this).val() === 'true'));
			});

			function showCallback(geocodeResult, parsedGeocodeResult){
				$('#callback_result').text(JSON.stringify(parsedGeocodeResult, null, 4));
			}
  		});
		//]]>
	</script>
	<?php endif; ?>

	<?php
	// clear the data so we don't process it again
	$session->clear('ic_submit');
	$session->clear('custom_fields');
	$session->clear('ic_submit_dates');
	$session->clear('ic_submit_catid');
	$session->clear('ic_submit_shortdesc');
	$session->clear('ic_submit_metadesc');
	$session->clear('ic_submit_city');
	$session->clear('ic_submit_country');
	$session->clear('ic_submit_lat');
	$session->clear('ic_submit_lat');
	$session->clear('ic_submit_address');
	$session->clear('ic_submit_tos');
	$session->clear('email2');

	// Script validation for Submit Event form (2)
	if (!$this->submit_form_validation)
	{
		$iCheckForm = icagendaForm::submit(2);
		JFactory::getDocument()->addScriptDeclaration($iCheckForm);
	}

	if (file_exists("components/com_icagenda/themes/packs/".$this->template."/css/".$this->template."_component.css"))
	{
		$css_component	= '/components/com_icagenda/themes/packs/'.$this->template.'/css/'.$this->template.'_component.css';
		$css_com_rtl	= '/components/com_icagenda/themes/packs/'.$this->template.'/css/'.$this->template.'_component-rtl.css';
	}
	else
	{
		$css_component	= '/components/com_icagenda/themes/packs/default/css/default_component.css';
		$css_com_rtl	= '/components/com_icagenda/themes/packs/default/css/default_component-rtl.css';
	}
	// Add the media specific CSS to the document
	JLoader::register('iCagendaMediaCss', JPATH_ROOT . '/components/com_icagenda/helpers/media_css.class.php');
	iCagendaMediaCss::addMediaCss($this->template, 'component');

	// Theme pack component css
	$document->addStyleSheet( JURI::base( true ) . $css_component );

	// RTL css if site language is RTL
	$lang = JFactory::getLanguage();

	if ( $lang->isRTL()
		&& file_exists( JPATH_SITE . $css_com_rtl) )
	{
		$document->addStyleSheet( JURI::base( true ) . $css_com_rtl );
	}

	// Joomla 2.5
	if (version_compare(JVERSION, '3.0', 'lt'))
	{
		JHtml::stylesheet( 'com_icagenda/icagenda-front.j25.css', false, true );

		JHtml::_('behavior.framework');

		// load jQuery, if not loaded before (NEW VERSION IN 1.2.6)
		$scripts = array_keys($document->_scripts);
		$scriptFound = false;
		$scriptuiFound = false;
		$mapsgooglescriptFound = false;

		for ($i = 0; $i < count($scripts); $i++)
		{
			if (stripos($scripts[$i], 'jquery.min.js') !== false)
			{
					$scriptFound = true;
			}
			// load jQuery, if not loaded before as jquery - added in 1.2.7
			if (stripos($scripts[$i], 'jquery.js') !== false)
			{
				$scriptFound = true;
			}
			if (stripos($scripts[$i], 'jquery-ui.min.js') !== false)
			{
				$scriptuiFound = true;
			}
			if (stripos($scripts[$i], 'maps.google') !== false)
			{
				$mapsgooglescriptFound = true;
			}
		}

		// jQuery Library Loader
		if (!$scriptFound)
		{
			// load jQuery, if not loaded before
			if (!JFactory::getApplication()->get('jquery'))
			{
				JFactory::getApplication()->set('jquery', true);
				// add jQuery
				$document->addScript('https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');
				JHtml::script('com_icagenda/jquery.noconflict.js', false, true);
			}
		}

		if (!$scriptuiFound)
		{
			$document->addScript('https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js');
		}
	}
	// Joomla 3
	else
	{
		JHtml::_('bootstrap.framework');
		JHtml::_('jquery.framework');

		/**
		 * Change jQuery UI version from 1.9.2 to 1.8.23 (joomla version, but not complete)
		 * to prevent a conflict in tooltip that appeared since Joomla 3.1.4
		 */
//		$document->addScript('https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js');
		$document->addScript( 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js' );
	}

	/**
	 * Google Maps api V3
	 */
	if ($this->submit_gmapDisplay)
	{
		$curlang	= $document->language;
		$lang		= substr($curlang, 0, 2);
		$document->addScript('https://maps.googleapis.com/maps/api/js?sensor=false&language=' . $lang);
		JHtml::script( 'com_icagenda/icmap.js', false, true );
	}

	/**
	 * Script files which could be overridden into your site template.
	 * (eg. /templates/my_template/js/com_icagenda/FILE_NAME.js)
	 */
	JHtml::script( 'com_icagenda/timepicker.js', false, true );
	JHtml::script( 'com_icagenda/icdates.js', false, true );
	JHtml::script( 'com_icagenda/jquery.tipTip.js', false, true );
	JHtml::script( 'com_icagenda/icagenda.js', false, true );
	JHtml::script( 'com_icagenda/icform.js', false, true );

	$iCtip	 = array();
	$iCtip[] = '	jQuery(document).ready(function(){';
	$iCtip[] = '		jQuery(".iCFormTip").tipTip({maxWidth: "280px", defaultPosition: "right", edgeOffset: 5});';
	$iCtip[] = '	});';

	// Add the script to the document head.
	JFactory::getDocument()->addScriptDeclaration(implode("\n", $iCtip));
}
views/submit/tmpl/default.xml000060400000023007152455753310012336 0ustar00<?xml version="1.0" encoding="utf-8"?>
<metadata>
	<layout title="COM_ICAGENDA_SUBMIT_VIEW_DEFAULT_TITLE">
		<message>COM_ICAGENDA_SUBMIT_VIEW_DEFAULT_DESC</message>
	</layout>

	<fields id="params" name="params" type="fields" label="params" addfieldpath="/administrator/components/com_icagenda/models/fields">

		<fieldset name="ICAGENDA" label="COM_ICAGENDA_MENU_OPTIONS" addfieldpath="/administrator/components/com_icagenda/assets/elements">

			<field type="Title" label="COM_ICAGENDA_LOGO" class="styleblanck" />

			<field
				name="template"
				type="modal_template"
				label="COM_ICAGENDA_LBL_TEMPLATE"
				description="COM_ICAGENDA_DESC_TEMPLATE"
				size="40"
				class="inputbox"
				default="default"
			/>

			<field name="Title2" type="TitleImg" label="COM_ICAGENDA_FORM_LABEL"
				class="stylebox lead input-xxlarge" icimage="iconicagenda16.png"/>

			<field
				name="orderby_catlist"
				type="list"
				label="COM_ICAGENDA_CATEGORY_ORDER_LABEL"
				description="COM_ICAGENDA_CATEGORY_SELECT_LIST_ORDER_DESC"
				default="alpha"
				>
				<option
					value="none">JGLOBAL_NO_ORDER</option>
				<option
					value="alpha">JGLOBAL_TITLE_ALPHABETICAL</option>
				<option
					value="ralpha">JGLOBAL_TITLE_REVERSE_ALPHABETICAL</option>
				<option
					value="order">JGLOBAL_CATEGORY_MANAGER_ORDER</option>
			</field>
			<field
				name="default_catlist"
				type="modal_cat"
				label="COM_ICAGENDA_CATEGORY_SELECT_LIST_DEFAULT_LABEL"
				description="COM_ICAGENDA_CATEGORY_SELECT_LIST_DEFAULT_DESC"
				class="inputbox"
				/>
			<field
				name="submit_imageDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_EVENT_IMAGE_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_EVENT_IMAGE_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_imageMaxSize"
				type="text"
				label="COM_ICAGENDA_SUBMIT_EVENT_IMAGE_MAX_SIZE_LABEL"
				description="COM_ICAGENDA_SUBMIT_EVENT_IMAGE_MAX_SIZE_MENU_DESC"
				class="inputbox input-mini"
				default=""
				/>
			<field
				name="submit_periodDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_PERIOD_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_PERIOD_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_weekdaysDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_WEEKDAYS_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_WEEKDAYS_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_datesDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_DATES_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_DATES_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_displaytimeDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_DISPLAYTIME_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_DISPLAYTIME_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_shortdescDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_SHORTDESC_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_SHORTDESC_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_descDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_DESCRIPTION_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_DESCRIPTION_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_metadescDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_METADESCRIPTION_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_METADESCRIPTION_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_venueDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_VENUE_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_VENUE_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_emailDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_EMAIL_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_EMAIL_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_phoneDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_PHONE_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_PHONE_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_websiteDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_WEBSITE_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_WEBSITE_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_customfieldsDisplay"
				type="radio"
				label="COM_ICAGENDA_CUSTOMFIELDS"
				description="COM_ICAGENDA_SUBMIT_CUSTOMFIELDS_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_fileDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_ATTACHMENT_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_ATTACHMENT_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_gmapDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_GMAP_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_GMAP_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<field
				name="submit_regoptionsDisplay"
				type="radio"
				label="COM_ICAGENDA_SUBMIT_REGISTRATION_OPTIONS_DISPLAY_LABEL"
				description="COM_ICAGENDA_SUBMIT_REGISTRATION_OPTIONS_DISPLAY_DESC"
				class="btn-group"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>
			<!--field
				name="submit_captcha"
				type="plugins"
				folder="captcha"
				default=""
				label="COM_ICAGENDA_CAPTCHA_LABEL"
				description="COM_ICAGENDA_MENU_SUBMIT_CAPTCHA_DESC"
				filter="cmd" >
				<option
					value="">JGLOBAL_USE_GLOBAL</option>
				<option
					value="0">COM_ICAGENDA_NONE_SELECTED</option>
			</field-->
			<field
				name="submit_captcha"
				type="radio"
				label="COM_ICAGENDA_CAPTCHA"
				description="COM_ICAGENDA_SUBMIT_CAPTCHA_DESC"
				class="btn-group"
				labelclass="control-label"
				default=""
				>
				<option
					value="">JGLOBAL_USE_GLOBAL</option>
				<option
					value="0">JHIDE</option>
				<option
					value="1">JSHOW</option>
			</field>
			<field
				name="submitReturn"
				type="modal_iclink_type"
				label="COM_ICAGENDA_SUBMIT_RETURN_LBL"
				description="COM_ICAGENDA_SUBMIT_RETURN_DESC"
				labelclass="control-label"
				default=""
				/>
			<field
				name="submitReturn_Article"
				type="modal_iclink_article"
				label=" "
				class="inputbox"
				/>
			<field
				name="submitReturn_Url"
				type="modal_iclink_url"
				label=" "
				class="inputbox"
				hint="http://www.example.com"
				/>

			<!--field type="TitleImg" label="COM_ICAGENDA_DATE_FORMAT_NOTE1"
				class="stylenote alert alert-info input-xxlarge" icimage="info.png"
			/-->
			<field type="Title" label="COM_ICAGENDA_SHORT_DESCRIPTION_LBL" class="stylesub" />
			<field
				name="char_limit_short_description"
				type="text"
				label="COM_ICAGENDA_LBL_LIMIT"
				description="COM_ICAGENDA_SHORT_DESCRIPTION_LIMIT_DESC"
				class="inputbox input-mini"
				size="5"
				/>
			<field type="Title" label="COM_ICAGENDA_META_DESCRIPTION_LBL" class="stylesub" />
			<field
				name="char_limit_meta_description"
				type="text"
				label="COM_ICAGENDA_LBL_LIMIT"
				description="COM_ICAGENDA_META_DESCRIPTION_LIMIT_DESC"
				class="inputbox input-mini"
				size="5"
				/>

			<field type="Title" label="COM_ICAGENDA_FOOTER" class="styleblanck input-xxlarge" />
		</fieldset>
	</fields>

</metadata>
views/submit/tmpl/send.php000060400000006713152455753310011637 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.10 2015-08-25
 * @since       3.2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

// Get the site name
$sitename = JFactory::getApplication()->getCfg('sitename');

// Get Component Global Options
$iCparams = JComponentHelper::getParams('com_icagenda');

// Get Authorized user groups (approval managers)
$approvalGroups = $iCparams->get('approvalGroups', array("8"));

// Get User
$user = JFactory::getUser();
$u_id = $user->get('id');

// Control: if Manager
jimport( 'joomla.access.access' );
$adminUsersArray = array();

foreach ($approvalGroups AS $ag)
{
	$adminUsers = JAccess::getUsersByGroup($ag, False);
	$adminUsersArray = array_merge($adminUsersArray, $adminUsers);
}

$isManager = in_array($u_id, $adminUsersArray) ? true : false;

//$urllink = JURI::getInstance()->toString();
//$urllink = preg_replace('/&view=[^&]*/', '', $urllink);
//$urlNewEvent = preg_replace('/&layout=[^&]*/', '', $urllink);
$urlNewEvent = str_replace('&amp;', '&', JRoute::_('index.php?option=com_icagenda&view=submit'));

// clear the data so we don't process it again
$session = JFactory::getSession();
$session->clear('ic_submit');
$session->clear('custom_fields');
$session->clear('ic_submit_dates');
$session->clear('ic_submit_catid');
$session->clear('ic_submit_shortdesc');
$session->clear('ic_submit_metadesc');
$session->clear('ic_submit_city');
$session->clear('ic_submit_country');
$session->clear('ic_submit_lat');
$session->clear('ic_submit_lat');
$session->clear('ic_submit_address');
$session->clear('ic_submit_tos');
$session->clear('email2');
?>

<div id="icagenda" class="ic-send<?php echo $this->pageclass_sfx; ?>">
<?php if ( ! $isManager) : ?>
	<div><?php echo JText::_( 'COM_ICAGENDA_EVENT_SUBMISSION_EDITOR_REVIEW' ); ?></div>
	<div><?php echo JText::_( 'COM_ICAGENDA_EVENT_SUBMISSION_CONFIRMATION_EMAIL' ); ?></div>
	<div><?php echo JText::sprintf( 'COM_ICAGENDA_EVENT_SUBMISSION_THANK_YOU', $sitename ); ?></div>
<?php endif; ?>
	<br />
	<div>
		<a href="index.php" class="btn btn-small btn-info button">
		<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
			<i class="icon-home icon-white"></i>&nbsp;<?php echo JTEXT::_('JERROR_LAYOUT_HOME_PAGE'); ?>
		<?php else : ?>
			<span style="color:#FFF"><?php echo JTEXT::_('JERROR_LAYOUT_HOME_PAGE'); ?></span>
		<?php endif; ?>
		</a>
		&nbsp;
		<a href="<?php echo JRoute::_($urlNewEvent); ?>" class="btn btn-small btn-success button">
		<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
			<i class="icon-plus icon-white"></i>&nbsp;<?php echo JTEXT::_('COM_ICAGENDA_EVENT_SUBMISSION_SUBMIT_NEW_EVENT'); ?>
		<?php else : ?>
			<span style="color:#FFF"><?php echo JTEXT::_('COM_ICAGENDA_EVENT_SUBMISSION_SUBMIT_NEW_EVENT'); ?></span>
		<?php endif; ?>
		</a>
	</div>
	<br />
</div>
<?php
if (version_compare(JVERSION, '3.0', 'lt'))
{
	JHtml::_('stylesheet', 'icagenda-front.j25.css', 'components/com_icagenda/add/css/');
}
views/submit/tmpl/index.html000060400000000054152455753310012162 0ustar00<html><body bgcolor="#FFFFFF"></body></html>views/list/tmpl/default.php000060400000016365152455753310012006 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.7 2015-07-13
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');

// Get Application
$app		= JFactory::getApplication();
$document	= JFactory::getDocument();

$icsetvar			= 'components/com_icagenda/add/elements/icsetvar.php';
$someObjectArr		= (array)$this->data->items;
$control			= !empty($someObjectArr) ? true : false;
$getpage			= JRequest::getVar('page', 1);
$number_per_page	= $this->number;
$all_dates_with_id	= $this->getAllDates;
$count_all			= count($all_dates_with_id);

// Header
?>
<div id="icagenda" class="ic-list-view<?php echo $this->pageclass_sfx; ?>">
	<?php if ($this->params->get('show_page_heading', 1)) : ?>
	<h1 class="componentheading">
	<?php echo $this->escape($this->params->get('page_heading')); ?>
	</h1>
	<?php endif; ?>

	<?php
	$tpl_template_events	= JPATH_SITE . '/components/com_icagenda/themes/packs/'.$this->template.'/'.$this->template.'_events.php';
	$tpl_template_list		= JPATH_SITE . '/components/com_icagenda/themes/packs/'.$this->template.'/'.$this->template.'_list.php';
	$tpl_default_events		= JPATH_SITE . '/components/com_icagenda/themes/packs/'.$this->template.'/'.$this->template.'_events.php';
	$tpl_component_css		= JPATH_SITE . '/components/com_icagenda/themes/packs/'.$this->template.'/css/'.$this->template.'_component.css';

	// Setting component css file to load
	if ( file_exists($tpl_component_css) )
	{
		$css_component	= '/components/com_icagenda/themes/packs/'.$this->template.'/css/'.$this->template.'_component.css';
		$css_com_rtl	= '/components/com_icagenda/themes/packs/'.$this->template.'/css/'.$this->template.'_component-rtl.css';
	}
	else
	{
		$css_component	= '/components/com_icagenda/themes/packs/default/css/default_component.css';
		$css_com_rtl	= '/components/com_icagenda/themes/packs/default/css/default_component-rtl.css';
	}

	// New file to display all dates for each events
	if ( file_exists($tpl_template_events) )
	{
		$tpl_events		= $tpl_template_events;
	}
	elseif ( (!$this->template || $this->template != 'default')
		&& file_exists($tpl_template_list)
		&& $this->dates_display == 1 )
	{
		$msg = 'iCagenda ' . JText::_('PHPMAILER_FILE_ACCESS') . ' <strong>' . $this->template . '_events.php</strong>';
		$app->enqueueMessage($msg, 'warning');
		$tpl_events		= JPATH_SITE . '/components/com_icagenda/themes/packs/default/default_events.php';
		$css_component	= '/components/com_icagenda/themes/packs/default/css/default_component.css';
	}
	elseif ( (!$this->template || $this->template != 'default')
		&& $this->dates_display != 1 )
	{
		$tpl_events		= $tpl_template_events;
	}
	else
	{
		$msg = 'iCagenda ' . JText::_('PHPMAILER_FILE_OPEN') . ' <strong>' . $this->template . '_events.php</strong>';
		$app->enqueueMessage($msg, 'warning');

		return false;
	}

	// If theme pack is not having YOUR_THEME_events.php file, loading YOUR_THEME_list.php file to display list of events
	if ( file_exists($tpl_template_list)
		&& !file_exists($tpl_template_events) )
	{
		$tpl_list		= $tpl_template_list;
	}
	else
	{
		$tpl_list		= JPATH_SITE . '/components/com_icagenda/themes/packs/default/default_events.php';
	}

	// Add the media specific CSS to the document
	JLoader::register('iCagendaMediaCss', JPATH_ROOT . '/components/com_icagenda/helpers/media_css.class.php');
	iCagendaMediaCss::addMediaCss($this->template, 'component');

	// Start Header
	echo '<div class="ic-clearfix">';

	// Header - Title / Subtitle
	if ($this->params->get('headerList', 1) != '4')
	{
//		echo iCModeliChelper::iCheader($count_all, $getpage, $this->arrowtext, $number_per_page, $this->pagination);
		echo iCModeliChelper::iCheader($count_all, $this->arrowtext, $number_per_page, $this->pagination);
	}

	// Header - Categories Information
	echo $this->loadTemplate('categories');

	// End Header
	echo '</div>';
	?>

	<form id="icagenda-list" name="iclist" action="<?php echo JRoute::_('index.php?option=com_icagenda&view=list'); ?>" method="post">

	<?php //echo $this->loadTemplate('filters'); ?>

	<?php
	// Header - Pagination
	if ( in_array($this->navposition, array('0', '2')) )
	{
//		echo iCModeliChelper::pagination($count_all, $getpage, $this->arrowtext, $number_per_page, $this->pagination);
		echo iCModeliChelper::pagination($count_all, $this->arrowtext, $number_per_page, $this->pagination);
	}

	$mainframe = JFactory::getApplication();
	$isSef = $mainframe->getCfg( 'sef' );

	// To be checked
	$EVENT_NEXT = (isset($EVENT_NEXT)) ? $EVENT_NEXT : false;

	if ($control)
	{
		if (file_exists($tpl_events)
			&& count($all_dates_with_id) > 0
			)
		{
			echo "<!-- " . $this->template . " -->";

			// Set number of events to be displayed per page
			$index = $number_per_page * ($getpage - 1);
			$recordsToBeDisplayed = array_slice($all_dates_with_id, $index, $number_per_page, true);

			// Do for each dates to be displayed on this list of events, depending of menu and/or global options
			for ($i = 0; $i < count($all_dates_with_id); $i++)
			{
				// Get id and date for each date to be displayed
				$evt_date_id		= $all_dates_with_id[$i];
				$ex_alldates_array	= explode('_', $evt_date_id);
				$evt				= $ex_alldates_array['0'];
				$evt_id				= $ex_alldates_array['1'];

				if (in_array($evt_date_id, $recordsToBeDisplayed))
				{
					foreach ($this->data->items as $item)
					{
						if ($evt_id == $item->id)
						{
							// Load Events List/Event Details common Data variables
							require $icsetvar;

							// Load Template to display Event
							require $tpl_events;
						}
					}
				}
			}
		}
		// Only for Theme Packs not updated
		else
		{
			$stamp->items = $this->data->items;

			require $tpl_list;
		}

		// List Bottom
		echo '<div>';

		if (file_exists($tpl_events))
		{
			// AddThis buttons
			if ($this->atlist && isset($item->share))
			{
				echo '<div class="share">' . $item->share . '</div><div style="clear:both"></div>';
			}
		}

		// List Bottom - Navigation & pagination
		if ( $this->navposition == '1' || $this->navposition == '2' )
		{
//			echo iCModeliChelper::pagination($count_all, $getpage, $this->arrowtext, $number_per_page, $this->pagination);
			echo iCModeliChelper::pagination($count_all, $this->arrowtext, $number_per_page, $this->pagination);
		}

		echo '</div>';
		echo '<div style="clear:both">&nbsp;</div>';
	}

	$this->dispatcher->trigger('onListAfterDisplay', array('com_icagenda.list', &$this->data->items, &$this->params));
	?>
	</form>
</div>

<?php
// Theme pack component css
$document->addStyleSheet( JURI::base( true ) . $css_component );

// RTL css if site language is RTL
$lang = JFactory::getLanguage();

if ( $lang->isRTL()
	&& file_exists( JPATH_SITE . $css_com_rtl) )
{
	$document->addStyleSheet( JURI::base( true ) . $css_com_rtl );
}
views/list/tmpl/default.xml000060400000016045152455753310012012 0ustar00<?xml version="1.0" encoding="utf-8"?>
<metadata>
	<layout title="COM_ICAGENDA_LIST_VIEW_DEFAULT_TITLE">
		<message>COM_ICAGENDA_LIST_VIEW_DEFAULT_DESC</message>
	</layout>

	<fields id="params" name="params" type="fields" label="params" addfieldpath="/administrator/components/com_icagenda/models/fields">

		<fieldset name="ICAGENDA" label="COM_ICAGENDA_MENU_OPTIONS" addfieldpath="/administrator/components/com_icagenda/assets/elements">

			<field type="Title" label="COM_ICAGENDA_LOGO" class="styleblanck" />
			<field
					name="template"
					type="modal_template"
					label="COM_ICAGENDA_THEME_PACK_LBL"
					description="COM_ICAGENDA_THEME_PACK_DESC"
					size="40"
					class="inputbox"
					default="default"
			/>

			<field type="Title" label="COM_MENUS_FILTER_FIELDSET_LABEL"  class="stylebox lead input-xxlarge"/>
			<field
					name="mcatid"
					type="modal_multicat"
					class="inputbox"
					multiple="multiple"
					default="0"
					label="COM_ICAGENDA_LBL_CATEGORY"
					description="COM_ICAGENDA_DESC_CATEGORY"
			/>
			<field
					name="time"
					type="list"
					class="inputbox"
					label="COM_ICAGENDA_TIME_LBL"
					description="COM_ICAGENDA_TIME_DESC"
					default="">
						<option value="">JGLOBAL_USE_GLOBAL</option>
						<option value="2">COM_ICAGENDA_OPTION_PAST_EVENTS</option>
						<option value="4">COM_ICAGENDA_OPTION_CURRENT_EVENTS_TODAY_EVENTS</option>
						<option value="1">COM_ICAGENDA_OPTION_CURRENT_EVENTS_TODAY_AND_UPCOMING_EVENTS</option>
						<option value="3">COM_ICAGENDA_OPTION_UPCOMING_EVENTS</option>
						<option value="0">COM_ICAGENDA_OPTION_ALL_EVENTS</option>
			</field>
			<field
					name="orderby"
					type="list"
					label="COM_ICAGENDA_LBL_DATE"
					description="COM_ICAGENDA_DESC_DATE"
					default="">
						<option value="">JGLOBAL_USE_GLOBAL</option>
						<option value="1">COM_ICAGENDA_DATE_DESC</option>
						<option value="2">COM_ICAGENDA_DATE_ASC</option>
			</field>
			<field
					name="datesDisplay"
					type="radio"
					label="COM_ICAGENDA_LIST_TYPE_LBL"
					description="COM_ICAGENDA_LIST_TYPE_DESC"
					class="btn-group"
					labelclass="control-label"
					onchange="icalert()"
					default="">
						<option value="">JGLOBAL_USE_GLOBAL</option>
						<option value="1">JYES</option>
						<option value="2">JNO</option>
						<!--option value="1">COM_ICAGENDA_LIST_ALL_DATES</option>
						<option value="2">COM_ICAGENDA_LIST_ALL_EVENTS</option-->
			</field>
			<field
					name="eventsfile_error"
					type="modal_icalert_msg"
					label="COM_ICAGENDA_THEME_PACKS_COMPATIBILITY"
					description="COM_ICAGENDA_ALERT_EVENTS_FILE_MISSING_DESC"
			/>
			<field
					name="features_filter"
					type="sql"
					query="SELECT id AS value, title AS features_filter FROM #__icagenda_feature WHERE state=1 AND show_filter=1 ORDER BY features_filter"
					multiple="true"
					class="inputbox"
					label="COM_ICAGENDA_FORM_LBL_EVENT_FEATURES"
					description="COM_ICAGENDA_FORM_DESC_EVENT_FEATURES_FILTER"
			/>
			<field
					name="features_incl_excl"
					type="radio"
					label="COM_ICAGENDA_MENU_EVENT_FEATURES_INCLUDE_EXCLUDE_LBL"
					description="COM_ICAGENDA_MENU_EVENT_FEATURES_INCLUDE_EXCLUDE_DESC"
					default="1"
					class="btn-group">
						<option value="1">COM_ICAGENDA_MENU_EVENT_FEATURES_INCLUDE</option>
						<option value="0">COM_ICAGENDA_MENU_EVENT_FEATURES_EXCLUDE</option>
			</field>
			<field
					name="features_any_all"
					type="radio"
					label="COM_ICAGENDA_MENU_EVENT_FEATURES_ALL_OR_ANY_LBL"
					description="COM_ICAGENDA_MENU_EVENT_FEATURES_ALL_OR_ANY_DESC"
					default="1"
					class="btn-group">
						<option value="1">COM_ICAGENDA_MENU_EVENT_FEATURES_ANY_ONE_FEATURE</option>
						<option value="2">COM_ICAGENDA_MENU_EVENT_FEATURES_ALL_FEATURES_REQUIRED</option>
			</field>

			<field type="Title" label=" " class="stylenote" />
			<field type="Title" label="COM_MENUS_VIEW_FIELDSET_LABEL"  class="stylebox lead input-xxlarge"/>

			<field
					name="displayCatDesc_menu"
					type="modal_icmulti_opt"
					default=""
					label="COM_ICAGENDA_DISPLAY_CATINFOS_LABEL"
					description="COM_ICAGENDA_DISPLAY_CATINFOS_DESC"
					labelclass="control-label"
			/>
			<field
					name="displayCatDesc_checkbox"
					type="modal_icmulti_checkbox"
					class="checkbox"
					label=" "
					labelclass="control-label"
			/>
			<field
					name="number"
					type="text"
					label="COM_ICAGENDA_LBL_NUMERO"
					description="COM_ICAGENDA_DESC_NUMERO"
					size="5"
					class="inputbox"
					default="5"
			/>

			<field type="Title" label="COM_ICAGENDA_LBL_FORMAT" class="styleblanck" />
			<field
					name="format"
					type="iclist_globalization"
					class="inputbox"
					default=""
					label="COM_ICAGENDA_LBL_FORMAT"
					description="COM_ICAGENDA_LBL_FORMAT"
			/>
			<field
					name="date_separator"
					type="text"
					label="COM_ICAGENDA_LBL_DATE_SEPARATOR"
					description="COM_ICAGENDA_DESC_DATE_COMPONENTS_SEPARATOR"
					size="5"
					class="inputbox"
					default=""
			/>
			<field type="TitleImg" label="COM_ICAGENDA_DATE_FORMAT_NOTE1"
				class="stylenote alert alert-info input-xxlarge" icimage="info.png"
			/>
			<field type="TitleImg" label="COM_ICAGENDA_DATE_FORMAT_NOTE2"
				class="stylenotep alert alert-block input-xxlarge" icimage="blanck.png"
			/>

			<field type="Title" label="IC_AUTO_INTROTEXT" class="styleblanck" />
			<field
					name="limitGlobal"
					type="radio"
					label="COM_ICAGENDA_LBL_LIMIT"
					description="COM_ICAGENDA_DESC_LIMIT"
					default="1"
					class="btn-group">
						<option value="1">JGLOBAL_USE_GLOBAL</option>
						<option value="0">COM_ICAGENDA_LBL_CUSTOM_VALUE</option>
			</field>
			<field
					name="limit"
					type="text"
					label="COM_ICAGENDA_LBL_CUSTOM_VALUE"
					description="COM_ICAGENDA_DESC_CUSTOM_VALUE"
					size="5"
					class="inputbox input-mini"
					default=""
			/>

			<field type="Title" label=" " class="stylenote" />
			<field type="Title" label="COM_ICAGENDA_LEGEND_GOOGLE_MAPS" class="styleblanck" />
			<field
					name="m_width"
					type="text"
					label="COM_ICAGENDA_LBL_MWIDTH"
					description="COM_ICAGENDA_DESC_MWIDTH"
					size="5"
					class="inputbox"
					default="100%"
			/>
			<field
					name="m_height"
					type="text"
					label="COM_ICAGENDA_LBL_MHEIGHT"
					description="COM_ICAGENDA_DESC_MHEIGHT"
					size="5"
					class="inputbox"
					default="300px"
			/>
    		<field type="Title" label="COM_ICAGENDA_FOOTER" class="styleblanck input-xxlarge" />
		</fieldset>
		<!--fieldset name="integration" label="COM_MENUS_INTEGRATION_FIELDSET_LABEL">

			<field name="show_feed_link" type="list"
				description="JGLOBAL_SHOW_FEED_LINK_DESC"
				label="JGLOBAL_SHOW_FEED_LINK_LABEL"
			>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JHIDE</option>
				<option value="1">JSHOW</option>
			</field>

			<field name="feed_summary" type="list"
				description="JGLOBAL_FEED_SUMMARY_DESC"
				label="JGLOBAL_FEED_SUMMARY_LABEL"
			>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="0">JGLOBAL_INTRO_TEXT</option>
				<option value="1">JGLOBAL_FULL_TEXT</option>
			</field>
		</fieldset-->
	</fields>

</metadata>
views/list/tmpl/default_categories.php000060400000003755152455753310014212 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version		3.5.4 2015-04-21
 * @since       3.4.1
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

$catid_array = array();
$catinfos_array = array();

if ($this->data->items && $this->cat_description && count($this->getAllDates) > 0)
{
	foreach ($this->data->items AS $cat)
	{
		$cat_id		= $cat->cat_id;
		$cat_title	= $cat->cat_title;
		$cat_color	= $cat->cat_color;

		if ($cat->cat_desc)
		{
			$cat_desc = $cat->cat_desc;
		}
		else
		{
			$cat_desc = ' ';
		}

		$fontColor = $cat->fontColor;

		array_push($catid_array, $cat_id);

		$array				= array($cat_title, $cat_color, $cat_desc, $fontColor);
		$comma_separated	= implode("::", $array);

		if (!in_array($comma_separated, $catinfos_array))
		{
			array_push($catinfos_array, $comma_separated);
		}
	}
}

$cat_result = array_unique($catid_array);

if (count($catinfos_array))
{
	echo '<div class="ic-header-categories ic-clearfix">';
}

for ($i = 0; $i < count($catinfos_array); $i++)
{
	$cat_getinfos = explode('::', $catinfos_array[$i]);

	if (in_array('1', $this->cat_options))
	{
		echo '<div class="cat_header_title ' . $cat_getinfos['3'] . ' ic-clearfix"';
		echo ' style="background: ' . $cat_getinfos['1'] . ';">' . $cat_getinfos['0'];
		echo ' </div>';
	}
	if (in_array('2', $this->cat_options))
	{
		echo '<div class="cat_header_desc ic-clearfix">' . $cat_getinfos['2'] . '</div>';
	}
}

if (count($catinfos_array))
{
	echo '</div>';
}
views/list/tmpl/registration.php000060400000056305152455753310013072 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.10 2015-08-27
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidation');

// Set Item Object
$this_item	= (array) $this->data->items;
$item		= array_shift($this_item);

$this_state		= $item->state;
$this_approval	= $item->approval;
$today			= time();
$this_today		= strtotime(date('Y-m-d', $today));
$this_next		= strtotime(date('Y-m-d', strtotime($item->next)));
$today_datetime	= JHtml::date('now', 'Y-m-d H:i:s');

// Access Control
$this_access_reg	= $item->accessReg;
$user				= JFactory::getUser();
$userLevels			= $user->getAuthorisedViewLevels();

$app = JFactory::getApplication();

$regUntilEnd = JComponentHelper::getParams('com_icagenda')->get('reg_end_period', 0);

// Error 404 if event doesn't exist OR date past
if (($item == NULL)
//	|| ($this_next < $this_today)
	|| ($this_state != 1)
	|| ($this_approval == 1)
	|| ((empty($this->statutReg) && ($item->statutReg == 0)) || ($item->statutReg == 0)) )
{
	JError::raiseError('404',JTEXT::_('JERROR_LAYOUT_PAGE_NOT_FOUND'));

	return false;
}
//elseif ($tickets_left <= 0)
elseif ( (
		$item->ticketsCouldBeBooked !== true
//		&& $regUntilEnd != 1
		)
//	|| (
//		$regUntilEnd == 1
//		&& $item->ticketsCouldBeBooked !== true
//		&& iCDate::isDate($item->enddatetime)
//		&& (strtotime($item->enddatetime) <= strtotime($today_datetime))
//		)
	)
{
	$app->enqueueMessage(JTEXT::_('JERROR_LAYOUT_PAGE_NOT_FOUND'), 'warning');

	return false;
}
elseif (!in_array($this_access_reg, $userLevels))
{
	// Redirect to login page if no access to registration form
	$return	= base64_encode($item->iCagendaRegForm);
	$rlink	= JRoute::_('index.php?option=com_users&view=login&return=' . $return, false);

	$msg = '<div>';
	$msg.= '<h2>';
	$msg.= JText::_('IC_AUTH_REQUIRED');
	$msg.= '</h2>';
	$msg.= '<div>';
	$msg.= JText::_("COM_ICAGENDA_LOGIN_TO_ACCESS_REGISTRATION_FORM");
	$msg.= '</div>';
	$msg.= '<br />';
	$msg.= '<div>';
	$msg.= '<a href="' . JRoute::_($item->Event_Link) . '" class="btn btn-default btn-small button">';
	$msg.= '<i class="iCicon iCicon-backic icon-white"></i>&nbsp;' . JTEXT::_('COM_ICAGENDA_BACK') . '';
	$msg.= '</a>';
	$msg.= '&nbsp;';
	$msg.= '<a href="index.php" class="btn btn-info btn-small button">';
	$msg.= '<i class="icon-home icon-white"></i>&nbsp;' . JTEXT::_('JERROR_LAYOUT_HOME_PAGE') . '';
	$msg.= '</a>';
	$msg.= '</div>';
	$msg.= '</div>';

	// if not login, and registration form not "public"
	$app->enqueueMessage($msg);
	$app->redirect($rlink);
}
else
{
	// prepare Document
	$document	= JFactory::getDocument();
	$menus		= $app->getMenu();
	$pathway 	= $app->getPathway();
	$title 		= null;

	$icsetvar = 'components/com_icagenda/add/elements/icsetvar.php';

	$menu = $menus->getActive();
	if ($menu)
	{
		$this->params->def('page_heading', $this->params->get('page_title', $item->title));
	}
	else
	{
		$this->params->def('page_heading', JText::_('JGLOBAL_ARTICLES'));
	}

	$title = JText::_( 'COM_ICAGENDA_REGISTRATION_TITLE' ).' : '.$item->title;

	if (empty($title))
	{
		$title = $app->getCfg('sitename');
	}
	elseif ($app->getCfg('sitename_pagetitles', 0) == 1)
	{
		$title = JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $title);
	}
	elseif ($app->getCfg('sitename_pagetitles', 0) == 2)
	{
		$title = JText::sprintf('JPAGETITLE', $title, $app->getCfg('sitename'));
	}
	$document->setTitle($title);


	// START OF THE PAGE
	?>
	<div id="icagenda" class="ic-registration-view<?php echo $this->pageclass_sfx; ?>">

		<?php
		// load Theme and css
		if (file_exists( JPATH_SITE . '/components/com_icagenda/themes/packs/'.$this->template.'/'.$this->template.'_registration.php' ))
		{
			$tpl_registration	= JPATH_SITE . '/components/com_icagenda/themes/packs/'.$this->template.'/'.$this->template.'_registration.php';
			$css_component		= '/components/com_icagenda/themes/packs/'.$this->template.'/css/'.$this->template.'_component.css';
			$css_com_rtl		= '/components/com_icagenda/themes/packs/'.$this->template.'/css/'.$this->template.'_component-rtl.css';
		}
		else
		{
			$tpl_registration	= JPATH_SITE . '/components/com_icagenda/themes/packs/default/default_registration.php';
			$css_component		= '/components/com_icagenda/themes/packs/default/css/default_component.css';
			$css_com_rtl		= '/components/com_icagenda/themes/packs/default/css/default_component-rtl.css';
		}

		// Add the media specific CSS to the document
		JLoader::register('iCagendaMediaCss', JPATH_ROOT . '/components/com_icagenda/helpers/media_css.class.php');
		iCagendaMediaCss::addMediaCss($this->template, 'component');

		echo "<!-- " . $this->template . " -->";

		// Loads Variables for Theme files
		require_once $icsetvar;

		// Loads Header
		require_once $tpl_registration;

		$user = JFactory::getUser();
		$u_id = $user->get('id');
		$u_mail = $user->get('email');

		// logged-in Users: Name/User Name Option
		$nameJoomlaUser = JComponentHelper::getParams('com_icagenda')->get('nameJoomlaUser', 1);

		if ($nameJoomlaUser == 1)
		{
			$u_name = $user->get('name');
		}
		else
		{
			$u_name = $user->get('username');
		}

		// Autofill name and email if registered user log in
		$autofilluser = JComponentHelper::getParams('com_icagenda')->get('autofilluser', 1);

		if ($autofilluser != 1)
		{
			$u_name = '';
			$u_mail = '';
		}

		// Get Phone Options
		$phoneDisplay = JComponentHelper::getParams('com_icagenda')->get('phoneDisplay', 1);

		// Get Notes Options
		$notesDisplay = JComponentHelper::getParams('com_icagenda')->get('notesDisplay', 0);

		$theme				= $this->template;

		//$infoimg			= JURI::root().'components/com_icagenda/themes/packs/'.$theme.'/images/info.png';
		$infoimg			= JURI::root().'components/com_icagenda/themes/packs/default/images/info.png';

		// Global Options
		$iCparams			= JComponentHelper::getParams('com_icagenda');
		$terms				= $iCparams->get('terms', 0);

		// Set Tooltips
		$icTip_userID	= htmlspecialchars('<strong>' . JText::_( 'ICAGENDA_REGISTRATION_FORM_USERID' ) . '</strong><br />' . JText::_( 'ICAGENDA_REGISTRATION_FORM_USERID_DESC' ) . '');
		$icTip_name		= htmlspecialchars('<strong>' . JText::_( 'ICAGENDA_REGISTRATION_FORM_NAME' ) . '</strong><br />' . JText::_( 'ICAGENDA_REGISTRATION_FORM_NAME_DESC' ) . '');
		$icTip_email	= htmlspecialchars('<strong>' . JText::_( 'ICAGENDA_REGISTRATION_FORM_EMAIL' ) . '</strong><br />' . JText::_( 'ICAGENDA_REGISTRATION_FORM_EMAIL_DESC' ) . '');
		$icTip_email2	= htmlspecialchars('<strong>' . JText::_( 'IC_FORM_EMAIL_CONFIRM_LBL' ) . '</strong><br />' . JText::_( 'IC_FORM_EMAIL_CONFIRM_DESC' ) . '');
		$icTip_phone	= htmlspecialchars('<strong>' . JText::_( 'ICAGENDA_REGISTRATION_FORM_PHONE' ) . '</strong><br />' . JText::_( 'ICAGENDA_REGISTRATION_FORM_PHONE_DESC' ) . '');
		$icTip_date		= htmlspecialchars('<strong>' . JText::_( 'ICAGENDA_REGISTRATION_FORM_DATE' ) . '</strong><br />' . JText::_( 'ICAGENDA_REGISTRATION_FORM_DATE_DESC' ) . '');
		$icTip_period	= htmlspecialchars('<strong>' . JText::_( 'ICAGENDA_REGISTRATION_FORM_PERIOD' ) . '</strong><br />' . JText::_( 'ICAGENDA_REGISTRATION_FORM_PERIOD_DESC' ) . '');
		$icTip_people	= htmlspecialchars('<strong>' . JText::_( 'ICAGENDA_REGISTRATION_FORM_PEOPLE' ) . '</strong><br />' . JText::_( 'ICAGENDA_REGISTRATION_FORM_PEOPLE_DESC' ) . '');

		// Variables
		$ic_required		= ' required="true"';
		$ic_required_icon	= '*';
		$ic_readonly		= ' readonly="true"';

		$session		= JFactory::getSession();
		$ic_submit_tos	= $session->get('ic_submit_tos', '');
		$post_email2	= $session->get('email2', '');
		$post			= $session->get('ic_registration', '');

		$post_name		= isset($post['name']) ? $post['name'] : '';
		$post_email		= isset($post['email']) ? $post['email'] : '';
		$post_phone		= isset($post['phone']) ? $post['phone'] : '';
		$post_date		= isset($post['date']) ? $post['date'] : '';
		$post_period	= isset($post['period']) ? $post['period'] : '';
		$post_people	= isset($post['people']) ? $post['people'] : '';
		$post_notes		= isset($post['notes'])? $post['notes'] : '';

		// Form Validation
		$novalidate			= ($this->reg_form_validation == 1) ? ' novalidate' : '';
		$form_validate		= ($this->reg_form_validation == 1) ? '' : ' form-validate';
		$iCheckForm			= ($this->reg_form_validation == 1) ? '' : ' onsubmit="return iCheckForm();"';
		?>

		<?php // START CONTENT ?>

		<?php // TITLE REGISTRATION ?>
		<div class="ic-form-title">
			<h1><?php echo JText::_( 'COM_ICAGENDA_REGISTRATION_TITLE' ); ?></h1>
		</div>

		<?php // ERROR ALERT ?>
		<div id="form_errors" class="alert alert-danger fade in" style="display:none">
			<strong><?php echo JText::_('JGLOBAL_VALIDATION_FORM_FAILED'); ?></strong>
			<div id="message_error">
			</div>
		</div>

		<?php // FIELDS REQUIRED INFO (not used) ?>
		<div class="ic-required-info">
			<?php echo JText::_( 'COM_ICAGENDA_FORM_REQUIRED_INFO' ); ?>
		</div>

		<?php // START FORM ?>
		<form id="registration" name="registration" action="<?php echo JRoute::_('index.php?option=com_icagenda'); ?>" class="icagenda_form<?php echo $form_validate; ?>" method="post" enctype="multipart/form-data"<?php echo $iCheckForm . $novalidate; ?>>
			<fieldset>
			<div class="fieldset">
				<?php if (($u_id) && ($autofilluser == 1)) : ?>
					<?php echo '<input type="hidden" name="uid" value="'.$u_id.'" />'; ?>
				<?php else : ?>
					<?php echo '<input type="hidden" name="uid" value="" disabled="disabled" size="2" />'; ?>
				<?php endif; ?>

				<?php // NAME FIELD ?>
					<?php
					$name_option = !empty($u_name) ? $ic_readonly : $ic_required;
					?>
					<div class="ic-control-group ic-clearfix">
						<div class="ic-control-label">
							<?php echo '<label id="reg_name-lbl" for="reg_name">' . JText::_( 'ICAGENDA_REGISTRATION_FORM_NAME' ) . ' ' . $ic_required_icon . '</label>'; ?>
						</div>
						<div class="ic-controls">
							<?php if (!$post_name) : ?>
								<?php echo '<input type="text" class="input-large required validate-username" aria-required="true" id="reg_name" name="name" value="'.$u_name.'"'.$name_option.' />'; ?>
							<?php else : ?>
								<?php echo '<input type="text" class="input-large required validate-username" aria-required="true" id="reg_name" name="name" value="'.$post_name.'"'.$name_option.' />'; ?>
							<?php endif; ?>
							<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_name . '"></span>'; ?>
						</div>
					</div>

				<?php // EMAIL FIELD ?>
					<?php
					$email_class = ' class="input-large required validate-email"';
					$email_required = !empty($item->emailRequired) ? $ic_required : '';
					$email_required_icon = !empty($item->emailRequired) ? $ic_required_icon : '';
					$email_readonly = !empty($u_mail) ? $ic_readonly : '';
					?>
					<div class="ic-control-group ic-clearfix">
						<div class="ic-control-label">
							<label id="reg_email-lbl" for="reg_email"><?php echo JText::_( 'ICAGENDA_REGISTRATION_FORM_EMAIL' ) . ' ' . $email_required_icon; ?></label>
						</div>
						<div class="ic-controls">
							<?php if ( ! $post_email) : ?>
								<?php echo '<input type="email" field="id" id="reg_email" name="email" value="' . $u_mail . '"' . $email_class . $email_required . $email_readonly . ' />'; ?>
							<?php else : ?>
								<?php echo '<input type="email" id="reg_email" name="email" value="' . $post_email . '"' . $email_class . $email_required . $email_readonly . ' />'; ?>
							<?php endif; ?>
							<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_email . '"></span>'; ?>
						</div>
					</div>
					<?php // Confirm Email (if not logged-in user) ?>
					<?php if ( ! $u_mail && $this->params->get('emailConfirm', 1)) : ?>
					<div class="ic-control-group ic-clearfix">
						<div class="ic-control-label">
							<label id="reg_email2-lbl" for="reg_email2"><?php echo JText::_( 'IC_FORM_EMAIL_CONFIRM_LBL' ) . ' ' . $email_required_icon; ?></label>
						</div>
						<div class="ic-controls">
							<?php echo '<input type="email" field="email" id="reg_email2" name="email2" value="' . $post_email2 . '" class="input-large required validate-emailverify" ' . $email_required . ' placeholder="' . JText::_( 'IC_FORM_EMAIL_CONFIRM_HINT' ) . '" />'; ?>
							<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_email2 . '"></span>'; ?>
						</div>
					</div>
					<?php endif; ?>

				<?php // PHONE FIELD ?>
				<?php if ($phoneDisplay == 1) : ?>
					<?php
					$phone_required = !empty($item->phoneRequired) ? $ic_required : '';
					$phone_required_icon = !empty($item->phoneRequired) ? $ic_required_icon : '';
					?>
					<div class="ic-control-group ic-clearfix">
						<div class="ic-control-label">
							<label id="reg_phone-lbl" for="reg_phone"><?php echo JText::_( 'ICAGENDA_REGISTRATION_FORM_PHONE' ) . ' ' . $phone_required_icon; ?></label>
						</div>
						<div class="ic-controls">
							<?php if (!$post_phone) : ?>
								<?php echo '<input type="text" class="input-large" id="reg_phone" name="phone" value="" size="20"'.$phone_required.' />'; ?>
							<?php else : ?>
								<?php echo '<input type="text" class="input-large" id="reg_phone" name="phone" value="' . $post_phone . '" size="20"'.$phone_required.' />'; ?>
							<?php endif; ?>
							<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_phone . '"></span>'; ?>
						</div>
					</div>
				<?php endif; ?>


				<?php // DATE FIELD ?>
				<?php $typeReg = $item->typeReg; ?>

				<?php // Dates List ?>
				<?php if ($typeReg == 1) : ?>
					<div class="ic-control-group ic-clearfix">
						<div class="ic-control-label">
							<label><?php echo JText::_( 'ICAGENDA_REGISTRATION_FORM_DATE' ); ?></label>
						</div>
						<div class="ic-controls ic-select">
							<select type="list" class="select-large" name="date">
								<?php
								foreach ($item->datelistMkt as $date)
								{
									$date_get = explode('@@', $date);
									$date_value = $date_get[0];
									$date_label = $date_get[1];

									$selected = ($post_date == $date_value) ? ' selected' : '';

									echo '<option value="' . $date_value . '"' . $selected . '>' . $date_label . '</option>';
								}
								?>
							</select>
							<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_date . '"></span>'; ?>
						</div>
					</div>
				<?php // Only Period ?>
				<?php else : ?>
					<?php if ($item->periodDisplay && ($item->periodControl == 1)) : ?>
						<div class="ic-control-group ic-clearfix">
							<div>
								<label><?php echo JText::_( 'ICAGENDA_REGISTRATION_FORM_PERIOD' ); ?></label>
							</div>
							<div class="ic-controls">
								<input type="hidden" name="period" value="1" />
								<?php
									$start = $item->startDate.' <span class="evttime">'.$item->startTime.'</span>';
									$end = $item->endDate.' <span class="evttime">'.$item->endTime.'</span>';
									echo $start.' - '.$end;
								?>
							</div>
						</div>
					<?php else : ?>
						<input type="hidden" name="period" value="1" />
					<?php endif; ?>
				<?php endif; ?>

				<?php // NUMBER OF PEOPLE FIELD ?>
				<?php $maxRlist = $item->maxRlist; ?>

				<?php if ($maxRlist > 1) : ?>
					<div class="ic-control-group ic-clearfix">
						<div class="ic-control-label">
							<label><?php echo JText::_( 'ICAGENDA_REGISTRATION_FORM_PEOPLE' ); ?></label>
						</div>
						<div class="ic-controls ic-select">
							<select id="people" type="list" class="select-large" name="people">
							<?php
								$maxRlist		= $item->maxRlist;
								$maxReg			= $item->maxReg;
								$registered		= $item->registered;
								$placeRemain	= ($maxReg - 0);

								for ($i=1; $i <= $maxRlist; $i++)
								{
									$selected = ($post_people == $i) ? ' selected' : '';

									echo '<option value="'.$i.'"' . $selected . '>'.$i.'</option>';
								}
							?>
							</select>
						<?php echo '<span class="iCFormTip iCicon iCicon-info-circle" title="' . $icTip_people . '"></span>'; ?>
						</div>
					</div>
				<?php else : ?>
					<input type="hidden" name="people" value="1" />
				<?php endif; ?>


				<?php // CUSTOM FIELDS ?>
					<?php
						// Load Custom fields - Registration form (1)
						echo icagendaCustomfields::loader(1);
					?>


				<?php // NOTES FIELD ?>
				<?php if ($notesDisplay == 1) : ?>
					<div class="ic-control-group ic-clearfix">
						<div class="ic-control-label">
							<label><?php echo JText::_( 'ICAGENDA_REGISTRATION_FORM_NOTES' ); ?></label>
						</div>
						<div class="ic-controls">
							<textarea name="notes" rows="10" cols="5" style="width:100%" placeholder="<?php echo JText::_( 'ICAGENDA_REGISTRATION_FORM_NOTES_DESC' ); ?>"><?php echo $post_notes; ?></textarea>
						</div>
					</div>
				<?php endif; ?>


				<?php // Hidden fields to process redirection
				$eventID = JRequest::getInt('id');
				$ItemID = JRequest::getInt('Itemid');
				$current_url = JURI::getInstance()->toString();
				?>

				<?php // Input to process registration function ?>
				<input type="hidden" name="event" value="<?php echo $eventID; ?>" />
				<input type="hidden" name="menuID" value="<?php echo $ItemID; ?>" />
				<input type="hidden" name="current_url" value="<?php echo $current_url; ?>" />
				<input type="hidden" name="max_nb_of_tickets" value="<?php echo $item->maxReg; ?>" />
				<!--input type="hidden" id="tos" name="submit_tos" value="<?php echo $ic_submit_tos; ?>" /-->

				<label style="display:none" id="formAgree-lbl" for="formAgree"><?php echo JText::_( 'COM_ICAGENDA_TERMS_AND_CONDITIONS'); ?></label>
				<?php
				/**
				 * Terms of Service Display
				 */
				if ($terms == 0)
				{
					// Terms of Service not displayed
					$tokenHTML = str_replace('type="hidden"','id="formAgree" name="tos" value="checked" required="true" type="checkbox" checked style="display:none"', JHtml::_( 'form.token' ));
					echo $tokenHTML;
					echo '<div class="ic-tos-content bgButton">';
				}
				elseif ($terms == 1)
				{
					// Terms of Service
					$checked = ($ic_submit_tos == 'checked') ? ' checked' : '';

					$tokenHTML = str_replace('type="hidden"', 'id="formAgree" name="tos" value="checked" required="true" type="checkbox"' . $checked, JHtml::_( 'form.token' ));

					// Get the site name
					$config = JFactory::getConfig();
					if(version_compare(JVERSION, '3.0', 'ge')) {
						$sitename = $config->get('sitename');
					} else {
						$sitename = $config->getValue('config.sitename');
					}

					// Tos Type
					$iCparams = JComponentHelper::getParams('com_icagenda');
					$terms_Type = $iCparams->get('terms_Type', '');
					$termsArticle = $iCparams->get('termsArticle', '');
					$termsContent = $iCparams->get('termsContent', '');

					$termsDEFAULT_STRING = JText::_( 'COM_ICAGENDA_REGISTRATION_TERMS');
					$termsDEFAULT = str_replace('[SITENAME]', $sitename, $termsDEFAULT_STRING);
					$termsARTICLE = 'index.php?option=com_content&view=article&id='.$termsArticle.'&tmpl=component';
					$termsCUSTOM = $termsContent;

					// Menu-item ID (fix 3.2.1.1)
					$menu = JFactory::getApplication()->getMenu();
					$menuItems = $menu->getActive();
					$menuID = $menuItems->id;
					?>
					<input type="hidden" name="menuID" value="<?php echo $menuID; ?>" />
					<div class="ic-tos-content bgButton">
						<div>
							<b><big><?php echo JText::_( 'COM_ICAGENDA_TERMS_AND_CONDITIONS'); ?></big></b>
						</div>
						<?php
						if ($terms_Type == 1)
						{
							echo '<iframe src="'.htmlentities($termsARTICLE).'" width="98%" height="150"></iframe>';
						}
						elseif ($terms_Type == 2)
						{
							echo '<div class="ic-tos-text">';
							echo $termsCUSTOM;
							echo '</div>';
						}
						else
						{
							echo '<div class="ic-tos-text">';
							echo $termsDEFAULT;
							echo '</div>';
						}
						?>
						<!--iframe src="<?php echo htmlentities($tosURL); ?>" width="98%" height="150"></iframe-->
						<div class="ic-tos-agree agreeToS">
							<p><?php echo $tokenHTML; ?> <?php echo JText::_( 'COM_ICAGENDA_TERMS_AND_CONDITIONS_AGREE'); ?> *</p>
						</div>
					<?php
				}
				?>

					<?php // RECAPTCHA ?>
					<?php if ($this->reg_captcha != '0') : ?>
					<div class="ic-control-group ic-clearfix">
						<div class="ic-control-label">
							<label>&nbsp;</label>
						</div>
						<div class="ic-controls">
							<?php echo $this->form->getInput('captcha'); ?>
						</div>
					</div>
					<br />
					<?php endif; ?>

					<div id="submit">
						<span>
							<button type="submit" class="button validate"><?php echo JText::_('JREGISTER');?></button>
							<input type="hidden" name="task" value="" />
							<input type="hidden" name="return" value="index.php" />
							<?php if (false) echo JHtml::_( 'form.token' ); ?>
						</span>
						<span class="buttonx">
							<a href="<?php echo $item->Event_Link; ?>" title="<?php echo JTEXT::_('COM_ICAGENDA_CANCEL'); ?>">
								<?php echo JTEXT::_('COM_ICAGENDA_CANCEL'); ?>
							</a>
						</span>
					</div>
				</div><?php // End Div bgButton ?>
			</div><?php // End Form Fields ?>
			<div style="clear:both"></div>
			</fieldset>
		</form>
	</div>
	<?php
	// clear the data so we don't process it again
	$session->clear('ic_registration');
	$session->clear('custom_fields');
	$session->clear('ic_submit_tos');
	$session->clear('email2');

	// iCagenda Script validation for Registration form (1)
	if ( ! $this->reg_form_validation)
	{
		$iCheckForm = icagendaForm::submit(1);
		JFactory::getDocument()->addScriptDeclaration($iCheckForm);
	}

	// Theme pack component css
	$document->addStyleSheet( JURI::base( true ) . $css_component );

	// RTL css if site language is RTL
	$lang = JFactory::getLanguage();

	if ( $lang->isRTL()
		&& file_exists( JPATH_SITE . $css_com_rtl) )
	{
		$document->addStyleSheet( JURI::base( true ) . $css_com_rtl );
	}

	JHtml::script( 'com_icagenda/icagenda.js', false, true );

	$iCtip	 = array();
	$iCtip[] = '	jQuery(document).ready(function(){';
	$iCtip[] = '		jQuery(".iCFormTip").tipTip({maxWidth: "250px", defaultPosition: "right", edgeOffset: 10});';
	$iCtip[] = '	});';

	// Add the script to the document head.
	JFactory::getDocument()->addScriptDeclaration(implode("\n", $iCtip));

	// Add custom handler to check both the emails (Email and Confirm Email) are same
	JFactory::getDocument()->addScriptDeclaration('jQuery(document).ready(function(){
		document.formvalidator.setHandler("emailverify", function (value) {
			var email = document.getElementById("reg_email");
			var email2 = document.getElementById("reg_email2");
			return (email.value === email2.value);
		});
	});');

	// Disable submit button after first click
	JFactory::getDocument()->addScriptDeclaration('
		jQuery(function($) {
			$("#registration").one("submit", function() {
				$(this).find(\'button[type="submit"]\')
					.attr("disabled","disabled")
					.css({
						"background-color": "transparent",
						"color": "grey"
					});
				$("#submit").addClass("ic-loader");
				$(".buttonx").css("display", "none");
			});
		});
	');
}
views/list/tmpl/default_vcal.php000060400000010501152455753310012775 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Tom-Henning (MaW) / Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-05-11
 * @since       3.2.9
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

require_once JPATH_COMPONENT . '/helpers/iCalcreator.class.php';

//$v = new vCalendar($config);
$v = new vCalendar();
$v->setConfig( 'filename', 'icagenda.ics' );
$v->prodid = 'iCagenda';

$config = JFactory::getConfig();

// Joomla 3.x / 2.5 SWITCH
if (version_compare(JVERSION, '3.0', 'ge'))
{
	$offset = $config->get('offset');
}
else
{
	$offset = $config->getValue('config.offset');
}

$dateTimeZone	= new DateTimeZone($offset);
$dateTime		= new DateTime("now", $dateTimeZone);
$timeOffset		= $dateTimeZone->getOffset($dateTime);
$timezone		= ($timeOffset / 3600);

$tz = 'UTC';
$v->setProperty( 'method', 'PUBLISH' );
$v->setProperty( 'X-WR-CALDESC', '' );
$v->setProperty( 'X-WR-TIMEZONE', $tz);
$xprops = array( 'X-LIC-LOCATION' => $tz);

if (version_compare(PHP_VERSION, '5.3.0') >= 0)
{
	iCalUtilityFunctions::createTimezone($v, $tz, $xprops);
}
$stamp = $this->data;

$get_date = '';
$href='#';
$start_Datetime = '';
$start_Date = '';
$end_Datetime = '';
$end_Date = '';

foreach ($stamp->items as $item)
{
	$s_dates		= $item->dates;
	$single_dates	= unserialize($s_dates);

	if (JRequest::getVar('date', ''))
	{
		$var_one_date = JRequest::getVar('date');
		$one_ex = explode('-', $var_one_date);
		$get_one_date = $one_ex['0'].'-'.$one_ex['1'].'-'.$one_ex['2'].' '.$one_ex['3'].':'.$one_ex['4'].':00';
		$get_date = date('Y-m-d-H-i', strtotime($get_one_date)-$timeOffset);
	}
	else
	{
		$get_date = date('Y-m-d-H-i', strtotime($item->next)-$timeOffset);
	}

	$ex			= explode('-', $get_date);
	$this_date	= $ex['0'].'-'.$ex['1'].'-'.$ex['2'].' '.$ex['3'].':'.$ex['4'];

	$startdate	= date('Y-m-d-H-i', strtotime($item->start_datetime)-$timeOffset);
	$enddate	= date('Y-m-d-H-i', strtotime($item->end_datetime)-$timeOffset);

	if ( ($get_date >= $startdate)
		&& ($get_date <= $enddate)
		&& ( ! in_array($this_date, $single_dates)) )
	{
		$weekdays	= ($item->weekdays || $item->weekdays == '0') ? true : false;

		if ($weekdays)
		{
			$startdate	= date('Y-m-d-H-i', strtotime($this_date));
			$enddate	= date('Y-m-d', strtotime($this_date)) . '-' . date('H-i', strtotime($item->end_datetime)-$timeOffset);
		}

		$ex_S		= explode('-', $startdate);
		$ex_E		= explode('-', $enddate);

		$start_Datetime = $ex_S['0'].$ex_S['1'].$ex_S['2'].'T'.$ex_S['3'].$ex_S['4'].'00Z';
		$end_Datetime = $ex_E['0'].$ex_E['1'].$ex_E['2'].'T'.$ex_E['3'].$ex_E['4'].'00Z';
//		$start_Date = $ex_S['0'].$ex_S['1'].$ex_S['2'];
//		$end_Date = $ex_E['0'].$ex_E['1'].$ex_E['2'];
	}
	else
	{
		$start_Datetime = $end_Datetime = $ex['0'].$ex['1'].$ex['2'].'T'.$ex['3'].$ex['4'].'00Z';
//		$start_Date = $end_Date = $ex['0'].$ex['1'].$ex['2'];
	}

	$urllink = JUri::getInstance()->toString();
	$cleanurl = preg_replace('/&tmpl=[^&]*/', '', $urllink);
	$cleanurl = preg_replace('/&vcal=[^&]*/', '', $cleanurl);

	$vevent = &$v->newComponent('vevent');
	$vevent->setProperty('categories', $item->cat_title);
	$vevent->setProperty('summary', $item->title);
	$vevent->setProperty('description', strip_tags($item->desc));
	$vevent->setProperty('url', $item->Event_Link);
	$vevent->setUID($item->id);

	if ( $item->contact_name != '' )
	{
		$vevent->setOrganizer($item->contact_name, $item->contact_email);
	}

//	if ($item->displaytime == 1)
//	{
		$vevent->setProperty('dtstart', $start_Datetime);
		$vevent->setProperty('dtend', $end_Datetime);
//	}
//	else
//	{
		// All day event (if time not displayed)
//		$vevent->setProperty('dtstart', $start_Date, array("VALUE" => "DATE"));
//		$vevent->setProperty('dtend', $end_Date, array("VALUE" => "DATE"));
//		//$vevent->setProperty ("duration" , "PT24H");
//	}

	$vevent->setProperty('location',$item->place_name);
}

$v->returnCalendar();
views/list/tmpl/actions.php000060400000004371152455753310012014 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.6 2015-05-17
 * @since       3.6.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

// Set Item Object
$this_item	= (array) $this->data->items;
$item		= array_shift($this_item);
?>

<div id="icagenda" class="ic-actions-view<?php echo $this->pageclass_sfx; ?>">
	<?php
	// Set base path
//	JLayoutHelper::$defaultBasePath = JPATH_PLUGINS . '/content/ic_paypal/layouts';

	// Render mylayout.php
//	$renderedLayout = JLayoutHelper::render($item);
//	echo $renderedLayout;

	$app = JFactory::getApplication();
	$status = $app->input->get('status', '');

	if ($status)
	{
		$layout = new JLayoutFile($status, $basePath = JPATH_PLUGINS . '/content/ic_' . $status . '/layouts');
		$displayData = array('item' => $item, 'actions' => $this->actions, 'params' => $this->params);
		$html = $layout->render($displayData);

		echo $html;
	}
	else
	{
		echo 'No Action for this page';
	}

//	$layout = new JLayoutFile('plugins.content.ic_paypal.layouts.payment_test');
//	$renderedLayout = JLayoutHelper::render('payment_test');
//	$data = array();
//	echo $layout->render($item);
//	$this->getLayout('payment_test');

//	echo $this->loadTemplate('test');
	?>
	<div>
		<a href="index.php" class="btn btn-small btn-info button">
		<?php if(version_compare(JVERSION, '3.0', 'ge')) : ?>
			<i class="icon-home icon-white"></i>&nbsp;<?php echo JTEXT::_('JERROR_LAYOUT_HOME_PAGE'); ?>
		<?php else : ?>
			<span style="color:#FFF"><?php echo JTEXT::_('JERROR_LAYOUT_HOME_PAGE'); ?></span>
		<?php endif; ?>
		</a>
	</div>
	<br />
</div>
<?php
if (version_compare(JVERSION, '3.0', 'lt'))
{
	JHtml::_('stylesheet', 'icagenda-front.j25.css', 'components/com_icagenda/add/css/');
}
views/list/tmpl/index.html000060400000000054152455753310011632 0ustar00<html><body bgcolor="#FFFFFF"></body></html>views/list/tmpl/event.php000060400000021447152455753310011500 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.6 2015-06-11
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

// Get Application
$app = JFactory::getApplication();

// User Access Levels
$user = JFactory::getUser();
$userLevels = $user->getAuthorisedViewLevels();

// User Groups
$userGroups = $user->groups;

// Set Item Object
$this_item	= (array) $this->data->items;
$item		= array_shift($this_item);

// Event Access Control
$EventID = $app->input->getInt('id');

$eventAccess	= icagendaEvents::eventAccess($EventID);

$evtState		= $eventAccess->evtState;
$evtApproval	= $eventAccess->evtApproval;
$evtAccess		= $eventAccess->evtAccess;
$accessName		= $eventAccess->accessName;

// Redirect to login page if no access to registration form
$uri	= JFactory::getURI();
$return	= base64_encode($uri);
$rlink	= JRoute::_("index.php?option=com_users&view=login&return=$return", false);

// Add Error or Alert Page
if ($evtState == 1
	&& $evtApproval == 1
	&& $this->data->items == NULL)
{
	// Set Return Page
	$return = JURI::getInstance()->toString();

	// redirect after successful registration
	$app->enqueueMessage(JText::_('JGLOBAL_YOU_MUST_LOGIN_FIRST'), 'info');
	$app->redirect($rlink);
}
elseif ($evtApproval == 0
	&& ! in_array($evtAccess, $userLevels)
	&& ! in_array('8', $userGroups))
{
	if ($user->id)
	{
		$app->enqueueMessage(JText::_( 'JERROR_LOGIN_DENIED' ), 'warning');
		$app->redirect($rlink);
	}
	else
	{
		$app->enqueueMessage(JText::_( 'JGLOBAL_YOU_MUST_LOGIN_FIRST' ), 'info');
		$app->redirect($rlink);
	}
}
elseif ( ! $evtState)
{
		JError::raiseError('404', JText::_( 'COM_ICAGENDA_PAGE_NOT_FOUND' ));

		return false;
}
else
{
	$isSef = $app->getCfg('sef');

	// prepare Document
	$document	= JFactory::getDocument();
	$menus		= $app->getMenu();
	$pathway 	= $app->getPathway();
	$title 		= null;

	// Load Variables file
	$icsetvar = 'components/com_icagenda/add/elements/icsetvar.php';

	// Set Joomla Site Title (Page Header Title)
	$menu = $menus->getActive();

	if ($menu)
	{
		$this->params->def('page_heading', $this->params->get('page_title', $item->title));
	}
	else
	{
		$this->params->def('page_heading', JText::_('JGLOBAL_ARTICLES'));
	}

	$title = $item->title;

	if (empty($title))
	{
		$title = $app->getCfg('sitename');
	}
	elseif ($app->getCfg('sitename_pagetitles', 0) == 1)
	{
		$title = JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $title);
	}
	elseif ($app->getCfg('sitename_pagetitles', 0) == 2)
	{
		$title = JText::sprintf('JPAGETITLE', $title, $app->getCfg('sitename'));
	}

	// Open Graph Tags
	$eventTitle		= $item->metaTitle;
	$eventType		= 'article';
	$eventImage		= $item->image;
	$imgLink		= filter_var($eventImage, FILTER_VALIDATE_URL);
	$eventUrl		= JURI::getInstance()->toString();
	$sitename		= $app->getCfg('sitename');
	$og_desc		= $item->metaDesc;

	// Add to the breadcrumb
	$pathway->addItem($item->title);

	if (JRequest::getVar('tmpl') != 'component')
	{
		if ($eventTitle)
		{
			$document->setTitle($title);
			$document->addCustomTag('<meta property="og:title" content="' . $eventTitle . '" />');
		}
		if ($eventType)
		{
			$document->addCustomTag('<meta property="og:type" content="' . $eventType . '" />');
		}
		if ($eventImage)
		{
			if ($imgLink)
			{
				$document->addCustomTag('<meta property="og:image" content="' . $eventImage . '" />');
			}
			else
			{
				$document->addCustomTag('<meta property="og:image" content="' . JURI::base() . $eventImage . '" />');
			}
		}
		if ($eventUrl)
		{
			$document->addCustomTag('<meta property="og:url" content="' . $eventUrl . '" />');
		}
		if ($og_desc)
		{
			$document->setDescription($og_desc);
			$document->addCustomTag('<meta property="og:description" content="' . $og_desc . '" />');
		}
		if ($sitename)
		{
			$document->addCustomTag('<meta property="og:site_name" content="' . $sitename . '" />');
		}
	}

	$stamp = $this->data;

	$iCicons = new iCicons();

	$icu_approve	= JRequest::getVar('manageraction', '');
	$icu_layout		= JRequest::getVar('layout', '');

	if (version_compare(JVERSION, '3.0', 'lt')) {
		$approveIcon = '<span class="iCicon-16 approval"></span>';
	} else {
		$approveIcon = '<button class="btn btn-micro btn-warning btn-xs "><i class="icon-checkmark"></i></button>';
	}

	$approval_msg	= JText::sprintf('COM_ICAGENDA_APPROVE_AN_EVENT_NOTICE', $approveIcon);
	$approval_title	= JText::_( 'COM_ICAGENDA_APPROVE_AN_EVENT_LBL' );
	$approval_type	= 'notice';
	?>

	<div id="icagenda" class="ic-event-view<?php echo $this->pageclass_sfx; ?>">

	<?php // Back Arrow ?>
	<div class="ic-top-buttons">

		<?php
		if (JRequest::getVar('tmpl') != 'component')
		{
			$uri		= JUri::getInstance()->toString();
			$date_value	= JRequest::getVar('date', '');
			$evt_id		= JRequest::getVar('id', 0);
			$event_link	= JRoute::_('index.php?option=com_icagenda&view=list&layout=event&id='.$evt_id);

			$session	= JFactory::getSession();
			$session->set('date_value', $date_value);

			$print_url	= ($isSef == 1) ? $event_link.'?tmpl=component' : $event_link.'&tmpl=component';
			$ical_url	= ($isSef == 1) ? $uri.'?vcal=1' : $uri.'&vcal=1';
			$ical_url	= preg_replace('/\?date=[^\?]*/', '', $ical_url);
			$ical_url	= preg_replace('/&date=[^&]*/', '', $ical_url);

			echo '<div class="ic-back ic-clearfix">';
			echo $item->BackArrow;
			echo '</div>';

			echo '<div class="ic-buttons ic-clearfix">';

			if ($this->iconPrint_global == 2)
			{
				// Print icon
				echo '<div class="ic-icon">';
				echo $iCicons->showIcon('printpreview', $print_url);
				echo '</div>';
			}

			if ($this->iconAddToCal_global == 2)
			{
				// Add to Cal icon
				echo '<div class="ic-icon">';
				echo $iCicons->showIcon('vcal', $uri, $ical_url, $item->gcalendarUrl, $item->wlivecalendarUrl, $item->yahoocalendarUrl);
				echo '</div>';
			}

			// Manager Icons
			echo '<div class="ic-icon">';
			echo $item->ManagerIcons;

			if ($icu_approve != 'approve' && ($evtApproval == 1))
			{
				$app->enqueueMessage($approval_msg, $approval_title, $approval_type);
			}

			echo '</div>';
			echo '</div>';
		}
		else
		{
			echo '<div class="ic-printpopup-btn"><div>';
			echo $iCicons->showIcon('print');
			echo '</div></div>';
		}
		?>
	</div>
	<?php

	// load Theme and css
	if (file_exists( JPATH_SITE . '/components/com_icagenda/themes/packs/' . $this->template . '/' . $this->template . '_event.php' ))
	{
		$tpl_event		= JPATH_SITE . '/components/com_icagenda/themes/packs/' . $this->template . '/' . $this->template . '_event.php';
		$css_component	= '/components/com_icagenda/themes/packs/' . $this->template . '/css/' . $this->template . '_component.css';
		$css_com_rtl	= '/components/com_icagenda/themes/packs/' . $this->template . '/css/' . $this->template . '_component-rtl.css';
	}
	else
	{
		$tpl_event 		= JPATH_SITE . '/components/com_icagenda/themes/packs/default/default_event.php';
		$css_component	= '/components/com_icagenda/themes/packs/default/css/default_component.css';
		$css_com_rtl	= '/components/com_icagenda/themes/packs/default/css/default_component-rtl.css';
	}

	// Add the media specific CSS to the document
	JLoader::register('iCagendaMediaCss', JPATH_ROOT . '/components/com_icagenda/helpers/media_css.class.php');
	iCagendaMediaCss::addMediaCss($this->template, 'component');

	echo "<!-- " . $this->template . " -->";

	require_once $icsetvar;
	require_once $tpl_event;

	?>
	</div>
	<div>&nbsp;</div>
	<?php
}

$this->dispatcher->trigger('onEventAfterDisplay', array('com_icagenda.event', &$item, &$this->params));

// Theme pack component css
$document->addStyleSheet( JURI::base( true ) . $css_component );

// RTL css if site language is RTL
$lang = JFactory::getLanguage();

if ( $lang->isRTL()
	&& file_exists( JPATH_SITE . $css_com_rtl) )
{
	$document->addStyleSheet( JURI::base( true ) . $css_com_rtl );
}

// Google Maps api V3
if ( ! empty($item->lng)
	&& ! empty($item->lat)
	&& $item->lng != '0.0000000000000000'
	&& $item->lat != '0.0000000000000000'
	&& $this->GoogleMaps == 1)
{
	icagendaModelList::loadGMapScripts();
}

$iCAddToCal = array();

$iCAddToCal[] = '	jQuery(document).ready(function(){';
$iCAddToCal[] = '		jQuery(".ic-addtocal").tipTip({maxWidth: "200px", defaultPosition: "bottom", edgeOffset: 1, activation:"hover", keepAlive: true});';
$iCAddToCal[] = '	});';

// Add the script to the document head.
JFactory::getDocument()->addScriptDeclaration(implode("\n", $iCAddToCal));
views/list/index.html000060400000000054152455753310010656 0ustar00<html><body bgcolor="#FFFFFF"></body></html>views/list/view.feed.php000060400000004320152455753310011246 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.1 2015-01-14
 * @since       3.3.8
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/**
 * HTML View class - iCagenda - RSS Feeds.
 */
class icagendaViewList extends JViewLegacy
{
	function display($cachable = false, $urlparams = false)
	{
		$app		= JFactory::getApplication();
		$document	= JFactory::getDocument();
		$menuItem	= $app->getMenu()->getActive();

    	if (is_object($menuItem))
    	{
			$mcatid = $menuItem->params->get('mcatid', '');
			$filter_category = !is_array($mcatid) ? array($mcatid) : $mcatid;
    	}
    	else
    	{
			$filter_category = '';
    	}

		$items		= $this->get('Records');
//		$Itemid		= $app->input->getInt('Itemid');
		$Itemid		= JRequest::getInt('Itemid');

		foreach ($items as $item)
		{
			if ( !in_array('', $filter_category) && !in_array('0', $filter_category)
				&& in_array($item->catid, $filter_category)
				|| in_array('', $filter_category)
				|| in_array('0', $filter_category)
				)
			{
				// Load individual item creator class.
				$feeditem				= new JFeedItem;
				$feeditem->title		= $item->title . ' (' . $item->category . ')';
				$feeditem->link			= JROUTE::_('index.php?option=com_icagenda&view=list&layout=event&Itemid='. (int) $Itemid .'&id='. (int) $item->id . ':' . $item->alias);
				$feeditem->image		= icagendaThumb::sizeMedium($item->image);
				$feeditem->description	= '<img src="' . $feeditem->image . '" alt="" style="margin: 5px; float: left;">' . $item->desc;
				$feeditem->date			= $item->next;
				$feeditem->category		= $item->category;

				// Loads item information into RSS array
				$document->addItem($feeditem);
			}
		}
	}
}
views/list/view.html.php000060400000020231152455753310011306 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-06-08
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.helper');

/**
 * HTML View class - iCagenda.
 */
class icagendaViewList extends JViewLegacy
{
	protected $params;
	protected $data;
	protected $getAllDates;
	protected $form;

	/**
	 * Execute and display a template script.
	 *
	 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.
	 *
	 * @return  mixed  A string if successful, otherwise a Error object.
	 */
	public function display($tpl = null)
	{
		$app				= JFactory::getApplication();
		$document			= JFactory::getDocument();
		$this->params		= $app->getParams();
		$params				= $this->params;

		// For Dev.
		$time_loading = $params->get('time_loading', '');

		if ($time_loading)
		{
			$starttime_list = iCLibrary::getMicrotime();
		}

		// loading data
		$this->data			= $this->getModel()->getData();
		$this->getAllDates	= icagendaEventsData::getAllDates();
		$this->form			= $this->getModel()->getForm(); // Registration Form

		$this->state		= $this->get('State');
		//Following variables used more than once
//		$this->sortColumn 	= $this->state->get('list.ordering');
//		$this->sortDirection	= $this->state->get('list.direction');
		$this->searchterms	= $this->state->get('filter.search');

		// Menu Options
		$this->atlist		= $params->get('atlist', 0);
		$this->template		= $params->get('template');
		$this->title		= $params->get('title');
		$this->number		= $params->get('number', 5);
		$this->orderby		= $params->get('orderby', 2);
		$this->time			= $params->get('time', 1);

		// Component Options
		$this->iconPrint_global			= $params->get('iconPrint_global', 0);
		$this->iconAddToCal_global		= $params->get('iconAddToCal_global', 0);
		$this->iconAddToCal_options		= $params->get('iconAddToCal_options', 0);
		$this->copy						= $params->get('copy');
		$this->navposition				= $params->get('navposition', 1);
		$this->arrowtext				= $params->get('arrowtext', 1);
		$this->GoogleMaps				= $params->get('GoogleMaps', 1);
		$this->pagination				= $params->get('pagination', 1);
		$this->day_display_global		= $params->get('day_display_global', 1);
		$this->month_display_global		= $params->get('month_display_global', 1);
		$this->year_display_global		= $params->get('year_display_global', 1);
		$this->time_display_global		= $params->get('time_display_global', 0);
		$this->venue_display_global		= $params->get('venue_display_global', 1);
		$this->city_display_global		= $params->get('city_display_global', 1);
		$this->country_display_global	= $params->get('country_display_global', 1);
		$this->shortdesc_display_global	= $params->get('shortdesc_display_global', '');
		$this->statutReg				= $params->get('statutReg', 0);
		$this->dates_display			= $params->get('datesDisplay', 1);
		$this->reg_captcha				= $params->get('reg_captcha', 0);
		$this->reg_form_validation		= $params->get('reg_form_validation', '');

		$this->cat_description	= ($params->get('displayCatDesc_menu', 'global') == 'global')
								? $params->get('CatDesc_global', '0')
								: $params->get('displayCatDesc_menu', '');

		$cat_options			= ($params->get('displayCatDesc_menu', 'global') == 'global')
								? $params->get('CatDesc_checkbox', '')
								: $params->get('displayCatDesc_checkbox', '');
		$this->cat_options		= is_array($cat_options) ? $cat_options : array();

		$this->pageclass_sfx	= htmlspecialchars($params->get('pageclass_sfx'));

		// Check for errors.
		if (count($errors = $this->get('Errors')))
		{
			JError::raiseError(500, implode("\n", $errors));
			return false;
		}

		$vcal = $app->input->get('vcal');

		if ($vcal)
		{
			$tpl = 'vcal';
		}

		// Process the content plugins.
		JPluginHelper::importPlugin('content');

		if (version_compare(JVERSION, '3.0', 'ge')) // J3
		{
			$this->dispatcher	= JEventDispatcher::getInstance();
		}
		else // J2.5
		{
			$this->dispatcher	= JDispatcher::getInstance();
		}

		$eventid = $app->input->get('id');

		if ($eventid)
		{
			// Set Item Object
			$this_item	= (array) $this->data->items;
			$item		= array_shift($this_item);

			$this->actions = $this->dispatcher->trigger('onRegistrationActions', array('com_icagenda.actions', &$item, &$this->params));
		}

		$this->_prepareDocument();

		$isVcal = JRequest::getVar('vcal', '');

		if ( ! $isVcal)
		{
			icagendaInfo::commentVersion();
		}

		// Loads jQuery Library
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			// Joomla 2.5
			JHtml::stylesheet( 'com_icagenda/icagenda-front.j25.css', false, true );

			JHtml::_('behavior.mootools');

			// load jQuery, if not loaded before
			$scripts = array_keys($document->_scripts);
			$scriptFound = false;

			for ($i = 0; $i < count($scripts); $i++)
			{
				if (stripos($scripts[$i], 'jquery.min.js') !== false
					|| stripos($scripts[$i], 'jquery.js') !== false)
				{
					$scriptFound = true;
				}
			}

			// jQuery Library Loader
			if (!$scriptFound)
			{
				// load jQuery, if not loaded before
				if (!$app->get('jquery'))
				{
					$app->set('jquery', true);

					// Add jQuery Library
					$document->addScript('https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js');
					JHtml::script('com_icagenda/jquery.noconflict.js', false, true);
				}
			}
		}
		// Joomla 3
		else
		{
			JHtml::_('bootstrap.framework');
			JHtml::_('jquery.framework');
		}

		parent::display($tpl);

		// For Dev.
		if ($time_loading)
		{
			$endtime_list = iCLibrary::getMicrotime();

			echo '<center style="font-size:8px;">Time to create page: ' . round($endtime_list-$starttime_list, 3) . ' seconds</center>';
		}

		icagendaEvents::isListOfEvents();

		$jlayout		= JRequest::getCmd('layout', '');
		$layouts_array	= array('event', 'registration', 'actions');
		$layout			= in_array($jlayout, $layouts_array) ? $jlayout : '';

		// Loading Script tipTip used for iCtips
		JHtml::script('com_icagenda/jquery.tipTip.js', false, true);

		if (!$layout || $layout == 'list')
		{
			// Add RSS Feeds
			$menu = $app->getMenu()->getActive()->id;

			$feed = 'index.php?option=com_icagenda&amp;view=list&amp;Itemid=' . (int) $menu . '&amp;format=feed';
			$rss = array(
				'type'    =>  'application/rss+xml',
				'title'   =>   'RSS 2.0');

			$document->addHeadLink(JRoute::_($feed.'&amp;type=rss'), 'alternate', 'rel', $rss);
		}
	}

	/**
	 * Prepares the document
	 */
	protected function _prepareDocument()
	{
		$app		= JFactory::getApplication();
		$menus		= $app->getMenu();
		$pathway 	= $app->getPathway();
		$title 		= null;

		$menu = $menus->getActive();

		if ($menu)
		{
			$this->params->def('page_heading', $this->params->get('page_title', $menu->title));
		}
		else
		{
			$this->params->def('page_heading', JText::_('JGLOBAL_ARTICLES'));
		}

		$title = $this->params->get('page_title', '');

		if (empty($title))
		{
			$title = $app->getCfg('sitename');
		}
		elseif ($app->getCfg('sitename_pagetitles', 0) == 1)
		{
			$title = JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $title);
		}
		elseif ($app->getCfg('sitename_pagetitles', 0) == 2)
		{
			$title = JText::sprintf('JPAGETITLE', $title, $app->getCfg('sitename'));
		}

		$this->document->setTitle($title);

		if ($this->params->get('menu-meta_description', ''))
		{
			$this->document->setDescription($this->params->get('menu-meta_description', ''));
		}

		if ($this->params->get('menu-meta_keywords', ''))
		{
			$this->document->setMetadata('keywords', $this->params->get('menu-meta_keywords', ''));
		}

		if ($app->getCfg('MetaTitle') == '1'
			&& $this->params->get('menupage_title', ''))
		{
			$this->document->setMetaData('title', $this->params->get('page_title', ''));
		}
	}
}
helpers/iCalcreator.class.php000060400001541051152455753310012270 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      integration to iCagenda: Tom-Henning (MaW) / Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.3.0 2014-02-20
 * @since       3.2.9
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

/*********************************************************************************/
/**
 * iCalcreator v2.18
 * copyright (c) 2007-2013 Kjell-Inge Gustafsson, kigkonsult, All rights reserved
 * kigkonsult.se/iCalcreator/index.php
 * ical@kigkonsult.se
 *
 * Description:
 * This file is a PHP implementation of rfc2445/rfc5545.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
/*********************************************************************************/
/*********************************************************************************/
/*         A little setup                                                        */
/*********************************************************************************/
            /* your local language code */
// define( 'ICAL_LANG', 'sv' );
            // alt. autosetting
/*
$langstr     = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$pos         = strpos( $langstr, ';' );
if ($pos   !== false) {
  $langstr   = substr( $langstr, 0, $pos );
  $pos       = strpos( $langstr, ',' );
  if ($pos !== false) {
    $pos     = strpos( $langstr, ',' );
    $langstr = substr( $langstr, 0, $pos );
  }
  define( 'ICAL_LANG', $langstr );
}
*/
/*********************************************************************************/
/*         version, do NOT remove!!                                              */
define( 'ICALCREATOR_VERSION', 'iCalcreator 2.18' );
/*********************************************************************************/
/*********************************************************************************/
/**
 * vcalendar class
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.9.6 - 2011-05-14
 */
class vcalendar {
            //  calendar property variables
  var $calscale;
  var $method;
  var $prodid;
  var $version;
  var $xprop;
            //  container for calendar components
  var $components;
            //  component config variables
  var $allowEmpty;
  var $unique_id;
  var $language;
  var $directory;
  var $filename;
  var $url;
  var $delimiter;
  var $nl;
  var $format;
  var $dtzid;
            //  component internal variables
  var $attributeDelimiter;
  var $valueInit;
            //  component xCal declaration container
  var $xcaldecl;
/**
 * constructor for calendar object
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.9.6 - 2011-05-14
 * @param array $config
 * @return void
 */
  function vcalendar ( $config = array()) {
    $this->_makeVersion();
    $this->calscale   = null;
    $this->method     = null;
    $this->_makeUnique_id();
    $this->prodid     = null;
    $this->xprop      = array();
    $this->language   = null;
    $this->directory  = null;
    $this->filename   = null;
    $this->url        = null;
    $this->dtzid      = null;
/**
 *   language = <Text identifying a language, as defined in [RFC 1766]>
 */
    if( defined( 'ICAL_LANG' ) && !isset( $config['language'] ))
                                          $config['language']   = ICAL_LANG;
    if( !isset( $config['allowEmpty'] ))  $config['allowEmpty'] = TRUE;
    if( !isset( $config['nl'] ))          $config['nl']         = "\r\n";
    if( !isset( $config['format'] ))      $config['format']     = 'iCal';
    if( !isset( $config['delimiter'] ))   $config['delimiter']  = DIRECTORY_SEPARATOR;
    $this->setConfig( $config );

    $this->xcaldecl   = array();
    $this->components = array();
  }
/*********************************************************************************/
/**
 * Property Name: CALSCALE
 */
/**
 * creates formatted output for calendar property calscale
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.10.16 - 2011-10-28
 * @return string
 */
  function createCalscale() {
    if( empty( $this->calscale )) return FALSE;
    switch( $this->format ) {
      case 'xcal':
        return $this->nl.' calscale="'.$this->calscale.'"';
        break;
      default:
        return 'CALSCALE:'.$this->calscale.$this->nl;
        break;
    }
  }
/**
 * set calendar property calscale
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-21
 * @param string $value
 * @return void
 */
  function setCalscale( $value ) {
    if( empty( $value )) return FALSE;
    $this->calscale = $value;
  }
/*********************************************************************************/
/**
 * Property Name: METHOD
 */
/**
 * creates formatted output for calendar property method
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.10.16 - 2011-10-28
 * @return string
 */
  function createMethod() {
    if( empty( $this->method )) return FALSE;
    switch( $this->format ) {
      case 'xcal':
        return $this->nl.' method="'.$this->method.'"';
        break;
      default:
        return 'METHOD:'.$this->method.$this->nl;
        break;
    }
  }
/**
 * set calendar property method
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-20-23
 * @param string $value
 * @return bool
 */
  function setMethod( $value ) {
    if( empty( $value )) return FALSE;
    $this->method = $value;
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: PRODID
 *
 *  The identifier is RECOMMENDED to be the identical syntax to the
 * [RFC 822] addr-spec. A good method to assure uniqueness is to put the
 * domain name or a domain literal IP address of the host on which.. .
 */
/**
 * creates formatted output for calendar property prodid
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.12.11 - 2012-05-13
 * @return string
 */
  function createProdid() {
    if( !isset( $this->prodid ))
      $this->_makeProdid();
    switch( $this->format ) {
      case 'xcal':
        return $this->nl.' prodid="'.$this->prodid.'"';
        break;
      default:
        $toolbox = new calendarComponent();
        $toolbox->setConfig( $this->getConfig());
        return $toolbox->_createElement( 'PRODID', '', $this->prodid );
        break;
    }
  }
/**
 * make default value for calendar prodid
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.6.8 - 2009-12-30
 * @return void
 */
  function _makeProdid() {
    $this->prodid  = '-//'.$this->unique_id.'//NONSGML kigkonsult.se '.ICALCREATOR_VERSION.'//'.strtoupper( $this->language );
  }
/**
 * Conformance: The property MUST be specified once in an iCalendar object.
 * Description: The vendor of the implementation SHOULD assure that this
 * is a globally unique identifier; using some technique such as an FPI
 * value, as defined in [ISO 9070].
 */
/**
 * make default unique_id for calendar prodid
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 0.3.0 - 2006-08-10
 * @return void
 */
  function _makeUnique_id() {
    $this->unique_id  = ( isset( $_SERVER['SERVER_NAME'] )) ? gethostbyname( $_SERVER['SERVER_NAME'] ) : 'localhost';
  }
/*********************************************************************************/
/**
 * Property Name: VERSION
 *
 * Description: A value of "2.0" corresponds to this memo.
 */
/**
 * creates formatted output for calendar property version

 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.10.16 - 2011-10-28
 * @return string
 */
  function createVersion() {
    if( empty( $this->version ))
      $this->_makeVersion();
    switch( $this->format ) {
      case 'xcal':
        return $this->nl.' version="'.$this->version.'"';
        break;
      default:
        return 'VERSION:'.$this->version.$this->nl;
        break;
    }
  }
/**
 * set default calendar version
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 0.3.0 - 2006-08-10
 * @return void
 */
  function _makeVersion() {
    $this->version = '2.0';
  }
/**
 * set calendar version
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-23
 * @param string $value
 * @return void
 */
  function setVersion( $value ) {
    if( empty( $value )) return FALSE;
    $this->version = $value;
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: x-prop
 */
/**
 * creates formatted output for calendar property x-prop, iCal format only
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-05-25
 * @return string
 */
  function createXprop() {
    if( empty( $this->xprop ) || !is_array( $this->xprop )) return FALSE;
    $output        = null;
    $toolbox       = new calendarComponent();
    $toolbox->setConfig( $this->getConfig());
    foreach( $this->xprop as $label => $xpropPart ) {
      if( !isset($xpropPart['value']) || ( empty( $xpropPart['value'] ) && !is_numeric( $xpropPart['value'] ))) {
        if( $this->getConfig( 'allowEmpty' ))
          $output .= $toolbox->_createElement( $label );
        continue;
      }
      $attributes  = $toolbox->_createParams( $xpropPart['params'], array( 'LANGUAGE' ));
      if( is_array( $xpropPart['value'] )) {
        foreach( $xpropPart['value'] as $pix => $theXpart )
          $xpropPart['value'][$pix] = iCalUtilityFunctions::_strrep( $theXpart, $this->format, $this->nl );
        $xpropPart['value']  = implode( ',', $xpropPart['value'] );
      }
      else
        $xpropPart['value'] = iCalUtilityFunctions::_strrep( $xpropPart['value'], $this->format, $this->nl );
      $output     .= $toolbox->_createElement( $label, $attributes, $xpropPart['value'] );
      if( is_array( $toolbox->xcaldecl ) && ( 0 < count( $toolbox->xcaldecl ))) {
        foreach( $toolbox->xcaldecl as $localxcaldecl )
          $this->xcaldecl[] = $localxcaldecl;
      }
    }
    return $output;
  }
/**
 * set calendar property x-prop
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $label
 * @param string $value
 * @param array $params optional
 * @return bool
 */
  function setXprop( $label, $value, $params=FALSE ) {
    if( empty( $label ))
      return FALSE;
    if( 'X-' != strtoupper( substr( $label, 0, 2 )))
      return FALSE;
    if( empty( $value ) && !is_numeric( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $xprop           = array( 'value' => $value );
    $xprop['params'] = iCalUtilityFunctions::_setParams( $params );
    if( !is_array( $this->xprop )) $this->xprop = array();
    $this->xprop[strtoupper( $label )] = $xprop;
    return TRUE;
  }
/*********************************************************************************/
/**
 * delete calendar property value
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.8.8 - 2011-03-15
 * @param mixed $propName, bool FALSE => X-property
 * @param int $propix, optional, if specific property is wanted in case of multiply occurences
 * @return bool, if successfull delete
 */
  function deleteProperty( $propName=FALSE, $propix=FALSE ) {
    $propName = ( $propName ) ? strtoupper( $propName ) : 'X-PROP';
    if( !$propix )
      $propix = ( isset( $this->propdelix[$propName] ) && ( 'X-PROP' != $propName )) ? $this->propdelix[$propName] + 2 : 1;
    $this->propdelix[$propName] = --$propix;
    $return = FALSE;
    switch( $propName ) {
      case 'CALSCALE':
        if( isset( $this->calscale )) {
          $this->calscale = null;
          $return = TRUE;
        }
        break;
      case 'METHOD':
        if( isset( $this->method )) {
          $this->method   = null;
          $return = TRUE;
        }
        break;
      default:
        $reduced = array();
        if( $propName != 'X-PROP' ) {
          if( !isset( $this->xprop[$propName] )) { unset( $this->propdelix[$propName] ); return FALSE; }
          foreach( $this->xprop as $k => $a ) {
            if(( $k != $propName ) && !empty( $a ))
              $reduced[$k] = $a;
          }
        }
        else {
          if( count( $this->xprop ) <= $propix )  return FALSE;
          $xpropno = 0;
          foreach( $this->xprop as $xpropkey => $xpropvalue ) {
            if( $propix != $xpropno )
              $reduced[$xpropkey] = $xpropvalue;
            $xpropno++;
          }
        }
        $this->xprop = $reduced;
        if( empty( $this->xprop )) {
          unset( $this->propdelix[$propName] );
          return FALSE;
        }
        return TRUE;
    }
    return $return;
  }
/**
 * get calendar property value/params
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.13.4 - 2012-08-08
 * @param string $propName, optional
 * @param int $propix, optional, if specific property is wanted in case of multiply occurences
 * @param bool $inclParam=FALSE
 * @return mixed
 */
  function getProperty( $propName=FALSE, $propix=FALSE, $inclParam=FALSE ) {
    $propName = ( $propName ) ? strtoupper( $propName ) : 'X-PROP';
    if( 'X-PROP' == $propName ) {
      if( !$propix )
        $propix  = ( isset( $this->propix[$propName] )) ? $this->propix[$propName] + 2 : 1;
      $this->propix[$propName] = --$propix;
    }
    else
      $mProps    = array( 'ATTENDEE', 'CATEGORIES', 'CONTACT', 'RELATED-TO', 'RESOURCES' );
    switch( $propName ) {
      case 'ATTENDEE':
      case 'CATEGORIES':
      case 'CONTACT':
      case 'DTSTART':
      case 'GEOLOCATION':
      case 'LOCATION':
      case 'ORGANIZER':
      case 'PRIORITY':
      case 'RESOURCES':
      case 'STATUS':
      case 'SUMMARY':
      case 'RECURRENCE-ID-UID':
      case 'RELATED-TO':
      case 'R-UID':
      case 'UID':
      case 'URL':
        $output  = array();
        foreach ( $this->components as $cix => $component) {
          if( !in_array( $component->objName, array('vevent', 'vtodo', 'vjournal', 'vfreebusy' )))
            continue;
          if( in_array( strtoupper( $propName ), $mProps )) {
            $component->_getProperties( $propName, $output );
            continue;
          }
          elseif(( 3 < strlen( $propName )) && ( 'UID' == substr( $propName, -3 ))) {
            if( FALSE !== ( $content = $component->getProperty( 'RECURRENCE-ID' )))
              $content = $component->getProperty( 'UID' );
          }
          elseif( 'GEOLOCATION' == $propName ) {
            $content = $component->getProperty( 'LOCATION' );
            $content = ( !empty( $content )) ? $content.' ' : '';
            if(( FALSE === ( $geo     = $component->getProperty( 'GEO' ))) || empty( $geo ))
              continue;
            if( 0.0 < $geo['latitude'] )
              $sign   = '+';
            else
              $sign   = ( 0.0 > $geo['latitude'] ) ? '-' : '';
            $content .= ' '.$sign.sprintf( "%09.6f", abs( $geo['latitude'] ));
            $content  = rtrim( rtrim( $content, '0' ), '.' );
            if( 0.0 < $geo['longitude'] )
              $sign   = '+';
            else
              $sign   = ( 0.0 > $geo['longitude'] ) ? '-' : '';
            $content .= $sign.sprintf( '%8.6f', abs( $geo['longitude'] )).'/';
          }
          elseif( FALSE === ( $content = $component->getProperty( $propName )))
            continue;
          if(( FALSE === $content ) || empty( $content ))
            continue;
          elseif( is_array( $content )) {
            if( isset( $content['year'] )) {
              $key  = sprintf( '%04d%02d%02d', $content['year'], $content['month'], $content['day'] );
              if( !isset( $output[$key] ))
                $output[$key] = 1;
              else
                $output[$key] += 1;
            }
            else {
              foreach( $content as $partValue => $partCount ) {
                if( !isset( $output[$partValue] ))
                  $output[$partValue] = $partCount;
                else
                  $output[$partValue] += $partCount;
              }
            }
          } // end elseif( is_array( $content )) {
          elseif( !isset( $output[$content] ))
            $output[$content] = 1;
          else
            $output[$content] += 1;
        } // end foreach ( $this->components as $cix => $component)
        if( !empty( $output ))
          ksort( $output );
        return $output;
        break;
      case 'CALSCALE':
        return ( !empty( $this->calscale )) ? $this->calscale : FALSE;
        break;
      case 'METHOD':
        return ( !empty( $this->method )) ? $this->method : FALSE;
        break;
      case 'PRODID':
        if( empty( $this->prodid ))
          $this->_makeProdid();
        return $this->prodid;
        break;
      case 'VERSION':
        return ( !empty( $this->version )) ? $this->version : FALSE;
        break;
      default:
        if( $propName != 'X-PROP' ) {
          if( !isset( $this->xprop[$propName] )) return FALSE;
          return ( $inclParam ) ? array( $propName, $this->xprop[$propName] )
                                : array( $propName, $this->xprop[$propName]['value'] );
        }
        else {
          if( empty( $this->xprop )) return FALSE;
          $xpropno = 0;
          foreach( $this->xprop as $xpropkey => $xpropvalue ) {
            if( $propix == $xpropno )
              return ( $inclParam ) ? array( $xpropkey, $this->xprop[$xpropkey] )
                                    : array( $xpropkey, $this->xprop[$xpropkey]['value'] );
            else
              $xpropno++;
          }
          unset( $this->propix[$propName] );
          return FALSE; // not found ??
        }
    }
    return FALSE;
  }
/**
 * general vcalendar property setting
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.2.13 - 2007-11-04
 * @param mixed $args variable number of function arguments,
 *                    first argument is ALWAYS component name,
 *                    second ALWAYS component value!
 * @return bool
 */
  function setProperty () {
    $numargs    = func_num_args();
    if( 1 > $numargs )
      return FALSE;
    $arglist    = func_get_args();
    $arglist[0] = strtoupper( $arglist[0] );
    switch( $arglist[0] ) {
      case 'CALSCALE':
        return $this->setCalscale( $arglist[1] );
      case 'METHOD':
        return $this->setMethod( $arglist[1] );
      case 'VERSION':
        return $this->setVersion( $arglist[1] );
      default:
        if( !isset( $arglist[1] )) $arglist[1] = null;
        if( !isset( $arglist[2] )) $arglist[2] = null;
        return $this->setXprop( $arglist[0], $arglist[1], $arglist[2] );
    }
    return FALSE;
  }
/*********************************************************************************/
/**
 * get vcalendar config values or * calendar components
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.11.7 - 2012-01-12
 * @param mixed $config
 * @return value
 */
  function getConfig( $config = FALSE ) {
    if( !$config ) {
      $return = array();
      $return['ALLOWEMPTY']  = $this->getConfig( 'ALLOWEMPTY' );
      $return['DELIMITER']   = $this->getConfig( 'DELIMITER' );
      $return['DIRECTORY']   = $this->getConfig( 'DIRECTORY' );
      $return['FILENAME']    = $this->getConfig( 'FILENAME' );
      $return['DIRFILE']     = $this->getConfig( 'DIRFILE' );
      $return['FILESIZE']    = $this->getConfig( 'FILESIZE' );
      $return['FORMAT']      = $this->getConfig( 'FORMAT' );
      if( FALSE !== ( $lang  = $this->getConfig( 'LANGUAGE' )))
        $return['LANGUAGE']  = $lang;
      $return['NEWLINECHAR'] = $this->getConfig( 'NEWLINECHAR' );
      $return['UNIQUE_ID']   = $this->getConfig( 'UNIQUE_ID' );
      if( FALSE !== ( $url   = $this->getConfig( 'URL' )))
        $return['URL']       = $url;
      $return['TZID']        = $this->getConfig( 'TZID' );
      return $return;
    }
    switch( strtoupper( $config )) {
      case 'ALLOWEMPTY':
        return $this->allowEmpty;
        break;
      case 'COMPSINFO':
        unset( $this->compix );
        $info = array();
        foreach( $this->components as $cix => $component ) {
          if( empty( $component )) continue;
          $info[$cix]['ordno'] = $cix + 1;
          $info[$cix]['type']  = $component->objName;
          $info[$cix]['uid']   = $component->getProperty( 'uid' );
          $info[$cix]['props'] = $component->getConfig( 'propinfo' );
          $info[$cix]['sub']   = $component->getConfig( 'compsinfo' );
        }
        return $info;
        break;
      case 'DELIMITER':
        return $this->delimiter;
        break;
      case 'DIRECTORY':
        if( empty( $this->directory ) && ( '0' != $this->directory ))
          $this->directory = '.';
        return $this->directory;
        break;
      case 'DIRFILE':
        return $this->getConfig( 'directory' ).$this->getConfig( 'delimiter' ).$this->getConfig( 'filename' );
        break;
      case 'FILEINFO':
        return array( $this->getConfig( 'directory' )
                    , $this->getConfig( 'filename' )
                    , $this->getConfig( 'filesize' ));
        break;
      case 'FILENAME':
        if( empty( $this->filename ) && ( '0' != $this->filename )) {
          if( 'xcal' == $this->format )
            $this->filename = date( 'YmdHis' ).'.xml'; // recommended xcs.. .
          else
            $this->filename = date( 'YmdHis' ).'.ics';
        }
        return $this->filename;
        break;
      case 'FILESIZE':
        $size    = 0;
        if( empty( $this->url )) {
          $dirfile = $this->getConfig( 'dirfile' );
          if( !is_file( $dirfile ) || ( FALSE === ( $size = filesize( $dirfile ))))
            $size = 0;
          clearstatcache();
        }
        return $size;
        break;
      case 'FORMAT':
        return ( $this->format == 'xcal' ) ? 'xCal' : 'iCal';
        break;
      case 'LANGUAGE':
         /* get language for calendar component as defined in [RFC 1766] */
        return $this->language;
        break;
      case 'NL':
      case 'NEWLINECHAR':
        return $this->nl;
        break;
      case 'TZID':
        return $this->dtzid;
        break;
      case 'UNIQUE_ID':
        return $this->unique_id;
        break;
      case 'URL':
        if( !empty( $this->url ))
          return $this->url;
        else
          return FALSE;
        break;
    }
  }
/**
 * general vcalendar config setting
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.7 - 2013-01-11
 * @param mixed  $config
 * @param string $value
 * @return void
 */
  function setConfig( $config, $value = FALSE) {
    if( is_array( $config )) {
      $ak = array_keys( $config );
      foreach( $ak as $k ) {
        if( 'DIRECTORY' == strtoupper( $k )) {
          if( FALSE === $this->setConfig( 'DIRECTORY', $config[$k] ))
            return FALSE;
          unset( $config[$k] );
        }
        elseif( 'NEWLINECHAR' == strtoupper( $k )) {
          if( FALSE === $this->setConfig( 'NEWLINECHAR', $config[$k] ))
            return FALSE;
          unset( $config[$k] );
        }
      }
      foreach( $config as $cKey => $cValue ) {
        if( FALSE === $this->setConfig( $cKey, $cValue ))
          return FALSE;
      }
      return TRUE;
    }
    $res = FALSE;
    switch( strtoupper( $config )) {
      case 'ALLOWEMPTY':
        $this->allowEmpty = $value;
        $subcfg  = array( 'ALLOWEMPTY' => $value );
        $res = TRUE;
        break;
      case 'DELIMITER':
        $this->delimiter = $value;
        return TRUE;
        break;
      case 'DIRECTORY':
        $value   = trim( $value );
        $del     = $this->getConfig('delimiter');
        if( $del == substr( $value, ( 0 - strlen( $del ))))
          $value = substr( $value, 0, ( strlen( $value ) - strlen( $del )));
        if( is_dir( $value )) {
            /* local directory */
          clearstatcache();
          $this->directory = $value;
          $this->url       = null;
          return TRUE;
        }
        else
          return FALSE;
        break;
      case 'FILENAME':
        $value   = trim( $value );
        if( !empty( $this->url )) {
            /* remote directory+file -> URL */
          $this->filename = $value;
          return TRUE;
        }
        $dirfile = $this->getConfig( 'directory' ).$this->getConfig( 'delimiter' ).$value;
        if( file_exists( $dirfile )) {
            /* local file exists */
          if( is_readable( $dirfile ) || is_writable( $dirfile )) {
            clearstatcache();
            $this->filename = $value;
            return TRUE;
          }
          else
            return FALSE;
        }
        elseif( is_readable($this->getConfig( 'directory' ) ) || is_writable( $this->getConfig( 'directory' ) )) {
            /* read- or writable directory */
          $this->filename = $value;
          return TRUE;
        }
        else
          return FALSE;
        break;
      case 'FORMAT':
        $value   = trim( strtolower( $value ));
        if( 'xcal' == $value ) {
          $this->format             = 'xcal';
          $this->attributeDelimiter = $this->nl;
          $this->valueInit          = null;
        }
        else {
          $this->format             = null;
          $this->attributeDelimiter = ';';
          $this->valueInit          = ':';
        }
        $subcfg  = array( 'FORMAT' => $value );
        $res = TRUE;
        break;
      case 'LANGUAGE': // set language for calendar component as defined in [RFC 1766]
        $value   = trim( $value );
        $this->language = $value;
        $this->_makeProdid();
        $subcfg  = array( 'LANGUAGE' => $value );
        $res = TRUE;
        break;
      case 'NL':
      case 'NEWLINECHAR':
        $this->nl = $value;
        if( 'xcal' == $value ) {
          $this->attributeDelimiter = $this->nl;
          $this->valueInit          = null;
        }
        else {
          $this->attributeDelimiter = ';';
          $this->valueInit          = ':';
        }
        $subcfg  = array( 'NL' => $value );
        $res = TRUE;
        break;
      case 'TZID':
        $this->dtzid = $value;
        $subcfg  = array( 'TZID' => $value );
        $res = TRUE;
        break;
      case 'UNIQUE_ID':
        $value   = trim( $value );
        $this->unique_id = $value;
        $this->_makeProdid();
        $subcfg  = array( 'UNIQUE_ID' => $value );
        $res = TRUE;
        break;
      case 'URL':
            /* remote file - URL */
        $value     = str_replace( array( 'HTTP://', 'WEBCAL://', 'webcal://' ), 'http://', trim( $value ));
        if( 'http://' != substr( $value, 0, 7 ))
          return FALSE;
        $s1        = $this->url;
        $this->url = $value;
        $s2        = $this->directory;
        $this->directory = null;
        $parts     = pathinfo( $value );
        if( FALSE === $this->setConfig( 'filename',  $parts['basename'] )) {
          $this->url       = $s1;
          $this->directory = $s2;
          return FALSE;
        }
        else
          return TRUE;
        break;
      default:  // any unvalid config key.. .
        return TRUE;
    }
    if( !$res ) return FALSE;
    if( isset( $subcfg ) && !empty( $this->components )) {
      foreach( $subcfg as $cfgkey => $cfgvalue ) {
        foreach( $this->components as $cix => $component ) {
          $res = $component->setConfig( $cfgkey, $cfgvalue, TRUE );
          if( !$res )
            break 2;
          $this->components[$cix] = $component->copy(); // PHP4 compliant
        }
      }
    }
    return $res;
  }
/*********************************************************************************/
/**
 * add calendar component to container
 *
 * alias to setComponent
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 1.x.x - 2007-04-24
 * @param object $component calendar component
 * @return void
 */
  function addComponent( $component ) {
    $this->setComponent( $component );
  }
/**
 * delete calendar component from container
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.8.8 - 2011-03-15
 * @param mixed $arg1 ordno / component type / component uid
 * @param mixed $arg2 optional, ordno if arg1 = component type
 * @return void
 */
  function deleteComponent( $arg1, $arg2=FALSE  ) {
    $argType = $index = null;
    if ( ctype_digit( (string) $arg1 )) {
      $argType = 'INDEX';
      $index   = (int) $arg1 - 1;
    }
    elseif(( strlen( $arg1 ) <= strlen( 'vfreebusy' )) && ( FALSE === strpos( $arg1, '@' ))) {
      $argType = strtolower( $arg1 );
      $index   = ( !empty( $arg2 ) && ctype_digit( (string) $arg2 )) ? (( int ) $arg2 - 1 ) : 0;
    }
    $cix1dC = 0;
    foreach ( $this->components as $cix => $component) {
      if( empty( $component )) continue;
      if(( 'INDEX' == $argType ) && ( $index == $cix )) {
        unset( $this->components[$cix] );
        return TRUE;
      }
      elseif( $argType == $component->objName ) {
        if( $index == $cix1dC ) {
          unset( $this->components[$cix] );
          return TRUE;
        }
        $cix1dC++;
      }
      elseif( !$argType && ($arg1 == $component->getProperty( 'uid' ))) {
        unset( $this->components[$cix] );
        return TRUE;
      }
    }
    return FALSE;
  }
/**
 * get calendar component from container
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.15 - 2013-04-25
 * @param mixed $arg1 optional, ordno/component type/ component uid
 * @param mixed $arg2 optional, ordno if arg1 = component type
 * @return object
 */
  function getComponent( $arg1=FALSE, $arg2=FALSE ) {
    $index = $argType = null;
    if ( !$arg1 ) { // first or next in component chain
      $argType = 'INDEX';
      $index   = $this->compix['INDEX'] = ( isset( $this->compix['INDEX'] )) ? $this->compix['INDEX'] + 1 : 1;
    }
    elseif( is_array( $arg1 )) { // array( *[propertyName => propertyValue] )
      $arg2  = implode( '-', array_keys( $arg1 ));
      $index = $this->compix[$arg2] = ( isset( $this->compix[$arg2] )) ? $this->compix[$arg2] + 1 : 1;
      $dateProps  = array( 'DTSTART', 'DTEND', 'DUE', 'CREATED', 'COMPLETED', 'DTSTAMP', 'LAST-MODIFIED', 'RECURRENCE-ID' );
      $otherProps = array( 'ATTENDEE', 'CATEGORIES', 'CONTACT', 'LOCATION', 'ORGANIZER', 'PRIORITY', 'RELATED-TO', 'RESOURCES', 'STATUS', 'SUMMARY', 'UID', 'URL' );
      $mProps     = array( 'ATTENDEE', 'CATEGORIES', 'CONTACT', 'RELATED-TO', 'RESOURCES' );
    }
    elseif ( ctype_digit( (string) $arg1 )) { // specific component in chain
      $argType = 'INDEX';
      $index   = (int) $arg1;
      unset( $this->compix );
    }
    elseif(( strlen( $arg1 ) <= strlen( 'vfreebusy' )) && ( FALSE === strpos( $arg1, '@' ))) { // object class name
      unset( $this->compix['INDEX'] );
      $argType = strtolower( $arg1 );
      if( !$arg2 )
        $index = $this->compix[$argType] = ( isset( $this->compix[$argType] )) ? $this->compix[$argType] + 1 : 1;
      elseif( isset( $arg2 ) && ctype_digit( (string) $arg2 ))
        $index = (int) $arg2;
    }
    elseif(( strlen( $arg1 ) > strlen( 'vfreebusy' )) && ( FALSE !== strpos( $arg1, '@' ))) { // UID as 1st argument
      if( !$arg2 )
        $index = $this->compix[$arg1] = ( isset( $this->compix[$arg1] )) ? $this->compix[$arg1] + 1 : 1;
      elseif( isset( $arg2 ) && ctype_digit( (string) $arg2 ))
        $index = (int) $arg2;
    }
    if( isset( $index ))
      $index  -= 1;
    $ckeys = array_keys( $this->components );
    if( !empty( $index) && ( $index > end(  $ckeys )))
      return FALSE;
    $cix1gC = 0;
    foreach ( $this->components as $cix => $component) {
      if( empty( $component )) continue;
      if(( 'INDEX' == $argType ) && ( $index == $cix ))
        return $component->copy();
      elseif( $argType == $component->objName ) {
        if( $index == $cix1gC )
          return $component->copy();
        $cix1gC++;
      }
      elseif( is_array( $arg1 )) { // array( *[propertyName => propertyValue] )
        $hit = array();
        foreach( $arg1 as $pName => $pValue ) {
          $pName = strtoupper( $pName );
          if( !in_array( $pName, $dateProps ) && !in_array( $pName, $otherProps ))
            continue;
          if( in_array( $pName, $mProps )) { // multiple occurrence
            $propValues = array();
            $component->_getProperties( $pName, $propValues );
            $propValues = array_keys( $propValues );
            $hit[] = ( in_array( $pValue, $propValues )) ? TRUE : FALSE;
            continue;
          } // end   if(.. .// multiple occurrence
          if( FALSE === ( $value = $component->getProperty( $pName ))) { // single occurrence
            $hit[] = FALSE; // missing property
            continue;
          }
          if( 'SUMMARY' == $pName ) { // exists within (any case)
            $hit[] = ( FALSE !== stripos( $value, $pValue )) ? TRUE : FALSE;
            continue;
          }
          if( in_array( strtoupper( $pName ), $dateProps )) {
            $valuedate = sprintf( '%04d%02d%02d', $value['year'], $value['month'], $value['day'] );
            if( 8 < strlen( $pValue )) {
              if( isset( $value['hour'] )) {
                if( 'T' == substr( $pValue, 8, 1 ))
                  $pValue = str_replace( 'T', '', $pValue );
                $valuedate .= sprintf( '%02d%02d%02d', $value['hour'], $value['min'], $value['sec'] );
              }
              else
                $pValue = substr( $pValue, 0, 8 );
            }
            $hit[] = ( $pValue == $valuedate ) ? TRUE : FALSE;
            continue;
          }
          elseif( !is_array( $value ))
            $value = array( $value );
          foreach( $value as $part ) {
            $part = ( FALSE !== strpos( $part, ',' )) ? explode( ',', $part ) : array( $part );
            foreach( $part as $subPart ) {
              if( $pValue == $subPart ) {
                $hit[] = TRUE;
                continue 3;
              }
            }
          } // end foreach( $value as $part )
          $hit[] = FALSE; // no hit in property
        } // end  foreach( $arg1 as $pName => $pValue )
        if( in_array( TRUE, $hit )) {
          if( $index == $cix1gC )
            return $component->copy();
          $cix1gC++;
        }
      } // end elseif( is_array( $arg1 )) { // array( *[propertyName => propertyValue] )
      elseif( !$argType && ($arg1 == $component->getProperty( 'uid' ))) { // UID
        if( $index == $cix1gC )
          return $component->copy();
        $cix1gC++;
      }
    } // end foreach ( $this->components.. .
            /* not found.. . */
    unset( $this->compix );
    return FALSE;
  }
/**
 * create new calendar component, already included within calendar
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.6.33 - 2011-01-03
 * @param string $compType component type
 * @return object (reference)
 */
  function & newComponent( $compType ) {
    $config = $this->getConfig();
    $keys   = array_keys( $this->components );
    $ix     = end( $keys) + 1;
    switch( strtoupper( $compType )) {
      case 'EVENT':
      case 'VEVENT':
        $this->components[$ix] = new vevent( $config );
        break;
      case 'TODO':
      case 'VTODO':
        $this->components[$ix] = new vtodo( $config );
        break;
      case 'JOURNAL':
      case 'VJOURNAL':
        $this->components[$ix] = new vjournal( $config );
        break;
      case 'FREEBUSY':
      case 'VFREEBUSY':
        $this->components[$ix] = new vfreebusy( $config );
        break;
      case 'TIMEZONE':
      case 'VTIMEZONE':
        array_unshift( $this->components, new vtimezone( $config ));
        $ix = 0;
        break;
      default:
        return FALSE;
    }
    return $this->components[$ix];
  }
/**
 * select components from calendar on date or selectOption basis
 *
 * Ensure DTSTART is set for every component.
 * No date controls occurs.
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.13 - 2013-03-16
 * @param mixed $startY optional, start Year,  default current Year ALT. array selecOptions ( *[ <propName> => <uniqueValue> ] )
 * @param int   $startM optional, start Month, default current Month
 * @param int   $startD optional, start Day,   default current Day
 * @param int   $endY   optional, end   Year,  default $startY
 * @param int   $endY   optional, end   Month, default $startM
 * @param int   $endY   optional, end   Day,   default $startD
 * @param mixed $cType  optional, calendar component type(-s), default FALSE=all else string/array type(-s)
 * @param bool  $flat   optional, FALSE (default) => output : array[Year][Month][Day][]
 *                                TRUE            => output : array[] (ignores split)
 * @param bool  $any    optional, TRUE (default) - select component(-s) that occurs within period
 *                                FALSE          - only component(-s) that starts within period
 * @param bool  $split  optional, TRUE (default) - one component copy every DAY it occurs during the
 *                                                 period (implies flat=FALSE)
 *                                FALSE          - one occurance of component only in output array
 * @return array or FALSE
 */
  function selectComponents( $startY=FALSE, $startM=FALSE, $startD=FALSE, $endY=FALSE, $endM=FALSE, $endD=FALSE, $cType=FALSE, $flat=FALSE, $any=TRUE, $split=TRUE ) {
            /* check  if empty calendar */
    if( 0 >= count( $this->components )) return FALSE;
    if( is_array( $startY ))
      return $this->selectComponents2( $startY );
            /* check default dates */
    if( !$startY ) $startY = date( 'Y' );
    if( !$startM ) $startM = date( 'm' );
    if( !$startD ) $startD = date( 'd' );
    $startDate = mktime( 0, 0, 0, $startM, $startD, $startY );
    if( !$endY )   $endY   = $startY;
    if( !$endM )   $endM   = $startM;
    if( !$endD )   $endD   = $startD;
    $endDate   = mktime( 23, 59, 59, $endM, $endD, $endY );
// echo 'selectComp arg='.date( 'Y-m-d H:i:s', $startDate).' -- '.date( 'Y-m-d H:i:s', $endDate)."<br>\n"; $tcnt = 0;// test ###
            /* check component types */
    $validTypes = array('vevent', 'vtodo', 'vjournal', 'vfreebusy' );
    if( is_array( $cType )) {
      foreach( $cType as $cix => $theType ) {
        $cType[$cix] = $theType = strtolower( $theType );
        if( !in_array( $theType, $validTypes ))
          $cType[$cix] = 'vevent';
      }
      $cType = array_unique( $cType );
    }
    elseif( !empty( $cType )) {
      $cType = strtolower( $cType );
      if( !in_array( $cType, $validTypes ))
        $cType = array( 'vevent' );
      else
        $cType = array( $cType );
    }
    else
      $cType = $validTypes;
    if( 0 >= count( $cType ))
      $cType = $validTypes;
    if(( FALSE === $flat ) && ( FALSE === $any )) // invalid combination
      $split = FALSE;
    if(( TRUE === $flat ) && ( TRUE === $split )) // invalid combination
      $split = FALSE;
            /* iterate components */
    $result       = array();
    $this->sort( 'UID' );
    $compUIDcmp   = null;
    $recurridList = array();
    foreach ( $this->components as $cix => $component ) {
      if( empty( $component )) continue;
      unset( $start );
            /* deselect unvalid type components */
      if( !in_array( $component->objName, $cType ))
        continue;
      $start = $component->getProperty( 'dtstart' );
            /* select due when dtstart is missing */
      if( empty( $start ) && ( $component->objName == 'vtodo' ) && ( FALSE === ( $start = $component->getProperty( 'due' ))))
        continue;
      if( empty( $start ))
        continue;
      $compUID      = $component->getProperty( 'UID' );
      if( $compUIDcmp != $compUID ) {
        $compUIDcmp = $compUID;
        unset( $exdatelist, $recurridList );
      }
      $dtendExist = $dueExist = $durationExist = $endAllDayEvent = $recurrid = FALSE;
      unset( $end, $startWdate, $endWdate, $rdurWsecs, $rdur, $workstart, $workend, $endDateFormat ); // clean up
      $startWdate = iCalUtilityFunctions::_date2timestamp( $start );
      $startDateFormat = ( isset( $start['hour'] )) ? 'Y-m-d H:i:s' : 'Y-m-d';
            /* get end date from dtend/due/duration properties */
      $end = $component->getProperty( 'dtend' );
      if( !empty( $end )) {
        $dtendExist = TRUE;
        $endDateFormat = ( isset( $end['hour'] )) ? 'Y-m-d H:i:s' : 'Y-m-d';
      }
      if( empty( $end ) && ( $component->objName == 'vtodo' )) {
        $end = $component->getProperty( 'due' );
        if( !empty( $end )) {
          $dueExist = TRUE;
          $endDateFormat = ( isset( $end['hour'] )) ? 'Y-m-d H:i:s' : 'Y-m-d';
        }
      }
      if( !empty( $end ) && !isset( $end['hour'] )) {
          /* a DTEND without time part regards an event that ends the day before,
             for an all-day event DTSTART=20071201 DTEND=20071202 (taking place 20071201!!! */
        $endAllDayEvent = TRUE;
        $endWdate = mktime( 23, 59, 59, $end['month'], ($end['day'] - 1), $end['year'] );
        $end['year']  = date( 'Y', $endWdate );
        $end['month'] = date( 'm', $endWdate );
        $end['day']   = date( 'd', $endWdate );
        $end['hour']  = 23;
        $end['min']   = $end['sec'] = 59;
      }
      if( empty( $end )) {
        $end = $component->getProperty( 'duration', FALSE, FALSE, TRUE );// in dtend (array) format
        if( !empty( $end ))
          $durationExist = TRUE;
          $endDateFormat = ( isset( $start['hour'] )) ? 'Y-m-d H:i:s' : 'Y-m-d';
// if( !empty($end))  echo 'selectComp 4 start='.implode('-',$start).' end='.implode('-',$end)."<br>\n"; // test ###
      }
      if( empty( $end )) { // assume one day duration if missing end date
        $end = array( 'year' => $start['year'], 'month' => $start['month'], 'day' => $start['day'], 'hour' => 23, 'min' => 59, 'sec' => 59 );
      }
// if( isset($end))  echo 'selectComp 5 start='.implode('-',$start).' end='.implode('-',$end)."<br>\n"; // test ###
      $endWdate = iCalUtilityFunctions::_date2timestamp( $end );
      if( $endWdate < $startWdate ) { // MUST be after start date!!
        $end = array( 'year' => $start['year'], 'month' => $start['month'], 'day' => $start['day'], 'hour' => 23, 'min' => 59, 'sec' => 59 );
        $endWdate = iCalUtilityFunctions::_date2timestamp( $end );
      }
      $rdurWsecs  = $endWdate - $startWdate; // compute event (component) duration in seconds
            /* make a list of optional exclude dates for component occurence from exrule and exdate */
      $exdatelist = array();
      $workstart  = iCalUtilityFunctions::_timestamp2date(( $startDate - $rdurWsecs ), 6);
      $workend    = iCalUtilityFunctions::_timestamp2date(( $endDate + $rdurWsecs ), 6);
      while( FALSE !== ( $exrule = $component->getProperty( 'exrule' )))    // check exrule
        iCalUtilityFunctions::_recur2date( $exdatelist, $exrule, $start, $workstart, $workend );
      while( FALSE !== ( $exdate = $component->getProperty( 'exdate' ))) {  // check exdate
        foreach( $exdate as $theExdate ) {
          $exWdate = iCalUtilityFunctions::_date2timestamp( $theExdate );
          $exWdate = mktime( 0, 0, 0, date( 'm', $exWdate ), date( 'd', $exWdate ), date( 'Y', $exWdate )); // on a day-basis !!!
          if((( $startDate - $rdurWsecs ) <= $exWdate ) && ( $endDate >= $exWdate ))
            $exdatelist[$exWdate] = TRUE;
        } // end - foreach( $exdate as $theExdate )
      }  // end - check exdate
            /* check recurrence-id (note, a missing sequence is the same as sequence=0 so don't test for sequence), remove hit with reccurr-id date */
      if( FALSE !== ( $t = $recurrid = $component->getProperty( 'recurrence-id' ))) {
        $recurrid = iCalUtilityFunctions::_date2timestamp( $recurrid );
        $recurrid = mktime( 0, 0, 0, date( 'm', $recurrid ), date( 'd', $recurrid ), date( 'Y', $recurrid )); // on a day-basis !!!
        $recurridList[$recurrid] = TRUE;                                             // no recurring to start this day
// echo "adding comp no:$cix with date=".implode($start)." and recurrid=".implode($t)." to recurridList id=$recurrid<br>\n"; // test ###
      } // end recurrence-id/sequence test
            /* select only components with.. . */
      if(( !$any && ( $startWdate >= $startDate ) && ( $startWdate <= $endDate )) || // (dt)start within the period
         (  $any && ( $startWdate < $endDate ) && ( $endWdate >= $startDate ))) {    // occurs within the period
            /* add the selected component (WITHIN valid dates) to output array */
        if( $flat ) { // any=true/false, ignores split
          if( !$recurrid )
            $result[$compUID] = $component->copy(); // copy original to output (but not anyone with recurrence-id)
        }
        elseif( $split ) { // split the original component
          if( $endWdate > $endDate )
            $endWdate = $endDate;     // use period end date
          $rstart   = $startWdate;
          if( $rstart < $startDate )
            $rstart = $startDate; // use period start date
          $startYMD = $rstartYMD = date( 'Ymd', $rstart );
          $endYMD   = date( 'Ymd', $endWdate );
          $checkDate = mktime( 0, 0, 0, date( 'm', $rstart ), date( 'd', $rstart ), date( 'Y', $rstart ) ); // on a day-basis !!!
// echo "going to test comp no:$cix with rstartYMD=$rstartYMD, endYMD=$endYMD and checkDate($checkDate) with recurridList=".implode(',',array_keys($recurridList))."<br>\n"; // test ###
          if( !isset( $exdatelist[$checkDate] )) { // exclude any recurrence START date, found in exdatelist
            while( $rstartYMD <= $endYMD ) { // iterate
              if( isset( $exdatelist[$checkDate] ) ||                   // exclude any recurrence date, found in the exdatelist
                ( isset( $recurridList[$checkDate] ) && !$recurrid )) { // or in the recurridList, but not itself
// echo "skipping comp no:$cix with datestart=$rstartYMD and checkdate=$checkDate<br>\n"; // test ###
                $rstart = mktime( date( 'H', $rstart ), date( 'i', $rstart ), date( 's', $rstart ), date( 'm', $rstart ), date( 'd', $rstart ) + 1, date( 'Y', $rstart ) ); // step one day
                $rstartYMD = date( 'Ymd', $rstart );
                continue;
              }
              if( $rstartYMD > $startYMD ) // date after dtstart
                $datestring = date( $startDateFormat, $checkDate ); // mktime( 0, 0, 0, date( 'm', $rstart ), date( 'd', $rstart ), date( 'Y', $rstart )));
              else
                $datestring = date( $startDateFormat, $rstart );
              if( isset( $start['tz'] ))
                $datestring .= ' '.$start['tz'];
// echo "split org comp no:$cix rstartYMD=$rstartYMD (datestring=$datestring)<br>\n"; // test ###
              $component->setProperty( 'X-CURRENT-DTSTART', $datestring );
              if( $dtendExist || $dueExist || $durationExist ) {
                if( $rstartYMD < $endYMD ) // not the last day
                  $tend = mktime( 23, 59, 59, date( 'm', $rstart ), date( 'd', $rstart ), date( 'Y', $rstart ));
                else
                  $tend = mktime( date( 'H', $endWdate ), date( 'i', $endWdate ), date( 's', $endWdate ), date( 'm', $rstart ), date( 'd', $rstart ), date( 'Y', $rstart ) ); // on a day-basis !!!
                if( $endAllDayEvent && $dtendExist )
                  $tend += ( 24 * 3600 ); // alldaysevents has an end date 'day after' meaning this day
                $datestring = date( $endDateFormat, $tend );
                if( isset( $end['tz'] ))
                  $datestring .= ' '.$end['tz'];
                $propName = ( !$dueExist ) ? 'X-CURRENT-DTEND' : 'X-CURRENT-DUE';
                $component->setProperty( $propName, $datestring );
              } // end if( $dtendExist || $dueExist || $durationExist )
              $wd        = getdate( $rstart );
              $result[$wd['year']][$wd['mon']][$wd['mday']][$compUID] = $component->copy(); // copy to output
              $rstart    = mktime( date( 'H', $rstart ), date( 'i', $rstart ), date( 's', $rstart ), date( 'm', $rstart ), date( 'd', $rstart ) + 1, date( 'Y', $rstart ) ); // step one day
              $rstartYMD = date( 'Ymd', $rstart );
              $checkDate = mktime( 0, 0, 0, date( 'm', $rstart ), date( 'd', $rstart ), date( 'Y', $rstart ) ); // on a day-basis !!!
            } // end while( $rstart <= $endWdate )
          } // end if( !isset( $exdatelist[$checkDate] ))
        } // end elseif( $split )   -  else use component date
        elseif( $recurrid && !$flat && !$any && !$split )
          $continue = TRUE;
        else { // !$flat && !$split, i.e. no flat array and DTSTART within period
          $checkDate = mktime( 0, 0, 0, date( 'm', $startWdate ), date( 'd', $startWdate ), date( 'Y', $startWdate ) ); // on a day-basis !!!
// echo "going to test comp no:$cix with checkDate=$checkDate with recurridList=".implode(',',array_keys($recurridList)); // test ###
          if(( !$any || !isset( $exdatelist[$checkDate] )) &&   // exclude any recurrence date, found in exdatelist
              ( !isset( $recurridList[$checkDate] ) || $recurrid )) { // or in the recurridList, but not itself
// echo " and copied to output<br>\n"; // test ###
            $wd = getdate( $startWdate );
            $result[$wd['year']][$wd['mon']][$wd['mday']][$compUID] = $component->copy(); // copy to output
          }
        }
      } // end if(( $startWdate >= $startDate ) && ( $startWdate <= $endDate ))
            /* if 'any' components, check components with reccurrence rules, removing all excluding dates */
      if( TRUE === $any ) {
            /* make a list of optional repeating dates for component occurence, rrule, rdate */
        $recurlist = array();
        while( FALSE !== ( $rrule = $component->getProperty( 'rrule' )))    // check rrule
          iCalUtilityFunctions::_recur2date( $recurlist, $rrule, $start, $workstart, $workend );
        foreach( $recurlist as $recurkey => $recurvalue )                   // key=match date as timestamp
          $recurlist[$recurkey] = $rdurWsecs;                               // add duration in seconds
        while( FALSE !== ( $rdate = $component->getProperty( 'rdate' ))) {  // check rdate
          foreach( $rdate as $theRdate ) {
            if( is_array( $theRdate ) && ( 2 == count( $theRdate )) &&      // all days within PERIOD
                   array_key_exists( '0', $theRdate ) &&  array_key_exists( '1', $theRdate )) {
              $rstart = iCalUtilityFunctions::_date2timestamp( $theRdate[0] );
              if(( $rstart < ( $startDate - $rdurWsecs )) || ( $rstart > $endDate ))
                continue;
              if( isset( $theRdate[1]['year'] )) // date-date period
                $rend = iCalUtilityFunctions::_date2timestamp( $theRdate[1] );
              else {                             // date-duration period
                $rend = iCalUtilityFunctions::_duration2date( $theRdate[0], $theRdate[1] );
                $rend = iCalUtilityFunctions::_date2timestamp( $rend );
              }
              while( $rstart < $rend ) {
                $recurlist[$rstart] = $rdurWsecs; // set start date for recurrence instance + rdate duration in seconds
                $rstart = mktime( date( 'H', $rstart ), date( 'i', $rstart ), date( 's', $rstart ), date( 'm', $rstart ), date( 'd', $rstart ) + 1, date( 'Y', $rstart ) ); // step one day
              }
            } // PERIOD end
            else { // single date
              $theRdate = iCalUtilityFunctions::_date2timestamp( $theRdate );
              if((( $startDate - $rdurWsecs ) <= $theRdate ) && ( $endDate >= $theRdate ))
                $recurlist[$theRdate] = $rdurWsecs; // set start date for recurrence instance + event duration in seconds
            }
          }
        }  // end - check rdate
        foreach( $recurlist as $recurkey => $durvalue ) { // remove all recurrence START dates found in the exdatelist
          $checkDate = mktime( 0, 0, 0, date( 'm', $recurkey ), date( 'd', $recurkey ), date( 'Y', $recurkey ) ); // on a day-basis !!!
          if( isset( $exdatelist[$checkDate] )) // no recurring to start this day
            unset( $recurlist[$recurkey] );
        }
        if( 0 < count( $recurlist )) {
          ksort( $recurlist );
          $xRecurrence = 1;
          $component2  = $component->copy();
          $compUID     = $component2->getProperty( 'UID' );
          foreach( $recurlist as $recurkey => $durvalue ) {
// echo "recurKey=".date( 'Y-m-d H:i:s', $recurkey ).' dur='.iCalUtilityFunctions::offsetSec2His( $durvalue )."<br>\n"; // test ###;
            if((( $startDate - $rdurWsecs ) > $recurkey ) || ( $endDate < $recurkey )) // not within period
              continue;
            $checkDate = mktime( 0, 0, 0, date( 'm', $recurkey ), date( 'd', $recurkey ), date( 'Y', $recurkey ) ); // on a day-basis !!!
            if( isset( $recurridList[$checkDate] )) // no recurring to start this day
              continue;
            if( isset( $exdatelist[$checkDate] ))   // check excluded dates
              continue;
            if( $startWdate >= $recurkey )          // exclude component start date
              continue;
            $rstart = $recurkey;
            $rend   = $recurkey + $durvalue;
           /* add repeating components within valid dates to output array, only start date set */
            if( $flat ) {
              if( !isset( $result[$compUID] )) // only one comp
                $result[$compUID] = $component2->copy(); // copy to output
            }
           /* add repeating components within valid dates to output array, one each day */
            elseif( $split ) {
              $xRecurrence += 1;
              if( $rend > $endDate )
                $rend = $endDate;
              $startYMD = $rstartYMD = date( 'Ymd', $rstart );
              $endYMD   = date( 'Ymd', $rend );
// echo "splitStart=".date( 'Y-m-d H:i:s', $rstart ).' end='.date( 'Y-m-d H:i:s', $rend )."<br>\n"; // test ###;
              while( $rstart <= $rend ) { // iterate.. .
                $checkDate = mktime( 0, 0, 0, date( 'm', $rstart ), date( 'd', $rstart ), date( 'Y', $rstart ) ); // on a day-basis !!!
                if( isset( $recurridList[$checkDate] )) // no recurring to start this day
                  break;
                if( isset( $exdatelist[$checkDate] ))   // exclude any recurrence START date, found in exdatelist
                  break;
// echo "checking date after startdate=".date( 'Y-m-d H:i:s', $rstart ).' mot '.date( 'Y-m-d H:i:s', $startDate )."<br>"; // test ###;
                if( $rstart >= $startDate ) {           // date after dtstart
                  if( $rstartYMD > $startYMD )          // date after dtstart
                    $datestring = date( $startDateFormat, $checkDate );
                  else
                    $datestring = date( $startDateFormat, $rstart );
                  if( isset( $start['tz'] ))
                    $datestring .= ' '.$start['tz'];
// echo "spliting = $datestring<BR>\n"; // test ###
                  $component2->setProperty( 'X-CURRENT-DTSTART', $datestring );
                  if( $dtendExist || $dueExist || $durationExist ) {
                    if( $rstartYMD < $endYMD ) // not the last day
                      $tend = mktime( 23, 59, 59, date( 'm', $rstart ), date( 'd', $rstart ), date( 'Y', $rstart ));
                    else
                      $tend = mktime( date( 'H', $endWdate ), date( 'i', $endWdate ), date( 's', $endWdate ), date( 'm', $rstart ), date( 'd', $rstart ), date( 'Y', $rstart ) ); // on a day-basis !!!
                    if( $endAllDayEvent && $dtendExist )
                      $tend += ( 24 * 3600 );           // alldaysevents has an end date 'day after' meaning this day
                    $datestring = date( $endDateFormat, $tend );
                    if( isset( $end['tz'] ))
                      $datestring .= ' '.$end['tz'];
                    $propName = ( !$dueExist ) ? 'X-CURRENT-DTEND' : 'X-CURRENT-DUE';
                    $component2->setProperty( $propName, $datestring );
                  } // end if( $dtendExist || $dueExist || $durationExist )
                  $component2->setProperty( 'X-RECURRENCE', $xRecurrence );
                  $wd = getdate( $rstart );
                  $result[$wd['year']][$wd['mon']][$wd['mday']][$compUID] = $component2->copy(); // copy to output
                } // end if( $checkDate > $startYMD ) { // date after dtstart
                $rstart = mktime( date( 'H', $rstart ), date( 'i', $rstart ), date( 's', $rstart ), date( 'm', $rstart ), date( 'd', $rstart ) + 1, date( 'Y', $rstart ) ); // step one day
                $rstartYMD = date( 'Ymd', $rstart );
              } // end while( $rstart <= $rend )
            } // end elseif( $split )
            elseif( $rstart >= $startDate ) {           // date within period   //* flat=FALSE && split=FALSE => one comp every recur startdate *//
              $xRecurrence += 1;
              $checkDate = mktime( 0, 0, 0, date( 'm', $rstart ), date( 'd', $rstart ), date( 'Y', $rstart ) ); // on a day-basis !!!
              if( !isset( $exdatelist[$checkDate] )) {  // exclude any recurrence START date, found in exdatelist
                $datestring = date( $startDateFormat, $rstart );
                if( isset( $start['tz'] ))
                  $datestring .= ' '.$start['tz'];
//echo "X-CURRENT-DTSTART 2 = $datestring xRecurrence=$xRecurrence tcnt =".++$tcnt."<br>";$component2->setProperty( 'X-CNT', $tcnt ); // test ###
                $component2->setProperty( 'X-CURRENT-DTSTART', $datestring );
                if( $dtendExist || $dueExist || $durationExist ) {
                  $tend = $rstart + $rdurWsecs;
                  if( date( 'Ymd', $tend ) < date( 'Ymd', $endWdate ))
                    $tend = mktime( 23, 59, 59, date( 'm', $tend ), date( 'd', $tend ), date( 'Y', $tend ));
                  else
                    $tend = mktime( date( 'H', $endWdate ), date( 'i', $endWdate ), date( 's', $endWdate ), date( 'm', $tend ), date( 'd', $tend ), date( 'Y', $tend ) ); // on a day-basis !!!
                  if( $endAllDayEvent && $dtendExist )
                    $tend += ( 24 * 3600 ); // alldaysevents has an end date 'day after' meaning this day
                  $datestring = date( $endDateFormat, $tend );
                  if( isset( $end['tz'] ))
                    $datestring .= ' '.$end['tz'];
                  $propName = ( !$dueExist ) ? 'X-CURRENT-DTEND' : 'X-CURRENT-DUE';
                  $component2->setProperty( $propName, $datestring );
                } // end if( $dtendExist || $dueExist || $durationExist )
                $component2->setProperty( 'X-RECURRENCE', $xRecurrence );
                $wd = getdate( $rstart );
                $result[$wd['year']][$wd['mon']][$wd['mday']][$compUID] = $component2->copy(); // copy to output
              } // end if( !isset( $exdatelist[$checkDate] ))
            } // end elseif( $rstart >= $startDate )
          } // end foreach( $recurlist as $recurkey => $durvalue )
          unset( $component2 );
        } // end if( 0 < count( $recurlist ))
            /* deselect components with startdate/enddate not within period */
        if(( $endWdate < $startDate ) || ( $startWdate > $endDate ))
          continue;
      } // end if( TRUE === $any )
    } // end foreach ( $this->components as $cix => $component )
    unset( $dtendExist, $dueExist, $durationExist, $endAllDayEvent, $recurrid, $recurridList,
           $end, $startWdate, $endWdate, $rdurWsecs, $rdur, $exdatelist, $recurlist, $workstart, $workend, $endDateFormat ); // clean up
    if( 0 >= count( $result )) return FALSE;
    elseif( !$flat ) {
      foreach( $result as $y => $yeararr ) {
        foreach( $yeararr as $m => $montharr ) {
          foreach( $montharr as $d => $dayarr ) {
            if( empty( $result[$y][$m][$d] ))
                unset( $result[$y][$m][$d] );
            else
              $result[$y][$m][$d] = array_values( $dayarr ); // skip tricky UID-index, hoping they are in hour order.. .
          }
          if( empty( $result[$y][$m] ))
              unset( $result[$y][$m] );
          else
            ksort( $result[$y][$m] );
        }
        if( empty( $result[$y] ))
            unset( $result[$y] );
        else
          ksort( $result[$y] );
      }
      if( empty( $result ))
          unset( $result );
      else
        ksort( $result );
    } // end elseif( !$flat )
    if( 0 >= count( $result ))
      return FALSE;
    return $result;
  }
/**
 * select components from calendar on based on specific property value(-s)
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.6 - 2012-12-26
 * @param array $selectOptions, (string) key => (mixed) value, (key=propertyName)
 * @return array
 */
  function selectComponents2( $selectOptions ) {
    $output = array();
    $allowedComps      = array('vevent', 'vtodo', 'vjournal', 'vfreebusy' );
    $allowedProperties = array( 'ATTENDEE', 'CATEGORIES', 'CONTACT', 'LOCATION', 'ORGANIZER', 'PRIORITY', 'RELATED-TO', 'RESOURCES', 'STATUS', 'SUMMARY', 'UID', 'URL' );
    foreach( $this->components as $cix => $component3 ) {
      if( !in_array( $component3->objName, $allowedComps ))
        continue;
      $uid = $component3->getProperty( 'UID' );
      foreach( $selectOptions as $propName => $pvalue ) {
        $propName = strtoupper( $propName );
        if( !in_array( $propName, $allowedProperties ))
          continue;
        if( !is_array( $pvalue ))
          $pvalue = array( $pvalue );
        if(( 'UID' == $propName ) && in_array( $uid, $pvalue )) {
          $output[$uid][] = $component3->copy();
          continue;
        }
        elseif(( 'ATTENDEE' == $propName ) || ( 'CATEGORIES' == $propName ) || ( 'CONTACT' == $propName ) || ( 'RELATED-TO' == $propName ) || ( 'RESOURCES' == $propName )) { // multiple occurrence?
          $propValues = array();
          $component3->_getProperties( $propName, $propValues );
          $propValues = array_keys( $propValues );
          foreach( $pvalue as $theValue ) {
            if( in_array( $theValue, $propValues )) { //  && !isset( $output[$uid] )) {
              $output[$uid][] = $component3->copy();
              break;
            }
          }
          continue;
        } // end   elseif( // multiple occurrence?
        elseif( FALSE === ( $d = $component3->getProperty( $propName ))) // single occurrence
          continue;
        if( is_array( $d )) {
          foreach( $d as $part ) {
            if( in_array( $part, $pvalue ) && !isset( $output[$uid] ))
              $output[$uid][] = $component3->copy();
          }
        }
        elseif(( 'SUMMARY' == $propName ) && !isset( $output[$uid] )) {
          foreach( $pvalue as $pval ) {
            if( FALSE !== stripos( $d, $pval )) {
              $output[$uid][] = $component3->copy();
              break;
            }
          }
        }
        elseif( in_array( $d, $pvalue ) && !isset( $output[$uid] ))
          $output[$uid][] = $component3->copy();
      } // end foreach( $selectOptions as $propName => $pvalue ) {
    } // end foreach( $this->components as $cix => $component3 ) {
    if( !empty( $output )) {
      ksort( $output ); // uid order
      $output2 = array();
      foreach( $output as $uid => $components ) {
        foreach( $components as $component )
          $output2[] = $component;
      }
      $output = $output2;
    }
    return $output;
  }
/**
 * add calendar component to container
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.8.8 - 2011-03-15
 * @param object $component calendar component
 * @param mixed $arg1 optional, ordno/component type/ component uid
 * @param mixed $arg2 optional, ordno if arg1 = component type
 * @return void
 */
  function setComponent( $component, $arg1=FALSE, $arg2=FALSE  ) {
    $component->setConfig( $this->getConfig(), FALSE, TRUE );
    if( !in_array( $component->objName, array( 'valarm', 'vtimezone' ))) {
            /* make sure dtstamp and uid is set */
      $dummy1 = $component->getProperty( 'dtstamp' );
      $dummy2 = $component->getProperty( 'uid' );
    }
    if( !$arg1 ) { // plain insert, last in chain
      $this->components[] = $component->copy();
      return TRUE;
    }
    $argType = $index = null;
    if ( ctype_digit( (string) $arg1 )) { // index insert/replace
      $argType = 'INDEX';
      $index   = (int) $arg1 - 1;
    }
    elseif( in_array( strtolower( $arg1 ), array( 'vevent', 'vtodo', 'vjournal', 'vfreebusy', 'valarm', 'vtimezone' ))) {
      $argType = strtolower( $arg1 );
      $index = ( ctype_digit( (string) $arg2 )) ? ((int) $arg2) - 1 : 0;
    }
    // else if arg1 is set, arg1 must be an UID
    $cix1sC = 0;
    foreach ( $this->components as $cix => $component2) {
      if( empty( $component2 )) continue;
      if(( 'INDEX' == $argType ) && ( $index == $cix )) { // index insert/replace
        $this->components[$cix] = $component->copy();
        return TRUE;
      }
      elseif( $argType == $component2->objName ) { // component Type index insert/replace
        if( $index == $cix1sC ) {
          $this->components[$cix] = $component->copy();
          return TRUE;
        }
        $cix1sC++;
      }
      elseif( !$argType && ( $arg1 == $component2->getProperty( 'uid' ))) { // UID insert/replace
        $this->components[$cix] = $component->copy();
        return TRUE;
      }
    }
            /* arg1=index and not found.. . insert at index .. .*/
    if( 'INDEX' == $argType ) {
      $this->components[$index] = $component->copy();
      ksort( $this->components, SORT_NUMERIC );
    }
    else    /* not found.. . insert last in chain anyway .. .*/
      $this->components[] = $component->copy();
    return TRUE;
  }
/**
 * sort iCal compoments
 *
 * ascending sort on properties (if exist) x-current-dtstart, dtstart,
 * x-current-dtend, dtend, x-current-due, due, duration, created, dtstamp, uid if called without arguments,
 * otherwise sorting on specific (argument) property values
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.4 - 2012-12-17
 * @param string $sortArg, optional
 * @return void
 *
 */
  function sort( $sortArg=FALSE ) {
    if( ! is_array( $this->components ) || ( 2 > count( $this->components )))
      return;
    if( $sortArg ) {
      $sortArg = strtoupper( $sortArg );
      if( !in_array( $sortArg, array( 'ATTENDEE', 'CATEGORIES', 'CONTACT', 'DTSTAMP', 'LOCATION', 'ORGANIZER', 'PRIORITY', 'RELATED-TO', 'RESOURCES', 'STATUS', 'SUMMARY', 'UID', 'URL' )))
        $sortArg = FALSE;
    }
            /* set sort parameters for each component */
    foreach( $this->components as $cix => & $c ) {
      $c->srtk = array( '0', '0', '0', '0' );
      if( 'vtimezone' == $c->objName ) {
        if( FALSE === ( $c->srtk[0] = $c->getProperty( 'tzid' )))
          $c->srtk[0] = 0;
        continue;
      }
      elseif( $sortArg ) {
        if(( 'ATTENDEE' == $sortArg ) || ( 'CATEGORIES' == $sortArg ) || ( 'CONTACT' == $sortArg ) || ( 'RELATED-TO' == $sortArg ) || ( 'RESOURCES' == $sortArg )) {
          $propValues = array();
          $c->_getProperties( $sortArg, $propValues );
          if( !empty( $propValues )) {
            $sk         = array_keys( $propValues );
            $c->srtk[0] = $sk[0];
            if( 'RELATED-TO'  == $sortArg )
              $c->srtk[0] .= $c->getProperty( 'uid' );
          }
          elseif( 'RELATED-TO'  == $sortArg )
            $c->srtk[0] = $c->getProperty( 'uid' );
        }
        elseif( FALSE !== ( $d = $c->getProperty( $sortArg ))) {
          $c->srtk[0] = $d;
          if( 'UID' == $sortArg ) {
            if( FALSE !== ( $d = $c->getProperty( 'recurrence-id' ))) {
              $c->srtk[1] = iCalUtilityFunctions::_date2strdate( $d );
              if( FALSE === ( $c->srtk[2] = $c->getProperty( 'sequence' )))
                $c->srtk[2] = PHP_INT_MAX;
            }
            else
              $c->srtk[1] = $c->srtk[2] = PHP_INT_MAX;
          }
        }
        continue;
      } // end elseif( $sortArg )
      if( FALSE !== ( $d = $c->getProperty( 'X-CURRENT-DTSTART' ))) {
        $c->srtk[0] = iCalUtilityFunctions::_strdate2date( $d[1] );
        unset( $c->srtk[0]['unparsedtext'] );
      }
      elseif( FALSE === ( $c->srtk[0] = $c->getProperty( 'dtstart' )))
        $c->srtk[0] = 0;                                                  // sortkey 0 : dtstart

      if( FALSE !== ( $d = $c->getProperty( 'X-CURRENT-DTEND' ))) {
        $c->srtk[1] = iCalUtilityFunctions::_strdate2date( $d[1] );   // sortkey 1 : dtend/due(/duration)
        unset( $c->srtk[1]['unparsedtext'] );
      }
      elseif( FALSE === ( $c->srtk[1] = $c->getProperty( 'dtend' ))) {
        if( FALSE !== ( $d = $c->getProperty( 'X-CURRENT-DUE' ))) {
          $c->srtk[1] = iCalUtilityFunctions::_strdate2date( $d[1] );
          unset( $c->srtk[1]['unparsedtext'] );
        }
        elseif( FALSE === ( $c->srtk[1] = $c->getProperty( 'due' )))
          if( FALSE === ( $c->srtk[1] = $c->getProperty( 'duration', FALSE, FALSE, TRUE )))
            $c->srtk[1] = 0;
      }

      if( FALSE === ( $c->srtk[2] = $c->getProperty( 'created' )))      // sortkey 2 : created/dtstamp
        if( FALSE === ( $c->srtk[2] = $c->getProperty( 'dtstamp' )))
          $c->srtk[2] = 0;

      if( FALSE === ( $c->srtk[3] = $c->getProperty( 'uid' )))          // sortkey 3 : uid
        $c->srtk[3] = 0;
    } // end foreach( $this->components as & $c
            /* sort */
    usort( $this->components, array( 'iCalUtilityFunctions', '_cmpfcn' ));
  }
/**
 * parse iCal text/file into vcalendar, components, properties and parameters
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @param mixed $unparsedtext, optional, strict rfc2445 formatted, single property string or array of property strings
 * @return bool FALSE if error occurs during parsing
 *
 */
  function parse( $unparsedtext=FALSE ) {
    $nl = $this->getConfig( 'nl' );
    if(( FALSE === $unparsedtext ) || empty( $unparsedtext )) {
            /* directory+filename is set previously via setConfig directory+filename or url */
      if( FALSE === ( $filename = $this->getConfig( 'url' )))
        $filename = $this->getConfig( 'dirfile' );
            /* READ FILE */
      if( FALSE === ( $rows = file_get_contents( $filename )))
        return FALSE;                 /* err 1 */
    }
    elseif( is_array( $unparsedtext ))
      $rows =  implode( '\n'.$nl, $unparsedtext );
    else
      $rows = & $unparsedtext;
            /* fix line folding */
    $rows = explode( $nl, iCalUtilityFunctions::convEolChar( $rows, $nl ));
            /* skip leading (empty/invalid) lines */
    foreach( $rows as $lix => $line ) {
      if( FALSE !== stripos( $line, 'BEGIN:VCALENDAR' ))
        break;
      unset( $rows[$lix] );
    }
    $rcnt = count( $rows );
    if( 3 > $rcnt )                  /* err 10 */
      return FALSE;
            /* skip trailing empty lines and ensure an end row */
    $lix  = array_keys( $rows );
    $lix  = end( $lix );
    while( 3 < $lix ) {
      $tst = trim( $rows[$lix] );
      if(( '\n' == $tst ) || empty( $tst )) {
        unset( $rows[$lix] );
        $lix--;
        continue;
      }
      if( FALSE === stripos( $rows[$lix], 'END:VCALENDAR' ))
        $rows[] = 'END:VCALENDAR';
      break;
    }
    $comp    = & $this;
    $calsync = $compsync = 0;
            /* identify components and update unparsed data within component */
    $config = $this->getConfig();
    $endtxt = array( 'END:VE', 'END:VF', 'END:VJ', 'END:VT' );
    foreach( $rows as $lix => $line ) {
      if(     'BEGIN:VCALENDAR' == strtoupper( substr( $line, 0, 15 ))) {
        $calsync++;
        continue;
      }
      elseif( 'END:VCALENDAR'   == strtoupper( substr( $line, 0, 13 ))) {
        if( 0 < $compsync )
          $this->components[] = $comp->copy();
        $compsync--;
        $calsync--;
        break;
      }
      elseif( 1 != $calsync )
        return FALSE;                 /* err 20 */
      elseif( in_array( strtoupper( substr( $line, 0, 6 )), $endtxt )) {
        $this->components[] = $comp->copy();
        $compsync--;
        continue;
      }
      if(     'BEGIN:VEVENT'    == strtoupper( substr( $line, 0, 12 ))) {
        $comp = new vevent( $config );
        $compsync++;
      }
      elseif( 'BEGIN:VFREEBUSY' == strtoupper( substr( $line, 0, 15 ))) {
        $comp = new vfreebusy( $config );
        $compsync++;
      }
      elseif( 'BEGIN:VJOURNAL'  == strtoupper( substr( $line, 0, 14 ))) {
        $comp = new vjournal( $config );
        $compsync++;
      }
      elseif( 'BEGIN:VTODO'     == strtoupper( substr( $line, 0, 11 ))) {
        $comp = new vtodo( $config );
        $compsync++;
      }
      elseif( 'BEGIN:VTIMEZONE' == strtoupper( substr( $line, 0, 15 ))) {
        $comp = new vtimezone( $config );
        $compsync++;
      }
      else { /* update component with unparsed data */
        $comp->unparsed[] = $line;
      }
    } // end foreach( $rows as $line )
    unset( $config, $endtxt );
            /* parse data for calendar (this) object */
    if( isset( $this->unparsed ) && is_array( $this->unparsed ) && ( 0 < count( $this->unparsed ))) {
            /* concatenate property values spread over several lines */
      $propnames = array( 'calscale','method','prodid','version','x-' );
      $proprows  = array();
      for( $i = 0; $i < count( $this->unparsed ); $i++ ) { // concatenate lines
        $line = rtrim( $this->unparsed[$i], $nl );
        while( isset( $this->unparsed[$i+1] ) && !empty( $this->unparsed[$i+1] ) && ( ' ' == $this->unparsed[$i+1]{0} ))
          $line .= rtrim( substr( $this->unparsed[++$i], 1 ), $nl );
        $proprows[] = $line;
      }
      $paramMStz   = array( 'utc-', 'utc+', 'gmt-', 'gmt+' );
      $paramProto3 = array( 'fax:', 'cid:', 'sms:', 'tel:', 'urn:' );
      $paramProto4 = array( 'crid:', 'news:', 'pres:' );
      foreach( $proprows as $line ) {
        if( '\n' == substr( $line, -2 ))
          $line = substr( $line, 0, -2 );
            /* get property name */
        $propname  = '';
        $cix       = 0;
        while( FALSE !== ( $char = substr( $line, $cix, 1 ))) {
          if( in_array( $char, array( ':', ';' )))
            break;
          else
            $propname .= $char;
          $cix++;
        }
            /* skip non standard property names */
        if(( 'x-' != strtolower( substr( $propname, 0, 2 ))) && !in_array( strtolower( $propname ), $propnames ))
          continue;
            /* ignore version/prodid properties */
        if( in_array( strtolower( $propname ), array( 'version', 'prodid' )))
          continue;
            /* rest of the line is opt.params and value */
        $line = substr( $line, $cix);
            /* separate attributes from value */
        $attr         = array();
        $attrix       = -1;
        $strlen       = strlen( $line );
        $WithinQuotes = FALSE;
        $cix          = 0;
        while( FALSE !== substr( $line, $cix, 1 )) {
          if(                       ( ':'  == $line[$cix] )                         &&
                                    ( substr( $line,$cix,     3 )  != '://' )       &&
             ( !in_array( strtolower( substr( $line,$cix - 6, 4 )), $paramMStz ))   &&
             ( !in_array( strtolower( substr( $line,$cix - 3, 4 )), $paramProto3 )) &&
             ( !in_array( strtolower( substr( $line,$cix - 4, 5 )), $paramProto4 )) &&
                        ( strtolower( substr( $line,$cix - 6, 7 )) != 'mailto:' )   &&
               !$WithinQuotes ) {
            $attrEnd = TRUE;
            if(( $cix < ( $strlen - 4 )) &&
                 ctype_digit( substr( $line, $cix+1, 4 ))) { // an URI with a (4pos) portnr??
              for( $c2ix = $cix; 3 < $c2ix; $c2ix-- ) {
                if( '://' == substr( $line, $c2ix - 2, 3 )) {
                  $attrEnd = FALSE;
                  break; // an URI with a portnr!!
                }
              }
            }
            if( $attrEnd) {
              $line = substr( $line, ( $cix + 1 ));
              break;
            }
          }
          if( '"' == $line[$cix] )
            $WithinQuotes = ( FALSE === $WithinQuotes ) ? TRUE : FALSE;
          if( ';' == $line[$cix] )
            $attr[++$attrix] = null;
          else
            $attr[$attrix] .= $line[$cix];
          $cix++;
        }
            /* make attributes in array format */
        $propattr = array();
        foreach( $attr as $attribute ) {
          $attrsplit = explode( '=', $attribute, 2 );
          if( 1 < count( $attrsplit ))
            $propattr[$attrsplit[0]] = $attrsplit[1];
          else
            $propattr[] = $attribute;
        }
            /* update Property */
        if( FALSE !== strpos( $line, ',' )) {
          $content  = array( 0 => '' );
          $cix = $lix = 0;
          while( FALSE !== substr( $line, $lix, 1 )) {
            if(( 0 < $lix ) && ( ',' == $line[$lix] ) && ( "\\" != $line[( $lix - 1 )])) {
              $cix++;
              $content[$cix] = '';
            }
            else
              $content[$cix] .= $line[$lix];
            $lix++;
          }
          if( 1 < count( $content )) {
            foreach( $content as $cix => $contentPart )
              $content[$cix] = iCalUtilityFunctions::_strunrep( $contentPart );
            $this->setProperty( $propname, $content, $propattr );
            continue;
          }
          else
            $line = reset( $content );
          $line = iCalUtilityFunctions::_strunrep( $line );
        }
        $this->setProperty( $propname, rtrim( $line, "\x00..\x1F" ), $propattr );
      } // end - foreach( $this->unparsed.. .
    } // end - if( is_array( $this->unparsed.. .
    unset( $unparsedtext, $rows, $this->unparsed, $proprows );
            /* parse Components */
    if( is_array( $this->components ) && ( 0 < count( $this->components ))) {
      $ckeys = array_keys( $this->components );
      foreach( $ckeys as $ckey ) {
        if( !empty( $this->components[$ckey] ) && !empty( $this->components[$ckey]->unparsed )) {
          $this->components[$ckey]->parse();
        }
      }
    }
    else
      return FALSE;                   /* err 91 or something.. . */
    return TRUE;
  }
/*********************************************************************************/
/**
 * creates formatted output for calendar object instance
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.10.16 - 2011-10-28
 * @return string
 */
  function createCalendar() {
    $calendarInit = $calendarxCaldecl = $calendarStart = $calendar = '';
    switch( $this->format ) {
      case 'xcal':
        $calendarInit  = '<?xml version="1.0" encoding="UTF-8"?>'.$this->nl.
                         '<!DOCTYPE vcalendar PUBLIC "-//IETF//DTD XCAL/iCalendar XML//EN"'.$this->nl.
                         '"http://www.ietf.org/internet-drafts/draft-ietf-calsch-many-xcal-01.txt"';
        $calendarStart = '>'.$this->nl.'<vcalendar';
        break;
      default:
        $calendarStart = 'BEGIN:VCALENDAR'.$this->nl;
        break;
    }
    $calendarStart .= $this->createVersion();
    $calendarStart .= $this->createProdid();
    $calendarStart .= $this->createCalscale();
    $calendarStart .= $this->createMethod();
    if( 'xcal' == $this->format )
      $calendarStart .= '>'.$this->nl;
    $calendar .= $this->createXprop();

    foreach( $this->components as $component ) {
      if( empty( $component )) continue;
      $component->setConfig( $this->getConfig(), FALSE, TRUE );
      $calendar .= $component->createComponent( $this->xcaldecl );
    }
    if(( 'xcal' == $this->format ) && ( 0 < count( $this->xcaldecl ))) { // xCal only
      $calendarInit .= ' [';
      $old_xcaldecl  = array();
      foreach( $this->xcaldecl as $declix => $declPart ) {
        if(( 0 < count( $old_xcaldecl))    &&
             isset( $declPart['uri'] )     && isset( $declPart['external'] )     &&
             isset( $old_xcaldecl['uri'] ) && isset( $old_xcaldecl['external'] ) &&
           ( in_array( $declPart['uri'],      $old_xcaldecl['uri'] ))            &&
           ( in_array( $declPart['external'], $old_xcaldecl['external'] )))
          continue; // no duplicate uri and ext. references
        if(( 0 < count( $old_xcaldecl))    &&
            !isset( $declPart['uri'] )     && !isset( $declPart['uri'] )         &&
             isset( $declPart['ref'] )     && isset( $old_xcaldecl['ref'] )      &&
           ( in_array( $declPart['ref'],      $old_xcaldecl['ref'] )))
          continue; // no duplicate element declarations
        $calendarxCaldecl .= $this->nl.'<!';
        foreach( $declPart as $declKey => $declValue ) {
          switch( $declKey ) {                    // index
            case 'xmldecl':                       // no 1
              $calendarxCaldecl .= $declValue.' ';
              break;
            case 'uri':                           // no 2
              $calendarxCaldecl .= $declValue.' ';
              $old_xcaldecl['uri'][] = $declValue;
              break;
            case 'ref':                           // no 3
              $calendarxCaldecl .= $declValue.' ';
              $old_xcaldecl['ref'][] = $declValue;
              break;
            case 'external':                      // no 4
              $calendarxCaldecl .= '"'.$declValue.'" ';
              $old_xcaldecl['external'][] = $declValue;
              break;
            case 'type':                          // no 5
              $calendarxCaldecl .= $declValue.' ';
              break;
            case 'type2':                         // no 6
              $calendarxCaldecl .= $declValue;
              break;
          }
        }
        $calendarxCaldecl .= '>';
      }
      $calendarxCaldecl .= $this->nl.']';
    }
    switch( $this->format ) {
      case 'xcal':
        $calendar .= '</vcalendar>'.$this->nl;
        break;
      default:
        $calendar .= 'END:VCALENDAR'.$this->nl;
        break;
    }
    return $calendarInit.$calendarxCaldecl.$calendarStart.$calendar;
  }
/**
 * a HTTP redirect header is sent with created, updated and/or parsed calendar
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.10.24 - 2011-12-23
 * @param bool $utf8Encode
 * @param bool $gzip
 * @return redirect
 */
  function returnCalendar( $utf8Encode=FALSE, $gzip=FALSE ) {
    $filename = $this->getConfig( 'filename' );
    $output   = $this->createCalendar();
    if( $utf8Encode )
      $output = utf8_encode( $output );
    if( $gzip ) {
      $output = gzencode( $output, 9 );
      header( 'Content-Encoding: gzip' );
      header( 'Vary: *' );
      header( 'Content-Length: '.strlen( $output ));
    }
    if( 'xcal' == $this->format )
      header( 'Content-Type: application/calendar+xml; charset=utf-8' );
    else
      header( 'Content-Type: text/calendar; charset=utf-8' );
    header( 'Content-Disposition: attachment; filename="'.$filename.'"' );
    header( 'Cache-Control: max-age=10' );
    die( $output );
  }
/**
 * save content in a file
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.2.12 - 2007-12-30
 * @param string $directory optional
 * @param string $filename optional
 * @param string $delimiter optional
 * @return bool
 */
  function saveCalendar( $directory=FALSE, $filename=FALSE, $delimiter=FALSE ) {
    if( $directory )
      $this->setConfig( 'directory', $directory );
    if( $filename )
      $this->setConfig( 'filename',  $filename );
    if( $delimiter && ($delimiter != DIRECTORY_SEPARATOR ))
      $this->setConfig( 'delimiter', $delimiter );
    if( FALSE === ( $dirfile = $this->getConfig( 'url' )))
      $dirfile = $this->getConfig( 'dirfile' );
    $iCalFile = @fopen( $dirfile, 'w' );
    if( $iCalFile ) {
      if( FALSE === fwrite( $iCalFile, $this->createCalendar() ))
        return FALSE;
      fclose( $iCalFile );
      return TRUE;
    }
    else
      return FALSE;
  }
/**
 * if recent version of calendar file exists (default one hour), an HTTP redirect header is sent
 * else FALSE is returned
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.2.12 - 2007-10-28
 * @param string $directory optional alt. int timeout
 * @param string $filename optional
 * @param string $delimiter optional
 * @param int timeout optional, default 3600 sec
 * @return redirect/FALSE
 */
  function useCachedCalendar( $directory=FALSE, $filename=FALSE, $delimiter=FALSE, $timeout=3600) {
    if ( $directory && ctype_digit( (string) $directory ) && !$filename ) {
      $timeout   = (int) $directory;
      $directory = FALSE;
    }
    if( $directory )
      $this->setConfig( 'directory', $directory );
    if( $filename )
      $this->setConfig( 'filename',  $filename );
    if( $delimiter && ( $delimiter != DIRECTORY_SEPARATOR ))
      $this->setConfig( 'delimiter', $delimiter );
    $filesize    = $this->getConfig( 'filesize' );
    if( 0 >= $filesize )
      return FALSE;
    $dirfile     = $this->getConfig( 'dirfile' );
    if( time() - filemtime( $dirfile ) < $timeout) {
      clearstatcache();
      $dirfile   = $this->getConfig( 'dirfile' );
      $filename  = $this->getConfig( 'filename' );
//    if( headers_sent( $filename, $linenum ))
//      die( "Headers already sent in $filename on line $linenum\n" );
      if( 'xcal' == $this->format )
        header( 'Content-Type: application/calendar+xml; charset=utf-8' );
      else
        header( 'Content-Type: text/calendar; charset=utf-8' );
      header( 'Content-Length: '.$filesize );
      header( 'Content-Disposition: attachment; filename="'.$filename.'"' );
      header( 'Cache-Control: max-age=10' );
      $fp = @fopen( $dirfile, 'r' );
      if( $fp ) {
        fpassthru( $fp );
        fclose( $fp );
      }
      die();
    }
    else
      return FALSE;
  }
}
/*********************************************************************************/
/*********************************************************************************/
/**
 *  abstract class for calendar components
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.9.6 - 2011-05-14
 */
class calendarComponent {
            //  component property variables
  var $uid;
  var $dtstamp;

            //  component config variables
  var $allowEmpty;
  var $language;
  var $nl;
  var $unique_id;
  var $format;
  var $objName; // created automatically at instance creation
  var $dtzid;   // default (local) timezone
            //  component internal variables
  var $componentStart1;
  var $componentStart2;
  var $componentEnd1;
  var $componentEnd2;
  var $elementStart1;
  var $elementStart2;
  var $elementEnd1;
  var $elementEnd2;
  var $intAttrDelimiter;
  var $attributeDelimiter;
  var $valueInit;
            //  component xCal declaration container
  var $xcaldecl;
/**
 * constructor for calendar component object
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.9.6 - 2011-05-17
 */
  function calendarComponent() {
    $this->objName         = ( isset( $this->timezonetype )) ?
                          strtolower( $this->timezonetype )  :  get_class ( $this );
    $this->uid             = array();
    $this->dtstamp         = array();

    $this->language        = null;
    $this->nl              = null;
    $this->unique_id       = null;
    $this->format          = null;
    $this->dtzid           = null;
    $this->allowEmpty      = TRUE;
    $this->xcaldecl        = array();

    $this->_createFormat();
    $this->_makeDtstamp();
  }
/*********************************************************************************/
/**
 * Property Name: ACTION
 */
/**
 * creates formatted output for calendar component property action
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-22
 * @return string
 */
  function createAction() {
    if( empty( $this->action )) return FALSE;
    if( empty( $this->action['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'ACTION' ) : FALSE;
    $attributes = $this->_createParams( $this->action['params'] );
    return $this->_createElement( 'ACTION', $attributes, $this->action['value'] );
  }
/**
 * set calendar component property action
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value  "AUDIO" / "DISPLAY" / "EMAIL" / "PROCEDURE"
 * @param mixed $params
 * @return bool
 */
  function setAction( $value, $params=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $this->action = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: ATTACH
 */
/**
 * creates formatted output for calendar component property attach
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.11.16 - 2012-02-04
 * @return string
 */
  function createAttach() {
    if( empty( $this->attach )) return FALSE;
    $output       = null;
    foreach( $this->attach as $attachPart ) {
      if( !empty( $attachPart['value'] )) {
        $attributes = $this->_createParams( $attachPart['params'] );
        if(( 'xcal' != $this->format ) && isset( $attachPart['params']['VALUE'] ) && ( 'BINARY' == $attachPart['params']['VALUE'] )) {
          $attributes = str_replace( $this->intAttrDelimiter, $this->attributeDelimiter, $attributes );
          $str        = 'ATTACH'.$attributes.$this->valueInit.$attachPart['value'];
          $output     = substr( $str, 0, 75 ).$this->nl;
          $str        = substr( $str, 75 );
          $output    .= ' '.chunk_split( $str, 74, $this->nl.' ' );
          if( ' ' == substr( $output, -1 ))
            $output   = rtrim( $output );
          if( $this->nl != substr( $output, ( 0 - strlen( $this->nl ))))
            $output  .= $this->nl;
          return $output;
        }
        $output    .= $this->_createElement( 'ATTACH', $attributes, $attachPart['value'] );
      }
      elseif( $this->getConfig( 'allowEmpty' )) $output .= $this->_createElement( 'ATTACH' );
    }
    return $output;
  }
/**
 * set calendar component property attach
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param array $params, optional
 * @param integer $index, optional
 * @return bool
 */
  function setAttach( $value, $params=FALSE, $index=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    iCalUtilityFunctions::_setMval( $this->attach, $value, $params, FALSE, $index );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: ATTENDEE
 */
/**
 * creates formatted output for calendar component property attendee
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.11.12 - 2012-01-31
 * @return string
 */
  function createAttendee() {
    if( empty( $this->attendee )) return FALSE;
    $output = null;
    foreach( $this->attendee as $attendeePart ) {                      // start foreach 1
      if( empty( $attendeePart['value'] )) {
        if( $this->getConfig( 'allowEmpty' ))
          $output .= $this->_createElement( 'ATTENDEE' );
        continue;
      }
      $attendee1 = $attendee2 = null;
      foreach( $attendeePart as $paramlabel => $paramvalue ) {         // start foreach 2
        if( 'value' == $paramlabel )
          $attendee2     .= $paramvalue;
        elseif(( 'params' == $paramlabel ) && ( is_array( $paramvalue ))) { // start elseif
          $mParams = array( 'MEMBER', 'DELEGATED-TO', 'DELEGATED-FROM' );
          foreach( $paramvalue as $pKey => $pValue ) {                 // fix (opt) quotes
            if( is_array( $pValue ) || in_array( $pKey, $mParams ))
              continue;
            if(( FALSE !== strpos( $pValue, ':' )) ||
               ( FALSE !== strpos( $pValue, ';' )) ||
               ( FALSE !== strpos( $pValue, ',' )))
              $paramvalue[$pKey] = '"'.$pValue.'"';
          }
        // set attenddee parameters in rfc2445 order
          if( isset( $paramvalue['CUTYPE'] ))
            $attendee1   .= $this->intAttrDelimiter.'CUTYPE='.$paramvalue['CUTYPE'];
          if( isset( $paramvalue['MEMBER'] )) {
            $attendee1   .= $this->intAttrDelimiter.'MEMBER=';
            foreach( $paramvalue['MEMBER'] as $cix => $opv )
              $attendee1 .= ( $cix ) ? ',"'.$opv.'"' : '"'.$opv.'"' ;
          }
          if( isset( $paramvalue['ROLE'] ))
            $attendee1   .= $this->intAttrDelimiter.'ROLE='.$paramvalue['ROLE'];
          if( isset( $paramvalue['PARTSTAT'] ))
            $attendee1   .= $this->intAttrDelimiter.'PARTSTAT='.$paramvalue['PARTSTAT'];
          if( isset( $paramvalue['RSVP'] ))
            $attendee1   .= $this->intAttrDelimiter.'RSVP='.$paramvalue['RSVP'];
          if( isset( $paramvalue['DELEGATED-TO'] )) {
            $attendee1   .= $this->intAttrDelimiter.'DELEGATED-TO=';
            foreach( $paramvalue['DELEGATED-TO'] as $cix => $opv )
              $attendee1 .= ( $cix ) ? ',"'.$opv.'"' : '"'.$opv.'"' ;
          }
          if( isset( $paramvalue['DELEGATED-FROM'] )) {
            $attendee1   .= $this->intAttrDelimiter.'DELEGATED-FROM=';
            foreach( $paramvalue['DELEGATED-FROM'] as $cix => $opv )
              $attendee1 .= ( $cix ) ? ',"'.$opv.'"' : '"'.$opv.'"' ;
          }
          if( isset( $paramvalue['SENT-BY'] ))
            $attendee1   .= $this->intAttrDelimiter.'SENT-BY='.$paramvalue['SENT-BY'];
          if( isset( $paramvalue['CN'] ))
            $attendee1   .= $this->intAttrDelimiter.'CN='.$paramvalue['CN'];
          if( isset( $paramvalue['DIR'] )) {
            $delim = ( FALSE === strpos( $paramvalue['DIR'], '"' )) ? '"' : '';
            $attendee1   .= $this->intAttrDelimiter.'DIR='.$delim.$paramvalue['DIR'].$delim;
          }
          if( isset( $paramvalue['LANGUAGE'] ))
            $attendee1   .= $this->intAttrDelimiter.'LANGUAGE='.$paramvalue['LANGUAGE'];
          $xparams = array();
          foreach( $paramvalue as $optparamlabel => $optparamvalue ) { // start foreach 3
            if( ctype_digit( (string) $optparamlabel )) {
              $xparams[]  = $optparamvalue;
              continue;
            }
            if( !in_array( $optparamlabel, array( 'CUTYPE', 'MEMBER', 'ROLE', 'PARTSTAT', 'RSVP', 'DELEGATED-TO', 'DELEGATED-FROM', 'SENT-BY', 'CN', 'DIR', 'LANGUAGE' )))
              $xparams[$optparamlabel] = $optparamvalue;
          } // end foreach 3
          ksort( $xparams, SORT_STRING );
          foreach( $xparams as $paramKey => $paramValue ) {
            if( ctype_digit( (string) $paramKey ))
              $attendee1 .= $this->intAttrDelimiter.$paramValue;
            else
              $attendee1 .= $this->intAttrDelimiter."$paramKey=$paramValue";
          }      // end foreach 3
        }        // end elseif(( 'params' == $paramlabel ) && ( is_array( $paramvalue )))
      }          // end foreach 2
      $output .= $this->_createElement( 'ATTENDEE', $attendee1, $attendee2 );
    }              // end foreach 1
    return $output;
  }
/**
 * set calendar component property attach
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param array $params, optional
 * @param integer $index, optional
 * @return bool
 */
  function setAttendee( $value, $params=FALSE, $index=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
          // ftp://, http://, mailto:, file://, gopher://, news:, nntp://, telnet://, wais://, prospero://  may exist.. . also in params
    if( !empty( $value )) {
      if( FALSE === ( $pos = strpos( substr( $value, 0, 9 ), ':' )))
        $value = 'MAILTO:'.$value;
      elseif( !empty( $value ))
        $value = strtolower( substr( $value, 0, $pos )).substr( $value, $pos );
      $value = str_replace( 'mailto:', 'MAILTO:', $value );
    }
    $params2 = array();
    if( is_array($params )) {
      $optarrays = array();
      foreach( $params as $optparamlabel => $optparamvalue ) {
        $optparamlabel = strtoupper( $optparamlabel );
        switch( $optparamlabel ) {
          case 'MEMBER':
          case 'DELEGATED-TO':
          case 'DELEGATED-FROM':
            if( !is_array( $optparamvalue ))
              $optparamvalue = array( $optparamvalue );
            foreach( $optparamvalue as $part ) {
              $part = trim( $part );
              if(( '"' == substr( $part, 0, 1 )) &&
                 ( '"' == substr( $part, -1 )))
                $part = substr( $part, 1, ( strlen( $part ) - 2 ));
              if( 'mailto:' != strtolower( substr( $part, 0, 7 )))
                $part = "MAILTO:$part";
              else
                $part = 'MAILTO:'.substr( $part, 7 );
              $optarrays[$optparamlabel][] = $part;
            }
            break;
          default:
            if(( '"' == substr( $optparamvalue, 0, 1 )) &&
               ( '"' == substr( $optparamvalue, -1 )))
              $optparamvalue = substr( $optparamvalue, 1, ( strlen( $optparamvalue ) - 2 ));
            if( 'SENT-BY' ==  $optparamlabel ) {
              if( 'mailto:' != strtolower( substr( $optparamvalue, 0, 7 )))
                $optparamvalue = "MAILTO:$optparamvalue";
              else
                $optparamvalue = 'MAILTO:'.substr( $optparamvalue, 7 );
            }
            $params2[$optparamlabel] = $optparamvalue;
            break;
        } // end switch( $optparamlabel.. .
      } // end foreach( $optparam.. .
      foreach( $optarrays as $optparamlabel => $optparams )
        $params2[$optparamlabel] = $optparams;
    }
        // remove defaults
    iCalUtilityFunctions::_existRem( $params2, 'CUTYPE',   'INDIVIDUAL' );
    iCalUtilityFunctions::_existRem( $params2, 'PARTSTAT', 'NEEDS-ACTION' );
    iCalUtilityFunctions::_existRem( $params2, 'ROLE',     'REQ-PARTICIPANT' );
    iCalUtilityFunctions::_existRem( $params2, 'RSVP',     'FALSE' );
        // check language setting
    if( isset( $params2['CN' ] )) {
      $lang = $this->getConfig( 'language' );
      if( !isset( $params2['LANGUAGE' ] ) && !empty( $lang ))
        $params2['LANGUAGE' ] = $lang;
    }
    iCalUtilityFunctions::_setMval( $this->attendee, $value, $params2, FALSE, $index );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: CATEGORIES
 */
/**
 * creates formatted output for calendar component property categories
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @return string
 */
  function createCategories() {
    if( empty( $this->categories )) return FALSE;
    $output = null;
    foreach( $this->categories as $category ) {
      if( empty( $category['value'] )) {
        if ( $this->getConfig( 'allowEmpty' ))
          $output .= $this->_createElement( 'CATEGORIES' );
        continue;
      }
      $attributes = $this->_createParams( $category['params'], array( 'LANGUAGE' ));
      if( is_array( $category['value'] )) {
        foreach( $category['value'] as $cix => $categoryPart )
          $category['value'][$cix] = iCalUtilityFunctions::_strrep( $categoryPart, $this->format, $this->nl );
        $content  = implode( ',', $category['value'] );
      }
      else
        $content  = iCalUtilityFunctions::_strrep( $category['value'], $this->format, $this->nl );
      $output    .= $this->_createElement( 'CATEGORIES', $attributes, $content );
    }
    return $output;
  }
/**
 * set calendar component property categories
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param mixed $value
 * @param array $params, optional
 * @param integer $index, optional
 * @return bool
 */
  function setCategories( $value, $params=FALSE, $index=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    iCalUtilityFunctions::_setMval( $this->categories, $value, $params, FALSE, $index );
    return TRUE;
 }
/*********************************************************************************/
/**
 * Property Name: CLASS
 */
/**
 * creates formatted output for calendar component property class
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 0.9.7 - 2006-11-20
 * @return string
 */
  function createClass() {
    if( empty( $this->class )) return FALSE;
    if( empty( $this->class['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'CLASS' ) : FALSE;
    $attributes = $this->_createParams( $this->class['params'] );
    return $this->_createElement( 'CLASS', $attributes, $this->class['value'] );
  }
/**
 * set calendar component property class
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value "PUBLIC" / "PRIVATE" / "CONFIDENTIAL" / iana-token / x-name
 * @param array $params optional
 * @return bool
 */
  function setClass( $value, $params=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $this->class = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: COMMENT
 */
/**
 * creates formatted output for calendar component property comment
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @return string
 */
  function createComment() {
    if( empty( $this->comment )) return FALSE;
    $output = null;
    foreach( $this->comment as $commentPart ) {
      if( empty( $commentPart['value'] )) {
        if( $this->getConfig( 'allowEmpty' )) $output .= $this->_createElement( 'COMMENT' );
        continue;
      }
      $attributes = $this->_createParams( $commentPart['params'], array( 'ALTREP', 'LANGUAGE' ));
      $content    = iCalUtilityFunctions::_strrep( $commentPart['value'], $this->format, $this->nl );
      $output    .= $this->_createElement( 'COMMENT', $attributes, $content );
    }
    return $output;
  }
/**
 * set calendar component property comment
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param array $params, optional
 * @param integer $index, optional
 * @return bool
 */
  function setComment( $value, $params=FALSE, $index=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    iCalUtilityFunctions::_setMval( $this->comment, $value, $params, FALSE, $index );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: COMPLETED
 */
/**
 * creates formatted output for calendar component property completed
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-22
 * @return string
 */
  function createCompleted( ) {
    if( empty( $this->completed )) return FALSE;
    if( !isset( $this->completed['value']['year'] )  &&
        !isset( $this->completed['value']['month'] ) &&
        !isset( $this->completed['value']['day'] )   &&
        !isset( $this->completed['value']['hour'] )  &&
        !isset( $this->completed['value']['min'] )   &&
        !isset( $this->completed['value']['sec'] ))
      if( $this->getConfig( 'allowEmpty' ))
        return $this->_createElement( 'COMPLETED' );
      else return FALSE;
    $formatted  = iCalUtilityFunctions::_date2strdate( $this->completed['value'], 7 );
    $attributes = $this->_createParams( $this->completed['params'] );
    return $this->_createElement( 'COMPLETED', $attributes, $formatted );
  }
/**
 * set calendar component property completed
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param mixed $year
 * @param mixed $month optional
 * @param int $day optional
 * @param int $hour optional
 * @param int $min optional
 * @param int $sec optional
 * @param array $params optional
 * @return bool
 */
  function setCompleted( $year, $month=FALSE, $day=FALSE, $hour=FALSE, $min=FALSE, $sec=FALSE, $params=FALSE ) {
    if( empty( $year )) {
      if( $this->getConfig( 'allowEmpty' )) {
        $this->completed = array( 'value' => '', 'params' => iCalUtilityFunctions::_setParams( $params ));
        return TRUE;
      }
      else
        return FALSE;
    }
    $this->completed = iCalUtilityFunctions::_setDate2( $year, $month, $day, $hour, $min, $sec, $params );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: CONTACT
 */
/**
 * creates formatted output for calendar component property contact
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @return string
 */
  function createContact() {
    if( empty( $this->contact )) return FALSE;
    $output = null;
    foreach( $this->contact as $contact ) {
      if( !empty( $contact['value'] )) {
        $attributes = $this->_createParams( $contact['params'], array( 'ALTREP', 'LANGUAGE' ));
        $content    = iCalUtilityFunctions::_strrep( $contact['value'], $this->format, $this->nl );
        $output    .= $this->_createElement( 'CONTACT', $attributes, $content );
      }
      elseif( $this->getConfig( 'allowEmpty' )) $output .= $this->_createElement( 'CONTACT' );
    }
    return $output;
  }
/**
 * set calendar component property contact
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param array $params, optional
 * @param integer $index, optional
 * @return bool
 */
  function setContact( $value, $params=FALSE, $index=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    iCalUtilityFunctions::_setMval( $this->contact, $value, $params, FALSE, $index );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: CREATED
 */
/**
 * creates formatted output for calendar component property created
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-21
 * @return string
 */
  function createCreated() {
    if( empty( $this->created )) return FALSE;
    $formatted  = iCalUtilityFunctions::_date2strdate( $this->created['value'], 7 );
    $attributes = $this->_createParams( $this->created['params'] );
    return $this->_createElement( 'CREATED', $attributes, $formatted );
  }
/**
 * set calendar component property created
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-23
 * @param mixed $year optional
 * @param mixed $month optional
 * @param int $day optional
 * @param int $hour optional
 * @param int $min optional
 * @param int $sec optional
 * @param mixed $params optional
 * @return bool
 */
  function setCreated( $year=FALSE, $month=FALSE, $day=FALSE, $hour=FALSE, $min=FALSE, $sec=FALSE, $params=FALSE ) {
    if( !isset( $year )) {
      $year = date('Ymd\THis', mktime( date( 'H' ), date( 'i' ), date( 's' ) - date( 'Z'), date( 'm' ), date( 'd' ), date( 'Y' )));
    }
    $this->created = iCalUtilityFunctions::_setDate2( $year, $month, $day, $hour, $min, $sec, $params );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: DESCRIPTION
 */
/**
 * creates formatted output for calendar component property description
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @return string
 */
  function createDescription() {
    if( empty( $this->description )) return FALSE;
    $output       = null;
    foreach( $this->description as $description ) {
      if( !empty( $description['value'] )) {
        $attributes = $this->_createParams( $description['params'], array( 'ALTREP', 'LANGUAGE' ));
        $content    = iCalUtilityFunctions::_strrep( $description['value'], $this->format, $this->nl );
        $output    .= $this->_createElement( 'DESCRIPTION', $attributes, $content );
      }
      elseif( $this->getConfig( 'allowEmpty' )) $output .= $this->_createElement( 'DESCRIPTION' );
    }
    return $output;
  }
/**
 * set calendar component property description
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param array $params, optional
 * @param integer $index, optional
 * @return bool
 */
  function setDescription( $value, $params=FALSE, $index=FALSE ) {
    if( empty( $value )) { if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE; }
    if( 'vjournal' != $this->objName )
      $index = 1;
    iCalUtilityFunctions::_setMval( $this->description, $value, $params, FALSE, $index );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: DTEND
 */
/**
 * creates formatted output for calendar component property dtend
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.14.4 - 2012-09-26
 * @return string
 */
  function createDtend() {
    if( empty( $this->dtend )) return FALSE;
    if( !isset( $this->dtend['value']['year'] )  &&
        !isset( $this->dtend['value']['month'] ) &&
        !isset( $this->dtend['value']['day'] )   &&
        !isset( $this->dtend['value']['hour'] )  &&
        !isset( $this->dtend['value']['min'] )   &&
        !isset( $this->dtend['value']['sec'] ))
      if( $this->getConfig( 'allowEmpty' ))
        return $this->_createElement( 'DTEND' );
      else return FALSE;
    $parno      = ( isset( $this->dtend['params']['VALUE'] ) && ( 'DATE' == $this->dtend['params']['VALUE'] )) ? 3 : null;
    $formatted  = iCalUtilityFunctions::_date2strdate( $this->dtend['value'], $parno );
    $attributes = $this->_createParams( $this->dtend['params'] );
    return $this->_createElement( 'DTEND', $attributes, $formatted );
  }
/**
 * set calendar component property dtend
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param mixed $year
 * @param mixed $month optional
 * @param int $day optional
 * @param int $hour optional
 * @param int $min optional
 * @param int $sec optional
 * @param string $tz optional
 * @param array params optional
 * @return bool
 */
  function setDtend( $year, $month=FALSE, $day=FALSE, $hour=FALSE, $min=FALSE, $sec=FALSE, $tz=FALSE, $params=FALSE ) {
    if( empty( $year )) {
      if( $this->getConfig( 'allowEmpty' )) {
        $this->dtend = array( 'value' => '', 'params' => iCalUtilityFunctions::_setParams( $params ));
        return TRUE;
      }
      else
        return FALSE;
    }
    $this->dtend = iCalUtilityFunctions::_setDate( $year, $month, $day, $hour, $min, $sec, $tz, $params, null, null, $this->getConfig( 'TZID' ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: DTSTAMP
 */
/**
 * creates formatted output for calendar component property dtstamp
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.4 - 2008-03-07
 * @return string
 */
  function createDtstamp() {
    if( !isset( $this->dtstamp['value']['year'] )  &&
        !isset( $this->dtstamp['value']['month'] ) &&
        !isset( $this->dtstamp['value']['day'] )   &&
        !isset( $this->dtstamp['value']['hour'] )  &&
        !isset( $this->dtstamp['value']['min'] )   &&
        !isset( $this->dtstamp['value']['sec'] ))
      $this->_makeDtstamp();
    $formatted  = iCalUtilityFunctions::_date2strdate( $this->dtstamp['value'], 7 );
    $attributes = $this->_createParams( $this->dtstamp['params'] );
    return $this->_createElement( 'DTSTAMP', $attributes, $formatted );
  }
/**
 * computes datestamp for calendar component object instance dtstamp
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.14.1 - 2012-09-29
 * @return void
 */
  function _makeDtstamp() {
    $d    = date( 'Y-m-d-H-i-s', mktime( date('H'), date('i'), (date('s') - date( 'Z' )), date('m'), date('d'), date('Y')));
    $date = explode( '-', $d );
    $this->dtstamp['value'] = array( 'year' => $date[0], 'month' => $date[1], 'day' => $date[2], 'hour' => $date[3], 'min' => $date[4], 'sec' => $date[5], 'tz' => 'Z' );
    $this->dtstamp['params'] = null;
  }
/**
 * set calendar component property dtstamp
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-23
 * @param mixed $year
 * @param mixed $month optional
 * @param int $day optional
 * @param int $hour optional
 * @param int $min optional
 * @param int $sec optional
 * @param array $params optional
 * @return TRUE
 */
  function setDtstamp( $year, $month=FALSE, $day=FALSE, $hour=FALSE, $min=FALSE, $sec=FALSE, $params=FALSE ) {
    if( empty( $year ))
      $this->_makeDtstamp();
    else
      $this->dtstamp = iCalUtilityFunctions::_setDate2( $year, $month, $day, $hour, $min, $sec, $params );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: DTSTART
 */
/**
 * creates formatted output for calendar component property dtstart
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.14.4 - 2012-09-26
 * @return string
 */
  function createDtstart() {
    if( empty( $this->dtstart )) return FALSE;
    if( !isset( $this->dtstart['value']['year'] )  &&
        !isset( $this->dtstart['value']['month'] ) &&
        !isset( $this->dtstart['value']['day'] )   &&
        !isset( $this->dtstart['value']['hour'] )  &&
        !isset( $this->dtstart['value']['min'] )   &&
        !isset( $this->dtstart['value']['sec'] )) {
      if( $this->getConfig( 'allowEmpty' ))
        return $this->_createElement( 'DTSTART' );
      else return FALSE;
    }
    if( in_array( $this->objName, array( 'vtimezone', 'standard', 'daylight' )))
       unset( $this->dtstart['value']['tz'], $this->dtstart['params']['TZID'] );
    $parno      = ( isset( $this->dtstart['params']['VALUE'] ) && ( 'DATE' == $this->dtstart['params']['VALUE'] )) ? 3 : null;
    $formatted  = iCalUtilityFunctions::_date2strdate( $this->dtstart['value'], $parno );
    $attributes = $this->_createParams( $this->dtstart['params'] );
    return $this->_createElement( 'DTSTART', $attributes, $formatted );
  }
/**
 * set calendar component property dtstart
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param mixed $year
 * @param mixed $month optional
 * @param int $day optional
 * @param int $hour optional
 * @param int $min optional
 * @param int $sec optional
 * @param string $tz optional
 * @param array $params optional
 * @return bool
 */
  function setDtstart( $year, $month=FALSE, $day=FALSE, $hour=FALSE, $min=FALSE, $sec=FALSE, $tz=FALSE, $params=FALSE ) {
    if( empty( $year )) {
      if( $this->getConfig( 'allowEmpty' )) {
        $this->dtstart = array( 'value' => '', 'params' => iCalUtilityFunctions::_setParams( $params ));
        return TRUE;
      }
      else
        return FALSE;
    }
    $this->dtstart = iCalUtilityFunctions::_setDate( $year, $month, $day, $hour, $min, $sec, $tz, $params, 'dtstart', $this->objName, $this->getConfig( 'TZID' ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: DUE
 */
/**
 * creates formatted output for calendar component property due
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.14.4 - 2012-09-26
 * @return string
 */
  function createDue() {
    if( empty( $this->due )) return FALSE;
    if( !isset( $this->due['value']['year'] )  &&
        !isset( $this->due['value']['month'] ) &&
        !isset( $this->due['value']['day'] )   &&
        !isset( $this->due['value']['hour'] )  &&
        !isset( $this->due['value']['min'] )   &&
        !isset( $this->due['value']['sec'] )) {
      if( $this->getConfig( 'allowEmpty' ))
        return $this->_createElement( 'DUE' );
      else
       return FALSE;
    }
    $parno      = ( isset( $this->due['params']['VALUE'] ) && ( 'DATE' == $this->due['params']['VALUE'] )) ? 3 : null;
    $formatted  = iCalUtilityFunctions::_date2strdate( $this->due['value'], $parno );
    $attributes = $this->_createParams( $this->due['params'] );
    return $this->_createElement( 'DUE', $attributes, $formatted );
  }
/**
 * set calendar component property due
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param mixed $year
 * @param mixed $month optional
 * @param int $day optional
 * @param int $hour optional
 * @param int $min optional
 * @param int $sec optional
 * @param array $params optional
 * @return bool
 */
  function setDue( $year, $month=FALSE, $day=FALSE, $hour=FALSE, $min=FALSE, $sec=FALSE, $tz=FALSE, $params=FALSE ) {
    if( empty( $year )) {
      if( $this->getConfig( 'allowEmpty' )) {
        $this->due = array( 'value' => '', 'params' => iCalUtilityFunctions::_setParams( $params ));
        return TRUE;
      }
      else
        return FALSE;
    }
    $this->due = iCalUtilityFunctions::_setDate( $year, $month, $day, $hour, $min, $sec, $tz, $params, null, null, $this->getConfig( 'TZID' ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: DURATION
 */
/**
 * creates formatted output for calendar component property duration
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-05-25
 * @return string
 */
  function createDuration() {
    if( empty( $this->duration )) return FALSE;
    if( !isset( $this->duration['value']['week'] ) &&
        !isset( $this->duration['value']['day'] )  &&
        !isset( $this->duration['value']['hour'] ) &&
        !isset( $this->duration['value']['min'] )  &&
        !isset( $this->duration['value']['sec'] ))
      if( $this->getConfig( 'allowEmpty' ))
        return $this->_createElement( 'DURATION' );
      else return FALSE;
    $attributes = $this->_createParams( $this->duration['params'] );
    return $this->_createElement( 'DURATION', $attributes, iCalUtilityFunctions::_duration2str( $this->duration['value'] ));
  }
/**
 * set calendar component property duration
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-05-25
 * @param mixed $week
 * @param mixed $day optional
 * @param int $hour optional
 * @param int $min optional
 * @param int $sec optional
 * @param array $params optional
 * @return bool
 */
  function setDuration( $week, $day=FALSE, $hour=FALSE, $min=FALSE, $sec=FALSE, $params=FALSE ) {
    if( empty( $week ) && empty( $day ) && empty( $hour ) && empty( $min ) && empty( $sec )) {
      if( $this->getConfig( 'allowEmpty' ))
        $week = $day = null;
      else
        return FALSE;
    }
    if( is_array( $week ) && ( 1 <= count( $week )))
      $this->duration = array( 'value' => iCalUtilityFunctions::_duration2arr( $week ), 'params' => iCalUtilityFunctions::_setParams( $day ));
    elseif( is_string( $week ) && ( 3 <= strlen( trim( $week )))) {
      $week = trim( $week );
      if( in_array( substr( $week, 0, 1 ), array( '+', '-' )))
        $week = substr( $week, 1 );
      $this->duration = array( 'value' => iCalUtilityFunctions::_durationStr2arr( $week ), 'params' => iCalUtilityFunctions::_setParams( $day ));
    }
    else
      $this->duration = array( 'value' => iCalUtilityFunctions::_duration2arr( array( 'week' => $week, 'day' => $day, 'hour' => $hour, 'min' => $min, 'sec' => $sec ))
                             , 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: EXDATE
 */
/**
 * creates formatted output for calendar component property exdate
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.5 - 2012-12-28
 * @return string
 */
  function createExdate() {
    if( empty( $this->exdate )) return FALSE;
    $output  = null;
    $exdates = array();
    foreach( $this->exdate as $theExdate ) {
      if( empty( $theExdate['value'] )) {
        if( $this->getConfig( 'allowEmpty' ))
          $output .= $this->_createElement( 'EXDATE' );
        continue;
      }
      if( 1 < count( $theExdate['value'] ))
        usort( $theExdate['value'], array( 'iCalUtilityFunctions', '_sortExdate1' ));
      $exdates[] = $theExdate;
    }
    if( 1 < count( $exdates ))
      usort( $exdates, array( 'iCalUtilityFunctions', '_sortExdate2' ));
    foreach( $exdates as $theExdate ) {
      $content = $attributes = null;
      foreach( $theExdate['value'] as $eix => $exdatePart ) {
        $parno = count( $exdatePart );
        $formatted = iCalUtilityFunctions::_date2strdate( $exdatePart, $parno );
        if( isset( $theExdate['params']['TZID'] ))
          $formatted = str_replace( 'Z', '', $formatted);
        if( 0 < $eix ) {
          if( isset( $theExdate['value'][0]['tz'] )) {
            if( ctype_digit( substr( $theExdate['value'][0]['tz'], -4 )) ||
               ( 'Z' == $theExdate['value'][0]['tz'] )) {
              if( 'Z' != substr( $formatted, -1 ))
                $formatted .= 'Z';
            }
            else
              $formatted = str_replace( 'Z', '', $formatted );
          }
          else
            $formatted = str_replace( 'Z', '', $formatted );
        } // end if( 0 < $eix )
        $content .= ( 0 < $eix ) ? ','.$formatted : $formatted;
      } // end foreach( $theExdate['value'] as $eix => $exdatePart )
      $attributes .= $this->_createParams( $theExdate['params'] );
      $output .= $this->_createElement( 'EXDATE', $attributes, $content );
    } // end foreach( $exdates as $theExdate )
    return $output;
  }
/**
 * set calendar component property exdate
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param array exdates
 * @param array $params, optional
 * @param integer $index, optional
 * @return bool
 */
  function setExdate( $exdates, $params=FALSE, $index=FALSE ) {
    if( empty( $exdates )) {
      if( $this->getConfig( 'allowEmpty' )) {
        iCalUtilityFunctions::_setMval( $this->exdate, '', $params, FALSE, $index );
        return TRUE;
      }
      else
        return FALSE;
    }
    $input  = array( 'params' => iCalUtilityFunctions::_setParams( $params, array( 'VALUE' => 'DATE-TIME' )));
    $toZ = ( isset( $input['params']['TZID'] ) && in_array( strtoupper( $input['params']['TZID'] ), array( 'GMT', 'UTC', 'Z' ))) ? TRUE : FALSE;
            /* ev. check 1:st date and save ev. timezone **/
    iCalUtilityFunctions::_chkdatecfg( reset( $exdates ), $parno, $input['params'] );
    iCalUtilityFunctions::_existRem( $input['params'], 'VALUE', 'DATE-TIME' ); // remove default parameter
    foreach( $exdates as $eix => $theExdate ) {
      iCalUtilityFunctions::_strDate2arr( $theExdate );
      if( iCalUtilityFunctions::_isArrayTimestampDate( $theExdate )) {
        if( isset( $theExdate['tz'] ) && !iCalUtilityFunctions::_isOffset( $theExdate['tz'] )) {
          if( isset( $input['params']['TZID'] ))
            $theExdate['tz'] = $input['params']['TZID'];
          else
            $input['params']['TZID'] = $theExdate['tz'];
        }
        $exdatea = iCalUtilityFunctions::_timestamp2date( $theExdate, $parno );
      }
      elseif(  is_array( $theExdate )) {
        $d = iCalUtilityFunctions::_chkDateArr( $theExdate, $parno );
        if( isset( $d['tz'] ) && ( 'Z' != $d['tz'] ) && iCalUtilityFunctions::_isOffset( $d['tz'] )) {
          $strdate = sprintf( '%04d-%02d-%02d %02d:%02d:%02d %s', $d['year'], $d['month'], $d['day'], $d['hour'], $d['min'], $d['sec'], $d['tz'] );
          $exdatea = iCalUtilityFunctions::_strdate2date( $strdate, 7 );
          unset( $exdatea['unparsedtext'] );
        }
        else
          $exdatea = $d;
      }
      elseif( 8 <= strlen( trim( $theExdate ))) { // ex. 2006-08-03 10:12:18
        $exdatea = iCalUtilityFunctions::_strdate2date( $theExdate, $parno );
        unset( $exdatea['unparsedtext'] );
      }
      if( 3 == $parno )
        unset( $exdatea['hour'], $exdatea['min'], $exdatea['sec'], $exdatea['tz'] );
      elseif( isset( $exdatea['tz'] ))
        $exdatea['tz'] = (string) $exdatea['tz'];
      if(  isset( $input['params']['TZID'] ) ||
         ( isset( $exdatea['tz'] ) && !iCalUtilityFunctions::_isOffset( $exdatea['tz'] )) ||
         ( isset( $input['value'][0] ) && ( !isset( $input['value'][0]['tz'] ))) ||
         ( isset( $input['value'][0]['tz'] ) && !iCalUtilityFunctions::_isOffset( $input['value'][0]['tz'] )))
        unset( $exdatea['tz'] );
      if( $toZ ) // time zone Z
        $exdatea['tz'] = 'Z';
      $input['value'][] = $exdatea;
    }
    if( 0 >= count( $input['value'] ))
      return FALSE;
    if( 3 == $parno ) {
      $input['params']['VALUE'] = 'DATE';
      unset( $input['params']['TZID'] );
    }
    if( $toZ ) // time zone Z
      unset( $input['params']['TZID'] );
    iCalUtilityFunctions::_setMval( $this->exdate, $input['value'], $input['params'], FALSE, $index );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: EXRULE
 */
/**
 * creates formatted output for calendar component property exrule
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-22
 * @return string
 */
  function createExrule() {
    if( empty( $this->exrule )) return FALSE;
    return $this->_format_recur( 'EXRULE', $this->exrule );
  }
/**
 * set calendar component property exdate
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param array $exruleset
 * @param array $params, optional
 * @param integer $index, optional
 * @return bool
 */
  function setExrule( $exruleset, $params=FALSE, $index=FALSE ) {
    if( empty( $exruleset )) if( $this->getConfig( 'allowEmpty' )) $exruleset = ''; else return FALSE;
    iCalUtilityFunctions::_setMval( $this->exrule, iCalUtilityFunctions::_setRexrule( $exruleset ), $params, FALSE, $index );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: FREEBUSY
 */
/**
 * creates formatted output for calendar component property freebusy
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.27 - 2013-07-05
 * @return string
 */
  function createFreebusy() {
    if( empty( $this->freebusy )) return FALSE;
    $output = null;
    foreach( $this->freebusy as $freebusyPart ) {
      if( empty( $freebusyPart['value'] ) || (( 1 == count( $freebusyPart['value'] )) && isset( $freebusyPart['value']['fbtype'] ))) {
        if( $this->getConfig( 'allowEmpty' )) $output .= $this->_createElement( 'FREEBUSY' );
        continue;
      }
      $attributes = $content = null;
      if( isset( $freebusyPart['value']['fbtype'] )) {
          $attributes .= $this->intAttrDelimiter.'FBTYPE='.$freebusyPart['value']['fbtype'];
        unset( $freebusyPart['value']['fbtype'] );
        $freebusyPart['value'] = array_values( $freebusyPart['value'] );
      }
      else
        $attributes .= $this->intAttrDelimiter.'FBTYPE=BUSY';
      $attributes .= $this->_createParams( $freebusyPart['params'] );
      $fno = 1;
      $cnt = count( $freebusyPart['value']);
      if( 1 < $cnt )
        usort( $freebusyPart['value'], array( 'iCalUtilityFunctions', '_sortRdate1' ));
      foreach( $freebusyPart['value'] as $periodix => $freebusyPeriod ) {
        $formatted   = iCalUtilityFunctions::_date2strdate( $freebusyPeriod[0] );
        $content .= $formatted;
        $content .= '/';
        $cnt2 = count( $freebusyPeriod[1]);
        if( array_key_exists( 'year', $freebusyPeriod[1] ))      // date-time
          $cnt2 = 7;
        elseif( array_key_exists( 'week', $freebusyPeriod[1] ))  // duration
          $cnt2 = 5;
        if(( 7 == $cnt2 )   &&    // period=  -> date-time
            isset( $freebusyPeriod[1]['year'] )  &&
            isset( $freebusyPeriod[1]['month'] ) &&
            isset( $freebusyPeriod[1]['day'] )) {
          $content .= iCalUtilityFunctions::_date2strdate( $freebusyPeriod[1] );
        }
        else {                                  // period=  -> dur-time
          $content .= iCalUtilityFunctions::_duration2str( $freebusyPeriod[1] );
        }
        if( $fno < $cnt )
          $content .= ',';
        $fno++;
      }
      $output .= $this->_createElement( 'FREEBUSY', $attributes, $content );
    }
    return $output;
  }
/**
 * set calendar component property freebusy
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $fbType
 * @param array $fbValues
 * @param array $params, optional
 * @param integer $index, optional
 * @return bool
 */
  function setFreebusy( $fbType, $fbValues, $params=FALSE, $index=FALSE ) {
    if( empty( $fbValues )) {
      if( $this->getConfig( 'allowEmpty' )) {
        iCalUtilityFunctions::_setMval( $this->freebusy, '', $params, FALSE, $index );
        return TRUE;
      }
      else
        return FALSE;
    }
    $fbType = strtoupper( $fbType );
    if(( !in_array( $fbType, array( 'FREE', 'BUSY', 'BUSY-UNAVAILABLE', 'BUSY-TENTATIVE' ))) &&
       ( 'X-' != substr( $fbType, 0, 2 )))
      $fbType = 'BUSY';
    $input = array( 'fbtype' => $fbType );
    foreach( $fbValues as $fbPeriod ) {   // periods => period
      if( empty( $fbPeriod ))
        continue;
      $freebusyPeriod = array();
      foreach( $fbPeriod as $fbMember ) { // pairs => singlepart
        $freebusyPairMember = array();
        if( is_array( $fbMember )) {
          if( iCalUtilityFunctions::_isArrayDate( $fbMember )) { // date-time value
            $freebusyPairMember       = iCalUtilityFunctions::_chkDateArr( $fbMember, 7 );
            $freebusyPairMember['tz'] = 'Z';
          }
          elseif( iCalUtilityFunctions::_isArrayTimestampDate( $fbMember )) { // timestamp value
            $freebusyPairMember       = iCalUtilityFunctions::_timestamp2date( $fbMember['timestamp'], 7 );
            $freebusyPairMember['tz'] = 'Z';
          }
          else {                                         // array format duration
            $freebusyPairMember = iCalUtilityFunctions::_duration2arr( $fbMember );
          }
        }
        elseif(( 3 <= strlen( trim( $fbMember ))) &&    // string format duration
               ( in_array( $fbMember{0}, array( 'P', '+', '-' )))) {
          if( 'P' != $fbMember{0} )
            $fbmember = substr( $fbMember, 1 );
          $freebusyPairMember = iCalUtilityFunctions::_durationStr2arr( $fbMember );
        }
        elseif( 8 <= strlen( trim( $fbMember ))) { // text date ex. 2006-08-03 10:12:18
          $freebusyPairMember       = iCalUtilityFunctions::_strdate2date( $fbMember, 7 );
          unset( $freebusyPairMember['unparsedtext'] );
          $freebusyPairMember['tz'] = 'Z';
        }
        $freebusyPeriod[]   = $freebusyPairMember;
      }
      $input[]              = $freebusyPeriod;
    }
    iCalUtilityFunctions::_setMval( $this->freebusy, $input, $params, FALSE, $index );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: GEO
 */
/**
 * creates formatted output for calendar component property geo
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.12.6 - 2012-04-21
 * @return string
 */
  function createGeo() {
    if( empty( $this->geo )) return FALSE;
    if( empty( $this->geo['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'GEO' ) : FALSE;
    $attributes = $this->_createParams( $this->geo['params'] );
    if( 0.0 < $this->geo['value']['latitude'] )
      $sign   = '+';
    else
      $sign   = ( 0.0 > $this->geo['value']['latitude'] ) ? '-' : '';
    $content  = $sign.sprintf( "%09.6f", abs( $this->geo['value']['latitude'] ));       // sprintf && lpad && float && sign !"#¤%&/(
    $content  = rtrim( rtrim( $content, '0' ), '.' );
    if( 0.0 < $this->geo['value']['longitude'] )
      $sign   = '+';
    else
      $sign   = ( 0.0 > $this->geo['value']['longitude'] ) ? '-' : '';
    $content .= ';'.$sign.sprintf( '%8.6f', abs( $this->geo['value']['longitude'] ));   // sprintf && lpad && float && sign !"#¤%&/(
    $content  = rtrim( rtrim( $content, '0' ), '.' );
    return $this->_createElement( 'GEO', $attributes, $content );
  }
/**
 * set calendar component property geo
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param float $latitude
 * @param float $longitude
 * @param array $params optional
 * @return bool
 */
  function setGeo( $latitude, $longitude, $params=FALSE ) {
    if( isset( $latitude ) && isset( $longitude )) {
      if( !is_array( $this->geo )) $this->geo = array();
      $this->geo['value']['latitude']  = (float) $latitude;
      $this->geo['value']['longitude'] = (float) $longitude;
      $this->geo['params'] = iCalUtilityFunctions::_setParams( $params );
    }
    elseif( $this->getConfig( 'allowEmpty' ))
      $this->geo = array( 'value' => '', 'params' => iCalUtilityFunctions::_setParams( $params ) );
    else
      return FALSE;
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: LAST-MODIFIED
 */
/**
 * creates formatted output for calendar component property last-modified
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-21
 * @return string
 */
  function createLastModified() {
    if( empty( $this->lastmodified )) return FALSE;
    $attributes = $this->_createParams( $this->lastmodified['params'] );
    $formatted  = iCalUtilityFunctions::_date2strdate( $this->lastmodified['value'], 7 );
    return $this->_createElement( 'LAST-MODIFIED', $attributes, $formatted );
  }
/**
 * set calendar component property completed
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-23
 * @param mixed $year optional
 * @param mixed $month optional
 * @param int $day optional
 * @param int $hour optional
 * @param int $min optional
 * @param int $sec optional
 * @param array $params optional
 * @return boll
 */
  function setLastModified( $year=FALSE, $month=FALSE, $day=FALSE, $hour=FALSE, $min=FALSE, $sec=FALSE, $params=FALSE ) {
    if( empty( $year ))
      $year = date('Ymd\THis', mktime( date( 'H' ), date( 'i' ), date( 's' ) - date( 'Z'), date( 'm' ), date( 'd' ), date( 'Y' )));
    $this->lastmodified = iCalUtilityFunctions::_setDate2( $year, $month, $day, $hour, $min, $sec, $params );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: LOCATION
 */
/**
 * creates formatted output for calendar component property location
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @return string
 */
  function createLocation() {
    if( empty( $this->location )) return FALSE;
    if( empty( $this->location['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'LOCATION' ) : FALSE;
    $attributes = $this->_createParams( $this->location['params'], array( 'ALTREP', 'LANGUAGE' ));
    $content    = iCalUtilityFunctions::_strrep( $this->location['value'], $this->format, $this->nl );
    return $this->_createElement( 'LOCATION', $attributes, $content );
  }
/**
 * set calendar component property location
 '
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param array params optional
 * @return bool
 */
  function setLocation( $value, $params=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $this->location = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: ORGANIZER
 */
/**
 * creates formatted output for calendar component property organizer
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.6.33 - 2010-12-17
 * @return string
 */
  function createOrganizer() {
    if( empty( $this->organizer )) return FALSE;
    if( empty( $this->organizer['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'ORGANIZER' ) : FALSE;
    $attributes = $this->_createParams( $this->organizer['params']
                                      , array( 'CN', 'DIR', 'SENT-BY', 'LANGUAGE' ));
    return $this->_createElement( 'ORGANIZER', $attributes, $this->organizer['value'] );
  }
/**
 * set calendar component property organizer
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param array params optional
 * @return bool
 */
  function setOrganizer( $value, $params=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    if( !empty( $value )) {
      if( FALSE === ( $pos = strpos( substr( $value, 0, 9 ), ':' )))
        $value = 'MAILTO:'.$value;
      elseif( !empty( $value ))
        $value = strtolower( substr( $value, 0, $pos )).substr( $value, $pos );
      $value = str_replace( 'mailto:', 'MAILTO:', $value );
    }
    $this->organizer = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    if( isset( $this->organizer['params']['SENT-BY'] )){
      if( 'mailto:' !== strtolower( substr( $this->organizer['params']['SENT-BY'], 0, 7 )))
        $this->organizer['params']['SENT-BY'] = 'MAILTO:'.$this->organizer['params']['SENT-BY'];
      else
        $this->organizer['params']['SENT-BY'] = 'MAILTO:'.substr( $this->organizer['params']['SENT-BY'], 7 );
    }
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: PERCENT-COMPLETE
 */
/**
 * creates formatted output for calendar component property percent-complete
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.9.3 - 2011-05-14
 * @return string
 */
  function createPercentComplete() {
    if( !isset($this->percentcomplete) || ( empty( $this->percentcomplete ) && !is_numeric( $this->percentcomplete ))) return FALSE;
    if( !isset( $this->percentcomplete['value'] ) || ( empty( $this->percentcomplete['value'] ) && !is_numeric( $this->percentcomplete['value'] )))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'PERCENT-COMPLETE' ) : FALSE;
    $attributes = $this->_createParams( $this->percentcomplete['params'] );
    return $this->_createElement( 'PERCENT-COMPLETE', $attributes, $this->percentcomplete['value'] );
  }
/**
 * set calendar component property percent-complete
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param int $value
 * @param array $params optional
 * @return bool
 */
  function setPercentComplete( $value, $params=FALSE ) {
    if( empty( $value ) && !is_numeric( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $this->percentcomplete = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: PRIORITY
 */
/**
 * creates formatted output for calendar component property priority
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.9.3 - 2011-05-14
 * @return string
 */
  function createPriority() {
    if( !isset($this->priority) || ( empty( $this->priority ) && !is_numeric( $this->priority ))) return FALSE;
    if( !isset( $this->priority['value'] ) || ( empty( $this->priority['value'] ) && !is_numeric( $this->priority['value'] )))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'PRIORITY' ) : FALSE;
    $attributes = $this->_createParams( $this->priority['params'] );
    return $this->_createElement( 'PRIORITY', $attributes, $this->priority['value'] );
  }
/**
 * set calendar component property priority
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param int $value
 * @param array $params optional
 * @return bool
 */
  function setPriority( $value, $params=FALSE  ) {
    if( empty( $value ) && !is_numeric( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $this->priority = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: RDATE
 */
/**
 * creates formatted output for calendar component property rdate
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.9 - 2013-01-09
 * @return string
 */
  function createRdate() {
    if( empty( $this->rdate )) return FALSE;
    $utctime = ( in_array( $this->objName, array( 'vtimezone', 'standard', 'daylight' ))) ? TRUE : FALSE;
    $output = null;
    $rdates = array();
    foreach( $this->rdate as $rpix => $theRdate ) {
      if( empty( $theRdate['value'] )) {
        if( $this->getConfig( 'allowEmpty' )) $output .= $this->_createElement( 'RDATE' );
        continue;
      }
      if( $utctime  )
        unset( $theRdate['params']['TZID'] );
      if( 1 < count( $theRdate['value'] ))
        usort( $theRdate['value'], array( 'iCalUtilityFunctions', '_sortRdate1' ));
      $rdates[] = $theRdate;
    }
    if( 1 < count( $rdates ))
      usort( $rdates, array( 'iCalUtilityFunctions', '_sortRdate2' ));
    foreach( $rdates as $rpix => $theRdate ) {
      $attributes = $this->_createParams( $theRdate['params'] );
      $cnt = count( $theRdate['value'] );
      $content = null;
      $rno = 1;
      foreach( $theRdate['value'] as $rix => $rdatePart ) {
        $contentPart = null;
        if( is_array( $rdatePart ) &&
            isset( $theRdate['params']['VALUE'] ) && ( 'PERIOD' == $theRdate['params']['VALUE'] )) { // PERIOD
          if( $utctime )
            unset( $rdatePart[0]['tz'] );
          $formatted = iCalUtilityFunctions::_date2strdate( $rdatePart[0] ); // PERIOD part 1
          if( $utctime || !empty( $theRdate['params']['TZID'] ))
            $formatted = str_replace( 'Z', '', $formatted);
          $contentPart .= $formatted;
          $contentPart .= '/';
          $cnt2 = count( $rdatePart[1]);
          if( array_key_exists( 'year', $rdatePart[1] )) {
            if( array_key_exists( 'hour', $rdatePart[1] ))
              $cnt2 = 7;                                      // date-time
            else
              $cnt2 = 3;                                      // date
          }
          elseif( array_key_exists( 'week', $rdatePart[1] ))  // duration
            $cnt2 = 5;
          if(( 7 == $cnt2 )   &&    // period=  -> date-time
              isset( $rdatePart[1]['year'] )  &&
              isset( $rdatePart[1]['month'] ) &&
              isset( $rdatePart[1]['day'] )) {
            if( $utctime )
              unset( $rdatePart[1]['tz'] );
            $formatted = iCalUtilityFunctions::_date2strdate( $rdatePart[1] ); // PERIOD part 2
            if( $utctime || !empty( $theRdate['params']['TZID'] ))
              $formatted = str_replace( 'Z', '', $formatted );
           $contentPart .= $formatted;
          }
          else {                                  // period=  -> dur-time
            $contentPart .= iCalUtilityFunctions::_duration2str( $rdatePart[1] );
          }
        } // PERIOD end
        else { // SINGLE date start
          if( $utctime )
            unset( $rdatePart['tz'] );
          $parno = ( isset( $theRdate['params']['VALUE'] ) && ( 'DATE' == isset( $theRdate['params']['VALUE'] ))) ? 3 : null;
          $formatted = iCalUtilityFunctions::_date2strdate( $rdatePart, $parno );
          if( $utctime || !empty( $theRdate['params']['TZID'] ))
            $formatted = str_replace( 'Z', '', $formatted);
          $contentPart .= $formatted;
        }
        $content .= $contentPart;
        if( $rno < $cnt )
          $content .= ',';
        $rno++;
      }
      $output    .= $this->_createElement( 'RDATE', $attributes, $content );
    }
    return $output;
  }
/**
 * set calendar component property rdate
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param array $rdates
 * @param array $params, optional
 * @param integer $index, optional
 * @return bool
 */
  function setRdate( $rdates, $params=FALSE, $index=FALSE ) {
    if( empty( $rdates )) {
      if( $this->getConfig( 'allowEmpty' )) {
        iCalUtilityFunctions::_setMval( $this->rdate, '', $params, FALSE, $index );
        return TRUE;
      }
      else
        return FALSE;
    }
    $input = array( 'params' => iCalUtilityFunctions::_setParams( $params, array( 'VALUE' => 'DATE-TIME' )));
    if( in_array( $this->objName, array( 'vtimezone', 'standard', 'daylight' ))) {
      unset( $input['params']['TZID'] );
      $input['params']['VALUE'] = 'DATE-TIME';
    }
    $zArr = array( 'GMT', 'UTC', 'Z' );
    $toZ = ( isset( $params['TZID'] ) && in_array( strtoupper( $params['TZID'] ), $zArr )) ? TRUE : FALSE;
            /*  check if PERIOD, if not set */
    if((!isset( $input['params']['VALUE'] ) || !in_array( $input['params']['VALUE'], array( 'DATE', 'PERIOD' ))) &&
          isset( $rdates[0] )    && is_array( $rdates[0] ) && ( 2 == count( $rdates[0] )) &&
          isset( $rdates[0][0] ) &&    isset( $rdates[0][1] ) && !isset( $rdates[0]['timestamp'] ) &&
    (( is_array( $rdates[0][0] ) && ( isset( $rdates[0][0]['timestamp'] ) ||
                                      iCalUtilityFunctions::_isArrayDate( $rdates[0][0] ))) ||
                                    ( is_string( $rdates[0][0] ) && ( 8 <= strlen( trim( $rdates[0][0] )))))  &&
     ( is_array( $rdates[0][1] ) || ( is_string( $rdates[0][1] ) && ( 3 <= strlen( trim( $rdates[0][1] ))))))
      $input['params']['VALUE'] = 'PERIOD';
            /* check 1:st date, upd. $parno (opt) and save ev. timezone **/
    $date  = reset( $rdates );
    if( isset( $input['params']['VALUE'] ) && ( 'PERIOD' == $input['params']['VALUE'] )) // PERIOD
      $date  = reset( $date );
    iCalUtilityFunctions::_chkdatecfg( $date, $parno, $input['params'] );
    iCalUtilityFunctions::_existRem( $input['params'], 'VALUE', 'DATE-TIME' ); // remove default
    foreach( $rdates as $rpix => $theRdate ) {
      $inputa = null;
      iCalUtilityFunctions::_strDate2arr( $theRdate );
      if( is_array( $theRdate )) {
        if( isset( $input['params']['VALUE'] ) && ( 'PERIOD' == $input['params']['VALUE'] )) { // PERIOD
          foreach( $theRdate as $rix => $rPeriod ) {
            iCalUtilityFunctions::_strDate2arr( $theRdate );
            if( is_array( $rPeriod )) {
              if( iCalUtilityFunctions::_isArrayTimestampDate( $rPeriod )) {    // timestamp
                if( isset( $rPeriod['tz'] ) && !iCalUtilityFunctions::_isOffset( $rPeriod['tz'] )) {
                  if( isset( $input['params']['TZID'] ))
                    $rPeriod['tz'] = $input['params']['TZID'];
                  else
                    $input['params']['TZID'] = $rPeriod['tz'];
                }
                $inputab = iCalUtilityFunctions::_timestamp2date( $rPeriod, $parno );
              }
              elseif( iCalUtilityFunctions::_isArrayDate( $rPeriod )) {
                $d = ( 3 < count ( $rPeriod )) ? iCalUtilityFunctions::_chkDateArr( $rPeriod, $parno ) : iCalUtilityFunctions::_chkDateArr( $rPeriod, 6 );
                if( isset( $d['tz'] ) && ( 'Z' != $d['tz'] ) && iCalUtilityFunctions::_isOffset( $d['tz'] )) {
                  $strdate = sprintf( '%04d-%02d-%02d %02d:%02d:%02d %s', $d['year'], $d['month'], $d['day'], $d['hour'], $d['min'], $d['sec'], $d['tz'] );
                  $inputab = iCalUtilityFunctions::_strdate2date( $strdate, 7 );
                  unset( $inputab['unparsedtext'] );
                }
                else
                  $inputab = $d;
              }
              elseif (( 1 == count( $rPeriod )) && ( 8 <= strlen( reset( $rPeriod )))) { // text-date
                $inputab   = iCalUtilityFunctions::_strdate2date( reset( $rPeriod ), $parno );
                unset( $inputab['unparsedtext'] );
              }
              else                                               // array format duration
                $inputab   = iCalUtilityFunctions::_duration2arr( $rPeriod );
            }
            elseif(( 3 <= strlen( trim( $rPeriod ))) &&          // string format duration
                   ( in_array( $rPeriod[0], array( 'P', '+', '-' )))) {
              if( 'P' != $rPeriod[0] )
                $rPeriod   = substr( $rPeriod, 1 );
              $inputab     = iCalUtilityFunctions::_durationStr2arr( $rPeriod );
            }
            elseif( 8 <= strlen( trim( $rPeriod ))) {            // text date ex. 2006-08-03 10:12:18
              $inputab     = iCalUtilityFunctions::_strdate2date( $rPeriod, $parno );
              unset( $inputab['unparsedtext'] );
            }
            if(( 0 == $rpix ) && ( 0 == $rix )) {
              if( isset( $inputab['tz'] ) && in_array( strtoupper( $inputab['tz'] ), $zArr )) {
                $inputab['tz'] = 'Z';
                $toZ = TRUE;
              }
            }
            else {
              if( isset( $inputa[0]['tz'] ) && ( 'Z' == $inputa[0]['tz'] ) && isset( $inputab['year'] ))
                $inputab['tz'] = 'Z';
              else
                unset( $inputab['tz'] );
            }
            if( $toZ && isset( $inputab['year'] ) )
              $inputab['tz'] = 'Z';
            $inputa[]      = $inputab;
          }
        } // PERIOD end
        elseif ( iCalUtilityFunctions::_isArrayTimestampDate( $theRdate )) {    // timestamp
          if( isset( $theRdate['tz'] ) && !iCalUtilityFunctions::_isOffset( $theRdate['tz'] )) {
            if( isset( $input['params']['TZID'] ))
              $theRdate['tz'] = $input['params']['TZID'];
            else
              $input['params']['TZID'] = $theRdate['tz'];
          }
          $inputa = iCalUtilityFunctions::_timestamp2date( $theRdate, $parno );
        }
        else {                                                                  // date[-time]
          $inputa = iCalUtilityFunctions::_chkDateArr( $theRdate, $parno );
          if( isset( $inputa['tz'] ) && ( 'Z' != $inputa['tz'] ) && iCalUtilityFunctions::_isOffset( $inputa['tz'] )) {
            $strdate = sprintf( '%04d-%02d-%02d %02d:%02d:%02d %s', $inputa['year'], $inputa['month'], $inputa['day'], $inputa['hour'], $inputa['min'], $inputa['sec'], $inputa['tz'] );
            $inputa  = iCalUtilityFunctions::_strdate2date( $strdate, 7 );
            unset( $inputa['unparsedtext'] );
          }
        }
      }
      elseif( 8 <= strlen( trim( $theRdate ))) {                 // text date ex. 2006-08-03 10:12:18
        $inputa       = iCalUtilityFunctions::_strdate2date( $theRdate, $parno );
        unset( $inputa['unparsedtext'] );
        if( $toZ )
          $inputa['tz'] = 'Z';
      }
      if( !isset( $input['params']['VALUE'] ) || ( 'PERIOD' != $input['params']['VALUE'] )) { // no PERIOD
        if(( 0 == $rpix ) && !$toZ )
          $toZ = ( isset( $inputa['tz'] ) && in_array( strtoupper( $inputa['tz'] ), $zArr )) ? TRUE : FALSE;
        if( $toZ )
          $inputa['tz']    = 'Z';
        if( 3 == $parno )
          unset( $inputa['hour'], $inputa['min'], $inputa['sec'], $inputa['tz'] );
        elseif( isset( $inputa['tz'] ))
          $inputa['tz']    = (string) $inputa['tz'];
        if( isset( $input['params']['TZID'] ) || ( isset( $input['value'][0] ) && ( !isset( $input['value'][0]['tz'] ))))
          if( !$toZ )
            unset( $inputa['tz'] );
      }
      $input['value'][]    = $inputa;
    }
    if( 3 == $parno ) {
      $input['params']['VALUE'] = 'DATE';
      unset( $input['params']['TZID'] );
    }
    if( $toZ )
      unset( $input['params']['TZID'] );
    iCalUtilityFunctions::_setMval( $this->rdate, $input['value'], $input['params'], FALSE, $index );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: RECURRENCE-ID
 */
/**
 * creates formatted output for calendar component property recurrence-id
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.14.4 - 2012-09-26
 * @return string
 */
  function createRecurrenceid() {
    if( empty( $this->recurrenceid )) return FALSE;
    if( empty( $this->recurrenceid['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'RECURRENCE-ID' ) : FALSE;
    $parno      = ( isset( $this->recurrenceid['params']['VALUE'] ) && ( 'DATE' == $this->recurrenceid['params']['VALUE'] )) ? 3 : null;
    $formatted  = iCalUtilityFunctions::_date2strdate( $this->recurrenceid['value'], $parno );
    $attributes = $this->_createParams( $this->recurrenceid['params'] );
    return $this->_createElement( 'RECURRENCE-ID', $attributes, $formatted );
  }
/**
 * set calendar component property recurrence-id
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param mixed $year
 * @param mixed $month optional
 * @param int $day optional
 * @param int $hour optional
 * @param int $min optional
 * @param int $sec optional
 * @param array $params optional
 * @return bool
 */
  function setRecurrenceid( $year, $month=FALSE, $day=FALSE, $hour=FALSE, $min=FALSE, $sec=FALSE, $tz=FALSE, $params=FALSE ) {
    if( empty( $year )) {
      if( $this->getConfig( 'allowEmpty' )) {
        $this->recurrenceid = array( 'value' => '', 'params' => null );
        return TRUE;
      }
      else
        return FALSE;
    }
    $this->recurrenceid = iCalUtilityFunctions::_setDate( $year, $month, $day, $hour, $min, $sec, $tz, $params, null, null, $this->getConfig( 'TZID' ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: RELATED-TO
 */
/**
 * creates formatted output for calendar component property related-to
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-05-25
 * @return string
 */
  function createRelatedTo() {
    if( empty( $this->relatedto )) return FALSE;
    $output = null;
    foreach( $this->relatedto as $relation ) {
      if( !empty( $relation['value'] ))
        $output .= $this->_createElement( 'RELATED-TO', $this->_createParams( $relation['params'] ), iCalUtilityFunctions::_strrep( $relation['value'], $this->format, $this->nl ));
      elseif( $this->getConfig( 'allowEmpty' ))
        $output .= $this->_createElement( 'RELATED-TO' );
    }
    return $output;
  }
/**
 * set calendar component property related-to
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param float $relid
 * @param array $params, optional
 * @param index $index, optional
 * @return bool
 */
  function setRelatedTo( $value, $params=FALSE, $index=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    iCalUtilityFunctions::_existRem( $params, 'RELTYPE', 'PARENT', TRUE ); // remove default
    iCalUtilityFunctions::_setMval( $this->relatedto, $value, $params, FALSE, $index );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: REPEAT
 */
/**
 * creates formatted output for calendar component property repeat
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.9.3 - 2011-05-14
 * @return string
 */
  function createRepeat() {
    if( !isset( $this->repeat ) || ( empty( $this->repeat ) && !is_numeric( $this->repeat ))) return FALSE;
    if( !isset( $this->repeat['value']) || ( empty( $this->repeat['value'] ) && !is_numeric( $this->repeat['value'] )))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'REPEAT' ) : FALSE;
    $attributes = $this->_createParams( $this->repeat['params'] );
    return $this->_createElement( 'REPEAT', $attributes, $this->repeat['value'] );
  }
/**
 * set calendar component property repeat
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param array $params optional
 * @return void
 */
  function setRepeat( $value, $params=FALSE ) {
    if( empty( $value ) && !is_numeric( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $this->repeat = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: REQUEST-STATUS
 */
/**
 * creates formatted output for calendar component property request-status
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @return string
 */
  function createRequestStatus() {
    if( empty( $this->requeststatus )) return FALSE;
    $output = null;
    foreach( $this->requeststatus as $rstat ) {
      if( empty( $rstat['value']['statcode'] )) {
        if( $this->getConfig( 'allowEmpty' )) $output .= $this->_createElement( 'REQUEST-STATUS' );
        continue;
      }
      $attributes  = $this->_createParams( $rstat['params'], array( 'LANGUAGE' ));
      $content     = number_format( (float) $rstat['value']['statcode'], 2, '.', '');
      $content    .= ';'.iCalUtilityFunctions::_strrep( $rstat['value']['text'], $this->format, $this->nl );
      if( isset( $rstat['value']['extdata'] ))
        $content  .= ';'.iCalUtilityFunctions::_strrep( $rstat['value']['extdata'], $this->format, $this->nl );
      $output     .= $this->_createElement( 'REQUEST-STATUS', $attributes, $content );
    }
    return $output;
  }
/**
 * set calendar component property request-status
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param float $statcode
 * @param string $text
 * @param string $extdata, optional
 * @param array $params, optional
 * @param integer $index, optional
 * @return bool
 */
  function setRequestStatus( $statcode, $text, $extdata=FALSE, $params=FALSE, $index=FALSE ) {
    if( empty( $statcode ) || empty( $text )) if( $this->getConfig( 'allowEmpty' )) $statcode = $text = ''; else return FALSE;
    $input              = array( 'statcode' => $statcode, 'text' => $text );
    if( $extdata )
      $input['extdata'] = $extdata;
    iCalUtilityFunctions::_setMval( $this->requeststatus, $input, $params, FALSE, $index );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: RESOURCES
 */
/**
 * creates formatted output for calendar component property resources
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @return string
 */
  function createResources() {
    if( empty( $this->resources )) return FALSE;
    $output = null;
    foreach( $this->resources as $resource ) {
      if( empty( $resource['value'] )) {
        if( $this->getConfig( 'allowEmpty' )) $output .= $this->_createElement( 'RESOURCES' );
        continue;
      }
      $attributes  = $this->_createParams( $resource['params'], array( 'ALTREP', 'LANGUAGE' ));
      if( is_array( $resource['value'] )) {
        foreach( $resource['value'] as $rix => $resourcePart )
          $resource['value'][$rix] = iCalUtilityFunctions::_strrep( $resourcePart, $this->format, $this->nl );
        $content   = implode( ',', $resource['value'] );
      }
      else
        $content   = iCalUtilityFunctions::_strrep( $resource['value'], $this->format, $this->nl );
      $output     .= $this->_createElement( 'RESOURCES', $attributes, $content );
    }
    return $output;
  }
/**
 * set calendar component property recources
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param mixed $value
 * @param array $params, optional
 * @param integer $index, optional
 * @return bool
 */
  function setResources( $value, $params=FALSE, $index=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    iCalUtilityFunctions::_setMval( $this->resources, $value, $params, FALSE, $index );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: RRULE
 */
/**
 * creates formatted output for calendar component property rrule
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-21
 * @return string
 */
  function createRrule() {
    if( empty( $this->rrule )) return FALSE;
    return $this->_format_recur( 'RRULE', $this->rrule );
  }
/**
 * set calendar component property rrule
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param array $rruleset
 * @param array $params, optional
 * @param integer $index, optional
 * @return void
 */
  function setRrule( $rruleset, $params=FALSE, $index=FALSE ) {
    if( empty( $rruleset )) if( $this->getConfig( 'allowEmpty' )) $rruleset = ''; else return FALSE;
    iCalUtilityFunctions::_setMval( $this->rrule, iCalUtilityFunctions::_setRexrule( $rruleset ), $params, FALSE, $index );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: SEQUENCE
 */
/**
 * creates formatted output for calendar component property sequence
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.9.3 - 2011-05-14
 * @return string
 */
  function createSequence() {
    if( !isset( $this->sequence ) || ( empty( $this->sequence ) && !is_numeric( $this->sequence ))) return FALSE;
    if(( !isset($this->sequence['value'] ) || ( empty( $this->sequence['value'] ) && !is_numeric( $this->sequence['value'] ))) &&
       ( '0' != $this->sequence['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'SEQUENCE' ) : FALSE;
    $attributes = $this->_createParams( $this->sequence['params'] );
    return $this->_createElement( 'SEQUENCE', $attributes, $this->sequence['value'] );
  }
/**
 * set calendar component property sequence
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.10.8 - 2011-09-19
 * @param int $value optional
 * @param array $params optional
 * @return bool
 */
  function setSequence( $value=FALSE, $params=FALSE ) {
    if(( empty( $value ) && !is_numeric( $value )) && ( '0' != $value ))
      $value = ( isset( $this->sequence['value'] ) && ( -1 < $this->sequence['value'] )) ? $this->sequence['value'] + 1 : '0';
    $this->sequence = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: STATUS
 */
/**
 * creates formatted output for calendar component property status
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-21
 * @return string
 */
  function createStatus() {
    if( empty( $this->status )) return FALSE;
    if( empty( $this->status['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'STATUS' ) : FALSE;
    $attributes = $this->_createParams( $this->status['params'] );
    return $this->_createElement( 'STATUS', $attributes, $this->status['value'] );
  }
/**
 * set calendar component property status
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param array $params optional
 * @return bool
 */
  function setStatus( $value, $params=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $this->status = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: SUMMARY
 */
/**
 * creates formatted output for calendar component property summary
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @return string
 */
  function createSummary() {
    if( empty( $this->summary )) return FALSE;
    if( empty( $this->summary['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'SUMMARY' ) : FALSE;
    $attributes = $this->_createParams( $this->summary['params'], array( 'ALTREP', 'LANGUAGE' ));
    $content    = iCalUtilityFunctions::_strrep( $this->summary['value'], $this->format, $this->nl );
    return $this->_createElement( 'SUMMARY', $attributes, $content );
  }
/**
 * set calendar component property summary
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param string $params optional
 * @return bool
 */
  function setSummary( $value, $params=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $this->summary = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: TRANSP
 */
/**
 * creates formatted output for calendar component property transp
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-21
 * @return string
 */
  function createTransp() {
    if( empty( $this->transp )) return FALSE;
    if( empty( $this->transp['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'TRANSP' ) : FALSE;
    $attributes = $this->_createParams( $this->transp['params'] );
    return $this->_createElement( 'TRANSP', $attributes, $this->transp['value'] );
  }
/**
 * set calendar component property transp
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param string $params optional
 * @return bool
 */
  function setTransp( $value, $params=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $this->transp = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: TRIGGER
 */
/**
 * creates formatted output for calendar component property trigger
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.16 - 2008-10-21
 * @return string
 */
  function createTrigger() {
    if( empty( $this->trigger )) return FALSE;
    if( empty( $this->trigger['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'TRIGGER' ) : FALSE;
    $content = $attributes = null;
    if( isset( $this->trigger['value']['year'] )   &&
        isset( $this->trigger['value']['month'] )  &&
        isset( $this->trigger['value']['day'] ))
      $content      .= iCalUtilityFunctions::_date2strdate( $this->trigger['value'] );
    else {
      if( TRUE !== $this->trigger['value']['relatedStart'] )
        $attributes .= $this->intAttrDelimiter.'RELATED=END';
      if( $this->trigger['value']['before'] )
        $content    .= '-';
      $content      .= iCalUtilityFunctions::_duration2str( $this->trigger['value'] );
    }
    $attributes     .= $this->_createParams( $this->trigger['params'] );
    return $this->_createElement( 'TRIGGER', $attributes, $content );
  }
/**
 * set calendar component property trigger
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param mixed $year
 * @param mixed $month optional
 * @param int $day optional
 * @param int $week optional
 * @param int $hour optional
 * @param int $min optional
 * @param int $sec optional
 * @param bool $relatedStart optional
 * @param bool $before optional
 * @param array $params optional
 * @return bool
 */
  function setTrigger( $year, $month=null, $day=null, $week=FALSE, $hour=FALSE, $min=FALSE, $sec=FALSE, $relatedStart=TRUE, $before=TRUE, $params=FALSE ) {
    if( empty( $year ) && ( empty( $month ) || is_array( $month )) && empty( $day ) && empty( $week ) && empty( $hour ) && empty( $min ) && empty( $sec ))
      if( $this->getConfig( 'allowEmpty' )) {
        $this->trigger = array( 'value' => '', 'params' => iCalUtilityFunctions::_setParams( $month ) );
        return TRUE;
      }
      else
        return FALSE;
    if( iCalUtilityFunctions::_isArrayTimestampDate( $year )) { // timestamp UTC
      $params = iCalUtilityFunctions::_setParams( $month );
      $date   = iCalUtilityFunctions::_timestamp2date( $year, 7 );
      foreach( $date as $k => $v )
        $$k = $v;
    }
    elseif( is_array( $year ) && ( is_array( $month ) || empty( $month ))) {
      $params = iCalUtilityFunctions::_setParams( $month );
      if(!(array_key_exists( 'year',  $year ) &&   // exclude date-time
           array_key_exists( 'month', $year ) &&
           array_key_exists( 'day',   $year ))) {  // when this must be a duration
        if( isset( $params['RELATED'] ) && ( 'END' == strtoupper( $params['RELATED'] )))
          $relatedStart = FALSE;
        else
          $relatedStart = ( array_key_exists( 'relatedStart', $year ) && ( TRUE !== $year['relatedStart'] )) ? FALSE : TRUE;
        $before         = ( array_key_exists( 'before', $year )       && ( TRUE !== $year['before'] ))       ? FALSE : TRUE;
      }
      $SSYY  = ( array_key_exists( 'year',  $year )) ? $year['year']  : null;
      $month = ( array_key_exists( 'month', $year )) ? $year['month'] : null;
      $day   = ( array_key_exists( 'day',   $year )) ? $year['day']   : null;
      $week  = ( array_key_exists( 'week',  $year )) ? $year['week']  : null;
      $hour  = ( array_key_exists( 'hour',  $year )) ? $year['hour']  : 0; //null;
      $min   = ( array_key_exists( 'min',   $year )) ? $year['min']   : 0; //null;
      $sec   = ( array_key_exists( 'sec',   $year )) ? $year['sec']   : 0; //null;
      $year  = $SSYY;
    }
    elseif(is_string( $year ) && ( is_array( $month ) || empty( $month ))) {  // duration or date in a string
      $params = iCalUtilityFunctions::_setParams( $month );
      if( in_array( $year{0}, array( 'P', '+', '-' ))) { // duration
        $relatedStart = ( isset( $params['RELATED'] ) && ( 'END' == strtoupper( $params['RELATED'] ))) ? FALSE : TRUE;
        $before       = ( '-'  == $year[0] ) ? TRUE : FALSE;
        if(     'P'  != $year[0] )
          $year       = substr( $year, 1 );
        $date         = iCalUtilityFunctions::_durationStr2arr( $year);
      }
      else   // date
        $date    = iCalUtilityFunctions::_strdate2date( $year, 7 );
      unset( $year, $month, $day, $date['unparsedtext'] );
      if( empty( $date ))
        $sec = 0;
      else
        foreach( $date as $k => $v )
          $$k = $v;
    }
    else // single values in function input parameters
      $params = iCalUtilityFunctions::_setParams( $params );
    if( !empty( $year ) && !empty( $month ) && !empty( $day )) { // date
      $params['VALUE'] = 'DATE-TIME';
      $hour = ( $hour ) ? $hour : 0;
      $min  = ( $min  ) ? $min  : 0;
      $sec  = ( $sec  ) ? $sec  : 0;
      $this->trigger = array( 'params' => $params );
      $this->trigger['value'] = array( 'year'  => $year
                                     , 'month' => $month
                                     , 'day'   => $day
                                     , 'hour'  => $hour
                                     , 'min'   => $min
                                     , 'sec'   => $sec
                                     , 'tz'    => 'Z' );
      return TRUE;
    }
    elseif(( empty( $year ) && empty( $month )) &&    // duration
           (( !empty( $week ) || ( 0 == $week )) ||
            ( !empty( $day )  || ( 0 == $day  )) ||
            ( !empty( $hour ) || ( 0 == $hour )) ||
            ( !empty( $min )  || ( 0 == $min  )) ||
            ( !empty( $sec )  || ( 0 == $sec  )))) {
      unset( $params['RELATED'] ); // set at output creation (END only)
      unset( $params['VALUE'] );   // 'DURATION' default
      $this->trigger = array( 'params' => $params );
      $this->trigger['value']  = array();
      if( !empty( $week )) $this->trigger['value']['week'] = $week;
      if( !empty( $day  )) $this->trigger['value']['day']  = $day;
      if( !empty( $hour )) $this->trigger['value']['hour'] = $hour;
      if( !empty( $min  )) $this->trigger['value']['min']  = $min;
      if( !empty( $sec  )) $this->trigger['value']['sec']  = $sec;
      if( empty( $this->trigger['value'] )) {
        $this->trigger['value']['sec'] = 0;
        $before                        = FALSE;
      }
      else
        $this->trigger['value'] = iCalUtilityFunctions::_duration2arr( $this->trigger['value'] );
      $relatedStart = ( FALSE !== $relatedStart ) ? TRUE : FALSE;
      $before       = ( FALSE !== $before )       ? TRUE : FALSE;
      $this->trigger['value']['relatedStart'] = $relatedStart;
      $this->trigger['value']['before']       = $before;
      return TRUE;
    }
    return FALSE;
  }
/*********************************************************************************/
/**
 * Property Name: TZID
 */
/**
 * creates formatted output for calendar component property tzid
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @return string
 */
  function createTzid() {
    if( empty( $this->tzid )) return FALSE;
    if( empty( $this->tzid['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'TZID' ) : FALSE;
    $attributes = $this->_createParams( $this->tzid['params'] );
    return $this->_createElement( 'TZID', $attributes, iCalUtilityFunctions::_strrep( $this->tzid['value'], $this->format, $this->nl ));
  }
/**
 * set calendar component property tzid
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param array $params optional
 * @return bool
 */
  function setTzid( $value, $params=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $this->tzid = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * .. .
 * Property Name: TZNAME
 */
/**
 * creates formatted output for calendar component property tzname
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @return string
 */
  function createTzname() {
    if( empty( $this->tzname )) return FALSE;
    $output = null;
    foreach( $this->tzname as $theName ) {
      if( !empty( $theName['value'] )) {
        $attributes = $this->_createParams( $theName['params'], array( 'LANGUAGE' ));
        $output    .= $this->_createElement( 'TZNAME', $attributes, iCalUtilityFunctions::_strrep( $theName['value'], $this->format, $this->nl ));
      }
      elseif( $this->getConfig( 'allowEmpty' )) $output .= $this->_createElement( 'TZNAME' );
    }
    return $output;
  }
/**
 * set calendar component property tzname
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param string $params, optional
 * @param integer $index, optional
 * @return bool
 */
  function setTzname( $value, $params=FALSE, $index=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    iCalUtilityFunctions::_setMval( $this->tzname, $value, $params, FALSE, $index );
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: TZOFFSETFROM
 */
/**
 * creates formatted output for calendar component property tzoffsetfrom
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-21
 * @return string
 */
  function createTzoffsetfrom() {
    if( empty( $this->tzoffsetfrom )) return FALSE;
    if( empty( $this->tzoffsetfrom['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'TZOFFSETFROM' ) : FALSE;
    $attributes = $this->_createParams( $this->tzoffsetfrom['params'] );
    return $this->_createElement( 'TZOFFSETFROM', $attributes, $this->tzoffsetfrom['value'] );
  }
/**
 * set calendar component property tzoffsetfrom
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param string $params optional
 * @return bool
 */
  function setTzoffsetfrom( $value, $params=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $this->tzoffsetfrom = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: TZOFFSETTO
 */
/**
 * creates formatted output for calendar component property tzoffsetto
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-21
 * @return string
 */
  function createTzoffsetto() {
    if( empty( $this->tzoffsetto )) return FALSE;
    if( empty( $this->tzoffsetto['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'TZOFFSETTO' ) : FALSE;
    $attributes = $this->_createParams( $this->tzoffsetto['params'] );
    return $this->_createElement( 'TZOFFSETTO', $attributes, $this->tzoffsetto['value'] );
  }
/**
 * set calendar component property tzoffsetto
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param string $params optional
 * @return bool
 */
  function setTzoffsetto( $value, $params=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $this->tzoffsetto = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: TZURL
 */
/**
 * creates formatted output for calendar component property tzurl
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-21
 * @return string
 */
  function createTzurl() {
    if( empty( $this->tzurl )) return FALSE;
    if( empty( $this->tzurl['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'TZURL' ) : FALSE;
    $attributes = $this->_createParams( $this->tzurl['params'] );
    return $this->_createElement( 'TZURL', $attributes, $this->tzurl['value'] );
  }
/**
 * set calendar component property tzurl
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param string $params optional
 * @return boll
 */
  function setTzurl( $value, $params=FALSE ) {
    if( empty( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $this->tzurl = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: UID
 */
/**
 * creates formatted output for calendar component property uid
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 0.9.7 - 2006-11-20
 * @return string
 */
  function createUid() {
    if( 0 >= count( $this->uid ))
      $this->_makeuid();
    $attributes = $this->_createParams( $this->uid['params'] );
    return $this->_createElement( 'UID', $attributes, $this->uid['value'] );
  }
/**
 * create an unique id for this calendar component object instance
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.2.7 - 2007-09-04
 * @return void
 */
  function _makeUid() {
    $date   = date('Ymd\THisT');
    $unique = substr(microtime(), 2, 4);
    $base   = 'aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPrRsStTuUvVxXuUvVwWzZ1234567890';
    $start  = 0;
    $end    = strlen( $base ) - 1;
    $length = 6;
    $str    = null;
    for( $p = 0; $p < $length; $p++ )
      $unique .= $base{mt_rand( $start, $end )};
    $this->uid = array( 'params' => null );
    $this->uid['value']  = $date.'-'.$unique.'@'.$this->getConfig( 'unique_id' );
  }
/**
 * set calendar component property uid
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-11-04
 * @param string $value
 * @param string $params optional
 * @return bool
 */
  function setUid( $value, $params=FALSE ) {
    if( empty( $value )) return FALSE; // no allowEmpty check here !!!!
    $this->uid = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: URL
 */
/**
 * creates formatted output for calendar component property url
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.8 - 2008-10-21
 * @return string
 */
  function createUrl() {
    if( empty( $this->url )) return FALSE;
    if( empty( $this->url['value'] ))
      return ( $this->getConfig( 'allowEmpty' )) ? $this->_createElement( 'URL' ) : FALSE;
    $attributes = $this->_createParams( $this->url['params'] );
    return $this->_createElement( 'URL', $attributes, $this->url['value'] );
  }
/**
 * set calendar component property url
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $value
 * @param string $params optional
 * @return bool
 */
  function setUrl( $value, $params=FALSE ) {
    if( !empty( $value )) {
      if( !filter_var( $value, FILTER_VALIDATE_URL ) && ( 'urn' != strtolower( substr( $value, 0, 3 ))))
        return FALSE;
    }
    elseif( $this->getConfig( 'allowEmpty' ))
      $value = '';
    else
      return FALSE;
    $this->url = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params ));
    return TRUE;
  }
/*********************************************************************************/
/**
 * Property Name: x-prop
 */
/**
 * creates formatted output for calendar component property x-prop
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @return string
 */
  function createXprop() {
    if( empty( $this->xprop )) return FALSE;
    $output = null;
    foreach( $this->xprop as $label => $xpropPart ) {
      if( !isset($xpropPart['value']) || ( empty( $xpropPart['value'] ) && !is_numeric( $xpropPart['value'] ))) {
        if( $this->getConfig( 'allowEmpty' )) $output .= $this->_createElement( $label );
        continue;
      }
      $attributes = $this->_createParams( $xpropPart['params'], array( 'LANGUAGE' ));
      if( is_array( $xpropPart['value'] )) {
        foreach( $xpropPart['value'] as $pix => $theXpart )
          $xpropPart['value'][$pix] = iCalUtilityFunctions::_strrep( $theXpart, $this->format, $this->format );
        $xpropPart['value']  = implode( ',', $xpropPart['value'] );
      }
      else
        $xpropPart['value'] = iCalUtilityFunctions::_strrep( $xpropPart['value'], $this->format, $this->nl );
      $output    .= $this->_createElement( $label, $attributes, $xpropPart['value'] );
    }
    return $output;
  }
/**
 * set calendar component property x-prop
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $label
 * @param mixed $value
 * @param array $params optional
 * @return bool
 */
  function setXprop( $label, $value, $params=FALSE ) {
    if( empty( $label ))
      return FALSE;
    if( 'X-' != strtoupper( substr( $label, 0, 2 )))
      return FALSE;
    if( empty( $value ) && !is_numeric( $value )) if( $this->getConfig( 'allowEmpty' )) $value = ''; else return FALSE;
    $xprop           = array( 'value' => $value );
    $xprop['params'] = iCalUtilityFunctions::_setParams( $params );
    if( !is_array( $this->xprop )) $this->xprop = array();
    $this->xprop[strtoupper( $label )] = $xprop;
    return TRUE;
  }
/*********************************************************************************/
/*********************************************************************************/
/**
 * create element format parts
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.0.6 - 2006-06-20
 * @return string
 */
  function _createFormat() {
    $objectname                   = null;
    switch( $this->format ) {
      case 'xcal':
        $objectname               = ( isset( $this->timezonetype )) ?
                                 strtolower( $this->timezonetype )  :  strtolower( $this->objName );
        $this->componentStart1    = $this->elementStart1 = '<';
        $this->componentStart2    = $this->elementStart2 = '>';
        $this->componentEnd1      = $this->elementEnd1   = '</';
        $this->componentEnd2      = $this->elementEnd2   = '>'.$this->nl;
        $this->intAttrDelimiter   = '<!-- -->';
        $this->attributeDelimiter = $this->nl;
        $this->valueInit          = null;
        break;
      default:
        $objectname               = ( isset( $this->timezonetype )) ?
                                 strtoupper( $this->timezonetype )  :  strtoupper( $this->objName );
        $this->componentStart1    = 'BEGIN:';
        $this->componentStart2    = null;
        $this->componentEnd1      = 'END:';
        $this->componentEnd2      = $this->nl;
        $this->elementStart1      = null;
        $this->elementStart2      = null;
        $this->elementEnd1        = null;
        $this->elementEnd2        = $this->nl;
        $this->intAttrDelimiter   = '<!-- -->';
        $this->attributeDelimiter = ';';
        $this->valueInit          = ':';
        break;
    }
    return $objectname;
  }
/**
 * creates formatted output for calendar component property
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @param string $label property name
 * @param string $attributes property attributes
 * @param string $content property content (optional)
 * @return string
 */
  function _createElement( $label, $attributes=null, $content=FALSE ) {
    switch( $this->format ) {
      case 'xcal':
        $label = strtolower( $label );
        break;
      default:
        $label = strtoupper( $label );
        break;
    }
    $output = $this->elementStart1.$label;
    $categoriesAttrLang = null;
    $attachInlineBinary = FALSE;
    $attachfmttype      = null;
    if (( 'xcal' == $this->format) && ( 'x-' == substr( $label, 0, 2 ))) {
      $this->xcaldecl[] = array( 'xmldecl'  => 'ELEMENT'
                               , 'ref'      => $label
                               , 'type2'    => '(#PCDATA)' );
    }
    if( !empty( $attributes ))  {
      $attributes  = trim( $attributes );
      if ( 'xcal' == $this->format ) {
        $attributes2 = explode( $this->intAttrDelimiter, $attributes );
        $attributes  = null;
        foreach( $attributes2 as $aix => $attribute ) {
          $attrKVarr = explode( '=', $attribute );
          if( empty( $attrKVarr[0] ))
            continue;
          if( !isset( $attrKVarr[1] )) {
            $attrValue = $attrKVarr[0];
            $attrKey   = $aix;
          }
          elseif( 2 == count( $attrKVarr)) {
            $attrKey   = strtolower( $attrKVarr[0] );
            $attrValue = $attrKVarr[1];
          }
          else {
            $attrKey   = strtolower( $attrKVarr[0] );
            unset( $attrKVarr[0] );
            $attrValue = implode( '=', $attrKVarr );
          }
          if(( 'attach' == $label ) && ( in_array( $attrKey, array( 'fmttype', 'encoding', 'value' )))) {
            $attachInlineBinary = TRUE;
            if( 'fmttype' == $attrKey )
              $attachfmttype = $attrKey.'='.$attrValue;
            continue;
          }
          elseif(( 'categories' == $label ) && ( 'language' == $attrKey ))
            $categoriesAttrLang = $attrKey.'='.$attrValue;
          else {
            $attributes .= ( empty( $attributes )) ? ' ' : $this->attributeDelimiter.' ';
            $attributes .= ( !empty( $attrKey )) ? $attrKey.'=' : null;
            if(( '"' == substr( $attrValue, 0, 1 )) && ( '"' == substr( $attrValue, -1 ))) {
              $attrValue = substr( $attrValue, 1, ( strlen( $attrValue ) - 2 ));
              $attrValue = str_replace( '"', '', $attrValue );
            }
            $attributes .= '"'.htmlspecialchars( $attrValue ).'"';
          }
        }
      }
      else {
        $attributes = str_replace( $this->intAttrDelimiter, $this->attributeDelimiter, $attributes );
      }
    }
    if(( 'xcal' == $this->format) &&
       ((( 'attach' == $label ) && !$attachInlineBinary ) || ( in_array( $label, array( 'tzurl', 'url' ))))) {
      $pos = strrpos($content, "/");
      $docname = ( $pos !== false) ? substr( $content, (1 - strlen( $content ) + $pos )) : $content;
      $this->xcaldecl[] = array( 'xmldecl'  => 'ENTITY'
                               , 'uri'      => $docname
                               , 'ref'      => 'SYSTEM'
                               , 'external' => $content
                               , 'type'     => 'NDATA'
                               , 'type2'    => 'BINERY' );
      $attributes .= ( empty( $attributes )) ? ' ' : $this->attributeDelimiter.' ';
      $attributes .= 'uri="'.$docname.'"';
      $content = null;
      if( 'attach' == $label ) {
        $attributes = str_replace( $this->attributeDelimiter, $this->intAttrDelimiter, $attributes );
        $content = $this->nl.$this->_createElement( 'extref', $attributes, null );
        $attributes = null;
      }
    }
    elseif(( 'xcal' == $this->format) && ( 'attach' == $label ) && $attachInlineBinary ) {
      $content = $this->nl.$this->_createElement( 'b64bin', $attachfmttype, $content ); // max one attribute
    }
    $output .= $attributes;
    if( !$content && ( '0' != $content )) {
      switch( $this->format ) {
        case 'xcal':
          $output .= ' /';
          $output .= $this->elementStart2.$this->nl;
          return $output;
          break;
        default:
          $output .= $this->elementStart2.$this->valueInit;
          return iCalUtilityFunctions::_size75( $output, $this->nl );
          break;
      }
    }
    $output .= $this->elementStart2;
    $output .= $this->valueInit.$content;
    switch( $this->format ) {
      case 'xcal':
        return $output.$this->elementEnd1.$label.$this->elementEnd2;
        break;
      default:
        return iCalUtilityFunctions::_size75( $output, $this->nl );
        break;
    }
  }
/**
 * creates formatted output for calendar component property parameters
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.10.27 - 2012-01-16
 * @param array $params  optional
 * @param array $ctrKeys optional
 * @return string
 */
  function _createParams( $params=array(), $ctrKeys=array() ) {
    if( !is_array( $params ) || empty( $params ))
      $params = array();
    $attrLANG = $attr1 = $attr2 = $lang = null;
    $CNattrKey   = ( in_array( 'CN',       $ctrKeys )) ? TRUE : FALSE ;
    $LANGattrKey = ( in_array( 'LANGUAGE', $ctrKeys )) ? TRUE : FALSE ;
    $CNattrExist = $LANGattrExist = FALSE;
    $xparams = array();
    foreach( $params as $paramKey => $paramValue ) {
      if(( FALSE !== strpos( $paramValue, ':' )) ||
         ( FALSE !== strpos( $paramValue, ';' )) ||
         ( FALSE !== strpos( $paramValue, ',' )))
        $paramValue = '"'.$paramValue.'"';
      if( ctype_digit( (string) $paramKey )) {
        $xparams[]          = $paramValue;
        continue;
      }
      $paramKey             = strtoupper( $paramKey );
      if( !in_array( $paramKey, array( 'ALTREP', 'CN', 'DIR', 'ENCODING', 'FMTTYPE', 'LANGUAGE', 'RANGE', 'RELTYPE', 'SENT-BY', 'TZID', 'VALUE' )))
        $xparams[$paramKey] = $paramValue;
      else
        $params[$paramKey]  = $paramValue;
    }
    ksort( $xparams, SORT_STRING );
    foreach( $xparams as $paramKey => $paramValue ) {
      if( ctype_digit( (string) $paramKey ))
        $attr2             .= $this->intAttrDelimiter.$paramValue;
      else
        $attr2             .= $this->intAttrDelimiter."$paramKey=$paramValue";
    }
    if( isset( $params['FMTTYPE'] )  && !in_array( 'FMTTYPE', $ctrKeys )) {
      $attr1               .= $this->intAttrDelimiter.'FMTTYPE='.$params['FMTTYPE'].$attr2;
      $attr2                = null;
    }
    if( isset( $params['ENCODING'] ) && !in_array( 'ENCODING',   $ctrKeys )) {
      if( !empty( $attr2 )) {
        $attr1             .= $attr2;
        $attr2              = null;
      }
      $attr1               .= $this->intAttrDelimiter.'ENCODING='.$params['ENCODING'];
    }
    if( isset( $params['VALUE'] )    && !in_array( 'VALUE',   $ctrKeys ))
      $attr1               .= $this->intAttrDelimiter.'VALUE='.$params['VALUE'];
    if( isset( $params['TZID'] )     && !in_array( 'TZID',    $ctrKeys )) {
      $attr1               .= $this->intAttrDelimiter.'TZID='.$params['TZID'];
    }
    if( isset( $params['RANGE'] )    && !in_array( 'RANGE',   $ctrKeys ))
      $attr1               .= $this->intAttrDelimiter.'RANGE='.$params['RANGE'];
    if( isset( $params['RELTYPE'] )  && !in_array( 'RELTYPE', $ctrKeys ))
      $attr1               .= $this->intAttrDelimiter.'RELTYPE='.$params['RELTYPE'];
    if( isset( $params['CN'] )       && $CNattrKey ) {
      $attr1                = $this->intAttrDelimiter.'CN='.$params['CN'];
      $CNattrExist          = TRUE;
    }
    if( isset( $params['DIR'] )      && in_array( 'DIR',      $ctrKeys )) {
      $delim = ( FALSE !== strpos( $params['DIR'], '"' )) ? '' : '"';
      $attr1               .= $this->intAttrDelimiter.'DIR='.$delim.$params['DIR'].$delim;
    }
    if( isset( $params['SENT-BY'] )  && in_array( 'SENT-BY',  $ctrKeys ))
      $attr1               .= $this->intAttrDelimiter.'SENT-BY='.$params['SENT-BY'];
    if( isset( $params['ALTREP'] )   && in_array( 'ALTREP',   $ctrKeys )) {
      $delim = ( FALSE !== strpos( $params['ALTREP'], '"' )) ? '' : '"';
      $attr1               .= $this->intAttrDelimiter.'ALTREP='.$delim.$params['ALTREP'].$delim;
    }
    if( isset( $params['LANGUAGE'] ) && $LANGattrKey ) {
      $attrLANG            .= $this->intAttrDelimiter.'LANGUAGE='.$params['LANGUAGE'];
      $LANGattrExist        = TRUE;
    }
    if( !$LANGattrExist ) {
      $lang = $this->getConfig( 'language' );
      if(( $CNattrExist || $LANGattrKey ) && $lang )
        $attrLANG .= $this->intAttrDelimiter.'LANGUAGE='.$lang;
    }
    return $attr1.$attrLANG.$attr2;
  }
/**
 * creates formatted output for calendar component property data value type recur
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.25 - 2013-06-30
 * @param array $recurlabel
 * @param array $recurdata
 * @return string
 */
  function _format_recur( $recurlabel, $recurdata ) {
    $output = null;
    foreach( $recurdata as $therule ) {
      if( empty( $therule['value'] )) {
        if( $this->getConfig( 'allowEmpty' )) $output .= $this->_createElement( $recurlabel );
        continue;
      }
      $attributes = ( isset( $therule['params'] )) ? $this->_createParams( $therule['params'] ) : null;
      $content1  = $content2  = null;
      foreach( $therule['value'] as $rulelabel => $rulevalue ) {
        switch( strtoupper( $rulelabel )) {
          case 'FREQ': {
            $content1 .= "FREQ=$rulevalue";
            break;
          }
          case 'UNTIL': {
            $parno     = ( isset( $rulevalue['hour'] )) ? 7 : 3;
            $content2 .= ';UNTIL='.iCalUtilityFunctions::_date2strdate( $rulevalue, $parno );
            break;
          }
          case 'COUNT':
          case 'INTERVAL':
          case 'WKST': {
            $content2 .= ";$rulelabel=$rulevalue";
            break;
          }
          case 'BYSECOND':
          case 'BYMINUTE':
          case 'BYHOUR':
          case 'BYMONTHDAY':
          case 'BYYEARDAY':
          case 'BYWEEKNO':
          case 'BYMONTH':
          case 'BYSETPOS': {
            $content2 .= ";$rulelabel=";
            if( is_array( $rulevalue )) {
              foreach( $rulevalue as $vix => $valuePart ) {
                $content2 .= ( $vix ) ? ',' : null;
                $content2 .= $valuePart;
              }
            }
            else
             $content2 .= $rulevalue;
            break;
          }
          case 'BYDAY': {
            $byday          = array( '' );
            $bx             = 0;
            foreach( $rulevalue as $bix => $bydayPart ) {
              if( ! empty( $byday[$bx] ) && ! ctype_digit( substr( $byday[$bx], -1 ))) // new day
                $byday[++$bx] = '';
              if( ! is_array( $bydayPart ))   // day without order number
                $byday[$bx] .= (string) $bydayPart;
              else {                          // day with order number
                foreach( $bydayPart as $bix2 => $bydayPart2 )
                  $byday[$bx] .= (string) $bydayPart2;
              }
            } // end foreach( $rulevalue as $bix => $bydayPart )
            if( 1 < count( $byday ))
              usort( $byday, array( 'iCalUtilityFunctions', '_recurBydaySort' ));
            $content2      .= ';BYDAY='.implode( ',', $byday );
            break;
          }
          default: {
            $content2 .= ";$rulelabel=$rulevalue";
            break;
          }
        }
      }
      $output .= $this->_createElement( $recurlabel, $attributes, $content1.$content2 );
    }
    return $output;
  }
/**
 * check if property not exists within component
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.5.1 - 2008-10-15
 * @param string $propName
 * @return bool
 */
  function _notExistProp( $propName ) {
    if( empty( $propName )) return FALSE; // when deleting x-prop, an empty propName may be used=allowed
    $propName = strtolower( $propName );
    if(     'last-modified'    == $propName )  { if( !isset( $this->lastmodified ))    return TRUE; }
    elseif( 'percent-complete' == $propName )  { if( !isset( $this->percentcomplete )) return TRUE; }
    elseif( 'recurrence-id'    == $propName )  { if( !isset( $this->recurrenceid ))    return TRUE; }
    elseif( 'related-to'       == $propName )  { if( !isset( $this->relatedto ))       return TRUE; }
    elseif( 'request-status'   == $propName )  { if( !isset( $this->requeststatus ))   return TRUE; }
    elseif((       'x-' != substr($propName,0,2)) && !isset( $this->$propName ))       return TRUE;
    return FALSE;
  }
/*********************************************************************************/
/*********************************************************************************/
/**
 * get general component config variables or info about subcomponents
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.9.6 - 2011-05-14
 * @param mixed $config
 * @return value
 */
  function getConfig( $config = FALSE) {
    if( !$config ) {
      $return = array();
      $return['ALLOWEMPTY']  = $this->getConfig( 'ALLOWEMPTY' );
      $return['FORMAT']      = $this->getConfig( 'FORMAT' );
      if( FALSE !== ( $lang  = $this->getConfig( 'LANGUAGE' )))
        $return['LANGUAGE']  = $lang;
      $return['NEWLINECHAR'] = $this->getConfig( 'NEWLINECHAR' );
      $return['TZTD']        = $this->getConfig( 'TZID' );
      $return['UNIQUE_ID']   = $this->getConfig( 'UNIQUE_ID' );
      return $return;
    }
    switch( strtoupper( $config )) {
      case 'ALLOWEMPTY':
        return $this->allowEmpty;
        break;
      case 'COMPSINFO':
        unset( $this->compix );
        $info = array();
        if( isset( $this->components )) {
          foreach( $this->components as $cix => $component ) {
            if( empty( $component )) continue;
            $info[$cix]['ordno'] = $cix + 1;
            $info[$cix]['type']  = $component->objName;
            $info[$cix]['uid']   = $component->getProperty( 'uid' );
            $info[$cix]['props'] = $component->getConfig( 'propinfo' );
            $info[$cix]['sub']   = $component->getConfig( 'compsinfo' );
          }
        }
        return $info;
        break;
      case 'FORMAT':
        return $this->format;
        break;
      case 'LANGUAGE':
         // get language for calendar component as defined in [RFC 1766]
        return $this->language;
        break;
      case 'NL':
      case 'NEWLINECHAR':
        return $this->nl;
        break;
      case 'PROPINFO':
        $output = array();
        if( !in_array( $this->objName, array( 'valarm', 'vtimezone', 'standard', 'daylight' ))) {
          if( empty( $this->uid['value'] ))   $this->_makeuid();
                                              $output['UID']              = 1;
          if( empty( $this->dtstamp ))        $this->_makeDtstamp();
                                              $output['DTSTAMP']          = 1;
        }
        if( !empty( $this->summary ))         $output['SUMMARY']          = 1;
        if( !empty( $this->description ))     $output['DESCRIPTION']      = count( $this->description );
        if( !empty( $this->dtstart ))         $output['DTSTART']          = 1;
        if( !empty( $this->dtend ))           $output['DTEND']            = 1;
        if( !empty( $this->due ))             $output['DUE']              = 1;
        if( !empty( $this->duration ))        $output['DURATION']         = 1;
        if( !empty( $this->rrule ))           $output['RRULE']            = count( $this->rrule );
        if( !empty( $this->rdate ))           $output['RDATE']            = count( $this->rdate );
        if( !empty( $this->exdate ))          $output['EXDATE']           = count( $this->exdate );
        if( !empty( $this->exrule ))          $output['EXRULE']           = count( $this->exrule );
        if( !empty( $this->action ))          $output['ACTION']           = 1;
        if( !empty( $this->attach ))          $output['ATTACH']           = count( $this->attach );
        if( !empty( $this->attendee ))        $output['ATTENDEE']         = count( $this->attendee );
        if( !empty( $this->categories ))      $output['CATEGORIES']       = count( $this->categories );
        if( !empty( $this->class ))           $output['CLASS']            = 1;
        if( !empty( $this->comment ))         $output['COMMENT']          = count( $this->comment );
        if( !empty( $this->completed ))       $output['COMPLETED']        = 1;
        if( !empty( $this->contact ))         $output['CONTACT']          = count( $this->contact );
        if( !empty( $this->created ))         $output['CREATED']          = 1;
        if( !empty( $this->freebusy ))        $output['FREEBUSY']         = count( $this->freebusy );
        if( !empty( $this->geo ))             $output['GEO']              = 1;
        if( !empty( $this->lastmodified ))    $output['LAST-MODIFIED']    = 1;
        if( !empty( $this->location ))        $output['LOCATION']         = 1;
        if( !empty( $this->organizer ))       $output['ORGANIZER']        = 1;
        if( !empty( $this->percentcomplete )) $output['PERCENT-COMPLETE'] = 1;
        if( !empty( $this->priority ))        $output['PRIORITY']         = 1;
        if( !empty( $this->recurrenceid ))    $output['RECURRENCE-ID']    = 1;
        if( !empty( $this->relatedto ))       $output['RELATED-TO']       = count( $this->relatedto );
        if( !empty( $this->repeat ))          $output['REPEAT']           = 1;
        if( !empty( $this->requeststatus ))   $output['REQUEST-STATUS']   = count( $this->requeststatus );
        if( !empty( $this->resources ))       $output['RESOURCES']        = count( $this->resources );
        if( !empty( $this->sequence ))        $output['SEQUENCE']         = 1;
        if( !empty( $this->sequence ))        $output['SEQUENCE']         = 1;
        if( !empty( $this->status ))          $output['STATUS']           = 1;
        if( !empty( $this->transp ))          $output['TRANSP']           = 1;
        if( !empty( $this->trigger ))         $output['TRIGGER']          = 1;
        if( !empty( $this->tzid ))            $output['TZID']             = 1;
        if( !empty( $this->tzname ))          $output['TZNAME']           = count( $this->tzname );
        if( !empty( $this->tzoffsetfrom ))    $output['TZOFFSETFROM']     = 1;
        if( !empty( $this->tzoffsetto ))      $output['TZOFFSETTO']       = 1;
        if( !empty( $this->tzurl ))           $output['TZURL']            = 1;
        if( !empty( $this->url ))             $output['URL']              = 1;
        if( !empty( $this->xprop ))           $output['X-PROP']           = count( $this->xprop );
        return $output;
        break;
      case 'SETPROPERTYNAMES':
        return array_keys( $this->getConfig( 'propinfo' ));
        break;
      case 'TZID':
        return $this->dtzid;
        break;
      case 'UNIQUE_ID':
        if( empty( $this->unique_id ))
          $this->unique_id  = ( isset( $_SERVER['SERVER_NAME'] )) ? gethostbyname( $_SERVER['SERVER_NAME'] ) : 'localhost';
        return $this->unique_id;
        break;
    }
  }
/**
 * general component config setting
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.10.18 - 2011-10-28
 * @param mixed  $config
 * @param string $value
 * @param bool   $softUpdate
 * @return void
 */
  function setConfig( $config, $value = FALSE, $softUpdate = FALSE ) {
    if( is_array( $config )) {
      $ak = array_keys( $config );
      foreach( $ak as $k ) {
        if( 'NEWLINECHAR' == strtoupper( $k )) {
          if( FALSE === $this->setConfig( 'NEWLINECHAR', $config[$k] ))
            return FALSE;
          unset( $config[$k] );
          break;
        }
      }
      foreach( $config as $cKey => $cValue ) {
        if( FALSE === $this->setConfig( $cKey, $cValue, $softUpdate ))
          return FALSE;
      }
      return TRUE;
    }
    $res = FALSE;
    switch( strtoupper( $config )) {
      case 'ALLOWEMPTY':
        $this->allowEmpty = $value;
        $subcfg = array( 'ALLOWEMPTY' => $value );
        $res    = TRUE;
        break;
      case 'FORMAT':
        $value  = trim( strtolower( $value ));
        $this->format = $value;
        $this->_createFormat();
        $subcfg = array( 'FORMAT' => $value );
        $res    = TRUE;
        break;
      case 'LANGUAGE':
         // set language for calendar component as defined in [RFC 1766]
        $value  = trim( $value );
        if( empty( $this->language ) || !$softUpdate )
          $this->language = $value;
        $subcfg = array( 'LANGUAGE' => $value );
        $res    = TRUE;
        break;
      case 'NL':
      case 'NEWLINECHAR':
        $this->nl = $value;
        $this->_createFormat();
        $subcfg = array( 'NL' => $value );
        $res    = TRUE;
        break;
      case 'TZID':
        $this->dtzid = $value;
        $subcfg = array( 'TZID' => $value );
        $res    = TRUE;
        break;
      case 'UNIQUE_ID':
        $value  = trim( $value );
        $this->unique_id = $value;
        $subcfg = array( 'UNIQUE_ID' => $value );
        $res    = TRUE;
        break;
      default:  // any unvalid config key.. .
        return TRUE;
    }
    if( !$res ) return FALSE;
    if( isset( $subcfg ) && !empty( $this->components )) {
      foreach( $subcfg as $cfgkey => $cfgvalue ) {
        foreach( $this->components as $cix => $component ) {
          $res = $component->setConfig( $cfgkey, $cfgvalue, $softUpdate );
          if( !$res )
            break 2;
          $this->components[$cix] = $component->copy(); // PHP4 compliant
        }
      }
    }
    return $res;
  }
/*********************************************************************************/
/**
 * delete component property value
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.8.8 - 2011-03-15
 * @param mixed $propName, bool FALSE => X-property
 * @param int   $propix, optional, if specific property is wanted in case of multiply occurences
 * @return bool, if successfull delete TRUE
 */
  function deleteProperty( $propName=FALSE, $propix=FALSE ) {
    if( $this->_notExistProp( $propName )) return FALSE;
    $propName = strtoupper( $propName );
    if( in_array( $propName, array( 'ATTACH',   'ATTENDEE', 'CATEGORIES', 'COMMENT',   'CONTACT', 'DESCRIPTION',    'EXDATE', 'EXRULE',
                                    'FREEBUSY', 'RDATE',    'RELATED-TO', 'RESOURCES', 'RRULE',   'REQUEST-STATUS', 'TZNAME', 'X-PROP'  ))) {
      if( !$propix )
        $propix = ( isset( $this->propdelix[$propName] ) && ( 'X-PROP' != $propName )) ? $this->propdelix[$propName] + 2 : 1;
      $this->propdelix[$propName] = --$propix;
    }
    $return = FALSE;
    switch( $propName ) {
      case 'ACTION':
        if( !empty( $this->action )) {
          $this->action = '';
          $return = TRUE;
        }
        break;
      case 'ATTACH':
        return $this->deletePropertyM( $this->attach, $this->propdelix[$propName] );
        break;
      case 'ATTENDEE':
        return $this->deletePropertyM( $this->attendee, $this->propdelix[$propName] );
        break;
      case 'CATEGORIES':
        return $this->deletePropertyM( $this->categories, $this->propdelix[$propName] );
        break;
      case 'CLASS':
        if( !empty( $this->class )) {
          $this->class = '';
          $return = TRUE;
        }
        break;
      case 'COMMENT':
        return $this->deletePropertyM( $this->comment, $this->propdelix[$propName] );
        break;
      case 'COMPLETED':
        if( !empty( $this->completed )) {
          $this->completed = '';
          $return = TRUE;
        }
        break;
      case 'CONTACT':
        return $this->deletePropertyM( $this->contact, $this->propdelix[$propName] );
        break;
      case 'CREATED':
        if( !empty( $this->created )) {
          $this->created = '';
          $return = TRUE;
        }
        break;
      case 'DESCRIPTION':
        return $this->deletePropertyM( $this->description, $this->propdelix[$propName] );
        break;
      case 'DTEND':
        if( !empty( $this->dtend )) {
          $this->dtend = '';
          $return = TRUE;
        }
        break;
      case 'DTSTAMP':
        if( in_array( $this->objName, array( 'valarm', 'vtimezone', 'standard', 'daylight' )))
          return FALSE;
        if( !empty( $this->dtstamp )) {
          $this->dtstamp = '';
          $return = TRUE;
        }
        break;
      case 'DTSTART':
        if( !empty( $this->dtstart )) {
          $this->dtstart = '';
          $return = TRUE;
        }
        break;
      case 'DUE':
        if( !empty( $this->due )) {
          $this->due = '';
          $return = TRUE;
        }
        break;
      case 'DURATION':
        if( !empty( $this->duration )) {
          $this->duration = '';
          $return = TRUE;
        }
        break;
      case 'EXDATE':
        return $this->deletePropertyM( $this->exdate, $this->propdelix[$propName] );
        break;
      case 'EXRULE':
        return $this->deletePropertyM( $this->exrule, $this->propdelix[$propName] );
        break;
      case 'FREEBUSY':
        return $this->deletePropertyM( $this->freebusy, $this->propdelix[$propName] );
        break;
      case 'GEO':
        if( !empty( $this->geo )) {
          $this->geo = '';
          $return = TRUE;
        }
        break;
      case 'LAST-MODIFIED':
        if( !empty( $this->lastmodified )) {
          $this->lastmodified = '';
          $return = TRUE;
        }
        break;
      case 'LOCATION':
        if( !empty( $this->location )) {
          $this->location = '';
          $return = TRUE;
        }
        break;
      case 'ORGANIZER':
        if( !empty( $this->organizer )) {
          $this->organizer = '';
          $return = TRUE;
        }
        break;
      case 'PERCENT-COMPLETE':
        if( !empty( $this->percentcomplete )) {
          $this->percentcomplete = '';
          $return = TRUE;
        }
        break;
      case 'PRIORITY':
        if( !empty( $this->priority )) {
          $this->priority = '';
          $return = TRUE;
        }
        break;
      case 'RDATE':
        return $this->deletePropertyM( $this->rdate, $this->propdelix[$propName] );
        break;
      case 'RECURRENCE-ID':
        if( !empty( $this->recurrenceid )) {
          $this->recurrenceid = '';
          $return = TRUE;
        }
        break;
      case 'RELATED-TO':
        return $this->deletePropertyM( $this->relatedto, $this->propdelix[$propName] );
        break;
      case 'REPEAT':
        if( !empty( $this->repeat )) {
          $this->repeat = '';
          $return = TRUE;
        }
        break;
      case 'REQUEST-STATUS':
        return $this->deletePropertyM( $this->requeststatus, $this->propdelix[$propName] );
        break;
      case 'RESOURCES':
        return $this->deletePropertyM( $this->resources, $this->propdelix[$propName] );
        break;
      case 'RRULE':
        return $this->deletePropertyM( $this->rrule, $this->propdelix[$propName] );
        break;
      case 'SEQUENCE':
        if( !empty( $this->sequence )) {
          $this->sequence = '';
          $return = TRUE;
        }
        break;
      case 'STATUS':
        if( !empty( $this->status )) {
          $this->status = '';
          $return = TRUE;
        }
        break;
      case 'SUMMARY':
        if( !empty( $this->summary )) {
          $this->summary = '';
          $return = TRUE;
        }
        break;
      case 'TRANSP':
        if( !empty( $this->transp )) {
          $this->transp = '';
          $return = TRUE;
        }
        break;
      case 'TRIGGER':
        if( !empty( $this->trigger )) {
          $this->trigger = '';
          $return = TRUE;
        }
        break;
      case 'TZID':
        if( !empty( $this->tzid )) {
          $this->tzid = '';
          $return = TRUE;
        }
        break;
      case 'TZNAME':
        return $this->deletePropertyM( $this->tzname, $this->propdelix[$propName] );
        break;
      case 'TZOFFSETFROM':
        if( !empty( $this->tzoffsetfrom )) {
          $this->tzoffsetfrom = '';
          $return = TRUE;
        }
        break;
      case 'TZOFFSETTO':
        if( !empty( $this->tzoffsetto )) {
          $this->tzoffsetto = '';
          $return = TRUE;
        }
        break;
      case 'TZURL':
        if( !empty( $this->tzurl )) {
          $this->tzurl = '';
          $return = TRUE;
        }
        break;
      case 'UID':
        if( in_array( $this->objName, array( 'valarm', 'vtimezone', 'standard', 'daylight' )))
          return FALSE;
        if( !empty( $this->uid )) {
          $this->uid = '';
          $return = TRUE;
        }
        break;
      case 'URL':
        if( !empty( $this->url )) {
          $this->url = '';
          $return = TRUE;
        }
        break;
      default:
        $reduced = '';
        if( $propName != 'X-PROP' ) {
          if( !isset( $this->xprop[$propName] )) return FALSE;
          foreach( $this->xprop as $k => $a ) {
            if(( $k != $propName ) && !empty( $a ))
              $reduced[$k] = $a;
          }
        }
        else {
          if( count( $this->xprop ) <= $propix ) { unset( $this->propdelix[$propName] ); return FALSE; }
          $xpropno = 0;
          foreach( $this->xprop as $xpropkey => $xpropvalue ) {
            if( $propix != $xpropno )
              $reduced[$xpropkey] = $xpropvalue;
            $xpropno++;
          }
        }
        $this->xprop = $reduced;
        if( empty( $this->xprop )) {
          unset( $this->propdelix[$propName] );
          return FALSE;
        }
        return TRUE;
    }
    return $return;
  }
/*********************************************************************************/
/**
 * delete component property value, fixing components with multiple occurencies
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.8.8 - 2011-03-15
 * @param array $multiprop, reference to a component property
 * @param int   $propix, reference to removal counter
 * @return bool TRUE
 */
  function deletePropertyM( & $multiprop, & $propix ) {
    if( isset( $multiprop[$propix] ))
      unset( $multiprop[$propix] );
    if( empty( $multiprop )) {
      $multiprop = '';
      unset( $propix );
      return FALSE;
    }
    else
      return TRUE;
  }
/**
 * get component property value/params
 *
 * if property has multiply values, consequtive function calls are needed
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param string $propName, optional
 * @param int @propix, optional, if specific property is wanted in case of multiply occurences
 * @param bool $inclParam=FALSE
 * @param bool $specform=FALSE
 * @return mixed
 */
  function getProperty( $propName=FALSE, $propix=FALSE, $inclParam=FALSE, $specform=FALSE ) {
    if( 'GEOLOCATION' == strtoupper( $propName )) {
      $content = $this->getProperty( 'LOCATION' );
      $content = ( !empty( $content )) ? $content.' ' : '';
      if(( FALSE === ( $geo     = $this->getProperty( 'GEO' ))) || empty( $geo ))
        return FALSE;
      if( 0.0 < $geo['latitude'] )
        $sign   = '+';
      else
        $sign   = ( 0.0 > $geo['latitude'] ) ? '-' : '';
      $content .= $sign.sprintf( "%09.6f", abs( $geo['latitude'] ));   // sprintf && lpad && float && sign !"#¤%&/(
      $content  = rtrim( rtrim( $content, '0' ), '.' );
      if( 0.0 < $geo['longitude'] )
        $sign   = '+';
      else
       $sign   = ( 0.0 > $geo['longitude'] ) ? '-' : '';
      return $content.$sign.sprintf( '%8.6f', abs( $geo['longitude'] )).'/';   // sprintf && lpad && float && sign !"#¤%&/(
    }
    if( $this->_notExistProp( $propName )) return FALSE;
    $propName = ( $propName ) ? strtoupper( $propName ) : 'X-PROP';
    if( in_array( $propName, array( 'ATTACH',   'ATTENDEE', 'CATEGORIES', 'COMMENT',   'CONTACT', 'DESCRIPTION',    'EXDATE', 'EXRULE',
                                    'FREEBUSY', 'RDATE',    'RELATED-TO', 'RESOURCES', 'RRULE',   'REQUEST-STATUS', 'TZNAME', 'X-PROP'  ))) {
      if( !$propix )
        $propix = ( isset( $this->propix[$propName] )) ? $this->propix[$propName] + 2 : 1;
      $this->propix[$propName] = --$propix;
    }
    switch( $propName ) {
      case 'ACTION':
        if( isset( $this->action['value'] )) return ( $inclParam ) ? $this->action : $this->action['value'];
        break;
      case 'ATTACH':
        $ak = ( is_array( $this->attach )) ? array_keys( $this->attach ) : array();
        while( is_array( $this->attach ) && !isset( $this->attach[$propix] ) && ( 0 < count( $this->attach )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->attach[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->attach[$propix] : $this->attach[$propix]['value'];
        break;
      case 'ATTENDEE':
        $ak = ( is_array( $this->attendee )) ? array_keys( $this->attendee ) : array();
        while( is_array( $this->attendee ) && !isset( $this->attendee[$propix] ) && ( 0 < count( $this->attendee )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->attendee[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->attendee[$propix] : $this->attendee[$propix]['value'];
        break;
      case 'CATEGORIES':
        $ak = ( is_array( $this->categories )) ? array_keys( $this->categories ) : array();
        while( is_array( $this->categories ) && !isset( $this->categories[$propix] ) && ( 0 < count( $this->categories )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->categories[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->categories[$propix] : $this->categories[$propix]['value'];
        break;
      case 'CLASS':
        if( isset( $this->class['value'] )) return ( $inclParam ) ? $this->class : $this->class['value'];
        break;
      case 'COMMENT':
        $ak = ( is_array( $this->comment )) ? array_keys( $this->comment ) : array();
        while( is_array( $this->comment ) && !isset( $this->comment[$propix] ) && ( 0 < count( $this->comment )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->comment[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->comment[$propix] : $this->comment[$propix]['value'];
        break;
      case 'COMPLETED':
        if( isset( $this->completed['value'] )) return ( $inclParam ) ? $this->completed : $this->completed['value'];
        break;
      case 'CONTACT':
        $ak = ( is_array( $this->contact )) ? array_keys( $this->contact ) : array();
        while( is_array( $this->contact ) && !isset( $this->contact[$propix] ) && ( 0 < count( $this->contact )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->contact[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->contact[$propix] : $this->contact[$propix]['value'];
        break;
      case 'CREATED':
        if( isset( $this->created['value'] )) return ( $inclParam ) ? $this->created : $this->created['value'];
        break;
      case 'DESCRIPTION':
        $ak = ( is_array( $this->description )) ? array_keys( $this->description ) : array();
        while( is_array( $this->description ) && !isset( $this->description[$propix] ) && ( 0 < count( $this->description )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->description[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->description[$propix] : $this->description[$propix]['value'];
        break;
      case 'DTEND':
        if( isset( $this->dtend['value'] )) return ( $inclParam ) ? $this->dtend : $this->dtend['value'];
        break;
      case 'DTSTAMP':
        if( in_array( $this->objName, array( 'valarm', 'vtimezone', 'standard', 'daylight' )))
          return;
        if( !isset( $this->dtstamp['value'] ))
          $this->_makeDtstamp();
        return ( $inclParam ) ? $this->dtstamp : $this->dtstamp['value'];
        break;
      case 'DTSTART':
        if( isset( $this->dtstart['value'] )) return ( $inclParam ) ? $this->dtstart : $this->dtstart['value'];
        break;
      case 'DUE':
        if( isset( $this->due['value'] )) return ( $inclParam ) ? $this->due : $this->due['value'];
        break;
      case 'DURATION':
        if( ! isset( $this->duration['value'] )) return FALSE;
        $value = ( $specform && isset( $this->dtstart['value'] ) && isset( $this->duration['value'] )) ? iCalUtilityFunctions::_duration2date( $this->dtstart['value'], $this->duration['value'] ) : $this->duration['value'];
        return ( $inclParam ) ? array( 'value' => $value, 'params' =>  $this->duration['params'] ) : $value;
        break;
      case 'EXDATE':
        $ak = ( is_array( $this->exdate )) ? array_keys( $this->exdate ) : array();
        while( is_array( $this->exdate ) && !isset( $this->exdate[$propix] ) && ( 0 < count( $this->exdate )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->exdate[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->exdate[$propix] : $this->exdate[$propix]['value'];
        break;
      case 'EXRULE':
        $ak = ( is_array( $this->exrule )) ? array_keys( $this->exrule ) : array();
        while( is_array( $this->exrule ) && !isset( $this->exrule[$propix] ) && ( 0 < count( $this->exrule )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->exrule[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->exrule[$propix] : $this->exrule[$propix]['value'];
        break;
      case 'FREEBUSY':
        $ak = ( is_array( $this->freebusy )) ? array_keys( $this->freebusy ) : array();
        while( is_array( $this->freebusy ) && !isset( $this->freebusy[$propix] ) && ( 0 < count( $this->freebusy )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->freebusy[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->freebusy[$propix] : $this->freebusy[$propix]['value'];
        break;
      case 'GEO':
        if( isset( $this->geo['value'] )) return ( $inclParam ) ? $this->geo : $this->geo['value'];
        break;
      case 'LAST-MODIFIED':
        if( isset( $this->lastmodified['value'] )) return ( $inclParam ) ? $this->lastmodified : $this->lastmodified['value'];
        break;
      case 'LOCATION':
        if( isset( $this->location['value'] )) return ( $inclParam ) ? $this->location : $this->location['value'];
        break;
      case 'ORGANIZER':
        if( isset( $this->organizer['value'] )) return ( $inclParam ) ? $this->organizer : $this->organizer['value'];
        break;
      case 'PERCENT-COMPLETE':
        if( isset( $this->percentcomplete['value'] )) return ( $inclParam ) ? $this->percentcomplete : $this->percentcomplete['value'];
        break;
      case 'PRIORITY':
        if( isset( $this->priority['value'] )) return ( $inclParam ) ? $this->priority : $this->priority['value'];
        break;
      case 'RDATE':
        $ak = ( is_array( $this->rdate )) ? array_keys( $this->rdate ) : array();
        while( is_array( $this->rdate ) && !isset( $this->rdate[$propix] ) && ( 0 < count( $this->rdate )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->rdate[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->rdate[$propix] : $this->rdate[$propix]['value'];
        break;
      case 'RECURRENCE-ID':
        if( isset( $this->recurrenceid['value'] )) return ( $inclParam ) ? $this->recurrenceid : $this->recurrenceid['value'];
        break;
      case 'RELATED-TO':
        $ak = ( is_array( $this->relatedto )) ? array_keys( $this->relatedto ) : array();
        while( is_array( $this->relatedto ) && !isset( $this->relatedto[$propix] ) && ( 0 < count( $this->relatedto )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->relatedto[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->relatedto[$propix] : $this->relatedto[$propix]['value'];
        break;
      case 'REPEAT':
        if( isset( $this->repeat['value'] )) return ( $inclParam ) ? $this->repeat : $this->repeat['value'];
        break;
      case 'REQUEST-STATUS':
        $ak = ( is_array( $this->requeststatus )) ? array_keys( $this->requeststatus ) : array();
        while( is_array( $this->requeststatus ) && !isset( $this->requeststatus[$propix] ) && ( 0 < count( $this->requeststatus )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->requeststatus[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->requeststatus[$propix] : $this->requeststatus[$propix]['value'];
        break;
      case 'RESOURCES':
        $ak = ( is_array( $this->resources )) ? array_keys( $this->resources ) : array();
        while( is_array( $this->resources ) && !isset( $this->resources[$propix] ) && ( 0 < count( $this->resources )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->resources[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->resources[$propix] : $this->resources[$propix]['value'];
        break;
      case 'RRULE':
        $ak = ( is_array( $this->rrule )) ? array_keys( $this->rrule ) : array();
        while( is_array( $this->rrule ) && !isset( $this->rrule[$propix] ) && ( 0 < count( $this->rrule )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->rrule[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->rrule[$propix] : $this->rrule[$propix]['value'];
        break;
      case 'SEQUENCE':
        if( isset( $this->sequence['value'] )) return ( $inclParam ) ? $this->sequence : $this->sequence['value'];
        break;
      case 'STATUS':
        if( isset( $this->status['value'] )) return ( $inclParam ) ? $this->status : $this->status['value'];
        break;
      case 'SUMMARY':
        if( isset( $this->summary['value'] )) return ( $inclParam ) ? $this->summary : $this->summary['value'];
        break;
      case 'TRANSP':
        if( isset( $this->transp['value'] )) return ( $inclParam ) ? $this->transp : $this->transp['value'];
        break;
      case 'TRIGGER':
        if( isset( $this->trigger['value'] )) return ( $inclParam ) ? $this->trigger : $this->trigger['value'];
        break;
      case 'TZID':
        if( isset( $this->tzid['value'] )) return ( $inclParam ) ? $this->tzid : $this->tzid['value'];
        break;
      case 'TZNAME':
        $ak = ( is_array( $this->tzname )) ? array_keys( $this->tzname ) : array();
        while( is_array( $this->tzname ) && !isset( $this->tzname[$propix] ) && ( 0 < count( $this->tzname )) && ( $propix < end( $ak )))
          $propix++;
        $this->propix[$propName] = $propix;
        if( !isset( $this->tzname[$propix] )) { unset( $this->propix[$propName] ); return FALSE; }
        return ( $inclParam ) ? $this->tzname[$propix] : $this->tzname[$propix]['value'];
        break;
      case 'TZOFFSETFROM':
        if( isset( $this->tzoffsetfrom['value'] )) return ( $inclParam ) ? $this->tzoffsetfrom : $this->tzoffsetfrom['value'];
        break;
      case 'TZOFFSETTO':
        if( isset( $this->tzoffsetto['value'] )) return ( $inclParam ) ? $this->tzoffsetto : $this->tzoffsetto['value'];
        break;
      case 'TZURL':
        if( isset( $this->tzurl['value'] )) return ( $inclParam ) ? $this->tzurl : $this->tzurl['value'];
        break;
      case 'UID':
        if( in_array( $this->objName, array( 'valarm', 'vtimezone', 'standard', 'daylight' )))
          return FALSE;
        if( empty( $this->uid['value'] ))
          $this->_makeuid();
        return ( $inclParam ) ? $this->uid : $this->uid['value'];
        break;
      case 'URL':
        if( isset( $this->url['value'] )) return ( $inclParam ) ? $this->url : $this->url['value'];
        break;
      default:
        if( $propName != 'X-PROP' ) {
          if( !isset( $this->xprop[$propName] )) return FALSE;
          return ( $inclParam ) ? array( $propName, $this->xprop[$propName] )
                                : array( $propName, $this->xprop[$propName]['value'] );
        }
        else {
          if( empty( $this->xprop )) return FALSE;
          $xpropno = 0;
          foreach( $this->xprop as $xpropkey => $xpropvalue ) {
            if( $propix == $xpropno )
              return ( $inclParam ) ? array( $xpropkey, $this->xprop[$xpropkey] )
                                    : array( $xpropkey, $this->xprop[$xpropkey]['value'] );
            else
              $xpropno++;
          }
          return FALSE; // not found ??
        }
    }
    return FALSE;
  }
/**
 * returns calendar property unique values for 'ATTENDEE', 'CATEGORIES', 'CONTACT', 'RELATED-TO' or 'RESOURCES' and for each, number of occurrence
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.13.4 - 2012-08-07
 * @param string $propName
 * @param array  $output, incremented result array
 */
  function _getProperties( $propName, & $output ) {
    if( empty( $output ))
      $output = array();
    if( !in_array( strtoupper( $propName ), array( 'ATTENDEE', 'CATEGORIES', 'CONTACT', 'RELATED-TO', 'RESOURCES' )))
      return $output;
    while( FALSE !== ( $content = $this->getProperty( $propName ))) {
      if( empty( $content ))
        continue;
      if( is_array( $content )) {
        foreach( $content as $part ) {
          if( FALSE !== strpos( $part, ',' )) {
            $part = explode( ',', $part );
            foreach( $part as $thePart ) {
              $thePart = trim( $thePart );
              if( !empty( $thePart )) {
                if( !isset( $output[$thePart] ))
                  $output[$thePart] = 1;
                else
                  $output[$thePart] += 1;
              }
            }
          }
          else {
            $part = trim( $part );
            if( !isset( $output[$part] ))
              $output[$part] = 1;
            else
              $output[$part] += 1;
          }
        }
      } // end if( is_array( $content ))
      elseif( FALSE !== strpos( $content, ',' )) {
        $content = explode( ',', $content );
        foreach( $content as $thePart ) {
          $thePart = trim( $thePart );
          if( !empty( $thePart )) {
            if( !isset( $output[$thePart] ))
              $output[$thePart] = 1;
            else
              $output[$thePart] += 1;
          }
        }
      } // end elseif( FALSE !== strpos( $content, ',' ))
      else {
        $content = trim( $content );
        if( !empty( $content )) {
          if( !isset( $output[$content] ))
            $output[$content] = 1;
          else
            $output[$content] += 1;
        }
      }
    }
    ksort( $output );
  }
/**
 * general component property setting
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.5.1 - 2008-11-05
 * @param mixed $args variable number of function arguments,
 *                    first argument is ALWAYS component name,
 *                    second ALWAYS component value!
 * @return void
 */
  function setProperty() {
    $numargs    = func_num_args();
    if( 1 > $numargs ) return FALSE;
    $arglist    = func_get_args();
    if( $this->_notExistProp( $arglist[0] )) return FALSE;
    if( !$this->getConfig( 'allowEmpty' ) && ( !isset( $arglist[1] ) || empty( $arglist[1] )))
      return FALSE;
    $arglist[0] = strtoupper( $arglist[0] );
    for( $argix=$numargs; $argix < 12; $argix++ ) {
      if( !isset( $arglist[$argix] ))
        $arglist[$argix] = null;
    }
    switch( $arglist[0] ) {
      case 'ACTION':
        return $this->setAction(          $arglist[1], $arglist[2] );
      case 'ATTACH':
        return $this->setAttach(          $arglist[1], $arglist[2], $arglist[3] );
      case 'ATTENDEE':
        return $this->setAttendee(        $arglist[1], $arglist[2], $arglist[3] );
      case 'CATEGORIES':
        return $this->setCategories(      $arglist[1], $arglist[2], $arglist[3] );
      case 'CLASS':
        return $this->setClass(           $arglist[1], $arglist[2] );
      case 'COMMENT':
        return $this->setComment(         $arglist[1], $arglist[2], $arglist[3] );
      case 'COMPLETED':
        return $this->setCompleted(       $arglist[1], $arglist[2], $arglist[3], $arglist[4], $arglist[5], $arglist[6], $arglist[7] );
      case 'CONTACT':
        return $this->setContact(         $arglist[1], $arglist[2], $arglist[3] );
      case 'CREATED':
        return $this->setCreated(         $arglist[1], $arglist[2], $arglist[3], $arglist[4], $arglist[5], $arglist[6], $arglist[7] );
      case 'DESCRIPTION':
        return $this->setDescription(     $arglist[1], $arglist[2], $arglist[3] );
      case 'DTEND':
        return $this->setDtend(           $arglist[1], $arglist[2], $arglist[3], $arglist[4], $arglist[5], $arglist[6], $arglist[7], $arglist[8] );
      case 'DTSTAMP':
        return $this->setDtstamp(         $arglist[1], $arglist[2], $arglist[3], $arglist[4], $arglist[5], $arglist[6], $arglist[7] );
      case 'DTSTART':
        return $this->setDtstart(         $arglist[1], $arglist[2], $arglist[3], $arglist[4], $arglist[5], $arglist[6], $arglist[7], $arglist[8] );
      case 'DUE':
        return $this->setDue(             $arglist[1], $arglist[2], $arglist[3], $arglist[4], $arglist[5], $arglist[6], $arglist[7], $arglist[8] );
      case 'DURATION':
        return $this->setDuration(        $arglist[1], $arglist[2], $arglist[3], $arglist[4], $arglist[5], $arglist[6] );
      case 'EXDATE':
        return $this->setExdate(          $arglist[1], $arglist[2], $arglist[3] );
      case 'EXRULE':
        return $this->setExrule(          $arglist[1], $arglist[2], $arglist[3] );
      case 'FREEBUSY':
        return $this->setFreebusy(        $arglist[1], $arglist[2], $arglist[3], $arglist[4] );
      case 'GEO':
        return $this->setGeo(             $arglist[1], $arglist[2], $arglist[3] );
      case 'LAST-MODIFIED':
        return $this->setLastModified(    $arglist[1], $arglist[2], $arglist[3], $arglist[4], $arglist[5], $arglist[6], $arglist[7] );
      case 'LOCATION':
        return $this->setLocation(        $arglist[1], $arglist[2] );
      case 'ORGANIZER':
        return $this->setOrganizer(       $arglist[1], $arglist[2] );
      case 'PERCENT-COMPLETE':
        return $this->setPercentComplete( $arglist[1], $arglist[2] );
      case 'PRIORITY':
        return $this->setPriority(        $arglist[1], $arglist[2] );
      case 'RDATE':
        return $this->setRdate(           $arglist[1], $arglist[2], $arglist[3] );
      case 'RECURRENCE-ID':
       return $this->setRecurrenceid(     $arglist[1], $arglist[2], $arglist[3], $arglist[4], $arglist[5], $arglist[6], $arglist[7], $arglist[8] );
      case 'RELATED-TO':
        return $this->setRelatedTo(       $arglist[1], $arglist[2], $arglist[3] );
      case 'REPEAT':
        return $this->setRepeat(          $arglist[1], $arglist[2] );
      case 'REQUEST-STATUS':
        return $this->setRequestStatus(   $arglist[1], $arglist[2], $arglist[3], $arglist[4], $arglist[5] );
      case 'RESOURCES':
        return $this->setResources(       $arglist[1], $arglist[2], $arglist[3] );
      case 'RRULE':
        return $this->setRrule(           $arglist[1], $arglist[2], $arglist[3] );
      case 'SEQUENCE':
        return $this->setSequence(        $arglist[1], $arglist[2] );
      case 'STATUS':
        return $this->setStatus(          $arglist[1], $arglist[2] );
      case 'SUMMARY':
        return $this->setSummary(         $arglist[1], $arglist[2] );
      case 'TRANSP':
        return $this->setTransp(          $arglist[1], $arglist[2] );
      case 'TRIGGER':
        return $this->setTrigger(         $arglist[1], $arglist[2], $arglist[3], $arglist[4], $arglist[5], $arglist[6], $arglist[7], $arglist[8], $arglist[9], $arglist[10], $arglist[11] );
      case 'TZID':
        return $this->setTzid(            $arglist[1], $arglist[2] );
      case 'TZNAME':
        return $this->setTzname(          $arglist[1], $arglist[2], $arglist[3] );
      case 'TZOFFSETFROM':
        return $this->setTzoffsetfrom(    $arglist[1], $arglist[2] );
      case 'TZOFFSETTO':
        return $this->setTzoffsetto(      $arglist[1], $arglist[2] );
      case 'TZURL':
        return $this->setTzurl(           $arglist[1], $arglist[2] );
      case 'UID':
        return $this->setUid(             $arglist[1], $arglist[2] );
      case 'URL':
        return $this->setUrl(             $arglist[1], $arglist[2] );
      default:
        return $this->setXprop(           $arglist[0], $arglist[1], $arglist[2] );
    }
    return FALSE;
  }
/*********************************************************************************/
/**
 * parse component unparsed data into properties
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.26 - 2013-07-02
 * @param mixed $unparsedtext, optional, strict rfc2445 formatted, single property string or array of strings
 * @return bool FALSE if error occurs during parsing
 *
 */
  function parse( $unparsedtext=null ) {
    $nl = $this->getConfig( 'nl' );
    if( !empty( $unparsedtext )) {
      if( is_array( $unparsedtext ))
        $unparsedtext = implode( '\n'.$nl, $unparsedtext );
      $unparsedtext = explode( $nl, iCalUtilityFunctions::convEolChar( $unparsedtext, $nl ));
    }
    elseif( !isset( $this->unparsed ))
      $unparsedtext = array();
    else
      $unparsedtext = $this->unparsed;
            /* skip leading (empty/invalid) lines */
    foreach( $unparsedtext as $lix => $line ) {
      $tst = trim( $line );
      if(( '\n' == $tst ) || empty( $tst ))
        unset( $unparsedtext[$lix] );
      else
        break;
    }
    $this->unparsed = array();
    $comp           = & $this;
    $config         = $this->getConfig();
    $compsync = $subsync = 0;
    foreach ( $unparsedtext as $lix => $line ) {
      if( 'END:VALARM'         == strtoupper( substr( $line, 0, 10 ))) {
        if( 1 != $subsync ) return FALSE;
        $this->components[]     = $comp->copy();
        $subsync--;
      }
      elseif( 'END:DAYLIGHT'   == strtoupper( substr( $line, 0, 12 ))) {
        if( 1 != $subsync ) return FALSE;
        $this->components[]     = $comp->copy();
        $subsync--;
      }
      elseif( 'END:STANDARD'   == strtoupper( substr( $line, 0, 12 ))) {
        if( 1 != $subsync ) return FALSE;
        array_unshift( $this->components, $comp->copy());
        $subsync--;
      }
      elseif( 'END:'           == strtoupper( substr( $line, 0, 4 ))) { // end:<component>
        if( 1 != $compsync ) return FALSE;
        if( 0 < $subsync )
          $this->components[]   = $comp->copy();
        $compsync--;
        break;                       /* skip trailing empty lines */
      }
      elseif( 'BEGIN:VALARM'   == strtoupper( substr( $line, 0, 12 ))) {
        $comp = new valarm( $config);
        $subsync++;
      }
      elseif( 'BEGIN:STANDARD' == strtoupper( substr( $line, 0, 14 ))) {
        $comp = new vtimezone( 'standard', $config );
        $subsync++;
      }
      elseif( 'BEGIN:DAYLIGHT' == strtoupper( substr( $line, 0, 14 ))) {
        $comp = new vtimezone( 'daylight', $config );
        $subsync++;
      }
      elseif( 'BEGIN:'         == strtoupper( substr( $line, 0, 6 )))  // begin:<component>
        $compsync++;
      else
        $comp->unparsed[]       = $line;
    }
    if( 0 < $subsync )
      $this->components[]   = $comp->copy();
    unset( $config );
            /* concatenate property values spread over several lines */
    $lastix    = -1;
    $propnames = array( 'action', 'attach', 'attendee', 'categories', 'comment', 'completed'
                      , 'contact', 'class', 'created', 'description', 'dtend', 'dtstart'
                      , 'dtstamp', 'due', 'duration', 'exdate', 'exrule', 'freebusy', 'geo'
                      , 'last-modified', 'location', 'organizer', 'percent-complete'
                      , 'priority', 'rdate', 'recurrence-id', 'related-to', 'repeat'
                      , 'request-status', 'resources', 'rrule', 'sequence', 'status'
                      , 'summary', 'transp', 'trigger', 'tzid', 'tzname', 'tzoffsetfrom'
                      , 'tzoffsetto', 'tzurl', 'uid', 'url', 'x-' );
    $proprows  = array();
    for( $i = 0; $i < count( $this->unparsed ); $i++ ) { // concatenate lines
      $line = rtrim( $this->unparsed[$i], $nl );
      while( isset( $this->unparsed[$i+1] ) && !empty( $this->unparsed[$i+1] ) && ( ' ' == $this->unparsed[$i+1]{0} ))
        $line .= rtrim( substr( $this->unparsed[++$i], 1 ), $nl );
      $proprows[] = $line;
    }
            /* parse each property 'line' */
    $paramMStz   = array( 'utc-', 'utc+', 'gmt-', 'gmt+' );
    $paramProto3 = array( 'fax:', 'cid:', 'sms:', 'tel:', 'urn:' );
    $paramProto4 = array( 'crid:', 'news:', 'pres:' );
    foreach( $proprows as $line ) {
      if( '\n' == substr( $line, -2 ))
        $line = substr( $line, 0, -2 );
            /* get propname */
      $propname = null;
      $cix = 0;
      while( isset( $line[$cix] )) {
        if( in_array( $line[$cix], array( ':', ';' )))
          break;
        else
          $propname .= $line[$cix];
        $cix++;
      }
      if(( 'x-' == substr( $propname, 0, 2 )) || ( 'X-' == substr( $propname, 0, 2 ))) {
        $propname2 = $propname;
        $propname  = 'X-';
      }
      if( !in_array( strtolower( $propname ), $propnames )) // skip non standard property names
        continue;
            /* rest of the line is opt.params and value */
      $line = substr( $line, $cix );
            /* separate attributes from value */
      $attr         = array();
      $attrix       = -1;
      $clen         = strlen( $line );
      $WithinQuotes = FALSE;
      $cix          = 0;
      while( FALSE !== substr( $line, $cix, 1 )) {
        if(                       (  ':' == $line[$cix] )                         &&
                                  ( substr( $line,$cix,     3 )  != '://' )       &&
           ( !in_array( strtolower( substr( $line,$cix - 6, 4 )), $paramMStz ))   &&
           ( !in_array( strtolower( substr( $line,$cix - 3, 4 )), $paramProto3 )) &&
           ( !in_array( strtolower( substr( $line,$cix - 4, 5 )), $paramProto4 )) &&
                      ( strtolower( substr( $line,$cix - 6, 7 )) != 'mailto:' )   &&
             !$WithinQuotes ) {
          $attrEnd = TRUE;
          if(( $cix < ( $clen - 4 )) &&
               ctype_digit( substr( $line, $cix+1, 4 ))) { // an URI with a (4pos) portnr??
            for( $c2ix = $cix; 3 < $c2ix; $c2ix-- ) {
              if( '://' == substr( $line, $c2ix - 2, 3 )) {
                $attrEnd = FALSE;
                break; // an URI with a portnr!!
              }
            }
          }
          if( $attrEnd) {
            $line = substr( $line, ( $cix + 1 ));
            break;
          }
          $cix++;
        }
        if( '"' == $line[$cix] )
          $WithinQuotes = ( FALSE === $WithinQuotes ) ? TRUE : FALSE;
        if( ';' == $line[$cix] )
          $attr[++$attrix] = null;
        else
          $attr[$attrix] .= $line[$cix];
        $cix++;
      }
            /* make attributes in array format */
      $propattr = array();
      foreach( $attr as $attribute ) {
        $attrsplit = explode( '=', $attribute, 2 );
        if( 1 < count( $attrsplit ))
          $propattr[$attrsplit[0]] = $attrsplit[1];
        else
          $propattr[] = $attribute;
      }
            /* call setProperty( $propname.. . */
      switch( strtoupper( $propname )) {
        case 'ATTENDEE':
          foreach( $propattr as $pix => $attr ) {
            if( !in_array( strtoupper( $pix ), array( 'MEMBER', 'DELEGATED-TO', 'DELEGATED-FROM' )))
              continue;
            $attr2 = explode( ',', $attr );
              if( 1 < count( $attr2 ))
                $propattr[$pix] = $attr2;
          }
          $this->setProperty( $propname, $line, $propattr );
          break;
        case 'CATEGORIES':
        case 'RESOURCES':
          if( FALSE !== strpos( $line, ',' )) {
            $content  = array( 0 => '' );
            $cix = $lix = 0;
            while( FALSE !== substr( $line, $lix, 1 )) {
              if(( ',' == $line[$lix] ) && ( "\\" != $line[( $lix - 1 )])) {
                $cix++;
                $content[$cix] = '';
              }
              else
                $content[$cix] .= $line[$lix];
              $lix++;
            }
            if( 1 < count( $content )) {
              $content = array_values( $content );
              foreach( $content as $cix => $contentPart )
                $content[$cix] = iCalUtilityFunctions::_strunrep( $contentPart );
              $this->setProperty( $propname, $content, $propattr );
              break;
            }
            else
              $line = reset( $content );
          }
        case 'COMMENT':
        case 'CONTACT':
        case 'DESCRIPTION':
        case 'LOCATION':
        case 'SUMMARY':
          if( empty( $line ))
            $propattr = null;
          $this->setProperty( $propname, iCalUtilityFunctions::_strunrep( $line ), $propattr );
          break;
        case 'REQUEST-STATUS':
          $values    = explode( ';', $line, 3 );
          $values[1] = ( !isset( $values[1] )) ? null : iCalUtilityFunctions::_strunrep( $values[1] );
          $values[2] = ( !isset( $values[2] )) ? null : iCalUtilityFunctions::_strunrep( $values[2] );
          $this->setProperty( $propname
                            , $values[0]  // statcode
                            , $values[1]  // statdesc
                            , $values[2]  // extdata
                            , $propattr );
          break;
        case 'FREEBUSY':
          $fbtype = ( isset( $propattr['FBTYPE'] )) ? $propattr['FBTYPE'] : ''; // force setting default, if missing
          unset( $propattr['FBTYPE'] );
          $values = explode( ',', $line );
          foreach( $values as $vix => $value ) {
            $value2 = explode( '/', $value );
            if( 1 < count( $value2 ))
              $values[$vix] = $value2;
          }
          $this->setProperty( $propname, $fbtype, $values, $propattr );
          break;
        case 'GEO':
          $value = explode( ';', $line, 2 );
          if( 2 > count( $value ))
            $value[1] = null;
          $this->setProperty( $propname, $value[0], $value[1], $propattr );
          break;
        case 'EXDATE':
          $values = ( !empty( $line )) ? explode( ',', $line ) : null;
          $this->setProperty( $propname, $values, $propattr );
          break;
        case 'RDATE':
          if( empty( $line )) {
            $this->setProperty( $propname, $line, $propattr );
            break;
          }
          $values = explode( ',', $line );
          foreach( $values as $vix => $value ) {
            $value2 = explode( '/', $value );
            if( 1 < count( $value2 ))
              $values[$vix] = $value2;
          }
          $this->setProperty( $propname, $values, $propattr );
          break;
        case 'EXRULE':
        case 'RRULE':
          $values = explode( ';', $line );
          $recur = array();
          foreach( $values as $value2 ) {
            if( empty( $value2 ))
              continue; // ;-char in ending position ???
            $value3 = explode( '=', $value2, 2 );
            $rulelabel = strtoupper( $value3[0] );
            switch( $rulelabel ) {
              case 'BYDAY': {
                $value4 = explode( ',', $value3[1] );
                if( 1 < count( $value4 )) {
                  foreach( $value4 as $v5ix => $value5 ) {
                    $value6 = array();
                    $dayno = $dayname = null;
                    $value5 = trim( (string) $value5 );
                    if(( ctype_alpha( substr( $value5, -1 ))) &&
                       ( ctype_alpha( substr( $value5, -2, 1 )))) {
                      $dayname = substr( $value5, -2, 2 );
                      if( 2 < strlen( $value5 ))
                        $dayno = substr( $value5, 0, ( strlen( $value5 ) - 2 ));
                    }
                    if( $dayno )
                      $value6[] = $dayno;
                    if( $dayname )
                      $value6['DAY'] = $dayname;
                    $value4[$v5ix] = $value6;
                  }
                }
                else {
                  $value4 = array();
                  $dayno  = $dayname = null;
                  $value5 = trim( (string) $value3[1] );
                  if(( ctype_alpha( substr( $value5, -1 ))) &&
                     ( ctype_alpha( substr( $value5, -2, 1 )))) {
                      $dayname = substr( $value5, -2, 2 );
                    if( 2 < strlen( $value5 ))
                      $dayno = substr( $value5, 0, ( strlen( $value5 ) - 2 ));
                  }
                  if( $dayno )
                    $value4[] = $dayno;
                  if( $dayname )
                    $value4['DAY'] = $dayname;
                }
                $recur[$rulelabel] = $value4;
                break;
              }
              default: {
                $value4 = explode( ',', $value3[1] );
                if( 1 < count( $value4 ))
                  $value3[1] = $value4;
                $recur[$rulelabel] = $value3[1];
                break;
              }
            } // end - switch $rulelabel
          } // end - foreach( $values.. .
          $this->setProperty( $propname, $recur, $propattr );
          break;
        case 'X-':
          $propname = ( isset( $propname2 )) ? $propname2 : $propname;
          unset( $propname2 );
        case 'ACTION':
        case 'CLASSIFICATION':
        case 'STATUS':
        case 'TRANSP':
        case 'UID':
        case 'TZID':
        case 'RELATED-TO':
        case 'TZNAME':
          $line = iCalUtilityFunctions::_strunrep( $line );
        default:
          $this->setProperty( $propname, $line, $propattr );
          break;
      } // end  switch( $propname.. .
    } // end - foreach( $proprows.. .
    unset( $unparsedtext, $this->unparsed, $proprows );
    if( isset( $this->components ) && is_array( $this->components ) && ( 0 < count( $this->components ))) {
      $ckeys = array_keys( $this->components );
      foreach( $ckeys as $ckey ) {
        if( !empty( $this->components[$ckey] ) && !empty( $this->components[$ckey]->unparsed )) {
          $this->components[$ckey]->parse();
        }
      }
    }
    return TRUE;
  }
/*********************************************************************************/
/*********************************************************************************/
/**
 * return a copy of this component
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.15.4 - 2012-10-18
 * @return object
 */
  function copy() {
    return unserialize( serialize( $this ));
 }
/*********************************************************************************/
/*********************************************************************************/
/**
 * delete calendar subcomponent from component container
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.8.8 - 2011-03-15
 * @param mixed $arg1 ordno / component type / component uid
 * @param mixed $arg2 optional, ordno if arg1 = component type
 * @return void
 */
  function deleteComponent( $arg1, $arg2=FALSE  ) {
    if( !isset( $this->components )) return FALSE;
    $argType = $index = null;
    if ( ctype_digit( (string) $arg1 )) {
      $argType = 'INDEX';
      $index   = (int) $arg1 - 1;
    }
    elseif(( strlen( $arg1 ) <= strlen( 'vfreebusy' )) && ( FALSE === strpos( $arg1, '@' ))) {
      $argType = strtolower( $arg1 );
      $index   = ( !empty( $arg2 ) && ctype_digit( (string) $arg2 )) ? (( int ) $arg2 - 1 ) : 0;
    }
    $cix2dC = 0;
    foreach ( $this->components as $cix => $component) {
      if( empty( $component )) continue;
      if(( 'INDEX' == $argType ) && ( $index == $cix )) {
        unset( $this->components[$cix] );
        return TRUE;
      }
      elseif( $argType == $component->objName ) {
        if( $index == $cix2dC ) {
          unset( $this->components[$cix] );
          return TRUE;
        }
        $cix2dC++;
      }
      elseif( !$argType && ($arg1 == $component->getProperty( 'uid' ))) {
        unset( $this->components[$cix] );
        return TRUE;
      }
    }
    return FALSE;
  }
/**
 * get calendar component subcomponent from component container
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.8.8 - 2011-03-15
 * @param mixed $arg1 optional, ordno/component type/ component uid
 * @param mixed $arg2 optional, ordno if arg1 = component type
 * @return object
 */
  function getComponent ( $arg1=FALSE, $arg2=FALSE ) {
    if( !isset( $this->components )) return FALSE;
    $index = $argType = null;
    if ( !$arg1 ) {
      $argType = 'INDEX';
      $index   = $this->compix['INDEX'] =
        ( isset( $this->compix['INDEX'] )) ? $this->compix['INDEX'] + 1 : 1;
    }
    elseif ( ctype_digit( (string) $arg1 )) {
      $argType = 'INDEX';
      $index   = (int) $arg1;
      unset( $this->compix );
    }
    elseif(( strlen( $arg1 ) <= strlen( 'vfreebusy' )) && ( FALSE === strpos( $arg1, '@' ))) {
      unset( $this->compix['INDEX'] );
      $argType = strtolower( $arg1 );
      if( !$arg2 )
        $index = $this->compix[$argType] = ( isset( $this->compix[$argType] )) ? $this->compix[$argType] + 1 : 1;
      else
        $index = (int) $arg2;
    }
    $index  -= 1;
    $ckeys = array_keys( $this->components );
    if( !empty( $index) && ( $index > end( $ckeys )))
      return FALSE;
    $cix2gC = 0;
    foreach( $this->components as $cix => $component ) {
      if( empty( $component )) continue;
      if(( 'INDEX' == $argType ) && ( $index == $cix ))
        return $component->copy();
      elseif( $argType == $component->objName ) {
         if( $index == $cix2gC )
           return $component->copy();
         $cix2gC++;
      }
      elseif( !$argType && ( $arg1 == $component->getProperty( 'uid' )))
        return $component->copy();
    }
            /* not found.. . */
    unset( $this->compix );
    return false;
  }
/**
 * add calendar component as subcomponent to container for subcomponents
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 1.x.x - 2007-04-24
 * @param object $component calendar component
 * @return void
 */
  function addSubComponent ( $component ) {
    $this->setComponent( $component );
  }
/**
 * create new calendar component subcomponent, already included within component
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.6.33 - 2011-01-03
 * @param string $compType subcomponent type
 * @return object (reference)
 */
  function & newComponent( $compType ) {
    $config = $this->getConfig();
    $keys   = array_keys( $this->components );
    $ix     = end( $keys) + 1;
    switch( strtoupper( $compType )) {
      case 'ALARM':
      case 'VALARM':
        $this->components[$ix] = new valarm( $config );
        break;
      case 'STANDARD':
        array_unshift( $this->components, new vtimezone( 'STANDARD', $config ));
        $ix = 0;
        break;
      case 'DAYLIGHT':
        $this->components[$ix] = new vtimezone( 'DAYLIGHT', $config );
        break;
      default:
        return FALSE;
    }
    return $this->components[$ix];
  }
/**
 * add calendar component as subcomponent to container for subcomponents
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.8.8 - 2011-03-15
 * @param object $component calendar component
 * @param mixed $arg1 optional, ordno/component type/ component uid
 * @param mixed $arg2 optional, ordno if arg1 = component type
 * @return bool
 */
  function setComponent( $component, $arg1=FALSE, $arg2=FALSE  ) {
    if( !isset( $this->components )) return FALSE;
    $component->setConfig( $this->getConfig(), FALSE, TRUE );
    if( !in_array( $component->objName, array( 'valarm', 'vtimezone', 'standard', 'daylight' ))) {
            /* make sure dtstamp and uid is set */
      $dummy = $component->getProperty( 'dtstamp' );
      $dummy = $component->getProperty( 'uid' );
    }
    if( !$arg1 ) { // plain insert, last in chain
      $this->components[] = $component->copy();
      return TRUE;
    }
    $argType = $index = null;
    if ( ctype_digit( (string) $arg1 )) { // index insert/replace
      $argType = 'INDEX';
      $index   = (int) $arg1 - 1;
    }
    elseif( in_array( strtolower( $arg1 ), array( 'vevent', 'vtodo', 'vjournal', 'vfreebusy', 'valarm', 'vtimezone' ))) {
      $argType = strtolower( $arg1 );
      $index = ( ctype_digit( (string) $arg2 )) ? ((int) $arg2) - 1 : 0;
    }
    // else if arg1 is set, arg1 must be an UID
    $cix2sC = 0;
    foreach ( $this->components as $cix => $component2 ) {
      if( empty( $component2 )) continue;
      if(( 'INDEX' == $argType ) && ( $index == $cix )) { // index insert/replace
        $this->components[$cix] = $component->copy();
        return TRUE;
      }
      elseif( $argType == $component2->objName ) { // component Type index insert/replace
        if( $index == $cix2sC ) {
          $this->components[$cix] = $component->copy();
          return TRUE;
        }
        $cix2sC++;
      }
      elseif( !$argType && ( $arg1 == $component2->getProperty( 'uid' ))) { // UID insert/replace
        $this->components[$cix] = $component->copy();
        return TRUE;
      }
    }
            /* arg1=index and not found.. . insert at index .. .*/
    if( 'INDEX' == $argType ) {
      $this->components[$index] = $component->copy();
      ksort( $this->components, SORT_NUMERIC );
    }
    else    /* not found.. . insert last in chain anyway .. .*/
    $this->components[] = $component->copy();
    return TRUE;
  }
/**
 * creates formatted output for subcomponents
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.11.20 - 2012-02-06
 * @param array $xcaldecl
 * @return string
 */
  function createSubComponent() {
    $output = null;
    if( 'vtimezone' == $this->objName ) { // sort subComponents, first standard, then daylight, in dtstart order
      $stdarr = $dlarr = array();
      foreach( $this->components as $component ) {
        if( empty( $component ))
          continue;
        $dt  = $component->getProperty( 'dtstart' );
        $key = sprintf( '%04d%02d%02d%02d%02d%02d000', $dt['year'], $dt['month'], $dt['day'], $dt['hour'], $dt['min'], $dt['sec'] );
        if( 'standard' == $component->objName ) {
          while( isset( $stdarr[$key] ))
            $key += 1;
          $stdarr[$key] = $component->copy();
        }
        elseif( 'daylight' == $component->objName ) {
          while( isset( $dlarr[$key] ))
            $key += 1;
          $dlarr[$key] = $component->copy();
        }
      } // end foreach( $this->components as $component )
      $this->components = array();
      ksort( $stdarr, SORT_NUMERIC );
      foreach( $stdarr as $std )
        $this->components[] = $std->copy();
      unset( $stdarr );
      ksort( $dlarr,  SORT_NUMERIC );
      foreach( $dlarr as $dl )
        $this->components[] = $dl->copy();
      unset( $dlarr );
    } // end if( 'vtimezone' == $this->objName )
    foreach( $this->components as $component ) {
      $component->setConfig( $this->getConfig(), FALSE, TRUE );
      $output .= $component->createComponent( $this->xcaldecl );
    }
    return $output;
  }
}
/*********************************************************************************/
/*********************************************************************************/
/**
 * class for calendar component VEVENT
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.5.1 - 2008-10-12
 */
class vevent extends calendarComponent {
  var $attach;
  var $attendee;
  var $categories;
  var $comment;
  var $contact;
  var $class;
  var $created;
  var $description;
  var $dtend;
  var $dtstart;
  var $duration;
  var $exdate;
  var $exrule;
  var $geo;
  var $lastmodified;
  var $location;
  var $organizer;
  var $priority;
  var $rdate;
  var $recurrenceid;
  var $relatedto;
  var $requeststatus;
  var $resources;
  var $rrule;
  var $sequence;
  var $status;
  var $summary;
  var $transp;
  var $url;
  var $xprop;
            //  component subcomponents container
  var $components;
/**
 * constructor for calendar component VEVENT object
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.8.2 - 2011-05-01
 * @param  array $config
 * @return void
 */
  function vevent( $config = array()) {
    $this->calendarComponent();

    $this->attach          = '';
    $this->attendee        = '';
    $this->categories      = '';
    $this->class           = '';
    $this->comment         = '';
    $this->contact         = '';
    $this->created         = '';
    $this->description     = '';
    $this->dtstart         = '';
    $this->dtend           = '';
    $this->duration        = '';
    $this->exdate          = '';
    $this->exrule          = '';
    $this->geo             = '';
    $this->lastmodified    = '';
    $this->location        = '';
    $this->organizer       = '';
    $this->priority        = '';
    $this->rdate           = '';
    $this->recurrenceid    = '';
    $this->relatedto       = '';
    $this->requeststatus   = '';
    $this->resources       = '';
    $this->rrule           = '';
    $this->sequence        = '';
    $this->status          = '';
    $this->summary         = '';
    $this->transp          = '';
    $this->url             = '';
    $this->xprop           = '';

    $this->components      = array();

    if( defined( 'ICAL_LANG' ) && !isset( $config['language'] ))
                                          $config['language']   = ICAL_LANG;
    if( !isset( $config['allowEmpty'] ))  $config['allowEmpty'] = TRUE;
    if( !isset( $config['nl'] ))          $config['nl']         = "\r\n";
    if( !isset( $config['format'] ))      $config['format']     = 'iCal';
    if( !isset( $config['delimiter'] ))   $config['delimiter']  = DIRECTORY_SEPARATOR;
    $this->setConfig( $config );

  }
/**
 * create formatted output for calendar component VEVENT object instance
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.10.16 - 2011-10-28
 * @param array $xcaldecl
 * @return string
 */
  function createComponent( &$xcaldecl ) {
    $objectname    = $this->_createFormat();
    $component     = $this->componentStart1.$objectname.$this->componentStart2.$this->nl;
    $component    .= $this->createUid();
    $component    .= $this->createDtstamp();
    $component    .= $this->createAttach();
    $component    .= $this->createAttendee();
    $component    .= $this->createCategories();
    $component    .= $this->createComment();
    $component    .= $this->createContact();
    $component    .= $this->createClass();
    $component    .= $this->createCreated();
    $component    .= $this->createDescription();
    $component    .= $this->createDtstart();
    $component    .= $this->createDtend();
    $component    .= $this->createDuration();
    $component    .= $this->createExdate();
    $component    .= $this->createExrule();
    $component    .= $this->createGeo();
    $component    .= $this->createLastModified();
    $component    .= $this->createLocation();
    $component    .= $this->createOrganizer();
    $component    .= $this->createPriority();
    $component    .= $this->createRdate();
    $component    .= $this->createRrule();
    $component    .= $this->createRelatedTo();
    $component    .= $this->createRequestStatus();
    $component    .= $this->createRecurrenceid();
    $component    .= $this->createResources();
    $component    .= $this->createSequence();
    $component    .= $this->createStatus();
    $component    .= $this->createSummary();
    $component    .= $this->createTransp();
    $component    .= $this->createUrl();
    $component    .= $this->createXprop();
    $component    .= $this->createSubComponent();
    $component    .= $this->componentEnd1.$objectname.$this->componentEnd2;
    if( is_array( $this->xcaldecl ) && ( 0 < count( $this->xcaldecl ))) {
      foreach( $this->xcaldecl as $localxcaldecl )
        $xcaldecl[] = $localxcaldecl;
    }
    return $component;
  }
}
/*********************************************************************************/
/*********************************************************************************/
/**
 * class for calendar component VTODO
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.5.1 - 2008-10-12
 */
class vtodo extends calendarComponent {
  var $attach;
  var $attendee;
  var $categories;
  var $comment;
  var $completed;
  var $contact;
  var $class;
  var $created;
  var $description;
  var $dtstart;
  var $due;
  var $duration;
  var $exdate;
  var $exrule;
  var $geo;
  var $lastmodified;
  var $location;
  var $organizer;
  var $percentcomplete;
  var $priority;
  var $rdate;
  var $recurrenceid;
  var $relatedto;
  var $requeststatus;
  var $resources;
  var $rrule;
  var $sequence;
  var $status;
  var $summary;
  var $url;
  var $xprop;
            //  component subcomponents container
  var $components;
/**
 * constructor for calendar component VTODO object
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.8.2 - 2011-05-01
 * @param array $config
 * @return void
 */
  function vtodo( $config = array()) {
    $this->calendarComponent();

    $this->attach          = '';
    $this->attendee        = '';
    $this->categories      = '';
    $this->class           = '';
    $this->comment         = '';
    $this->completed       = '';
    $this->contact         = '';
    $this->created         = '';
    $this->description     = '';
    $this->dtstart         = '';
    $this->due             = '';
    $this->duration        = '';
    $this->exdate          = '';
    $this->exrule          = '';
    $this->geo             = '';
    $this->lastmodified    = '';
    $this->location        = '';
    $this->organizer       = '';
    $this->percentcomplete = '';
    $this->priority        = '';
    $this->rdate           = '';
    $this->recurrenceid    = '';
    $this->relatedto       = '';
    $this->requeststatus   = '';
    $this->resources       = '';
    $this->rrule           = '';
    $this->sequence        = '';
    $this->status          = '';
    $this->summary         = '';
    $this->url             = '';
    $this->xprop           = '';

    $this->components      = array();

    if( defined( 'ICAL_LANG' ) && !isset( $config['language'] ))
                                          $config['language']   = ICAL_LANG;
    if( !isset( $config['allowEmpty'] ))  $config['allowEmpty'] = TRUE;
    if( !isset( $config['nl'] ))          $config['nl']         = "\r\n";
    if( !isset( $config['format'] ))      $config['format']     = 'iCal';
    if( !isset( $config['delimiter'] ))   $config['delimiter']  = DIRECTORY_SEPARATOR;
    $this->setConfig( $config );

  }
/**
 * create formatted output for calendar component VTODO object instance
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.5.1 - 2008-11-07
 * @param array $xcaldecl
 * @return string
 */
  function createComponent( &$xcaldecl ) {
    $objectname    = $this->_createFormat();
    $component     = $this->componentStart1.$objectname.$this->componentStart2.$this->nl;
    $component    .= $this->createUid();
    $component    .= $this->createDtstamp();
    $component    .= $this->createAttach();
    $component    .= $this->createAttendee();
    $component    .= $this->createCategories();
    $component    .= $this->createClass();
    $component    .= $this->createComment();
    $component    .= $this->createCompleted();
    $component    .= $this->createContact();
    $component    .= $this->createCreated();
    $component    .= $this->createDescription();
    $component    .= $this->createDtstart();
    $component    .= $this->createDue();
    $component    .= $this->createDuration();
    $component    .= $this->createExdate();
    $component    .= $this->createExrule();
    $component    .= $this->createGeo();
    $component    .= $this->createLastModified();
    $component    .= $this->createLocation();
    $component    .= $this->createOrganizer();
    $component    .= $this->createPercentComplete();
    $component    .= $this->createPriority();
    $component    .= $this->createRdate();
    $component    .= $this->createRelatedTo();
    $component    .= $this->createRequestStatus();
    $component    .= $this->createRecurrenceid();
    $component    .= $this->createResources();
    $component    .= $this->createRrule();
    $component    .= $this->createSequence();
    $component    .= $this->createStatus();
    $component    .= $this->createSummary();
    $component    .= $this->createUrl();
    $component    .= $this->createXprop();
    $component    .= $this->createSubComponent();
    $component    .= $this->componentEnd1.$objectname.$this->componentEnd2;
    if( is_array( $this->xcaldecl ) && ( 0 < count( $this->xcaldecl ))) {
      foreach( $this->xcaldecl as $localxcaldecl )
        $xcaldecl[] = $localxcaldecl;
    }
    return $component;
  }
}
/*********************************************************************************/
/*********************************************************************************/
/**
 * class for calendar component VJOURNAL
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.5.1 - 2008-10-12
 */
class vjournal extends calendarComponent {
  var $attach;
  var $attendee;
  var $categories;
  var $comment;
  var $contact;
  var $class;
  var $created;
  var $description;
  var $dtstart;
  var $exdate;
  var $exrule;
  var $lastmodified;
  var $organizer;
  var $rdate;
  var $recurrenceid;
  var $relatedto;
  var $requeststatus;
  var $rrule;
  var $sequence;
  var $status;
  var $summary;
  var $url;
  var $xprop;
/**
 * constructor for calendar component VJOURNAL object
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.8.2 - 2011-05-01
 * @param array $config
 * @return void
 */
  function vjournal( $config = array()) {
    $this->calendarComponent();

    $this->attach          = '';
    $this->attendee        = '';
    $this->categories      = '';
    $this->class           = '';
    $this->comment         = '';
    $this->contact         = '';
    $this->created         = '';
    $this->description     = '';
    $this->dtstart         = '';
    $this->exdate          = '';
    $this->exrule          = '';
    $this->lastmodified    = '';
    $this->organizer       = '';
    $this->rdate           = '';
    $this->recurrenceid    = '';
    $this->relatedto       = '';
    $this->requeststatus   = '';
    $this->rrule           = '';
    $this->sequence        = '';
    $this->status          = '';
    $this->summary         = '';
    $this->url             = '';
    $this->xprop           = '';

    if( defined( 'ICAL_LANG' ) && !isset( $config['language'] ))
                                          $config['language']   = ICAL_LANG;
    if( !isset( $config['allowEmpty'] ))  $config['allowEmpty'] = TRUE;
    if( !isset( $config['nl'] ))          $config['nl']         = "\r\n";
    if( !isset( $config['format'] ))      $config['format']     = 'iCal';
    if( !isset( $config['delimiter'] ))   $config['delimiter']  = DIRECTORY_SEPARATOR;
    $this->setConfig( $config );

  }
/**
 * create formatted output for calendar component VJOURNAL object instance
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.5.1 - 2008-10-12
 * @param array $xcaldecl
 * @return string
 */
  function createComponent( &$xcaldecl ) {
    $objectname = $this->_createFormat();
    $component  = $this->componentStart1.$objectname.$this->componentStart2.$this->nl;
    $component .= $this->createUid();
    $component .= $this->createDtstamp();
    $component .= $this->createAttach();
    $component .= $this->createAttendee();
    $component .= $this->createCategories();
    $component .= $this->createClass();
    $component .= $this->createComment();
    $component .= $this->createContact();
    $component .= $this->createCreated();
    $component .= $this->createDescription();
    $component .= $this->createDtstart();
    $component .= $this->createExdate();
    $component .= $this->createExrule();
    $component .= $this->createLastModified();
    $component .= $this->createOrganizer();
    $component .= $this->createRdate();
    $component .= $this->createRequestStatus();
    $component .= $this->createRecurrenceid();
    $component .= $this->createRelatedTo();
    $component .= $this->createRrule();
    $component .= $this->createSequence();
    $component .= $this->createStatus();
    $component .= $this->createSummary();
    $component .= $this->createUrl();
    $component .= $this->createXprop();
    $component .= $this->componentEnd1.$objectname.$this->componentEnd2;
    if( is_array( $this->xcaldecl ) && ( 0 < count( $this->xcaldecl ))) {
      foreach( $this->xcaldecl as $localxcaldecl )
        $xcaldecl[] = $localxcaldecl;
    }
    return $component;
  }
}
/*********************************************************************************/
/*********************************************************************************/
/**
 * class for calendar component VFREEBUSY
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.5.1 - 2008-10-12
 */
class vfreebusy extends calendarComponent {
  var $attendee;
  var $comment;
  var $contact;
  var $dtend;
  var $dtstart;
  var $duration;
  var $freebusy;
  var $organizer;
  var $requeststatus;
  var $url;
  var $xprop;
            //  component subcomponents container
  var $components;
/**
 * constructor for calendar component VFREEBUSY object
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.8.2 - 2011-05-01
 * @param array $config
 * @return void
 */
  function vfreebusy( $config = array()) {
    $this->calendarComponent();

    $this->attendee        = '';
    $this->comment         = '';
    $this->contact         = '';
    $this->dtend           = '';
    $this->dtstart         = '';
    $this->duration        = '';
    $this->freebusy        = '';
    $this->organizer       = '';
    $this->requeststatus   = '';
    $this->url             = '';
    $this->xprop           = '';

    if( defined( 'ICAL_LANG' ) && !isset( $config['language'] ))
                                          $config['language']   = ICAL_LANG;
    if( !isset( $config['allowEmpty'] ))  $config['allowEmpty'] = TRUE;
    if( !isset( $config['nl'] ))          $config['nl']         = "\r\n";
    if( !isset( $config['format'] ))      $config['format']     = 'iCal';
    if( !isset( $config['delimiter'] ))   $config['delimiter']  = DIRECTORY_SEPARATOR;
    $this->setConfig( $config );

  }
/**
 * create formatted output for calendar component VFREEBUSY object instance
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.3.1 - 2007-11-19
 * @param array $xcaldecl
 * @return string
 */
  function createComponent( &$xcaldecl ) {
    $objectname = $this->_createFormat();
    $component  = $this->componentStart1.$objectname.$this->componentStart2.$this->nl;
    $component .= $this->createUid();
    $component .= $this->createDtstamp();
    $component .= $this->createAttendee();
    $component .= $this->createComment();
    $component .= $this->createContact();
    $component .= $this->createDtstart();
    $component .= $this->createDtend();
    $component .= $this->createDuration();
    $component .= $this->createFreebusy();
    $component .= $this->createOrganizer();
    $component .= $this->createRequestStatus();
    $component .= $this->createUrl();
    $component .= $this->createXprop();
    $component .= $this->componentEnd1.$objectname.$this->componentEnd2;
    if( is_array( $this->xcaldecl ) && ( 0 < count( $this->xcaldecl ))) {
      foreach( $this->xcaldecl as $localxcaldecl )
        $xcaldecl[] = $localxcaldecl;
    }
    return $component;
  }
}
/*********************************************************************************/
/*********************************************************************************/
/**
 * class for calendar component VALARM
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.5.1 - 2008-10-12
 */
class valarm extends calendarComponent {
  var $action;
  var $attach;
  var $attendee;
  var $description;
  var $duration;
  var $repeat;
  var $summary;
  var $trigger;
  var $xprop;
/**
 * constructor for calendar component VALARM object
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.8.2 - 2011-05-01
 * @param array $config
 * @return void
 */
  function valarm( $config = array()) {
    $this->calendarComponent();

    $this->action          = '';
    $this->attach          = '';
    $this->attendee        = '';
    $this->description     = '';
    $this->duration        = '';
    $this->repeat          = '';
    $this->summary         = '';
    $this->trigger         = '';
    $this->xprop           = '';

    if( defined( 'ICAL_LANG' ) && !isset( $config['language'] ))
                                          $config['language']   = ICAL_LANG;
    if( !isset( $config['allowEmpty'] ))  $config['allowEmpty'] = TRUE;
    if( !isset( $config['nl'] ))          $config['nl']         = "\r\n";
    if( !isset( $config['format'] ))      $config['format']     = 'iCal';
    if( !isset( $config['delimiter'] ))   $config['delimiter']  = DIRECTORY_SEPARATOR;
    $this->setConfig( $config );

  }
/**
 * create formatted output for calendar component VALARM object instance
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.5.1 - 2008-10-22
 * @param array $xcaldecl
 * @return string
 */
  function createComponent( &$xcaldecl ) {
    $objectname    = $this->_createFormat();
    $component     = $this->componentStart1.$objectname.$this->componentStart2.$this->nl;
    $component    .= $this->createAction();
    $component    .= $this->createAttach();
    $component    .= $this->createAttendee();
    $component    .= $this->createDescription();
    $component    .= $this->createDuration();
    $component    .= $this->createRepeat();
    $component    .= $this->createSummary();
    $component    .= $this->createTrigger();
    $component    .= $this->createXprop();
    $component    .= $this->componentEnd1.$objectname.$this->componentEnd2;
    if( is_array( $this->xcaldecl ) && ( 0 < count( $this->xcaldecl ))) {
      foreach( $this->xcaldecl as $localxcaldecl )
        $xcaldecl[] = $localxcaldecl;
    }
    return $component;
  }
}
/**********************************************************************************
/*********************************************************************************/
/**
 * class for calendar component VTIMEZONE
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.5.1 - 2008-10-12
 */
class vtimezone extends calendarComponent {
  var $timezonetype;

  var $comment;
  var $dtstart;
  var $lastmodified;
  var $rdate;
  var $rrule;
  var $tzid;
  var $tzname;
  var $tzoffsetfrom;
  var $tzoffsetto;
  var $tzurl;
  var $xprop;
            //  component subcomponents container
  var $components;
/**
 * constructor for calendar component VTIMEZONE object
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.8.2 - 2011-05-01
 * @param mixed $timezonetype optional, default FALSE ( STANDARD / DAYLIGHT )
 * @param array $config
 * @return void
 */
  function vtimezone( $timezonetype=FALSE, $config = array()) {
    if( is_array( $timezonetype )) {
      $config       = $timezonetype;
      $timezonetype = FALSE;
    }
    if( !$timezonetype )
      $this->timezonetype = 'VTIMEZONE';
    else
      $this->timezonetype = strtoupper( $timezonetype );
    $this->calendarComponent();

    $this->comment         = '';
    $this->dtstart         = '';
    $this->lastmodified    = '';
    $this->rdate           = '';
    $this->rrule           = '';
    $this->tzid            = '';
    $this->tzname          = '';
    $this->tzoffsetfrom    = '';
    $this->tzoffsetto      = '';
    $this->tzurl           = '';
    $this->xprop           = '';

    $this->components      = array();

    if( defined( 'ICAL_LANG' ) && !isset( $config['language'] ))
                                          $config['language']   = ICAL_LANG;
    if( !isset( $config['allowEmpty'] ))  $config['allowEmpty'] = TRUE;
    if( !isset( $config['nl'] ))          $config['nl']         = "\r\n";
    if( !isset( $config['format'] ))      $config['format']     = 'iCal';
    if( !isset( $config['delimiter'] ))   $config['delimiter']  = DIRECTORY_SEPARATOR;
    $this->setConfig( $config );

  }
/**
 * create formatted output for calendar component VTIMEZONE object instance
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.5.1 - 2008-10-25
 * @param array $xcaldecl
 * @return string
 */
  function createComponent( &$xcaldecl ) {
    $objectname    = $this->_createFormat();
    $component     = $this->componentStart1.$objectname.$this->componentStart2.$this->nl;
    $component    .= $this->createTzid();
    $component    .= $this->createLastModified();
    $component    .= $this->createTzurl();
    $component    .= $this->createDtstart();
    $component    .= $this->createTzoffsetfrom();
    $component    .= $this->createTzoffsetto();
    $component    .= $this->createComment();
    $component    .= $this->createRdate();
    $component    .= $this->createRrule();
    $component    .= $this->createTzname();
    $component    .= $this->createXprop();
    $component    .= $this->createSubComponent();
    $component    .= $this->componentEnd1.$objectname.$this->componentEnd2;
    if( is_array( $this->xcaldecl ) && ( 0 < count( $this->xcaldecl ))) {
      foreach( $this->xcaldecl as $localxcaldecl )
        $xcaldecl[] = $localxcaldecl;
    }
    return $component;
  }
}
/*********************************************************************************/
/*********************************************************************************/
/**
 * moving all utility (static) functions to a utility class
 * 20111223 - move iCalUtilityFunctions class to the end of the iCalcreator class file
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.10.1 - 2011-07-16
 *
 */
class iCalUtilityFunctions {
  // Store the single instance of iCalUtilityFunctions
  private static $m_pInstance;

  // Private constructor to limit object instantiation to within the class
  private function __construct() {
    $m_pInstance = FALSE;
  }

  // Getter method for creating/returning the single instance of this class
  public static function getInstance() {
    if (!self::$m_pInstance)
      self::$m_pInstance = new iCalUtilityFunctions();

    return self::$m_pInstance;
  }
/**
 * ensures internal date-time/date format (keyed array) for an input date-time/date array (keyed or unkeyed)
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.24 - 2013-06-26
 * @param array $datetime
 * @param int $parno optional, default FALSE
 * @return array
 */
  public static function _date_time_array( $datetime, $parno=FALSE ) {
    return iCalUtilityFunctions::_chkDateArr( $datetime, $parno );
  }
  public static function _chkDateArr( $datetime, $parno=FALSE ) {
    $output = array();
    if(( !$parno || ( 6 <= $parno )) && isset( $datetime[3] ) && !isset( $datetime[4] )) { // Y-m-d with tz
      $temp        = $datetime[3];
      $datetime[3] = $datetime[4] = $datetime[5] = 0;
      $datetime[6] = $temp;
    }
    foreach( $datetime as $dateKey => $datePart ) {
      switch ( $dateKey ) {
        case '0': case 'year':   $output['year']  = $datePart; break;
        case '1': case 'month':  $output['month'] = $datePart; break;
        case '2': case 'day':    $output['day']   = $datePart; break;
      }
      if( 3 != $parno ) {
        switch ( $dateKey ) {
          case '0':
          case '1':
          case '2': break;
          case '3': case 'hour': $output['hour']  = $datePart; break;
          case '4': case 'min' : $output['min']   = $datePart; break;
          case '5': case 'sec' : $output['sec']   = $datePart; break;
          case '6': case 'tz'  : $output['tz']    = $datePart; break;
        }
      }
    }
    if( 3 != $parno ) {
      if( !isset( $output['hour'] ))         $output['hour'] = 0;
      if( !isset( $output['min']  ))         $output['min']  = 0;
      if( !isset( $output['sec']  ))         $output['sec']  = 0;
      if( isset( $output['tz'] ) &&
        (( '+0000' == $output['tz'] ) || ( '-0000' == $output['tz'] ) || ( '+000000' == $output['tz'] ) || ( '-000000' == $output['tz'] )))
                                             $output['tz']   = 'Z';
    }
    return $output;
  }
/**
 * check date(-time) and params arrays for an opt. timezone and if it is a DATE-TIME or DATE (updates $parno and params)
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.10.30 - 2012-01-16
 * @param array $date, date to check
 * @param int $parno, no of date parts (i.e. year, month.. .)
 * @param array $params, property parameters
 * @return void
 */
  public static function _chkdatecfg( $theDate, & $parno, & $params ) {
    if( isset( $params['TZID'] ))
      $parno = 6;
    elseif( isset( $params['VALUE'] ) && ( 'DATE' == $params['VALUE'] ))
      $parno = 3;
    else {
      if( isset( $params['VALUE'] ) && ( 'PERIOD' == $params['VALUE'] ))
        $parno = 7;
      if( is_array( $theDate )) {
        if( isset( $theDate['timestamp'] ))
          $tzid = ( isset( $theDate['tz'] )) ? $theDate['tz'] : null;
        else
          $tzid = ( isset( $theDate['tz'] )) ? $theDate['tz'] : ( 7 == count( $theDate )) ? end( $theDate ) : null;
        if( !empty( $tzid )) {
          $parno = 7;
          if( !iCalUtilityFunctions::_isOffset( $tzid ))
            $params['TZID'] = $tzid; // save only timezone
        }
        elseif( !$parno && ( 3 == count( $theDate )) &&
          ( isset( $params['VALUE'] ) && ( 'DATE' == $params['VALUE'] )))
          $parno = 3;
        else
          $parno = 6;
      }
      else { // string
        $date = trim( $theDate );
        if( 'Z' == substr( $date, -1 ))
          $parno = 7; // UTC DATE-TIME
        elseif((( 8 == strlen( $date ) && ctype_digit( $date )) || ( 11 >= strlen( $date ))) &&
          ( !isset( $params['VALUE'] ) || !in_array( $params['VALUE'], array( 'DATE-TIME', 'PERIOD' ))))
          $parno = 3; // DATE
        $date = iCalUtilityFunctions::_strdate2date( $date, $parno );
        unset( $date['unparsedtext'] );
        if( !empty( $date['tz'] )) {
          $parno = 7;
          if( !iCalUtilityFunctions::_isOffset( $date['tz'] ))
            $params['TZID'] = $date['tz']; // save only timezone
        }
        elseif( empty( $parno ))
          $parno = 6;
      }
      if( isset( $params['TZID'] ))
        $parno = 6;
    }
  }
/**
 * vcalendar sort callback function
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-17
 * @param array $a
 * @param array $b
 * @return int
 */
  public static function _cmpfcn( $a, $b ) {
    if(        empty( $a ))                       return -1;
    if(        empty( $b ))                       return  1;
    if( 'vtimezone' == $a->objName ) {
      if( 'vtimezone' != $b->objName )            return -1;
      elseif( $a->srtk[0] <= $b->srtk[0] )        return -1;
      else                                        return  1;
    }
    elseif( 'vtimezone' == $b->objName )          return  1;
    $sortkeys = array( 'year', 'month', 'day', 'hour', 'min', 'sec' );
    for( $k = 0; $k < 4 ; $k++ ) {
      if(        empty( $a->srtk[$k] ))           return -1;
      elseif(    empty( $b->srtk[$k] ))           return  1;
      if( is_array( $a->srtk[$k] )) {
        if( is_array( $b->srtk[$k] )) {
          foreach( $sortkeys as $key ) {
            if    ( !isset( $a->srtk[$k][$key] )) return -1;
            elseif( !isset( $b->srtk[$k][$key] )) return  1;
            if    (  empty( $a->srtk[$k][$key] )) return -1;
            elseif(  empty( $b->srtk[$k][$key] )) return  1;
            if    (         $a->srtk[$k][$key] == $b->srtk[$k][$key])
                                                  continue;
            if    ((  (int) $a->srtk[$k][$key] ) < ((int) $b->srtk[$k][$key] ))
                                                  return -1;
            elseif((  (int) $a->srtk[$k][$key] ) > ((int) $b->srtk[$k][$key] ))
                                                  return  1;
          }
        }
        else                                      return -1;
      }
      elseif( is_array( $b->srtk[$k] ))           return  1;
      elseif( $a->srtk[$k] < $b->srtk[$k] )       return -1;
      elseif( $a->srtk[$k] > $b->srtk[$k] )       return  1;
    }
    return 0;
  }
/**
 * byte oriented line folding fix
 *
 * remove any line-endings that may include spaces or tabs
 * and convert all line endings (iCal default '\r\n'),
 * takes care of '\r\n', '\r' and '\n' and mixed '\r\n'+'\r', '\r\n'+'\n'
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.12.17 - 2012-07-12
 * @param string $text
 * @param string $nl
 * @return string
 */
  public static function convEolChar( & $text, $nl ) {
    $outp = '';
    $cix  = 0;
    while(    isset(   $text[$cix] )) {
      if(     isset(   $text[$cix + 2] ) &&  ( "\r" == $text[$cix] ) && ( "\n" == $text[$cix + 1] ) &&
        ((    " " ==   $text[$cix + 2] ) ||  ( "\t" == $text[$cix + 2] )))                    // 2 pos eolchar + ' ' or '\t'
        $cix  += 2;                                                                           // skip 3
      elseif( isset(   $text[$cix + 1] ) &&  ( "\r" == $text[$cix] ) && ( "\n" == $text[$cix + 1] )) {
        $outp .= $nl;                                                                         // 2 pos eolchar
        $cix  += 1;                                                                           // replace with $nl
      }
      elseif( isset(   $text[$cix + 1] ) && (( "\r" == $text[$cix] ) || ( "\n" == $text[$cix] )) &&
           (( " " ==   $text[$cix + 1] ) ||  ( "\t" == $text[$cix + 1] )))                     // 1 pos eolchar + ' ' or '\t'
        $cix  += 1;                                                                            // skip 2
      elseif(( "\r" == $text[$cix] )     ||  ( "\n" == $text[$cix] ))                          // 1 pos eolchar
        $outp .= $nl;                                                                          // replace with $nl
      else
        $outp .= $text[$cix];                                                                  // add any other byte
      $cix    += 1;
    }
    return $outp;
  }
/**
 * create a calendar timezone and standard/daylight components
 *
 * Result when 'Europe/Stockholm' and no from/to arguments is used as timezone:
 *
 * BEGIN:VTIMEZONE
 * TZID:Europe/Stockholm
 * BEGIN:STANDARD
 * DTSTART:20101031T020000
 * TZOFFSETFROM:+0200
 * TZOFFSETTO:+0100
 * TZNAME:CET
 * END:STANDARD
 * BEGIN:DAYLIGHT
 * DTSTART:20100328T030000
 * TZOFFSETFROM:+0100
 * TZOFFSETTO:+0200
 * TZNAME:CEST
 * END:DAYLIGHT
 * END:VTIMEZONE
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.1 - 2012-11-26
 * Generates components for all transitions in a date range, based on contribution by Yitzchok Lavi <icalcreator@onebigsystem.com>
 * Additional changes jpirkey
 * @param object $calendar, reference to an iCalcreator calendar instance
 * @param string $timezone, a PHP5 (DateTimeZone) valid timezone
 * @param array  $xProp,    *[x-propName => x-propValue], optional
 * @param int    $from      a unix timestamp
 * @param int    $to        a unix timestamp
 * @return bool
 */
  public static function createTimezone( & $calendar, $timezone, $xProp=array(), $from=null, $to=null ) {
    if( empty( $timezone ))
      return FALSE;
    if( !empty( $from ) && !is_int( $from ))
      return FALSE;
    if( !empty( $to )   && !is_int( $to ))
      return FALSE;
    try {
      $dtz               = new DateTimeZone( $timezone );
      $transitions       = $dtz->getTransitions();
      $utcTz             = new DateTimeZone( 'UTC' );
    }
    catch( Exception $e ) { return FALSE; }
    if( empty( $to )) {
      $dates             = array_keys( $calendar->getProperty( 'dtstart' ));
      if( empty( $dates ))
        $dates           = array( date( 'Ymd' ));
    }
    if( !empty( $from ))
      $dateFrom          = new DateTime( "@$from" );             // set lowest date (UTC)
    else {
      $from              = reset( $dates );                      // set lowest date to the lowest dtstart date
      $dateFrom          = new DateTime( $from.'T000000', $dtz );
      $dateFrom->modify( '-1 month' );                           // set $dateFrom to one month before the lowest date
      $dateFrom->setTimezone( $utcTz );                          // convert local date to UTC
    }
    $dateFromYmd         = $dateFrom->format('Y-m-d' );
    if( !empty( $to ))
      $dateTo            = new DateTime( "@$to" );               // set end date (UTC)
    else {
      $to                = end( $dates );                        // set highest date to the highest dtstart date
      $dateTo            = new DateTime( $to.'T235959', $dtz );
      $dateTo->modify( '+1 year' );                              // set $dateTo to one year after the highest date
      $dateTo->setTimezone( $utcTz );                            // convert local date to UTC
    }
    $dateToYmd           = $dateTo->format('Y-m-d' );
    unset( $dtz );
    $transTemp           = array();
    $prevOffsetfrom      = 0;
    $stdIx  = $dlghtIx   = null;
    $prevTrans           = FALSE;
    foreach( $transitions as $tix => $trans ) {                  // all transitions in date-time order!!
      $date              = new DateTime( "@{$trans['ts']}" );    // set transition date (UTC)
      $transDateYmd      = $date->format('Y-m-d' );
      if ( $transDateYmd < $dateFromYmd ) {
        $prevOffsetfrom  = $trans['offset'];                     // previous trans offset will be 'next' trans offsetFrom
        $prevTrans       = $trans;                               // save it in case we don't find any that match
        $prevTrans['offsetfrom'] = ( 0 < $tix ) ? $transitions[$tix-1]['offset'] : 0;
        continue;
      }
      if( $transDateYmd > $dateToYmd )
        break;                                                   // loop always (?) breaks here
      if( !empty( $prevOffsetfrom ) || ( 0 == $prevOffsetfrom )) {
        $trans['offsetfrom'] = $prevOffsetfrom;                  // i.e. set previous offsetto as offsetFrom
        $date->modify( $trans['offsetfrom'].'seconds' );         // convert utc date to local date
        $d = $date->format( 'Y-n-j-G-i-s' );                     // set date to array to ease up dtstart and (opt) rdate setting
        $d = explode( '-', $d );
        $trans['time']   = array( 'year' => $d[0], 'month' => $d[1], 'day' => $d[2], 'hour' => $d[3], 'min' => $d[4], 'sec' => $d[5] );
      }
      $prevOffsetfrom    = $trans['offset'];
      if( TRUE !== $trans['isdst'] ) {                           // standard timezone
        if( !empty( $stdIx ) && isset( $transTemp[$stdIx]['offsetfrom'] )  && // check for any repeating rdate's (in order)
           ( $transTemp[$stdIx]['abbr']       ==   $trans['abbr'] )        &&
           ( $transTemp[$stdIx]['offsetfrom'] ==   $trans['offsetfrom'] )  &&
           ( $transTemp[$stdIx]['offset']     ==   $trans['offset'] )) {
          $transTemp[$stdIx]['rdate'][]        =   $trans['time'];
          continue;
        }
        $stdIx           = $tix;
      } // end standard timezone
      else {                                                     // daylight timezone
        if( !empty( $dlghtIx ) && isset( $transTemp[$dlghtIx]['offsetfrom'] ) && // check for any repeating rdate's (in order)
           ( $transTemp[$dlghtIx]['abbr']       ==   $trans['abbr'] )         &&
           ( $transTemp[$dlghtIx]['offsetfrom'] ==   $trans['offsetfrom'] )   &&
           ( $transTemp[$dlghtIx]['offset']     ==   $trans['offset'] )) {
          $transTemp[$dlghtIx]['rdate'][]        =   $trans['time'];
          continue;
        }
        $dlghtIx         = $tix;
      } // end daylight timezone
      $transTemp[$tix]   = $trans;
    } // end foreach( $transitions as $tix => $trans )
    $tz  = & $calendar->newComponent( 'vtimezone' );
    $tz->setproperty( 'tzid', $timezone );
    if( !empty( $xProp )) {
      foreach( $xProp as $xPropName => $xPropValue )
        if( 'x-' == strtolower( substr( $xPropName, 0, 2 )))
          $tz->setproperty( $xPropName, $xPropValue );
    }
    if( empty( $transTemp )) {      // if no match found
      if( $prevTrans ) {            // then we use the last transition (before startdate) for the tz info
        $date = new DateTime( "@{$prevTrans['ts']}" );           // set transition date (UTC)
        $date->modify( $prevTrans['offsetfrom'].'seconds' );     // convert utc date to local date
        $d = $date->format( 'Y-n-j-G-i-s' );                     // set date to array to ease up dtstart setting
        $d = explode( '-', $d );
        $prevTrans['time'] = array( 'year' => $d[0], 'month' => $d[1], 'day' => $d[2], 'hour' => $d[3], 'min' => $d[4], 'sec' => $d[5] );
        $transTemp[0] = $prevTrans;
      }
      else {                        // or we use the timezone identifier to BUILD the standard tz info (?)
        $date = new DateTime( 'now', new DateTimeZone( $timezone ));
        $transTemp[0] = array( 'time'       => $date->format( 'Y-m-d\TH:i:s O' )
                             , 'offset'     => $date->format( 'Z' )
                             , 'offsetfrom' => $date->format( 'Z' )
                             , 'isdst'      => FALSE );
      }
    }
    unset( $transitions, $date, $prevTrans );
    foreach( $transTemp as $tix => $trans ) {
      $type  = ( TRUE !== $trans['isdst'] ) ? 'standard' : 'daylight';
      $scomp = & $tz->newComponent( $type );
      $scomp->setProperty( 'dtstart',         $trans['time'] );
//      $scomp->setProperty( 'x-utc-timestamp', $tix.' : '.$trans['ts'] );   // test ###
      if( !empty( $trans['abbr'] ))
        $scomp->setProperty( 'tzname',        $trans['abbr'] );
      if( isset( $trans['offsetfrom'] ))
        $scomp->setProperty( 'tzoffsetfrom',  iCalUtilityFunctions::offsetSec2His( $trans['offsetfrom'] ));
      $scomp->setProperty( 'tzoffsetto',      iCalUtilityFunctions::offsetSec2His( $trans['offset'] ));
      if( isset( $trans['rdate'] ))
        $scomp->setProperty( 'RDATE',         $trans['rdate'] );
    }
    return TRUE;
  }
/**
 * creates formatted output for calendar component property data value type date/date-time
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.14.1 - 2012-09-17
 * @param array   $datetime
 * @param int     $parno, optional, default 6
 * @return string
 */
  public static function _format_date_time( $datetime, $parno=6 ) {
    return iCalUtilityFunctions::_date2strdate( $datetime, $parno );
  }
  public static function _date2strdate( $datetime, $parno=6 ) {
    if( !isset( $datetime['year'] )  &&
        !isset( $datetime['month'] ) &&
        !isset( $datetime['day'] )   &&
        !isset( $datetime['hour'] )  &&
        !isset( $datetime['min'] )   &&
        !isset( $datetime['sec'] ))
      return;
    $output     = null;
    foreach( $datetime as $dkey => & $dvalue )
      if( 'tz' != $dkey ) $dvalue = (integer) $dvalue;
    $output = sprintf( '%04d%02d%02d', $datetime['year'], $datetime['month'], $datetime['day'] );
    if( 3 == $parno )
      return $output;
    if( !isset( $datetime['hour'] )) $datetime['hour'] = 0;
    if( !isset( $datetime['min'] ))  $datetime['min']  = 0;
    if( !isset( $datetime['sec'] ))  $datetime['sec']  = 0;
    $output    .= sprintf( 'T%02d%02d%02d', $datetime['hour'], $datetime['min'], $datetime['sec'] );
    if( isset( $datetime['tz'] ) && ( '' < trim( $datetime['tz'] ))) {
      $datetime['tz'] = trim( $datetime['tz'] );
      if( 'Z'  == $datetime['tz'] )
        $parno  = 7;
      elseif( iCalUtilityFunctions::_isOffset( $datetime['tz'] )) {
        $parno  = 7;
        $offset = iCalUtilityFunctions::_tz2offset( $datetime['tz'] );
        try {
          $d    = new DateTime( $output, new DateTimeZone( 'UTC' ));
          if( 0 != $offset ) // adjust för offset
            $d->modify( "$offset seconds" );
          $output = $d->format( 'Ymd\THis' );
        }
        catch( Exception $e ) {
          $output = date( 'Ymd\THis', mktime( $datetime['hour'], $datetime['min'], ($datetime['sec'] - $offset), $datetime['month'], $datetime['day'], $datetime['year'] ));
        }
      }
      if( 7 == $parno )
        $output .= 'Z';
    }
    return $output;
  }
/**
 * convert a date/datetime (array) to timestamp
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.14.1 - 2012-09-29
 * @param array  $datetime  datetime(/date)
 * @param string $wtz       timezone
 * @return int
 */
  public static function _date2timestamp( $datetime, $wtz=null ) {
    if( !isset( $datetime['hour'] )) $datetime['hour'] = 0;
    if( !isset( $datetime['min'] ))  $datetime['min']  = 0;
    if( !isset( $datetime['sec'] ))  $datetime['sec']  = 0;
    if( empty( $wtz ) && ( !isset( $datetime['tz'] ) || empty(  $datetime['tz'] )))
      return mktime( $datetime['hour'], $datetime['min'], $datetime['sec'], $datetime['month'], $datetime['day'], $datetime['year'] );
    $output = $offset = 0;
    if( empty( $wtz )) {
      if( iCalUtilityFunctions::_isOffset( $datetime['tz'] )) {
        $offset = iCalUtilityFunctions::_tz2offset( $datetime['tz'] ) * -1;
        $wtz    = 'UTC';
      }
      else
        $wtz    = $datetime['tz'];
    }
    if(( 'Z' == $wtz ) || ( 'GMT' == strtoupper( $wtz )))
      $wtz      = 'UTC';
    try {
      $strdate  = sprintf( '%04d-%02d-%02d %02d:%02d:%02d', $datetime['year'], $datetime['month'], $datetime['day'], $datetime['hour'], $datetime['min'], $datetime['sec'] );
      $d        = new DateTime( $strdate, new DateTimeZone( $wtz ));
      if( 0    != $offset )  // adjust for offset
        $d->modify( $offset.' seconds' );
      $output   = $d->format( 'U' );
      unset( $d );
    }
    catch( Exception $e ) {
      $output = mktime( $datetime['hour'], $datetime['min'], $datetime['sec'], $datetime['month'], $datetime['day'], $datetime['year'] );
    }
    return $output;
  }
/**
 * ensures internal duration format for input in array format
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.23 - 2013-06-23
 * @param array $duration
 * @return array
 */
  public static function _duration_array( $duration ) {
    return iCalUtilityFunctions::_duration2arr( $duration );
  }
  public static function _duration2arr( $duration ) {
    $seconds        = 0;
    foreach( $duration as $durKey => $durValue ) {
      if( empty( $durValue )) continue;
      switch ( $durKey ) {
        case '0': case 'week':
          $seconds += (((int) $durValue ) * 60 * 60 * 24 * 7 );
          break;
        case '1': case 'day':
          $seconds += (((int) $durValue ) * 60 * 60 * 24 );
          break;
        case '2': case 'hour':
          $seconds += (((int) $durValue ) * 60 * 60 );
          break;
        case '3': case 'min':
          $seconds += (((int) $durValue ) * 60 );
          break;
        case '4': case 'sec':
          $seconds +=   (int) $durValue;
          break;
      }
    }
    $output         = array();
    $output['week'] = (int) floor( $seconds / ( 60 * 60 * 24 * 7 ));
    $seconds        =            ( $seconds % ( 60 * 60 * 24 * 7 ));
    $output['day']  = (int) floor( $seconds / ( 60 * 60 * 24 ));
    $seconds        =            ( $seconds % ( 60 * 60 * 24 ));
    $output['hour'] = (int) floor( $seconds / ( 60 * 60 ));
    $seconds        =            ( $seconds % ( 60 * 60 ));
    $output['min']  = (int) floor( $seconds /   60 );
    $output['sec']  =            ( $seconds %   60 );
    if( !empty( $output['week'] ))
      unset( $output['day'], $output['hour'], $output['min'], $output['sec'] );
    else {
      unset( $output['week'] );
      if( empty( $output['day'] ))
        unset( $output['day'] );
      if(( 0 == $output['hour'] ) && ( 0 == $output['min'] ) && ( 0 == $output['sec'] ))
        unset( $output['hour'], $output['min'], $output['sec'] );
    }
    return $output;
  }
/**
 * convert startdate+duration to a array format datetime
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.15.12 - 2012-10-31
 * @param array   $startdate
 * @param array   $duration
 * @return array, date format
 */
  public static function _duration2date( $startdate, $duration ) {
    $dateOnly          = ( isset( $startdate['hour'] ) || isset( $startdate['min'] ) || isset( $startdate['sec'] )) ? FALSE : TRUE;
    $startdate['hour'] = ( isset( $startdate['hour'] )) ? $startdate['hour'] : 0;
    $startdate['min']  = ( isset( $startdate['min'] ))  ? $startdate['min']  : 0;
    $startdate['sec']  = ( isset( $startdate['sec'] ))  ? $startdate['sec']  : 0;
    $dtend = 0;
    if(    isset( $duration['week'] )) $dtend += ( $duration['week'] * 7 * 24 * 60 * 60 );
    if(    isset( $duration['day'] ))  $dtend += ( $duration['day'] * 24 * 60 * 60 );
    if(    isset( $duration['hour'] )) $dtend += ( $duration['hour'] * 60 *60 );
    if(    isset( $duration['min'] ))  $dtend += ( $duration['min'] * 60 );
    if(    isset( $duration['sec'] ))  $dtend +=   $duration['sec'];
    $date     = date( 'Y-m-d-H-i-s', mktime((int) $startdate['hour'], (int) $startdate['min'], (int) ( $startdate['sec'] + $dtend ), (int) $startdate['month'], (int) $startdate['day'], (int) $startdate['year'] ));
    $d        = explode( '-', $date );
    $dtend2   = array( 'year' => $d[0], 'month' => $d[1], 'day' => $d[2], 'hour' => $d[3], 'min' => $d[4], 'sec' => $d[5] );
    if( isset( $startdate['tz'] ))
      $dtend2['tz']   = $startdate['tz'];
    if( $dateOnly && (( 0 == $dtend2['hour'] ) && ( 0 == $dtend2['min'] ) && ( 0 == $dtend2['sec'] )))
      unset( $dtend2['hour'], $dtend2['min'], $dtend2['sec'] );
    return $dtend2;
  }
/**
 * ensures internal duration format for an input string (iCal) formatted duration
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.14.1 - 2012-09-25
 * @param string $duration
 * @return array
 */
  public static function _duration_string( $duration ) {
    return iCalUtilityFunctions::_durationStr2arr( $duration );
  }
  public static function _durationStr2arr( $duration ) {
    $duration = (string) trim( $duration );
    while( 'P' != strtoupper( substr( $duration, 0, 1 ))) {
      if( 0 < strlen( $duration ))
        $duration = substr( $duration, 1 );
      else
        return false; // no leading P !?!?
    }
    $duration = substr( $duration, 1 ); // skip P
    $duration = str_replace ( 't', 'T', $duration );
    $duration = str_replace ( 'T', '', $duration );
    $output = array();
    $val    = null;
    for( $ix=0; $ix < strlen( $duration ); $ix++ ) {
      switch( strtoupper( substr( $duration, $ix, 1 ))) {
       case 'W':
         $output['week'] = $val;
         $val            = null;
         break;
       case 'D':
         $output['day']  = $val;
         $val            = null;
         break;
       case 'H':
         $output['hour'] = $val;
         $val            = null;
         break;
       case 'M':
         $output['min']  = $val;
         $val            = null;
         break;
       case 'S':
         $output['sec']  = $val;
         $val            = null;
         break;
       default:
         if( !ctype_digit( substr( $duration, $ix, 1 )))
           return false; // unknown duration control character  !?!?
         else
           $val .= substr( $duration, $ix, 1 );
      }
    }
    return iCalUtilityFunctions::_duration2arr( $output );
  }
/**
 * creates formatted output for calendar component property data value type duration
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.15.8 - 2012-10-30
 * @param array $duration, array( week, day, hour, min, sec )
 * @return string
 */
  public static function _format_duration( $duration ) {
    return iCalUtilityFunctions::_duration2str( $duration );
  }
  public static function _duration2str( $duration ) {
    if( isset( $duration['week'] ) ||
        isset( $duration['day'] )  ||
        isset( $duration['hour'] ) ||
        isset( $duration['min'] )  ||
        isset( $duration['sec'] ))
       $ok = TRUE;
    else
      return;
    if( isset( $duration['week'] ) && ( 0 < $duration['week'] ))
      return 'P'.$duration['week'].'W';
    $output = 'P';
    if( isset($duration['day'] ) && ( 0 < $duration['day'] ))
      $output .= $duration['day'].'D';
    if(( isset( $duration['hour']) && ( 0 < $duration['hour'] )) ||
       ( isset( $duration['min'])  && ( 0 < $duration['min'] ))  ||
       ( isset( $duration['sec'])  && ( 0 < $duration['sec'] ))) {
      $output .= 'T';
      $output .= ( isset( $duration['hour']) && ( 0 < $duration['hour'] )) ? $duration['hour'].'H' : '0H';
      $output .= ( isset( $duration['min'])  && ( 0 < $duration['min'] ))  ? $duration['min']. 'M' : '0M';
      $output .= ( isset( $duration['sec'])  && ( 0 < $duration['sec'] ))  ? $duration['sec']. 'S' : '0S';
    }
    if( 'P' == $output )
      $output = 'PT0H0M0S';
    return $output;
  }
/**
 * removes expkey+expvalue from array and returns hitval (if found) else returns elseval
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.16 - 2008-11-08
 * @param array $array
 * @param string $expkey, expected key
 * @param string $expval, expected value
 * @param int $hitVal optional, return value if found
 * @param int $elseVal optional, return value if not found
 * @param int $preSet optional, return value if already preset
 * @return int
 */
  public static function _existRem( &$array, $expkey, $expval=FALSE, $hitVal=null, $elseVal=null, $preSet=null ) {
    if( $preSet )
      return $preSet;
    if( !is_array( $array ) || ( 0 == count( $array )))
      return $elseVal;
    foreach( $array as $key => $value ) {
      if( strtoupper( $expkey ) == strtoupper( $key )) {
        if( !$expval || ( strtoupper( $expval ) == strtoupper( $array[$key] ))) {
          unset( $array[$key] );
          return $hitVal;
        }
      }
    }
    return $elseVal;
  }
/**
 * checks if input contains a (array formatted) date/time
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.24 - 2013-07-02
 * @param array $input
 * @return bool
 */
  public static function _isArrayDate( $input ) {
    if( !is_array( $input ) || isset( $input['week'] ) || isset( $input['timestamp'] ) || ( 3 > count( $input )))
      return FALSE;
    if( 7 == count( $input ))
      return TRUE;
    if( isset( $input['year'] ) && isset( $input['month'] ) && isset( $input['day'] ))
      return checkdate( (int) $input['month'], (int) $input['day'], (int) $input['year'] );
    if( isset( $input['day'] ) || isset( $input['hour'] ) || isset( $input['min'] ) || isset( $input['sec'] ))
      return FALSE;
    if(( 0 == $input[0] ) || ( 0 == $input[1] ) || ( 0 == $input[2] ))
      return FALSE;
    if(( 1970 > $input[0] ) || ( 12 < $input[1] ) || ( 31 < $input[2] ))
      return FALSE;
    if(( isset( $input[0] ) && isset( $input[1] ) && isset( $input[2] )) &&
         checkdate((int) $input[1], (int) $input[2], (int) $input[0] ))
      return TRUE;
    $input = iCalUtilityFunctions::_strdate2date( $input[1].'/'.$input[2].'/'.$input[0], 3 ); //  m - d - Y
    if( isset( $input['year'] ) && isset( $input['month'] ) && isset( $input['day'] ))
      return checkdate( (int) $input['month'], (int) $input['day'], (int) $input['year'] );
    return FALSE;
  }
/**
 * checks if input array contains a timestamp date
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.4.16 - 2008-10-18
 * @param array $input
 * @return bool
 */
  public static function _isArrayTimestampDate( $input ) {
    return ( is_array( $input ) && isset( $input['timestamp'] )) ? TRUE : FALSE ;
  }
/**
 * controls if input string contains (trailing) UTC/iCal offset
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.14.1 - 2012-09-21
 * @param string $input
 * @return bool
 */
  public static function _isOffset( $input ) {
    $input         = trim( (string) $input );
    if( 'Z' == substr( $input, -1 ))
      return TRUE;
    elseif((   5 <= strlen( $input )) &&
       ( in_array( substr( $input, -5, 1 ), array( '+', '-' ))) &&
       (   '0000' <= substr( $input, -4 )) && (   '9999' >= substr( $input, -4 )))
      return TRUE;
    elseif((    7 <= strlen( $input )) &&
       ( in_array( substr( $input, -7, 1 ), array( '+', '-' ))) &&
       ( '000000' <= substr( $input, -6 )) && ( '999999' >= substr( $input, -6 )))
      return TRUE;
    return FALSE;
  }
/**
 * (very simple) conversion of a MS timezone to a PHP5 valid (Date-)timezone
 * matching (MS) UCT offset and time zone descriptors
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.14.1 - 2012-09-16
 * @param string $timezone, input/output variable reference
 * @return bool
 */
  public static function ms2phpTZ( & $timezone ) {
    if( empty( $timezone ))
      return FALSE;
    $search = str_replace( '"', '', $timezone );
    $search = str_replace( array('GMT', 'gmt', 'utc' ), 'UTC', $search );
    if( '(UTC' != substr( $search, 0, 4 ))
      return FALSE;
    if( FALSE === ( $pos = strpos( $search, ')' )))
      return FALSE;
    $pos    = strpos( $search, ')' );
    $searchOffset = substr( $search, 4, ( $pos - 4 ));
    $searchOffset = iCalUtilityFunctions::_tz2offset( str_replace( ':', '', $searchOffset ));
    while( ' ' ==substr( $search, ( $pos + 1 )))
      $pos += 1;
    $searchText   = trim( str_replace( array( '(', ')', '&', ',', '  ' ), ' ', substr( $search, ( $pos + 1 )) ));
    $searchWords  = explode( ' ', $searchText );
    $timezone_abbreviations = DateTimeZone::listAbbreviations();
    $hits = array();
    foreach( $timezone_abbreviations as $name => $transitions ) {
      foreach( $transitions as $cnt => $transition ) {
        if( empty( $transition['offset'] )      ||
            empty( $transition['timezone_id'] ) ||
          ( $transition['offset'] != $searchOffset ))
        continue;
        $cWords = explode( '/', $transition['timezone_id'] );
        $cPrio   = $hitCnt = $rank = 0;
        foreach( $cWords as $cWord ) {
          if( empty( $cWord ))
            continue;
          $cPrio += 1;
          $sPrio  = 0;
          foreach( $searchWords as $sWord ) {
            if( empty( $sWord ) || ( 'time' == strtolower( $sWord )))
              continue;
            $sPrio += 1;
            if( strtolower( $cWord ) == strtolower( $sWord )) {
              $hitCnt += 1;
              $rank   += ( $cPrio + $sPrio );
            }
            else
              $rank += 10;
          }
        }
        if( 0 < $hitCnt ) {
          $hits[$rank][] = $transition['timezone_id'];
        }
      }
    }
    unset( $timezone_abbreviations );
    if( empty( $hits ))
      return FALSE;
    ksort( $hits );
    foreach( $hits as $rank => $tzs ) {
      if( !empty( $tzs )) {
        $timezone = reset( $tzs );
        return TRUE;
      }
    }
    return FALSE;
  }
/**
 * transforms offset in seconds to [-/+]hhmm[ss]
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2011-05-02
 * @param string $seconds
 * @return string
 */
  public static function offsetSec2His( $seconds ) {
    if( '-' == substr( $seconds, 0, 1 )) {
      $prefix  = '-';
      $seconds = substr( $seconds, 1 );
    }
    elseif( '+' == substr( $seconds, 0, 1 )) {
      $prefix  = '+';
      $seconds = substr( $seconds, 1 );
    }
    else
      $prefix  = '+';
    $output  = '';
    $hour    = (int) floor( $seconds / 3600 );
    if( 10 > $hour )
      $hour  = '0'.$hour;
    $seconds = $seconds % 3600;
    $min     = (int) floor( $seconds / 60 );
    if( 10 > $min )
      $min   = '0'.$min;
    $output  = $hour.$min;
    $seconds = $seconds % 60;
    if( 0 < $seconds) {
      if( 9 < $seconds)
        $output .= $seconds;
      else
        $output .= '0'.$seconds;
    }
    return $prefix.$output;
  }
/**
 * updates an array with dates based on a recur pattern
 *
 * if missing, UNTIL is set 1 year from startdate (emergency break)
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.10.19 - 2011-10-31
 * @param array $result, array to update, array([timestamp] => timestamp)
 * @param array $recur, pattern for recurrency (only value part, params ignored)
 * @param array $wdate, component start date
 * @param array $startdate, start date
 * @param array $enddate, optional
 * @return void
 * @todo BYHOUR, BYMINUTE, BYSECOND, WEEKLY at year end/start
 */
  public static function _recur2date( & $result, $recur, $wdate, $startdate, $enddate=FALSE ) {
    foreach( $wdate as $k => $v ) if( ctype_digit( $v )) $wdate[$k] = (int) $v;
    $wdateStart  = $wdate;
    $wdatets     = iCalUtilityFunctions::_date2timestamp( $wdate );
    $startdatets = iCalUtilityFunctions::_date2timestamp( $startdate );
    if( !$enddate ) {
      $enddate = $startdate;
      $enddate['year'] += 1;
    }
// echo "recur __in_ comp start ".implode('-',$wdate)." period start ".implode('-',$startdate)." period end ".implode('-',$enddate)."<br>\n";print_r($recur);echo "<br>\n";//test###
    $endDatets = iCalUtilityFunctions::_date2timestamp( $enddate ); // fix break
    if( !isset( $recur['COUNT'] ) && !isset( $recur['UNTIL'] ))
      $recur['UNTIL'] = $enddate; // create break
    if( isset( $recur['UNTIL'] )) {
      $tdatets = iCalUtilityFunctions::_date2timestamp( $recur['UNTIL'] );
      if( $endDatets > $tdatets ) {
        $endDatets = $tdatets; // emergency break
        $enddate   = iCalUtilityFunctions::_timestamp2date( $endDatets, 6 );
      }
      else
        $recur['UNTIL'] = iCalUtilityFunctions::_timestamp2date( $endDatets, 6 );
    }
    if( $wdatets > $endDatets ) {
// echo "recur out of date ".date('Y-m-d H:i:s',$wdatets)."<br>\n";//test
      return array(); // nothing to do.. .
    }
    if( !isset( $recur['FREQ'] )) // "MUST be specified.. ."
      $recur['FREQ'] = 'DAILY'; // ??
    $wkst = ( isset( $recur['WKST'] ) && ( 'SU' == $recur['WKST'] )) ? 24*60*60 : 0; // ??
    $weekStart = (int) date( 'W', ( $wdatets + $wkst ));
    if( !isset( $recur['INTERVAL'] ))
      $recur['INTERVAL'] = 1;
    $countcnt = ( !isset( $recur['BYSETPOS'] )) ? 1 : 0; // DTSTART counts as the first occurrence
            /* find out how to step up dates and set index for interval count */
    $step = array();
    if( 'YEARLY' == $recur['FREQ'] )
      $step['year']  = 1;
    elseif( 'MONTHLY' == $recur['FREQ'] )
      $step['month'] = 1;
    elseif( 'WEEKLY' == $recur['FREQ'] )
      $step['day']   = 7;
    else
      $step['day']   = 1;
    if( isset( $step['year'] ) && isset( $recur['BYMONTH'] ))
      $step = array( 'month' => 1 );
    if( empty( $step ) && isset( $recur['BYWEEKNO'] )) // ??
      $step = array( 'day' => 7 );
    if( isset( $recur['BYYEARDAY'] ) || isset( $recur['BYMONTHDAY'] ) || isset( $recur['BYDAY'] ))
      $step = array( 'day' => 1 );
    $intervalarr = array();
    if( 1 < $recur['INTERVAL'] ) {
      $intervalix = iCalUtilityFunctions::_recurIntervalIx( $recur['FREQ'], $wdate, $wkst );
      $intervalarr = array( $intervalix => 0 );
    }
    if( isset( $recur['BYSETPOS'] )) { // save start date + weekno
      $bysetposymd1 = $bysetposymd2 = $bysetposw1 = $bysetposw2 = array();
// echo "bysetposXold_start=$bysetposYold $bysetposMold $bysetposDold<br>\n"; // test ###
      if( is_array( $recur['BYSETPOS'] )) {
        foreach( $recur['BYSETPOS'] as $bix => $bval )
          $recur['BYSETPOS'][$bix] = (int) $bval;
      }
      else
        $recur['BYSETPOS'] = array( (int) $recur['BYSETPOS'] );
      if( 'YEARLY' == $recur['FREQ'] ) {
        $wdate['month'] = $wdate['day'] = 1; // start from beginning of year
        $wdatets        = iCalUtilityFunctions::_date2timestamp( $wdate );
        iCalUtilityFunctions::_stepdate( $enddate, $endDatets, array( 'year' => 1 )); // make sure to count whole last year
      }
      elseif( 'MONTHLY' == $recur['FREQ'] ) {
        $wdate['day']   = 1; // start from beginning of month
        $wdatets        = iCalUtilityFunctions::_date2timestamp( $wdate );
        iCalUtilityFunctions::_stepdate( $enddate, $endDatets, array( 'month' => 1 )); // make sure to count whole last month
      }
      else
        iCalUtilityFunctions::_stepdate( $enddate, $endDatets, $step); // make sure to count whole last period
// echo "BYSETPOS endDat++ =".implode('-',$enddate).' step='.var_export($step,TRUE)."<br>\n";//test###
      $bysetposWold = (int) date( 'W', ( $wdatets + $wkst ));
      $bysetposYold = $wdate['year'];
      $bysetposMold = $wdate['month'];
      $bysetposDold = $wdate['day'];
    }
    else
      iCalUtilityFunctions::_stepdate( $wdate, $wdatets, $step);
    $year_old     = null;
    $daynames     = array( 'SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA' );
             /* MAIN LOOP */
// echo "recur start ".implode('-',$wdate)." end ".implode('-',$enddate)."<br>\n";//test
    while( TRUE ) {
      if( isset( $endDatets ) && ( $wdatets > $endDatets ))
        break;
      if( isset( $recur['COUNT'] ) && ( $countcnt >= $recur['COUNT'] ))
        break;
      if( $year_old != $wdate['year'] ) {
        $year_old   = $wdate['year'];
        $daycnts    = array();
        $yeardays   = $weekno = 0;
        $yeardaycnt = array();
        foreach( $daynames as $dn )
          $yeardaycnt[$dn] = 0;
        for( $m = 1; $m <= 12; $m++ ) { // count up and update up-counters
          $daycnts[$m] = array();
          $weekdaycnt = array();
          foreach( $daynames as $dn )
            $weekdaycnt[$dn] = 0;
          $mcnt     = date( 't', mktime( 0, 0, 0, $m, 1, $wdate['year'] ));
          for( $d   = 1; $d <= $mcnt; $d++ ) {
            $daycnts[$m][$d] = array();
            if( isset( $recur['BYYEARDAY'] )) {
              $yeardays++;
              $daycnts[$m][$d]['yearcnt_up'] = $yeardays;
            }
            if( isset( $recur['BYDAY'] )) {
              $day    = date( 'w', mktime( 0, 0, 0, $m, $d, $wdate['year'] ));
              $day    = $daynames[$day];
              $daycnts[$m][$d]['DAY'] = $day;
              $weekdaycnt[$day]++;
              $daycnts[$m][$d]['monthdayno_up'] = $weekdaycnt[$day];
              $yeardaycnt[$day]++;
              $daycnts[$m][$d]['yeardayno_up'] = $yeardaycnt[$day];
            }
            if(  isset( $recur['BYWEEKNO'] ) || ( $recur['FREQ'] == 'WEEKLY' ))
              $daycnts[$m][$d]['weekno_up'] =(int)date('W',mktime(0,0,$wkst,$m,$d,$wdate['year']));
          }
        }
        $daycnt = 0;
        $yeardaycnt = array();
        if(  isset( $recur['BYWEEKNO'] ) || ( $recur['FREQ'] == 'WEEKLY' )) {
          $weekno = null;
          for( $d=31; $d > 25; $d-- ) { // get last weekno for year
            if( !$weekno )
              $weekno = $daycnts[12][$d]['weekno_up'];
            elseif( $weekno < $daycnts[12][$d]['weekno_up'] ) {
              $weekno = $daycnts[12][$d]['weekno_up'];
              break;
            }
          }
        }
        for( $m = 12; $m > 0; $m-- ) { // count down and update down-counters
          $weekdaycnt = array();
          foreach( $daynames as $dn )
            $yeardaycnt[$dn] = $weekdaycnt[$dn] = 0;
          $monthcnt = 0;
          $mcnt     = date( 't', mktime( 0, 0, 0, $m, 1, $wdate['year'] ));
          for( $d   = $mcnt; $d > 0; $d-- ) {
            if( isset( $recur['BYYEARDAY'] )) {
              $daycnt -= 1;
              $daycnts[$m][$d]['yearcnt_down'] = $daycnt;
            }
            if( isset( $recur['BYMONTHDAY'] )) {
              $monthcnt -= 1;
              $daycnts[$m][$d]['monthcnt_down'] = $monthcnt;
            }
            if( isset( $recur['BYDAY'] )) {
              $day  = $daycnts[$m][$d]['DAY'];
              $weekdaycnt[$day] -= 1;
              $daycnts[$m][$d]['monthdayno_down'] = $weekdaycnt[$day];
              $yeardaycnt[$day] -= 1;
              $daycnts[$m][$d]['yeardayno_down'] = $yeardaycnt[$day];
            }
            if(  isset( $recur['BYWEEKNO'] ) || ( $recur['FREQ'] == 'WEEKLY' ))
              $daycnts[$m][$d]['weekno_down'] = ($daycnts[$m][$d]['weekno_up'] - $weekno - 1);
          }
        }
      }
            /* check interval */
      if( 1 < $recur['INTERVAL'] ) {
            /* create interval index */
        $intervalix = iCalUtilityFunctions::_recurIntervalIx( $recur['FREQ'], $wdate, $wkst );
            /* check interval */
        $currentKey = array_keys( $intervalarr );
        $currentKey = end( $currentKey ); // get last index
        if( $currentKey != $intervalix )
          $intervalarr = array( $intervalix => ( $intervalarr[$currentKey] + 1 ));
        if(( $recur['INTERVAL'] != $intervalarr[$intervalix] ) &&
           ( 0 != $intervalarr[$intervalix] )) {
            /* step up date */
// echo "skip: ".implode('-',$wdate)." ix=$intervalix old=$currentKey interval=".$intervalarr[$intervalix]."<br>\n";//test
          iCalUtilityFunctions::_stepdate( $wdate, $wdatets, $step);
          continue;
        }
        else // continue within the selected interval
          $intervalarr[$intervalix] = 0;
// echo "cont: ".implode('-',$wdate)." ix=$intervalix old=$currentKey interval=".$intervalarr[$intervalix]."<br>\n";//test
      }
      $updateOK = TRUE;
      if( $updateOK && isset( $recur['BYMONTH'] ))
        $updateOK = iCalUtilityFunctions::_recurBYcntcheck( $recur['BYMONTH']
                                           , $wdate['month']
                                           ,($wdate['month'] - 13));
      if( $updateOK && isset( $recur['BYWEEKNO'] ))
        $updateOK = iCalUtilityFunctions::_recurBYcntcheck( $recur['BYWEEKNO']
                                           , $daycnts[$wdate['month']][$wdate['day']]['weekno_up']
                                           , $daycnts[$wdate['month']][$wdate['day']]['weekno_down'] );
      if( $updateOK && isset( $recur['BYYEARDAY'] ))
        $updateOK = iCalUtilityFunctions::_recurBYcntcheck( $recur['BYYEARDAY']
                                           , $daycnts[$wdate['month']][$wdate['day']]['yearcnt_up']
                                           , $daycnts[$wdate['month']][$wdate['day']]['yearcnt_down'] );
      if( $updateOK && isset( $recur['BYMONTHDAY'] ))
        $updateOK = iCalUtilityFunctions::_recurBYcntcheck( $recur['BYMONTHDAY']
                                           , $wdate['day']
                                           , $daycnts[$wdate['month']][$wdate['day']]['monthcnt_down'] );
// echo "efter BYMONTHDAY: ".implode('-',$wdate).' status: '; echo ($updateOK) ? 'TRUE' : 'FALSE'; echo "<br>\n";//test###
      if( $updateOK && isset( $recur['BYDAY'] )) {
        $updateOK = FALSE;
        $m = $wdate['month'];
        $d = $wdate['day'];
        if( isset( $recur['BYDAY']['DAY'] )) { // single day, opt with year/month day order no
          $daynoexists = $daynosw = $daynamesw =  FALSE;
          if( $recur['BYDAY']['DAY'] == $daycnts[$m][$d]['DAY'] )
            $daynamesw = TRUE;
          if( isset( $recur['BYDAY'][0] )) {
            $daynoexists = TRUE;
            if(( isset( $recur['FREQ'] ) && ( $recur['FREQ'] == 'MONTHLY' )) || isset( $recur['BYMONTH'] ))
              $daynosw = iCalUtilityFunctions::_recurBYcntcheck( $recur['BYDAY'][0]
                                                , $daycnts[$m][$d]['monthdayno_up']
                                                , $daycnts[$m][$d]['monthdayno_down'] );
            elseif( isset( $recur['FREQ'] ) && ( $recur['FREQ'] == 'YEARLY' ))
              $daynosw = iCalUtilityFunctions::_recurBYcntcheck( $recur['BYDAY'][0]
                                                , $daycnts[$m][$d]['yeardayno_up']
                                                , $daycnts[$m][$d]['yeardayno_down'] );
          }
          if((  $daynoexists &&  $daynosw && $daynamesw ) ||
             ( !$daynoexists && !$daynosw && $daynamesw )) {
            $updateOK = TRUE;
// echo "m=$m d=$d day=".$daycnts[$m][$d]['DAY']." yeardayno_up=".$daycnts[$m][$d]['yeardayno_up']." daynoexists:$daynoexists daynosw:$daynosw daynamesw:$daynamesw updateOK:$updateOK<br>\n"; // test ###
          }
// echo "m=$m d=$d day=".$daycnts[$m][$d]['DAY']." yeardayno_up=".$daycnts[$m][$d]['yeardayno_up']." daynoexists:$daynoexists daynosw:$daynosw daynamesw:$daynamesw updateOK:$updateOK<br>\n"; // test ###
        }
        else {
          foreach( $recur['BYDAY'] as $bydayvalue ) {
            $daynoexists = $daynosw = $daynamesw = FALSE;
            if( isset( $bydayvalue['DAY'] ) &&
                     ( $bydayvalue['DAY'] == $daycnts[$m][$d]['DAY'] ))
              $daynamesw = TRUE;
            if( isset( $bydayvalue[0] )) {
              $daynoexists = TRUE;
              if(( isset( $recur['FREQ'] ) && ( $recur['FREQ'] == 'MONTHLY' )) ||
                   isset( $recur['BYMONTH'] ))
                $daynosw = iCalUtilityFunctions::_recurBYcntcheck( $bydayvalue['0']
                                                  , $daycnts[$m][$d]['monthdayno_up']
                                                  , $daycnts[$m][$d]['monthdayno_down'] );
              elseif( isset( $recur['FREQ'] ) && ( $recur['FREQ'] == 'YEARLY' ))
                $daynosw = iCalUtilityFunctions::_recurBYcntcheck( $bydayvalue['0']
                                                  , $daycnts[$m][$d]['yeardayno_up']
                                                  , $daycnts[$m][$d]['yeardayno_down'] );
            }
// echo "daynoexists:$daynoexists daynosw:$daynosw daynamesw:$daynamesw<br>\n"; // test ###
            if((  $daynoexists &&  $daynosw && $daynamesw ) ||
               ( !$daynoexists && !$daynosw && $daynamesw )) {
              $updateOK = TRUE;
              break;
            }
          }
        }
      }
// echo "efter BYDAY: ".implode('-',$wdate).' status: '; echo ($updateOK) ? 'TRUE' : 'FALSE'; echo "<br>\n"; // test ###
            /* check BYSETPOS */
      if( $updateOK ) {
        if( isset( $recur['BYSETPOS'] ) &&
          ( in_array( $recur['FREQ'], array( 'YEARLY', 'MONTHLY', 'WEEKLY', 'DAILY' )))) {
          if( isset( $recur['WEEKLY'] )) {
            if( $bysetposWold == $daycnts[$wdate['month']][$wdate['day']]['weekno_up'] )
              $bysetposw1[] = $wdatets;
            else
              $bysetposw2[] = $wdatets;
          }
          else {
            if(( isset( $recur['FREQ'] ) && ( 'YEARLY'      == $recur['FREQ'] )  &&
                                            ( $bysetposYold == $wdate['year'] ))   ||
               ( isset( $recur['FREQ'] ) && ( 'MONTHLY'     == $recur['FREQ'] )  &&
                                           (( $bysetposYold == $wdate['year'] )  &&
                                            ( $bysetposMold == $wdate['month'] ))) ||
               ( isset( $recur['FREQ'] ) && ( 'DAILY'       == $recur['FREQ'] )  &&
                                           (( $bysetposYold == $wdate['year'] )  &&
                                            ( $bysetposMold == $wdate['month'])  &&
                                            ( $bysetposDold == $wdate['day'] )))) {
// echo "bysetposymd1[]=".date('Y-m-d H:i:s',$wdatets)."<br>\n";//test
              $bysetposymd1[] = $wdatets;
            }
            else {
// echo "bysetposymd2[]=".date('Y-m-d H:i:s',$wdatets)."<br>\n";//test
              $bysetposymd2[] = $wdatets;
            }
          }
        }
        else {
            /* update result array if BYSETPOS is set */
          $countcnt++;
          if( $startdatets <= $wdatets ) { // only output within period
            $result[$wdatets] = TRUE;
// echo "recur ".date('Y-m-d H:i:s',$wdatets)."<br>\n";//test
          }
// echo "recur undate ".date('Y-m-d H:i:s',$wdatets)." okdatstart ".date('Y-m-d H:i:s',$startdatets)."<br>\n";//test
          $updateOK = FALSE;
        }
      }
            /* step up date */
      iCalUtilityFunctions::_stepdate( $wdate, $wdatets, $step);
            /* check if BYSETPOS is set for updating result array */
      if( $updateOK && isset( $recur['BYSETPOS'] )) {
        $bysetpos       = FALSE;
        if( isset( $recur['FREQ'] ) && ( 'YEARLY'  == $recur['FREQ'] ) &&
          ( $bysetposYold != $wdate['year'] )) {
          $bysetpos     = TRUE;
          $bysetposYold = $wdate['year'];
        }
        elseif( isset( $recur['FREQ'] ) && ( 'MONTHLY' == $recur['FREQ'] &&
         (( $bysetposYold != $wdate['year'] ) || ( $bysetposMold != $wdate['month'] )))) {
          $bysetpos     = TRUE;
          $bysetposYold = $wdate['year'];
          $bysetposMold = $wdate['month'];
        }
        elseif( isset( $recur['FREQ'] ) && ( 'WEEKLY'  == $recur['FREQ'] )) {
          $weekno = (int) date( 'W', mktime( 0, 0, $wkst, $wdate['month'], $wdate['day'], $wdate['year']));
          if( $bysetposWold != $weekno ) {
            $bysetposWold = $weekno;
            $bysetpos     = TRUE;
          }
        }
        elseif( isset( $recur['FREQ'] ) && ( 'DAILY'   == $recur['FREQ'] ) &&
         (( $bysetposYold != $wdate['year'] )  ||
          ( $bysetposMold != $wdate['month'] ) ||
          ( $bysetposDold != $wdate['day'] ))) {
          $bysetpos     = TRUE;
          $bysetposYold = $wdate['year'];
          $bysetposMold = $wdate['month'];
          $bysetposDold = $wdate['day'];
        }
        if( $bysetpos ) {
          if( isset( $recur['BYWEEKNO'] )) {
            $bysetposarr1 = & $bysetposw1;
            $bysetposarr2 = & $bysetposw2;
          }
          else {
            $bysetposarr1 = & $bysetposymd1;
            $bysetposarr2 = & $bysetposymd2;
          }
// echo 'test före out startYMD (weekno)='.$wdateStart['year'].':'.$wdateStart['month'].':'.$wdateStart['day']." ($weekStart) "; // test ###
          foreach( $recur['BYSETPOS'] as $ix ) {
            if( 0 > $ix ) // both positive and negative BYSETPOS allowed
              $ix = ( count( $bysetposarr1 ) + $ix + 1);
            $ix--;
            if( isset( $bysetposarr1[$ix] )) {
              if( $startdatets <= $bysetposarr1[$ix] ) { // only output within period
//                $testdate   = iCalUtilityFunctions::_timestamp2date( $bysetposarr1[$ix], 6 );                // test ###
//                $testweekno = (int) date( 'W', mktime( 0, 0, $wkst, $testdate['month'], $testdate['day'], $testdate['year'] )); // test ###
// echo " testYMD (weekno)=".$testdate['year'].':'.$testdate['month'].':'.$testdate['day']." ($testweekno)";   // test ###
                $result[$bysetposarr1[$ix]] = TRUE;
// echo " recur ".date('Y-m-d H:i:s',$bysetposarr1[$ix]); // test ###
              }
              $countcnt++;
            }
            if( isset( $recur['COUNT'] ) && ( $countcnt >= $recur['COUNT'] ))
              break;
          }
// echo "<br>\n"; // test ###
          $bysetposarr1 = $bysetposarr2;
          $bysetposarr2 = array();
        }
      }
    }
  }
  public static function _recurBYcntcheck( $BYvalue, $upValue, $downValue ) {
    if( is_array( $BYvalue ) &&
      ( in_array( $upValue, $BYvalue ) || in_array( $downValue, $BYvalue )))
      return TRUE;
    elseif(( $BYvalue == $upValue ) || ( $BYvalue == $downValue ))
      return TRUE;
    else
      return FALSE;
  }
  public static function _recurIntervalIx( $freq, $date, $wkst ) {
            /* create interval index */
    switch( $freq ) {
      case 'YEARLY':
        $intervalix = $date['year'];
        break;
      case 'MONTHLY':
        $intervalix = $date['year'].'-'.$date['month'];
        break;
      case 'WEEKLY':
        $wdatets    = iCalUtilityFunctions::_date2timestamp( $date );
        $intervalix = (int) date( 'W', ( $wdatets + $wkst ));
       break;
      case 'DAILY':
           default:
        $intervalix = $date['year'].'-'.$date['month'].'-'.$date['day'];
        break;
    }
    return $intervalix;
  }
  public static function _recurBydaySort( $bydaya, $bydayb ) {
    static $days = array( 'SU' => 0, 'MO' => 1, 'TU' => 2, 'WE' => 3, 'TH' => 4, 'FR' => 5, 'SA' => 6 );
    return ( $days[substr( $bydaya, -2 )] < $days[substr( $bydayb, -2 )] ) ? -1 : 1;
  }
/**
 * convert input format for exrule and rrule to internal format
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.14.1 - 2012-09-24
 * @param array $rexrule
 * @return array
 */
  public static function _setRexrule( $rexrule ) {
    $input          = array();
    if( empty( $rexrule ))
      return $input;
    foreach( $rexrule as $rexrulelabel => $rexrulevalue ) {
      $rexrulelabel = strtoupper( $rexrulelabel );
      if( 'UNTIL'  != $rexrulelabel )
        $input[$rexrulelabel]   = $rexrulevalue;
      else {
        iCalUtilityFunctions::_strDate2arr( $rexrulevalue );
        if( iCalUtilityFunctions::_isArrayTimestampDate( $rexrulevalue )) // timestamp, always date-time UTC
          $input[$rexrulelabel] = iCalUtilityFunctions::_timestamp2date( $rexrulevalue, 7, 'UTC' );
        elseif( iCalUtilityFunctions::_isArrayDate( $rexrulevalue )) { // date or UTC date-time
          $parno = ( isset( $rexrulevalue['hour'] ) || isset( $rexrulevalue[4] )) ? 7 : 3;
          $d = iCalUtilityFunctions::_chkDateArr( $rexrulevalue, $parno );
          if(( 3 < $parno ) && isset( $d['tz'] ) && ( 'Z' != $d['tz'] ) && iCalUtilityFunctions::_isOffset( $d['tz'] )) {
            $strdate              = sprintf( '%04d-%02d-%02d %02d:%02d:%02d %s', $d['year'], $d['month'], $d['day'], $d['hour'], $d['min'], $d['sec'], $d['tz'] );
            $input[$rexrulelabel] = iCalUtilityFunctions::_strdate2date( $strdate, 7 );
            unset( $input[$rexrulelabel]['unparsedtext'] );
          }
          else
           $input[$rexrulelabel] = $d;
        }
        elseif( 8 <= strlen( trim( $rexrulevalue ))) { // ex. textual date-time 2006-08-03 10:12:18 => UTC
          $input[$rexrulelabel] = iCalUtilityFunctions::_strdate2date( $rexrulevalue );
          unset( $input['$rexrulelabel']['unparsedtext'] );
        }
        if(( 3 < count( $input[$rexrulelabel] )) && !isset( $input[$rexrulelabel]['tz'] ))
          $input[$rexrulelabel]['tz'] = 'Z';
      }
    }
            /* set recurrence rule specification in rfc2445 order */
    $input2 = array();
    if( isset( $input['FREQ'] ))
      $input2['FREQ']       = $input['FREQ'];
    if( isset( $input['UNTIL'] ))
      $input2['UNTIL']      = $input['UNTIL'];
    elseif( isset( $input['COUNT'] ))
      $input2['COUNT']      = $input['COUNT'];
    if( isset( $input['INTERVAL'] ))
      $input2['INTERVAL']   = $input['INTERVAL'];
    if( isset( $input['BYSECOND'] ))
      $input2['BYSECOND']   = $input['BYSECOND'];
    if( isset( $input['BYMINUTE'] ))
      $input2['BYMINUTE']   = $input['BYMINUTE'];
    if( isset( $input['BYHOUR'] ))
      $input2['BYHOUR']     = $input['BYHOUR'];
    if( isset( $input['BYDAY'] )) {
      if( !is_array( $input['BYDAY'] )) // ensure upper case.. .
        $input2['BYDAY']    = strtoupper( $input['BYDAY'] );
      else {
        foreach( $input['BYDAY'] as $BYDAYx => $BYDAYv ) {
          if( 'DAY'        == strtoupper( $BYDAYx ))
             $input2['BYDAY']['DAY'] = strtoupper( $BYDAYv );
          elseif( !is_array( $BYDAYv )) {
             $input2['BYDAY'][$BYDAYx]  = $BYDAYv;
          }
          else {
            foreach( $BYDAYv as $BYDAYx2 => $BYDAYv2 ) {
              if( 'DAY'    == strtoupper( $BYDAYx2 ))
                 $input2['BYDAY'][$BYDAYx]['DAY'] = strtoupper( $BYDAYv2 );
              else
                 $input2['BYDAY'][$BYDAYx][$BYDAYx2] = $BYDAYv2;
            }
          }
        }
      }
    }
    if( isset( $input['BYMONTHDAY'] ))
      $input2['BYMONTHDAY'] = $input['BYMONTHDAY'];
    if( isset( $input['BYYEARDAY'] ))
      $input2['BYYEARDAY']  = $input['BYYEARDAY'];
    if( isset( $input['BYWEEKNO'] ))
      $input2['BYWEEKNO']   = $input['BYWEEKNO'];
    if( isset( $input['BYMONTH'] ))
      $input2['BYMONTH']    = $input['BYMONTH'];
    if( isset( $input['BYSETPOS'] ))
      $input2['BYSETPOS']   = $input['BYSETPOS'];
    if( isset( $input['WKST'] ))
      $input2['WKST']       = $input['WKST'];
    return $input2;
  }
/**
 * convert format for input date to internal date with parameters
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.24 - 2013-06-26
 * @param mixed  $year
 * @param mixed  $month   optional
 * @param int    $day     optional
 * @param int    $hour    optional
 * @param int    $min     optional
 * @param int    $sec     optional
 * @param string $tz      optional
 * @param array  $params  optional
 * @param string $caller  optional
 * @param string $objName optional
 * @param string $tzid    optional
 * @return array
 */
  public static function _setDate( $year, $month=FALSE, $day=FALSE, $hour=FALSE, $min=FALSE, $sec=FALSE, $tz=FALSE, $params=FALSE, $caller=null, $objName=null, $tzid=FALSE ) {
    $input = $parno = null;
    $localtime = (( 'dtstart' == $caller ) && in_array( $objName, array( 'vtimezone', 'standard', 'daylight' ))) ? TRUE : FALSE;
    iCalUtilityFunctions::_strDate2arr( $year );
    if( iCalUtilityFunctions::_isArrayDate( $year )) {
      $input['value']  = iCalUtilityFunctions::_chkDateArr( $year, FALSE ); //$parno );
      if( 100 > $input['value']['year'] )
        $input['value']['year'] += 2000;
      if( $localtime )
        unset( $month['VALUE'], $month['TZID'] );
      elseif( !isset( $month['TZID'] ) && isset( $tzid ))
        $month['TZID'] = $tzid;
      if( isset( $input['value']['tz'] ) && iCalUtilityFunctions::_isOffset( $input['value']['tz'] ))
        unset( $month['TZID'] );
      elseif( !isset( $input['value']['tz'] ) &&  isset( $month['TZID'] ) && iCalUtilityFunctions::_isOffset( $month['TZID'] )) {
        $input['value']['tz'] = $month['TZID'];
        unset( $month['TZID'] );
      }
      $input['params'] = iCalUtilityFunctions::_setParams( $month, array( 'VALUE' => 'DATE-TIME' ));
      $hitval          = ( isset( $input['value']['tz'] )) ? 7 : 6;
      $parno           = iCalUtilityFunctions::_existRem( $input['params'], 'VALUE', 'DATE-TIME', $hitval );
      $parno           = iCalUtilityFunctions::_existRem( $input['params'], 'VALUE', 'DATE', 3, count( $input['value'] ), $parno );
      if( 6 > $parno )
        unset( $input['value']['tz'], $input['params']['TZID'], $tzid );
      if(( 6 <= $parno ) && isset( $input['value']['tz'] ) && ( 'Z' != $input['value']['tz'] ) && iCalUtilityFunctions::_isOffset( $input['value']['tz'] )) {
        $d             = $input['value'];
        $strdate       = sprintf( '%04d-%02d-%02d %02d:%02d:%02d %s', $d['year'], $d['month'], $d['day'], $d['hour'], $d['min'], $d['sec'], $d['tz'] );
        $input['value'] = iCalUtilityFunctions::_strdate2date( $strdate, $parno );
        unset( $input['value']['unparsedtext'], $input['params']['TZID'] );
      }
      if( isset( $input['value']['tz'] ) && !iCalUtilityFunctions::_isOffset( $input['value']['tz'] )) {
        $input['params']['TZID'] = $input['value']['tz'];
        unset( $input['value']['tz'] );
      }
    } // end if( iCalUtilityFunctions::_isArrayDate( $year ))
    elseif( iCalUtilityFunctions::_isArrayTimestampDate( $year )) {
      if( $localtime ) unset ( $month['VALUE'], $month['TZID'] );
      $input['params'] = iCalUtilityFunctions::_setParams( $month, array( 'VALUE' => 'DATE-TIME' ));
      $parno           = iCalUtilityFunctions::_existRem( $input['params'], 'VALUE', 'DATE', 3 );
      $hitval          = 7;
      $parno           = iCalUtilityFunctions::_existRem( $input['params'], 'VALUE', 'DATE-TIME', $hitval, $parno );
      if( isset( $year['tz'] ) && !empty( $year['tz'] )) {
        if( !iCalUtilityFunctions::_isOffset( $year['tz'] )) {
          $input['params']['TZID'] = $year['tz'];
          unset( $year['tz'], $tzid );
        }
        else {
          if( isset( $input['params']['TZID'] ) && !empty( $input['params']['TZID'] )) {
            if( !iCalUtilityFunctions::_isOffset( $input['params']['TZID'] ))
              unset( $tzid );
            else
              unset( $input['params']['TZID']);
          }
          elseif( isset( $tzid ) && !iCalUtilityFunctions::_isOffset( $tzid ))
            $input['params']['TZID'] = $tzid;
        }
      }
      elseif( isset( $input['params']['TZID'] ) && !empty( $input['params']['TZID'] )) {
        if( iCalUtilityFunctions::_isOffset( $input['params']['TZID'] )) {
          $year['tz'] = $input['params']['TZID'];
          unset( $input['params']['TZID']);
          if( isset( $tzid ) && !empty( $tzid ) && !iCalUtilityFunctions::_isOffset( $tzid ))
            $input['params']['TZID'] = $tzid;
        }
      }
      elseif( isset( $tzid ) && !empty( $tzid )) {
        if( iCalUtilityFunctions::_isOffset( $tzid )) {
          $year['tz'] = $tzid;
          unset( $input['params']['TZID']);
        }
        else
          $input['params']['TZID'] = $tzid;
      }
      $input['value']  = iCalUtilityFunctions::_timestamp2date( $year, $parno );
    } // end elseif( iCalUtilityFunctions::_isArrayTimestampDate( $year ))
    elseif( 8 <= strlen( trim( $year ))) { // ex. 2006-08-03 10:12:18 [[[+/-]1234[56]] / timezone]
      if( $localtime )
        unset( $month['VALUE'], $month['TZID'] );
      elseif( !isset( $month['TZID'] ) && !empty( $tzid ))
        $month['TZID'] = $tzid;
      $input['params'] = iCalUtilityFunctions::_setParams( $month, array( 'VALUE' => 'DATE-TIME' ));
      $parno           = iCalUtilityFunctions::_existRem( $input['params'], 'VALUE', 'DATE-TIME', 7, $parno );
      $parno           = iCalUtilityFunctions::_existRem( $input['params'], 'VALUE', 'DATE', 3, $parno, $parno );
      $input['value']  = iCalUtilityFunctions::_strdate2date( $year, $parno );
      if( 3 == $parno )
        unset( $input['value']['tz'], $input['params']['TZID'] );
      unset( $input['value']['unparsedtext'] );
      if( isset( $input['value']['tz'] )) {
        if( iCalUtilityFunctions::_isOffset( $input['value']['tz'] )) {
          $d           = $input['value'];
          $strdate     = sprintf( '%04d-%02d-%02d %02d:%02d:%02d %s', $d['year'], $d['month'], $d['day'], $d['hour'], $d['min'], $d['sec'], $d['tz'] );
          $input['value'] = iCalUtilityFunctions::_strdate2date( $strdate, 7 );
          unset( $input['value']['unparsedtext'], $input['params']['TZID'] );
        }
        else {
          $input['params']['TZID'] = $input['value']['tz'];
          unset( $input['value']['tz'] );
        }
      }
      elseif( isset( $input['params']['TZID'] ) && iCalUtilityFunctions::_isOffset( $input['params']['TZID'] )) {
        $d             = $input['value'];
        $strdate       = sprintf( '%04d-%02d-%02d %02d:%02d:%02d %s', $d['year'], $d['month'], $d['day'], $d['hour'], $d['min'], $d['sec'], $input['params']['TZID'] );
        $input['value'] = iCalUtilityFunctions::_strdate2date( $strdate, 7 );
        unset( $input['value']['unparsedtext'], $input['params']['TZID'] );
      }
    } // end elseif( 8 <= strlen( trim( $year )))
    else {
      if( is_array( $params ))
        $input['params'] = iCalUtilityFunctions::_setParams( $params, array( 'VALUE' => 'DATE-TIME' ));
      elseif( is_array( $tz )) {
        $input['params'] = iCalUtilityFunctions::_setParams( $tz,     array( 'VALUE' => 'DATE-TIME' ));
        $tz = FALSE;
      }
      elseif( is_array( $hour )) {
        $input['params'] = iCalUtilityFunctions::_setParams( $hour,   array( 'VALUE' => 'DATE-TIME' ));
        $hour = $min = $sec = $tz = FALSE;
      }
      if( $localtime )
        unset ( $input['params']['VALUE'], $input['params']['TZID'] );
      elseif( !isset( $tz ) && !isset( $input['params']['TZID'] ) && !empty( $tzid ))
        $input['params']['TZID'] = $tzid;
      elseif( isset( $tz ) && iCalUtilityFunctions::_isOffset( $tz ))
        unset( $input['params']['TZID'] );
      elseif( isset( $input['params']['TZID'] ) && iCalUtilityFunctions::_isOffset( $input['params']['TZID'] )) {
        $tz            = $input['params']['TZID'];
        unset( $input['params']['TZID'] );
      }
      $parno           = iCalUtilityFunctions::_existRem( $input['params'], 'VALUE', 'DATE', 3 );
      $hitval          = ( iCalUtilityFunctions::_isOffset( $tz )) ? 7 : 6;
      $parno           = iCalUtilityFunctions::_existRem( $input['params'], 'VALUE', 'DATE-TIME', $hitval, $parno, $parno );
      $input['value']  = array( 'year'  => $year, 'month' => $month, 'day'   => $day );
      if( 3 != $parno ) {
        $input['value']['hour'] = ( $hour ) ? $hour : '0';
        $input['value']['min']  = ( $min )  ? $min  : '0';
        $input['value']['sec']  = ( $sec )  ? $sec  : '0';
        if( !empty( $tz ))
          $input['value']['tz'] = $tz;
        $strdate       = iCalUtilityFunctions::_date2strdate( $input['value'], $parno );
        if( !empty( $tz ) && !iCalUtilityFunctions::_isOffset( $tz ))
          $strdate    .= ( 'Z' == $tz ) ? $tz : ' '.$tz;
        $input['value'] = iCalUtilityFunctions::_strdate2date( $strdate, $parno );
        unset( $input['value']['unparsedtext'] );
        if( isset( $input['value']['tz'] )) {
          if( iCalUtilityFunctions::_isOffset( $input['value']['tz'] )) {
            $d           = $input['value'];
            $strdate     = sprintf( '%04d-%02d-%02d %02d:%02d:%02d %s', $d['year'], $d['month'], $d['day'], $d['hour'], $d['min'], $d['sec'], $d['tz'] );
            $input['value'] = iCalUtilityFunctions::_strdate2date( $strdate, 7 );
            unset( $input['value']['unparsedtext'], $input['params']['TZID'] );
          }
          else {
            $input['params']['TZID'] = $input['value']['tz'];
            unset( $input['value']['tz'] );
          }
        }
        elseif( isset( $input['params']['TZID'] ) && iCalUtilityFunctions::_isOffset( $input['params']['TZID'] )) {
          $d             = $input['value'];
          $strdate       = sprintf( '%04d-%02d-%02d %02d:%02d:%02d %s', $d['year'], $d['month'], $d['day'], $d['hour'], $d['min'], $d['sec'], $input['params']['TZID'] );
          $input['value'] = iCalUtilityFunctions::_strdate2date( $strdate, 7 );
          unset( $input['value']['unparsedtext'], $input['params']['TZID'] );
        }
      }
    } // end else (i.e. using all arguments)
    if(( 3 == $parno ) || ( isset( $input['params']['VALUE'] ) && ( 'DATE' == $input['params']['VALUE'] ))) {
      $input['params']['VALUE'] = 'DATE';
      unset( $input['value']['hour'], $input['value']['min'], $input['value']['sec'], $input['value']['tz'], $input['params']['TZID'] );
    }
    elseif( isset( $input['params']['TZID'] )) {
      if(( 'UTC' == strtoupper( $input['params']['TZID'] )) || ( 'GMT' == strtoupper( $input['params']['TZID'] ))) {
        $input['value']['tz'] = 'Z';
        unset( $input['params']['TZID'] );
      }
      else
        unset( $input['value']['tz'] );
    }
    elseif( isset( $input['value']['tz'] )) {
      if(( 'UTC' == strtoupper( $input['value']['tz'] )) || ( 'GMT' == strtoupper( $input['value']['tz'] )))
        $input['value']['tz'] = 'Z';
      if( 'Z' != $input['value']['tz'] ) {
        $input['params']['TZID'] = $input['value']['tz'];
        unset( $input['value']['tz'] );
      }
      else
        unset( $input['params']['TZID'] );
    }
    if( $localtime )
      unset( $input['value']['tz'], $input['params']['TZID'] );
    return $input;
  }
/**
 * convert format for input date (UTC) to internal date with parameters
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.24 - 2013-07-01
 * @param mixed $year
 * @param mixed $month  optional
 * @param int   $day    optional
 * @param int   $hour   optional
 * @param int   $min    optional
 * @param int   $sec    optional
 * @param array $params optional
 * @return array
 */
  public static function _setDate2( $year, $month=FALSE, $day=FALSE, $hour=FALSE, $min=FALSE, $sec=FALSE, $params=FALSE ) {
    $input = null;
    iCalUtilityFunctions::_strDate2arr( $year );
    if( iCalUtilityFunctions::_isArrayDate( $year )) {
      $input['value']  = iCalUtilityFunctions::_chkDateArr( $year, 7 );
      if( isset( $input['value']['year'] ) && ( 100 > $input['value']['year'] ))
        $input['value']['year'] += 2000;
      $input['params'] = iCalUtilityFunctions::_setParams( $month, array( 'VALUE' => 'DATE-TIME' ));
      unset( $input['params']['VALUE']  );
      if( isset( $input['value']['tz'] ) && iCalUtilityFunctions::_isOffset( $input['value']['tz'] ))
        $tzid = $input['value']['tz'];
      elseif( isset( $input['params']['TZID'] ) && iCalUtilityFunctions::_isOffset( $input['params']['TZID'] ))
        $tzid = $input['params']['TZID'];
      else
        $tzid = '';
      unset( $input['params']['VALUE'], $input['params']['TZID']  );
      if( !empty( $tzid ) && ( 'Z' != $tzid ) && iCalUtilityFunctions::_isOffset( $tzid )) {
        $d             = $input['value'];
        $strdate       = sprintf( '%04d-%02d-%02d %02d:%02d:%02d %s', $d['year'], $d['month'], $d['day'], $d['hour'], $d['min'], $d['sec'], $tzid );
        $input['value'] = iCalUtilityFunctions::_strdate2date( $strdate, 7 );
        unset( $input['value']['unparsedtext'] );
      }
    }
    elseif( iCalUtilityFunctions::_isArrayTimestampDate( $year )) {
      if( isset( $year['tz'] ) && ! iCalUtilityFunctions::_isOffset( $year['tz'] ))
        $year['tz']    = 'UTC';
      elseif( isset( $input['params']['TZID'] ) && iCalUtilityFunctions::_isOffset( $input['params']['TZID'] ))
        $year['tz']    = $input['params']['TZID'];
      else
        $year['tz']    = 'UTC';
      $input['value']  = iCalUtilityFunctions::_timestamp2date( $year, 7 );
      $input['params'] = iCalUtilityFunctions::_setParams( $month, array( 'VALUE' => 'DATE-TIME' ));
      unset( $input['params']['VALUE'], $input['params']['TZID']  );
    }
    elseif( 8 <= strlen( trim( $year ))) { // ex. 2006-08-03 10:12:18
      $input['value']  = iCalUtilityFunctions::_strdate2date( $year, 7 );
      unset( $input['value']['unparsedtext'] );
      $input['params'] = iCalUtilityFunctions::_setParams( $month, array( 'VALUE' => 'DATE-TIME' ));
      if(( !isset( $input['value']['tz'] ) || empty( $input['value']['tz'] )) && isset( $input['params']['TZID'] ) && iCalUtilityFunctions::_isOffset( $input['params']['TZID'] )) {
        $d             = $input['value'];
        $strdate       = sprintf( '%04d-%02d-%02d %02d:%02d:%02d %s', $d['year'], $d['month'], $d['day'], $d['hour'], $d['min'], $d['sec'], $input['params']['TZID'] );
        $input['value'] = iCalUtilityFunctions::_strdate2date( $strdate, 7 );
        unset( $input['value']['unparsedtext'] );
      }
      unset( $input['params']['VALUE'], $input['params']['TZID']  );
    }
    else {
      $input['value']  = array( 'year'  => $year
                              , 'month' => $month
                              , 'day'   => $day
                              , 'hour'  => $hour
                              , 'min'   => $min
                              , 'sec'   => $sec );
      if(  isset( $tz )) $input['value']['tz'] = $tz;
      if(( isset( $tz ) && iCalUtilityFunctions::_isOffset( $tz )) ||
         ( isset( $input['params']['TZID'] ) && iCalUtilityFunctions::_isOffset( $input['params']['TZID'] ))) {
          if( !isset( $tz ) && isset( $input['params']['TZID'] ) && iCalUtilityFunctions::_isOffset( $input['params']['TZID'] ))
            $input['value']['tz'] = $input['params']['TZID'];
          unset( $input['params']['TZID'] );
        $strdate        = iCalUtilityFunctions::_date2strdate( $input['value'], 7 );
        $input['value'] = iCalUtilityFunctions::_strdate2date( $strdate, 7 );
        unset( $input['value']['unparsedtext'] );
      }
      $input['params'] = iCalUtilityFunctions::_setParams( $params, array( 'VALUE' => 'DATE-TIME' ));
      unset( $input['params']['VALUE']  );
    }
    $parno = iCalUtilityFunctions::_existRem( $input['params'], 'VALUE', 'DATE-TIME', 7 ); // remove default
    if( !isset( $input['value']['hour'] )) $input['value']['hour'] = 0;
    if( !isset( $input['value']['min'] ))  $input['value']['min']  = 0;
    if( !isset( $input['value']['sec'] ))  $input['value']['sec']  = 0;
    $input['value']['tz'] = 'Z';
    return $input;
  }
/**
 * check index and set (an indexed) content in multiple value array
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.6.12 - 2011-01-03
 * @param array $valArr
 * @param mixed $value
 * @param array $params
 * @param array $defaults
 * @param int $index
 * @return void
 */
  public static function _setMval( & $valArr, $value, $params=FALSE, $defaults=FALSE, $index=FALSE ) {
    if( !is_array( $valArr )) $valArr = array();
    if( $index )
      $index = $index - 1;
    elseif( 0 < count( $valArr )) {
      $keys  = array_keys( $valArr );
      $index = end( $keys ) + 1;
    }
    else
      $index = 0;
    $valArr[$index] = array( 'value' => $value, 'params' => iCalUtilityFunctions::_setParams( $params, $defaults ));
    ksort( $valArr );
  }
/**
 * set input (formatted) parameters- component property attributes
 *
 * default parameters can be set, if missing
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 1.x.x - 2007-05-01
 * @param array $params
 * @param array $defaults
 * @return array
 */
  public static function _setParams( $params, $defaults=FALSE ) {
    if( !is_array( $params))
      $params = array();
    $input = array();
    foreach( $params as $paramKey => $paramValue ) {
      if( is_array( $paramValue )) {
        foreach( $paramValue as $pkey => $pValue ) {
          if(( '"' == substr( $pValue, 0, 1 )) && ( '"' == substr( $pValue, -1 )))
            $paramValue[$pkey] = substr( $pValue, 1, ( strlen( $pValue ) - 2 ));
        }
      }
      elseif(( '"' == substr( $paramValue, 0, 1 )) && ( '"' == substr( $paramValue, -1 )))
        $paramValue = substr( $paramValue, 1, ( strlen( $paramValue ) - 2 ));
      if( 'VALUE' == strtoupper( $paramKey ))
        $input['VALUE']                 = strtoupper( $paramValue );
      else
        $input[strtoupper( $paramKey )] = $paramValue;
    }
    if( is_array( $defaults )) {
      foreach( $defaults as $paramKey => $paramValue ) {
        if( !isset( $input[$paramKey] ))
          $input[$paramKey] = $paramValue;
      }
    }
    return (0 < count( $input )) ? $input : null;
  }
/**
 * break lines at pos 75
 *
 * Lines of text SHOULD NOT be longer than 75 octets, excluding the line
 * break. Long content lines SHOULD be split into a multiple line
 * representations using a line "folding" technique. That is, a long
 * line can be split between any two characters by inserting a CRLF
 * immediately followed by a single linear white space character (i.e.,
 * SPACE, US-ASCII decimal 32 or HTAB, US-ASCII decimal 9). Any sequence
 * of CRLF followed immediately by a single linear white space character
 * is ignored (i.e., removed) when processing the content type.
 *
 * Edited 2007-08-26 by Anders Litzell, anders@litzell.se to fix bug where
 * the reserved expression "\n" in the arg $string could be broken up by the
 * folding of lines, causing ambiguity in the return string.
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @param string $value
 * @return string
 */
  public static function _size75( $string, $nl ) {
    $tmp             = $string;
    $string          = '';
    $cCnt = $x       = 0;
    while( TRUE ) {
      if( !isset( $tmp[$x] )) {
        $string     .= $nl;                           // loop breakes here
        break;
      }
      elseif(( 74   <= $cCnt ) && ( '\\'  == $tmp[$x] ) && ( 'n' == $tmp[$x+1] )) {
        $string     .= $nl.' \n';                     // don't break lines inside '\n'
        $x          += 2;
        if( !isset( $tmp[$x] )) {
          $string   .= $nl;
          break;
        }
        $cCnt        = 3;
      }
      elseif( 75    <= $cCnt ) {
        $string     .= $nl.' ';
        $cCnt        = 1;
      }
      $byte          = ord( $tmp[$x] );
      $string       .= $tmp[$x];
      switch( TRUE ) { // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
        case(( $byte >= 0x20 ) && ( $byte <= 0x7F )): // characters U-00000000 - U-0000007F (same as ASCII)
          $cCnt     += 1;
          break;                                      // add a one byte character
        case(( $byte & 0xE0) == 0xC0 ):               // characters U-00000080 - U-000007FF, mask 110XXXXX
          if( isset( $tmp[$x+1] )) {
            $cCnt   += 1;
            $string  .= $tmp[$x+1];
            $x       += 1;                            // add a two bytes character
          }
          break;
        case(( $byte & 0xF0 ) == 0xE0 ):              // characters U-00000800 - U-0000FFFF, mask 1110XXXX
          if( isset( $tmp[$x+2] )) {
            $cCnt   += 1;
            $string .= $tmp[$x+1].$tmp[$x+2];
            $x      += 2;                             // add a three bytes character
          }
          break;
        case(( $byte & 0xF8 ) == 0xF0 ):              // characters U-00010000 - U-001FFFFF, mask 11110XXX
          if( isset( $tmp[$x+3] )) {
            $cCnt   += 1;
            $string .= $tmp[$x+1].$tmp[$x+2].$tmp[$x+3];
            $x      += 3;                             // add a four bytes character
          }
          break;
        case(( $byte & 0xFC ) == 0xF8 ):              // characters U-00200000 - U-03FFFFFF, mask 111110XX
          if( isset( $tmp[$x+4] )) {
            $cCnt   += 1;
            $string .= $tmp[$x+1].$tmp[$x+2].$tmp[$x+3].$tmp[$x+4];
            $x      += 4;                             // add a five bytes character
          }
          break;
        case(( $byte & 0xFE ) == 0xFC ):              // characters U-04000000 - U-7FFFFFFF, mask 1111110X
          if( isset( $tmp[$x+5] )) {
            $cCnt   += 1;
            $string .= $tmp[$x+1].$tmp[$x+2].$tmp[$x+3].$tmp[$x+4].$tmp[$x+5];
            $x      += 5;                             // add a six bytes character
          }
        default:                                      // add any other byte without counting up $cCnt
          break;
      } // end switch( TRUE )
      $x         += 1;                                // next 'byte' to test
    } // end while( TRUE ) {
    return $string;
  }
/**
 * sort callback functions for exdate
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.11 - 2013-01-12
 * @param array $a
 * @param array $b
 * @return int
 */
  public static function _sortExdate1( $a, $b ) {
    $as  = sprintf( '%04d%02d%02d', $a['year'], $a['month'], $a['day'] );
    $as .= ( isset( $a['hour'] )) ? sprintf( '%02d%02d%02d', $a['hour'], $a['min'], $a['sec'] ) : '';
    $bs  = sprintf( '%04d%02d%02d', $b['year'], $b['month'], $b['day'] );
    $bs .= ( isset( $b['hour'] )) ? sprintf( '%02d%02d%02d', $b['hour'], $b['min'], $b['sec'] ) : '';
    return strcmp( $as, $bs );
  }
  public static function _sortExdate2( $a, $b ) {
    $val = reset( $a['value'] );
    $as  = sprintf( '%04d%02d%02d', $val['year'], $val['month'], $val['day'] );
    $as .= ( isset( $val['hour'] )) ? sprintf( '%02d%02d%02d', $val['hour'], $val['min'], $val['sec'] ) : '';
    $val = reset( $b['value'] );
    $bs  = sprintf( '%04d%02d%02d', $val['year'], $val['month'], $val['day'] );
    $bs .= ( isset( $val['hour'] )) ? sprintf( '%02d%02d%02d', $val['hour'], $val['min'], $val['sec'] ) : '';
    return strcmp( $as, $bs );
  }
/**
 * sort callback functions for rdate
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.27 - 2013-07-05
 * @param array $a
 * @param array $b
 * @return int
 */
  public static function _sortRdate1( $a, $b ) {
    $val = isset( $a['year'] ) ? $a : $a[0];
    $as  = sprintf( '%04d%02d%02d', $val['year'], $val['month'], $val['day'] );
    $as .= ( isset( $val['hour'] )) ? sprintf( '%02d%02d%02d', $val['hour'], $val['min'], $val['sec'] ) : '';
    $val = isset( $b['year'] ) ? $b : $b[0];
    $bs  = sprintf( '%04d%02d%02d', $val['year'], $val['month'], $val['day'] );
    $bs .= ( isset( $val['hour'] )) ? sprintf( '%02d%02d%02d', $val['hour'], $val['min'], $val['sec'] ) : '';
    return strcmp( $as, $bs );
  }
  public static function _sortRdate2( $a, $b ) {
    $val   = isset( $a['value'][0]['year'] ) ? $a['value'][0] : $a['value'][0][0];
    if( empty( $val ))
      $as  = '';
    else {
      $as  = sprintf( '%04d%02d%02d', $val['year'], $val['month'], $val['day'] );
      $as .= ( isset( $val['hour'] )) ? sprintf( '%02d%02d%02d', $val['hour'], $val['min'], $val['sec'] ) : '';
    }
    $val   = isset( $b['value'][0]['year'] ) ? $b['value'][0] : $b['value'][0][0];
    if( empty( $val ))
      $bs  = '';
    else {
      $bs  = sprintf( '%04d%02d%02d', $val['year'], $val['month'], $val['day'] );
      $bs .= ( isset( $val['hour'] )) ? sprintf( '%02d%02d%02d', $val['hour'], $val['min'], $val['sec'] ) : '';
    }
    return strcmp( $as, $bs );
  }
/**
 * step date, return updated date, array and timpstamp
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.14.1 - 2012-09-24
 * @param array $date, date to step
 * @param int   $timestamp
 * @param array $step, default array( 'day' => 1 )
 * @return void
 */
  public static function _stepdate( &$date, &$timestamp, $step=array( 'day' => 1 )) {
    if( !isset( $date['hour'] )) $date['hour'] = 0;
    if( !isset( $date['min'] ))  $date['min']  = 0;
    if( !isset( $date['sec'] ))  $date['sec']  = 0;
    foreach( $step as $stepix => $stepvalue )
      $date[$stepix] += $stepvalue;
    $timestamp  = mktime( $date['hour'], $date['min'], $date['sec'], $date['month'], $date['day'], $date['year'] );
    $d          = date( 'Y-m-d-H-i-s', $timestamp);
    $d          = explode( '-', $d );
    $date       = array( 'year' => $d[0], 'month' => $d[1], 'day' => $d[2], 'hour' => $d[3], 'min' => $d[4], 'sec' => $d[5] );
    foreach( $date as $k => $v )
      $date[$k] = (int) $v;
  }
/**
 * convert a date from specific string to array format
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.11.8 - 2012-01-27
 * @param mixed $input
 * @return bool, TRUE on success
 */
  public static function _strDate2arr( & $input ) {
    if( is_array( $input ))
      return FALSE;
    if( 5 > strlen( (string) $input ))
      return FALSE;
    $work = $input;
    if( 2 == substr_count( $work, '-' ))
      $work = str_replace( '-', '', $work );
    if( 2 == substr_count( $work, '/' ))
      $work = str_replace( '/', '', $work );
    if( !ctype_digit( substr( $work, 0, 8 )))
      return FALSE;
    $temp = array( 'year'  => (int) substr( $work,  0, 4 )
                 , 'month' => (int) substr( $work,  4, 2 )
                 , 'day'   => (int) substr( $work,  6, 2 ));
    if( !checkdate( $temp['month'], $temp['day'], $temp['year'] ))
      return FALSE;
    if( 8 == strlen( $work )) {
      $input = $temp;
      return TRUE;
    }
    if(( ' ' == substr( $work, 8, 1 )) || ( 'T' == substr( $work, 8, 1 )) || ( 't' == substr( $work, 8, 1 )))
      $work =  substr( $work, 9 );
    elseif( ctype_digit( substr( $work, 8, 1 )))
      $work = substr( $work, 8 );
    else
     return FALSE;
    if( 2 == substr_count( $work, ':' ))
      $work = str_replace( ':', '', $work );
    if( !ctype_digit( substr( $work, 0, 4 )))
      return FALSE;
    $temp['hour']  = substr( $work, 0, 2 );
    $temp['min']   = substr( $work, 2, 2 );
    if((( 0 > $temp['hour'] ) || ( $temp['hour'] > 23 )) ||
       (( 0 > $temp['min'] )  || ( $temp['min']  > 59 )))
      return FALSE;
    if( ctype_digit( substr( $work, 4, 2 ))) {
      $temp['sec'] = substr( $work, 4, 2 );
      if((  0 > $temp['sec'] ) || ( $temp['sec']  > 59 ))
        return FALSE;
      $len = 6;
    }
    else {
      $temp['sec'] = 0;
      $len = 4;
    }
    if( $len < strlen( $work))
      $temp['tz'] = trim( substr( $work, 6 ));
    $input = $temp;
    return TRUE;
  }
/**
 * ensures internal date-time/date format for input date-time/date in string fromat
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.24 - 2013-06-26
 * Modified to also return original string value by Yitzchok Lavi <icalcreator@onebigsystem.com>
 * @param array $datetime
 * @param int   $parno optional, default FALSE
 * @param moxed $wtz optional, default null
 * @return array
 */
  public static function _date_time_string( $datetime, $parno=FALSE ) {
    return iCalUtilityFunctions::_strdate2date( $datetime, $parno, null );
  }
  public static function _strdate2date( $datetime, $parno=FALSE, $wtz=null ) {
    // save original input string to return it later
    $unparseddatetime = $datetime;
    $datetime   = (string) trim( $datetime );
    $tz         = null;
    $offset     = 0;
    $tzSts      = FALSE;
    $len        = strlen( $datetime );
    if( 'Z' == substr( $datetime, -1 )) {
      $tz       = 'Z';
      $datetime = trim( substr( $datetime, 0, ( $len - 1 )));
      $tzSts    = TRUE;
    }
    if( iCalUtilityFunctions::_isOffset( substr( $datetime, -5, 5 ))) { // [+/-]NNNN offset
      $tz       = substr( $datetime, -5, 5 );
      $datetime = trim( substr( $datetime, 0, ($len - 5)));
    }
    elseif( iCalUtilityFunctions::_isOffset( substr( $datetime, -7, 7 ))) { // [+/-]NNNNNN offset
      $tz       = substr( $datetime, -7, 7 );
      $datetime = trim( substr( $datetime, 0, ($len - 7)));
    }
    elseif( empty( $wtz ) && ctype_digit( substr( $datetime, 0, 4 )) && ctype_digit( substr( $datetime, -2, 2 )) && iCalUtilityFunctions::_strDate2arr( $datetime )) {
      $output = $datetime;
      if( !empty( $tz ))
        $output['tz'] = 'Z';
      $output['unparsedtext'] = $unparseddatetime;
      return $output;
    }
    else {
      $cx  = $tx = 0;    //  find any trailing timezone or offset
      $len = strlen( $datetime );
      for( $cx = -1; $cx > ( 9 - $len ); $cx-- ) {
        $char = substr( $datetime, $cx, 1 );
        if(( ' ' == $char ) || ctype_digit( $char ))
          break; // if exists, tz ends here.. . ?
        else
           $tx--; // tz length counter
      }
      if( 0 > $tx ) { // if any
        $tz     = substr( $datetime, $tx );
        $datetime = trim( substr( $datetime, 0, $len + $tx ));
      }
      if(( ctype_digit( substr( $datetime, 0, 8 )) && ( 'T' ==  substr( $datetime, 8, 1 )) && ctype_digit( substr( $datetime, -6, 6 ))) ||
         ( ctype_digit( substr( $datetime, 0, 14 ))))
        $tzSts  = TRUE;
    }
    if( empty( $tz ) && !empty( $wtz ))
      $tz       = $wtz;
    if( 3 == $parno )
      $tz       = null;
    if( !empty( $tz )) { // tz set
      if(( 'Z' != $tz ) && ( iCalUtilityFunctions::_isOffset( $tz ))) {
        $offset = (string) iCalUtilityFunctions::_tz2offset( $tz ) * -1;
        $tz     = 'UTC';
        $tzSts  = TRUE;
      }
      elseif( !empty( $wtz ))
        $tzSts  = TRUE;
      $tz       = trim( $tz );
      if(( 'Z' == $tz ) || ( 'GMT' == strtoupper( $tz )))
        $tz     = 'UTC';
      if( 0 < substr_count( $datetime, '-' ))
        $datetime = str_replace( '-', '/', $datetime );
      try {
        $d        = new DateTime( $datetime, new DateTimeZone( $tz ));
        if( 0  != $offset )  // adjust for offset
          $d->modify( $offset.' seconds' );
        $datestring = $d->format( 'Y-m-d-H-i-s' );
        unset( $d );
      }
      catch( Exception $e ) {
        $datestring = date( 'Y-m-d-H-i-s', strtotime( $datetime ));
      }
    } // end if( !empty( $tz ))
    else
      $datestring = date( 'Y-m-d-H-i-s', strtotime( $datetime ));
    if( 'UTC' == $tz )
      $tz         = 'Z';
    $d            = explode( '-', $datestring );
    $output       = array( 'year' => $d[0], 'month' => $d[1], 'day' => $d[2] );
    if( !$parno || ( 3 != $parno )) { // parno is set to 6 or 7
      $output['hour'] = $d[3];
      $output['min']  = $d[4];
      $output['sec']  = $d[5];
      if(( $tzSts || ( 7 == $parno )) && !empty( $tz ))
        $output['tz'] = $tz;
    }
    // return original string in the array in case strtotime failed to make sense of it
    $output['unparsedtext'] = $unparseddatetime;
    return $output;
  }
/********************************************************************************/
/**
 * special characters management output
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @param string $string
 * @param string $format
 * @param string $nl
 * @return string
 */
  public static function _strrep( $string, $format, $nl ) {
    switch( $format ) {
      case 'xcal':
        $string = str_replace( '\n',  $nl, $string);
        $string = htmlspecialchars( strip_tags( stripslashes( urldecode ( $string ))));
        break;
      default:
        $pos = 0;
        $specChars = array( 'n', 'N', 'r', ',', ';' );
        while( isset( $string[$pos] )) {
          if( FALSE === ( $pos = strpos( $string, "\\", $pos )))
            break;
          if( !in_array( substr( $string, $pos, 1 ), $specChars )) {
            $string = substr( $string, 0, $pos )."\\".substr( $string, ( $pos + 1 ));
            $pos += 1;
          }
          $pos += 1;
        }
        if( FALSE !== strpos( $string, '"' ))
          $string = str_replace('"',   "'",       $string);
        if( FALSE !== strpos( $string, ',' ))
          $string = str_replace(',',   '\,',      $string);
        if( FALSE !== strpos( $string, ';' ))
          $string = str_replace(';',   '\;',      $string);
        if( FALSE !== strpos( $string, "\r\n" ))
          $string = str_replace( "\r\n", '\n',    $string);
        elseif( FALSE !== strpos( $string, "\r" ))
          $string = str_replace( "\r", '\n',      $string);
        elseif( FALSE !== strpos( $string, "\n" ))
          $string = str_replace( "\n", '\n',      $string);
        if( FALSE !== strpos( $string, '\N' ))
          $string = str_replace( '\N', '\n',      $string);
//        if( FALSE !== strpos( $string, $nl ))
          $string = str_replace( $nl, '\n', $string);
        break;
    }
    return $string;
  }
/**
 * special characters management input (from iCal file)
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.2 - 2012-12-18
 * @param string $string
 * @return string
 */
  public static function _strunrep( $string ) {
    $string = str_replace( '\\\\', '\\',     $string);
    $string = str_replace( '\,',   ',',      $string);
    $string = str_replace( '\;',   ';',      $string);
//    $string = str_replace( '\n',  $nl, $string); // ??
    return $string;
  }
/**
 * convert timestamp to date array, default UTC or adjusted for offset/timezone
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.15.1 - 2012-10-17
 * @param mixed   $timestamp
 * @param int     $parno
 * @param string  $wtz
 * @return array
 */
  public static function _timestamp2date( $timestamp, $parno=6, $wtz=null ) {
    if( is_array( $timestamp )) {
      $tz        = ( isset( $timestamp['tz'] )) ? $timestamp['tz'] : $wtz;
      $timestamp = $timestamp['timestamp'];
    }
    $tz          = ( isset( $tz )) ? $tz : $wtz;
    $offset      = 0;
    if( empty( $tz ) || ( 'Z' == $tz ) || ( 'GMT' == strtoupper( $tz )))
      $tz        = 'UTC';
    elseif( iCalUtilityFunctions::_isOffset( $tz )) {
      $offset    = iCalUtilityFunctions::_tz2offset( $tz );
//      $tz        = 'UTC';
    }
    try {
      $d         = new DateTime( "@$timestamp" );  // set UTC date
      if(  0 != $offset )                          // adjust for offset
        $d->modify( $offset.' seconds' );
      elseif( 'UTC' != $tz )
        $d->setTimezone( new DateTimeZone( $tz )); // convert to local date
      $date      = $d->format( 'Y-m-d-H-i-s' );
      unset( $d );
    }
    catch( Exception $e ) {
      $date      = date( 'Y-m-d-H-i-s', $timestamp );
    }
    $date        = explode( '-', $date );
    $output      = array( 'year' => $date[0], 'month' => $date[1], 'day' => $date[2] );
    if( 3 != $parno ) {
      $output['hour'] = $date[3];
      $output['min']  = $date[4];
      $output['sec']  = $date[5];
      if(( 'UTC' == $tz ) || ( 0 == $offset ))
        $output['tz'] = 'Z';
    }
    return $output;
  }
/**
 * convert timestamp (seconds) to duration in array format
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.6.23 - 2010-10-23
 * @param int $timestamp
 * @return array, duration format
 */
  public static function _timestamp2duration( $timestamp ) {
    $dur         = array();
    $dur['week'] = (int) floor( $timestamp / ( 7 * 24 * 60 * 60 ));
    $timestamp   =              $timestamp % ( 7 * 24 * 60 * 60 );
    $dur['day']  = (int) floor( $timestamp / ( 24 * 60 * 60 ));
    $timestamp   =              $timestamp % ( 24 * 60 * 60 );
    $dur['hour'] = (int) floor( $timestamp / ( 60 * 60 ));
    $timestamp   =              $timestamp % ( 60 * 60 );
    $dur['min']  = (int) floor( $timestamp / ( 60 ));
    $dur['sec']  = (int)        $timestamp % ( 60 );
    return $dur;
  }
/**
 * transforms a dateTime from a timezone to another using PHP DateTime and DateTimeZone class (PHP >= PHP 5.2.0)
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.15.1 - 2012-10-17
 * @param mixed  $date,   date to alter
 * @param string $tzFrom, PHP valid 'from' timezone
 * @param string $tzTo,   PHP valid 'to' timezone, default 'UTC'
 * @param string $format, date output format, default 'Ymd\THis'
 * @return bool
 */
  public static function transformDateTime( & $date, $tzFrom, $tzTo='UTC', $format = 'Ymd\THis' ) {
    if( is_array( $date ) && isset( $date['timestamp'] )) {
      try {
        $d = new DateTime( "@{$date['timestamp']}" ); // set UTC date
        $d->setTimezone(new DateTimeZone( $tzFrom )); // convert to 'from' date
      }
      catch( Exception $e ) { return FALSE; }
    }
    else {
      if( iCalUtilityFunctions::_isArrayDate( $date )) {
        if( isset( $date['tz'] ))
          unset( $date['tz'] );
        $date  = iCalUtilityFunctions::_date2strdate( iCalUtilityFunctions::_chkDateArr( $date ));
      }
      if( 'Z' == substr( $date, -1 ))
        $date = substr( $date, 0, ( strlen( $date ) - 2 ));
      try { $d = new DateTime( $date, new DateTimeZone( $tzFrom )); }
      catch( Exception $e ) { return FALSE; }
    }
    try { $d->setTimezone( new DateTimeZone( $tzTo )); }
    catch( Exception $e ) { return FALSE; }
    $date = $d->format( $format );
    return TRUE;
  }
/**
 * convert offset, [+/-]HHmm[ss], to seconds, used when correcting UTC to localtime or v.v.
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.11.4 - 2012-01-11
 * @param string $offset
 * @return integer
 */
  public static function _tz2offset( $tz ) {
    $tz           = trim( (string) $tz );
    $offset       = 0;
    if(((     5  != strlen( $tz ))       && ( 7  != strlen( $tz ))) ||
       ((    '+' != substr( $tz, 0, 1 )) && ( '-' != substr( $tz, 0, 1 ))) ||
       (( '0000' >= substr( $tz, 1, 4 )) && ( '9999' < substr( $tz, 1, 4 ))) ||
           (( 7  == strlen( $tz ))       && ( '00' > substr( $tz, 5, 2 )) && ( '99' < substr( $tz, 5, 2 ))))
      return $offset;
    $hours2sec    = (int) substr( $tz, 1, 2 ) * 3600;
    $min2sec      = (int) substr( $tz, 3, 2 ) *   60;
    $sec          = ( 7  == strlen( $tz )) ? (int) substr( $tz, -2 ) : '00';
    $offset       = $hours2sec + $min2sec + $sec;
    $offset       = ('-' == substr( $tz, 0, 1 )) ? $offset * -1 : $offset;
    return $offset;
  }
}
/*********************************************************************************/
/*          iCalcreator vCard helper functions                                   */
/*********************************************************************************/
/**
 * convert single ATTENDEE, CONTACT or ORGANIZER (in email format) to vCard
 * returns vCard/TRUE or if directory (if set) or file write is unvalid, FALSE
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.12.2 - 2012-07-11
 * @param object $email
 * $param string $version, vCard version (default 2.1)
 * $param string $directory, where to save vCards (default FALSE)
 * $param string $ext, vCard file extension (default 'vcf')
 * @return mixed
 */
function iCal2vCard( $email, $version='2.1', $directory=FALSE, $ext='vcf' ) {
  if( FALSE === ( $pos = strpos( $email, '@' )))
    return FALSE;
  if( $directory ) {
    if( DIRECTORY_SEPARATOR != substr( $directory, ( 0 - strlen( DIRECTORY_SEPARATOR ))))
      $directory .= DIRECTORY_SEPARATOR;
    if( !is_dir( $directory ) || !is_writable( $directory ))
      return FALSE;
  }
            /* prepare vCard */
  $email  = str_replace( 'MAILTO:', '', $email );
  $name   = $person = substr( $email, 0, $pos );
  if( ctype_upper( $name ) || ctype_lower( $name ))
    $name = array( $name );
  else {
    if( FALSE !== ( $pos = strpos( $name, '.' ))) {
      $name = explode( '.', $name );
      foreach( $name as $k => $part )
        $name[$k] = ucfirst( $part );
    }
    else { // split camelCase
      $chars = $name;
      $name  = array( $chars[0] );
      $k     = 0;
      $x     = 1;
      while( FALSE !== ( $char = substr( $chars, $x, 1 ))) {
        if( ctype_upper( $char )) {
          $k += 1;
          $name[$k] = '';
        }
        $name[$k]  .= $char;
        $x++;
      }
    }
  }
  $nl     = "\r\n";
  $FN     = 'FN:'.implode( ' ', $name ).$nl;
  $name   = array_reverse( $name );
  $N      = 'N:'.array_shift( $name );
  $scCnt  = 0;
  while( NULL != ( $part = array_shift( $name ))) {
    if(( '4.0' != $version ) || ( 4 > $scCnt ))
      $scCnt += 1;
    $N   .= ';'.$part;
  }
  while(( '4.0' == $version ) && ( 4 > $scCnt )) {
    $N   .= ';';
    $scCnt += 1;
  }
  $N     .= $nl;
  $EMAIL  = 'EMAIL:'.$email.$nl;
           /* create vCard */
  $vCard  = 'BEGIN:VCARD'.$nl;
  $vCard .= "VERSION:$version$nl";
  $vCard .= 'PRODID:-//kigkonsult.se '.ICALCREATOR_VERSION."//$nl";
  $vCard .= $N;
  $vCard .= $FN;
  $vCard .= $EMAIL;
  $vCard .= 'REV:'.gmdate( 'Ymd\THis\Z' ).$nl;
  $vCard .= 'END:VCARD'.$nl;
            /* save each vCard as (unique) single file */
  if( $directory ) {
    $fname = $directory.preg_replace( '/[^a-z0-9.]/i', '', $email );
    $cnt   = 1;
    $dbl   = '';
    while( is_file ( $fname.$dbl.'.'.$ext )) {
      $cnt += 1;
      $dbl = "_$cnt";
    }
    if( FALSE === file_put_contents( $fname, $fname.$dbl.'.'.$ext ))
      return FALSE;
    return TRUE;
  }
            /* return vCard */
  else
    return $vCard;
}
/**
 * convert ATTENDEEs, CONTACTs and ORGANIZERs (in email format) to vCards
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.12.2 - 2012-05-07
 * @param object $calendar, iCalcreator vcalendar instance reference
 * $param string $version, vCard version (default 2.1)
 * $param string $directory, where to save vCards (default FALSE)
 * $param string $ext, vCard file extension (default 'vcf')
 * @return mixed
 */
function iCal2vCards( & $calendar, $version='2.1', $directory=FALSE, $ext='vcf' ) {
  $hits   = array();
  $vCardP = array( 'ATTENDEE', 'CONTACT', 'ORGANIZER' );
  foreach( $vCardP as $prop ) {
    $hits2 = $calendar->getProperty( $prop );
    foreach( $hits2 as $propValue => $occCnt ) {
      if( FALSE === ( $pos = strpos( $propValue, '@' )))
        continue;
      $propValue = str_replace( 'MAILTO:', '', $propValue );
      if( isset( $hits[$propValue] ))
        $hits[$propValue] += $occCnt;
      else
        $hits[$propValue]  = $occCnt;
    }
  }
  if( empty( $hits ))
    return FALSE;
  ksort( $hits );
  $output   = '';
  foreach( $hits as $email => $skip ) {
    $res = iCal2vCard( $email, $version, $directory, $ext );
    if( $directory && !$res )
      return FALSE;
    elseif( !$res )
      return $res;
    else
      $output .= $res;
  }
  if( $directory )
    return TRUE;
  if( !empty( $output ))
    return $output;
  return FALSE;
}
/*********************************************************************************/
/*          iCalcreator XML (rfc6321) helper functions                           */
/*********************************************************************************/
/**
 * format iCal XML output, rfc6321, using PHP SimpleXMLElement
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.22 - 2013-06-27
 * @param object $calendar, iCalcreator vcalendar instance reference
 * @return string
 */
function iCal2XML( & $calendar ) {
            /** fix an SimpleXMLElement instance and create root element */
  $xmlstr       = '<?xml version="1.0" encoding="utf-8"?><icalendar xmlns="urn:ietf:params:xml:ns:icalendar-2.0">';
  $xmlstr      .= '<!-- created '.date( 'Ymd\THis\Z', time());
  $xmlstr      .= ' utilizing kigkonsult.se '.ICALCREATOR_VERSION.' iCal2XMl (rfc6321) -->';
  $xmlstr      .= '</icalendar>';
  $xml          = new SimpleXMLElement( $xmlstr );
  $vcalendar    = $xml->addChild( 'vcalendar' );
            /** fix calendar properties */
  $properties   = $vcalendar->addChild( 'properties' );
  $calProps     = array( 'version', 'prodid', 'calscale', 'method' );
  foreach( $calProps as $calProp ) {
    if( FALSE !== ( $content = $calendar->getProperty( $calProp )))
      _addXMLchild( $properties, $calProp, 'text', $content );
  }
  while( FALSE !== ( $content = $calendar->getProperty( FALSE, FALSE, TRUE )))
    _addXMLchild( $properties, $content[0], 'unknown', $content[1]['value'], $content[1]['params'] );
  $langCal = $calendar->getConfig( 'language' );
            /** prepare to fix components with properties */
  $components   = $vcalendar->addChild( 'components' );
            /** fix component properties */
  while( FALSE !== ( $component = $calendar->getComponent())) {
    $compName   = $component->objName;
    $child      = $components->addChild( $compName );
    $properties = $child->addChild( 'properties' );
    $langComp   = $component->getConfig( 'language' );
    $props      = $component->getConfig( 'setPropertyNames' );
    foreach( $props as $prop ) {
      switch( strtolower( $prop )) {
        case 'attach':          // may occur multiple times, below
          while( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE ))) {
            $type = ( isset( $content['params']['VALUE'] ) && ( 'BINARY' == $content['params']['VALUE'] )) ? 'binary' : 'uri';
            unset( $content['params']['VALUE'] );
            _addXMLchild( $properties, $prop, $type, $content['value'], $content['params'] );
          }
          break;
        case 'attendee':
          while( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE ))) {
            if( isset( $content['params']['CN'] ) && !isset( $content['params']['LANGUAGE'] )) {
              if( $langComp )
                $content['params']['LANGUAGE'] = $langComp;
              elseif( $langCal )
                $content['params']['LANGUAGE'] = $langCal;
            }
            _addXMLchild( $properties, $prop, 'cal-address', $content['value'], $content['params'] );
          }
          break;
        case 'exdate':
          while( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE ))) {
            $type = ( isset( $content['params']['VALUE'] ) && ( 'DATE' == $content['params']['VALUE'] )) ? 'date' : 'date-time';
            unset( $content['params']['VALUE'] );
            _addXMLchild( $properties, $prop, $type, $content['value'], $content['params'] );
          }
          break;
        case 'freebusy':
          while( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE ))) {
            if( is_array( $content ) && isset( $content['value']['fbtype'] )) {
              $content['params']['FBTYPE'] = $content['value']['fbtype'];
              unset( $content['value']['fbtype'] );
            }
            _addXMLchild( $properties, $prop, 'period', $content['value'], $content['params'] );
          }
          break;
        case 'request-status':
          while( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE ))) {
            if( !isset( $content['params']['LANGUAGE'] )) {
              if( $langComp )
                $content['params']['LANGUAGE'] = $langComp;
              elseif( $langCal )
                $content['params']['LANGUAGE'] = $langCal;
            }
            _addXMLchild( $properties, $prop, 'rstatus', $content['value'], $content['params'] );
          }
          break;
        case 'rdate':
          while( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE ))) {
            $type = 'date-time';
            if( isset( $content['params']['VALUE'] )) {
              if( 'DATE' == $content['params']['VALUE'] )
                $type = 'date';
              elseif( 'PERIOD' == $content['params']['VALUE'] )
                $type = 'period';
            }
            unset( $content['params']['VALUE'] );
            _addXMLchild( $properties, $prop, $type, $content['value'], $content['params'] );
          }
          break;
        case 'categories':
        case 'comment':
        case 'contact':
        case 'description':
        case 'related-to':
        case 'resources':
          while( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE ))) {
            if(( 'related-to' != $prop ) && !isset( $content['params']['LANGUAGE'] )) {
              if( $langComp )
                $content['params']['LANGUAGE'] = $langComp;
              elseif( $langCal )
                $content['params']['LANGUAGE'] = $langCal;
            }
            _addXMLchild( $properties, $prop, 'text', $content['value'], $content['params'] );
          }
          break;
        case 'x-prop':
          while( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE )))
            _addXMLchild( $properties, $content[0], 'unknown', $content[1]['value'], $content[1]['params'] );
          break;
        case 'created':         // single occurence below, if set
        case 'completed':
        case 'dtstamp':
        case 'last-modified':
          $utcDate = TRUE;
        case 'dtstart':
        case 'dtend':
        case 'due':
        case 'recurrence-id':
          if( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE ))) {
            $type = ( isset( $content['params']['VALUE'] ) && ( 'DATE' == $content['params']['VALUE'] )) ? 'date' : 'date-time';
            unset( $content['params']['VALUE'] );
            if(( isset( $content['params']['TZID'] ) && empty( $content['params']['TZID'] )) || @is_null( $content['params']['TZID'] ))
              unset( $content['params']['TZID'] );
            _addXMLchild( $properties, $prop, $type, $content['value'], $content['params'] );
          }
          unset( $utcDate );
          break;
        case 'duration':
          if( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE )))
            _addXMLchild( $properties, $prop, 'duration', $content['value'], $content['params'] );
          break;
        case 'exrule':
        case 'rrule':
          while( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE )))
            _addXMLchild( $properties, $prop, 'recur', $content['value'], $content['params'] );
          break;
        case 'class':
        case 'location':
        case 'status':
        case 'summary':
        case 'transp':
        case 'tzid':
        case 'uid':
          if( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE ))) {
            if((( 'location' == $prop ) || ( 'summary' == $prop )) && !isset( $content['params']['LANGUAGE'] )) {
              if( $langComp )
                $content['params']['LANGUAGE'] = $langComp;
              elseif( $langCal )
                $content['params']['LANGUAGE'] = $langCal;
            }
            _addXMLchild( $properties, $prop, 'text', $content['value'], $content['params'] );
          }
          break;
        case 'geo':
          if( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE )))
            _addXMLchild( $properties, $prop, 'geo', $content['value'], $content['params'] );
          break;
        case 'organizer':
          if( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE ))) {
            if( isset( $content['params']['CN'] ) && !isset( $content['params']['LANGUAGE'] )) {
              if( $langComp )
                $content['params']['LANGUAGE'] = $langComp;
              elseif( $langCal )
                $content['params']['LANGUAGE'] = $langCal;
            }
            _addXMLchild( $properties, $prop, 'cal-address', $content['value'], $content['params'] );
          }
          break;
        case 'percent-complete':
        case 'priority':
        case 'sequence':
          if( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE )))
            _addXMLchild( $properties, $prop, 'integer', $content['value'], $content['params'] );
          break;
        case 'tzurl':
        case 'url':
          if( FALSE !== ( $content = $component->getProperty( $prop, FALSE, TRUE )))
            _addXMLchild( $properties, $prop, 'uri', $content['value'], $content['params'] );
          break;
      } // end switch( $prop )
    } // end foreach( $props as $prop )
            /** fix subComponent properties, if any */
    while( FALSE !== ( $subcomp = $component->getComponent())) {
      $subCompName  = $subcomp->objName;
      $child2       = $child->addChild( $subCompName );
      $properties   = $child2->addChild( 'properties' );
      $langComp     = $subcomp->getConfig( 'language' );
      $subCompProps = $subcomp->getConfig( 'setPropertyNames' );
      foreach( $subCompProps as $prop ) {
        switch( strtolower( $prop )) {
          case 'attach':          // may occur multiple times, below
            while( FALSE !== ( $content = $subcomp->getProperty( $prop, FALSE, TRUE ))) {
              $type = ( isset( $content['params']['VALUE'] ) && ( 'BINARY' == $content['params']['VALUE'] )) ? 'binary' : 'uri';
              unset( $content['params']['VALUE'] );
              _addXMLchild( $properties, $prop, $type, $content['value'], $content['params'] );
            }
            break;
          case 'attendee':
            while( FALSE !== ( $content = $subcomp->getProperty( $prop, FALSE, TRUE ))) {
              if( isset( $content['params']['CN'] ) && !isset( $content['params']['LANGUAGE'] )) {
                if( $langComp )
                  $content['params']['LANGUAGE'] = $langComp;
                elseif( $langCal )
                  $content['params']['LANGUAGE'] = $langCal;
              }
              _addXMLchild( $properties, $prop, 'cal-address', $content['value'], $content['params'] );
            }
            break;
          case 'comment':
          case 'tzname':
            while( FALSE !== ( $content = $subcomp->getProperty( $prop, FALSE, TRUE ))) {
              if( !isset( $content['params']['LANGUAGE'] )) {
                if( $langComp )
                  $content['params']['LANGUAGE'] = $langComp;
                elseif( $langCal )
                  $content['params']['LANGUAGE'] = $langCal;
              }
              _addXMLchild( $properties, $prop, 'text', $content['value'], $content['params'] );
            }
            break;
          case 'rdate':
            while( FALSE !== ( $content = $subcomp->getProperty( $prop, FALSE, TRUE ))) {
              $type = 'date-time';
              if( isset( $content['params']['VALUE'] )) {
                if( 'DATE' == $content['params']['VALUE'] )
                  $type = 'date';
                elseif( 'PERIOD' == $content['params']['VALUE'] )
                  $type = 'period';
              }
              unset( $content['params']['VALUE'] );
              _addXMLchild( $properties, $prop, $type, $content['value'], $content['params'] );
            }
            break;
          case 'x-prop':
            while( FALSE !== ( $content = $subcomp->getProperty( $prop, FALSE, TRUE )))
              _addXMLchild( $properties, $content[0], 'unknown', $content[1]['value'], $content[1]['params'] );
            break;
          case 'action':      // single occurence below, if set
          case 'description':
          case 'summary':
            if( FALSE !== ( $content = $subcomp->getProperty( $prop, FALSE, TRUE ))) {
              if(( 'action' != $prop ) && !isset( $content['params']['LANGUAGE'] )) {
                if( $langComp )
                  $content['params']['LANGUAGE'] = $langComp;
                elseif( $langCal )
                  $content['params']['LANGUAGE'] = $langCal;
              }
              _addXMLchild( $properties, $prop, 'text', $content['value'], $content['params'] );
            }
            break;
          case 'dtstart':
            if( FALSE !== ( $content = $subcomp->getProperty( $prop, FALSE, TRUE ))) {
              unset( $content['value']['tz'], $content['params']['VALUE'] ); // always local time
              _addXMLchild( $properties, $prop, 'date-time', $content['value'], $content['params'] );
            }
            break;
          case 'duration':
            if( FALSE !== ( $content = $subcomp->getProperty( $prop, FALSE, TRUE )))
              _addXMLchild( $properties, $prop, 'duration', $content['value'], $content['params'] );
            break;
          case 'repeat':
            if( FALSE !== ( $content = $subcomp->getProperty( $prop, FALSE, TRUE )))
              _addXMLchild( $properties, $prop, 'integer', $content['value'], $content['params'] );
            break;
          case 'trigger':
            if( FALSE !== ( $content = $subcomp->getProperty( $prop, FALSE, TRUE ))) {
              if( isset( $content['value']['year'] )   &&
                  isset( $content['value']['month'] )  &&
                  isset( $content['value']['day'] ))
                $type = 'date-time';
              else {
                $type = 'duration';
                if( !isset( $content['value']['relatedStart'] ) || ( TRUE !== $content['value']['relatedStart'] ))
                  $content['params']['RELATED'] = 'END';
              }
              _addXMLchild( $properties, $prop, $type, $content['value'], $content['params'] );
            }
            break;
          case 'tzoffsetto':
          case 'tzoffsetfrom':
            if( FALSE !== ( $content = $subcomp->getProperty( $prop, FALSE, TRUE )))
              _addXMLchild( $properties, $prop, 'utc-offset', $content['value'], $content['params'] );
            break;
          case 'rrule':
            while( FALSE !== ( $content = $subcomp->getProperty( $prop, FALSE, TRUE )))
              _addXMLchild( $properties, $prop, 'recur', $content['value'], $content['params'] );
            break;
        } // switch( $prop )
      } // end foreach( $subCompProps as $prop )
    } // end while( FALSE !== ( $subcomp = $component->getComponent()))
  } // end while( FALSE !== ( $component = $calendar->getComponent()))
  return $xml->asXML();
}
/**
 * Add children to a SimpleXMLelement
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.22 - 2013-06-24
 * @param object $parent,  reference to a SimpleXMLelement node
 * @param string $name,    new element node name
 * @param string $type,    content type, subelement(-s) name
 * @param string $content, new subelement content
 * @param array  $params,  new element 'attributes'
 * @return void
 */
function _addXMLchild( & $parent, $name, $type, $content, $params=array()) {
            /** create new child node */
  $name  = strtolower( $name );
  $child = $parent->addChild( $name );
  if( !empty( $params )) {
    $parameters = $child->addChild( 'parameters' );
    foreach( $params as $param => $parVal ) {
      if( 'VALUE' == $param )
        continue;
      $param = strtolower( $param );
      if( 'x-' == substr( $param, 0, 2  )) {
        $p1 = $parameters->addChild( $param );
        $p2 = $p1->addChild( 'unknown', htmlspecialchars( $parVal ));
      }
      else {
        $p1 = $parameters->addChild( $param );
        switch( $param ) {
          case 'altrep':
          case 'dir':            $ptype = 'uri';            break;
          case 'delegated-from':
          case 'delegated-to':
          case 'member':
          case 'sent-by':        $ptype = 'cal-address';    break;
          case 'rsvp':           $ptype = 'boolean';        break ;
          default:               $ptype = 'text';           break;
        }
        if( is_array( $parVal )) {
          foreach( $parVal as $pV )
            $p2 = $p1->addChild( $ptype, htmlspecialchars( $pV ));
        }
        else
          $p2 = $p1->addChild( $ptype, htmlspecialchars( $parVal ));
      }
    }
  } // end if( !empty( $params ))
  if(( empty( $content ) && ( '0' != $content )) || ( !is_array( $content) && ( '-' != substr( $content, 0, 1 ) && ( 0 > $content ))))
    return;
            /** store content */
  switch( $type ) {
    case 'binary':
      $v = $child->addChild( $type, $content );
      break;
    case 'boolean':
      break;
    case 'cal-address':
      $v = $child->addChild( $type, $content );
      break;
    case 'date':
      if( array_key_exists( 'year', $content ))
        $content = array( $content );
      foreach( $content as $date ) {
        $str = sprintf( '%04d-%02d-%02d', $date['year'], $date['month'], $date['day'] );
        $v = $child->addChild( $type, $str );
      }
      break;
    case 'date-time':
      if( array_key_exists( 'year', $content ))
        $content = array( $content );
      foreach( $content as $dt ) {
        if( !isset( $dt['hour'] )) $dt['hour'] = 0;
        if( !isset( $dt['min'] ))  $dt['min']  = 0;
        if( !isset( $dt['sec'] ))  $dt['sec']  = 0;
        $str = sprintf( '%04d-%02d-%02dT%02d:%02d:%02d', $dt['year'], $dt['month'], $dt['day'], $dt['hour'], $dt['min'], $dt['sec'] );
        if( isset( $dt['tz'] ) && ( 'Z' == $dt['tz'] ))
          $str .= 'Z';
        $v = $child->addChild( $type, $str );
      }
      break;
    case 'duration':
      $output = (( 'trigger' == $name ) && ( FALSE !== $content['before'] )) ? '-' : '';
      $v = $child->addChild( $type, $output.iCalUtilityFunctions::_duration2str( $content ) );
      break;
    case 'geo':
      if( !empty( $content )) {
        $v1 = $child->addChild( 'latitude',  number_format( (float) $content['latitude'],  6, '.', '' ));
        $v1 = $child->addChild( 'longitude', number_format( (float) $content['longitude'], 6, '.', '' ));
      }
      break;
    case 'integer':
      $v = $child->addChild( $type, (string) $content );
      break;
    case 'period':
      if( !is_array( $content ))
        break;
      foreach( $content as $period ) {
        $v1 = $child->addChild( $type );
        $str = sprintf( '%04d-%02d-%02dT%02d:%02d:%02d', $period[0]['year'], $period[0]['month'], $period[0]['day'], $period[0]['hour'], $period[0]['min'], $period[0]['sec'] );
        if( isset( $period[0]['tz'] ) && ( 'Z' == $period[0]['tz'] ))
          $str .= 'Z';
        $v2 = $v1->addChild( 'start', $str );
        if( array_key_exists( 'year', $period[1] )) {
          $str = sprintf( '%04d-%02d-%02dT%02d:%02d:%02d', $period[1]['year'], $period[1]['month'], $period[1]['day'], $period[1]['hour'], $period[1]['min'], $period[1]['sec'] );
          if( isset($period[1]['tz'] ) && ( 'Z' == $period[1]['tz'] ))
            $str .= 'Z';
          $v2 = $v1->addChild( 'end', $str );
        }
        else
          $v2 = $v1->addChild( 'duration', iCalUtilityFunctions::_duration2str( $period[1] ));
      }
      break;
    case 'recur':
      foreach( $content as $rulelabel => $rulevalue ) {
        $rulelabel = strtolower( $rulelabel );
        switch( $rulelabel ) {
          case 'until':
            if( isset( $rulevalue['hour'] ))
              $str = sprintf( '%04d-%02d-%02dT%02d:%02d:%02dZ', $rulevalue['year'], $rulevalue['month'], $rulevalue['day'], $rulevalue['hour'], $rulevalue['min'], $rulevalue['sec'] );
            else
              $str = sprintf( '%04d-%02d-%02d', $rulevalue['year'], $rulevalue['month'], $rulevalue['day'] );
            $v = $child->addChild( $rulelabel, $str );
            break;
          case 'bysecond':
          case 'byminute':
          case 'byhour':
          case 'bymonthday':
          case 'byyearday':
          case 'byweekno':
          case 'bymonth':
          case 'bysetpos': {
            if( is_array( $rulevalue )) {
              foreach( $rulevalue as $vix => $valuePart )
                $v = $child->addChild( $rulelabel, $valuePart );
            }
            else
              $v = $child->addChild( $rulelabel, $rulevalue );
            break;
          }
          case 'byday': {
            if( isset( $rulevalue['DAY'] )) {
              $str  = ( isset( $rulevalue[0] )) ? $rulevalue[0] : '';
              $str .= $rulevalue['DAY'];
              $p    = $child->addChild( $rulelabel, $str );
            }
            else {
              foreach( $rulevalue as $valuePart ) {
                if( isset( $valuePart['DAY'] )) {
                  $str  = ( isset( $valuePart[0] )) ? $valuePart[0] : '';
                  $str .= $valuePart['DAY'];
                  $p    = $child->addChild( $rulelabel, $str );
                }
                else
                  $p    = $child->addChild( $rulelabel, $valuePart );
              }
            }
            break;
          }
          case 'freq':
          case 'count':
          case 'interval':
          case 'wkst':
          default:
            $p = $child->addChild( $rulelabel, $rulevalue );
            break;
        } // end switch( $rulelabel )
      } // end foreach( $content as $rulelabel => $rulevalue )
      break;
    case 'rstatus':
      $v = $child->addChild( 'code', number_format( (float) $content['statcode'], 2, '.', ''));
      $v = $child->addChild( 'description', htmlspecialchars( $content['text'] ));
      if( isset( $content['extdata'] ))
        $v = $child->addChild( 'data', htmlspecialchars( $content['extdata'] ));
      break;
    case 'text':
      if( !is_array( $content ))
        $content = array( $content );
      foreach( $content as $part )
        $v = $child->addChild( $type, htmlspecialchars( $part ));
      break;
    case 'time':
      break;
    case 'uri':
      $v = $child->addChild( $type, $content );
      break;
    case 'utc-offset':
      if( in_array( substr( $content, 0, 1 ), array( '-', '+' ))) {
        $str     = substr( $content, 0, 1 );
        $content = substr( $content, 1 );
      }
      else
        $str     = '+';
      $str .= substr( $content, 0, 2 ).':'.substr( $content, 2, 2 );
      if( 4 < strlen( $content ))
        $str .= ':'.substr( $content, 4 );
      $v = $child->addChild( $type, $str );
      break;
    case 'unknown':
    default:
      if( is_array( $content ))
        $content = implode( '', $content );
      $v = $child->addChild( 'unknown', htmlspecialchars( $content ));
      break;
  }
}
/**
 * parse xml file into iCalcreator instance
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.22 - 2013-06-18
 * @param  string $xmlfile
 * @param  array  $iCalcfg iCalcreator config array (opt)
 * @return mixediCalcreator instance or FALSE on error
 */
function XMLfile2iCal( $xmlfile, $iCalcfg=array()) {
  if( FALSE === ( $xmlstr = file_get_contents( $xmlfile )))
    return FALSE;
  return xml2iCal( $xmlstr, $iCalcfg );
}
/**
 * parse xml string into iCalcreator instance, alias of XML2iCal
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.22 - 2013-06-18
 * @param  string $xmlstr
 * @param  array  $iCalcfg iCalcreator config array (opt)
 * @return mixed  iCalcreator instance or FALSE on error
 */
function XMLstr2iCal( $xmlstr, $iCalcfg=array()) {
  return XML2iCal( $xmlstr, $iCalcfg);
}
/**
 * parse xml string into iCalcreator instance
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.22 - 2013-06-20
 * @param  string $xmlstr
 * @param  array  $iCalcfg iCalcreator config array (opt)
 * @return mixed  iCalcreator instance or FALSE on error
 */
function XML2iCal( $xmlstr, $iCalcfg=array()) {
  $xmlstr  = str_replace( array( "\r\n", "\n\r", "\n", "\r" ), '', $xmlstr );
  $xml     = XMLgetTagContent1( $xmlstr, 'vcalendar', $endIx );
  $iCal    = new vcalendar( $iCalcfg );
  XMLgetComps( $iCal, $xmlstr );
  unset( $xmlstr );
  return $iCal;
}
/**
 * parse XML string into iCalcreator components
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.22 - 2013-06-20
 * @param object $iCal, iCalcreator vcalendar or component object instance
 * @param string $xml
 * @return bool
 */
function XMLgetComps( $iCal, $xml ) {
  static $comps = array( 'vtimezone', 'standard', 'daylight', 'vevent', 'vtodo', 'vjournal', 'vfreebusy', 'valarm' );
  $sx      = 0;
  while(( FALSE !== substr( $xml, ( $sx + 11 ), 1 )) &&
        ( '<properties>' != substr( $xml, $sx, 12 )) && ( '<components>' != substr( $xml, $sx, 12 )))
    $sx   += 1;
  if( FALSE === substr( $xml, ( $sx + 11 ), 1 ))
    return FALSE;
  if( '<properties>' == substr( $xml, $sx, 12 )) {
    $xml2  = XMLgetTagContent1( $xml, 'properties', $endIx );
    XMLgetProps( $iCal, $xml2 );
    $xml   = substr( $xml, $endIx );
  }
  if( '<components>' == substr( $xml, 0, 12 ))
    $xml     = XMLgetTagContent1( $xml, 'components', $endIx );
  while( ! empty( $xml )) {
    $xml2  = XMLgetTagContent2( $xml, $tagName, $endIx );
    if( in_array( strtolower( $tagName ), $comps ) && ( FALSE !== ( $subComp = $iCal->newComponent( $tagName ))))
      XMLgetComps( $subComp, $xml2 );
    $xml   = substr( $xml, $endIx);
  }
  unset( $xml );
  return $iCal;
}
/**
 * parse XML into iCalcreator properties
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.21 - 2013-06-23
 * @param  array  $iCal iCalcreator calendar/component instance
 * @param  string $xml
 * @return void
 */
function XMLgetProps( $iCal, $xml) {
  while( ! empty( $xml )) {
    $xml2         = XMLgetTagContent2( $xml, $propName, $endIx );
    $propName     = strtoupper( $propName );
    if( empty( $xml2 ) && ( '0' != $xml2 )) {
      $iCal->setProperty( $propName );
      $xml        = substr( $xml, $endIx);
      continue;
    }
    $params       = array();
    if( '<parameters/>' == substr( $xml2, 0, 13 ))
      $xml2       = substr( $xml2, 13 );
    elseif( '<parameters>' == substr( $xml2, 0, 12 )) {
      $xml3       = XMLgetTagContent1( $xml2, 'parameters', $endIx2 );
      while( ! empty( $xml3 )) {
        $xml4     = XMLgetTagContent2( $xml3, $paramKey, $endIx3 );
        $pType    = FALSE; // skip parameter valueType
        $paramKey = strtoupper( $paramKey );
        if( in_array( $paramKey, array( 'DELEGATED-FROM', 'DELEGATED-TO', 'MEMBER' ))) {
          while( ! empty( $xml4 )) {
            if( ! isset( $params[$paramKey] ))
              $params[$paramKey]   = array( XMLgetTagContent1( $xml4, 'cal-address', $endIx4 ));
            else
              $params[$paramKey][] = XMLgetTagContent1( $xml4, 'cal-address', $endIx4 );
            $xml4     = substr( $xml4, $endIx4 );
          }
        }
        else {
          if( ! isset( $params[$paramKey] ))
            $params[$paramKey]  = html_entity_decode( XMLgetTagContent2( $xml4, $pType, $endIx4 ));
          else
            $params[$paramKey] .= ','.html_entity_decode( XMLgetTagContent2( $xml4, $pType, $endIx4 ));
        }
        $xml3     = substr( $xml3, $endIx3 );
      }
      $xml2       = substr( $xml2, $endIx2 );
    } // if( '<parameters>' == substr( $xml2, 0, 12 ))
    $valueType    = FALSE;
    $value        = ( ! empty( $xml2 ) || ( '0' == $xml2 )) ? XMLgetTagContent2( $xml2, $valueType, $endIx3 ) : '';
    switch( $propName ) {
      case 'CATEGORIES':
      case 'RESOURCES':
        $tValue      = array();
        while( ! empty( $xml2 )) {
          $tValue[]  = html_entity_decode( XMLgetTagContent2( $xml2, $valueType, $endIx4 ));
          $xml2      = substr( $xml2, $endIx4 );
        }
        $value       = $tValue;
        break;
      case 'EXDATE':   // multiple single-date(-times) may exist
      case 'RDATE':
        if( 'period' != $valueType ) {
          if( 'date' == $valueType )
            $params['VALUE'] = 'DATE';
          $t         = array();
          while( ! empty( $xml2 ) && ( '<date' == substr( $xml2, 0, 5 ))) {
            $t[]     = XMLgetTagContent2( $xml2, $pType, $endIx4 );
            $xml2    = substr( $xml2, $endIx4 );
          }
          $value = $t;
          break;
        }
      case 'FREEBUSY':
        if( 'RDATE' == $propName )
          $params['VALUE'] = 'PERIOD';
        $value       = array();
        while( ! empty( $xml2 ) && ( '<period>' == substr( $xml2, 0, 8 ))) {
          $xml3      = XMLgetTagContent1( $xml2, 'period', $endIx4 ); // period
          $t         = array();
          while( ! empty( $xml3 )) {
            $t[]     = XMLgetTagContent2( $xml3, $pType, $endIx5 ); // start - end/duration
            $xml3    = substr( $xml3, $endIx5 );
          }
          $value[]   = $t;
          $xml2      = substr( $xml2, $endIx4 );
        }
        break;
      case 'TZOFFSETTO':
      case 'TZOFFSETFROM':
        $value       = str_replace( ':', '', $value );
        break;
      case 'GEO':
        $tValue      = array( 'latitude' => $value );
        $tValue['longitude'] = XMLgetTagContent1( substr( $xml2, $endIx3 ), 'longitude', $endIx3 );
        $value       = $tValue;
        break;
      case 'EXRULE':
      case 'RRULE':
        $tValue      = array( $valueType => $value );
        $xml2        = substr( $xml2, $endIx3 );
        $valueType   = FALSE;
        while( ! empty( $xml2 )) {
          $t         = XMLgetTagContent2( $xml2, $valueType, $endIx4 );
          switch( $valueType ) {
            case 'freq':
            case 'count':
            case 'until':
            case 'interval':
            case 'wkst':
              $tValue[$valueType] = $t;
              break;
            case 'byday':
              if( 2 == strlen( $t ))
                $tValue[$valueType][] = array( 'DAY' => $t );
              else {
                $day = substr( $t, -2 );
                $key = substr( $t, 0, ( strlen( $t ) - 2 ));
                $tValue[$valueType][] = array( $key, 'DAY' => $day );
              }
              break;
            default:
              $tValue[$valueType][] = $t;
          }
          $xml2      = substr( $xml2, $endIx4 );
        }
        $value       = $tValue;
        break;
      case 'REQUEST-STATUS':
        $tValue      = array();
        while( ! empty( $xml2 )) {
          $t         = html_entity_decode( XMLgetTagContent2( $xml2, $valueType, $endIx4 ));
          $tValue[$valueType] = $t;
          $xml2    = substr( $xml2, $endIx4 );
        }
        if( ! empty( $tValue ))
          $value   = $tValue;
        else
          $value   = array( 'code' => null, 'description' => null );
        break;
      default:
        switch( $valueType ) {
          case 'binary':    $params['VALUE'] = 'BINARY';           break;
          case 'date':      $params['VALUE'] = 'DATE';             break;
          case 'date-time': $params['VALUE'] = 'DATE-TIME';        break;
          case 'text':
          case 'unknown':   $value = html_entity_decode( $value ); break;
        }
        break;
    } // end switch( $propName )
    if( 'FREEBUSY' == $propName ) {
      $fbtype = $params['FBTYPE'];
      unset( $params['FBTYPE'] );
      $iCal->setProperty( $propName, $fbtype, $value, $params );
    }
    elseif( 'GEO' == $propName )
      $iCal->setProperty( $propName, $value['latitude'], $value['longitude'], $params );
    elseif( 'REQUEST-STATUS' == $propName ) {
      if( !isset( $value['data'] ))
        $value['data'] = FALSE;
      $iCal->setProperty( $propName, $value['code'], $value['description'], $value['data'], $params );
    }
    else {
      if( empty( $value ) && ( is_array( $value ) || ( '0' > $value )))
        $value = '';
      $iCal->setProperty( $propName, $value, $params );
    }
    $xml        = substr( $xml, $endIx);
  } // end while( ! empty( $xml ))
}
/**
 * fetch a specific XML tag content
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.22 - 2013-06-20
 * @param string $xml
 * @param string $tagName
 * @param int $endIx
 * @return mixed
 */
function XMLgetTagContent1( $xml, $tagName, & $endIx=0 ) {
  $strlen    = strlen( $tagName );
  $sx1       = 0;
  while( FALSE !== substr( $xml, $sx1, 1 )) {
    if(( FALSE !== substr( $xml, ( $sx1 + $strlen + 1 ), 1 )) &&
       ( strtolower( "<$tagName>" )   == strtolower( substr( $xml, $sx1, ( $strlen + 2 )))))
      break;
    if(( FALSE !== substr( $xml, ( $sx1 + $strlen + 3 ), 1 )) &&
       ( strtolower( "<$tagName />" ) == strtolower( substr( $xml, $sx1, ( $strlen + 4 ))))) { // empty tag
      $endIx = $strlen + 5;
      return '';
    }
    if(( FALSE !== substr( $xml, ( $sx1 + $strlen + 2 ), 1 )) &&
       ( strtolower( "<$tagName/>" )  == strtolower( substr( $xml, $sx1, ( $strlen + 3 ))))) { // empty tag
      $endIx = $strlen + 4;
      return '';
    }
    $sx1    += 1;
  }
  if( FALSE === substr( $xml, $sx1, 1 )) {
    $endIx   = ( empty( $sx )) ? 0 : $sx - 1;
    return '';
  }
  if( FALSE === ( $pos = stripos( $xml, "</$tagName>" ))) { // missing end tag??
    $endIx   = strlen( $xml ) + 1;
    return '';
  }
  $endIx     = $pos + $strlen + 3;
  return substr( $xml, ( $sx1 + $strlen + 2 ), ( $pos - $sx1 - 2 - $strlen ));
}
/**
 * fetch next (unknown) XML tagname AND content
 *
 * @author Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @since 2.16.22 - 2013-06-20
 * @param string $xml
 * @param string $tagName
 * @param int $endIx
 * @return mixed
 */
function XMLgetTagContent2( $xml, & $tagName, & $endIx ) {
  $endIx       = strlen( $xml ) + 1; // just in case.. .
  $sx1         = 0;
  while( FALSE !== substr( $xml, $sx1, 1 )) {
    if( '<' == substr( $xml, $sx1, 1 )) {
      if(( FALSE !== substr( $xml, ( $sx1 + 3 ), 1 )) && ( '<!--' == substr( $xml, $sx1, 4 ))) // skip comment
        $sx1  += 1;
      else
        break; // tagname start here
    }
    else
      $sx1    += 1;
  }
  $sx2         = $sx1;
  while( FALSE !== substr( $xml, $sx2 )) {
    if(( FALSE !== substr( $xml, ( $sx2 + 1 ), 1 )) && ( '/>' == substr( $xml, $sx2, 2 ))) { // empty tag
      $tagName = trim( substr( $xml, ( $sx1 + 1 ), ( $sx2 - $sx1 - 1 )));
      $endIx   = $sx2 + 2;
      return '';
    }
    if( '>' == substr( $xml, $sx2, 1 )) // tagname ends here
      break;
    $sx2      += 1;
  }
  $tagName     = substr( $xml, ( $sx1 + 1 ), ( $sx2 - $sx1 - 1 ));
  $endIx       = $sx2 + 1;
  if( FALSE === substr( $xml, $sx2, 1 )) {
    return '';
  }
  $strlen      = strlen( $tagName );
  if(( 'duration' == $tagName ) &&
     ( FALSE !== ( $pos1 = stripos( $xml, "<duration>",  $sx1+1  ))) &&
     ( FALSE !== ( $pos2 = stripos( $xml, "</duration>", $pos1+1 ))) &&
     ( FALSE !== ( $pos3 = stripos( $xml, "</duration>", $pos2+1 ))) &&
     ( $pos1 < $pos2 ) && ( $pos2 < $pos3 ))
    $pos = $pos3;
  elseif( FALSE === ( $pos = stripos( $xml, "</$tagName>", $sx2 )))
    return '';
  $endIx       = $pos + $strlen + 3;
  return substr( $xml, ( $sx1 + $strlen + 2 ), ( $pos - $strlen - 2 ));
}
/*********************************************************************************/
/*          Additional functions to use with vtimezone components                */
/*********************************************************************************/
/**
 * For use with
 * iCalcreator (kigkonsult.se/iCalcreator/index.php)
 * copyright (c) 2011 Yitzchok Lavi
 * icalcreator@onebigsystem.com
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
/**
 * Additional functions to use with vtimezone components
 *
 * Before calling the functions, set time zone 'GMT' ('date_default_timezone_set')!
 *
 * @author Yitzchok Lavi <icalcreator@onebigsystem.com>
 *         adjusted for iCalcreator Kjell-Inge Gustafsson, kigkonsult <ical@kigkonsult.se>
 * @version 1.0.2 - 2011-02-24
 *
 */
/**
 * Returns array with the offset information from UTC for a (UTC) datetime/timestamp in the
 * timezone, according to the VTIMEZONE information in the input array.
 *
 * $param array  $timezonesarray, output from function getTimezonesAsDateArrays (below)
 * $param string $tzid,           time zone identifier
 * $param mixed  $timestamp,      timestamp or a UTC datetime (in array format)
 * @return array, time zone data with keys for 'offsetHis', 'offsetSec' and 'tzname'
 *
 */
function getTzOffsetForDate($timezonesarray, $tzid, $timestamp) {
    if( is_array( $timestamp )) {
//$disp = sprintf( '%04d%02d%02d %02d%02d%02d', $timestamp['year'], $timestamp['month'], $timestamp['day'], $timestamp['hour'], $timestamp['min'], $timestamp['sec'] ); // test ###
      $timestamp = gmmktime(
            $timestamp['hour'],
            $timestamp['min'],
            $timestamp['sec'],
            $timestamp['month'],
            $timestamp['day'],
            $timestamp['year']
            ) ;
    }
    $tzoffset = array();
    // something to return if all goes wrong (such as if $tzid doesn't find us an array of dates)
    $tzoffset['offsetHis'] = '+0000';
    $tzoffset['offsetSec'] = 0;
    $tzoffset['tzname']    = '?';
    if( !isset( $timezonesarray[$tzid] ))
      return $tzoffset;
    $tzdatearray = $timezonesarray[$tzid];
    if ( is_array($tzdatearray) ) {
        sort($tzdatearray); // just in case
        if ( $timestamp < $tzdatearray[0]['timestamp'] ) {
            // our date is before the first change
            $tzoffset['offsetHis'] = $tzdatearray[0]['tzbefore']['offsetHis'] ;
            $tzoffset['offsetSec'] = $tzdatearray[0]['tzbefore']['offsetSec'] ;
            $tzoffset['tzname']    = $tzdatearray[0]['tzbefore']['offsetHis'] ; // we don't know the tzname in this case
        } elseif ( $timestamp >= $tzdatearray[count($tzdatearray)-1]['timestamp'] ) {
            // our date is after the last change (we do this so our scan can stop at the last record but one)
            $tzoffset['offsetHis'] = $tzdatearray[count($tzdatearray)-1]['tzafter']['offsetHis'] ;
            $tzoffset['offsetSec'] = $tzdatearray[count($tzdatearray)-1]['tzafter']['offsetSec'] ;
            $tzoffset['tzname']    = $tzdatearray[count($tzdatearray)-1]['tzafter']['tzname'] ;
        } else {
            // our date somewhere in between
            // loop through the list of dates and stop at the one where the timestamp is before our date and the next one is after it
            // we don't include the last date in our loop as there isn't one after it to check
            for ( $i = 0 ; $i <= count($tzdatearray)-2 ; $i++ ) {
                if(( $timestamp >= $tzdatearray[$i]['timestamp'] ) && ( $timestamp < $tzdatearray[$i+1]['timestamp'] )) {
                    $tzoffset['offsetHis'] = $tzdatearray[$i]['tzafter']['offsetHis'] ;
                    $tzoffset['offsetSec'] = $tzdatearray[$i]['tzafter']['offsetSec'] ;
                    $tzoffset['tzname']    = $tzdatearray[$i]['tzafter']['tzname'] ;
                    break;
                }
            }
        }
    }
    return $tzoffset;
}
/**
 * Returns an array containing all the timezone data in the vcalendar object
 *
 * @param object $vcalendar, iCalcreator calendar instance
 * @return array, time zone transition timestamp, array before(offsetHis, offsetSec), array after(offsetHis, offsetSec, tzname)
 *                based on the timezone data in the vcalendar object
 *
 */
function getTimezonesAsDateArrays($vcalendar) {
    $timezonedata = array();
    while( $vtz = $vcalendar->getComponent( 'vtimezone' )) {
        $tzid       = $vtz->getProperty('tzid');
        $alltzdates = array();
        while ( $vtzc = $vtz->getComponent( 'standard' )) {
            $newtzdates = expandTimezoneDates($vtzc);
            $alltzdates = array_merge($alltzdates, $newtzdates);
        }
        while ( $vtzc = $vtz->getComponent( 'daylight' )) {
            $newtzdates = expandTimezoneDates($vtzc);
            $alltzdates = array_merge($alltzdates, $newtzdates);
        }
        sort($alltzdates);
        $timezonedata[$tzid] = $alltzdates;
    }
    return $timezonedata;
}
/**
 * Returns an array containing time zone data from vtimezone standard/daylight instances
 *
 * @param object $vtzc, an iCalcreator calendar standard/daylight instance
 * @return array, time zone data; array before(offsetHis, offsetSec), array after(offsetHis, offsetSec, tzname)
 *
 */
function expandTimezoneDates($vtzc) {
    $tzdates = array();
    // prepare time zone "description" to attach to each change
    $tzbefore = array();
    $tzbefore['offsetHis']  = $vtzc->getProperty('tzoffsetfrom') ;
    $tzbefore['offsetSec'] = iCalUtilityFunctions::_tz2offset($tzbefore['offsetHis']);
    if(( '-' != substr( (string) $tzbefore['offsetSec'], 0, 1 )) && ( '+' != substr( (string) $tzbefore['offsetSec'], 0, 1 )))
      $tzbefore['offsetSec'] = '+'.$tzbefore['offsetSec'];
    $tzafter = array();
    $tzafter['offsetHis']   = $vtzc->getProperty('tzoffsetto') ;
    $tzafter['offsetSec']  = iCalUtilityFunctions::_tz2offset($tzafter['offsetHis']);
    if(( '-' != substr( (string) $tzafter['offsetSec'], 0, 1 )) && ( '+' != substr( (string) $tzafter['offsetSec'], 0, 1 )))
      $tzafter['offsetSec'] = '+'.$tzafter['offsetSec'];
    if( FALSE === ( $tzafter['tzname'] = $vtzc->getProperty('tzname')))
      $tzafter['tzname'] = $tzafter['offsetHis'];
    // find out where to start from
    $dtstart = $vtzc->getProperty('dtstart');
    $dtstarttimestamp = mktime(
            $dtstart['hour'],
            $dtstart['min'],
            $dtstart['sec'],
            $dtstart['month'],
            $dtstart['day'],
            $dtstart['year']
            ) ;
    if( !isset( $dtstart['unparsedtext'] )) // ??
      $dtstart['unparsedtext'] = sprintf( '%04d%02d%02dT%02d%02d%02d', $dtstart['year'], $dtstart['month'], $dtstart['day'], $dtstart['hour'], $dtstart['min'], $dtstart['sec'] );
    if ( $dtstarttimestamp == 0 ) {
        // it seems that the dtstart string may not have parsed correctly
        // let's set a timestamp starting from 1902, using the time part of the original string
        // so that the time will change at the right time of day
        // at worst we'll get midnight again
        $origdtstartsplit = explode('T',$dtstart['unparsedtext']) ;
        $dtstarttimestamp = strtotime("19020101",0);
        $dtstarttimestamp = strtotime($origdtstartsplit[1],$dtstarttimestamp);
    }
    // the date (in dtstart and opt RDATE/RRULE) is ALWAYS LOCAL (not utc!!), adjust from 'utc' to 'local' timestamp
    $diff  = -1 * $tzbefore['offsetSec'];
    $dtstarttimestamp += $diff;
                // add this (start) change to the array of changes
    $tzdates[] = array(
        'timestamp' => $dtstarttimestamp,
        'tzbefore'  => $tzbefore,
        'tzafter'   => $tzafter
        );
    $datearray = getdate($dtstarttimestamp);
    // save original array to use time parts, because strtotime (used below) apparently loses the time
    $changetime = $datearray ;
    // generate dates according to an RRULE line
    $rrule = $vtzc->getProperty('rrule') ;
    if ( is_array($rrule) ) {
        if ( $rrule['FREQ'] == 'YEARLY' ) {
            // calculate transition dates starting from DTSTART
            $offsetchangetimestamp = $dtstarttimestamp;
            // calculate transition dates until 10 years in the future
            $stoptimestamp = strtotime("+10 year",time());
            // if UNTIL is set, calculate until then (however far ahead)
            if ( isset( $rrule['UNTIL'] ) && ( $rrule['UNTIL'] != '' )) {
                $stoptimestamp = mktime(
                    $rrule['UNTIL']['hour'],
                    $rrule['UNTIL']['min'],
                    $rrule['UNTIL']['sec'],
                    $rrule['UNTIL']['month'],
                    $rrule['UNTIL']['day'],
                    $rrule['UNTIL']['year']
                    ) ;
            }
            $count = 0 ;
            $stopcount = isset( $rrule['COUNT'] ) ? $rrule['COUNT'] : 0 ;
            $daynames = array(
                        'SU' => 'Sunday',
                        'MO' => 'Monday',
                        'TU' => 'Tuesday',
                        'WE' => 'Wednesday',
                        'TH' => 'Thursday',
                        'FR' => 'Friday',
                        'SA' => 'Saturday'
                        );
            // repeat so long as we're between DTSTART and UNTIL, or we haven't prepared COUNT dates
            while ( $offsetchangetimestamp < $stoptimestamp && ( $stopcount == 0 || $count < $stopcount ) ) {
                // break up the timestamp into its parts
                $datearray = getdate($offsetchangetimestamp);
                if ( isset( $rrule['BYMONTH'] ) && ( $rrule['BYMONTH'] != 0 )) {
                    // set the month
                    $datearray['mon'] = $rrule['BYMONTH'] ;
                }
                if ( isset( $rrule['BYMONTHDAY'] ) && ( $rrule['BYMONTHDAY'] != 0 )) {
                    // set specific day of month
                    $datearray['mday']  = $rrule['BYMONTHDAY'];
                } elseif ( is_array($rrule['BYDAY']) ) {
                    // find the Xth WKDAY in the month
                    // the starting point for this process is the first of the month set above
                    $datearray['mday'] = 1 ;
                    // turn $datearray as it is now back into a timestamp
                    $offsetchangetimestamp = mktime(
                        $datearray['hours'],
                        $datearray['minutes'],
                        $datearray['seconds'],
                        $datearray['mon'],
                        $datearray['mday'],
                        $datearray['year']
                            );
                    if ($rrule['BYDAY'][0] > 0) {
                        // to find Xth WKDAY in month, we find last WKDAY in month before
                        // we do that by finding first WKDAY in this month and going back one week
                        // then we add X weeks (below)
                        $offsetchangetimestamp = strtotime($daynames[$rrule['BYDAY']['DAY']],$offsetchangetimestamp);
                        $offsetchangetimestamp = strtotime("-1 week",$offsetchangetimestamp);
                    } else {
                        // to find Xth WKDAY before the end of the month, we find the first WKDAY in the following month
                        // we do that by going forward one month and going to WKDAY there
                        // then we subtract X weeks (below)
                        $offsetchangetimestamp = strtotime("+1 month",$offsetchangetimestamp);
                        $offsetchangetimestamp = strtotime($daynames[$rrule['BYDAY']['DAY']],$offsetchangetimestamp);
                    }
                    // now move forward or back the appropriate number of weeks, into the month we want
                    $offsetchangetimestamp = strtotime($rrule['BYDAY'][0] . " week",$offsetchangetimestamp);
                    $datearray = getdate($offsetchangetimestamp);
                }
                // convert the date parts back into a timestamp, setting the time parts according to the
                // original time data which we stored
                $offsetchangetimestamp = mktime(
                    $changetime['hours'],
                    $changetime['minutes'],
                    $changetime['seconds'] + $diff,
                    $datearray['mon'],
                    $datearray['mday'],
                    $datearray['year']
                        );
                // add this change to the array of changes
                $tzdates[] = array(
                    'timestamp' => $offsetchangetimestamp,
                    'tzbefore'  => $tzbefore,
                    'tzafter'   => $tzafter
                    );
                // update counters (timestamp and count)
                $offsetchangetimestamp = strtotime("+" . (( isset( $rrule['INTERVAL'] ) && ( $rrule['INTERVAL'] != 0 )) ? $rrule['INTERVAL'] : 1 ) . " year",$offsetchangetimestamp);
                $count += 1 ;
            }
        }
    }
    // generate dates according to RDATE lines
    while ($rdates = $vtzc->getProperty('rdate')) {
        if ( is_array($rdates) ) {

            foreach ( $rdates as $rdate ) {
                // convert the explicit change date to a timestamp
                $offsetchangetimestamp = mktime(
                        $rdate['hour'],
                        $rdate['min'],
                        $rdate['sec'] + $diff,
                        $rdate['month'],
                        $rdate['day'],
                        $rdate['year']
                        ) ;
                // add this change to the array of changes
                $tzdates[] = array(
                    'timestamp' => $offsetchangetimestamp,
                    'tzbefore'  => $tzbefore,
                    'tzafter'   => $tzafter
                    );
            }
        }
    }
    return $tzdates;
}
?>
helpers/iCicons.class.php000060400000014253152455753310011425 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.1 2014-12-24
 * @since       3.2.9
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();


class iCicons
{
	// --------------------------------------------------------------------------------
	// Buttons and Icons
	// --------------------------------------------------------------------------------

	/**
	 * Shows the button corresponding to the action.
	 *
	 * @param $type of action
	 * @param $link to be handled
	 * @return $html string
	 */
	public static function showIcon($type, $link = '', $vcal = '', $gcal = '', $wcal = '', $ycal = '')
	{
		// loading Global Options
		$iC_global = JComponentHelper::getParams('com_icagenda');

		// Component Options
		$iconAddToCal_options = $iC_global->get('iconAddToCal_options', '');
		$iconAddToCal_size = $iC_global->get('iconAddToCal_size', '16');

		$html = array();

		switch ( strtolower($type) )
		{
			case 'printpreview':

				$html[]= '<a class="iCtip" href="' . $link . '" onclick="window.open(this.href,\'win2\',\'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no\'); return false;" title="' . JText::_('JGLOBAL_PRINT') . '" rel="nofollow">';

				// Joomla 3.x / 2.5 SWITCH
				if (version_compare(JVERSION, '3.0', 'ge'))
				{
					$html[]= '<span class="iCicon iCicon-print"></span>';
				}
				else
				{
					$html[]= JHtml::_('image', 'system/printButton.png', JText::_('JGLOBAL_PRINT'), null, true);
				}

				$html[]= '</a>';

				break;

			case 'print':

				$html[]= '<a href="#" onclick="window.print();return false;" title="' . JText::_('JGLOBAL_PRINT') . '" rel="nofollow">';

				// Joomla 3.x / 2.5 SWITCH
				if (version_compare(JVERSION, '3.0', 'ge'))
				{
					$html[]= '<span class="iCicon iCicon-print"></span>&#160;' . JText::_('JGLOBAL_PRINT') . '&#160;';
				}
				else
				{
					$html[]= JHtml::_('image', 'system/printButton.png', JText::_('JGLOBAL_PRINT'), null, true).'&#160;' . JText::_('JGLOBAL_PRINT') . '&#160;';
				}

				$html[]= '</a>';

				break;

			case 'vcal':

				if (is_array($iconAddToCal_options))
				{
					$addtocal = '';
					$addtocal.= '<div class="ic-tip-title">' . JText::_('COM_ICAGENDA_ADD_TO_CALL_LABEL') . '</div>';

					// Google Calendar - link
					if (in_array('1', $iconAddToCal_options))
					{
						$addtocal.= '<div class="ic-tip-link">';
						$addtocal.= '<a href="' . $gcal . '" class="ic-title-cal-tip" rel="nofollow" target="_blank">';
						$addtocal.= JHtml::_('image', 'media/com_icagenda/images/cal/google_cal-'.$iconAddToCal_size.'.png', JText::_('COM_ICAGENDA_GCALENDAR_LABEL'), array());
						$addtocal.= '&#160;' . JText::_('COM_ICAGENDA_GCALENDAR_LABEL') . '&#160;';
						$addtocal.= '</a>';
						$addtocal.= '</div>';
					}

					// iCal Calendar - ics
					if (in_array('2', $iconAddToCal_options))
					{
						$addtocal.= '<div class="ic-tip-link">';
						$addtocal.= '<a href="' . $vcal . '" class="ic-title-cal-tip" rel="nofollow" target="_blank">';
						$addtocal.= JHtml::_('image', 'media/com_icagenda/images/cal/apple_ical-'.$iconAddToCal_size.'.png', JText::_('COM_ICAGENDA_VCAL_ICAL_LABEL'), array());
						$addtocal.= '&#160;' . JText::_('COM_ICAGENDA_VCAL_ICAL_LABEL') . '&#160;';
						$addtocal.= '</a>';
						$addtocal.= '</div>';
					}

					// Outlook Calendar - ics
					if (in_array('3', $iconAddToCal_options))
					{
						$addtocal.= '<div class="ic-tip-link">';
						$addtocal.= '<a href="' . $vcal . '" class="ic-title-cal-tip" rel="nofollow" target="_blank">';
						$addtocal.= JHtml::_('image', 'media/com_icagenda/images/cal/outlook_cal-'.$iconAddToCal_size.'.png', JText::_('COM_ICAGENDA_OUTLOOK_LABEL'), array());
						$addtocal.= '&#160;' . JText::_('COM_ICAGENDA_OUTLOOK_LABEL') . '&#160;';
						$addtocal.= '</a>';
						$addtocal.= '</div>';
					}

					// Windows Live Calendar - link
					if (in_array('4', $iconAddToCal_options))
					{
						$addtocal.= '<div class="ic-tip-link">';
						$addtocal.= '<a href="' . $wcal . '" class="ic-title-cal-tip" rel="nofollow" target="_blank">';
						$addtocal.= JHtml::_('image', 'media/com_icagenda/images/cal/windows-live_cal-'.$iconAddToCal_size.'.png', JText::_('COM_ICAGENDA_LIVE_CALENDAR_LABEL'), array());
						$addtocal.= '&#160;' . JText::_('COM_ICAGENDA_LIVE_CALENDAR_LABEL') . '&#160;';
						$addtocal.= '</a>';
						$addtocal.= '</div>';
					}

					// Yahoo Calendar - link
					if (in_array('5', $iconAddToCal_options))
					{
						$addtocal.= '<div class="ic-tip-link">';
						$addtocal.= '<a href="' . $ycal . '" class="ic-title-cal-tip" rel="nofollow" target="_blank">';
						$addtocal.= JHtml::_('image', 'media/com_icagenda/images/cal/yahoo_cal-'.$iconAddToCal_size.'.png', JText::_('COM_ICAGENDA_YAHOO_CALENDAR_LABEL'), array());
						$addtocal.= '&#160;' . JText::_('COM_ICAGENDA_YAHOO_CALENDAR_LABEL') . '&#160;';
						$addtocal.= '</a>';
						$addtocal.= '</div>';
					}

					$return_atc = htmlspecialchars($addtocal);

					$html[]= '<a class="ic-addtocal" href="#" title="'.$return_atc.'" rel="nofollow">';

					// Joomla 3.x / 2.5 SWITCH
					if(version_compare(JVERSION, '3.0', 'ge'))
					{
						$html[]= '<span class="iCicon iCicon-calendar"></span>';
					}
					else
					{
						$html[]= JHtml::_('image', 'system/calendar.png', JText::_('COM_ICAGENDA_ADD_TO_CALL_LABEL'), null, true);
					}

					$html[]= '</a>';

					break;
				}

			default:
		}

		return implode("\n", $html);
	}

	/**
	 * Removes variable from URL
	 * @param $url to change
	 * @param $varname to remove from string
	 */
	public static function removeqsvar($url, $varname)
	{
		return preg_replace('/([?&])'.$varname.'=[^&]+(&|$)/','$1',$url);
	}
}
helpers/ichelper.php000060400000040015152455753310010520 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.11 2015-09-02
 * @since       3.2.8
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modelitem');
jimport( 'joomla.html.parameter' );
jimport( 'joomla.registry.registry' );

jimport('joomla.user.helper');
jimport('joomla.access.access');

class iCModeliChelper extends JModelItem
{
	// SubTitle Events list
//	public static function iCheader($total, $getpage, $arrowtext, $number_per_page, $pagination)
	public static function iCheader($total, $arrowtext, $number_per_page, $pagination)
	{
		// loading iCagenda PARAMS
		$app		= JFactory::getApplication();
		$jinput		= $app->input;

		$getpage	= $jinput->get('page', '1');

		$iCparams	= $app->getParams();

		$time		= $iCparams->get('time', '1');
		$headerList	= $iCparams->get('headerList', 1);

		if ($time == '0')
		{
			// COM_ICAGENDA_ALL
			$header_title	= JText::_( 'COM_ICAGENDA_HEADER_ALL_TITLE' );
			$header_many	= JText::sprintf( 'COM_ICAGENDA_HEADER_ALL_MANY_EVENTS', $total );
			$header_one		= JText::sprintf( 'COM_ICAGENDA_HEADER_ALL_ONE_EVENT', $total );
			$header_noevt	= JText::_( 'COM_ICAGENDA_HEADER_ALL_NO_EVENT' );
		}
		elseif ($time == '1')
		{
			// COM_ICAGENDA_OPTION_TODAY_AND_UPCOMING
			$header_title	= JText::_( 'COM_ICAGENDA_HEADER_TODAY_AND_UPCOMING_TITLE' );
			$header_many	= JText::sprintf( 'COM_ICAGENDA_HEADER_TODAY_AND_UPCOMING_MANY_EVENTS', $total );
			$header_one		= JText::sprintf( 'COM_ICAGENDA_HEADER_TODAY_AND_UPCOMING_ONE_EVENT', $total );
			$header_noevt	= JText::_( 'COM_ICAGENDA_HEADER_TODAY_AND_UPCOMING_NO_EVENT' );
		}
		elseif ($time == '2')
		{
			// COM_ICAGENDA_OPTION_PAST
			$header_title	= JText::_( 'COM_ICAGENDA_HEADER_PAST_TITLE' );
			$header_many	= JText::sprintf( 'COM_ICAGENDA_HEADER_PAST_MANY_EVENTS', $total );
			$header_one		= JText::sprintf( 'COM_ICAGENDA_HEADER_PAST_ONE_EVENT', $total );
			$header_noevt	= JText::_( 'COM_ICAGENDA_HEADER_PAST_NO_EVENT' );
		}
		elseif ($time == '3')
		{
			// COM_ICAGENDA_OPTION_FUTURE
			$header_title	= JText::_( 'COM_ICAGENDA_HEADER_UPCOMING_TITLE' );
			$header_many	= JText::sprintf( 'COM_ICAGENDA_HEADER_UPCOMING_MANY_EVENTS', $total );
			$header_one		= JText::sprintf( 'COM_ICAGENDA_HEADER_UPCOMING_ONE_EVENT', $total );
			$header_noevt	= JText::_( 'COM_ICAGENDA_HEADER_UPCOMING_NO_EVENT' );
		}
		elseif ($time == '4')
		{
			// COM_ICAGENDA_OPTION_TODAY
			$header_title	= JText::_( 'COM_ICAGENDA_HEADER_TODAY_TITLE' );
			$header_many	= JText::sprintf( 'COM_ICAGENDA_HEADER_TODAY_MANY_EVENTS', $total );
			$header_one		= JText::sprintf( 'COM_ICAGENDA_HEADER_TODAY_ONE_EVENT', $total );
			$header_noevt	= JText::_( 'COM_ICAGENDA_HEADER_TODAY_NO_EVENT' );
		}

		$report = $report2 = '';

		if ($total == 1)
		{
			$report.= '<span class="ic-subtitle-string">' . $header_one . '</span>';
		}
		if ($total == 0)
		{
			$report.= '<span class="ic-subtitle-string">' . $header_noevt . '</span>';
		}
		if ($total > 1)
		{
			$report.= '<span class="ic-subtitle-string">' . $header_many . '</span>';
		}

		$num = $number_per_page;

		// No display if number does not exist
		$pages = ($num == NULL) ? 1 : ceil($total/$num);

		$page_nb = $getpage;

		if (JRequest::getVar('page') == NULL)
		{
			$page_nb = 1;
		}

		$report2.= ($pages <= 1)
					? ''
					: ' <span class="ic-subtitle-pages"> - ' . JText::_( 'COM_ICAGENDA_EVENTS_PAGE' ) . ' '
						. $page_nb . ' / ' . $pages . '</span>';

		// Tag for header title depending of show_page_heading setting
		$menuItem	= $app->getMenu()->getActive();

    	if (is_object($menuItem)
    		&& $menuItem->params->get('show_page_heading', 1))
    	{
			$tag = 'h2';
		}
		else
		{
			$tag = 'h1';
		}

		// Display Header title/subtitle (options)
		if ($headerList == 1)
		{
			$header = '<div class="ic-header-container">';
			$header.= '<' . $tag . ' class="ic-header-title">' . $header_title . '</' . $tag . '>';
			$header.= '<div class="ic-header-subtitle">' . $report . ' ' . $report2 . '</div>';
		}
		elseif ($headerList == 2)
		{
			$header = '<div class="ic-header-container">';
			$header.= '<' . $tag . ' class="ic-header-title">' . $header_title . '</' . $tag . '>';
		}
		elseif ($headerList == 3)
		{
			$header = '<div class="ic-header-container">';
			$header.= '<div class="ic-header-subtitle">' . $report . ' ' . $report2 . '</div>';
		}
		elseif ($headerList == 4)
		{
			$header = '<div>';
		}

		$header.='</div>';
		$header.= '<br/>';

		return $header;
	}

	// Navigator Events list
//	public static function pagination($count_items, $getpage, $arrowtext, $number_per_page, $pagination)
	public static function pagination($count_items, $arrowtext, $number_per_page, $pagination)
	{
		$app	= JFactory::getApplication();
		$jinput	= $app->input;

		$getpage = $jinput->get('page', 1);

		// If number of pages < or = 1, no display of pagination
		if (($count_items / $number_per_page) <= 1)
		{
			$nav = '';
		}
		else
		{
			// first check whether there are elements of those selected
			$ctrlNext = ($count_items > $number_per_page) ? 1 : NULL;
			$ctrlBack = ($getpage && $getpage > 1) ? 1 : NULL;

			$num = $number_per_page;

			// No display if number not exist
			$pages = ($num == NULL) ? 1 : ceil($count_items / $number_per_page);

			$nav = '<div class="navigator">';

			// in the case of text next/prev
			$textnext = ($arrowtext == 1) ? JText::_( 'JNEXT' ) : '';
			$textback = ($arrowtext == 1) ? JText::_( 'JPREV' ) : '';

			$parentnav = JRequest::getInt('Itemid');

			$mainframe = JFactory::getApplication();
			$isSef = $mainframe->getCfg( 'sef' );

			if ($isSef == '1')
			{
				$urlpage = JRoute::_(JURI::current().'?');
			}
			elseif ($isSef == '0')
			{
				$urlpage = 'index.php?option=com_icagenda&amp;view=list&amp;Itemid='.(int)$parentnav.'&amp;';
			}

			if ($pages >= 2)
			{
				if ($ctrlBack != NULL)
				{
					if ($getpage && $getpage < $pages)
					{
						$pageBack	= $getpage-1;
						$pageNext	= $getpage+1;

						$nav.= '<a class="icagenda_back iCtip" href="' . JRoute::_($urlpage . 'page=' . $pageBack) . '" title="' . $textback . '"><span class="iCicon iCicon-backic"></span> ' . $textback . '&nbsp;</a>';
						$nav.= '<a class="icagenda_next iCtip" href="' . JRoute::_($urlpage . 'page=' . $pageNext) . '" title="' . $textnext . '">&nbsp;' . $textnext . ' <span class="iCicon iCicon-nextic"></span></a>';

//						$nav.= '<div class="icagenda_back"><button class="iCtip" onclick="prevNav(); return false;" title="' . JText::_( 'JPREV' ) . '"><a href="#"><span class="iCicon iCicon-backic"></span> ' . $pageBack . $textback . '&nbsp;</a></button></div>';

//						$nav.= '<div class="icagenda_next"><button class="iCtip" onclick="nextNav(); return false;" title="' . JText::_( 'JNEXT' ) . '"><a href="#">&nbsp;' . $textnext . $pageNext . ' <span class="iCicon iCicon-nextic"></span></a></button></div>';
					}
					else
					{
						$pageBack	= $getpage-1;

						$nav.= '<a class="icagenda_back iCtip" href="' . JRoute::_($urlpage . 'page=' . $pageBack) . '" title="' . $textback . '"><span class="iCicon iCicon-backic"></span> ' . $textback . '&nbsp;</a>';

//						$nav.= '<div class="icagenda_back"><button class="iCtip" onclick="prevNav(); return false;" title="' . JText::_( 'JPREV' ) . '"><a href="#"><span class="iCicon iCicon-backic"></span> ' . $pageBack . $textback . '&nbsp;</a></button></div>';
					}
				}

				if ($ctrlNext != NULL)
				{
					if ( ! $getpage)
					{
						$pageNext	= 2;
					}
					else
					{
						$pageNext	= $getpage+1;
						$pageBack	= $getpage-1;
					}

					if (empty($pageBack))
					{
						$nav.= '<a class="icagenda_next iCtip" href="' . JRoute::_($urlpage . 'page=' . $pageNext) . '" title="' . $textnext . '">&nbsp;' . $textnext . ' <span class="iCicon iCicon-nextic"></span></a>';

//						$nav.= '<div class="icagenda_next"><button class="iCtip" onclick="nextNav(); return false;" title="' . JText::_( 'JNEXT' ) . '"><a href="#">&nbsp;' . $textnext . $pageNext . ' <span class="iCicon iCicon-nextic"></span></a></button></div>';
					}
				}

//				$nav.= '<div id="currentpage"></div>';

//				$nav.= '<script>';
//				$nav.= 'function prevNav()';
//				$nav.= '{';
//				$nav.= '	document.getElementById("currentpage").innerHTML = "<input type=\"hidden\" name=\"page\" value=\"' . $pageBack . '\" />";';
//				$nav.= '	this.form.submit();';
//				$nav.= '}';
//				$nav.= 'function nextNav()';
//				$nav.= '{';
//				$nav.= '	document.getElementById("currentpage").innerHTML = "<input type=\"hidden\" name=\"page\" value=\"' . $pageNext . '\" />";';
//				$nav.= '	this.form.submit();';
//				$nav.= '}';
//				$nav.= '</script>';
			}

			if ($pagination == 1)
			{
				/* Pagination */

				if (empty($pageBack))
				{
					$nav.= '<div style="text-align:left">[ ';
				}
				elseif ($getpage && $getpage == $pages)
				{
					$nav.= '<div style="text-align:right">[ ';
				}
				else
				{
					$nav.= '<div style="text-align:center">[ ';
				}

				/* Boucle sur les pages */
				for ($i = 1 ; $i <= $pages ; $i++)
				{
					if ($i==1 || (($getpage-5) < $i && $i < ($getpage+5)) || $i==$pages)
					{
						if ($i == $pages && $getpage < ($pages-5))
						{
							$nav.= '...';
						}

						if ($i == $getpage)
						{
							$nav.= ' <b>' . $i . '</b>';
						}
						else
						{
							$nav.= ' <a href="' . $urlpage . 'page=' . $i . '"';
							$nav.= ' class="iCtip"';
							$nav.= ' title="' . JText::sprintf( 'COM_ICAGENDA_EVENTS_PAGE_PER_TOTAL', $i, $pages ) . '">';
							$nav.= $i;
							$nav.= '</a>';
						}

						if ($i == 1 && $getpage > 6)
						{
							$nav.= '...';
						}
					}
				}

				$nav.= ' ]</div>';
			}

			$nav.= '</div>';
		}

		return $nav;
	}

	// Function to get Format Date (list of events)
	public static function formatDate($date)
	{
		// Date Format Option (Global Component Option)
		$date_format_global	= JComponentHelper::getParams('com_icagenda')->get('date_format_global', 'Y - m - d');
		$date_format_global	= ($date_format_global !== '0') ? $date_format_global : 'Y - m - d'; // Previous 3.5.6 setting

		// Date Format Option (Menu Option)
		$date_format_menu	= JFactory::getApplication()->getParams()->get('format', '');
		$date_format_menu	= ($date_format_menu !== '0') ? $date_format_menu : ''; // Previous 3.5.6 setting

		// Set Date Format option to be used
		$format				= $date_format_menu ? $date_format_menu : $date_format_global;

		// Separator Option
		$separator			= JFactory::getApplication()->getParams()->get('date_separator', ' ');

		if ( ! is_numeric($format))
		{
			// Update old Date Format options of versions before 2.1.7
			$format = str_replace(array('nosep', 'nosep', 'sepb', 'sepa'), '', $format);
			$format = str_replace('.', ' .', $format);
			$format = str_replace(',', ' ,', $format);
		}

		$dateFormatted = iCGlobalize::dateFormat($date, $format, $separator);

		return $dateFormatted;
	}


	// Set Date format for url
	public static function eventUrlDate($evt)
	{
		$evt_explode	= explode(' ', $evt);
		$dateday		= $evt_explode['0'] . '-' . str_replace(':', '-', $evt_explode['1']);

		return $dateday;
	}


	// Get Next Date (or Last Date)
	public static function nextDate($evt, $i)
	{
		$eventTimeZone = null;

		$singledates	= iCString::isSerialized($i->dates) ? unserialize($i->dates) : array(); // returns array
		$period			= iCString::isSerialized($i->period) ? unserialize($i->period) : array(); // returns array
		$startdatetime	= $i->startdatetime;
		$enddatetime	= $i->enddatetime;
		$weekdays		= $i->weekdays;

		$site_today_date	= JHtml::date('now', 'Y-m-d');
		$UTC_today_date		= JHtml::date('now', 'Y-m-d', $eventTimeZone);

		$next_date			= JHtml::date($evt, 'Y-m-d', $eventTimeZone);
		$next_datetime		= JHtml::date($evt, 'Y-m-d H:i', $eventTimeZone);

		$start_date			= JHtml::date($i->startdatetime, 'Y-m-d', $eventTimeZone);
		$end_date			= JHtml::date($i->enddatetime, 'Y-m-d', $eventTimeZone);

		// Check if date from a period with weekdays has end time of the period set in next.
//		$time_next_datetime	= JHtml::date($next_datetime, 'H:i', $eventTimeZone);
		$time_next_datetime	= date('H:i', strtotime($next_datetime));
		$time_startdate		= JHtml::date($i->startdatetime, 'H:i', $eventTimeZone);
		$time_enddate		= JHtml::date($i->enddatetime, 'H:i', $eventTimeZone);

		$data_next_datetime		= date('Y-m-d H:i', strtotime($evt));

		if ($next_date == $site_today_date
			&& $time_next_datetime == $time_enddate)
		{
			$next_datetime = $next_date . ' ' . $time_startdate;
		}

		if ( $period != NULL
			&& in_array($data_next_datetime, $period) )
		{
			$next_is_in_period = true;
		}
		else
		{
			$next_is_in_period = false;
		}

		// Highlight event in progress
		if ($next_date == $site_today_date)
		{
			$start_span	= '<span class="ic-next-today">';
			$end_span	= '</span>';
		}
		else
		{
			$start_span = $end_span = '';
		}

		$separator = '<span class="ic-datetime-separator"> - </span>';

		// Format Next Date
		if ( $next_is_in_period
			&& ($start_date == $end_date || $weekdays != null) )
		{
			// Next in the period & (same start/end date OR one or more weekday selected)
			$nextDate = $start_span;
			$nextDate.= '<span class="ic-period-startdate">';
			$nextDate.= self::formatDate($evt);
			$nextDate.= '</span>';

			if ($i->displaytime == 1)
			{
				$nextDate.= ' <span class="ic-single-starttime">' . icagendaEvents::dateToTimeFormat($startdatetime) . '</span>';

				if ( icagendaEvents::dateToTimeFormat($startdatetime) != icagendaEvents::dateToTimeFormat($enddatetime) )
				{
					$nextDate.= $separator . '<span class="ic-single-endtime">' . icagendaEvents::dateToTimeFormat($enddatetime) . '</span>';
				}
			}

			$nextDate.= $end_span;
		}
		elseif ( $next_is_in_period
			&& ($weekdays == null) )
		{
			// Next in the period & different start/end date & no weekday selected
			$start	= '<span class="ic-period-startdate">';
			$start	.= self::formatDate($startdatetime);
			$start	.= '</span>';

			$end	= '<span class="ic-period-enddate">';
			$end	.= self::formatDate($enddatetime);
			$end	.= '</span>';

			if ($i->displaytime == 1)
			{
				$start		.= ' <span class="ic-period-starttime">' . icagendaEvents::dateToTimeFormat($startdatetime) . '</span>';
				$end		.= ' <span class="ic-period-endtime">' . icagendaEvents::dateToTimeFormat($enddatetime) . '</span>';
			}

			$nextDate = $start_span . $start . $separator . $end . $end_span;
		}
		else
		{
			// Next is a single date
			$nextDate = $start_span;
			$nextDate.= '<span class="ic-single-next">';
			$nextDate.= self::formatDate($evt);
			$nextDate.= '</span>';

			if ($i->displaytime == 1)
			{
				$nextDate.= ' <span class="ic-single-starttime">' . icagendaEvents::dateToTimeFormat($evt) . '</span>';
			}

			$nextDate.= $end_span;
		}

		return $nextDate;
	}


	// Read More Button
	public static function readMore ($url, $desc, $content = '')
	{
		$iCparams		= JComponentHelper::getParams('com_icagenda');
		$limitGlobal	= $iCparams->get('limitGlobal', 0);

		if ($limitGlobal == 1)
		{
			$limit = $iCparams->get('ShortDescLimit', '100');
		}
		elseif ($limitGlobal == 0)
		{
			$customlimit = $iCparams->get('limit', '100');

			$limit = is_numeric($customlimit) ? $customlimit : $iCparams->get('ShortDescLimit', '100');
		}

		$limit = is_numeric($limit) ? $limit : '1';

		$readmore	= '';

		$readmore	= ($limit <= 1) ? '' : $content;
		$text		= preg_replace('/<img[^>]*>/Ui', '', $desc);

		if (strlen($text) > $limit)
		{
			$string_cut	= substr($text, 0, $limit);
			$last_space	= strrpos($string_cut, ' ');
			$string_ok	= substr($string_cut, 0, $last_space);
			$text		= $string_ok . ' ';
			$url		= $url;
			$text		= '<a href="' . $url . '" class="more">' . $readmore . '</a>';
		}
		else
		{
			$text		= '';
		}

		return $text;
	}
}
helpers/media_css.class.php000060400000011741152455753310011764 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      doorknob
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-12-20
 * @since       3.3.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die;

/**
 * CSS @media class for iCagenda
 *
 * @since  3.3.0
 */
class iCagendaMediaCss
{
	/**
	 * Builds the CSS to be bracketed by @media statements and then inserts it into the document header
	 *
	 * @param   string  $template  The name of the theme
	 * @param   string  $type      The source of the CSS to be added:
	 *                             'component' - add the component part of the CSS
	 *                             'module' - add the module part of the CSS
	 *
	 * @return void
	 */
	public static function addMediaCss($template='default', $type='component')
	{
		// Prepare the CSS
		$css = self::getMediaCss($template, $type);
		self::writeMediaCss($css);
	}

	/**
	 * Builds the CSS to be bracketed by @media statements from separate files
	 *
	 * @param   string  &$template  The name of the theme
	 * @param   string  &$type      The source of the CSS to be added:
	 *                              'component' - add the component part of the CSS
	 *                              'module' - add the module part of the CSS
	 *
	 * @return  string CSS to be added to the page
	 */
	public static function getMediaCss(&$template, &$type)
	{
		/*
		 * Load the Theme Pack supplements for screen size variants
		 * This is based on the four screen sized defined by Bootstrap 3 (i.e. large, medium, small and extra small)
		 * The threshold values are defined in the component parameter set so that the component and any modules can
		 * use consistent values.
		 */
		jimport('joomla.application.component.helper');
		$com_params = JComponentHelper::getParams('com_icagenda');
		$media_css = '';
		$max_threshold = 0;
		$largethreshold = (int) $com_params->get('largewidththreshold', 0);
		$mbString     = extension_loaded('mbstring');

		if ($largethreshold > 0)
		{
			$css_contents = @file_get_contents(
				JPATH_ROOT . "/components/com_icagenda/themes/packs/$template/css/{$template}_{$type}_large.css");

			$css = preg_replace('!/\*.*?\*/!s', '', $css_contents);
			$size_css = $mbString ? mb_strlen($css) : strlen($css);

//			if (is_string($css) && !empty($css) && ($size_css > 10))
//			{
				$media_css .= "\n@media screen and (min-width:{$largethreshold}px){\n{$css}\n}\n";
				$max_threshold = $largethreshold - 1;
//			}
		}

		$mediumthreshold = (int) $com_params->get('mediumwidththreshold', 0);

		if ($mediumthreshold > 0)
		{
			$css_contents = @file_get_contents(
				JPATH_ROOT . "/components/com_icagenda/themes/packs/$template/css/{$template}_{$type}_medium.css");

			$css = preg_replace('!/\*.*?\*/!s', '', $css_contents);
			$size_css = $mbString ? mb_strlen($css) : strlen($css);

//			if (is_string($css) && !empty($css) && ($size_css > 10))
//			{
				$upper_limit = $max_threshold > 0 ? " and (max-width:{$max_threshold}px)" : '';
				$media_css .= "\n@media screen and (min-width:{$mediumthreshold}px)$upper_limit{\n{$css}\n}\n";
				$max_threshold = $mediumthreshold - 1;
//			}
		}

		$smallthreshold = (int) $com_params->get('smallwidththreshold', 0);

		if ($smallthreshold > 0)
		{
			$css_contents = @file_get_contents(
				JPATH_ROOT . "/components/com_icagenda/themes/packs/$template/css/{$template}_{$type}_small.css");

			$css = preg_replace('!/\*.*?\*/!s', '', $css_contents);
			$size_css = $mbString ? mb_strlen($css) : strlen($css);

//			if (is_string($css) && !empty($css) && ($size_css > 10))
//			{
				$upper_limit = $max_threshold > 0 ? " and (max-width:{$max_threshold}px)" : '';
				$media_css .= "\n@media screen and (min-width:{$smallthreshold}px)$upper_limit{\n{$css}\n}\n";
				$max_threshold = $smallthreshold - 1;
//			}

			$css_contents = @file_get_contents(
				JPATH_ROOT . "/components/com_icagenda/themes/packs/$template/css/{$template}_{$type}_xsmall.css");

			$css = preg_replace('!/\*.*?\*/!s', '', $css_contents);
			$size_css = $mbString ? mb_strlen($css) : strlen($css);

//			if (is_string($css) && !empty($css) && ($size_css > 10))
//			{
				$smallthreshold--;
				$media_css .= "\n@media screen and (max-width:{$smallthreshold}px){\n{$css}\n}\n";
//			}
		}

		return $media_css;
	}

	/**
	 * Write the CSS to the document header
	 *
	 * @param   string  &$css  The CSS to be written to the document
	 *
	 * @return void
	 */
	public static function writeMediaCss(&$css)
	{
		if (!empty($css))
		{
			$document = JFactory::getDocument();
			$document->addStyleDeclaration($css);
		}
	}
}
helpers/icmodel.php000060400000356205152455753310010354 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.12 2015-09-09
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modelitem');
jimport('joomla.html.parameter');
jimport('joomla.registry.registry');

jimport('joomla.user.helper');
jimport('joomla.access.access');

class iCModelItem extends JModelItem
{
	/**
	 * @var
	 */
	protected $msg;
	protected $filters;
	protected $options;
	protected $itObj;
	protected $where;

	protected $searchInFields = array('title', 'c.catid');

	/**
	 * Load the iChelper class
	 */
	public function __construct($config = array())
	{
		$config['filter_fields'] = array_merge($this->searchInFields, array('c.catid'));

		parent::__construct($config);

		// Load the helper class
		JLoader::register('iCModeliChelper', JPATH_SITE . '/components/com_icagenda/helpers/ichelper.php');
	}


	/**
	 * Model Builder
	 */
	protected function startiCModel()
	{
		$this->filters	= array();
		$this->options	= array();
		$this->items	= array();
		$this->itObj	= new stdClass;
	}


	/**
	 * Table importation
	 */
	public function getTable($type = 'icagenda', $prefix = 'icagendaTable', $config = array())
	{
		return JTable::getInstance($type, $prefix, $config);
	}


	/**
	 * Get all data
	 */
	protected function getItems($structure)
	{
		// Return Items
		if (isset($this->items) && is_array($this->items))
		{
			$this->items = $this->getDBitems();
		}

		foreach ($structure as $k => $v)
		{
			$this->itObj->$k = $this->$k($v);
		}

		return $this->itObj;
	}


	/**
	 * Add the filters to be used in queries
	 */
	protected function addFilter($name, $value)
	{
		$this->filters[$name] = $value;
	}


	/**
	 * Add the options you use to obtain the various data in the right setting
	 */
	protected function addOption($name, $value)
	{
		$this->options[$name]=$value;
	}


	/**
	 * Fetch data from DB
	 */
	protected function getDBitems()
	{
		// Check valid NEXT DATE
		icagendaEventsData::getNext();

		$app = JFactory::getApplication();
		$jinput = $app->input;
		$params = $app->getParams();

		// Get Settings
		$filterTime		= $params->get('time', 1);

		$jlayout		= JRequest::getCmd('layout', '');
		$layouts_array	= array('event', 'registration', 'actions');
		$layout			= in_array($jlayout, $layouts_array) ? $jlayout : '';

		// Set vars
		$nodate			= '0000-00-00 00:00:00';
		$eventTimeZone	= null;
		$datetime_today	= JHtml::date('now', 'Y-m-d H:i:s'); // Joomla Time Zone
		$date_today		= JHtml::date('now', 'Y-m-d'); // Joomla Time Zone
		$time_today		= JHtml::date('now', 'H:i:s'); // Joomla Time Zone

		// Get List Type option (list of events / list of dates)
		$allDatesDisplay = $this->options['datesDisplay'];

		// Preparing connection to db
		$db	= Jfactory::getDbo();

		// Preparing the query
		$query = $db->getQuery(true);

		// Selectable items
		$query->select('e.*,
			e.place as place_name, e.coordinate as coordinate, e.lat as lat, e.lng as lng,
			c.id as cat_id, c.title as cat_title, c.color as cat_color, c.desc as cat_desc, c.alias as cat_alias');

		// join
		$query->from('`#__icagenda_events` AS e');
		$query->leftJoin('`#__icagenda_category` AS c ON c.id = e.catid');
		$query->where('c.state = 1');

		// Where (filters)
		$filters = $this->filters;

		$where = 'e.state = ' . $filters['state'];

		$user		= JFactory::getUser();
		$userLevels	= $user->getAuthorisedViewLevels();
		$userGroups	= $user->groups;
		$groupid	= JComponentHelper::getParams('com_icagenda')->get('approvalGroups', array("8"));
		$groupid	= is_array($groupid) ? $groupid : array($groupid);

		// Test if user login have Approval Rights
		if ( !array_intersect($userGroups, $groupid)
			&& !in_array('8', $userGroups) )
		{
			$where.= ' AND e.approval <> 1';
		}
		else
		{
			$where.= ' AND e.approval < 2';
		}

		// ACCESS Filtering (if not list, use layout access control (event, registration))
		if ( ! $layout
			&& ! in_array('8', $userGroups) )
		{
			$useraccess = implode(', ', $userLevels);

			$where.= ' AND e.access IN (' . $useraccess . ')';
		}

		// LANGUAGE Filtering
		$where.= ' AND (e.language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . '))';

		unset($filters['state']);

		$k = '0';
		$this_id = null;

		if (isset($filters))
		{
			foreach($filters as $k=>$v)
			{
				// normal cases
				if ($k != 'key' && $k != 'next' && $k != 'e.catid' && $k != 'id')
				{
					$where.= ' AND '.$k.' LIKE "%'.$v.'%"';
				}

				// in case of search
				if ($k == 'key')
				{
					$keys = explode(' ', $v);

					foreach ($keys as $ke)
					{
						$where.= ' AND (e.title LIKE \'%' . $ke . '%\' OR ';
						$where.= ' e.desc LIKE \'%' . $ke . '%\' OR ';
						$where.= ' e.address LIKE \'%' . $ke . '%\' OR ';
						$where.= ' e.place LIKE \'%' . $ke . '%\' OR ';
						$where.= ' c.title LIKE \'%' . $ke . '%\')';
					}
				}

				// in the case of category
				$mcatidtrue = $this->options['mcatid'];

				if ( ! is_array($mcatidtrue))
				{
					$catold = $mcatidtrue;
					$mcatid = array($mcatidtrue);
				}
				else
				{
					$catold = '0';
					$mcatid = $mcatidtrue;
				}

				if ( ! in_array('0', $mcatid)
					|| ($catold != 0) )
				{
					if ($k == 'e.catid')
					{
						if (!is_array($v))
						{
							$v = array('' . $v . '');
						}

						$v = implode(', ', $v);

						$where.= ' AND ' . $k . ' IN (' . $v . ')';
					}
				}

				// in case of id
				if ($k == 'id')
				{
					//check if ID is a number
					if (is_numeric($v))
					{
						$this_id = (int) $v; // if event id is set in url

						$where.= ' AND e.id=' . $v;
					}
					else
					{
						//ERROR Message
					}
				}
			}
		}

		// Features - extract the number of displayable icons per event
		$query->select('feat.count AS features');
		$sub_query = $db->getQuery(true);
		$sub_query->select('fx.event_id, COUNT(*) AS count');
		$sub_query->from('`#__icagenda_feature_xref` AS fx');
		$sub_query->innerJoin("`#__icagenda_feature` AS f ON fx.feature_id=f.id AND f.state=1 AND f.icon<>'-1'");
		$sub_query->group('fx.event_id');
		$query->leftJoin('(' . (string) $sub_query . ') AS feat ON e.id=feat.event_id');

		// Filter by Features
		if (!$layout) // if view is list of events (temporary fix for calendar event links to details view)
		{
			$query->where(icagendaEventsData::getFeaturesFilter());
		}

		// Registrations total
		$query->select('r.count AS registered');
		$sub_query = $db->getQuery(true);
		$sub_query->select('r.eventid, sum(r.people) AS count');
		$sub_query->from('`#__icagenda_registration` AS r');

		$get_date = JRequest::getVar('date', '');

		if ($get_date)
		{
			$ex = explode('-', $get_date);

			if (strlen(iCDate::dateToNumeric($get_date)) != '12')
			{
				$event_url	= JURI::getInstance()->toString();
				$cleanurl	= preg_replace('/&date=[^&]*/', '', $event_url);
				$cleanurl	= preg_replace('/\?date=[^\?]*/', '', $cleanurl);

				// redirect and remove date var, if not correctly set
//				$app->redirect($cleanurl , JText::_( 'COM_ICAGENDA_ERROR_URL_DATE_NOT_FOUND' ));
				$app->redirect($cleanurl);

				return false;
			}

			if (count($ex) == 5)
			{
				$dateday = $ex['0'] . '-' . $ex['1'] . '-' . $ex['2'] . ' ' . $ex['3'] . ':' . $ex['4'] . ':00';

				$sub_query->where('r.date = ' . $db->q($dateday));
			}
		}

		$sub_query->where('r.state > 0');
		$sub_query->group('r.eventid');
		$query->leftJoin('(' . (string) $sub_query . ') AS r ON e.id=r.eventid');

		if ( ! $layout)
		{
			$number_per_page	= $this->options['number'];
			$orderdate			= $this->options['orderby'];
			$getpage			= JRequest::getVar('page', '1');

			$start = $number_per_page * ($getpage - 1);

			$all_dates_with_id	= icagendaEventsData::getAllDates();

			$count_all_dates	= count($all_dates_with_id);

			// Set list of PAGE:IDS
			$pages = ceil($count_all_dates / $number_per_page);
			$list_id = array();

			for ($n = 1; $n <= $pages; $n++)
			{
				$dpp_array = array();

				$page_nb		= $number_per_page * ($n - 1);
				$dates_per_page	= array_slice($all_dates_with_id, $page_nb, $number_per_page, true);

				foreach ($dates_per_page AS $dpp)
				{
					$dpp_alldates_array	= explode('_', $dpp);
					$dpp_date			= $dpp_alldates_array['0'];
					$dpp_id				= $dpp_alldates_array['1'];
					$dpp_array[]		= $dpp_id;
				}

				$list_id[] = implode(', ', $dpp_array) . '::' . $n;
			}

			$this_ic_ids = '';

			if ($list_id)
			{
				foreach ($list_id as $a)
				{
					$ex_listid = explode('::', $a);
					$ic_page = $ex_listid[1];
					$ic_ids = $ex_listid[0];

					if ($ic_page == $getpage)
					{
						$this_ic_ids = $ic_ids ? $ic_ids : '0';
					}
				}

				if ($this_ic_ids)
				{
					$where.= ' AND (e.id IN (' . $this_ic_ids . '))';
				}
				else
				{
					return false; // No Event (if 'All Dates' option selected)
				}
			}
		}

		// Query $where list
		$query->where($where);

		$db->setQuery($query);
		$loaddb = $db->loadObjectList();

		$registrations = icagendaEventsData::registeredList($this_id);

		// Extract the feature details, if needed
		foreach ($loaddb as $record)
		{
			if (is_null($record->features))
			{
				$record->features = array();
			}
			else
			{
				$query = $db->getQuery(true);
				$query->select('DISTINCT f.icon, f.icon_alt');
				$query->from('`#__icagenda_feature_xref` AS fx');
				$query->innerJoin("`#__icagenda_feature` AS f ON fx.feature_id=f.id AND f.state=1 AND f.icon<>'-1'");
				$query->where('fx.event_id=' . $record->id);
				$query->order('f.ordering DESC'); // Order descending because the icons are floated right
				$db->setQuery($query);
				$record->features = $db->loadObjectList();
			}

//			if (is_null($record->registered))
//			{
//				$record->registered = array();
//			}
//			else
//			{
				$record_registered = array();

				foreach ($registrations AS $reg_by_event)
				{
					$ex_reg_by_event = explode('@@', $reg_by_event);

					if ($ex_reg_by_event[0] == $record->id)
					{
						$record_registered[] = $ex_reg_by_event[0] . '@@' . $ex_reg_by_event[1] . '@@' . $ex_reg_by_event[2];
					}
				}

				$record->registered = $record_registered;
//			}
		}

		if ((!$layout && count($all_dates_with_id) > 0)
			|| $layout)
		{
			return $loaddb;
		}
	}


	/**
	 *
	 * ALL DATES - iCmodel
	 *
	 */
	protected function eventAllDates($i)
	{
		// Set vars
		$nodate = '0000-00-00 00:00:00';
		$ic_nodate = '0000-00-00 00:00';
		$eventTimeZone = null;

		// Get Data
		$tNext			= $i->next;
		$tDates			= $i->dates;
		$tId			= $i->id;
		$tState			= $i->state;
		$tEnddate		= $i->enddate;
		$tStartdate		= $i->startdate;
		$tWeekdays		= $i->weekdays;

		// Declare eventAllDates array
		$eventAllDates = array();

		// Get WeekDays Array
		$WeeksDays = iCDatePeriod::weekdaysToArray($tWeekdays);

		// If Single Dates, added each one to All Dates for this event
		$singledates = iCString::isSerialized($tDates) ? unserialize($tDates) : array();

		foreach ($singledates as $sd)
		{
			$isValid = iCDate::isDate($sd);

			if ( $isValid )
			{
				array_push($eventAllDates, $sd);
			}
		}

		// If Period Dates, added each one to All Dates for this event (filter week Days, and if date not null)
//		$StDate = JHtml::date($tStartdate, 'Y-m-d H:i', $eventTimeZone);
//		$EnDate = JHtml::date($tEnddate, 'Y-m-d H:i', $eventTimeZone);

		$perioddates = iCDatePeriod::listDates($i->startdate, $i->enddate);

		if ( (isset ($perioddates))
			&& ($perioddates != NULL) )
		{
			foreach ($perioddates as $Dat)
			{
				if (in_array(date('w', strtotime($Dat)), $WeeksDays))
				{
					$isValid = iCDate::isDate($Dat);

					if ($isValid)
					{
//						$SingleDate = JHtml::date($Dat, 'Y-m-d H:i', $eventTimeZone);
						$SingleDate = date('Y-m-d H:i', strtotime($Dat));

						array_push($eventAllDates, $SingleDate);
					}
				}
			}
		}

		return $eventAllDates;
	}

	/**
	 *
	 * EVENT DETAILS
	 *
	 */

	public function startdatetime($i)
	{
		return $i->startdate;
	}
	protected function enddatetime($i)
	{
		return $i->enddate;
	}
	protected function start_datetime($i)
	{
		return $i->startdate;
	}
	protected function end_datetime($i)
	{
		return $i->enddate;
	}
	protected function contact_name($i)
	{
		return $i->name;
	}
	protected function contact_email($i)
	{
		return $i->email;
	}

	protected function access($i){return $i->access;}
	protected function address($i){return $i->address;}
	protected function approval($i){return $i->approval;}
	protected function city($i){return $i->city;}
	protected function country($i){return $i->country;}
	protected function customfields($i){return $i->customfields;}
	protected function dates($i){return $i->dates;}
	protected function displaytime($i){return $i->displaytime;}
	protected function email($i){return $i->email;}
	protected function file($i){return $i->file;}
	protected function period($i){return $i->period;}
	protected function phone($i){return $i->phone;}
	protected function state($i){return $i->state;}
	protected function website($i){return $i->website;}
	protected function weekdays($i){return $i->weekdays;}

	protected function cat_desc($i){return $i->cat_desc;}
	protected function place_name($i){return $i->place_name;}


	// Set Meta-title for an event
	protected function metaTitle($i)
	{
		$limit = '70';
		$metaTitle = iCFilterOutput::fullCleanHTML($i->title);

		if ( strlen($metaTitle) > $limit )
		{
			$string_cut	= substr($metaTitle, 0, $limit);
			$last_space	= strrpos($string_cut, ' ');
			$string_ok	= substr($string_cut, 0, $last_space);
			$metaTitle = $string_ok;
		}

		return $metaTitle;
	}

	// Set Meta-description for an event
	protected function metaDesc($i)
	{
		$limit = '160';
		$metaDesc = iCFilterOutput::fullCleanHTML($i->metadesc);

		if ( empty($metaDesc) )
		{
			$metaDesc = iCFilterOutput::fullCleanHTML($i->desc);
		}

		if ( strlen($metaDesc) > $limit )
		{
			$string_cut	= substr($metaDesc, 0, $limit);
			$last_space	= strrpos($string_cut, ' ');
			$string_ok	= substr($string_cut, 0, $last_space);
			$metaDesc = $string_ok;
		}

		return $metaDesc;
	}

	// Set Meta-description as Short Description
	protected function metaAsShortDesc($i)
	{
		$metaAsShortDesc = iCFilterOutput::fullCleanHTML($i->metadesc);

		return $metaAsShortDesc;
	}


	protected function BackURL($i)
	{
		// Get Current Itemid
		//$this_itemid = JRequest::getInt('Itemid');

		//$BackURL = str_replace('&amp;','&', JRoute::_('index.php?option=com_icagenda&view=list&Itemid='.$this_itemid));
		$BackURL = 'javascript:history.go(-1)';

		return $BackURL;
	}

	protected function BackArrow($i)
	{
		// Get Current Itemid
		$this_itemid	= JRequest::getInt('Itemid');

		$jlayout		= JRequest::getCmd('layout', '');
		$layouts_array	= array('event', 'registration');
		$layout			= in_array($jlayout, $layouts_array) ? $jlayout : '';

		$manageraction	= JRequest::getVar('manageraction', '');
		$referer		= isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

		// RTL css if site language is RTL
		$lang			= JFactory::getLanguage();
		$back_icon		= ($lang->isRTL()) ? 'iCicon iCicon-nextic' : 'iCicon iCicon-backic';

		if ($layout != ''
			&& strpos($referer,'registration') === false
			&& !$manageraction)
		{
			if ($referer != "")
			{
				$BackArrow = '<a class="iCtip" href="' . str_replace(array('"', '<', '>', "'"), '', $referer) .'" title="' . JText::_( 'COM_ICAGENDA_BACK' ) . '"><span class="' . $back_icon . '"></span> <span class="small">' . JText::_( 'COM_ICAGENDA_BACK' ) .'</span></a>';
			}
			else
			{
				$BackArrow = '';
				return false;
			}
		}
		elseif ($manageraction || strpos($referer,'registration') !== false)
		{
			$BackArrow = '<a class="iCtip" href="' . JRoute::_('index.php?option=com_icagenda&Itemid=' . $this_itemid) .'" title="'. JText::_( 'COM_ICAGENDA_BACK' ) .'"><span class="' . $back_icon . '"></span> <span class="small">' . JText::_( 'COM_ICAGENDA_BACK' ) . '</span></a>';
		}
		else
		{
			return false;
		}

		return $BackArrow;
	}


	protected function ApprovedNotification ($creatorEmail, $eventUsername, $eventTitle, $eventLink)
	{
		$app = JFactory::getApplication();

		// Load Joomla Config Mail Options
		$sitename	= $app->getCfg('sitename');
		$mailfrom	= $app->getCfg('mailfrom');
		$fromname	= $app->getCfg('fromname');

		// Create User Mailer
		$approvedmailer = JFactory::getMailer();

		// Set Sender of Notification Email
		$approvedmailer->setSender(array( $mailfrom, $fromname ));

		// Set Recipient of Notification Email
		$approvedmailer->addRecipient($creatorEmail);

		// Set Subject of Notification Email
		$approvedsubject = JText::sprintf('COM_ICAGENDA_APPROVED_USEREMAIL_SUBJECT', $eventTitle);
		$approvedmailer->setSubject($approvedsubject);

		// Set Body of Notification Email
		$approvedbodycontent = JText::sprintf( 'COM_ICAGENDA_SUBMISSION_ADMIN_EMAIL_HELLO', $eventUsername) . ',<br /><br />';
		$approvedbodycontent.= JText::sprintf( 'COM_ICAGENDA_APPROVED_USEREMAIL_BODY_INTRO', $sitename) . '<br /><br />';
//		$approvedbodycontent.= JText::_( 'COM_ICAGENDA_APPROVED_USEREMAIL_EVENT_LINK' ).'<br />';

		$eventLink_html = '<br /><a href="' . $eventLink . '">' . $eventLink . '</a>';
		$approvedbodycontent.= JText::sprintf( 'COM_ICAGENDA_APPROVED_USEREMAIL_EVENT_LINK', $eventLink_html ).'<br /><br />';

//		$approvedbodycontent.= '<a href="' . $eventLink . '">' . $eventLink . '</a><br /><br />';
		$approvedbodycontent.= '<hr><small>' . JText::_( 'COM_ICAGENDA_APPROVED_USEREMAIL_EVENT_LINK_INFO' ) . '</small><br /><br />';

		$approvedbody = rtrim($approvedbodycontent);

		$approvedmailer->isHTML(true);
		$approvedmailer->Encoding = 'base64';

		$approvedmailer->setBody($approvedbody);

		// Send User Notification Email
		if (isset($creatorEmail))
		{
			$send = $approvedmailer->Send();
		}
	}

	protected function ManagerIcons ($i)
	{
		$app = JFactory::getApplication();

		// Get Current Itemid
		$this_itemid = JRequest::getInt('Itemid');

		// Get Current Url
		$returnURL = base64_encode(JURI::getInstance()->toString());

		$event_slug = empty($i->alias) ? $i->id : $i->id . ':' . $i->alias;

		// Set Manager Actions Url
		$managerActionsURL = 'index.php?option=com_icagenda&view=list&layout=event&id=' . $event_slug . '&Itemid=' . $this_itemid;

		// Set Email Notification Url to event
		$linkEmailUrl = JURI::base() . 'index.php?option=com_icagenda&view=list&layout=event&id=' . $event_slug . '&Itemid=' . $this_itemid;

		// Get Approval Status
		$approved = $i->approval;

		// Get User groups allowed to approve event submitted
		$groupid = JComponentHelper::getParams('com_icagenda')->get('approvalGroups', array("8"));

		$groupid = is_array($groupid) ? $groupid : array($groupid);

		// Get User Infos
		$user	= JFactory::getUser();

		$icid	= $user->get('id');
		$icu	= $user->get('username');
		$icp	= $user->get('password');

		// Get User groups of the user logged-in
		if (version_compare(JVERSION, '3.0', 'lt'))
		{
			$userGroups = $user->getAuthorisedGroups();
		}
		else
		{
			$userGroups = $user->groups;
		}

		$baseURL = JURI::base();
		$subpathURL = JURI::base(true);

		$baseURL = str_replace('/administrator', '', $baseURL);
		$subpathURL = str_replace('/administrator', '', $subpathURL);

		$urlcheck = str_replace('&amp;','&', JRoute::_('administrator/index.php?option=com_icagenda&view=events').'&icu=' . $icu . '&icp=' . $icp . '&filter_search=' . $i->id);

		// Sub Path filtering
		$subpathURL = ltrim($subpathURL, '/');

		// URL Event Check filtering
		$urlcheck = ltrim($urlcheck, '/');

		if (substr($urlcheck, 0, strlen($subpathURL)+1) == "$subpathURL/")
		{
			$urlcheck = substr($urlcheck, strlen($subpathURL)+1);
		}

		$urlcheck = rtrim($baseURL, '/') . '/' . ltrim($urlcheck, '/');

		$icu_approve	= JRequest::getVar('manageraction', '');

		$jlayout		= JRequest::getCmd('layout', '');
		$layouts_array	= array('event', 'registration');
		$icu_layout		= in_array($jlayout, $layouts_array) ? $jlayout : '';
//		$icu_layout = JRequest::getVar('layout', '');

		if ( array_intersect($userGroups, $groupid)
			|| in_array('8', $userGroups) )
		{
			if ($approved == 1)
			{
				if (version_compare(JVERSION, '3.0', 'lt'))
				{
					$approvalButton = '<a class="iCtip" href="'.JRoute::_($managerActionsURL.'&manageraction=approve').'" title="'.JText::_( 'COM_ICAGENDA_APPROVE_AN_EVENT_LBL' ).'"><div class="iCicon-16 approval"></div></a>';
 				}
 				else
 				{
					$approvalButton = '<a class="iCtip" href="'.JRoute::_($managerActionsURL.'&manageraction=approve').'" title="'.JText::_( 'COM_ICAGENDA_APPROVE_AN_EVENT_LBL' ).'"><button type="button" class="btn btn-micro btn-warning btn-xs"><i class="icon-checkmark"></i></button></a>';
				}

				if ( ($icu_layout == 'event')
					&& ($icu_approve == 'approve') )
				{
        			$db		= Jfactory::getDbo();
					$query	= $db->getQuery(true);
        			$query->clear();
					$query->update(' #__icagenda_events ');
					$query->set(' approval = 0 ' );
					$query->where(' id = ' . (int) $i->id );
					$db->setQuery((string)$query);
					$db->query($query);
					$approveSuccess = '"'.$i->title.'"';
					$alertmsg = JText::sprintf('COM_ICAGENDA_APPROVED_SUCCESS', $approveSuccess);
					$alerttitle = JText::_( 'COM_ICAGENDA_APPROVED' );
					$alerttype = 'success';
					$approvedLink = JRoute::_($managerActionsURL);

					self::ApprovedNotification($i->created_by_email, $i->username, $i->title, $linkEmailUrl);
					$app->enqueueMessage($alertmsg, $alerttitle, $alerttype);
				}
				else
				{
					return $approvalButton;
				}
			}
			else
			{
				return false;
			}
		}
		else
		{
			return false;
		}
	}

	// Function Email Cloaking
	protected function emailLink ($i)
	{
		if ($i->email != NULL)
		{
			return JHtml::_('email.cloak', $i->email);
		}
	}

	// Image URL
	protected function image ($i)
	{
		$ic_image = JURI::base() . $i->image;

		if ($i->image)
		{
			return $ic_image;
		}

		return false;
	}


	// Get Items
	protected function items($atr)
	{
		// Initialize controls
		$access = '0';
		$control = '';

		$db		= JFactory::getDbo();
		$query	= $db->getQuery(true);
		$query->select('a.title, a.published, a.id')
			->from('`#__menu` AS a')
			->where( "(link = 'index.php?option=com_icagenda&view=list') AND (published > 0)" );
		$db->setQuery($query);
		$link = $db->loadObjectList();
		$itemid = JRequest::getVar('Itemid');

		$parentnav = $itemid;

		foreach ($link as $l)
		{
			if (($l->published == '1') AND ($l->id == $parentnav))
			{
				$linkexist = '1';
			}
		}

		if (is_numeric($parentnav) && !is_array($parentnav) && !$parentnav == 0 && $linkexist == 1)
		{
			$atr	= $atr['item'];
			$items	= $this->items;
			$itDef	= new stdClass;

			if ($this->items == NULL)
			{
				return NULL;
			}
			else
			{
				foreach($items as $i)
				{
					// Language Control
					$lang = JFactory::getLanguage();
					$eventLang = '';
					$langTag = '';
					$langTag = $lang->getTag();

					if (isset($i->language))
					{
						$eventLang = $i->language;
					}
					if ($eventLang == '' || $eventLang == '*')
					{
						$eventLang = $langTag;
					}

					if ($i->next != '0000-00-00 00:00:00')
					{
						$it	= new stdClass;
						$id	= $i->id;

						foreach($atr as $k => $v)
						{
							// Corrige Notice : Undefined property: stdClass::
							if (!empty($i->$k))
							{
								// functions
								$it->$k = $i->$k;
							}
							else
							{
								// data
								if (method_exists($this, $k))
								{
									$it->$k = $this->$k($i);
								}
							}
						}
						$itDef->$id = $it;
					}
				}
			}

			return $itDef;
		}
		else
		{
			JError::raiseError('404', JTEXT::_('JERROR_LAYOUT_PAGE_NOT_FOUND'));

			return false;
		}
	}


	// Set event Url
	protected function url ($i)
	{
		$menuID			= $this->options['Itemid'];
		$eventnumber	= $i->id;
		$event_slug		= empty($i->alias) ? $i->id : $i->id . ':' . $i->alias;

		$url			= JRoute::_('index.php?option=com_icagenda&view=list&layout=event&id=' . $event_slug . '&Itemid=' . (int)$menuID);

		if (is_numeric($menuID) && is_numeric($eventnumber)
			&& !is_array($menuID) && !is_array($eventnumber)
			)
		{
			return $url;
		}
		else
		{
			$url = JRoute::_('index.php');

			return $url;
		}
	}

	// Get event Url for Add To Cal
	protected function Event_Link($i)
	{
		$lien			= $this->options['Itemid'];
		$eventnumber	= $i->id;
		$event_slug		= empty($i->alias) ? $i->id : $i->id . ':' . $i->alias;
		$date			= $i->next;

		// Get the "event" URL
		$baseURL	= JURI::base();
		$subpathURL	= JURI::base(true);

		$baseURL	= str_replace('/administrator', '', $baseURL);
		$subpathURL	= str_replace('/administrator', '', $subpathURL);

		$urlevent	= str_replace('&amp;','&', JRoute::_('index.php?option=com_icagenda&view=list&layout=event&Itemid=' . (int)$lien . '&id=' . $event_slug));

		// Sub Path filtering
		$subpathURL	= ltrim($subpathURL, '/');

		// URL Event Details filtering
		$urlevent	= ltrim($urlevent, '/');

		if (substr($urlevent, 0, strlen($subpathURL)+1) == "$subpathURL/")
		{
			$urlevent = substr($urlevent, strlen($subpathURL)+1);
		}

		$urlevent	= rtrim($baseURL,'/').'/'.ltrim($urlevent,'/');

		$url		= $urlevent;

		if (is_numeric($lien) && is_numeric($eventnumber)
			&& !is_array($lien) && !is_array($eventnumber)
			)
		{
			return $url;
		}
		else
		{
			$url = JRoute::_('index.php');

			return JURI::base().$url;
		}

	}

	// Title with link to details
	//
	// DEPRECATED
	protected function titleLink($i)
	{
		return '<a href="' . $this->url($i) . '">' . $i->title . '</a>';
	}

	// Title + Manager Icons
	protected function titlebar($i)
	{
		$this_itemid		= JRequest::getInt('Itemid');
		$list_title_length	= JComponentHelper::getParams('com_icagenda')->get('list_title_length', '');

		$i_title			= $this->titleFormat($i);

		$jlayout			= JRequest::getCmd('layout', '');
		$layouts_array		= array('event', 'registration');
		$layout				= in_array($jlayout, $layouts_array) ? $jlayout : '';

		$mbString			= extension_loaded('mbstring');

		$title_length		= $mbString ? mb_strlen($i_title, 'UTF-8') : strlen($i_title);

		if (empty($layout)
			&& ! empty($list_title_length))
		{
			$title	= $mbString
					? trim(mb_substr($i_title, 0, $list_title_length, 'UTF-8'))
					: trim(substr($i_title, 0, $list_title_length));

			$new_title_length = $mbString ? mb_strlen($title, 'UTF-8') : strlen($title);

			if ($new_title_length < $title_length)
			{
				$title.= '...';
			}
		}
		else
		{
			$title = $i_title;
		}

		$approval = $i->approval;

		$event_slug = empty($i->alias) ? $i->id : $i->id . ':' . $i->alias;

		// Set Manager Actions Url
		$managerActionsURL	= 'index.php?option=com_icagenda&view=list&layout=event&id=' . $event_slug . '&Itemid=' . $this_itemid;

		$unapproved			= '<a class="iCtip" href="' . JRoute::_($managerActionsURL) . '" title="'.JText::_( 'COM_ICAGENDA_APPROVE_AN_EVENT_LBL' ).'"><small><span class="iCicon-open-details"></span></small></a>';

		if ($title != NULL && $approval == 1)
		{
			return $title . ' ' . $unapproved;
		}
		elseif ($title != NULL && $approval != 1)
		{
			return $title;
		}

		return NULL;
	}

	// Title
	protected function titleFormat($i)
	{
		$text_transform	= JComponentHelper::getParams('com_icagenda')->get('titleTransform', '');
		$mbString		= extension_loaded('mbstring');

		if ($text_transform == 1)
		{
			$titleFormat = $mbString ? iCString::mb_ucfirst(mb_strtolower($i->title)) : ucfirst(strtolower($i->title));

			return $titleFormat;
		}
		elseif ($text_transform == 2)
		{
			$titleFormat = $mbString ? mb_convert_case($i->title, MB_CASE_TITLE, "UTF-8") : ucwords(strtolower($i->title));

			return $titleFormat;
		}
		elseif ($text_transform == 3)
		{
			$titleFormat = $mbString ? mb_strtoupper($i->title, "UTF-8") : strtoupper($i->title);

			return $titleFormat;
		}
		elseif ($text_transform == 4)
		{
			$titleFormat = $mbString ? mb_strtolower($i->title, "UTF-8") : strtolower($i->title);

			return $titleFormat;
		}

		return $i->title;
	}

	// Title
	protected function title($i)
	{
		return $i->title;
	}

	// Short Description
	public function shortdesc($i)
	{
		$shortdesc = $i->shortdesc ? $i->shortdesc : NULL;

		return $shortdesc;
	}

	// Description
	public function desc($i)
	{
		$desc = $i->desc ? $i->desc : NULL;

		return $desc;
	}

	// Short Description (content prepare)
	protected function shortDescription($i)
	{
		$text				= JHtml::_('content.prepare', $i->shortdesc);
		$shortDescription	= $i->shortdesc ? $text : NULL;

		return $shortDescription;
	}

	// Full Description (content prepare)
	protected function description($i)
	{
		$text			= JHtml::_('content.prepare', $i->desc);
		$description	= $i->desc ? $text : NULL;

		return $description;
	}

	// Auto Short Description (Full Description > Short)
	protected function descShort($i)
	{
		$descShort = icagendaEvents::shortDescription($i->desc);

		return $descShort;
	}


	// Image TAG
	protected function imageTag($i)
	{
		if (!$i->image == NULL)
		{
			return '<img src="' . $i->image . '" alt="" />';
		}
	}


	// File TAG
	protected function fileTag($i)
	{
		return '<a class="icDownload" href="' . $i->file . '" target="_blank">' . JText::_( 'COM_ICAGENDA_EVENT_DOWNLOAD' ) . '</a>';
	}


	// Website TAG
	protected function websiteLink($i)
	{
		$gettarget	= JComponentHelper::getParams('com_icagenda')->get('targetLink', '');
		$target		= !empty($gettarget) ? '_blank' : '_parent';

		$link		= iCUrl::urlParsed($i->website, 'scheme');

		return '<a href="' . $link . '" target="' . $target . '">' . $i->website . '</a>';
	}


	/**
	 * TIME
	 */

	// Format Time (eg. 00:00)
	protected function evenTime($i)
	{
		if ($this->displaytime($i) == 1)
		{
			return icagendaEvents::dateToTimeFormat($i->next);
		}
		else
		{
			return NULL;
		}
	}


	/**
	 * DAY
	 */

	// Day
	protected function day ($i)
	{
		$eventTimeZone	= null;
		$day_date		= JHtml::date($i->next, 'd', $eventTimeZone);

		return $day_date;
	}

	// Day of the week, Full - From Joomla language file xx-XX.ini (eg. Saturday)
	protected function weekday ($i)
	{
		$eventTimeZone	= null;
		$full_weekday	= JHtml::date($i->next, 'l', $eventTimeZone);
		$weekday		= JText::_($full_weekday);

		return $weekday;
	}

	// Day of the week, Short - From Joomla language file xx-XX.ini (eg. Sat)
	protected function weekdayShort ($i)
	{
		$eventTimeZone	= null;
		$short_weekday	= JHtml::date($i->next, 'D', $eventTimeZone);
		$weekdayShort	= JText::_($short_weekday);

		return $weekdayShort;
	}


	/**
	 * MONTHS
	 */

	// Function used for special characters
	function substr_unicode($str, $s, $l = null)
	{
    	return join("", array_slice(
		preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $s, $l));
	}

	// Format Month (eg. December)
	protected function month ($i)
	{
		$eventTimeZone	= null;
		$full_month		= JHtml::date($i->next, 'F', $eventTimeZone);
		$lang_month		= JText::_($full_month);

		return $lang_month;
	}


	// Format Month Numeric - (eg. 07)
	protected function monthNum ($i)
	{
		$eventTimeZone	= null;
		$monthNum		= JHtml::date($i->next, 'm', $eventTimeZone);

		return $monthNum;
	}


	/**
	 * YEAR
	 */

	// Format Year Numeric - (eg. 2013)
	protected function year ($i)
	{
		$eventTimeZone	= null;
		$year			= JHtml::date($i->next, 'Y', $eventTimeZone);

		return $year;
	}

	// Format Year Short Numeric - (eg. 13)
	protected function yearShort ($i)
	{
		$eventTimeZone	= null;
		$yearShort		= JHtml::date($i->next, 'y', $eventTimeZone);

		return $yearShort;
	}


	////////////
	// DATES
	////////////

	/**
	 * Next Date Text
	 *
	 * @version 3.5.6
	 */
	protected function dateText($i)
	{
		$eventTimeZone		= null;

		$dates				= iCString::isSerialized($i->dates) ? unserialize($i->dates) : array(); // returns array
		$period				= iCString::isSerialized($i->period) ? unserialize($i->period) : array(); // returns array
		$weekdays			= $i->weekdays;

		$site_today_date	= JHtml::date('now', 'Y-m-d');
		$UTC_today_date		= JHtml::date('now', 'Y-m-d', $eventTimeZone);

		$alldates_array 	= array_merge($dates, $period);
 		$alldates			= array_filter($alldates_array, function($var) {return $var == iCDate::isDate($var);});

		$next_date			= date('Y-m-d', strtotime($i->next));
		$next_datetime		= date('Y-m-d H:i', strtotime($i->next));

		$next_is_in_period	= in_array($next_datetime, $period) ? true : false;

		$totDates			= count($alldates);

		if ($totDates > 1
			&& $next_date > $site_today_date)
		{
			rsort($alldates);

			$last_date = JHtml::date($alldates[0], 'Y-m-d', $eventTimeZone);

			if ( ! $next_is_in_period
				&& $last_date == $next_date)
			{
				$dateText = JText::_( 'COM_ICAGENDA_EVENT_DATE_LAST' );
			}
			elseif ( ! $next_is_in_period)
			{
				$dateText = JText::_( 'COM_ICAGENDA_EVENT_DATE_FUTUR' );
			}
			elseif ($next_is_in_period
				&& $weekdays == NULL)
			{
				$dateText = JText::_( 'COM_ICAGENDA_LEGEND_DATES' );
			}
			else
			{
				$dateText = JText::_( 'COM_ICAGENDA_EVENT_DATE' );
			}
		}
		elseif ($totDates > 1
			&& $next_date < $site_today_date)
		{
			if ($totDates == 2)
			{
				$dateText	= $next_is_in_period
							? JText::_( 'COM_ICAGENDA_EVENT_DATE' )
							: JText::_( 'COM_ICAGENDA_EVENT_DATE_PAST' );
			}
			else
			{
				$dateText	= ($next_is_in_period && $weekdays == NULL)
							? JText::_( 'COM_ICAGENDA_LEGEND_DATES' )
							: JText::_( 'COM_ICAGENDA_EVENT_DATE_PAST' );
			}
		}
		elseif ($next_date == $site_today_date)
		{
			$dateText = $next_is_in_period ? JText::_( 'COM_ICAGENDA_EVENT_DATE_PERIOD_NOW' ) : JText::_( 'COM_ICAGENDA_EVENT_DATE_TODAY' );
		}
		else
		{
			$dateText = JText::_( 'COM_ICAGENDA_EVENT_DATE' );
		}

		return $dateText;
	}

	/**
	 * Get Next Date (or Last Date)
	 *
	 * @version 3.4.0-rc
	 */
	protected function nextDate($i)
	{
		$eventTimeZone = null;

		$period			= unserialize($i->period); // returns array
		$startdatetime	= $i->startdate;
		$enddatetime	= $i->enddate;
		$weekdays		= $i->weekdays;

		$site_today_date	= JHtml::date('now', 'Y-m-d');
		$UTC_today_date		= JHtml::date('now', 'Y-m-d', $eventTimeZone);

		$next_date			= JHtml::date($i->next, 'Y-m-d', $eventTimeZone);
		$next_datetime		= JHtml::date($i->next, 'Y-m-d H:i', $eventTimeZone);

		$start_date			= JHtml::date($i->startdate, 'Y-m-d', $eventTimeZone);
		$end_date			= JHtml::date($i->enddate, 'Y-m-d', $eventTimeZone);

		// Check if date from a period with weekdays has end time of the period set in next.
//		$time_next_datetime	= JHtml::date($next_datetime, 'H:i', $eventTimeZone);
		$time_next_datetime	= date('H:i', strtotime($next_datetime));
		$time_startdate		= JHtml::date($i->startdate, 'H:i', $eventTimeZone);
		$time_enddate		= JHtml::date($i->enddate, 'H:i', $eventTimeZone);

		if ($next_date == $site_today_date
			&& $time_next_datetime == $time_enddate)
		{
			$next_datetime = $next_date . ' ' . $time_startdate;
		}

		if ($period != NULL && in_array($next_datetime, $period))
		{
			$next_is_in_period = true;
		}
		else
		{
			$next_is_in_period = false;
		}

		// Highlight event in progress
		if ($next_date == $site_today_date)
		{
			$start_span	= '<span class="ic-next-today">';
			$end_span	= '</span>';
		}
		else
		{
			$start_span = $end_span = '';
		}

		$separator = '<span class="ic-datetime-separator"> - </span>';

		// Format Next Date
		if ( $next_is_in_period
			&& ($start_date == $end_date || $weekdays != null) )
		{
			// Next in the period & (same start/end date OR one or more weekday selected)
			$nextDate = $start_span;
			$nextDate.= '<span class="ic-period-startdate">';
			$nextDate.= $this->formatDate($i->next);
			$nextDate.= '</span>';

			if ($this->displaytime($i) == 1)
			{
				$nextDate.= ' <span class="ic-single-starttime">' . $this->startTime($i) . '</span>';

				if ($this->startTime($i) != $this->endTime($i))
				{
					$nextDate.= $separator . '<span class="ic-single-endtime">' . $this->endTime($i) . '</span>';
				}
			}

			$nextDate.= $end_span;
		}
		elseif ( $next_is_in_period
			&& ($weekdays == null) )
		{
			// Next in the period & different start/end date & no weekday selected
			$start	= '<span class="ic-period-startdate">';
			$start	.= $this->startDate($i);
			$start	.= '</span>';

			$end	= '<span class="ic-period-enddate">';
			$end	.= $this->endDate($i);
			$end	.= '</span>';

			if ($this->displaytime($i) == 1)
			{
				$start		.= ' <span class="ic-period-starttime">' . $this->startTime($i) . '</span>';
				$end		.= ' <span class="ic-period-endtime">' . $this->endTime($i) . '</span>';
			}

			$nextDate = $start_span . $start . $separator . $end . $end_span;
		}
		else
		{
			// Next is a single date
			$nextDate = $start_span;
			$nextDate.= '<span class="ic-single-next">';
			$nextDate.= $this->formatDate($i->next);
			$nextDate.= '</span>';

			if ($this->displaytime($i) == 1)
			{
				$nextDate.= ' <span class="ic-single-starttime">' . $this->evenTime($i) . '</span>';
			}

			$nextDate.= $end_span;
		}

		return $nextDate;
	}


	// Control Upcoming dates Period
	protected function periodControl ($i)
	{
		$eventTimeZone		= null;
		$date_today			= JHtml::date('now', 'Y-m-d');
		$datetime_enddate	= JHtml::date($i->enddate, 'Y-m-d H:i', $eventTimeZone);
		$upPeriod			= '1';

		if (strtotime($datetime_enddate) > strtotime($date_today))
		{
			return $upPeriod;
		}
	}


	public static function getNbTicketsBooked($date, $event_registered, $event_id = null, $date_control = null)
	{
		$eventTimeZone		= null;
		$event_registered	= is_array($event_registered) ? $event_registered : array();
		$nb_registrations	= 0;

		// Get Date if set in url as var
		$get_date = JRequest::getVar('date', null);

		if ( ! $get_date && $date_control)
		{
			$get_date = null;
		}

		foreach ($event_registered AS $reg)
		{
			$ex_reg = explode('@@', $reg); // eventid@@date@@people

			if ( ! $date || $date == 'period')
			{
				$nb_registrations = $nb_registrations + $ex_reg[2];
			}
			elseif ($get_date
				&& $event_id == $ex_reg[0]
				&& date('Y-m-d H:i', strtotime($date)) == date('Y-m-d H:i', strtotime($ex_reg[1]))
				)
			{
				$nb_registrations = $nb_registrations + $ex_reg[2];
			}
			elseif ( ! $get_date
				&& $event_id == $ex_reg[0]
				&& $ex_reg[1] == 'period'
				)
			{
				$nb_registrations = $nb_registrations + $ex_reg[2];
			}
			elseif ( ! $get_date
				&& $event_id == $ex_reg[0]
				&& date('Y-m-d H:i', strtotime($date)) == date('Y-m-d H:i', strtotime($ex_reg[1]))
				)
			{
				$nb_registrations = $nb_registrations + $ex_reg[2];
			}
		}

		return $nb_registrations;
	}


	// Ticket(s) booked
	protected function totalRegistered($i)
	{
		$eventTimeZone		= null;
		$date_today			= JHtml::date('now', 'Y-m-d');
		$allDates			= $this->eventAllDates($i);
		$typeReg			= $this->evtParams($i)->get('typeReg', '');
		$perioddates		= iCDatePeriod::listDates($i->startdate, $i->enddate, $eventTimeZone);

		// Check the period if individual dates
		$only_startdate		= ($i->weekdays || $i->weekdays == '0') ? false : true;

		sort($allDates);

		$total_tickets_booked = 0;

		// Get Date if set in url as var
		$get_date = JRequest::getVar('date', null);

		if ($get_date)
		{
			$ex = explode('-', $get_date);

			if (count($ex) == 5)
			{
				$dateday = $ex['0'] . '-' . $ex['1'] . '-' . $ex['2'] . ' ' . $ex['3'] . ':' . $ex['4'];
			}
			else
			{
				$dateday = '';
			}
		}
		else
		{
			$dateday = '';
		}

		$this_date	= ! empty($dateday) ? JHtml::date($dateday, 'Y-m-d H:i:s', $eventTimeZone) : null;

		// By Single Dates (registration type is not for all dates of the events)
		if ($typeReg != 2)
		{
			foreach ($allDates as $k => $d)
			{
				$date_control	= JHtml::date($d, 'Y-m-d H:i', $eventTimeZone);

				if ($only_startdate && in_array($date_control, $perioddates))
				{
					$is_full_period = true;
				}
				else
				{
					$is_full_period = false;
				}

				$datetime_date	= date('Y-m-d H:i:s', strtotime($d));
				$nb_tickets		= self::getNbTicketsBooked($datetime_date, $i->registered, $i->id, $is_full_period);

				// NO Date in URL - FULL PERIOD (no weekdays) - Date IS in the PERIOD
				if ( ! $get_date && $only_startdate && in_array($date_control, $perioddates))
				{
					$total_tickets_booked		= $nb_tickets;
				}

				// Date in URL - FULL PERIOD (no weekdays) - Date IS NOT in the PERIOD
				elseif ($get_date && $only_startdate && ! in_array($date_control, $perioddates))
				{
					if ($nb_tickets > 0
						&& strtotime($this_date) == strtotime($datetime_date))
					{
						$total_tickets_booked	= $total_tickets_booked + $nb_tickets;
					}

					// Only one date for registration, and the setting option of event is set to list of dates (equals "for all dates of event)
					elseif (count($allDates) == 1)
					{
						$nb_tickets				= self::getNbTicketsBooked(null, $i->registered, $i->id, $is_full_period);
						$total_tickets_booked	= $total_tickets_booked + $nb_tickets;
					}
				}

				// Date in URL - PERIOD is Individual DATES (weekdays selected)
				elseif ($get_date && ! $only_startdate)
				{
					if ($nb_tickets > 0
						&& strtotime($this_date) == strtotime($datetime_date))
					{
						$total_tickets_booked	= $total_tickets_booked + $nb_tickets;
					}
				}

				// NO Date in URL (all tickets for the events, not taking into account the dates)
				elseif (! $get_date)
				{
					if ($nb_tickets > 0)
					{
						$total_tickets_booked	= self::getNbTicketsBooked(null, $i->registered, $i->id, $is_full_period);
					}
				}
			}
		}
		else
		{
			$nb_tickets = self::getNbTicketsBooked('period', $i->registered, $i->id);
			$total_tickets_booked = $nb_tickets;
		}

		return $total_tickets_booked;
	}

	// Ticket(s) could be booked
	protected function ticketsCouldBeBooked($i)
	{
		$eventTimeZone		= null;
		$date_today			= JHtml::date('now', 'Y-m-d');
		$datetime_today		= JHtml::date('now', 'Y-m-d H:i');
		$allDates			= $this->eventAllDates($i);
		$max_tickets		= $this->evtParams($i)->get('maxReg', '1000000');
		$typeReg			= $this->evtParams($i)->get('typeReg', '1');
		$perioddates		= iCDatePeriod::listDates($i->startdate, $i->enddate, $eventTimeZone);
		$regUntilEnd		= JComponentHelper::getParams('com_icagenda')->get('reg_end_period', 0);

		// Check the period if individual dates
		$only_startdate		= ($i->weekdays || $i->weekdays == '0') ? false : true;

		sort($allDates);

		if ($typeReg ==  '2')
		{
			foreach ($allDates as $k => $d)
			{
				if (strtotime($d) < strtotime($datetime_today))
				{
					return false;
				}
			}
		}

		$total_tickets_bookable = 0;

		foreach ($allDates as $k => $d)
		{
			$date_control	= JHtml::date($d, 'Y-m-d H:i', $eventTimeZone);
			$is_in_period	= in_array($date_control, $perioddates) ? true : false;

			if ($only_startdate && $is_in_period)
			{
				$is_full_period = true;
			}
			else
			{
				$is_full_period = false;
			}

			$datetime_date		= date('Y-m-d H:i:s', strtotime($d));
			$datetime_startdate	= date('Y-m-d H:i:s', strtotime($i->startdate));
			$datetime_enddate	= date('Y-m-d H:i:s', strtotime($i->enddate));

			$nb_tickets_left	= $max_tickets - self::getNbTicketsBooked($datetime_date, $i->registered, $i->id, $is_full_period);

			// Full period & registration for all dates of the event
			if ($is_full_period
				&& $typeReg == 2
				&& $regUntilEnd == 0
				&& (strtotime($datetime_startdate) < strtotime($date_today))
				)
			{
				$total_tickets_bookable = 0;
			}
			elseif ($is_full_period
				&& $regUntilEnd == 1
				&& (strtotime($datetime_enddate) <= strtotime($datetime_today))
				)
			{
				$total_tickets_bookable = 0;
			}
			elseif (strtotime($d) > strtotime($date_today))
			{
				if ($nb_tickets_left > 0)
				{
					$total_tickets_bookable = $total_tickets_bookable + $nb_tickets_left;
				}
			}
		}

		if ($total_tickets_bookable > 0)
		{
			return true;
		}

		return false;
	}


	// Dates Drop list Registration
	protected function datelistMkt($i)
	{
		$eventTimeZone		= null;
		$date_today			= JHtml::date('now', 'Y-m-d');
		$date_time_today	= JHtml::date('now', 'Y-m-d H:i');
		$allDates			= $this->eventAllDates($i);
		$timeformat			= $this->options['timeformat'];
		$max_tickets		= $this->evtParams($i)->get('maxReg', '1000000');
		$perioddates		= iCDatePeriod::listDates($i->startdate, $i->enddate, $eventTimeZone);
		$regUntilEnd		= JComponentHelper::getParams('com_icagenda')->get('reg_end_period', 0);

		// Check the period if individual dates
		$only_startdate		= ($i->weekdays || $i->weekdays == '0') ? false : true;

		$lang_time = ($timeformat == 1) ? 'H:i' : 'h:i A';

		sort($allDates);

		$p = 0;

		foreach ($allDates as $k => $d)
		{
			$date_control = JHtml::date($d, 'Y-m-d H:i', $eventTimeZone);

			if ($only_startdate && in_array($date_control, $perioddates))
			{
				$is_full_period = true;
				$datetime_date	= ($regUntilEnd == 1)
								? date('Y-m-d H:i:s', strtotime($i->enddate))
								: date('Y-m-d H:i:s', strtotime($i->startdate));
			}
			else
			{
				$is_full_period = false;
				$datetime_date	= date('Y-m-d H:i:s', strtotime($d));
			}

			$nb_tickets_left	= $max_tickets - self::getNbTicketsBooked($datetime_date, $i->registered, $i->id, $is_full_period);

			$date_today_compare	= ($this->displaytime($i) == 1) ? $date_time_today : $date_today;

			if (strtotime($datetime_date) > strtotime($date_today_compare)
				&& $nb_tickets_left > 0)
			{
				$tickets_left = ($max_tickets != '1000000') ? ' (&#10003;' . $nb_tickets_left . ')' : '';

				if ($is_full_period)
				{
					if ($p == 0)
					{
						$upDays[$k] = '@@' . $this->formatDate($i->startdate) . ' &#x279c; ' . $this->formatDate($i->enddate) . $tickets_left;
						$p = $p+1;
					}
				}
				else
				{
					$date = $this->formatDate($d);

					$event_time = ($this->displaytime($i) == 1) ? ' - '.date($lang_time, strtotime($datetime_date)) : '';

					$upDays[$k] = $datetime_date . '@@' . $date . $event_time . $tickets_left;
				}
			}
		}

		if (isset($upDays))
		{
			return $upDays;
		}
	}

	// Function return true if upcoming dates for Booking
	protected function upcomingDatesBooking($i)
	{
		if (count($this->datelistMkt($i)) > 0)
		{
			return true;
		}

		return false;
	}

	// All Single Dates in Event Details Page
	protected function datelistUl ($i)
	{
		$iCparams		= JComponentHelper::getParams('com_icagenda');
		$timeformat		= $this->options['timeformat'];

		// Hide/Show Option
		$SingleDates			= $iCparams->get('SingleDates', 1);

		// Access Levels Option
//		$accessSingleDates		= $iCparams->get('accessSingleDates', 1);

		// Order by Dates
		$SingleDatesOrder		= $iCparams->get('SingleDatesOrder', 1);

		// List Model
		$SingleDatesListModel	= $iCparams->get('SingleDatesListModel', 1);

		if ($SingleDates == 1)
		{
//			if ($this->accessLevels($accessSingleDates))
//			{
//				$days = unserialize($i->dates);
				$days = iCString::isSerialized($i->dates) ? unserialize($i->dates) : array(); // returns array

				if ($SingleDatesOrder == 1)
				{
					rsort($days);
				}
				elseif ($SingleDatesOrder == 2)
				{
					sort($days);
				}

				$totDates = count($days);

				if ($timeformat == 1)
				{
					$lang_time = 'H:i';
				}
				else
				{
					$lang_time = 'h:i A';
				}

				// Detect if Singles Dates, and no single date with null value
				$displayDates = false;
				$nbDays = count($days);

				foreach ($days as $k => $d)
				{
					if ($d != '0000-00-00 00:00' && $d != '0000-00-00 00:00:00'
						&& $nbDays != 0)
					{
						$displayDates = true;
					}
				}

				$daysUl = '';

				if ($displayDates)
				{
					if ($SingleDatesListModel == '2')
					{
						$n = 0;
						$daysUl.= '<div class="alldates"><i>'. JText::_( 'COM_ICAGENDA_LEGEND_DATES' ).': </i>';

						foreach ($days as $k => $d)
						{
							$n	= $n+1;
							$fd	= $this->formatDate($d);

							$timeDate	= ($this->displaytime($i) == 1)
										? ' <span class="evttime">'.date($lang_time, strtotime($d)).'</span>'
										: '';

							if ($n <= ($totDates-1))
							{
								$daysUl.= '<span class="alldates">'.$fd.$timeDate.'</span> - ';
							}
							elseif ($n == $totDates)
							{
	   							$daysUl.= '<span class="alldates">'.$fd.$timeDate.'</span>';
							}
						}

						$daysUl.= '</div>';
					}
					else
					{
						$daysUl.= '<ul class="alldates">';

						foreach ($days as $k => $d)
						{
							$fd	= $this->formatDate($d);

							$timeDate	= ($this->displaytime($i) == 1)
										? ' <span class="evttime">'.date($lang_time, strtotime($d)).'</span>'
										: '';

							$daysUl.= '<li class="alldates">'.$fd.$timeDate.'</li>';
						}

						$daysUl.= '</ul>';
					}
				}

				if ($totDates > '0')
				{
					return $daysUl;
				}
				else
				{
					return false;
				}
//			}
//			else
//			{
//				return false;
//			}
		}
		else
		{
			return false;
		}
	}

	// Function Period Display in Registration
	protected function periodDisplay($i)
	{
		if ($this->eventHasPeriod($i))
		{
			if (iCDate::isDate($i->startdate) || iCDate::isDate($i->enddate))
			{
				$show = '1';

				return $show;
			}
		}
	}

	// Format Start Date of a period
	protected function startDate($i)
	{
		return $this->formatDate($i->startdate);;
	}

	// Format End Date of a period
	protected function endDate($i)
	{
		return $this->formatDate($i->enddate);
	}

	// Start Day of a period (numeric 1)
	protected function startDay($i)
	{
		$day_format		= 'd-m-Y';
		$start_day		= date($day_format, strtotime($i->startdate));
		$format			= '%e';

		if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
		{
			$format = preg_replace('#(?<!%)((?:%%)*)%e#', '\1%#d', $format);
		}

		$startDay	= iCDate::isDate($i->startdate)
					? strftime($format, strtotime($start_day))
					: '&nbsp;&nbsp;';

		return $startDay;
	}

	// End Day of a period (numeric 1)
	protected function endDay($i)
	{
		$day_format		= 'd-m-Y';
		$end_day		= date($day_format, strtotime($i->enddate));
		$format			= '%e';

		if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
		{
			$format = preg_replace('#(?<!%)((?:%%)*)%e#', '\1%#d', $format);
		}

		$endDay	= iCDate::isDate($i->enddate)
				? strftime($format, strtotime($end_day))
				: '&nbsp;&nbsp;';

		return $endDay;
	}

	// End Month of a period (numeric 01)
	protected function endMonthNum($i)
	{
		$eventTimeZone	= null;
		$endMonthNum	= JHtml::date($i->enddate, 'm', $eventTimeZone);

		return JText::_($endMonthNum);
	}

	// End Month of a period (text January)
	protected function endMonth($i)
	{
		$eventTimeZone	= null;
		$endMonth		= JHtml::date($i->enddate, 'F', $eventTimeZone);

		return JText::_($endMonth);
	}

	// End Year of a period (numeric 2001)
	protected function endYear($i)
	{
		$eventTimeZone	= null;
		$endYear		= JHtml::date($i->enddate, 'Y', $eventTimeZone);

		return JText::_($endYear);
	}

	// Format Start Time of a period
	protected function startTime($i)
	{
		$eventTimeZone		= null;
		$datetime_startdate	= JHtml::date($i->startdate, 'Y-m-d H:i', $eventTimeZone);
		$timeformat			= $this->options['timeformat'];

		$lang_time = ($timeformat == 1) ? 'H:i' : 'h:i A';

		$startTime = date($lang_time, strtotime($datetime_startdate));

		if ($this->displaytime($i) == 1)
		{
			return $startTime;
		}
	}

	// Format End Time of a period
	protected function endTime($i)
	{
		$eventTimeZone		= null;
		$datetime_enddate	= JHtml::date($i->enddate, 'Y-m-d H:i', $eventTimeZone);
		$timeformat			= $this->options['timeformat'];

		$lang_time = ($timeformat == 1) ? 'H:i' : 'h:i A';

		$endTime = date($lang_time, strtotime($datetime_enddate));

		if ($this->displaytime($i) == 1)
		{
			return $endTime;
		}
	}


	// Display period text width Format Date (eg. from 00-00-0000 to 00-00-0000)
	protected function periodDates ($i)
	{
		$iCparams = JComponentHelper::getParams('com_icagenda');

		// Hide/Show Option
		$PeriodDates = $iCparams->get('PeriodDates', 1);

		// Access Levels Option
		$accessPeriodDates = $iCparams->get('accessPeriodDates', 1);

		// List Model
		$SingleDatesListModel = $iCparams->get('SingleDatesListModel', 1);

		// First day of the week
		$firstday_week_global = $iCparams->get('firstday_week_global', 1);

		// WeekDays
		$weekdays = $i->weekdays;
		$weekdaysall = empty($weekdays) ? true : false;

		if ($firstday_week_global == '1')
		{
			$weekdays_array = explode (',', $weekdays);

			if (in_array('0', $weekdays_array))
			{
				$weekdays = str_replace('0', '', $weekdays);
				$weekdays = $weekdays.',7';
			}
		}

		if (!$weekdaysall)
		{
			$weekdays_array = explode (',', $weekdays);
			$wdaysArray = array();

			foreach ($weekdays_array AS $wd)
			{
				if ($firstday_week_global != '1')
				{
					if ($wd == 0) $wdaysArray[] = JText::_( 'SUNDAY' );
				}
				if ($wd == 1) $wdaysArray[] = JText::_( 'MONDAY' );
				if ($wd == 2) $wdaysArray[] = JText::_( 'TUESDAY' );
				if ($wd == 3) $wdaysArray[] = JText::_( 'WEDNESDAY' );
				if ($wd == 4) $wdaysArray[] = JText::_( 'THURSDAY' );
				if ($wd == 5) $wdaysArray[] = JText::_( 'FRIDAY' );
				if ($wd == 6) $wdaysArray[] = JText::_( 'SATURDAY' );
				if ($firstday_week_global == '1')
				{
					if ($wd == 7) $wdaysArray[] = JText::_( 'SUNDAY' );
				}
			}

			$last  = array_slice($wdaysArray, -1);
			$first = join(', ', array_slice($wdaysArray, 0, -1));
			$both  = array_filter(array_merge(array($first), $last));

			// RTL css if site language is RTL
			$lang = JFactory::getLanguage();

			if ( $lang->isRTL() )
			{
				$arrow_list = '&#8629;';
			}
			else
			{
				$arrow_list = '&#8627;';
			}

			$wdays = $arrow_list . ' <small><i>' . join(' & ', $both) . '</i></small>';
		}
		else
		{
			$wdays = '';
		}

		$showDays ='';

		if ( $PeriodDates == 1 )
		{
			// NOT CURRENTLY USED (is this option needed?)
//			if ( $this->accessLevels($accessPeriodDates) )
//			{
				$startDate	= $this->formatDate($i->startdate);
				$endDate	= $this->formatDate($i->enddate);

				if ($startDate == $endDate)
				{
					$start = $this->startDate($i);
					$end = '';

					if ($this->displaytime($i) == 1)
					{
						if ($this->startTime($i) !== $this->endTime($i))
						{
							$timeOneDay = '<span class="evttime">'.$this->startTime($i).' - '.$this->endTime($i).'</span>';
						}
						else
						{
							$timeOneDay = '<span class="evttime">'.$this->startTime($i).'</span>';
						}
					}
					else
					{
						$timeOneDay = '';
					}
				}
				else
				{
					$start = ucfirst(JText::_( 'COM_ICAGENDA_PERIOD_FROM' )).' '.$this->startDate($i).' <span class="evttime">'.$this->startTime($i).'</span>';
					$end = JText::_( 'COM_ICAGENDA_PERIOD_TO' ).' '.$this->endDate($i).' <span class="evttime">'.$this->endTime($i).'</span>';
					$showDays = $wdays;
					$timeOneDay = '';
				}

				if ($SingleDatesListModel == 2)
				{
					$period = '<div class="alldates"><i>'. JText::_( 'COM_ICAGENDA_EVENT_PERIOD' ).': </i>'.$start.' '.$end.' '.$timeOneDay;
					if (!empty($showDays))
					{
						$period.= '<br /><span style="margin-left:30px">'.$showDays.'</span>';
					}
					$period.= '</div>';
				}
				else
				{
					$period = '<ul class="alldates"><li>'.$start.' '.$end.' '.$timeOneDay;
					if (!empty($showDays))
					{
						$period.= '<br/>'.$showDays;
					}
					$period.= '</li></ul>';
				}

				if ($this->eventHasPeriod($i))
				{
					if (($i->startdate!='0000-00-00 00:00:00') AND ($i->enddate!='0000-00-00 00:00:00'))
					{
						return $period;
					}
				}
				else
				{
					return false;
				}
//			}
//			else
//			{
//				return false;
//			}
		}
		else
		{
			return false;
		}
	}


	// Function to get Format Date (event item)
	protected function formatDate($date)
	{
		// Date Format Option (Global Component Option)
		$date_format_global	= JComponentHelper::getParams('com_icagenda')->get('date_format_global', 'Y - m - d');
		$date_format_global	= ($date_format_global !== '0') ? $date_format_global : 'Y - m - d'; // Previous 3.5.6 setting

		// Date Format Option (Menu Option)
		$date_format_menu	= JFactory::getApplication()->getParams()->get('format', '');
		$date_format_menu	= ($date_format_menu !== '0') ? $date_format_menu : ''; // Previous 3.5.6 setting

		// Set Date Format option to be used
		$format				= $date_format_menu ? $date_format_menu : $date_format_global;

		// Separator Option
		$separator			= JFactory::getApplication()->getParams()->get('date_separator', ' ');

		if ( ! is_numeric($format))
		{
			// Update old Date Format options of versions before 2.1.7
			$format = str_replace(array('nosep', 'nosep', 'sepb', 'sepa'), '', $format);
			$format = str_replace('.', ' .', $format);
			$format = str_replace(',', ' ,', $format);
		}

		$dateFormatted = iCGlobalize::dateFormat($date, $format, $separator);

		return $dateFormatted;
	}


	/**
	 * GOOGLE MAPS
	 */

	// Latitude
	protected function lat ($i)
	{
		if (($i->coordinate != NULL) && ($i->lat == '0.0000000000000000'))
		{
			$ex			= explode(', ', $i->coordinate);
			$latresult	= $ex[0];
		}
		elseif ($i->lat != '0.0000000000000000')
		{
			$latresult	= $i->lat;
		}
		else
		{
			$latresult	= NULL;
		}

		return $latresult;
	}

	// Longitude
	protected function lng ($i)
	{
		if (($i->coordinate != NULL) && ($i->lng == '0.0000000000000000'))
		{
			$ex			= explode(', ', $i->coordinate);
			$lngresult	= $ex[1];
		}
		elseif ($i->lng != '0.0000000000000000')
		{
			$lngresult	= $i->lng;
		}
		else
		{
			$lngresult	= NULL;
		}

		return $lngresult;
	}

	// Function Map
	protected function map ($i)
	{
		$maplat	= $this->lat($i);
		$maplng	= $this->lng($i);
		$mapid	= $i->id;

		$iCgmap = '<div class="icagenda_map" id="map_canvas'.(int)$mapid.'" style="width:'.$this->options['m_width'].'; height:'.$this->options['m_height'].'"></div>';
		$iCgmap.= '<script type="text/javascript">';
		$iCgmap.= 'initialize('.$maplat.', '.$maplng.', '.(int)$mapid.');';
		$iCgmap.= '</script>';

		return $iCgmap;
	}

	// Function Map
	protected function coordinate ($i)
	{
		// Hide/Show Option
		$GoogleMaps			= JComponentHelper::getParams('com_icagenda')->get('GoogleMaps', 1);

		// Access Levels Option
		$accessGoogleMaps	= JComponentHelper::getParams('com_icagenda')->get('accessGoogleMaps', 1);

		$maplat				= $this->lat($i);
		$maplng				= $this->lng($i);

		if ($GoogleMaps == 1
			&& $this->accessLevels($accessGoogleMaps)
			&& $maplat != NULL
			&& $maplng != NULL
			)
		{
			return true;
		}

		return false;
	}


	/**
	 * Registered Users List
	 */

	// Participant List Display
	protected function participantList($i)
	{
		$iCparams				= JComponentHelper::getParams('com_icagenda');

		// Get Option if usage of iCagenda registration form for this event
		$evtParams				= $this->evtParams($i);
		$regLink				= $evtParams->get('RegButtonLink', '');

		// Hide/Show Option
		$participantList		= $iCparams->get('participantList', 1);

		// Access Levels Option
		$accessParticipantList	= $iCparams->get('accessParticipantList', 1);

		if ($participantList == 1
			&& ! $regLink
			&& $this->accessLevels($accessParticipantList)
			)
		{
			return $participantList;
		}

		return false;
	}


	// Display Title List of Participants (if no slide effect)
	protected function participantListTitle($i)
	{
		// Get Option if usage of iCagenda registration form for this event
		$evtParams			= $this->evtParams($i);
		$regLink			= $evtParams->get('RegButtonLink', '');

		$participantList	= $this->options['participantList'];
		$participantSlide	= $this->options['participantSlide'];

		$registration		= $this->statutReg($i) ? $this->statutReg($i) : '';

		if ($participantSlide == 0
			&& $registration == 1
			&& $participantList == 1
			&& !$regLink
			)
		{
			return JText::_( 'COM_ICAGENDA_EVENT_LIST_OF_PARTICIPANTS');
		}
	}

	// Display Registered Users
	protected function registeredUsers($i)
	{
		$eventTimeZone = null;

		// Get Component PARAMS
		$iCparams = JComponentHelper::getParams('com_icagenda');

		// Preparing connection to db
		$db	= JFactory::getDBO();
		// Preparing the query
		$query = $db->getQuery(true);
		$query->select(' r.userid AS userid, r.name AS registeredUsers, r.date as regDate, r.people as regPeople, r.email as regEmail,
						u.name AS name, u.username AS username')
			->from('#__icagenda_registration AS r')
			->leftJoin('#__users as u ON u.id = r.userid')
			->where('(r.eventId='.(int)$i->id.') AND (r.state > 0)');
		$db->setQuery($query);

		$registeredUsers	= $db->loadObjectList();
		$nbusers			= count($registeredUsers);
		$nbmax				= $nbusers-1;
		$registration		= '';
		$registration		= $this->statutReg($i);
		$n					= '0';

		// Slide Params
		$participantList	= $iCparams->get('participantList', 1);
		$participantSlide	= $iCparams->get('participantSlide', 1);
		$participantDisplay	= $iCparams->get('participantDisplay', 1);
		$fullListColumns	= $iCparams->get('fullListColumns', 'tiers');

		// logged-in Users: Name/User Name Option
		$nameJoomlaUser		= $iCparams->get('nameJoomlaUser', 1);

		// Get Type Registration (for all dates or per date)
		$typeReg			= $this->evtParams($i)->get('typeReg', 1);

		// Get Date if set in url as var
		$get_date			= JRequest::getVar('date', null);

		if ($get_date)
		{
			$ex = explode('-', $get_date);

			if (count($ex) == 5)
			{
				$dateday = $ex['0'].'-'.$ex['1'].'-'.$ex['2'].' '.$ex['3'].':'.$ex['4'];
			}
			else
			{
				$dateday = '';
			}
		}
		else
		{
			$dateday = '';
		}

		$this_date	= JHtml::date($dateday, 'Y-m-d H:i', $eventTimeZone);

		// Start List of Participants
		jimport( 'joomla.html.html.sliders' );
		$slider_c = '';

		$list_participants = '';

		if ($participantList == 1 && $registration == 1)
		{
			$n_list='names_noslide';

			if ($participantSlide == 1)
			{
				$n_list = 'names_slide';
				$slider_c = 'class="pane-slider content"';
				$list_participants.= JHtml::_('sliders.start', 'icagenda', array('useCookie'=>0, 'startOffset'=>-1, 'startTransition'=>1));
				$list_participants.= JHtml::_('sliders.panel', JText::_('COM_ICAGENDA_EVENT_LIST_OF_PARTICIPANTS'), 'slide1');
			}

			foreach ($registeredUsers as $reguser)
			{
				$this_reg_date	= strtotime($reguser->regDate)
								? JHtml::date($reguser->regDate, 'Y-m-d H:i', $eventTimeZone)
								: $reguser->regDate;

				if ( ($this_reg_date == $this_date)
					|| ($typeReg == 2)
					)
				{
					$n = $n+1;
				}

				// Registration by dates, and registration date is not filled
				elseif ($typeReg == 1
					&& ! $this_reg_date)
				{
					$n = $n+1;
				}
			}

			if ($nbusers == NULL || ($n == 0 && ! empty($get_date)))
			{
				$list_participants.= '<div ' . $slider_c . '>';
				$list_participants.= '&nbsp;'.JText::_( 'COM_ICAGENDA_NO_REGISTRATION').'&nbsp;';
				$list_participants.= '</div>';
			}

			// Full display
			elseif ($participantDisplay == 1)
			{
				$column = isset($fullListColumns) ? $fullListColumns : 'tiers';

				$list_participants.= '<div ' . $slider_c . '>';

				foreach ($registeredUsers as $reguser)
				{
					$this_reg_date	= strtotime($reguser->regDate)
									? JHtml::date($reguser->regDate, 'Y-m-d H:i', $eventTimeZone)
									: $reguser->regDate;

					if ( ($this_reg_date == $this_date || empty($get_date))
						|| $typeReg == 2
						|| ($typeReg == 1 && ! $this_reg_date)
						)
					{
						$avatar = md5( strtolower( trim( $reguser->regEmail ) ) );

						// Get Username and name
						if ( ! empty($reguser->userid))
						{
							$data_name		= $reguser->name;
							$data_username	= $reguser->username;

							if ($nameJoomlaUser == 1)
							{
								$reguser->registeredUsers = $reguser->registeredUsers;
							}
							else
							{
								$reguser->registeredUsers = $data_username;
							}
						}

						$regDate = '';

						if (strtotime($reguser->regDate)) // Test if registered date before 3.3.3 could be converted
						{
							// Control if date valid format (Y-m-d H:i)
							$datetime_format	= 'Y-m-d H:i:s';
							$datetime_input		= $reguser->regDate;
							$datetime_input		= trim($datetime_input);
							$datetime_is_valid	= date($datetime_format, strtotime($datetime_input)) == $datetime_input;

							if ($datetime_is_valid) // New Data value (since 3.3.3)
							{
								$ex_reg_datetime_db	= explode (' ', $datetime_input);
								$registered_date	= $this->formatDate(date('Y-m-d', strtotime($ex_reg_datetime_db['0'])));
								$reg_time_get		= isset($ex_reg_datetime_db['1']) ? $ex_reg_datetime_db['1'] : '';
							}
							else // Test if old date format (before 3.3.3) could be converted. If not, displays old format.
							{
								$ex_reg_datetime	= explode (' - ', trim($reguser->regDate));

								// Control if date valid format (Y-m-d) - Means could be converted
								$date_format		= 'Y-m-d H:i:s';
								$date_input			= $ex_reg_datetime['0'];
								$date_input			= trim($date_input);
								$date_str			= strtotime($date_input);
								$date_is_valid		= date($date_format, $date_str) == $date_input;

								if ($date_is_valid)
								{
									$registered_date = $this->formatDate(date('Y-m-d', $date_str));
								}
								else
								{
									$registered_date = $ex_reg_datetime['0'];
								}

								$reg_time_get = isset($ex_reg_datetime['1']) ? $ex_reg_datetime['1'] : '';
							}

							$regDate.= $registered_date;

							if ($reg_time_get)
							{
								$regDate.= ' - '.date('H:i', strtotime($reg_time_get));
							}
						}
						else
						{
							$regDate.= $reguser->regDate;
						}

						if ($n <= $nbmax || $n == $nbusers)
						{
							$list_participants.= '<table class="list_table ' . $column . '" cellpadding="0"><tbody><tr><td class="imgbox"><img alt="' . $reguser->registeredUsers . '"  src="http://www.gravatar.com/avatar/' . $avatar . '?s=36&d=mm"/></td><td valign="middle"><span class="list_name">' . $reguser->registeredUsers . '</span><span class="list_places"> (' . $reguser->regPeople . ')</span><br /><span class="list_date">' . $regDate . '</span></td></tr></tbody></table>';
						}
					}
				}
				$list_participants.= '</div>';
			}

			// Avatar display
			elseif ($participantDisplay == 2)
			{
				$list_participants.= '<div ' . $slider_c . '>';

				foreach ($registeredUsers as $reguser)
				{
					$this_reg_date	= strtotime($reguser->regDate)
									? JHtml::date($reguser->regDate, 'Y-m-d H:i', $eventTimeZone)
									: $reguser->regDate;

					if ( ($this_reg_date == $this_date || empty($get_date))
						|| $typeReg == 2
						|| ($typeReg == 1 && ! $this_reg_date)
						)
					{
						$avatar	= md5(strtolower(trim($reguser->regEmail)));

						// Get Username and name
						if ( ! empty($reguser->userid))
						{
							$data_name		= $reguser->name;
							$data_username	= $reguser->username;

							if ($nameJoomlaUser == 1)
							{
								$reguser->registeredUsers = $data_name;
							}
							else
							{
								$reguser->registeredUsers = $data_username;
							}
						}

						if ($n <= $nbmax || $n == $nbusers)
						{
							$list_participants.= '<div style="width: 76px; height: 80px; float:left; margin:2px; text-align:center;"><img style="border-radius: 3px 3px 3px 3px; margin:2px 0px;" alt="' . $reguser->registeredUsers . '"  src="http://www.gravatar.com/avatar/' . $avatar . '?s=48&d=mm"/><br/><strong style="text-align:center; font-size:9px;">' . $reguser->registeredUsers . '</strong></div>';
						}
					}
				}
				$list_participants.= '</div>';
			}

			// Name/username display
			elseif ($participantDisplay == 3)
			{
				$list_participants.= '<div ' . $slider_c . '>';
				$list_participants.= '<div class="' . $n_list . '">';

				$list_username = '';

				foreach ($registeredUsers as $reguser)
				{
					$this_reg_date	= strtotime($reguser->regDate)
									? JHtml::date($reguser->regDate, 'Y-m-d H:i', $eventTimeZone)
									: $reguser->regDate;

					if ( ($this_reg_date == $this_date ||empty($get_date))
						|| $typeReg == 2
						|| ($typeReg == 1 && ! $this_reg_date)
						)
					{

						// Get Username and name
						if ( ! empty($reguser->userid))
						{
							$data_name		= $reguser->name;
							$data_username	= $reguser->username;

							if ($nameJoomlaUser == 1)
							{
								$reguser->registeredUsers = $data_name;
							}
							else
							{
								$reguser->registeredUsers = $data_username;
							}
						}

						$list_username.= $reguser->registeredUsers . ', ';
					}
				}

				$list_participants.= trim($list_username, ", ");

				$list_participants.= '</div>';
				$list_participants.= '</div>';
			}

			if ($participantSlide == 1)
			{
				$list_participants.= JHtml::_('sliders.end');
			}
		}
		else
		{
			$list_participants.= '';
		}

		return $list_participants;
	}


	/**
	 * SPECIAL FUNCTIONS
	 */

	// function Event Options
	protected function evtParams($i)
	{
		$evtParams = '';
		$evtParams = new JRegistry($i->params);

		return $evtParams;
	}

	// Function if Period Dates exist // DEPRECATED
	protected function periodTest($i)
	{
		$daysp = unserialize($i->period);

		if ($daysp != NULL)
		{
			return true;
		}

		return false;
	}

	/*
	 * Function if Period Dates exist for this event
	 */
	protected function eventHasPeriod($i)
	{
		$period_dates = iCString::isSerialized($i->period) ? unserialize($i->period) : array(); // returns array

		if (count($period_dates) > 0)
		{
			return true;
		}

		return false;
	}


	/* TO BE MOVED TO UTILITIES LIBRARY
	 * Function to check if user has access rights to defined access
	 *
	 * $accessLevel		Access level of the item to check User Permissions
	 *
	 * If in super user group, always allowed
	 */
	protected function accessLevels($accessLevel)
	{
		// Get User Access Levels
		$user		= JFactory::getUser();
		$userLevels	= $user->getAuthorisedViewLevels();
		$userGroups = version_compare(JVERSION, '3.0', 'ge') ? $user->groups : $user->getAuthorisedGroups();

		// Control: if access level, or Super User
		if (in_array($accessLevel, $userLevels)
			|| in_array('8', $userGroups))
		{
			return true;
		}

		return false;
	}


	/*
	 * Function to detect if info details exist in an event,
	 * and to hide or show it depending of Options (display and access levels)
	 */
	protected function infoDetails($i)
	{
		// Hide/Show Option
		$infoDetails		= JComponentHelper::getParams('com_icagenda')->get('infoDetails', 1);

		// Access Levels Option
		$accessInfoDetails	= JComponentHelper::getParams('com_icagenda')->get('accessInfoDetails', 1);

		if ( ($infoDetails == 1 && $this->accessLevels($accessInfoDetails))
			&& (($this->statutReg($i) == '1' && $this->maxNbTickets($i))
				|| $i->phone
				|| $i->email
				|| $i->website
				|| $i->address
				|| $i->file
				)
			)
		{
			return true;
		}

		return false;
	}


	/**
	 * ADDTHIS - Social Networks
	 */

	// function to override general options display of AddThis in event details view
	protected function ateventshow($i)
	{
		$atevent		= $this->options['atevent'];
		$evtParams		= $this->evtParams($i);
		$eventatvent	= $evtParams->get('atevent', '');

		$show = ($eventatvent == '') ? $atevent : $eventatvent;

		return $show;
	}

	// function option display AddThis social networks sharing
	protected function share_event($i)
	{
		$at = $this->ateventshow($i);

		if ($at == 1)
		{
			$share = $this->share($i);
		}
		else
		{
			$share = NULL;
		}

		return $share;
	}

	// function AddThis social networks sharing
	protected function share ($i)
	{
		$url = parse_url(Juri::base());
		$addthis_scheme = ($url['scheme'] == 'https') ? 'https://' : 'http://';

		$addthis	= $this->options['addthis'];
		$float		= $this->options['atfloat'];
		$icon		= $this->options['aticon'];

		if ($float == 1)
		{
			$floataddthis	= 'floating';
			$float_position	= 'position: fixed;';
			$float_side		= 'left';
		}
		elseif ($float == 2)
		{
			$floataddthis	= 'floating';
			$float_position	= 'position: fixed;';
			$float_side		= 'right';
		}
		else
		{
			$floataddthis	= 'default';
			$float_position	= '';
			$float_side		= 'right';
		}

		if ($icon == 2)
		{
			$iconaddthis	= '32x32';
		}
		else
		{
			$iconaddthis	= '16x16';
		}

		$at_div = '<div class="share ic-share" style="' . $float_position . '">';
		$at_div.= '<!-- AddThis Button BEGIN -->';
		$at_div.= '<div class="addthis_toolbox';
		$at_div.= ' addthis_' . $floataddthis . '_style';
		$at_div.= ' addthis_' . $iconaddthis . '_style"';
		$at_div.= ' style="' . $float_side . ': 2%; top: 40%;">';
		$at_div.= '<a class="addthis_button_preferred_1"></a>';
		$at_div.= '<a class="addthis_button_preferred_2"></a>';
		$at_div.= '<a class="addthis_button_preferred_3"></a>';
		$at_div.= '<a class="addthis_button_preferred_4"></a>';
		$at_div.= '<a class="addthis_button_compact"></a>';
		$at_div.= '<a class="addthis_counter addthis_bubble_style"></a>';
		$at_div.= '</div>';

		if ($addthis)
		{
			$at_div.= '<script type="text/javascript">var addthis_config = {"data_track_addressbar":true};</script>';
			$at_div.= '<script type="text/javascript" src="' . $addthis_scheme . 's7.addthis.com/js/300/addthis_widget.js#pubid=' . $this->options['addthis'] . '" async="async"></script>';
		}
		else
		{
			$at_div.= '<script type="text/javascript">var addthis_config = {"data_track_addressbar":false};</script>';
			$at_div.= '<script type="text/javascript" src="' . $addthis_scheme . 's7.addthis.com/js/300/addthis_widget.js#pubid=ra-5024db5322322e8b" async="async"></script>';
		}

		$at_div.= '<!-- AddThis Button END -->';
		$at_div.= '</div>';

		return $at_div;
	}


	/**
	 * REGISTRATIONS
	 */

	// function url to iCagenda registration page
	protected function iCagendaRegForm ($i)
	{
		$event_slug = empty($i->alias) ? $i->id : $i->id . ':' . $i->alias;

		$iCagendaRegForm = JROUTE::_('index.php?option=com_icagenda&view=list&layout=registration&Itemid='. (int) $this->options['Itemid'] . '&id=' . $event_slug);

		return $iCagendaRegForm;
	}

	// function link to registration page
	protected function regUrl($i)
	{
		$event_slug = empty($i->alias) ? $i->id : $i->id . ':' . $i->alias;

		$icagenda_form = JRoute::_('index.php?option=com_icagenda&view=list&layout=registration&Itemid='. (int) $this->options['Itemid'] . '&id=' . $event_slug);

		$evtParams			= $this->evtParams($i);
		$regLink			= $evtParams->get('RegButtonLink', '');
		$regLinkArticle		= $evtParams->get('RegButtonLink_Article', $icagenda_form);
		$regLinkUrl			= $evtParams->get('RegButtonLink_Url', $icagenda_form);
		$RegButtonTarget	= $evtParams->get('RegButtonTarget', '0');

		if ($RegButtonTarget == 1)
		{
			$browserTarget = '_blank';
		}
		else
		{
			$browserTarget = '_parent';
		}

		if ($regLink == 1 && is_numeric($regLinkArticle))
		{
			$regUrl = JURI::root() . 'index.php?option=com_content&view=article&id=' . $regLinkArticle . '" rel="nofollow" target="' . $browserTarget;
		}
		elseif ($regLink == 2)
		{
			$regUrl = $regLinkUrl . '" rel="nofollow" target="' . $browserTarget;
		}
		else
		{
			$regUrl = $icagenda_form . '" rel="nofollow" target="' . $browserTarget;
		}

		return $regUrl;
	}

	/*
	 * Function to return Registration Status for this event
	 */
	protected function statutReg($i)
	{
		$gstatutReg		= $this->options['statutReg'];

		$evtParams		= $this->evtParams($i);
		$evtstatutReg	= $evtParams->get('statutReg', '');

		// Control and edit param values to iCagenda v3
		if ($evtstatutReg == '2')
		{
			$evtstatutReg = '0';
		}

		$statutReg = ($evtstatutReg != '') ? $evtstatutReg : $gstatutReg;

		return $statutReg;
	}

	/*
	 * Function to return Registration Access Level for this event
	 */
	protected function accessReg($i)
	{
		$reg_form_access	= JComponentHelper::getParams('com_icagenda')->get('reg_form_access', 1);
		$evtParams			= $this->evtParams($i);
		$accessReg			= $evtParams->get('accessReg', $reg_form_access);

		return $accessReg;
	}

	// function Registration Type TO BE CHECKED IF USED AS FUNCTION
	protected function typeReg($i)
	{
		$evtParams	= $this->evtParams($i);
		$typeReg	= $evtParams->get('typeReg', '');

		return $typeReg;
	}

	// function Max places per registration
	protected function maxRlist($i)
	{
		$maxRlist = '';
		$gmaxRlist = $this->options['maxRlist'];

		$evtParams			= $this->evtParams($i);
		$evtmaxRlistGlobal	= $evtParams->get('maxRlistGlobal');
		$evtmaxRlist		= $evtParams->get('maxRlist');

		// Control and edit param values to iCagenda v3
		if ($evtmaxRlistGlobal == '1')
		{
			$evtmaxRlistGlobal = '';
		}
		elseif ($evtmaxRlistGlobal == '0')
		{
			$evtmaxRlistGlobal = '2';
		}

		if ($evtmaxRlistGlobal == '2')
		{
			$maxRlist = $evtmaxRlist;
		}
		else
		{
			$maxRlist = $gmaxRlist;
		}

		return $maxRlist;
	}

	// Keep for B/C : DEPRECATED!
	// Function Max Registrations per event (OLD before 3.2.8, for use with old theme packs or custom one)
	protected function maxReg($i)
	{
		$evtParams	= $this->evtParams($i);
		$maxReg		= $evtParams->get('maxReg', '1000000');

		return $maxReg;
	}

	// function Max Nb Tickets (Control if set)
	protected function maxNbTickets($i)
	{
		$maxNbTickets = $this->evtParams($i)->get('maxReg', '1000000');

		if ($maxNbTickets != '1000000'
			&& ($this->statutReg($i) == '1'))
		{
			return $maxNbTickets;
		}
	}

	// function Email Required
	protected function emailRequired($i)
	{
		return $this->options['emailRequired'];
	}

	// function Phone Required
	protected function phoneRequired($i)
	{
		return $this->options['phoneRequired'];
	}

	// function pre-formated to display Register button and registered bubble
	protected function reg($i)
	{
		$reg					= $this->statutReg($i);
		$accessreg				= $this->accessReg($i);
		$nbreg					= $this->totalRegistered($i);
		$maxreg					= $this->maxReg($i);
		$upcomingDatesBooking	= $this->upcomingDatesBooking($i);
		$ticketsCouldBeBooked	= $this->ticketsCouldBeBooked($i);
		$regUntilEnd			= JComponentHelper::getParams('com_icagenda')->get('reg_end_period', 0);
		$typeReg				= $this->evtParams($i)->get('typeReg', '1');

		// Initialize controls
		$date_today			= JHtml::date('now', 'Y-m-d');
		$date_time_today	= JHtml::date('now', 'Y-m-d H:i');
		$access		= '0';
		$control	= '';
		$TextRegBt	= '';

		$get_date = JRequest::getVar('date', '');

		if ($get_date)
		{
			$ex = explode('-', $get_date);

			$dateday	= (count($ex) == 5)
						? $ex['0'].'-'.$ex['1'].'-'.$ex['2'].' '.$ex['3'].':'.$ex['4']
						: '';

			$date_is_upcoming = (strtotime($dateday) > strtotime($date_time_today)) ? true : false;

			$is_full_period = false;
		}
		else
		{
			$period				= unserialize($i->period);
			$period				= is_array($period) ? $period : array();
			$only_startdate		= ($i->weekdays || $i->weekdays == '0') ? false : true;
			$datetime_startdate	= JHtml::date($i->startdate, 'Y-m-d H:i', null);

			if ($only_startdate && in_array($datetime_startdate, $period))
			{
				$is_full_period = true;
			}
			else
			{
				$is_full_period = false;
			}

			if (count($period) > 0
				&& $only_startdate
				&& (strtotime($datetime_startdate) < strtotime($date_time_today))
				)
			{
				$date_is_upcoming	= false;
			}
			else
			{
				$date_is_upcoming	= true;
			}
		}

		// Access Control
		$user		= JFactory::getUser();
		$userLevels	= $user->getAuthorisedViewLevels();

		$evtParams	= $this->evtParams($i);
		$regLink	= $evtParams->get('RegButtonLink', '');

		if ($evtParams->get('RegButtonText'))
		{
			$TextRegBt = $evtParams->get('RegButtonText');
		}
		elseif ($this->options['RegButtonText'])
		{
			$TextRegBt = $this->options['RegButtonText'];
		}
		else
		{
			$TextRegBt = JText::_( 'COM_ICAGENDA_REGISTRATION_REGISTER');
		}

		$regButton_type = ''; // DEV. NOT IN USE

		if ($regButton_type == 'button') // DEV. NOT IN USE
		{
			$doc = JFactory::getDocument();
			$style = '.regis_button {'
					. 'text-transform: none !important;'
					. 'padding: 10px 14px 10px;'
					. '-webkit-border-radius: 10px;'
					. '-moz-border-radius: 10px;'
					. 'border-radius: 10px;'
					. 'color: #FFFFFF;'
					. 'background-color: #D90000;'
					. '*background-color: #751616;'
					. 'background-image: -ms-linear-gradient(top,#D90000,#751616);'
					. 'background-image: -webkit-gradient(linear,0 0,0 100%,from(#D90000),to(#751616));'
					. 'background-image: -webkit-linear-gradient(top,#D90000,#751616);'
					. 'background-image: -o-linear-gradient(top,#D90000,#751616);'
					. 'background-image: linear-gradient(top,#D90000,#751616);'
					. 'background-image: -moz-linear-gradient(top,#D90000,#751616);'
					. 'background-repeat: repeat-x;'
					. 'filter: progid:dximagetransform.microsoft.gradient(startColorstr="#D90000",endColorstr="#751616",GradientType=0);'
					. 'filter: progid:dximagetransform.microsoft.gradient(enabled=false);'
					. '*zoom: 1;'
					. '-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);'
					. '-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);'
					. 'box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);'
					. '}'
					. '.regis_button:hover {'
					. 'color: #F9F9F9;'
					. 'background-color: #b60000;'
					. '*background-color: #531111;'
					. 'background-image: -ms-linear-gradient(top,#b60000,#531111);'
					. 'background-image: -webkit-gradient(linear,0 0,0 100%,from(#b60000),to(#531111));'
					. 'background-image: -webkit-linear-gradient(top,#b60000,#531111);'
					. 'background-image: -o-linear-gradient(top,#b60000,#531111);'
					. 'background-image: linear-gradient(top,#b60000,#531111);'
					. 'background-image: -moz-linear-gradient(top,#b60000,#531111);'
					. 'background-repeat: repeat-x;'
					. 'filter: progid:dximagetransform.microsoft.gradient(startColorstr="#b60000",endColorstr="#531111",GradientType=0);'
					. 'filter: progid:dximagetransform.microsoft.gradient(enabled=false);'
					. '*zoom: 1;'
					. '}';
			$doc->addStyleDeclaration( $style );
		}


		if ($reg == 1)
		{
			$dates_bookable	= $this->datelistMkt($i) ? $this->datelistMkt($i) : array();
			$this_event_url	= JURI::getInstance()->toString();
			$cleanurl		= preg_replace('/&date=[^&]*/', '', $this_event_url);
			$cleanurl		= preg_replace('/\?date=[^\?]*/', '', $cleanurl);

			$isSef = JFactory::getApplication()->getCfg( 'sef' );
			$date_var = ($isSef == 1) ? '?date=' :'&amp;date=';

			$select_date = '<div style="display: block; max-height: 130px; width: 180px; overflow-y: auto;">';

			foreach ($dates_bookable AS $d)
			{
				$ex_d		= explode('@@', $d);
				$date_url	= date('Y-m-d-H-i', strtotime($ex_d[0]));
				$select_date.= '<div class="ic-tip-link">';
				$select_date.= '<a href="' . $cleanurl . $date_var . $date_url . '" class="ic-title-cal-tip" rel="nofollow" target="_parent">';
				$select_date.= '&#160;' . $ex_d[1] . '&#160;';
				$select_date.= '</a>';
				$select_date.= '</div>';

				// If date to be set as other date is the current next date
				$is_next = ($date_url == date('Y-m-d-H-i', strtotime($i->next))) ? true : false;
			}

			$select_date.= '</div>';

			$reg_button = '<div class="ic-registration-box">';

			// Upcoming date and ticket(s) available for this event
			if ($upcomingDatesBooking
				&& $ticketsCouldBeBooked
				)
			{
				if (in_array($accessreg, $userLevels))
				{
					if ($this->totalRegistered($i) == $this->maxReg($i))
					{
						$reg_button.= '<a class="ic-addtocal" title="' . htmlspecialchars($select_date) . '" rel="nofollow">';
						$reg_button.= '<div class="ic-btn ic-btn-info ic-btn-small ic-event-full">';
						$reg_button.= '<i class="iCicon iCicon-people"></i>&nbsp;' . JText::_('COM_ICAGENDA_REGISTRATION_DATE_NO_TICKETS_LEFT');
						$reg_button.= '</div>';
						$reg_button.= '<br />';
						$reg_button.= '<span class="ic-select-another-date">' . JText::_('COM_ICAGENDA_REGISTRATION_REGISTER_ANOTHER_DATE') . '</span>';
						$reg_button.= '</a>';
					}

					elseif ($date_is_upcoming
						|| $is_next)
					{
						$reg_button.= '<a href="' . $this->regUrl($i) . '" rel="nofollow">';
						$reg_button.= '<div class="ic-btn ic-btn-success ic-btn-small ic-event-register regis_button">';
						$reg_button.= '<i class="iCicon iCicon-register"></i>&nbsp;' . $TextRegBt;
						$reg_button.= '</div>';
						$reg_button.= '</a>';
					}

					// Registration Until end of the period (dev. special)
					elseif ($regUntilEnd == 1
						&& $is_full_period
						)
					{
						$reg_button.= '<a href="' . $this->regUrl($i) . '" rel="nofollow">';
						$reg_button.= '<div class="ic-btn ic-btn-success ic-btn-small ic-event-register regis_button">';
						$reg_button.= '<i class="iCicon iCicon-register"></i>&nbsp;' . $TextRegBt;
						$reg_button.= '</div>';
						$reg_button.= '</a>';
					}

					else
					{
						$reg_button.= '<a class="ic-addtocal" title="' . htmlspecialchars($select_date) . '" rel="nofollow">';
						$reg_button.= '<div class="ic-btn ic-btn-info ic-btn-small ic-event-finished">';
						$reg_button.= '<i class="iCicon iCicon-people"></i>&nbsp;' . JText::_('COM_ICAGENDA_REGISTRATION_DATE_NO_TICKETS_LEFT');
						$reg_button.= '</div>';
						$reg_button.= '<br />';
						$reg_button.= '<span class="ic-select-another-date">' . JText::_('COM_ICAGENDA_REGISTRATION_REGISTER_ANOTHER_DATE') . '</span>';
						$reg_button.= '</a>';
					}
				}
				else
				{
					$reg_button.= '<a href="' . $this->regUrl($i) . '" rel="nofollow">';
					$reg_button.= '<div class="ic-btn ic-btn-danger ic-btn-small ic-event-register regis_button">';
					$reg_button.= '<i class="iCicon iCicon-private"></i>&nbsp;' . $TextRegBt;
					$reg_button.= '</div>';
					$reg_button.= '</a>';
				}
			}

			// Upcoming date but no ticket left
			elseif ($upcomingDatesBooking
				&& ! $ticketsCouldBeBooked
				)
			{
				if ( ! $date_is_upcoming || $typeReg == 2)
				{
					$reg_button.= '<div class="ic-btn ic-btn-default ic-btn-small ic-event-finished">';
					$reg_button.= '<i class="iCicon iCicon-blocked"></i>&nbsp;' . JText::_('COM_ICAGENDA_REGISTRATION_CLOSED');
					$reg_button.= '</div>';
				}
				else
				{
					$reg_button.= '<div class="ic-btn ic-btn-info ic-btn-small ic-event-full">';
					$reg_button.= '<i class="iCicon iCicon-people"></i>&nbsp;' . JText::_('COM_ICAGENDA_REGISTRATION_EVENT_FULL');
					$reg_button.= '</div>';
				}
			}
			elseif ( ! $upcomingDatesBooking)
			{
				$reg_button.= '<div class="ic-btn ic-btn-default ic-btn-small ic-event-finished">';
				$reg_button.= '<i class="iCicon iCicon-blocked"></i>&nbsp;' . JText::_('COM_ICAGENDA_REGISTRATION_CLOSED');
				$reg_button.= '</div>';
			}
			else
			{
				return false;
			}

			if (!$regLink)
			{
				$reg_button.= '&nbsp;<i class="iCicon iCicon-people ic-people"></i>';
				$reg_button.= '<div class="ic-registered" >' . $this->totalRegistered($i) . '</div>';
			}

			$reg_button.= '</div>';
		}
		else
		{
			return false;
		}

		return $reg_button;
	}

	/** // TO BE CHECKED TO USE UTILITIES
	 * Loads the Event's custom fields for this item
	 *
	 * @return object list.
	 * @since   3.4.0
	 */
	public function loadEventCustomFields($i)
	{
		// Get the database connector.
		$db = JFactory::getDBO();

		// Get the query from the database connector.
		$query = $db->getQuery(true);

		// Build the query programatically (using chaining if desired).
		$query->select('cfd.*, cf.title AS title')
			// Use the qn alias for the quoteName method to quote table names.
			->from($db->qn('#__icagenda_customfields_data') . ' AS cfd');

		$query->leftJoin('#__icagenda_customfields AS cf ON cf.slug = cfd.slug');

		$query->where($db->qn('cfd.parent_id').' = '.(int) $i->id);
		$query->where($db->qn('cfd.parent_form').' = 2');
		$query->where($db->qn('cf.parent_form').' = 2');
		$query->where($db->qn('cfd.state').' = 1');
		$query->where($db->qn('cf.state').' = 1');
		$query->order('cf.ordering ASC');

		// Tell the database connector what query to run.
		$db->setQuery($query);

		// Invoke the query or data retrieval helper.
		return $db->loadObjectList();
	}


	// Save of a registration, and automatic email (TO BE MOVED TO A NEW MODEL/VIEW)
	public function registration($array)
	{
		$menu_items	= icagendaMenus::iClistMenuItems();
		$itemid		= JRequest::getVar('Itemid');

		$linkexist	= '';

		foreach ($menu_items as $l)
		{
			if (($l->published == '1') && ($l->id == $itemid))
			{
				$linkexist = '1';
			}
		}

		if (is_numeric($itemid)
			&& $itemid != 0
			&& $linkexist == 1
			)
		{
			// Import params - Limit Options for User Registration
			$app			= JFactory::getApplication();
			$date			= JFactory::getDate();
			$params			= $app->getParams();
			$isSef			= $app->getCfg('sef');
			$eventTimeZone	= null;

			$data = new stdClass();

			// Set the values
			$data->id = null;
			$data->eventid = '0';

			$data->userid	= isset($array['uid']) ? $array['uid'] : '';
			if (isset($array['name'])) $data->name = $array['name'];
			$data->email	= isset($array['email']) ? $array['email'] : '';
			$data->phone	= isset($array['phone']) ? $array['phone'] : '';
			if (isset($array['date'])) $data->date = $array['date'];
			if (isset($array['period'])) $data->period = $array['period'];
			if (isset($array['people'])) $data->people = $array['people'];
			$data->notes	= isset($array['notes']) ? htmlentities(strip_tags($array['notes'])) : '';
			if (isset($array['event'])) $data->eventid = $array['event'];
			if (isset($array['menuID'])) $data->itemid = $array['menuID'];

			$data->created		= $date->toSql();
			$data->created_by	= $data->userid;

			$current_url		= isset($array['current_url']) ? $array['current_url'] : 'index.php';
			$max_nb_of_tickets	= isset($array['max_nb_of_tickets']) ? $array['max_nb_of_tickets'] : '1000000';
			$tos				= isset($array['tos']) ? 'checked' : '';
			$custom_fields		= isset($array['custom_fields']) ? $array['custom_fields'] : false;
//			$tickets_left		= isset($array['tickets_left']) ? $array['tickets_left'] : '1000000';
			$email2				= isset($array['email2']) ? $array['email2'] : false;

			// Filter Name
			$array['name'] = str_replace("'", '’', $array['name']);
			$array['name'] = (string) preg_replace('/[\x00-\x1F\x7F]/', '', $array['name']);

			// Set Form Data to Session
			$session = JFactory::getSession();
			$session->set('ic_registration', $array);
			$session->set('ic_submit_tos', $tos);
			$custom_fields_array = isset($array['custom_fields']) ? (array) $array['custom_fields'] : array();
			$session->set('custom_fields', $custom_fields_array);
			$session->set('email2', $email2);

			// Control if still ticket left
			$db		= JFactory::getDbo();
			$query	= $db->getQuery(true);
			// Registrations total
			$query->select('sum(r.people) AS registered');
			$query->from('`#__icagenda_registration` AS r');
			$query->where('r.state > 0');
			$query->where('r.date = ' . $db->q($data->date));
			$query->where('r.eventid = ' . (int) $data->eventid);
			$db->setQuery($query);
			$registered = $db->loadObject()->registered;

			$data->checked_out_time = date('Y-m-d H:i:s');

			// Set Date in url
			$datesDisplay	= $params->get('datesDisplay', 1);

			$date_alias		= $data->date ? iCDate::dateToAlias(date('Y-m-d H:i', strtotime($data->date))) : false;
			$date_var		= ($isSef == 1) ? '?date=' :'&amp;date=';

			$this_date		= $date_alias ? $date_var . $date_alias : '';
			$dateInUrl	= ($datesDisplay === 1) ? $this_date : '';

			// Get the "event" URL
			$baseURL = JURI::base();
			$subpathURL = JURI::base(true);

			$baseURL	= str_replace('/administrator', '', $baseURL);
			$subpathURL	= str_replace('/administrator', '', $subpathURL);

			// Sub Path filtering
			$subpathURL = ltrim($subpathURL, '/');

			// URL Event Details filtering
			$urlEvent	= str_replace('&amp;', '&', JRoute::_('index.php?option=com_icagenda&view=list&layout=event&Itemid=' . (int) $data->itemid . '&id=' . (int) $data->eventid)) . $dateInUrl;
			$urlEvent	= ltrim($urlEvent, '/');

			if (substr($urlEvent, 0, strlen($subpathURL) + 1) == "$subpathURL/")
			{
				$urlEvent = substr($urlEvent, strlen($subpathURL) + 1);
			}

			$urlEvent	= rtrim($baseURL, '/') . '/' . ltrim($urlEvent, '/');

			// URL List filtering
			$urlList	= str_replace('&amp;', '&', JRoute::_('index.php?option=com_icagenda&view=list&Itemid=' . (int) $data->itemid));
			$urlList	= ltrim($urlList, '/');

			if (substr($urlList, 0, strlen($subpathURL)+1) == "$subpathURL/")
			{
				$urlList = substr($urlList, strlen($subpathURL)+1);
			}

			$urlList	= rtrim($baseURL, '/') . '/' . ltrim($urlList, '/');

			// URL Registration filtering // NOT USED
			$urlRegistration	= str_replace('&amp;','&', JRoute::_('index.php?option=com_icagenda&view=list&layout=registration&Itemid=' . (int) $data->itemid . '&id=' . (int) $data->eventid));
			$urlRegistration	= ltrim($urlRegistration, '/');

			if (substr($urlRegistration, 0, strlen($subpathURL)+1) == "$subpathURL/")
			{
				$urlRegistration = substr($urlRegistration, strlen($subpathURL)+1);
			}

			$urlRegistration	= rtrim($baseURL, '/') . '/' . ltrim($urlRegistration, '/');

			// URL Payment filtering
			$urlPayment	= str_replace('&amp;','&', JRoute::_('index.php?option=com_icagenda&view=list&layout=actions&Itemid=' . (int) $data->itemid . '&id=' . (int) $data->eventid));
			$urlPayment	= ltrim($urlPayment, '/');

			if (substr($urlPayment, 0, strlen($subpathURL)+1) == "$subpathURL/")
			{
				$urlPayment = substr($urlPayment, strlen($subpathURL)+1);
			}

			$urlPayment	= rtrim($baseURL, '/') . '/' . ltrim($urlPayment, '/');

			$urlPayment	= $urlPayment . '?status=payment';



			// Check number of tickets left
			$tickets_left = $max_nb_of_tickets - $registered;

			// IF NO TICKETS LEFT
			if ($tickets_left <= 0)
			{
				$app->enqueueMessage(JText::_('COM_ICAGENDA_ALERT_NO_TICKETS_AVAILABLE'), 'warning');

				$app->redirect(htmlspecialchars_decode($urlEvent));
			}

			// IF NOT ENOUGH TICKETS LEFT
			elseif ($tickets_left < $data->people)
			{
				$msg = JText::_('COM_ICAGENDA_ALERT_NOT_ENOUGH_TICKETS_AVAILABLE') . '<br />';
				$msg.= JText::sprintf('COM_ICAGENDA_ALERT_NOT_ENOUGH_TICKETS_AVAILABLE_NOW', $tickets_left) . '<br />';
				$msg.= JText::_('COM_ICAGENDA_ALERT_NOT_ENOUGH_TICKETS_AVAILABLE_CHANGE_NUMBER');

				$app->enqueueMessage($msg, 'error');

				$app->redirect(htmlspecialchars_decode($current_url));
			}


			// CONTROL NAME VALUE
			$name_isValid = '1';

//			$pattern = "#[/\\\\/\<>/\"%;=\[\]\+()&]|^[0-9]#i";
			$pattern = "#[/\\\\/\<>/\";=\[\]\+()%&]#i";

        	if ($array['name'])
        	{
				$nbMatches = preg_match($pattern, $array['name']);

				// Name contains invalid characters
				if ($nbMatches && $nbMatches == 1)
				{
					$name_isValid = '0';
					$app->enqueueMessage(JText::sprintf( 'COM_ICAGENDA_REGISTRATION_NAME_NOT_VALID' , '<b>' . htmlentities($array['name'], ENT_COMPAT, 'UTF-8') . '</b>'), 'error');
				}

				// Name is less than 2 characters
				if (strlen(utf8_decode($array['name'])) < 2)
				{
					$name_isValid = '0';
					$app->enqueueMessage(JText::_( 'COM_ICAGENDA_REGISTRATION_NAME_MINIMUM_CHARACTERS'), 'error');
				}
        	}
        	else
        	{
				$app->enqueueMessage(JText::_( 'COM_ICAGENDA_FORM_VALIDATE_FIELD_REQUIRED') . ' ' . JText::_( 'ICAGENDA_REGISTRATION_FORM_NAME' ), 'error');
			}

			$data->name = filter_var($data->name, FILTER_SANITIZE_STRING);

			// CONTROL EMAIL VALUE
			$emailRequired	= $params->get('emailRequired', 1);
			$emailConfirm	= $params->get('emailConfirm', 1);

			// Check if Email not empty
			if ($emailRequired
				&& ! $data->email)
			{
				$app->enqueueMessage(JText::_( 'COM_ICAGENDA_FORM_VALIDATE_FIELD_REQUIRED' ) . ' ' . JText::_( 'ICAGENDA_REGISTRATION_FORM_EMAIL' ), 'error');
			}

			// Check if Confirm Email equals Email
			if ($emailConfirm
				&& empty($data->userid)
				&& $data->email != $email2)
			{
				$app->enqueueMessage(JText::_( 'COM_ICAGENDA_FORM_VALIDATE_FIELD_INVALID' ) . ' ' . JText::_( 'IC_FORM_EMAIL_CONFIRM_LBL' ) . '<br />' . JText::_( 'COM_ICAGENDA_FORM_VALIDATE_FIELD_EMAIL2_MESSAGE' ), 'error');
			}

			// Advanced Checkdnsrr email
			$emailCheckdnsrr	= JComponentHelper::getParams('com_icagenda')->get('emailCheckdnsrr', '0');

			if (!empty($data->email))
			{
				$validEmail = true;
				$checkdnsrr = true;

				if (($emailCheckdnsrr == 1) AND (function_exists('checkdnsrr')))
				{
					$provider = explode('@', $data->email);
					if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
					{
						if (version_compare(phpversion(), '5.3.0', '<'))
						{
							$checkdnsrr = true;
						}
					}
					else
					{
						$checkdnsrr = checkdnsrr($provider[1]);
					}
				}
				else
				{
					$checkdnsrr = true;
				}
			}
			else
			{
				$checkdnsrr = true;
			}

			// Check if valid email address
			$validEmail = $validEmail ? $this->validEmail($data->email) : false;

			if ( ! $checkdnsrr
				|| ! $validEmail
				&& $data->email
				)
			{
				// message if email is invalid
				$app->enqueueMessage(JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_NOT_VALID' ), 'error');
			}

			$eventid	= $data->eventid;

			$period		= (isset($data->period)) ? $data->period : '0';

			$people		= $data->people;
			$name		= $data->name;
			$email		= $data->email;
			$phone		= $data->phone;
			$notes		= html_entity_decode($data->notes);
			$dateReg	= $data->date;

			$limitRegEmail	= $params->get('limitRegEmail', 1);
			$limitRegDate	= $params->get('limitRegDate', 1);

			$alreadyexist	= 'no';

			if ($limitRegEmail == 1 || $limitRegDate == 1)
			{
				$cf = JRequest::getString('email', '', 'post');

				if ($limitRegDate == 0)
				{
					$query = "
						SELECT COUNT(*)
						FROM `#__icagenda_registration`
						WHERE `email` = '$cf' AND `eventid`='$eventid' AND `state`='1'
					";
				}
				elseif ($limitRegDate == 1)
				{
					$query = "
						SELECT COUNT(*)
						FROM `#__icagenda_registration`
						WHERE `email` = '$cf' AND `eventid`='$eventid' AND `date`='$dateReg' AND `state`='1'
					";
				}

				$db->setQuery($query);

				if ($email != NULL)
				{
					if ( $db->loadResult() )
					{
						$alreadyexist = 'yes';
						$app->enqueueMessage(JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_ALERT' ) . ' ' . $email, 'error');
					}
					else
					{
						$alreadyexist = 'no';
					}
				}
			}

			$email	= $email ? $email : JText::_( 'COM_ICAGENDA_NOT_SPECIFIED' );

			// Check if Phone not empty
			$phoneRequired	= $params->get('phoneRequired', 1);

			if ($phoneRequired
				&& ! $phone)
			{
				$app->enqueueMessage(JText::_( 'COM_ICAGENDA_FORM_VALIDATE_FIELD_REQUIRED' ) . ' ' . JText::_( 'ICAGENDA_REGISTRATION_FORM_PHONE' ), 'error');
			}

			$phone	= $phone ? $phone : JText::_( 'COM_ICAGENDA_NOT_SPECIFIED' );

			// Check if Custom Fields required not empty
			$customfields_list = icagendaCustomfields::getListCustomFields(1, 1);

			if ($customfields_list)
			{
				foreach ($customfields_list AS $cf)
				{
					if ($cf->cf_required == 1)
					{
						if ($custom_fields[$cf->cf_slug] == '')
						{
							$app->enqueueMessage(JText::_( 'COM_ICAGENDA_FORM_VALIDATE_FIELD_REQUIRED' ) . ' ' . $cf->cf_title, 'error');
						}
					}
				}
			}

			// Check if ToS not checked
			if ( ! $tos)
			{
				$app->enqueueMessage(JText::_( 'COM_ICAGENDA_TERMS_AND_CONDITIONS_NOT_CHECKED_REGISTRATION' ), 'error');
			}

			// RECAPTCHA
			$captcha_plugin	= $params->get('captcha') ? $params->get('captcha') : $app->getCfg('captcha');
			$reg_captcha	= JComponentHelper::getParams('com_icagenda')->get('reg_captcha', 1);

			if ($captcha_plugin && $reg_captcha != '0')
			{
				JPluginHelper::importPlugin('captcha');

				// JOOMLA 3.x/2.5 SWITCH
				if (version_compare(JVERSION, '3.0', 'ge'))
				{
					$dispatcher = JEventDispatcher::getInstance();
				}
				else
				{
					$dispatcher = JDispatcher::getInstance();
				}

				$res		= $dispatcher->trigger('onCheckAnswer', $array['recaptcha_response_field']);

				if ( ! $res[0])
				{
					// message if captcha is invalid
					$app->enqueueMessage(JText::_( 'PLG_RECAPTCHA_ERROR_INCORRECT_CAPTCHA_SOL' ), 'error');
				}
			}


			// Get the message queue
			$error_messages = $app->getMessageQueue();

			if (count($error_messages))
			{
				$app->redirect(htmlspecialchars_decode($current_url));

				return false;
			}

			// clear the data so we don't process it again
			$session->clear('ic_registration');
			$session->clear('custom_fields');
			$session->clear('ic_submit_tos');
			$session->clear('email2');


			/**
			 *	SAVE REGISTRATION DATA TO DATABASE
			 */

			// Option Email required
			if ($emailRequired == '1')
			{
				if (is_numeric($eventid) && is_numeric($period) && is_numeric($people) && $name != NULL && $email != NULL)
				{
					$db->insertObject( '#__icagenda_registration', $data, id );
				}
			}
			else
			{
				if (is_numeric($eventid) && is_numeric($period) && is_numeric($people) && $name != NULL)
				{
					$db->insertObject( '#__icagenda_registration', $data, id );
				}
			}


			/**
			 *	SAVE CUSTOM FIELDS TO DATABASE
			 */

			if ($custom_fields && is_array($custom_fields))
			{
				icagendaCustomfields::saveToData($custom_fields, $data->id, 1);
			}


			/**
			 *	NOTIFICATION EMAILS
			 */
			$author= '0';

			// Preparing the query
			$query = $db->getQuery(true);
			$query->select('e.title AS title, e.startdate AS startdate, e.enddate AS enddate,
					e.created_by AS authorID, e.email AS contactemail, e.displaytime AS displaytime')
				->from('#__icagenda_events AS e')
				->where("(e.id=$data->eventid)");
			$db->setQuery($query);
			$title			= $db->loadObject()->title;
			$startdate		= $db->loadObject()->startdate;
			$enddate		= $db->loadObject()->enddate;
			$authorID		= $db->loadObject()->authorID;
			$contactemail	= $db->loadObject()->contactemail;
			$displayTime	= $db->loadObject()->displaytime;

			$timeformat		= JFactory::getApplication()->getParams()->get('timeformat', 1);
			$lang_time		= ($timeformat == 1) ? 'H:i' : 'h:i A';

			$startD = $this->formatDate($startdate);
			$endD = $this->formatDate($enddate);
			$startT = JHtml::date($startdate, $lang_time, $eventTimeZone);
			$endT = JHtml::date($enddate, $lang_time, $eventTimeZone);

			$regDate = $this->formatDate($data->date);
			$regTime = JHtml::date($data->date, $lang_time, $eventTimeZone);

			$regDateTime		= !empty($displayTime) ? $regDate.' - '.$regTime : $regDate;
			$regStartDateTime	= !empty($displayTime) ? $startD.' - '.$startT : $startD;
			$regEndDateTime		= !empty($displayTime) ? $endD.' - '.$endT : $endD;

			$periodreg = $data->period;

			$defaultemail			= $params->get('regEmailUser', '1');
			$emailUserSubjectPeriod	= $params->get('emailUserSubjectPeriod', '');
			$emailUserBodyPeriod	= $params->get('emailUserBodyPeriod', '');
			$emailUserSubjectDate	= $params->get('emailUserSubjectDate', '');
			$emailUserBodyDate		= $params->get('emailUserBodyDate', '');

			$emailAdminSend			= $params->get('emailAdminSend', '1');
			$emailAdminSend_select	= $params->get('emailAdminSend_select', array('0'));
			$emailAdminSend_custom	= $params->get('emailAdminSend_Placeholder', '');

			$emailUserSend			= $params->get('emailUserSend', '1');

			$eUSP = isset($emailUserSubjectPeriod)
					? $emailUserSubjectPeriod
					: JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_USER_PERIOD_DEFAULT_SUBJECT' );

			$eUBP = isset($emailUserBodyPeriod)
					? $emailUserBodyPeriod
					: JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_USER_PERIOD_DEFAULT_BODY' );

			$eUSD = isset($emailUserSubjectDate)
					? $emailUserSubjectDate
					: JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_USER_DATE_DEFAULT_SUBJECT' );

			$eUBD = isset($emailUserBodyDate)
					? $emailUserBodyDate
					: JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_USER_DATE_DEFAULT_BODY' );

			$period_set = substr($startdate, 0, 4);

			// Registration Type is set 'for all dates of the event'
			if ($periodreg == 1)
			{
				$periodd 		= '';
				$adminsubject	= JText::_('COM_ICAGENDA_REGISTRATION_EMAIL_ADMIN_DEFAULT_SUBJECT');
				$adminbody 		= JText::_('COM_ICAGENDA_REGISTRATION_EMAIL_ADMIN_DATE_DEFAULT_BODY');

				if ($defaultemail == 0)
				{
					$subject	= $eUSP;
					$body		= $eUBP;
				}
				else
				{
					$subject	= JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_USER_DATE_DEFAULT_SUBJECT' );
					$body		= JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_USER_DATE_DEFAULT_BODY' );
				}
			}

			// Registration Type is 'select list of dates' (single dates + period)
			// Period (no date, and period = 0)
			elseif ($array['date'] == '' && ! $periodreg)
			{
				$periodd 		= ($period_set != '0000')
								? JText::sprintf( 'COM_ICAGENDA_REGISTERED_EVENT_PERIOD', $startD, $startT, $endD, $endT )
								: '';
				$adminsubject	= JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_ADMIN_DEFAULT_SUBJECT' );
				$adminbody 		= JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_ADMIN_PERIOD_DEFAULT_BODY' );

				if ($defaultemail == 0)
				{
					$subject	= $eUSP;
					$body		= $eUBP;
				}
				else
				{
					$subject	= JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_USER_PERIOD_DEFAULT_SUBJECT' );
					$body		= JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_USER_PERIOD_DEFAULT_BODY' );
				}
			}

			// Registration Type is 'select list of dates' (single dates + period)
			// Single date
			else
			{
				$periodd		= JText::sprintf( 'COM_ICAGENDA_REGISTERED_EVENT_DATE', $regDate, '' );
				$adminsubject	= JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_ADMIN_DEFAULT_SUBJECT' );
				$adminbody		= JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_ADMIN_DATE_DEFAULT_BODY' );

				if ($defaultemail == 0)
				{
					$subject	= $eUSD;
					$body		= $eUBD;
				}
				else
				{
					$subject	= JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_USER_DATE_DEFAULT_SUBJECT' );
					$body		= JText::_( 'COM_ICAGENDA_REGISTRATION_EMAIL_USER_DATE_DEFAULT_BODY' );
				}
			}

			// Get the site name
			$sitename	= $app->getCfg('sitename');

			$siteURL = JURI::base();
			$siteURL = rtrim($siteURL,'/');

			// Get Author Email
			$authormail = '';

			if ($authorID != NULL)
			{
				// Preparing the query
				$query = $db->getQuery(true);
				$query->select('email AS authormail, name AS authorname')->from('#__users AS u')->where("(u.id=$authorID)");
				$db->setQuery($query);
				$authormail = $db->loadObject()->authormail;
				$authorname = $db->loadObject()->authorname;

				if ($authormail == NULL)
				{
					$authormail	= $app->getCfg('mailfrom');
				}
			}

			// Generates filled custom fields into email body
			$customfields = icagendaCustomfields::getListNotEmpty($data->id, 1);

 			$custom_fields = '';

			$newline = ($defaultemail == '0') ? "<br />" : "\n";

			if ($customfields)
			{
				foreach ($customfields AS $customfield)
				{
					$cf_value = isset($customfield->cf_value) ? $customfield->cf_value : JText::_('IC_NOT_SPECIFIED');
					$custom_fields.= $customfield->cf_title . ": " . $cf_value . $newline;
				}
			}

			// MAIL REPLACEMENTS
			$replacements = array(
				"\\n"				=> "\n",
				'[SITENAME]'		=> $sitename,
				'[SITEURL]'			=> $siteURL,
				'[AUTHOR]'			=> $authorname,
				'[AUTHOREMAIL]'		=> $authormail,
				'[CONTACTEMAIL]'	=> $contactemail,
				'[TITLE]'			=> $title,
//				'[EVENTID]'			=> is_numeric($data->eventid) ? (int) $data->eventid : null,
				'[EVENTURL]'		=> $urlEvent,
				'[NAME]'			=> $name,
				'[EMAIL]'			=> $email,
				'[PHONE]'			=> $phone,
				'[PLACES]'			=> $people,
				'[CUSTOMFIELDS]'	=> $custom_fields,
//				'[NOTES]'			=> $notes ? $notes : JText::_('COM_ICAGENDA_NOT_SPECIFIED'),
				'[NOTES]'			=> $notes,
				'[DATE]'			=> $regDate,
				'[TIME]'			=> $regTime,
				'[DATETIME]'		=> ($periodreg != 1) ? $regDateTime : JText::_('COM_ICAGENDA_REG_FOR_ALL_DATES'),
				'[STARTDATE]'		=> $startD,
				'[ENDDATE]'			=> $endD,
				'[STARTDATETIME]'	=> $regStartDateTime,
				'[ENDDATETIME]'		=> $regEndDateTime,
				'&nbsp;'			=> ' ',
			);

			foreach ($replacements as $key => $value)
			{
				$subject = str_replace($key, $value, $subject);
				$body = str_replace($key, $value, $body);
				$adminsubject = str_replace($key, $value, $adminsubject);
				$adminbody = str_replace($key, $value, $adminbody);
			}

			// Set Sender of USER and ADMIN emails
			$mailer = JFactory::getMailer();
			$adminmailer = JFactory::getMailer();

			$mailfrom	= $app->getCfg('mailfrom');
			$fromname	= $app->getCfg('fromname');

			$mailer->setSender(array( $mailfrom, $fromname ));
			$adminmailer->setSender(array( $mailfrom, $fromname ));

			// Set Recipient of USER email
			$user = JFactory::getUser();

			if (!isset($data->email))
			{
				$recipient = $user->email;
			}
			else
			{
				$recipient = $data->email;
			}

			$mailer->addRecipient($recipient);

			// Set Recipient of ADMIN email
			$admin_array = array();

			if (in_array('0', $emailAdminSend_select))
			{
				array_push($admin_array, $mailfrom);
			}

			if (in_array('1', $emailAdminSend_select))
			{
				array_push($admin_array, $authormail);
			}

			if (in_array('2', $emailAdminSend_select))
			{
				$customs_emails = explode(',', $emailAdminSend_custom);
				$customs_emails = str_replace(' ','',$customs_emails);

				foreach ($customs_emails AS $cust_mail)
				{
					array_push($admin_array, $cust_mail);
				}
			}

			if (in_array('3', $emailAdminSend_select))
			{
				array_push($admin_array, $contactemail);
			}

			$adminrecipient = $admin_array;
			$adminmailer->addRecipient($adminrecipient);

			// Set Subject of USER and ADMIN email
			$mailer->setSubject($subject);
			$adminmailer->setSubject($adminsubject);

			// Set Body of USER and ADMIN email
			if ($defaultemail == 0)
			{
				// HTML custom notification email send to user
				$mailer->isHTML(true);
				$mailer->Encoding = 'base64';
			}

			$adminbody = str_replace("<br />", "\n", $adminbody);

			$mailer->setBody($body);
			$adminmailer->setBody($adminbody);

			// Optional file attached
//			$mailer->addAttachment(JPATH_COMPONENT.DS.'assets'.DS.'document.pdf');

			// Send USER email confirmation, if enabled
			if ($emailUserSend == 1
				&& isset($data->email) )
			{
				$send = $mailer->Send();
			}

			// Send ADMIN email notification, if enabled
			if ($emailAdminSend == 1)
			{
				if ($emailAdminSend == 1
					&& isset($data->eventid)
					&& $data->eventid != '0'
					&& $data->name != NULL
					)
				{
					$sendadmin = $adminmailer->Send();
				}
			}

			$evtParams			= $this->evtParams($i);
			$reg_payment		= $evtParams->get('icpayment', '');
			$iCpaymentPlugin	= JPluginHelper::getPlugin('content', 'ic_payment');

			if ($iCpaymentPlugin)
			{
				$plgParams		= new JRegistry($iCpaymentPlugin->params);
				$reg_payment	= $reg_payment ? $reg_payment : $plgParams->get('icpayment', '');
			}

			if ($alreadyexist == 'no')
			{
				$thank_you = JText::_( 'COM_ICAGENDA_REGISTRATION_TY' ) . ' ' . $data->name;
				$thank_you.= ', ' . JText::sprintf( 'COM_ICAGENDA_REGISTRATION', $title );
				$thank_you.= '<br />' . $periodd . ' (<a href="' . $urlEvent . '">'. JText::_( 'COM_ICAGENDA_REGISTRATION_EVENT_LINK' ) . '</a>)';

				// redirect after successful registration
				$app->enqueueMessage($thank_you, 'message');

				if ($reg_payment)
				{
					$app->redirect(htmlspecialchars_decode($urlPayment));
				}
				else
				{
					$app->redirect(htmlspecialchars_decode($urlList));
				}
			}
		}
		else
		{
			JError::raiseError('404', JTEXT::_('JERROR_LAYOUT_PAGE_NOT_FOUND'));

			return false;
		}
	}


	/**
	 * ESSENTIAL FUNCTIONS
	 */

	// Function to convert font color, depending on category color
	function fontColor($i)
	{
		$color = isset($i->cat_color) ? $i->cat_color : '';

		$hex_R	= substr($color, 1, 2);
		$hex_G	= substr($color, 3, 2);
		$hex_B	= substr($color, 5, 2);
		$RGBhex	= hexdec($hex_R) . ',' . hexdec($hex_G) . ',' . hexdec($hex_B);

		$RGB	= explode(',', $RGBhex);
		$RGBa	= $RGB[0];
		$RGBb	= $RGB[1];
		$RGBc	= $RGB[2];

		$somme	= ($RGBa + $RGBb + $RGBc);

		if ($somme > '600')
		{
			$fcolor = 'fontColor';
		}
		else
		{
			$fcolor = '';
		}

		return $fcolor;
	}

	private function validEmail($email)
	{
		$isValid	= true;
		$atIndex	= strrpos($email, "@");

		if (is_bool($atIndex) && !$atIndex)
		{
			$isValid = false;
		}
		else
		{
			$domain		= substr($email, $atIndex+1);
			$local		= substr($email, 0, $atIndex);
			$localLen	= strlen($local);
			$domainLen	= strlen($domain);

			if ($localLen < 1 || $localLen > 64)
			{
				// local part length exceeded
				$isValid = false;
			}
			elseif ($domainLen < 1 || $domainLen > 255)
			{
				// domain part length exceeded
				$isValid = false;
			}
			elseif ($local[0] == '.' || $local[$localLen-1] == '.')
			{
				// local part starts or ends with '.'
				$isValid = false;
			}
			elseif (preg_match('/\\.\\./', $local))
			{
				// local part has two consecutive dots
				$isValid = false;
			}
			elseif (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
			{
				// character not valid in domain part
				$isValid = false;
			}
			elseif (preg_match('/\\.\\./', $domain))
			{
				// domain part has two consecutive dots
				$isValid = false;
			}
			elseif (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\","",$local)))
			{
				// character not valid in local part unless
				// local part is quoted
				if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\","",$local)))
				{
					$isValid = false;
				}
			}

			// Check the domain name
			if ($isValid
				&& !$this->is_valid_domain_name($domain))
			{
				return false;
			}

			// Uncomment below to have PHP run a proper DNS check (risky on shared hosts!)
			/**
			if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A"))) {
				// domain not found in DNS
				$isValid = false;
			}
			/**/
		}

		return $isValid;
	}


	// Check if a domain is valid
	function is_valid_domain_name($domain_name)
	{
		$pieces = explode(".", $domain_name);

		foreach ($pieces as $piece)
		{
			if (!preg_match('/^[a-z\d][a-z\d-]{0,62}$/i', $piece)
				|| preg_match('/-$/', $piece))
			{
				return false;
			}
		}

		return true;
	}


	// Url to add to Google Calendar
	protected function gcalendarUrl ($i)
	{
		$text			= $i->title.' ('.$i->cat_title.')';
		$details		= $i->desc;
		$venue			= $i->place_name;
		$s_dates		= $i->dates;
//		$single_dates	= unserialize($s_dates);
		$single_dates	= iCString::isSerialized($i->dates) ? unserialize($i->dates) : array(); // returns array
		$website		= $this->Event_Link($i);

		$location	= $venue ? $venue.' - '.$i->address : $i->address;

		$get_date	= '';
		$href		= '#';

		if (JRequest::getVar('date'))
		{
			// if 'All Dates' set
			$get_date = JRequest::getVar('date');
		}
		else
		{
			// if 'Only Next/Last Date' set
			$get_date = date('Y-m-d-H-i', strtotime($i->next));
		}

		$ex			= explode('-', $get_date);
		$this_date	= $ex['0'] . '-' . $ex['1'] . '-' . $ex['2'] . ' ' . $ex['3'] . ':' . $ex['4'];

		$startdate	= date('Y-m-d-H-i', strtotime($i->startdate));
		$enddate	= date('Y-m-d-H-i', strtotime($i->enddate));

		if ($this->eventHasPeriod($i)
			&& ($get_date >= $startdate)
			&& ($get_date <= $enddate)
			&& (!in_array($this_date, $single_dates))
			)
		{
			$weekdays	= ($i->weekdays || $i->weekdays == '0') ? true : false;

			if ($weekdays)
			{
				$startdate	= date('Y-m-d-H-i', strtotime($this_date));
				$enddate	= date('Y-m-d', strtotime($this_date)) . '-' . date('H-i', strtotime($i->enddate));
			}

			$ex_S	 = explode('-', $startdate);
			$ex_E	 = explode('-', $enddate);

			$dateday = $ex_S['0'] . $ex_S['1'] . $ex_S['2'] . 'T' . $ex_S['3'] . $ex_S['4'];
			$dateday.= '00/' . $ex_E['0'] . $ex_E['1'] . $ex_E['2'] . 'T' . $ex_E['3'] . $ex_E['4'] . '00';
		}
		else
		{
			$dateday = $ex['0'] . $ex['1'] . $ex['2'] . 'T' . $ex['3'] . $ex['4'];
			$dateday.= '00/' . $ex['0'] . $ex['1'] . $ex['2'] . 'T' . $ex['3'] . $ex['4'] . '00';
		}

		// Get the site name
		$sitename = JFactory::getApplication()->getCfg('sitename');

		$href = 'http://www.google.com/calendar/event?action=TEMPLATE';

		$mbString			= extension_loaded('mbstring');
		$text				= $mbString ? mb_substr($text, 0, 100, 'UTF-8') : substr($text, 0, 100);
		$len				= strrpos($text, ' ');  // interruption on a space
		$text				= substr($text, 0, $len);

		$href.= '&text=' . urlencode($text) . '...';
		$href.= '&dates=' . $dateday;
		$href.= '&location=' . urlencode($location);
		$href.= '&trp=true';

		$limit_reduc		= '37'; // 37 chars (&trp=true&details=&sf=true&output=xml)
		$limit_notlogged	= '785';
		$lenpart			= strlen($href);
		$lenlast			= 2068 - $lenpart - $limit_reduc - $limit_notlogged; // max link length minus (title+location)
		$details			= urlencode(strip_tags($details));
		$details			= substr($details, 0 , $lenlast);
		$len				= strrpos($details, '+');
		$details			= substr($details, 0 , $len);

		$href.= '&details=' . substr($details, 0, $lenlast) . '...';

		return $href;
	}


	// Url to add to Yahoo Calendar
	protected function yahoocalendarUrl ($i)
	{
		$text			= $i->title.' ('.$i->cat_title.')';
		$details		= $i->desc;
		$venue			= $i->place_name;
		$s_dates		= $i->dates;
//		$single_dates	= unserialize($s_dates);
		$single_dates	= iCString::isSerialized($i->dates) ? unserialize($i->dates) : array(); // returns array
		$website		= $this->Event_Link($i);

		$location	= $venue ? $venue.' - '.$i->address : $i->address;
		$get_date	= '';
		$href		= '#';
		$endday		= '';

		if (JRequest::getVar('date'))
		{
			// if 'All Dates' set
			$get_date = JRequest::getVar('date');
		}
		else
		{
			// if 'Only Next/Last Date' set
			$get_date = date('Y-m-d-H-i', strtotime($i->next));
		}

		$ex			= explode('-', $get_date);
		$this_date	= $ex['0'] . '-' . $ex['1'] . '-' . $ex['2'] . ' ' . $ex['3'] . ':' . $ex['4'];

		$startdate	= date('Y-m-d-H-i', strtotime($i->startdate));
		$enddate	= date('Y-m-d-H-i', strtotime($i->enddate));

		if ($this->eventHasPeriod($i)
			&& $get_date >= $startdate
			&& $get_date <= $enddate
			&& ! in_array($this_date, $single_dates)
			)
		{
			$weekdays	= ($i->weekdays || $i->weekdays == '0') ? true : false;

			if ($weekdays)
			{
				$startdate	= date('Y-m-d-H-i', strtotime($this_date));
				$enddate	= date('Y-m-d', strtotime($this_date)) . '-' . date('H-i', strtotime($i->enddate));
			}

			$ex_S		= explode('-', $startdate);
			$ex_E		= explode('-', $enddate);

			$dateday	= $ex_S['0'] . $ex_S['1'] . $ex_S['2'] . 'T' . $ex_S['3'] . $ex_S['4'] . '00';

//			$diff = strtotime($i->enddate) - strtotime($i->startdate);
//			$M = (floor($diff /60)) % 60;
//			$M = sprintf("%02d", $M);
//			$H = (floor($diff / 3600));

//			$duration	= ($H <= 24) ? $H . $M : '';
			$endday		= $ex_E['0'] . $ex_E['1'] . $ex_E['2'] . 'T' . $ex_E['3'] . $ex_E['4'] . '00';
		}
		else
		{
			$dateday	= $ex['0'] . $ex['1'] . $ex['2'] . 'T' . $ex['3'] . $ex['4'] . '00';
//			$duration	= '';
		}

		// Shortens the description, if more than 1000 characters
		$lengthMax			= '1000';
		$details			= urlencode(strip_tags($details));
		$details			= substr($details, 0, $lengthMax);
		$shortenedDetails	= strrpos($details, '+');
		$details			= substr($details, 0, $shortenedDetails);

		$href = "http://calendar.yahoo.com/?v=60";
		$href.= "&VIEW=d";
		$href.= "&in_loc=" . urlencode($location);
//		$href.= "&type=20";
		$href.= "&TITLE=" . urlencode($text);
		$href.= "&ST=" . $dateday;
		$href.= "&ET=" . $endday;
//		$href.= "&DUR=";
//		$href.= $duration ? "&DUR=" . $duration : '';
		$href.= "&DESC=" . substr($details, 0, $lengthMax) . '...';
		$href.= "&URL=" . urlencode($website);

		return $href;
	}

	// Url to add to Windows Live (Hotmail) Calendar
	protected function wlivecalendarUrl ($i)
	{
		$text			= $i->title.' ('.$i->cat_title.')';
		$details		= $i->desc;
		$venue			= $i->place_name;
		$s_dates		= $i->dates;
//		$single_dates	= unserialize($s_dates);
		$single_dates	= iCString::isSerialized($i->dates) ? unserialize($i->dates) : array(); // returns array
		$website		= $this->Event_Link($i);

		$location	= $venue ? $venue . ' - ' . $i->address : $i->address;
		$get_date	= '';
		$href		= '#';
		$endday		= '';

		if (JRequest::getVar('date'))
		{
			// if 'All Dates' set
			$get_date = JRequest::getVar('date');
		}
		else
		{
			// if 'Only Next/Last Date' set
			$get_date = date('Y-m-d-H-i', strtotime($i->next));
		}

		$ex			= explode('-', $get_date);
		$this_date	= $ex['0'] . '-' . $ex['1'] . '-' . $ex['2'] . ' ' . $ex['3'] . ':' . $ex['4'];

		$startdate	= date('Y-m-d-H-i', strtotime($i->startdate));
		$enddate	= date('Y-m-d-H-i', strtotime($i->enddate));

		if ( $this->eventHasPeriod($i)
			&& $get_date >= $startdate
			&& $get_date <= $enddate
			&& !in_array($this_date, $single_dates)
			)
		{
			$weekdays	= ($i->weekdays || $i->weekdays == '0') ? true : false;

			if ($weekdays)
			{
				$startdate	= date('Y-m-d-H-i', strtotime($this_date));
				$enddate	= date('Y-m-d', strtotime($this_date)) . '-' . date('H-i', strtotime($i->enddate));
			}

			$ex_S		= explode('-', $startdate);
			$ex_E		= explode('-', $enddate);

			$dateday	= $ex_S['0'] . $ex_S['1'] . $ex_S['2'] . 'T' . $ex_S['3'] . $ex_S['4'] . '00';
			$endday		= $ex_E['0'] . $ex_E['1'] . $ex_E['2'] . 'T' . $ex_E['3'] . $ex_E['4'] . '00';

		}
		else
		{
			$dateday	= $ex['0'] . $ex['1'] . $ex['2'] . 'T' . $ex['3'] . $ex['4'] . '00';
		}

		$href = "http://calendar.live.com/calendar/calendar.aspx?rru=addevent";
		$href.= "&dtstart=" . $dateday;
		$href.= isset($endday) ? "&dtend=" . $endday : '';
		$href.= "&summary=" . urlencode($text);
		$href.= "&location=" . urlencode($location);

		// Shortens the description, if more than 1000 characters
		$lengthMax			= '1000';
		$details			= urlencode(strip_tags($details));
		$details			= substr($details, 0, $lengthMax);
		$shortenedDetails	= strrpos($details, '+');
		$details			= substr($details, 0, $shortenedDetails);

		$href.= "&description=" . substr($details, 0, $lengthMax) . '...';

		return $href;
	}
}
themes/default.xml000060400000001420152455753310010202 0ustar00<?xml version="1.0" encoding="UTF-8" ?>
<install method="icthemes" type="component" version="2.5.0">

	<name>Default - iCagenda Theme</name>
	<creationDate>2015-09-01</creationDate>
	<version>3.5.10</version>
	<author>Lyr!C</author>
	<authorEmail>info@joomlic.com</authorEmail>
	<authorWebsite>www.Jooml!C.com</authorWebsite>
	<authorUrl>http://www.joomlic.com</authorUrl>
	<copyright>Copyright (c)2012-2015 Jooml!C. All Rights Reserved</copyright>
	<license>GNU/GPLv3 or later</license>
	<description>Theme pack by default for iCagenda (component + module)</description>

	<administration>
	</administration>
	<files folder="site">
		<folder>default</folder>
		<filename>default.xml</filename>
	</files>

	<themeUpdate>http://www.joomlic.com/icupdate/themes</themeUpdate>
</install>
themes/ic_rounded.xml000060400000001431152455753310010673 0ustar00<?xml version="1.0" encoding="UTF-8" ?>
<install method="icthemes" type="component" version="2.5.0">

	<name>iC rounded - iCagenda Theme</name>
	<creationDate>2015-09-01</creationDate>
	<version>3.5.10</version>
	<author>Lyr!C</author>
	<authorEmail>info@joomlic.com</authorEmail>
	<authorWebsite>www.Jooml!C.com</authorWebsite>
	<authorUrl>http://www.joomlic.com</authorUrl>
	<copyright>Copyright (c)2012-2015 Jooml!C. All Rights Reserved</copyright>
	<license>GNU/GPLv3 or later</license>
	<description>Theme pack iC rounded for iCagenda (component + module)</description>

	<administration>
	</administration>
	<files folder="site">
		<folder>ic_rounded</folder>
		<filename>ic_rounded.xml</filename>
	</files>

	<themeUpdate>http://www.joomlic.com/icupdate/themes</themeUpdate>
</install>
themes/index.html000060400000000054152455753310010033 0ustar00<html><body bgcolor="#FFFFFF"></body></html>themes/packs/default/images/default_thumbnail.png000060400000016207152455753310016234 0ustar00�PNG


IHDR�ྃPLTE���������>������������DA���.Y���
'Q���������������4`2^��������������������L�������1\����K~���N�
-W���
)T���
+UI| F���
=���	&O���%N$L!H#K"IO����4e�Iz{�H~Gx������T�6cDu9gL�GxY�R�7e���W����TTT3h�����X����������]�r�������U���������=l�	��'_�L���������i�
^�
L�JR������Ar��������A���������QRUNNNwxyaaaIII���XXX��
i�a�#Y�S�Ez��ӳ��ZZZv���㒓�������c�;�����.k���ڕ��l�#i����N��Cy�p�&n����������������@�>4�2��Ѫ��d��,9YI����lln����،�ƽ菮��~������ؾ7^!M�����t�����56o����rrs��K�hI+�%����������ح��bp�.HlVs�2Ry��&��������ڎ����w.?a�����������u��8u������`Q�N��2_�Ke���$��/q�COl'@e\�Y����כ��>y������h�n�~]��#Mz���>]�-0�̾�ns�
�����T[r3W*J�۳�c~+A+9P&RmHqdk�XE_!C��K��BIDATx��߫�p�'�}��)���"W*��d�b�[ hO�p�R�-�c���S$�.
�z���06au)B}(�?z(�D绕P�Kקa�����9~?�mK�$��������'��Vy�/��Z`Y֖iD��q$���	����&S�{�(o����@��8b�`�q~��E��@��*��M�x�l\�U�ZM�K���͐>�����"�eȃ��7�go��BL�o��âX,�W�{�v+S`��T�K�^�y�j�I�&H�ov���&�	(_���MK���L�x*��)w5�Rѻ�}E�%]��(��j�]]�RWJE��3�xլI�t��GK��bQQ,>�UDMT��u2�MQ�Ru_��v�P-���&A�Ā;��:_.�n�abє��QG�@L�Ѡh��h
1U�f��ֳ���*��eP�x�D�y�lo�B
(t���M#b�B1/}��N�&unF��R�'��t�2�de��@�<	�À����g	~+!O@̵���L��y*g���g�j�\���a���Yb��W����|�O��7�lj{�`:����/�ujs��8�|Ňs���?��`X��	���i�T�s1 �+�16�3�6�����b«��
��{r��^�\�cP8T��C�/��b.�7ëBH�����`l�v��7�ͨ�K��Y{���.n{r���A�����o�}�1~`��G��ĕ0�<FО0 f�JbB�_��ؕ[}.���9�|������@�I&�a���� �f����C�?��G������qF�9j�<=�wb���vR�M��p~2�,\���v��N��iHB����}Ogj�����d(}���r��%<����l�Є���ׯ|�=�=Q�_:?��ҝwu��#b�Ű��{.v��|nl���� �Cy�9�H�Oj��m0�x8���`�0\q��A֮���e��z^=
��� #���2Z��\�낔@7�ب�+��.����A-�
ƞ�"�Uݎ��y�[><�C�qym6����p���Fi���m(9��`zF�'h���r��F+@�Η��dt"9]3
�7<g��Nƣ���6crM%<g��(J����5�(o=����Yy^ў�dDQ����8N�"�n*�H3�>��d�7گ.L4
0%�!�wj��;�v�	w�~0	���R9hŢA��=��%b-��L�.�a�H�&���l��&�+
��FS�L���U'Va3�$�%�K`&.�A��n���V�wn3<�|˽�{�HF��5��j'"
H�G���u=I�0��ܝ��d��s��<|�F����L}j��ٽ'q{y�AW_S�>8b( �����gKU���"���_3�7E1U& �z�a3�	��cX��>�����������9L��_ss`DA@^XD� �OmDx5bzU�L�zr�T�[-y<�naf���=|���A�=1��2��mg|���R�Λf���L��T���U�%3=�Ӎk���a0�v5C�lõ5Ms�
V�Z;Åm�'|J�ɢc�B������nVӈ�0�ﲨ�,����0�ā����Y��l+H���u!(�ͽ��7ઙ�rYd	y�y�G���|@�����s2Yhd�h��i�2��)<�yE����o�:�����U�,i�3�o�y��m���6���d�_X�!��<9̆�/Y��JP��^4��8���:U�c�:�R�!��<
9Ln�ar&�<4����Z�U�]���@Ju��A>��c%�ϵn�"�7����bK�9�)r��{*�p)�	�옔���|����=��htȎa9����?�0BG�f�%On5�>ʁS�KH͆:�Y��$=h-�����0���N4��0�9��ma~�*�
�u{�d�*(� Q��6|�%R�vt�g4bW�g	K�*D��äN�X���dz<;J'��s��ڷE�6�N����=m{�;%/�~��`�O]uF�&�;�#Pu�J�j�.��'���w�6ڣz��W�n k�ta�k��gEm(���d`p��fJ��S��"u�"-�nZ��7�˺��q��,��B���snn����R��br�99��!Av&�cb�#Bn i e%QM5�.]Y��H��4��A��~n�wwl���ִ7I$!���C�D���m;Sy!#F���!Lr�FT|��VBF:d$2��並�&q�!�#|��t\\Q-��H6g�{�u�j�e�A�YQ4^铦'ƭ2c��#��P�/	6�t��v�)��Г��Y��H\[�B�ȐW��JP���6pZ&ƅ���Q��z(0�Y�o�b�y0�
�V����A��}���J�L�
4�;�:;HmP�U����1�mbV���*ei��q�õ���L�@���s�@�Qĉ�lb��!!�Q���I��9b�������~�@�d��H�|�)ad�.Bn�B*ex��B�����P�a�]���+���׭�rՓ��#�]�4(7�
��H�
����;����sLղ�Ab.
b\sc���+�b�A5�J��/��X2"8!y�݁�9��dE�C��z͚5�^e&��`�������INs<�ku��.1-q�z�UQ�+kz�Q��BYe����[���_��������u��; ��xo�[�Թ�ֹ�b�#�����-�Q�Gh@> ���MF��u4jŽb�8�#Ʃk�sz,bN�<��,�ɉq�:�ܨ�������ٍ��b��IJ�=��%�t��eb�������^>:����\3vq
��aN8B�.6iAN�R�e�8Hp�P��`EoT0		�b\�r�eh�.M
��
�n�pD_Lr�p-�-4�?}���~|�� �Qf󐘋zb�`4VF�� �}�Nj���b�܊�bf�!\���Yw���1$&�P�ҚA|[���=�խ ��R��5��z����stǓ��=r�zTףא��������Ǯޫw���1����ð�t�
+�Ȑ���'�L��O�g5����S�ƹ���j͞�H2K`���P"G19Cqmw��dx0���:9��fUڧ(�)�Gj)�2P%q�y�qŤ��6I��
[�Ò9j)"s/�6M�*�P����@&jɚb�t�W	�(�\��r�,�U|U��s�Z,��@�?"�t:��jb1����H�:]�İ,W�,�VL�r]s�qm�i�`A��Z'�+X�J��Z
��9�舢��$I<h��#J�`�zs1���~us�\{�>���!F�"˒ܡ�#��ML[Q�����6|n��Vb�0��ȶ�f���sP� Q�[2�
��Ĝ�����2ZJ�#Nz��Ԍ��	DQX�Se�M�S�%�<M�pT:�;iu>c1�����Zb��O�F:,����\Mų/��e(�"9ҳ�i9ϓ�=,ż:�ZK�Ͱ��)�;�{8O�����"�
���qB���w�z�6���0�bq�I.Sƙ%+)�Tv�&]�X $CQD\*�a8�(m���ۭq���)�[{C
Y��8���Y��@?�b�L�;�T�x+&'��y��dj��x���,	��T��`{�b�r/�0w��,�a��,|*԰��%o���Y�{�얮;�Z`��%1$��3l]�`1��"Z��C��ʲO��YUf�������.$�(��|�S!%�.��R9�n4�1,����#�h�|B���>f-��6
��NJ��� {�spI�	I�✔(I��W�Р )Tͪ
$��E�R�z�=T�=Z�Z*��C{*��{�1�Դ�f�Y����7�J~�{��3wwꝒ���oF�V�Q��� k!4�r�G��I��Lp����w:�S���1&�:c~ٔ#�H0��\�3:��)y�l�:%H�
��5f�6Wc��7��i�oy��9�m��i��q��A�Ì�A�p�Ma���D>W1�C�$<��A�T����E���]���]�dVz|�5O������������ۺ���9���r ���sQ,�4SȠH�bN%'f�I��l��ZI��o��؟| 2F�3�S�bF;"��S�����` 
9���$�C�Sc�]1bjg0a>%�8��f�_�K�����6k�'bڰ���h�c8ڞ����Aa�y����˃�16���l��b|�k��&$݌JL$z���E�bP��!:F<
�]F;a���T�i��mB��`l���V�eS���q��MjV�pΛ�C����ˡ�Ԑ�.j1(��6ϕ1(�p�cvr}�I����$�XY��W�&���A���o�����H��������ř�Ԏ���T3U=���Çb�!b �g��!��8�y�R,t�_X�@�T�۾S2����1twV�''��eJ>g�wFW���DCVB��2�)ݏ�P�\�f<M�V��\�����$cXĩ�`c���[�)E��aAe�Qgccv��"�W�H�
bN�ĜF�������8�E�:c:����ш2]k����ˢ���(b0g�ڂ��H\��I�P2�P��&925f�ޕ@��v���Ԃ���Z�?���^�ʴ�74�6$�tC/Ė�"�<v��l�
3��'4���F��de}[�6�;��5�Dc1���:,&9����ϧ���R�Ԙ@܉��?_/�1���Y4���P�Y׎���6��<b�1�G���a1	"&�H1�n,�������pV
��k�}'�]1;o߾=�'cDL:��#Ju�t��X��P2s>J,řY�,�����Ү���y���<1��Q�]��;=
�w�ZP"��Kh�S�(�-"Ѯ.�`#io��kw(���xy���Y�	Y�x*���Lצ*�k)U&���>c��u��N
�qy���q0@���3sv�
!m�p�h�_���Cb��p������ZDkYL��;���0����N�brRbM�
z�drb�z����@���	o���n	X��+ߞ��� �h�Gt!��
�1��¼NbjNEwI#9�D��ɍÚd��(H�V2]{�I�ļ��H�G�3s��y�!|�����/<x��s�c�sV�������5��AR��\w�
��_#�2O��ҭ���D̋���Ϟ�G�.fo��L�
����h��i`�,�����#�h�1��8�L
ujp�<�o��w�*?D�WPf�b,H���D��܁�q����*tX��T�!+U~�5x�U �0�P�4��'rbV�_�1���d�e:�{"����Y^��	�����<��]����S�5f���e�B%����
��'/��l.�,
n-��3�V��1�d��`���}(�R	
�"&=�L/,$���,.�nΤS��by�\16���p��"Fb�ft%�;�L��O���L.�fR��C���=T!b\,�!�|��"B���%��B2��X����������e��V9'm"��( 45����btD�8���Of`G�����1f�|"Fbt�`)���dw"�H��iV�<��B�,F�bH��͔TL�ַI튱YYV���91��~(��I�ҪŹl�&S��nQg�K�k�|2=��ը�jJ�f�C��"F�� �t(����d"�Q1��7�4�DBn(��6c�L]��F����+���|�6�(F��yq1��B�r�z��`1��gb���i��g����)\1,�x�S�k	O��X�G65<"[�98x�fʊ�/�n|B��^�yA�^�3^��r ���>7Ҩfd�:m�O5���Zx�\01`d�ѱg@#�A?��w@��q8VG�#�s�+�e�<�!:�h��>NL��ى}��^�2OÖy�����‰q4��M̽QĨ�̇�nn��̅��:~��1���2޸����i3��2�����ff�L\81���cס��m����
}6.����w��+�t��.�������DEL�������3{������7�;1�;�Xɘ�Y�����1��;1�X�]]��QO�+pW���X��>��P����j]Z�2_1�h�}1��LK��s��S��~|R|M���Cs����WS�q1�=���B������������^�[�b�CrC=B`t}rh�i�����ӥo^Lfviy	��"�1�T��"�1E��)BEL*b�PS��(F8�oԷAq1���rP:����3�?�\)}�E�9�j-�����Z��ъ�IEND�B`�themes/packs/default/images/minuslist.png000060400000000242152455753310014564 0ustar00�PNG


IHDR��y!PLTE������������������333�����ɳ������#��tRNS�Y��/IDAT�cXd������ �����H�b0h`(�0&0�+��&!o+A�IEND�B`�themes/packs/default/images/regis-baloon.png000060400000000364152455753310015123 0ustar00�PNG


IHDR$~��#	pHYs�� cHRMz%������u0�`:�o�_�FzIDATx��ֱ� ���!܁%X޷;8���R$�RHi�<�2��^����K��$
3�ֺ�{'"x��}W��t@�A;��e�LPk-&5 ��03""U�'*ӵ8����q��������s��*IEND�B`�themes/packs/default/images/plus.png000060400000001214152455753310013520 0ustar00�PNG


IHDRVΎW	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z��IDATx��1
�0@_��� �K��PDP�$��dp'Ai/���z	���H-
M��o	�'y����k��?n�K\C�,��tQ)E�"-[��M)%B�w�Zk��
,t%Rʏ�QY����=�C�R�8�IӔ�(�Zβ�@��F'˲$�2k����u׮�eZv�}�>B�4�`ߔ�"Ҳ��a�8U�?������y�V92'��iIEND�B`�themes/packs/default/images/index.html000060400000000054152455753310014025 0ustar00<html><body bgcolor="#FFFFFF"></body></html>themes/packs/default/images/info.png000060400000006532152455753310013500 0ustar00�PNG


IHDR�a	pHYs��~�
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATx�\��KAƿ���q/p6..ANl�\�W���)$1�6iS�S�����
i��H{&\#�*��������Kq�z������}�{#"t:! �Dnj1��,�Z�sa���s���-%I�5����a&�R�3���9�Ƙ�EQ<7�|��]�$T��건�$�,��[�D��s�<���,�~�Z-AD�"�R�T�1c8�888���!�0ƀ1!�V����fι) ��-��:�1*�h4�R
P� ����¦s��k!wΡRE...������:�9�D�v+[��z�eY��nc{{{B��Wj�kZ렚RJ����RJ<�9��A
������PM��־g�9)������8�@D(���EQ|3�LƘ�,�&�
k-�8FEh6�X^^�������s����$�K��1+++H��~kkk��
�ã�p8$"0"���������0���Z0���y�L&V)�A)u��9���TAU��n��1.G�Ѥ,KW����`p��v7=�;會1������t~~�D�^�������a�,�suu���z����޶�f6�@��=�^u&`�0�.�`�nt�IEND�B`�themes/packs/default/images/selector-arrow.png000060400000001211152455753310015502 0ustar00�PNG


IHDR
$RH��	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z��IDATx��Ա
�0�D$о@��	JA\�G�
NW�
=���&M[����WA�>�H~"۶Ck"���MCy���1Jk�ؓ�1JJ�a�ׁ$I�,��8�|�@/
� J�4�&͔R�(������YkWDto���۲,�Dt��#{k킈��{~��s�;�J�SUUYQ�A)p��υB�_؈�	=�]O���IEND�B`�themes/packs/default/images/pluslist.png000060400000000246152455753310014420 0ustar00�PNG


IHDR��y$PLTE���������333��������ٿ��������������߫ftRNS�Y��0IDAT�cX
A���!�P@a�d�W�i`!�1���<5�z-�IEND�B`�themes/packs/default/images/default_preview.png000060400000103725152455753310015734 0ustar00�PNG


IHDR�&����PLTE���������>������������������4`/Z+U���
%N#KE���	(R���2^������{����������K
-X���TTT�������@
DM�C
B���FxI|L�
"I'P���O�6dO�������Du���������S�Q�^^^!H���:hArHz���V����Y�U������8f���������\�������>n��1[1]���
K�em�N����K�!GK|2���������A}��P�S�s��`�g�X����^�Hyg�k�IHIc�
h�*g�&_�?x�Q�o�#k�0k������8q�,q��nO�����Ֆ��������NNNekq��<GWWW"O�sz�������ef`D�xut�������
!r�����������������E`����C���������
�m������{���ů�����Vs�����Ϸ��켬�e�������߫���fKb0���/5J~�nj�z���P���s-LrQZk���.T�sUM���]p�Sn���Ѻ����=u���}-/+_}���O�M£�p�o�oe���zf[Ҳ�GM]��̖s_G_~9P)��`MI��������k�w�����ڰ�`O�Ø��C=:kMc��n���7AY'y��2�. 8\��rgE-%f$!C^朒����̓��4���&�����\N��k�/��M�@� �+���IDATx��AL�VǓ-6/��j�zhd�̉C"	�"��4	E>0�k/>�BQJwv JHh)T[��Mi����L�&�mL��D;������XTb4�ޯ���T�ח��x!�F8EI��NѢ�в�j#�r������i�cf0�c�ng�����n7��ݼ�N�
�d��Ġ�@#��Q^�Fc���	O�	�j�.a��ry:���<I�	�,&�y��
��\�+�nzKN3�B�5©�J�{��y6���2�ͅu	�m`��;M�����}±^'���$4�i����z�z��p�W���V�����Bxܜ`\�I:AE�:J�J]h֩Y#�K�����L��XB�
�[��Bp�%!O �`	�m��FHB󠉄��,�Y��W"��
����o��V��b��W}z���fa��^A��H�V��`�$�ʍ��6�s�^��G�j���@�D��+�{G �=]�����r^p���Ή��%����
X���'֧zC�Em��5J����&�`����
��,�tQ,��G�8����n��
�\����rS4��n�D�r��D�:��J�����n
�b��!�-?�	N�X���]\.��Po�p*2�@��f�Н��=�D��"�����AB�%Tt	��Ix���q�O𤳒�{�L�)>���,%]%�#45^��M��,��6�CG�G�R�����Z�:��B��w/+%8�=]����t�_���7-��9;��p89�s�-X{ŝ����uҹ'%���7�¹>綃HH�XB�ڞ��&!U�֪[�x,G7����I_VNWVk[㵭��ت/(�"��u����?�<+o�ȕ��=��]�n�U��j���AJ��(~_����~��Ze��ςU�g9����M����j>�n9*,Xv��&�ѥ�f��чG��X~�:��R���Z�%�)A��K���]u��IIZ߭m�Xcߤ2��݉�l��Z���7ҋ��.valݔ>�/�*�̚s7�Æ2��*�DA�79(�Hq哵����^�t�����=��
מ��٢�5�)8��ș�����_@	���P���J��,;z��#�M���WRJ�m-�B	��'/E�[B��0����Hq(!m�����|��R��Wc�r�Tm��Ki�`�8W<)���r�	-�rc�ʄ�Lמ�X�C��K��}9䐤���j�Z��@����w�8���(��{�/��N��K	��@P��'��J��(�,W~F2e�)9\��e_=^Fn>t��"	����|	3G��v�ep����|�₟���xMFv:��hM�z���j��"���WΗp��ʃ�Td�b	Nf_���Gr�*o��Y�좓00��	Z,�|�HHh�Ƽ�i����'��Ğ<��|���wA�*�S�$25���	|/�5�{6�NW>�ϕ����r5n-W_8�sO��W)� 2���(g&�r49�$D�o����>�>��hy��I-Τ?��RHvN��^/�?.���N�8YJ,E�QKA��>A��K�����*]Lr�t)I�B�A�(,�t�4z;��D����'�5�{>������-P ��X��K87�}�������(l ş��\b�_q���,j�~���$L���Ϯ
%���';�������Gj�V�/6+g����}�K�	s�%�OB;�D�������K��.������c/M	p�ct��K�����fJ��чw���
�X���xh{u�
�PB�����"+!Y��	�RH�dYr�U^$��	��$�CP�CXB�!�#a��	���x���w�]Xw���b�
�քc]v�q%Ұn��pj�ƭ�	Kx	���A��Gmv�Q�����6d(a㮖�nJV��n��qt��Y�:�],a�
��IH�{uuդN����\�k�v����<X�$t��u	[�И��R!	ՙ��8M4ފ.��v��L	)�$�	Dw�E�oa��R�g��Қ���8�XsZW_DcC�i4	���A�y�L���&���ʆF�@�T�A*:	quי�u�!Z2�oLDB��.!�҆�24�4Ku*!��uūhjt[�=�gz�K�`�
`�i�%a���xP���
J�J%4i�9q�_���\�Q_�/f�v�E��2<�>=�V�p��c�ċ�_̴���R���XZ�S'�'�6�z׆\����T��v�\�ث��-m�μF���:	�.\�;��	_(MB��a��	7���~}y~�^�׭��ia��TPB=�#N��n���������O/�߫�&�f���jaC+�pB�E$$\���?۰�_��-$l"!�fx���������3h!��@h��wv�o������D��7����8�GFr%��	ôl������
B�؅�9
�+/�V����45h/Vo�/GQRy<Zthy���(z� �t�9"8�|�'/O��M��*�g=9��������K���9��HQ����^�YP�
�K������o9���梿�%�pNk���[89�VMU�I����9U��x1�k�)A�Y�\B�T��=�"!l��d���!����%�pN��0�����Eϩ�=���!t�l�e�K�ᜊ�ɇ�j�Yo��(���[~��RZ��Dž�Q	��@��xhP�Coہ.+����V�^G�C�YhslG.!��w�*yA��,�ܮ�H�]�
�k����v��(�$T�a�NBY�eVK��"K�S����X���pX٫t�u��Ej<�F��k��VM"�WOyh_L`i���t�p�Ù��3���� w{�`�k�()�;�ʎ�,�������X�d�3ꄲ,5��b�djq��AQI��I�L�rf����Bu���|���f�fy��+�(��uh�����F��L�[œl I�KE�Yb�|�t�d]�&KR��;��/䝐3��&�pE�^wXF�5�
PB\
p�C���ב�@e�h?��u�T��6LM�T�n��r<W&��)>�)ۊ��ƹ$�E���Eg�X��X+ᣫ��^9��<�#�yT9�V�M!d붧��<���S����p�Tl!��y6&�J�D�$�iʻ)I,q	9���p?��Q
A��-�@[�vݎȈ��RF����ݮ����rl!��$H��Tw���(b��Dd��.K�TI�\(��%��&El�K{!A�Z=�������ڮG�.�^�y��}�@7�
U�Ky	o��%9sC̒$�kD��f,!��5i{�$fIN�$���G�NX�pf��"yh�u�����T��-u=`�u�!�kz�2����R��~0s�
YO�
KHt��ꯜ%i,���H��K⍷r	93
�PT(j����^w���0�
4*�ͭA9�		Ș[d��l��ƨF,��i"��r�2�C4�S��%�&L��y'��,���).��۷���!�%(�;!�����@��r�8��JODB:��N&J�V̸�B�Ne��g��L)5�%4}�ZHLB��/֛H������oY'<ކ��b%	K�K$��d����]p�m���rf|Ez��7M��g|�Qs�
����k�a�vPS�Pc���6�t�F,�Q&�P��dY�hHR�2K�M���7r	9�L	[hj�[�Y�vomi�g{JR�N��{P=hY0�p��.G�cl��R%�:=$��&��������[���pX���o��(��B!�
9�n}���3��� 턣6�c6�
�h'�&�%��H��M#=�l��4e�������f���ej�U/{Z�Yv}�e��f�e��HSs��DB�����@�9��ؤFr�	�|c�p�W$�� K�)�:a�(M�Q(��pj�f����B?�R�=�ogx��/���u�F�֑:�W��7�F,��|b&��nK^��3Y�G�؍7���R00��%�(��$)-
c�0���
�Or1Ϋ8��"���b����p���nj��*�ugeh�z]h.x�C�;w8H���f���L�D��$�$6�R*!C�8�X��
�u±�ʗǹ@�%㮗��F���S4�I�(h~�i7���#��^���JҸ{�\-�G7��_���j�6K��W��i6��֖u�\�p�Js�}L��Y���]Z�q���8u�h!ޱ� v3CaR�E:�,Q	��l�,�����$\�tۓ����&9}��b�^�dΓ�U��w�k�>Y"ӌ�����e:�x��'�5�'>6�D�~i�s��Bʷ��2��g�0����+��~���Ѓ�V���k��b�^����*�t���ôzƝpR»b	��/�w7M��#���s�˶��;���)>X����yR���K�_�$^i�~Sp|EC�!"h��B�Z��p�׻B��i��N�Ih��t���7��7�1R��`^�>8>B#��#%,]��	��\B��2�4U�����:�K�T���v�.���s��ΰ^f��{����0	�V	�C�/>����O�_�L�G�K�Z�G�>�4�Ml��e��y^H$4��N8�H$��X�'[N�Ӯ4���p�X.��k�e��І��.��(�߄~�ڂ�H���.�o��O
�0��h+�_��
b͗�i��D��F,a�|Sw���U�p:Y��p}�}�fy�Ùj�~�x� ����=�:�AqDT��'�3:t��C���Đo�p��%��Yz���/�/�
�SI���+=�
���9|Y�+���\�������Gg��E�R�E��Ri���E
���:����mC��$\��	�Z�U�h<V�VoW�Av,����B<�?��JX��jB��C,��>5]B�<m��<��';g�H��lh�&|h�.���5�
Db6�j�`��l4Y�O4��jZ���1� � ��O[�̂�
f�PbH[⺦�&|��;��ض�j@�W:sϙsۧ/�νS�qܐ@�r��.�8!�+�XC*�+2�B�Ѯ1+鴄%�T’|�àgYs(���U��i���Izx��J�	�/Bv�扂%���	2����(X���;ڢbLH����[�C�yj�һd뎊!O3
�~$�+��:�|q��s�d�bxJP$�':��x��V�T���K��$d��H��k��u�T��f��ֈut,�6H5�\rz�f�=��#$����,��{
�"��"��Y��Q���q�z�J��(.�8��@���#rp	M8�**!��Q��8#78J�A�!{T�Ӝ�*�uƬ4_'.uG��c�R�xt���$�LJ��c.*����H�YKI�j;V����H8��1y�:^L��b,n��	���6O$$4J�nI:[3~6n=b��]�3�~��"l��LB�MF���ߢ
)p�t�����l'�)n:kkf��"d0q�WGo$��J(dNG�d:z5{:j|�B7o	�_��.�*��F�?���l:�(��Z�-��u�ds�ƽ.K�US���8�:+�C#�UB�{�#]��Vfh�f�iJ�q":�;�/��u	9ea�,��QU��i�%J�ޚ)g͸���1I�S�����eM1���%��lQRm`š%a5����q	�� �Q	aE�I�(}n6P����
[e�ey��ȸ�D
׏��zSDBu��A��8��q8FѻJ�$�����ܤ���#R	M)	���K2�!�T�Q܋_KY�p�;�6i>��:D���/�+(�5�WB��	ecrF屵w�ck��� ��
�$��ʓl�%T�L�@0�a���G�\��`b0r•_O[8&�r��K.�Lc��0�
�K�fw��)�+!G�N8ݨ�7�)pϘ Y��Z.�iTB��,̖�$Ag�g�EE�_7�WmO`�\Ro�tPÙ��p�i���j������/�DY�YsHX�8�	�W���owDI��� �������v�P�g�S��>���+T
�ij/<}�6r�C�OI���
���S	�K�� Lv�W	�7+��_,N�ܮsM6X���\���bI��L��vK�}ݹ�a̚Cœ6�sE��j
^��7�~+V��C�CB!��›TDe�}YɋU|ZBޱE�8>[B
���}BEB��2	y-,/�3�H��:?�_�X,5�+�ݨ�!�Tjw��f���Ԓt���t����%�"=��&=�
���!��eXxϐ�>&/������LBF>L��ߨ��,���[#��5.��`����l��IE%T�0A;cD��f�H�xZN;�P���0��R��H��9N������)��taa���x.���TB�0?n�P6+���,tঽB\�wH�lm�zL_��7�0��V�F4�|������t��[vD��!����.'��t�\-��>]��^���LBb:�wX�KB��@I��j��Q�s��-{ ���B,�K���q���=j�U6�za�t	��P�T !�H+�@��vG{:�%��x�p�{'
<T�9J:��.>uYȀ߯�ϸ�`�eXhC�p�j����T�t	�ٰ�Tx�+H�F��_B���j�IZ٥��S���0�1G���8��z��](�?��Ir���u��cl	�ؐ啪O��i+�Mj�#�,�*<�1�#��GB��S7��r��j�qu�0V�(�T�������+a.rK��x&�QZM�T V+]JE��#�c	�!�A�6sd0H�w�y�(X#�3ҘS�!���ڲ:��J��{m��4*�bq� m�59U�_��e	�_=}�m2�涻L0	���d�����t���"�M����
Vb9��'&�@�M�a2Kic�S�X��)�VpP�-a>��
��K�R�=!>o�NBC�@<�$����~��pO�W%j�6/�#A|��G�BX(MD�	�t�nz�=�G�I>��!`s:���v�l�=		��.]��ڈYK��D�y�oM,�x�8��ֱJo�z���C%���fK��(�DI�
%ďh/�2-�ͫ��!jG�W%4��Vk����b������6�~�3��b80��]���@�=EÁ�[����%+�aZ3��/�X�l�&u�nk1��dQ�@���=�-UD|+?{���`�-���¨�y�!o�8�(z,=b]�����cF�
x�#�-J%�@R�jwT�O��cZB��`o5��¯'�+Z/��L��`��j�}f���vO����_9�u��jrkxts����O�VFϗ���뫑p�A����O&�o�ټ�|�容��x��韙���Q��Q*a������:&�hZ֩�����q`��p+Hx��[�:#�����V��Y�+�
^�1����i�r��;�[��.;�����d� � ��]�{,�m]���	*�|W�}+�.9�+CK%�&!(�B�.��e9��8�uJ�4�Jx��94��&���j/~�L��\rh�H8w.8����m��(���ŀoX�p3q��sס�σ�kW�����f��e��o�Y����b���	62��-��E��l�(ꇯ#$�A{0�!K�=��E+ߟ�|5�[��>2%��\،L,������_<9��}���o�68�n���h?�
�����rh�ܵR��ڙ���r\3l�2�a0ᦽJl��R�#7TB�c���H"`NF<�di$y{ �Z_w�d���>O�;�Ձ�#{��PH��}��@]�/Xϟ�s&�g!�
`ד�d 	5�ĩ��(XX��ݞ��P���H�5�
Z�M�^�%-�tp��^��~<H	 IcR�I��/D�`��r��xb�-C�	�Ã�+���@�Rn���a$d0`�l�֑	����Q���HX�`]�:}q�
�
�{���#̟��jZA�7]
]����B�`DR!P�"	t!4bL�t_�y�,��$O�*ͳ�f���
��2�93s�\uS��[�]��wH��ٜǓ^�0_����Y�;��z<���N�z	=��]?x�H���'�䲟~<\�W³�Ǔv�O^B�g���9��2O�!�����(�q\���<�c�R$��
���K�q,��jj���P���H
s�j,c���N���N�Z���$�&-�Np�x��HX�,�4�mJ2JB���Z�j��a1�E�Ű��xl�W8�k|Ͽ_htk��.4�.@��9(p�^?ㅪM���Ē����އJ�`Cr��P.�#RK���$�.��o<��5���(4P����*�ߎ��z���*j��:sĴ���o3W�Lbd����t C�Ho(U���Ӛm�)��d]	7�l���\� !L�[�iU=ۅ)*���{�xȉlI�;�yڱ9�,���DP��:-���n_꠮�DDre{ȕ�t���>{�2��1��6F��0�*n4,-hhU�x�.�����#�8��$ܔ�����DwX�QZ݆�0���Ni������8�)�QƊ��6�Jآe�1�fX�D;R�A�E`�q���+u�(���\Q�XN��P;����U��?�B&a�
b%*S�t5ү�ZT޵�K&�=W�ѕ|�fJ�;��(�L�Y��5� NJ��)��Q���h#��+FOJl����#G(#IM�s�$�L��ƺ͚ǥ~��X(�0��ʨ¤�$TX?�㆐�
�qJn	K��xy,^�wC��i��Tb�,\�lx�Wh��r��t�^Q�1�7�(�+�`���r2	 �LBe�x^��,��L�$��BK	U�����N�K�X���`q�D���ӤLT�Rmu�K���U�-��S�h��<��St9�xD��*�
]�Z�>A#��9�����|��oְ3�!Ѩ�E��^V��l�tww��0B�&��u\��0��
иu���,Ma�
	��h:��@��(�	� q�+��<%�55B��%������8'0\$~_�׶OΌ��k_$�&�0�%;���
�|
�e��P��RE!p��[�cS™л�nl�𺱯m6�|�5�ݶ:Л�uS+ɜ7��p<W�M�)�E��EY�<O�Y��HWu7
ݚ�OS�� ��M:x����U�Y
}l�,.xu�L��HNaw�I��&�ۢ�3����TF{ C��
�N�<|��q:��%�}:q�7��z�U�<�t�B���H����{Cם�
~ʲ(�ĸ�U�y	}QIP�y1�4*7k�,�D�`��zF��� �z�F�W�m�>D��k-����z�tہ(��v>�ly�qP�Ό��g�b�)u�:'r"8�Pj�!A��9p�#�H�S���#���ig̥Hs'��|���#�j�n�-K�7��p]Wy%�4��:�;F�J���	L�g�� �q��2�4?��<��9��M�4�V�����\c����ŇO�c�a/����`W�1Dy�OXt4��6��a�~2����%�H��vHt>!����7O
����b*i�D���7<A�t�J�w��0�W���,&��RЁ��*�3�M��'-sR4&O�g�a��<�m[�}�V�N �n�iX�2k���\��
��n֌���Bү��a��g Ҽ�璨�^[�g�qpA�����B�(*�7�����:���U�M z��6���?g=�(��IAh>�ﱄ`�m[��rֻe����\�퉧�cAC�X�y���ovU�S&��2s��i��(�e�I6i�V�e��%��4��,1����M3a+[U�ܐ�#a�4ף3��&,k=w{���h�s�Xպ�'�s$��K��s.	�&]��E��> �@�.��88ܹt��4�d�ƜC	ll��a��"�A@yI�k	/����'�GBP�x��#��$�G��g�Y�~�vz�Sw���Y"�X�b�X���JLP⥟79@fS-67����3���K�֪��+�䘑�z��Vu���oA�3mR�,'ͳ�Nw꾼����q�~A�ܰ��:�cj�z�vHĹ��tūs�|4�S��N|)чu_>F&����"}$��|Ȧ����p�>e��GڠŸ� ??������a����a��OB�r\"Q�A��|�V�s�fX�����#�#�v��5����#�Nq#g����I�ނ.����^�JzA
��?�rж�^,��c킲�
��zA�רk��C�C�0=&~�zD=���jJl��yU<���*�-EvY�̝;�Oך��S�xm]��M�����[S�Oڋ8�́���s��;�N�
a�:�I�z��:N�㻁iEZ��,+R��JީRE�0�1q�ֺb��Z�@)�7��}7]�Z���)A��<�g��$�,jam��
F�F]$g�������N�R�h>�}v��H�2K�!%9�v���J@\G��h�!$�r��ݍ)Qi���43h�%��E�&"��,
��[�Pa2��ȹ����-�%���W�ZT��;�n7�M���<�TH̑�v_�=�Kj.i�a{���5�5}h����� ��~A�x�C��	r|Q��,�&�+��~A5&��Bh%ի$�o�8Jot	-����a���ך�+��ЪC�Ƃ��2�Iѫ�-Zȑn���PV���Kor��W@�w-KK��Q�9�sQK�
e�pk�6?ֵ�zB	S���
Uk�u4���i��HN���WN7���,zrR^[=�h��ds��l�3�-k�3C��X�[58譆�&����b�4�|�(Y����=��k�b	�9���V���`�/����&�S�nd��(�F�'��m��a��,�.�u�G�s9�����~JZ�d�@;GO�G:�9*�9��h�p���!�sa{&�#�L߬���4D�E�h�i':���	��>��Y�㋥�dxv4���ͪ�:ʷ`�Qŧ�$x3ڙ��$�CU�T�b�Da3�[d�u�M,���4?$�6R�]J_c�оCO���Ϛ5�����n�����SG
]/�U�����QG��[��:������W`����_�����WQ|ֳI�]*�Zm�\>Q�]��P2�����uپ������O�J��/�u��V�@���\0�U�N�Gз=����������nS�5��)57�@����?���JG.g)h��ʮ-���,Ԛ����`Nim���uܑh��Z�������
�3�`-�n,�n���c��b�'�n��)��_�Vd����zK�(c9�fc9*T—n*�\�T�L%$aϋ�9�'�v�0=L̓�swfT2=lH��y�xUِ��-��D��䟂�׵iA�R�\�p��u\���𲔜�o^��-t�	��s�/��Z����,�y,�)}�cd!@t�VP�h�J�/�$���^Lt�V�1ɩ�����D,�&RP��J��Y6�E���jf�",�$��9#hgF%�ws�s͔���R���R�|Oa)��D��L؞�� H~(���*3.:�!#d�g������+���=��;�S�eu�$OV;��il�oH>�W�p��Ƒyw��@s䄿�YK;�8��h���B���o�3�__�\)��.板�rQur��
k��WpC�$�#���>M���%�*
����Be	o^�t��vv�W���d�J�N�)���tw�cfA��Oq���ę~q���=�'�ˍp�]��!�d�p=�TKJ\қc��D�`ox��6�z8�]���^�I��Q�����x_a�a��Ѳ��#͞��$#/���c��ȹU�Q�Z��W�j�!��SH5�Q�$أg�<�48�=����w�~N��
�;�M�>ROJI��wa�fb��ԫZ�G
�VE�K՜MUx��PdրR-A�^�v�q��ϒ�6rD&��g��L]{=>'�՝��H�3��x�@���>^�L�6�M����봽��+�&���� ��U���q:�-��0�A��e��PQ���Wb��0%��KQuXz4�üc�gc �1'��=����s��p��(�|��Gr��!.8���^��i5��T6�S}���*�$�2���̘p�k2g��y��>�J3P[Z��g�0���}sL�����,X�^E�t[V��W����2a$��23Ð|�0q4#��[�P�I��q��<Ht�n�Bn�
�ю�##H�x*��	��wx	Q���7�m�w��� �~Ei0��#<�Q�^N�&��p'��E�o�d~�?ǟ;��,��������戂V�������HB�p©̮���k�35��xz�������}e�U^5��F�@S�!������4��k��i�MMd/,%zMy}�����`r�o�"����c!���ma|�=�A�ɍ��z�=/��F2Mȑ�i��Q����A�(�A��JQ��C��:~6�?�wOj¤M�zf����#w�7��5{	@;�}�lꩨy_x�c�ް��g�l����6/�#�����Dgi��8	�$���A�j[?
�X�}�$�v���޺t?L�WוN�Z�q�O��c�|v�'�(�$֕�WH^P[��@�����D,�B����)x	^�sәq�%�%'���w������g�oQ��_�I�vbt�9��e�&{#4s�S5K�\�HqEJ��b
9f��'Bb�1v����p
�&r�1z�Q5Cޮ��[N6ц�J�7�*�6�t!����
�"y���x�I�!1���'FEa̡s��C�cE�@�nR")#ek7�V!����"���s�֔�P¶�����Bl5��px�u�a�ǸN�B?�oy+p�-�7�x�N�	#�!06"֢	 &����d��,���<&-��
�z!F2z�|e�C�υP����.6��~�a/W�oY��d[a�7~��d�E`�\��Z�&߬�nL�]�y�qkb��[�Ϸ��^��>'W1�����6��b�a��j�3�V��Qp$�\�~H�A�L;+�~�)���1O�:`y4�Dޝ��@��;7C�	
�}����1�7�7�}�9c�*�h���N;���P����}OEu#{c'�h8#@x4}=���t̏5$��-��n�FV��*��>#X��Pv�N��ƥ|ĩW�6OZb�K'�恫��Ƙ����s�ƪ|�I�HO"u��>�4�3���_Y?����pc͈9U�B�N�"{&���}���cx���[j"��C�%cTByz�X�qvM����R��!<�>�/G��F,��H}�x��J�a�I�!���4��.X�NOa�X:=*%b=m��[}��Zw�)Q�72�b8,�<ት��I8�NYp<���jp=D�y��Ic�q��1ݱ�4%��}:(�#dS
9��BQ��Iu�Wf$\c�|�ѝ	1G0�#�v�K��P�s������@�X��t�|Wbܟ1���)�׳��v;���*�%TS)5m�}@����Nh+��~,ǔ�u�К\8�i�М$�������(�
9!�[4��p�r����EQ���̋�P��
	�!��x�DQٍ#�+��{�A����U�"�kv�a�%�X�X��K���`��w~C_����_��i(��#��ӌq�t�`
81�l�Z��-�fC��E�Q���88N�J�B4����4�9�ʝ�0��p>���LHa
n#wGcVf&e2%ӧ�i�&E�&L�~D)a�0�N��G9�RIc~����&c�@���R�9A��I!�%�_~����Ϣ��Br
B�*�!�x�Ӟw�#�"�+;'�͈&�Â��k\��pҠ4䫅>����G�n`��N���x-�5�3��Sc�����=�\�Г>�9k]�>7�ʈ�R���A�mQ�##��?�4i�X����j�T&[�t�1,1��yv����<:�����£���8�!�܁<�0b�N� �h�:�F���>��Pa]I�t�I#�W~��s��cBI�g���y��೘]\�jAvP��ǬI�yn�$ߦ�`#���Y�!A3�?IȲ�J�T��86VW��%��G_�c�f�?��p,�I��e/�k�:�;�G�Ӥ�e��V�}y��=~�\Nz���]�a�{�%� �zm�y��Ҥ^�:j�r�"�d�<�	�+$"�O���L��R\���� ����7�2G@�Lkj79�
�+"�6:�S��ӥ��׆PA֫������g��д�Io�FoJ��>�����vœ����p�R]��ָQv�ޡB�	�u�嚦@���/>ydj�ϙ���O��L����sД
9�&��Z-���G��
G���7{��9��O��ړ(~t>�_�:_��Ď��4��z�e+�|Ӻn���q�w�zB6�t��5VZ�
r���E�}�%��Z�8��<,�Jr�K����di�ʰDZ$0�qa��)�gĪД��R�%?���o\�@8,��*8Loe���K��nF[w��%�m�ݶ|��M��ADc��V+��2�9�L�ƶ�|�z�ji�^�I�<��p��=C���V�D�����Y㠡i��L�δ��RR��(	��9�̬.�����.`���mhtG�Wo�C�X4Ř4�&�:7���_0>�S=�	�������y�[��U˛��dv�=f�X��=C3J)��u�`�Yˢ�_}df �S�a���O�Նr�	��\Q��]M�;:�=
�`Dw�ԇڙ�(!,��C����L�ظ"��<��Vi��Uf]�O9k�
qP��/#乛�T]�3�b��4��4}Y�ͱJaO��/8`&~�+b��#5�9�����2H�?
��h8*@�}�0B��'������@�ydJ�7k�e(<�2g�1�Ś�4�Zө�@�K�<z��T����Q�'�X�1��]m��o��,HIȺ���('���<��epYpȑ��5�*��k���*^�a?T��	!E%�+�w7���M����V֤%�-4d{�ZLp�ظq�H�U���S������5x�f7)5sJG*��d�<�i1)Ʀ�a>"C���aE��@�1𤐄��E��?�~�ce'�ECߢ
FN��.�d��j�-��F-Cx9=Nm�V���H�
���I�Ud��w��Vxi�MZZh����T?ƕ�����0��)3ƥNLCS��3%�1����@kL�d3U*c ��"h.�=j�t2]MX��!���.LN(�D����5�6[���n�ǩa�N�(J��ݓ/�(_��x�Ejn�)#SI����ZH�P�Z��an������
x6�&�k�wƴs�3�����x8���*ѷ
 ����薨Tq��uI�(�_��g	������Ԙ���>����jM��-�$��)��,e��&[XS��Szk%��	"䘿�UN K��u	�.��F����N.C������Rr�;���
����w��	 x�5G��	��>Zj������Ν�-���kKS�ȐAQ/Q]*UD���k�Ub������?ר��ȘSf�e�l6���ߦ���&C�����"���s�Fz�]�T6,,��u�~���^�ͼσ� B6��lՋ�+�SKL�rǔ�,ϗ&€'3R|�	�I��4��X�u�� <R��ix��0�h>�4�i��aa���"u���I+�;��匬�5x���65@��'�Lh�,#r�J)%���s�,���A��p�_� W�b�|��1�Zj���=����4�Ы+��ĺ��J���8�I�S)�0���28�+:C��4P&r?v=�We�^s�����e�\�8�^���t'V�*�ĩ�3{F�د�96G��`X�>�!����hP����RPZ���N���T;�.�߳��UX�Xu�O!��ؒ�i^�ѝ��X��!��A8�gA{y��E��<�6 �f���Q��Q)�,u.4��d��A�J&��{ʱ�Wj�s���?��
g�L�^�PhR��ǑX�wn<�*���d�p���`�
���X��+kSM�1�ҿ�nS�[=&��uU��F�f�t�������z��
�*!���GB���k9UE�_��߯��=�g��*&]�m�]�=È��߫;�/�x#ýҍgZ:�2������}4~y�1��4:�����~���<!�H��O�.�t�iu~��Yg=M���!li�[��>��%/^���HI��^W,j]D����v]�� |����z�z�/�nԊ<4�R![�ګp‹��ʭ(�_��~�QS�^��B��7�:�I��^�/��E���BN�B,��n��V�1��u���K��0D��h=�Y:���]r�QY4Q=�qٖ{�P��l�prw��o."��T*H��I,G��x�;�4��=8�',۱	Q������m�5b�K�B����}�1��i��"�p�s�'$���aa`�
KR�?�2>q#����oB���҆Y���s�P��$�ꄢ�N�k��?$�
uBQ��n�f	�	E)�WBuBQI(��P��!	�XC
�4$�kHB!���3�H1��$	E%v��!�'�
	g^mJs�#�K�2�viC.U<��%���jT�
�I��sT���0u1�*��К+g�(�c��ڨ�L,<�7uB�f�}��8�8�����%��ɡƘ�n�	f�w�A��kB��ke��۞�@Rۆ��
r���ŅD�8�?����"�59�}���}��><w�]�][Nw�12�����������`	3�
s�z�+.��.�֮-�a*Gӡ��B�x
�y��#��;f���%����B���cĝ�����sf��sf6�e�Ĕ;ԷP���(Zc���4,Lj;;�e�����@�c-�s�/�C9����B��h��Rl�,gBg:f�Y���hB����s�s�����+�i�Lj������l��y����f���v���N`�l�$��!�iX��`'�n��b�6K�mt�i�bM�e�܂x�	����x�rx��/U9�,�+�k'?��fV1t9��7t�~\9Q�~��j�#O�$*yJ�9�ٜSP���T����9Z�闳EMN!j��.W����A�I�����{���֤���*s�@�~?�4���"'1�|r�E �{h����z�n�{R�(x�%՝�;n`�#b�s�b���y�L-�2?g�꒏�ʉZG��κ�O��3�F������ ��+��@�l�Fuw:����1
B���F�:��[v�*�ro�)�A��=�7�Ǟd�L�ͤT���`�竹6FA��e�~��ͷ�DR�R�@�?��6�JJ^��H�?�5=I\9I+a4S���%��"���Ӷ��/�'uM/�h<��w�4�;�Zg1ň�;�0��K���0&
(�h�#{�1�QK�
|i}*���z�3�.)�B�s"%I	3�G GP1�MB=�R��0���}�#�FA��	,�+'iE!<W�{'�a��@�i\����hz��l`�4��Q��M=��"F�z��s�^�� �4���Z_��)��F��))���aЮ���!��x`��mR�ӡ�y��yq���z!{N��z-�d��p�$��#�4�p��vd�Ta\�{+������mŐR�<B�K!�N���ma�R�P|���I�D�;E���^��|��+���vtR-�L[�Km��_#�
��h�Ŧ9'��B���c��s.�]���@��?�7�[��YhHx:zc0�n�)&��B�����;-��dA81!�Z�v�@ζ�A�I���)�l&Yʍէ�v��|��paG�hs�!ė��e�|�`A��Z�{��
AHK0�D l�bar�%Q��ƌF�����)
C�q:�(}wԢQJ
q���.^��5�x��mU���h�tqc��|[�[�w�r�z��3�N/]�
��.�ll�*�&�%��y��խ�w��>�����Ձ0�W����p8���;��X�k�P�ý��
��/y{Ы9ho�i:�3DM�#�lcFJS���B�T"���D�l\���2vz��� �n�r�I�lDS	����
�V��ľu:�~�/�B�,������w>��Tak�A#T��9�0q[({B�����9���C��L�)��LIG���Ԕ�IڦYI�416���B)��*H/�?E<z��&�L'�D[]M�e���{�]$?�73��XA	��#sۑ)+͍̏@�����H'�����v>V�^qlj����E�ä��܋p�f�e�ʎ�hl�1!���������oe��:�(��+�z����4��נ�5��2a��,T��l��U�i@�uxP�|+���s��?�v�G�^���W�z�p+tu��J� �e��+��mft2!��Ȅ�m���	q�[+p
�كC��ԸhD�h��"��pK��d�E��?��9?¡9�0?	O3��2["sG��r�p[�L����t�jo�޵�7L�l��^ʂ�ӱ��ˑ1���؜	ٻ�n}"����
�g�z�:���Uz��;.S#�e#�qL�������.E��f�,��7"!�/JX��Uj���S[� �>�,��^�Fd4���1!�0�2lx
u��s��F�r2�_}����[#(orb�pkt�N��Ԩy���
6�4J3�F�ujSDΎn ����q��%[�!�]W��Lh�NǨ�����r�H��C��N�Kx}H&$�" �P�$���f%�`@��t���."���2_Z��u��Kx�@B�b��37�4�&?^���$��P:V̞>h�+�2�UA�S�{��B��=�s�&���e9�6��QF�U�/-�g(^�Π��C��B�`��S�^���B`���OKK��J��r:�.i��?6vf�����Inaqsh������}��A��&��яB�*���⑏?D�G����	J^t$x��ӂ$I�4�nV�%�,�)_0X��~�JҊ~oŬ/t�e}��	ܠ�"�.�ujsg��M�<���W�$�֟�r*�}��
_�+�G�Pճz^OZ,��V��fb<�7���l��ϲ,	?�"	�>�ŏB�ڛ���t�Nj�}�NBuQ��:�ߩ4y-�J�<�-LW��8ZF��F*:*�����T,�/,P��iX�S�utE���Y|gk�p��}�A)�o=Z��JX�GC���iQٰB���/W�
GR�X�+�'�o� ��	�,�g��ʁ�����,�/�y�89^��O!�k� ap)���y�.̈��#Ty^�-�#䇃7�&	�t
�����*	c����>��,~V��Ad:�KXX@�$���&�޴�����ey#�U��j!$�U�7��(�d�B��ha�iu,�lek�s����-.��hU���?�+����w�E��2�V�Ȅ�)�$��R����IPk��N�j�-�l�%-B�Lr���L�4�
�g a�\V|{ڽ�</�����\�!�7��&^�2I��JB��.�%w	���K����t<��e`�\�h{�`��?��B>%K�Է�:�>NE,!�%�A�$�-�Bc��.����i9]A��~B�$<�P�
�0(�]l�.�Y�2����R��䓓D8Z�*���B1+��:M��J"��m	��0-*BV� �ݚ�-��x	�f�&�F�/B/�u��L�B��Qc9����p\�|.�B�.C�I���L�*l�����,G�KI��e�8XW�yn]��%L	Pw��>��T����  �*=B(^�<���#n�˂ʈS��������a_~o!�ify�X�φ�֏T<�b#�=!�q�X$U��PL	����Y���+���i�Ae$�}]�L�_�p��"b_�]���*	m����=�c�0����EU�o��Vv�s��f�o
�}�jX��	NG�#��n ��ɧj�Y_Aa	c���ao	�+���|1K\Yks��l���,�6��9��`'�N���aࠫ�2a+�s���C�qn
����A�O���h|%�C��!2=�C�Yp���
s���'�ñ�^��L�蟆�ȿH��4K��_�a��		��EB�A��e�eA�"!@�>	�4��====P\�$�A�5%�YK&s��'�L���_v��,j7@��m�e3`;ݘ�R��>��v�q��	�-�~��Y����	ח�F�ym7�O¶w��DC(��Z����yyِ�����{bb8���~�c�O��M��
��3g�X�۵������H����D��Zs��$��@,�z<��!����z��ź��;+�%�"���fc+�A���$��x(]�0��LJXM	�KQw������i!�.f��X����K���Wu������W�
�V��#��a��y\e9%�9h!��Eb<�
���s�&V��gFV�K�C鲜lv9M˲w/�zM	���"qeU�İ�+>qIB�l��(Y� ��cDB�?"���Z�.��$TV��,\ȶfB^�$oJ��8h�(��͆���B�`�ҿU�r4X<T,2�d7�Y^ʥ%�!��RP)HeYT*���J���^�y%�J��}"!���k��~��d�~wf‹��K��d�Y��A"�T��h��n>�
��J��ʑl4�M�e�c3�K���dV�N�V�`���|V9+E�����bK�		��jb	����p-�]f��Y�n�w-�g���~Z�rN��Rh)ąR|��,Ye%�UV�Y>�,�sv�xw����+�w��}x̓�1�s\�_x9�M$$\[BT�����'��뭵������̄cw�uM�=d�Fad�sOL8���z���%\[B �X3���A���GDB,�_�HH���VX��� �˪l�v��NBw��n����I��%��S���Azy)r�k��m[7fB�؝�&��X��{Z"�:�c�����T�A&t�N�gF����9�eGg�I8�o�-��Z����ʠP��/(5����Z5�2��4T2�M5��ko3r=���{�h�E��		��/=��^
6�W�&��Q'��L��5=�Pף�v�Tk��ϣ.�w��Z[	=DB�U���O�)E
*R�z�Z��@7��L��Ҝ۪�a����y�,��p-	k_
��)|+
_��^*S#,��P��]�d#+�Q��.[��7����K�V�SDB�u�	��!!8�$�x3$4�3�j�$4�Z+;z;U]+!u��n+a�Z,�H$$\�'/eB�����P�H�I���Tf��st�r��p			�[���*�3tgxx���H6%��3�BB�|j���FCDB�ߓ�QeY��p���h'�I)��"a\��p�"�K�		���?\[�r��h��	�'f��'f�����+���C�ch���e����DBr��`�1J(jj�b$M�	��<�<��HHh��J(y�\�Ƙ�y2�	���;,j�%�p�V6�HH����D10L�p%d-N�x�&^�Us߇�fh'��p}	��=@�9��[%!HGy��S,��=ь[��f�����w$�����%!6����Фƃ��/�	&�UBUTX�W
��P����Я�t�w�i04t�~�]�z���C;����DB1xW���t��	�[#!�FǸ�nb�%�矻���A����H(������ ������nFBsw ��(�w�s�Q�i�%]�^�i��'f(���t�0��D��
|�O	���+�3~�xɯ��CӴC�B�,��rC6R
B~� m%d^vn=�%�U��`���:���732p��0l+�ӏW����L*���Ey�K\AҔ��y�������0��EB���	�'4#��$tv���O2��[f�RAi6�oI83sI��zAB���aZ�$��8$d�W�M
�4I��2$D�=ъ�
K����2$4"����zd�P��Q=C>}��za��f��`ϔ��3�<7Ӑ�Ӑ�M}12��iCB�ۦ���){	=o��$!-	3�Wdf�l�_ԥa�@�Eq!
5��e(��e"q7`#�Ӑ�Q�V��&�%�\�R��Q���0�4�N�h�i��2�tY�v�-����D�Vm$��r"5�*!=�ޛ�26��rd�NB�@�g� !#A�23���2��B8��������)s!��f�lXY9��
b.�m��F╰�L����4Ih�E�;�n��0/\J{�%�f-Be��M5_��F`�̌Y���gQ[Ε�r�r�l�H�-G'#�D�	��d�.f�N�!;	�����_����a�~�e	�_D������_z�NĴ�t�X:Nf|����{U�o�W��eu�A���P��S�38֥2j�
/G�Zh�FN�Ȍt\��=�:�#�K��0VP�u�L�<��h#!��Rv����m&���?�u	=K��u��Y���]9��������D:����o6��2X���@��R�E��L�Z�d���ς���O%|��TV	M-���f3�'��c��B6P�h�v ơ��]&�|��*!3u",�� !k��$�m�v9�'�� !埼���*�&I+���,�J>��K��V�)q5���TC°t��ָ?[։��96���۷;��8_b
	�T*���9�Mdvt��)�*��Cv0q��n�L���%�#1�`�%̨r�v9:]��B�h�?t�ls�r�XMJ_��u	��ii{�8w2�u�]<!���fBW]B&��5��ؚ�V��"3�,0��<��r4�e�=�����(�y� 4$�;T�NȌ����O�NB�#Vѿ/�fUŠ���
���6U�0/Ō�/-O��Pf��xi�$�����{�r&P��	CB;\M�s���3�`��i\'0$�W��$��u��/!@�`������O� 4���er��h΄��L��<�P=���O�g�㤮��$�Ȅ�A����y��<^		7��A:���q�/%O6#L �)N���������ϴ��^�k	j�}�zN���Ի�1��I	�(O+�w61�Tq5|8��IQN̉C�dá�N�S�`�#��D�
��dShC���hݖ������B�
`ďE0
k\�ƃ�4���v���鶮�v�f:���A6�/��1=�F�=l�2�v�׀����)�hO�Z}��Yv�	�PS3���Hh����̖�����V*a"'a��)ȅ�`[scJX�a���[��=��<p�|�����~��%�n�&r�
�b�v�('!?�`�H���̈́��ɐaۛTw���aX�@[wso���˵�s�|����*$�4�r,��d�����4�P�@����RSk9	�Vߔ�Ú;IBā������:�,��?-���8B��\J�����z��柉_y��5���Y�.O�rrv�r��MwNsgI�?nM��j�Ï2x7?&|ʥ�V#�"��eH�z~���^�a����/�����$?YèzX�a0������cN�w-��T�AVBP�`�F9��j�N��8 ᐂ��la"a�ԕKD諏�E
����S������pz�q���=�(�t�b�x<���,���/iC*���S/P	k�1!~�����׸�#�� ῿N�%<�b��Fh	Kh�׈��$�o0�o�;u�B��̖|o8�_�_�#�*���_����,Fgh8��n`Y*a�B«����A�/֐���ZV��^y���{o�Ɵ�m��z���z<��3��ַ�ﭯiC
��S	k9	Y��t��s&�8D�@mJȡJa*��RB��VB ~��W���z������=�b�������'�z:��<5�����z�Ǐ	1�>��f��P8�<33e��jdE2Z#"	��}]��H-��mD����N��
�u6BB�y�ӹ�FR�H�g�C�g  �0&D�z=���e��l_����|�O�t�*Hh��!+�WUT�ڡP�
$T
�5���g==��@[�I���ev��8"w��?�h$<�ʝN�"	�����\xNj'w�
�		��M��>�GJ�ZC�`6��$�
Ƅ�c�
��)�[�����1�_z���[O�&��M�,T�ZC.*��[���z�{�������[jN�p�;b��z�
fwf5�3g,����cv	���ul��-�<(�vMJ%�e��GS�SN*!H-n�y�z	�hnvtW	?�Co]��K���w޹4y��y,�Y���Ix����/C**am!+a[����
ӏ�sO�՞�h�;�1<��@�� !����d�E��?n#�\����;v�Ĉ�����1�;^��h3�gBH{xmpш���७oqw�b֣���qN��#g�e^�8$J<;��p�JX#�J�dP�5c��]˸���R	;
e� "���>T��ײ�(��'�F�Ix�l������W�6i��
�SqRB{,2������p�وV/!��B|��S��KnabF՞��(�K$�U
�C�M���$NU�s�1�HZ�P`�N�ӿkRB�FN�~����&�[tAB��T�TL��&u(����	3f���$�w젎L�d�iDIs�(61�,����0���v����Q+$Aw`�{(���/�D�4���*w�(�
T�%���њA"�b&Ԙ��-���4m6W�	;x1sy��oP��
$�-@��W��p�bk~�9|ʛ}LoejD��Q���������[<uŐ�0�!��H�!Dx�
����Hl(4~�>TC�։9�����S&Sꂕ��ۈH$|��*t�q	]�$�Hu�T�V���*D7E�(h���-	��E�j�y+S��7CX������DB!�1|Ď�<!�(�J�
-�
���b�˗��|����2�Zݫ���d5�sUL�x�y�5|�
�Cv�>c��)"a�PV��
�E��L((v0��J���#�����$,~� ��5�,ֳm|ь5�!+�LؠH'fr6����J��.jnL�UDU:��(����;V�v<�A�Ԙ��K�a��]e��L($3aOFbY���d	��5X��FB\V
U�wL'f	�'t�@!:� )!i�(!	>�2��=�ZQ$����%�1r�3�A%lHd$T�T䟟�W�P^*R»+���pr�`a�d��D�
';1�DL���>�j���Hx�3�R�4���p	���T�ƣ����HAw�	e5"%�V�j$4��tb�l�*&���d�SN��{�$ܝpG�΄{�^n���;�v��J�p����ixX���eke�i��&fl���+صbX6�h���b=Hȱ�����m�1��1Z6V���J�p�H�?�6�Qi8İU���LMI8ZB�QRB�V.��Ǘ�B�Ï�^�O%�;�°�f��CNB���;�}���ީ�%d���T��Ξ��.�p��sav���d�d6BBF=&�q���q#l6RB��[U���_���z��JDŽ������Y�c4��o���o�Y��$�d�L�>��J�fgC�NR•h�3%���'���DB.kJŹ�Q*�۴�L��BR	-�;v`wǪ�y���9+�:aC"/!����1
��A�%�=��:L�ظ���l�D"�����:b��ʝ�Qg�s�,��g��-9�LZ�f�/E�O�w�=Ӷ�j�^0���MS�\�O�.tu͹v�ӻ(�2�p�~u�/!$�쎎�z6���	ga��6%2��
$��
9&\����AB��T\6��C��F���c£T�'b�`L��|z��]֩mߖ��m��R	�rB?4O'W�c°�!9&��]Y9!2!��h���$)�
�GG��R	#�SؑZ��6f�"Ƅ�"���k�g���qc3v���41�Ֆuxy�y�����e�Sp0�U�ekS°�HJ8
:�N:��E$]qF%cB(�+��IbL�2lZE�		w���b�"���"��sǫ�P?�lm�}W�ޏ���!>zSoC"�Nέ}.����$dU���pvv�W	gp��4B�BA��}(�4
b�b����w?b�J���]����Q�D���خ׷ե	�����y:1ӈ�IȪT�����*`��$�!%�Q�] &f��ZX'��8ˆ��N0
L�A"�hw�)�pPY �B����!Vԅ�P��
H$$�/�&��R���<f.tM���Wh&lD�2!<�[�n_,<Q��'p�?*ѭ�-��ڠ�X��6K��d$T+Ud�k�/�A$\s5����HO�hH$*$���;M�X#�h��L���N)�\��D��,�����&	��	�C�M��OHBo���I�h�K_�-�DW��aZ��LX��~]6��Rmw����{;~����X�HK7OstG�Qow�S	� d2������e���<�UH(�}+̈́T�;9	ۚ���nF;TV#��z���̈́tLH�/�(����B�3W�R�B�X>������˄�}v4@%�s!%��ڧ�-`�a�Y!dB�FD�@N�I�jو�˄�}�P37HT�u�QP�RB,�G�:�����jB,�Qa�!�!~�XRs��+fT
��*'Z�K������{WY�x	E-Ž$7��؞lx���W�B���኷�J6`pRB����P�w�l��K_1V����)6&|�\Y	�$R��
�2��h��T��%�"&Wi�oٔ�-Mضd��E`+� �q�BE~�-	����ɔfvMiRB�ƣ̴�%���^)�V��R�������F��	�U|��"����xO6,-�/�������p12�d
�-fY�=mOi056���iI%���6�%q��sQ�V���N<���;�1�<+��оh# ����M��<��>���p ���B�NP*�hP$�Aa��Z���6l� �d�hnyμM�GYӎ�*�`�fɬk<p�		��_��=�uٚ{�	�-\��^��j
9&%<z���5QG� !>��F��P�Q|'��_���"|�o(3&䖽ɩ�"��c�t���,{���N���/��{f��f\;�����g\S��pɮ��	����&)
�dB�/��+���n��׮	�Q�&� �T �P�#�A�R"�$e$��\N<؝�5K�`��6<G�.7.�%�{�4���^%�����ġ��Hqxƒ��"���i�XBB:�BaH	o̎��]�*�k����T��"ŏ��"y	��&{�҈ l2M7e涉.�)�O�4pä�>h?��F��p	���E&f��>le%�XE�NF�A���������e5	%E%$KH	t�`(w4*'aλ���D������C�O��)�FF5���TB��y��J$,+HH�72"!O��LX�[���d3�
�8R�2Ruc���h��'�R���KHvG�ip	+}S/����$��3!�P�O=T!J��3V�(
)�>�G���G�J(�Ṷ���Rf�TÆ���A"�T��(���bFɧ���x�A����$����>dQ}b��a݌�`��o8'�� :tL8<a��1��(u)�5����%Tʝ���JK�ᛯKy��Q}2�Y�Tx�����Ov8�|a�`�t�+�r�B���̎*I	˻&����������dr�J	��6&�Z����{D�7��	��p�Iy�N�KYB���(��T��J�X���b(6�����z�ש��!��HO�=�D�1H��j�%��(u΄�������Ra	�P	{�a�H<�t�O�K<TR��������ZB�6I�³{^I1�Mm�B���Ϣ����uH��p��wI�@Be�Tb	!_B6,%!8�ӗ_��K����Z�ە	�Ù�g}��-:��SAfǃ(u��� ��@/*(JXF*�PL<�B$�'� 1S��UZ�O�����-�?Ʉ��B쎊��Ϸ$$����9,�4�`;�7����Lw4���?���fB���K�
Q��,,��(�sW����bcm5�H�5��fy�x�q='�ܔ($�6�B(�(��d�w~�3?��k�|�=s�g��f>}Ϝs�+��L���	�� AX
@HD*=�0U3G B�0�o��������aiڶ�k ���3�8�ر�K�>D0"GU��I�b�8�؂+^T�念�<���ݛ��5��$�cϋ���yAh�/LBBؼ�LGW�>*2�=F��X��`��u���d����׷?~�y����7��j��N]![V|��@Xy�fft43;z�Ϛ*��(	���D�䨂����
���I��guIh��w�ɩ��¡SΟ??�%J�=�Fݨ�3�P/�0_3�`D[�`��E�-pʝ2P!�@7m%m�����$L\A�Dl�1�G�7Ds�(��	��o;�#�,X���՚�4�C8l�w
��*T!�y��U�2P���[�~$�Oy
]A>��R+�m� �|��#x��Yy1�F�'ZFN�W?gE�1�P!���X�SU�U�xtW�ʠ&	���З��R�����Ds�ޞ�נܽe˶%'<��b��~�����κ=F�'�E�q����>�Է�b�P-F��C$t(rؙwUά����$���$�w�ʴQ��kĺ�ؽ��͙M���7.F�O�/G�h�G]��R�$�=N���
#�Moy�+?8���a��]eA�$*-5	�0��4Nl�C8c������3ѧ�;O�\�$7..<5�b���b��IW��~Lu�Z��i��BOGBy)w;��>�r�k��
hA�4ׅOX>��l���K�D�v��(�q�ر���,�	QgvF'�oct��D�B*	!�F�]VR%����+�&�Ah��:��i��3a��;�n\�̝;�#!���;Bb�/��P�����Z��t�u!�#�~ĭ�kM��!�v�6�0
K!�����ع0�$<6n�C7�VG�A�$a7��C��@�I�Y���h�lq`�0�K2
�Ç?�o���}ѵ�[��l:=���-�����r�0Ӎj���͵�EQ��9W52A�%!���iwEW����$�b[nZ�i�tTj��E����$����Q�0���O?.�X�_=9~��٧
�Z�(	)䠂�B
 �TpŁ3+��0�k2���e3��\Z��R�c/]�O{��R��\ӆ�%W4ǟ�kB^����n>�є9�<�=~�����*F���|�pכ'�ώ@.��3!�654_஼Z3���)�j���OXw�&
��B��*�#K�⸫Sq�����X��X�м�T}
r��k����c
�*F4�,�qn�n��Շ���z��q�0��@��ٝ��BT�:J�t���\$G�䩝��<��$�w��4������8	�c��1�*T�O(E-,�w�`�������z!b�6�1S#
rz��BG�ֽ��,�8Z��B���D
9<SY��>!���G�d ��ZN�nQ�!��n��~e�B'!]��#�5v4-�iB���H������� �E���+kY��R!,b�� �d��Թ)|��<�Z:mY@"�"ix�w��,��@<�����4�Šc�憗f8sW��z}ڡ�	D��c�'�ۡI� ��/!$0)Ǹ��CG�P.��e6��=	�Fڰͯ�U_!�
X���$i�>�$��oQh�0�}�@�^Z��nơ���}B��B��
 �1w<i�f���ǽ�*�z>
K�?�τ�'\׊�H�@XqA�=�A������	*JB�o�Su(v�ҹ3�7f����</H�4�?��ca��3�1cF�׫E��~�I����?8����b��2	/)y�O��LG�.NBTs�^��+r�
F z�0��
�B��/�-�X�����0�@�4L(��������� ,�"O��������_��$aIJLB -MR9AMRa��r2�������g�BR)�z���wGC�#b���}+�S��M�՗�P�Nߒ~�g�b��Qn�*u�[
/���>�q��v���|7m@zma�5����=Z�Nc�D��NG�	D|���s<�
B;�z� tC���)��B�Y���sWm�°^�S����[w?D)�S�L�ݽt3�����@z����I;�A�$G�$��AW��{=���9�w��M�$���K4� ���M��;��~����m����P/6x��R��ޞ=�`�5��󄘖�T���g�k8�t�	{s4�`���I�&%,��I�|���&�y�v�`yi/�^7�R��36���!�(�̄
8�3!�[��T@�l�."���r�P)�z��R=I&tR)2��D#�G.:*��L���[("m[�!�R��(�n��sL�h�4L�JH �
�\��d�����n5�r�3!���i��Q$C�J���RGU=1H8g�
�D�Q�m���L$�J���n�9R�p/>C�����%܍Sl6`;C
����9��o
)
JH�:(!!�A		Y%$�;fi�8�����|�B����V��k�A�-�!�'�j���H�h��A�vp5�����"�;��7�_��ϨA�j!��A�./8�3��1cD�����;&�V��=D�Q6B.�q�PF��d#l�^�}"�Q��J#�{�Wd��e+��<�qϓp�C� �}��F��[MK��|��{r#�ܰ��� �nQ�:��U�`�P�4B��޴��[}A)qt�9N^e{߻-�Z�]rT��	*4"�(�����4��ZT�Ɏt��kn�'�}owy��X�P�4�mk(�?"܌��H�w�A�f��~�a�K9c!B� ��s�'��]�]~sO�z2�\��3L3�B�*�A�{7�烺}�c�^��/J�m�Cc!B�GH,�Ya���V8��
�O�p�2C�����!�/��'D�(��пCרCm���D��p�[�i�T�?(-��be��M�4K͌q�`��Ҡ���Ja7Ń����Kot�C�[c�����N���{o�7K�hq����w��Qt����O�X��?#���!��q=S��Z?FC��f� �c��It�x.��R�����1@�":B��ukt��EA��y��d2�j,�&@�":B\�e"y�$�]��%!�,׵������Ȫ�
�`�I��I�bB���+��]EhiE��������=��3��޽�`�} d}M�V3-�]�FB\���k~I��x2K��f��I{�&���8��U"F
��ȉ��"\F�BF�ώ�ە�U[J�[BC�/a����Q�g~��c'�l�D0<]��c�pR%�l�6�E��H�B6�{Q�O��v��疌pc*�9�)�UBNY9.��$�ey����Ȋ|&D�?n��=~	�$@�*:¹+�Bc^Ҿ�_2B�С����"}9��3J41}8>:�D,�J 7�Y�:&������#$�B�j%�$�z��93�y�b»?y�+NL��_�z:kB�8q��>F�2��P�K�E�$��‚`y�\�BF�i���CJ� th}^%*.~U�s���b_YDG(��l�����[�e?&��#/���k7��p��a�	�$@�$�HH�wz�!tɇN�>�%)r����$��P�����'��Q��T8�S��t�/�l�Y��Z��&TE>"䔢ȟ��e�h��Hh;(��x�w�V
Oa_�DGX��Nd �#��j[�a�J����GR��6�.��`�b�f�6����Tj�G��M�3��A�y��]\���_|G��?��� d����Z�՚��ͼ풪�`?�.�L�#�n-�,�:0������~b&K�-H��l��Q@��!���	dE� ��&��
��P�BF�6Ԍ�p������>��>���#,��Db�*Z�VwC��I�BV�J����B���V_�0 �c��]� |�f��oYT��� �_��Ut�%5��WP��/W��P%�*�%	�.@�(:Bq֊�-T�]�;�VUh����L�#���ggM\�Z���h%o|]nk�B@��!��zIy.�$i�K%<$��P�BV�ﶆ5�nI"�/1|E��!��ՌJ64�����P�B6�ׄ���tW:���x���hlB=�DGXV���F�3ߎ
�¬z��Q=�D��T�~��?,k���y	��bB�D��E�\*�E(�+a�*�`M��!��_�=-\EV�&�D"� ��Q]DEHR3�̂T�t���2��9��z2�~{¯{ɶ�&rvQ�2@� 
�߃�[�:@�K�"B]!@�[�"B]!@�[�"B]���Oq
��B��B�mS�d���_����Fv��%�
ea ���,��p����=�ɃA�!����\TB����f2@�!��OB&@�6#g�9�!�4� ���
BPoB�[��zB��ZF�k!1Fxn���w�3�s���ÊFR��!�,�=�R���SVt7�������[¹"Ж�no&��3#�\N|dZ;���H�R�]6��s_�kN�Z�o�U|�y��'�y} n����q���q �6�ŕ� �!�<��M���t]���rc���ċ�S.��Ax~�Ƴ�� �o
sΘ7�J����؁X:�y�c�#W���Ax���w�~�ƃ��λ����M�^�}pm��K2>�,^x>y�!A�~6�s��t��~�?>Q�^��5��_�׃GrJ
�e��Z��������7.�"�/ONܽ|�3N�{/Bb8:z&|".���D�`���Ko.��&ÅS�B���[A~�FY�u�=V�c�Cg�l½QB��ϫ8B��͜���&
��9��=Jş��Gs
`��{;w��`�q8���d���,���{�xq��EOS�W���B(�ϓ%d��@H����wk��~�!Ԉ҈jDiD5"�4"�BB�!��F���P#BH�8
5"�4"�BB�!��F��F�P#BH#B�!�!Ԉ�̌�K��=!��Q�!�!Ԉ҈j�<—y�wan�?3-���|>4"̍�}��Ǫ�F��N.�u6��8��1�	[??�}4L����<���IEND�B`�themes/packs/default/images/ic_load.gif000060400000061373152455753310014124 0ustar00GIF89a@@����DBD���$"$���dbd������TRT���424���trt���
���LJL���,*,���ljl������\Z\���<:<���|z|������DFD���$&$���dfd������TVT���464���tvt�����LNL���,.,���lnl������\^\���<><���|~|���!�NETSCAPE2.0!�	?,@@���pH,��Z�b�ǨtJ�.<���?��J._�,l�E��56ۇ��go�pCrt/�awe%|kkZm�^�b�����Q"0�0�~o�Bs�����G
0�k�ln]P_`���7��>�������a��/����/���ɣ�̻�φ��7�(ڲ�}�߼֚�/�7w>(ٱsG+�X�0�EL!iт�@���
P�bg�2Q(TT�A僴i��p₵*0d�c,Pj�BȜ��sY
�i�
�25�)�B�Vb|�����T�H:�fG���AW�j��TغiW�	�1W��^Υ��[5f��C��B��=��������GXe���H~a�7rd�2[`�r����A�A�t_ɀC���sl؟w�"����}E�}
���68���u�m�`.�B��vD߀(	
�g��]��㣯H�C�u
׭׾�>ʅ��`x?<p~^�BR� ߀+DH^T� �%0(��F��
<�
��h�yXix��� ^�
4R`b�2�����;h@#4I�:�3,��;�@$
DVICI��O:	#�I���eY�
Or��U��&�Y�kr��M����M�9��Dl0���:y&�����#�2p����^�A�B,��B:�Ld�i��i��.��^
+�p����+�#lP�<p,<��=�+�#p@�FK�<@��$����#��Ԇ[�S���ù�l�CT[���k�7tЃ���	��� �l/�=l �����

�Ё��;�C�2l��-�|��2:DK�0K�@�'4`s���t�(�r�2����ls�%clD.�Po��TP��G'��\*��
�-�
���X]Ck��@˵�u�P+�����%�m��G�O�}7�*�P�a/4P��}~�ʝh6�wk@�:��rv\PA��9��E1@݇k������ܚA9�^��D^�S�`7�sn����d<0@)�{���7�T$�y�w��	X�@���#��@
)܎{���v|��{�}���HA�V�� 1H@�w�8Pw���>��Ůs&�`�l�?���@�D�	L���7����D,�<
�����C���(T��@�Q�0�0��
�o�.�C��p��{���r�$�_�p��0#�"
��0-H�ai`1���aI��TQ��ָ�8l�6!E8�*ZQ���^����:�!#�C�����$ut���X�;y��`)J������k�V0JN!�	?,@@���pH,��F���! �c
�.Ǭv�]���
����3���W��B�0<j6�A�1/p�E	(�ux�QQeh�����?4(���{d~����p
�����b��i��o$8���uuya��g��C�E!88���wy�}��D��λҿ�Ž�{{���?��ͪ&��ׯ��|�r�R�Ň3E#!�a5k�0ȂA�����j�y���(����	��7��@��>H�f���0�G͚�$��`�S���\���i�X�xvS$�;���gՓC�وʵ�Ȝb�5Ҁ�]�hS�H���ۯa��t�v�EKc@_#9��,8��40���P����;��� �k�?I�����)�Y���v#��"u�.���E��U��w���-����s��7L�����/�K������]�߂����1����+�G\z����7��,  u�Ex„��`螂5�<���^p~�ĉM,���G<@�	��!�"����0��c�7� ��6�A:f����	*��S��1:���#J@�6�ve'hɥ�"���"�9��E\���s� A�^�)Bhpq�;l ��[*`�wJ ��}
�'�����v*J������vz�
�**�2�PA�Bp�j���0j������`���nzB����
؀��P���^0�
4���ڍy��V��X�2��*��A��0C��V���r�m�x�����ú쪠�������'���$���W>0��/[ ��:�`@�:.0�0�B4���g��I*��!ϰ�/�����~0���rEԀ��9���c~0AD
����#���&X`��-��P���	у�9��][�@�a���Q�=�!��v�9��c�B��=�Q�|���5�68PyigrA-�Bv�=�\GL��U�.D@�&��@�

t�x�P�Eq[��������W@{�۞��s��W.��>A+d.�
4PA	(?{�s~��n|�B����>d@!D�C	cG�|9(@�W��y��\����
x�������/�A6��d  ��G;ڡ�s�CD
,�:�a�~���c��� �!��Jؼ�ib���g��/�?(�8q|50_�֗����!�0�D
ְ� ̡
X���/@���#nP��ZEX�
��_�yAB��-r�	�an�C:��cQ�����o�?��l�{:A2��t����dj 3Tf�+A���`;8�&�!�	?,@@���pH,��F�&aPO`��.Ǭv�]D��0j�(��4��[p���'#"���0�F�!� 	/q�E)vv8OOPPgg0� !��
$�w�b(e}j�� ��\'$���8��d�~��0� <�G���x8�|������05�D14�Ѻ��a��������4����z��'
b�%��p�
4���oݯH��l���C�b0�ȏ_�iv�a��
"�Ȕ�c�Z
X�i2��]L��eFm�����N�<{N��⃡6,�X��"��x�d4��0��p�Xpʁ�S�]'�{n��Eݱc������x���<8h֌x$�����[hre"9x����p������2��搙�Sбe��=�6�
�u���"ApѦm�~��ɓ��a�9���?<�=dCL1�,g�]vx�������}��^;�x�^Y �����2��&_|7�pC|?<@�5aC�
2H݃7�����8����>���*~PA�0�8 'f��8>�B2�(�?�hB��u�b�^�>6�cDj��
Pi�
Ƞ@�YjYA�Y<p��d�y�[r�e���YD�p^��*���nA�	�yŸ� 蠄��'}��g�:h����
:áD,��|Z�覐j�&�p��~�����j�q������)�ڨ:�C�
q��{C
�������.�������!�����U+��&|���Pn���
�÷&`»&D@��[��P����k�&�p(�+�[�����/�4lcn~�B��[oe>0�p�/���O����۠��F��0�L��
����K�S��s�!:D輳���'-�+=1�D����L;�����`v�C/��iC���]�uF���m��TcmDp{��>���}0�x�=�3�}�4�����
�]�#0�z�-��E� 8ؚ@)�m���=�.���^�
|=xᮿB� �h+��A���{�`H�n}�C���l�C�ϼ�.����?��	ԟB40@��A5�A��-oy�{ljQ��/{�_Rp�� (�+P�|�;_�F7��š��^��Ā�H�1�AЃ,���'��1{�`�7���,�
=X@*o��_��j��-�`/�D%v0�,��7��g	A�8�
��J�Yk���o�K���>���`	j����=���&��6�O���8��u'��
�#�Q��
�ҫ�k=� `����<D!�	?,@@���pH,��N�%�p8�Hb�5nǬv�]%$$��	ŘQ
�,���S�QH�q4jN�k,)/r�E/�$�abe8i~kk0�8��
4����Od�h��0�0�\4��xa�{}���;�G=<͹4мa|������ (
�D	,,͸юzP�ؘ�� 0������w��ܭ
��z @@a�-"���(h�$��#([+n� �S������42,��DD���`��=9x�R"�~�XX��eA�@*I@�8D��ĕ�4�p(��`LM�-j)غ��ъz��aB�ž�ݢ8�ŁV�B�Jd��8!=0$d�2-Dh=\�(�Y��`�vde[�����P"F�6�B���\JH���k+fgQ������ @��#x�5B�H�&��O "�s-P��|2�c߭��w9d�W��C���'�����h�u�g�z2����€?8`߁�ɰ���h�/�<��j*(�y�a��<��C���$�p����Ԡ�*�b�X̘�����)�c�>�$d7v���|�Jf�“ZH9�`Ni��@&�;��a~	�&�)��yD�a�����9���=p����ph��2�Å��硔"jA��f�F�Czç��&�jj�ur*�|�j�!�Z�&X ��?�����zC�Z l�\�+��"{h��:�
���	P{����0ð6�`A�68�	�X[�'|���:�s�^p�	֚+Dݺ뀾$����Ko��
Q��:���'�{�' q�'�{@�6,������O,p�C��L3y�ak���� �<1,L���%�l��@0���r�9��tO~���>��0�Ft�t�J�u�'�
^G��C��J���D����5�>�|�|CL�r�Z��1���,���r?�u�G�����1p=��3~��r�-���w䒇C	t�7-,0C���ӫ��֑ONy	�P@��0���n��_���ߥ��)dP���m0����_pH
�GG`~���Z<p�=0��_��
#R����=��A
P����+�:���
@~�˞�f@�84�r���X���%�AD؀��(|�W?�-x����?r��@DX���p �X8�UH������8�!	}���`����T �CsP��p�5��	Q�@bo�{�
lr��P��G؂t�=�@U�=�a��A�(~0�
���+ʏ}B��j��(J��%�d%�7L���A?�H������n�d�7�
�l6A!�	?,@@���pH,��^ƧQ1(�B�J�nǬv�ݤ4�0�A�AIha-�,���S�pXxqJ!��8�8/r�E/<wwyzg}kk8�	��
<��,defh����((�\6<���a�g��8��(�G2Ϻ�,�c{}�����(8
�D""л�ԧdOfi$������?��碍�s*�$@�2u��
j���ܳ]��zL�<L�t��S	2(�(w�(u�d�p��G
2(�R��=�0��J�Q��.F� �E,Y�1�ϑ�"��@�
*�M��b.="�9�D,�@!���`�-b%kN����x�5kP�\q(��CE�)z��v�����
Z�Р ��G%��G��[���9Ǒ&�8v٨�	��������0@%RC��&�M����
sg{�D�",8�{��խȎ�;:
i������UxM����y�{1����
C�E�q7�4q�`�������
pN8�d�a}��[,�^�$���`��*ꀠ�0j�B�D�X�&$�����X$�7�`�	W.�#`Oj�ÔD�`��c���r]a�YP&�d���8�`�v��ߜqD�v�-������.8�
�>
鉆Z�(��~i��>�B��e���:j��@�:�/��A�� 묳R������!�0k�.�����B�Ⱦ���2�=+�ԾJ��b[��?��Ǿ����dnM�)p������$o��ޮ����/���{��+D
��p�!��'�G\�!?t�0�
���> q�S|B7��l[�7�pA��<�'�A1�P���2�1��(Gp3��	=��t��AFW�s1$�e�\�4�=�t#X}u�	$�i�^�6�.G=�8g�u
xg�s��v�M���i'�B��A�9���
�	rQ�݇��9���;������7d`xފg�C0B�e�|����N�ߴ�ޭ��z9��@�\����:�'Py(����}=�-G�,���?�w�pt�9�þ}���[w�3,����^��ph��W��U��_ЁL�+X�&��Dp���BDZZ�`x�{_� ���(�V8�	�`0�7�?�up�]춇�ȯ&�	{@����\@�dH����8@y?.�A�
UhD$N���_w��}<��_I����Gt�ic(��w��A
�@6fQ�[�)�%.��y��E��+$ah���C���(�"±�/�b��h���A�Ѓ#������'�lq��npIO!�	?,@@���pH,��A)b1�x<�A�nǬv��,��H@�r�,��I����Ӱ�$xI�,0�Y,k4
/r�E:
2
w"cP<h��44��*
���{e�hj���$5�\>*��2wx�|~������G�����b������$4�D�:������}}����$���?:���R]�f��m�(x"��6>�J0e�9�N=�g̻W���#��!�*X�Cڹi
4���"�0�p����L�O�;w�4���/
z�ʲ"��n@��C�8;,4����4.FH�s ����0��.\�EJ��?#��'�kW((�ؒ@�c���8���[����-,��ۤ��
*9!B���(b5�ƒ�۷I�0Cu�&6#F,E:8X������x]�p`c9��&D?�A���֯# @Y��3w ��#'(�G�)C|��gCv�eтu����,q���.xg�b	�f��z���x?t�(�_j��u"� #��昢3-f���Ɉ0p��>$��9z`�Y��DVy�
��e�Lzp�YPP�@�Y��e�ȁi�d�P&���Z����FTP& �	B�:�p硈�Ƨ���r�@�V@��(�)� ��SPZ*�olZ
��
(��+��Z �k���+���h��
�C85�,t�
��V�,
Ġ��������PB��&�.�	|-�Z�B즫n�D{@�֪0��	��B�)T��R�7�p(Qm/<�Bg�j�GT�������~��#dr,��&� Q�E\�1�-�P������2��C8�s�p��&����E,�3�G��¦Ng��!4�Q�`� v����Zs�R�]Bo�
m�/<���[�-�$-v��PCK�����}w�����d�-��-~�7 n�݇��E�x���g���{�@
�ONz�-�Nbe�pA���x�Y�씷��#X���;�?�3_{��C(�'\��g~7"���|�?�/q�	pB���^>�p��h���u`{H�F0�	�`�_�v@����s^���Ѐ��8�`'\�7��
� �_�n�?�at�	��P�
V����'��j.о��~#d�fp�>�.�a3x����8����P�,da����yq'!RIhB*�+�A-���P5�A���*q�X!+xA���3X`!�hE"��'���p��񌈴��ȱ��/�ẉ�2� !�	?,@@���pH,��Q-�r�2��+
Ǭv�=T<�J�(�Β�H$0e6ܸ|��xtx��	��%�<:/s�E-6�y{|g2jk�<X�s&&�:a*�
ll<�,-�\7&��xyc�Ph"����,��G6����{e~��Ǚ��<=�D
SSԻ�azfh����,��?%���D=�,J%6�b����
<|�U��4
4���)I�����=�-xj��4�����"F�	\X �)���
:�A�BD3<4i�r�.�&��tdC�J�|H�(�r��@�iSufL�s"���'�v%A��.B�U�ԅ�t>�>{`+W�$s8�%G��e��-�v�BS�K��-�
مR.:�+rA�Cĉ;w�p�C���Ê�F^8(�ysg�02 @�ܸI�����#'��{E1B<�.z�o�5��Ν;�CC&DO?��Z賜ఽ�����|�՗[
�m�A{8��qAVH�s�%���6���, �1�@a���Z�Р�~�BBP�'R�!�YX�A�2>��Đ��7�A<n1�(`�l���X"��Mj���RJ�

�p%NYIU�Fx0�o��A
8�yeL��E
pF�( `�tJg��y����pӤt�$��F��0JCPj
o`z�"�)꫰f���F�꭪�î��z�EH���P@���plu�
�í�FK@T�����ڬ@A��B@A�Vkn�\n�������P@	����z��
�,p��V��C\A	Dlȶ6 �����s�p
�K[|�r<,q
,�0@��,s��@5��r54���2p��
�Bܠ3�<7����T
�Ct���N7�B?w�B�$
Dl�t�^��˘VM61�H�_݁�p�-������^���=���>QGކw���,�deBT���E�ۈK��S�D��05�YLp8� ���w��D��/�N��=�0�!�����:� ���>��,6"�#���l���S?�\������#�z��� ���?��p��t<p���{����;O,|���
�`8��w�
^�����7��=c��n`;8�
p	^�����>�f�_�HXB�p)�	"��	N�3�!
���o� �
L����ta)�>r0?X�yXBq�d��(��-8��O{�TQ�Xl�
��E7v�,�	Ϙ�4�P�[ |�t�)>���� ]�G6�8�
��J��d⽄p�=��/��u�!�	?,@@���pH,��Y+�t�Ǔ��Ǭv�=4B��@�A5��bm+���3�,a�a�3h�h*k2
25r�E6wxbdfi�2�
%/��3��w&a|������"""
�\)�..��cegi�����'�G+����x���h����"�<=�D�SS��6�yŘ:����<�	�?5���a�*U�*aR�f�Z����!�"R�4iw
��0��	
�L�~�(r`�T�0}�!+�ȑ��HC��M\�ҟ�!��H�ů�&`ɲ��
[��T�b%�qND��4�Rw�b�`t!��r8�ؕ�n�E��٘=DX��Asr�ڽˀ��[*���RF��1C]���m@ˊ�''U
s�f"te�x4
5�|�#��͆���vܵ}���D&����ъq���m
��ɐ��o��C��n��Ϳ��YȂ��OG����0x$P��_
��P�Z�@ÀR@	qA�*� �	@aTxa�����a�-&�B#j��8�@	!QO0ˆ��5a���H��~�ӓ/��[�Y����Kfy�<	%O�Q�Y.�8����e�OB'f>��&�g&0›9���s�@�x��
-P��}�Z�F�Ph�ib A
%d��m�i`����b�B��j���<` 묲R������ݫCH���������*��� �2++5D[C�R[��Ɋ�¶�2�-T+�������p�-�Ѐ��6�n��@�拯�+�������/�(�k���+o
<�l
�C��pB-@���-\ī0X\�ɉ��q-tЁ��RP��&C6@�8����?�l1Bl�����*��?#tK?<�2�Jg�«<��%�,�I'��h3M% @�PC�d��w�=��bV��nCCx��#�3�; �m���u��C�O0�>@���v�����陏0�jk'�?�cp��c>�����*�N{첃����y�3,��	/<�?.�/��7�|��K?<Л��ϰ�ޯ���3"���W���+���">@�"�����ط?�m`�pꆀ/ �� =
�b���A	N�8�n���.l!3HC!������=�9���O����-��?0�A7d���>B0�"/P�x�7�!Ǩ�(n�U�bO��PP�7�p���%fPxd�v�>�1�[���(F2�f,��hB�0�*<A'���q�E���"���,�@FH= ��$b$��B9��N|�&��"�Ћ��a"�����%)�!�	?,@@���pH,��E��8l[(�kMǬv˽t.�cl�Z,&�a��Tvܸ|��$<W^�tD�&:�:.-s�E>�>ycOeg&�l�*5��s1!�x{b6~hh���*

:�\!�>��z|ef����**�2'�GMS���adɛ�����2*#�D1M�S���ݗ����
2�?�]հI{��d@��q�dH�'!�(F
$�� ��l�VU�q��M�'B�R#4rd�ۻa�\����B���L���L�J�DH�hC��2b&,@�/����Q�J���s!C�	Rh�X3[��.�%CXx�.�U��S�7^K�!݋+E$U*�Gc���@�,Z�3c$�'d�����:�Aڂ�
9rT�u��D.�ݸ�c��P�@jՖ��8�ȋJy� M7X�,������Q�9nX�hT!G�RW����
��Ç�uȆ��[G��	���,@D����y94П�7��0�����O�����
j�BxVh"\?,P��+rX�.!f��&2@��1�A<��a	 Ƙ��P�H���5T�d�VЁ�ZL`�H�x�	5t���>�G�"�HÙgR@A4P��^zYߘF��&
j�n6�g�5LI�-�i($�0��o���k�q��$ ��
=4Ђ��YX�F0@B��Z�C-����ӀZ���+��jk�ٹ:���뚷ڊj��
��&�,=t���[��,�4����m��
`-�K�x���+�Z[-2�୶�0�Ş����K��ۃ�0��?4���8�p$����p������7�g<��'�*��� ΀2��0���
-cвBpr�DO`�j���>���m��#�0���������3w6��V[�@t�
���K��AldOP���)��{��sE�=�t/�*�;��0��5H�p�܄^�
+��@��ޠo�nun9���q
@�� �7�N7�+������ ��9�0�'���;h����{C ������L�8H0
wg�@��3�'�������5 K��<��'8�
��@@����,���6x�\��`` �?�� 0��p��i���fx�<�/��w�����;�V�ʏ�2� 
mhC� �:,	MD耈[��aC��5��
q���0+>�"�@`A�<��K�z�x16�g�ᒄ�C�!��@���ֱ�h���}�yA���D��O�@͸�4Ƌ�
yH;��e����N�7X�)O�I(�C�2c,GyI<jR�hd��2�ьXdD!�	?,@@���pH,��ͨ�˅�@*U�-^Ǭv˽�
�H$	�}h���r�Z�|>�,J�DX�j.km6=t�E39)y1z|ePP�k�.X�tS�1�c}Oh>��6��&.�\-����bbfP����&��G%M�)	��a��i��6��&&&3�D39�9Կz{���m�6���:�?&��<Tڞ��-�8r�t�H�HԀ	��uj���4�e���4Du�B	��
�!E�
�0����q%��0T�?:\�|���j
V�:r�E�|�Ɲ<YT��snT[b)Fwkl���
�\SjP1W��
\>�1Vi��M*�H���V�s�P�@�3-����l�Sӭ����b�
dx�r@gN��_�\��
)=��ZF�#:��\�r���|��X�b�2hkx`dC��9OO�}#x�^C�N.A�Q"=���-�u�#�.A�
�?th1_|���g��#���݉�^
D��|60^`����^{"�0�H�x�1�(ˆ#J ^?��C+f�!:�& �&
`c
BL�Î+�H��1f�6Ƀ�0@K��-Aj1�E
���V>p�\6��yQf��<�i%0��J2�&|aÙg��A���k2	e�GtP&J(>,0¢��&��q�J)̰��2G�G�p)�`�p�j��>j*�J���j�#�ZݫE�������3LP,���,�ʀ��� ����:<���<�0�Ԃ;î��
�40��l ��~����r��hp@�����^@��K�|믿+@�lD<��f��+,�����C$H,2|���
�`�<P@��.�qu;p�A���#s�@� �)�\�pj��$0
�J?|ps�T�`5��N@��>@��G�V[}үʀksݴDܐs�;���XG�8���$dP�u~��Fy	}�7�lӐ���}�'���~p���|�M@�~v�_��u��
8�:�
+�ٗ�~�'������7������y���y'p�¿�z�(��˧��7ܐ�3�0=���9	�m����
Ԯ������_=

��zw�������Dž8������Yo4t�o���o�/��ꆰ�0(���WA�Y@� ��P�p��X���"�B�P#Ԃ�8H��p���>B��?AQA"��|&H���7CF�����}�C-j1�ED��#����"[���-�q�Dd)~�/����G�1����ڧ�(І!��"���,n����>D�;�N�l#!��$.JT�d�6�FQ�4��+#��D$+�����1-�,Ѐj&�!�	?,@@���pH,���bP�eR�L�Қl^Ǭv�}�Z�Bn�)��X,�
.ܸ��iM�9�z�%�!�s�E
%%abdfijl!>X�s-5���x9Ph��!�>�3�\

M�S��{}�����7�G-�����bz�	�����.>�t-�5�Ԑ�|�k����..
�?���ӿ�̴zu	-��9pP���}���k�2P*�6O�@m�ѡd����U�P�ǀ=i�4+��?~�q�B���$!6�8�ƀ��\��Bz�\�a��9^��@򤹉= ��"DDžmP�`c�0a�4��q/j@��vmU̴,�h�r3���`�ZU-��l"��#2�,��[|Dn��y�	L�2aBf�Zp
�ȇkM�6���'"'\��]�A�,�)K�m@��E��z�뗴�'�a��s:,(�q��t�?k?rÁ���5� �bƌ	�Ϗ�^��߁������ه�y#���	8 �~v�ڧ�}�<��R��
$6�����}zhD�0��*��8�a�.
6�$*��,��"�=ja�A����#\�•X�xM�A�S�)C
'���h������2��f�y�+ܵ�3p�	�28�Ýu���Fh�'�� ��n 餒��H�馚�����N�B���`��"���;���\����*�2𪫺�z���j��`��;ki�C �<+�'�l��.��D뭷&�p��fW��<� @����V{�	��l骫�%�0/���1p�������_0�'@��
p`���k�G1����,��[��x�2��:`2'��CB|���7���30 t�4��=s|C�K��.j ��,0P��A�t�8�h4�=��%��t�N�M$���
�
����s�NwM��M> �
���pD�y��7i	�.7<����z���l����9
��]���9�O��	@@��N��[��p�A�L���N;	4� ���z���`@<�$O��G��?���C�<x@��8\?��$�pH�?ݺ!��X>��
00@��x�	
�Nz��Ap����xD����|Fp � �R  �� , �g�f�(���0�N0�!
kh��p��s�����	�� @b!�Ez�;,`)p���/�bixC'" �PT�za\d�	&Q�K��	F�`Mu�"�(�%�уo!	" 2��.�b���C�H���4���H��g�E���"�*p�kd���	4A!�	?,@@���pH,���j��TJ�Fc�ؽ�جv����F�Vzιt&S�\��8�0hI���Z*�k)�)%r�F=-v`xOO}~j�		1��rM��Raydh���11)�[3=�M���y����)��%�G#����5������!!�s��Ϲ-��{P~9®����?#��=�����T�]�l��͛"@��6L1a@�r��#� a�^�b�С��L���"F]�jt�Aq��������Z �1c�J~�B��0�D�e*dI�a��|x��ł	E)����G�Dz$XX�����`�]�Y��Fه}�u�E�Zv,����щV�r �ɫq�؜"˃�3��u\��d"R\�م\��X0��h��O�Pnkׯ=\)raE�Š�]���¯ؘ~�Ȇ
ƍ3������K�n���V`�@[�b�ޏ<����,����ć��MgC~���uש��q�	hD"h�	��
;�0��zJx�	Xp�bX�'��b��p��Ed��	8^h�B���/^"�F����`�/�p�O>	dwD�’Ib��<e�P�9c�C��[�f7�f�p���i����\��'��dnrq�����'$��nR(&������p���&�B8@�*L��	'\j��lʩ�����:�j��c>ꃫ�Nz����Zk�(��
��@��Κ�r� �ϚpC��V�*�Eh ö�* �.�pC�㖫j��p뭷������
�r:��r�m�;���h��o����?�/�Dj`��K�ؿ;���U� ��l�d<o��������M6	�����.���l�7�g:뼳�t�%Mt�p�t�� �+�H�Aѧ� h_������c�]�*p��Vc��n=��d:���w㍶)��w܊������x�q3~xw�4�9�[P��3�:��M������v�0$�?���4��@�3@��WG껫�@v�� ���>;�'�{� �<(hPC�?,��@�O���N��?�C0�<�H���@8P~�c�	�g��O|���a�A�(!F�����z�˞(X�O��?���	,!�G�Ҡ{���'���0�?B�0�&��ǂ��@��A�Ͱ�6�!q����*��ir��jp��bQB'�q�'dA�$t ���K��(F���%\ 
(= 4x�?HC:���P@
�'�	x��c
iH 3��.P�@��%Yf���/�	!�	?,@@���pH,���n1��^o�:|�جv�:L:�V��k�J��Z\��8�2H{��Zk�Kj�
+Wr�E'uvvxb|
hk9���q7M�w=bz��h�%��9�[#u#��yd���9��))
�G3��M��������9�)	)��C'3��ӎ�zefj����	��?�躢��a��
V���Pآ��}��I��c@H|VUp���7�1bDh��Š �˕�םP3�Ͱ�R�������'O��MZ�'8�1�A1�
A�aA�+6d]�R��]n=�YΝS���c�֠\SF�qc܇gEFA5@�̲�pKx+ʘ3��r �N�{#�
 G�m�f
���C��̗/e>�r`G�̚7p
I�Ȧ�F�̭]���wm#5J�֍�C#ZN�q#(�f�{���|Î�����{��\�.}���lh�ރ1 q�	H^kJ�WD���8p�H��⡧��8�߇8@�Xha��%�!|�_����hc�j�b��
1:��'�Xd�Z����6ذ�5�x��*.)DP�`A���7TYb]Z1C�^zi��� g�e�xmi�|�i�!�9����d�C8�	�Z`�s
:h�y��(����wv�)����&�j*����@�ZF`����j���
*�L꠫:�j���zg�x�*������в��	:h�����¶�>˭�+ޠ��䎫C�l���n8�
�/�5�����`*�+���������陠��ʫA]<0�����3̰B|0��2(P2�*X�1� ��
�\2��#�W���
�,C�&�`�!wl�"��s�%�K��E0�'( �X+ݳ
*������:p�I'sq��5�m��tc��
��6�  �Szx���ug-BCZ�5�B�]�΃<�p�g��;�8 ��@y�_n��eQ��ތ�N:$�X�0����P9�fǽ�
|��C
 |B,0@�[�9�rh�x�/�<�#���d�B
P@
���"H ����<@�p@�@{4 � 
&���r@X�T�?�9�|$ 
P��bH!	 �>�U{�����5� !	IxB�P�,l����-���7��`�;�!
q@�F����7��Ld�u����(�"%��!2@�;Nh0�$�Q��3�S�� R�<p��n�O�((`{�F ��}H�v�0 ���@O��>^Q�ےf�$r��4�UH	T�bE��m,���g6H@tԌ !�	?,@@���pH,���i�X���d��|�جv�9m���h�;�Vg�yl�p�m����bqypN�
=;Wq�Etuuw#ze}-�
5-��p+��x�O||hj�5

�\�+�M3`cO#f=����5�%=n�F/���t��wb�=�i���%ܯ�C�;�+��vR�Ԑ�5��%%�?;���埶���%	��b�
(,0 ٍ|�ƍ3�H�#_����7/G�2=8q�����Ჳ`�D)~��Wa��FZv����}�hy�r��MT�V��M�87��p�DϞ%'v:p�Ћۺ)��1C�.��jkV��`}� �i��fѦ��ȃU�]ͪ֞�M��=�"A�,T[eK�g_�/j�=�8A�X.�-�-����q��12B��h�����zHƍ�H#��"7�_�MZ0��X�pM�x�F�<Xμ�s�~s��^<��D$W�\yr�ZvX�n�|�����>���B!�P�v�ݰ���iqA�
(a�=���a�`W
�jр�B��p�'�a�Z �# #j(������8D1��?��D�"�:jт�>��C��A�E~����d�MV0d�U~��p�g��—R~��W�t���l�i�F���	hz��&�Y$�.4�?�i(�X��襀:�B��^!&�X$����C�F
�!8`è����p���6��j�1ت�6��h���?L`���kCE �߬Z�	`�-��M��%��	�fk��n��غ��`�����J��:�;o�1�� �/*�����;A��
�/����:�0��C�o, :�0��І���*C��W^`�
*�,�{���HC�t�
�`�@4ȏ!���X+�24�a
�
�Sk`�eBd�����6T�!� C�PCM�!a!��Z� ��$�H`��b�]2 ���\s�6�	�*� �⋋��'lQ��n�#�@Ͱ<���{��w3ޱPN��(��
�Jă�@;�nw�Loa��_��(�@�	
�=�h��� ��?/C��|����c���8�@"(�B#��`X��
��k��|`<TM�r0@�7?ԏ�#	(�AЀd��W>ڡ�s!���'<��~�ˠ)@�~P�#4� �� 55��)C�ݏ��A(��P����@/�"1x�&у �y@�ڠt�)	\H?�P�$
Y(`C1�P���P��GDb�XGЉ_Ȕ\Ј�$��D��{:ʒ��E%2`�,PA@��ô �i5���1L!�	?,@@���pH,����۬�����9Z����qb67N�b<[�&��+�n_K���r���~�_�܀GpRrM�uwe{#�#U�n'��;L`awdf|�#�#�l����_OOf����==��EJ�'�]�s��d����==��C�7®�]�tv�g���=�+�?/7I�ï�;�z�ͻ��-~mqw�%ڌuS�΢|r�Bס��*
L��`�%��H��dO$g���ؠ�:Kbr$�-����8���>s�.�lp�͋1�)58�Ƈ�Z6�H���5Lò���3[�h�ʊW`m��ʇ�^�.u�nȍ��P�k�
=���pR��>ཚ���V�J��#�Zd�Z�o��5?���׺X&��\�D����~[��e�B�.�s��V�s6n,/����DF�|<�	ޟ�;�Q��j�~<��f@���������<؞~}���gӣ~�z�~n��^&�B����RA�,h�<�!���1@� � b
3��t���8b,���*^�	��� ��!�xE;�c9 K6�`	BZQ@1$@%�9���\��%X��	pi&|iDD��p&�P� t�f���m&@��lY(P�9D~6�h
�I硅F��1������Nz����@��j��6����.��抪n�B +���
�ꃱ��p���9\����,8�,�J�������l���e.x����벋��4~���+p�E	����"�0(�'dDp���@D	/���D9�
K�i���0(xP�.8`�!�T���(��A~�3�`t��K�
$0���DM�&`�	D���>����>��8PPru�`�Xg}��F�v�c��Tw��Ͷ�6$����2�d�	xM�
�`�&����wDQ����w@	(]�h����}5��І�u'��$�@�
�f�����ꬷ~��b�݊����S@I;^�%ؠ�����}�- ���GO��40�@V�`��/�
����3A|w�X tσ�h�>���� � ����'<�IN�F�;.�}4`��8�	RЂ�������.-���@��1�)\!%(\�1�_Ug���*��N���, ���?�@��4��
�@�?l ���
�O��S�TC�Ā��רE7"Q�
�@	P��@
�"[��
Q�@
�W��@)�"���� (�]:��項X[
Ѓ�&!�	?,@@���pH,����v9���8Z�ج��xO���+o��v�q��o�=���f�Z�ۀEo7��rNuvf||+��J�K��O;vx{��3+7�Y\/��KS_Nb�z;+��3�j�FI���^rue����33U�CI�JJTTS`��z{��+�3��n�/��ԆL`Q�x�}���#���ѿK�s)���7q�&�X!i�Ct�(�V�	�j%7B�v����߿��|� �G�>��&eɈ�}8���=�zmVS��^)%�)Sh�I�����rB(��4����@VЖ��>,�	���Ny��lY$n�Y��)�Z�@��a�z���o���y�����Yf��ܢs�IX���Ɯ7h�@� b�@���;�n��A�!@�M���Wf��ݠF�fbCN]�
�W��]�y�B@ N^�q�V&p�޽F�7�C�b:���\�޼{��5|P�|�X`�]�A
0�_%Tp@��G�x�$x��F�a	+�0߈����V�%x80�0��#���/����t@��@�(c7QA%��5` $��XA�F4��9 	Q>�{T�@Y�Y@�Ĉ��k"�fXa�™d�I&n��&`�C���P���nN�������fP�yV

1,����v�h
&�������>�ª�f�j1�J*
� ��$�k
	�z��*,
4�ك����7�,��A�&C�/� ��b�-2�9!��V[��>t�-�2De
�C� ��b�����j��B�K�\B�/�@�(����oDd�p��@@�(.��S�?<@��,�	����0��CT1����$M���}�>$���
;3	��ʥ���>�u�Đ�-4�U�0�m�os
vX���BWM
40mbD�qo��_q
y�M����l�
N�ֆ�@
-��8�D΂MK�B؀9替��i��{�y�,�����qC�:���Al|�{��7�s�;�0QFP��oB�#���ݼ	��==�s ?< �����Ѐ�g����s��<���z���W?H�2P@U@x���s]��RD`z4���g?��ȠT�A`�( ��W�t���)�B�@�4�
s8>���t �QЅ/�!��A2�x(Vb ���~�������P�ԁT�6�< "�[hAnQ*�b��W�ٱ8�ט�?vPˣ܍6�ш
�d9�
�FS7@B`1�6pA*0C�"!�	?,@@���pH,������.'�u�Z�Xa�yk:��S�t:\��z�}-���S,>�w�{oL�>n�]_Ptex;7|{~J�op_7��;��;z�XI��M�O�c�x��+i�V�nKoRr�v���+�+��Ei�J���d���±+�H?�˕�`dw����3�2�i����a��+��3;�8�)A��)�i_�u�&�[��`�!ɨ(u������[7��lYF@�x	G6.0���	8�U9��˖ގ	�0ldɛ#&̠UE��>Y
5���8q�غ�J��J��d�M������@�KB�Ev�ȺvĀ#�	w�ܰQA�kd�ִ[�
H�E��P37`|d��z�Q$̧������=Q�Ӹ�>��@p�!7��ݣx�B@��s�q���<�x��;���yw�q�M?�"4��ӯ¡����?��|�-������y'�|U�p_����
�A�u��U��
�wB��uء�QH�
6Ђ�
���	���� �'�h�3�B�<vh��}�XCC�0d4 ��1�F)��Dv@��Xb�@
Pс�`�PA
d�Yv�%=��fbր�̉�k��%�9�vΉ��y��A	�V�g�50 (���e�
 j��
�)�8@�C��PA�P�-؀ê���@�/����:@���*"�ì��J�-�K�	yN�A�B+k;ܐ��[B�d���@��"�,�*�yB
�������$@	�e)��o�9d���P�S@«@��@)@����
!½��/�'b	?������
��1銸A1Đ��G,�/�����@C>s�3��@�%�3>7�@�}�AT=t���+�4
�͂ǭ�@5�0�sTQ	M�-7,�5^T@!�]u�7a��-6�s5^$���|�
��U�܇s�9!��!� :�}G@u�\с�t#���
hS��>��}S�/��ݰo΃�[P;7���� ��M������� �
�0@�G�@X���8䓮�
�o/��/��2(`�G�U`X�6��;L/%�D��w<�@�d�?(@Ѐt`���P�]����r�����<���Kx��p}�k�7#���~ȳ�E 	(�*�I��0�
d���c�Hԟ9��Jq�&4�U�Bd�-xi�bj��z0� !	M�C,����r �%�QQ<�ӈ���|�yApH�0�TL��H�,&�aC�CTф>�A���� ����L@'�!�	?,@@���pH,���k�X��ǨtJ%&?O�c��ݶϪx��f_��{i_n���!�J�3�V{om'msd(VByhh]~o�'�/�S��xXz�7/k����q�E5 ����L�^n�'���B�����|�����;;7�: ���Eq�\ͦ����;�
 Ʋ�Cy�i᧨'�'s.������'P�z�ܾ}���P�w�V��Ձ|v�[��Z�	0(R�#�t���Q��
$�I9@@%����d��Qc؍h�B�Ĺ�$�( ���r%�l
3X�!ɦ+,�!�Ք)ATea���7�.��d�` 8[u�n���T��b��ѫW�T�&>rBnX�32�#����Om19��� ���H��za#p�t�T��<cB�B8 @�th��<����	#ZY@�8�Ϡ�'?��y��#�P�z��:�K��<�#����QhWod��������A}�I��r�7��A��w�(��3��7��BxC�Uh"
�mx����;؀�H�}<��.�Ë+H0�5i��G|��>.9CF9cH��,�C#P@_�	fQU1Ah���a�&`e1A�Ig�=��{� `�C�Y�wҠ'$J	:�-�i�p�襗Ѐ�B�@�N�B
\J���R��?����60�$�Z����5��k5;C
�RP,
pz���6�Ԛ*
PKpe�P����J���� n�6�����Պ+.40�^��`o	�PöpF�.�3��q�`o��&,��,���VyApo�إ@�
3��a9�Pq	���̂��<��;dP��&S\�
��s�p2�>P��8�s	Fd�O
2�z��B\#�t�!��B���vr
$���[�t	OQ��fW-� �m����ow�uGaT��7�� ��C�wWq�U?�v䒋�@ݘ�@�'C
ng��VR� ��"�.��0�5
�B�c���)�UE��.��+���O�@! <���v�c0z�K�
��C#T?�	$�Կ}����v��0@�@ԁ�|U�upA�G?��d��B�<}L�`X��6p�
%��~�^�Z�>1�`w�Bx@���&�@
m�"R��ڋ�{�(�|:L�{8B���&��W8A q{1�Y`N���	$a	�8D��^|a�q
`��t@�
`� Z@�+d!�����%Ё5�>��BLa ���yA
�F
Tq�'�b
�(�H(N;(�<�G��l�"Ђ���A^x�?�-X�;themes/packs/default/default_registration.php000060400000002601152455753310015512 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @themepack	default
 * @template	event_registration
 * @version 	3.5.10 2015-08-05
 * @since       2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die(); ?>

<!-- Event registration -->

<?php // Header of Registration page ?>
<?php // Show event ?>
<div class="ic-reg-event ic-clearfix">
	<div class="ic-reg-box">
		<?php if ($EVENT_NEXT): ?>
		<div class="ic-reg-icon ic-float-left">
		</div>
		<?php endif; ?>
		<div class="ic-reg-content">

			<?php // Category ?>
			<div class="ic-reg-cat">
				<?php echo $CATEGORY_TITLE; ?>
			</div>

			<?php // Event Title with link to event ?>
			<div class="ic-reg-event-title">
				<a href="<?php echo $EVENT_URL; ?>" title="<?php echo $EVENT_TITLE; ?>"><?php echo $EVENT_TITLE; ?></a>
			</div>
		</div>
	</div>
</div>
<?php // END Header ?>
themes/packs/default/index.html000060400000000054152455753310012560 0ustar00<html><body bgcolor="#FFFFFF"></body></html>themes/packs/default/default_events.php000060400000007770152455753310014320 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @themepack	default
 * @template	events_list
 * @version 	3.5.6 2015-05-19
 * @since       3.2.8
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();?>

<!-- Event -->

<?php // List of Events Template ?>

	<?php // Show event ?>
	<div class="ic-event ic-clearfix">

		<?php // Display Date ?>
		<?php if ($EVENT_NEXT): ?>

			<div class="ic-box">
				<div class="ic-box-date ic-float-left ic-align-center <?php echo $CATEGORY_FONTCOLOR; ?>" style="background:<?php echo $CATEGORY_COLOR; ?>;">
					<div class="ic-date">

						<?php // Day ?>
						<div class="ic-day">
							<?php echo $EVENT_DAY; ?>
						</div>

						<?php // Month ?>
						<div class="ic-month">
							<?php echo $EVENT_MONTHSHORT; ?>
						</div>

						<?php // Year ?>
						<div class="ic-year">
							<?php echo $EVENT_YEAR; ?>
						</div>

						<?php // Time ?>
						<div class="ic-time">
							<?php echo $EVENT_TIME; ?>
						</div>

					</div>
				</div>

				<?php // Right-Box with Infos ?>
				<div class="ic-content">
					<div>

						<?php // Feature icons ?>
						<?php if (!empty($FEATURES_ICONSIZE_LIST)) : ?>
						<div class="ic-features-container">
							<?php foreach ($FEATURES_ICONS as $icon) : ?>
							<div class="ic-feature-icon">
								<img class="iCtip" src="<?php echo $FEATURES_ICONROOT_LIST . $icon['icon'] ?>" alt="<?php echo $icon['icon_alt'] ?>" title="<?php echo $SHOW_ICON_TITLE == '1' ? $icon['icon_alt'] : '' ?>">
							</div>
							<?php endforeach ?>
						</div>
						<?php endif ?>

						<?php // Category ?>
						<div class="ic-cat">
							<?php echo $CATEGORY_TITLE; ?>
						</div>

						<?php // Event Title with link to event + Manager Icons (included in titlebar) ?>
						<h2>
							<a href="<?php echo $EVENT_URL; ?>" title="<?php echo $EVENT_TITLE; ?>">
								<?php echo $EVENT_TITLEBAR; ?>
							</a>
						</h2>

						<?php // Location (different display, depending on the fields filled) ?>
						<?php if ($EVENT_VENUE OR $EVENT_CITY): ?>
						<div class="ic-place">

							<?php // Venue name ?>
							<?php if ($EVENT_VENUE): ?>
								<strong><?php echo JTEXT::_('COM_ICAGENDA_EVENT_PLACE'); ?>:</strong> <?php echo $EVENT_VENUE;?>
							<?php endif; ?>

							<?php // If Venue Name exists and city set (Google Maps). Displays Country if set. ?>
							<?php if (($EVENT_VENUE) AND ($EVENT_CITY)): ?>
								<span>&nbsp;|&nbsp;</span>
								<strong><?php echo JTEXT::_('COM_ICAGENDA_EVENT_CITY'); ?>:</strong> <?php echo $EVENT_CITY;?><?php if ($EVENT_COUNTRY): ?>, <?php echo $EVENT_COUNTRY;?><?php endif; ?>
							<?php endif; ?>

							<?php // If Venue Name doesn't exist and city set (Google Maps). Displays Country if set. ?>
							<?php if ((!$EVENT_VENUE) AND ($EVENT_CITY)): ?>
								<strong><?php echo JTEXT::_('COM_ICAGENDA_EVENT_CITY'); ?>:</strong> <?php echo $EVENT_CITY;?><?php if ($EVENT_COUNTRY): ?>, <?php echo $EVENT_COUNTRY;?><?php endif; ?>
							<?php endif; ?>

						</div>
						<?php endif; ?>

						<?php // Short Description ?>
						<?php if ($EVENT_DESC): ?>
							<div class="ic-descshort">
								<?php echo $EVENT_INTRO_TEXT ; ?><?php echo $READ_MORE ; ?>
							</div>
						<?php endif; ?>

						<?php // Addons Plugins (JComments, ...) - onListAddEventInfo ?>
						<?php if ($IC_LIST_ADD_EVENT_INFO): ?>
							<?php echo $IC_LIST_ADD_EVENT_INFO; ?>
						<?php endif; ?>

					</div>
				</div>
			</div>

		<?php endif; ?>

	</div>

<?php // END Event ?>
themes/packs/default/css/index.html000060400000000054152455753310013350 0ustar00<html><body bgcolor="#FFFFFF"></body></html>themes/packs/default/css/default_module_xsmall.css000060400000000336152455753310016441 0ustar00/*
 * MOD_ICCALENDAR
 * Extra small devices (usually a mobile phone)
 * 0 < SCREEN WIDTH < ('Small Screen Threshold' - 1)
 * Default : 0 < SCREEN WIDTH < 480
 */

/* Close "X" */
	#ictip a.close {
		padding-right:15px;
	}
themes/packs/default/css/default_component-rtl.css000060400000004243152455753310016376 0ustar00/*
 * COM_ICAGENDA
 * iCagenda by JoomliC
 * Theme Pack Official
 * Default Theme - component
 *
 * @name		default - RTL Styles
 * @author		Lyr!C (JoomliC)
 * @version 	3.4.0 2014-12-01
 * @since		3.4.0
 */


/*
 * Common Styles
 */

/* Align styles */
.ic-align-left {
	text-align: right;
}
.ic-align-right {
	text-align: left;
}

/* Float styles */
.ic-float-left {
	float: right;
}
.ic-float-right {
	float: left;
}

/* Table styles */
.ic-divCell {
	float: right; /* fix for buggy browsers */
}

/* Feature Icons */
.ic-content > .ic-features-container {
	float: left;
	margin-right: auto;
	margin-left: -5px;
}
.ic-feature-icon {
	float: left;
}

/* Buttons (print, Add to Cal, ...) */
.ic-buttons {
	float: left;
}
.ic-icon {
	margin-left: auto;
	margin-right: 7px;
}
div.ic-tip-link {
	text-align: right;
}
div.ic-tip-link img {
	margin-right: auto;
	margin-left: 5px;
}


/*
 * List of Events
 */

/* Box Date */
.ic-box-date {
	float: right;
}

/* Box Content */
.ic-content {
	float: right;
}


/*
 * Event Details
 */

/* Back button */
.ic-back {
	text-align: right;
}

/* Description */
.ic-detail-desc {
	text-align: right;
}

/* Content Box */
.ic-info-box-content {
	text-align: right;
}

/* File attachment */
.ic-info-box-file {
	float: left;
}

/* List of Participants */
#icagenda .panel h3.pane-toggler a {
	background: #f5f5f5 url(../images/pluslist.png) 1% 50% no-repeat;
}
#icagenda .panel h3.pane-toggler-down a {
	background: #f5f5f5 url(../images/minuslist.png) 1% 50% no-repeat;
}
#icagenda .pane-slider {
	margin-right: -1px;
}
#icagenda .list_table {
	float: right;
}


/*
 * Form
 */

/* Label */
.ic-control-label {
	float: right;
}

/* Radio Buttons */
.btn-group > .btn:first-child,
.radio.btn-group > label:first-of-type {
	border-radius: 4px 0 0 4px !important;
}
.btn-group > .btn:last-child {
	border-radius: 0 4px 4px 0 !important;
}

/* Google Maps */
.icmap-label {
	float: right !important;
	text-align: right !important;
}
.icmap-input {
	text-align: right;
}


/*
 * STYLES for classes not presents in Theme Pack php files, but in iCagenda core php files
 */

/* Header - List of Categories */
#icagenda .cat_header_title {
	float: right;
	margin: 3px 0 -2px 10px;
}
themes/packs/default/css/default_component_xsmall.css000060400000001347152455753310017161 0ustar00/*
 * COM_ICAGENDA
 * Extra small devices (usually a mobile phone)
 * 0 < SCREEN WIDTH < ('Small Screen Threshold' - 1)
 * Default : 0 < SCREEN WIDTH < 480
 */

/* Share buttons (AddThis) */
#icagenda .share {
	display:none;
}

/* Style Information */
.ic-divCell {
	float: left;
}

/* Style Input field */
.icagenda_form input,
.icagenda_form input[type="file"],
.icagenda_form .input-large,
.icagenda_form .input-xlarge,
.icagenda_form .input-xxlarge,
.icagenda_form .select-large,
.icagenda_form .select-xlarge,
.icagenda_form .select-xxlarge {
	width: 90%;
}
.icagenda_form .input-small {
	width: 90px;
}
.icagenda_form .select-small {
	width: 114px;
}
.icagenda_form .ic-date-input {
	width: auto;
}
.ic-captcha-label {
	display: none;
}
themes/packs/default/css/default_module-rtl.css000060400000000640152455753310015656 0ustar00/*
 * MOD_ICCALENDAR
 * iCagenda by JoomliC
 * Theme Pack Official
 * Default Theme - module calendar
 *
 * @name		default - RTL
 * @author		Lyr!C (JoomliC)
 * @version 	3.4.0 2014-12-01
 * @since		3.4.0
 */


#ictip {
	text-align: right;
}
#ictip span.bloc {
	float: right;
}
#ictip a.close {
	right: auto;
	left: 15px;
}
#ictip span.img {
	float: right;
}

/* Features */
#ictip .ic-feature-icon {
	float: left;
}
themes/packs/default/css/default_component_large.css000060400000000221152455753310016741 0ustar00/*
 * COM_ICAGENDA
 * Large devices (usually a desktop computer)
 * SCREEN WIDTH > 'Large Screen Threshold'
 * Default : SCREEN WIDTH > 1201
 */
themes/packs/default/css/default_component_small.css000060400000000267152455753310016771 0ustar00/*
 * COM_ICAGENDA
 * Small devices (usually a tablet computer)
 * 'Small Screen Threshold' < SCREEN WIDTH < ('Medium Screen Threshold' - 1)
 * Default : 481 < SCREEN WIDTH < 768
 */
themes/packs/default/css/default_component_medium.css000060400000000271152455753310017134 0ustar00/*
 * COM_ICAGENDA
 * Medium devices (usually a laptop computer)
 * 'Medium Screen Threshold' < SCREEN WIDTH < ('Large Screen Threshold' - 1)
 * Default : 769 < SCREEN WIDTH < 1200
 */
themes/packs/default/css/default_module_medium.css000060400000000273152455753310016421 0ustar00/*
 * MOD_ICCALENDAR
 * Medium devices (usually a laptop computer)
 * 'Medium Screen Threshold' < SCREEN WIDTH < ('Large Screen Threshold' - 1)
 * Default : 769 < SCREEN WIDTH < 1200
 */
themes/packs/default/css/default_module_large.css000060400000000223152455753310016226 0ustar00/*
 * MOD_ICCALENDAR
 * Large devices (usually a desktop computer)
 * SCREEN WIDTH > 'Large Screen Threshold'
 * Default : SCREEN WIDTH > 1201
 */
themes/packs/default/css/default_module_small.css000060400000000271152455753310016247 0ustar00/*
 * MOD_ICCALENDAR
 * Small devices (usually a tablet computer)
 * 'Small Screen Threshold' < SCREEN WIDTH < ('Medium Screen Threshold' - 1)
 * Default : 481 < SCREEN WIDTH < 768
 */
themes/packs/default/css/default_component.css000060400000033415152455753310015602 0ustar00/*
 * COM_ICAGENDA
 * iCagenda by JoomliC
 * Theme Pack Official
 * Default Theme - component
 *
 * @name		default
 * @author		Lyr!C (JoomliC)
 * @version 	3.5.10 2015-08-26
 * @since		1.0
 */


/*
 * GENERAL STYLES (list and event details)
 */

/* General */
#icagenda {
	display: block;
	width: auto;
	margin: 0px;
	padding:0px
}

/* Align styles */
.ic-align-left {
	text-align: left;
}
.ic-align-right {
	text-align: right;
}
.ic-align-center {
	text-align: center;
}

/* Float styles */
.ic-float-left {
	float: left;
}
.ic-float-right {
	float: right;
}
.ic-float-none {
	float: none;
}

/* Clear Float div */
.ic-clearfix {
	*zoom: 1;
}
.ic-clearfix:before,
.ic-clearfix:after {
	display: table;
	content: "";
	line-height: 0;
}
.ic-clearfix:after {
	clear: both;
}

/* Style iC Alert */
.ic-alert-info {}
.ic-alert-error {}

/* Feature Icons */
.ic-content > .ic-features-container {
	margin-right: -5px;
	margin-top: 5px;
}
.ic-feature-icon {
	float: right;
}


/*
 * LIST PAGE CSS (CONTENT)
 */

/* Style Background alternative */
.ic-event {
	background: none;
	background: rgba(221,221,221,0.1);
	border-radius: 6px;
	/*
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.025);
	-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.025);
	box-shadow: inset 0 1px 1px rgba(0,0,0,0.025);
	*/
	margin: 5px 0;
	padding: 0px;
}
.ic-event:nth-child(2n+1) {
	background: none;
	background: rgba(221,221,221,0.3);
}

/* Style Category */
.ic-cat {
	margin-top: 0px;
	font-weight: bold;
	text-transform: uppercase;
	font-size:11px;
}

/* Style Left (Container Box Date) */
.ic-box {
	display: block;
	min-height: 96px;
	border: 0px;
}

/* Font color if bright background for date box */
#icagenda .fontColor {color: #666 !important;}

/* Style Box Date */
.ic-box-date {
	display: block;
	text-transform: capitalize;
	width: 60px;
	height: 60px;
	padding: 10px;
	color: #fff;
	margin: 8px 28px 2px 8px;
	border-radius: 6px;
	/* css3 box-sizing added to prevent conflict */
	box-sizing: content-box;
}

/* Current period */
.ic-current-period {
	text-decoration: overline;
}

.ic-date {
	line-height: 0px !important;
	font-size: 30px;
}
.ic-day {
	line-height: 30px !important;
	font-size: 30px;
	font-weight: bold;
}
.ic-month {
	line-height: 16px !important;
	font-size: 16px;
	letter-spacing: 0px;
	margin-left: 1px;
	font-weight: normal;
}
.ic-year {
	line-height: 11px !important;
	font-size: 11px;
	letter-spacing: 2px;
	margin-left: 2px;
	font-weight: bold;
}
.ic-time {
	line-height: 10px !important;
	font-size: 10px;
	letter-spacing: 2px;
	margin-left: 2px;
	font-weight: bold;
}

/* Style Right (Container Title, Cat, Desc...) */
.ic-content {
	display: block;
	border: 0px;
	margin: 0px;
	padding: 8px;
	vertical-align: top;
}
.ic-content h2 {
	font-size: 24px;
	line-height: 24px;
	margin: 3px 0px 3px 0px;
	padding: 0;
}
.ic-place {
	font-weight: normal;
	font-size: 11px;
	line-height: 15px;
}
.ic-descshort {}




/*
 * EVENT PAGE CSS
 */

/* Style full-width div containing Sharing and Register Button */
.ic-event-buttons {
	display: block;
	width: 100%;
	margin-bottom: 10px;
}

/* Style Event General */
.ic-info {
	padding: 1%;
	background: none; /* old versions of IE */
	background: rgba(221,221,221,0.3);
	border: 0px solid #ccc;
	margin-bottom: 10px;
	border-radius: 6px;
}
.ic-info .ic-details {
	padding: 1%;
}

/* Style Image */
.ic-image img {
	max-width: 100%;
	max-height: 400px;
	border: 0px solid #ccc;
	margin-bottom: 10px;
}

/* Style Table-style List */
.ic-divTable {
	display: table;
	width: auto;
	border-spacing: 5px;
	/* border-collapse: separate; */
}
.ic-divRow {
	display: table-row;
}
.ic-divCell {
/*	float: left; */ /* fix for buggy browsers */
	padding: 1px 5px;
}
.ic-label {
	display: table-cell;
	min-width: 110px;
	font-weight: bold;
}
.ic-value {
	display: table-cell;
	width: auto;
}

/* Style Description */
.ic-short-description {
	font-weight: bold;
}
.ic-full-description {
}

/* Style Google Maps */
#ic-detail-map {}
#ic-detail-map .icagenda_map {
	margin: auto;
	border: 0px solid #ccc;
	text-shadow: none;
	border-radius: 0px;
	box-shadow:none;
}

/* Style All Dates */
#ic-list-of-dates {}
.ic-dates-list {}
.ic-all-dates ul {
	padding-left: 1%;
}
.ic-all-dates li {
	background-image: none
}
.ic-all-dates h3 {
	display: block;
	font-size: 18px;
	margin-top: 10px;
	font-weight: bold;
}

/* Style List of Participants */
#ic-list-of-participants {}
.ic-dates-list {}
.ic-participants h3 {
	display: block;
	font-size: 18px;
	margin-top: 10px;
	font-weight: bold;
}

/* Slider */
#icagenda .icpanel {
}
.ic-participants .panel {
	border: none !important;
}
.ic-participants .panel h3 {
	border: none !important;
}
.ic-participants {
	padding: 5px;
	background: #f5f5f5;
	background: rgba(221,221,221,0.3);
}
.ic-participants h3 a {
	display: block;
	text-decoration: none;
	padding: 0 1%;
	color: #444;
	width: 98%;
}
.ic-participants .panel h3.pane-toggler a {
	background: url(../images/pluslist.png) 99% 50% no-repeat;
}
.ic-participants .panel h3.pane-toggler-down a {
	background: url(../images/minuslist.png) 99% 50% no-repeat;
}
#icagenda .pane-slider .ic-content {
}
#icagenda .pane-slider {
	overflow: unset;
}

/* Slider Full list of Participants */
#icagenda .list_table {
	background:#cccccc;
	background:rgba(204,204,204,0.5);
	border-radius:3px 3px 3px 3px;
	float:left;
}
#icagenda .imgbox {
	width:40px;
}
#icagenda .imgbox img {
	border-radius:3px 3px 3px 3px;
	margin:2px 0;
}
#icagenda .list_name {
	font-weight:bold;
}
#icagenda .list_places {
	font-size:smaller;
}
#icagenda .list_date {
	font-size:smaller;
}


/*
 * FORMS - COMMON STYLES
 */

/* Style Form (general) */
.icagenda_form {}
.icagenda_form h3 {
	color: #333;
	font-weight: bold;
	font-size: 14px;
	margin: 15px 0 10px 0px;
}
.icagenda_form .fieldset {
	border-radius: 2px;
	margin: 10px 0;
	background: #f3f3f3;
	padding: 10px;
}
.icagenda_form legend {
	font-weight: bold;
}

/* Style Label */
.icagenda_form label {
	color: #333;
	display: block;
	width: 130px;
	float: left;
	margin: 0px 3px;
}

/* Style Input field */
.icagenda_form input {
	background-color: #fff;
	border: 1px solid #ccc;
	box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.075) inset;
	transition: border 0.2s linear 0s, box-shadow 0.2s linear 0s;
	border-radius: 3px;
	padding: 3px;
	width: auto;
}
.icagenda_form input[type="file"] {
	width: 270px;
}
.icagenda_form .input-small {
	width: 90px;
}
.icagenda_form .select-small {
	width: 104px;
}
.icagenda_form .input-large {
	width: 210px;
}
.icagenda_form .select-large {
	width: 224px;
}
.icagenda_form .input-xlarge {
	width: 270px;
}
.icagenda_form .select-xlarge {
	width: 284px;
}
.icagenda_form .input-xxlarge {
	width: 330px;
}
.icagenda_form .select-xxlarge {
	width: 344px;
}
.icagenda_form .ic-date-input {
	width: auto;
}

/* Style Form Invalid */
.icagenda_form label.invalid {
	color: red;
	font-weight: bold;
}
.icagenda_form input.invalid,
.icagenda_form select.invalid {
	border: 2px solid red;
	color: red;
	font-weight: bold;
}

/* Style button left (joomla 2.5) */
.icagenda_form .button2-left {
	margin: 3px 3px 3px 0px;
	float: left;
}

/* Style Terms of Service */
.icagenda_form .ic-tos-content {
	background: #c0c0c0;
	color: #fff;
	margin-top: 25px;
	padding: 5px;
	border: none;
	border-radius: 2px;
	text-align: center;
}
.icagenda_form .ic-tos-text {
	padding: 25px;
	background: #fff;
	color: #333;
	text-align: left
}
.icagenda_form .ic-tos-agree {
	color: #fff;
	font-weight: bold;
}

/* Style Button Submit */
.icagenda_form .button {
	font-family: arial;
	font-size: 12px;
	background: #555;
	color: #fff;
	padding: 5px;
	border: none;
	border-radius: 6px;
	text-align: center;
}
.icagenda_form .button:hover {
	background: #c72031;
	color: #fff;
}
.icagenda_form .ic-loader {
	display: block;
	width: 100%;
	height: 60px;
	background: url(../../../../../../media/com_icagenda/images/loader.gif) 50% 50% no-repeat;
}

/* Style Button Cancel */
.icagenda_form .buttonx a {
	font-family: arial;
	font-size: 12px;
	background: none !important;
	text-decoration: none;
	color: #555;
	padding: 0;
	border: none;
	border-radius: 6px;
	text-align: center;
}
.icagenda_form .buttonx a:hover {
	background: none !important;
	text-decoration: none;
	color: #c72031 !important;
}



/*
 * SUBMIT AN EVENT FORM
 */

/* Short Description textarea */
.ic-submit-shortdesc,
.ic-submit-metadesc {
	width: 100%;
	box-sizing: border-box;
}


/*
 * REGISTRATION
 */

/* Style Title Registration */
.ic-form-title h2 {}

/* Style fields required info */
.ic-required-info {
	font-size: 0.95em;
}

/* Style Header*/
.ic-reg-event {
	background: none;
	background: rgba(221,221,221,0.3);
	border-radius: 2px;
	margin: 5px 0;
	padding: 0px;
}

/* Registration icon */
.ic-reg-icon {
	background: url(../../../../../../media/com_icagenda/images/registration-48.png) 50% 50% no-repeat;
	display: block;
	width: 48px;
	height: 48px;
	padding: 8px;
	margin-right: 8px;
}

/* Style Right (Container Event title, category) */
.ic-reg-content {
	display: block;
	border: 0;
	margin: 0;
	padding: 8px;
	vertical-align: top;
}

/* Category */
.ic-reg-cat {
	color: #555555;
	font-size: 12px;
	line-height: 20px;
	font-weight: bold;
	text-transform: uppercase;
}

/* Event title */
.ic-reg-event-title {
	font-size: 22px;
	line-height: 28px;
	font-weight: bold;
}

/* Style Registration infos */
.ic-reg-info {
	font-size:0.8em;
}

/* Google Maps */
.icmap-label {
	float: left;
	width: 140px;
	padding-top: 5px;
	padding-right: 5px;
	text-align: left;
}
.icmap-field {
	margin: 5px;
}
.form-validate .icmap-field input,
.icagenda_form .icmap-field input {
	background-color: #eee;
/*	width: auto; */
	color: #777;
}


/*
 * STYLES for classes not presents in Theme Pack php files, but in iCagenda core php files
 */

/* Style Navigation (list of events) */
#icagenda .navigator {margin: 7px 0;}
#icagenda .navigator a {text-decoration:none;}
#icagenda .navigator a:link, #icagenda .navigator a:visited {}
#icagenda .navigator a:hover, #icagenda .navigator a:active, #icagenda .navigator a:focus {cursor:pointer;}
#icagenda .icagenda_back {float:left; margin-left:20px;}
#icagenda .icagenda_next {float: right; margin-right:20px;}
#icagenda .navigator button {border:0; padding:5px; color:#fff; background:#f3f3f3; margin-right:5px;}

/* Header - List of Categories */
.ic-header-categories {
	display: block;
	width: 100%;
	margin-bottom: 20px;
}
#icagenda .cat_header_title {
	display: block;
	padding: 1px 7px;
	font-size: 1em;
	text-align: center;
	color: #fff;
	font-weight: normal;
	float: left;
	margin: 3px 10px -2px 0;
	border-radius: 4px;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.15);
	background: #dddddd;
	background-size: cover;
}
#icagenda .cat_header_desc {
	display: block;
	padding: 3px 7px;
	margin: 2px 0;
}

/* Share buttons (AddThis) */
.ic-share {
	display: block;
	background: none;
	padding: 5px 10px 5px 0;
	text-shadow: none;
}
.ic-share a:link,
.ic-share a:visited {
/*	background: none; */
	text-decoration: none;
}
.ic-share a:hover,
.ic-share a:active,
.ic-share a:focus {
/*	background: none; */
}

/* Style Registration button */
.ic-registration-box {
	float: none;
	margin: 3px 0;
}
.ic-registration-box a {
	text-decoration: none;
	float: none;
}

/* Text Register Button */
.ic-event-register {
	display: inline-block;
	margin: 2px 3px 0 0;
	line-height: 16px;
}

/* Text Event Full Button */
.ic-event-full {
	display: inline-block;
	margin: 2px 3px 0 0;
	line-height: 16px;
}

/* Text Event Finished Button */
.ic-event-finished {
	display: inline-block;
	margin: 2px 3px 0 0;
	line-height: 16px;
}

/* Image Button (removed in 3.3.7) */
#icagenda .regis_imgbutton {display:inline-block; margin:0 3px; height:16px; line-height:16px; width:16px;  background: url('../../../../../../media/com_icagenda/images/btn-regis.png') no-repeat}
#icagenda .regis_imgbutton:hover {text-decoration:none; color:#111111; cursor: pointer;}

/* icon people (nb of registered users) (added in 3.3.7) */
.ic-people {
	color: #999;
}

/* Nb of registered people (in bubble) */
.ic-registered {
	display: inline-block;
	color: #333333;
	text-align: center;
	background: url('../images/regis-baloon.png');
	height: 16px;
	line-height: 16px;
	width: 36px;
	font-size: 11px;
	font-weight: bold;
}

/* Style Time (in date) */
#icagenda .evttime {
	font-size: 0.8em;
}
.ic-next-today {
	font-weight: bold;
}
.ic-period-starttime,
.ic-period-endtime,
.ic-single-starttime,
.ic-single-endtime,
.ic-datetime-separator {
	font-size: 0.8em;
}

/* Style File Download link */
#icagenda .icDownload {}


/*
 * STYLES for classes not presents in Theme Pack php files, but in iCagenda core php files
 */

/* Style iCagenda Header - List of Events */
.ic-header-container {
}
.ic-header-title {
}
.ic-header-subtitle {
	font-size: 0.85em;
}
.ic-subtitle-string {
}
.ic-subtitle-pages {
}

/* Style Back Button (event details) */
.ic-back {
	display: block;
	width: 100%;
	text-align: left;
	font-size: 10px;
	font-weight: normal;
	text-decoration: none;
	letter-spacing: 1px;
}
.ic-back a:link,
.ic-back a:visited {
	text-decoration:none;
}
.ic-back a:hover,
.ic-back a:active,
.ic-back a:focus {
	text-decoration:none;
}

/* Buttons (print, Add to Cal, ...) */
.ic-buttons {
	display: block;
	float: right;
}
.ic-icon {
	display: inline-block;
	margin-left: 7px;
}
.ic-printpopup-btn {
	display: block;
	text-align: center;
	margin: 15px 0;
}
div.ic-tip-title {
	text-align: center;
	font-weight: bold;
	margin-bottom: 3px;
}
div.ic-tip-link {
	display: block;
	text-align: left;
	margin-bottom: 3px;
}
div.ic-tip-link a {
	color: #D4D4D4;
	text-decoration: none;
}
div.ic-tip-link a:hover {
	color: #FFFFFF;
}
div.ic-tip-link img {
	margin-right: 5px;
}

/* Columns List of Participants (Full) */
#icagenda .total {width:99%; min-width:180px; margin:0.5%;}
#icagenda .demi {width:49%; min-width:180px; margin:0.5%;}
#icagenda .tiers {width:32.3%; min-width:180px; margin:0.5%;}
#icagenda .quart {width:24%; min-width:150px; margin:0.5%;}

.names_noslide {text-align:justify;}
.names_slide {padding:6px !important; text-align:justify;}
themes/packs/default/css/default_module.css000060400000023063152455753310015063 0ustar00/*
 * MOD_ICCALENDAR
 * iCagenda by JoomliC
 * Theme Pack Official
 * Default Theme - module calendar
 *
 * @name		default
 * @author		Lyr!C (JoomliC)
 * @version 	3.5.7 2015-07-14
 * @since		1.0
 */


/* Clear Float div */
.ic-clearfix {
	*zoom: 1;
}
.ic-clearfix:before,
.ic-clearfix:after {
	display: table;
	content: "";
	line-height: 0;
}
.ic-clearfix:after {
	clear: both;
}

/*
 * CALENDAR STYLES
 */

/* General Calendar */
.iccalendar {
	display: block;
	margin: auto !important;
	padding: 3px !important;
}
.iccalendar div {
	padding: 0px !important;
	margin: 0px !important;
	border: 0px;
	text-align: center;
}

/* General Table */
.iccalendar table {
	padding: 1% !important;
	margin: 0px !important;
	border:0px;
}
.iccalendar table th {
	font-size: 10px;
	font-weight: 500;
	padding: 0px !important;
	margin: 0px !important;
	text-align: center;
	border: 0px;
}
.iccalendar table tr {
	padding: 0px !important;
	margin: 0px !important;
	border: 0px;
}


/*
 * DAYS STYLES
 */

/* General */
.iccalendar table td {
	padding: 3px !important;
	margin: 0px !important;
	border: 0px;
}
.iccalendar table td div {
	text-align: center;
	font-size: 10px;
	border-radius: 3px;
	line-height: 20px;
	border: 0px solid #DDDDDD;
	width: auto !important;
}

/* Styles for days (today or else) */
.iccalendar table td div.style_Today {
	border: 1px solid #777;
	line-height: 18px;
	font-size: 12px;
	font-weight: bold;
	text-shadow: 0px 0px 10px #777;
	box-shadow: 0px 0px 5px #999;
}
.iccalendar table td div.style_Day {
	border: none;
}

/* In case of no event */
.iccalendar .no-event {
}

/* In case of event */
.iccalendar table td .icevent a {
	display: block;
	text-align: center;
	height: 100%;
	color: #fff;
	text-decoration: none;
}
.iccalendar table td .icevent a:hover,
.iccalendar table td .icevent a:focus {
	border-radius: 3px;
	background: #333;
}

/* Dark background */
.ic-dark {
	color: #fff !important;
}
/* Bright background */
.ic-bright {
	color: #111 !important;
}
.iccalendar table td .icevent a .ic-bright {
	display: block;
	text-align: center;
	height: 100%;
	color: #111 !important;
	text-decoration: none;
}
.iccalendar table td .icevent a:hover .ic-bright,
.iccalendar table td .icevent a:focus .ic-bright {
	border-radius: 3px;
	color: #fff !important;
	background: #333;
}

/* In case of multi-event day */
.iccalendar table td .icmulti a {
	background: url(../images/plus.png) top right no-repeat;
	display: block;
	text-align: center;
	height: 100%;
	color: #fff !important;
	text-decoration: none;
	border-radius: 3px;
}
.iccalendar table td .icmulti a:hover,
.iccalendar table td .icevent a:focus {
	background: #333;
}

/* In case of multi-event day (bright background) */
.iccalendar table td .icmulti a .bright {
	background: url(../images/plus.png) top right no-repeat;
	display: block;
	text-align: center;
	height: 100%;
	color: #111 !important;
	text-decoration: none;
	border-radius: 3px;
}
.iccalendar table td .icmulti a:hover .bright,
.iccalendar table td .icevent a:focus .bright {
	color: #fff !important;
	background: #333;
}

/* Loading... */
.icloading_box {
	display: block;
	height: 172px;
	font-size: 10px;
}
.icloading_img {
	display: block;
	width: 100%;
	height: 172px;
	background: url(../images/ic_load.gif) 50% 50% no-repeat
}


/*
 * SCRIPT FUNCTION (Dates with event)
 */

/* General */
.icevent,
.icmulti {}

/* Text (Don't modify it!) */
.icevent .spanEv,
.icmulti .spanEv {
	display: none !important;
}

/* Date (Don't modify it!) */
.icevent .date,
.icmulti .date {
	display: none !important;
}

/* Link */
.icevent a,
.icmulti a {
	cursor: pointer;
}


/*
 * NAVIGATOR
 */

/* Arrows General */
.icagendabtn {
	font-family: arial;
}

/* Navigator General */
.icnav {
	font-size: 10px;
	padding: 0px !important;
	margin: 0px !important;
	min-height: 24px;
}

/* Arrows General */
.icnav .backicY,
.icnav .backic,
.icnav .nextic,
.icnav .nexticY {
	display: block;
	text-decoration: none;
	color: #555555;
}
.icnav .backicY {
	letter-spacing: -3px;
	margin-right: 2px !important;
}
.icnav .backic {
	letter-spacing: 0px;
	margin-right: 2px !important;
	margin-left: 3px !important;
}
.icnav .nextic {
	letter-spacing: 0px;
	margin-left: 2px !important;
}
.icnav .nexticY {
	letter-spacing: -3px;
	margin-right: 2px !important;
	margin-left: 2px !important;
}

/* Arrows Back Month and Year (Left) */
.icnav .backic,
.icnav .backicY {
	float: left !important;
}

/* Arrows Next Month and Year (Right) */
.icnav .nextic,
.icnav .nexticY {
	float: right !important;
}

/* Arrows Back and Next - Month */
.icnav .backic,
.icnav .nextic {
	background: none;
	font-size: 12px;
	width: auto !important;
	cursor: pointer;
}

/* Arrows Back and Next - Year */
.icnav .backicY,
.icnav .nexticY {
	background: none;
	font-size: 12px;
	width: auto !important;
	cursor: pointer;
}

/* Arrows Over */
.icnav .backic:hover,
.icnav .nextic:hover,
.icnav .backicY:hover,
.icnav .nexticY:hover {
	background: none;
	color: #333333;
	cursor: pointer;
}

/* Navigator Title (month and year) */
.icnav .titleic {
	font-size: 12px;
	text-align: center;
	width: auto !important;
}


/*
 * INFO TIP
 */

/* General */
#ictip {
	font-family: arial;
	text-align: left;
	background: #ffffff;
	background: rgba(255,255,255,1);
	border: 1px solid #ccc;
	padding: 15px;
	width: auto;
	min-width: 350px;
	border-radius: 7px;
	z-index: 10000;
	max-height: 100%;
	overflow-y: auto;
}
#ictip .ictip-event {
	display: block;
	float: left;
	width: 100%;
	padding: 15px 0;
	border-top: 1px solid #eee;
}
#ictip span {
	margin: 10px;
	font-size: 0.8em;
}
#ictip a {
	display: block;
	font-size: 1.2em;
	text-decoration: none;
	background: none;
}

/* Date Header */
#ictip .ictip-date {
}
#ictip span.ictip-date-lbl {
	font-variant: small-caps;
}
#ictip span.ictip-date-format {
	font-size: 1em;
}

/* Close "X" */
#ictip a.close {
	position: absolute;
	display: block;
	width: auto;
	top: 15px;
	right: 15px;
	color: red;
	text-decoration: none !important;
}
#ictip a.close:hover {
	background: none !important;
	color: black;
	cursor: pointer;
}

/* Event Div */
#ictip div.linkTo {
	color: #333;
	background: none;
	text-decoration: none;
	transition: all 0.5s;
	-moz-transition: all 0.5s;
	-webkit-transition: all 0.5s;
	-o-transition: all 0.5s;
}
#ictip div.linkTo:hover {
	color: #111;
	background: rgba(0,0,0,0.1);
	border-radius: 5px;
}

/* Contener of the image */
#ictip span.img {
	display: block;
	width: 100px;
	float: left;
	text-align: center;
	padding: 3px;
	border-radius: 3px;
	box-sizing: content-box;
}

/* Image Thumb */
#ictip span.img img {
	width: 100px;
	border: 0px solid #ccc;
	border-radius: 3px;
	opacity: 1 !important; /* Added due to override of some site templates (Shape5 vertex, ...) */
}

/* no-image */
#ictip div.noimg {
	color: #FFFFFF;
	font-size: 10px;
	text-align: center;
	padding: 3px;
}
#ictip .bright {
	color: #111111 !important;
}

/* Event Title */
#ictip .ictip-event-title {
	display: block;
	min-width: 200px;
	font-weight: bold;
	padding: 8px 5px 3px 5px;
}

/* Event Info */
#ictip .ictip-info {
	display: block;
	min-width: 200px;
	font-size: 12px;
	padding: 0 8px 2px 8px;
}
#ictip .ictip-time {
	font-size: 14px;
	padding: 0 8px;
}
#ictip .ictip-location {
	font-size: 12px;
	padding: 0 8px 3px 8px;
}
#ictip .ictip-desc {
	font-size: 12px;
	color: #555;
	line-height: 14px;
}

/* Contener of the description */
#ictip span.bloc {
	display: block;
	width: 300px;
	float: left;
	margin: 3px;
}

/* Registration Infos */
#ictip div.regButtons {
	text-align: center;
	padding: 5px 1px;
}
#ictip span.iCreg {
	display: inline-block;
	font-size: 11px;
	margin: 0 3px;
	padding: 1px 5px;
	text-align: center;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	-o-border-radius: 5px;
	border-radius: 5px;
	box-shadow: 0px 0px 1px #333;
/*	cursor: pointer; */
}
#ictip span.iCreg.available,
#ictip span.iCreg.closed {
	color: black;
	background: white;
}
#ictip span.iCreg.ticketsleft {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #5bb75b;
	background-image: -moz-linear-gradient(top,#62c462,#51a351);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));
	background-image: -webkit-linear-gradient(top,#62c462,#51a351);
	background-image: -o-linear-gradient(top,#62c462,#51a351);
	background-image: linear-gradient(to bottom,#62c462,#51a351);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
	border-color: #51a351 #51a351 #387038;
	*background-color: #51a351;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
#ictip span.iCreg.registered {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #1d6cb0;
	background-image: -moz-linear-gradient(top,#2384d3,#15497c);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#2384d3),to(#15497c));
	background-image: -webkit-linear-gradient(top,#2384d3,#15497c);
	background-image: -o-linear-gradient(top,#2384d3,#15497c);
	background-image: linear-gradient(to bottom,#2384d3,#15497c);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2384d3', endColorstr='#ff15497c', GradientType=0);
	border-color: #15497c #15497c #0a223b;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #15497c;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}

/* End function clear <div> */
#ictip .clr {
	clear: both;
	display: block;
}

/* Features */
#ictip .ic-features-container {
	margin: 2px 8px 2px 2px;
}
#ictip .ic-feature-icon {
	float: right;
	margin: 0px 0.5px;
}

/* Messages Info */
.ic-msg-no-event {
	font-size: 0.8em;
	text-align: center;
}
themes/packs/default/default_day.php000060400000012735152455753310013566 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @themepack	default
 * @template	calendar info-tip
 * @version 	3.5.6 2015-06-08
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die(); ?>

<!-- Day info-tip -->

<?php // Day with event ?>
<?php if ($stamp->events) : ?>

	<?php // Main Background of a day ?>

	<div class="icevent <?php echo $multi_events; ?>" style="background:<?php echo $bg_day; ?> !important; z-index:1000;">

		<?php // Color of date text depending of the category color ?>
		<a>
		<div class="<?php echo $stamp->ifToday; ?> <?php echo $bgcolor; ?>" data-cal-date="<?php echo $stamp->this_day; ?>">
			<?php echo $stamp->Days; ?>
		</div>
		</a>

		<?php // Start of the Tip ?>
		<div class="spanEv">

			<?php foreach($events as $e) : ?>

				<div class="ictip-event">
					<?php echo '<a href="' . $e['url'] . '" rel="nofollow">'; ?>

					<div class="linkTo">

						<?php // Show image if exist ?>
						<div class="ictip-img">
						<?php
						echo '<span style="background: ' . $e['cat_color'] . ';" class="img">';

						if ($e['image'])
						{
							echo '<img src="' . $e['image'] . '" alt="" />';
						}
						else
						{
							echo '<span class="noimg ' . $bgcolor . '">' . $e['no_image'] . '</span>';
						}

						echo '</span>';
						?>
						</div>

						<?php // Display Title (with link to event) and other infos if set (city, country) ?>
						<div class="ictip-event-title titletip">
							<?php //echo '&rsaquo; ' . $e['title']; ?>
							<?php echo $e['title']; ?>
						</div>

						<?php // Display feature icons, if required ?>
						<?php if (!empty($e['features_icon_size'])) : ?>
						<div class="ic-features-container">
							<?php foreach ($e['features'] as $icon) : ?>
								<div class="ic-feature-icon">
									<img src="<?php echo $e['features_icon_root'] . $icon['icon'] ?>" alt="<?php echo $icon['icon_alt'] ?>" title="<?php echo $e['show_icon_title'] == '1' ? $icon['icon_alt'] : '' ?>">
								</div>
							<?php endforeach ?>
						</div>
						<?php endif; ?>

						<?php // INFO ?>
						<div class="ictip-info ic-clearfix">

							<?php // Display Time (start) for each date ?>
							<?php if ($e['displaytime']) : ?>
								<div class="ictip-time">
									<?php echo $e['time']; ?>
								</div>
							<?php endif; ?>

							<?php // Display Venue Name, City and/or Country for each date ?>
							<?php if ($e['place'] OR $e['city'] OR $e['country']) : ?>
								<div class="ictip-location">
									<?php // Display Venue Name ?>
									<?php if ($e['place'] AND ($e['city'] OR $e['country']) ) : ?>
										<?php echo $e['place'].', '; ?>
									<?php else : ?>
										<?php echo $e['place']; ?>
									<?php endif; ?>
									<?php // Display City and/or Country for each date ?>
									<?php if ($e['city']) : ?>
										<?php echo $e['city']; ?>
									<?php endif; ?>
									<?php if (($e['country']) && ($e['city'])) : ?>
										<?php echo ', '.$e['country']; ?>
									<?php endif; ?>
									<?php if (($e['country']) AND (!$e['city'])) : ?>
										<?php echo $e['country']; ?>
									<?php endif; ?>
								</div>
							<?php endif; ?>

							<?php // Display Short Description ?>
							<?php if ($e['descShort']) : ?>
								<div class="ictip-desc">
									<?php echo $e['descShort']; ?>
								</div>
							<?php endif; ?>

						</div>

						<?php // Display Registration Information ?>
						<?php if ($e['registrations']) : ?>
						<div class="regButtons ic-reg-buttons">

							<?php if (!$e['date_sold_out']) : ?>
								<?php if ($e['maxTickets']) : ?>
									<span class="iCreg available">
										<?php echo JText::_( 'MOD_ICCALENDAR_SEATS_NUMBER' ) . ': ' . $e['maxTickets']; ?>
									</span>
								<?php endif; ?>
								<?php if ($e['TicketsLeft'] && $e['maxTickets']) : ?>
									<span class="iCreg ticketsleft">
										<?php echo JText::_( 'MOD_ICCALENDAR_SEATS_AVAILABLE' ) . ': ' . $e['TicketsLeft']; ?>
									</span>
								<?php endif; ?>
								<?php if ($e['registered']) : ?>
									<span class="iCreg registered">
										<?php echo JText::_( 'MOD_ICCALENDAR_ALREADY_REGISTERED' ) . ': ' . $e['registered']; ?>
									</span>
								<?php endif; ?>
							<?php else : ?>
								<span class="iCreg closed">
									<?php echo $e['date_sold_out']; ?>
								</span>
							<?php endif; ?>

						</div>
						<?php endif; ?>
					</div>
					<?php echo '</a>'; ?>
				</div>
			<?php endforeach; ?>
		</div>

		<?php // Display Date at the top of the info-tip ?>
		<div class="date ictip-date">
			<span class="ictip-date-lbl">
				<?php echo JTEXT::_('JDATE');  ?> :
			</span>
			<span class="ictip-date-format">
				<?php echo $stamp->dateTitle; ?>
			</span>
		</div>

	</div><?php // end of the day ?>

<?php // Day with no event ?>
<?php else : ?>
	<div class="no-event <?php echo $stamp->ifToday; ?>" data-cal-date="<?php echo $stamp->this_day; ?>">
		<?php echo $stamp->Days; ?>
	</div>
<?php endif; ?>
themes/packs/default/default_calendar.php000060400000001660152455753310014555 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @themepack	default
 * @template	calendar
 * @version 	3.5.6 2015-05-19
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die(); ?>

<!-- Calendar -->

<?php // Code can be added at Top of calendar ?>

<?php // Calendar Template ?>
<?php
	$stamp->days();
?>

<?php // Code can be added at Bottom of calendar ?>
themes/packs/default/default_event.php000060400000016247152455753310014134 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @themepack	default
 * @template	event_details
 * @version 	3.5.6 2015-05-19
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die(); ?>

<!-- Event details -->

<?php // Event Details Template ?>
<div class="ic-clearfix">

	<?php // Header ?>
	<h2>
		<?php // Feature icons ?>
		<?php if (!empty($FEATURES_ICONSIZE_EVENT)) : ?>
		<div class="ic-features-container">
			<?php foreach ($FEATURES_ICONS as $icon) : ?>
			<div class="ic-feature-icon">
				<img class="iCtip" src="<?php echo $FEATURES_ICONROOT_EVENT . $icon['icon'] ?>" alt="<?php echo $icon['icon_alt'] ?>" title="<?php echo $SHOW_ICON_TITLE == '1' ? $icon['icon_alt'] : '' ?>">
			</div>
			<?php endforeach ?>
		</div>
		<?php endif ?>

		<?php // Title of the event ?>
		<?php echo $EVENT_TITLE; ?>
	</h2>

	<?php // Sharing and Registration ?>
	<div class="ic-event-buttons ic-clearfix">

		<?php // AddThis Social Sharing ?>
		<div class="ic-event-addthis ic-float-left">
			<?php echo $EVENT_SHARING; ?>
		</div>

		<?php // Registration button ?>
		<div class="ic-event-registration ic-float-right">
			<?php echo $EVENT_REGISTRATION; ?>
		</div>

	</div>

	<?php // Event Display ?>
	<div class="ic-info">

		<?php // Show Image of the event ?>
		<?php if ($EVENT_IMAGE): ?>
			<div class="ic-image ic-align-center">
				<?php echo $EVENT_IMAGE_TAG; ?>
			</div>
		<?php endif; ?>

		<?php // Details of the event ?>
		<div class="ic-details ic-align-left">

			<div class="ic-divTable ic-align-left ic-clearfix">

				<?php // Category ?>
				<div class="ic-divRow">
					<div class="ic-divCell ic-label"><?php echo JTEXT::_('COM_ICAGENDA_EVENT_CAT');  ?></div>
					<div class="ic-divCell ic-value"><?php echo $CATEGORY_TITLE; ?></div>
				</div>

				<?php // Next Date ('next' 'today' or 'last date' if no next date) ?>
				<div class="ic-divRow">
					<div class="ic-divCell ic-label"><?php echo $EVENT_VIEW_DATE_TEXT; ?></div>
					<div class="ic-divCell ic-value"><?php echo $EVENT_VIEW_DATE; ?></div>
				</div>

				<?php // Venue name and/or address (different display, depending on the fields filled) ?>
				<?php if ($EVENT_VENUE OR $EVENT_ADDRESS): ?>
					<div class="ic-divRow">
						<div class="ic-divCell ic-label"><?php echo JTEXT::_('COM_ICAGENDA_EVENT_PLACE'); ?></div>
						<div class="ic-divCell ic-value">
							<?php if (($EVENT_VENUE) and (!$EVENT_ADDRESS)): ?>
								<?php echo $EVENT_VENUE; ?><?php if ($EVENT_CITY): ?> - <?php echo $EVENT_CITY;?><?php endif; ?>
							<?php endif; ?>
							<?php if ((!$EVENT_VENUE) and ($EVENT_ADDRESS)): ?>
								<?php echo $EVENT_ADDRESS; ?>
							<?php endif; ?>
							<?php if (($EVENT_VENUE) and ($EVENT_ADDRESS)): ?>
								<?php echo $EVENT_VENUE; ?> - <?php echo $EVENT_ADDRESS;?>
							<?php endif; ?>
						</div>
					</div>
				<?php endif; ?>

				<?php // Information ?>
				<?php if ($EVENT_INFOS || $CUSTOM_FIELDS): ?>

					<?php // Max. Nb of seats ?>
					<?php if ($MAX_NB_OF_SEATS): ?>
						<div class="ic-divRow">
							<div class="ic-divCell ic-label"><?php echo JTEXT::_('COM_ICAGENDA_REGISTRATION_NUMBER_PLACES'); ?></div>
							<div class="ic-divCell ic-value"><?php echo $MAX_NB_OF_SEATS; ?></div>
						</div>
					<?php endif; ?>

					<?php // Nb of seats available ?>
					<?php if ($SEATS_AVAILABLE): ?>
						<div class="ic-divRow">
							<div class="ic-divCell ic-label"><?php echo JTEXT::_('COM_ICAGENDA_REGISTRATION_PLACES_LEFT'); ?></div>
							<div class="ic-divCell ic-value"><?php echo $SEATS_AVAILABLE; ?></div>
						</div>
					<?php endif; ?>

					<?php // Phone ?>
					<?php if ($EVENT_PHONE): ?>
						<div class="ic-divRow">
							<div class="ic-divCell ic-label"><?php echo JTEXT::_('COM_ICAGENDA_EVENT_PHONE'); ?></div>
							<div class="ic-divCell ic-value"><?php echo $EVENT_PHONE; ?></div>
						</div>
					<?php endif; ?>

					<?php // Email ?>
					<?php if ($EVENT_EMAIL): ?>
						<div class="ic-divRow">
							<div class="ic-divCell ic-label"><?php echo JTEXT::_('COM_ICAGENDA_EVENT_MAIL'); ?></div>
							<div class="ic-divCell ic-value"><?php echo $EVENT_EMAIL_CLOAKING; ?></div>
						</div>
					<?php endif; ?>

					<?php // Website ?>
					<?php if ($EVENT_WEBSITE): ?>
						<div class="ic-divRow">
							<div class="ic-divCell ic-label"><?php echo JTEXT::_('COM_ICAGENDA_EVENT_WEBSITE'); ?></div>
							<div class="ic-divCell ic-value"><?php echo $EVENT_WEBSITE_LINK; ?></div>
						</div>
					<?php endif; ?>

					<?php // Custom Fields ?>
					<?php if ($CUSTOM_FIELDS): ?>
						<?php foreach ($CUSTOM_FIELDS AS $FIELD): ?>
							<?php if ($FIELD->title && $FIELD->value) : ?>
								<div class="ic-divRow">
									<div class="ic-divCell ic-label"><?php echo $FIELD->title; ?></div>
									<div class="ic-divCell ic-value"><?php echo $FIELD->value; ?></div>
								</div>
							<?php endif; ?>
						<?php endforeach; ?>
					<?php endif; ?>

					<?php // File attached ?>
					<?php if ($EVENT_ATTACHEMENTS): ?>
						<div class="ic-divRow">
							<div class="ic-divCell ic-label"><?php echo JTEXT::_('COM_ICAGENDA_EVENT_FILE'); ?></div>
							<div class="ic-divCell ic-value"><?php echo $EVENT_ATTACHEMENTS_TAG; ?></div>
						</div>
					<?php endif; ?>

				<?php endif; ?>

			</div>

		</div><?php // end div.details ?>


	<?php // description text ?>
	<?php if ($EVENT_DESC): ?>
		<div class="ic-short-description">
			<?php echo $EVENT_SHORTDESC; ?>
		</div>
		<div class="ic-full-description">
			<?php echo $EVENT_DESCRIPTION; ?>
		</div>
	<?php endif; ?>

	<div>&nbsp;</div>

	<?php // Google Maps ?>
	<?php if ($GOOGLEMAPS_COORDINATES): ?>
		<div id="ic-detail-map">
			<div class="icagenda_map">
				<?php echo $EVENT_MAP; ?>
			</div>
		</div>
	<?php endif; ?>

	<div>&nbsp;</div>

	<?php // List of all dates (multi-dates and/or period from to) ?>
	<?php if ($EVENT_SINGLE_DATES OR $EVENT_PERIOD): ?>
		<div id="ic-list-of-dates" class="ic-all-dates">
			<h3>
				<?php echo JTEXT::_('COM_ICAGENDA_EVENT_DATES'); ?>
			</h3>
			<div class="ic-dates-list">

				<?php // Period from X to X ?>
				<?php echo $EVENT_PERIOD; ?>

				<?php // Individual dates ?>
				<?php echo $EVENT_SINGLE_DATES; ?>

			</div>
		</div>
	<?php endif; ?>

	</div><?php // end div.info ?>

	<?php // List of Participants ?>
	<?php if ($PARTICIPANTS_DISPLAY == 1 && $EVENT_PARTICIPANTS) : ?>
		<div id="ic-list-of-participants" class="ic-participants">
			<?php // Display header title 'List of Participants' if slide effect is disabled ?>
			<?php if ($PARTICIPANTS_HEADER) : ?>
				<h3>
					<?php echo $PARTICIPANTS_HEADER; ?>
				</h3>
			<?php endif; ?>
			<?php echo $EVENT_PARTICIPANTS; ?>
		</div>
	<?php endif; ?>


</div><?php // end div Event-details ?>
themes/packs/index.html000060400000000054152455753310011134 0ustar00<html><body bgcolor="#FFFFFF"></body></html>themes/packs/ic_rounded/ic_rounded_registration.php000060400000002604152455753310016673 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @themepack	ic_rounded
 * @template	event_registration
 * @version 	3.5.10 2015-08-05
 * @since       2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die(); ?>

<!-- Event registration -->

<?php // Header of Registration page ?>
<?php // Show event ?>
<div class="ic-reg-event ic-clearfix">
	<div class="ic-reg-box">
		<?php if ($EVENT_NEXT): ?>
		<div class="ic-reg-icon ic-float-left">
		</div>
		<?php endif; ?>
		<div class="ic-reg-content">

			<?php // Category ?>
			<div class="ic-reg-cat">
				<?php echo $CATEGORY_TITLE; ?>
			</div>

			<?php // Event Title with link to event ?>
			<div class="ic-reg-event-title">
				<a href="<?php echo $EVENT_URL; ?>" title="<?php echo $EVENT_TITLE; ?>"><?php echo $EVENT_TITLE; ?></a>
			</div>
		</div>
	</div>
</div>
<?php // END Header ?>
themes/packs/ic_rounded/ic_rounded_event.php000060400000017760152455753310015313 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @themepack	ic_rounded
 * @template	event_details
 * @version 	3.5.6 2015-05-19
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die(); ?>

<!-- Event details -->

<?php // Event Details Template ?>

	<?php // Header (Title/Category) of the event ?>
	<div class="event-header ic-event-header ic-clearfix">

		<?php // Title of the event ?>
		<div class="title-header ic-title-header ic-float-left">
			<h1>
				<?php echo $EVENT_TITLE; ?>
			</h1>
		</div>

		<?php // Feature icons ?>
		<?php if (!empty($FEATURES_ICONSIZE_EVENT)) : ?>
		<div class="ic-features-container">
			<?php foreach ($FEATURES_ICONS as $icon) : ?>
			<div class="ic-feature-icon">
				<img class="iCtip" src="<?php echo $FEATURES_ICONROOT_EVENT . $icon['icon'] ?>" alt="<?php echo $icon['icon_alt'] ?>" title="<?php echo $SHOW_ICON_TITLE == '1' ? $icon['icon_alt'] : '' ?>">
			</div>
			<?php endforeach ?>
		</div>
		<?php endif ?>

		<?php // Category ?>
		<div class="title-cat ic-title-cat ic-float-right ic-details-cat" style="color:<?php echo $CATEGORY_COLOR; ?>;">
			<?php echo $CATEGORY_TITLE; ?>
		</div>

	</div>

	<?php // Sharing and Registration ?>
	<div>

		<?php // AddThis Social Sharing ?>
		<div class="ic-event-addthis ic-float-left">
			<?php echo $EVENT_SHARING; ?>
		</div>

		<?php // Registration button ?>
		<div class="ic-event-registration">
			<?php echo $EVENT_REGISTRATION; ?>
		</div>

	</div>
	<div style="clear:both"></div>

	<?php // Event Informations Display ?>
	<div class="icinfo ic-info">

		<?php // Show Image of the event ?>
		<div class="image ic-image">
			<?php if ($EVENT_IMAGE): ?>
				<?php echo $IMAGE_LARGE_HTML; ?>
			<?php endif; ?>
		</div>

		<?php // Details of the event ?>
		<div class="details ic-details">

			<?php // Next Date ('next' 'today' or 'last date' if no next date) ?>
			<strong><?php echo $EVENT_VIEW_DATE_TEXT; ?>:</strong>&nbsp;<?php echo $EVENT_VIEW_DATE; ?>

			<?php // Location (different display, depending on the fields filled) ?>
			<p>

				<?php // Venue name ?>
				<?php if ($EVENT_VENUE): ?>
					<strong><?php echo JTEXT::_('COM_ICAGENDA_EVENT_PLACE'); ?>:</strong>&nbsp;<?php echo $EVENT_VENUE;?>
				<?php endif; ?>

				<?php // If Venue Name exists and city set (Google Maps). Displays Country if set. ?>
				<?php if (($EVENT_VENUE) AND ($EVENT_CITY)): ?>
					<span>&nbsp;|&nbsp;</span>
					<strong><?php echo JTEXT::_('COM_ICAGENDA_EVENT_CITY'); ?>:</strong>&nbsp;<?php echo $EVENT_CITY;?><?php if ($EVENT_COUNTRY): ?>,&nbsp;<?php echo $EVENT_COUNTRY;?><?php endif; ?>
				<?php endif; ?>

				<?php // If Venue Name doesn't exist and city set (Google Maps). Displays Country if set. ?>
				<?php if ((!$EVENT_VENUE) AND ($EVENT_CITY)): ?>
					<strong><?php echo JTEXT::_('COM_ICAGENDA_EVENT_CITY'); ?>:</strong>&nbsp;<?php echo $EVENT_CITY;?><?php if ($EVENT_COUNTRY): ?>,&nbsp;<?php echo $EVENT_COUNTRY;?><?php endif; ?>
				<?php endif; ?>

			</p>

		</div>
		<div style="clear:both"></div>

		<?php if ($EVENT_DESC || $EVENT_INFOS): ?>

		<?php // description text ?>
		<?php if ($EVENT_DESC): ?>
		<div id="ic-detail-desc" class="ic-detail-desc">
			<div class="ic-short-description">
				<?php echo $EVENT_SHORTDESC; ?>
			</div>
			<div class="ic-full-description">
				<?php echo $EVENT_DESCRIPTION; ?>
			</div>
		<?php endif; ?>

		<?php if (!$EVENT_DESC && $EVENT_INFOS): ?>
		<div>
		<?php endif; ?>

			<p>&nbsp;</p>

			<?php // Information ?>
			<?php if ($EVENT_INFOS || $CUSTOM_FIELDS): ?>
			<div class="ic-info-box">

				<?php // Title Box Information ?>
				<div class="ic-info-box-header">
					<label><?php echo JTEXT::_('COM_ICAGENDA_EVENT_INFOS'); ?></label>
				</div>

				<?php // Information Details ?>
				<div class="ic-info-box-content ic-divTable ic-align-left ic-clearfix">

					<?php // file attached ?>
					<?php if ($EVENT_ATTACHEMENTS): ?>
					<div class="ic-info-box-file">
						<label><?php echo JTEXT::_('COM_ICAGENDA_EVENT_FILE'); ?></label>
						<div class="ic-download"><?php echo $EVENT_ATTACHEMENTS_TAG; ?></div>
					</div>
					<?php endif; ?>

					<?php // Nb of seats available ?>
					<?php if ($SEATS_AVAILABLE): ?>
					<div class="ic-divRow">
						<div class="ic-divCell ic-label"><?php echo JTEXT::_('COM_ICAGENDA_REGISTRATION_PLACES_LEFT');  ?></div>
						<div class="ic-divCell ic-value"><?php echo $SEATS_AVAILABLE; ?></div>
					</div>
					<?php endif; ?>

					<?php // Max. Nb of seats ?>
					<?php if ($MAX_NB_OF_SEATS): ?>
					<div class="ic-divRow">
						<div class="ic-divCell ic-label"><?php echo JTEXT::_('COM_ICAGENDA_REGISTRATION_NUMBER_PLACES');  ?></div>
						<div class="ic-divCell ic-value"><?php echo $MAX_NB_OF_SEATS; ?></div>
					</div>
					<?php endif; ?>

					<?php // Phone Number ?>
					<?php if ($EVENT_PHONE): ?>
					<div class="ic-divRow">
						<div class="ic-divCell ic-label"><?php echo JTEXT::_('COM_ICAGENDA_EVENT_PHONE');  ?></div>
						<div class="ic-divCell ic-value"><?php echo $EVENT_PHONE; ?></div>
					</div>
					<?php endif; ?>

					<?php // Email ?>
					<?php if ($EVENT_EMAIL): ?>
					<div class="ic-divRow">
						<div class="ic-divCell ic-label"><?php echo JTEXT::_('COM_ICAGENDA_EVENT_MAIL');  ?></div>
						<div class="ic-divCell ic-value"><?php echo $EVENT_EMAIL_CLOAKING; ?></div>
					</div>
					<?php endif; ?>

					<?php // Website ?>
					<?php if ($EVENT_WEBSITE): ?>
					<div class="ic-divRow">
						<div class="ic-divCell ic-label"><?php echo JTEXT::_('COM_ICAGENDA_EVENT_WEBSITE');  ?></div>
						<div class="ic-divCell ic-value"><?php echo $EVENT_WEBSITE_LINK; ?></div>
					</div>
					<?php endif; ?>

					<?php // Custom Fields ?>
					<?php if ($CUSTOM_FIELDS): ?>
						<?php foreach ($CUSTOM_FIELDS AS $FIELD): ?>
							<?php if ($FIELD->title && $FIELD->value) : ?>
								<div class="ic-divRow">
									<div class="ic-divCell ic-label"><?php echo $FIELD->title;  ?></div>
									<div class="ic-divCell ic-value"><?php echo $FIELD->value; ?></div>
								</div>
							<?php endif; ?>
						<?php endforeach; ?>
					<?php endif; ?>

					<?php // Address ?>
					<?php if ($EVENT_ADDRESS): ?>
					<div class="ic-divRow">
						<div class="ic-divCell ic-label"><?php echo JTEXT::_('COM_ICAGENDA_EVENT_ADDRESS');  ?></div>
						<div class="ic-divCell ic-value"><?php echo $EVENT_ADDRESS; ?></div>
					</div>
					<?php endif; ?>
				</div>

			</div><?php // end div.details ?>
			<?php endif; ?>

		</div>
		<div style="clear:both"></div>
		<?php endif; ?>

	</div>
	<div style="clear:both"></div>

	<?php // Google Maps ?>
	<?php if ($GOOGLEMAPS_COORDINATES): ?>
	<p>&nbsp;</p>
	<div id="detail-map">
		<h3><?php echo JTEXT::_('COM_ICAGENDA_EVENT_MAP'); ?></h3><br />
		<div id="icagenda_map">
			<?php echo $EVENT_MAP; ?>
		</div>
	</div>
	<div style="clear:both"></div>
	<?php endif; ?>

	<?php // List of all dates (multi-dates and/or period from to) ?>
	<?php if ($EVENT_SINGLE_DATES OR $EVENT_PERIOD): ?>
	<p>&nbsp;</p>
	<div id="detail-date-list">
		<h3 class="alldates"><?php echo JTEXT::_('COM_ICAGENDA_EVENT_DATES'); ?></h3><br />
		<div class="datesList">
			<?php echo $EVENT_PERIOD; ?>
			<?php echo $EVENT_SINGLE_DATES; ?>
		</div>
	</div>
	<div style="clear:both"></div>
	<?php endif; ?>

	<?php // List of Participants ?>
	<?php if ($PARTICIPANTS_DISPLAY == 1 && $EVENT_PARTICIPANTS) : ?>
	<p>&nbsp;</p>
	<div class="ic-participants ic-rounded-10">
		<h3><?php echo $PARTICIPANTS_HEADER; ?></h3>
		<?php echo $EVENT_PARTICIPANTS; ?>
	</div>
	<div style="clear:both"></div>
	<?php endif; ?>
themes/packs/ic_rounded/css/ic_rounded_component_medium.css000060400000000640152455753310020312 0ustar00/*
 * COM_ICAGENDA
 * Medium devices (usually a laptop computer)
 * 'Medium Screen Threshold' < SCREEN WIDTH < ('Large Screen Threshold' - 1)
 * Default : 769 < SCREEN WIDTH < 1200
 */

/* Style Information */
.ic-info-box {
	text-align: center;
	width: auto;
}

.ic-info-box .ic-info-box-header {
	width: 86%;
}

.ic-info-box .ic-info-box-content {
	width: 64%;
}

.ic-info-box .ic-info-box-file {
	width: 100px;
}
themes/packs/ic_rounded/css/ic_rounded_module.css000060400000023400152455753310016234 0ustar00/*
 * MOD_ICCALENDAR
 * iCagenda by JoomliC
 * Theme Pack Official
 * iC Rounded Theme - module calendar
 *
 * @name		ic_rounded
 * @author		Lyr!C (JoomliC)
 * @version 	3.5.9 2015-07-31
 * @since		1.0
 */


/* Clear Float div */
.ic-clearfix {
	*zoom: 1;
}
.ic-clearfix:before,
.ic-clearfix:after {
	display: table;
	content: "";
	line-height: 0;
}
.ic-clearfix:after {
	clear: both;
}

/*
 * CALENDAR STYLES
 */

/* General Calendar */
.ic_rounded.iccalendar {
	display: block;
	margin: auto;
	padding: 3px;
	border: 3px solid #ddd;
	border-radius: 10px;
	min-width: 150px;
	max-width: 350px;
}

/* General Table */
.ic_rounded.iccalendar .ic-table table {
	padding: 1%;
	margin: 0;
	border: 0;
	border-collapse: collapse;
}
.ic_rounded.iccalendar .ic-table thead {
	font-size: 10px;
	font-weight: 500;
}
.ic_rounded.iccalendar .ic-table th {
	padding: 0;
	margin: 0;
	text-align: center;
	border: 0;
}
.ic_rounded.iccalendar .ic-table tr {
	padding: 0;
	margin: 0;
	border: 0;
}


/*
 * DAYS STYLES
 */

/* General */
.ic_rounded.iccalendar .ic-table td {
	padding: 3px;
	margin: 0;
	border: 0;
}
.ic_rounded.iccalendar .ic-table td div {
	text-align: center;
	font-size: 10px;
	border-radius: 3px;
	line-height: 20px;
	border: none;
	width: auto;
}

/* Styles for days (today or else) */
.ic_rounded.iccalendar div.style_Today {
	border: 1px;
	border-color: #777;
	line-height: 18px;
	border-style: solid;
	font-size: 12px;
	font-weight: bold;
	text-shadow: 0px 0px 10px #777;
	box-shadow: 0px 0px 5px #999;
}
.ic_rounded.iccalendar div.style_Day {
	border: none;
}

/* In case of no event */
.ic_rounded.iccalendar .no-event {
}

/* In case of event */
.ic_rounded.iccalendar .icevent a {
	display: block;
	text-align: center;
	height: 100%;
	color: #fff;
	text-decoration: none;
}

/* Dark background */
.ic-dark {
	color: #fff !important;
}
/* Bright background */
.ic-bright {
	color: #111 !important;
}
.ic_rounded.iccalendar .icevent a .ic-bright {
	display: block;
	text-align: center;
	height: 100%;
	color: #111;
	text-decoration: none;
}

/* In case of multi-event day */
.ic_rounded.iccalendar .icmulti a {
	background: url(../images/plus.png) top right no-repeat;
	display: block;
	text-align: center;
	height: 100%;
	color: #fff;
	text-decoration: none;
	border-radius: 3px;
}

/* In case of multi-event day (bright background) */
.ic_rounded.iccalendar .icmulti a .bright {
	background: url(../images/plus.png) top right no-repeat;
	display: block;
	text-align: center;
	height: 100%;
	color: #111;
	text-decoration: none;
	border-radius: 3px;
}

/* Loading... */
.ic_rounded.iccalendar .icloading_box {
	display: block;
	height: 172px;
	font-size: 10px;
}
.ic_rounded.iccalendar .icloading_img {
	display: block;
	width: 100%;
	height: 172px;
	background: url(../images/ic_load.gif) 50% 50% no-repeat;
}


/*
 * SCRIPT FUNCTION (Dates with event)
 */

/* General */
.ic_rounded .icevent,
.ic_rounded .icmulti {}

/* Text (Don't modify it!) */
.ic_rounded .icevent .spanEv,
.ic_rounded .icmulti .spanEv {
	display: none !important; /* !important to prevent issue with stupid site templates... */
}

/* Date (Don't modify it!) */
.ic_rounded .icevent .date,
.ic_rounded .icmulti .date {
	display: none !important; /* !important to prevent issue with stupid site templates... */
}

/* Link */
.ic_rounded .icevent a,
.ic_rounded .icmulti a {
	cursor: pointer;
}


/*
 * NAVIGATOR
 */

/* Arrows General */
.ic_rounded .icagendabtn {
	font-family: arial;
}

/* Navigator General */
.ic_rounded .icnav {
	font-size: 10px;
	padding: 0px;
	margin: 0px;
	min-height: 24px;
}

/* Arrows General */
.ic_rounded .icnav .backicY,
.ic_rounded .icnav .backic,
.ic_rounded .icnav .nextic,
.ic_rounded .icnav .nexticY {
	display: block;
	text-decoration: none;
	color: #555555;
}

/* Arrows Back Month and Year (Left) */
.ic_rounded .icnav .backic,
.ic_rounded .icnav .backicY {
	float: left
}

/* Arrows Next Month and Year (Right) */
.ic_rounded .icnav .nextic,
.ic_rounded .icnav .nexticY {
	float: right
}

/* Arrows Back and Next - Month */
.ic_rounded .icnav .backic,
.ic_rounded .icnav .nextic {
	background: none;
	font-size: 12px;
	width: auto;
	cursor: pointer;
}

/* Arrows Back and Next - Year */
.ic_rounded .icnav .backicY,
.ic_rounded .icnav .nexticY {
	background: none;
	font-size: 12px;
	width: auto;
	cursor: pointer;
}

/* Arrows General Button Style */
.ic_rounded .icnav .backic,
.ic_rounded .icnav .nextic,
.ic_rounded .icnav .backicY,
.ic_rounded .icnav .nexticY {
	border: 1px solid #ccc;
	border-radius: 3px;
	line-height: 12px;
	margin: 0;
	padding: 2px 0;
	text-align: center;
	vertical-align: middle;
	width: 12%;
}
.ic_rounded .icnav .backic,
.ic_rounded .icnav .backicY {
	margin-right: 3px;
}

.ic_rounded .icnav .nextic,
.ic_rounded .icnav .nexticY {
	margin-left: 3px;
}

/* Arrows General Hover */
.ic_rounded .icnav .backicY:hover,
.ic_rounded .icnav .backic:hover,
.ic_rounded .icnav .nextic:hover,
.ic_rounded .icnav .nexticY:hover {
	display: block;
	text-decoration: none;
	border: 1px solid #999999;
	color: #333333;
}

/* Navigator Title (month and year) */
.ic_rounded .icnav .titleic {
	font-size: 12px;
	text-align: center;
	width: auto;
}


/*
 * INFO TIP
 */

/* General */
#ictip {
	color: #333333;
	font-family: arial;
	text-align: left;
	background: #f3f3f3;
	border: 5px solid #ccc;
	margin: 4px 10px;
	padding: 15px;
	width: auto;
	min-width: 320px;
	border-radius: 10px;
	z-index: 10000;
	-webkit-box-shadow: 2px 2px 4px #999;
	-moz-box-shadow: 2px 2px 4px #999;
	box-shadow: 2px 2px 4px #999;
	max-height: 100%;
	overflow-y: auto;
}
#ictip .ictip-event {
	display: block;
	float: left;
	width: 100%;
	padding: 15px 0;
	border-top: 1px solid #eee;
}
#ictip span {
	margin: 10px;
	font-size: 0.8em;
}
#ictip a {
	display: block;
	font-size: 1.2em;
	text-decoration: none;
	background: none;
}

/* Date Header */
#ictip .ictip-date {
}
#ictip span.ictip-date-lbl {
	font-variant: small-caps;
}
#ictip span.ictip-date-format {
	font-size: 1em;
}

/* Close "X" */
#ictip a.close {
	position: absolute;
	display: block;
	width: auto;
	top: 15px;
	right: 15px;
	color: red;
	text-decoration: none !important;
}
#ictip a.close:hover {
	background: none !important;
	color: black;
	cursor: pointer;
}

/* Event Div */
#ictip div.linkTo {
	color: #333;
	background: none;
	text-decoration: none;
	transition: all 0.5s;
	-moz-transition: all 0.5s;
	-webkit-transition: all 0.5s;
	-o-transition: all 0.5s;
}
#ictip div.linkTo:hover {
	color: #111;
	background: rgba(0,0,0,0.1);
	background-color: rgba(0,0,0,0.1);
	border-radius: 5px;
}

/* Contener of the image */
#ictip span.img {
	display: block;
	width: 100px;
	float: left;
	text-align: center;
	padding: 5px;
	border-radius: 3px;
	box-sizing: content-box;
}

/* Image Thumb */
#ictip span.img img {
	max-width: 100px;
	border: 0px solid #ccc;
	border-radius: 3px;
	opacity: 1 !important; /* Added due to override of some site templates (Shape5 vertex, ...) */
}

/* no-image */
#ictip div.noimg {
	color: #FFFFFF;
	font-size: 10px;
	text-align: center;
	padding: 5px;
}
#ictip .bright {
	color: #111111 !important;
}

/* Event Title */
#ictip .ictip-event-title {
	display: block;
	min-width: 200px;
	font-weight: bold;
	margin-top: 10px;
	padding: 5px;
}

/* Event Info */
#ictip .ictip-info {
	display: block;
	min-width: 200px;
	font-size: 12px;
	padding: 0 8px 2px 8px;
}
#ictip .ictip-time {
	font-size: 14px;
	padding: 0 8px;
}
#ictip .ictip-location {
	font-size: 12px;
	padding: 0 8px 3px 8px;
}
#ictip .ictip-desc {
	font-size: 12px;
	color: #555;
	line-height: 14px;
}

/* Contener of the description */
#ictip span.bloc {
	display: block;
	width: 300px;
	float: left;
	margin: 3px;
}

/* Registration Infos */
#ictip div.ic-reg-buttons {
	text-align: center;
	padding: 7px 1px;
}
#ictip span.iCreg {
	display: inline-block;
	font-size: 11px;
	margin: 0 3px;
	padding: 1px 5px;
	text-align: center;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	-o-border-radius: 5px;
	border-radius: 5px;
	box-shadow: 0px 0px 1px #333;
/*	cursor: pointer; */
}
#ictip span.iCreg.available,
#ictip span.iCreg.closed {
	color: black;
	background: white;
}
#ictip span.iCreg.ticketsleft {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #5bb75b;
	background-image: -moz-linear-gradient(top,#62c462,#51a351);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));
	background-image: -webkit-linear-gradient(top,#62c462,#51a351);
	background-image: -o-linear-gradient(top,#62c462,#51a351);
	background-image: linear-gradient(to bottom,#62c462,#51a351);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
	border-color: #51a351 #51a351 #387038;
	*background-color: #51a351;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
#ictip span.iCreg.registered {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #1d6cb0;
	background-image: -moz-linear-gradient(top,#2384d3,#15497c);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#2384d3),to(#15497c));
	background-image: -webkit-linear-gradient(top,#2384d3,#15497c);
	background-image: -o-linear-gradient(top,#2384d3,#15497c);
	background-image: linear-gradient(to bottom,#2384d3,#15497c);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2384d3', endColorstr='#ff15497c', GradientType=0);
	border-color: #15497c #15497c #0a223b;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #15497c;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}

/* End function clear <div> */
#ictip .clr {clear:both; display:block;}

/* Features */
#ictip .ic-features-container {
	margin: 2px;
}
#ictip .ic-feature-icon {
	float: right;
	margin: 0px 0.5px;
}

/* Messages Info */
.ic-msg-no-event {
	font-size: 0.8em;
	text-align: center;
}
themes/packs/ic_rounded/css/ic_rounded_component-rtl.css000060400000004347152455753310017561 0ustar00/*
 * COM_ICAGENDA
 * iCagenda by JoomliC
 * Theme Pack Official
 * iC Rounded Theme - component
 *
 * @name		ic_rounded - RTL Styles
 * @author		Lyr!C (JoomliC)
 * @version 	3.4.0 2014-12-01
 * @since		3.4.0
 */


/*
 * Common Styles
 */

/* Align styles */
.ic-align-left {
	text-align: right;
}
.ic-align-right {
	text-align: left;
}

/* Float styles */
.ic-float-left {
	float: right;
}
.ic-float-right {
	float: left;
}

/* Table styles */
.ic-divCell {
	float: right; /* fix for buggy browsers */
}

/* Feature Icons */
/* Event Detail */
.event-header > .ic-features-container {
	float: left;
	margin-right: auto;
	margin-left: -5px;
}
.ic-feature-icon {
	float: left;
}

/* Buttons (print, Add to Cal, ...) */
.ic-buttons {
	float: left;
}
.ic-icon {
	margin-left: auto;
	margin-right: 7px;
}
div.ic-tip-link {
	text-align: right;
}
div.ic-tip-link img {
	margin-right: auto;
	margin-left: 5px;
}


/*
 * List of Events
 */

/* Box Date */
.ic-box-date {
	float: right;
}

/* Box Content */
.ic-content {
	float: right;
}


/*
 * Event Details
 */

/* Back button */
.ic-back {
	text-align: right;
}

/* Description */
.ic-detail-desc {
	text-align: right;
}

/* Content Box */
.ic-info-box-content {
	text-align: right;
}

/* File attachment */
.ic-info-box-file {
	float: left;
}

/* List of Participants */
#icagenda .panel h3.pane-toggler a {
	background: #f5f5f5 url(../images/pluslist.png) 1% 50% no-repeat;
}
#icagenda .panel h3.pane-toggler-down a {
	background: #f5f5f5 url(../images/minuslist.png) 1% 50% no-repeat;
}
#icagenda .pane-slider {
	margin-right: -1px;
}
#icagenda .list_table {
	float: right;
}


/*
 * Form
 */

/* Label */
.ic-control-label {
	float: right;
}

/* Radio Buttons */
.btn-group > .btn:first-child,
.radio.btn-group > label:first-of-type {
	border-radius: 4px 0 0 4px !important;
}
.btn-group > .btn:last-child {
	border-radius: 0 4px 4px 0 !important;
}

/* Google Maps */
.icmap-label {
	float: right !important;
	text-align: right !important;
}
.icmap-input {
	text-align: right;
}
#geo_label {
	float: right !important;
}

/*
 * STYLES for classes not presents in Theme Pack php files, but in iCagenda core php files
 */

/* Header - List of Categories */
#icagenda .cat_header_title {
	float: right;
	margin: 3px 0 -2px 10px;
}

themes/packs/ic_rounded/css/ic_rounded_module_xsmall.css000060400000000336152455753310017617 0ustar00/*
 * MOD_ICCALENDAR
 * Extra small devices (usually a mobile phone)
 * 0 < SCREEN WIDTH < ('Small Screen Threshold' - 1)
 * Default : 0 < SCREEN WIDTH < 480
 */

/* Close "X" */
	#ictip a.close {
		padding-right:15px;
	}
themes/packs/ic_rounded/css/index.html000060400000000054152455753310014037 0ustar00<html><body bgcolor="#FFFFFF"></body></html>themes/packs/ic_rounded/css/ic_rounded_component_xsmall.css000060400000002656152455753310020343 0ustar00/*
 * COM_ICAGENDA
 * Extra small devices (usually a mobile phone)
 * 0 < SCREEN WIDTH < ('Small Screen Threshold' - 1)
 * Default : 0 < SCREEN WIDTH < 480
 */

/* Style Background alternative */
.ic-event{
	margin: 20px 0;
}
.ic-box-date {
	width: auto;
	float: none;
}
.ic-content {
	width: auto;
	float:none;
}

/* Style Title/Category Header (event details view) */
.ic-event-header {
	width: auto;
}
.ic-title-header {
	width: 98%;
	text-align: center;
}
.ic-title-cat {
	width: 98%;
	text-align: center;
}

/* Share buttons (AddThis) */
.ic-share {
	display:none;
}

/* Feature Icons */
/* Event List */
.ic-event-title > .ic-features-container {
}
/* Event Detail */
.ic-event-header > .ic-features-container {
	margin-right: 0;
	margin-top: 0;
}
.ic-features-container {
	clear: both;
	text-align: center;
}
.ic-feature-icon {
	float: none;
	display: inline-block;
}

/* Style Information */
.ic-info-box .ic-info-box-file {
	width: auto;
	float: none;
}
.ic-divCell {
	float: left;
}

/* Style Input field */
.icagenda_form input,
.icagenda_form input[type="file"],
.icagenda_form .input-large,
.icagenda_form .input-xlarge,
.icagenda_form .input-xxlarge,
.icagenda_form .select-large,
.icagenda_form .select-xlarge,
.icagenda_form .select-xxlarge {
	width: 90%;
}
.icagenda_form .input-small {
	width: 90px;
}
.icagenda_form .select-small {
	width: 114px;
}
.icagenda_form .ic-date-input {
	width: auto;
}
.ic-captcha-label {
	display: none;
}
themes/packs/ic_rounded/css/ic_rounded_component.css000060400000044764152455753310016771 0ustar00/*
 * COM_ICAGENDA
 * iCagenda by JoomliC
 * Theme Pack Official
 * iC Rounded Theme - component
 *
 * @name		ic_rounded
 * @author		Lyr!C (JoomliC)
 * @version 	3.5.10 2015-08-26
 * @since		1.0
 */


/*
 * GENERAL STYLES (list and event details)
 */

/* General */
#icagenda {
	width: auto;
	margin: 0;
	padding: 0;
}

/* Align styles */
.ic-align-left {
	text-align: left;
}
.ic-align-right {
	text-align: right;
}
.ic-align-center {
	text-align: center;
}

/* Float styles */
.ic-float-left {
	float: left;
}
.ic-float-right {
	float: right;
}
.ic-float-none {
	float: none;
}

/* Global Styling - colors */
.ic-box-shadow {
	box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.15);
}
.ic-border {
/*	border: 1px solid #E3E3E3; */
	border: 1px solid #999;
}

/* Global Styling */
.ic-rounded-10 {
	border-radius: 10px;
}

/* Clear Float div */
.ic-clearfix {
	*zoom: 1;
}
.ic-clearfix:before,
.ic-clearfix:after {
	display: table;
	content: "";
	line-height: 0;
}
.ic-clearfix:after {
	clear: both;
}

/* Style iC Alert */
.ic-alert-info {}
.ic-alert-error {}


#icagenda .clr {
	clear: both;
}

#icagenda a:hover {
	text-decoration: none;
}

/* Style Title/Category Header */
.ic-title-header {
	display: block;
	width: 70%;
}
.ic-title-header h2,
.ic-title-header h2 a {
	padding: 0;
	margin: 0;
	font-size: 22px;
	line-height: 24px;
	text-decoration: none;
	text-shadow: none;
	border-bottom: 0;
	background: none;
}
.ic-title-header h2 a:link,
.ic-title-header h2 a:visited {
	padding: 0;
	margin: 0;
	text-decoration: none;
	text-shadow: none;
	background: none;
}
.ic-title-header a:hover,
.ic-title-header a:active,
.ic-title-header a:focus {
	text-decoration: none;
	text-shadow: none;
	background: none;
}
.ic-title-cat {
	display: block;
	width: 30%;
	margin-top: 9px;
	font-size: 13px;
	line-height: 15px;
	font-weight: bold;
	text-align: right;
	text-transform: uppercase;
    /*	border-radius: 4px; */
}
.ic-text-border-grey {
	text-shadow:
		-1px 0 grey,
		0 1px grey,
		1px 0 grey,
		0 -1px grey;
}
.ic-text-border {
	text-shadow: 0 0 #000; /* horizontal-offset vertical-offset 'blur' colour */
	-moz-text-shadow: 0 0 #000;
	-webkit-text-shadow: 0 0 #000;
}
.ic-text-shadow {
	text-shadow: 0 0 2px #000; /* horizontal-offset vertical-offset 'blur' colour */
	-moz-text-shadow: 0 0 2px #000;
	-webkit-text-shadow: 0 0 2px #000;
}
.ic-title-cat .caticon {
	color: #FFFFFF;
	font-weight: normal;
	padding: 2px;
	border-radius:3px;
	box-shadow: 0 0 0 1px rgba(0,0,0,0.25);
	cursor: default;
}


/*
 * LIST PAGE CSS
 */

/* Style Navigation */
#icagenda .navigator {
	margin: 7px 0;
}
#icagenda .navigator a {
	text-decoration: none;
}
#icagenda .navigator a:link,
#icagenda .navigator a:visited {}

#icagenda .navigator a:hover,
#icagenda .navigator a:active,
#icagenda .navigator a:focus {
	cursor: pointer;
}
#icagenda .icagenda_back {
	float: left;
	margin-left: 5px;
}
#icagenda .icagenda_next {
	float: right;
	margin-right: 5px;
}
#icagenda .icagenda_back button,
#icagenda .icagenda_next button {
	border: 0;
	padding: 5px;
	background: none;
}
#icagenda .icagenda_back button:hover,
#icagenda .icagenda_next button:hover {
	background: #f3f3f3;
}
/*
#icagenda .navigator button {
	border: 0;
	padding: 5px;
	color: #fff;
	background: #f3f3f3;
	margin-right: 5px;
}
*/

/* Style Background alternative */
.ic-event {
	margin: 2% 0;
	padding: 0.5%;
	border-radius: 6px;
	background: none; /* Old IE version */
	background: rgba(221,221,221,0.1);
}
.ic-event:nth-child(2n+1) {
	background: none; /* Old IE version */
	background: rgba(221,221,221,0.2);
}

/* Style Box Date */
.ic-box-date {
	width: 18%;
	height: 80px;
	padding: 3%;
	padding-top: 25px;
	text-align: center;
	font-size: 20px;
	color: #fff;
	font-weight: bold;
	float: left;
	margin: 0.5%;
	border-radius: 10px;
	text-shadow: #000 2px 2px 10px;
	background-color: #ddd;
	background-repeat: no-repeat;
	background-position: center center;
	background-size: cover;
	border-width: 1px;
	border-style: solid;
	border-color: #ddd; /*overrided inline by category color in ic_rounded_events.php file */
	/* css3 box-sizing added to prevent conflict with a site template provider who adds a 'problematic' style for div tags */
	box-sizing: content-box;
}
.ic-box-date:hover {
	transition: border-radius 0.5s, color 0.5s;
	-moz-transition: border-radius 0.5s, color 0.5s;
	-webkit-transition: border-radius 0.5s, color 0.5s;
	-o-transition: border-radius 0.5s, color 0.5s;
	border-radius: 15px;
}

/* Current period */
.ic-current-period {
	text-decoration: overline;
}

#icagenda .fontColor {
	color: #666 !important;
}

/* Style Box Date */
.ic-date {
	line-height: 0 !important;
	font-size: 30px;
}
.ic-day {
	line-height: 40px !important;
	font-size: 40px;
	font-weight: bold;
	margin: 0 -6%;
}
.ic-month {
	line-height: 24px !important;
	font-size: 24px;
	letter-spacing: 0;
	margin-left: 0;
	font-weight: normal;
}
.ic-year {
	line-height: 17px !important;
	font-size: 15px;
	letter-spacing: 2px;
	margin-left: 3px;
	font-weight: bold;
}
.ic-time {
	line-height: 15px !important;
	font-size: 13px;
	letter-spacing: 1px;
	margin-left: 3px;
	font-weight: bold;
}
.ic-no-image {
	line-height: 13px !important;
	font-size: 8px;
}


/* Style Right (Container Title, Cat, Desc...) */
.ic-content {
	width:72%;
	margin:1%;
	float:left;
	color:#555555;
}
.ic-content .ic-event-title {
	border-bottom: 1px solid #cccccc;
	height: auto;
	margin: 0;
	padding-bottom: 3px !important;
}
.ic-content .category {
	text-align:right;
	float:right;
	font-size:0.8em;
	text-transform:uppercase;
	margin:0;
	padding:0px;
}
.ic-content .ic-next-date {
	margin: 5px 0;
	font-size: 16px;
}
.ic-place {
	font-weight: normal;
	font-size: 12px;
}
.ic-descshort {
	font-weight: normal;
	font-size: 11px;
	margin: 5px 0 0 0 !important;
}
.ic-descshort p {
	margin: 0px !important;
}
.ic-more-info {
	background: none;
	float: right;
	font-weight: bold;
	font-size: 10px;
	text-transform: uppercase;
	cursor: pointer;
}
.ic-more-info a:link,
.ic-more-info a:visited {
	background: none;
	color: #555555;
	text-decoration: none;
}
.ic-more-info a:hover,
.ic-more-info a:active,
.ic-more-info a:focus {
	background: none; color:#111111;
	cursor: pointer;
}



/*
 * EVENT PAGE CSS
 */

/* Event Header */
.ic-event-header {
	display: block;
	width: auto;
	margin-top: 10px;
	margin-bottom: 10px;
	background: #f5f5f5;
	background: rgba(221,221,221,0.3);
	padding: 0 10px 0 20px;
	border: 1px solid #999;
	border-radius: 10px;
}
.ic-event-header h1 {
	font-size: 26px;
	line-height: 28px;
	color: #333;
	text-shadow: none;
	text-decoration: none;
	border: 0;
}

/* Event Header - Category */
.ic-details-cat {
	margin-top: 13px;
	font-size: 13px;
	line-height: 15px;
}

/* Style AddThis div */
.ic-event-addthis {
}

/* Style Registration button */
.ic-registration-box {
	float: right;
	margin: 3px 0;
}
.ic-registration-box a {
	float: left;
	text-decoration: none !important;
}
.ic-registration-box a:hover,
.ic-registration-box a:focus {
	float: left;
	text-decoration: none !important;
	cursor: pointer;
}

/* Text Register Button */
.ic-event-register {
	display: inline-block;
	margin: 2px 3px 0 0;
	line-height: 16px;
}

/* Text Event Full Button */
.ic-event-full {
	display: inline-block;
	margin: 2px 3px 0 0;
	line-height: 16px;
}

/* Text Event Finished Button */
.ic-event-finished {
	display: inline-block;
	margin: 2px 3px 0 0;
	line-height: 16px;
}

/* Image Button (removed in 3.3.7) */
#icagenda .regis_imgbutton {display:block; margin:0 3px; height:16px; line-height:16px; width:16px; background:url('../../../../../../media/com_icagenda/images/btn-regis.png') no-repeat;}
#icagenda .regis_imgbutton:hover {text-decoration:none; cursor: pointer;}

/* icon people (nb of registered users) (added in 3.3.7) */
.ic-people {
	color: #999;
}

/* Nb of registered people (in bubble) */
.ic-registered {
	display: inline-block;
	color: #333333;
	text-align: center;
	background: url('../images/regis-baloon.png');
	height: 16px;
	line-height: 16px;
	width: 36px;
	font-size: 11px;
	font-weight: bold;
}

/* Style Event General */
.ic-info {
	margin: 10px 0;
	padding: 10px 5px 10px 5px;
	color: #333333;
	text-align: center;
	background: #e5e5e5;
	background: rgba(0,0,0,0.1);
	border: 1px solid #999;
	border-radius: 10px;
}
.ic-info .ic-details {
	text-align: center;
	padding: 1%;
}
.ic-info .ic-details label {
	float: none !important;
	font-weight: bold;
}

/* Style Image */
.ic-image {
	text-align: center;
}
.ic-image img {
	max-width: 98%;
	max-height: 400px;
	border: 0px solid #ccc;
	margin-bottom: 10px;
	border-radius: 5px;
}

/* Style Time (in date) */
#icagenda .evttime {
	font-size: 0.8em;
}
.ic-next-today {
	font-weight: bold;
}
.ic-period-starttime,
.ic-period-endtime,
.ic-single-starttime,
.ic-single-endtime,
.ic-datetime-separator {
	font-size: 0.8em;
}

/* Style Table-style List */
.ic-divTable {
	display: table;
	width: auto;
	border-collapse: separate;
	border-spacing: 5px;
}
.ic-divRow {
	display: table-row;
}
.ic-divCell {
/*	float: left; */ /* fix for buggy browsers */
	padding: 1px 5px;
}
.ic-label {
	display: table-cell;
	min-width: 110px;
	font-weight: bold;
}
.ic-value {
	display: table-cell;
	width: auto;
}

/* Style Description */
.ic-detail-desc {
	padding: 10px;
	margin: 10px;
	background: #FFFFFF;
	background: rgba(255,255,255,0.9);
	color: #333333;
	text-align: left;
	text-shadow: none;
	border: 0;
	border-radius: 5px;
}
.ic-short-description {
	font-weight: bold;
}
.ic-full-description {
}

/* Style Information */
.ic-info-box {
	display: block;
	width: 100%;
	text-align:center;
	background: #cccccc;
	color: #333;
	padding-top: 0px;
	margin: 0;
	border: 0;
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	-o-border-radius: 5px;
	border-radius: 5px;
}
.ic-info-box-header label {
	text-transform:uppercase;
	font-weight:bold;
}
.ic-info-box-header {
	display: block;
	background: #555;
	vertical-align: middle;
	border: 0;
	padding: 10px;
	text-align: center;
	color: #FFF;
	-webkit-border-radius: 5px 5px 0 0;
	-moz-border-radius: 5px 5px 0 0;
	-o-border-radius: 5px 5px 0 0;
	border-radius: 5px 5px 0 0;
}
.ic-info-box-content {
	display: block;
	width: auto;
	vertical-align: top;
	border: 0;
	margin: 10px;
	text-align: left;
	color: #111;
}
.ic-info-box-file {
	display: block;
	float: right;
	width: auto;
	background: #fafafa;
	vertical-align: top;
	text-align: center;
	padding: 10px;
	margin: 10px;
	color: #333;
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	-o-border-radius: 5px;
	border-radius: 5px;
}
.ic-info-box-file label {
	font-size: 0.8em;
	color: #555;
}
.ic-download {
	font-weight: bold;
	text-decoration:none !important;
}

/* Slider */
#icagenda .icpanel {
}
.ic-participants .panel {
	border: none !important;
}
.ic-participants .panel h3 {
	border: none !important;
}
.ic-participants {
	padding: 5px;
	border: 1px solid #999;
	background: #f5f5f5;
	background: rgba(221,221,221,0.3);
}
.ic-participants h3 a {
	display: block;
	text-decoration: none;
	padding: 0 1%;
	color: #444;
	width: 98%;
}
.ic-participants .panel h3.pane-toggler a {
	background: url(../images/pluslist.png) 99% 50% no-repeat;
}
.ic-participants .panel h3.pane-toggler-down a {
	background: url(../images/minuslist.png) 99% 50% no-repeat;
}
#icagenda .pane-slider .ic-content {
}
#icagenda .pane-slider {
	overflow: unset;
}

/* Slider Full list of Participants */
#icagenda .list_table {
	background:#cccccc;
	background:rgba(204,204,204,0.5);
	border-radius:3px 3px 3px 3px;
	float:left;
}
#icagenda .imgbox {
	width:40px;
}
#icagenda .imgbox img {
	border-radius:3px 3px 3px 3px;
	margin:2px 0;
}
#icagenda .list_name {
	font-weight:bold;
}
#icagenda .list_places {
	font-size:smaller;
}
#icagenda .list_date {
	font-size:smaller;
}

/* Style Google Maps */
#detail-map {
	margin: 0px 2px 0 0;
}
#detail-map .icagenda_map {
	margin: auto;
	text-shadow: none;
	border: 1px solid #999;
	border-radius: 10px;
	background: #ffffff;
}

/* Style All Dates */
#detail-date-list {}
#detail-date-list .datesList {}
#detail-date-list .alldates ul {
	padding-left:1%;
}
#detail-date-list .alldates li {
	background-image:none;
}
#detail-date-list .alldates h3 {
	font-size:12px;
	margin-top:10px;
	font-weight:bold;
}


/*
 * Feature Icons
 */

/* Event List */
.ic-event-title > .ic-features-container {
}
/* Event Detail */
.ic-event-header > .ic-features-container {
	display: block;
	margin-right: -5px;
	margin-top: 5px;
}
.ic-feature-icon {
	float: right;
	margin: 3px 0.5px;
}


/*
 * FORMS - COMMON STYLES
 */

/* Style Form (general) */
.icagenda_form {
	color: #333;
}
.icagenda_form h3 {
	color: #333;
	font-weight: bold;
	font-size: 14px;
	margin: 15px 0 10px 0;
}
.icagenda_form legend {
	font-weight: bold;
}
.icagenda_form .fieldset {
	border-radius: 5px;
	margin: 10px 0;
	background: #f3f3f3;
	padding: 10px;
}

/* Style Label */
.icagenda_form label {
	color: #333;
	display: block;
	width: 130px;
	float: left;
	margin: 0 3px;
}

/* Style Input field */
.icagenda_form input {
	background-color: #fff;
	border: 1px solid #ccc;
	box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.075) inset;
	transition: border 0.2s linear 0s, box-shadow 0.2s linear 0s;
	border-radius: 3px;
	padding: 3px;
	width: auto;
}
.icagenda_form input[type="file"] {
	width: 270px;
}
.icagenda_form .input-small {
	width: 90px;
}
.icagenda_form .select-small {
	width: 104px;
}
.icagenda_form .input-large {
	width: 210px;
}
.icagenda_form .select-large {
	width: 224px;
}
.icagenda_form .input-xlarge {
	width: 270px;
}
.icagenda_form .select-xlarge {
	width: 284px;
}
.icagenda_form .input-xxlarge {
	width: 330px;
}
.icagenda_form .select-xxlarge {
	width: 344px;
}
.icagenda_form .ic-date-input {
	width: auto;
}

/* Style Form Invalid */
.icagenda_form label.invalid {
	color: red;
	font-weight: bold;
}
.icagenda_form input.invalid,
.icagenda_form select.invalid {
	border: 2px solid red;
	color: red;
	font-weight: bold;
}

/* Style button left (joomla 2.5) */
.icagenda_form .button2-left {
	margin: 3px 3px 3px 0;
	float: left;
}

/* Style Terms of Service */
.icagenda_form .ic-tos-content {
	background: #c0c0c0;
	color: #fff;
	margin-top: 25px;
	padding: 5px;
	border: none;
	border-radius: 5px;
	text-align: center;
}
.icagenda_form .ic-tos-text {
	padding: 25px;
	background: #fff;
	color: #333;
	text-align: left
}
.icagenda_form .ic-tos-agree {
	color: #fff;
	font-weight: bold;
}

/* Style Button Submit */
.icagenda_form .button {
	font-family: arial;
	font-size: 12px;
	background: #555;
	color: #fff;
	padding: 5px;
	border: none;
	border-radius: 6px;
	text-align: center;
}
.icagenda_form .button:hover {
	background: #c72031;
	color: #fff;
}
.icagenda_form .ic-loader {
	display: block;
	width: 100%;
	height: 60px;
	background: url(../../../../../../media/com_icagenda/images/loader.gif) 50% 50% no-repeat;
}

/* Style Button Cancel */
.icagenda_form .buttonx a {
	font-family: arial;
	font-size: 12px;
	background: none !important;
	text-decoration: none;
	color: #555;
	padding: 0px;
	border: none;
	border-radius: 6px;
	text-align: center;
}
.icagenda_form .buttonx a:hover {
	background: none !important;
	text-decoration: none;
	color: #c72031 !important;
}


/*
 * SUBMIT AN EVENT FORM
 */

/* Short Description textarea */
.ic-submit-shortdesc,
.ic-submit-metadesc {
	width: 100%;
	box-sizing: border-box;
}


/*
 * REGISTRATION FORM
 */

/* Style Title Registration */
.ic-form-title h2 {}

/* Style fields required info */
.ic-required-info {
	font-size: 0.95em;
}

/* Style Header*/
.ic-reg-event {
	background: none; /* Old IE version */
	background: rgba(221,221,221,0.2);
	border-radius: 5px;
	margin: 5px 0;
	padding: 0px;
}

/* Registration icon */
.ic-reg-icon {
	background: url(../../../../../../media/com_icagenda/images/registration-48.png) 50% 50% no-repeat;
	display: block;
	width: 48px;
	height: 48px;
	padding: 8px;
	margin-right: 8px;
}

/* Style Right (Container Event title, category) */
.ic-reg-content {
	display: block;
	border: 0;
	margin: 0;
	padding: 8px;
	vertical-align: top;
}

/* Category */
.ic-reg-cat {
	color: #555555;
	font-size: 12px;
	line-height: 20px;
	font-weight: bold;
	text-transform: uppercase;
}

/* Event title */
.ic-reg-event-title {
	font-size: 22px;
	line-height: 28px;
	font-weight: bold;
}

/* Style Registration infos */
.ic-reg-info {
	font-size: 0.8em;
}

/* Google Maps */
.icmap-label {
	float: left;
	width: 140px;
	padding-top: 5px;
	padding-right: 5px;
	text-align: left;
}
.icmap-field {
	margin: 5px;
}
.form-validate .icmap-field input,
.icagenda_form .icmap-field input {
	background-color: #eee;
/*	width: auto; */
	color: #777;
}


/*
 * STYLES for classes not presents in Theme Pack php files, but in iCagenda core php files
 */

/* Style iCagenda Header - List of Events */
.ic-header-container {
}
.ic-header-title {
}
.ic-header-subtitle {
	font-size: 0.85em;
}
.ic-subtitle-string {
}
.ic-subtitle-pages {
}

/* Style Back Button */
.ic-back {
	display: block;
	width: 100%;
	text-align: left;
	font-size: 10px;
	font-weight: normal;
	text-decoration: none;
	letter-spacing: 1px;
}
.ic-back a:link,
.ic-back a:visited {
	text-decoration:none;
}
.ic-back a:hover,
.ic-back a:active,
.ic-back a:focus {
	text-decoration:none;
}

/* Buttons (print, Add to Cal, ...) */
.ic-buttons {
	display: block;
	float: right;
}
.ic-icon {
	display: inline-block;
	margin-left: 7px;
}
.ic-printpopup-btn {
	display: block;
	text-align: center;
	margin: 15px 0;
}
div.ic-tip-title {
	text-align: center;
	font-weight: bold;
	margin-bottom: 3px;
}
div.ic-tip-link {
	display: block;
	text-align: left;
	margin-bottom: 3px;
}
div.ic-tip-link a {
	color: #D4D4D4;
	text-decoration: none;
}
div.ic-tip-link a:hover {
	color: #FFFFFF;
}
div.ic-tip-link img {
	margin-right: 5px;
}

/* Header - List of Categories */
.ic-header-categories {
	display: block;
	width: 100%;
	margin-bottom: 20px;
}
#icagenda .cat_header_title {
	display: block;
	padding: 1px 7px;
	font-size: 1em;
	text-align: center;
	color: #fff;
	font-weight: normal;
	float: left;
	margin: 3px 10px -2px 0;
	border-radius: 4px;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.15);
	background: #dddddd;
	background-size: cover;
}
#icagenda .cat_header_desc {
	display: block;
	padding: 3px 7px;
	margin: 2px 0;
}

/* Share buttons (AddThis) */
.ic-share {
	float: right;
	background: none;
	padding: 5px 10px 5px 0;
	text-shadow: none;
}
.ic-share a:link,
.ic-share a:visited {
/*	background: none; */
	text-decoration: none;
}
.ic-share a:hover,
.ic-share a:active,
.ic-share a:focus {
/*	background: none; */
}

/* Columns List of Participants (Full) */
#icagenda .total {width:99%; min-width:180px; margin:0.5%;}
#icagenda .demi {width:49%; min-width:180px; margin:0.5%;}
#icagenda .tiers {width:32.3%; min-width:180px; margin:0.5%;}
#icagenda .quart {width:24%; min-width:150px; margin:0.5%;}

.names_noslide {text-align:justify;}
.names_slide { padding:6px !important; text-align:justify;}
themes/packs/ic_rounded/css/ic_rounded_module-rtl.css000060400000000646152455753310017042 0ustar00/*
 * MOD_ICCALENDAR
 * iCagenda by JoomliC
 * Theme Pack Official
 * iC Rounded Theme - module calendar
 *
 * @name		ic_rounded - RTL
 * @author		Lyr!C (JoomliC)
 * @version 	3.4.0 2014-12-01
 * @since		3.4.0
 */


#ictip {
	text-align: right;
}
#ictip span.bloc {
	float: right;
}
#ictip a.close {
	right: auto;
	left: 15px;
}
#ictip span.img {
	float: right;
}

/* Features */
#ictip .ic-feature-icon {
	float: left;
}
themes/packs/ic_rounded/css/ic_rounded_module_small.css000060400000002250152455753310017424 0ustar00/*
 * MOD_ICCALENDAR
 * Small devices (usually a tablet computer)
 * 'Small Screen Threshold' < SCREEN WIDTH < ('Medium Screen Threshold' - 1)
 * Default : 481 < SCREEN WIDTH < 768
 */

.ic_rounded.iccalendar table td .icevent a:hover,
.ic_rounded.iccalendar table td .icevent a:focus {
	border-radius:3px;
	background:#333;
}
.ic_rounded.iccalendar table td .icevent a:hover .bright,
.ic_rounded.iccalendar table td .icevent a:focus .bright {
	border-radius:3px;
	color:#fff;
	background:#333;
}
.ic_rounded.iccalendar table td .icmulti a:hover,
.ic_rounded.iccalendar table td .icevent a:focus {
	background:#333;
}
.ic_rounded.iccalendar table td .icmulti a:hover .bright,
.ic_rounded.iccalendar table td .icevent a:focus .bright {
	color:#fff;
	background:#333;
}

/* Arrows Over */
.ic_rounded .icnav .backic:hover,
.ic_rounded .icnav .nextic:hover,
.ic_rounded .icnav .backicY:hover,
.ic_rounded .icnav .nexticY:hover {
	color:#333333;
	background:none;
	cursor:pointer;
}
#ictip a.close:hover {
	color:black;
	background:none;
	cursor:pointer;
}
#ictip div.linkTo:hover {
	color:#000;
	background:#ddd;
	text-decoration:none;
	border-radius:3px;
}
#ictip a:hover {
	background:none;
}
themes/packs/ic_rounded/css/ic_rounded_module_large.css000060400000000223152455753310017404 0ustar00/*
 * MOD_ICCALENDAR
 * Large devices (usually a desktop computer)
 * SCREEN WIDTH > 'Large Screen Threshold'
 * Default : SCREEN WIDTH > 1201
 */
themes/packs/ic_rounded/css/ic_rounded_module_medium.css000060400000000273152455753310017577 0ustar00/*
 * MOD_ICCALENDAR
 * Medium devices (usually a laptop computer)
 * 'Medium Screen Threshold' < SCREEN WIDTH < ('Large Screen Threshold' - 1)
 * Default : 769 < SCREEN WIDTH < 1200
 */
themes/packs/ic_rounded/css/ic_rounded_component_large.css000060400000000221152455753310020117 0ustar00/*
 * COM_ICAGENDA
 * Large devices (usually a desktop computer)
 * SCREEN WIDTH > 'Large Screen Threshold'
 * Default : SCREEN WIDTH > 1201
 */
themes/packs/ic_rounded/css/ic_rounded_component_small.css000060400000001250152455753310020140 0ustar00/*
 * COM_ICAGENDA
 * Small devices (usually a tablet computer)
 * 'Small Screen Threshold' < SCREEN WIDTH < ('Medium Screen Threshold' - 1)
 * Default : 481 < SCREEN WIDTH < 768
 */

/* Style Title/Category Header (event details view) */
.ic-event-header {
	width: auto;
}
.ic-title-header {
	width: 98%;
	text-align: left;
}
.ic-title-cat {
	width: 98%;
	text-align: left;
}

/* Feature Icons */
/* Event List */
.ic-event-title > .ic-features-container {
}
/* Event Detail */
.ic-event-header > .ic-features-container {
	margin-right: 0;
	margin-top: 0;
}
.ic-features-container {
	clear: both;
	text-align: center;
}
.ic-feature-icon {
	float: none;
	display: inline-block;
}
themes/packs/ic_rounded/images/ic_rounded_thumbnail.png000060400000017025152455753310017411 0ustar00�PNG


IHDR�ྃPLTE��������������������������������������������������������������������������������
������
�����������������������۽����������������������ð���������fdb�����������ͷ��������������������������2-.A"������H&
��������Һ�����%������0
�����񐑓���:R(
	�����������ܵ���������������zzzs9
f4
��������TUUz���۳�~�������޽����ppqMKJ[,
c�����������Ƀ��uuujkk���~@	�����������ϸ�����^^^�T	�K��ԥ����������ݗ��m�����BAAS/�����������������������vl^�����干���L776�d	����������������������Ϙ��X\c�[$�����������ű�����ń��ruї4ϋ�����ƾ�׼�̐��f�gA�s�����������ɲ��djE�;oT:eB#�J����������ǯ������Ϭ{��r�x>ȁ�����ת�ď��}sơm�?By���w��r�ko�w[ޭ?��Fm����o~��t�cXN5#$#%-%������S��1��ϛ���Ӳ�S�OP�C@v<�&�jQtRNS�0���IDATx��K�q�:��t^}L;m�I�3��5�ծ�X����&Dց����z�ޏD��� $^��W" 	qp1S�]��tU�t�M'=4��~��`(��0�㿘�3�&�&�*ƺ"h
t�
���.���R�q{�C�+��"&�]�kL�Uri������e���΅n��G��p�m�ц�!�af��S�M5�)�h�8�=���Z�yx�"?�_��yL"��oLt�פ�1JsS|����ݳF��\�qcs�a��Q
ͳF%F*Kf)
��ȬV�5�"F�Q��ڕ1�l�$ǕHC�zOL�&�v8�<:�)=;��x�9��iU|LCMg��hV[�Q�
��T��@W\�%3�ފ8aB�p�@f*�[ǡ	�<a�����$ᭇ^S%bLs�����c���? &�c�O�������S�OBt�ҋ,��e�	��B�v�ʼnR�.t J���?���b(���g<�B�)�Tl2f�l<�Ԏ�(���u-��*�j݁�4�!ƏL����3I��̰�˅=� ��'���F��&�
����7��0ǸӃ��K\\&�c���mQ�臟�J�L�����S7^t��Y�UeF���'�#��Z��5VLm�Ov<}�`�t�@9�P�cL�::�_�8:6IR�ٲ*I��(ԨTJ�B��uP�|G�|Gǩ��_C��@wL&��m�E��E�L�>���b�Mf���90,0%�	1@҃I+$�$
�3Q��m�0��@���H�Si&�D�B${x�S��bfp��̉+�j�Nh���`�l��
�4�vDz�Wc�N�g��(��I�͉W-�/��G$�zM��q8�`�
MX9�*f$�2ncZ3�g1$���`vS�3�Mڭ~ݻt���5��nbh���J^��+�8��w:��Kw�}�n�,!�"�}�>�������ǑJ@Ӹvᴽ����H�d�Ĝ������/c��Ĕ��Gr���zd:M�<�T��y~� �&�3���1g�
��.�C�6z�����߼~��ŗs�哅
L֊�ݻpI{ac�I��Ԡ^]8��܁���i�Ϭ|{�ӗoo�2mѓ۹
Ӯ�]�p�ѣ{��a�c�����b¢hdDQ�RLn����77^?yRk����+0Kco޼yO��t?u��"Q�M>|���C�[VL���F����)Ar�P�+�B�p�6�"��#���f!����eW*���@',e̔�!/�00���0Q���2#cݐ�tC{]��ѵ�*ƠA]A�1�"�Qz�YW*Mm�3eaiW���Ő���b��fԬ;�I5�6Ģ=;�0��T���1�z(a������@�:���@�c,@��`����}'b��ޣ���;�'�8�$W�$EY)��q��۝_�_u�cC�#�LJ 8�t1bˌԾ#���H�g��ɦt�B��մ��3�(�n'x��� ��i{4��L4�z�[�ncY1L�_������R���u�U������ʎ�K�j[ӑ�֨ѩB1&ː��a3�J�2D/�`˱�sw�<�o�
�`��i���w�`ݘjI����b�gn��.�m������d����6ѩB13$5�oC���m��=te�ӎ�ܴi��}�t�E_�i��r���$Q����s�hoF�Eqw0�"�"Gx8�hŨ`ѩB19<��el�����~M̲�%1���k��ˇ��xx������/�1��v�n%q�d���J!N���N���2>,��ʘ�Нqh���룴Lc��[��%��r��'�gz��uKw���Y��t��w➃{XO2��3je�+-��ݜ#��y#�CL@�\,S�H�,U�'%GR)�|n��A�5��et;�a��}I�9�ˋ�.�������
-+~�w��������k��i��l�ܹ�&ؼ����������Rf��.	f8�Ӗ�����I1�����r�����kb޳o��-Eq���ޫڮ�j��v�v�Z���Vo����܅�zϣ
o5��(Z�z|@�LH��B��L�D��$�l$B��o���v�6����{��Ͳd���<7�l�g?Q|�СB��>��UGY��q
97��QI�_�BQЀ�Ny�W���`�H;'�4 ��Y�aĎѣy1�s/��SY�%���ک���n��Z�X�
/�/�e��g[{O�JBLR@b��k]�q����ŗ
��(�\,#I�ћ��:������9��99rs���o��i3Y�|�J���ŀ�`5]��O)�|�(%E)ZK�
�����3m���'��Aߐ�5 �e�RI�R�5C.�$r�wbZ�/�����K0�;shs����'�7i�"`Z_CRR��Vdh53��4̈�L����	1Ņ�n���7��b�:g�L�Q��˷�֊�����c���&_#�m��v��'f,ʼn����HOM��!DY]��Z���1�$���Q�7��~)T��(�d9$41m瘞�,�o����H�����F��{}%Fܽ��z�/p�����^�s""-�\��5=��!S���d/���h�F��,x�b.0Ѩ#Ⱦ�#�]PG̍*m1i�����=�?��C3V���tJ�%�Cf�d��Ĉ:i$����&]��6�ru� ,1�X��(�ni�1(�=�=V�F��0��	��-a�`�����c�6��$/᪴#��W!S�73��5��t�����6�vj֒rZ�~��1�YH�n)�R�)�!c��W���D�b�F��� %�����z�{1��ׯ�?p���V�:(;p�`�I����
9:�>v��Q�&�'
��s~�0�0n7Ƕč��8�^^�z������]���w,D���2�4f�2�}��E��=�A#G�&�!F͖9������]k
�i�E}e}y��÷ʯ�/٭9�zwQ��!fŢ���z���jK/8�2�JWb�k��j���C����>�c#$E��-�-E���"�Xl�N��C�`2ZF`-�HZ&�� F��8J*j+���P�}۵�ൗ�5�dz7Ѥ(�'0��/!���IB�q1ڋj=��">�����a��'���g2�w�w��Lb�؎��t�_�"&�ǖq����q3������]E�ՙj5���dBF ��+ςT�� ��I��g5�K^�J�/��0��pCֽi��;u���r�98��<��3ćd�)p�������HU*Z%���t51A_(���
��ʅ+��+�%o>_����4---���6o�}��u������I�ٽMc�̋��±8]M�J��}�P(����憐/RQQ��DJ!b0�y�e:�yﮇ���>b2[br�otM1��H$����?�𴤹�IusIImm�۷��h�3>�`=�)p��̙�4dS�t�Ri�~�R�ӳ'���t11���ʊ������/^TUW���_45���o+K#�	18���#���"h���>{�b��F!���Ma�k�<e�������	�b1�Ws�zH\G�2���`C��q���}}����˚WUU�lt�_9���z�yV.�h��E�XD���+n��MӋƠ+\���ɓ���G��	8���Y���zt����
����%Rw�9�~]SSS��?=��9b�@���J��TNnIK�Z	�@�SVƼ�@�8��	�7����H@�i��o�]c��'�x�Pb�J]hT���
�Kd�0�E�?1][ð1G�����^B���	�ŀ'DZ,ˁ�x�D"����n��[ᵀX`��"�_�g\�M��3@���@�2�/`&�>]Ļ��-��:��i{�sz�_CӦ�Be���-�Ԥ
PS��An�l4P
4����9��%8�3$N&3��,�xɲ��Ƨ��x��A}��)޶�I"гn���sx"��wΡ�~AIu�%�]����[�}Pab��/��ř3��l�����(��݃T*���G��c�Q�������΢S�Vy�S$�ɂ{#��"���o1��?d�xk'������41��2/*}R_�GŹqa��B�q$��An"��O�P%`�ԥ�>��'�s���	>�ࡿ���k�1��O��:O_�xw��;c���\{��!�ᮞ��[�W	�bD"|�[��8�7��{n�ڛ� &��j��*����Ĉdz�NT/��n��w��Z���u��`q'N�%1=
#��L�\�HDl���v1,z|``��Й,V�Y�:��@'����`������u����!h؛��!�"����KO����H`��M\��s7�{�)���$�Oz���p��)����
�)L<q�	���:|*�̃�yr�#�F�Ѿ\��1<�[ls��^U'7Ru,&���{9ӌneUU���mb��.4;��Y7y�5�Em��#�-�3X�k�\V����&�1HƎsl������'c9M�:��)bF1��F9 :���`�@/�S�,��%��\�X��Bh��E�2q�@���V}+�p�箙R<؍	ϒ||�)�R��:�����&@41p�K�(d�;���,08�r�A�'ޝ��t�V���u�'�aol�	��2�%�*�l��ҧ4����cj�{������`k5:�Ψ�!������$��"
0 ��hT@�A{�1\|&V��4�����*��A{?���j���R����1))?�`�Mp�PL%�����*N��(�7F'eT�:�.���+M����,��em�HE�=l"`����T��6'"��`�c5�O*�kS�h�?yt���/*L��q�8^��Y�Y..������o<
k�D���
iC��(r�ayS�L1�Cs
�B�DF��1��G���c�� ȫ�gmT#�g���Z+�� �Z�0hjlR7"M�)���E��� �Ā�I��H��u�^/`q��A����g�\�����]�P���g��˫���j"���;�!�$Fg���D��7T�Y,��!�W$����7�����7��k�H� F}����Ϭ>�zYM���t:C��*3T]��W��e�I���)L���b>1W>�t坪�+O�@́��垦�/

���b
�bP��o���Y���F�A_]-��+E^mS
V�m� ۊ"f��1��k�1C^d$T�젖s��5�c���,�� ��J�T�`�pjq�B)Cx��?XG=�'��"���n��>����ǣ4R�r��PM)]�8���M���e	�
ftZ�Ki�q�M���Q����t�t�rMR�0��#�y$
B�R(�b�	��T�
��E���j4��Dd�2'�\1<w�$�*J��@�	a�P,��KQ�/8�NB�GT��`V5Wh�.�r�0^�M��rI�Hf08r���DC��n�26�u�W��#��n��ժQ�yH���עih�j�l.S�d������L&S���
u�[ &7�\���Zр+�錷��[��َ��01��5.��n�#a�%d��SQ�#bq�C��h	�;��iOZ��q���rn�[���x�=m�'���8���813����E''-�P������ڽ�p�sD�a�^|y�Cx��<��@C3Th��m��f���#���3рev2d��<�h8�4�,����i'!�ǿ�0\�hȟT��э��T�8�����fXa�z�[�Z~��o�&]&�QdU$)�w2��v5k08d:��U���T�ϥ�ł;��.�O��h��#.��IgS�t�:�6���|b߲o���xX�j��>c�{�3�f�D����Xq��aG*J:f�
�:g��@ 0�%��5E�8�F�I�۵��̹��XT���=���T��:����d�8U(��
K�IǤ)�p,���S���tv2�z
,Y&�7ɕ��H�Q=+J
,r�v���
�Z#0V�)K]�ݙ�B�]��n�XI���ܮR�A1����&�kc���vf�g���;SFqKS�<����v�7π�� m��_��c���`C�a����3�X���pEc��L���.��2Y���5Ua(��<��(��V������̙��`!�q(����X,�y3y��#d
gӅ@Ę/�7��l�a�M<H�f��+�r�Sa���&ft�%:�ٜ��M
.�#Z�F<�Hqs)�lzl�K��C:k���]�̈�s&�͓tE��%{O�EjBu��qZab�6~��7�Yx�L�챨���i�bg7��9�g�K��^c�#v�w�F�_O�������7�Vk<
&�ȴlE��5�NN����̜-�}�^�[Y���~u)��T��\�ͳg�^~X�*��c4qlD
{Ҷi9��B,�9l��XUR!����3��`�[C[;[[[[[���������&R���+���0��=�ߐt���ѫ�`�/�$���H]XW���k)�;6:�"��:�ȑ@k�1�������Cش��'x�)���)I�P�a0`6!��FXH[͈�jFx@1�;;�o���u�cm��F��޾�m�*�!�=�bh7���unw���[�]}�z}����B�
�R�+��w;_�>���_~�;�?}����/����$����S_~��Ĺ[[��`d�����Z&�����WL{��篼ue}�y6��'u]��H�*+¨zpk�ë�!��>H�Q+��IEND�B`�themes/packs/ic_rounded/images/info.png000060400000006532152455753310014167 0ustar00�PNG


IHDR�a	pHYs��~�
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATx�\��KAƿ���q/p6..ANl�\�W���)$1�6iS�S�����
i��H{&\#�*��������Kq�z������}�{#"t:! �Dnj1��,�Z�sa���s���-%I�5����a&�R�3���9�Ƙ�EQ<7�|��]�$T��건�$�,��[�D��s�<���,�~�Z-AD�"�R�T�1c8�888���!�0ƀ1!�V����fι) ��-��:�1*�h4�R
P� ����¦s��k!wΡRE...������:�9�D�v+[��z�eY��nc{{{B��Wj�kZ렚RJ����RJ<�9��A
������PM��־g�9)������8�@D(���EQ|3�LƘ�,�&�
k-�8FEh6�X^^�������s����$�K��1+++H��~kkk��
�ã�p8$"0"���������0���Z0���y�L&V)�A)u��9���TAU��n��1.G�Ѥ,KW����`p��v7=�;會1������t~~�D�^�������a�,�suu���z����޶�f6�@��=�^u&`�0�.�`�nt�IEND�B`�themes/packs/ic_rounded/images/ic_load.gif000060400000061373152455753310014613 0ustar00GIF89a@@����DBD���$"$���dbd������TRT���424���trt���
���LJL���,*,���ljl������\Z\���<:<���|z|������DFD���$&$���dfd������TVT���464���tvt�����LNL���,.,���lnl������\^\���<><���|~|���!�NETSCAPE2.0!�	?,@@���pH,��Z�b�ǨtJ�.<���?��J._�,l�E��56ۇ��go�pCrt/�awe%|kkZm�^�b�����Q"0�0�~o�Bs�����G
0�k�ln]P_`���7��>�������a��/����/���ɣ�̻�φ��7�(ڲ�}�߼֚�/�7w>(ٱsG+�X�0�EL!iт�@���
P�bg�2Q(TT�A僴i��p₵*0d�c,Pj�BȜ��sY
�i�
�25�)�B�Vb|�����T�H:�fG���AW�j��TغiW�	�1W��^Υ��[5f��C��B��=��������GXe���H~a�7rd�2[`�r����A�A�t_ɀC���sl؟w�"����}E�}
���68���u�m�`.�B��vD߀(	
�g��]��㣯H�C�u
׭׾�>ʅ��`x?<p~^�BR� ߀+DH^T� �%0(��F��
<�
��h�yXix��� ^�
4R`b�2�����;h@#4I�:�3,��;�@$
DVICI��O:	#�I���eY�
Or��U��&�Y�kr��M����M�9��Dl0���:y&�����#�2p����^�A�B,��B:�Ld�i��i��.��^
+�p����+�#lP�<p,<��=�+�#p@�FK�<@��$����#��Ԇ[�S���ù�l�CT[���k�7tЃ���	��� �l/�=l �����

�Ё��;�C�2l��-�|��2:DK�0K�@�'4`s���t�(�r�2����ls�%clD.�Po��TP��G'��\*��
�-�
���X]Ck��@˵�u�P+�����%�m��G�O�}7�*�P�a/4P��}~�ʝh6�wk@�:��rv\PA��9��E1@݇k������ܚA9�^��D^�S�`7�sn����d<0@)�{���7�T$�y�w��	X�@���#��@
)܎{���v|��{�}���HA�V�� 1H@�w�8Pw���>��Ůs&�`�l�?���@�D�	L���7����D,�<
�����C���(T��@�Q�0�0��
�o�.�C��p��{���r�$�_�p��0#�"
��0-H�ai`1���aI��TQ��ָ�8l�6!E8�*ZQ���^����:�!#�C�����$ut���X�;y��`)J������k�V0JN!�	?,@@���pH,��F���! �c
�.Ǭv�]���
����3���W��B�0<j6�A�1/p�E	(�ux�QQeh�����?4(���{d~����p
�����b��i��o$8���uuya��g��C�E!88���wy�}��D��λҿ�Ž�{{���?��ͪ&��ׯ��|�r�R�Ň3E#!�a5k�0ȂA�����j�y���(����	��7��@��>H�f���0�G͚�$��`�S���\���i�X�xvS$�;���gՓC�وʵ�Ȝb�5Ҁ�]�hS�H���ۯa��t�v�EKc@_#9��,8��40���P����;��� �k�?I�����)�Y���v#��"u�.���E��U��w���-����s��7L�����/�K������]�߂����1����+�G\z����7��,  u�Ex„��`螂5�<���^p~�ĉM,���G<@�	��!�"����0��c�7� ��6�A:f����	*��S��1:���#J@�6�ve'hɥ�"���"�9��E\���s� A�^�)Bhpq�;l ��[*`�wJ ��}
�'�����v*J������vz�
�**�2�PA�Bp�j���0j������`���nzB����
؀��P���^0�
4���ڍy��V��X�2��*��A��0C��V���r�m�x�����ú쪠�������'���$���W>0��/[ ��:�`@�:.0�0�B4���g��I*��!ϰ�/�����~0���rEԀ��9���c~0AD
����#���&X`��-��P���	у�9��][�@�a���Q�=�!��v�9��c�B��=�Q�|���5�68PyigrA-�Bv�=�\GL��U�.D@�&��@�

t�x�P�Eq[��������W@{�۞��s��W.��>A+d.�
4PA	(?{�s~��n|�B����>d@!D�C	cG�|9(@�W��y��\����
x�������/�A6��d  ��G;ڡ�s�CD
,�:�a�~���c��� �!��Jؼ�ib���g��/�?(�8q|50_�֗����!�0�D
ְ� ̡
X���/@���#nP��ZEX�
��_�yAB��-r�	�an�C:��cQ�����o�?��l�{:A2��t����dj 3Tf�+A���`;8�&�!�	?,@@���pH,��F�&aPO`��.Ǭv�]D��0j�(��4��[p���'#"���0�F�!� 	/q�E)vv8OOPPgg0� !��
$�w�b(e}j�� ��\'$���8��d�~��0� <�G���x8�|������05�D14�Ѻ��a��������4����z��'
b�%��p�
4���oݯH��l���C�b0�ȏ_�iv�a��
"�Ȕ�c�Z
X�i2��]L��eFm�����N�<{N��⃡6,�X��"��x�d4��0��p�Xpʁ�S�]'�{n��Eݱc������x���<8h֌x$�����[hre"9x����p������2��搙�Sбe��=�6�
�u���"ApѦm�~��ɓ��a�9���?<�=dCL1�,g�]vx�������}��^;�x�^Y �����2��&_|7�pC|?<@�5aC�
2H݃7�����8����>���*~PA�0�8 'f��8>�B2�(�?�hB��u�b�^�>6�cDj��
Pi�
Ƞ@�YjYA�Y<p��d�y�[r�e���YD�p^��*���nA�	�yŸ� 蠄��'}��g�:h����
:áD,��|Z�覐j�&�p��~�����j�q������)�ڨ:�C�
q��{C
�������.�������!�����U+��&|���Pn���
�÷&`»&D@��[��P����k�&�p(�+�[�����/�4lcn~�B��[oe>0�p�/���O����۠��F��0�L��
����K�S��s�!:D輳���'-�+=1�D����L;�����`v�C/��iC���]�uF���m��TcmDp{��>���}0�x�=�3�}�4�����
�]�#0�z�-��E� 8ؚ@)�m���=�.���^�
|=xᮿB� �h+��A���{�`H�n}�C���l�C�ϼ�.����?��	ԟB40@��A5�A��-oy�{ljQ��/{�_Rp�� (�+P�|�;_�F7��š��^��Ā�H�1�AЃ,���'��1{�`�7���,�
=X@*o��_��j��-�`/�D%v0�,��7��g	A�8�
��J�Yk���o�K���>���`	j����=���&��6�O���8��u'��
�#�Q��
�ҫ�k=� `����<D!�	?,@@���pH,��N�%�p8�Hb�5nǬv�]%$$��	ŘQ
�,���S�QH�q4jN�k,)/r�E/�$�abe8i~kk0�8��
4����Od�h��0�0�\4��xa�{}���;�G=<͹4мa|������ (
�D	,,͸юzP�ؘ�� 0������w��ܭ
��z @@a�-"���(h�$��#([+n� �S������42,��DD���`��=9x�R"�~�XX��eA�@*I@�8D��ĕ�4�p(��`LM�-j)غ��ъz��aB�ž�ݢ8�ŁV�B�Jd��8!=0$d�2-Dh=\�(�Y��`�vde[�����P"F�6�B���\JH���k+fgQ������ @��#x�5B�H�&��O "�s-P��|2�c߭��w9d�W��C���'�����h�u�g�z2����€?8`߁�ɰ���h�/�<��j*(�y�a��<��C���$�p����Ԡ�*�b�X̘�����)�c�>�$d7v���|�Jf�“ZH9�`Ni��@&�;��a~	�&�)��yD�a�����9���=p����ph��2�Å��硔"jA��f�F�Czç��&�jj�ur*�|�j�!�Z�&X ��?�����zC�Z l�\�+��"{h��:�
���	P{����0ð6�`A�68�	�X[�'|���:�s�^p�	֚+Dݺ뀾$����Ko��
Q��:���'�{�' q�'�{@�6,������O,p�C��L3y�ak���� �<1,L���%�l��@0���r�9��tO~���>��0�Ft�t�J�u�'�
^G��C��J���D����5�>�|�|CL�r�Z��1���,���r?�u�G�����1p=��3~��r�-���w䒇C	t�7-,0C���ӫ��֑ONy	�P@��0���n��_���ߥ��)dP���m0����_pH
�GG`~���Z<p�=0��_��
#R����=��A
P����+�:���
@~�˞�f@�84�r���X���%�AD؀��(|�W?�-x����?r��@DX���p �X8�UH������8�!	}���`����T �CsP��p�5��	Q�@bo�{�
lr��P��G؂t�=�@U�=�a��A�(~0�
���+ʏ}B��j��(J��%�d%�7L���A?�H������n�d�7�
�l6A!�	?,@@���pH,��^ƧQ1(�B�J�nǬv�ݤ4�0�A�AIha-�,���S�pXxqJ!��8�8/r�E/<wwyzg}kk8�	��
<��,defh����((�\6<���a�g��8��(�G2Ϻ�,�c{}�����(8
�D""л�ԧdOfi$������?��碍�s*�$@�2u��
j���ܳ]��zL�<L�t��S	2(�(w�(u�d�p��G
2(�R��=�0��J�Q��.F� �E,Y�1�ϑ�"��@�
*�M��b.="�9�D,�@!���`�-b%kN����x�5kP�\q(��CE�)z��v�����
Z�Р ��G%��G��[���9Ǒ&�8v٨�	��������0@%RC��&�M����
sg{�D�",8�{��խȎ�;:
i������UxM����y�{1����
C�E�q7�4q�`�������
pN8�d�a}��[,�^�$���`��*ꀠ�0j�B�D�X�&$�����X$�7�`�	W.�#`Oj�ÔD�`��c���r]a�YP&�d���8�`�v��ߜqD�v�-������.8�
�>
鉆Z�(��~i��>�B��e���:j��@�:�/��A�� 묳R������!�0k�.�����B�Ⱦ���2�=+�ԾJ��b[��?��Ǿ����dnM�)p������$o��ޮ����/���{��+D
��p�!��'�G\�!?t�0�
���> q�S|B7��l[�7�pA��<�'�A1�P���2�1��(Gp3��	=��t��AFW�s1$�e�\�4�=�t#X}u�	$�i�^�6�.G=�8g�u
xg�s��v�M���i'�B��A�9���
�	rQ�݇��9���;������7d`xފg�C0B�e�|����N�ߴ�ޭ��z9��@�\����:�'Py(����}=�-G�,���?�w�pt�9�þ}���[w�3,����^��ph��W��U��_ЁL�+X�&��Dp���BDZZ�`x�{_� ���(�V8�	�`0�7�?�up�]춇�ȯ&�	{@����\@�dH����8@y?.�A�
UhD$N���_w��}<��_I����Gt�ic(��w��A
�@6fQ�[�)�%.��y��E��+$ah���C���(�"±�/�b��h���A�Ѓ#������'�lq��npIO!�	?,@@���pH,��A)b1�x<�A�nǬv��,��H@�r�,��I����Ӱ�$xI�,0�Y,k4
/r�E:
2
w"cP<h��44��*
���{e�hj���$5�\>*��2wx�|~������G�����b������$4�D�:������}}����$���?:���R]�f��m�(x"��6>�J0e�9�N=�g̻W���#��!�*X�Cڹi
4���"�0�p����L�O�;w�4���/
z�ʲ"��n@��C�8;,4����4.FH�s ����0��.\�EJ��?#��'�kW((�ؒ@�c���8���[����-,��ۤ��
*9!B���(b5�ƒ�۷I�0Cu�&6#F,E:8X������x]�p`c9��&D?�A���֯# @Y��3w ��#'(�G�)C|��gCv�eтu����,q���.xg�b	�f��z���x?t�(�_j��u"� #��昢3-f���Ɉ0p��>$��9z`�Y��DVy�
��e�Lzp�YPP�@�Y��e�ȁi�d�P&���Z����FTP& �	B�:�p硈�Ƨ���r�@�V@��(�)� ��SPZ*�olZ
��
(��+��Z �k���+���h��
�C85�,t�
��V�,
Ġ��������PB��&�.�	|-�Z�B즫n�D{@�֪0��	��B�)T��R�7�p(Qm/<�Bg�j�GT�������~��#dr,��&� Q�E\�1�-�P������2��C8�s�p��&����E,�3�G��¦Ng��!4�Q�`� v����Zs�R�]Bo�
m�/<���[�-�$-v��PCK�����}w�����d�-��-~�7 n�݇��E�x���g���{�@
�ONz�-�Nbe�pA���x�Y�씷��#X���;�?�3_{��C(�'\��g~7"���|�?�/q�	pB���^>�p��h���u`{H�F0�	�`�_�v@����s^���Ѐ��8�`'\�7��
� �_�n�?�at�	��P�
V����'��j.о��~#d�fp�>�.�a3x����8����P�,da����yq'!RIhB*�+�A-���P5�A���*q�X!+xA���3X`!�hE"��'���p��񌈴��ȱ��/�ẉ�2� !�	?,@@���pH,��Q-�r�2��+
Ǭv�=T<�J�(�Β�H$0e6ܸ|��xtx��	��%�<:/s�E-6�y{|g2jk�<X�s&&�:a*�
ll<�,-�\7&��xyc�Ph"����,��G6����{e~��Ǚ��<=�D
SSԻ�azfh����,��?%���D=�,J%6�b����
<|�U��4
4���)I�����=�-xj��4�����"F�	\X �)���
:�A�BD3<4i�r�.�&��tdC�J�|H�(�r��@�iSufL�s"���'�v%A��.B�U�ԅ�t>�>{`+W�$s8�%G��e��-�v�BS�K��-�
مR.:�+rA�Cĉ;w�p�C���Ê�F^8(�ysg�02 @�ܸI�����#'��{E1B<�.z�o�5��Ν;�CC&DO?��Z賜ఽ�����|�՗[
�m�A{8��qAVH�s�%���6���, �1�@a���Z�Р�~�BBP�'R�!�YX�A�2>��Đ��7�A<n1�(`�l���X"��Mj���RJ�

�p%NYIU�Fx0�o��A
8�yeL��E
pF�( `�tJg��y����pӤt�$��F��0JCPj
o`z�"�)꫰f���F�꭪�î��z�EH���P@���plu�
�í�FK@T�����ڬ@A��B@A�Vkn�\n�������P@	����z��
�,p��V��C\A	Dlȶ6 �����s�p
�K[|�r<,q
,�0@��,s��@5��r54���2p��
�Bܠ3�<7����T
�Ct���N7�B?w�B�$
Dl�t�^��˘VM61�H�_݁�p�-������^���=���>QGކw���,�deBT���E�ۈK��S�D��05�YLp8� ���w��D��/�N��=�0�!�����:� ���>��,6"�#���l���S?�\������#�z��� ���?��p��t<p���{����;O,|���
�`8��w�
^�����7��=c��n`;8�
p	^�����>�f�_�HXB�p)�	"��	N�3�!
���o� �
L����ta)�>r0?X�yXBq�d��(��-8��O{�TQ�Xl�
��E7v�,�	Ϙ�4�P�[ |�t�)>���� ]�G6�8�
��J��d⽄p�=��/��u�!�	?,@@���pH,��Y+�t�Ǔ��Ǭv�=4B��@�A5��bm+���3�,a�a�3h�h*k2
25r�E6wxbdfi�2�
%/��3��w&a|������"""
�\)�..��cegi�����'�G+����x���h����"�<=�D�SS��6�yŘ:����<�	�?5���a�*U�*aR�f�Z����!�"R�4iw
��0��	
�L�~�(r`�T�0}�!+�ȑ��HC��M\�ҟ�!��H�ů�&`ɲ��
[��T�b%�qND��4�Rw�b�`t!��r8�ؕ�n�E��٘=DX��Asr�ڽˀ��[*���RF��1C]���m@ˊ�''U
s�f"te�x4
5�|�#��͆���vܵ}���D&����ъq���m
��ɐ��o��C��n��Ϳ��YȂ��OG����0x$P��_
��P�Z�@ÀR@	qA�*� �	@aTxa�����a�-&�B#j��8�@	!QO0ˆ��5a���H��~�ӓ/��[�Y����Kfy�<	%O�Q�Y.�8����e�OB'f>��&�g&0›9���s�@�x��
-P��}�Z�F�Ph�ib A
%d��m�i`����b�B��j���<` 묲R������ݫCH���������*��� �2++5D[C�R[��Ɋ�¶�2�-T+�������p�-�Ѐ��6�n��@�拯�+�������/�(�k���+o
<�l
�C��pB-@���-\ī0X\�ɉ��q-tЁ��RP��&C6@�8����?�l1Bl�����*��?#tK?<�2�Jg�«<��%�,�I'��h3M% @�PC�d��w�=��bV��nCCx��#�3�; �m���u��C�O0�>@���v�����陏0�jk'�?�cp��c>�����*�N{첃����y�3,��	/<�?.�/��7�|��K?<Л��ϰ�ޯ���3"���W���+���">@�"�����ط?�m`�pꆀ/ �� =
�b���A	N�8�n���.l!3HC!������=�9���O����-��?0�A7d���>B0�"/P�x�7�!Ǩ�(n�U�bO��PP�7�p���%fPxd�v�>�1�[���(F2�f,��hB�0�*<A'���q�E���"���,�@FH= ��$b$��B9��N|�&��"�Ћ��a"�����%)�!�	?,@@���pH,��E��8l[(�kMǬv˽t.�cl�Z,&�a��Tvܸ|��$<W^�tD�&:�:.-s�E>�>ycOeg&�l�*5��s1!�x{b6~hh���*

:�\!�>��z|ef����**�2'�GMS���adɛ�����2*#�D1M�S���ݗ����
2�?�]հI{��d@��q�dH�'!�(F
$�� ��l�VU�q��M�'B�R#4rd�ۻa�\����B���L���L�J�DH�hC��2b&,@�/����Q�J���s!C�	Rh�X3[��.�%CXx�.�U��S�7^K�!݋+E$U*�Gc���@�,Z�3c$�'d�����:�Aڂ�
9rT�u��D.�ݸ�c��P�@jՖ��8�ȋJy� M7X�,������Q�9nX�hT!G�RW����
��Ç�uȆ��[G��	���,@D����y94П�7��0�����O�����
j�BxVh"\?,P��+rX�.!f��&2@��1�A<��a	 Ƙ��P�H���5T�d�VЁ�ZL`�H�x�	5t���>�G�"�HÙgR@A4P��^zYߘF��&
j�n6�g�5LI�-�i($�0��o���k�q��$ ��
=4Ђ��YX�F0@B��Z�C-����ӀZ���+��jk�ٹ:���뚷ڊj��
��&�,=t���[��,�4����m��
`-�K�x���+�Z[-2�୶�0�Ş����K��ۃ�0��?4���8�p$����p������7�g<��'�*��� ΀2��0���
-cвBpr�DO`�j���>���m��#�0���������3w6��V[�@t�
���K��AldOP���)��{��sE�=�t/�*�;��0��5H�p�܄^�
+��@��ޠo�nun9���q
@�� �7�N7�+������ ��9�0�'���;h����{C ������L�8H0
wg�@��3�'�������5 K��<��'8�
��@@����,���6x�\��`` �?�� 0��p��i���fx�<�/��w�����;�V�ʏ�2� 
mhC� �:,	MD耈[��aC��5��
q���0+>�"�@`A�<��K�z�x16�g�ᒄ�C�!��@���ֱ�h���}�yA���D��O�@͸�4Ƌ�
yH;��e����N�7X�)O�I(�C�2c,GyI<jR�hd��2�ьXdD!�	?,@@���pH,��ͨ�˅�@*U�-^Ǭv˽�
�H$	�}h���r�Z�|>�,J�DX�j.km6=t�E39)y1z|ePP�k�.X�tS�1�c}Oh>��6��&.�\-����bbfP����&��G%M�)	��a��i��6��&&&3�D39�9Կz{���m�6���:�?&��<Tڞ��-�8r�t�H�HԀ	��uj���4�e���4Du�B	��
�!E�
�0����q%��0T�?:\�|���j
V�:r�E�|�Ɲ<YT��snT[b)Fwkl���
�\SjP1W��
\>�1Vi��M*�H���V�s�P�@�3-����l�Sӭ����b�
dx�r@gN��_�\��
)=��ZF�#:��\�r���|��X�b�2hkx`dC��9OO�}#x�^C�N.A�Q"=���-�u�#�.A�
�?th1_|���g��#���݉�^
D��|60^`����^{"�0�H�x�1�(ˆ#J ^?��C+f�!:�& �&
`c
BL�Î+�H��1f�6Ƀ�0@K��-Aj1�E
���V>p�\6��yQf��<�i%0��J2�&|aÙg��A���k2	e�GtP&J(>,0¢��&��q�J)̰��2G�G�p)�`�p�j��>j*�J���j�#�ZݫE�������3LP,���,�ʀ��� ����:<���<�0�Ԃ;î��
�40��l ��~����r��hp@�����^@��K�|믿+@�lD<��f��+,�����C$H,2|���
�`�<P@��.�qu;p�A���#s�@� �)�\�pj��$0
�J?|ps�T�`5��N@��>@��G�V[}үʀksݴDܐs�;���XG�8���$dP�u~��Fy	}�7�lӐ���}�'���~p���|�M@�~v�_��u��
8�:�
+�ٗ�~�'������7������y���y'p�¿�z�(��˧��7ܐ�3�0=���9	�m����
Ԯ������_=

��zw�������Dž8������Yo4t�o���o�/��ꆰ�0(���WA�Y@� ��P�p��X���"�B�P#Ԃ�8H��p���>B��?AQA"��|&H���7CF�����}�C-j1�ED��#����"[���-�q�Dd)~�/����G�1����ڧ�(І!��"���,n����>D�;�N�l#!��$.JT�d�6�FQ�4��+#��D$+�����1-�,Ѐj&�!�	?,@@���pH,���bP�eR�L�Қl^Ǭv�}�Z�Bn�)��X,�
.ܸ��iM�9�z�%�!�s�E
%%abdfijl!>X�s-5���x9Ph��!�>�3�\

M�S��{}�����7�G-�����bz�	�����.>�t-�5�Ԑ�|�k����..
�?���ӿ�̴zu	-��9pP���}���k�2P*�6O�@m�ѡd����U�P�ǀ=i�4+��?~�q�B���$!6�8�ƀ��\��Bz�\�a��9^��@򤹉= ��"DDžmP�`c�0a�4��q/j@��vmU̴,�h�r3���`�ZU-��l"��#2�,��[|Dn��y�	L�2aBf�Zp
�ȇkM�6���'"'\��]�A�,�)K�m@��E��z�뗴�'�a��s:,(�q��t�?k?rÁ���5� �bƌ	�Ϗ�^��߁������ه�y#���	8 �~v�ڧ�}�<��R��
$6�����}zhD�0��*��8�a�.
6�$*��,��"�=ja�A����#\�•X�xM�A�S�)C
'���h������2��f�y�+ܵ�3p�	�28�Ýu���Fh�'�� ��n 餒��H�馚�����N�B���`��"���;���\����*�2𪫺�z���j��`��;ki�C �<+�'�l��.��D뭷&�p��fW��<� @����V{�	��l骫�%�0/���1p�������_0�'@��
p`���k�G1����,��[��x�2��:`2'��CB|���7���30 t�4��=s|C�K��.j ��,0P��A�t�8�h4�=��%��t�N�M$���
�
����s�NwM��M> �
���pD�y��7i	�.7<����z���l����9
��]���9�O��	@@��N��[��p�A�L���N;	4� ���z���`@<�$O��G��?���C�<x@��8\?��$�pH�?ݺ!��X>��
00@��x�	
�Nz��Ap����xD����|Fp � �R  �� , �g�f�(���0�N0�!
kh��p��s�����	�� @b!�Ez�;,`)p���/�bixC'" �PT�za\d�	&Q�K��	F�`Mu�"�(�%�уo!	" 2��.�b���C�H���4���H��g�E���"�*p�kd���	4A!�	?,@@���pH,���j��TJ�Fc�ؽ�جv����F�Vzιt&S�\��8�0hI���Z*�k)�)%r�F=-v`xOO}~j�		1��rM��Raydh���11)�[3=�M���y����)��%�G#����5������!!�s��Ϲ-��{P~9®����?#��=�����T�]�l��͛"@��6L1a@�r��#� a�^�b�С��L���"F]�jt�Aq��������Z �1c�J~�B��0�D�e*dI�a��|x��ł	E)����G�Dz$XX�����`�]�Y��Fه}�u�E�Zv,����щV�r �ɫq�؜"˃�3��u\��d"R\�م\��X0��h��O�Pnkׯ=\)raE�Š�]���¯ؘ~�Ȇ
ƍ3������K�n���V`�@[�b�ޏ<����,����ć��MgC~���uש��q�	hD"h�	��
;�0��zJx�	Xp�bX�'��b��p��Ed��	8^h�B���/^"�F����`�/�p�O>	dwD�’Ib��<e�P�9c�C��[�f7�f�p���i����\��'��dnrq�����'$��nR(&������p���&�B8@�*L��	'\j��lʩ�����:�j��c>ꃫ�Nz����Zk�(��
��@��Κ�r� �ϚpC��V�*�Eh ö�* �.�pC�㖫j��p뭷������
�r:��r�m�;���h��o����?�/�Dj`��K�ؿ;���U� ��l�d<o��������M6	�����.���l�7�g:뼳�t�%Mt�p�t�� �+�H�Aѧ� h_������c�]�*p��Vc��n=��d:���w㍶)��w܊������x�q3~xw�4�9�[P��3�:��M������v�0$�?���4��@�3@��WG껫�@v�� ���>;�'�{� �<(hPC�?,��@�O���N��?�C0�<�H���@8P~�c�	�g��O|���a�A�(!F�����z�˞(X�O��?���	,!�G�Ҡ{���'���0�?B�0�&��ǂ��@��A�Ͱ�6�!q����*��ir��jp��bQB'�q�'dA�$t ���K��(F���%\ 
(= 4x�?HC:���P@
�'�	x��c
iH 3��.P�@��%Yf���/�	!�	?,@@���pH,���n1��^o�:|�جv�:L:�V��k�J��Z\��8�2H{��Zk�Kj�
+Wr�E'uvvxb|
hk9���q7M�w=bz��h�%��9�[#u#��yd���9��))
�G3��M��������9�)	)��C'3��ӎ�zefj����	��?�躢��a��
V���Pآ��}��I��c@H|VUp���7�1bDh��Š �˕�םP3�Ͱ�R�������'O��MZ�'8�1�A1�
A�aA�+6d]�R��]n=�YΝS���c�֠\SF�qc܇gEFA5@�̲�pKx+ʘ3��r �N�{#�
 G�m�f
���C��̗/e>�r`G�̚7p
I�Ȧ�F�̭]���wm#5J�֍�C#ZN�q#(�f�{���|Î�����{��\�.}���lh�ރ1 q�	H^kJ�WD���8p�H��⡧��8�߇8@�Xha��%�!|�_����hc�j�b��
1:��'�Xd�Z����6ذ�5�x��*.)DP�`A���7TYb]Z1C�^zi��� g�e�xmi�|�i�!�9����d�C8�	�Z`�s
:h�y��(����wv�)����&�j*����@�ZF`����j���
*�L꠫:�j���zg�x�*������в��	:h�����¶�>˭�+ޠ��䎫C�l���n8�
�/�5�����`*�+���������陠��ʫA]<0�����3̰B|0��2(P2�*X�1� ��
�\2��#�W���
�,C�&�`�!wl�"��s�%�K��E0�'( �X+ݳ
*������:p�I'sq��5�m��tc��
��6�  �Szx���ug-BCZ�5�B�]�΃<�p�g��;�8 ��@y�_n��eQ��ތ�N:$�X�0����P9�fǽ�
|��C
 |B,0@�[�9�rh�x�/�<�#���d�B
P@
���"H ����<@�p@�@{4 � 
&���r@X�T�?�9�|$ 
P��bH!	 �>�U{�����5� !	IxB�P�,l����-���7��`�;�!
q@�F����7��Ld�u����(�"%��!2@�;Nh0�$�Q��3�S�� R�<p��n�O�((`{�F ��}H�v�0 ���@O��>^Q�ےf�$r��4�UH	T�bE��m,���g6H@tԌ !�	?,@@���pH,���i�X���d��|�جv�9m���h�;�Vg�yl�p�m����bqypN�
=;Wq�Etuuw#ze}-�
5-��p+��x�O||hj�5

�\�+�M3`cO#f=����5�%=n�F/���t��wb�=�i���%ܯ�C�;�+��vR�Ԑ�5��%%�?;���埶���%	��b�
(,0 ٍ|�ƍ3�H�#_����7/G�2=8q�����Ჳ`�D)~��Wa��FZv����}�hy�r��MT�V��M�87��p�DϞ%'v:p�Ћۺ)��1C�.��jkV��`}� �i��fѦ��ȃU�]ͪ֞�M��=�"A�,T[eK�g_�/j�=�8A�X.�-�-����q��12B��h�����zHƍ�H#��"7�_�MZ0��X�pM�x�F�<Xμ�s�~s��^<��D$W�\yr�ZvX�n�|�����>���B!�P�v�ݰ���iqA�
(a�=���a�`W
�jр�B��p�'�a�Z �# #j(������8D1��?��D�"�:jт�>��C��A�E~����d�MV0d�U~��p�g��—R~��W�t���l�i�F���	hz��&�Y$�.4�?�i(�X��襀:�B��^!&�X$����C�F
�!8`è����p���6��j�1ت�6��h���?L`���kCE �߬Z�	`�-��M��%��	�fk��n��غ��`�����J��:�;o�1�� �/*�����;A��
�/����:�0��C�o, :�0��І���*C��W^`�
*�,�{���HC�t�
�`�@4ȏ!���X+�24�a
�
�Sk`�eBd�����6T�!� C�PCM�!a!��Z� ��$�H`��b�]2 ���\s�6�	�*� �⋋��'lQ��n�#�@Ͱ<���{��w3ޱPN��(��
�Jă�@;�nw�Loa��_��(�@�	
�=�h��� ��?/C��|����c���8�@"(�B#��`X��
��k��|`<TM�r0@�7?ԏ�#	(�AЀd��W>ڡ�s!���'<��~�ˠ)@�~P�#4� �� 55��)C�ݏ��A(��P����@/�"1x�&у �y@�ڠt�)	\H?�P�$
Y(`C1�P���P��GDb�XGЉ_Ȕ\Ј�$��D��{:ʒ��E%2`�,PA@��ô �i5���1L!�	?,@@���pH,����۬�����9Z����qb67N�b<[�&��+�n_K���r���~�_�܀GpRrM�uwe{#�#U�n'��;L`awdf|�#�#�l����_OOf����==��EJ�'�]�s��d����==��C�7®�]�tv�g���=�+�?/7I�ï�;�z�ͻ��-~mqw�%ڌuS�΢|r�Bס��*
L��`�%��H��dO$g���ؠ�:Kbr$�-����8���>s�.�lp�͋1�)58�Ƈ�Z6�H���5Lò���3[�h�ʊW`m��ʇ�^�.u�nȍ��P�k�
=���pR��>ཚ���V�J��#�Zd�Z�o��5?���׺X&��\�D����~[��e�B�.�s��V�s6n,/����DF�|<�	ޟ�;�Q��j�~<��f@���������<؞~}���gӣ~�z�~n��^&�B����RA�,h�<�!���1@� � b
3��t���8b,���*^�	��� ��!�xE;�c9 K6�`	BZQ@1$@%�9���\��%X��	pi&|iDD��p&�P� t�f���m&@��lY(P�9D~6�h
�I硅F��1������Nz����@��j��6����.��抪n�B +���
�ꃱ��p���9\����,8�,�J�������l���e.x����벋��4~���+p�E	����"�0(�'dDp���@D	/���D9�
K�i���0(xP�.8`�!�T���(��A~�3�`t��K�
$0���DM�&`�	D���>����>��8PPru�`�Xg}��F�v�c��Tw��Ͷ�6$����2�d�	xM�
�`�&����wDQ����w@	(]�h����}5��І�u'��$�@�
�f�����ꬷ~��b�݊����S@I;^�%ؠ�����}�- ���GO��40�@V�`��/�
����3A|w�X tσ�h�>���� � ����'<�IN�F�;.�}4`��8�	RЂ�������.-���@��1�)\!%(\�1�_Ug���*��N���, ���?�@��4��
�@�?l ���
�O��S�TC�Ā��רE7"Q�
�@	P��@
�"[��
Q�@
�W��@)�"���� (�]:��項X[
Ѓ�&!�	?,@@���pH,����v9���8Z�ج��xO���+o��v�q��o�=���f�Z�ۀEo7��rNuvf||+��J�K��O;vx{��3+7�Y\/��KS_Nb�z;+��3�j�FI���^rue����33U�CI�JJTTS`��z{��+�3��n�/��ԆL`Q�x�}���#���ѿK�s)���7q�&�X!i�Ct�(�V�	�j%7B�v����߿��|� �G�>��&eɈ�}8���=�zmVS��^)%�)Sh�I�����rB(��4����@VЖ��>,�	���Ny��lY$n�Y��)�Z�@��a�z���o���y�����Yf��ܢs�IX���Ɯ7h�@� b�@���;�n��A�!@�M���Wf��ݠF�fbCN]�
�W��]�y�B@ N^�q�V&p�޽F�7�C�b:���\�޼{��5|P�|�X`�]�A
0�_%Tp@��G�x�$x��F�a	+�0߈����V�%x80�0��#���/����t@��@�(c7QA%��5` $��XA�F4��9 	Q>�{T�@Y�Y@�Ĉ��k"�fXa�™d�I&n��&`�C���P���nN�������fP�yV

1,����v�h
&�������>�ª�f�j1�J*
� ��$�k
	�z��*,
4�ك����7�,��A�&C�/� ��b�-2�9!��V[��>t�-�2De
�C� ��b�����j��B�K�\B�/�@�(����oDd�p��@@�(.��S�?<@��,�	����0��CT1����$M���}�>$���
;3	��ʥ���>�u�Đ�-4�U�0�m�os
vX���BWM
40mbD�qo��_q
y�M����l�
N�ֆ�@
-��8�D΂MK�B؀9替��i��{�y�,�����qC�:���Al|�{��7�s�;�0QFP��oB�#���ݼ	��==�s ?< �����Ѐ�g����s��<���z���W?H�2P@U@x���s]��RD`z4���g?��ȠT�A`�( ��W�t���)�B�@�4�
s8>���t �QЅ/�!��A2�x(Vb ���~�������P�ԁT�6�< "�[hAnQ*�b��W�ٱ8�ט�?vPˣ܍6�ш
�d9�
�FS7@B`1�6pA*0C�"!�	?,@@���pH,������.'�u�Z�Xa�yk:��S�t:\��z�}-���S,>�w�{oL�>n�]_Ptex;7|{~J�op_7��;��;z�XI��M�O�c�x��+i�V�nKoRr�v���+�+��Ei�J���d���±+�H?�˕�`dw����3�2�i����a��+��3;�8�)A��)�i_�u�&�[��`�!ɨ(u������[7��lYF@�x	G6.0���	8�U9��˖ގ	�0ldɛ#&̠UE��>Y
5���8q�غ�J��J��d�M������@�KB�Ev�ȺvĀ#�	w�ܰQA�kd�ִ[�
H�E��P37`|d��z�Q$̧������=Q�Ӹ�>��@p�!7��ݣx�B@��s�q���<�x��;���yw�q�M?�"4��ӯ¡����?��|�-������y'�|U�p_����
�A�u��U��
�wB��uء�QH�
6Ђ�
���	���� �'�h�3�B�<vh��}�XCC�0d4 ��1�F)��Dv@��Xb�@
Pс�`�PA
d�Yv�%=��fbր�̉�k��%�9�vΉ��y��A	�V�g�50 (���e�
 j��
�)�8@�C��PA�P�-؀ê���@�/����:@���*"�ì��J�-�K�	yN�A�B+k;ܐ��[B�d���@��"�,�*�yB
�������$@	�e)��o�9d���P�S@«@��@)@����
!½��/�'b	?������
��1銸A1Đ��G,�/�����@C>s�3��@�%�3>7�@�}�AT=t���+�4
�͂ǭ�@5�0�sTQ	M�-7,�5^T@!�]u�7a��-6�s5^$���|�
��U�܇s�9!��!� :�}G@u�\с�t#���
hS��>��}S�/��ݰo΃�[P;7���� ��M������� �
�0@�G�@X���8䓮�
�o/��/��2(`�G�U`X�6��;L/%�D��w<�@�d�?(@Ѐt`���P�]����r�����<���Kx��p}�k�7#���~ȳ�E 	(�*�I��0�
d���c�Hԟ9��Jq�&4�U�Bd�-xi�bj��z0� !	M�C,����r �%�QQ<�ӈ���|�yApH�0�TL��H�,&�aC�CTф>�A���� ����L@'�!�	?,@@���pH,���k�X��ǨtJ%&?O�c��ݶϪx��f_��{i_n���!�J�3�V{om'msd(VByhh]~o�'�/�S��xXz�7/k����q�E5 ����L�^n�'���B�����|�����;;7�: ���Eq�\ͦ����;�
 Ʋ�Cy�i᧨'�'s.������'P�z�ܾ}���P�w�V��Ձ|v�[��Z�	0(R�#�t���Q��
$�I9@@%����d��Qc؍h�B�Ĺ�$�( ���r%�l
3X�!ɦ+,�!�Ք)ATea���7�.��d�` 8[u�n���T��b��ѫW�T�&>rBnX�32�#����Om19��� ���H��za#p�t�T��<cB�B8 @�th��<����	#ZY@�8�Ϡ�'?��y��#�P�z��:�K��<�#����QhWod��������A}�I��r�7��A��w�(��3��7��BxC�Uh"
�mx����;؀�H�}<��.�Ë+H0�5i��G|��>.9CF9cH��,�C#P@_�	fQU1Ah���a�&`e1A�Ig�=��{� `�C�Y�wҠ'$J	:�-�i�p�襗Ѐ�B�@�N�B
\J���R��?����60�$�Z����5��k5;C
�RP,
pz���6�Ԛ*
PKpe�P����J���� n�6�����Պ+.40�^��`o	�PöpF�.�3��q�`o��&,��,���VyApo�إ@�
3��a9�Pq	���̂��<��;dP��&S\�
��s�p2�>P��8�s	Fd�O
2�z��B\#�t�!��B���vr
$���[�t	OQ��fW-� �m����ow�uGaT��7�� ��C�wWq�U?�v䒋�@ݘ�@�'C
ng��VR� ��"�.��0�5
�B�c���)�UE��.��+���O�@! <���v�c0z�K�
��C#T?�	$�Կ}����v��0@�@ԁ�|U�upA�G?��d��B�<}L�`X��6p�
%��~�^�Z�>1�`w�Bx@���&�@
m�"R��ڋ�{�(�|:L�{8B���&��W8A q{1�Y`N���	$a	�8D��^|a�q
`��t@�
`� Z@�+d!�����%Ё5�>��BLa ���yA
�F
Tq�'�b
�(�H(N;(�<�G��l�"Ђ���A^x�?�-X�;themes/packs/ic_rounded/images/selector-arrow.png000060400000001211152455753310016171 0ustar00�PNG


IHDR
$RH��	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z��IDATx��Ա
�0�D$о@��	JA\�G�
NW�
=���&M[����WA�>�H~"۶Ck"���MCy���1Jk�ؓ�1JJ�a�ׁ$I�,��8�|�@/
� J�4�&͔R�(������YkWDto���۲,�Dt��#{k킈��{~��s�;�J�SUUYQ�A)p��υB�_؈�	=�]O���IEND�B`�themes/packs/ic_rounded/images/minuslist.png000060400000000242152455753310015253 0ustar00�PNG


IHDR��y!PLTE������������������333�����ɳ������#��tRNS�Y��/IDAT�cXd������ �����H�b0h`(�0&0�+��&!o+A�IEND�B`�themes/packs/ic_rounded/images/index.html000060400000000054152455753310014514 0ustar00<html><body bgcolor="#FFFFFF"></body></html>themes/packs/ic_rounded/images/plus.png000060400000001214152455753310014207 0ustar00�PNG


IHDRVΎW	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z��IDATx��1
�0@_��� �K��PDP�$��dp'Ai/���z	���H-
M��o	�'y����k��?n�K\C�,��tQ)E�"-[��M)%B�w�Zk��
,t%Rʏ�QY����=�C�R�8�IӔ�(�Zβ�@��F'˲$�2k����u׮�eZv�}�>B�4�`ߔ�"Ҳ��a�8U�?������y�V92'��iIEND�B`�themes/packs/ic_rounded/images/pluslist.png000060400000000246152455753310015107 0ustar00�PNG


IHDR��y$PLTE���������333��������ٿ��������������߫ftRNS�Y��0IDAT�cX
A���!�P@a�d�W�i`!�1���<5�z-�IEND�B`�themes/packs/ic_rounded/images/ic_rounded_preview.png000060400000116070152455753310017107 0ustar00�PNG


IHDR�&����PLTE��������������������������������������
��������


p����������������������$tttkjj���,���������HHH��������̊��A"������:���G$2���O(
R�GTTTOMN`_`������A@B���������W-
ZYZnnpede������_2~~~������������i5
e������999zyy������ֺ�q?��Ծ��������x7
�N	�]|F
���U�|o/..�ũ��r�����#��������̘���[co�h��NWf��������β�˹p����ֳ�er��@
���ƫ���������������������ݩ�ľu�H���x�������mZV����y����������u˨�wh]dRItuyϽ����sd����ͨv������q[��籙���pZDA���Pi���Қ��������hz�Tb�aY��Ȩ�el���kL��������ڔ�������޻����
ؐ�Ɨ���c>!���X7�6%�`E|O(CG[��� 
mh��#B,�Ԫ�v(Ȟd�nD��]���͑8Go��>;�`�4��N�`&q�r�|��3X��?b�(0P9.z�ge����Q�hm��Os���ƪf�҉{x����k��ꢙ8Mu*���/<����P�d}������ſ��;x7,�Ɔ%����IDATx��mHg����Ձ��:�J��rRܥ�QK];MNbf�H&	�r���/�h��Z�������VT��� �
e�`_c�������.V��j3����s���/������`	1�#�%�`"
,!s4��L��%�`����4����b0������b0GK��D8�`��	�-U׭�[<���U�\M�z��Lb����uKB�
�~#�e[����hŒ]���BM5�HQ�
���F	�H�AI�C��^&a����M]R�I���"�F_��p��kU��Mv^�����C8R�@"�p�ּL��nh4:��x��wV�;�y�0�	�H��3���j.�_o�s�gN��I>�K����\2����GK�V��7 <�7(�w.]pC��8���N
R!!�A����;�$,��?���Hy�M|\B
2�oz�?�M�;�g���'���·�l�H>��Ō�8�GM������g8���f?	S?T�y'�{��r�����v�����:���F�Ȼ�\h.(^��&��ٺlԨ�����+V…
5�"�P
9T��K]#�-"�|��5�I88F��-5j� t>�wzŴ][ܧ+E�<5,���ń��5Q?�F�#�b�X
*g�>��/9Bqנ���Ac9;NQ�$cJ��?�0�M�~�hP[$�� ���+����v��B�^By�7���+<b1E}d�MpRJ��p�t]0�%>���jG�Z�6�h��������-��%|�s	U�}�-�5���$j�y��]�	c���ᔻb��M����XD6R5.�)bK��	J��� ���(�&&�,��M}�� Eѳ�:7�����}$�pڛb�BXF��7*������q+���#O\�Π�CM�p��K;mj�CcB�=��:��){[������o�����������}7��NL�v�'��o9��wp�Dwe3�Ը9W�-���I,��;68[S��[��Ѧ�J5�PY���3�ܺu$���΃^*{	����DM�Y'��Ζ�y�ά�bo�|��.�D:�J8���
e�ٙ�����4�:O;�V(�Ζ�s>��DŽ��H�$�ª���.����?KHi[d�+!
��p�*7�#�*w����]Dqշ��2��4@qC1��c|!��;a��9kL���!	gּI�-_�9s��'wҨ�-G�1��~I�0�{Z�i���KH�5�a$a)��0��|utЉт�� �ؕIP��g	+F(���	�"7%I)zE5��P:!Q��|��ַ�\�M�r��q���$o��l��
/!)_�N(��~m�)�#���0T�8i�.0��k��FN2��O\hQ��Z>�\B�+>*�P�'�M8��']�o���6#�$��H+�]$!�A-'Ii�ў����25�|5*GD������i���V�ɶ)ib]�K(�%�Om2�	�=	i�?��� �[FgЄSN���Ƅ��
�d��r��L֬6$��n.8,Ƅb�����%t�i�N_jd#�RB�ILhUk!	��7Ǒ���s��K�J(�vP+)Pr�9��@{HB@7�j��4ӡ�4sAܜY'ϐ쮄�^Ε'O���J���|�/�
�O�'�8�0�ٿ:�����Iy��N�ڽ�د���M^�.((�Tx�]P�ńa�#Fۜ�Ҏ��O&e�8�Q�mZv��
T
�2=�H
�$�¶+ᤇ�2��;
��l���A7-]�$mQ�(IE�{��i$���{n\�$��uWB� a��N|OB��iC��k�cK������
����?lc1�V[`�'�zz�UVs���R
�tk9��A͕+ׯ��B�>lA�J!����Zּb�ؤ��C+�x��F�*ev��V7G�;��p#�y�ǖ9�(���}Z\�Q{���,�%��G���Oh�����'�'Dq(�� 	�~�рj2b�Čpn5`"�n6������,a�;5��M0����&��L�׬ԬK�)���=��ýT>��)߸1J�N��e��Z6o��<?R�&��P�<��L~�P�ؙ��f�ǡ3`"�7��̑�b0���9XB&�b0GK��D/Jx*B�x�gފ�L�?�c�)8�`����4����b0����8\‹�+����̱g?	O��Vlb���'116&0���>�J@^�{�aO\\Lb��р�k��0#66&�$Do�x;1
����͋�{;1&\��8�h�n����;��/�)�{Z�Q�k�a`v��FCF��*��(I�B2u"����%�5?�b/}!�m"�@�N�^N���ގi�6uq��1���ם$�s6.�J����`�	K৚j�M�U�
;��ρ�Z1@C|�T�Fɒw�jj�*KlS�uG>fR4D�a�tfzE�����Q4�6��^]\�Z��u�
p:��r��/�w�8�
_o^�w���*e�%�u�$D�a���"��{ר�@Yn��'[�=[렌w���7֤"ߪ��
	c¼HT]���?I��j��J�^�+5��b�BU��;�x)qL$5[�)�D�Z�/�]�5Qn�Z��>�v`B���;{6�*	g�~%	UN�]�ꧭ�$l]#�$t��ka����t�k�u[R�����e�>
h���K�k�̷���SSȷ�uՒ�g�'7zy�b�2)�CE^�R�M��V��k�_X�����>��l�����Y�f?	#iH��B�ƓF����_`�,-�=,�%�.���7�92��ܢVnO!	�\�eU����_����J�]_3n^ϻ��K�N��:�u	��+���,�0r$��e�m$aR����P���󒣵b15mjل%|�I��$T���x�
�	�6*��n��G0~�b@~;)gK?��#��(iv�g�v^SoN����OV���99�[S���EDޅ�:�}�#��]��򐄕}�j��A���ə+�����U�zԱ�x�s�����y�1Ǽ'�����>\B��o�t��;���(	�M�߬���1�Y�Sq�%�L�d��!7�8YUV��!�A�	3Y���2�Y���AT�	�T��$@��Ϥ<Z��>��e��4����`/�7��Cq����Z��%����Ig#�ԩs�Z�_�H$�f�-��-ZTdK�����Rvv�b#S����ɄY�K�YB�q�́��҆�K	CX�7��?��C���c���ʟ%�c��nh�^J��I���׳N����m��=4c�H#��6�]�oL��u�̾	C@�y�r����m�dg�����^i�\��.s��M~�B
@�{*m2�ő%�S���Ɠ
b�$a�O����翝�����μ\���}6�5Ϫ�0����腃��a�z����Z~c ��h5�kwnntx|E&�J���wSf�5����|���$�<}܀�O'�II�=1��v����0�݃��t5�?��0	�]�8���ț��}3�5I�q���i�R�]�i_���f���J��:VVf���0"3�d�����BI]j�Mf�X7��%DW�&<x���Ua�%Ą/��E
�O�Ŏ����+HX�aƨ��\���x�U��jנ:?��]z!�x��t�\(̝R%B�� 08�1�ܜE;�����>�`	ѕ��)H(\�c$!��s�y��r^9���`W���_EB�m��?���� awSMR�ٳ�&�+��f��[ǍQ�u}��$���<�3��<5�|I�n��K�ޢ�H8XB���{>I�K�	HGU۟��1?$D��;T�SUs��	�l;�T\@�:A�o5��5���
�lU(^��R;�!��^r����HABT�q�ppO�:�B���4JG��"NG1���Ua�%���n�q�$��\�s����G�/��h(գ+
H�h��=bV�p�e9���<��@�g�[�[�9Ϫ�|�-�_.������d{��Zq·M)�~�=e�1;�3�� �_}N����6ev 
q��Q�\+�,��e~{1����Ț��E(�Y
�yz(�k�����L�V
u��.���Bg�P��
�&$��b0GK�%�DXB�`	����K��,!��{���D�q�k�V���']�̍m�BF0�n��K��'b� ����͜����2!E��I��P=	��z޳)yN�����~N����
!m�F
���pJ5H�R�#i�z#��^_F��%�0���9��a퐑�L��P!���Y=��}�,,�v3N{8�t��Gye�aZgj�pd� �mQS�H{�E�*�KM�.�`�P��s��4�=����v�5�D	n~=��Q�!��`�����E�,QR��Q��R
C~����/���oR�B�/j���g�G�@Kn���7��t��XAܭ/7��'�܋����T& ����}���UN�<�&B����+�E~�w�9vܷ��s�倭�Q5<�a^0y��YNU��&�ѩm�!��m��W�,��o����~	�겻���.�͈V�J�1[#�L>�Η7F���}x�zq����e˱��E���t'|U_	�j���-��BՕ#E��Ԋ�Ps�I���prB���^PHƦ�?��rP$�YU���Qk˶�zM0�زx��W��en�\RYqg�;�oJ��B<�,-��i��J�{���M��Nk��ي%�2&Xg����R��P�=��~k	l>��1��zE!��.���'\3���-
���eNH��-��}~r���s.tJ�ݪDߖ�{���a�d��B�e�W����{�kW���ܗ�a��gL8/�-�t<g��*�v��l�%��h7�i�ɺ�r�k�m=f"l�X��3�8�s�2@��!{�p}�a�/|��q-�؍5��k�0x ��l��r�E�i��tE�Xz��rifEX*ߡyn��!K���G�	��vC��wI ��&�9�ȯ�")�DQ��Q%I
i�SUGq��u���V	��bj�#D����u!<�B�5�e"�	F
�᎐lF�����Cf
$��ɞ�?�#��#$P�?B	��0�=Btbt�-�hP��`��gN�۷��]F�Ő�
�		4l~�o�.NCq�}��ϳP]^cy�h'	"�!��HA��ȁRy�*xp�'�n;�Kqp�E�	:\6]�dH�bhJ�%�@/֪�(���w�K���t��K^�VGH'~��c)����<s���#���E�'
�VG�ሏB�1~Wx��s��!,�Wf!��j�#�OA���/�!��Y�(�K ���:�?Rx����4����T��A���u&���MF
�^��6�PQ�L��A�������<���!$�A���dB%»G>gOB�7��1R(�f+a���,!4����V�v�S����#��Gx�&�cX�tE�G�2��+�/���{�x}�o���3Mn��^�
�j�J`KS]�MT(�ov[�vF����s!l�zo1˲���?\h�k?�u���o"Y�5����懋x�D�؁�~�LWC"8�z5{��EȂ�o�t4��뜜���|;+�+z�W��K�j`$���\�dž�|�m��@��W�#�ۏ�#\�T)Ah��/8�Yh[�l.��Om/har�=�>t�ї��YA�"Y���fa�~x�bc#l"]���m����~�$t��76�[�*�Ǭ�͂&l̳��*ް�:*A��m��Д{3�"t~���0����aT����!㷄�v��x��J߱��aY��5��%�%}����r5�Z�#Y�C?���#��>�š��=���q�I&¢`�^�o�&���;z�6��jT���*��S�(
_���-ۻ&�06��k�s�#�t3N�Pp����?\R��'3Fa�(�!\9Q��h�u>�NB~�Z|���1ߘ!(
֠�1�!o�E8��/��<��0���a�H1��܄��������!<}}��[��g�Gѧ�m�^i�W����r/�4�qɾ�w�!m\q��:��
�?v3�'F�'	B�1�J�2Mh�j02�	�K�?C6I�h����Z5̟�6�j��*�F�0�w?)c�1��޽h��n��f����}�`>������i����ϟo����Կ��Q��jΎ��$�a��s����I���p��3��,�+ϡ�`�H���9�����������)�����ׁ�c�X�W��_��8!0�U=N��B�ZN������i�� �o�������W�uĈ������s�!�u�(Hx�`J�B	4n��簃@�9���
;w���:�Qɨl�-�E�Q
R�,��3A�KH�NB~\E\�xT%�q�B!�G_M��𗷊� N6	ҝI�$L�	�Q'!���ӚJqA��GQB2C�I�Z��y�e(H�$�a�RX�$���"Q���[Y�%�%!.����ݫ���8�Z��c4��	�=����?cF�!<�-	q�B�5'�U�)���f_�2:� a��x�/!�+�(JJ���s�r�$�L� Sk��:R�0ΉD���*�_xW��N��yC	)�YU<½�0]�?HH*���A��m��씆Q�/.!&{���έ�Y�K�z�P '������e<1W^�p?��έ��z>	��6ۢ/��+�)P�[w1�(�`K�]5`FX!��|q	I�D �P���������	�e>	��/O�i��?m�	�2��	o��G�$��Q/
ʢ-!���5o]���'U/��Mf����w�8�a$/.!���@�q>��$���;������-<��;^_��6��g�֝9���u�<�6�OE_B5�(4��W���W�@�VL9�%�2v3TAg�/,!!{��pz|��7*||M��	���uTsǬom���vq���M�t�\(��˄�9ޥGUQ�0M�6q�i���窊^H��
���_D�[��\���k"Ȅcf�n���QS����^@��Zx4{���̗o�͎�nw#��'�;p4��QԬ!T)g��*�i
H�L�JUY���j��X�P �1�����'|���G��d�[�<���ZtX�ƙ�|ָrJL��Ih�֘�UіP%
�h5L{PB5#ՔKiu�7&��
Z�0Ή�;�(�W#�LKx{��K�3���M3_�a��[B�7�d���,!�6��0�tʵ
�Z�U�2D�c��Z!'�o���/QB#k^s蹄��VD�$,�*��Me�ZR�0�$|�z�'�PqD��*�6�`�NN�\'H��<	�ư�F�=&!I��`�Ե�rF!���ĸ���"!�+!E	�%�N�%$-g]�TB�D��qN�K��)������8�ΓQB	(�5�J(J�;t�X%WK�%LIJ�
˂uL�–	II������ݰ>xV���•�+��G$�S/�'H�7ϡ�����HxJ����YnA���r��)B	{���)��`
��B����({e�}3F��MT��H���p��� al\��3fj*F�x@GH��=,V#_YO�|EE�^�cF	j�A��o���񂢢�A�m�O�)���)���n4�q�u�
_�|���[�`K�A	72�D�0f.�����*Z�߆�er��l\ȫ�2:�G���'��Ƌ�o��4��e����sfw������5#���IS`"w�:_tkT�e�s���v�D�#�{�g��>�x�%�1X ��v�pe�"H+J���*�{��)��nA>��B^e9�U�u
��u��5�}��sU�>(!�����
��O\nw����mwh\��>�־�����ړ;'l��Ѣ� x�a�v���1[�AR���\��wl��~�&jG$���8�A"�8���i"��2��O8w�M]x��{�V��1L��	SnO.
���yX��](!6:���0`�S\0��;fr�w�o�<l��X����v�b�C�	F���nv�e��͸23��װ�
!%���>,!�f�I�J�ßV����x��21a�e�2\�j��q��R��T¶�y !�ޙ|�
S��PBL���΅����5�����tB	Q��T�����i����ܚ��m̭�t�|P��䰗>��
�cĝ��޸z��[���\k_�ӣ���;���=e�`~�9ӡ
Zm���*��L� !Ȅ�b�A��B�Y		��W�dFY0����OJ؀Y������^���t[����r��^Xz@	�]mT��T��'a�\\}J���{k4�p�ڛQ�P���ma��L��f!�Y��dD�'�-lw���9��@	�D��as
�1S�͟@���D�=��Au�=��޼��mq�n�ςr.A�^r���S]-�O	�wV�\��˳~�{�'��ׂ@:Be��+;!a�<�Lh�h�u�:}ʮyo�	;&���r)���T3R��'~��m�
%��Ǖ����3>�f����66?�L�����3G�>\���8CV!H
x�5I?�c�$aMt�B���D��2��J�H��5�e��S���Ƅ�QA�eC�,�\��	K8�'��B�?q�����~�7�*�V_k{B��}�r0Ȧ���m��ΐ�Pح�����g	3�836�-��d��p�q�}�8c׽U���3���^��_ƕ	��[���K��
�Д{��$��nD�%�(K-��5`%}�J#gt"��1R��%RZ-�HB��g^�4;�KY�p�}b�L�;��.��All�J��&:M�n$4ΰ�W���͋���,��M~"�ye��6�\^�qΈ�=����w6M��y��<�<�m���,9B]F�`�oї�fv92�}�o\��н�f�����%a��u�vcx��>������r9��Q������hՊ��2Q�(���d����x�=n�Q�Bρ@�B\���l���.�b7��1
�0#�2�OΈ����}�_ʵ�~�Y�=�K���:��_��׼�?k��
"�v���'3!�/��U�qH�n�zf���>����4����DWBN*2t:�BA��O8)QC"�#_E�%������I�
����Kr�C��K���	ɦ̚�[�0��K�FC�Y�;�jm��]}Ilu�Z��5U�5�!Yf�����t/_��8�9�{����q��c�}�/��9�s3��%��h���ӹ�AɌ���:���N��Z���n­�>�=T=��71+a[�{s��c$���1�|x��ZԄ�p���Úg+#��K���H��$.vA��DH}O8.x��໭�Z�H�c%Z��ac:u�rŖ?��	�ݛqv�q{�'ƛ�}�1��^�d�aK�~-|�R	+�
�/�7���$�|�2��ع�����֢�׮Q<�����/�ᢣ[ζ�`��I�M��'�u~�����_��RqH���юJ�%�]��Y-4���$�X
����
K���x	���?8�
̸fF��Z�����7aobW¢׋��!��py���;�CBZ�׍|s�r��̉���i"!��$�'t$����TJ��Ѝ�g��a�2U*�RUe�*%4��p4$<�'f�A	�`NuC��ڐBo���V�r�a�܎�<	��p$$DGXBݞ8�>JNpŴ�"�0h������� �^+a[�� �_�-�'�x҄>dܨ6`�l��u�"!�(H�<mX�		�ɤ ���C2Qv�$�Un5��:A�!���u�4p}.�u���HH8"��-��)!�T��$�f'|�Yln��zaG�-�5@�`+�̝7��
h|��Ų2�����h
"�(1%()1���=y�%���-vl�9�l�$�p�����A��Yv*!aQ���C��&�ܠgF<�g��B�S
����F�"+Ja<�fp������ϖy�%P��ͳ�5 �t�mxp�P�TB��HxP�)��X��x�[3,O6M]Z����կ��_Y��/'�[Be7�]5��AŞjW}ј[V_�F��DLu��F�UB	�:l`bh��5}޲��Ӧw�s#��'����r��r��9�����}��H�f	骐3Q�.��T#�a;J���h�`Q	�:����xc�Y��0�8R���1hK��V�{n������]C�EC��
xI�w&�E�o�bI���y4�ճ�E�n�J춱a�P��غf��Hx�ٸV|���$��������sW�@�׮��3]��ƾXc�닇-�0�X��(0n�`
n�Nb+h�W	�Ya2�?|�B�l~�$TU�Z;�_�lpY��uf��f�;�њ
D�#�>��x$�g�nL���n���FZ7��r���bӹl��ә���YB��|A�����:����&�{H�NW�
��
�Bi}B>�Z+uZ��\��5��	�<l}y��	����'�_�3r���l/?�A���gs�c��]�U<v�+�L�8^l>��W	���ڡ���
���`H��~��ʒ�We5�ܩ�.�*=��żA=%�-��F�)j�d,P�޹<+�x���p��ݘ.4N�S�"�y�s/��
o$<�o�M@C%��B�$p�e��q7�G�'<.��j�P#�+� ��ϫeb
�I�y"���Ø�����n_nv�	��hG�X�'�y�ZA����	��^�������]�|F��XD�|�!����n�OW�[Œ�Hx�HY��޻�'kwZ<Ó3뮁��{����h(x g��^��[�3���q�I��M4�C�>v&K�{Ѳ֧h�h�������Һ��qufHH�DB�ې�s]�Z��돫qν{�R��/�I�˷��L�ǭK��ݎx{�}3�O����/�?�Y	��_N?V7b�[�n�_Z�0�]���	i<�		�����U̸�]��^�����%���V�M�#��z�GGMMW����J��:x���^Lx0+��I�۹җ�nk*nH*�͕�8�=����!G�7��un�Hx"�O�� r5>Gx�^�]j)��`G/��DW
"�����->���ffj����譙4���1s�3���zZVB���Vh_Q����B��J.@j����pL�Q��
*�*nN��"�D��m
$��aq}��MM��U��r��`d:���u���㘕�5��_/p��*�^oi
��N�����^�!�D—OB��E�O����\\�0z~�9$Wt���!F���_Յ�T���LG���Ќ�Hxٟ��>u�)���g�9���y�b`.9:Dnx�����V�k8	���\�7�^W͂;Y���W�D>9sf��	iˢ<�k�5{�#�)���ο!��ro�ܫ�f]��v�;7�5���o��e�
�$D�H�~H���|5�3�F��<76OXs�ற�&O��	座��m�<�(�+�7�A��'d��{j��&ݾ�)w:R��+3շ�G����i��u�柪�n����9����z�L+�sEܣ�me��r�O�d^�^��U:�`xQǺ;}J�u$�9c��6��@�@gZm���0��C�3D“	��������P����0�ߡ��GV����
���m�<�hC3e
λf�T�n&�H��o[B��2��(�۸�	���dʴpi�������Z����]8i�j����v��J��'�4J(��UQ�P�����"/N6'��0�Y
�8>	;����4̘��Syf�� :J	O {I���U��Fq�5�9�I�:��ûy#a.�B5s�C*"�,}�yB�r�*�e��(�E'�w�����۠�	~3�&y“HZ+�������6&�'	�i��vnp��l��9�X��~�&o4��u*qEە�J�u��EN̜L�\	3��ئVk4"Q�"O��[�x���Ϝ*
���&��=�d�����,�e��W>�_𳈧F�o��ߠ9��L�K(�d��g�
��Y��xHH�(N:���P���
8,�h����I���U3y\�B2�7�%p�h"!!���+�?�����gé/�j����)�����d�҄/4��g�DBB�%�o:�4��x���p�jXyU�67[*��DiX	�9�v�ͷ�V$��P��F?�"2��-!�ձ8�{�:�)K����(���	d� �1�ʵ��~?!���%�;ި�[��.	oGB�H�(+Aj����ez�X�c��&˘�	3��ZDB�AI��l�L���I��j�r@a�&NBcB�7�p�2N���R�v��3 �F$��Ж��28-ge<�Q��S�y('^B79�N$$d$)K���7�ދ�����ox6�%�\)}�ݹbq�$�WJKz�J��d����R��{�tM���{W吟`�鎄����I�@a)��ŕ�Ҩ��h�!2�T%tx�^g�D	����^�V����/-�\{�ۃ����ʽ)��ƃ?%��$���o\������}����Yl��O	�_=hz9�Ad	�����MC���'�������_{��NO܁�0?=���v��F{b�v�D}�nB�>v�PIJ
�p�W]w����������S�[�Ǭ��o�����a"!!I=0�lo���ql`�u��
��n/nOX�2t���d���:u�0��e�w.��:w��!>�[B`��{W*"�����W}��K��%�3D�S��X����~����w��0B״�����L�pt����'Q���ڷ}�d	�;]�/~{�C��r��%켵P훹�R���6�_+�ޗ�LῺ�NJ�%�`����|���p<���͘=���B�'�A�$�޹^A_Î�����k�Kߏԝ	��'���K{�J�mm����e�leb?{B ;3�B��"+R��u<6;�6��&�[��ב,a�BQ��o��J&Pr��
��]B�L3��;�EǍ�������B�B{oiԉ���.��~��ȏ�'�"3�B�7R��6Y����}'�wR�U-tiSt��E�\��-�(�ӕ�Ϥ�|�p�HY��$İ	���d�LT�YV�Ff��,!���)-%���#�%�>��ቸ�^����,�ZS(Mﱵz&;��2d?xI��~pk�4���Z��@Rc�$����s����'���%�4;�ĝ{϶��Q�DI�.��I��&J�X�����!,b)���A�o	�'�#�D	ܸIJ����P^~v��E:�c,4�{@S���*�Oa��M$$d�cF(�d�����쿒ˀ^�joA�^����j+��
�(����!E^=	��p��3]B�l1�n��G�p����,y%$z�0�%���
�,��(u��Qˉ���CO�P�K��{��#!R�)=�@8�X�2_�=I�����"�		��HH �@z%�5�#
�������Vǎ��DBB��o��__i�t��HH `H���E�'��k7�	���P����ʝ	SN�I�P���D���9���0�3[���qmu��n;Y�P"�ź<��֥�����EE��Ґ��Jv��q��4�А��k�l�ˮ(�>x����Zv1���|5g�g�A�/�.-�3 ��[B~�{�Ct�?��b��`�x�������@B��`:6޳��l�ѽ����"0���?�K�Q+XB,!�Ϣ�b	11�%���,I�AH�%0��g��F��L�1y�m�–9s�k�>b�Ј�D����s�h}gR���a�Мao[�
�娦O�$�"�ީ�b�M̝C����e��΅*Cq&$v罹�ɽR���$$��,�!�i@lİ|u*eE��p*T�%DI��*J����b�M�#����X!� :�Ųe���*C��L��>�����3�7�IBjv�Av��+���F�u����]u�\Bd��e����}��=z��cc�͜���Z�W�\�=�E�Q1�Y�Q�%��ۥK��ܩ=(F	G����*V�J(�P](� z���]���7��fBI�s!X���@#��	i�	UF,D75��$#�P��	#,���J	� e9�DAʤ�+�	���w.�_`x�x�C9�ː��%���xgxD��0�פ!;���"c�PU�JP.!@'}��N�7BFJ�8>�i+��S�!�wVm��-$0����:|�p���e��$�Sc���Zn��rt�9P��d4�[]����%��1��n�YcW���Q�%츄����E$�JE�	�=��|���_Am��ɞ2'�^o�_�-T���j�fq�J�Յ���O*)G�u����Z�`sY�V_�i�̴:g_�?G�
�
(�5�a�{p)+�j�d���Р5��R󓥚�J�	�?�Ph���h�a�u蒡!uF#�@b:�z��%�J���
���(��r�|ԨQ��o*9������Q
Y��>8�֐�ǸwM��˻W_�?kҩ\g���W5�,��5���Yg󏍫Z�^>k��%X�D��	m�q&F��w8JF�J��<C�s���6��8����Zjf�'�{_�u��{,^���\��%��Bk�*��l�GE��S
.ޚ��]u9����o:!;�����朻Ծ�I��+��
�Hw���]u/��X\�vXB�,ݏ�ҡ܆���:p�=q��|E��e�{U1c�,�K�=m<�\�B�|n�#O����B �2�
}.�΄1H����VWg��"��wܿ6��Y�8�-9�u`�6$J�@B�������_�����U7N��SLb	%��Tuʝгܓ��"��l���6RB��+��=��;�,�pϽ_����r�Y(G��iB�<�������ޔ����:����!�N]�����.wɖ�S㜥�޹j���*�w���
���Kp9��r4:tD'< �&?�
�$2ڜ��'Xev�q�K=>���)J����� !G2\>8u+Fi&<P5b'��(��.6d�_^��Z΄|��c��{�Ix�(��	�+7���Vq����`	,!���̯��5�&l�fU�6ڜ!RJn-/�1�G�����-5���$!���A	���/myxq4�9!�����,�X�i��Z�q8��.�Z�#�v�	�0i/�	o�8P�?�#J�І��	�0l6h��6�t�E��
��#�'	>��Ý
E�Iضj�ƞ��
x�]v�;-��m=ZC|/����&�:*����/d(�p
�J�.�~�x��:z�Cv�[��i��n��N�L�%hHB��,�$ۚ������Tmi	+��X��fB�yqS��h�7���B�XR@��	U�b?�T

�]B�/�H��c��%��^�2�8c�����x���ǫ�� Oֹl6둹������H�H�m�
>S�V��sɖj���YI��?�q��m���[��/\^y�j����X��.�XLX'1�}���ۦ��ȓzmG<�V��Ɖ����,G�}"�5$���@n�j)��'��QkI�`[���I/`	��!�$K0<EP�,'k$H\��Q,�CT|������p�����ck��0�4:���)&�y�D	iS�I�!~(ji�
9'x$��]�g���"���A�xl-�ges�>	�aXV�Ea#^�&:f��jԔFRR2,c�e�DU���Vnf��r9�{����)�_	�0�9a�Œ�כL���I��M�e鹹-�-~�v\zz�3����p���.���Kh6��eL1[̦�fKZ�!�9#C�+L�=p��6�=�/�T[��鎺�R@�_CG���K�>��L�M�-Z�h�y�-H�_p/��s�Ic�'�j���"�bgB��%�YBC(Z�/^�y�����͋F���!@ٲR�*S!�d-
���H
���_�;�߶�0�[���"B�A\V.�#k0'#�E�mLQ������"0��L�W`c��k������fc6�8�U)�h��.i� ��@�E��/�t�P��O�ϟ?;�����ׇ��</�?/f�q�k��s'N�>7+�鬞�I�J��%M�ˏ�G� ��c]?Q+�·A|�<�ծ��K<��T�A�� t�p۪j�����w�
��+���Hn��䃮^�<�N-C؅��Ƣ�}�mq�S��*�@T]Ԋ��\y���c��ڀῄ���<��� ��L*c���6�����T�26xw�h�VBX�#�xǎ�_%��%�K����VA��^w����n�� �.@!��O��P(h���K��|�=˪��I�Za� �4<���+7]�E��B@q�V���1��h���N^8�o ����)H�3�A��ӄ�3P"���P���5uXBx�����.��.��E@x�f6I{�<�b� �'��>���PO�|F%�TL۔IR���lɳ��=ߢ-9��Hw|�X��M��;6��ep<�x��-&C��<*0�d�� ��XϘ�Ɉ�fK#J��H�-�^�I�JQ{�b�	K�hn1�
׻�����_	��z��Ȝ�A���A�a���ŗ��Ij�`�I[�9Z�]�LM�����C]]� �,.�r��r!<����ʪ��B؃p�Ƀp�Ϣ���|��W}�χ�xiB�$�/�kj�$H��YI]��VB�>NA�sIn��������f�*�F�N.��[L�G}�i_\0H�TM��0#T8V1A�&�+*��.4�B����j��lyYA^؆�r��3�[L����u.X$Z�D)�
��.���$˦����Et�E� �%��c#5�ϻ’��П�p��ZA=� �b� �S�x���e�i��fy�aN��ჄH|�peS5Y�Hb�<�433s�U�U���`	D�r�ޥ�D4����=��<7����$Q%�gX�w�E���$����F�
�Y��v<>�:u�X��Z�j�!�r@K�Sr6a���i��<��<7���*(�@� 
���/0�H��!}b�@�F��p4�8���f��Ǟ
M�w�;}xG�D�]���ҰC�7;;�	�,�"h��;(H�ak�!�7[�my�½�E`�3��0��.
��6�[�yn���	932�o�
�E܂��ê$�EK�E�
� Bd������H(:>�"mǧ4��Յ�sL_p�exI���!�Rb0ȳ~:HW���ۦ�i��Š���j���n۷�K�W�?|䙶���ض
��H[�۾m���0T�������.j��j���ʃp�U�	m��&JB�O��3*ǣ	���G@�J��>�B�0�t�O��}���dܨ4�8K�=d�U���
�,pd�$�	pB.vK�@ƺ�h`�x�;M�G�k�O�W�X�7�y�y�x}m�}G�$��%�[B�}�9�:�{��e�0�?kw����@M�-n֠�6�ݓm�<7_��&"Q�@�H�[��5[N�M���RIQ�e)\HI�)	8F4��v	��p4�z���ɹ�g�(�&�pN��<� à�ʼ,��pX�2~
��f�5m-�5}����45��w�q�A����k�?0r��7nv�:s�Y��;~�����O�~7��=�w��{u��>r׮��/IK6�������cxңp�<7[�!	]���+���	��5�Dx��a�k��
v� Sv].B"�[GA�CC�;�d��>h���a��E����:�I�m%4A�Z�j�=� |{|����Ϟ0-�C��������;[�j����ġ�C���{~���C
��Y]�M;G�_8=����(<d����O��v�{�m��ʃp�U�	mb������
s}Q�-UstQ����
\0lK,E�Cёα�)��oFC�L&A��K�8®�8����-'�Н���0]�d,��N|�/TK �~�@�" l��|�؞��z���Oa�$`zFk��O����F�l`�u�́:�;�UӉߎG�j���w���펃=�D�|��g�k�A��*�,�P���A����2�iK�TE��I)�.�07�WB���H*%�cj�� �H��kz:�H'��cG�`��� �@k�ѫ���as�������\^�^!�4��v_�Ǩ�>n���OB��u���o�k�?t�;�����i��{��_����� \#��V��(���X��SX&q� �4�Ǩ�i�	RyNQxP(�0�l�2���x�M�$�T*�2"b��W͘_Z�7
��< ���oipB��jk�ZW���!N����E�
���ɲ�ށ�3�S
'_m.9�q*P����7#���x�n�Է�o�=�r�eѯ����O�}̓p�<7]��Q��`Z�.��aK��D
-�1y�3�&
���71#k��t����ĭ���>�L�b�J���a̓B���H�',�����L��p �T0��/Q!���[/�:L�P¶�3G�l.�PO��i]%�E됙������W�qº�CGQ;\v§�i�u� �d���s��U�
=�!Y!���6�g����!��[���������q@855����n�ul�㙙����M0(H6|��/-e
�|:��	C�M�C���i,��_@H����~Ɏ�����P��#=J���x}�����s3g��H�ԅ���߽疻^�<��<���	��n�:��ӓG{n�"g�9�:yn��gGQ�e�ȍ�P�z�k&�H(�3�A�V)��T�a��x��rjnnrr|�0B#���&;ơ� ��hXQ����l>S��2��5C�º*�7Gs�� |u��C����!�\��Z���0�;}�����g^�|�݃�9w��<髱�Б��o�#�`���tt
כ<{�M/� \+�MVy��j�,�G�I��Z5
I���.�R!��^*!9WXX���F#���Ai4�ON.�2����"�u���K�<r/nci����Ұ�[�V�(�����S�Sa�mo,�����3m�ۉȉ1���v���}��#M?�Oܳ�����6Ta���w�Ԍvہ�߽T���.yn��#�T\�i�<7Y��QR�54 �T�a�D�<��"9��
r֌@���1uKB�\��`�3������Ų�l.���^�C痐�����i�I`�Bj�H�`]��W�RTռ������js)��Nڈ]v\z~���K�m�Ԉ��;���6��=�A��9�� 4�*0���/^��29B!�m�6�b�H��
���Fb�l.4��B�- �t�<���t�!	R����ꚕH@y@X^���_��G���U�^(ZV������0	�	�|^WdJ"'0링d8N ���t[�����p�DB�c�}�֞�P$�����|�A��v!D���/��)u��e�OP��|ڱ�o[ޥL[L^8zsB�EF�e����"�e��$�!.A�x�g���p`�@0K|���\,6�I�־����P�PH ���e��xὴ�^�N��!��%2�؅�e�����\����A���9�Ɲ0��YY��U&;?�7�pX��}'�%��H�$�^ȹ�>��]Tw,�\L�t�����:a	�H�t,��!�"� Y'lݱ�!u�Ky����V���!�I�$c[��efKi-�Nd�0M��B�,�p¹\d�e1#��S�#�X�U�t���~Ogd$FR3QP�l��g:_ ��"9�5�wO�A��A���[N�!�#�a����$D6Up!t/�Q�H-D#�x���N��x�����������K���h4��n�͒��F�]*i�p,�
��@CSTUw���k�[M��0C�N G� }�0ª!6��F� +�a)���D��p�S��j�p�1���o}��H��!�+K^�+�KQ��$=��hò[JD��Gػ�V���ٯQ�'�ZB�Ė	���0f��ecM�P�X3!AJ0�H��׌��cW�^B%T,�AZ�+��[����$%�;s�9�;����9���ίC[����[�>�r�-�[�
A
VuC
KQ�Re�k:ޥ�� �l��c��n�-$�-E��`�����+��}xN}��'+DU��Q�6UUkKt��i�

O�0��g��:����� ��xD㷬X��{��}E�(˨��A���E_i���\��0�	�ɵ
Br"��[��:ٞ�Ch�X(V5I�`Z1���c�&�#�������\9�C���C�;�Q@��5xJ4�TT�$�i�AR����t��e���p��Y-,�=�JLHW��=*���o�0�x���L']U�
-3uT�����5CU*U]�����A��Pdh�zz��P���?��+��"�ikK�`�*�@�<������8�e�|���� \�c��0��[2C���,���4d�8nYk�N�FT'���ctT
�N�C�z
_]�t�6zQ�n]w��3$ҧk7<�K�",��E8�!r�h�-��j,�$��H���,?�;��|�wQQmc��ۄ�c	k��A��V��Gs���/fSV�떅pg�*k <�@�T�x%��Ga˩K�.�N��>�5��z����v���Dq��d����'�/�[������F8��1��"�
��m����+ ��ɤcٶc���BGᴰ���&�[/\����	�6�;�qS�!�℡��6���v[]��ߩ��nJ#�����9~�	b�͓�F\w��|˜|}����;&��^�z��j�����W{B�?+oQ�d}�٥�LDM�
]�r\��-�/�\(0m,�~�HLXdf&nH���B�R<e'�I۱��=C��*s�*L?�^���і�`a4���z���9oԞ���[��7��|�-������?)[�!���Q(�'�\�N���Փ��ۓ���Ylګm�m[���o��1��^��\���-�9���x�ĽCC��V9�-��Z�}I���.4�|M�	T
���J��R a�i�7a���������}������̓�����O?��OG�°(f-0����P­ȍv�ô�%?��=W,�:q昑#�d3�b	n��ċ)�b��e��|�8���R�Y��@P�$��
EU�؈��3�[M]κ������ӛ	�����n���L{:z������%��Ϥ�p �X$רļ'����7o�]*�]7{qҦ��Rn��u�
u�n6{�b�LaO�7/,��2�j�B�=1��(a��Q���T�C�j��c�5��'Ӯ�z�ܾ�����1ݟ������i'r�s��L�ԄP6t�ͼE���j��6�M��2w�%��L
HP`�DV��*(�T3���3d�e�,!�D��VS��(R@�L��:#C�=�#/M<���:�:"�){b��)����BطIn0��w�Q� @#>�%K*�z�|�u�K�a[���S�(�R�U*:���@�E򑊒�"z"*9��)�f¢�#���
Z'�Һ��A�\�P��Q���(8�N<�ȅ��m��xW��j}d�@^SS��*a(�:��d�U����)���
KH�1L�t��W�1٦&U�<�D���ƽ��R��|@4�}���4�a�?	C|ԣ�\Q�C���C����&�D`��D�8��]
��2��իHlT 4$N�븿�6�����K�Bf
��*H��5�&��@�(���tAaj=$[H��$�"
��ġ�h4�t}�R���2T�w )��*%d�RƲ>�,������o��&����N�ޗ!Aڦ.��ՎJ@�.�K	�*S��8A�H��o�2!����8���;{G� 
�����r�s"�@�Y�sFYZR�2����˚���V}�ß&���!a�Ђ��+l��^#��z_�N�L��QE0�q
NQNDG���t�%,�0_B֠�Բ���+��M���}��3�`�U�F����>����KX.a����CA+b�L1�X����ƾ�����@��#�
4��%,�0SB��W�6)E���Y�pE.��k&	�a�U�V�Ƥ"`�^C�p�K����68A�\�Z���hhn�u}�R0a��]�r�"�
J7Q����2q	�$dRA���~_�4�J;?��r
��r !'	�2�CR���Mk��m�<\�̉R�FZ��,O��5�qY�Ǽ���
r��2+�e`ԾĤ5�%,�0OBƟ�D�O����u�yYƠCBV�* ;:�EF�N���
�oi���	k��d�����=��
�q�NIA�j)�-U���(x�ȫ�..aa��oH�
�=�Z!2*C[Um7.�1��c{��:�I9#
�Z���K�51C��W���=TUu��)�f"�V��O\3)�9X��,�$,���3���q@$��<F�8�0�oM�f ��&��.ai���j�a�#��J؅.�.�(
F�68,EM�^%�p��+\�.ay��ٳ��d�b�`�0h�?�v�� +Q��g��Q�K�5&������Dl��
q�������9 ��KX".a��\����؀
¦�T��I��L�6�Mwb��,����.aa�����ٓ�����
�f5��O�0��8�Y_.�?��`�i �x��"Vܵ��ZӠEEAŃ����	��^��7}
ς��;�'������ی&�I���?Bu��7I&I�sB��T#T�,ܕ�4@�#��T�Э�Šp�ؒ�C�}&a��	c�a^�4�N����֭	���(#�rH�D"�i4����*Tiu���i���X�D���Z�.E��CC��#|x�y
*��Nrؚc�<�+j���.G�J���0,D�}.�98���V�U}���*�f��xlPU�p_�btu��B�]#4o_N�{{�v�暠�߻��^�ޤ&$?+>9�a1ŏ�I��a���bb�*�⟶�����~����j�6��z�~}Lc�;G�\�-�{;�Oo�y�ի0��h�l�Y�J�bU4�������ٳ�q��ٓ�GɟbRj���\�J��[}���������;D��_?98��e[��gw�3CC��k��ҋ�nlɷ[o��Y���;BK�%f��#�Dx��0	��
����:6����]7��6H�.&�sg���A"t3�$���qu8���@?D���~�
ZL<�|Ɔ;HGQ~�!�F:�{y��G1:��4��{G�^x��ɒ�*�6D8@Ű�_c"$B�A�ND�s�/{�G�qg&����@Ƈ��!�2ј�!�P����Ą$�VVw��5�Ub��*ڊ5}Q�DBD̃DBe[�<�J��ChH�P>���?%bҬX��%3s����_�s�9w*!<��4��(�Q��P��ˆ9]�/w/Z^�3��2���?(�-���T�IBx�s��.�L܋�s񉉹����xess�G|b�4�7��	_���O����p�FƗ�i��ѠfYv4��چa��aX��Q�a>���àmZ��v�C7���g5�Ԃ6>ai�e���u=��I�X,kl��"�H~���ǖJ�kM�C�/��'`,�d�6p�Ә,
'�b�f�;
HSA��P�t��6A��B�& �|��LHg��"���庰�$!�7���L��$f�&��fE6��!`/LA�L3,|��;�~<��(��m��)��=U׉Aa������֘$���0����ĈGJX���/O�ЀBr�h*m#H�ev?�XO�iP,J��A>Jt�$��]Vl0
��@kvZ��)I�a����1��[�["Kd6�
g�<���Gu��W0(`�h�2B�P �6A�RHB��u��HՔ$����|.����0`r,s'�)��Q���b�ᶣ�7w��%�QA����J�>��G�W1����"US����qFpbq.�@�vC#��W�!noy꡸&~@1)
H5�`��F��y�3�V�n^��?帮�*��N�M�paI�W=�B�vLj!w
�������q:�9ĩ����;�C
z�)Rì<y��p��PVx7���,Gٿ�8���Q��)739Y��〺��)0��m��H	�!d��hcĈO&�#��!�."
M	�sZ���Hgܢ�������	���.'d��%�BwA�8{�i������Uu��M�771+)��Tgzuuu�T�---��L����T.��oP%������B`$�� �pB�A��"a��3��p�s�!4�7-b�|���b���	m1���Iw���z�4�Lҍ�&|�u��0`���(/��j�),�.��Ӆ�j97�s��R~��^nʖW������l�/��������dy��Ђ78�D�|�$i���#�C�- D���a�&xu��	1��E@ �'���p�7�hou��T�LH�3s󅤪��ydf~6�*g�,�ׅ��3�laA���ܩ�,-KeG��r��TS.sy��3�Me��ϪrMxx!J�@ Fg���B.SpA>ȥB\l^'¾�#�:L�����8+�G=��qAu�@��Jh���g�\Y�����T�����~%�x鷕Ņ�}�?/��9�1H�|}��E@8�HU�	����Ax���'󹌛�-.�N�������C.t�LN�&��HBpA���7��JJ~�Z�8աs3�a������[��:�#d�� 1��!�[��p}cc�P�Z�9�����h�jqe�Zq=�|���ʭ����7�+�6Ef@��v	�P/ߟSE9S٦�d!�/��s�����/�۹�jӤ+!�
�"aI1.�㨴^{�X�	6N�B�l�=��n!
���d��J�i�.H*�{2Ab�V�c��k…�;㧓__�s����i�5��~^�3N^JN�]-�=��V^息%�U��N��r0�afNؚ�M�K�eGBXgB�.1>|lI�q�(�SRT�ws���~�n�H���xwi�EjҢP��C�Hc]��@4� ��&|!�����&�{��+++Ņ1�p�E@��Iwkwr� �/�����5�P�prMS��p֏pt�v6#!��aN�Us�I�@΍�U�!�s4���h>|����.������Aʯ�Y�I�`O����6!V����	/<�L&��Fq��ڨ�D(��;�l�
'���O�OB�!�zrP��-5��&�*�[�����(3nvX��UG���`E\�L\0�򣔆�Uᇔ����c�-���8�P$v����>5aVuT�PX�!��{9!�Cvt��"���i5�{���ܳ���l�#�!/I'�*�eT��B��r�L	�%ǽ�+��K�N![�ViMȇ'ƒ� �;��
g`hS%�g4�4�l9��f��9��σ^^D�egJ�BAa�/{&fHwޭO�}��%�5�ݜM~( ��]D´�+.�p��r��(STn�~C�ds�w�*kBC=m�Hc�ȰW��N�ښ�@B��dsKs��	�1�8����KHB|�#ǧt��1�q��6�$�y��f��.���惉��P����l}�y3^��.���옩�TU��V6p�+��0�R�VxP
�t�LL�fy>�Iia2�u�B�
���c[��ž|:aLG ^}���RETz7�[���Si#UyɇU"�*f|~���Mn7��x���H��B�����I$G��&nrC��p�������5tG
̐2�v*
aJ���4V�u�"F�
C�>���I���w_JBx%
r@�K|�犺�7p2*��
T�MP4��G����SO=:��;��t:=
j-��B��(��:�' ��L���Tk��S�P0�4'I�p��b-��[F4x%�㧜�J�#��>���
����t
�I�!Ҥ����V���F%��'	�zG�)�n�$�Z8(�Y�`�ɢ�����f:F:�9���Χ�
v
�GF��q&
ҹw���A�V���%!<���5
"�ʫ. ���֎�C;��|���]Ǜ{?��9�����H��P�Qfa(�򽷟������z�B�B��#�E5z�N�����z�;w���=��o;�}жy-�u��VF�چ_�{��N������$!<�Z���Tv��n�;�)hC�c0}�iz�ُ�w_���_u��~�!���{N�6���]�6Zz�NM4{�c&�K�ϔV�{���K�=�(ā��Ҝ`Ѐ��Iz�;u>��Ea�������:��<���䉮!C�8H�說c(�7����{�vC��j�NxM�K{D�!N�*@^hP��e����������?����+?`�~��y�{�ر}]#6�kT��2Br\"�S2!E8!�X��:�e���!	� �Vl� Ą4/!ʭj�S1����H,��W'���82}�۞��N�?������>���h<N�	s�=��� ���W���h�IBx5�k��;qI�����'V�v��'�:���$)=��=o=G�|>gf�� ��T�"��=��kD�`3�֚�b����8~ԁ�s��M���p�[/\.!i{�ݥ�]�K��F�B��M�@4dDD��ġ"CAe~�Nq�f��-K�%˲��O�_���9�m�d?�{s�]��ab^y?��y>� \W8�"Nֲ��2��Oh�9uu۶5�e˳�`��Uv��_��e��Y�EQ�H��!ȣR=��j\CZ�kA�~�)�p]nq+V����8��8���Q��0�\��p��ҤW���g�J
N��QW~�~x��
WJoa"��?�*�p�)�p=%
���0L���v6E�E����m��.)�{$i�wSu
ە�8��Ǣ�[��˕��d&l�nF��X�2�9!�u�t�E6B�Af�����v��#:<vD������yU�2��� ��"���P�R�a�n>�BV�'a�F�1D�]�!�8�ֈN�4�b
>��+�+(����䦍�!+`��\>�D��m�ӕ�#H˵B�T��ͧ�u@��Ŏ�����D@��-��R�Z�!�z��A��.�Ss�D,��L�U=o�%k��^��=���p@���!u���S�V[�'O0��(D���ն�ҔbAٯ	q(����W;��O�Ʉ�Y�,�2�M�#CL�j���~���[�V!"��Q�a6=)�΅��)�W+o*a�������C��J�Y��/C��0�Ǟ>�G?�D@�b�8� K�J��EZ2��F��?T<�H�u4�}6�.�=Ɵ��S�BJs��B=:o�sK��u�4�2�jz;��ګ�޴����W�\Gut�����7��v|쯺K��P�F�r�5�a��v�ki���r�읜��}/�K|�$�O��w�9���)@��t�G;r����M��m/l䅕kذ���=�I��@���D"��AX}�Bf��t�:~�x�����q_Gy
��35њ�3����|���ƿW�FC�h=3�6���5Z�R���cB��!�ڂVQ�?�0�c®H�BpȲ�H�vs��#��M�܁CQ�y�G�L��G�r�Lԟ��!�a哳Y��_�m-��]3�'�f�����j�~1�Z�'c���L�ɑ���ګB=�Ϯݛ���ln$���3ɾ	�t�̑����†�jG{��2J�ߛ��a4zuJ?�/X��R����	)#�,������nyO��E�KSy1]+�[<l�#�O��
�7%�	��O�6�C�˥C�w�	GC5]���^�c��|�d�
�8Ε�'#a��{�O�O�WE�^<7Q�;�z닎;�'������o�?�y�0E?����{�Ď�Zg�΅��R�v�
 �hUBH`�/��f�p��BK*�EAȇ�`��㘎m�J���s��#u�B��uOL�f�!n����Qؖ�1���p��'�
K#�:�f�--}O���}d�ʭ��v�j�7���z?38�M�,�?i���}��Ƈ��jQ\�O�.5��N��G���ӳ89 /}�PZ��Z�RY�� 1JЉr�'Ɨ��=ZB1�w��gV��>�c7V'��6!C��ɲ
� kXE}�z������Pi�̳3{��.���ļ�	ª��H"v\�����@8A���E@�p�u:��@;%x��"㝗%{�����h}룅���o� \Q�F�BJ������Ӕ�i�'��L�!<|eYdo<�[��٬!T�(�-j���K�ˎ��2�jW\����,�C+$~��Z/�<:�c�
��t��-3��/%b_���,�ә��Ғ��>�
��3�,;��D&z.>��O=)��)�����ۚ��t<��B��J����M�ϑd�3��I2��=bgO�;��3���+���+$���0]�Wv3��,˃��fX<�k l�^�W�޳Nqwf}C>��{�����.Ɔ;8!sB†�ӱ��9���}@�p�����ŭ������68a�V*�pcU	�It°�C\!�,CUM�Y��q!���q,���v
N�t��;{����h�ؽG��-i��KQ�UUGQ=��cՁ@��r���dj�;=�Yr����B�
����Ʌ���S����s�:�óH���� �P�����hh	����=��|l�%���н��A�jn�*!�DC���E2G�$װ,"҇�!�E]��a(��+���29Sq�-����|g$\���qh*�b�:�!Ľ!�L�:��G������Ƿb����Oc�;bv�?�A��wȎ>�a���$31�	C��H���t���!�0]���=�8y8?7��}��T�D���*n�*!�,P0H6hY�
=A���A�y<s,@c�
������uL�Y3-��2�DX��@�U|?�B��@��-��T`�� �ŨpBy5���BX���S���j�K�}����{�˚݀�פCm���	��c�f������'��Q����%�X����LFk�>B;N��U
 �XUB�l��T�(�5���s�I9�i&S'�L���PR‰X&�r�l"B���Dd�.l�5\�:�Q�m@���* �|EyM���վ��+�Qt�pQ�H~�(>3�Ә�9�{t�_�}��Uv��(Wb��F�
 �XUB(�����p�
�(fG���:qd*�$�
� G���ā���.oy�cT�'!�Spk8��(�A1�Q4|�䩀�A�w���_zΨq}�e�V�F���p4-~��z�bx4VSD���:�g��F�&,��;�2
׈j�QHol�rU�<��Y!����sq/��pS����d���@8�ʴ�@��q���0=X�VTU-b#�4LM15M�ÒnK��l��Ø���� ��n��JH��h���*.u=Uq�d14���!��i�C]#^����hn2�gLh�"�
&��H��.Qt�K4M
�P4�DC�"���'v` \x����R�b�UIs͢`�w*�ށ���BWU��D(	,�5]Hq���8@��@���T1�SejM`�H
�+��~B$��9���r��+ho)���'c�R�<%�X,b#�U,5'!���TE
�3ubR4���6b��x�.@��@�������Q �O	���038�m�-(�d��l���R�h�� �‹�l��{bYR"I%�E[s@|�

@�����b��^@�+#�K<yl�&S��Cx֡�h1�J��x�="h� -a���Hɰܨ\<���q�Ʈ]_�1%���O�S�˦><״�Q��u���bl���mc:<D�
U�0DC�(�#��d���jOn2>7�ߟ�,����������.��SHeS�%4�)��TJј*�w�%��f@��P���(/����^�	ZQR
���r!-{
��a�.�1<T��ybA�ѭ�޾���M��u8�� �lAB?��M;���\>)�T�|� �H$gӗ�	`+P��(����S���np����<|�Ω" ����	æ���bZU�<�y�XѺZ�啦�M���p�r5;�H岑��	Y�
'c�H8k��M�
�h�Ie�;�	�ȇvfj�z��0�6{�������o�#�L6)jRB���u	EA^H�q[�^���4�D�N7�/�Ҹ�B��6n6>?��㊆,LѦ�����rD��b^�E��Yҍ�J}i��>p �v�t6���;�F���bG�	n�q8��HZDs�$��<^�
M�]~㕝;^ޞ.��(��hQ�6���=9.#1#�������`BK���I�����J��h��/�8M7��W�z��V
�����V�wBW�$YQE���&�'�|UB���eE��f6y�@"�*���%`�C:���:��zI����:�+�Lʵ�T8'4��B/��ɣ)��d�b1W��dK��L��v0����.6���/���IӧǚnleD���/җ>m(m����~��5��_�]�P���FsikU��,ZB=��?'fl;V�5�p��D�%f/g���D='S�p*,��Q�L�d�4��~���# �
�z�&�[���8v�t䴧	�L��d	!�"*�DΖ�U�p2/��L�kԉ�D��߲5�[����#"��O6���ho1����:��}� �4e�k{B�'�9|�\GM���w���(|b���\��|6v��*���
K7�g��<�r��T2���"�����E>��u-�IK�Q1�g��
�A3��2Hь�?l��ݡ���vQSK�H&��dN����بN4�b	S��X+�����n�|�ZY^�� ����dB�H��������o�Jd�8[˰��/V �]J�S�ܙ�퉎w~��4.$F�.�)]X8���̙`�ÿ)n�*!|;�OFS7ÙX
�a�`��MK�h�SyЇ*{�%������JSO�B7;{��^����6��l�Te�P�b�"ײJ�65T>��ċ[v������N��EdOUK\[��n�~��ZgSã͇�p����<-13�‘Z������pGogj�P�g�!<�q�_��|�0�7Q3�I�2>=�;h.�� �����ޝ?�#߈�]�\n���k�\�N��f�m��&ǖ��o�F�D@
zQ�1Q�	�xj8P�(�hL����W��/��D�� �n��v�.���33�<��j�WK!�3P��S��3�Ϋ��UZ��'��<���!�ʂ�E�=��m_�{�
�ο�$��ޞ�U���|lZ��k7���[#��!�7M/Q��Z�x"�Ե^�ZEJId��mMCx��">yf�4��m9%f�oy���k�6l���L�Yr���Y�ș�]{�����X�f���{�~��׿0=g�ۏ�ԑ�FY�n�\����ҁ7.�4�Ihz]e��C8�J/�zrY\摢znw[�l�ܥĐ��N�v#B b���0He0���k�'�W(�DH�rZ�f3N���0<��#�U!|� ��!���Bs��
!�yk���?�y�+6�|�y
a���}#�7>�H�닇��d�a�ag�p�+#�ƛD��sw�n�T5�˭�}B�h��ڜ�1��4&&����K��@8Ʃ2��a@)b�a��FeGiJ</�F�U�[�xk��$�ք�3����ge��b|�6���0���U!<��k��'��{�}Bv�u�n[>qi�FQ�@�r �'���H8��o�|*d�;/�;��o���z�h|����ե��]z���!�Q��B�X�(%����V�ë`����P�<H�<�㜤��������/+i~!�-z��D(l�e����2�� O?�+aE�R�V�7���v�	��l;u��.���
�? d���ǻ������(@��=yrc|vφ�OG�K��@��1��g�M��Z�:.��VQ`�,�S�ۘ�t�I�*D�"�V�v(��.Ù� (�	/hS��6P`fe
'����NTzfBa"�����
��L�@Rxp���Ϣ̹z$|��#;����?���C(t���;���=%4��W&�<0��;�u�
��{�~�qd�uAG£;ϵ`�tW	���p��4R�dj���#E�b��`�I)`���`�3H�P�
$h
�%L"z�lM�n*B�AI7&�T�2C��p	@Xɪ[��	���c7U��_!�>f�I�㕱�0)g/C��L?��&��W�U[&�N���Y2:����=��==�9��g'6��=x����Oa�x�n��Y5�ˬ����CR"���1#AJBt
!��Ꝃ�`����������x!����U��a"	�@���+"���� E*	�1�*��
 Pǣ�Zi��WJ���̝u���[G�'�z:�^ހK��^��W��<G��=}í��LW��p�����H=c�ʥab�*aD��ft�
X�
	QH��܁d��1�������E�v(�^�J�6��\��3"�ie��@qԊ�k�E
^M��_����+TC��Z�E�`���id�IB�HI��TVĠ(Q^�I��	1̪tl��Y��Nk|%n5-�e�2UPW�
��!b4-hQ��qc��qC��ቾkV��Uיj�ewD�JP!O��A�J�-�[b���h"K`�E*���ɳ�
+�D�(��%Z�ZuT׮��V٤���^�jax�*�V���:S
�5�����y�UG%���5CSo>l��0��ԃ��X�����'�r�(0P�2���a�'f� �����AB�d���R!	�+�:��1�}G�7�^C=!.�z�����JI��p�!�IO��ɢ2��Me��
=ȥq`
م1_�'��"��5r$c�YR��5��Ds)�.aTD�Pǵ���k�<́�*4>#b�0=#4i_P�J�D�<kE
p�dm� ��E�`����.��Dt�ጠ,�
��b�|�
n3��ݣ�C
����G5�יj��T��"��]V
q��ePŝ1酡�fA��eYvfX��L"ni�Y�y�!S�WdHH>��,fj3`�`�� 
K�J&������L��IYIxRZCx��������)�1M#�w�ص	Rqn��`�GLb4�C!�1���nl���L�0UTҴ]ٮ�B�UO�t#��%�'<�d��zlb�3��	`E���:S
��啡�H�<(pL�8v�P1%+D��7��H̴�=�
���2x�YM;����2�v�ڢ�2���v� !�0P�#9z�'4�J/#Ⱦ!EME+a�e
�u��k��
���(kM�4wV���ԍ\�<`'l'E�b�%�I�gU�]�D��*9�t�Џ0�v��J�|�Ї��/��B��(��ϔ���tk��M5���'�i��Ӳ���f��C���e;H�DJlǙ�</!Ȑ�#F�nP�����q�f�И�FdtQe�|�����ߞ0a�U��V��@/2�Ҩ���TCx
3f,lW.S��․�и�'�N��7����
������in��@�,�U(Q�SFE�0��J�!�J"=sE�c�o��Wv�]�#7�
����L5���ڬ�)vp1�"�C�p>�dz�r���a��f��vJ��]�D��Dضl:�Mh�6Ͳf����vT��Q��ތV;[!6M��2!�J���TR�[�"�����L5���p���[vhHմ�B/�Q�P?��=���
���uyAqӶ���V��i�:`�6����RC�}��@��G)O]��A�z&#�OPV%���hPCx�����C�m�Ҵ�縒�E�4K��d$!�3n��541�SN��ey�x�H����!�\�	�j1�Ӄ�a�Yd�~�$MB����f�@���SAT�R7\Q�'��TCx
3���YC�ێ[ZN+3�W	]H)	
wh�θ.'$�YA��҈K�񌳤S`�ڎ�W�>�n����1��N˶p�\�i��U�C�(�F��d}�-J����f��Z5�ˡ�UeQ���*��,��X1gz���g�܈��"Hv�&��Q�Z�\���QG�E�͠
7�\n��"��Rh+�b�F,�-'�Iו1%��\�_�����;{n��m	/��y��K�Yw����^�f��[o��W����-O�u�n�Yw��w�s����UC�Z	����V�e�v
��CS���
t�cY�x+sb����Y�r�O��
��y���[Đ�w���b�ym="C��ͼ"��`#S�gVٲ�f.HI!y�[6�{�6��1Й�
X�eD�{��[&{���Nj�F�[�[�;ָ�Ѕ�1}t���W�>|i|j�����E�e>��h���O&�%��"c��Ԏ��'�_:�@sxZ�s�:�.��N[�P�%�CEDZ� �d{��4�V!̚����h�E�H��S��̠8."�b��mc�e�J�N���9C�n�u���V<p��P�rOJ�^���V�Ꮾ����{�]e�}���ؔX�8:r�i<ui�����1��ޱ�,4^u�o��i��s�y|`�����tlx���񶻶�gǞ8��G��V����컛��U+W���'s�u��C{��=*��\yg�{QC�,Z���s���q��j���(
p��B҉q��U��J�4M9�r����[%$�W�l�x�]��P�&N�!o��%�l~Ƃ��J�i0�P<ƭ5�-'����o�0���C�n{)6�w�7����WF���DɅ��;�/;o�m�t%�S��tϻ�vV�”7��-S��?�Ҙ�;	��u�Ć�#?^���;X��Yt��ɛO�Z?�=��Sm|QC�Z:mm
"�`�>�<�~�5�S7vp�A+��2�j<(�8�=7���G�=c��n�ja�t�r��1E"A>�G��%Q�8͕}O�]m�V�e�1.L!�� ��ZE1�������O�7���W6ɯ'G�9��q��ʓ��k��Dg�#ƅC��/&ϟ=�L��'{6N�{���=�g�g����K���{�m?��5`���76�v��ȗ�i���O��{ƞ��w��Yf$s�k7����Ry�TU�k���7�+[�0 �8�ũtV[V�Y�R;���E!�T��~ /s��AQ��S�HLxJ�;�����	��n�3���g8Цly����ӫA8%:Ur�c;^��߂��Ǘ��ձv��v�#;+��`��k�.4�z���_z��O�;�/\|���Íf�K�����ۖ��ؓ�bL�� ���֮:�.��Bx�Ezҧ�����d��H���Y��2���W`=��?�pA��=����[�bE�p��me��P2s�l�Hܴ�Vs�h��g�'|�yE|ҳJ�g��f�
���5ցW�n�^�ޅ����K��.n�@��{6?st��߅���o&'��7>�_;��BW8	:rx�;��\�&�_����`�=z�-p�v#�!\&i��fޭ��GC�y��`�)Q�Ҋ��N���^F"�i�y�Gڥ�
Vqk��F�]�N9�jUZ�AR&fwh�A�4[1>�o	F m��i����BC�W�'h��}�p��Mg�o���Z<}����}}�'g?Y8z���&Ͽ&.L���>y����ŧ��8����[g�N��>�gӥ�!<�#���,;0�sw�Q�0����s8+l�GGk�AK |�J�� '�HL�� n�,G�mN�Q��@�N%�nP�0q兒���̠Q:�׿��r2p&E8���h!�P
� �	�꓾��3����M�6On����Q����ޞm
ߓ��pbvˍ=�wMU�—�����
�������|χ�;����r��Ke���ы�><������z�=��R羜�p����6�l����>�s��7����e@xY_�B8~[C�c����E@�c��-�1���S
�R�y����'��l��5��k@�64_c%��6h�ۗq��&
>�b��m_���]=Wh�1zs7�7�I���xsϯپ�	�g�Gw��_��_߳�q�H�S?�k��cz7���~����,�z��X���:MXC�,Z
��?IӐ��.�� �V�a�Z�Ί�MZ�T �:1�HA�"rSUN2�"�κ���v��oY�
��>̕�I*<R��C�֦#�.�c����w_=��Ņ���=h��^�Y��-S��E@a�_���8��զ}��~)�E+�$uW's�_��"I�K�ePР/1"��i���4���@����C��П����A�f)�z�������G���U��]�/_(S�EB�o���|�-�T�f6iI�uA�g*��hOJI�H:���v����Oi���\�}�6zQ�H����L�m	ixK����Ё�A�}�ž�E�r���ޞZi{R��D��A���,B�\W�J��Xlۤ�S�!���$%_Go%�Ժ�T$��X��I�$c	��n]���htr͢5�d烆)��mn��l?=
me�ޠҹ7�,�0��&�J{�H�mx�I�i�!~?�d9��F��!yӮ�f>�o
C/��e��lY������z��e�u���e�TW��0�Z޴�f�I�bQ�*����*=�	-oѮE�ڤ-�/j��2+�7X�X����#������N'�����H���S�K��3�XD����o�7��:`!���p�ٚ
��A#�(�t��\6��_z�WO�&�Or��/#�e
�YFܑ��<���DOQ��'Gf���yV37j���bn�( BD�Ǻ2t{��Q�P�a^����P���\�����ի�ھ�GED�7x@O��akf�B�%��N�ΣL�F5x?+�i}�N�rs�'�הS�	ED����S�_�c?'l�o=�+t"g���(��V~U{tO;������{��b<
}8�Ҵ'��ⱎ�•ٙ���ٝJ�N�N����������np�7^X�
��A싉�"�����wڇ���
�K��t8D��k�=��Wt�.���":]��dy��`�!"��	��1#���~x�!g¾x�r���^!0
�߅*D0D0n!�`!��A��A���D0D0n!�`!��A�C��"��h5�kݥ_���p+&���Z�mKu	6���m�$
t�9��˧���>�ꉍ�1��Wv�&ti8��r�f���&,��"*�B�H"k]��,B�A��P��]�Y$�
� �-PB:�_�؋t�òCD�˄��E<����������nП^�Vu��t>�'�>1��<B��9�)�"�Ïk��k��#a� ��&��a
_D��A��J�\�ڶ�t��*<�v���;_M��Rɓ��G����\��?��K���]�#"��TQ��1��4Ji8ݭ�jDz�\"�e}*4����98-�]"B����'O��E���O�H�X���+)��_һ�>�S�p/B{�[�L��ɄY�0�+_�_��G(��Wg^>yB�"B��8B%����ka�M���vKJ���ibY���3��i6D�����p8|
�Y�2��.߲>_'��J�[6�v G�(�w	/����3[��aW��R.<���eZ��I�~�i�o
�}"B�f�@�u����IC�4-#"�za"�ʎW��)R� ���e6��?}q,������_��.m��
�<���^l��G��V�q� "�ϟ��F���#,�s�N��;a�稏�7մ�W��h�y��Cs��Z�<��ڙ��"d�8*�T|!���i���P�CWD�|s��8Ἱ�ᣙ�PLD�$�Q��7�p�`ƓN�lߎ3��as�W][�	���z�V��j��1�1��8U\p%40ؒ�A�v{���E��8�XQYuN��m�����0O�vo�^Ҥ�h�E�O�]�R��v�g�^�$oؾ�pbY6
���#��e=B�!"ҫQ��(�z_����'~0�gQ�3˳��ki�"�>eHE�N����vk{���3;,��������]7����i��H�d�
VD$��?�=��Iy����s@L��ۇp#���;!B�����"��;!B�ڧc�ab)��?E:�\#!l$�	a#!�H	�FB�H5�FB��6B����j$���P#!<���/]�tz�L�ƋIEND�B`�themes/packs/ic_rounded/images/regis-baloon.png000060400000000364152455753310015612 0ustar00�PNG


IHDR$~��#	pHYs�� cHRMz%������u0�`:�o�_�FzIDATx��ֱ� ���!܁%X޷;8���R$�RHi�<�2��^����K��$
3�ֺ�{'"x��}W��t@�A;��e�LPk-&5 ��03""U�'*ӵ8����q��������s��*IEND�B`�themes/packs/ic_rounded/index.html000060400000000054152455753310013247 0ustar00<html><body bgcolor="#FFFFFF"></body></html>themes/packs/ic_rounded/ic_rounded_events.php000060400000011616152455753310015470 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @themepack	ic_rounded
 * @template	events
 * @version 	3.5.10 2015-08-22
 * @since       3.2.8
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();
?>

<!-- Event -->

<?php // List of Events Template ?>

	<?php // START Event ?>
	<div class="event ic-event ic-clearfix">

		<?php // START Date Box with Event Image as background ?>
		<?php if ($EVENT_NEXT): ?>

		<?php // Link to Event ?>
		<a href="<?php echo $EVENT_URL; ?>" title="<?php echo $EVENT_TITLE; ?>">

		<?php // If no Event Image set ?>
		<?php if (!$EVENT_IMAGE) : ?>
		<div class="ic-box-date">
		<?php // In case of Event Image ?>
		<?php else : ?>
		<div class="ic-box-date" style="background-image:url(<?php echo $IMAGE_MEDIUM; ?>); border-color: <?php echo $CATEGORY_COLOR; ?>">
		<?php endif; ?>
			<div class="ic-date">

				<?php // Day ?>
				<div class="ic-day">
					<?php echo $EVENT_DAY; ?>
				</div>

				<?php // Month ?>
				<div class="ic-month">
					<?php echo $EVENT_MONTHSHORT; ?>
				</div>

				<?php // Year ?>
				<div class="ic-year">
					<?php echo $EVENT_YEAR; ?>
				</div>

				<?php // Time ?>
				<div class="ic-time">
					<?php echo $EVENT_TIME; ?>
				</div>

			</div>
		</div>

		</a>
		<?php endif; ?><?php // END Date Box ?>

		<?php // START Right Content ?>
		<div class="ic-content">

			<?php // Header (Title/Category) of the event ?>
			<div class="eventtitle ic-event-title ic-clearfix">

				<?php // Title of the event ?>
				<div class="title-header ic-title-header ic-float-left">
					<h2>
						<a href="<?php echo $EVENT_URL; ?>" title="<?php echo $EVENT_TITLE; ?>">
							<?php echo $EVENT_TITLEBAR; ?>
						</a>
					</h2>
				</div>

				<?php // Category ?>
				<div class="title-cat ic-title-cat ic-float-right <?php if ($CATEGORY_FONTCOLOR == 'fontColor') : ?>ic-text-border<?php endif; ?>"
					style="color: <?php echo $CATEGORY_COLOR; ?>;">
					<?php echo $CATEGORY_TITLE; ?>
				</div>
				<!--div class="title-cat">
					<i class="icTip icon-folder-3 caticon <?php echo $CATEGORY_FONTCOLOR; ?>" style="background:<?php echo $CATEGORY_COLOR; ?>" title="<?php echo $CATEGORY_TITLE; ?>"></i> <?php echo $CATEGORY_TITLE; ?>
				</div-->

			</div>

			<?php // Feature icons ?>
			<?php if (!empty($FEATURES_ICONSIZE_LIST)) : ?>
			<div class="ic-features-container">
				<?php foreach ($FEATURES_ICONS as $icon) : ?>
				<div class="ic-feature-icon">
					<img class="iCtip" src="<?php echo $FEATURES_ICONROOT_LIST . $icon['icon'] ?>" alt="<?php echo $icon['icon_alt'] ?>" title="<?php echo $SHOW_ICON_TITLE == '1' ? $icon['icon_alt'] : '' ?>">
				</div>
				<?php endforeach ?>
			</div>
			<?php endif ?>

			<?php // Next Date ('next' 'today' or 'last date' if no next date) ?>
			<?php if ($EVENT_DATE): ?>
			<div class="nextdate ic-next-date ic-clearfix">
				<strong><?php echo $EVENT_DATE; ?></strong>
			</div>
			<?php endif; ?>

			<?php // Location (different display, depending on the fields filled) ?>
			<?php if ($EVENT_VENUE OR $EVENT_CITY): ?>
			<div class="place ic-place">

				<?php // Place name ?>
				<?php if ($EVENT_VENUE): ?><?php echo $EVENT_VENUE;?><?php endif; ?>

				<?php // If Place Name exists and city set (Google Maps). Displays Country if set. ?>
				<?php if ($EVENT_CITY AND $EVENT_VENUE): ?>
					<span> - </span>
					<?php echo $EVENT_CITY;?><?php if ($EVENT_COUNTRY): ?>, <?php echo $EVENT_COUNTRY;?><?php endif; ?>
				<?php endif; ?>

				<?php // If Place Name doesn't exist and city set (Google Maps). Displays Country if set. ?>
				<?php if ($EVENT_CITY AND !$EVENT_VENUE): ?>
					<?php echo $EVENT_CITY;?><?php if ($EVENT_COUNTRY): ?>, <?php echo $EVENT_COUNTRY;?><?php endif; ?>
				<?php endif; ?>

			</div>
			<?php endif; ?>

			<?php // Short Description ?>
			<?php if ($EVENT_DESC): ?>
			<div class="descshort ic-descshort">
				<?php echo $EVENT_INTRO_TEXT ; ?><?php echo $READ_MORE ; ?>
			</div>
			<?php endif; ?>

			<?php // Addons Plugins (JComments, ...) - onListAddEventInfo ?>
			<?php if ($IC_LIST_ADD_EVENT_INFO): ?>
				<?php echo $IC_LIST_ADD_EVENT_INFO; ?>
			<?php endif; ?>

			<?php // + infos Text ?>
			<div class="moreinfos ic-more-info">
			 	<a href="<?php echo $EVENT_URL; ?>" title="<?php echo $EVENT_TITLE; ?>">
			 		<?php echo JTEXT::_('COM_ICAGENDA_EVENTS_MORE_INFO'); ?>
			 	</a>
			</div>

		</div><?php // END Right Content ?>

	</div>

<?php // END Event ?>
themes/packs/ic_rounded/ic_rounded_day.php000060400000013045152455753310014737 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @themepack	ic_rounded
 * @template	calendar info-tip
 * @version 	3.5.6 2015-06-21
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die(); ?>

<!-- Day info-tip -->

<?php // Day with event ?>
<?php if ($stamp->events) : ?>

	<?php // Main Background of a day ?>

	<div class="icevent <?php echo $multi_events; ?>" style="background:<?php echo $bg_day; ?> !important; z-index:1000;">

		<?php // Color of date text depending of the category color ?>
		<a>
		<div class="<?php echo $stamp->ifToday; ?> <?php echo $bgcolor; ?>" style="color: #fff !important" data-cal-date="<?php echo $stamp->this_day; ?>">
			<?php echo $stamp->Days; ?>
		</div>
		</a>

		<?php // Start of the Tip ?>
		<div class="spanEv">

			<?php foreach($events as $e) : ?>

				<div class="ictip-event">
					<?php echo '<a href="' . $e['url'] . '" rel="nofollow">'; ?>

					<div class="linkTo">

						<?php // Show image if exist ?>
						<div class="ictip-img">
						<?php
						echo '<span style="background: ' . $e['cat_color'] . ';" class="img">';

						if ($e['image'])
						{
							echo '<img src="' . $e['image'] . '" alt="" />';
						}
						else
						{
							echo '<span class="noimg ' . $bgcolor . '">' . $e['no_image'] . '</span>';
						}

						echo '</span>';
						?>
						</div>

						<?php // Display Title (with link to event) and other infos if set (city, country) ?>
						<div class="ictip-event-title titletip">
							<?php //echo '&rsaquo; ' . $e['title']; ?>
							<?php echo $e['title']; ?>
						</div>

						<?php // Display feature icons, if required ?>
						<?php if (!empty($e['features_icon_size'])) : ?>
						<div class="ic-features-container">
							<?php foreach ($e['features'] as $icon) : ?>
								<div class="ic-feature-icon">
									<img src="<?php echo $e['features_icon_root'] . $icon['icon'] ?>" alt="<?php echo $icon['icon_alt'] ?>" title="<?php echo $e['show_icon_title'] == '1' ? $icon['icon_alt'] : '' ?>">
								</div>
							<?php endforeach ?>
						</div>
						<?php endif; ?>

						<?php // INFO ?>
						<div class="ictip-info ic-clearfix">

							<?php // Display Time (start) for each date ?>
							<?php if ($e['displaytime']) : ?>
								<div class="ictip-time">
									<?php echo $e['time']; ?>
								</div>
							<?php endif; ?>

							<?php // Display Venue Name, City and/or Country for each date ?>
							<?php if ($e['place'] OR $e['city'] OR $e['country']) : ?>
								<div class="ictip-location">
									<?php // Display Venue Name ?>
									<?php if ($e['place'] AND ($e['city'] OR $e['country']) ) : ?>
										<?php echo $e['place'].', '; ?>
									<?php else : ?>
										<?php echo $e['place']; ?>
									<?php endif; ?>
									<?php // Display City and/or Country for each date ?>
									<?php if ($e['city']) : ?>
										<?php echo $e['city']; ?>
									<?php endif; ?>
									<?php if (($e['country']) && ($e['city'])) : ?>
										<?php echo ', '.$e['country']; ?>
									<?php endif; ?>
									<?php if (($e['country']) AND (!$e['city'])) : ?>
										<?php echo $e['country']; ?>
									<?php endif; ?>
								</div>
							<?php endif; ?>

							<?php // Display Short Description ?>
							<?php if ($e['descShort']) : ?>
								<div class="ictip-desc">
									<?php echo $e['descShort']; ?>
								</div>
							<?php endif; ?>

						</div>

						<?php // Display Registration Information ?>
						<div style="clear:both"></div>

						<?php if ($e['registrations']) : ?>
						<div class="regButtons ic-reg-buttons">

							<?php if (!$e['date_sold_out']) : ?>
								<?php if ($e['maxTickets']) : ?>
									<span class="iCreg available">
										<?php echo JText::_( 'MOD_ICCALENDAR_SEATS_NUMBER' ) . ': ' . $e['maxTickets']; ?>
									</span>
								<?php endif; ?>
								<?php if ($e['TicketsLeft'] && $e['maxTickets']) : ?>
									<span class="iCreg ticketsleft">
										<?php echo JText::_( 'MOD_ICCALENDAR_SEATS_AVAILABLE' ) . ': ' . $e['TicketsLeft']; ?>
									</span>
								<?php endif; ?>
								<?php if ($e['registered']) : ?>
									<span class="iCreg registered">
										<?php echo JText::_( 'MOD_ICCALENDAR_ALREADY_REGISTERED' ) . ': ' . $e['registered']; ?>
									</span>
								<?php endif; ?>
							<?php else : ?>
								<span class="iCreg closed">
									<?php echo $e['date_sold_out']; ?>
								</span>
							<?php endif; ?>

						</div>
						<?php endif; ?>
					</div>
					<?php echo '</a>'; ?>
				</div>
			<?php endforeach; ?>
		</div>

		<?php // Display Date at the top of the info-tip ?>
		<div class="date ictip-date">
			<span class="ictip-date-lbl">
				<?php echo JTEXT::_('JDATE');  ?> :
			</span>
			<span class="ictip-date-format">
				<?php echo $stamp->dateTitle; ?>
			</span>
		</div>

	</div><?php // end of the day ?>

<?php // Day with no event ?>
<?php else : ?>
	<div class="no-event <?php echo $stamp->ifToday; ?>" data-cal-date="<?php echo $stamp->this_day; ?>">
		<?php echo $stamp->Days; ?>
	</div>
<?php endif; ?>
themes/packs/ic_rounded/ic_rounded_calendar.php000060400000001660152455753310015733 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @themepack	ic_rounded
 * @template	calendar
 * @version 	3.5.6 2015-05-19
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die(); ?>

<!-- Calendar -->

<?php // Code can be added at Top of calendar ?>

<?php // Calendar Template ?>
<?php
	$stamp->days();
?>

<?php // Code can be added at Bottom of calendar
add/elements/icsetvar.php000060400000033663152455753310011462 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *	iCagenda Set Var for Theme Packs
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.12 2015-10-06
 * @since       3.2.8
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

// loading iCagenda PARAMS (Component + menu)
$app			= JFactory::getApplication();
$params			= $app->getParams();
$isSef			= $app->getCfg('sef');

$jview			= JRequest::getCmd('view', '');
$jlayout		= JRequest::getCmd('layout', 'default');

$layouts_array	= array('event', 'registration');
$ic_main_list	= ! in_array($jlayout, $layouts_array) ? true : false;

$datesDisplay	= $params->get('datesDisplay', 1);

$eventTimeZone	= null;
$only_startdate	= ($item->weekdays || $item->weekdays == '0') ? false : true;


	if ($ic_main_list)
	{
		$this_date		= JHtml::date($evt, 'Y-m-d H:i', $eventTimeZone);
		$date_today		= JHtml::date('now', 'Y-m-d');
		$period			= unserialize($item->period);
		$period			= is_array($period) ? $period : array();
		$is_in_period	= (in_array($this_date, $period)) ? true : false;

		if ($is_in_period
			&& $item->weekdays == ''
			&& strtotime($item->startdatetime) <= strtotime($date_today)
			&& strtotime($item->enddatetime) >= strtotime($date_today)
			)
		{
			$ongoing = true;
		}
		else
		{
			$ongoing = false;
		}

		// Day in Date Box (list of events)
		$EVENT_DAY			= $this->day_display_global ? icagendaEvents::day($evt, $item) : false;
		// Month in Date Box (list of events)
		$EVENT_MONTHSHORT	= $this->month_display_global ? icagendaEvents::dateBox($this_date, 'monthshort', $ongoing) : false;
		// Year in Date Box (list of events)
		$EVENT_YEAR			= $this->year_display_global ? icagendaEvents::dateBox($evt, 'year', $ongoing) : false;
		// Time in Date Box (list of events)
		$EVENT_TIME			= ($this->time_display_global && $item->displaytime == 1)
							? icagendaEvents::dateToTimeFormat($evt)
							: false;

		// Load Event Data
		$EVENT_DATE			= iCModeliChelper::nextDate($evt, $item);
		$EVENT_SET_DATE		= iCModeliChelper::eventUrlDate($evt);
		$READ_MORE			= ($this->shortdesc_display_global == '' && !$item->shortdesc)
							? iCModeliChelper::readMore($item->url, $item->desc, '[&#46;&#46;&#46;]')
							: false;

		// URL to event details view (list of events)
		if ($datesDisplay == 1)
		{
			$date_var		= ($isSef == '1') ? '?date=' : '&amp;date=';
			$set_url_date	= $date_var . $EVENT_SET_DATE;
			$date_url		= ($only_startdate && in_array($this_date, $period))
							? ''
							: $date_var . $EVENT_SET_DATE;

			$EVENT_URL = $item->url . $date_url;
		}
		else
		{
			$EVENT_URL = $item->url;
		}
	}
	else
	{
		$EVENT_URL = $item->url;
	}


	/**
	 *	Event Header
	 */
	$BACK_ARROW				= $item->BackArrow;

	$EVENT_SHARING			= $item->share_event;
	$EVENT_REGISTRATION		= $item->reg;

	// Event Title
	$EVENT_TITLE			= $item->titleFormat;
	$EVENT_TITLEBAR			= $item->titlebar;


	/**
	 *	Event Dates
	 */
	$TEXT_FOR_NEXTDATE		= $item->dateText;
	$EVENT_NEXT				= $item->next;
	$EVENT_NEXTDATE			= $item->nextDate;
//	$EVENT_DAY				= $item->day;
//	$EVENT_MONTHSHORT		= $item->monthShort;

	// Get var 'date_value' set to session in event details view
	$session = JFactory::getSession();
	$get_date = $session->get('date_value', '');

	if (!$get_date)
	{
		$get_date = JRequest::getVar('date', '');
	}

	if ($get_date)
	{
		$ex = explode('-', $get_date);

		if (count($ex) == 5)
		{
			$dateday = $ex['0'].'-'.$ex['1'].'-'.$ex['2'].' '.$ex['3'].':'.$ex['4'];
		}
		else
		{
			$dateday = '';
		}
	}

	$timeformat = $params->get('timeformat');

	$timedisplay = '';
	$timedisplay = $item->displaytime;

	$lang_time = '';

	if ($get_date)
	{
		$EVENT_THIS_DATE = iCModeliChelper::formatDate($dateday);

		if ($timedisplay == 1)
		{
			if ($timeformat == 1)
			{
				$lang_time = strftime('%H:%M', strtotime($dateday));
			}
			else
			{
				$lang_time = strftime('%I:%M %p', strtotime($dateday));
			}

			$EVENT_THIS_DATE.= ' <small>' . $lang_time;

			$weekdays_array = explode (',', $item->weekdays);
			$weekdays = count($weekdays_array);

			if ( !empty($weekdays) && $item->periodTest
				&& ($lang_time != $item->endTime) )
			{
				$EVENT_THIS_DATE.= ' - ' . $item->endTime;
			}

			$EVENT_THIS_DATE.= '</small>';
		}

		$dates_array	= unserialize($item->dates);
		$dates_array	= is_array($dates_array) ? $dates_array : array();
		$period_array	= unserialize($item->period);
		$period_array	= is_array($period_array) ? $period_array : array();

		// Period with no weekdays selected
		if (isset($EVENT_THIS_DATE)
			&& empty($weekdays)
			&& in_array($dateday, $period_array)
			)
		{
			$EVENT_VIEW_DATE_TEXT	= $TEXT_FOR_NEXTDATE;
			$EVENT_VIEW_DATE		= $EVENT_NEXTDATE;
		}

		// Single Date or date in a period with weekdays selection
		elseif (isset($EVENT_THIS_DATE)
			&& !empty($weekdays)
			&& (in_array($dateday, $dates_array) || in_array($dateday, $period_array))
			)
		{
			$EVENT_VIEW_DATE_TEXT	= JTEXT::_('COM_ICAGENDA_EVENT_DATE');
			$EVENT_VIEW_DATE		= $EVENT_THIS_DATE;
		}

		// Next/Last Date (if type is list of events)
		else
		{
			$EVENT_VIEW_DATE_TEXT	= $TEXT_FOR_NEXTDATE;
			$EVENT_VIEW_DATE		= $EVENT_NEXTDATE;
		}
	}
	else
	{
		$EVENT_VIEW_DATE_TEXT	= $TEXT_FOR_NEXTDATE;
		$EVENT_VIEW_DATE		= $EVENT_NEXTDATE;
	}

	/**
	 *	Feature Icons
	 */
	$FEATURES_ICONSIZE_LIST		= $params->get('features_icon_size_list');
	$FEATURES_ICONSIZE_EVENT	= $params->get('features_icon_size_event');
	$SHOW_ICON_TITLE			= $params->get('show_icon_title');
	// Get media path
	$params_media = JComponentHelper::getParams('com_media');
	$image_path = $params_media->get('image_path', 'images');
	$FEATURES_ICONROOT_LIST		= JUri::root() . $image_path . '/icagenda/feature_icons/' . $FEATURES_ICONSIZE_LIST . '/';
	$FEATURES_ICONROOT_EVENT	= JUri::root() . $image_path . '/icagenda/feature_icons/' . $FEATURES_ICONSIZE_EVENT . '/';
	$FEATURES_ICONS				= array();

	if (isset($item->features) && is_array($item->features)
		&& (!empty($FEATURES_ICONSIZE_LIST) || !empty($FEATURES_ICONSIZE_EVENT)))
	{
		foreach ($item->features as $feature)
		{
			$FEATURES_ICONS[] = array('icon' => $feature->icon, 'icon_alt' => $feature->icon_alt);
		}
	}


	/**
	 *	Event Image and Thumbnails
	 */
	$EVENT_IMAGE			= $item->image;
	$EVENT_IMAGE_TAG		= $item->imageTag;

	$IMAGE_LARGE = $IMAGE_MEDIUM = $IMAGE_SMALL = $IMAGE_XSMALL = '';

	if ($EVENT_IMAGE)
	{
		$default_thumbnail = 'media/com_icagenda/images/nophoto.jpg';

		if (icagendaClass::isLoaded('icagendaThumb'))
		{
//			$IMAGE_LARGE			= icagendaThumb::sizeLarge($item->image, null, true);
			$IMAGE_MEDIUM			= ($ic_main_list) ? icagendaThumb::sizeMedium($item->image) : '';
//			$IMAGE_SMALL			= icagendaThumb::sizeSmall($item->image);
//			$IMAGE_XSMALL			= icagendaThumb::sizeXSmall($item->image);
			$IMAGE_LARGE_HTML		= ( ! $ic_main_list) ? icagendaThumb::sizeLarge($item->image, 'imgTag', true) : '';
//			$IMAGE_MEDIUM_HTML		= icagendaThumb::sizeMedium($item->image, 'imgTag');
//			$IMAGE_SMALL_HTML		= icagendaThumb::sizeSmall($item->image, 'imgTag');
//			$IMAGE_XSMALL_HTML		= icagendaThumb::sizeXSmall($item->image, 'imgTag');
		}
		else
		{
			$IMAGE_LARGE = $IMAGE_MEDIUM = $IMAGE_SMALL = $IMAGE_XSMALL = '';
			$IMAGE_LARGE_HTML = $IMAGE_MEDIUM_HTML = $IMAGE_SMALL_HTML = $IMAGE_XSMALL_HTML = '';
		}
	}


	/**
	 *	Event Details - Description, Meta-description and Intro Text
	 */
	$EVENT_DESC				= ($item->desc || $item->shortdesc) ? true : false;
//	$EVENT_DESCRIPTION		= $item->description;
	$EVENT_META				= $item->metaAsShortDesc;

	$desc_display_event = $params->get('desc_display_event', '');

	if ($desc_display_event == '1') // full desc
	{
		$EVENT_SHORTDESC	= false;
		$EVENT_DESCRIPTION	= $item->description ? $item->description : false;
	}
	elseif ($desc_display_event == '2') // short desc
	{
		$EVENT_SHORTDESC	= $item->shortDescription ? $item->shortDescription : false;
		$EVENT_DESCRIPTION	= false;
	}
	elseif ($desc_display_event == '3') // short and full desc
	{
		$EVENT_SHORTDESC	= $item->shortDescription ? $item->shortDescription : false;
		$EVENT_DESCRIPTION	= $item->description ? $item->description : false;
	}
	elseif ($desc_display_event == '0') // Hide
	{
		$EVENT_SHORTDESC	= false;
		$EVENT_DESC			= false;
		$EVENT_DESCRIPTION	= false;
	}
	else // Auto (First Full Description, if does not exist, will use Short Description if not empty)
	{
		$EVENT_SHORTDESC	= false;
		$EVENT_DESCRIPTION	= $item->description ? $item->description : $item->shortDescription;
	}


	/**
	 *	Events List - Intro Text
	 */
	$shortdesc_display_global = $params->get('shortdesc_display_global', '');
	$Filtering_ShortDesc_Global = JComponentHelper::getParams('com_icagenda')->get('Filtering_ShortDesc_Global', '');

	if ($shortdesc_display_global == '1') // short desc
	{
		$EVENT_DESCSHORT	= $item->shortdesc ? $item->shortdesc : false;

		if ($EVENT_DESCSHORT)
		{
			$EVENT_DESCSHORT	= empty($Filtering_ShortDesc_Global) ? '<i>' . $EVENT_DESCSHORT . '</i>' : $EVENT_DESCSHORT;
		}
	}
	elseif ($shortdesc_display_global == '2') // Auto-Introtext
	{
		$EVENT_DESCSHORT	= $item->descShort ? $item->descShort : false;
	}
	elseif ($shortdesc_display_global == '0') // Hide
	{
		$EVENT_DESCSHORT	= false;
	}
	else // Auto (First Short Description, if does not exist, Auto-generated short description from the full description. And if does not exist, will use meta description if not empty)
	{
		$short_description = $item->shortdesc ? $item->shortdesc : $item->descShort;

		$metaAsShortDesc = $item->metaAsShortDesc;

		if ($metaAsShortDesc)
		{
			$metaAsShortDesc	= empty($Filtering_ShortDesc_Global) ? '<i>' . $metaAsShortDesc . '</i>' : $metaAsShortDesc;
		}

		$EVENT_DESCSHORT	= $short_description ? $short_description : $metaAsShortDesc;
	}

	$EVENT_INTRO_TEXT = $EVENT_DESCSHORT; // New var name since 3.4.0


	/**
	 *	Custom Fields
	 */
	$CUSTOM_FIELDS	= $item->loadEventCustomFields;


	/**
	 *	Event Information
	 */
	$EVENT_INFOS			= $item->infoDetails;

	// All Dates ON
	if (
//		$get_date
//		&&
		$item->maxNbTickets
		&& $item->maxNbTickets != '1000000'
		)
	{
//		$SEATS_AVAILABLE	= (isset($dateday) && isset($item->totalRegistered))
		$SEATS_AVAILABLE	= isset($item->totalRegistered)
							? ($item->maxNbTickets - $item->totalRegistered)
							: '';

//		if (isset($dateday) && $SEATS_AVAILABLE === 0)
		if ($SEATS_AVAILABLE === 0)
		{
			$SEATS_AVAILABLE	= JText::_('COM_ICAGENDA_REGISTRATION_DATE_NO_TICKETS_LEFT');
		}

//		$MAX_NB_OF_SEATS	= (isset($dateday))
//							? $item->maxNbTickets
//							: false;
		$MAX_NB_OF_SEATS	= $item->maxNbTickets;
	}
	// All Dates ON
	else
	{
		$SEATS_AVAILABLE		= false;
		$MAX_NB_OF_SEATS		= false;
	}

	$EVENT_VENUE			= $params->get('venue_display_global') ? $item->place_name : false;
	$EVENT_CITY				= $params->get('city_display_global') ? $item->city : false;
	$EVENT_COUNTRY			= $params->get('country_display_global') ? $item->country : false;
	$EVENT_POSTAL_CODE		= $params->get('city_display_global') ? $item->city : false;

	$EVENT_PHONE			= $item->phone;
	$EVENT_EMAIL			= $item->email;
	$EVENT_EMAIL_CLOAKING	= $item->emailLink;
	$EVENT_WEBSITE			= $item->website;
	$EVENT_WEBSITE_LINK		= $item->websiteLink;
//	$EVENT_ADDRESS			= $item->address;

	/**
	 *	Event Address
	 */
	if ( ! $ic_main_list && $item->address)
	{
		// Create an array to separate all strings between comma in individual parts
		$EVENT_STREET		= $item->address;
		$ADDRESS_EX			= explode(',', $EVENT_STREET);

		$country_to_check	= ($EVENT_COUNTRY == 'United States') ? 'USA' : $EVENT_COUNTRY;
		$country_removed	= false;
		$city_removed		= false;

		$i = 0;
		$count_ADDRESS_EX = count($ADDRESS_EX);

		for ($i; $i < $count_ADDRESS_EX; $i++)
		{
			// Remove the country from the full address
			if ($EVENT_COUNTRY && ! $country_removed
				&& strpos($EVENT_STREET, $country_to_check) !== false)
			{
				$country_removed		= true;

				// Remove country
				$EVENT_STREET		= substr( $EVENT_STREET, 0, strripos( $EVENT_STREET, ',' ) );
			}
			elseif ($EVENT_CITY && ! $city_removed
				&& strpos($EVENT_STREET, $EVENT_CITY) !== false)
			{
				$city_removed		= true;

				// Remove last value, until city is not found in the string
				$EVENT_STREET = substr( $EVENT_STREET, 0, strripos( $EVENT_STREET, ',' ) );
			}
		}

		if ($EVENT_STREET && $EVENT_POSTAL_CODE)
		{
			$EVENT_POSTAL_CODE = str_replace($EVENT_STREET . ', ', '', $item->address);
			$EVENT_POSTAL_CODE = substr( $EVENT_POSTAL_CODE, 0, strripos( $EVENT_POSTAL_CODE, ',' ) );
		}

		$EVENT_ADDRESS = $EVENT_STREET ? $EVENT_STREET . '<br />' : '';

		if ($EVENT_CITY && $EVENT_COUNTRY && $EVENT_POSTAL_CODE)
		{
			$EVENT_ADDRESS.= $EVENT_POSTAL_CODE . ', ' . $EVENT_COUNTRY . '<br />';
		}
		elseif ($EVENT_CITY && !$EVENT_COUNTRY && $EVENT_POSTAL_CODE)
		{
			$EVENT_ADDRESS.= $EVENT_POSTAL_CODE . '<br />';
		}
		elseif (!$EVENT_CITY && $EVENT_COUNTRY)
		{
			$EVENT_ADDRESS.= $EVENT_COUNTRY . '<br />';
		}
	}
	else
	{
		$EVENT_ADDRESS = false;
	}


	$GOOGLEMAPS_COORDINATES	= $item->coordinate;
	$EVENT_MAP				= $item->map;

	$EVENT_SINGLE_DATES		= $item->datelistUl;
	$EVENT_PERIOD			= $item->periodDates;

	$PARTICIPANTS_DISPLAY	= $item->participantList;
	$PARTICIPANTS_HEADER	= $item->participantListTitle;
	$EVENT_PARTICIPANTS		= $item->registeredUsers;

	$EVENT_ATTACHEMENTS		= $item->file;
	$EVENT_ATTACHEMENTS_TAG	= $item->fileTag;

	$CATEGORY_TITLE			= $item->cat_title;
	$CATEGORY_COLOR			= $item->cat_color;
	$CATEGORY_FONTCOLOR		= $item->fontColor;


	/**
	 *	Add Event Info from plugins (if exists)
	 */
	$onListAddEventInfo = $this->dispatcher->trigger('onListAddEventInfo', array('com_icagenda.list', &$item, &$this->params));

	$IC_LIST_ADD_EVENT_INFO = '';

	foreach ($onListAddEventInfo as $added_info)
	{
		$IC_LIST_ADD_EVENT_INFO.= '<div class="ic-list-add-event-info">' . $added_info . '</div>';
	}

add/elements/index.html000060400000000054152455753310011112 0ustar00<html><body bgcolor="#FFFFFF"></body></html>add/index.html000060400000000054152455753310007276 0ustar00<html><body bgcolor="#FFFFFF"></body></html>models/submit.php000060400000100601152455753310010047 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.10 2015-08-25
 * @since       3.2.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport('joomla.application.component.modelitem');
jimport('joomla.form.form');
jimport('joomla.filesystem.file');
jimport('joomla.filesystem.folder');

/**
 * iCagenda Submit Event Model
 */
class iCagendaModelSubmit extends JModelItem
{
	protected $data;

	protected $msg;

	function getForm()
	{
	    $form = JForm::getInstance('submit', JPATH_COMPONENT . '/models/forms/submit.xml');

		if (empty($form))
		{
			return false;
		}

	    return $form;
	}

	public function test_input($data)
	{
		$this->data = trim($data);
		$this->data = stripslashes($this->data);

		return $this->data;
	}

	public function getData()
	{
		$app		= JFactory::getApplication();
		$user		= JFactory::getUser();
		$lang		= JFactory::getLanguage();
		$session	= JFactory::getSession();

		jimport( 'joomla.filter.output' );

		$eventTimeZone = null;
		$error_messages = array();

		// Get Params
		$params = $app->getParams();

		$submitAccess = $params->get('submitAccess', '');
		$approvalGroups = $params->get('approvalGroups', array("8"));

		// Get User Groups
		// Joomla 3.x/2.5 SWITCH
		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			$userGroups = $user->groups;
		}
		else
		{
			$userGroups = $user->getAuthorisedGroups();
		}

		$user_id		= $user->get('id');

		// logged-in Users: Name/User Name Option
		$nameJoomlaUser	= $params->get('nameJoomlaUser', 1);
		$u_name			= ($nameJoomlaUser == 1) ? $user->get('name') : $user->get('username');

		// Redirection settings
		$baseURL		= JURI::base();
		$subpathURL		= JURI::base(true);

		$baseURL		= str_replace('/administrator', '', $baseURL);
		$subpathURL		= str_replace('/administrator', '', $subpathURL);

		$urlsend		= str_replace('&amp;','&', JRoute::_('index.php?option=com_icagenda&view=submit&layout=send'));

		// Sub Path filtering
		$subpathURL		= ltrim($subpathURL, '/');

		// URL List filtering
		$urlsend		= ltrim($urlsend, '/');

		if (substr($urlsend, 0, strlen($subpathURL)+1) == "$subpathURL/")
		{
			$urlsend = substr($urlsend, strlen($subpathURL)+1);
		}

		$urlsend		= rtrim($baseURL, '/') . '/' . ltrim($urlsend, '/');

		// Get return params
		$submit_return			= $params->get('submitReturn', '');
		$submit_return_article	= $params->get('submitReturn_Article', $urlsend);
		$submit_return_url		= $params->get('submitReturn_Url', $urlsend);

		if (($submit_return == 1) && is_numeric($submit_return_article))
		{
			$url_return = JURI::root().'index.php?option=com_content&view=article&id=' . $submit_return_article;
		}
		elseif ($submit_return == 2)
		{
			$url_return = $submit_return_url;
		}
		else
		{
			$url_return = $urlsend;
		}

		// Set alert messages
		$alert_title			= $params->get('alert_title', '');
		$alert_body				= $params->get('alert_body', '');
		$url_redirect			= isset($urlsend_custom) ? $urlsend_custom : $urlsend; // Url custom not yet available.
		$alert_title_redirect	= $alert_title ? $alert_title : JText::_( 'COM_ICAGENDA_EVENT_SUBMISSION' );
		$alert_body_redirect	= $alert_body ? $alert_body : JText::_( 'COM_ICAGENDA_EVENT_SUBMISSION_CONFIRMATION' );

		// Set post data
		$this->data						= new stdClass();
		$this->data->id					= null;
		$this->data->asset_id			= JRequest::getVar('asset_id', '', 'post');
		$this->data->ordering			= 0;
		$this->data->state				= 1;


		// Control: if Manager
		jimport( 'joomla.access.access' );
		$adminUsersArray = array();

		foreach ($approvalGroups AS $ag)
		{
			$adminUsers			= JAccess::getUsersByGroup($ag, False);
			$adminUsersArray	= array_merge($adminUsersArray, $adminUsers);
		}

		$this->data->approval			= (in_array($user_id, $adminUsersArray)) ? '0' : '1';
		$this->data->access				= 1 ;
		$this->data->language			= '*';
//		$menuID 						= JRequest::getVar('menuID', '', 'post');


		// USER NAME
		$this->data->username 			= JRequest::getVar('username', '', 'post');

		if ( ! $this->data->username)
		{
			$error_messages[] = JText::sprintf('COM_ICAGENDA_FORM_VALIDATE_FIELD_REQUIRED_NAME', JText::_('COM_ICAGENDA_SUBMIT_FORM_USER_NAME'));
		}

		// USER EMAIL
		$this->data->created_by_email	= JRequest::getVar('created_by_email', '', 'post');

		if ( ! $this->data->created_by_email)
		{
			$error_messages[] = JText::sprintf('COM_ICAGENDA_FORM_VALIDATE_FIELD_REQUIRED_NAME', JText::_('COM_ICAGENDA_SUBMIT_FORM_USER_EMAIL'));
		}


		// EVENT TITLE
		$this->data->title 				= JRequest::getVar('title', '', 'post');

		if ( ! $this->data->title)
		{
			$error_messages[] = JText::sprintf('COM_ICAGENDA_FORM_VALIDATE_FIELD_REQUIRED_NAME', JText::_('COM_ICAGENDA_FORM_LBL_EVENT_TITLE'));
		}


		// EVENT CATEGORY
		$this->data->catid 				= JRequest::getVar('catid', '', 'post');

		if ( ! $this->data->catid)
		{
			$error_messages[] = JText::sprintf('COM_ICAGENDA_FORM_VALIDATE_FIELD_REQUIRED_NAME', JText::_('COM_ICAGENDA_FORM_LBL_EVENT_CATID'));
		}


		// EVENT IMAGE - Get and Upload Image
		$image							= JRequest::getVar('image', null, 'files', 'array');
		$image_session					= JRequest::getVar('image_session', '', 'post');

		if ($image_session && empty($image))
		{
			$this->data->image = $image_session;
		}
		else
		{
			$this->data->image = $image;

			// Process upload of files
			$this->data->image = $this->frontendImageUpload($this->data->image);
		}

		$noDateTime			= '0000-00-00 00:00:00';
		$noDateTimeShort	= '0000-00-00 00:00';


		// Get Single Dates
		$single_dates 					= JRequest::getVar('dates', '', 'post');

//		$dates = iCString::isSerialized($single_dates) ? unserialize($single_dates) : $this->getDates($single_dates);
        if (iCString::isSerialized($single_dates))
		{
			$dates = unserialize($single_dates);
		}
		else
		{
			$dates = $this->getDates($single_dates);

			if ($lang->getTag() == 'fa-IR'
				&& $dates != array('0000-00-00 00:00')
				&& $dates != array('')
				)
			{
				$dates_to_sql = array();

				foreach ($dates AS $date)
				{
					if (iCDate::isDate($date))
					{
						$year		= date('Y', strtotime($date));
						$month		= date('m', strtotime($date));
						$day		= date('d', strtotime($date));
						$time		= date('H:i', strtotime($date));

						$converted_date = iCGlobalizeConvert::jalaliToGregorian($year, $month, $day, true) . ' ' . $time;
						$dates_to_sql[] = date('Y-m-d H:i', strtotime($converted_date));
					}
				}

				$dates = $dates_to_sql;
			}
		}

//		$dates = !empty($dates[0]) ? $dates : array($noDateTime);
		rsort($dates);

		$datesall = iCDate::isDate($dates[0]) ? $dates[0] : $noDateTimeShort;

		if ($datesall != $noDateTimeShort)
		{
			$this->data->dates 			= serialize($dates);
		}
		else
		{
			$no_date_array				= array($noDateTimeShort);
			$this->data->dates 			= serialize($no_date_array);
		}


		// Set Next Date from Single Dates
		$dates_array = unserialize($this->data->dates);

		$today	= JHtml::date('now', 'Y-m-d H:i:s', $eventTimeZone);
		$next	= JHtml::date($this->data->dates[0], 'Y-m-d H:i:s', $eventTimeZone);

		rsort($dates_array);

		$nextDate = $next;

		if ($next <= $today)
		{
			foreach ($dates_array as $date)
			{
				$single_date = JHtml::date($date, 'Y-m-d H:i:s', $eventTimeZone);

				if ($single_date >= $today)
				{
					$nextDate = $single_date;
				}
			}
		}

		$single_dates_next = $nextDate;


		// PERIOD DATES
		$this->data->startdate			= JRequest::getVar('startdate', '', 'post');
		$this->data->enddate			= JRequest::getVar('enddate', '', 'post');

		$isDate_startdate	= iCDate::isDate($this->data->startdate);
		$isDate_enddate		= iCDate::isDate($this->data->enddate);

		$this->data->startdate	= $isDate_startdate ? $this->data->startdate : $noDateTime;
		$this->data->enddate	= $isDate_enddate ? $this->data->enddate : $noDateTime;

		// Dates from the period
		if ($isDate_startdate && $isDate_enddate)
		{
			$startdate	= $this->data->startdate;
			$enddate	= $this->data->enddate;

			if ($startdate == $noDateTime
				&& $enddate != $noDateTime)
			{
				$enddate = $noDateTime;
			}

			$startcontrol	= JHtml::date($startdate, 'Y-m-d H:i', $eventTimeZone);
			$endcontrol		= JHtml::date($enddate, 'Y-m-d H:i', $eventTimeZone);

			$errorperiod = '';

			if ($startcontrol > $endcontrol)
			{
				$errorperiod = '1';
			}
			else
			{
				$period_all_dates_array	= iCDatePeriod::listDates($startdate, $enddate);
			}

			// Serialize Dates of the Period
			if ($isDate_startdate && $isDate_enddate)
			{
				if ($errorperiod != '1')
				{
					$this->data->period = serialize($period_all_dates_array);
					$ctrl = unserialize($this->data->period);

					if (is_array($ctrl))
					{
						$period = unserialize($this->data->period);
					}
					else
					{
						$period = $this->getPeriod($this->data->period);
					}

					if ($lang->getTag() == 'fa-IR')
					{
						$period_to_sql = array();

						foreach ($period AS $date)
						{
							if (iCDate::isDate($date))
							{
								$year		= date('Y', strtotime($date));
								$month		= date('m', strtotime($date));
								$day		= date('d', strtotime($date));
								$time		= date('H:i', strtotime($date));

								$converted_date = iCGlobalizeConvert::jalaliToGregorian($year, $month, $day, true) . ' ' . $time;
								$period_to_sql[] = date('Y-m-d H:i', strtotime($converted_date));
							}
						}

						$period = $period_to_sql;
					}

					rsort($period);

					$this->data->period = serialize($period);
				}
				else
				{
					$this->data->period = '';
				}
			}

			$period_dates_next = $this->data->startdate;

			$dates_next		= JHtml::date($single_dates_next, 'Y-m-d H:i:s', $eventTimeZone);
			$period_next	= JHtml::date($period_dates_next, 'Y-m-d H:i:s', $eventTimeZone);

			if ($dates_next < $period_next)
			{
				$this->data->next = $period_next;
			}
			else
			{
				$this->data->next = $dates_next;
			}
		}
		else
		{
			$this->data->period	= '';
			$this->data->next	= $single_dates_next;
		}

		// Period and Single Dates not displayed
		if ( (in_array($noDateTime, $dates_array) || in_array($noDateTimeShort, $dates_array))
			&& ( ! $isDate_startdate || ! $isDate_enddate) )
		{
			$this->data->state	= '0';
			$this->data->next	= $today;

			// Error message if no valid dates
			$error_messages[] = JText::sprintf('COM_ICAGENDA_FORM_WARNING', JText::_('COM_ICAGENDA_FORM_ERROR_NO_DATES'));
		}


		// WEEK DAYS
		$this->data->weekdays 			= JRequest::getVar('weekdays', '', 'post');

		if (!isset($this->data->weekdays)
			&& !is_array($this->data->weekdays))
		{
			$this->data->weekdays = '';
		}

		if (isset($this->data->weekdays)
			&& is_array($this->data->weekdays))
		{
			$this->data->weekdays = implode(",", $this->data->weekdays);
		}

		// Joomla 3.x/2.5 SWITCH
		if (version_compare(JVERSION, '3.0', 'ge'))
		{
			$this->data->desc 			= JFactory::getApplication()->input->get('desc', '', 'RAW');
		}
		else
		{
			$this->data->desc 			= JRequest::getVar('desc', '', 'post', 'string', JREQUEST_ALLOWHTML);
		}

		$this->data->shortdesc 			= JRequest::getVar('shortdesc', '', 'post');
		$this->data->metadesc 			= JRequest::getVar('metadesc', '', 'post');
		$this->data->place 				= JRequest::getVar('place', '', 'post');
		$this->data->email 				= JRequest::getVar('email', '', 'post');
		$this->data->phone 				= JRequest::getVar('phone', '', 'post');
		$this->data->website 			= JRequest::getVar('website', '', 'post');

		// ATTACHMENT FILE
		$file							= JRequest::getVar('file', null, 'files', 'array');
		$file_session					= JRequest::getVar('file_session', '', 'post');

		if ($file_session && empty($file))
		{
			$this->data->file = $file_session;
		}
		else
		{
			$this->data->file = $file;

			// Process upload of files
			$this->data->file = $this->frontendFileUpload($this->data->file);
		}



		$this->data->address 			= JRequest::getVar('address', '', 'post');
		$this->data->city 				= JRequest::getVar('city', '', 'post');
		$this->data->country 			= JRequest::getVar('country', '', 'post');
		$this->data->lat 				= JRequest::getVar('lat', '', 'post');
		$this->data->lng 				= JRequest::getVar('lng', '', 'post');

		$this->data->created_by			= $user_id;
		$this->data->created_by_alias	= JRequest::getVar('created_by_alias', '', 'post');
		$this->data->created			= JHtml::Date( 'now', 'Y-m-d H:i:s' );
		$this->data->checked_out		= JRequest::getVar('checked_out', '', 'post');
		$this->data->checked_out_time 	= JRequest::getVar('checked_out_time', '', 'post');

		$this->data->params				= JRequest::getVar('params', '', 'post');
		$this->data->site_itemid		= JRequest::getVar('site_itemid', '0', 'post');
		$site_menu_title				= JRequest::getVar('site_menu_title', '', 'post');


		// Generate Alias
		$this->data->alias				= JFilterOutput::stringURLSafe($this->data->title);

		// Alias is not generated if non-latin characters, so we fix it by using created date, or title if unicode is activated, as alias
		if ($this->data->alias == null)
		{
			if (JFactory::getConfig()->get('unicodeslugs') == 1)
			{
				$this->data->alias = JFilterOutput::stringURLUnicodeSlug($this->data->title);
			}
			else
			{
				$this->data->alias = JFilterOutput::stringURLSafe($this->data->created);
			}
		}

		// Convert the params field to a string.
		if ( isset($this->data->params)
			&& is_array($this->data->params) )
		{
			$parameter = new JRegistry;
			$parameter->loadArray($this->data->params);
			$this->data->params = (string)$parameter;
		}

		$this->data->asset_id = null;

		$custom_fields		= JRequest::getVar('custom_fields', '', 'post');

		// Check if Custom Fields required not empty
		$customfields_list = icagendaCustomfields::getListCustomFields(2, 1);

		if ($customfields_list)
		{
			foreach ($customfields_list AS $cf)
			{
				if (isset($custom_fields[$cf->cf_slug])
					&& $cf->cf_required == 1
					&& $custom_fields[$cf->cf_slug] == '')
				{

					$options_required = array('list', 'radio');

					// If type is list or radio, should have options
					if ((in_array($cf->cf_type, $options_required) && $cf->cf_options)
						|| ! in_array($cf->cf_type, $options_required))
					{
						$error_messages[] = JText::_( 'COM_ICAGENDA_FORM_VALIDATE_FIELD_REQUIRED' ) . ' ' . $cf->cf_title;
					}
				}
			}
		}

		$address_session	= JRequest::getVar('address_session', '', 'post');
		$submit_tos			= JRequest::getVar('submit_tos', '', 'post');

		// Set Form Data to Session
		$session->set('ic_submit', $this->data);
		$session->set('custom_fields', $custom_fields);

		$session->set('ic_submit_dates', $this->data->dates);
		$session->set('ic_submit_catid', $this->data->catid);
		$session->set('ic_submit_shortdesc', $this->data->shortdesc);
		$session->set('ic_submit_metadesc', $this->data->metadesc);
		$session->set('ic_submit_city', $this->data->city);
		$session->set('ic_submit_country', $this->data->country);
		$session->set('ic_submit_lat', $this->data->lat);
		$session->set('ic_submit_lng', $this->data->lng);
		$session->set('ic_submit_address', $this->data->address);
		$session->set('ic_submit_tos', $submit_tos);

		// Captcha Control
		$captcha			= JRequest::getVar('recaptcha_response_field', '', 'post');
		$captcha_plugin		= $params->get('captcha') ? $params->get('captcha') : $app->getCfg('captcha');
		$submit_captcha		= $params->get('submit_captcha', 1);

		if ($captcha_plugin && $submit_captcha != '0')
		{
			JPluginHelper::importPlugin('captcha');

			// JOOMLA 3.x/2.5 SWITCH
			if (version_compare(JVERSION, '3.0', 'ge'))
			{
				$dispatcher = JEventDispatcher::getInstance();
			}
			else
			{
				$dispatcher = JDispatcher::getInstance();
			}

			$res = $dispatcher->trigger('onCheckAnswer', $captcha);

			if (!$res[0])
			{
				// message if captcha is invalid
				$error_messages[] = JText::sprintf('COM_ICAGENDA_FORM_ERROR', JText::_('COM_ICAGENDA_FORM_ERROR_INCORRECT_CAPTCHA_SOL'));
			}
		}

		// Get the message queue
		if (count($error_messages))
		{
			$app->enqueueMessage('<strong>' . JText::_( 'COM_ICAGENDA_FORM_NC' ) . '</strong>', 'error');

			foreach ($error_messages AS $msg)
			{
				$app->enqueueMessage($msg, 'error');
			}

			return false;
		}

		// clear the data so we don't process it again
		$session->clear('ic_submit');
		$session->clear('custom_fields');
		$session->clear('ic_submit_dates');
		$session->clear('ic_submit_catid');
		$session->clear('ic_submit_shortdesc');
		$session->clear('ic_submit_metadesc');
		$session->clear('ic_submit_city');
		$session->clear('ic_submit_country');
		$session->clear('ic_submit_lat');
		$session->clear('ic_submit_lat');
		$session->clear('ic_submit_address');
		$session->clear('ic_submit_tos');

		// insert Event in Database
		$db = JFactory::getDbo();

		if (($this->data->username != NULL)
			&& ($this->data->title != NULL)
			&& ($this->data->created_by_email != NULL))
		{
			$db->insertObject('#__icagenda_events', $this->data, id);
		}
		else
		{
			JError::raiseError(500, implode('<br />', $errors));

			return false;
		}

		// Save Custom Fields to database
		if (isset($custom_fields) && is_array($custom_fields))
		{
			icagendaCustomfields::saveToData($custom_fields, $this->data->id, 2);
		}


		if ((isset($this->data->id)) AND ($this->data->id != '0') AND ($this->data->username != NULL) AND ($this->data->title != NULL))
		{
			self::notificationManagerEmail($this->data, $site_menu_title, $user_id);

			if ( !in_array($user_id, $adminUsersArray ))
			{
				self::notificationUserEmail($this->data, $urlsend);
			}
		}
		else
		{
			JError::raiseError(500, implode('<br />', $errors));

			return false;
		}

		// Redirect after successful submission
		if ($submit_return != 2)
		{
			$app->enqueueMessage($alert_body_redirect, $alert_title_redirect);
			$app->redirect(htmlspecialchars_decode($url_return));
		}
		else
		{
			$url_return = iCUrl::urlParsed($url_return, 'scheme');
			$app->redirect($url_return);
		}
	}


	protected function notificationManagerEmail($data, $site_menu_title, $user_id)
	{
		$event_id			= $data->id;
		$event_title		= $data->title;
		$event_site_itemid	= $data->site_itemid;
		$event_username		= $data->username;
		$event_user_email	= $data->created_by_email;
		$event_ref			= JHtml::date('now', 'Ymd') . $data->id;

		// Load iCagenda Global Options
		$iCparams = JComponentHelper::getParams('com_icagenda');

		// Load Joomla Application
		$app	= JFactory::getApplication();

		// Load Joomla Config Mail Options
		$sitename	= $app->getCfg('sitename');
		$mailfrom	= $app->getCfg('mailfrom');
		$fromname	= $app->getCfg('fromname');

		$siteURL = JURI::base();
		$siteURL = rtrim($siteURL,'/');

		// Itemid Request (automatic detection of the first iCagenda menu-link, by menuID, and depending of current language)
		$menu_items		= icagendaMenus::iClistMenuItems();
		$itemid_array	= array();

		foreach ($menu_items as $l)
		{
			array_push($itemid_array, $l->id);
		}

		sort($itemid_array);

		$itemID = $itemid_array[0];

		// Set Notification Email to each User groups allowed to approve event submitted
		$groupid = $iCparams->get('approvalGroups', array("8"));

		// Load Global Option for Autologin
		$autologin = $iCparams->get('auto_login', 1);

		jimport( 'joomla.access.access' );
		$adminUsersArray = array();

		foreach ($groupid AS $gp)
		{
			$adminUsers			= JAccess::getUsersByGroup($gp, False);
			$adminUsersArray	= array_merge($adminUsersArray, $adminUsers);
		}

        $db = JFactory::getDbo();
		$query = $db->getQuery(true);

		if ($user_id == NULL)
		{
			$user_id = 0;
		}

		if (!in_array($user_id, $adminUsersArray))
		{
			$matches = implode(',', $adminUsersArray);
			$query->select('ui.username AS username, ui.email AS email, ui.password AS passw, ui.block AS block, ui.activation AS activation')->from('#__users AS ui')->where( "ui.id IN ($matches) ");
		}
		else
		{
			$matches = $user_id;
			$query->select('ui.username AS username, ui.email AS email, ui.password AS passw, ui.block AS block, ui.activation AS activation')->from('#__users AS ui')->where( "ui.id = $matches ");
		}

		$db->setQuery($query);
        $managers = $db->loadObjectList();

        foreach ($managers AS $manager)
        {
			// Mail Replacements
			$replacements = array(
				"\\n"				=> "\n",
				'[SITENAME]'		=> $sitename,
				'[USERNAME]'		=> $event_username,
				'[EMAIL]'			=> $event_user_email,
				'[EVENT_TITLE]'		=> $event_title,
				'[EVENT_REF]'		=> $event_ref,
				'&nbsp;'			=> ' ',
			);

			if (!in_array($user_id, $adminUsersArray))
			{
				$type = 'approval';
			}
			else
			{
				$type = 'confirmation';
			}

			// Create Admin Mailer
			$adminmailer = JFactory::getMailer();

			// Set Sender of Notification Email
			$adminmailer->setSender(array( $mailfrom, $fromname ));

        	$username	= $manager->username;
        	$passw		= $manager->passw;
        	$email		= $manager->email;

			// Set Recipient of Notification Email
			$adminrecipient = $email;
			$adminmailer->addRecipient($adminrecipient);

			// Set Subject of Admin Notification Email
			if ( ! in_array($user_id, $adminUsersArray))
			{
				$adminsubject = JText::sprintf('COM_ICAGENDA_SUBMISSION_ADMIN_EMAIL_SUBJECT', $event_username, $sitename);
			}
			else
			{
				$adminsubject = JText::sprintf('COM_ICAGENDA_LEGEND_NEW_EVENT').': '.$event_title;
			}

			// Set Url to preview and checking of event submitted
			$baseURL = JURI::base();
			$subpathURL = JURI::base(true);

			$baseURL = str_replace('/administrator', '', $baseURL);
			$subpathURL = str_replace('/administrator', '', $subpathURL);

			if ($autologin == 1)
			{
				$urlpreview = str_replace('&amp;', '&', JRoute::_('index.php?option=com_icagenda&view=list&layout=event&id='.(int)$event_id.'&Itemid='.(int)$itemID.'&icu='.$username.'&icp='.$passw));
//				$urlcheck = str_replace('&amp;', '&', JRoute::_('administrator/index.php?option=com_icagenda&view=events&Itemid='.(int)$itemID).'&icu='.$username.'&icp='.$passw.'&filter_search='.$event_id);
			}
			else
			{
				$urlpreview = str_replace('&amp;', '&', JRoute::_('index.php?option=com_icagenda&view=list&layout=event&id='.(int)$event_id.'&Itemid='.(int)$itemID));
//				$urlcheck = str_replace('&amp;', '&', JRoute::_('administrator/index.php?option=com_icagenda&view=events&Itemid='.(int)$itemID).'&filter_search='.$event_id);
			}

//			$urlpreview = str_replace('&amp;', '&', $siteURL.'/index.php?option=com_icagenda&view=list&layout=event&id='.(int)$event_id.'&Itemid='.(int)$itemID.'&icu='.$username.'&icp='.$passw);
			$urlpreviewshort = str_replace('&amp;', '&', JRoute::_('index.php?option=com_icagenda&view=list&layout=event&id='.(int)$event_id.'&Itemid='.(int)$itemID));

//			$urlcheckshort = str_replace('&amp;', '&', $siteURL . '/administrator/index.php?option=com_icagenda&view=events');

			// Sub Path filtering
			$subpathURL = ltrim($subpathURL, '/');

			// URL Event Preview filtering
			$urlpreview			= ltrim($urlpreview, '/');
			$urlpreviewshort	= ltrim($urlpreviewshort, '/');

			if (substr($urlpreview, 0, strlen($subpathURL)+1) == "$subpathURL/")
			{
				$urlpreview = substr($urlpreview, strlen($subpathURL)+1);
			}

			if (substr($urlpreviewshort, 0, strlen($subpathURL)+1) == "$subpathURL/")
			{
				$urlpreviewshort = substr($urlpreviewshort, strlen($subpathURL)+1);
			}

			$urlpreview			= rtrim($baseURL, '/') . '/' . ltrim($urlpreview, '/');
			$urlpreviewshort	= rtrim($baseURL, '/') . '/' . ltrim($urlpreviewshort, '/');

			// URL Event Check filtering
//			$urlcheck = ltrim($urlcheck, '/');

//			if (substr($urlcheck, 0, strlen($subpathURL)+1) == "$subpathURL/")
//			{
//				$urlcheck = substr($urlcheck, strlen($subpathURL)+1);
//			}

//			$urlcheck = rtrim($baseURL, '/') . '/' . ltrim($urlcheck, '/');

			// Set Body of User Notification Email
			$adminbodycontent = JText::sprintf( 'COM_ICAGENDA_SUBMISSION_ADMIN_EMAIL_HELLO', $username) . ',<br /><br />';

			if ($type == 'approval')
			{
				$adminbodycontent.= JText::_( 'COM_ICAGENDA_SUBMISSION_ADMIN_EMAIL_NEW_EVENT' ).'<br /><br />';
				$adminbodycontent.= JText::sprintf( 'COM_ICAGENDA_SUBMISSION_ADMIN_EMAIL_APPROVE_INFO', $sitename).'<br /><br />';
				$adminbodycontent.= JText::_( 'COM_ICAGENDA_SUBMISSION_ADMIN_EMAIL_APPROVE_LINK' ).': <a href="'.$urlpreview.'">'.$urlpreviewshort.'</a><br /><br />';
			}

			if ($type == 'confirmation')
			{
				$adminbodycontent.= JText::_( 'COM_ICAGENDA_SUBMISSION_ADMIN_EMAIL_APPROVED_REVIEW' ).'<br /><br />';
				$adminbodycontent.= '<a href="' . $urlpreview . '">' . $urlpreviewshort . '</a><br /><br />';
			}

			$user_email_mailto = '<a href="mailto:' . $event_user_email . '">' . $event_user_email . '</a>';

			$adminbodycontent.= JText::sprintf( 'COM_ICAGENDA_SUBMISSION_ADMIN_EMAIL_SITE_MENUID', $event_site_itemid, $site_menu_title).'<br />';
			$adminbodycontent.= JText::sprintf( 'COM_ICAGENDA_SUBMISSION_ADMIN_EMAIL_USER_INFO', $event_username, $user_email_mailto).'<br /><br />';

			if ($autologin == 1)
			{
				$adminbodycontent.= '<hr><small>'.JText::sprintf( 'COM_ICAGENDA_SUBMISSION_ADMIN_EMAIL_FOOTER', $sitename).'<small>';
			}
			else
			{
				$adminbodycontent.= '<hr><small>'.JText::sprintf( 'COM_ICAGENDA_SUBMISSION_ADMIN_EMAIL_FOOTER_NO_AUTOLOGIN', $sitename).'<small>';
			}

			$adminbody = rtrim($adminbodycontent);

			// Apply Replacements
			foreach ($replacements as $key => $value)
			{
				$adminsubject	= str_replace($key, $value, $adminsubject);
				$adminbody		= str_replace($key, $value, $adminbody);
			}

			$adminmailer->isHTML(true);
			$adminmailer->Encoding = 'base64';

			// Set Subject
			$adminmailer->setSubject($adminsubject);

			// Set Body
			$adminmailer->setBody($adminbody);

			// Send User Notification Email
			if (isset($email))
			{
				if ($manager->block == '0' && empty($manager->activation))
				{
					$send = $adminmailer->Send();
				}
			}
		}
	}

	protected function notificationUserEmail ($data, $url)
	{
		$email			= $data->created_by_email;
		$username		= $data->username;
		$event_title	= $data->title;
		$event_ref		= JHtml::date( 'now', 'Ymd' ) . $data->id;

		// Load Joomla Application
		$app	= JFactory::getApplication();

		// Create User Mailer
		$mailer = JFactory::getMailer();

		// Load Joomla Config Mail Options
		$sitename	= $app->getCfg('sitename');
		$mailfrom	= $app->getCfg('mailfrom');
		$fromname	= $app->getCfg('fromname');

		// Set Sender of Notification Email
		$mailer->setSender(array( $mailfrom, $fromname ));

		// Set Recipient of User Notification Email
		$userrecipient = $data->created_by_email;
		$mailer->addRecipient($userrecipient);

		// MAIL
		$replacements = array(
			"\\n"				=> "\n",
			'[SITENAME]'		=> $sitename,
			'[EMAIL]'			=> $email,
			'[EVENT_TITLE]'		=> $event_title,
			'[EVENT_REF]'		=> $event_ref,
			'&nbsp;'			=> ' ',
		);

		// Set Body of Notification Email
		$user_submit_body = JText::sprintf( 'COM_ICAGENDA_USER_EMAIL_HELLO', $username ) . ',<br /><br />';
		$user_submit_body.= JText::sprintf( 'COM_ICAGENDA_EVENT_SUBMISSION_THANK_YOU', $sitename ) . '<br />';
		$user_submit_body.= JText::_( 'COM_ICAGENDA_EVENT_SUBMISSION_EDITOR_REVIEW' ) . '<br />';
		$user_submit_body.= JText::_( 'COM_ICAGENDA_EVENT_SUBMISSION_CONFIRMATION_EMAIL' ) . '<br /><br />';
		$user_submit_body.= JText::sprintf( 'COM_ICAGENDA_USER_EMAIL_EVENT_TITLE_AND_REF_NO', $event_title, $event_ref ) . '<br /><br />';
		$user_submit_body.= JText::_( 'COM_ICAGENDA_USER_EMAIL_BEST_REGARDS' ) . '<br />';

		$user_submit_body = rtrim($user_submit_body);

		foreach ($replacements as $key => $value)
		{
			$subject = str_replace($key, $value, $subject);
			$user_submit_body = str_replace($key, $value, $user_submit_body);
		}

		$mailer->isHTML(true);
		$mailer->Encoding = 'base64';

		// Set Subject of User Notification Email
		$subject = JText::sprintf( 'COM_ICAGENDA_EVENT_SUBMISSION_THANK_YOU', $sitename );
		$mailer->setSubject($subject);

		// Set Body of User Notification Email
		$mailer->setBody($user_submit_body);

		// Send User Notification Email
		if (isset($email))
		{
			$send = $mailer->Send();
		}
	}


	protected function getDates($dates)
	{
		$dates		= str_replace('d=', '', $dates);
		$dates		= str_replace('+', ' ', $dates);
		$dates		= str_replace('%3A', ':', $dates);
		$ex_dates	= explode('&', $dates);

		return $ex_dates;
	}

	protected function getPeriod($period)
	{
		$period		= str_replace('d=', '', $period);
		$period		= str_replace('+', ' ', $period);
		$period		= str_replace('%3A', ':', $period);
		$ex_period	= explode('&', $period);

		return $ex_period;
	}


	protected function frontendImageUpload ($image)
	{
		// Get Joomla Images PATH set
		$params		= JComponentHelper::getParams('com_media');
		$image_path	= $params->get('image_path');

		// Clean up filename
		$imagename	= JFile::makeSafe($image['name']);

		// Process filename
		while (JFile::exists(JPATH_ROOT . '/' . $image_path . '/icagenda/frontend/images/' . $imagename))
		{
			$src	= $image['tmp_name'];

			// Get Image title and extension type
			$decomposition = explode( '/' , $imagename );

			// in each parent
			$i = 0;
			while ( isset($decomposition[$i]) )
				$i++;
			$i--;
			$imgname		= $decomposition[$i];
			$fichier		= explode('.', $decomposition[$i]);
			$imgtitle		= $fichier[0];
			$imgextension	= isset($fichier[1]) ? $fichier[1] : '';

			// Increment filename if already exists
			$imagename		= iCString::increment($imgtitle, 'dash') . '.' . $imgextension;

			// Controls image mimetype, and fixes file extension if missing in filename
			$allowed_mimetypes	= array('jpg', 'jpeg', 'png', 'gif');

			if ( ! in_array($imgextension, $allowed_mimetypes))
			{
				$fileinfos		= getimagesize($src);
				$mimeType		= $fileinfos['mime'];
				$ex_mimeType	= explode('/', $mimeType);
				$file_extension	= $ex_mimeType[1];

				$imagename		= $imagename . '.' . $file_extension;
			}
		}

		if ($imagename != '')
		{
			//Set up the source and destination of the file
			$src	= $image['tmp_name'];
			$dest	=  JPATH_SITE . '/images/icagenda/frontend/images/' . $imagename;

			// Create Folder iCagenda in ROOT/IMAGES_PATH/icagenda and sub-folders if do not exist
			$folder[0][0]	=	'icagenda/frontend/' ;
			$folder[0][1]	= 	JPATH_ROOT . '/' . $image_path . '/' . $folder[0][0];
			$folder[1][0]	=	'icagenda/frontend/images/';
			$folder[1][1]	= 	JPATH_ROOT . '/' . $image_path . '/' . $folder[1][0];
			$error	 = array();

			foreach ($folder as $key => $value)
			{
				if (!JFolder::exists( $value[1]))
				{
					if (JFolder::create( $value[1], 0755 ))
					{
						$this->data = "<html>\n<body bgcolor=\"#FFFFFF\">\n</body>\n</html>";
						JFile::write($value[1]."/index.html", $this->data);
						$error[] = 0;
					}
					else
					{
						$error[] = 1;
					}
				}
				else //Folder exist
				{
					$error[] = 0;
				}
			}

			if ( JFile::upload($src, $dest, false) )
			{
				return 'images/icagenda/frontend/images/' . $imagename;
			}
		}
	}

	protected function frontendFileUpload ($file)
	{
		//Clean up filename to get rid of strange characters like spaces etc
		$filename = JFile::makeSafe($file['name']);

		if ($filename != '')
		{
			//Set up the source and destination of the file
			$src = $file['tmp_name'];
			$dest =  JPATH_SITE.'/images/icagenda/frontend/attachments/'.$filename;

			// Get Joomla Images PATH setting
			$params = JComponentHelper::getParams('com_media');
			$image_path = $params->get('image_path');

			// Create Folder iCagenda in ROOT/IMAGES_PATH/icagenda and sub-folders if do not exist
			$folder[0][0]	=	'icagenda/frontend/' ;
			$folder[0][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folder[0][0];
			$folder[1][0]	=	'icagenda/frontend/attachments/';
			$folder[1][1]	= 	JPATH_ROOT.'/'.$image_path.'/'.$folder[1][0];
			$error	 = array();

			foreach ($folder as $key => $value)
			{
				if (!JFolder::exists( $value[1]))
				{
					if (JFolder::create( $value[1], 0755 ))
					{
						$this->data = "<html>\n<body bgcolor=\"#FFFFFF\">\n</body>\n</html>";
						JFile::write($value[1]."/index.html", $this->data);
						$error[] = 0;
					}
					else
					{
						$error[] = 1;
					}
				}
				else //Folder exist
				{
					$error[] = 0;
				}
			}

			if ( JFile::upload($src, $dest, false) )
			{
				return 'images/icagenda/frontend/attachments/' . $filename;
			}

		}
	}


	/**
	 * Method to auto-populate the model state.
	 *
	 * Note. Calling getState in this method will result in recursion.
	 *
	 * @since   1.6
	 *
	 * @return void
	 */
	protected function populateState()
	{
		$app = JFactory::getApplication('site');

		// Load the parameters.
		$params = $app->getParams();
		$this->setState('params', $params);
	}
}
models/forms/submit.xml000060400000025210152455753310011210 0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset addfieldpath="/administrator/components/com_icagenda/models/fields" >
		<field
			name="id"
			type="text"
			label="JGLOBAL_FIELD_ID_LABEL"
			description="JGLOBAL_FIELD_ID_DESC"
			class="readonly"
			size="10"
			default="0"
			readonly="true"
			labelclass="control-label"
			/>
		<field
			name="asset_id"
			type="hidden"
			filter="unset"
			/>
		<field
			name="title"
			type="text"
			label="COM_ICAGENDA_FORM_LBL_EVENT_TITLE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_TITLE"
			class="input-xxlarge"
			size="30"
			required="true"
			labelclass="control-label"
			/>
		<field
			name="alias"
			type="text"
			label="JFIELD_ALIAS_LABEL"
			description="JFIELD_ALIAS_DESC"
			labelclass="control-label"
			/>
		<field
			name="state"
			type="list"
			label="JSTATUS"
			description="JFIELD_PUBLISHED_DESC"
			class="span12 small"
			filter="intval"
			size="1"
			default="1"
			>
			<option value="1">JPUBLISHED</option>
			<option value="0">JUNPUBLISHED</option>
			<option value="2">JARCHIVED</option>
			<option value="-2">JTRASHED</option>
		</field>
		<field
			name="access"
			type="accesslevel"
			label="JFIELD_ACCESS_LABEL"
			description="COM_ICAGENDA_ACCESS_DESC"
			class="span12 small"
			size="1"
			/>
		<field
			name="language"
			type="contentlanguage"
			label="JFIELD_LANGUAGE_LABEL"
			description="COM_ICAGENDA_FORM_DESC_LANGUAGE"
			class="span12 small"
			>
			<option value="*">JALL</option>
		</field>
		<field
			name="created"
			type="calendar"
			label="JGLOBAL_FIELD_CREATED_LABEL"
			description="JGLOBAL_FIELD_CREATED_DESC"
			format="%Y-%m-%d %H:%M:%S"
			filter="user_utc"
			labelclass="control-label"
			/>
		<field
			name="created_by"
			type="user"
			label="JGLOBAL_FIELD_CREATED_BY_LABEL"
			description="JGLOBAL_FIELD_CREATED_BY_DESC"
			labelclass="control-label"
			/>
		<field
			name="created_by_alias"
			type="text"
			label="JGLOBAL_FIELD_CREATED_BY_ALIAS_LABEL"
			description="JGLOBAL_FIELD_CREATED_BY_ALIAS_DESC"
			labelclass="control-label"
			/>
		<field
			name="username"
			type="text"
			label="COM_ICAGENDA_FORM_LBL_EVENT_USERNAME"
			description="COM_ICAGENDA_FORM_DESC_EVENT_USERNAME"
			size="40"
			required="true"
			class="inputbox"
			filter="safehtml"
			labelclass="control-label"
			/>
		<field
			name="modified"
			type="calendar"
			label="JGLOBAL_FIELD_MODIFIED_LABEL"
			description="COM_CONTENT_FIELD_MODIFIED_DESC"
			class="readonly"
			size="22"
			readonly="true"
			format="%Y-%m-%d %H:%M:%S"
			filter="user_utc"
			labelclass="control-label"
			/>
		<field
			name="modified_by"
			type="user"
			label="JGLOBAL_FIELD_MODIFIED_BY_LABEL"
			class="readonly"
			readonly="true"
			filter="unset"
			labelclass="control-label"
			/>
		<field name="checked_out" type="hidden" filter="unset" />
		<field name="checked_out_time" type="hidden" filter="unset" />
		<field
			name="catid"
			type="modal_cat"
			label="COM_ICAGENDA_FORM_LBL_EVENT_CATID"
			description="COM_ICAGENDA_FORM_DESC_EVENT_CATID"
			class="inputbox"
			required="true"
			labelclass="control-label"
			/>
		<field
			name="image"
			type="file"
			label="COM_ICAGENDA_FORM_LBL_EVENT_IMAGE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_IMAGE"
			accept="image/*"
			filter="safehtml"
			labelclass="control-label"
			/>
		<field
			name="file"
			type="file"
			label="COM_ICAGENDA_FORM_LBL_EVENT_FILE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_FILE"
			class="inputbox"
			id="upload_file"
			labelclass="control-label"
			/>
		<field
			name="displaytime"
			type="radio"
			label="COM_ICAGENDA_DISPLAY_TIME_LABEL"
			description="COM_ICAGENDA_DISPLAY_TIME_DESC"
			class="btn-group"
			default="1"
			labelclass="control-label"
			>
			<option value="0" class="ic-btn">JHIDE</option>
			<option value="1" class="ic-btn">JSHOW</option>
		</field>
		<field
			name="dates"
			type="modal_date"
			label="COM_ICAGENDA_FORM_LBL_EVENT_DATES"
			description="COM_ICAGENDA_FORM_DESC_EVENT_DATES"
			class="inputbox"
			default="0000-00-00 00:00:00"
			/>
		<field
			name="time"
			type="modal_time"
			label="COM_ICAGENDA_FORM_LBL_EVENT_TIME"
			description="COM_ICAGENDA_FORM_DESC_EVENT_TIME"
			size="40"
			class="inputbox"
			filter="safehtml"
			labelclass="control-label"
			/>
		<field
			name="startdate"
			type="modal_startdate"
			label="COM_ICAGENDA_FORM_LBL_EVENTPERIOD_START"
			description="COM_ICAGENDA_FORM_DESC_EVENTPERIOD_START"
			class="inputbox"
			default="0000-00-00 00:00:00"
			/>
		<field
			name="enddate"
			type="modal_enddate"
			label="COM_ICAGENDA_FORM_LBL_EVENTPERIOD_END"
			description="COM_ICAGENDA_FORM_DESC_EVENTPERIOD_END"
			class="inputbox"
			default="0000-00-00 00:00:00"
			/>
		<field
			name="weekdays"
			type="list"
			label="COM_ICAGENDA_FORM_LBL_WEEK_DAYS"
			description=""
			multiple="true"
			default=""
			labelclass="control-label"
			>
			<option value="0">SUNDAY</option>
			<option value="1">MONDAY</option>
			<option value="2">TUESDAY</option>
			<option value="3">WEDNESDAY</option>
			<option value="4">THURSDAY</option>
			<option value="5">FRIDAY</option>
			<option value="6">SATURDAY</option>
		</field>
		<field
			name="shortdesc"
			type="modal_ictextarea_counter"
			label="COM_ICAGENDA_SUBMIT_AN_EVENT_SHORT_DESCRIPTION_LBL"
			description="COM_ICAGENDA_SUBMIT_AN_EVENT_SHORT_DESCRIPTION_DESC"
			class="ic-submit-shortdesc"
			row="3"
			cols="80"
			/>
		<field
			name="desc"
			type="editor"
			label="COM_ICAGENDA_FORM_LBL_EVENT_DESC"
			description="COM_ICAGENDA_SUBMIT_AN_EVENT_DESCRIPTION_DESC"
			buttons="false"
			labelclass="control-label"
			filter="safehtml"
			/>
		<field
			name="metadesc"
			type="modal_ictextarea_counter"
			label="COM_ICAGENDA_FORM_EVENT_METADESC_LBL"
			description="COM_ICAGENDA_SUBMIT_AN_EVENT_METADESC_DESC"
			class="ic-submit-metadesc"
			row="3"
			cols="80"
			/>
		<field
			name="next"
			type="hidden"
			label="COM_ICAGENDA_FORM_LBL_EVENT_NEXT"
			description="COM_ICAGENDA_FORM_DESC_EVENT_NEXT"
			class="inputbox"
			default="0000-00-00 00:00:00"
			labelclass="control-label"
			/>
		<field
			name="email"
			type="email"
			label="COM_ICAGENDA_FORM_LBL_EVENT_EMAIL"
			description="COM_ICAGENDA_FORM_DESC_EVENT_EMAIL"
			size="40"
			class="input-xlarge"
			filter="safehtml"
			labelclass="control-label"
			/>
		<field
			name="phone"
			type="text"
			label="COM_ICAGENDA_FORM_LBL_EVENT_PHONE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_PHONE"
			size="30"
			class="input-large"
			filter="safehtml"
			labelclass="control-label"
			/>
		<field
			name="website"
			type="text"
			label="COM_ICAGENDA_FORM_LBL_EVENT_WEBSITE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_WEBSITE"
			size="30"
			class="input-large"
			filter="safehtml"
			labelclass="control-label"
			/>
		<field
			name="place"
			type="text"
			label="COM_ICAGENDA_FORM_LBL_EVENT_PLACE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_PLACE"
			size="30"
			class="input-large"
			id="place"
			filter="safehtml"
			labelclass="control-label"
			/>
		<field
			name="coordinate"
			type="modal_coordinate"
			label="COM_ICAGENDA_FORM_LBL_EVENT_MAP"
			description="COM_ICAGENDA_FORM_DESC_EVENT_MAP"
			class="inputbox"
			labelclass="control-label"
			/>
		<field
			name="address"
			type="text"
			label="COM_ICAGENDA_GOOGLE_MAPS_ADDRESS_LBL"
			description="COM_ICAGENDA_FORM_DESC_EVENT_LOCATION"
			class="input-xlarge"
			filter="safehtml"
			labelclass="control-label"
			/>
		<field
			name="city"
			type="icmap_city"
			label="COM_ICAGENDA_FORM_LBL_EVENT_CITY"
			description="COM_ICAGENDA_FORM_DESC_EVENT_CITY"
			class="input-large icmap-input"
			filter="safehtml"
			labelclass="control-label"
			/>
		<field
			name="country"
			type="icmap_country"
			label="COM_ICAGENDA_FORM_LBL_EVENT_COUNTRY"
			description="COM_ICAGENDA_FORM_DESC_EVENT_COUNTRY"
			class="input-large icmap-input"
			filter="safehtml"
			labelclass="control-label"
			/>
		<field
			name="lat"
			type="icmap_lat"
			label="LATITUDE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_MAP"
			class="input-large icmap-input"
			labelclass="control-label"
			/>
		<field
			name="lng"
			type="icmap_lng"
			label="LONGITUDE"
			description="COM_ICAGENDA_FORM_DESC_EVENT_MAP"
			class="input-large icmap-input"
			labelclass="control-label"
			/>
		<field
			name="custom_fields"
			type="hidden"
			class="input-large"
			default=""
			/>
		<field
			name="site_itemid"
			type="hidden"
			label="COM_ICAGENDA_FORM_FRONTEND_SUBMIT_ITEMID_LBL"
			description="COM_ICAGENDA_FORM_FRONTEND_SUBMIT_ITEMID_DESC"
			size="3"
			class="inputbox"
			default="0"
			/>
		<field
			name="captcha"
			type="captcha"
			label="COM_ICAGENDA_CAPTCHA_LABEL"
			description="COM_ICAGENDA_CAPTCHA_DESC"
			validate="captcha"
			namespace="submit"
		/>
	</fieldset>

	<fields name="params">
		<fieldset name="registrations" label="COM_ICAGENDA_REGISTRATION_OPTIONS"
			addfieldpath="/administrator/components/com_icagenda/assets/elements">
			<!--field
				name="statutReg"
				type="radio"
				label="COM_ICAGENDA_REGISTRATION_LABEL"
				description="COM_ICAGENDA_REGISTRATION_DESC"
				class="btn-group ic-btn-group"
				labelclass="control-label"
				default="0"
				>
				<option value="0" class="ic-btn">JOFF</option>
				<option value="1" class="ic-btn">JON</option>
			</field-->
			<field
				name="typeReg"
				type="list"
				label="COM_ICAGENDA_TYPE_REG_LABEL"
				description="COM_ICAGENDA_TYPE_REG_DESC"
				default="1"
				>
				<option value="1">COM_ICAGENDA_REG_BY_INDIVIDUAL_DATE</option>
				<option value="2">COM_ICAGENDA_REG_FOR_ALL_DATES</option>
			</field>
			<field
				name="accessReg"
				type="hidden"
				label="JFIELD_ACCESS_LABEL"
				description="JFIELD_ACCESS_DESC"
				size="1"
				class="inputbox"
				labelclass="control-label"
				default=""
				/>
			<!--field
				name="maxReg"
				type="text"
				label="COM_ICAGENDA_MAX_REGISTRATIONS_LABEL"
				description="COM_ICAGENDA_MAX_REGISTRATIONS_DESC"
				size="3"
				default=""
				labelclass="control-label"
				/-->
			<field
				name="maxRlistGlobal"
				class="btn-group"
				type="hidden"
				default=""
				label="COM_ICAGENDA_MAX_PER_REGISTRATION_LABEL"
				description="COM_ICAGENDA_MAX_PER_REGISTRATION_DESC"
				labelclass="control-label"
				>
				<option value="">JGLOBAL_USE_GLOBAL</option>
				<option value="2">COM_ICAGENDA_LBL_CUSTOM_VALUE</option>
			</field>
			<field
				name="maxRlist"
				type="hidden"
				label=" "
				description="COM_ICAGENDA_DESC_CUSTOM_VALUE"
				size="2"
				default=""
				labelclass="control-label"
				/>
		</fieldset>
		<!--fieldset name="captcha">
			<field
				name="captcha"
				type="captcha"
				label="COM_ICAGENDA_CAPTCHA_LABEL"
				description="COM_ICAGENDA_CAPTCHA_DESC"
				validate="captcha"
				namespace="submit"
			/>
		</fieldset-->
	</fields>
</form>
models/list.php000060400000037054152455753310007532 0ustar00<?php
/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.4 2015-04-10
 * @since       1.0
 *------------------------------------------------------------------------------
*/

// No direct access to this file
defined('_JEXEC') or die();

jimport( 'joomla.filesystem.path' );

// Load file helpers

if (!class_exists('iCModelItem')) require(JPATH_COMPONENT . '/helpers/icmodel.php');
if (!class_exists('iCModeliChelper')) require(JPATH_COMPONENT . '/helpers/ichelper.php');


/**
 * icagenda Model
 */
class icagendaModelList extends iCModelItem
{
	/**
	 * Get Form - Registration
	 *
	 * @since	3.4.1
	 */
	public function getForm()
	{
	    $form = JForm::getInstance('submit', JPATH_COMPONENT . '/models/forms/registration.xml');

		if (empty($form))
		{
			return false;
		}

	    return $form;
	}

	/**
	 * Method to auto-populate the model state.
	 *
	 * Note. Calling getState in this method will result in recursion.
	 *
	 * @since	3.6
	 */
	protected function populateState()
	{
		// Initialise variables.
		$app		= JFactory::getApplication();
		$context	= $app->input->get('option') . '.' . $app->input->get('view');

		// Load the filter state.
		$search = $app->getUserStateFromRequest($context.'.filter.search', 'filter_search');
		//Omit double (white-)spaces and set state
		$this->setState('filter.search', preg_replace('/\s+/',' ', $search));

		//Filter (dropdown) state
		$state = $app->getUserStateFromRequest($context.'.filter.state', 'filter_state', '', 'string');
		$this->setState('filter.state', $state);

		//Filter (dropdown) company
		$category = $app->getUserStateFromRequest($context.'.filter.category', 'filter_category', '', 'string');
		$this->setState('filter.category', $category);
	}

	/**
	 * Get Params
	 *
	 * @since	1.0
	 */
	public function getData()
	{
		$this->startiCModel();

		// Import params
		$app = JFactory::getApplication();
		$icpar = $app->getParams();

		// Get Current Layout
		$jlayout		= $app->input->getCmd('layout', '');
//		$layouts_array	= array('event', 'registration', 'actions');
//		$layout			= in_array($jlayout, $layouts_array) ? $jlayout : '';

		$user	= JFactory::getUser();
		$userid	= $user->get('id');

		// Get Registration Post Data // TO BE REMOVED WHEN NEW REGISTRATION VIEW
		$regpost = JRequest::get('post');

		// Process registration function to save data (icmodel.php) // TO BE REMOVED WHEN NEW REGISTRATION VIEW
		if ($app->input->get('event'))
		{
			$this->registration($regpost);
		}

		// filters
		$this->addFilter('state', 1);

		$id = JRequest::getInt('id');

//		if ( $jlayout
//			&& ( ! $id) || ( ! preg_match("/^[0-9]+$/", $id)))
//		{
//			JError::raiseError('404',JTEXT::_('JERROR_LAYOUT_PAGE_NOT_FOUND'));

//			return false;
//		}

		$Itemid = JRequest::getInt('Itemid');

		if ($id)
		{
			$this->addFilter('id', $id);
		}
		else
		{
			if(JRequest::getVar('key', '', 'post')) $this->addFilter('key', JRequest::getVar('key', '','post'));
			if($icpar->get('mcatid')) $this->addFilter('e.catid', $icpar->get('mcatid'));
			if($icpar->get('place')) $this->addFilter('e.place', $icpar->get('place'));
			if($icpar->get('address')) $this->addFilter('e.address', $icpar->get('address'));
			if($icpar->get('time')) $this->addFilter('next', $icpar->get('time'));
		}

		$this->addOption('Itemid', $icpar->get('itemid', $Itemid));

		// Get Option Menu and Global for Type of Display for List of Events (all dates, or only next date, for each event)
		$this->addOption('datesDisplay', $icpar->get('datesDisplay', 1));

		$this->addOption('filterTime', $icpar->get('time', 1));

		// Menu Options
		$this->addOption('number', $icpar->get('number', 5));

		// App Options
		$this->addOption('orderby', $icpar->get('orderby', 2));
		$this->addOption('mcatid', $icpar->get('mcatid', array('0')));
//		$this->addOption('format', $icpar->get('format', 0));

		// Global Options
		$this->addOption('addthis', $icpar->get('addthis', ''));
		$this->addOption('atevent', $icpar->get('atevent', 1));
		$this->addOption('atfloat', $icpar->get('atfloat', ''));
		$this->addOption('aticon', $icpar->get('aticon', ''));
		$this->addOption('emailRequired', $icpar->get('emailRequired', 0));
		$this->addOption('limit', $icpar->get('limit', 100));
		$this->addOption('limitGlobal', $icpar->get('limitGlobal', 0));
		$this->addOption('maxRlist', $icpar->get('maxRlist', ''));
		$this->addOption('participantList', $icpar->get('participantList', ''));
		$this->addOption('participantSlide', $icpar->get('participantSlide', ''));
		$this->addOption('phoneRequired', $icpar->get('phoneRequired', 0));
		$this->addOption('RegButtonText', $icpar->get('RegButtonText', ''));
		$this->addOption('statutReg', $icpar->get('statutReg', ''));
		$this->addOption('timeformat', $icpar->get('timeformat', 1));
		$this->addOption('m_width', $icpar->get('m_width', '100%'));
		$this->addOption('m_height', $icpar->get('m_height', '300px'));
//		$this->addOption('date_format', $icpar->get('date_format', ''));
//		$this->addOption('date_separator', $icpar->get('date_separator', ' '));

		if($icpar->get('participantDisplay')) $this->addOption('participantDisplay', $icpar->get('participantDisplay'));
		if($icpar->get('fullListColumns')) $this->addOption('fullListColumns', $icpar->get('fullListColumns'));
		if($icpar->get('targetLink')) $this->addOption('targetLink', $icpar->get('targetLink'));
		if($icpar->get('arrowtext')) $this->addOption('arrowtext', $icpar->get('arrowtext'));
		if($icpar->get('accessReg')) $this->addOption('accessReg', $icpar->get('accessReg'));
		if($icpar->get('limitRegEmail')) $this->addOption('limitRegEmail', $icpar->get('limitRegEmail'));
		if($icpar->get('limitRegDate')) $this->addOption('limitRegDate', $icpar->get('limitRegDate'));
		if($icpar->get('maxReg')) $this->addOption('maxReg', $icpar->get('maxReg'));
		if($icpar->get('regEmailUser')) $this->addOption('regEmailUser', $icpar->get('regEmailUser'));
		if($icpar->get('emailUserSubjectPeriod')) $this->addOption('emailUserSubjectPeriod', $icpar->get('emailUserSubjectPeriod'));
		if($icpar->get('emailUserBodyPeriod')) $this->addOption('emailUserBodyPeriod', $icpar->get('emailUserBodyPeriod'));
		if($icpar->get('emailUserSubjectDate')) $this->addOption('emailUserSubjectDate', $icpar->get('emailUserSubjectDate'));
		if($icpar->get('emailUserBodyDate')) $this->addOption('emailUserBodyDate', $icpar->get('emailUserBodyDate'));
		if($icpar->get('headerList')) $this->addOption('headerList', $icpar->get('headerList'));


		// Struture
		$structure = array(
//			'container'=>array(
//				'header'=>'',
//				'navigator'=>'',
//			),
			'items' => array(
				'item' => array(
					'accessReg'=>'',
					'approval'=>'',
					'eventAllDates'=>'',
					'eventHasPeriod'=>'',
					'evtParams'=>'',
					'infoDetails'=>'',
					'statutReg'=>'',
					'titleFormat'=>'',

					'BackArrow'=>'',
					'BackURL'=>'',
					'id'=>'',
					'Itemid'=>'',
					'metaTitle'=>'',
					'metaDesc'=>'',
					'metaAsShortDesc'=>'',
					'state'=>'',
					'weekday'=>'',
					'weekdayShort'=>'',
					'timeformat'=>'',
					'participantList'=>'',
					'participantSlide'=>'',
					'participantDisplay'=>'',
					'fullListColumns'=>'',
					'participantListTitle'=>'',
					'arrowtext'=>'',
					'navposition'=>'',
					'headerList'=>'',
					'title'=>'',
					'titlebar'=>'',
					'ManagerIcons'=>'',
					'url'=>NULL,
					'Event_Link'=>'',
					'cat_id'=>'',
					'cat_title'=>'',
					'cat_color'=>'',
					'fontColor'=>'',
					'cat_desc'=>'',
					'shortdesc'=>'',
					'desc'=>'',
					'shortDescription'=>'',
					'description'=>'',
					'descShort'=>'',
					'image'=>'',
					'imageTag'=>'',
					'file'=>'',
					'fileTag'=>'',

					'displaytime'=>'',
					'next'=>'',
					'nextDate'=>'',
					'period'=>'',
					'startdatetime'=>'',
					'enddatetime'=>'',
					'nextControl'=>'',

					'start_datetime'=>'',
					'end_datetime'=>'',
					'dates'=>'',

					'startDate'=>'',
					'startDay'=>'',

					'endDate'=>'',
					'endDay'=>'',
					'endMonth'=>'',
					'endMonthNum'=>'',
					'endYear'=>'',

					'startTime'=>'',
					'endTime'=>'',

					'periodDates'=>'',
					'dateText'=>'',
					'periodDisplay'=>'',
					'periodControl'=>'',
					'weekdays'=>'',
					'day'=>'',
					'maxNbTickets'=>'',
					'ticketsCouldBeBooked'=>'',
					'registeredForThisDate'=>'',
					'maxReg'=>'',
					'maxRlist'=>'',
					'emailRequired'=>'',
					'phoneRequired'=>'',

					'month'=>'',
					'monthNum'=>'',

					'year'=>'',
					'yearShort'=>'',
					'evenTime'=>'',
					'dateFormat'=>'',
					'datelistMkt'=>'',
					'datelist'=>'',
					'datelistUl'=>'',
					'time'=>'',
					'address'=>'',
					'name'=>'',
					'email'=>'',
					'contact_name'=>'',
					'contact_email'=>'',
					'emailLink'=>'',
					'phone'=>'',
					'website'=>'',
					'websiteLink'=>'',
					'targetLink'=>'',
					'place_name'=>'',
					'place_desc'=>'',
					'city'=>'',
					'country'=>'',
					'coordinate'=>'',
					'lat'=>'',
					'lng'=>'',
					'map'=>'',
					'share'=>'',
					'share_event'=>'',
					'limitRegEmail'=>'',
					'limitRegDate'=>'',

					'gcalendarUrl'=>'',
					'yahoocalendarUrl'=>'',
					'wlivecalendarUrl'=>'',

					'registrations'=>'',

					'registered'=>'',
					'totalRegistered'=>'',
					'registeredUsers'=>'',
					'reg'=>'',
					'regUrl'=>'',
					'iCagendaRegForm'=>'',
					'typeReg'=>'',
					'regEmailUser'=>'',
					'emailUserSubjectPeriod'=>'',
					'emailUserBodyPeriod'=>'',
					'emailUserSubjectDate'=>'',
					'emailUserBodyDate'=>'',
					'language'=>'',
					'params'=>'',

					'gcalendarLink'=>'',
					'loadEventCustomFields'=>'',
					'features'=>'',

					'periodTest'=>'', // DEPRECATED
					'titleLink'=>'', // DEPRECATED
// REMOVED 3.5.3	'placeLeft'=>'',
				)
			)
		);

		return $this->getItems($structure);
	}

	/**
	 * Get Records.
	 *
	 * @return	object list.
	 * @since	3.3.8
	 */
	public function getRecords()
	{
		// Get the current user for authorisation checks
		$user	= JFactory::getUser();

		// Get Params for current view
		$app	= JFactory::getApplication();
		$params	= $app->getParams();

		// Select the required fields from the table.
		$db = JFactory::getDBO();
		$query = $db->getQuery(true);

		$query->select('e.*')
			->from($db->qn('#__icagenda_events') . ' AS e');

		// Join over the language
		$query->select('l.title AS language_title')
			->join('LEFT', $db->quoteName('#__languages') . ' AS l ON l.lang_code = e.language');

		// Join over the users for the checked out user.
//		$query->select('uc.name AS editor');
//		$query->join('LEFT', '#__users AS uc ON uc.id=e.checked_out');

		// Join over the asset groups.
		$query->select('ag.title AS access_level')
			->join('LEFT', '#__viewlevels AS ag ON ag.id = e.access');

		// Join the category
		$query->select('c.title AS category, c.color AS catcolor');
		$query->join('LEFT', '#__icagenda_category AS c ON c.id = e.catid');
		$query->where('c.state = 1');

		// Join over the users for the author.
//		$query->select('ua.name AS author_name, ua.username AS author_username')
//			->join('LEFT', '#__users AS ua ON ua.id = e.created_by');

		// Filter by published state
		$query->where('e.state = 1');

		// Event is approved
		$query->where('e.approval <> 1');

		// Filter by access level.
		$access_levels = implode(',', $user->getAuthorisedViewLevels());

		$query->where('e.access IN (' . $db->q($access_levels) . ')');
//			->where('c.access IN (' . $db->q($access_levels) . ')'); // To be added later, when access integrated to category

		// Filter by language
		$query->where('e.language in (' . $db->q(JFactory::getLanguage()->getTag()) . ',' . $db->q('*') . ')');

		// Filter by Features
		$query->where(icagendaEventsData::getFeaturesFilter());

		// Filter by dates
		$dates_filter	= $params->get('time', 1); // Default Current and Upcoming Events

		// Get today date and datetime based on Joomla Config Timezone.
		$datetime_today	= JHtml::date('now', 'Y-m-d H:i:s');
		$date_today		= JHtml::date('now', 'Y-m-d');

		if (!empty($dates_filter))
		{
			// COM_ICAGENDA_OPTION_TODAY_AND_UPCOMING
			if ($dates_filter == '1')
			{
				$where_current_upcoming = $db->qn('e.next') . ' >= ' . $db->q($date_today);
				$where_current_upcoming.= ' OR (' . $db->qn('e.next') . ' < ' . $db->q($datetime_today) . ' AND ' . $db->qn('e.startdate') . ' <> "0000-00-00 00:00:00" AND ' . $db->qn('e.enddate') . ' > ' . $db->q($datetime_today) . ')';

				$query->where($where_current_upcoming);
			}

			// COM_ICAGENDA_OPTION_PAST
			elseif ($dates_filter == '2')
			{
				$where_past = '(';

				// Period dates with no weekdays filter
				$where_past.= $db->qn('e.next') . ' < ' . $db->q($datetime_today) . ')';
				$where_past.= ' AND (' . $db->qn('e.enddate') . ' < ' . $db->q($datetime_today);

				$where_past.= ' )';

				$query->where($where_past);
			}

			// COM_ICAGENDA_OPTION_FUTURE
			elseif ($dates_filter == '3')
			{
				$where_upcoming = '(';
				$where_upcoming.= $db->qn('e.next') . ' > ' . $db->q($datetime_today);
				$where_upcoming.= ' )';

				$query->where($where_upcoming);
			}

			// COM_ICAGENDA_OPTION_TODAY
			elseif ($dates_filter == '4')
			{
				$where_today = '( ';

				// One day dates filter
				$where_today.= ' (';
				$where_today.= ' (' . $db->qn('e.next') . ' >= ' . $db->q($datetime_today) . ')';
				$where_today.= ' AND (' . $db->qn('e.next') . ' < ' . $db->q($date_today) . ' + INTERVAL 1 DAY)';
				$where_today.= ' )';

				// Period dates with no weekdays filter
				$where_today.= ' OR ( ';
				$where_today.= ' (' . $db->qn('e.next') . ' > ' . $db->q($date_today) . ')';
				$where_today.= ' AND (' . $db->qn('e.weekdays') . ' = "")';
				$where_today.= ' AND ' . $db->qn('e.enddate') . ' <> "0000-00-00 00:00:00" AND (' . $db->qn('e.enddate') . ' >= ' . $db->q($date_today) . ')';
				$where_today.= ' AND ' . $db->qn('e.startdate') . ' <> "0000-00-00 00:00:00" AND (' . $db->qn('e.startdate') . ' < ' . $db->q($date_today) . ')';
				$where_today.= ' )';

				$where_today.= ' )';

				$query->where($where_today);
			}
		}

		// Order Next Date DESC
		$orderby	= $params->get('orderby', 2); // Default ASC
		$ordering	= ($orderby == 1) ? 'DESC' : 'ASC';

		$query->order('e.next ' . $ordering);

		// Tell the database connector what query to run.
		$db->setQuery($query);

		// Invoke the query or data retrieval helper.
		$db_list = $db->loadObjectList();

		return $db_list;
	}


   /**
    * Load Google Maps Scripts.
    *
    * @since	3.5.0
    */
	public static function loadGMapScripts()
	{
		// Google Maps api V3
		$document				= JFactory::getDocument();
		$scripts				= array_keys($document->_scripts);
		$mapsgooglescriptFound	= false;

		for ($i = 0; $i < count($scripts); $i++)
		{
    		if ( stripos($scripts[$i], 'maps.googleapis.com') !== false
    			&& stripos($scripts[$i], 'maps.gstatic.com') !== false )
			{
				$mapsgooglescriptFound = true;
			}
		}

		$doclang	= JFactory::getDocument();
		$curlang	= $doclang->language;
		$lang		= substr($curlang, 0, 2);

		if (!$mapsgooglescriptFound)
		{
			$document->addScript('https://maps.googleapis.com/maps/api/js?sensor=false&librairies=places&language=' . $lang);
		}

		JHtml::script( 'com_icagenda/icmap-front.js', false, true );
	}


   /**
    * Get the return URL.
    *
    * @return	string   The return URL.
    * @since	1.0
    */
	public function getReturnPage()
	{
		return base64_encode($this->getState('return_page'));
	}
}
js/index.html000060400000000054152455755750007174 0ustar00<html><body bgcolor="#FFFFFF"></body></html>js/icmap.js000060400000014445152455755750006637 0ustar00/*
 * jQuery UI addresspicker @VERSION
 *
 * Copyright 2010, 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/Progressbar
 *
 * Depends:
 *   jquery.ui.core.js
 *   jquery.ui.widget.js
 *   jquery.ui.autocomplete.js
 */
(function( $, undefined ) {

	$.widget( "ui.addresspicker", {
		options: {
			appendAddressString: "",
			draggableMarker: true,
			regionBias: null,
			updateCallback: null,
			reverseGeocode: false,
			mapOptions: {
				zoom: 13,
				center: new google.maps.LatLng(46, 2),
				scrollwheel: false,
				mapTypeId: google.maps.MapTypeId.ROADMAP
			},
			elements: {
				map: false,
				lat: false,
				lng: false,
				street_number: false,
				route: false,
				locality: false,
				administrative_area_level_2: false,
				administrative_area_level_1: false,
				country: false,
				postal_code: false,
				type: false

			}
		},

		marker: function() {
			return this.gmarker;
		},

		map: function() {
			return this.gmap;
		},

		updatePosition: function() {
			this._updatePosition(this.gmarker.getPosition());
		},

		reloadPosition: function() {
			this.gmarker.setVisible(true);
			this.gmarker.setPosition(new google.maps.LatLng(this.lat.val(), this.lng.val()));
			this.gmap.setCenter(this.gmarker.getPosition());
		},

		selected: function() {
			return this.selectedResult;
		},

		_create: function() {
			this.geocoder = new google.maps.Geocoder();
			this.element.autocomplete({
				source: $.proxy(this._geocode, this),
				focus:  $.proxy(this._focusAddress, this),
				select: $.proxy(this._selectAddress, this)
			});

			this.lat = $(this.options.elements.lat);
			this.lng = $(this.options.elements.lng);
			this.street_number = $(this.options.elements.street_number);
			this.route = $(this.options.elements.route);
			this.locality = $(this.options.elements.locality);
			this.administrative_area_level_2 = $(this.options.elements.administrative_area_level_2);
			this.administrative_area_level_1 = $(this.options.elements.administrative_area_level_1);
			this.country  = $(this.options.elements.country);
			this.postal_code = $(this.options.elements.postal_code);
			this.type = $(this.options.elements.type);
			if (this.options.elements.map) {
				this.mapElement = $(this.options.elements.map);
				this._initMap();
			}
		},

		_initMap: function() {
			if (this.lat && this.lat.val()) {
				this.options.mapOptions.center = new google.maps.LatLng(this.lat.val(), this.lng.val());
			}

			this.gmap = new google.maps.Map(this.mapElement[0], this.options.mapOptions);
			this.gmarker = new google.maps.Marker({
				position: this.options.mapOptions.center,
				map:this.gmap,
				draggable: this.options.draggableMarker});
			google.maps.event.addListener(this.gmarker, 'dragend', $.proxy(this._markerMoved, this));
			this.gmarker.setVisible(false);
		},

		_updatePosition: function(location) {
			if (this.lat) {
				this.lat.val(location.lat());
			}
			if (this.lng) {
				this.lng.val(location.lng());
			}
		},

		_addressParts: {street_number: null, route: null, locality: null,
				 administrative_area_level_2: null, administrative_area_level_1: null,
				 country: null, postal_code:null, type: null},

		_updateAddressParts: function(geocodeResult){

			parsedResult = this._parseGeocodeResult(geocodeResult);

			for (addressPart in this._addressParts){
				if (this[addressPart]){
					if (JSON.stringify(parsedResult[addressPart]) == 'false'){
						this[addressPart].val('');
					} else {
						this[addressPart].val(parsedResult[addressPart]);
					}
				}
			}
		},

		_updateAddressPartsViaReverseGeocode: function(location){
			var latLng = new google.maps.LatLng(location.lat(), location.lng());

			this.geocoder.geocode({'latLng': latLng}, $.proxy(function(results, status){
				if (status == google.maps.GeocoderStatus.OK)

				this._updateAddressParts(results[0]);
				this.element.val(results[0].formatted_address);
				this.selectedResult = results[0];

				if (this.options.updateCallback) {
					this.options.updateCallback(this.selectedResult, this._parseGeocodeResult(this.selectedResult));
				}
			}, this));
		},

		_parseGeocodeResult: function(geocodeResult){

			var parsed = {lat: geocodeResult.geometry.location.lat(),
				lng: geocodeResult.geometry.location.lng()};

			for (var addressPart in this._addressParts){
				parsed[addressPart] = this._findInfo(geocodeResult, addressPart);
			}

			parsed.type = geocodeResult.types[0];

			return parsed;
		},

		_markerMoved: function() {
			this._updatePosition(this.gmarker.getPosition());

			if (this.options.reverseGeocode){
				this._updateAddressPartsViaReverseGeocode(this.gmarker.getPosition());
			}
		},

		// Autocomplete source method: fill its suggests with google geocoder results
		_geocode: function(request, response) {
			var address = request.term, self = this;
			this.geocoder.geocode({
				'address': address + this.options.appendAddressString,
				'region': this.options.regionBias
			}, function(results, status) {
				if (status == google.maps.GeocoderStatus.OK) {
					for (var i = 0; i < results.length; i++) {
						results[i].label =  results[i].formatted_address;
					};
				}
				response(results);
			})
		},

		_findInfo: function(result, type) {
			for (var i = 0; i < result.address_components.length; i++) {
				var component = result.address_components[i];
				if (component.types.indexOf(type) !=-1) {
					return component.long_name;
				}
			}
			return false;
		},

		_focusAddress: function(event, ui) {
			var address = ui.item;
			if (!address) {
				return;
			}

			if (this.gmarker) {
				this.gmarker.setPosition(address.geometry.location);
				this.gmarker.setVisible(true);

				this.gmap.fitBounds(address.geometry.viewport);
			}

			this._updatePosition(address.geometry.location);

			this._updateAddressParts(address);

		},

		_selectAddress: function(event, ui) {
			this.selectedResult = ui.item;
			if (this.options.updateCallback) {
				this.options.updateCallback(this.selectedResult, this._parseGeocodeResult(this.selectedResult));
			}
		}
	});

	$.extend( $.ui.addresspicker, {
		version: "@VERSION"
	});

	// make IE think it doesn't suck
	if(!Array.indexOf){
		Array.prototype.indexOf = function(obj){
			for(var i=0; i<this.length; i++){
				if(this[i]==obj){
					return i;
				}
			}
			return -1;
		}
	}

})( jQuery );
js/timepicker.js000060400000157265152455755750007712 0ustar00/*
 * jQuery timepicker addon
 * By: Trent Richardson [http://trentrichardson.com]
 * Version 1.0.3
 * Last Modified: 09/15/2012
 *
 * Copyright 2012 Trent Richardson
 * You may use this project under MIT or GPL licenses.
 * http://trentrichardson.com/Impromptu/GPL-LICENSE.txt
 * http://trentrichardson.com/Impromptu/MIT-LICENSE.txt
 *
 * HERES THE CSS:
 * .ui-timepicker-div .ui-widget-header { margin-bottom: 8px; }
 * .ui-timepicker-div dl { text-align: left; }
 * .ui-timepicker-div dl dt { height: 25px; margin-bottom: -25px; }
 * .ui-timepicker-div dl dd { margin: 0 10px 10px 65px; }
 * .ui-timepicker-div td { font-size: 90%; }
 * .ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }
 */

/*jslint evil: true, white: false, undef: false, nomen: false */

(function($) {

	/*
	* Lets not redefine timepicker, Prevent "Uncaught RangeError: Maximum call stack size exceeded"
	*/
	$.ui.timepicker = $.ui.timepicker || {};
	if ($.ui.timepicker.version) {
		return;
	}

	/*
	* Extend jQueryUI, get it started with our version number
	*/
	$.extend($.ui, {
		timepicker: {
			version: "1.0.3"
		}
	});

	/*
	* Timepicker manager.
	* Use the singleton instance of this class, $.timepicker, to interact with the time picker.
	* Settings for (groups of) time pickers are maintained in an instance object,
	* allowing multiple different settings on the same page.
	*/
	function Timepicker() {
		this.regional = []; // Available regional settings, indexed by language code
		this.regional[''] = { // Default regional settings
			currentText: Joomla.JText._('COM_ICAGENDA_TP_CURRENT', 'Now'),
			closeText: Joomla.JText._('COM_ICAGENDA_TP_CLOSE', 'Done'),
			ampm: false,
			amNames: ['AM', 'A'],
			pmNames: ['PM', 'P'],
			timeFormat: 'hh:mm tt',
			timeSuffix: '',
			timeOnlyTitle: Joomla.JText._('COM_ICAGENDA_TP_TITLE', 'Choose Time'),
			timeText: Joomla.JText._('COM_ICAGENDA_TP_TIME', 'Time'),
			hourText: Joomla.JText._('COM_ICAGENDA_TP_HOUR', 'Hour'),
			minuteText: Joomla.JText._('COM_ICAGENDA_TP_MINUTE', 'Minute'),
			secondText: 'Second',
			millisecText: 'Millisecond',
			timezoneText: 'Time Zone'
		};
		this._defaults = { // Global defaults for all the datetime picker instances
			showButtonPanel: true,
			timeOnly: false,
			showHour: true,
			showMinute: true,
			showSecond: false,
			showMillisec: false,
			showTimezone: false,
			showTime: true,
			stepHour: 1,
			stepMinute: 1,
			stepSecond: 1,
			stepMillisec: 1,
			hour: 0,
			minute: 0,
			second: 0,
			millisec: 0,
			timezone: null,
			useLocalTimezone: false,
			defaultTimezone: "+0000",
			hourMin: 0,
			minuteMin: 0,
			secondMin: 0,
			millisecMin: 0,
			hourMax: 23,
			minuteMax: 59,
			secondMax: 59,
			millisecMax: 999,
			minDateTime: null,
			maxDateTime: null,
			onSelect: null,
			hourGrid: 0,
			minuteGrid: 0,
			secondGrid: 0,
			millisecGrid: 0,
			alwaysSetTime: true,
			separator: ' ',
			altFieldTimeOnly: true,
			altSeparator: null,
			altTimeSuffix: null,
			showTimepicker: true,
			timezoneIso8601: false,
			timezoneList: null,
			addSliderAccess: false,
			sliderAccessArgs: null,
			defaultValue: null
		};
		$.extend(this._defaults, this.regional['']);
	}

	$.extend(Timepicker.prototype, {
		$input: null,
		$altInput: null,
		$timeObj: null,
		inst: null,
		hour_slider: null,
		minute_slider: null,
		second_slider: null,
		millisec_slider: null,
		timezone_select: null,
		hour: 0,
		minute: 0,
		second: 0,
		millisec: 0,
		timezone: null,
		defaultTimezone: "+0000",
		hourMinOriginal: null,
		minuteMinOriginal: null,
		secondMinOriginal: null,
		millisecMinOriginal: null,
		hourMaxOriginal: null,
		minuteMaxOriginal: null,
		secondMaxOriginal: null,
		millisecMaxOriginal: null,
		ampm: '',
		formattedDate: '',
		formattedTime: '',
		formattedDateTime: '',
		timezoneList: null,
		units: ['hour','minute','second','millisec'],

		/*
		* Override the default settings for all instances of the time 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;
		},

		/*
		* Create a new Timepicker instance
		*/
		_newInst: function($input, o) {
			var tp_inst = new Timepicker(),
				inlineSettings = {};

			for (var attrName in this._defaults) {
				if(this._defaults.hasOwnProperty(attrName)){
					var attrValue = $input.attr('time:' + attrName);
					if (attrValue) {
						try {
							inlineSettings[attrName] = eval(attrValue);
						} catch (err) {
							inlineSettings[attrName] = attrValue;
						}
					}
				}
			}
			tp_inst._defaults = $.extend({}, this._defaults, inlineSettings, o, {
				beforeShow: function(input, dp_inst) {
					if ($.isFunction(o.beforeShow)) {
						return o.beforeShow(input, dp_inst, tp_inst);
					}
				},
				onChangeMonthYear: function(year, month, dp_inst) {
					// Update the time as well : this prevents the time from disappearing from the $input field.
					tp_inst._updateDateTime(dp_inst);
					if ($.isFunction(o.onChangeMonthYear)) {
						o.onChangeMonthYear.call($input[0], year, month, dp_inst, tp_inst);
					}
				},
				onClose: function(dateText, dp_inst) {
					if (tp_inst.timeDefined === true && $input.val() !== '') {
						tp_inst._updateDateTime(dp_inst);
					}
					if ($.isFunction(o.onClose)) {
						o.onClose.call($input[0], dateText, dp_inst, tp_inst);
					}
				},
				timepicker: tp_inst // add timepicker as a property of datepicker: $.datepicker._get(dp_inst, 'timepicker');
			});
			tp_inst.amNames = $.map(tp_inst._defaults.amNames, function(val) {
				return val.toUpperCase();
			});
			tp_inst.pmNames = $.map(tp_inst._defaults.pmNames, function(val) {
				return val.toUpperCase();
			});

			if (tp_inst._defaults.timezoneList === null) {
				var timezoneList = ['-1200', '-1100', '-1000', '-0930', '-0900', '-0800', '-0700', '-0600', '-0500', '-0430', '-0400', '-0330', '-0300', '-0200', '-0100', '+0000',
									'+0100', '+0200', '+0300', '+0330', '+0400', '+0430', '+0500', '+0530', '+0545', '+0600', '+0630', '+0700', '+0800', '+0845', '+0900', '+0930',
									'+1000', '+1030', '+1100', '+1130', '+1200', '+1245', '+1300', '+1400'];

				if (tp_inst._defaults.timezoneIso8601) {
					timezoneList = $.map(timezoneList, function(val) {
						return val == '+0000' ? 'Z' : (val.substring(0, 3) + ':' + val.substring(3));
					});
				}
				tp_inst._defaults.timezoneList = timezoneList;
			}

			tp_inst.timezone = tp_inst._defaults.timezone;
			tp_inst.hour = tp_inst._defaults.hour;
			tp_inst.minute = tp_inst._defaults.minute;
			tp_inst.second = tp_inst._defaults.second;
			tp_inst.millisec = tp_inst._defaults.millisec;
			tp_inst.ampm = '';
			tp_inst.$input = $input;

			if (o.altField) {
				tp_inst.$altInput = $(o.altField).css({
					cursor: 'pointer'
				}).focus(function() {
					$input.trigger("focus");
				});
			}

			if (tp_inst._defaults.minDate === 0 || tp_inst._defaults.minDateTime === 0) {
				tp_inst._defaults.minDate = new Date();
			}
			if (tp_inst._defaults.maxDate === 0 || tp_inst._defaults.maxDateTime === 0) {
				tp_inst._defaults.maxDate = new Date();
			}

			// datepicker needs minDate/maxDate, timepicker needs minDateTime/maxDateTime..
			if (tp_inst._defaults.minDate !== undefined && tp_inst._defaults.minDate instanceof Date) {
				tp_inst._defaults.minDateTime = new Date(tp_inst._defaults.minDate.getTime());
			}
			if (tp_inst._defaults.minDateTime !== undefined && tp_inst._defaults.minDateTime instanceof Date) {
				tp_inst._defaults.minDate = new Date(tp_inst._defaults.minDateTime.getTime());
			}
			if (tp_inst._defaults.maxDate !== undefined && tp_inst._defaults.maxDate instanceof Date) {
				tp_inst._defaults.maxDateTime = new Date(tp_inst._defaults.maxDate.getTime());
			}
			if (tp_inst._defaults.maxDateTime !== undefined && tp_inst._defaults.maxDateTime instanceof Date) {
				tp_inst._defaults.maxDate = new Date(tp_inst._defaults.maxDateTime.getTime());
			}
			tp_inst.$input.bind('focus', function() {
				tp_inst._onFocus();
			});

			return tp_inst;
		},

		/*
		* add our sliders to the calendar
		*/
		_addTimePicker: function(dp_inst) {
			var currDT = (this.$altInput && this._defaults.altFieldTimeOnly) ? this.$input.val() + ' ' + this.$altInput.val() : this.$input.val();

			this.timeDefined = this._parseTime(currDT);
			this._limitMinMaxDateTime(dp_inst, false);
			this._injectTimePicker();
		},

		/*
		* parse the time string from input value or _setTime
		*/
		_parseTime: function(timeString, withDate) {
			if (!this.inst) {
				this.inst = $.datepicker._getInst(this.$input[0]);
			}

			if (withDate || !this._defaults.timeOnly) {
				var dp_dateFormat = $.datepicker._get(this.inst, 'dateFormat');
				try {
					var parseRes = parseDateTimeInternal(dp_dateFormat, this._defaults.timeFormat, timeString, $.datepicker._getFormatConfig(this.inst), this._defaults);
					if (!parseRes.timeObj) {
						return false;
					}
					$.extend(this, parseRes.timeObj);
				} catch (err) {
					return false;
				}
				return true;
			} else {
				var timeObj = $.datepicker.parseTime(this._defaults.timeFormat, timeString, this._defaults);
				if (!timeObj) {
					return false;
				}
				$.extend(this, timeObj);
				return true;
			}
		},

		/*
		* generate and inject html for timepicker into ui datepicker
		*/
		_injectTimePicker: function() {
			var $dp = this.inst.dpDiv,
				o = this.inst.settings,
				tp_inst = this,
				litem = '',
				uitem = '',
				max = {},
				gridSize = {},
				size = null;

			// Prevent displaying twice
			if ($dp.find("div.ui-timepicker-div").length === 0 && o.showTimepicker) {
				var noDisplay = ' style="display:none;"',
					html = '<div class="ui-timepicker-div"><dl>' + '<dt class="ui_tpicker_time_label"' + ((o.showTime) ? '' : noDisplay) + '>' + o.timeText + '</dt>' +
								'<dd class="ui_tpicker_time"' + ((o.showTime) ? '' : noDisplay) + '></dd>';

				// Create the markup
				for(var i=0,l=this.units.length; i<l; i++){
					litem = this.units[i];
					uitem = litem.substr(0,1).toUpperCase() + litem.substr(1);
					// Added by Peter Medeiros:
					// - Figure out what the hour/minute/second max should be based on the step values.
					// - Example: if stepMinute is 15, then minMax is 45.
					max[litem] = parseInt((o[litem+'Max'] - ((o[litem+'Max'] - o[litem+'Min']) % o['step'+uitem])), 10);
					gridSize[litem] = 0;

					html += '<dt class="ui_tpicker_'+ litem +'_label"' + ((o['show'+uitem]) ? '' : noDisplay) + '>' + o[litem +'Text'] + '</dt>' +
								'<dd class="ui_tpicker_'+ litem +'"><div class="ui_tpicker_'+ litem +'_slider"' + ((o['show'+uitem]) ? '' : noDisplay) + '></div>';

					if (o['show'+uitem] && o[litem+'Grid'] > 0) {
						html += '<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>';

						if(litem == 'hour'){
							for (var h = o[litem+'Min']; h <= max[litem]; h += parseInt(o[litem+'Grid'], 10)) {
								gridSize[litem]++;
								var tmph = (o.ampm && h > 12) ? h - 12 : h;
								if (tmph < 10) {
									tmph = '0' + tmph;
								}
								if (o.ampm) {
									if (h === 0) {
										tmph = 12 + 'a';
									} else {
										if (h < 12) {
											tmph += 'a';
										} else {
											tmph += 'p';
										}
									}
								}
								html += '<td data-for="'+litem+'">' + tmph + '</td>';
							}
						}
						else{
							for (var m = o[litem+'Min']; m <= max[litem]; m += parseInt(o[litem+'Grid'], 10)) {
								gridSize[litem]++;
								html += '<td data-for="'+litem+'">' + ((m < 10) ? '0' : '') + m + '</td>';
							}
						}

						html += '</tr></table></div>';
					}
					html += '</dd>';
				}

				// Timezone
				html += '<dt class="ui_tpicker_timezone_label"' + ((o.showTimezone) ? '' : noDisplay) + '>' + o.timezoneText + '</dt>';
				html += '<dd class="ui_tpicker_timezone" ' + ((o.showTimezone) ? '' : noDisplay) + '></dd>';

				// Create the elements from string
				html += '</dl></div>';
				var $tp = $(html);

				// if we only want time picker...
				if (o.timeOnly === true) {
					$tp.prepend('<div class="ui-widget-header ui-helper-clearfix ui-corner-all">' + '<div class="ui-datepicker-title">' + o.timeOnlyTitle + '</div>' + '</div>');
					$dp.find('.ui-datepicker-header, .ui-datepicker-calendar').hide();
				}

				// Updated by Peter Medeiros:
				// - Pass in Event and UI instance into slide function
				this.hour_slider = $tp.find('.ui_tpicker_hour_slider').prop('slide', null).slider({
					orientation: "horizontal",
					value: this.hour,
					min: o.hourMin,
					max: max.hour,
					step: o.stepHour,
					slide: function(event, ui) {
						tp_inst.hour_slider.slider("option", "value", ui.value);
						tp_inst._onTimeChange();
					},
					stop: function(event, ui) {
						tp_inst._onSelectHandler();
					}
				});

				this.minute_slider = $tp.find('.ui_tpicker_minute_slider').prop('slide', null).slider({
					orientation: "horizontal",
					value: this.minute,
					min: o.minuteMin,
					max: max.minute,
					step: o.stepMinute,
					slide: function(event, ui) {
						tp_inst.minute_slider.slider("option", "value", ui.value);
						tp_inst._onTimeChange();
					},
					stop: function(event, ui) {
						tp_inst._onSelectHandler();
					}
				});

				this.second_slider = $tp.find('.ui_tpicker_second_slider').prop('slide', null).slider({
					orientation: "horizontal",
					value: this.second,
					min: o.secondMin,
					max: max.second,
					step: o.stepSecond,
					slide: function(event, ui) {
						tp_inst.second_slider.slider("option", "value", ui.value);
						tp_inst._onTimeChange();
					},
					stop: function(event, ui) {
						tp_inst._onSelectHandler();
					}
				});

				this.millisec_slider = $tp.find('.ui_tpicker_millisec_slider').prop('slide', null).slider({
					orientation: "horizontal",
					value: this.millisec,
					min: o.millisecMin,
					max: max.millisec,
					step: o.stepMillisec,
					slide: function(event, ui) {
						tp_inst.millisec_slider.slider("option", "value", ui.value);
						tp_inst._onTimeChange();
					},
					stop: function(event, ui) {
						tp_inst._onSelectHandler();
					}
				});

				// add sliders, adjust grids, add events
				for(var i=0,l=tp_inst.units.length; i<l; i++){
					litem = tp_inst.units[i];
					uitem = litem.substr(0,1).toUpperCase() + litem.substr(1);

					/*
						Something fishy happens when assigning to tp_inst['hour_slider'] instead of tp_inst.hour_slider, I think
						it is because it is assigned as a prototype. Clicking the slider will always change to the previous value
						not the new one clicked. Ideally this works and reduces the 80+ lines of code above
					// add the slider
					tp_inst[litem+'_slider'] = $tp.find('.ui_tpicker_'+litem+'_slider').prop('slide', null).slider({
						orientation: "horizontal",
						value: tp_inst[litem],
						min: o[litem+'Min'],
						max: max[litem],
						step: o['step'+uitem],
						slide: function(event, ui) {
							tp_inst[litem+'_slider'].slider("option", "value", ui.value);
							tp_inst._onTimeChange();
						},
						stop: function(event, ui) {
							//Emulate datepicker onSelect behavior. Call on slidestop.
							tp_inst._onSelectHandler();
						}
					});
					*/

					// adjust the grid and add click event
					if (o['show'+uitem] && o[litem+'Grid'] > 0) {
						size = 100 * gridSize[litem] * o[litem+'Grid'] / (max[litem] - o[litem+'Min']);
						$tp.find('.ui_tpicker_'+litem+' table').css({
							width: size + "%",
							marginLeft: (size / (-2 * gridSize[litem])) + "%",
							borderCollapse: 'collapse'
						}).find("td").click(function(e){
								var $t = $(this),
									h = $t.html()
									f = $t.data('for'); // loses scope, so we use data-for

								if (f == 'hour' && o.ampm) {
									var ap = h.substring(2).toLowerCase(),
										aph = parseInt(h.substring(0, 2), 10);
									if (ap == 'a') {
										if (aph == 12) {
											h = 0;
										} else {
											h = aph;
										}
									} else if (aph == 12) {
										h = 12;
									} else {
										h = aph + 12;
									}
								}
								tp_inst[f+'_slider'].slider("option", "value", parseInt(h,10));
								tp_inst._onTimeChange();
								tp_inst._onSelectHandler();
							})
						.css({
								cursor: 'pointer',
								width: (100 / gridSize[litem]) + '%',
								textAlign: 'center',
								overflow: 'hidden'
							});
					} // end if grid > 0
				} // end for loop

				// Add timezone options
				this.timezone_select = $tp.find('.ui_tpicker_timezone').append('<select></select>').find("select");
				$.fn.append.apply(this.timezone_select,
				$.map(o.timezoneList, function(val, idx) {
					return $("<option />").val(typeof val == "object" ? val.value : val).text(typeof val == "object" ? val.label : val);
				}));
				if (typeof(this.timezone) != "undefined" && this.timezone !== null && this.timezone !== "") {
					var local_date = new Date(this.inst.selectedYear, this.inst.selectedMonth, this.inst.selectedDay, 12);
					var local_timezone = $.timepicker.timeZoneOffsetString(local_date);
					if (local_timezone == this.timezone) {
						selectLocalTimeZone(tp_inst);
					} else {
						this.timezone_select.val(this.timezone);
					}
				} else {
					if (typeof(this.hour) != "undefined" && this.hour !== null && this.hour !== "") {
						this.timezone_select.val(o.defaultTimezone);
					} else {
						selectLocalTimeZone(tp_inst);
					}
				}
				this.timezone_select.change(function() {
					tp_inst._defaults.useLocalTimezone = false;
					tp_inst._onTimeChange();
				});
				// End timezone options

				// inject timepicker into datepicker
				var $buttonPanel = $dp.find('.ui-datepicker-buttonpane');
				if ($buttonPanel.length) {
					$buttonPanel.before($tp);
				} else {
					$dp.append($tp);
				}

				this.$timeObj = $tp.find('.ui_tpicker_time');

				if (this.inst !== null) {
					var timeDefined = this.timeDefined;
					this._onTimeChange();
					this.timeDefined = timeDefined;
				}

				// slideAccess integration: http://trentrichardson.com/2011/11/11/jquery-ui-sliders-and-touch-accessibility/
				if (this._defaults.addSliderAccess) {
					var sliderAccessArgs = this._defaults.sliderAccessArgs;
					setTimeout(function() { // fix for inline mode
						if ($tp.find('.ui-slider-access').length === 0) {
							$tp.find('.ui-slider:visible').sliderAccess(sliderAccessArgs);

							// fix any grids since sliders are shorter
							var sliderAccessWidth = $tp.find('.ui-slider-access:eq(0)').outerWidth(true);
							if (sliderAccessWidth) {
								$tp.find('table:visible').each(function() {
									var $g = $(this),
										oldWidth = $g.outerWidth(),
										oldMarginLeft = $g.css('marginLeft').toString().replace('%', ''),
										newWidth = oldWidth - sliderAccessWidth,
										newMarginLeft = ((oldMarginLeft * newWidth) / oldWidth) + '%';

									$g.css({
										width: newWidth,
										marginLeft: newMarginLeft
									});
								});
							}
						}
					}, 10);
				}
				// end slideAccess integration

			}
		},

		/*
		* This function tries to limit the ability to go outside the
		* min/max date range
		*/
		_limitMinMaxDateTime: function(dp_inst, adjustSliders) {
			var o = this._defaults,
				dp_date = new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay);

			if (!this._defaults.showTimepicker) {
				return;
			} // No time so nothing to check here

			if ($.datepicker._get(dp_inst, 'minDateTime') !== null && $.datepicker._get(dp_inst, 'minDateTime') !== undefined && dp_date) {
				var minDateTime = $.datepicker._get(dp_inst, 'minDateTime'),
					minDateTimeDate = new Date(minDateTime.getFullYear(), minDateTime.getMonth(), minDateTime.getDate(), 0, 0, 0, 0);

				if (this.hourMinOriginal === null || this.minuteMinOriginal === null || this.secondMinOriginal === null || this.millisecMinOriginal === null) {
					this.hourMinOriginal = o.hourMin;
					this.minuteMinOriginal = o.minuteMin;
					this.secondMinOriginal = o.secondMin;
					this.millisecMinOriginal = o.millisecMin;
				}

				if (dp_inst.settings.timeOnly || minDateTimeDate.getTime() == dp_date.getTime()) {
					this._defaults.hourMin = minDateTime.getHours();
					if (this.hour <= this._defaults.hourMin) {
						this.hour = this._defaults.hourMin;
						this._defaults.minuteMin = minDateTime.getMinutes();
						if (this.minute <= this._defaults.minuteMin) {
							this.minute = this._defaults.minuteMin;
							this._defaults.secondMin = minDateTime.getSeconds();
							if (this.second <= this._defaults.secondMin) {
								this.second = this._defaults.secondMin;
								this._defaults.millisecMin = minDateTime.getMilliseconds();
							} else {
								if (this.millisec < this._defaults.millisecMin) {
									this.millisec = this._defaults.millisecMin;
								}
								this._defaults.millisecMin = this.millisecMinOriginal;
							}
						} else {
							this._defaults.secondMin = this.secondMinOriginal;
							this._defaults.millisecMin = this.millisecMinOriginal;
						}
					} else {
						this._defaults.minuteMin = this.minuteMinOriginal;
						this._defaults.secondMin = this.secondMinOriginal;
						this._defaults.millisecMin = this.millisecMinOriginal;
					}
				} else {
					this._defaults.hourMin = this.hourMinOriginal;
					this._defaults.minuteMin = this.minuteMinOriginal;
					this._defaults.secondMin = this.secondMinOriginal;
					this._defaults.millisecMin = this.millisecMinOriginal;
				}
			}

			if ($.datepicker._get(dp_inst, 'maxDateTime') !== null && $.datepicker._get(dp_inst, 'maxDateTime') !== undefined && dp_date) {
				var maxDateTime = $.datepicker._get(dp_inst, 'maxDateTime'),
					maxDateTimeDate = new Date(maxDateTime.getFullYear(), maxDateTime.getMonth(), maxDateTime.getDate(), 0, 0, 0, 0);

				if (this.hourMaxOriginal === null || this.minuteMaxOriginal === null || this.secondMaxOriginal === null) {
					this.hourMaxOriginal = o.hourMax;
					this.minuteMaxOriginal = o.minuteMax;
					this.secondMaxOriginal = o.secondMax;
					this.millisecMaxOriginal = o.millisecMax;
				}

				if (dp_inst.settings.timeOnly || maxDateTimeDate.getTime() == dp_date.getTime()) {
					this._defaults.hourMax = maxDateTime.getHours();
					if (this.hour >= this._defaults.hourMax) {
						this.hour = this._defaults.hourMax;
						this._defaults.minuteMax = maxDateTime.getMinutes();
						if (this.minute >= this._defaults.minuteMax) {
							this.minute = this._defaults.minuteMax;
							this._defaults.secondMax = maxDateTime.getSeconds();
						} else if (this.second >= this._defaults.secondMax) {
							this.second = this._defaults.secondMax;
							this._defaults.millisecMax = maxDateTime.getMilliseconds();
						} else {
							if (this.millisec > this._defaults.millisecMax) {
								this.millisec = this._defaults.millisecMax;
							}
							this._defaults.millisecMax = this.millisecMaxOriginal;
						}
					} else {
						this._defaults.minuteMax = this.minuteMaxOriginal;
						this._defaults.secondMax = this.secondMaxOriginal;
						this._defaults.millisecMax = this.millisecMaxOriginal;
					}
				} else {
					this._defaults.hourMax = this.hourMaxOriginal;
					this._defaults.minuteMax = this.minuteMaxOriginal;
					this._defaults.secondMax = this.secondMaxOriginal;
					this._defaults.millisecMax = this.millisecMaxOriginal;
				}
			}

			if (adjustSliders !== undefined && adjustSliders === true) {
				var hourMax = parseInt((this._defaults.hourMax - ((this._defaults.hourMax - this._defaults.hourMin) % this._defaults.stepHour)), 10),
					minMax = parseInt((this._defaults.minuteMax - ((this._defaults.minuteMax - this._defaults.minuteMin) % this._defaults.stepMinute)), 10),
					secMax = parseInt((this._defaults.secondMax - ((this._defaults.secondMax - this._defaults.secondMin) % this._defaults.stepSecond)), 10),
					millisecMax = parseInt((this._defaults.millisecMax - ((this._defaults.millisecMax - this._defaults.millisecMin) % this._defaults.stepMillisec)), 10);

				if (this.hour_slider) {
					this.hour_slider.slider("option", {
						min: this._defaults.hourMin,
						max: hourMax
					}).slider('value', this.hour);
				}
				if (this.minute_slider) {
					this.minute_slider.slider("option", {
						min: this._defaults.minuteMin,
						max: minMax
					}).slider('value', this.minute);
				}
				if (this.second_slider) {
					this.second_slider.slider("option", {
						min: this._defaults.secondMin,
						max: secMax
					}).slider('value', this.second);
				}
				if (this.millisec_slider) {
					this.millisec_slider.slider("option", {
						min: this._defaults.millisecMin,
						max: millisecMax
					}).slider('value', this.millisec);
				}
			}

		},

		/*
		* when a slider moves, set the internal time...
		* on time change is also called when the time is updated in the text field
		*/
		_onTimeChange: function() {
			var hour = (this.hour_slider) ? this.hour_slider.slider('value') : false,
				minute = (this.minute_slider) ? this.minute_slider.slider('value') : false,
				second = (this.second_slider) ? this.second_slider.slider('value') : false,
				millisec = (this.millisec_slider) ? this.millisec_slider.slider('value') : false,
				timezone = (this.timezone_select) ? this.timezone_select.val() : false,
				o = this._defaults;

			if (typeof(hour) == 'object') {
				hour = false;
			}
			if (typeof(minute) == 'object') {
				minute = false;
			}
			if (typeof(second) == 'object') {
				second = false;
			}
			if (typeof(millisec) == 'object') {
				millisec = false;
			}
			if (typeof(timezone) == 'object') {
				timezone = false;
			}

			if (hour !== false) {
				hour = parseInt(hour, 10);
			}
			if (minute !== false) {
				minute = parseInt(minute, 10);
			}
			if (second !== false) {
				second = parseInt(second, 10);
			}
			if (millisec !== false) {
				millisec = parseInt(millisec, 10);
			}

			var ampm = o[hour < 12 ? 'amNames' : 'pmNames'][0];

			// If the update was done in the input field, the input field should not be updated.
			// If the update was done using the sliders, update the input field.
			var hasChanged = (hour != this.hour || minute != this.minute || second != this.second || millisec != this.millisec
								|| (this.ampm.length > 0 && (hour < 12) != ($.inArray(this.ampm.toUpperCase(), this.amNames) !== -1))
								|| ((this.timezone === null && timezone != this.defaultTimezone) || (this.timezone !== null && timezone != this.timezone)));

			if (hasChanged) {

				if (hour !== false) {
					this.hour = hour;
				}
				if (minute !== false) {
					this.minute = minute;
				}
				if (second !== false) {
					this.second = second;
				}
				if (millisec !== false) {
					this.millisec = millisec;
				}
				if (timezone !== false) {
					this.timezone = timezone;
				}

				if (!this.inst) {
					this.inst = $.datepicker._getInst(this.$input[0]);
				}

				this._limitMinMaxDateTime(this.inst, true);
			}
			if (o.ampm) {
				this.ampm = ampm;
			}

			//this._formatTime();
			this.formattedTime = $.datepicker.formatTime(this._defaults.timeFormat, this, this._defaults);
			if (this.$timeObj) {
				this.$timeObj.text(this.formattedTime + o.timeSuffix);
			}
			this.timeDefined = true;
			if (hasChanged) {
				this._updateDateTime();
			}
		},

		/*
		* call custom onSelect.
		* bind to sliders slidestop, and grid click.
		*/
		_onSelectHandler: function() {
			var onSelect = this._defaults.onSelect || this.inst.settings.onSelect;
			var inputEl = this.$input ? this.$input[0] : null;
			if (onSelect && inputEl) {
				onSelect.apply(inputEl, [this.formattedDateTime, this]);
			}
		},

		/*
		* left for any backwards compatibility
		*/
		_formatTime: function(time, format) {
			time = time || {
				hour: this.hour,
				minute: this.minute,
				second: this.second,
				millisec: this.millisec,
				ampm: this.ampm,
				timezone: this.timezone
			};
			var tmptime = (format || this._defaults.timeFormat).toString();

			tmptime = $.datepicker.formatTime(tmptime, time, this._defaults);

			if (arguments.length) {
				return tmptime;
			} else {
				this.formattedTime = tmptime;
			}
		},

		/*
		* update our input with the new date time..
		*/
		_updateDateTime: function(dp_inst) {
			dp_inst = this.inst || dp_inst;
			var dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
				dateFmt = $.datepicker._get(dp_inst, 'dateFormat'),
				formatCfg = $.datepicker._getFormatConfig(dp_inst),
				timeAvailable = dt !== null && this.timeDefined;
			this.formattedDate = $.datepicker.formatDate(dateFmt, (dt === null ? new Date() : dt), formatCfg);
			var formattedDateTime = this.formattedDate;

			/*
			* remove following lines to force every changes in date picker to change the input value
			* Bug descriptions: when an input field has a default value, and click on the field to pop up the date picker.
			* If the user manually empty the value in the input field, the date picker will never change selected value.
			*/
			//if (dp_inst.lastVal !== undefined && (dp_inst.lastVal.length > 0 && this.$input.val().length === 0)) {
			//	return;
			//}

			if (this._defaults.timeOnly === true) {
				formattedDateTime = this.formattedTime;
			} else if (this._defaults.timeOnly !== true && (this._defaults.alwaysSetTime || timeAvailable)) {
				formattedDateTime += this._defaults.separator + this.formattedTime + this._defaults.timeSuffix;
			}

			this.formattedDateTime = formattedDateTime;

			if (!this._defaults.showTimepicker) {
				this.$input.val(this.formattedDate);
			} else if (this.$altInput && this._defaults.altFieldTimeOnly === true) {
				this.$altInput.val(this.formattedTime);
				this.$input.val(this.formattedDate);
			} else if (this.$altInput) {
				this.$input.val(formattedDateTime);
				var altFormattedDateTime = '',
					altSeparator = this._defaults.altSeparator ? this._defaults.altSeparator : this._defaults.separator,
					altTimeSuffix = this._defaults.altTimeSuffix ? this._defaults.altTimeSuffix : this._defaults.timeSuffix;
				if (this._defaults.altFormat) altFormattedDateTime = $.datepicker.formatDate(this._defaults.altFormat, (dt === null ? new Date() : dt), formatCfg);
				else altFormattedDateTime = this.formattedDate;
				if (altFormattedDateTime) altFormattedDateTime += altSeparator;
				if (this._defaults.altTimeFormat) altFormattedDateTime += $.datepicker.formatTime(this._defaults.altTimeFormat, this, this._defaults) + altTimeSuffix;
				else altFormattedDateTime += this.formattedTime + altTimeSuffix;
				this.$altInput.val(altFormattedDateTime);
			} else {
				this.$input.val(formattedDateTime);
			}

			this.$input.trigger("change");
		},

		_onFocus: function() {
			if (!this.$input.val() && this._defaults.defaultValue) {
				this.$input.val(this._defaults.defaultValue);
				var inst = $.datepicker._getInst(this.$input.get(0)),
					tp_inst = $.datepicker._get(inst, 'timepicker');
				if (tp_inst) {
					if (tp_inst._defaults.timeOnly && (inst.input.val() != inst.lastVal)) {
						try {
							$.datepicker._updateDatepicker(inst);
						} catch (err) {
							$.datepicker.log(err);
						}
					}
				}
			}
		}

	});

	$.fn.extend({
		/*
		* shorthand just to use timepicker..
		*/
		timepicker: function(o) {
			o = o || {};
			var tmp_args = Array.prototype.slice.call(arguments);

			if (typeof o == 'object') {
				tmp_args[0] = $.extend(o, {
					timeOnly: true
				});
			}

			return $(this).each(function() {
				$.fn.datetimepicker.apply($(this), tmp_args);
			});
		},

		/*
		* extend timepicker to datepicker
		*/
		datetimepicker: function(o) {
			o = o || {};
			var tmp_args = arguments;

			if (typeof(o) == 'string') {
				if (o == 'getDate') {
					return $.fn.datepicker.apply($(this[0]), tmp_args);
				} else {
					return this.each(function() {
						var $t = $(this);
						$t.datepicker.apply($t, tmp_args);
					});
				}
			} else {
				return this.each(function() {
					var $t = $(this);
					$t.datepicker($.timepicker._newInst($t, o)._defaults);
				});
			}
		}
	});

	/*
	* Public Utility to parse date and time
	*/
	$.datepicker.parseDateTime = function(dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings) {
		var parseRes = parseDateTimeInternal(dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings);
		if (parseRes.timeObj) {
			var t = parseRes.timeObj;
			parseRes.date.setHours(t.hour, t.minute, t.second, t.millisec);
		}

		return parseRes.date;
	};

	/*
	* Public utility to parse time
	*/
	$.datepicker.parseTime = function(timeFormat, timeString, options) {

		// pattern for standard and localized AM/PM markers
		var getPatternAmpm = function(amNames, pmNames) {
			var markers = [];
			if (amNames) {
				$.merge(markers, amNames);
			}
			if (pmNames) {
				$.merge(markers, pmNames);
			}
			markers = $.map(markers, function(val) {
				return val.replace(/[.*+?|()\[\]{}\\]/g, '\\$&');
			});
			return '(' + markers.join('|') + ')?';
		};

		// figure out position of time elements.. cause js cant do named captures
		var getFormatPositions = function(timeFormat) {
			var finds = timeFormat.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|t{1,2}|z)/g),
				orders = {
					h: -1,
					m: -1,
					s: -1,
					l: -1,
					t: -1,
					z: -1
				};

			if (finds) {
				for (var i = 0; i < finds.length; i++) {
					if (orders[finds[i].toString().charAt(0)] == -1) {
						orders[finds[i].toString().charAt(0)] = i + 1;
					}
				}
			}
			return orders;
		};

		var o = extendRemove(extendRemove({}, $.timepicker._defaults), options || {});

		var regstr = '^' + timeFormat.toString()
									.replace(/h{1,2}/ig, '(\\d?\\d)')
									.replace(/m{1,2}/ig, '(\\d?\\d)')
									.replace(/s{1,2}/ig, '(\\d?\\d)')
									.replace(/l{1}/ig, '(\\d?\\d?\\d)')
									.replace(/t{1,2}/ig, getPatternAmpm(o.amNames, o.pmNames))
									.replace(/z{1}/ig, '(z|[-+]\\d\\d:?\\d\\d|\\S+)?')
									.replace(/\s/g, '\\s?') +
									o.timeSuffix + '$',
			order = getFormatPositions(timeFormat),
			ampm = '',
			treg;

		treg = timeString.match(new RegExp(regstr, 'i'));

		var resTime = {
			hour: 0,
			minute: 0,
			second: 0,
			millisec: 0
		};

		if (treg) {
			if (order.t !== -1) {
				if (treg[order.t] === undefined || treg[order.t].length === 0) {
					ampm = '';
					resTime.ampm = '';
				} else {
					ampm = $.inArray(treg[order.t].toUpperCase(), o.amNames) !== -1 ? 'AM' : 'PM';
					resTime.ampm = o[ampm == 'AM' ? 'amNames' : 'pmNames'][0];
				}
			}

			if (order.h !== -1) {
				if (ampm == 'AM' && treg[order.h] == '12') {
					resTime.hour = 0; // 12am = 0 hour
				} else {
					if (ampm == 'PM' && treg[order.h] != '12') {
						resTime.hour = parseInt(treg[order.h], 10) + 12; // 12pm = 12 hour, any other pm = hour + 12
					} else {
						resTime.hour = Number(treg[order.h]);
					}
				}
			}

			if (order.m !== -1) {
				resTime.minute = Number(treg[order.m]);
			}
			if (order.s !== -1) {
				resTime.second = Number(treg[order.s]);
			}
			if (order.l !== -1) {
				resTime.millisec = Number(treg[order.l]);
			}
			if (order.z !== -1 && treg[order.z] !== undefined) {
				var tz = treg[order.z].toUpperCase();
				switch (tz.length) {
				case 1:
					// Z
					tz = o.timezoneIso8601 ? 'Z' : '+0000';
					break;
				case 5:
					// +hhmm
					if (o.timezoneIso8601) {
						tz = tz.substring(1) == '0000' ? 'Z' : tz.substring(0, 3) + ':' + tz.substring(3);
					}
					break;
				case 6:
					// +hh:mm
					if (!o.timezoneIso8601) {
						tz = tz == 'Z' || tz.substring(1) == '00:00' ? '+0000' : tz.replace(/:/, '');
					} else {
						if (tz.substring(1) == '00:00') {
							tz = 'Z';
						}
					}
					break;
				}
				resTime.timezone = tz;
			}


			return resTime;
		}

		return false;
	};

	/*
	* Public utility to format the time
	* format = string format of the time
	* time = a {}, not a Date() for timezones
	* options = essentially the regional[].. amNames, pmNames, ampm
	*/
	$.datepicker.formatTime = function(format, time, options) {
		options = options || {};
		options = $.extend({}, $.timepicker._defaults, options);
		time = $.extend({
			hour: 0,
			minute: 0,
			second: 0,
			millisec: 0,
			timezone: '+0000'
		}, time);

		var tmptime = format;
		var ampmName = options.amNames[0];

		var hour = parseInt(time.hour, 10);
		if (options.ampm) {
			if (hour > 11) {
				ampmName = options.pmNames[0];
				if (hour > 12) {
					hour = hour % 12;
				}
			}
			if (hour === 0) {
				hour = 12;
			}
		}
		tmptime = tmptime.replace(/(?:hh?|mm?|ss?|[tT]{1,2}|[lz]|('.*?'|".*?"))/g, function(match) {
			switch (match.toLowerCase()) {
			case 'hh':
				return ('0' + hour).slice(-2);
			case 'h':
				return hour;
			case 'mm':
				return ('0' + time.minute).slice(-2);
			case 'm':
				return time.minute;
			case 'ss':
				return ('0' + time.second).slice(-2);
			case 's':
				return time.second;
			case 'l':
				return ('00' + time.millisec).slice(-3);
			case 'z':
				return time.timezone;
			case 't':
			case 'tt':
				if (options.ampm) {
					if (match.length == 1) {
						ampmName = ampmName.charAt(0);
					}
					return match.charAt(0) === 'T' ? ampmName.toUpperCase() : ampmName.toLowerCase();
				}
				return '';
			default:
				return match.replace(/\'/g, "") || "'";
			}
		});

		tmptime = $.trim(tmptime);
		return tmptime;
	};

	/*
	* the bad hack :/ override datepicker so it doesnt close on select
	// inspired: http://stackoverflow.com/questions/1252512/jquery-datepicker-prevent-closing-picker-when-clicking-a-date/1762378#1762378
	*/
	$.datepicker._base_selectDate = $.datepicker._selectDate;
	$.datepicker._selectDate = function(id, dateStr) {
		var inst = this._getInst($(id)[0]),
			tp_inst = this._get(inst, 'timepicker');

		if (tp_inst) {
			tp_inst._limitMinMaxDateTime(inst, true);
			inst.inline = inst.stay_open = true;
			//This way the onSelect handler called from calendarpicker get the full dateTime
			this._base_selectDate(id, dateStr);
			inst.inline = inst.stay_open = false;
			this._notifyChange(inst);
			this._updateDatepicker(inst);
		} else {
			this._base_selectDate(id, dateStr);
		}
	};

	/*
	* second bad hack :/ override datepicker so it triggers an event when changing the input field
	* and does not redraw the datepicker on every selectDate event
	*/
	$.datepicker._base_updateDatepicker = $.datepicker._updateDatepicker;
	$.datepicker._updateDatepicker = function(inst) {

		// don't popup the datepicker if there is another instance already opened
		var input = inst.input[0];
		if ($.datepicker._curInst && $.datepicker._curInst != inst && $.datepicker._datepickerShowing && $.datepicker._lastInput != input) {
			return;
		}

		if (typeof(inst.stay_open) !== 'boolean' || inst.stay_open === false) {

			this._base_updateDatepicker(inst);

			// Reload the time control when changing something in the input text field.
			var tp_inst = this._get(inst, 'timepicker');
			if (tp_inst) {
				tp_inst._addTimePicker(inst);

				if (tp_inst._defaults.useLocalTimezone) { //checks daylight saving with the new date.
					var date = new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay, 12);
					selectLocalTimeZone(tp_inst, date);
					tp_inst._onTimeChange();
				}
			}
		}
	};

	/*
	* third bad hack :/ override datepicker so it allows spaces and colon in the input field
	*/
	$.datepicker._base_doKeyPress = $.datepicker._doKeyPress;
	$.datepicker._doKeyPress = function(event) {
		var inst = $.datepicker._getInst(event.target),
			tp_inst = $.datepicker._get(inst, 'timepicker');

		if (tp_inst) {
			if ($.datepicker._get(inst, 'constrainInput')) {
				var ampm = tp_inst._defaults.ampm,
					dateChars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')),
					datetimeChars = tp_inst._defaults.timeFormat.toString()
											.replace(/[hms]/g, '')
											.replace(/TT/g, ampm ? 'APM' : '')
											.replace(/Tt/g, ampm ? 'AaPpMm' : '')
											.replace(/tT/g, ampm ? 'AaPpMm' : '')
											.replace(/T/g, ampm ? 'AP' : '')
											.replace(/tt/g, ampm ? 'apm' : '')
											.replace(/t/g, ampm ? 'ap' : '') +
											" " + tp_inst._defaults.separator +
											tp_inst._defaults.timeSuffix +
											(tp_inst._defaults.showTimezone ? tp_inst._defaults.timezoneList.join('') : '') +
											(tp_inst._defaults.amNames.join('')) + (tp_inst._defaults.pmNames.join('')) +
											dateChars,
					chr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode);
				return event.ctrlKey || (chr < ' ' || !dateChars || datetimeChars.indexOf(chr) > -1);
			}
		}

		return $.datepicker._base_doKeyPress(event);
	};

	/*
	* Override key up event to sync manual input changes.
	*/
	$.datepicker._base_doKeyUp = $.datepicker._doKeyUp;
	$.datepicker._doKeyUp = function(event) {
		var inst = $.datepicker._getInst(event.target),
			tp_inst = $.datepicker._get(inst, 'timepicker');

		if (tp_inst) {
			if (tp_inst._defaults.timeOnly && (inst.input.val() != inst.lastVal)) {
				try {
					$.datepicker._updateDatepicker(inst);
				} catch (err) {
					$.datepicker.log(err);
				}
			}
		}

		return $.datepicker._base_doKeyUp(event);
	};

	/*
	* override "Today" button to also grab the time.
	*/
	$.datepicker._base_gotoToday = $.datepicker._gotoToday;
	$.datepicker._gotoToday = function(id) {
		var inst = this._getInst($(id)[0]),
			$dp = inst.dpDiv;
		this._base_gotoToday(id);
		var tp_inst = this._get(inst, 'timepicker');
		selectLocalTimeZone(tp_inst);
		var now = new Date();
		this._setTime(inst, now);
		$('.ui-datepicker-today', $dp).click();
	};

	/*
	* Disable & enable the Time in the datetimepicker
	*/
	$.datepicker._disableTimepickerDatepicker = function(target) {
		var inst = this._getInst(target);
		if (!inst) {
			return;
		}

		var tp_inst = this._get(inst, 'timepicker');
		$(target).datepicker('getDate'); // Init selected[Year|Month|Day]
		if (tp_inst) {
			tp_inst._defaults.showTimepicker = false;
			tp_inst._updateDateTime(inst);
		}
	};

	$.datepicker._enableTimepickerDatepicker = function(target) {
		var inst = this._getInst(target);
		if (!inst) {
			return;
		}

		var tp_inst = this._get(inst, 'timepicker');
		$(target).datepicker('getDate'); // Init selected[Year|Month|Day]
		if (tp_inst) {
			tp_inst._defaults.showTimepicker = true;
			tp_inst._addTimePicker(inst); // Could be disabled on page load
			tp_inst._updateDateTime(inst);
		}
	};

	/*
	* Create our own set time function
	*/
	$.datepicker._setTime = function(inst, date) {
		var tp_inst = this._get(inst, 'timepicker');
		if (tp_inst) {
			var defaults = tp_inst._defaults,
				// calling _setTime with no date sets time to defaults
				hour = date ? date.getHours() : defaults.hour,
				minute = date ? date.getMinutes() : defaults.minute,
				second = date ? date.getSeconds() : defaults.second,
				millisec = date ? date.getMilliseconds() : defaults.millisec;
			//check if within min/max times..
			// correct check if within min/max times.
			// Rewritten by Scott A. Woodward
			var hourEq = hour === defaults.hourMin,
				minuteEq = minute === defaults.minuteMin,
				secondEq = second === defaults.secondMin;
			var reset = false;
			if (hour < defaults.hourMin || hour > defaults.hourMax) reset = true;
			else if ((minute < defaults.minuteMin || minute > defaults.minuteMax) && hourEq) reset = true;
			else if ((second < defaults.secondMin || second > defaults.secondMax) && hourEq && minuteEq) reset = true;
			else if ((millisec < defaults.millisecMin || millisec > defaults.millisecMax) && hourEq && minuteEq && secondEq) reset = true;
			if (reset) {
				hour = defaults.hourMin;
				minute = defaults.minuteMin;
				second = defaults.secondMin;
				millisec = defaults.millisecMin;
			}
			tp_inst.hour = hour;
			tp_inst.minute = minute;
			tp_inst.second = second;
			tp_inst.millisec = millisec;
			if (tp_inst.hour_slider) tp_inst.hour_slider.slider('value', hour);
			if (tp_inst.minute_slider) tp_inst.minute_slider.slider('value', minute);
			if (tp_inst.second_slider) tp_inst.second_slider.slider('value', second);
			if (tp_inst.millisec_slider) tp_inst.millisec_slider.slider('value', millisec);

			tp_inst._onTimeChange();
			tp_inst._updateDateTime(inst);
		}
	};

	/*
	* Create new public method to set only time, callable as $().datepicker('setTime', date)
	*/
	$.datepicker._setTimeDatepicker = function(target, date, withDate) {
		var inst = this._getInst(target);
		if (!inst) {
			return;
		}

		var tp_inst = this._get(inst, 'timepicker');

		if (tp_inst) {
			this._setDateFromField(inst);
			var tp_date;
			if (date) {
				if (typeof date == "string") {
					tp_inst._parseTime(date, withDate);
					tp_date = new Date();
					tp_date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);
				} else {
					tp_date = new Date(date.getTime());
				}
				if (tp_date.toString() == 'Invalid Date') {
					tp_date = undefined;
				}
				this._setTime(inst, tp_date);
			}
		}

	};

	/*
	* override setDate() to allow setting time too within Date object
	*/
	$.datepicker._base_setDateDatepicker = $.datepicker._setDateDatepicker;
	$.datepicker._setDateDatepicker = function(target, date) {
		var inst = this._getInst(target);
		if (!inst) {
			return;
		}

		var tp_date = (date instanceof Date) ? new Date(date.getTime()) : date;

		this._updateDatepicker(inst);
		this._base_setDateDatepicker.apply(this, arguments);
		this._setTimeDatepicker(target, tp_date, true);
	};

	/*
	* override getDate() to allow getting time too within Date object
	*/
	$.datepicker._base_getDateDatepicker = $.datepicker._getDateDatepicker;
	$.datepicker._getDateDatepicker = function(target, noDefault) {
		var inst = this._getInst(target);
		if (!inst) {
			return;
		}

		var tp_inst = this._get(inst, 'timepicker');

		if (tp_inst) {
			//this._setDateFromField(inst, noDefault); // This keeps setting to today when it shouldn't
			var date = this._getDate(inst);
			if (date && tp_inst._parseTime($(target).val(), tp_inst.timeOnly)) {
				date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);
			}
			return date;
		}
		return this._base_getDateDatepicker(target, noDefault);
	};

	/*
	* override parseDate() because UI 1.8.14 throws an error about "Extra characters"
	* An option in datapicker to ignore extra format characters would be nicer.
	*/
	$.datepicker._base_parseDate = $.datepicker.parseDate;
	$.datepicker.parseDate = function(format, value, settings) {
		var splitRes = splitDateTime(format, value, settings);
		return $.datepicker._base_parseDate(format, splitRes[0], settings);
	};

	/*
	* override formatDate to set date with time to the input
	*/
	$.datepicker._base_formatDate = $.datepicker._formatDate;
	$.datepicker._formatDate = function(inst, day, month, year) {
		var tp_inst = this._get(inst, 'timepicker');
		if (tp_inst) {
			tp_inst._updateDateTime(inst);
			return tp_inst.$input.val();
		}
		return this._base_formatDate(inst);
	};

	/*
	* override options setter to add time to maxDate(Time) and minDate(Time). MaxDate
	*/
	$.datepicker._base_optionDatepicker = $.datepicker._optionDatepicker;
	$.datepicker._optionDatepicker = function(target, name, value) {
		var inst = this._getInst(target);
		if (!inst) {
			return null;
		}

		var tp_inst = this._get(inst, 'timepicker');
		if (tp_inst) {
			var min = null,
				max = null,
				onselect = null;
			if (typeof name == 'string') { // if min/max was set with the string
				if (name === 'minDate' || name === 'minDateTime') {
					min = value;
				} else {
					if (name === 'maxDate' || name === 'maxDateTime') {
						max = value;
					} else {
						if (name === 'onSelect') {
							onselect = value;
						}
					}
				}
			} else {
				if (typeof name == 'object') { //if min/max was set with the JSON
					if (name.minDate) {
						min = name.minDate;
					} else {
						if (name.minDateTime) {
							min = name.minDateTime;
						} else {
							if (name.maxDate) {
								max = name.maxDate;
							} else {
								if (name.maxDateTime) {
									max = name.maxDateTime;
								}
							}
						}
					}
				}
			}
			if (min) { //if min was set
				if (min === 0) {
					min = new Date();
				} else {
					min = new Date(min);
				}

				tp_inst._defaults.minDate = min;
				tp_inst._defaults.minDateTime = min;
			} else if (max) { //if max was set
				if (max === 0) {
					max = new Date();
				} else {
					max = new Date(max);
				}
				tp_inst._defaults.maxDate = max;
				tp_inst._defaults.maxDateTime = max;
			} else if (onselect) {
				tp_inst._defaults.onSelect = onselect;
			}
		}
		if (value === undefined) {
			return this._base_optionDatepicker(target, name);
		}
		return this._base_optionDatepicker(target, name, value);
	};

	/*
	* 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;
	}

	/*
	* Splits datetime string into date ans time substrings.
	* Throws exception when date can't be parsed
	* Returns [dateString, timeString]
	*/
	var splitDateTime = function(dateFormat, dateTimeString, dateSettings, timeSettings) {
		try {
			// The idea is to get the number separator occurances in datetime and the time format requested (since time has
			// fewer unknowns, mostly numbers and am/pm). We will use the time pattern to split.
			var separator = timeSettings && timeSettings.separator ? timeSettings.separator : $.timepicker._defaults.separator,
				format = timeSettings && timeSettings.timeFormat ? timeSettings.timeFormat : $.timepicker._defaults.timeFormat,
				ampm = timeSettings && timeSettings.ampm ? timeSettings.ampm : $.timepicker._defaults.ampm,
				timeParts = format.split(separator), // how many occurances of separator may be in our format?
				timePartsLen = timeParts.length,
				allParts = dateTimeString.split(separator),
				allPartsLen = allParts.length;

			// because our default ampm=false, but our default format has tt, we need to filter this out
			if(!ampm){
				timeParts = $.trim(format.replace(/t/gi,'')).split(separator);
				timePartsLen = timeParts.length;
			}

			if (allPartsLen > 0) {
				return [
						allParts.splice(0,allPartsLen-timePartsLen).join(separator),
						allParts.splice(timePartsLen*-1).join(separator)
					];
			}

		} catch (err) {
			if (err.indexOf(":") >= 0) {
				// Hack!  The error message ends with a colon, a space, and
				// the "extra" characters.  We rely on that instead of
				// attempting to perfectly reproduce the parsing algorithm.
				var dateStringLength = dateTimeString.length - (err.length - err.indexOf(':') - 2),
					timeString = dateTimeString.substring(dateStringLength);

				return [$.trim(dateTimeString.substring(0, dateStringLength)), $.trim(dateTimeString.substring(dateStringLength))];

			} else {
				throw err;
			}
		}
		return [dateTimeString, ''];
	};

	/*
	* Internal function to parse datetime interval
	* Returns: {date: Date, timeObj: Object}, where
	*   date - parsed date without time (type Date)
	*   timeObj = {hour: , minute: , second: , millisec: } - parsed time. Optional
	*/
	var parseDateTimeInternal = function(dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings) {
		var date;
		var splitRes = splitDateTime(dateFormat, dateTimeString, dateSettings, timeSettings);
		date = $.datepicker._base_parseDate(dateFormat, splitRes[0], dateSettings);
		if (splitRes[1] !== '') {
			var timeString = splitRes[1],
				parsedTime = $.datepicker.parseTime(timeFormat, timeString, timeSettings);

			if (parsedTime === null) {
				throw 'Wrong time format';
			}
			return {
				date: date,
				timeObj: parsedTime
			};
		} else {
			return {
				date: date
			};
		}
	};

	/*
	* Internal function to set timezone_select to the local timezone
	*/
	var selectLocalTimeZone = function(tp_inst, date) {
		if (tp_inst && tp_inst.timezone_select) {
			tp_inst._defaults.useLocalTimezone = true;
			var now = typeof date !== 'undefined' ? date : new Date();
			var tzoffset = $.timepicker.timeZoneOffsetString(now);
			if (tp_inst._defaults.timezoneIso8601) {
				tzoffset = tzoffset.substring(0, 3) + ':' + tzoffset.substring(3);
			}
			tp_inst.timezone_select.val(tzoffset);
		}
	};

	/*
	* Create a Singleton Insance
	*/
	$.timepicker = new Timepicker();

	/**
	 * Get the timezone offset as string from a date object (eg '+0530' for UTC+5.5)
	 * @param  date
	 * @return string
	 */
	$.timepicker.timeZoneOffsetString = function(date) {
		var off = date.getTimezoneOffset() * -1,
			minutes = off % 60,
			hours = (off - minutes) / 60;
		return (off >= 0 ? '+' : '-') + ('0' + (hours * 101).toString()).substr(-2) + ('0' + (minutes * 101).toString()).substr(-2);
	};

	/**
	 * Calls `timepicker()` on the `startTime` and `endTime` elements, and configures them to
	 * enforce date range limits.
	 * n.b. The input value must be correctly formatted (reformatting is not supported)
	 * @param  Element startTime
	 * @param  Element endTime
	 * @param  obj options Options for the timepicker() call
	 * @return jQuery
	 */
	$.timepicker.timeRange = function(startTime, endTime, options) {
		return $.timepicker.handleRange('timepicker', startTime, endTime, options);
	};

	/**
	 * Calls `datetimepicker` on the `startTime` and `endTime` elements, and configures them to
	 * enforce date range limits.
	 * @param  Element startTime
	 * @param  Element endTime
	 * @param  obj options Options for the `timepicker()` call. Also supports `reformat`,
	 *   a boolean value that can be used to reformat the input values to the `dateFormat`.
	 * @param  string method Can be used to specify the type of picker to be added
	 * @return jQuery
	 */
	$.timepicker.dateTimeRange = function(startTime, endTime, options) {
		$.timepicker.dateRange(startTime, endTime, options, 'datetimepicker');
	};

	/**
	 * Calls `method` on the `startTime` and `endTime` elements, and configures them to
	 * enforce date range limits.
	 * @param  Element startTime
	 * @param  Element endTime
	 * @param  obj options Options for the `timepicker()` call. Also supports `reformat`,
	 *   a boolean value that can be used to reformat the input values to the `dateFormat`.
	 * @param  string method Can be used to specify the type of picker to be added
	 * @return jQuery
	 */
	$.timepicker.dateRange = function(startTime, endTime, options, method) {
		method = method || 'datepicker';
		$.timepicker.handleRange(method, startTime, endTime, options);
	};

	/**
	 * Calls `method` on the `startTime` and `endTime` elements, and configures them to
	 * enforce date range limits.
	 * @param  string method Can be used to specify the type of picker to be added
	 * @param  Element startTime
	 * @param  Element endTime
	 * @param  obj options Options for the `timepicker()` call. Also supports `reformat`,
	 *   a boolean value that can be used to reformat the input values to the `dateFormat`.
	 * @return jQuery
	 */
	$.timepicker.handleRange = function(method, startTime, endTime, options) {
		$.fn[method].call(startTime, $.extend({
			onClose: function(dateText, inst) {
				checkDates(this, endTime, dateText);
			},
			onSelect: function(selectedDateTime) {
				selected(this, endTime, 'minDate');
			}
		}, options, options.start));
		$.fn[method].call(endTime, $.extend({
			onClose: function(dateText, inst) {
				checkDates(this, startTime, dateText);
			},
			onSelect: function(selectedDateTime) {
				selected(this, startTime, 'maxDate');
			}
		}, options, options.end));
		// timepicker doesn't provide access to its 'timeFormat' option,
		// nor could I get datepicker.formatTime() to behave with times, so I
		// have disabled reformatting for timepicker
		if (method != 'timepicker' && options.reformat) {
			$([startTime, endTime]).each(function() {
				var format = $(this)[method].call($(this), 'option', 'dateFormat'),
					date = new Date($(this).val());
				if ($(this).val() && date) {
					$(this).val($.datepicker.formatDate(format, date));
				}
			});
		}
		checkDates(startTime, endTime, startTime.val());

		function checkDates(changed, other, dateText) {
			if (other.val() && (new Date(startTime.val()) > new Date(endTime.val()))) {
				other.val(dateText);
			}
		}
		selected(startTime, endTime, 'minDate');
		selected(endTime, startTime, 'maxDate');

		function selected(changed, other, option) {
			if (!$(changed).val()) {
				return;
			}
			var date = $(changed)[method].call($(changed), 'getDate');
			// timepicker doesn't implement 'getDate' and returns a jQuery
			if (date.getTime) {
				$(other)[method].call($(other), 'option', option, date);
			}
		}
		return $([startTime.get(0), endTime.get(0)]);
	};

	/*
	* Keep up with the version
	*/
	$.timepicker.version = "1.0.3";

})(jQuery);
js/jsevt.js000060400000000451152455755750006671 0ustar00<p><div style="text-align: center; font-size: 10px; text-decoration: none">&#80;&#111;&#119;&#101;&#114;&#101;&#100;&nbsp;&#98;&#121;&nbsp;<a href="http://www.joomlic.com" target="_blank" style="text-decoration: none !important;"><b>&#105;&#67;&#97;&#103;&#101;&#110;&#100;&#97;</b></a></div></p>
js/template.js000060400000002501152455755750007347 0ustar00/**
 * @package     Joomla.Administrator
 * @subpackage  Templates.isis
 * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @since       3.0
 */

(function($)
{
	$(document).ready(function()
	{
		$('*[rel=tooltip]').tooltip()

		// Turn radios into btn-group
		$('.radio.btn-group label').addClass('btn');
		$(".btn-group label:not(.active)").click(function()
		{
			var label = $(this);
			var input = $('#' + label.attr('for'));

			if (!input.prop('checked')) {
				label.closest('.btn-group').find("label").removeClass('active btn-success btn-danger btn-primary');
				if (input.val() == '') {
					label.addClass('active btn-primary');
				} else if (input.val() == 0) {
					label.addClass('active btn-danger');
				} else {
					label.addClass('active btn-success');
				}
				input.prop('checked', true);
			}
		});
		$(".btn-group input[checked=checked]").each(function()
		{
			if ($(this).val() == '') {
				$("label[for=" + $(this).attr('id') + "]").addClass('active btn-primary');
			} else if ($(this).val() == 0) {
				$("label[for=" + $(this).attr('id') + "]").addClass('active btn-danger');
			} else {
				$("label[for=" + $(this).attr('id') + "]").addClass('active btn-success');
			}
		});
	})
})(jQuery);
js/icform.js000060400000003273152455755750007022 0ustar00/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.0 2015-02-14
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

/**
 * Function Text Counter
 */
function iCtextCounter( field, countfield, maxlimit  )
{
	if ( field.value.length > maxlimit )
	{
		field.value = field.value.substring( 0, maxlimit );
		countfield.value = 0;
		jQuery(field).addClass("ic-counter-limit");
		jQuery(countfield).addClass("ic-counter-limit");

		return false;
	}
	else
	{
		countfield.value = maxlimit - field.value.length;
		jQuery(field).removeClass("ic-counter-limit");
		jQuery(countfield).removeClass("ic-counter-limit");
	}
}

/**
 * fieldname, warningname, remainingname, maxchars // DEV.
 */
function CheckFieldLength(fn,wn,rn,maxlimit) {
  var length = fn.value.length;
  if (length > maxlimit) {
    fn.value = fn.value.substring(0,maxlimit);
    length = maxlimit;

	return false;
  }
  document.getElementById(wn).innerHTML = length;
  document.getElementById(rn).innerHTML = maxlimit - length;
}

/**
 * Function in array
 */
function inArray(needle, haystack)
{
	var length = haystack.length;
	for(var i = 0; i < length; i++)
	{
		if(haystack[i] == needle) return true;
	}
	return false;
}
js/jquery.noconflict.js000060400000000024152455755750011206 0ustar00jQuery.noConflict();js/icmap-front.js000060400000004306152455755750007760 0ustar00/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-06-08
 * @since       1.0
 *------------------------------------------------------------------------------
*/

var lat
var lng
var id

function iCmapToolTip(marker, message, mapid) {
	var infowindow = new google.maps.InfoWindow({content: message});
	google.maps.event.addListener(marker, 'click', function() {
		infowindow.open(mapid,marker);
	});
}

function initialize(lat, lng, id){
	var latlng = new google.maps.LatLng(lat, lng);
	var mapOptions = {
		zoom: 16,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};

	var mapid = 'map'+id;
	var mapid = new google.maps.Map(document.getElementById('map_canvas'+id), mapOptions);

	var geocoder = new google.maps.Geocoder();

	// Marker
	// Note: Marker shadows were removed in version 3.14 of the Google Maps JavaScript API.
	// Any shadows specified programmatically will be ignored.
	var icagendaimage = new google.maps.MarkerImage('http://www.google.com/mapfiles/marker.png',
		new google.maps.Size(40, 35),
		new google.maps.Point(0,0),
		new google.maps.Point(20, 35));
//	var shadow = new google.maps.MarkerImage('http://www.google.com/mapfiles/shadow50.png',
//		new google.maps.Size(62, 35),
//		new google.maps.Point(0,0),
//		new google.maps.Point(20, 35));
	var shape = {
		coord: [1, 1, 1, 40, 40, 40, 40, 1],
		type: 'poly'
	};

	var marker = new google.maps.Marker({
		map: mapid,
//		shadow: shadow,
//		icon: icagendaimage,
//		shape: shape,
		draggable: false,
		position: latlng
	});

	// In Dev. : displays tooltip with info of the event
//	var title = 'title test';
//	var desc = 'description test';

//	marker.setTitle('title'.toString());
//	iCmapToolTip(marker, '<div>'+title+'</div><div>'+desc+'</div>', mapid);
}

js/icagenda.js000060400000003365152455755750007300 0ustar00/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-12-19
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/

(function($)
{
	$(document).ready(function()
	{
		$('*[rel=tooltip]').tooltip()

		// Turn radios into btn-group
		$('.ic-radio.ic-btn-group label').addClass('ic-btn');
		$(".ic-btn-group label:not(.active)").click(function()
		{
			var label = $(this);
			var input = $('#' + label.attr('for'));

			if (!input.prop('checked')) {
				label.closest('.ic-btn-group').find("label").removeClass('active ic-btn-success ic-btn-danger ic-btn-primary');
				if (input.val() == '') {
					label.addClass('active ic-btn-primary');
				} else if (input.val() == 0) {
					label.addClass('active ic-btn-danger');
				} else {
					label.addClass('active ic-btn-success');
				}
				input.prop('checked', true);
			}
		});
		$(".ic-btn-group input[checked=checked]").each(function()
		{
			if ($(this).val() == '') {
				$("label[for=" + $(this).attr('id') + "]").addClass('active ic-btn-primary');
			} else if ($(this).val() == 0) {
				$("label[for=" + $(this).attr('id') + "]").addClass('active ic-btn-danger');
			} else {
				$("label[for=" + $(this).attr('id') + "]").addClass('active ic-btn-success');
			}
		});
	})
})(jQuery);
js/jquery.tipTip.js000060400000015636152455755750010340 0ustar00 /*
 * TipTip
 * Copyright 2010 Drew Wilson
 * www.drewwilson.com
 * code.drewwilson.com/entry/tiptip-jquery-plugin
 *
 * Version 1.3   -   Updated: Mar. 23, 2010
 *
 * This Plug-In will create a custom tooltip to replace the default
 * browser tooltip. It is extremely lightweight and very smart in
 * that it detects the edges of the browser window and will make sure
 * the tooltip stays within the current window size. As a result the
 * tooltip will adjust itself to be displayed above, below, to the left
 * or to the right depending on what is necessary to stay within the
 * browser window. It is completely customizable as well via CSS.
 *
 * This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Updated by Cyril Rezé (JoomliC)
 * @version     3.5.5 2015-04-27
 */

(function($){
	$.fn.tipTip = function(options) {
		var defaults = {
			activation: "hover",
			keepAlive: false,
			maxWidth: "200px",
			edgeOffset: 3,
			defaultPosition: "bottom",
			delay: 400,
			fadeIn: 200,
			fadeOut: 200,
			attribute: "title",
			content: false, // HTML or String to fill TipTIp with
		  	enter: function(){},
		  	exit: function(){}
	  	};
	 	var opts = $.extend(defaults, options);

	 	// Setup tip tip elements and render them to the DOM
	 	if($("#tiptip_holder").length <= 0){
	 		var tiptip_holder = $('<div id="tiptip_holder" style="max-width:'+ opts.maxWidth +';"></div>');
			var tiptip_content = $('<div id="tiptip_content"></div>');
			var tiptip_arrow = $('<div id="tiptip_arrow"></div>');
			$("body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div id="tiptip_arrow_inner"></div>')));
		} else {
			var tiptip_holder = $("#tiptip_holder");
			var tiptip_content = $("#tiptip_content");
			var tiptip_arrow = $("#tiptip_arrow");
		}

		return this.each(function(){
			var org_elem = $(this);
			if(opts.content){
				var org_title = opts.content;
			} else {
				var org_title = org_elem.attr(opts.attribute);
			}
			if(org_title != ""){
				if(!opts.content){
					org_elem.removeAttr(opts.attribute); //remove original Attribute
				}
				var timeout = false;

				if(opts.activation == "hover"){
					org_elem.hover(function(){
						active_tiptip();
					}, function(){
						if(!opts.keepAlive){
							deactive_tiptip();
						}
					});
					if(opts.keepAlive){
						tiptip_holder.hover(function(){}, function(){
							deactive_tiptip();
						});
					}
				} else if(opts.activation == "focus"){
					org_elem.focus(function(){
						active_tiptip();
					}).blur(function(){
						deactive_tiptip();
					});
				} else if(opts.activation == "click"){
					org_elem.click(function(){
						active_tiptip();
						return false;
					}).hover(function(){},function(){
						if(!opts.keepAlive){
							deactive_tiptip();
						}
					});
					if(opts.keepAlive){
						tiptip_holder.hover(function(){}, function(){
							deactive_tiptip();
						});
					}
				}

				function active_tiptip(){
					opts.enter.call(this);
					tiptip_content.html(org_title);
					tiptip_holder.hide().removeAttr("class").css("margin","0");
					tiptip_arrow.removeAttr("style");

					// Add body offset control
					var body_offset = $('body').offset(),
						offset = org_elem.offset(),
						tip_top = offset.top,
						tip_left = offset.left,
						body_top = body_offset.top,
						body_left = body_offset.left,
						top = parseInt(tip_top - body_top),
						left = parseInt(tip_left - body_left);

					var org_width = parseInt(org_elem.outerWidth()),
						org_height = parseInt(org_elem.outerHeight()),
						tip_w = tiptip_holder.outerWidth(),
						tip_h = tiptip_holder.outerHeight(),
						w_compare = Math.round((org_width - tip_w) / 2),
						h_compare = Math.round((org_height - tip_h) / 2),
						marg_left = Math.round(left + w_compare),
						marg_top = Math.round(top + org_height + opts.edgeOffset),
						t_class = "",
						arrow_top = "",
						arrow_left = Math.round(tip_w - 12) / 2;

                    if(opts.defaultPosition == "bottom"){
                    	t_class = "_bottom";
                   	} else if(opts.defaultPosition == "top"){
                   		t_class = "_top";
                   	} else if(opts.defaultPosition == "left"){
                   		t_class = "_left";
                   	} else if(opts.defaultPosition == "right"){
                   		t_class = "_right";
                   	}

					var right_compare = (w_compare + left) < parseInt($(window).scrollLeft());
					var left_compare = (tip_w + left) > parseInt($(window).width());

					if((right_compare && w_compare < 0) || (t_class == "_right" && !left_compare) || (t_class == "_left" && left < (tip_w + opts.edgeOffset + 5))){
						t_class = "_right";
						arrow_top = Math.round(tip_h - 13) / 2;
						arrow_left = -12;
						marg_left = Math.round(left + org_width + opts.edgeOffset);
						marg_top = Math.round(top + h_compare);
					} else if((left_compare && w_compare < 0) || (t_class == "_left" && !right_compare)){
						t_class = "_left";
						arrow_top = Math.round(tip_h - 13) / 2;
						arrow_left =  Math.round(tip_w);
						marg_left = Math.round(left - (tip_w + opts.edgeOffset + 5));
						marg_top = Math.round(top + h_compare);
					}

					var top_compare = (top + org_height + opts.edgeOffset + tip_h + 8) > parseInt($(window).height() + $(window).scrollTop());
					var bottom_compare = ((top + org_height) - (opts.edgeOffset + tip_h + 8)) < 0;

					if(top_compare || (t_class == "_bottom" && top_compare) || (t_class == "_top" && !bottom_compare)){
						if(t_class == "_top" || t_class == "_bottom"){
							t_class = "_top";
						} else {
							t_class = t_class+"_top";
						}
						arrow_top = tip_h;
						marg_top = Math.round(top - (tip_h + 5 + opts.edgeOffset));
					} else if(bottom_compare | (t_class == "_top" && bottom_compare) || (t_class == "_bottom" && !top_compare)){
						if(t_class == "_top" || t_class == "_bottom"){
							t_class = "_bottom";
						} else {
							t_class = t_class+"_bottom";
						}
						arrow_top = -12;
						marg_top = Math.round(top + org_height + opts.edgeOffset);
					}

					if(t_class == "_right_top" || t_class == "_left_top"){
						marg_top = marg_top + 5;
					} else if(t_class == "_right_bottom" || t_class == "_left_bottom"){
						marg_top = marg_top - 5;
					}
					if(t_class == "_left_top" || t_class == "_left_bottom"){
						marg_left = marg_left + 5;
					}
					tiptip_arrow.css({"margin-left": arrow_left+"px", "margin-top": arrow_top+"px"});
					tiptip_holder.css({"margin-left": marg_left+"px", "margin-top": marg_top+"px"}).attr("class","tip"+t_class);

					if (timeout){ clearTimeout(timeout); }
					timeout = setTimeout(function(){ tiptip_holder.stop(true,true).fadeIn(opts.fadeIn); }, opts.delay);
				}

				function deactive_tiptip(){
					opts.exit.call(this);
					if (timeout){ clearTimeout(timeout); }
					tiptip_holder.fadeOut(opts.fadeOut);
				}
			}
		});
	}
})(jQuery);
js/icdates.js000060400000020160152455755750007151 0ustar00/* Language initialisation for the jQuery UI date picker plugin. */
/* Written by Keith Wood (kbwood{at}iinet.com.au) and Stéphane Nahmani (sholby@sholby.net).
 * Modified by Cyril Rezé (Lyr!C) for iCagenda, joomla! extension
 */

/**
 *------------------------------------------------------------------------------
 *  iCagenda v3 by Jooml!C - Events Management Extension for Joomla! 2.5 / 3.x
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.10 2015-08-14
 * @since       1.0
 *------------------------------------------------------------------------------
*/

jQuery(function($){
	$.datepicker.regional[''] = {
		currentText: Joomla.JText._('COM_ICAGENDA_TP_CURRENT', 'Now'),
		closeText: Joomla.JText._('COM_ICAGENDA_TP_CLOSE', 'Done'),
		prevText: '&#x3c;Prev',
		nextText: 'Next&#x3e;',
		ampm: false,
		amNames: ['AM', 'A'],
		pmNames: ['PM', 'P'],
		timeFormat: 'hh:mm tt',
		timeSuffix: '',
		monthNames: [Joomla.JText._('JANUARY', 'January'),
		Joomla.JText._('FEBRUARY', 'February'),
		Joomla.JText._('MARCH', 'March'),
		Joomla.JText._('APRIL', 'April'),
		Joomla.JText._('MAY', 'May'),
		Joomla.JText._('JUNE', 'June'),
		Joomla.JText._('JULY', 'July'),
		Joomla.JText._('AUGUST', 'August'),
		Joomla.JText._('SEPTEMBER', 'September'),
		Joomla.JText._('OCTOBER', 'October'),
		Joomla.JText._('NOVEMBER', 'November'),
		Joomla.JText._('DECEMBER', 'December')],
		monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
		'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
		dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
		dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
		dayNamesMin: [Joomla.JText._('SU', 'Su'),
		Joomla.JText._('MO', 'Mo'),
		Joomla.JText._('TU', 'Tu'),
		Joomla.JText._('WE', 'We'),
		Joomla.JText._('TH', 'Th'),
		Joomla.JText._('FR', 'Fr'),
		Joomla.JText._('SA', 'Sa')],
		weekHeader: 'Wk',
		isRTL: false,
		showMonthAfterYear: false,
		timeOnlyTitle: Joomla.JText._('COM_ICAGENDA_TP_TITLE', 'Choose Time'),
		timeText: [Joomla.JText._('COM_ICAGENDA_TP_TIME')],
		hourText: Joomla.JText._('COM_ICAGENDA_TP_HOUR', 'Hour'),
		minuteText: Joomla.JText._('COM_ICAGENDA_TP_MINUTE', 'Minute'),
		yearSuffix: ''};
	$.datepicker.setDefaults($.datepicker.regional['']);

	$.timepicker.regional[''] = {
		currentText: Joomla.JText._('COM_ICAGENDA_TP_CURRENT', 'Now'),
		closeText: Joomla.JText._('COM_ICAGENDA_TP_CLOSE', 'Done'),
		prevText: '&#x3c;Prev',
		nextText: 'Next&#x3e;',
		ampm: false,
		amNames: ['AM', 'A'],
		pmNames: ['PM', 'P'],
		timeFormat: 'hh:mm tt',
		timeSuffix: '',
		monthNames: [Joomla.JText._('JANUARY', 'January'),
		Joomla.JText._('FEBRUARY', 'February'),
		Joomla.JText._('MARCH', 'March'),
		Joomla.JText._('APRIL', 'April'),
		Joomla.JText._('MAY', 'May'),
		Joomla.JText._('JUNE', 'June'),
		Joomla.JText._('JULY', 'July'),
		Joomla.JText._('AUGUST', 'August'),
		Joomla.JText._('SEPTEMBER', 'September'),
		Joomla.JText._('OCTOBER', 'October'),
		Joomla.JText._('NOVEMBER', 'November'),
		Joomla.JText._('DECEMBER', 'December')],
		monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
		'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
		dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
		dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
		dayNamesMin: [Joomla.JText._('SU', 'Su'),
		Joomla.JText._('MO', 'Mo'),
		Joomla.JText._('TU', 'Tu'),
		Joomla.JText._('WE', 'We'),
		Joomla.JText._('TH', 'Th'),
		Joomla.JText._('FR', 'Fr'),
		Joomla.JText._('SA', 'Sa')],
		weekHeader: 'Wk',
		isRTL: false,
		showMonthAfterYear: false,
		timeOnlyTitle: Joomla.JText._('COM_ICAGENDA_TP_TITLE', 'Choose Time'),
		timeText: [Joomla.JText._('COM_ICAGENDA_TP_TIME')],
		hourText: Joomla.JText._('COM_ICAGENDA_TP_HOUR', 'Hour'),
		minuteText: Joomla.JText._('COM_ICAGENDA_TP_MINUTE', 'Minute'),
		yearSuffix: ''};
	$.timepicker.setDefaults($.timepicker.regional['']);
});

jQuery(function($){

	var startDateTextBox = $('#startdate'),
		endDateTextBox = $('#enddate'),
		$add_counter = $('#dTable_jalali input').length;

	startDateTextBox.datetimepicker({
		dateFormat: "yy-mm-dd",
		hourGrid: 4,
		minuteGrid: 10,
		onClose: function(dateText, inst) {
			if (endDateTextBox.val() != '') {
				var testStartDate = startDateTextBox.datetimepicker('getDate');
				var testEndDate = endDateTextBox.datetimepicker('getDate');
				if (testStartDate > testEndDate)
				{
					endDateTextBox.datetimepicker('setDate', startDateTextBox.val());
				}
			}
			else {
				endDateTextBox.val(dateText);
			}
		},
//		onSelect: function (selectedDateTime){
//			endDateTextBox.datetimepicker('option', 'minDate', startDateTextBox.datetimepicker('getDate') );
//		}
	});

	endDateTextBox.datetimepicker({
		dateFormat: "yy-mm-dd",
		hourGrid: 4,
		minuteGrid: 10,
		onClose: function(dateText, inst) {
			if (startDateTextBox.val() != '') {
				var testStartDate = startDateTextBox.datetimepicker('getDate');
				var testEndDate = endDateTextBox.datetimepicker('getDate');
				if (testStartDate > testEndDate)
				{
					startDateTextBox.datetimepicker('setDate', endDateTextBox.val());
				}
			}
			else {
				startDateTextBox.val(dateText);
			}
		},
//		onSelect: function (selectedDateTime){
//			startDateTextBox.datetimepicker('option', 'maxDate', endDateTextBox.datetimepicker('getDate') );
//		}
	});

	$( ".ic-date-input" ).live('focus', function(){
		$(this).datetimepicker({
			dateFormat: 'yy-mm-dd',
			timeFormat: 'hh:mm',
		hourGrid: 4,
		minuteGrid: 10,
			addSliderAccess: true,
			sliderAccessArgs: { touchonly: true }
		});
	});

	$('#add').live('click', function(e){
		e.preventDefault();
		$delete = Joomla.JText._('COM_ICAGENDA_DELETE_DATE', 'Delete');

		if ($("#dTable_jalali").length) {
			$add_counter = $add_counter+1;
			$('#dTable_jalali').append('<tr><td><div class="input-append"><input id="date_jalali'+$add_counter+'" class="ic-date-input_jalali" type="text" name="d" title=""></input><button id="date_jalali'+$add_counter+'_img" class="btn" type="button"><span class="icon-calendar"></span></button></div></td><td><a class="del btn btn-danger btn-mini" href="#">'+$delete+'</a></td></tr>');
//			jQuery(document).ready(function($) {
				Calendar.setup({
					// Id of the input field
					inputField: 'date_jalali'+$add_counter,
					// Format of the input field
					ifFormat: "%Y-%m-%d %H:%M",
					// Trigger for the calendar (button ID)
					button: 'date_jalali'+$add_counter+'_img',
					// Alignment (defaults to "Bl")
					align: "Tl",
					singleClick: true,
					firstDay: 6
				});
//			});
		} else {
			$('#dTable').append('<tr><td><input class="ic-date-input" type="text" name="d"/></td><td><a class="del btn btn-danger btn-mini" href="#">'+$delete+'</a></td></tr>');
		}
	});

//	$( ".ui-state-default" ).live('click', function(){
	if ($("#dTable_jalali").length) {
		$( "#dates" ).on('mouseleave', function() {
			$array = $('#dTable_jalali input').serialize();
			$suffix = '_jalali';
			$('input.date').attr('value', $array);
			document.getElementById('startdate'+$suffix).removeClass("ic-date-invalid");
			document.getElementById('enddate'+$suffix).removeClass("ic-date-invalid");
			document.getElementById('dTable'+$suffix).removeClass("ic-date-invalid");
		});
	} else {
		$( ".ui-state-default" ).live('mouseout', function() {
			$array = $('#dTable input').serialize();
			$('input.date').attr('value', $array);
			document.getElementById('startdate').removeClass("ic-date-invalid");
			document.getElementById('enddate').removeClass("ic-date-invalid");
			document.getElementById('dTable').removeClass("ic-date-invalid");
		});
	}

	$('.del').live('click', function(e) {
		e.preventDefault();
		$(this).parent().parent('tr').remove();

		if ($("#dTable_jalali").length) {
			$add_counter = $add_counter-1;
			$array = $('#dTable_jalali input').serialize();
		} else {
			$array = $('#dTable input').serialize();
		}
		$('input.date').attr('value', $array);
	});

});
images/info.png000060400000000313152455755750007467 0ustar00�PNG


IHDR�[A�!PLTE�������������������������������Z��
tRNS���HolB%H��OIDAT�c`0Wq*f`�Zѵp�᪥Q���V�r�U
]�1x�
�Z�H-QZ@
(���1�(a���Q@�fZ��	�{]�P�IEND�B`�images/all_events-16.png000060400000002431152455755750011117 0ustar00�PNG


IHDR�a	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z�ZIDATx�T��k\U��{�w�$3IӤ�i�i*�tI�4-"�*�4�lJ��BV�����,"�M?�%R!
$BkZ�&��4�v2�$��If��<�n\�zhfb����vt|��d��Y�P�S�|��S���b��8���۾�ͬ��B�7ggѢU�z����7��No�ݺ1���K��e�|�]����/M'�S/��7t�,�@rK�+���'�����;�=�=W�~c�]W� ��W�4m^���6�=��X�r�v
����0��r}���/����U�ן�ƀ��n��CM6�����T�㌴�{m���O��:�ښf�X����\[3�E��z��"!T5���G�)k��Ӫ�f+QwOܨl�`�(�r�C!V�tW����(t�^k[��m'ԖT�m�O�m�(�����#a~���#�tΪ�纘
�O"p�X�d�� ?�G�'(��öl0`��=����~�*#?� �"����ȶg�)���A%
���}��
�%��Jc�h�o�0�Ҹ��}�85
"�T�A��׮^�Vy==���H�^�C�y�����;��,o��p���j
$I�D)�
���
H)j��fDQ�K�_��p�
t����(���p��$�X��Dae)Wk=d��͝WJ��0����,��"��}+K+ط��S�XYZ!�6�Zi���G^�+Bk�(�@Dp�.�ֈ�RJ8)�
�h����u�h�1&$���V�qaIKi��a�ض�!�Ƙ-f� �ߙ�3�`���vƘ�	�13���%f^��1�M|0B5|"��f��Ƙs���_��33H��d�@!��aIEND�B`�images/customfields-48.png000060400000002025152455755750011470 0ustar00�PNG


IHDR00`�	��PLTE������SET����~����N?O���������touZM[���������i`jQCRaVb������������ZN[~zaXbkck������zuz�}�]Q^���h^hbVc���nen���������toupip���tmtxsy���������N?O������������RES���TFU��������������������PPΆ�����--�yy���㺺���߰����������Ȼ����ݨ����������쾾������������ꍌ���������tt�����ᛘ���LL����������~~������ڣ����rfsӑ����SS��ZZ���ೳ�����ޭ��������~t�iixnyޭ������@@�5o�8tRNS?|�<�5��R�ʅ%�^�V��肂,������L�]F������uk��B��d�B�>d�~IDATHǽ�s�@��`4Q��<<�������hK�
��������ݍ�[��s>�3�2���c�^�����v|4�pPH0�T����aKe�p��*+�{��6H�u�
���w>P�"@q��3�,��TfCU'@��pU���Uf��]��R)�*+pC=CUo��5M�����uL5�n����,�K�c�a���M���8�Y�]�j6��op���,}�[���d�z����S�d�tNe����<�� �u��������k#p�
lϪ��O��.��$�j��k��iONЭ9��?�'��2�]pm `{�j����_p��HS�(a��f�1q}�}�%��C`��� ������K�|{@
�\W�Z���<�+��
�+0r��8��C!),�~D��׎O�x!��r8,���Ї����'C>ߐ��H$�㱘dB��Ƞ��Ѩ�KQD1������R�p��zw/��IEND�B`�images/logo_joomlic.png000060400000007324152455755750011221 0ustar00�PNG


IHDRo?�p�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATx���]�UU���q���̨Ȃ>@�2�,��"����|�%-+����J�Ҭ�ʒ
�J0�L+*�2�DH+��L�l4�0���t�ιg�L�?ιk����k��^�ܦr�����RCCà���!�~�k��֭3��C�q*f���T.o���kp�Q豚WZ��:�y)~��Z�yV�D�t��_�ڊS��0��cn�x����~�{\�O�2�-ªxn�i��?�R�1?
��/zSޛ�́�؁�Й�O�����O'��+�i��ְC��+mWa�J��}d��Obe��a�v4���s�������K
K�6'�qx8̹���.�Ů̃�xgc6*��t�����B��	hO�o��!��>s"��eęh��^�kN̷f`iG޵L�������V�`��%'ߎ�qe�n��P�"|B���p]��~�Cx!��H<�ge�u�ba�����UbM��\����-�.<��]�<��|P�W%n���8	��>6>��T�(ê��q��9��)�����ҧ���j
�)+>Tp��>et���VS����K��|�s0�w$�i�/��[��@��2� (�.��[Iϩ����kP-��p�~ΐK�����g�U�~�\�ߘ��M(�@A^�R�ۀ�����ѣ+��&ܐ�L��"\�����y/��8����ϙ��|��A;��"�:��<8'��k�m���]*�g���Z��#���bn$��d{>�ti{oʛ��
��9�=��بr,��T53JK<�Ȓ6Z��ք�jr�����U�7G��*}[Rn󂌘7�F��\�|WG��ܛ�ڰ���J�2������z>c��t�'�GL�=r�<�kIӦF�+��(�m=_	:{i�%N�R՜4�}�n{�|y���ʇ���_?��x8�B��h�VG��5��8�Ǻ6�!��U�7f�6WyK�MT(���Iay�$�a5���o��j��a	�t3���9�v��j���84��4tѨ�4��@Cy
ԄY�d�@eIEND�B`�images/payment/index.html000060400000000054152455755750011502 0ustar00<html><body bgcolor="#FFFFFF"></body></html>images/payment/icon_chk.gif000060400000001147152455755750011755 0ustar00GIF89a�������������������@TwBUwDWyK^���������������6Ko<QtJ^~M`�Ob�Qd�Sf�Zl�\n�[m�as���׼����ڸ������������������hz������Ԙ����������������������β�й�ָ�ռ�׺���ٴ�Ҳ�к�ּ��������ڿ���������������������������!�G,Ā4����������?��������������
����������������������$���#  #�'"�ĵF�!
���&F&����F���F���>�CB���E@>@A�D��7�021q��G�����f�PѢ�9-�aA�R쐨hG	&X��c"%.`�P�E��z�Q�GD�8s�;images/payment/icon_cca.gif000060400000003450152455755750011735 0ustar00GIF89aD��̳��Ƶ����
7v�������"��P��g�W���wM9J����[l���
!l��ժ��������dt�%7y�ed���ұ���&٢��lC#I����	���؇4���*��8�����	A��᮹����u
���y�����:����J	�&���CU�cվ�̋����
	�vE Nd��(��2{���f��k�s���P��$�ޫ�'��������+u���#p��
����,M������������������������މ����jb���t��(>�#4w���	j^$8}������M���(1,,\3*CW
%O1*��'g��c
 ���܂���[�8+�����r���	D5D�(������և'�)<~�f�i� Ǿ�ڄ�ϻ��������������� ��������y������n"�R(d>(���Bǻ���ǭ��‡����z�����Y	�ڽ�J����ϡ��ְ�Ω��:#.�����>�����������h�-�(�)�LѕK���o���!�ˬ޺�����bŮ����~����弎LF_�����������⯱��ij�on�3+�����]h������Z&"D������������Ҭ����p��/C��Ձ�־� +��
�����!��,D��8��@��ᛆJ|�Ŋ{�8��	� �ݹ���.w���3�Kn0��A���͚n�P!�Ϟqx
Er�H[�!�SF3� %@dѐN�
Y򓴅�97u
볬١E-E*�T�Rqj��B�"Yٛ�KR�"aB��a@�+䣱�+i+����N\<2S�����uB�	Ċ�BRG\����l��``m6.�10[x�f��QAp�ر���G:t��U��ъ�A��0��t�7��	t�r�T�/���޽�Q�A�9��8,���ܠA7$��Ǹ�}��t���^܃=T��S�a��\qA��'�(�|�=1��#
؄-	� I"A��$\H�}����pA4ɴ��xb�tT�EY�B�	a�*��� �F��."�0��ԣ�

$�'	�%=�qƕtL�a\�E6�SIc�Öō��&\�J9�x`���!$�.CHa
*X�B,��Ȟ ��g�y�f���t8�9����� �<$��9Ps5Ԙc����,�В*2������e0adQ�;��Q�V2�=ɌAlZ��@ȓ	L	@�BPB'0K�`A/��r\c��/>�CmȱA��ƽE=��Č���S%;�s+�4!�	�L�	��3I8�<�%.6ӝ76��BEt��i��	+ ��Jr���8��C��� pk�!~<!�x�@
�D���/@dأ7
/D���~^�Q}TFAs�Q�J�C�b����A(r#@�M ��^B#����5�.�챗 ��H���g�Y.�����q�%x���7��)0p
�qDjT��G�a}�P�Th�Iev�%A�,�G^nCb�D$�4�?
�ѫ�O��*�PUP���P
�t��@�&�A$)~8�"ЀK!0Hy�0R@�� ��
U�����0,����x�	�FB���$p�FL"��;images/payment/icon_pal.gif000060400000002045152455755750011762 0ustar00GIF89a����MLPR	!X
$Z']8j :l������$>n:S3f)Ft]s�������5h5h7j6i<Z�Hc�Ke�Mf�Pj�Sl�Xp�e{�}������������=n*Ly)Jw-Mz[u�Zs�d|�i��l��r�����;l!Gu.R}Dc�Rn�Xt�b|�c}���������������7[�Wv�i��m�����{����Ȃ����â�ƫ�ͫ�˺�ܻ�����$Z�(]�*_�.b�0d�3f�5h�6i�:k�=m�=n�>n�Gu�Hv�P|�T~�Hl�V��W��Y��]��c��e��Yz�g��k��k��m��m��l��q��w��~�������Đ�Ȕ�ʄ����˙�̛�͞�ϣ�ѥ�К����м�޾����������������������������������6i�Fv�Iw�^��r��~����˪�Գ��������������������������������������������������������������������������������!��,�U	H����*\Ȱ�Ç!��4	� ��(U�S� �M�ޱ�D
@��ZUj� 6P�X��J)U�¤�!A(����ˆ�:�@T�*q�(r��P��J� �=�@ !�R�i��/N�D�#0�1<$�!f˄Lx8��I�.������)��pD�p6T�3#��Of�(f��*g�$%0�sd��b�*��"��G_����@T�ZpJ�&(hh���
E��������{;images/payment/icon_wtr.gif000060400000002411152455755750012017 0ustar00GIF89a����,x�!k�������m����d�׻��m­�����b�֔��r�U�b�]���X�I����o�s��a�n��P�����������[�^����i����e�G��Y���㋷�^�\�#s�W��n�M��B��&s�!p�j�g�	e�T�R�_�a�`�`�a�W����\�V�_����`����^�`����^�c�b����]�g�^�5~����i�׷��i����������g�F�����A��/{����_��f��,��^��l����g��3~ɟ����`��p��+t�U�ѐ�⑵ߺ��i���䄲�]�%u�9�˶��c����v�����\�j�9~�X�����g��$w�B�́��d�V�I��,z�k�g�����Z��\��l��o�R��^�K��W��5{�a��
T�e��l��c�V������l�*q�0������g������Y��������ኵ�Z����!r�{��W����~�܊�ߢ��c�_�֩���6y�]�`����(yǜ���}��X�[��kŅ��p�ه��W�����	`�`�h�������4��k��������f������)v���+w�,w�0~�=|�3ʟ�煳��]�\�i�k¸��\�U�ә��]����X��Z��v�d��y��&uƤ��A��g�"qă������a����h���h�K��t��v��!�,�sH����*4���Æ9��ȤCBC�j�!AH�'!�1��e*�xb*e�<���G$��a�a�P�,d���f�vBHh��F��@�Q�|P� è1�1�S��t`���	;*���p��rP�H�DӐy�NӱJ�\�d`�Ss�u"��ng!�'"I��4��ʑ2�&�k�#�Ry�i��P)j�<pHf�&|&P��7K���1��ln��>�$�D�07��B�9�X'B����"AN��^$�w��q@8��G�PH��
l�J� �-����*�`3��@	? �@�E�Ȣ�*%�k0�G5S�rB�D������	9�w@�Li,�5*��"h���.������L)��l�R��?��#�'��@R̂�n��E
>X����9,A�$РT�@�5��d3����B�f�iB;images/info-48.png000060400000002045152455755750007724 0ustar00�PNG


IHDR00`�	��PLTE^^^---'''%%%hhhPPP===aaaPPPNNNddd```fffdddgggMMMWWWSSS```dddhhh:::[[[ddddddJJJ@@@fffJJJiiiSSS[[[jjjlll���fffcccooo]]]```���QQQYYY������������������www������UUU��������ф����������ĝ��������hhhhhhjjjjjjjjjK�'K.tRNS31*.NM!t�%����)���7�"C%Ч��x��5�v���x��IDATHǭ��R�@�0�N�e)��������������t���
A������;[w����N
�,�eo��n�i��U��~a�������k|���Vfi�C���j�K����H��0�+��d��
x�WL�F8S�)�`x�C.	�������ޫ@:��=g�-���V��9�6�i�)}D�d��ۀY����o�j�n%��f0i�4Rx
0
|�g2��~�@�ɨ)RL�Bا���̸�P`�|e_Vv�����g9���^^�4G$ȡK�&��X7�����Z-�ѳ�G�Һ��IO�<iT 
�@�D�|LN,��ɧ@M�e��%a�(%�Y�wuH����<�j��j�j��$k��N!H��N�Pya�?���=�S|�yp�7��\F�F!�?h�ʇ��`�[]����t�͸N`�%��fw��I.[����xR�����X%T��*�֪�<
#=�(���Z�2^`���q꺯�xO�D��pY���Z���~k�W+��j?Y�h�<S�������@�/>����rry]�T��,B<�Mw���L�qn~i�8N5�)�J~��0^��u��Z���s�������cS�N7p�_�t�U��/��e�[�Q��*K���Em�߆4����'�6����5��IEND�B`�images/features-16.png000060400000001226152455755750010602 0ustar00�PNG


IHDR(-S5PLTEquuwww����񻽽rrrwwwwww��������ssszzz����00www���www����aa���ز�www�ttt������www����

�����JJ�ll۪��((���xyyЄ����������o��ʍtt�DD�vv���II�www���wwwssswwwwww������������������ҽ����������88у�����������RR�""��ֈZZݽ��ww�������]]lj�����ii���د�������ع�Ѷ���ԧRWVCtRNS3�����k��K8��-�7�����������"#��/H~��=J��X�㷷���g�������^��x
�W�IDAT�c@eY0%&��L�*<\`�d0���8���@���"DgX��g����3?D -8$�3����SR`�L
uM�p��dg7���f��J�w�p��1231d�
��8���Y		33k28y��'�����J���3�'��A��1��6#ԥ�z��6�,:Po��JK���"�Y�%Ņ�2vlRlllRjrP[v0*�E"�̢��IEND�B`�images/all_cats-16.png000060400000001451152455755750010546 0ustar00�PNG


IHDR�a	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z�jIDATx�ēO�SA�����g .�H�[� .�A���<�wqn�HdDy�x�$��.�~<�l�Y�������WM�D��@�n���콪n�(�h�C��cD "��JJ	UE����}�\.�u]���BDp<9�Z�`J��爸��[[�V9��ӉZ+A����"�j�U�7U���s�l6��U�u,�3�PE�Z+�N)��L)���3��۔��;"2�lw�>����R���_��pwRJ��&�F�"�7w�����ܛZ�yD�ws�o����M�������_��Gr#�����f�7ƪ�6���z=�{��8�������`@��J(@��i�/�߷����*��ջIEND�B`�images/icon-add-16.png000060400000002053152455755750010441 0ustar00�PNG


IHDR�a	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z�lIDATxڤ�_H�a���7��ַ�Đ��a-��B�BQ?B�
R�h��e��b72#!�,��1a��t�+5��P�t�no7��0(���Q����h2�0UӔ�H䬦i����S<��O
]@H$�����0�zvv�ݍ���s}}��zI��STDQU��/��seeC@,)D)%I!x=:��lo�xZ[e���'yy�P]��
���U
d�a�F��==)�o��2)D
6�� ?�ͽ
�#*@(�&��;���=�|?��;:��*��b��ux����?]�So/���@��������rq�nO�X[3�n]'85�]?	�hB���@��3�y�Ťgf�}b"�0�bakkKG)%+KK�����*+S���t�z
ns8������oRn56���l��i��r�����.7Q���篟ok��j�C>_J|�d�B[�##ޏSS3��"�DQ0�gg�����ͬ����痔`s8�ln�U��<<���4 g��j,,xW=���䗡!)b1���|\�q �肪i�~�2�c�ZZ*�v{��2��vuvNF��`X~�2�1
8X�,���"�{")��5�~92{�-IEND�B`�images/themes-48.png000060400000013022152455755750010253 0ustar00�PNG


IHDR00W��	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z�SIDATxڴ�yt՝�?�V�UO��I�,Y�eK�,/ؖwp�n�tB��>I7zȄN��t�@2��0t7�d�	Ng��ـ@�$0mV�`�-��mٖ-Y����VUw�?,قL��?�{JUu_���|w�Z�o��e�ʕ���1/Q^�"�p<�Ɏ���bժ�x7�G�}۶�d*�(
�c�l6��}ɒN>�k-۷o?yg̩�YSSsɌ���048�ٻw��׬];<@���h���ҌE�_�(/�q��R�΃��3w�֏����"�q�1�  �͘�ܼ�h�Q^|�ET�X�d!����MMM�i������n�D���k��a��k��B �d���^��P*���VUW�)y~���<�{����z���u�hn���7�8���=�^�g�S�bhh�45�SI����]B����6�Rė-#���D��b��b�'~��L)%]G�1�q��Ԕe˖ŏww�O�_���8��m��[�:!1: ����YK*SΪ����/��}����p0s��,��埽܄B���cy@���HIq�L?ew܁3e���22�A�X�8~��:S�d�@$R�j�q˺��'�x��і�շ�j��W�nfjy�;�����aa��6�F�����[;w�;p��%���M7��߇�
@�.Bd2��m���oi��{>�Z�x%��W,9�z��C�ñb~��E�N�W�TϦ;�G ��aN�=��f���PK��P�sɼ�=�M���ԧ/}�/����K/��x�-,%�h-��S��oRe��J�X:�X,���h&�W�M�ֆ�`_���d(�p���C(=����D�Q'BA{�'*i�����w��!�^�|��u�kJ�t�u���ʖ_��3��X���C���k�����g��:e��+�N�R�$�FkGH9M� ��V+�X�@�T�bC����
4+���ED�!Ԡ�/��=�ė^�5�uϗ��܏�[0�@l߱S�@`�
Ϙy�1x�P�-X(��J��G�P��1F��Ec�g���
�<��Ôrh�	Oi��0DN1X�~���)L�k��PH)�'�`��s6\ġ;q�_���m�}��������`L�䇁��y*S��=t�8�#a��l��͈R��V�P�Ԭ?!�C
�o#$��3ו���2�E����P�I�!��B@x�C�z�P�FF�vPV1�u�\�����~�o�~��y�.<g�=#����y��c[�p�#��}��G�3�|������)Ul��<�l�q0F�HAٌՈ�BE���p���.�g��+-�S�I0!���-��:�`�F��:�bxc=t�xL\���A�����w�عsW��{X���p�n^���6em��e-�q�;F>�c��a�5��t=US�D�k�ɍw���K%��M&�s/����b|�sqb�TNk�~��)�v�j��y��(�S>�y!����%�]ϑ=�7C!����ǜ���\�:gެ���흝�G���Xk-�(�q&��;ܸ�TC�q�g2tut���	��Z�+�9�*A$Ay�vCYM�/PQ�$��g�� �W������ZF�0ҵ�pH"��QZkB�iēmx"//���k����ÝG�Ա�܅�־'�|�@�@8��v���'CK
��n ���·V��	��	���RQՌ�������̞��Ҋ���Atޢ3�ܡ�I��w_$Q�H]�Ev>�WA�i�5KH5,@�d锿�O�Yw�%W~����G6������P��Y`�i����v
�aߏ�A�`Lҷ6�����I���AS�U@e�<���������Z���e`[��WO��sռ��]{^`ꌥ�-���ڕ���nZ�S[�@�5F��('O��T�̉�Zq�uW]q��O>�둁�����r�8g�z��q�G�zp�%�ue���p�A�G	�U
�x7�axl�O�-�)?�ݿ�8Zb���h��)�=�7#����"�z�-��x4Fo�����(w�([���q�2�Wܼ~A[�g���?�ރ���ƞ����E�³�=g�lljv�Bh,7�F��;EH���y9�}'Hշ���������Nl8�X.G�+i�\�����0JO52��|j�����ćS��C�@���ף�.^�����>��G�B�IFk�
��ZZkctk]�5Z9�����!�eS8|�]V�Z@���w`�ߜAӒٜ8����7"�0�m1}�Z��j��(�n��(U���J�?���T�z&&�Ϊ��wu�ˣ��'?}$�/^>��i�
c�=���mx㹟 �C�/��˿��n�{��N�q�W*�|��q�jf-��t�t��[Q��H/�@�E��r�C+��*�u+	�DD��{'�0�Y�y�8����G�>�zp\im�$�hc3#�6�|��E�vW+/!�]a�!f_SƋ��7d�����M���"v��Cc� #T�#T@]d>�ӎp!y�P��@���a��E�矿v��;��>B
���5�
��ZmD�*Y�%"���Ĩ/���U��9�1��c����X�o���ct<�}.n�������
8A�pЉ��)�@;3)U]ME�D#�q�@��OYY?�p�:+������@*��
���N7]}�U��Λ[^�L���C"]�����dv0�iN�,^��H� �����7�#��<L���d�fq������T��xz��i�(��>���Z
�b.�>��1�#� �%�sJ����b��^��%˖�<? 7�!�LQW����(y9p�A�S�O�"�NUz*���?�pwS�~'�:F
`Ci��FJ�$��Ȏ�#���k��a�(�-�5646L�ЇPJ	���}Oz��#�M�:o٪��ZR�H�X<Afd�hX�}o�6��vU-�Z�x�5�:p��e����Hj6��H�j�"5u&�*����e9ڤ��Z!,���-��.\��q����JA KŒ�y�[Y�N�<���T���7>Oo_W]�i#y�_��ۍ�yz�1>���\qQ5����8Nl.�@'��~��[����ڕ�g�X<Mc�'��C6���!2�q‘�ad-�x�[g8s��-?+��T =�sJ^��o���Z^^�
�a�v���g���g_`�~��0G�r|�������py��#�9��	�QjڗR������Gy�����{��멘��������llN8�a
Z�2S�'R'(���7JA <�s<�sK^)<�����<%J���E\�1���=��q_^~�c�"��V�J�cʒ��\x����_�·�
�d)��H�eɍ7Ҳz='�}C!b8�c���H���̐�H�l�A����J[5��9��&��̦}�"�]'{�&v�eёP^�rњ��<�;z�g6;�z���"1v?���C��̩)|)�e���֓O�!jZ.#��"�z`
�Z���_!���W� �VJʗ�����t��^=��;�����F��xn�O�o�-C\����.n�Ml����<����9–�&�LҺ~=��>��A�m &Ak�����2J�@	��T �R�*;�u�haΜ9	����?X$,�:H	��D�p��M�g4/���=_��'v�f�2x��)�'ԷB`���~���>b�4����2�ㅵh����i8�p��!dN^��Xm���{�����e9�T���sh���P(����K�,�_�c��w��Ğ=���;��߂9my;���ek��~���sb�n�M�¡�&z���+����T#'X�L�jk����������Fc�>���u�|��U�p�,����.�\��w��Ս+X4���w�����6Z��[�g�7C�ؿ����twt�5�(qG��d9H����Ҩ1�4c�=9�����ѥ�W�J�"�o(�稯|�ϛ9�=�������i,n�J�}���ٺ���v��v������m�ƫ>Ț�}���Y��a����.�����G�l���N^�[k1�k�0FK���ZK�������W:���uS��8��a�A��T��!�.�}^�==���o�3Ϝ�K!N_?���b��Pg'ő�-^Lu��D����V|xL�"��BJ%�TB�s���}���ۃ�:���I�'�N�ќ���>Re�S�>��D̋	ʟ���^�x����g����!��Cee�r�B���X+�Ԏ��q��q��N��o���ݱ�m۳��e��a**҄#a��	R�
z::�%��)��#�J!�|uN$��BJI4�$U_O���h*ʼn]�����?8}�tݥ�_,���6Zj��@�x!��A��B�(7�.�>gႺU筬C�̚��f�l��&9{�lw�\��~�+^��w)
�A�O��b�����W9窫�$�7j�98���g\�k#�Ԯ¸�d
a�:7�������w�J��O���rVk��y�]Z�Z+�D���ܝ��)���3����F���?d2�M�P�	w�j����~j��g)$���
!�#��v����g��Ǐ�d�6�6ڽ�ֿ�\�x"Q��سs��9�0���1̞�v�w�q��7?���z�oO��~��b���3zB���B� p8�Za+���Z#����ք��1�MG��'+(&�qF�I��¹��L�G��������ij�(`�d��Xv��s�=�Lz.&�e@z^j�L���Ik��<�~v��/�M��ϟ�ћ;w�<@�~�hv�<	@�1 >�lbR�ꀹ��{v�~E+e?N{�{�>��lmjlX0��(��l�N�>f���d4gR7���D�*��C��O�;�w�`\>�X���&�:.˖/�K_��H@]v�enss�4��?�����L4N�v�ƫ�X{��s�U���nOf+�0Z)+�ϕ	o�P(�'�䩂�Tm'��]�NW�`��(󏒟�����_���@�h4���J��d럢�?2���@H�}��>ngFF~5N!@h��J���ƁJ��|��W�tw�P*3gS�+�F������c�]���NN(���
4oW�fB�IEND�B`�images/addthis_32x32.png000060400000004207152455755750011023 0ustar00�PNG


IHDR�$ܞ,
PLTE����mP������>o����������5W�Ca�Sl�������Mh����Vp���Gd���|���=\���������檪����������m�����죣�F^���������yW����"��&F~�����Q�������"�����]-������pQ�����`��ڹ��-V�0T�FFF$�Մ���tT������������}c�����g�Y�O%I���T*|�Ÿ�\�g3'��&�ْ����;T����j��)�ߚ�����v�����Sj���w�k4������l�_��2M����X��u=���Q��W��[k����ttt�nP�Z,���0r�Qf�����������y��7�ľ�������������ƉFF��q��p�p�kiFF���d���l��Q{��éI��?c��������5�ӏ������ͽ���迩
K��FFi�FF�����v�ݏ�ф��r��Dr��L�k��r���;��S��:�ڕs"<n�iF�lC[��tRNS@��f(IDATX����[A��ۥr�,�P�[���2�(�,�2@E�Ҵ�<�������olf~��>��<��˦;Ӽ��̲���~
�M2��5�5�e���L�l��f�]c]c�����qbU�o�z�2zP�і'��c��)S�.�q��$��^��7��u&���M��X5���d*��tu햩��Jv�wi�U2ek]<�Ν;������CC���_�9��r;
i��n��z��u��^W����*��6��[*8{"��d%]���O�D<�k�@��g�R��d�<L&x0�,pb*/N��b�Z���f�f�6֐�Q+y԰?�2�%ij)����q����W��^�H���I]K�R
��Q��<{b�y=3,��G���=��Er�'��]ڕ�٪l^$�}э]Xx%�a�W��������'��s��=GI�^z�����F�G��dnn�x���tB<���G���!��Fz�_��'���n�wa^�d�|�֋8��p�G��������C��g�4��T{�|~,�����G��uh�9��G���Q�H��&��d����1�tW@;|�R�G���Lw���uq4G��	<�Q�(s>�(����4���g
��4=�
|t��X��+,�կ�+��@6��3�)��8�I}I�>8�<���Ї{ח���I#��n����($*B�!��x�x�H�Sr�Tr���3�9
����Q���3���\M��X#WP*��I�
!t�F���F�@jG��)c
:a<+�=�x�O�
ϵ�,*4!yr�/�-T���M9��BA3>1�ɚ�Ӧ�iK�'�
�\#�K�]PӋY��O/�V�I��ZuG(�I�K���s�][�!��Th��:�G��Z��V-�9B�.Wk�ISZ񔯔���/�~)5�<9��\��gIs��K2��a�:G+���X�����D���I��-���4j�
�c��xcE��΋,V��Q3���[[{��c 5x��z��?Ԟ��[��
.ړ�k�������s���Zs�A{����`�~	�\��;�?��X%�OS.j�Ȗ#�/���1W<�j
��4$=ϐ�,O>���'���leU"~���JŢt����GTA��瑼\�S�x����ް�t|O�H�g�l�'�ʦ�s*�8FF^�j�ql��������@mB<�����8i4v<y�

��$���84��W'z��BW�O8���V�uO�%o{�\y�f���.�Ɖq�t��)�Ѵ����y�)�'����vَY��d���ظq{mfx��9����aL��4��6g� �e�7S������&�?U僲����x2����<o�ǜS�y��y]qq5y��f^Ûx
���I�2�?������8������~ދ{2e(�H��
S����9Ϯ�8���5w_���rL�8�kK�5���s�Ȧ�������-�y<��>�-�p�{��~r�Tl����q
�i�)���W��kGU�W�������6�o�BO��IEND�B`�images/index.html000060400000000054152455755750010025 0ustar00<html><body bgcolor="#FFFFFF"></body></html>images/new_cat-48.png000060400000004437152455755750010420 0ustar00�PNG


IHDR00W��	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z�`IDATx��_l��?���vßR�v�BLs�	��S��h���/�*�J0O� �JR)��I���`ZEJJq�hEDH��'m��4�e0$�������ݙ>��4��=lEb��fvfn���YCJɗ��|��]w�p��m�����K�	�9�'��yc�0 �<x����;x1hc!�㇀~�@uu�ƽ�{�twwOY�������(�L�O�B_��1c�X��i�5�0&���jƑӧO_�m'�o/���H�O�{�R�!�9���Ƶ3�~�|�^�x+���>��B�db~�P&��Q&��՚nr�_سgO}"��{qq1.IJ,L��4MB�P�sj�a�yݖ���n�B ��u�	!p'��q��4������n<r�ȿsv��C�0H)�-�����{�N~N8]>���>o�6�i�%�|�����P<o~+�ܤ"�_�(4�5� �QR/�o��j�b},��%������9i!0M3�>u����� -��E4)�&`�%�V�3�ׁH)1M�u�L�h����?t�B��F,)�b�+95�eZOFӕ$z�&��O*��[���^?����O����5��R�Vd�ސR�RJv��9j�� ��	� �/�c�c��G���߷�FT"�R.ד�7�L�x!������"��p.K)���z&�F����~tFǙ��Ԛ:G%I0t ��`Л�W�3��yTV�m�q�d2!X�n�������d2�eY����wEpٯfQ��8
��P���OI۶m��4�t������TWW�x�b_�]]]��wh?w.�|Txy{]31/�T�P(ľ�fnh�����F�x�
�^_O4%�RWWG�ѣ\�vM�[��e
�G�"���I�@g>�L�d�b��O$�N$�ni��W_%��S�.�v�v���S<���x��g�40��#�afRQ�vIU��S*[�d2$�I��0�:x�H$�HW���?/���<��J����7m����p8�o��5kr���LR��
�uP�N�R4?�$�����{�SMM$��sv�{x��o���E���}��ni�y�^��|�
�L�cǎ}&��1�X�� �L�����%�sf�.�T��������SVV����ÀejR�	/�B�W���dغe�:|8�d�-]�s��#]�%K����kn@/(�uY�z5�h���W�=qbV�(��:�w7on�|t��Hw���|��ug}t1���d���<�N�f֮��&���9lP+����>��ɩ�&�_�@8^��2�}u�2&GF���*zY��j�4����2$�׻�n)�k�a�t��-�K������^Y�j�~e6����Ҋ
��sN|���π�!�
!����lY�_��6n��T����d:-�0��PVa�C`;� ;�(��Z���%3��E���5�~��k�mcAI	v"1+��=���h�|�q�C����VQѽ{g'��Z*jk�m�����XR��|p��JͬVK/��#��k>��b���:������ض���bc�|}��0�f��J���WV�\��D<Ω;�������)�����s-�8�mB@H�UT�bll�풲2~��|3[Mז�wM��55!zz��v�p9�пCX@x�#�,k;~�e�ҥ�W;:x������)jyM
�ڱ�o?�8F(��8����?�Z��" ���]��w��IwP,��ʕC�D�p�h��[~r����y����������___�"�p���E�}"��`��C���%n�lwm;�3,G���Λ��/^��ߐՠ�W�|�K.���uIEND�B`�images/iconevent-add48.png000060400000006034152455755750011436 0ustar00�PNG


IHDR01�^*"	pHYs.#.#x�?v9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z�
]IDATx�ԙ{p���?��M6!�4d	�%!<*b"V�U�jځ�<�E::muʈ�@i�
��Ljy�P�"Ģ<
�M�+<��{�}��#�%K	Ip�Μ���s���=�tJ)~�C���W����]����&z���t���?��q��H)��X��׉����j�W<��(	I	����gsN�|�'sRHs�3S8d�s�'X�ٜ�9�ھˏ�I������b�'n��GŅ��;�Y����u�L���n7.�ۏ�v�:�֝��a�>݀��1@�������xp9�~�=���|ᅬ�]�6d��&�?�]4���8߮����h8����p��FkJE�.�ې������)�_�P�&����+ �Bs��-��A*n)o�Է)3
���f��咒�d=u
K����G�x�S��y~{�2�ee�SJq3��0c����јJ�OǸ�ql���Q��W��ngߞ��O�p+��}�h��u�{�ܹ,[�*��r?��̓�p�;�.�`c߾�5�K�M���w!���t�##7��˜�Z�Ϸi���wi��.rK���B�u���YÊ��x�|���f	oPJ%������Rz�R�hW\���ǀ��SuȰ!��HD�\N'N��c�Ǹx�R���#9z���L���R�W�铧��h'���f��҂����������{`��'=F��F*�EbR�I	l�h{�5�Rڢ�I�S��x̸4,q�H!4��Ly��EMM�on���:�'[hB��<5��y����м�mm�z(������AL�&�����)VRTBr�HLM�_�v�
�m��p2:m'���"ml*?|w)%RI�T(�P(t::��T�� %5�E�ꅔ܊»�c2��v��W��R��`'�Lލs�dBHI�$��7�44�R��TUV�i�!������n��PO]�
[���z�

��l�@�$@o0�[�U��FC}��7��|S���n([RT�s�e|qa�o�R��rFv�SH6[n����$�K�g�d
����kW��=Y75᳝;�v�x�����E�|�{��b�o��c��;ΙSg�YV�����)%�g�	
������r�&�O���>�G��s����~�f��˖//W��)��ל�)PYQ���e	!QJ!�@�4l��\/+����'�N&!1�ڒ�9BU~>��n��D
JLj*�{����&.���;�Y���M�<*����C�I=S���&�
s���k7������M�p��TUW�r�HKM�h4Rw�9�6Q��I��-��9|8�gϦϤI���)�VkԿ�}w�o�yPz�A�vk�F�K��6�teeV��Ey�̞?��"(�Fk���gt�.\��v�p8���}���P�m�-Bܢ+;q��y���<�n��Ǐ~i��
/^|j�ƍ��Bp+9zg�`qc�?��Z^ᷠ9�LUe���#"�q��8�"˜8)�c˗���~�ED�+%�^))���ɵ�9Î����!44t誕+�5e&��뻭ѥ��΃�� ߳䔑~��P�W�R
)%�i�p�\8�N^ze!F���m�8�zu���1p S23���I���-�;���r�L�]#""b\QA���f���awLpH0o�}	G��&q@"��޾y���!�>�Cr�H��Zb���(//g���8*+9�xq��[i)�W�b�ʕ����Mm��6�_p�3>}�����_�)����t���r�0�6&�w!\�N�>y�|Bua!!!!Ʌ���m��BJ~��q��ߟ�aw�P�Z�����7���}�?۾�5��#/7��HϨ(*ss�߲��ś��;���LiW-P~��,{�}�(ʼn�Or�ۣL�<��#FPz�0�ˍ��"P#
��X蕒�����Qq�,�EE�gR``?�BO�T�J,�FEk��8͓�O�E�Z}�ߴi�6͏w5;�]O>	���������1)�)�J�x�/=]׹z�!�z�� ��
��]	�{[S^f 4&�F6�|�����X���8Зm�������]�fPR�K�H@��_��������������[�ߺ��^))L��l<��l�+[���!D��'���t)�^a<{:��DLj*�&PԔA:3���{?O6�8�)@���\H��y�{���/_V���S�edt@�Q��;��;<xpW�g��F<@C\�>/WWW��ѿ?f����0����\��O=�t���Ԁ؊Ν���e�Z�xo���������io��99M�r��u��;r���B4�S@�Uy����w����iYP�wo��N�FҖ.�Y���dd���?��d�"�f-+[ۣG�_ef�êU���1��ԩ���Ԣ��d�Wy�i���0��;��b��I�ׇy�v.eeQ����jE�����f6��B԰a���؅�$&%��*����Zj
W3w
۰~������R�ԭ��t����z�{�褦ᥟ��A�Y$��͛cRz(%<<|p@@@�^�7*�ꤔWl6��ظ�#M�@�����w��j|�IEND�B`�images/registration-16.png000060400000002100152455755750011466 0ustar00�PNG


IHDR�a	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z��IDATxڤ�MHTa��{G��$J�,��
�� !*Jѥ��ժ ���$M?�C��F��VM�� �D���:NSaeE�F����ݯ��4F�<����r�������5;/t�N���������:W��p�l�iǹ�Λ?�z�����s��@(�֏�o�4��ӗ���.�QSeԔ5L�Ψ��Q%��/���RU_�����T�Qە6�"zOD_��
=���k-��*`;P����N�<`H�;�:�DbI*�:\	GB@70wڹ�g�)�|���`u���5�H�T.�m||�Ree�zW<iO�'��VL�<��	Bְ{�F��	�LW~{��а�c�<O����frv6�S_��'��L$��������u))))-O��x���JK�.z����T��MMT�Zś�a�-�sE�
�f3ζ[I��Ps�*{{zX
�1�c2ɫh��ŋ7��3�A�8�L�Y�g�i`amWeK�2� ���*��8P��B����G��������L�����p=�H��.~���\�m&�KO��Fߏ�-��[�|��/0���}}��aV<x3P\܆�vi��������ŋ6�Y35e}�y�Z~
Xc��C��IEND�B`�images/border_title.png000060400000000610152455755750011212 0ustar00�PNG


IHDR���9PLTE������������������ZG
�tRNS5�(_����o~P�C�S	��IDATh���Q�0�a,����k�N&$u�g�6p���Ql�#���1: F���bt@���1: F���bt@���1: F�_j�[�_������D����ۻ4�h����ɢ�-/����\�<93���2W<�,uV��z�,x����u�ש)/���΂�ܕ;K�$����Ys�n�n��=d/�]v9Mn�]��U�^z��u���Kr�B��N�|?�K%R�IEND�B`�images/iconicagenda16.png000060400000005563152455755750011323 0ustar00�PNG


IHDR�a	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATx���=
�@E�|V���kp�	�`��W��R�^p�k�T1	��qq�O?nq5f\�%��
p���/��n�XkHki�vLzSy[KNE�1X�e���B�q�P���sO`��DU��1a���?5���;�~��=�,���IEND�B`�images/technical_requirements-16.png000060400000007001152455755750013516 0ustar00�PNG


IHDR�a	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F,IDATx�T��k]U@�u�9�����$�>�A���P�>j
U�� R�
��9u�A��D�V�)8B$�
��6&m�ML�}������7Z��'���*.qZ�{�Z{��{d��;�|�z�F�	��"�
��m��籕��-3�n?���#�LQ�)����`�h%�Y��婵ܯ�O�U�f�J�L��WΎT���M30� ��O�њ98�6��V�L�r�^sA��V�lOj�n8����f�́go��u�+��O�����G�c!*2�C�ۡ2�Z�00����͂;��(v��4>~�p�5��(�������QG?+�t�w&ZMnllre�&Cw����i<����$/>�@�\����������5��"`ijEdS/�c�.�J�%$� 蚱^�^ɳk-�ʡ�	������r��z�X���&_y���;�\��C�� ��M���D��8.1�mz��՚��>��G�(>��Ms~ZZfe���
^�ɉ	��X�F���	��io{�cC��J���z�g����xUJ����)���~JlQ��|����n,�3ܣ
�51{�x�?��RTp��[-Gt�	ֺ��<�m}�c�]/t
G%��F��)�~�`������&dy��������3Í%D�lX�v���X��wn/�#�ӻ��X�vS5�4U6�]�
����E~�5=��Z>W�{\�� �h���z�{���<A�E~^��y��PmD��|���(��$2C���<p��z�ި�����槍R|�4��{�HK�2�F�^��D�IEND�B`�images/iconicagenda48.png000060400000002743152455755750011325 0ustar00�PNG


IHDR0�hd�xPLTEwww�MMwwwwwwwwwwwwwwwwww�``wwwwwwwwwwww����wwwwwwwwwwwwwwwwwwwww����������www���www5�|&tRNS(�P�=�
2˗��}�?��8Ebq���"L.l�\�틬O�Y�IDATh��붚0��pр��~���
1�I���H�_�q�l2;f�"�on��}�gpdn]�6U�A�o�S3�SÁq�	Ϲ���q��G\80ͰP��w��8��S�x�� ������$���HWj�AL�ŕ8d6.��P�^�u�R��Z���^y(3��i�Cz��$I#%�`ѽ�̀���;�_fx$+�&/����a���*1r��
��^��Gk7��y.�pR�m5��5|d�T�
�C�3���!5m[WUJ�+��zG��0���w{�WU;er��Lj��A�Ƈ�
�
;���a�7��Rz�Z��e5vї?�[��S�WP�j+E�b��a��F����ׯ|�*��$�K�D!���P@N�&+�=2��:L“jL��NxB�������v�ZJ^'1h&GB8����}�f���;d�r�3Q�N�)
�Z�%�����>"'a�(G,�DbJO�8�ԙԖ����=���3V����c���	!�1�1�F��qI8�k�@qH[���T�m��1�#k�e,���֨�UM��}`�$� .6�K��\9Ɲ�R'eb����!\a��H KgP������7i $^�X,�\��P�	�7���g��DB�r�C�2��k8.�Z�0%���{S�8%$V`g�� ��r�m9�ɁT"Ő</�9k�r�4, �Rr�ɹOX@"��q�{��3j�=[⫝�"G�&9L"�
��YN,�Y�f�(�V�rh�%�r��6x=��"۔�	r�D7~M�j��	��?r�>C���Ɂ�_���CrC��>��z�z{��s��7K,��c���ë7��@6a���R�N��I��O���$:���
��r4���쬅l}���<{��Y��ǢR� c�6����%l�^�Dž|�)
�eV����(A1W������	Ϋg*����PdI�_#\��fЬ��%�,�'���s���1�9!���X����u�Pq�/�a�񏡲(r�g���B��W�l}B��=�w£۬�
[�(�*�蹱��Y���\u��� �}�Ú��J$\S'��W���(��ED\S��4A/�O�I�Up��v��/�=���%�߅��q�N�ު��0�����;���uy߻�֥��1UB��aY�
;ْC趩���S�f�]G���v�oۦ��yb��ݰI��_ԾT��k��hUWȷ��ȿ����n��O����iog��4n��}i�W�ol�.���M�IEND�B`�images/logo_icagenda.png000060400000017751152455755750011325 0ustar00�PNG


IHDR����PLTEtss���qpp}||��:99wuu988�������:99~}}���:99����wuu999srr�������������:99qpp;:::99			

###***&&&!!!+++:::���,,,(((%%%���)))������11���''����$$QQQ����++A@A���===�����..�������55�����NNN���EDE�����KJK��������������lkkTTT���HGH���556����_^_tssbbc���vvw�88hfgVVV�;;111������ڳ���!!���ؒ�����zyz�\\������YYZ�VV������t�����������鮲�������;��ޡ��������~}}����bb�MM�  �������yy�������tt�oo�HHpoo�CC���N�ff����jj�QQ3][[���������""�

����ơ��rqr���Y鉉_)ri����hkr �L���*�..c��̘���,,:''I  �+���~''�@�;;��
h/0�**��ȼ�hh~���..�����}@A�99/!!5���Ϳ��CCS//���⿽�hh�����ww'(,��������MM2)*�[[�JJ_DF�XXɕ��>25�h�tRNS�.Rd��R+����|�ڻ�����l������[nzIDATx�̖KhQ�cԅ����͟�H�h$1DG!(�P,�**��t�]CRA	�.ZF��"1D�u��A�

���{��dzg���΢��|=��!K��^4/�1�a�W�!=��9�尙kZ�빤瘚+<�=Z:;�.�e��4ⅯG�wm:|��c	.�oaZ�;|���c��0��=�������������k	�Q�<ʓ�g�lVQ��"�gtg��f,bt�J���96���o
yo"=+w#Kg4<|l�������q�gZ�����6jsm��MQ�h�B�Hh݀Gc���X��&�F� 46���۩�i�R,��ݏx2�
��C��2�fw�����/�o�(�J�i^L�c�$��L�{�
`���JAm�󛒔dm�b��x�5[*-P�I��`\�f>�4�-H]%yg�����E��b�_�#��8�"�9��?�E���e2)p�m!��,ˁL���5�?���vq���uA���̞���B�2��<�Pīew���G8`������6���4�z�,R��紃��bG�YcAԇe�Ƨ\0� �з_���+�nٷb�_�U���vz���p>�����m����+����nY5h��Q�fS���5+��b���=.(	�Y0zO)k�������j("�o�`�a���Z��+=^?~^%�E�",�m�yu�#����������}Z�R���4����ؾ}��!{��ݵk�vdǎ7^�r�u=E�{9[z���S��O�|_���ȟ.������>}|�x.�x�V�3��{퀨����͛�ѐ�j�P��9��w�#�E��
:;`o���v��9���ܚ�$�3,;)���r|B�����
Sd
��RL�kW�@��h�R��w�ַ*I�}�GC�ƀ'������CV������M<����>�"+̭�]�!�#[�6���u����9��rT\�a=g���ĉw}Զ�֮����J1��X�V�V>j���B�>�6�]�!�#k��N�����
�8�_r
��n�2�9#��@�{Y�&�ZQ�FW�E�h�Z`��ˆj*(%j����vY��O=�{n��TϞ�yA?�~�����Q@ޕ+�bq�`���.����|+V�8À�E׬Y l���+���,������A\J���1����F�b
�{��+.Z$��?�������WPp��߼��]>3lkpw6���_=.�7��}d�ߙW��b�QsY�k-|<�[!A��Ç�޴S\������CK7j���p���b%*��lE2箝|��u���$��$Y)���Co�ʻ�����w\�x4��^��O˲=�8xsa⃑�G4������x��!����Ш��R��Q��J�|1���3��\�
�\.4���������]>�uO�S�Q�c�'���Cq8�w>`����3�l	��q~������<���,&�
[����;����l�|,��-��J��~D/��HFn=g�.�#�9��p�����
N��;|�W�j�ܔFh�G���N`焱��:�q��&�,����~�x(�CY��_SE@K:+�c
�3��Ă^>��K�"'������a:�%C��"�N�8|ql��-���xx8��%D���isy��
�(�
&�g�]�����Ґ�&��4b������F�-�@����pA�i@>㻟,Dw��N�#��H�в��e��71���c."Wp������zF|4�Yp��fފ4�$�H�+x��|A��K��7��NL�nf���Q���+F>�;���B�(�$����/�9s�m�'�K6;ױ�(�Yk4�%� �gt
f�H�h�\���#ǂh��wΑ����?��vc�4�������3s[|o �b{���.-��F���"<<����\�s���t(�_����$�u�(�>�-޾�U���_�G�]���� {�Pׄ��G���xo�}Ġ.�PlS�'���
��p�Na��"
"���B�m��w)L�i`���]��pJ�*���k��c��,���Aa�`^�G���P���YZ>���҃{7�։Gz0�;�܋esN��f�y��Uj���m���@�Q��5��G�AK���%�
v�x�w��� [�>r(�0����b������h���?�nޅ�r���KEC݌|�.�W0%̤���  0��o�Y����
��
�m'K��]��YP������� �`"U�t�ȍ���j)!�K��v�N�49��ūΫ�*���jٟ�r�Xr1t(1j|*��_Q0�w��k���ȶV��j!KXB��s��t:�F[D4��j�ʳ��Q���2_D�kb�m�4^_*�46Ʌ-�K�̫u$��O�3*���oר��;wL/w��|�_Q@�;(���ׅ����'xa느#�oO����Ө��F岂Jz�j�X�k,��|(a1���S���H��
Q#V.� l&��Vs�����^��i���r���f��f,�M�y	
�/����m�׍����k�]2�@��-x�
�̭5o��7�o5*��@n��*�Q�6�U���'�!(`q��=����|�l�@E+��Ge��K��%[Z���э��_�XV`u[�:��"����s$†��y����G)[��P�-�����{���,��Q��j�S���Lf,�z�;�C�.���|@�ِ�uo�����	3��_����{���_]i7�Z��-A�X���m�\<��`�p����ii%/[��ja�1[J䮮��������ׯi��*�C9��"y���8*��v��?���� _�y������[�5>���N4����hD�Rdp��X���2+|ɲ*�k�`(PK
3�sC>�.���>���L�T��e�O���
��J��J�P*ˊNثlp��)Ͽ�,�7@a���n�/���z�\�H3��>��Ҟ�kQ��oͫ��q��tω�E��s�F]��dS-3ٝz�'A��)��o������
&����[��.	�W[Z1ޥ�k������I��}��O����"[�R���OX���e���'�U�-xR0�yQ�ٌ�0x���{v����T���+�{�==�󨂍J��`�9MVt<�
�������͹���q�q|ɍm:�2g��ё���9v�A~���U#�.A�F���56
���"��J�Ɣi4�t�f�v-u�u0�B�'�Ơ�����띗��>�1�/���羿b��K�%����8�깛�I�*?�7�͵���V?�Q�:KhrmҁpqRO��y=1�Tk.����JrJ��6L���{�A�2:
T'�vw8$i�O�t�-L�����10�������i5��Fe�[_Ko�o�r��W7��s��#�Ԛ��W"A�t���o�$q���`d%#Qg�v>���`�C&�b���Wa�%��J��K�8uJ��*l���ѫ���A�8D�M�A`X0��t;�� �#�Yq��@�!lZ𳾹�����ƙ�-L%UEE��4�^�Ax�Li"�����G��C��twwde�ȕ ���++�^?��7�98Xa��p�V�炑�n68�1q!f�^C��V(�Zzso�d��=xq�[��jAE�n�1�FH"��u�8BM����}����u��Z�
C,���}
&��%�
���w6�����a�N���_�T�_n�3M�sWvC8��N��К�cn�R�q��?�n�t�ҡn,f�����-�#���lk��SWD^~��:��ՅmC�shd2����F���Nu����>B�lq(�����KUƅn1@�m��G��άZ�?�ް�9B+	�Ǚ���[��������	]�98�lמw��ԸYB�)��	��lW��8��`�B�5Sa�]P1�xUzy��?�|Q��'P��6W�����n?���=�u���-�*7���Y�}ú�퍕=�I�>�y�����s�琮ޓ\F7D�|���1w�;�Sawȷ�o $Õ%��^؄�A�����
�<Or�>�qH�A�	�9��ƶ���OwnA�b��2��>(��|�=Y�d�x`R#I�4XP�lg�����^G�
}#��<���tkv@38��U���M�]��E8�@k��W�#@��ΏK�ɇC����	bX�_iO���P�jz+�UsG7��Z[IVf����SdB��ű������}T'����?�w$�k�>O�1i.��)vwℏ{,\��g�LC8�Vz�ÜO��w��d�q��R:P���7��IgoӔ�d�кf<z��	���¸�K��퍆k�퀾{.=�)�@��ĭ�QI	��'�C|.�_.&'�
S����=�i��q�C�A�xf,R
��Z#���y^a.nQvPY%��r<Te�0��k�E���1A�࡛��>h	W5:�>R����0�U��$���|��ew~��yA�m�d��)c1�(���P�-LC�m�!;�ô
��e���O��� \�\,w1�������NQ~6�	����Ô����0θ.�����@�%���t��y6�r��2<�j'�5A�Tq1�)��4���Bhdz����H�w��>�d:�@'ޯS��7��CC����	�:����+z��:��\�x�d��s���\^���xeeߪma��SS?hd�`cL��<~�eks�}d�邓jNZ-H�5��no;�}HGu�ty<�'�nH�/
B����}5p3A{<���j^Ꜹ���&��D9R+��%.(�eȹ$�pb䏿��_�=o�Z�0vME�R��u��
�T��
1���.R)V�͎�}Zs�ML�P��}��OMe�^=3�����z��D"~pO�by*��KY��Y�Cwl���tA\=�o4�7-8�����ǏN�ll!�����:��ܟS�v����%�dt����O�M��l"���C��>{� ��`�lj��Ib�������tf
b�+˷��,�J�D�����
+�38��$@>~��-���'�=�+ν=��t���5e����4�*�!����B��o��Up���1�إ��/�{]'|	�}zj��RT���D���U����CH�e�a� -#֟r��.�ko�;pA6@�r��\�|ymTsx����ZGI���/b�3�]��u{%����ЎLU�i��������U���/��C��G�V��ڄ�bb��C#�c���>o`��C�r��TT���6��@��[jI2F�qw�[�!Ű,}�7��(��2��TW9_�r��S��E�%x��-�y�����#�1����=�|��\�yj,ZX��Jo�r��
�����^W5�' z�[Z�Ʉ{܌_���ۮ1/�*z�ٗ'��A���fD�G��jq��]�Fk�I�T�l��F��F������Ul���o�4_P9D��T��7�������&gꤠ�Y�1_<�]���o�(�J�0�8_y�%��>�J���1�j�~��M��׃)=j�9M�¨���֭���Y��_T��E�p�U��������h߻����3ϥi��I@�$Ʉ��m�紿�8�]��2P�XUuM�r��V��F_��yX.l�߀���UhXn�a�J�T95���p�]��P���� ��������:D*5�}z���Os���DF�TŊ�c��1����Ql!�Cɦ�5j�&�DBBʸ0A��6ą�])BQZ7�ܵ�֝�	~s�3�fn�I�����!��yf���qE��T,�r�LM	]����K���<݉
���!��e��f������RS�Dt,�,?y�-�t���q؏�8adY�:6�s���K�K�RS�;o�&�E��.�UԠO}�6�N���;rz�ó�/ߖk���%�F~+���|�ߊ×�m��1��'#
x�g�"_���8���RpCN\M���W��m�
�w/��c�Q�����@
�a_�����x@��8�� |�	4a���6_�2�+�J�⾭�l ��A�ؠ�b�b��6�i���ݽ{�i��X����[�}]__E^i�O„D���MY���uW��L�ް�~WY[�Ol���lO���Čm
���V�Z@pπ16c�~�.~7/�Ԗ�X�s��B*.��^Pb��^�sQ�X��f�yq��k�h��."f�u[%$m�j����f^'���yY����ra&/��EB�w�f��Q���:�
����h�5����ǶnH��8J3qJbB�Ŕ*�QňSf� ke�
�\v!��L�SݏX)�Rt9���2%I���h�Pא�����&u	�9��K�6X1Z��[7��F����D�g$U����ע
�aS��:?�A<5Ř�>[��)�v!�-��d�1w7�Y߱��`�����P�
�%=�t���=46��p��co�����4���TXq��'zW<'�=Ʒ�+ ����(��+�f����XA^d�H��I�w\6��Ic.�-�P"gg�bL���C�� ��;�S����5w�x��?p�?m���o�G�[�C�0K�Уҭ�~�Ф|lP[z�C��h���W]��3�!�G�͌���ϫ���?wy
?����H�u'`��3��͖n�E�g�	� ��'�G��K4����6r ��j��G����tx�:T�7$�h 8�j� � �U����[CRV9G�Zj�|m�>�i�Xt�O�c���d�ш��?��rn4t�O��& ��f�c,��i4J��Wt���X��5X��-���6ʕ)Tߐ
���������e��@@�ϓ�T���<�ԟM�DY�J�j���i���?!��(����R5��wOO��I���cMS=�զ��8���ŋ��6yE�by\Oh5�!Eӈ���G�F����3p�lUl�,m�-qU��M%-�-�uT����"M;"�����	�w�D�|%O�׃�+���N�w��W�_�o|��YDjIEND�B`�images/video_poster_icagenda.jpg000060400000230336152455755750013057 0ustar00���JFIFHH���ExifMM*bj(1r2��i��
��'
��'Adobe Photoshop CS4 Macintosh2013:04:26 13:44:24����S��&(.�HH���JFIFHH��Adobe_CM��Adobed����			



��Y�"��
��?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?�I$�$�����I�IRB���	�)
_Έ.����"CI �����/ɺ�(��Z�����\�H��d��:Bu,�,�?�O�R�%�
O�=u�k��E�� �$L�O
!<����M
I�QHL�TJKY2t�Z_���%KaQ
���Ax���9K`L�?z Y#��l'���&��h�Z��$����B�pk���k�]ƈ��D+��Hr�˜@�%V�3^���{���2���>��]'�]�����نM��@!��V��{q�?Զ܍���5���/��S������l�v���	akվ���Lm��s�� �kmoж�k=VX�g���
r���R��NSv8�jvv3���VKZ�r�o��_�O���ѯ+�f�n@ŬSF�T��i
�c*��j=]�g�{�A�vs�eduN��\|7���ej;�����ʝG�cko�g���qv��m��6�����Em:~����i!)y"A�܈�%K�0d�$w!��"@���{�op�(ێ��q�
?�LSDp~��N{��vA?G��.�d�qÕB&L�r�mo�P���n�D�萑���@&���8 ���"L�'�@�_8C.q䒤֐�K����J�	�x!l�,"��H�
��v����Z�g�
�vI�C]��@��/�~���m�=OW�ҿ�SN�2G��uhlh������B����MV�S�hv۩��9�6T������C�k�3�{(��z@�56�Ul��#�4�o�ɗ���utzͥۿS���4�W�]��4%��W	�Lx��o���v�A��rq�^.�]� �z_cnO�������'���
O�bU���d�,N�OK�ޅ���2����'0���6�	p��cO%����*k�e�j���uGu6���_����7���u0�G�c�ɞ��������We�{���[]�hwb�ŷߠ���K����L��}���=R& |��n�Y�:���H7kk`lZ6ߺ�lc�o�C�7�eV(�{�H۵�Z֍�uU�i�]����F�t7]{KYIg�\.'y,���Z��[�������Y.�6��� ��6�c$���4�m~K���2܎����Vm0Zt�H��(+J���ט�o
s��-�6�V����ߑ�v_�����}նܺ��$��7����;��;���bʱ����HD��f�	N�?�I%�uW)�S'��w�o�r�Mv��Y�����W�?�CNGՋl
�]PI�������T�����n��ͳ���+�h�@օ�ּ��[ 8yY�����th'�n���1�2(k����n�a���/��3?�*E�ga�4Is���4��S���G�v'�4�2�@���)�R�М�C�����(JY�RP��V�Z�6�av��4��UXEǵ�?A!�>i��4e�Df	ٶ������p�?ւ@��kH�U[2ֶ�[]�B@ v��E	��ϊ&R4G��æщ��bX}<�������A?�_��[2�m�'�G��~�m��c��>���X]V)��e^�Fяc�M�_��}K0�	=�{��/\-�=G��f��aeT��
��Ї�s��ѭ��?��mLL@��hB9%>ve Mä=R�8�?���e�c-i~���I��X��j���{6~��[�ۿҲ�����j�H�fA��uX�����͵��s���?�I���_��:�[r��z_Xɤ�Y��]Mo`�{��۾�һw�H����Ρ��S_�i����A1����TfQ"�͘c��2Ǭ��e��Eɾ��h�
?yBFxi��?Nǝ<�z�l֝�d��$��AaƠx�$�&�V.��ȁ������Z~]��K�8���T�|���	֫�C�����A�ϊd�2H���O)�<&��^R��(A:�Q(3s�ܡ��
m#p��B���e��١b�7f�r�&���D��%����'�Sy�;�ę�?�4!�����ΧA�bC�\@$��'Or�l���/3��<.��VN5�i�e���l�C�g��?����^�6z�u*)��_S��j;��3f�_[ݺ����/c��~M,
oR�
��m�n�?l}��S�g����C�?k�8�HQ���������Dԡ�8rG۟��=�E���p:�WR��Z�˯�c[�]�{��͌k[�M-�׳��(�6��[�H- ��5�ߜ��[����W�Z���񱏯�ͮ�w5����^��;�G���Ie%�_H���N�T����~���c�W����sѲ�!+z����dϒr&T8�`c�~��_ڢ��8<Q&�4���~,�
�;wHZxv�j{[��	h������IE�ǂcZ6Kw����s���d�FE��������ͻ�*��H��n���!�.=u1�c��t���\f:��vC�!�n5�5�$>e���o���*��Q��~�_vI��n
,�f=w�n��u?�}�MuϾ���3�'�#�NJ����g����\�'$�bx�.<<��G��X�Ut/����wS��]]O�[w��ue:�?MG�K�;�O�uzj_����%�}����譶�J�V��[�_k����G��h\׏Ū.��?ʤ�q���p��kO��+׃���������Y��g�df�
���x�/�
Ki�]-v%��e����şO����F~%u��m�4��4���꾗�)�l|�3���(��#^�����cd�xO����)ޯ�}[�Wp�R�n��U���Uev��7�ϲ�oc�1O��[0����=������@�Y��F�����]w~���O��(ߢ?׺���FW��n*���/�E�_��}ͽ^�����Ǣ��W.Ħ��i��YN��<�"��R��W�E�W�˝[-kA��};=�u���%k�<����M���&�?/�=?J����3���p1��2z�3�omVb��;�m���uJ����҆M���g��j�\��}=oҷ��5���/�f^-(���M|�&0�≣���;?���Vޛ�ӆC3we��Q���-o���V:�/�fb��6��n�f^%���6ɮ�Yg�[�-`�p��o!I˃Ó��|O����ˇ�
d�c���.Q�/W�	�H|�잗/��N��ƻ.��eMu��������}�U�:�K��z�WB��Ut�����-ao�f�_�3v��WS=��W8�~E8Q��p����{Q�U�����㊉�J���O����n��z>��;<fEϬ2w[wly��mvq��,u6q�RRB�c��t>o���z�z����O���Photoshop 3.08BIM%8BIM�HNHN8BIM&?�8BIM
8BIM8BIM�	8BIM'
8BIM�H/fflff/ff���2Z5-8BIM�p��������������������������������������������������������������������������������������������8BIM8BIM8BIM08BIM-
8BIM@@8BIM8BIM_�Svideo_poster_icagendaS�nullboundsObjcRct1Top longLeftlongBtomlong�RghtlongSslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenumESliceOrigin
autoGeneratedTypeenum
ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong�RghtlongSurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT	horzAlignenumESliceHorzAligndefault	vertAlignenumESliceVertAligndefaultbgColorTypeenumESliceBGColorTypeNone	topOutsetlong
leftOutsetlongbottomOutsetlongrightOutsetlong8BIM(?�8BIM8BIM��Y�������JFIFHH��Adobe_CM��Adobed����			



��Y�"��
��?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?�I$�$�����I�IRB���	�)
_Έ.����"CI �����/ɺ�(��Z�����\�H��d��:Bu,�,�?�O�R�%�
O�=u�k��E�� �$L�O
!<����M
I�QHL�TJKY2t�Z_���%KaQ
���Ax���9K`L�?z Y#��l'���&��h�Z��$����B�pk���k�]ƈ��D+��Hr�˜@�%V�3^���{���2���>��]'�]�����نM��@!��V��{q�?Զ܍���5���/��S������l�v���	akվ���Lm��s�� �kmoж�k=VX�g���
r���R��NSv8�jvv3���VKZ�r�o��_�O���ѯ+�f�n@ŬSF�T��i
�c*��j=]�g�{�A�vs�eduN��\|7���ej;�����ʝG�cko�g���qv��m��6�����Em:~����i!)y"A�܈�%K�0d�$w!��"@���{�op�(ێ��q�
?�LSDp~��N{��vA?G��.�d�qÕB&L�r�mo�P���n�D�萑���@&���8 ���"L�'�@�_8C.q䒤֐�K����J�	�x!l�,"��H�
��v����Z�g�
�vI�C]��@��/�~���m�=OW�ҿ�SN�2G��uhlh������B����MV�S�hv۩��9�6T������C�k�3�{(��z@�56�Ul��#�4�o�ɗ���utzͥۿS���4�W�]��4%��W	�Lx��o���v�A��rq�^.�]� �z_cnO�������'���
O�bU���d�,N�OK�ޅ���2����'0���6�	p��cO%����*k�e�j���uGu6���_����7���u0�G�c�ɞ��������We�{���[]�hwb�ŷߠ���K����L��}���=R& |��n�Y�:���H7kk`lZ6ߺ�lc�o�C�7�eV(�{�H۵�Z֍�uU�i�]����F�t7]{KYIg�\.'y,���Z��[�������Y.�6��� ��6�c$���4�m~K���2܎����Vm0Zt�H��(+J���ט�o
s��-�6�V����ߑ�v_�����}նܺ��$��7����;��;���bʱ����HD��f�	N�?�I%�uW)�S'��w�o�r�Mv��Y�����W�?�CNGՋl
�]PI�������T�����n��ͳ���+�h�@օ�ּ��[ 8yY�����th'�n���1�2(k����n�a���/��3?�*E�ga�4Is���4��S���G�v'�4�2�@���)�R�М�C�����(JY�RP��V�Z�6�av��4��UXEǵ�?A!�>i��4e�Df	ٶ������p�?ւ@��kH�U[2ֶ�[]�B@ v��E	��ϊ&R4G��æщ��bX}<�������A?�_��[2�m�'�G��~�m��c��>���X]V)��e^�Fяc�M�_��}K0�	=�{��/\-�=G��f��aeT��
��Ї�s��ѭ��?��mLL@��hB9%>ve Mä=R�8�?���e�c-i~���I��X��j���{6~��[�ۿҲ�����j�H�fA��uX�����͵��s���?�I���_��:�[r��z_Xɤ�Y��]Mo`�{��۾�һw�H����Ρ��S_�i����A1����TfQ"�͘c��2Ǭ��e��Eɾ��h�
?yBFxi��?Nǝ<�z�l֝�d��$��AaƠx�$�&�V.��ȁ������Z~]��K�8���T�|���	֫�C�����A�ϊd�2H���O)�<&��^R��(A:�Q(3s�ܡ��
m#p��B���e��١b�7f�r�&���D��%����'�Sy�;�ę�?�4!�����ΧA�bC�\@$��'Or�l���/3��<.��VN5�i�e���l�C�g��?����^�6z�u*)��_S��j;��3f�_[ݺ����/c��~M,
oR�
��m�n�?l}��S�g����C�?k�8�HQ���������Dԡ�8rG۟��=�E���p:�WR��Z�˯�c[�]�{��͌k[�M-�׳��(�6��[�H- ��5�ߜ��[����W�Z���񱏯�ͮ�w5����^��;�G���Ie%�_H���N�T����~���c�W����sѲ�!+z����dϒr&T8�`c�~��_ڢ��8<Q&�4���~,�
�;wHZxv�j{[��	h������IE�ǂcZ6Kw����s���d�FE��������ͻ�*��H��n���!�.=u1�c��t���\f:��vC�!�n5�5�$>e���o���*��Q��~�_vI��n
,�f=w�n��u?�}�MuϾ���3�'�#�NJ����g����\�'$�bx�.<<��G��X�Ut/����wS��]]O�[w��ue:�?MG�K�;�O�uzj_����%�}����譶�J�V��[�_k����G��h\׏Ū.��?ʤ�q���p��kO��+׃���������Y��g�df�
���x�/�
Ki�]-v%��e����şO����F~%u��m�4��4���꾗�)�l|�3���(��#^�����cd�xO����)ޯ�}[�Wp�R�n��U���Uev��7�ϲ�oc�1O��[0����=������@�Y��F�����]w~���O��(ߢ?׺���FW��n*���/�E�_��}ͽ^�����Ǣ��W.Ħ��i��YN��<�"��R��W�E�W�˝[-kA��};=�u���%k�<����M���&�?/�=?J����3���p1��2z�3�omVb��;�m���uJ����҆M���g��j�\��}=oҷ��5���/�f^-(���M|�&0�≣���;?���Vޛ�ӆC3we��Q���-o���V:�/�fb��6��n�f^%���6ɮ�Yg�[�-`�p��o!I˃Ó��|O����ˇ�
d�c���.Q�/W�	�H|�잗/��N��ƻ.��eMu��������}�U�:�K��z�WB��Ut�����-ao�f�_�3v��WS=��W8�~E8Q��p����{Q�U�����㊉�J���O����n��z>��;<fEϬ2w[wly��mvq��,u6q�RRB�c��t>o���z�z����O��8BIM!UAdobe PhotoshopAdobe Photoshop CS48BIM�maniIRFR8BIMAnDs�nullAFStlongFrInVlLsObjcnullFrIDlong{4uFrDllong�FrGAdoub@>FStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslong{4uLCntlong8BIMRoll8BIM�mfri8BIM��
http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41        "> <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:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmp:CreatorTool="Adobe Photoshop CS4 Macintosh" xmp:CreateDate="2013-04-26T13:33+02:00" xmp:ModifyDate="2013-04-26T13:44:24+02:00" xmp:MetadataDate="2013-04-26T13:44:24+02:00" dc:format="image/jpeg" photoshop:ColorMode="3" photoshop:ICCProfile="Display" xmpMM:InstanceID="xmp.iid:FA7F11740720681190F2AE78594E4B48" xmpMM:DocumentID="xmp.did:F77F11740720681190F2AE78594E4B48" xmpMM:OriginalDocumentID="xmp.did:F77F11740720681190F2AE78594E4B48" tiff:Orientation="1" tiff:XResolution="720090/10000" tiff:YResolution="720090/10000" tiff:ResolutionUnit="2" tiff:NativeDigest="256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;5884F8091891D0D881F430C830C27FF0" exif:PixelXDimension="851" exif:PixelYDimension="476" exif:ColorSpace="65535" exif:NativeDigest="36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;2F6EB42E01B2773A8B9BD62759E63E88"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:F77F11740720681190F2AE78594E4B48" stEvt:when="2013-04-26T13:44:15+02:00" stEvt:softwareAgent="Adobe Photoshop CS4 Macintosh"/> <rdf:li stEvt:action="converted" stEvt:parameters="from image/png to application/vnd.adobe.photoshop"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:F87F11740720681190F2AE78594E4B48" stEvt:when="2013-04-26T13:44:15+02:00" stEvt:softwareAgent="Adobe Photoshop CS4 Macintosh" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:F97F11740720681190F2AE78594E4B48" stEvt:when="2013-04-26T13:44:24+02:00" stEvt:softwareAgent="Adobe Photoshop CS4 Macintosh" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:FA7F11740720681190F2AE78594E4B48" stEvt:when="2013-04-26T13:44:24+02:00" stEvt:softwareAgent="Adobe Photoshop CS4 Macintosh" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:F97F11740720681190F2AE78594E4B48" stRef:documentID="xmp.did:F77F11740720681190F2AE78594E4B48" stRef:originalDocumentID="xmp.did:F77F11740720681190F2AE78594E4B48"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <?xpacket end="w"?>���ICC_PROFILE�applmntrRGB XYZ �acspAPPL���-appldescPbdscm�Bcprt��wtpt�rXYZ�gXYZ�bXYZrTRCaarg
$ vcgt
DndinX>chad�,mmod�(bTRCgTRCaabg
$ aagg
$ descDisplaymlucnlNL�daDK�plPLenUS,nbNO>frFRPptBRfptPT~zhCN�esES�jaJP�ruRU$�svSE�zhTW�deDEfiFIitIT"koKR6Kleuren-LCDLCD-farvesk�rmKolor LCDColor LCDFarge-LCDLCD couleurLCD ColoridoLCD a Cores_i�r LCDLCD color0�0�0� LCD&25B=>9 -48A?;59F�rg-LCD_i�rm�fv�oy:VhFarb-LCDV�ri-LCDLCD colori��� LCDtextCopyright Apple, Inc., 2013XYZ �R�XYZ m�9�[XYZ c���	�XYZ %s|��curv
#(-26;@EJOTY^chmrw|�������������������������
%+28>ELRY`gnu|����������������&/8AKT]gqz������������!-8COZfr~���������� -;HUcq~���������
+:IXgw��������'7HYj{�������+=Oat�������2FZn�������		%	:	O	d	y	�	�	�	�	�	�

'
=
T
j
�
�
�
�
�
�"9Qi������*C\u�����


&
@
Z
t
�
�
�
�
�.Id����	%A^z����	&Ca~����1Om����&Ed����#Cc����'Ij����4Vx���&Il����Ae����@e���� Ek���*Qw���;c���*R{���Gp���@j���>i���  A l � � �!!H!u!�!�!�"'"U"�"�"�#
#8#f#�#�#�$$M$|$�$�%	%8%h%�%�%�&'&W&�&�&�''I'z'�'�(
(?(q(�(�))8)k)�)�**5*h*�*�++6+i+�+�,,9,n,�,�--A-v-�-�..L.�.�.�/$/Z/�/�/�050l0�0�11J1�1�1�2*2c2�2�3
3F33�3�4+4e4�4�55M5�5�5�676r6�6�7$7`7�7�88P8�8�99B99�9�:6:t:�:�;-;k;�;�<'<e<�<�="=a=�=�> >`>�>�?!?a?�?�@#@d@�@�A)AjA�A�B0BrB�B�C:C}C�DDGD�D�EEUE�E�F"FgF�F�G5G{G�HHKH�H�IIcI�I�J7J}J�KKSK�K�L*LrL�MMJM�M�N%NnN�OOIO�O�P'PqP�QQPQ�Q�R1R|R�SS_S�S�TBT�T�U(UuU�VV\V�V�WDW�W�X/X}X�YYiY�ZZVZ�Z�[E[�[�\5\�\�]']x]�^^l^�__a_�``W`�`�aOa�a�bIb�b�cCc�c�d@d�d�e=e�e�f=f�f�g=g�g�h?h�h�iCi�i�jHj�j�kOk�k�lWl�mm`m�nnkn�ooxo�p+p�p�q:q�q�rKr�ss]s�ttpt�u(u�u�v>v�v�wVw�xxnx�y*y�y�zFz�{{c{�|!|�|�}A}�~~b~�#��G���
�k�͂0����W�������G����r�ׇ;����i�Ή3�����d�ʋ0�����c�ʍ1�����f�Ώ6����n�֑?����z��M��� ����_�ɖ4���
�u��L���$�����h�՛B��������d�Ҟ@��������i�ءG���&����v��V�ǥ8��������n��R�ĩ7�������u��\�ЭD���-�������u��`�ֲK�³8���%�������y��h��Y�ѹJ�º;���.���!������
�����z���p��g���_���X���Q���K���F���Aǿ�=ȼ�:ɹ�8ʷ�6˶�5̵�5͵�6ζ�7ϸ�9к�<Ѿ�?��D���I���N���U���\���d���l���v�ۀ�܊�ݖ�ޢ�)߯�6��D���S���c���s���
����2��F���[���p�����(��@���X���r�����4��P��m��������8��W��w����)���K��m��paraff�
Y�
vcgtD��]�X�'��,�n��	`
.��
3[���Y��%p�g �"#r$�%�'6(p)�*�,--.N/f0x1�2�3�4}5t6g7Q8*99�:�;�<u=U>7?@@�A�B�C�D�E�F�G�H�I{JtKnLiMeNdOdPdQhRnStT}U�V�W�X�Y�Z�[�\�]�^�_�`�a�b�c�d�e�f�hi,jHkfl�m�n�o�qr8sYtxu�v�w�x�y�z�|}~=_�����Ӄ���1�C�W�m�����Ǎ��R���˔�U���ܙ�Z���О�@�x����"�\�r���������Ҭ��;�i���ϴ�7�V�t�����»ռ�������	�
������ɧ�r�1��̑�7��Ϋ�u�?���қ�d�.���֒�a�8������ܥ݆�e�A�������v�P�-�
�������������������8������s�>���<q�
D��+��O�=�L��6��	\
!
���
$8Rt���Aw��%c �!�"�$%;&['s(�)�*�+�,�-�.�/l0R1422�3�4}5G66�7�8l96::�;�<\=&=�>�?�@]A8BB�C�D�E�FbG@HH�I�J�K�LxMZN?O&P
P�Q�R�S�T�U�V�WrXaYSZD[5\%]^	^�_�`�a�b�c�d�e�f�g�h�i�j�k�l�m�n�o�p�q�r�s�t�vwxy!z'{.|6}?~IU�c�t�������ˆ��3�Y�}���Ǝ��6�]�����ז���&�=�W�t�������G�|���ȧ��&�E�d�����ư�
�2�R�i�}�������ǻؼ��
��.�3�%�������ȫɔ�|�e�N�8�(�!������#�(�/�5�:�@�F�N�Z�k߃�����9�}����k��'��1������7����0Z��V��4��N�0�5�X��;�	�
x`L
8%
&5EVilbX K!<"(##�$�%�&n'8'�(�)n*%*�+, ,�-a..�/H/�0�191�2�373�4�5>5�6�7B7�8�9E9�:�;G;�<�=L=�>�?R?�@�ArB2B�C�DuE6E�F�GyH;H�I�J~K@LL�M�NHO
O�P�QgR3SS�T�UuVIWW�X�Y�Zc[5\\�]�^�__`8aa�b�c�d�eufYg=h!ii�j�k�l�myn]oBp+qrr�s�t�u�v�w�xqyUz8{||�~	���#�+�3�:�@�F�K�P�]�r�������Ɛב���������
�0�Y�����ן�'�M�r�����٦��1�d���̭�4�i���ӳ�<�q���׹	�:�k���Ⱦ��H�qØĿ����)�O�y˨����^Щ��R���_���*޿���t������ndin6��W$RM�,%2
�P
T9�G�*Jl����Dk����?d���)S}��.\���M���0m��0v�
Y�		\	�

�
�[�U�
X
�b�q���(�E�h��*�_��7�v�^�X� f!!�"�#G$$�%�&O''�(�)b*$*�+�,j-,-�.�/w0?1	1�2�3w4S5666�7�8�9�:�;w<\=@>%?	?�@�A�B�C�D�E�F�G�H�I�J�K�L�M�N�OtPcQPR@S2T&UVWXYZ [(\3]?^M_[`jazb�c�efVg�h�jkSl�m�n�p'qVr�s�t�v(wux�z{t|�~8��������%���D�؍t��ג���������9�b���Ʀ��>�����G�������ͼ�
�7�kũ���E̠���CӋ����.�Q�l������������]���t��;�����I�}�����/Sx���<f����%Lu���!N|��=o��Ay��6y�O��A��	Y	�
+
���
+
�P���e
�]�P��Z
�{5��t5��� H!!�"�#t$C%%�&�'�(s)P*.+
+�,�-�.�/t0Y1>2%33�4�5�6�7�8�9�:�;�<�=�>�?�@�A�B�C�D�E�F�G�I
JK/LAMSNfOxP�Q�R�S�T�U�V�W�YZ)[C\]]y^�_�`�a�c d`e�f�h i_j�k�mnHo~p�q�stEu�v�xyjz�|}f~���q�̄'����=���"���������0���L�ݚo����`�9�����ͪ��������������p�R�3����íō�o�U�>�)����Ժ֌�T����p���I���m������R�����7�R�i�s�z�z�u�m�`�R�?�,���9b���@p���Kz��Av��V��I��"q�s�7�		�

�1��
5
��X��X!���cJ6&���� �!�"�#�$�%�&�'�(�)�*�,-).?/U0l1�2�3�4�6728_9�:�;�=#>W?�@�A�C*D^E�F�H
INJ�K�M#NoO�QR]S�T�VDW�X�ZP[�]^�`a�b�d8e�f�hiqj�lmun�p2q�r�teu�wxsy�{-|�}�f�ڂT�օ^����B����d�ɒ0���	�z��g��b��R���0��������t��g��a��b��l��������7��i�ë�Q�Ȩ�X�
��ρ�?�Է�n�"���v�ޱ�F���d���U����"�L�i�j�d�D�����P���0��U��Z��V��B���%�����h��5�����b����~��;����J����sf32B���&�������������lmmod���Cx���!Adobed���		





���S��	! 0@1"%AP`2345#$E7p6B&'
	!1AQa"q2BR�b�#3C 0����r�4@�Ⴒ��S�5�cs�$��6P`ƒ��t���%u�7Dԥ'�dp���e&fv1!A 20@P"`aqBr�Q���R��b�����#�p����3S���������)@(PY@�ʱ��Ԁ--�R��Q��P�B$��$D+���@XP�,�

�2�c*�2�-��Ռ�W&�TYrC� ��\��P�D���e�X	V �PP�PU�Z,��P�:����`�4�"�8Z��PIe�V	���@�R�!J��*�!@��(2R��[r��B"�(�
\�c+U�c�($U�
h�2�����"�,��QKF��ҵmE�˔�`U6���	d$��\u�B�[(
UPʤ���y��<,�
DQ5�%,����7�N��MX��&�	0�@��A�!r1�K $��\u�%(���PVԓ��-�h@�l�q5��t�h\�d�ZJ��Ll �	r	�@�P%�l��(
P[((J�
@�*���-K�h�*����K�g��h3E��JJ�l	�$%�&0�!%��REPP,��P��eͰ1��ןR���!@9����s���E(�d� 1@EK	���cfK��&:��PbU��
!J� +Y.2s�s���:%[�_��y���s��$u���:d�K
� �*Q�,� ���(J-�VR�R� *�N�����h#%(�����-s�d���B�kԂɼ�H��ۍҴ	h���`�H�!r���J�&:��@YAl�
����79�V�d���"�msg�͞�r�)eU:����i�;�e~AZl�X>�v	����<"�S�t1�	�� %U!ePV���� 3��B!	Q��AhR[(�s��bͷ3n&)��ɮY��^i�<����Iî<�~v������~R\��=]�߫���������b��Y<!�R�����T�۵�M�cq��1HZm�rN����w��N���⸌Ո��$ֶ��w�$��5�ȫHe��I�Y�&R�\�q��I�;����as�"3��=��ih8�Ǔ����1�~����~���j�c����_��|�Ov|�I�Z�{�KȽ�/������v3�����ߓ��,�=�3�&�Z)1Iq�q������m�t�ǧ�\0��5�$L.@u�#)��L��AP��2�9Еq���S)�rN�z��v�o���ן��g�Ɏ�MZ�5�ß��K\��j��G�z�n��u��l����n�~YÂ����ឹ�♮y�yMd�^|�4���61���9�!i�X�,Ă�b��̲\��/!��1L/.-s�\ŗ<����)l�IZ�E"�h&6k�͜�͞�7�X�ן��I�s˝S
g�^nq��f16��W�#����o>2kfO�M�O'��O�ٸ��~~�nC�=�3�YJej8���j-i-Z(c%L,Y�(��LYV7ȲW
�>�,�Ι��6�YE�4L��K�Ղ)Tcg��lR���$��W���sN���5��Å�7���L��Hy�3��}����gQ{�����y�|��c������s�[U(Z��KE$*�[QYHe+����ʢk���:B\asŮ<7��:��7���W1�k�t�u�(�T�N;�_|#*F�����#�|2]]y�BUɬlK/>�\�Ps�W�I/w_�ל�B�Y��0��/���ߔ�QZ�)e�UFj�*Kc5aJ��\��0�[���\1�q�y��g��O�3��5�H�e�U�0��o�=�&�(Z�5�����؝�q谡����/�\�:媃3�����W��$�_�W��,�pS������9�X*-��I�U���K[�o��5V%X���C�����2��V�=Z��j��H�|��P,�Xɮ|�ʹбCB�4�ŮYΖj�YKž:[�Y�k��Z�-Ȇi����F@C��y{�9{2tJ)
��K�Y�����U@\���Lu�+ë��#�9]rkZ��D��� �[(�^yߓrR��'�sN�͖�1�>ˏ\�3���=k�H	gc�<m�fyq�������V@Y(2�m�I������U���:���]e5�wZ(�ac2�D�0�����ד
���\�d!B�/0j�PN\��Ǫ�-ZXw�S��<u��.I���(N�|u����yy���������+��S��07N�=y���'���s�mq�|���OMmcձ��he,,��
)%�X�7>������
rY�!r�PL5�٠
|��Ǫ�A�YaA,���sE�ן_~q�Rˍ�T
�S��{��_So����
��E����t<��c�����9㦵��9�}
�_C_�
.�Ǐ���``���\nF:�[��qk�71�����Va`\�d�X�PJ��m�s�Yl��H�4��)���îʱIV
EA$��V���j�-oɠ
B���޷���r��5�ӗU����ݷ��Ub[P��%�E�aM}���x��nu�u���ϣ&�:yA	�.F2c`�Q�c9�n�垒��Ube4AC\;��~q�)h�ڄ-V}��`��g�Р�o�R�Z�����)��SE�KU�SP�Ye��P�Y����o�W�6{ayh���r�B\�&7 �@-^l�����o)��*[6�µw�����T)���	sT����bR%�[㭯/,����u�y}(ĨT-�!R- )@QB٥�����Mlgӭ�4bH�@�
�U�Qe!F�}ܘ�>}����N�c=�q��ƴ���D)
�ɳ0W>;v�~�/>�h�)��$8��&��ƇO���+��F)��" �TbT��o]��
���Z�gB"D@J��P����]�^����t��v���t���koˡ����u�X��Q��h(J]�~쳶���]�����*�mD��MR�e�ן�>�ycf�O&�O6{e5�<���?b�R"YfF	m2Za�<z]|<W�����J�‚"FM�
�Z��ZS{����,5ǖw�׎��k��g����z}p�|˟O5��ϣ��
r�u�q�p5�&��Y��zG?'7�5�cמ{���[��>��}SEߋ�N	v�4�ӛ\���v����ؼ:��Nß��w�:��F<|������u���}�7/WW�^v:�����/k��̽���M�t�u,�^ז�[ןks��k���J�"����u@��J3Ph��u:�q��I�;�_�����I�>��	�2��~���|���Y��5׎����{���zҳ��q�~�I;[51���8��/,��d�oNt��)�[|�1��{���ם|>}]��[7����Ɍ�=|X��=~�\=gO'�[���?���������j}��_���`����i���}�˳�|��}��yɯ���u���7�Ĝ��$"J\��J����%���������^��&�����|���Y���O?K��j�K7�W��r��=\g���|���Nz����u�<��������n�����Ν�������,����5���v����w�ʳɜ��fR��{;<w�x���Rt�<�=yr�z^�����������]��s�>?y�[�r�����В*Xd���4����9��f�g��r�]��X�ϳ&���N-��\�FD)Y�K��v��;_R�����mBJTJ���nr5:y(Υ��~��������L��M�{��:��0V�y��M~�i �D���$��X4��@a@IV�$�3ѱ�O.;nr���W~^����J�(FF�=}��(��֭�@����R	s���<Щ�M����2�c����ʴ�o�>�]�@�j�@�LlB����R���P!(ʄ���Ï��8�;[m�-c�\:��#
s�@@��TU����ǧk��N��/.ϟ�޳�:DP���N�V���oo��&)���L��%��k�v�55��ě9�cs��5Y���V��6Ye�s(�&@M(�d%(@�W$�m��lU�e}|=oO�.VU'�.<��)�*L��e��uך��������k�71�Cs�s�<z�������� P�U���t�ǣ�^|.71��=5�y��nso��2*��HX�h�oA`d�� J{���x}1	y�YAǮq�M��:y�/�r#?�o?�MuN�����<�NS��}��~�+��k|����|O�I׃^~��˗ZBA(X3���
=��q��t�����]]�K�7˞Ç\x�(�B �@���(M
�T�-!�v\~�e�-,���ő�ƷO/W��c��lW�/�n�K��O�N�V��:m�|��3|�y^]�Ǟ����
�(b�1��]������L�sĦs{�y�î:��* ��c 	E�m����\��y��&;)-)ĪB���A��H����﷟�_��TS����������/W:kM�]7��j��f��fR�A�!r�W�=2k�\`��t�s�NF��}w.I�}��� �:�D��P�"��ES{�����(�21J�S���z��
����F(Xd�I��s��i	|d����v��o��딼:�@Lh�g����$D���w������x��DNy��12$�����p����P�`e.)5�7��74�� ۳y6.s8�S;��}�&���J�'Y���k�k��ioǧ��*Ad�Ĩ�� ,mg�Ɏ�ŝ^�>I�&���D��%��?XU
�e(R��TT�P�@P��/��~�1)��F6g5��/��~r�)
C��xߟ�y?K�q���=�������n}8H��\���'[����������(�5,H#Y�(9�|�9���,c������aq��>="���@	B�IV%YJ�{?C������ʵ���[���
b~���=��>W����w��ǬC�_�O���?<�?I��?�e����}�����ߥ�[&5t��T*I�4R������%��!��bƧO&db	se��a(�)D�C"h@P� Nχ���l��]���}|D�
B���3���O�|��s�/�?�w��Y�3_|�?�~���~y��;_�u^����SSg>�.���!hK�R�R/e��rgx��u�ʼnX���8��[~`�Dc>�\��-U���- ���y���yr12]}�����0��!J��n�74����y7�?j���#�~/��I�?�?�{����b�~�#�\z/W����RD$�%��n(�B�|����I�Y[��'����BK�%�)��)���)
�,���"����~���e�3y�ޟ�a�I
	�S���v)���]�>�~�?�������~����������3y~����Ů
�!%KHd�����:n����p�^|��%����}q��c>�h2���@�b5��B� ��~��a�[~^���⼚$�P��]<_H������/7�v��S=�?]}��@��?$s�~qϣ�db�\��HɕcI����YR���=R��my��V3,�Ϡ$4(�("� ���ǯ��}a�����_/�C`�?Ck��ˢ�z~_Oe38�[>���Ig�Lz|��Qƭ�1�,�D@
�i�/,nb�U�x�<n9��d���J`
�P��������Y/Y�Z}|$-
�˷\�_
ߍ
J�F�SIsӝ�k�O*��$�2%E���(# )���eg7�:p�Xܓ�>�M(D�P-J����y�����=?	�2���ۍ+;��z�k�+;���M4�κo�y��=���,yɯ!�в��	p*������n!HK������������ Q�	���!U-�y?I����z>oS��U�P@΀��7=Ƴ�'ͳ��T����H`ϡ������Ǚ��4���P��ږ
� 1b@b����	s ���ef���"ӽME
��@�
��
�!{S��/W����dZ���H�v�]�U�'b�HҨ����(  �K� ��@%����,���&�JH�KL��Tf��h+:��~i�O��fD(W�s�n{E��΢^�}M�Y/=w�1��ρuӗy7n}%�U5Ԟ=� ����%Z�	��hT!Ur
�*� �b��P��i!Cu�'���s~���M�Vz�}5�J�R�rkp�4㫎�3:���U�`M�����8�� `��%q���P��B���j (��%�%�2
�m��l�:�A@��(��@��R���IY�P$��21M}p��!s�5,�.V%��"u�M�mK���(��@��HQ$��d�PJ�\��-H��L�X�MD"
���J�-1K,�@�"�6?C��cg�?��_c��~c�C�^Ç\�/�\z�/?�$Is�>7Ӻc�[�{���O��7�W��\��ur����}��z�_��_��s�{�����^+�]-�UE��?q���4��^oO�����>��<���~Wq;f�X���k����g�u����^b���s���3��6k��<w�w>/�Ϗ�r�f9�}�������U���5Z��}�!îZ_g�������7�z����w�]��<�����w����|_�]�u����3�}��}h���-���'��GO��|��O����G���������}��fo�|��5������_O�|�~l�?�>;���>?є#��|�~��u�x���K��G�~C�}}�z���3��ν_��
���:4H>W|{y�����t<oO������7�ߚ��_���|3�?��G�Ϣ|��_���ivϒ��?П����������>�[�����e��|3�������v�#���~I�3�N��o�z���WS��}��@�\�U��O翲v�_�Α���C�?�=�忩��˟��}�����:��ߥw�����������`����~��3�?3�x?�?�?��~��~��g����D9����~��п�_��W�<��/�������?�~_�?���-�Kyۙo���_����O���n>
��FU"|�����'e��Y��_��C�~��/�{o7��0���ח��O��������s�~���lk�������?��N��v�+}'�����>��v?��k�:�z>Q�Q%
��D@.R�_7��Ǥ�C��]3��
g���;w� K|���n�������}�3��y�=����}\}ח��ĵ�}/?��t��z|�/���^��t�B�>�}��m�8ֆ��~?/}zz
�|?���Ǽ됴M�{����<�Y]7o��O�^�'��ĩ3�[ܼy��rg�cq�z>/o�聍�S��q��cy�=~f�?�	�����q�ï_�|�s�[��	�s5�<h6�"R("�

�*�P�
�$��
��L��UɢU(�P�PјZH��\����P$���P�@X'���G����+#���X�x�ɸ2d�s�����G�c�����Ϛ�c揟t��(y3͊�c�1���:J%?���<��V>C��c�M��~`���?Ʉ�AGɔ|��N����O�ɓ&犏8E	�9+2�b�<��5�Y��S�Y�(gNP(>�+��
~f�
<��x�%G�(��M���:���� �'N�?�|'N�?�?AO�H��8���JtJt��̳��(�?N�:t9��!7�YPs�a�QE���p���9�	��)�	����!��B���~.��pdɓr�
�ɼPS��'O��BL���N�?�VU�dL��L�ȟӧN���)?&�:t��D$��[�t���8C�O�t�:J˟y��8B��W�_
�^1R����ӧ�A��>N�#�pC�1�`��F��"��e)'�̀Q�"P?�����@x��U8�E"[Œ%H�
z�<�&@!ȡ#��>#��C��H��()�8�`�TxȨ|����?��:u�fY�d$�:t�өO#��aD"��(��!2nVL�2�@x�IfY�e�fBHMgFk:γ�O���Q<B)��<�KG��ʙ���JL�'N�?N�:t�Ө�Dpt
!�Ʌ��׊��
�)�BG�9���B�FA������@VnFH���Y����Y2e��ʬp�d
p˜,��)H<��tf�2~.�f_��t��OJp�e��b������{S�H��,�q$a@*E�d��M�*1eԊ�1YB &t�8h�L,�7�ސ�u)*e�ET���ȣ"Ux�!����96i,�Q���̠�����Sp>�Ҍ�V����#8�4�D�CL�e1�8SD:�pD��y,V+�� � �r]2���1����U�]?�C��])���@�8�~�@!��)�U��g�Q�L���"9sV8��e�G�qX�V+�L��%�g8B^,�#�d�C,�'����(F(S@p(�X���b��F)�.�N�Bl��?�!�ɹ�8QqX�V<��Sr��ɼ\V<qᏖePs	�|2�B��P�dYB�ed+!Yy�91X�V>�%-��cɏ�%H�8Q���A�.���( ��b���c��"�A�W�Ǔ)Q?8N�(�f<�VR��Pu4d��B���:t�>+3P&�t�ӠTd�(�
��uP.�]U)�t1���'�qn
�Ȏ��c��R����!Nd+�WL����8y6M������TxAB<Ԫ.�]B��Ȟ4�H�_��c�:~��㏙*P���ɓ&RG��S2��@x���O� Q@�
ePa�S��p�q��d��I|d��I|d�$$AU#��~(ÅDFC�tJ'���ª�s����Eu�jt��:���p1N�@�¢�<�+Q�t�?�j�`�p���(�*ٲ ���W<��ćB-�c�|1�&��\��]�q��N�em��s��1s�\�FM���<,|�S�dɓ(�D7�8\�qN�b*ܙq���p��j1o��c��L�2nA�b���)�&Q��C�.���R$�N����eL���b��HB)�qdG���b��sG�!M7�
p�Є��|�A|��A�tO�FL���b�X���xCϿ�V+�>+���quC�����:t�ӧ�rb�X�y��eT�
C�	��?�<��':UH�f0��:���:�6��2d����?�gO�)�2nV�nVM�Y2dɸ2n�2dɸ�YVU�eYS&L�2n,���7��"s?��=9[ʷ �L�t^�:zdus�~d�k�UJ�dɔ��]e�B��$R�I��Fo�*5�#(X=2(C1�����e�_�YS&YS+K.���	������FS� ]6��G�u�gY�.�]�4���7�F)�&M��)�F"��f�ʜ��ォ�e_3P�3�L�2n�2e90뮺���]͝�Tjv�
Co��/�*�^H��ǰ��(XNތ�M�j�-'�1VB+<_8^���p�.�Tn:F�P�UR�4ѬMZ������MN�^cJ$B��?���liT���k�L�D�����J��_1���5
��x�ڙ��Nj����Ɔ#��K��+��GI�SJ�q��*�h�"�ʰX,�V����m�/��ŦS����к��Zy#+Z�K0��VTz��~+���hQ�i��SQӺ4��Ɖ*h�1תJ����uZz����nV��W��]�KNZ��sm��m
��ʞ����<������$I<4��K�ҧ{�Ρ2*3*�9�ˠ�]M|����)Q���m�����j�\����S����U��u*��J��u)F����!��CN��*��*��*��:�mjr��k��h�ԓRWy����A�r��]I.��P�ȕR��
�����/�"��V������R�u
��l���s�aR5R�w����}�r��_s�M
򁩯U����/ܕ��5�j��i�գ+�.�x��Qi�z�*��M���:�+=��[\[}�b��t��t�ӧ坬&~��
k�)�T�Jy���|,P��T���/���:�7�
��R�C��q��jV��N�{!�Б�`..gT�:�R�g����Vk�5�՚�Ҩ[7R�>eQ|ʢ��E^�u�
	Ѧ� Y�E��6�&3h|,��M�@��,��(��XQ�] �G�AJΜ��SQ��F ����H/������E|4�AF�!���D!HB�t��ī�N�l���w�$9��`�X,��`�Xr�X,,��`�Xp�`�X,L��`�X,��`�X,��`�X,dY`��`�X,��`�X,�Æ���C�H�C�"?��'N��N�:u�:t��e�fY�u�:���d�G��N�:���E&����
?�����t�eJ�R�C�5�R��pq�q��|��@n�F��ǃ&�8�T��p�?��*e��!�Mz'�&�z� ��vD&�!E�0YB�	����a#M�H�T��B��@y�z��.k�ʚ.���(�o�ZA=%R�B:t�J���j6��E�N1R� Q�R�V�L�D&AF0*T@R7��1X��АF+"N*$)2���@˜YB0
T�CŔ}s�U=y�eR�SD��H�ӄ�$�J������n㧕S�x?���D���B*�xƌ��y([�eh*(�+�Q�| �,�d"�@��dB�Y�H���10ĉ(�̅���StbB~���r�L�>H*t�F���K:��BeymdD-CJ�(Bq2!��3t8�t�?1�Q�!d��i��.��yd���a�ȕ��*u��E�P1#�2��*��”�#�q�JES���"
��<N�G2�Xc����)�R,�*ʲ�U A�����B��N��S��u�!��S~,�Q	�Y�.'�
3��:t�))�<]�+)(SY@��@R��8FA)UR���N�N�BHO���F-�H�+��T�n�#3ģ�:<�PPE?x?��:r�+�P���p8*���F�.T�(۩{A�)�<��Ĩ��n#L#D#4��ΐ��6�(�Js?;�N�LP�]"��L��d�Z�ʔJm�IU�:$���rʛ�G��*Rs|�H���(S+��5��9�L�c‘cV��o(
��	�e?$�J/)�j�sx]�
t�i5��\+�>����&
$b���k����Eԋ
3sP��T��D)�P���p���(��ni"��ƞ�s8K��(jS�x�J�1UfA�H�R��DB`�qt�FuUj�F�d҄�q�S��ɓ&L�2e8��dK*�u�?�Q�Z�9jֵ�	h�׷�Ha�B�*�9��Έ4���K�f	Ԧ"'s"gP�S���13�#���e�2dɓ&@&YQ*Tty��B<yT!�BUv��ZOo%p$��E�`���k���aR��F@�d"�eYS,��Tʴ�vMő*dɓ,���].�]�%EeYVR���e*�Kҋ&���	��z��G�4�]|<"�\F*r�[ɲd�)�@��ӧ���\U1FD�<웑�T�*YU�OAtAt诇S�J�O2�f��)*6���}"ǁpo�
2cZ�����2#�*>�	1d#�VB"u�B���U�n`|�"*V�j������(YVU�eYVU�d*�P@B@�LX5:f2
e�g�ɹ�=�@�I�&L�2d�Y2d"I��X��VS��D���_��"��,��r���? ��՘�Me-.���F�X�YVT�*ʙ
d�"�5t��6�b�o(�R
��0�BeF�~4)^�p%��s\z�MJX'�,�2dɓ&M�
��+�������;ꑕN�!��ѩ(P��R7"@B�U
{cH�$�	�&zĄ"I�AߦQ�/ǦWL�V����S�QR��%ztjg��֖Xө%�5�BB5&*��p6�jH|=D-�*dF�sj�'	�U#u(DuB�vBr��k8���Dc�a
�P��b�
�g�^�P�2c9@•Y�q�djN��ө:�*D���dJ��%���2d���2ҿ�_��8�ꉧ>̡֕:�H���;�B�i�^^�^����򟍤cX��&]Df�%�WD�Zq���ڇS᭐���XN��J����t�FS|y畬A�X����*�1� ��4�$�3=l�U�i����2,��TY�H(��u#wq�P�
�����v��ԁ&ָ�;��9��1��U
!Dɓ&L�2dɓpd���R�i����|m���(��5R���2��9�J�H�R��,c%_M�2�������VTtS&)�
1?2�$o�*�te�*��(DS����(urE*�A����@��ɗX!t2��5n����"9��N&�Ĉ�S���A�8ՐU�̑��N�Xi�Q�c*�cPղʙH�_��Vr��ۀ�N�]fY�fY��FWL��NUC$m�JV�
6�"T�S�2ʲ�+*ʊ��"�t�0<�X����d��i�jU�Y�p(I[�)73��"wxJk2����1�e��:u�fN�:t�_�����N"�#QH�q�m�զ`[�e�[U1>���0s��pdܬ����qU�R#/�AS��	�8�
":u�gY�d�ӧN�,��&M�:uc"���ӌ�KH�R���~�[�d5o"�z�w2� ��Ѿ�_�p_M�j70(1帞P�y�NSq��<)��(�(
*�'<�f@�N�,�_�z*t��b!Ӭ�:̮d������x�8�V�t�c�PF��`�Z�F�o0x�WR����db�I�X�p]��D!��:~��+ �#�7�0"U[5+y�\r21Q�I@71����P.�Q�S�U�r�@�4�&u^�U)I��P��M�,aP#��R�e.�F�R����G��)���Mt�E�T�����!*E8�J0TlD����W����e(�Y���D��q(�)�*3dOQ�Q��'Q�<p6��.Tɓp ,�T�iő3!�4&��M�5�T���_��]S1��ɓ&�Y��.�R���
�2e�O��ʫ9sHaur畖U�2��
��_/��]�/��U*"��œ�jf��f@!EXQ��?��ᗖ���ב�0Y��`�(���S�~��iR�f��
b�@˝�"<0S��)�	S*�Uc�+aP�M�G��Z�w+H�E�?�(��(��(��(�mZ-wo+z���eS�L�F1R *�2�V��^3r2�T�~i,��>>��X��S��U�sRM�P��ڋ��Vw�nc�eYV��b�e�Db�U�jE���X�$4�2"��T���t�^.�	��Ԍ��e궴^�"�q:S�dd�c8�[��բ}.�*��Q'��zf���@x����uJ~�4���E�W�M���ƭ��jL�G�>�i��-�lY߉2��-��:�XB5jg<�ngO�o4�ӧN�:'%S��?;���ӧN��m��d
U*���sK�t�^�i���N�u='jP�N��z��=@�]�"�s3�:~B�¦��U��Tk* x:u9y�O��ӧ����@�̳,��AR�SN���:�=�j��uoF�fY�e�߫y�������Z3e*�;�x��<_��������>n�z��2�9���*S%t��b��}�z��_w�/��T�m��!JJ0`�2o
�y8�+�����|�&V@�L�H�qdɓ&�dܬ�2dɖ0)�,�*dɖU�eL�2nFL��&L���!O`�ϲ��ɑ\���]�2nVM�\	 �H�b�Ӑ�X�$W��Ep�L��&L�7L�2e�eYS&L�eYS&YVU�2dɓ&M�,�R򌛃qd�2d�+B�!]��<2d܌��YJ �����)(ģ(��1A�ɹ�7L�2dɓ&L�2d�*ʙeYVU�eYVU��YS&�ǂɼ[
�$�ui(ɼ7��2t蠝��p�N��&L�2dɓ"x��dܬ�*Wr���NJR'��)�fY�	�%�'Q�H�\�J�@"Q@�'�G�L�2dɓ&��E�r�t�ӧ�o�)�MeQ�1dĬ�,�*ʺK)YVU�#GN��t�;&�ۋ�N�:t������2t��d�ӧY�e�fY�γ,�2̳��fY�e�fY�u�fY�p�,�2̳,�2�,�fY�e�f2�`��,�f:γ��:Ν:̳,�:̳�,�f0Y��`�,�2̳,�2̳,�:�e�fY�:~.���S�t�]?<9C�)��N�)�d��׃��:dx
t��W�#���ӧO���7���Y��+D۟G�r��'�eN�IuQu
y����-	�H�J�!+�4��Ѻ��

(��R�i
�u��cJ�0��׫�ë�])��UuWUFn��zF��b~:�����sWz�Fv:��uP�sF�ǣ(i�>X�V�V�X��:B�n�iף��ml'�2ư�.�뮲Vvw&I�r��PPܙ�J�i��m�?�q�!Wٽ8UOQuWY
����.�]Y[u���i}��6�N��i�u���4�v���x�|�⢖�tVη�+E��dD�L��_YS����:��:��:��)�I]N�o]�Wj�E
6q���W��^�j���_jTy��
��/����µ��y�e%�]%�]%�]%�h���|����ڽ��.m[���i]����e�
f |�+�q_;�:��km�N�;�V3�֚��!QꟂ��
��*��)��4t��\
vk�v��y�T���{JB�M�lgk[�N��7�2����"�bU=@�U�Zz
�n.nm(
R�ʥ�+�37�To���uU��L�zT�c�T�WV��qS횪�ީNY|r��� @�|�v�K�uWF��m��
q��0��E|T��IF�kΜmooj����
Wu
�
v�չ���V�Pm`T�Ť�R�#	U�����ʝ��n�.������T��'�Uf��TVY�j����K�����N‰�˨��Q_.��]E_�B��Эjһ��@m�5[n��:dn����ZU��J5�j��}R���}V���Ѫa-��ƍ1N7�م��[��U�e��.�T�Ѝ��+T��m��m�X��5ScZS���j�G�<�MEu�N4�;ʴ��j5�[_��J��n��^S��&Lr�����}�x��Wڅ[�k�ԡ�ܯ�ܯ�\*�
S�p_�pB��Vu�AF���m`T)�U&f�AX����a+8x�oRTg�떝iJb�����/���Ĥ�ZƢ�u5��k���XSUt�5%CM�D�a�ֈ�w:������/���>��q:���^�jU���K]�"�̡?�\/�\/�\/�\*�
YOE�)|��ܨ�V�΀�~WEiW�,�W�{��Q�iB:�_:�_:�R�+�R�*s���}�t��S׮d(�J��yp�yp�yp����t��J�����zu8��<���^��^��C2�/r�/r�/r�/r�/r�/r�/r�/r�!�{��{���ܽ�ܽ�ܽ�ܽ�ܽ�޽�ܽ�ܽ�ܽ�ܽ�޽�܎d3��{��{��{��{׽{�̽�܆u�C2�/r�/r�/z����ܽ�ܽ�ܽ�ܽ�ܽ�܆e�^��^��^��^��_���C�(�>���)�.<�S�=O������ט�po�y�V+��b�X�V>HxC�!��yO���b�X�V+��c䇄<Gx8s�>(�`��ǐ�r�O!��b�X�V+���^WNS��9Lx9NS��:t�WN8?��N8��}�>�X�V+��b�X��^$����{s+�[u�P��j��:��Ϊ�s���j����ά�q�/������ά���7εe�Y|�VTu�B*���{@O(��ǐ�,V+S���X�V+��0䳟GG�t�ӧ�uom�i�;��}+��p)��&'���b�X�V<��|A�%C�/��>����ɾP��Gӆ(�p�a�xجV+��b�Gȏ��Q��EҨ�Q�5�/�y-��&��m�M���ˏ��a�X�V+��c�dɸ	>J���ģN�A���DpѼS�mlf@
�����ǯ.+��9��8�V+$Ɋz�ؑNG�2�~����d�J�mo�]��Z_ny6��ܛ������ܾ������������=}xNC�}<�+�Ǒ�xy0P���0��r(��шX,Qf��X���*��7
�[]�}|ݰ�i���}�~�75���O�4�cc��V7���2���UQ�-T���u�cym�A��K�_�?�x_��n�$1��{�>G��iȚ!t�g���0��1�%ҋt�4ۀw��$k������e☸`1|�Tf��pЋk}篛��b�M�4ͥ�v���nå��U���{���t�n
����ׯ��j�{�ܚU;m���n�m-/R_���W��y$ӱ&9,"����(dt�@�0��$��,h�>�•:btĢ-��%oAW�N��=D-����1���+`
S�䆌�A�:QB,�Ӑ���hӈ2��Q�Mq*��Ӑ�������ؾ
�������W�~=-!��T���h�Wm�P�n�(Yh��5B���ύX^GK�,{��~��a�.��nn��m��?ʼ�a�HBS�N���q>ֽERڜ�g�,Ѝ.�:"C.W��pX����hP0��8�B���#(Fެ�����e(���)��}��EЪƜ�n|V+�L�0]8��] �8��+�L!I�+j���`�iR�V�e�Rq0�)�Z�*T�8b�&�3�b�T�}�ZQmW��9�K-.�Z���peyam�}��ws���Z�q�ݯ*���6�g�n�k�B���K����;ʆ�cZ�ԫ_��NW�ެcolk)[�ʝ������*�+
b3��J��:���͞���Y���#�w
���S�ls{�ofW�s�)tY���)�(�n�5Ҥ��iźaNb�A6N\9p���;,"z�LM���@l')k@�r����BBQ�
ur#vZ�C3H}�t�ڏp���K�Z����m�XV֭�^T�ݿ��ڝ��ZFɰ�̷:�+��~�l�àv�pOR�{��4��cZ�J�����T��:��1 1��Yb�̵i��0�`0f�6W(��2Y�0�O��ٰ���qX���,� &+)F]0�p�SX�PQ@!��`��z�PC�a���SS�Jt9�S�f���+��c���\ĉS1$�:���R�MSF����-OOTg��7m.�j����N��KmS�9<���K�ް�1��T����6�q7�ݛ�}�,4��Z��_��3��bŰbB$�g9V%<r㙂�@��27���A9�d9��L�:��X�$VX�T�`&K�kIN J�	U$,V( ��tND')� ���x9��c�;�Xf,���bȂ��J11f��I���Q�K��u��4�z(�>�OrS�is�\Y��Z�����V��J��.��]�a�j�௤�6:5-˭��煯�w�A׵:�؃�Yc���8b�W�e��i8�X�ǣ<„XS���Xq| ~a5+�B���N���*�B��2\���Y��P�"࠱��2�V.�;�2�0(�E��Q.�r���,���T�UNr�K�ɫ�۾(845�Z�.�{���}��h��d�Y�}�ؚ5>�wcT��tw6�F�ޥ{y.6��W?��C9N��t�`�A�f����#,]�)�
s]8�#��.'�`��Ie�z�2��\�p�bKs\Hy P��H2ǃ�V)��C�RΠX�ჂB��`��ҏ�X�q�}�,.o)���ݩ�j]��-m�G������0N��NY�b�.g(	I
SqA���
�,�(6W(����qX)J$�{�[��ɟ��.iNY��� tIR�s*y��
P�5"i)NS0DkF�^@����]�ƍ�
*��?��j������]D�u�GX�Z���.σ7�&1BQ!���B�qC�L.8�'�B`G����iJ1�u�)�>��rc���Ӆ�g��Ɛ�HI��İh3*J�����U��k���Z�Z\�W���m��Y�[�ڎ��t���9m��n�`h�n�
S����[im�1���5�n����
_�n���6�m)GU�tM��n]�n�q 5lC*�kFt-�\[�r��X:"Y9A	c�~Bx:dɘ"dJ�V����Zu�*S�8O1o�� b��%T�`˦P�U"c���\�%c�;�J?��jf��m.�m��b�F��������l�;��:n�=����^���}}�}��}������{K�\wf�u�튲�GF�������u��a����5
���T+�n��j[T�W��,A͏�p�z'��!R�EI��j�U*Ԩ��jֺ�)Ժ�0����="҈x�V\2��YK��E�1����L��+)Eh�\R�
9��[�l������.p��i�
Bs���1��R��ͧ��?���_�,�r�#�'NV�BWT�ZW���D�+*3�[���N'�ʏS�=m�f2�$�Y0��_�@�X�ӓ��o�5�aL͊�a8�:���3�b~������G+&�GOJY4����ɥ�4��h�>����>����:-5u���N��I��A$ӄ��0vt�ov`_s�ovb�qG+6,�|W��ٰ�wqVR���qZ3�o`6T j^Ҧj�<�O���̛�
�&j(	��#/��er�o+�r��X�d�eYB��Y[Fr�I-B�B�
���Ċ�p&zux�ZqiiqRӣ2�[�$��ei;DE�"��LK6X�if�2�����6Ar�J� e��r��P�2�s0���#3"}9���<����"�c6H5iS��$��U�V�e��A�ɂ�X&L8��f�"��ZJ����r)���9�p�Ӗ|�n�]8�@�x�G ���K�����9a��*���aD�Q�h��r��D��L��2�1�l��D�{r�Ypdbs0��rj3�N�'ә��1@b��<�)�eJ5���=AT��Ť�14�f���"�_3H��pq��-W����=*�>O|��_D
R3�o*Q��I�0�Cf��!���E�T��}R�����!�5J��++�Q���r�9�ol�aoiq3W6��IT�`aiw
�������Y�a���e1��S`ɣ��b#���ӕ[yF���kM/�>�̘qnՂlX&)�H�eu^湬+�Vוi�ػkmj��������5^�����g��C^���m���ۛ��t�kK������������:��h�V�;�ڢ.�.��=��i���1�ϳ�i�ol�彮��흴��3�ݥ�ڶ������?{vp�;_즱�i�F��v����;n�OD�5]6�k�뛉\��;����46�����z�ok6ַww��n�s^n��Xޝ��ޖ�����ҵ�����;U��I��j�+s�[-�7�l^�xvⵓHN�)>��:��-j���n�R�F�&v���֪�{7k��[����o�{+�^n.�j�Wp)쪱��&B��zF��'��e���9.;]�k�����>�v��ԶV���F�y�}���ݨ��SB�ۓik�{k��:���m9P��7��WL�����w�%�[��~���{cC�/�i�w�ϫ�Y�j^��c��?ɭ��J�Se[Ώl�����W���߹����1�j�,e��Z�[��RG��٫�t�������YN�b�gz�M��&��[���yw&�*ݭ��?�}�B���z�߸�˹�Ӎsk�!k�	J���<��f�m���hkU���i�J��!hzF��t�}�Ӣc�!O�N��~b�qmm���"�J1�_[��F�HW����v��
`G��޷W~�6�+QԅE�c����Gp��S�:薡VU��a�5r�dW�kK���~J��t�]��w�����}A��'>�#����}���a��w�ن��K�@~j����}����^�ڦU�,��&L�e(LT�lV(z�Q�:>cg5�z���ߗ�gQ���A#�=��=���k��z7;�uOtn��oz���m�_R��'k�V��⎭��=��:�0;N�sl�t
�����pm��>��t.�iԶ��=�v�
����[���W����^��\�s�av��ܞ�О��z���iՔ'�Kj����qye:zUJQ���7�{Z�[��vkz.��u;��l+둾�]Ӱܶ��_׾o��:�)wcE�����:�tt�zH�9�.�H]�T��f�T4����[mڽ��}:��F�Ҏ��ou-�HV����껫��p{N��n��]�޺��ߵ4游�hH�szj���v���}�Z�ѷ=Mpꚾ��ij�V����mێ�m�b�{ߴ�[�U�z�����s\��[/r�����t-�t���+^��&�����)�>�\9�X�	��/��I�<h]�ZՕIH�Vw��վ�)�⃽���i
��a\(�W��@c�ɰL�+񳺍$c�lD��qs�.x��`P{[���MhՅH�Ւ��Ӄ��(z��Է�O���;����.k��2�YU�:��j��dV�Zns���<���S��ӎ\8qǗ�+��:u�:r��Y�t��<?�i.��(҅���bJ'�>��ѝ�~˕�Ugqҙ2�������K0��I`�O�σ[��R�ÏĘѭJ=!P�J�!��O<)d'-1̳����fBI�N�×�W%`���3:td�N�Q�PW��R!(O��c�m��X�g~h�B1����Ǭkv�֗��N&���ò�վ�����?���_���_���}g�=�Ѭ��b�UrR.J>�"�Xpde"�r�@59
����+p��$�<BNj�%�gY��d�8O�787��s7S�r�*4�F���9;�2��*c{5b�W�ŸWc���[��m5
��8ѥR�M2�O�wo���B�~��*��뽝��kK��wo�k����o�Aln��?p��v�����Nd�F5��5R��K���L�c*��i��t�F�g臔@Sb��Ν:s�1�Ý�☬y� �iyI�:�c�(Ӛ�A�`��LS��SU��;+���q�v�si]���lj�c^u��������{�X�{��L.�iCO�+Q���eҨW�I�{:�6�SҜ�������	#�y�j�Q�DI�p�	D��=�H���b�L�*�Цҷ  ܣ�)�x�_Óy4��a��,)��e$�/i�W1��^ƝU8e��Y^��^��L�¸�����k��;��3�5�͊u�n��[���Y^���q֧����?���n�?T;�����-�{rJ�*�U��c�D��^�3Jae�NQP��,P%F���Q%��HCz��<1@#���<1��@��֬k�l1ld͖Zf@C(9%�b�i֙�U�i&(��w~����힑�*]��ZF���A�~��,5M#W�r���?���4N��o��_`o��~-KG�t����-�
��?�*dǙ��c֨���Ԗr&Qct�&P�#Z9#VY�����(E�q�1a�Ý�.�p	��K���,�b�8��(�����e�|��<��D+��U(�������gR�/Å��՝֟������7���7��~����+�~�{�V��z����y�B2�T�Y�P�	���`�@c��c����O�bm�eN����y0X�8`�X,yq|/�8b�Lek�R�2gF!I�b)�N��`O�.�q,�b�X�+�b�$��u:��eo���pj����Uv�趝k+��]�If��I����F&��TԭF֭X�Zt���,�E��eL���oDt�l�I(N"�'-�6O8�Xqdž0��a�>�U�[�1.Y�ayju��"�SP�8ؗA�gX,_�8v{l\m�m;H�;��ږ�����ҿ5�b���o���T;��sh��=sGԶ���iwgc��-�ѓ�c��Bi�ww���Ҍ�"��N�l91X,V��6�X&B�RhҔbsfq�x��HBQ'���a���_�X,8�X�+LV�n=��L_ِg�5>����c�]J��3�X�1]���v�o��wYkzN��^���.��l�kj�V:];}�r�9��K�Z�x�K��4/�J�/��Ó}<�6����2�ܶU�.�`e�nG��� ��<�"�,Q^�l[-)�����A9��鎦{��%��r͇���|.�]ĭ�{u֩�隵��쎣d�R�:�u�=>��ȡoJ�?W�?�]�������r��ln�
��	��s͊r��(����1�3.%	��1E_����ǂ���܅������Ŗ����%f(���Z�5�ʭO�!��5�5���7��cԂ�Aw�\��|Pn�K7m��(���S�Z�w�V����N�X�n�m\�fIY�5
���f�O#Ԑ��O���������w<_��1��.�q0ѬL�\R�N⼪�'+�:t��:����-�ןy�+~�u��ж���ᄑ��^O֒�D�v�~���i�E^��8\]ԯ0�ӧ�ܸ/��O�DĐs*��R����A�b�>g��~��>��u�s�ӕi�|�.�#��T�wpiB��z�NS��?�u�냭vލta�bGu��SXԵ[��:λ�����n��ӕ�x.�#p1LSp��`gr��G�1
�B�xH�''<�x��x�y.�e�t$�P�T
qsR��c��#�<�/���G�E���wky�v~���gfn?��j�ۗlT�O����َ�Z�߹���4�s�3�2׹��P�{Nj�c�P<�)�lV<���]gR�#�8e����cŹqZf~�E^J�*qnVAV���Z������L��EԮ��L����i�2�ˎ����Zje��w�v�|j�Z���:
<�"�E�dYB��eL�����)�b��)�nvP *��,C��`O����&�cN��
��d$��&	�'���V�KQ��{B�i�M���u=�{q�}�Cshw:�l���ݑ�vE������N�j{�L��;�T�Z>�GM��y���
ug��s�-ǧ�:�����mϷ�h�n,�7+�*ʲ��d Y�B�
ʲ��e(Ħ+)YJdɊdɸS8�I�0XxA�c�=|;
��K_jQ�!�&ɏ����t�l�˧�wn�vь�v�Mselk�ݟ����&�����f�xh[��M����z.ꭿ�ާc�nn��,N��m��[
7g]�;�Jܛ�@{-˂Ë�2e�L�2 ���,�*1
�.�YE�t�Mtтlr��e)�y&M�c�:E�8NS��*x8sS����u]WS��ѫ��À�i�U��ԾСħD��Ĭ&�ɑ2��YB0Y9��z��ך�Q�@��n�)�s<��O�J�t�o`�M�^[R�v��WT���E����V�E}G�;�N��]��m��[cm�դ�mos�N�����vn�a�w��Xm+��m���ܔi�RH�on���R;�T�6MΉ�l��@�z��u+����>}9[�U������ˏ!���dž(��KrUۚ���-B�qi:ޡ�kc��R��sQ���㫩]oM��n*�+J��[#E����z����Nޞ��_%�����k��՝j�dh��7u��yo��>�)o-����w0T��7˴-�m�����<1Ꮔ�ӧs�:̝fY�p���fNQfY��p���,�g��Dfp���uB���P.�]U�Y���p���.�]@��up��g�p�Eu3��h.�Vh,�Y�3�x��u�x��g8Fa�@���,�g<Vp���,�f0Y��`��,��,�gY��,��p���]E�'<�y�O��Ǖ�?)�u�)��:t�ӬS��?d�?)�Y��Ve��~S��Ӕ��r��)�t���q_���蕊u�)�?��(Yԯ-[f�
&�K�B���8�sE�e�o�N�c{Z��섯�}_o|�v����_c-�#��S�5ۿӍ�ݞ��/��4Kz�m������z��6�����Yj��M��"+�C%�^Ӟ�nO��ڏ�A�kz~�����ε+_��뮺��k�
��-�5[}��m�p~���߶��-�ڽճ,����
7�����5��sF��#ph(����_�~W��_��k�pi4���F�O=�?:�3�p�;q�>���)/�$��K�DB�Z�{��l�ҧڹթqڊ�*˶F����~�
�ʌ�ؑU�D)Q���z���dE~Ȥ�O�|�4͑��ݿ�%�"+�DV��.����؋�ϲ��ʊ�**�iF��I��o�;ju�syv�m�`��w�
�������=ؼ�Z&ܥV������WWVw=��G<���d}��G�ܝ���hK���/���L:-����s��[���P�l��(oMw3E׻=���;�kn{}B�����?Wp+Qݢ�~��7���r�T}?J�߽���ԭ#u�>ʲ_d�/�l��6KZ��4�]��V�{F�p,t��5}�G�vw�m��v��Z�;�k��p?��~���kۆ�_�
�n�~۷���l5͗��K���շ�dž�������l�����y~�ً��٫��^���GjjZ�7��̹����ݛ?S��B�w�4�Z��6f�OH���gy{�'o7-�����Կu��~�JտT���J��]yO��5�+��4����mS�1�n���i��p�ݯ�4�7@�;?U����+�[+i��n��Wܺ��>���-��]cqk��;�n��n
7k�
������4gQQ��J�v��y�w�'�U���"��wV�H�tv-�Gxh�EŒ�}���v4�}�з�i7=��״Z����wc���E�m�"߻��N=�#�7�v�����(�~����m]&�W���_��A~J��+�~�&��t/�@އmի�*�n�;��R�z���������_�=;���Ӹ�ߘ��_��_��_������q�V�Ovk6�f�H��47����x��l��ǖ+,VH��n��&�}�-�i����/��ƭ�j�t��ږW�=���V�Z��z�k��Y!�Y/�Y+��z
 u�+zVգN�ڟ�h��>�m;O����T���-t>��=�z
����u=���ɸ4�+bn��{�������F��kqo�s�~�&��M˪���Z_wk+��a_�w��i��f�~��W���]B��]�ӭ/����V���֤���׶֯�M�ym�+��ݍ�rZ����'qv�=ͪ�p~�;ث���_q��ڇꟽ�{�uom[旫hwϹ[CK�Q}��t߿�*����߸N�/�'t���k��5�{��7e����}1���~����[Pֵ
F{�pY���wm]T�Sw��?��j:��^;�]���__yk��-}}㯭CZ�uZ�M�km.��#�
���e��,�i}qiu�����ח�z��^W5.n#��<!���_~n�w��"�浽���Ot����ҩ����������}���T޻��;K���'{����_|nSzn
��n�-��Ѭ/�5��N��n=V�+b�ʞ��w.��k��ݚ����ʯ�5Z�y����?������r�j�j-_M_N_N_NC����������������������|��/�/�/�/�/��ӟ�����������������������|�}5}9}9���������������˗��ӛ������������������������������������������������������������������������������������������?���+��"���&���z+B���>)�*f��L�^���hhhhQ�zF�%xC&�<�7�;�X/H���X��o	|�\�MMMp���{�!\l�L'�ȋ������q=�xn�!9"{�nhs��N{HS�%�R��(P��%�J�[��KfeI��롎����FX��D��;L�7�f�fe�SiR�R#��J(S�m�G��K~c���gj���c�ԩ-��ۨ��l�k�?[��^���`غ��D�+~������Co�ܙj����k�Z+U�n�b�]�]z6�n���;m�rN�-����m����U��l�ˊO�H��X��Zm7%�z��*nԩQK�GՍ�*�iʎTr���\�m<��e�������,�6��b�LwNeL�/��ԡ�_�һ��K����XA���!ު�6�xުm���l\����U��Ⱥ㘶��.�OV�̾�,���wu-�v��7[fۭ�2�C�g�(�R�I%a�R	x��HL������9~ӗ�9~Ѿ��ٗ}��j�k�L2DpI�!�-�ΖV��O��?���~�׼�r�W���y���ó�y��V3��dd�\����pG~˃3#*`�Ξ�dg��%v9�H���23�Y���ǁI�c�cmߌ��>�nYxd��<c��%�ڜ-�Gӻ���fo�J%�͑[Eu�e��`��~�r��=�0�Q���=�̎����;�v��p��G�̄O��|��%���E>�̕�2���Վ|rJ�/�!���x"`�0C2?��^�;��P���8=}�4gLg\>��Fu��R_�7�=J���6�G���k�$ȇ���p��1\��q+�$w:��y�L�9��48z��6
�!9��<��9̮�+uY���xT�ٙVI��O�"Hy�܈�.��N9��ۂDpA�~�fd/f2KE�47uٜ�9j���J�V[Ox�	m9IJ	��^�/�J!?Q�p��Ƕ���p���L�D�fg!6Y�%���q�����Z{f��![���z�2eHu#=�bns�b�Z�u�k3��ˎ���o�4;����#	2dxfFX�!�A+���OT*<�"�Q��ᱡ�T���:a�1=�vO�����2#��C�Pȓ�fT�\g��J#švsw)k2�
e�w\U��|���S>�8`�R�G�#:��5�c�#^�2u#��%\s�1�D�x���67�fʕ*T����	�ӏՇ�	Ѕ�A��!b��C�3�E�]��}�J���"=�?V����^�Wr���V�������[����o�g5�5�����.鷝�M��}�	Ѕ�$o���Y���o��
�+��/�g�g�o�����.#���m����`���/^����Ҷ�����Y�V|��֮������_�n}\U=�&Oio���w��]���O���?'LJS�o����bO��Okg���oJ�ߖߊ�_�;���g��.=_��6�s+�~�.F}��ߊ�͂�����v���/�ۃ���J(5��~��u�:!N����yN����_
�x�]�a����a�3�q�.�?C����~�Cd��Ya?�+�����`��Ȏo�T�Rd���bm"֒�n��yp�d�AY�÷��%IT�9L��"���&J�*T���Qt?9��Pk�F�Ѕi�Ki�����s���w(�����9�aݻ��*m�(%�u���FE�k��1[��w��K�VKY�r��q���/���6����?oQ��ϯ��>���+-����N}fۈ'��;��9�s�W'�D�p��g��g����~�{K}�dAB�

�v�]d��#i�mF�\�-�+9n�Y�w��K�s���d�	[�m�����z�:ukp�/�K�B���P��yN�ؖ���4s��9�/Bmb���*+��q�"���lYO1��7P�Qs_O�9��#������1�q���ޏ�y��^6��EW�_��U~�YU�}bW�w�Ow�Ow�L�c��[��#���G*<�W]o����K�$�Xڷ8�HT��
��X��[����#�x���}D��[]��Z|#���ʶ���[�n齷�.�SwN�ʶ��J�.m�	X�I�%k��o'�vX��1�s�rͶdT�Q��ƅ0���.L2&�'�#u�*o|�J�*C3�M�,ɴ�&�J��1[k����R7�b�J���%��%#n��/n�i��7.b�J��F�R�J�7��s*Tv��<��jM�	K�ˏCCCCCCCCCCLt444444444444444�CCCCCL44444�CCCCCCCCCL444444444444444444444444444444444444444444444��?��˿��Y~�h����wm���ۯ�m�����O���]�٣��K!$̩F�y0Y�l)˗V�D�����V9��N|�S��})�~>��Jsߏ�9��Ҝ���N{��=��S��}-��G����n{��=��S�;�G�)�oJ@�Uu
J�_�U�A�$��f�e�6{^�_�K������C�����<���aVJh\��#�{n��+�d���}�Q��	
P��O|EO�#��x����6.�������j�5��ߊ��W�G�n���|�շ�����.�l�D�oW^��]ӷދ���m����n�?�������	$Z�	d��|���U��w�����um�_���:O4k�#ʡ�.��{b�4����ۡ��ν�l���[���{}�6H�@��cf�[l��;�
<��NT���B���A���ey-%sIl��h��5�dg�غ�MN	��)�Qf�xZ�Dҡ�*���d�h��~Z{�S�*���j۫�K��3ܶ�$��J-{ 4���&b�W�����h�t^� ���M�#\_��v�uE�{B4�/���~���ҋe-q�B��Pu�N��Y���U,���	ޖ�wY���]U[�%�[Q$�޶��`�\L��O8'��I�p���3�I��^q^�//��Ee"�	q��L^�Nh����!�u��T�'t´G�����h
=�l��_�F�h[�� �~.�-�1�l��e)��d�!Z4{�=�<���O|EO�#�w���{92n��G/�"�r-M�bC܋ts�G{l�/��n��{#�b�bł=�3�,�`�E�H�Z��uƤ�2�p,�"�薸�gi�Mr�薸��=m3�e�$��gD�/������U,��3a;���ܲ�NkZ�cRϬWԪ�����#z��H˲Y�H��M�EuB�)�;�.:�Ne�G�g90UCX�Tl`.&@�`Ԫ�ʊ$��%���"�FWZ�Kep�e0��LB�3|޹�Hi�&��
��%ßT;���-'aA��t���'O I��
(o9�[
Rf*!�SbR����\��������T�
��>�@L�������-YQ��m���ͳO$p�@�AR��@f$F�M��NM*�^uD��jv`�b����Ϥ`��G� sy M3���\�wFc�V��-lKpJ�5�<9�{�{�q���\H~�ŗ��Y~�רA�; 95Ĉ���5+d1�-:��4�D�4l����	�ƨ��h�����.�N�U�<-D����z�ٿ��(N����G����C�#3L�-��2�r�H�i��JR}
��)�c�J�	�@�	�9H�[n�0�u��QqR��T!t��8$�,xB�G��5��A�tZ�5%'��/R��U%%S��P{�ზg�~�٤4�v&��0�g�e�V����=t�
Uf*tҼ��Đ9�ۡ4y}Y~�/�Ž�d�&j=��?-=�?¯�v۠b8Rn0xr6yR-�d?&F�'w�h^E�P�nHJcl-B�Y|�M'�x0�*@[ ��16�㕲J�9�R��M:%�Blݟ����b�J%`!O�S��P��;e�&d1K��x�B�3+Aٲ��tS�H��f�&o2ޞ͑bf�	"�1b|�ZV�$�P' ,�L��v�u����%y��5rA:O2	L̯�H�tNFQo�EܖFχ��6��p�]�����h�Q���Qͺ�H&WA�Q0l�ā�S�o7��.�LH��܁���bc�9�2,��#v����5J<ۮqd��uJ,�h�87b���G���X��Fu>���f	��� E+,��u)(E*�(�բc+�	�Үb��—X�z�+�P.	�vS�K��q��P��ZsO
�����v��ETMn�ӯ
f�#��‘�����i�y%2��}�Gf�a��-̜�t�$�U}B�(Q��N��}��Z:��N��XaU
�(�“�����u?TP�k��)���D�w�i��ur��1��S�FD_�l$Y9i�
p���z��j�D�jM����������!<���-������
����f�XlMs�&�Aυ;��ĈB.����u�]đǫ&\�;�=�zޖ�L���Y9�P��.�r.q�V	{�z���g��<��m����ޜ~�+�p틼���^��Jѣ�����[�������l};4l����>?܁��96�Ο܏F�A:�o|u���ߵ>�r~�m�co����DY~�H���LKށ��:\��h�(�zZ�tj�N����R�wp��/�s�\���=?��|����Y`�;�@=~�LJ�T��Ѯq#�6JVJ$��,L����J~o�W'PG|@�&jB���3�J^<���h�P[�KA�!
0K�lȩ�zW�<��]�(��;W�Ѥ�8�nqr�'�0�o�/���V8&w�HQ�ֆ�U�O{�NP�s��@:��Ӈl>�D��o|�,8��R�].i�9�T�?R��Sj���5��f�!Mbn���6uD8��(�jڣ8�ya������g�bk�^�J`,L6� ,�(2��)l�����l��]�/�Wx�e�ʋ<X���
�>pY9�0�L��R����i��@��-۰�n��Ý�Nh�Jۥ/��7Oݐn�Ӕ�-�����s�
�:�%�퐟�WxЩ�=%��L����)m���N{#G[�J[b�xs���Ql����8c���ŋ��%�t�\��'�l�t͗l�y���h��P5�>��ӻ�@�ty"��Ӯ,��(ӇN���ڔx?nq�|�G,x^�wd��6E��qmѷL�#n�������D���Z9"B㣹m�|_!p0w���	��XzS�����M�NpM��%/a�����-�,t�gм�)m�RqN�;-��B���0�h�|sJ��	P'n��	TR�u���􇆘�3��j�.&WU�k]x!n�FR�m�
�PA�H�:!���)@��4��q�	�t�!|�T��=�#�I�u&���mCt�,�{���6��3Fԥ���a-�*S�$�l�s���O|ED���owY9�\�Y����l�f��W��0|(Uӗ��G��m��>T����LF/F�%-�q��M�'X��rV%-F4��&Lh�+Ud���.�s�6L|�e,r�6a#���]0v��zCd���=�r��))[�_�6Y�߄(,�>w��KQ�m�=�dɁn��Y)|pt�{ɲs�1�%/�'��,�:�F��l�#H;`�=3e��&l�]g,^�YoɁm��l��6t���ȟK��%-��L���e�"bXȾ�J<
Zg^�d��.b�n��6덚���5F�'dl�5���c��9y�b�E�"�:[`Z'�艍�ce�ӴF��A������&ϻ�
F��Oe���a��wY��7DT)�V�rI�J�i�EJ����+�5r��YZ�*�q��JH7ء&u��.U�Co>�>Q�����V6*��Y^���m.a$�@��MKH}=g3��vcT���in��e��N.j�ьKj�^�S�sSaX��)��n�}�j٪$ڏ�5c`�=n�?-=��qWg���iU����Q�Nz�sߖ��wzɤ�1[�&RP�FC��'l�׻{���6I#l\e�e���p����]��L�|�j��*��57�Nz��r�Y"5G��6Lpz�5Y"6F΀�i;`�>��J [�.�僷�,��m�Y 5�zI�d�$w�
�@j�a8'jl����ӊV.bR���,�=|�l����"5E�H�$�i:��6�R�TĔ6@&��.�y`�;�68l��빛"@>v���a�E�ޑR��tA�$4�3��}��L_n��#n���Dm�uħu�"��:�	ۣd]}�\	�t+Tl�5�:�l�f��;b�t�i��*s�Ѷ	��U;� j�5r��w��۹�|�X�q�
|����I��q+O9$)<��];�ImR�@6m��a@B_*H�*��.`��"E��;��aB�O��6�����˳zn���k�
�u��'��(�a��*�v��Ԋ�����M�=}�L�-� HI6�*���v{�����Q##�]�|cRt�v�\Z�5F��A�'\�t�B��Q掯,_oJ�w$_o@ϛ�WLO��{����]$��b���T\p�D�'\_�.sD�E�OSH:�ӽ�S��P�:)&ԝpdw�G���]�
����2<��a�M3�r@�;��؝�9�����:�1�uɉ�1q�����X�v���ĥՏCs��$�t�1%
Pd&:��:��RI�s�l���l��G@�1��:N��9���_b����X�1o���9�q ����N~�Z�zڶE�ˊu�m��j�J��t�\s��;X�V�ն%;t�w썂�v�ͳ�ϝ�o6?�䁽)\���T��k:Ǵ���G'�����W��*{Q��6
m�Ӌ�l�q�ESH�4)Bv��?d��O������>��;{�;%�,M[b�M��l�h'��';t��D�u�K���L�q�66t�>vرV�^��.�ҍ$��B�
� ��q�V'ם���;������zK�����S�Lu�W�9 r����gLO�r@���|͑h8t�>~���vv$ub�����;`oohvv-�����D��K���:�o7Cs�'\��.O���zS>f���[ǯ�gݙ�:F��-۳W�֘��u��۳V؟����g΍c�c��D�9t����;��:� ��F��9�֜o�φ/��{#W�>nؿ��"cF��U tu�H�:V-6iT�V�ę,ïo��Y?�;�:�2�qm��r�����~�G�l�ݤ{kynXª+2m�@^I6k.��^�*B��%i �“0�����]���s�9;������M�U>p�Sh��bs�I�����"�5O���Z|͑�iD��`o[xvv'��a��z�(�{ߞ��Y����G>g�o?�9�v���t��5F���q)���O���ļY��:��"�?5>w��t;;����N_}�t;;����S�‹Ui��x1h��>f�%J��*�?d:���"�l'���"/��{#�Q���@���ߕ��X���q9����w�k��׶͐��?O��-���V<?a����WlNr��$m7x0J�?�M�����?�'�{�����Q
�	�4 �Y	��l���JZӈ�$S	��C9iΛ��J�L�b3J�Z^$Xw�8�������Uֲ�\�f�7�J�-����)2��)�γ5ҳSYR*�U���@B��#x�k ��+r��ĸ)+Eo�!.%C�ڛL�e�Q��9�
Ns�f���5��-��n��-jRb����V�
����эA8�T�
���>�������
ZWO��<B��[�XB`b��c�{�f@�i�،־�Uo�v�,��i(�����ZB[e�dR�
;�	���a=�1�Dv2���s��[��S�S�Hs�>I����KO1���.(g�`IVpN���cjXEm%W�V�"�f4�.���xZP���Y�o�4�(e8��L�t����]�|`W�O�c�)z;l��t뉕�f���ĝO{d]#�|�]���|�Ȗ��l_�6gs��d�z�{Ž|�~��9�z~ts��L�����fw|(�s�����K�-���|����'�[� I_}o����ۿ�'��m��s?�L�xQ�3�bR��S6xQ<S�����b�K�ۻ�A%V^Wn���;�JA�1�=8%I���Y�[bg����ַ{d|X��=h�������9١V�십�۽�'���[fȔ��[n�|��މۡ�l�*�OJ�N��֛wv�ʤ:��{ I\���l�Y?�"�a�������B�)�p���`�>����b�����j��!�|%a��+s����\̝UCԋ��%�q)ĺ���q�gG*̪��3�s/e�)}U���=�(�jR�$FS����.�-��.��u��Sm�6�ҙo�c���ՙ��@�^Z��\�a6��מT�y7�EQ�����,u�SW��2i�]p�%'ړ>oJ��krz��@]+�'f��.�7_R�sʜ��Ơ��������#e���w.�r��-���ǫ�S��R�\)�F�
,����?2L��֫r,������m�������D���B�Х7ڊЂIH9a*�����ASS�;YX���ʆE2�ABm�KQ�eD�-=�~u�c	L�R�qϳ���z�0$�nwF�J���
Db�!�6�����"�6��8�@��m�tӥv�Q`�Cv�c\O�m�OV9�⭷‰���69�"�m�ŽtƇm�=X��n��
9�Խ��
�OlY�H�����t&�)�/��廛#�n���h���wOV
@����/�*C��Q"R��d�Q4��.:��3��h�:m��5wy ��
�y~��f��i�r�������w(�v9n�z%�M��,�Bz�6i]�l�n��[n؜̴������~t_���o���W��k�Fxz��l��oWW���/<�G�z���
$��g¢���lۅ�V�>@c�U�T���n:�&݄�R��F�O�,�D)™�D��n�1aݟ��s��7K6�:�xfދ��[#~x���F�wo�:��Oh�=�o���6�8�=�%�qå�f�Վn�����Z9ۺ]�`�c�n�����7�;m��)��5n��ދ�{�Z$t��#h��[�6� g� ]�|�,_f�[4l���"�,k12��.[0z�8c	�؝��
VM�[~�%�Z� ٙ�`:��»m�│m$h�,���5}�#h6�$D�*�N�_LH��@�а�r���ϳ��HL�D�ܱ�r��;"�9������
�J�uG4c�ނ5��>}�����-��Z�j:+�d�$�\"E�;b~�dm�!H%*I*E�0�-(��R�;�Ƙ��xr��q�C�q�C�q�C�q�C�qeC�����K�����S�����S�����K��������\})��\})�ЏǏ������C�q�C�pI/Trp�ǺqKr
���E��i�ב��@�򟛑��ƒ�6;l�Ճ4���nFIa`��A�:� b�f��g�2;��uzC#��l		+�$w�زxg��f��G4c��$d���8��3Tsw�7#"��s�o��V9�RV�#)u�u'c�3'�`�;�6�d��@6��5��GQ�e�1#��K�;�,*�=%�s��'�ŲX���T��u}���J�:�����\��fH��05%8D�&ri�OX�:Ψ3�@o��F��КSbTl�,i�u�$$h<�.w,?���@���	�|喤��^�b��=I�V��@�q4"V��N{˖�:�"���KvZ�`H��W+qj�#
"Ѡm3t�E��ڱ�q�%���XF����+qj�a�2�Z��纩ZN�3N�M:�M'͙^uE�
pK�I%*��	t>�DHL)~lJ�'�*�:��ͩN��!&Sӊ�����|�y�O�-�Z� �$��+0��Z�f��j���f� X���M���9�…[�D�@֘N��ʃ~HejO�	�ѦV(m�m��}R�'P�$�$�Q+�v���;W+B��V^nV�%�عZN�H3O���%`N�	����j���
�ޑ2�#Za6'�.w,*�},�3��M���Y�Po��IӲ�5�pJ�
f/%��.V��[t	���V���mL�To���P�g�p��.�"d�o�@��i��S�&V+�	�%�v|�	�5e�m�9៕:A�Jގ���>33$J�]ăh�۠8�6�7���gr�����۵�ݺ��~;�T�-z�&�ct�po�OyR�
�-���˛-ҝw�%;��j6��Yo�V��	���*V�jU�B�/*�X����ZO�
���D���,�*�WS�Z��B<���N�`�������J���#u %;m��&�K{��a�ҵ2�ï��OuR�8,�8��	����vă4�vB��(��l��@����|(T�g�����l��Vs��
��ʙZ����	XF�7𧾩o|Q�Yn�XS�/<)�n-\�A�[ɕ�u��?7�2�'l�N�D�X��}	���U��7��Wg�&W��]���˾M���y+,#…_�~T��v@�q%�ķJv�O�����
����[v�6ſf��L�%Kvm�7��b-�"�H��x�D�.*D����:�e��:�-�s�a2�/G�[bI���g�g�-���d$�Nz��ގ�~sn��Ft�2���8�**��!�-Bo���>���)(8z1�b	�p���	[=�BO'`�F�[`����l��ǖ��S�l\x3�����Ɩ��Ɓ)�g�d1b�B��K��0��v�%̷�0'?
���V<$4݆_��*������0�W"E���,��CńLR�6	K…Y������.��$0�۶A'��b��B��%��P1����qe�p��	��S�vX��(.��۰�d$R��$�Fm�"�tD�Q��4)-��V���Bg$�,ltH�83�S�bŲ�Ɩ��p���ž�-�#GWHa��ŀ�eر|PE�Yo�2ٶ�&d'=�!v���X%/.o�_�B��<XE��6~M0'?�~���[`��͘��D������ㄺ�b���Q�T�k/�
�A�fK�#=�N��ߋ/������
�jRT9D*j3���.X
*2�F{�,�.��v}��?GNp;P��A~�*<�Jf�:ٕL��d	���@��FeS�
i���/���~����X��|L*�j��K�q^1�+�V��q��-�󹋸�*É���+L��'�I�RC�
�ТV����t㲵���e�_hjKQL���L'�_��(/���*zE���U�����)�И٫d�ΤK������^H����,��T�Au&M�Ӌߕ��0�f���n\x5��]c�H�6�R��I_�Z|?���3l׳B�9�d(EEE!�]M3��V%9jI�,�:���^�j���UnR��}8��io��&�*'�����O��[�v}��紴�Vм��հ�a8�۩pM3O5I��4�N�i3���T�G�*����J��������Y��%U�C=�k�K��nbKT�-k� �m��<�s�]��{;}���*a�L�4����w�n%1�n?�Z�c+��K�J*֖FcM����S�	�0�m�|�>��<�;�`S)�Ӆ��[p���n��j��U_Y�5f�*��
VI�##��&�.�b���CA\�WB�"$J,Q��*3�n��MI�ł�=X$
g�C�H (֊ܣ0l�T˓�C|4�޴-;��-;E�Ԗ���$�D��c �*��(%]���D:��SHD�8���%/a�}䶊ʚ�R�R�1)(�J��`�=k��w�{��|QA�vJ�Y;�9�yVe���}�)�6�ej�)�|;��U^���Xw2~�l)Ǒb�m��WC����!���"�?��Z�E[�:ª(�q����*���kX�4��\��Y.M�$'wtua��;g���?/������8� �+�R�Y�$IXM���\OBNK��
22����=2�q�4JXp��L��-q�q(��se��_���Gi��1h��4�,+u2�-S�~�]�D�*�e-���yeg�ҳ���4��1V��j�mj���:3,����f�f�ܲ�,a��q�8ꖝ�:)��]�	�G�I��n�7ES�W�j�r��1y�Z�p�CkU�x��We2�w3z�w��4�I[�(���n����A���T
W�/��_~�o���E��k�*Jn$L�clV�^��vZ�/9�C
��
����q7
�M��Т�&Լ��J[�(��x����u��ٚ���hr.�!�i�%�)�0��B�%�mP�'`Mm%:����s��&X֔�)�TA��၊���ތ�;�#�B+3eu�[�q���o!�-[�l�pTVd���
,�fu�0^q)Hm��)�Ɏ��������P��~�<"��£n)�i��c,"���i�X�ƥ�Y}XR��Pĕ%p�f��4��g,4ۙ�uER�C��/��mj���[c�nɶ��M��g
d9
�3����b�J�i�b�s�&���2e��#��&�R�0[f�T���|�S��Yzq5��&�%�֧��̻�O�g8�mj�+ۭr��>��
�ۀn�R�#��v��M��e��4T�8h��"�;�F?�U?�F�U?T���

'\*b�+S����[ʖ��Z��0����Ġ^��c���8�(J��9������"�	3io7�6[�.�ݠG�$��Q��-&��aґa�3��j�誚�q<�&�
�a�p���e���x1Q�@��ǔ��)K��}��߅���H�r�A�H�KN1�}	�����"�f�)��[/�s����=H�r��,�!��eQ�Z��f��S?������gUݳ���r�����e)�$��c$y��w=�T���*IuDE㹗����pG�'��
��OO��v����P��h'
��
�*���aQ7J>��>�h�a�.6��a j�B��aٖfʌ�����V��nkZ�[RUMٺ5��/Z�*��`�Q�;R���>���H�id���ogCJqj᪴���o���+�E��,��]e��eOh�Zc.|<R��
�q�3�r�c��e�I�lL���~E6M*�Gng2�
Va?�6QYl��/�$�'E��d�N,���c,	u�f�ĥ��j����]�o�M�����)8�*ݐb��֍�eZǃ��9-�� 5rí�)�u�1��,��t�ֲ�]pa|0��3R�"��%���	/��+�޺2&���,������ԅ$�X6ÊQ��f3�����y��F�����#���e�*�6Ǖ��d�����P��ŬA?Z�b7Xw��Bqfu�g�=a�Ɗ��T�����9��w�H<�f<s�l����-���ê�1�0i�&ˣ6I+2����8u�N�'�HU|��6��c�ݘ���FM��+�s�GKP�e���Q�ل�9#:�����,;��y�ؐ��?W;��)�qL��m�$`(�J	��
@�Fc���l��m�}R���P�@�8N��;gل���6�Ghs
��d5����)Y���<�\ot%%)����{?E��
�P�GGO,d?�9�iQ�����)��PST�e�
֠����*��먜S5J��ZL�Xco�[t�@ZM��r��P2>��AST�.u�tT�&��‚��O��S,�ҭ©Z�5B	��Jy��T��YI��S�&ԅ�U%3LJ�̳���*��2zJ	m�Zw�ĕ�����-+��Q[��T5E�Ҽr���t��(�e�4�]_UX+1�*�2F�Y�
�����J�b�_���c�!�%Dc�I%R� ��L0�(�/����)�2�����YE+�S����q{��я]�Ob��|�-%/fm�;K�$�7�ĕ�,���?��W��{������Y\���p]]C��
u��c�u���ئ���)�<�1tƨw2M/��i*)ex0��e�%sg9C��WgX�&_@V��n:�3셙�	u���6�0?���*�(ee�����>�v���,L�L�e��P��T?R+1̯��!���S�a���!Љ�x)���fuyC�hԓ��5+R�8	R]*C������~���a.��iC�Ms
��-N$%	�b�9̔�Z��l��i�
�4%	�BV��1�Dߧ��NS��x�0�O�GL��a�F)�z�J�S��yAr�|!5�e,2�g/�h��;Bґ`�w�ٮ^��E�֓a8�o#J�5��`iW��1T>�k�4��m
J�?�z�	��U3����,5MT���Ø��J�������o��څ��p����m$	�
ĭ�<���ơ�L�~"3��m��X์$qNo����ϫ�M8̸�S<�H��ĖSք�>fi�'���["�/�f�>3�:�>�MC��mns���XisH�v�6Oy3'X��`�9�Y ��,gÝ��bŬl��$�Ԓ��ƍ��I����e�.P��e�w���7�j=^/�R�X�jƫ��c��nj�T(��^�,)BX��N1�)�9R�'Y�{1z����dS�B��>�/�	i^���)�o����S��6�g�T,���A��%bSB���џ��O�m~�)��8��f5+F!hĒ7�;�f9�k��1~��2̞in��)�(�U?$[�M��Qs�3X*$q�kcZS�%<���f+H3ʫ��M5%>C�,�/T�'�8ۤi�.NsZ�TU^c�9�Uk�C���6��T���$b6��o��U�C9�E-5bj�8��%*�o�AQ��F3\̤1�ϹP�
��`I#D�!���S���q�bƬX��<���S�t���L%<%b�#�qJ��vR�>�i�����)SH��b�����n��������9
*[	](}ʬK��sxrFN���2r�(p��zw8�����j�`�&(s�N+=IJP�ǀ(�%<��{#�CO��U���}Ų�;�����7�U�L�V�U?&�������Z��ߪ�B��䒴��*�S�.)םU�Z��O�cn�������5w5�^�B_�yl>�R�j(P;.�J3Z�*Q��o�����@�J7[$�*�j��$�e;T5Whh6�A�t+	N�t�@P��ۥ�&�"u�=��=…���f��2�B���rv$uL�'��ڣ�-�c��`�	����"E[���u`����I�{~[띊QtO1�LXD�fbK�,����G,LN^�3��E�WAS�7=�GX�p��rv$j1q�����G<c�'`S��:zРڌ���l	�L۬rĂ�����쭄����
V�H�F��̒�D�b��{�A�h�9'�o]�o�8��p�n�����*Q��
�p�:�J
2Q��'
̇0ٹN+Ĕ:�\O�'t�1�gq�t'i=cC����_e��>�#os���ܿ�||�\Y�DH���y5G��J�M�:�/,yAiQ6/e�,tQ?6u���j�?;=ȾC�o������H
.�JBw#a�
��m����n�{�|=φ/��b�с`��z��8��1�ؑպ9�����OZǿ���.�NRH�3���.(+��ë�9�����η�����ѡ3�{L�K���Y�T��'.�g���sW��b���jv����1hvv$uLswt�;I�D�ۡ���İ�~h�A�D�MZ\����	�W���~RŨj��Xt�O/��I��4�M�9`�$�G��ډa��1t�}��cg���+�����ײ-�l.ię�&Fփ�n��AՉJZ�?5�'?�i�7��%����n��S��'�ž��/
0�v��.�#V߂>���lj�;P�\�yK�&j�r΅K�����_�#�[�]-Q�э�{s�q�5h~f�Պ|�(�55�&MS!0&V��b�-��]-m1-T4��b���i��ʗBBR�&����u-�r���kHuƚR<,+RU�?�'
�J��6s���v<���=d���<&Y��W�'��WV����7�jC���!�����;��G6CK3;�Z��l�b�a����<v�zw�0F���7lN���}�7X��Ƒh3���a�H�u��]Т&GCI��u��}��gv�=���O��w.����E�;��lI"}a�k��OҌRs����������#��@�b�+￷�l�K�U�S�-o��ā'G�$��[`��F����ײ>��:�^���t��s6�S�b��,��5���ޅй7r����V��h�>.Tj��?���!��\u��i�JQ2
d�ͫ҇{��iV���D�>s���/r��uO��-N���ԥ2�ƭ��n��0���;NUDʭ	YAR�'� a�.���qTV��m�[&Ґ�I�.�Wb3Ĝ~o�@?�J�Ւǔ?6�٫�:G��X��]�sRW���H3<���-�y����d�)Z�wL�J��L9�zT��)�4I�j'X�(!+���3���6�C3o�����JE���I:�jQ'\|�'h�#�ՇJGF')+�u�I2��ꋱ+Bz�c�����!%j�c��Jsղ,3'@�ZM�.��7{��{>��.���.�ȟۋ�Ȳ�qw�
I��m��H�Ɏ�O�E{�W����'{�m��;�W�4ˤw��]3��Wl_���f�Ȗ	��w��ւd_�a�F$Z�"ն�q��bG^�n�Q(�"e:���ߋ�ݷ�d9�7�s�s�td9��^$'tb6��WM���3V�U��)"����l_f�۪����!t�ŒR,o8�+	�TwY��U��k!OS�42�y�H�#�}�-6��JT��lPF$�	�b�1޵�Ϛ�*��@i�_����I�'
��-�f��^�-�@B*��J��7�DP��}^��:���8�K��	Ѯ9����Xz�)IF歐�bgN��>�����$�J�_��o,
�t�JvA�G2��
-2֭PJPn)�����m۲-L��l�g!��$[+T5}�=�o�ۦ>cT]�c�Yrm��צ.�#dm����	��])^ ISO�w{|�L��{�oh���j��������L&�zJ������\��:��K<����A8�n{�ISB��,#�-�$�)=h*�p�ޘ=X>NK��22�Z-;�%�fOT�!�h�F�)����ދ�vC�n)��e��wQb��f�������7'R$����9��9�T4��ee4��$Ȃ5��3!�L���8R⓽�
;��C�f2���S$aJ�%❠y4��ײ'��3ϻL1v{���Sa.�EA*�A)�K���e�;g"]
(@���)���FC�Z�n�|�!�w�ɓ����,�|꼶���-Ư4$��یC#�BG=rt��̫���e��t�q
�I
8����~J�OR'����R#�
�&ӽ�E�����6F����2"0\�J{�h��.=�4K�_�ڹ"�Cn��Z���}�Lm��u�m���ۤj��w�rE�ݶ/��uE�k���d[|/q�@��'[� t�$ZQ�W#5���Rޙ22oja���|��B����Gɟ$�r�H���Y�i���9#4B۠�Ɩ�R8V����;Dž=�q%]Qm�bC28Jz�����,]^H;�v[���	�
��D�^�f��U�B�+I��˒
���f��.w�/M:��y��N�k�T#)�c�j����3�eX[P�Z��
�uP�쯱���P$'9�M�;aSe]"U����|��Q��ü�i�s�bhV��!}�(��k�l��eo4��+@ �+��d�$�?�ޞ�Y���J�c�ܟVȘ��c�������e#�W��4lE��^�1�Ut%`iU�i�*G蜐Z��jm���%V�`��u�*OX�¼��vFa]^H%BE[�:${�uGz/�Lr�r�
���'���p��k��i���Yx�ƵJѨ�Mэ&vM[>ž�wwdm��tl�_Ѣ;�;�ߎ�w��uF�q-1m���sI�j��WvB�w�:0ؑ�6�%�'�-Y�ܑ���|�a�~��ʶm�?.�6��6�f���(��Ƴm�m<	�G%��j�tq��n[�c�/<	��ྨ��������־��2`R䷱j6�`�]y\e�6h��[v���ܑ�\W# �4��->�1
Ai�5��W
uՕ�d�Ū�2O,K��l��s^�n�����0���l��
�%B��)�l����u�8��a��%�}�V=Q���aO�濒5i�:�$�=����Mq�|J���IClL�`q^�݇d�:q5�l6�Ka�)�]4�T�O�=�%��[t�q�cr�)�
�e�d�-���Jo&S��ء�3q���tGd]ɶ6E���o���=V사[�Xep�<ؖ��m�6ŷi�/���ŗŷG��6h��cf��;�ߍ�#f�X�4Dž4D�8[mဧ�(υ� 17�@x�r��d7�]���"��|aN����0�xV¬<9�c!0�ۡ&C�G�H	N�o�{��^�mН���
5�|�^v.[��|�vi�e��W�o�;�f����Qގ�v@L�6��q>KU��i�,�ѭ�fИ%=���E#����s���ł��s3�z�ߋ	9=s"���;�L#�N�`y�m��u.p�)Y��.h�m�Y�,b�U���'ӪV��6��^HJ�aV�>P�x+d[���N�o�[�*�R���@I�$���i�Ën�R@������v�}���1ގ�Y�rE�i�[tm��`��5�ga�K�d�J�tN��*[�w�g�n0ui��wl�F�e����E�i�/�"�����F��Lw��ݢ-�c�ݦ<-�6��6�,w�-�̴
ض�&-���<HF�>�`��ÓN�,��	4���l*����c��0�ˏ���0`۶.>���<�2��6�>8T��>JrNjL�E�遫Dm�]��ދn�B;c�J�J������!l6�*�]R�ֵ�1�Ԧ'G�QR�w��K�N�^]�!���'�_yC��6Z�
J���Q������=K���1�i�����=K���0r�cJO"{1q���W��èJ��uYJ���f-´�0Z��*
����J�Š%B+��-Yc�EK8�VxL 8��0�K��J^(����x;!64����`�1O9�d1b�m�e�H��>p$Rޜ�/wLo~L�b��[t)F�$l���w6E���,�"ۢ��_�W���i�T��M�Nq��J_~�=�s�>|����@��к��eN�]���
M���h��=���ض�<��\	��cdY|Ytw�f��z;�ދn�/��ݧ��6�n�&�x�ɐz�a��s�gˇ5�
��
��[�@�¬<)�d��'Z6BmO^I[�0�V�7�'������+w
�a*<faP^��fV		�D�d
Z>�m�"߽��܋/���H���^Wʨ�����k�Ο�(��UѾ�xJ;�;.�.���ú�}";��)�g�����G@�ն�+~�M6�8�p��v9Y$Oˍٓ�BI#�/"wp���
��g�����
L��L�D��:�[�X��<�U�e�{vB�(IGw	Iշ������{�g�m�~뻶�}��0.�4�)|pz���S��|.Çlx���,�)[t�\Ύ���t���F΍�nZ[�]���`���u��e�/z6�:�f���ie�l�q�\w�Y~��%ù�V��F.�T_n���;�#��_�썚#n�]���gd(�v(��E��s�$l\.��N�٨�D#x}
�p�:��
��?(��"�i�xq����G…5�h+�5��uǃ�E��Dm7�?r6�s&���6_H͗n0����~���<Xa�ʕ��7y�<���\dn#���.���Um(������@���H:<|��sa�B�}�ay�R��B�-
I?(E�B��ջד*ׄ`lHi:O,vr������b �̓8F���U�$g�ʢ�J:Ӳq�(�N8Bu+l.��R�3X2$�q0m�5A s�Q2�݀�0��bl���٠j����{�f�a1a�oI6N{"�8��VJZ�s'jl�0g,}k%�TX7t
 �йZl� uz"Ƀ�����H�к�X6��e��-�;"i_���ۦ6��ؖ�Q�\JVj��ۤ�z.�:�����֍���u�~6�;"۵F�y�4
PU,*#�N[�ԘM�z��ʅN�N&�)�a��rbM�J�-��ʷ15��`o�(Mٌ)S�}���ĥ���j;�ҭ��f�덚�~�w���;�#���l�I]����i�gBr���SƟ�/��Tك^��&�M:�T�'@u���8���D��q���k����voC��Q�\�xi��.d��&&��0�V8��ɉ jT����h�jWXl�-fj�u
6j�Hݪ6�1�F��q����w6��q���%Z�Z7t�I��R�Z��t�\_�+Ud����A�M��u�@��Q��t�$mѲ.��5�E��f�k�wf��{Ѳ6��Q��9����Q����Qt�~6��Q|����Q9ۮ6F�&6�r��h-S y9^����+�l��o�T��ʲzDLyS�D�I`ɷgb�d)kg��P��XAY6�A�5D��TNv�1�/�^�٠j��7��E�~�_h�P5_-q��C����ci���Fx�)��NI塧0m�[ͪ�N�>'7F� o*G��ʲ�0V����Kl��TNs7���N�nW�����d��_Ynr*N�'|OѮ~oa�3g�nv��JVĝCTKDN㯹e��4{��o�k��s�
Qv�W�n�]�9o���ŗ�α4l��lm�uD���s^�c������'�G��շ\_}ؿ�w/�ON��#�q߄��-���F)������um�Q�i���{�~od�R*�h&a�
ux�7v
Qw�����[c^ȾS�������T%S�@�n�Qd���CbI�ϯJG'�ӏ����ƥuUNs�p��PД�����2S�U�r���dR#OF�B��^s
O�#�o��-1(�>�~Ʋ$��m�߯g��KF��˧\[p�PO�?d����5wu�&FI����ݎ�g��l�HR�����G2Θ�>Q��j��r�w�]�We�R��)���������7�qo%I�%ښT�ߒ�?�P�k0��U�i
�‘-�(q.qP�38f�?
<�kj]��n\�=�x%��W,�jhz�?_��(��R��֥B�j��w��U��xi3R�(J���P�|�&)��^�e�t���)٫i�H�B��zq��f5����T��-IK~<V���>�i��i�ěG�J�ԯaw�۴l�H�G��σھa�lsf%i��~�SdK߾m�
��6*FaB/��t_-����d]G��!������L�a����}�Tڜ�U�����RU�Tr�̘k_�oL���fq���w9-�Q\�u���0q��a7�׳Ws�2�����d&��d��T����ӹIVѓ�<����N��r*ں7��}�T�*FFGL4�u�T�;JYUCe���2���Y�U�g�:,;�p�R$
ʷ|�0|d������V�3�S�d]ܺ{#፽�{;�Kl_(�N`�x�n�	y�7Zl�gBJ[ƒR�y��"()�rC�f��:+����Yf����ZH�(S�����8���;B������r��]5U#A䩗HhZ�\�s�"��SF�$�O�P�v-�/t*�F��3�i�V���w�!	y��� Lb�2�*�����W�;Z�k�p�R�WF���T/6�X_h�]���%8�d*���x�%��Rq(�\�&��,9-f]UK��o��5M#�%��
t�Zq
WYX�}����P�R�9�kUbV�d�'�4�8|ح��gN\�1Th3qV��t�R�}�*ü�!8b��Y�3��VUEC���d=R�d��F4�����Tg�W��Ͳ��&��_v�‰o)/)KJۿ��]X�6���r�s�yc,ѱSV�;A�������Yļ����E2���.WF�
+ꄟ��Oʸ-�|���DvU�η3����[n��aE:[+yK�뮅MD�}�1�L����([斢��^�KQ�R���qO5i�Ӫ6E���[}��t|>�t]��.��
�ݟ`�!%'BX@�΂����J,�$��7���g�6�5��˟K�{8�i�e�������E�S�2�v�u�vq���4�-7R�K
	4ikiHu	81�jJ��=-R2&h��K��5/��6�p6������aL$d��I$��wWL����eMU%M��S��…��F��7w�Y��\R�T^{"i��Y3R�R�Rڍ�eJJa������������.�D�Z��(�P��[ЊNη[]�UT��be�SӺ0����'Է!�Ҽۋ�n�ʢ�e�)YT��	�B�z��q�7V����֔���V�ysMTrE�д_`#���l��m*8\miQ
B������fY�voB�s�ڧC�B���>qj_�Dg�L��Q%��ꎋ/�E=^�52�d%;�3xMN.kZ��T R�f�Rp\Ƨ�a�8�|���Ė�y��FZ�i�_�f�[��-7R��6O-�����n�J���vi���QPkj�k�%���p$��*CM���R�g�ۧ��or���t]{��\m�}��{=���e��|8�3�cA:��q(��6@T�iS-�X�.!EA
B�dA�
�Ʊ�ʀ%Ĩqn�Z��b�6[�-��m
!sy�L���vZ;��,K�T�k���D�mUo��8�M7	��ZUJ�
x�!�s:��ߎ�m��4rm���0
�­JA���%��~�grۢ��b�zt#>�\�պ����K�Z���B��Y�)js�Z���`*TdÊOC�[���b2�*t�5k���L����IUkjX�%s_~�?iآn����)��v.��K��J�:�M�QC�>���9�a��*3u'�3�TI�vB�!����\f���m�� �Vy�T0�ʥ�:~�p�F2jG)�s��G2�}C�5I̧i'���u_{.{�P���|ζ��M�S.��
:�w�aK��b����f�|�3q4��e�ޭUL��[n$�9�Rė1�~���~g���g��,
��;2��mg��ҋՇ��J���2�.`�a���4˩�e��"eMb
�ҕ|��j3~�e+9%����a�

<P�����^��9_U�Pe��I�e�RUe�
R�?TSN�'
Ÿ���g��
*���+kYLк��Z���ui��K���{ټ����֚W��d�԰�IIs�HT���-���ݥT�%랣J�8�Im��jR��c�F�ϻ7���8ۉ�s+��t�KɩM�*�0�,I�r�$˫�Ya�3,�2�n:�ͥ�ҳ����
p���۹�S��2���%V?VEm5Ch�5n4��"q#��c>γN��.Wd	eܻ���d��8X_i��0���ܪ�.�r��v�\ȦC�T%D��ӸT�#u\���6{n�{�����6G�,���sgr�5C)�i�H��Y�^e��q�lZc:͜�ۨk2H�J%+�Ѻ��J�V[��8GZ)�w�S>*��+%bثqGף(g�QJ(���sd2��NW���ێ��**
Ojʂ��N���f����)5yz��]E�k]�z���Ma�^�������ʙ��Kr[�
��(��P�����^��'.����4��#��8�N�杜��KY�B�������dK��a�����/v))�c�T�����U)��[8�
�ۨs�·2�(Y(j�h8�kU�R�L�wtY�	�3�n�z#C�%�X�#��͊�'�z�nbǃ����x����� ^c��O,���s��h�	(��uc��vo������j�R�7�M4��Ĺ!N�v)�(r�کG��>��j\Q�)�p���RqC�ݛ��KY��[l�_V��)��)R�i-6V���]^�R��d�5��Ha9�Ri�M؄����T��w��*����+MJ�^��.�C�\����qdM�\Rw���S����b���rr��)J3.ϖ1�¦���qK�
p��X��v�n�l��/�}�g�:e�G��6wl�����E�wsdk=�cdm�
z}���G����;�����e��w�_�o��҆�R�@J�$�CU�"�a�6�2)>�0���&e,3�c�^/݄4�b�R��v���4&o�Ѐ�eyO�*�
}�?���#�a����Ž����DV�{��:�h�g�p�Q�̧+�G��������Oʂ�Wp�3򡌱��:]$qf�+-�C�e
Y�N#)��g�gu�'fIP���ħ�ëP_���c�i+�v���R�;���iU���o"�!~���(��cۃ�	����pɶZl�ghH$��N�WV�{l$9N�[�j�%��m�T;�Bb��g4������ΌqK�)XM��%+	�N,1���`����̱p��z�W���Ƿ��,���"?�?���~����)EW���7�8ܟ2w���/݅�C�?W`�]9c�8������Fq�g��B}_�x��	�q�t������OjF+���z{�E�wq�g��V0b�9�"�*o8���0��W��8���+N���ڱ�ȧ��[W�����+�1T�e�:���!k�j�_��ы
r�^14?_z����z�sVK��q��|�i*��Jr��O��~T&���Đ�xp�et�%~�,@p������*>��O���*>��O򡥗��RD�ᔇ)�*�{	^���#.�>��0���C�g	.+�,v��s�X��z��R���?7�������=k���mNs1"s�֏��ן��#�^�H����r?�}YR�7�a���b�5a�ʆ��X�.
؄��������	`� �
i�M��%�l���	���O���R��1�|�M��K�'�Q#W?���������IW7P���{3�^�s߭`�`….x1#7���O�����Dl?��Y]�mz�?�8�h*���S�e���T�֥޳�����4b�ɏ����H��􈫭��q=U��\4a��r�M�P;ҝ����>��T}'���O��P�����8o��
{��¬p����(�p=ix8�,xd	���Q�x�=h�����;%�Q���Z�AV����
.`�1x0�p$�-˲��&�tiHS���m�S�}Ĕ��BR�J͇����f�����S�-��%B��I�g)��
gM�@���w���_e���L��_��Ƈr�Q��3�^m5L��un���ڕl��՟�c�c��g�X�}Y�&?_׵�
e�g@���õ-e��][[�H8d)D���
�ǴU���a�ڣ���w��_�?�����A�{U��}�BM%mST�ְ�
��e�֩N��M=H�PR��pz�Ҋ{w�b����f��ʷ�Кf�p�s�Z]�U|��S���w5��̍���m==*Q�RC����)>P��⪫.����m�&�YmIZ�xXЙ�$�,첎���w����9���Ó���&2�,1ge�/�LeW���ˎ]���x���V,XQ��ܨ��?�(�����Or��%uvb1���D}!_4G��Dy�{Зp��+Df��9nl������ '
l;�b�����\ZJu���>�\�0��sp?�7>��*??�~����'+�ve�'ER����\
'�w��	�<�˿�������
�c���_�#�S�����!hIS����'&��w�{���a�|翋��w�{���a�|翋���Φ��X�hS��
��J5�^���&��0���Np�-��F���T���̢�!)2�W�'�C�I�+��&p��H�e_���(���eX��Ӝd���
�R�Uu)-���5.��?^��Y�h�}��9g��_��Ə׹�;QQN�a��6�j
B�UxP��e�[a�#���H�.�g%��r��m�37��~��D�Ke
��QdՄ)pr��:�pí�Ywi(�T��@�e򔶭�̥
�p����XRZ�M��/J���/�b���,:�,�(BF%(A֩�oTyrB��iB�jW
JAN7z�~C�\a�6�5���
�F[��2���V�2�!
�jM�6�̎��|q����G�:ҽ���(���iJK���RHM���6����m�6�BTPnQ�e4�K����8�h��I�I
ތ�����I
�ʊ7_ah]PQ
XIF�O�E�-���U��iEC4�$���>X���a4�m�\�$��>CW=�Ґ�IJ$�')�M�
U}���ӭ��@Q\۲D�6�����|q�USeL2�4�-�RҠ4[u�u2�U%���‰��tR�qC��UR��2�8�1H��ɠ
03
J�f���/�M3�5*���|�3\��E�KN�\J��H��G�4�t~�wZ�#�${�5Zb�(sz,�CY�d81#I��"q�����o/���Ǜ�@���)%'�9q��0�_�5�W:�R�\��m�8�AJ��s�n�5=�ɻ7�q�]>AE�.�5}7ˆ����֒��C����HCS��!�T�*Wq�m^�M�5.��CtC-�R�o}X�U{�c3���2���9�)
|ڗ�EPI�J*�S|"�
?z�O�=��.K��e�vwz�r]M;��Ko���.2�\�)k)5UԔ�Ym+K�m(RЃ�%Ei�:a~`��]�wS�d=���#(Fp�$��QW��)8珚�t�T���u?�D��w��O�e�
1��z���8�Yyi&n)F��G����Df.���{��eYX���q�̗-�XduG���2<�o���+L�ď9[�d�$e�9r�.TT)�8���Jc7��2�u<o�g���L�K�(��쳊AK*Q��Zc�vS�ǚ�ی�����,z�'*���З�w�?	��
?�T��1���FB{C^��	Hv�@Y�:�ҟ�?�U��?h��L~(�����^�o�TW����B�`*#,e�Sۧm(�EF� �*[*R���gs1O�NvV��dS�S�m�X8E@�ЀqR�-�CE�L:
�$P��
��a�+1(��1��sG����EW�W~)���S/%�o$�$, �"�ʺ�d���WIP�f�HS+I;��DU?MX�� ���
E#(&fd����r���$ܑ�#�!���񆪛JV��<B���i
�YmՆJ�O���t�*��*[���an��N8���Y&f�
�E;j�>��^�t���{��9��n�b�'K����bJ�P�s -
RIY
w]uo���'�ڧ� �jP�Ǹ�8�7��(hB�ڊ\���,���Ì�mH�d*��.�-�)*�&JL��#5`��Bx�����%t~���#�ћ��P�6�U2�B���	�**�s�[�Jm��X'��,��ͪ_�u—Z�$��A��IO����D�c��_�WSTf�O0�+C��sJ�E����p"�$
���O�p|�Q�G�%ʅMi��0��>�?y��Q�G�5y�~�?
�|�V0u�����<������$^6s�Bsl���fHC���%A.��r� �S=\��X�R�A���8�|��x1"�m�Nz+��ipZ���8p���;�H���W���ӅY}[MUS�o	m�}�1�%m��S���)�Җж�R0���̖�t��*_��]�v�'5]H�/p��((+�s�͔~�b�t����?��杣�MUm;B���l��TV�RmQ�8�rVW��-SQ��<�*��IZ��q
:!̳3�z�Ғ�
Zt�ACy(�HL��o↳�'Cy��x�*j��H�y�͟�����kO���ɯ����j��C��Z*�Yq�������mBRn��J��8�
�e-"<��G�y�G�y�G�ER�Ѓ0���CT��	K�I-����C�yF`�/���U3+�g>�N�Sk�(X)?�酆���P�����S�N��r@J^�I�{����G�1?y���G�O�O�MS�Ine"@_�!�v_JZh�`A��R���GD����lJ�����i!j�;�*���z�Rj���E�܁T°��HT���<������<�������o�f��"tL�JR0��p�6��}-?�o�c�i���ȉ$��}��I �v��1���A!�n�	��Ώ����80�wR/�!L/��*��v>�>b>(������#�4��P�R��`���L�mX�o�����G�}?1y��|P���JV
N�E��Ph�9N�#Ώ���<���Ώ���ӎ����)A�u���J�A���uJ[��V&�[B�e+�6A�̪��N� �h�M�%"<�~b~([.:n$�CE������;�{������/��ďM�Ǧ�c�x��X��$zo=7��ďM�Ǧ�c�x��X��,zo=7��ŏM�Ǧ�c�x��X��,zo=7��ŏM�Ǧ�c�x��X��,zo=7��ŏM�Ǧ�c�x��X��,zo=7��ŏM�Ǧ�c�x��X��,zo=7��ŏM�Ǧ�c�x��X��,zo=7��ŏM�Ǧ�c�x��X��,zo=7��ŏM�Ǧ�c���X�,zo=7��ŏM�Ǧ�c�x��X��,zo=7��ŏM�Ǧ�c�x��X��,zo=7��ŏM�Ǧ�c�x��X��,zo=7��ŏM�Ǧ�c�x���images/registration-48.png000060400000006116152455755750011506 0ustar00�PNG


IHDR00W��	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z�
�IDATx�ԙ{p��?{�����<��y�P+(�<j`�:*C�@�B ��B�����Ց�Vi�X�`��5X%!!$$�&����?r7\� ;�3��;�{����9�s~g5�|��?y���K�VgE�@�����3-[��c`ݪu��S�4�\>�/Y���G+ se�p�@�F�d.]�t͏N@��a�G@��x|��UKS�- ku��i�z�`��7�鷾{m����.y(`b���ķ��`�s�	`:���Fdf�[��<��l�?+"/�H��{�Dd���'^DMQ4��3:���{Ddq#�,��r���_\��.J"D	MD{Qҽ�\�q������������f�,�p6b�0s����M7������J��fY@5�@p����&rٿ*k��湐R��_o��
(�3pr�cT��]�	�/���8]��V���uN���(Q�WoX��fPJ��GJ�\?���/J)�Y�ƌ��Q���m���R2%ccFv��Q���j�l�4��\��
�f�K�����i�ނn���x��l�r�O�fz��(�����[���K�-M��^/.y�^
�-���9@���r�mͼ��ya�n�����Dz.��/��ߩsR���fl�N��I]��j�7w�ޭ��䴹v�#66��~�B�>�f=<��Yo�c�(��/���0<)���qhA2���wv�'�w�^gaaa����iӦq�ڵۧ��s�X���9o�c�i>	8Z�7�a/��x�"���oG����m۶����7n�X�/4���
SD)GS���4�:ہ���U�V�N�>�r�ʐ���I۷o�R^^~�4�KV$c[4e�v7�����|r	��ih��M�Y�1b�=<<�q�ҥ���㳳��DEE���y]�K@�׿i��~'�J)LӬ�2QJۥ3=�{ۥ3����\�Fa�y��D�\.Geee"0*;;{JLLL����l6[�%�GK�V�I&�u�M�a�1<h�Ƙ��7�/	I	�Yԑ�����u�
�z��IIIa�&��MdzK��%J�T�A����j�{1k�o��S[t}�
���Y��j���=`m�ZR2z���L�4�a2�4�R�}cy�9.�(��j���<4�!.���O?%o�N�����_�ݱ#7d�ƍ~����ruk=�n�y�%_]����CÇՑ?�~=9��8WTĘ�s����\�6m�
���j|]�"_SS���E�n��h��E���}�ݺ��~�"��&A��L|��F��r���oW5˅DS�x<U�ո�n���4Ƿn�#�]��-�Y�/�e�dZj�m��.^�|����߿��V�@�cPSSMU��y�08y�r֯GDpn�������q��P%B�i7j#�.@ii)��>|��;w�\a�f�5`�
�Tx<5J	�H��x8��T��P��J�7-��w�!a�t4
4
��J������L���6!!�ΰ��@Mc��û�2�Y�l�'���C�8��{\6M���1o�>�X���<CH۶��M��A�xpܸ�ϼ��^y������Y�o9j�e�LZ�I	TTT��'�p���ةSy��az���#�t��"\Q�'�-k@�`�r�/ǣeV��gK�r��:lJL��EdT$6��\��-[
j@0~�|*Dh߳'�#G�r������c�����̺��'�B{������жm[��>ߵ�����z����ڰ�LJ"89���{h�,*KK�xW.M�oi�ݮ7�TԵ�ʲ��[BCC�ѯq�΅7�d�С\��o@4y�,����k�P���!R׻
v:�	��әS7Z!�(

]�9y�$���u��&Z�q\����C9{��-d�0�.�o�F���rj�<"�"u	/"1�Z��nƀH��l.DT����sj�n#�\>G��!�{w�̘�p�lt�x�<ay�O�ǖ-��{�;&'����oo�Qr��.�Uh��N�=����u��݇
�u�++�1u*��6l��ظ������<����k�i��8##�|c�XD�[e"rT�vwe�m��+�|��=�i�~�u�AA������))�_�VG��y���Y;�>zϜI�A�PJ�
�V�>�4�"�'Y#"��f�R6�>�pU�6��yB�|hÆ����)k3_�#"!�ѻva��z�2/Ϙ�iԶ�r��p�\�U�ǔ)�����b]���F�o����9����i]	%���(���Е�vl�T�v��_8w�����*0{�߻�ȎCl��i����S�u��m�g��l�yyX���'�P�oM���+��#�5�j�0Dt8�;{6,���m���߳�G���޳��l�G�u��-xDŽ��^�n۶�S�Nq_��>'�z��Ν#�}{�MH��������2r$�f�&$*�6����s:w���2Z�3���`Y6h��㹹K���3��rQ���\9s�իh"�8��������?UUUo���u_}�bk�K��R��G��ݻ����0�v�v�?�[�]?���̖�x���/\;q��!�:v����Pj�faii�{%$�J!���	 ��IEND�B`�images/new_cat-16.png000060400000002055152455755750010405 0ustar00�PNG


IHDR�a	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z�nIDATxڤSAHTQ=�����(�fl�.���/�6m��D�br��m�"��@ZT[Ӧ�A��Â��)�4�:�����{��Q�����ù��pp�lll�B�8�is(����1��1�8�,�sp~���Z'���#�qڕR "���V�u�s@<LDC"�HDD*��RJ�1 "c��8��^9?��s��u�A�N�R��m! ���2�`���J)�a���WL��˲����X�q�J)���T�Z�\)U�RBJ� b�F����]lll ���m��J�
�Z���EK|�Gh4���A�R���a���E�6�NO#��AJ�[h�ɉ��j�Z�V�xX,���yf�Z
{��.��~u��Zok��";RJ��u��>�J���Ƶ�)l��X��č|�� ��1�-��BߊEd<��О�#�y��������[��Z��q&	���6��Fr9d=NGT�	&��;;;�0ƮHp�1�}>?������x���/ss8�Յ��Y��	F��nii��ۣ��^�����./�Q�	��93��W��n�%z�Y.C���x�##���P�p��IEND�B`�images/photo.jpg000060400000036074152455755750007676 0ustar00���	�ExifMM*bj(1r2��i��
��'
��'Adobe Photoshop CS5 Windows2011:05:22 11:34:30������Z&(.�HH���Adobe_CM��Adobed����			



��Z�"��	��?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?���]s�����'���g�S��ҿ���A.��%_����.E%=w�������	~��_��?� ��S�~��_��?� ���������I%=w�������	~��_��?� �l|<���g�ٷ�Gi������ҿ���A/��+�?���;����w~ރ��������}x?rJz���+�?�����ҿ���Ar)$����ҿ���A/��+�?���"�Jz���+�?�����ҿ���Ar)$����?�w~�g��э���/����x?�	���IO���^��%_����.Eu�{�J���l\�JRI$��c�09��V�'���-o�G�Q�$i��?W�u"KX�<�����%<�gջ�[�2mwn G�Z�	�Xb���>5ׁ�D+W]]:�N�0I+��N���q1&�8��I%;��X�vn��
�!̝5����7��}Nwy�?�$'Y�zC��q������o�BJs��T�D?�o��zT�H��WSE��Sn��cĂ���	�sX�Z� �
e����oR� ��'���IJI$�S����贒�����i$����^��%_����.Eu�{�J���l\�JRI$��_�_��w�j�W-�k�Q?�n��]JJq��u��=����5�Pc�X
����欮�~��0�ݥA��_��֓^+�{���>%�k�E�IM���1ռnc�8�$��n�]����ɖ��̟	����X�%�h깹Mֿ�����l�����(����W,�����Q�m��YI)I$�Jz���O��_������-$�����^��%_����.Eu�{�J���l\�JRI$��_�_��w�j�W
��n-�i��V��c\]�?�Ju����u���x8pVU9���V�g�w	:�����&��_�W���j�e���	�i����i)�oR�kg���?��L��n|��ƹ��>������7n����1�nͪ�_Y*��*�k;5�?��Jvz~0��Ku<��.<�e`ί�����4��Q�1u����i)����Q�m��YH�yV����N�8pЄ���I$�������i%�x?�	���IO���^��%_����.Eu�{�J���l\�JRI$���I$�f��٭�~���g�R�n���w�9d�+E�kiYs[����������oޣWQ��6�72��56I/0�5������mIMC��)7�qc��sc�ݮQ�*�5��ļ����|�� 
�	$Ip5v���������*w;��l�{G�1����s֓� O����M���汄�ۄVe�
���?�"����I$�$�I)���A?�ZI���贒S����O�b?v��!�F[��#�j�ݯ��R-�S��5��������k��ԋ}$���_������D������"�I%8�W�����/���v��?�H��IN���_���K�j�ݯ��R-�S��5��������k��ԋ}$���_������D������"�I%8�W�����/���v��?�H��IM�~��=���Ov�IXI%?���Photoshop 3.08BIM%8BIM:�printOutputClrSenumClrSRGBCInteenumInteClrmMpBlboolprintSixteenBitboolprinterNameTEXT8BIM;�printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd  doub@o�Grn doub@o�Bl  doub@o�BrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R
vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIM�HH8BIM&?�8BIM
x8BIM8BIM�	8BIM'
8BIM�H/fflff/ff���2Z5-8BIM�p��������������������������������������������������������������������������������������������8BIM8BIM
8BIM08BIM-8BIM@@8BIM8BIMQZ�Senza titolo-2�ZnullboundsObjcRct1Top longLeftlongBtomlongZRghtlong�slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenumESliceOrigin
autoGeneratedTypeenum
ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongZRghtlong�urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT	horzAlignenumESliceHorzAligndefault	vertAlignenumESliceVertAligndefaultbgColorTypeenumESliceBGColorTypeNone	topOutsetlong
leftOutsetlongbottomOutsetlongrightOutsetlong8BIM(?�8BIM8BIM8BIM��Z��p����Adobe_CM��Adobed����			



��Z�"��	��?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?���]s�����'���g�S��ҿ���A.��%_����.E%=w�������	~��_��?� ��S�~��_��?� ���������I%=w�������	~��_��?� �l|<���g�ٷ�Gi������ҿ���A/��+�?���;����w~ރ��������}x?rJz���+�?�����ҿ���Ar)$����ҿ���A/��+�?���"�Jz���+�?�����ҿ���Ar)$����?�w~�g��э���/����x?�	���IO���^��%_����.Eu�{�J���l\�JRI$��c�09��V�'���-o�G�Q�$i��?W�u"KX�<�����%<�gջ�[�2mwn G�Z�	�Xb���>5ׁ�D+W]]:�N�0I+��N���q1&�8��I%;��X�vn��
�!̝5����7��}Nwy�?�$'Y�zC��q������o�BJs��T�D?�o��zT�H��WSE��Sn��cĂ���	�sX�Z� �
e����oR� ��'���IJI$�S����贒�����i$����^��%_����.Eu�{�J���l\�JRI$��_�_��w�j�W-�k�Q?�n��]JJq��u��=����5�Pc�X
����欮�~��0�ݥA��_��֓^+�{���>%�k�E�IM���1ռnc�8�$��n�]����ɖ��̟	����X�%�h깹Mֿ�����l�����(����W,�����Q�m��YI)I$�Jz���O��_������-$�����^��%_����.Eu�{�J���l\�JRI$��_�_��w�j�W
��n-�i��V��c\]�?�Ju����u���x8pVU9���V�g�w	:�����&��_�W���j�e���	�i����i)�oR�kg���?��L��n|��ƹ��>������7n����1�nͪ�_Y*��*�k;5�?��Jvz~0��Ku<��.<�e`ί�����4��Q�1u����i)����Q�m��YH�yV����N�8pЄ���I$�������i%�x?�	���IO���^��%_����.Eu�{�J���l\�JRI$���I$�f��٭�~���g�R�n���w�9d�+E�kiYs[����������oޣWQ��6�72��56I/0�5������mIMC��)7�qc��sc�ݮQ�*�5��ļ����|�� 
�	$Ip5v���������*w;��l�{G�1����s֓� O����M���汄�ۄVe�
���?�"����I$�$�I)���A?�ZI���贒S����O�b?v��!�F[��#�j�ݯ��R-�S��5��������k��ԋ}$���_������D������"�I%8�W�����/���v��?�H��IN���_���K�j�ݯ��R-�S��5��������k��ԋ}$���_������D������"�I%8�W�����/���v��?�H��IM�~��=���Ov�IXI%?��8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIM�$���$���Z$���Z$��I$��I$���)d��/���4ij��9a��9a�I9a�I9a��Z9a��Z9a��4ij���/����)d���8BIM��
�http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <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:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmp:CreatorTool="Adobe Photoshop CS5 Windows" xmp:CreateDate="2011-05-22T11:34:30+02:00" xmp:MetadataDate="2011-05-22T11:34:30+02:00" xmp:ModifyDate="2011-05-22T11:34:30+02:00" xmpMM:InstanceID="xmp.iid:481168655584E011A0CFBCFE7A800710" xmpMM:DocumentID="xmp.did:471168655584E011A0CFBCFE7A800710" xmpMM:OriginalDocumentID="xmp.did:471168655584E011A0CFBCFE7A800710" dc:format="image/jpeg" photoshop:ColorMode="3"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:471168655584E011A0CFBCFE7A800710" stEvt:when="2011-05-22T11:34:30+02:00" stEvt:softwareAgent="Adobe Photoshop CS5 Windows"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:481168655584E011A0CFBCFE7A800710" stEvt:when="2011-05-22T11:34:30+02:00" stEvt:softwareAgent="Adobe Photoshop CS5 Windows" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <?xpacket end="w"?>��Adobed@�����Z������	
	
	u!"1A2#	QBa$3Rq�b�%C���&4r
��5'�S6��DTsEF7Gc(UVW�����d�t��e�����)8f�u*9:HIJXYZghijvwxyz����������������������������������������������������m!1"AQ2aqB�#�R�b3	�$��Cr��4%�ScD�&5T6Ed'
s��Ft����UeuV7��������)����������(GWf8v�������gw�������HXhx�������9IYiy�������*:JZjz��������?�+~oͩ�{S+���W�&��}��<���_m�K%G���"�Q��&�d+��}:�5�3u�=��������{�^���|S�����?c��!��{����O�~������؇�u��w�?�����?�b�׺��=��������{�^���|S�����?c��!��{����O�~������؇�u��w�?�����?�b�׺��=��������{�^���|S�����?c��!��{����O�~������؇�u��w�?�����?�b�׺��=��������{�^���|S�����?c��!��{����O�~������؇�u�g��jp��w�_��t?����%���o��_�g�_�-����Ǐ_�ߺ�_����w���j��h{�^�]~��{ߺ�^��׽��u�~��{ߺ�Bg]��g��d׮�n_t�`l��O5��}�r�VOKM�D�cd*��`O�u��N>MϢ�_�ӄ�믿u�>�����vƎ�ٙ������'�H$��jr�x�������!��.$
��؂}׺���u�~��{ߺ�^��׽��u�~��l]�r�����kߺ�_����w���j��h{�^�]~��{ߺ�^���V+%��P���yL�N�
v:��Z���ʙ()�i�W�i���UPI'ߺ�G���on
ˈ��񭲶mU-MFK#���܎r�O��je�EWZi�
G&�>1��G�u�����
�zZ��|RT�Z3˸�{w	S������Ҵ��⪂�M@]��}Cq�Յ�?�l�F���ܴԴۻ-��n�%D�EWS*QPS-e9h�z
}ZY�H�#�~��O~�����/��.���}�5F����[�lGWQ$2�Q��u��WQh��N��T�*�4� _ߺ�U
�����1_�m?����^�>O�K=O�3@��
ߵ���";���B��~m��C��x,�~3AW��b���������F�����UY!��R{�^�ߺ�^��׽��u�w��g�Z/�1�~������w���j��h{�^�]~��{ߺ�^����\���YKD�����8�i+�جq����F	!#���{�^�1�����_5�w^FV���2��kf?�4���UEe\̱C���`=��uZx����uuev����GGGS=&i�,�~(�X&x��^�#���e��zL|$�̲Ȅ�u�?��CM�
�]�w'��Ϛ�����Z��2� <��k�j�{�^���)~���r��:5�!���L�ɞ���G5]{UeqUK�,+=EV6Vo��u+�Օl��{j���G����*�uZ
-��S�D}tՔ��E4Mg�TenA��ҧߺ�T�Ʊ�t?#$���8e�l}���<h�jk\�0O)P�X�R����ߺ�D7ߺ�^��׽��u�w��g�Z/�1�~������w���j��h{�^�]~��{ߺ�^����[_�P՟���/���uߺ�U��!�]��_hke���[���jw7���E1�bex��#:�ԆX��{�^��j\VU�;b����&+����5�8���MI@��,TX��ߪW��U����ߺ�My�&+ra��;CO
�����1�K���������n�b�����>�׺�τU�����YUQU��y�w&�5�H�֦:�Vr�S��N2m�diQ>�׺�~��P��%������s���i����u_��׺��u���{����C?����{�^����w���j��h{�^�]~��{ߺ�^����[_�P՟���/���uߺ�U��ާ������9F��h�i�k�5j|bǔ��ʊ�i'���2J���v]D=׺:�ܤ{�����W�i�wNӫb�O���ah�[�	�xc���q�U��}S��4�A6�u~��tH�@\��}I?�=��uZ���b���=�X�Y��4�K]�d������Sͮ�$��!1��<\�Օ{�^��/��5�#����M���{����׽��u�~��l]�r�����kߺ�_����w���j��h{�^�]~��{ߺ�^����[_�Pտ��[����ۣ��^�}��tw�K�{�2�5 �������ЈM6pQ��c�H�Hdx*#)�uX�/��Diw�K��)~?���y�A���l����_]��!LNR�'@�e���.K�
Z)�Y��ѡ������[��a�dSU��?�#�FЋqU*���^=R�>����I�>A��������9M&?svVV�T�5H�VMM-B	���T��%eP��c������{������
ָ����+kQ�'�3"/�
bD+�tTtѤ):JSā�mL}׺���uB�̎D�ʦ�.��Q����C?(��%ߺ�Dߺ�^��׽��u�w��g�Z/�1�~������w���j��h{�^�]~��{ߺ�^��Ё�ݗ���|`��ѨHr�J�'�ug��P�<u���H�b����H��=׺�����(���M$]����G��3�Q�\�.�G��ߺ�Y?�����O��y��{���d�_y�%��ߌ�]ˉ��Lvs~�e)+�Xk:�d�e��gS� ��^��f�!��d��a?��.g�?X���H���<���}��t=m��I��^.,&�υ�8�m��`��&2�PP�G����Yf`=N�v<�O�u�?��?���'��<���9���7�dq�T��^�i�G���$�04��R����i��gn~��Y��f��٩��5*4t�X������G����5U����w,��}׺���u�~��{ߺ�[܆��������w���j��h{�^�]~��{ߺ�^��׽��u�~��*�ػޝqOQ��T	��
l#ͷ��.b���:�Z|S=���4����:��`�A����~�7.���/�����?�p�7�I$�����㎓�X������~��,f�~ȃf�oyv�]q��ɔ��y�e�sW���mvoh�	��Ӱ���Icp��^���?tVbh0{uV�gh29L)8j�J|�;Br5����ة����H���SȊ���'2Gu�q��r�cp�0�VK��+�����)䨊z�i��z�e��^ �բpE���{���u���{�{�^��׺��u�.����E��5��{�����w���j��h{�^�]~��{ߺ�^��׽��u�~��'��c��ifr��d=G��˺�c	O�:�su�~�n<���p�L�nW�E,Q����I���^�i���U��ߛ�7�ڻc�3�u���=]�ޙI�s�|D����&���2�h�
FdfP����{�
g͏5E,4�SpS�)��ڊ�*�ⵕ{�]�X��
�U��R���ZI��K3��T����u�~mQ�_���c�8�|�9}�Bw�LO����ۃ����|�d�S�*�A	���s�_&q����z���-
NO׻N��;�"���u�uuf#'��ǷqmK�wT#e��*��������tQ���u�~��{ߺ�^��׽��u�w��g�Z/�1�~�����o����6uN����ݟ�7�?�7�/���ܘ}����8�����>��&�V�'�{�����������u�
]��a���?~��{��������H~�׺��5w��o�������u�j��?�!��^���������C��׿᫿��0����{��W���a��ߺ�^����������u�
]��a���?~��{��������H~�׺��5w��o�������u�j��?�!��^���������C��׿᫿��0����{��E�Џ��_��/����������~�m�����{�����ߺ�^��׽��u�~��{ߺ�^��׽��u�~��{ߺ�^��׽��u�~��{ߺ�^��׽��u�~��{ߺ�_��images/themes-16.png000060400000000321152455755750010244 0ustar00�PNG


IHDR�agAMA��7��tEXtSoftwareAdobe ImageReadyq�e<cIDAT8�c���?%��j����`�U���p5�?R(��7��a?�L��6��Ã��� �j��oξ���j�7���i��g&r1sK�$c�B�IEND�B`�images/info-16.png000060400000006532152455755750007724 0ustar00�PNG


IHDR�a	pHYs��~�
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATx�\��KAƿ���q/p6..ANl�\�W���)$1�6iS�S�����
i��H{&\#�*��������Kq�z������}�{#"t:! �Dnj1��,�Z�sa���s���-%I�5����a&�R�3���9�Ƙ�EQ<7�|��]�$T��건�$�,��[�D��s�<���,�~�Z-AD�"�R�T�1c8�888���!�0ƀ1!�V����fι) ��-��:�1*�h4�R
P� ����¦s��k!wΡRE...������:�9�D�v+[��z�eY��nc{{{B��Wj�kZ렚RJ����RJ<�9��A
������PM��־g�9)������8�@D(���EQ|3�LƘ�,�&�
k-�8FEh6�X^^�������s����$�K��1+++H��~kkk��
�ã�p8$"0"���������0���Z0���y�L&V)�A)u��9���TAU��n��1.G�Ѥ,KW����`p��v7=�;會1������t~~�D�^�������a�,�suu���z����޶�f6�@��=�^u&`�0�.�`�nt�IEND�B`�images/image.png000060400000001053152455755750007620 0ustar00�PNG


IHDR##)Ck�PLTE�D=ҧ�ʘ��|w�nh�upܼ�Ѧ��@8�TNƑ��|v�4,�wrŠ���¿���IB�KD�hb�80�UO�_Y��ßG@�{w�icǓ��ga�MG�ZS�6/�:3ʙ��OH‹��>7�-%�+#�'�)!�%�"�3+� }��&tRNS�;pw�	&�Ga�Q7����._M��|��_���Y��*IDAT8˅�ٚ� F�U�2���v�����7
��-q��#9���d���g6��@�M:��J�N`��D\��������t��م�[�S��(�&��|�<���	*��^l� W�Ť��3�Fԗ(�a1��X��/���?fUh�O[��r�w�)J���wh��j�$ŶE�M���G��Rڸw�A�v�t�P&�Ɩ�ch��	���6#�e���q|j6���m"L�a�9&\��RK<&̗�-7Ӹ�`�q��x��Ko��C�:"�Ycܡdk��U�����G����1�Jr6IEND�B`�images/features-48.png000060400000002733152455755750010613 0ustar00�PNG


IHDR00`�	�PLTEwww���www���www�����uuu��������ьZZwwwwww���wxx���wwwttt���rrr��ċ����̽����

������������www��Ԣ�yttwww�iiwww��̽���ww����,,�Ԗ��VV۵�www�``www�hh�www�ttwwwvyy�����������--www����>>���LL���vvvwwwwwwz~~www��э��QQ�HH�UU��«���HH��&&�

�GG|||��//�VVƑ�ծ����|nn����99�������``���������www�www�����������������������������������ͬ����ʽٶ����--�������՜�����99������������щ�֭��GG�$$�[[ԕ���Ϳ��ٿ��eeף��qq����11�AA��ll�ҏ��VV�����֡���kk�{{����((�������PP�::ž�ttRNS��ܷշ�����������������緷�z���C������z����o!�����(�\���H��b+����������:��l/������3���緷�������������a�0�UIDATH�Ŕ�[�@���QQ�h��݈{ܳ��ڽ���**�e�ֺ���{��`%�ȧ���or!yN��Q���66������jR��P��(��Q�G� �S�<��{���)�60�?}��1��Riz��
xKW�F�_ޥ9i�`��"�i8u�`k���t�`tӯ7���(¾���:�+��Yv����nh�I;��1CQ>;�����nA�?���,צ����>�M�"8�����h��Iә��/(���`m��L�0Nt�v��i:5�]_]��KuxI+�%.6�%t|/�^9F1�}%E*թQ�0n�6
��3�r20�&�y��B.x�q��l�a�bH,I޲B�^N@�؝��/^�@��U^LH!:.`��/�`od�UG'�!�\�0N�/�m(*��8����m���d�u�(��<sAy:�S�Li"��\\9���>A\�t��in�a��(K��#�ڿ	�/h4����ıAM�?��~?����롟��q'頜�0���~m҃��*ϴ��1�oVFGo3�{����b;Xy~	^�zTI(��8�H�����-����Z��(Z��~��FR2��C%�FY�@�B2�3��5��	IJ.P�Y�@��JK��I8��b9��Z�X��A<�hi���AyG��]-�+$���<}�����U�BAXӀ��B�_�^��Q�-&�~0"�U�!?|�@nͳ��WKIEND�B`�images/all_cats-48.png000060400000002602152455755750010552 0ustar00�PNG


IHDR00W��	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z��IDATx��Y=hA���&��"H
A�M �t��b+ӥLR+�5mH��"V)$i$EJ��,"���.&�&ow����vnfn�Mn�1so�n��̛�#fF77�.o====��"�!��'�7:S'��0�u�2�����K#�ob|6����e���Xp�M�Z�6=�_��q�/t\��Z;��#CDMc�+�����&�mo�hicc�G�I����Z�1�V߷�����8��&`[ߧ���E��u��:�>��r�b��0!"瘐1��3r�3���NNN�100�(����R
�J� Rg�Q�����R��y����i�梵F�$��$Ipvv���S

=XZZz����{DD�<EQ��%{[/ŕ���+G��R�h4��z��ϗ���U�C��<iv׮��a�1	�X=D�5μz[k=����!b�[�]���έ���R��Rd|���H��`��h�<	�z��>4� A�3C)�4M!d*���C��m���E�\3m��miC�-�Q�#�,�vq�X��(3�#�ҽ.ЮduY����E�%������̘��=&�_H�!�P�	�p3����r��Cf���.<����L"�"��a^���`TVB{wq�B��p%u�h�Iv�w7?Z�p�ى|[�/�-⻒����bz��2�\�\�b��@[u��}���ʆN;����.ھ$�Zȕ�>��C��7��zN@k]^�J�4�A�@�je-f��]�"h)���}`ff�'��җi���X��
|_]]�Q��e�`���;�~����E��E�hU��پ��]���h�E`��^�:=��Ev��{�[Uf~uՑg��w����}�<`����"��	�S"�Z[[k�\P�©?�2��T���R0�mI*�$9N42I�1s���S�#�#�#p���<��5��8jIEND�B`�images/nophoto.jpg000060400000030230152455755750010217 0ustar00���JFIFHH��FExifMM*bj(1r2��i��
��'
��'Adobe Photoshop CS4 Macintosh2013:05:25 16:10:23������Z&(.HH���JFIFHH��Adobe_CM��Adobed����			



��Z�"��	��?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?�G84I�Z��
W4��URSk֫����W�~UI%6�j�{�)z�~��UT�Sk֫����W�~UI%6�j�{�)z�~��UT�Sk֫����W�~UI%6�j�{�)z�~��UT�Sk֫����W�~UI%7w
��D����?�$������w�����;�UT���I%)%*�^�Ֆ�ƙ���-T��&hF}m|Od���	���}��%B�C�>2����S�,i ���Jϡ_�^�~i)����,t}�))I$�Jm����I/��	$�����w�����;�UT���I%%�gପ�L������l��ʿ9�����ܢ$�@C}_��k��*I)�o����M	�Z�۔T���c����	%)$�IM���	%��?�$������w�����;�UT���I%%�gପ�,׸�e%"����N�0f5:����Ғ�HH���o5K�{��`~�IJ����T�h���G�$\�
�vI)I$�Jm����I/��	$�����w�����;�UT���I%)K{�x��)$�[���K���E$��{�x��z������o��-������I$�$�I)���?�$��g�$����7�{Kf%����IH>���/�+�GI% �7�����$������7�t�R�+�K����IH>���/�+�GI% �7�����$������7�t�S�͓�%%$�S���2Photoshop 3.08BIM8BIM%��\�/���{g��dպ8BIM�HH8BIM&?�8BIM
x8BIM8BIM�	8BIM'
8BIM�H/fflff/ff���2Z5-8BIM�p��������������������������������������������������������������������������������������������8BIM8BIM
8BIM08BIM-8BIM@@8BIM8BIMEZ�no-photo�ZnullboundsObjcRct1Top longLeftlongBtomlongZRghtlong�slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenumESliceOrigin
autoGeneratedTypeenum
ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongZRghtlong�urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT	horzAlignenumESliceHorzAligndefault	vertAlignenumESliceVertAligndefaultbgColorTypeenumESliceBGColorTypeNone	topOutsetlong
leftOutsetlongbottomOutsetlongrightOutsetlong8BIM(?�8BIM8BIM8BIM,�Z��p���JFIFHH��Adobe_CM��Adobed����			



��Z�"��	��?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?�G84I�Z��
W4��URSk֫����W�~UI%6�j�{�)z�~��UT�Sk֫����W�~UI%6�j�{�)z�~��UT�Sk֫����W�~UI%6�j�{�)z�~��UT�Sk֫����W�~UI%7w
��D����?�$������w�����;�UT���I%)%*�^�Ֆ�ƙ���-T��&hF}m|Od���	���}��%B�C�>2����S�,i ���Jϡ_�^�~i)����,t}�))I$�Jm����I/��	$�����w�����;�UT���I%%�gପ�L������l��ʿ9�����ܢ$�@C}_��k��*I)�o����M	�Z�۔T���c����	%)$�IM���	%��?�$������w�����;�UT���I%%�gପ�,׸�e%"����N�0f5:����Ғ�HH���o5K�{��`~�IJ����T�h���G�$\�
�vI)I$�Jm����I/��	$�����w�����;�UT���I%)K{�x��)$�[���K���E$��{�x��z������o��-������I$�$�I)���?�$��g�$����7�{Kf%����IH>���/�+�GI% �7�����$������7�t�R�+�K����IH>���/�+�GI% �7�����$������7�t�S�͓�%%$�S��8BIM!UAdobe PhotoshopAdobe Photoshop CS48BIM�$���$���Z$���Z$��I$��I$���)d��/���4ij��9a��9a�I9a�I9a��Z9a��Z9a��4ij���/����)d���8BIM���http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41        "> <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:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmp:CreatorTool="Adobe Photoshop CS5 Windows" xmp:CreateDate="2011-05-22T11:34:30+02:00" xmp:MetadataDate="2013-05-25T16:10:23+02:00" xmp:ModifyDate="2013-05-25T16:10:23+02:00" xmpMM:InstanceID="xmp.iid:ABF3342008206811AB0FBA304D949980" xmpMM:DocumentID="xmp.did:471168655584E011A0CFBCFE7A800710" xmpMM:OriginalDocumentID="xmp.did:471168655584E011A0CFBCFE7A800710" dc:format="image/jpeg" photoshop:ColorMode="3" tiff:Orientation="1" tiff:XResolution="720000/10000" tiff:YResolution="720000/10000" tiff:ResolutionUnit="2" tiff:NativeDigest="256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;B5B41C00DC418C559126791344CA1141" exif:ColorSpace="65535" exif:PixelXDimension="135" exif:PixelYDimension="90" exif:NativeDigest="36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;193BC2BA82520B989671D9AFAA4665D9"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:471168655584E011A0CFBCFE7A800710" stEvt:when="2011-05-22T11:34:30+02:00" stEvt:softwareAgent="Adobe Photoshop CS5 Windows"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:481168655584E011A0CFBCFE7A800710" stEvt:when="2011-05-22T11:34:30+02:00" stEvt:softwareAgent="Adobe Photoshop CS5 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:0180117407206811AB0FBA304D949980" stEvt:when="2013-05-25T16:04:53+02:00" stEvt:softwareAgent="Adobe Photoshop CS4 Macintosh" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from image/jpeg to application/vnd.adobe.photoshop"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from image/jpeg to application/vnd.adobe.photoshop"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:0280117407206811AB0FBA304D949980" stEvt:when="2013-05-25T16:04:53+02:00" stEvt:softwareAgent="Adobe Photoshop CS4 Macintosh" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:AAF3342008206811AB0FBA304D949980" stEvt:when="2013-05-25T16:10:23+02:00" stEvt:softwareAgent="Adobe Photoshop CS4 Macintosh" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:ABF3342008206811AB0FBA304D949980" stEvt:when="2013-05-25T16:10:23+02:00" stEvt:softwareAgent="Adobe Photoshop CS4 Macintosh" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:AAF3342008206811AB0FBA304D949980" stRef:documentID="xmp.did:471168655584E011A0CFBCFE7A800710" stRef:originalDocumentID="xmp.did:471168655584E011A0CFBCFE7A800710"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <?xpacket end="w"?>��Adobed���		





��Z������	
	
s!1AQa"q�2���B#�R��3b�$r��%C4S���cs�5D'���6Tdt���&�	
��EF��V�U(�������eu�������fv�������7GWgw�������8HXhx�������)9IYiy�������*:JZjz�������m!1AQa"q��2������#BRbr�3$4C��S%�c��s�5�D�T�	
&6E'dtU7��()��󄔤�����eu�������FVfv�������GWgw�������8HXhx�������9IYiy�������*:JZjz��������?�C���cEN*���o���]��o���]��o���]��o���]��o���]��o���]��o���]��o���]��o���]��o���]��o���]��o���]��o���]��o���]��o���Uy�u�iʾ�qW����G��W��v*�Uث�Wb��]��v*�Uث�Wb���y�?������G��W��v*�Uث�TU��ʅܐ+ALU[�t?�߇��Tn��H	"�5�P���Wb��]��M?��y�Ƹ�����G��W��v*�&YN�b��V������]-�RӐ�қb��0F�*:���׭�O݊�r�t*e=G|UO���~*�[қ�늠g��!Bj:�튩��]�����<��\U����G��W��v*���?��1T�S��En���S��y7�!އ��QE)M�1T<֣��~	�*�o7�n�6ab�v����T~����Wb��SO����*�����G��W��v*���?��1T�CO�]B����?�D����]��CA��L�����⨜U.�?���qT6*�Uتi�_��5�_����G��W��v*���?��1T�C�^.�3��⪪ထ7F���i�UK1�N*�h��ž��{U��ڇ��Q��*��]��M?��y�Ƹ�����G��W��v*��eY�4���⩖*�;��b�cВ`5S���Wz�]=
�k�*Ђi�3�(�u�*���v*�߰3�z�C��]�����<��\U����G��W��v*�U�7���ן���y�]���o���~7�qWz���8��y�ߍ��U޼����*�v*�Uتi�_��5�_����G��W��v*�Uث�Wb��]��v*�Uث�Wb���y�?����4�z��+M��5�P����_��]�7�,����Uߣ��_��]�7�,����Uߣ��_��]�7�,����Uߣ��_��]�7�,����Uߣ��_��]�7�,����Uߣ��_��]�7�,����Uߣ��_��]�7�,����Uߣ��_��Q^��=*����_��N*�Uث�Wb��]��v*�Uث�Wb��]��v*���images/all_events-48.png000060400000004414152455755750011127 0ustar00�PNG


IHDR00`�	�PLTE�!#�qxTGUUHVRDS�  WJXSETTGUSET���UHVXKYRDSSESYLZ�ukuSETSFTRESSETRES�x��~t|������qgrmbng[g[N\{r{�RDSdXeQDR`Ta}t}TFUWKY�\O]�w�VIWrgr�~�������I9HQCRxnxj_ki^jQDRRDSSFT]O]SET^Q_aUb[N\�W\��?B�i]i�w��""�҉����zpzbVc�00������yoz�_S`cWdRDSRDS�YLZ�''\O]�@D�WJX���$$���������$$���{{���Ҩ�������RDSncoj_kqfqwmwRDSRES��TGU�x��y��%&�II��� ����jq��ah�dh���|��
��Ŏx���~��EE����w{��в�==�++���ך�������CD��������݋���""QDR���UGV���w�{r|\O\�z��}�wmxqfqtjt�fZf���ncobVc_R`i^j�h\hZM[���
�lam�~t~���������𙒙���g[h����}�qgr�����}������������������ٍ���tju��������ǩ�����ݰ�������ľÌ����22����SS�����''������Ա==�		����xx�hh��ơII�~~́��33կ��$$�����ٴ��tjuSET|s}}s}SETSFTSESw�w@�tRNS	������y�ǽV_�՜	�X���,����e���L���֝����?���s�l���������������.��:Ϗ����~$X����K����p��������x�k����Z�,��կ���}�������D��ݗ�����������������������������������������������������������������������������������������_�_}�IDATH���wLqp�jp�J�qo�{Ľ�{��ƽ��{�W;�b�r��h�,{q0�{�)���%�??���������aT���TYr�JH��0���H�^�%��{T��I����Xu�^���p+3edE��洒��l�C��BB|��+
���RF[.�r�R"Ξ�?���0�V�(T1*,1��O���*��<�iZ�}|tD��Ӑ����)���S]��w���
y�T*eŏ���^�A�T߆�y���{���y&���9��܍��}	F��J��O�j��Lucbb�||Dw��^�q���:»7x1a�������LrB_�E��{�t��G��v�-j]Gz���u��߱�����ٵM\sxUPT��y�5w��(**x��u�
g:���d�޼y3�ܚ�+�6qk�׷�t���9kn\ܙ��e��NZ{�je�ZgΙwqԢE��黳R��S��
:�xAnd~��M���o�f�����w�ȡJ��[����7Xi���"yW۴	��������
| �E.��/mڬ��<I�}�!���K��T,��D�^�8%�(6�Δ^���A&��$���KF7,�F&�4A�ŕ3�T:z%V�ar^�w���`�O���3A�n�HY�<�R�����QEc���S{E=.@�"R�l
KT!@>��l��7��Bp��e�6�.�I�P�s��9Wu��#"�7��t�r.��FЧ��#G�6�*n�R�t�\@%Фf�A�M�<P�#@���h�����9Q$��Rd�q�:�!q#�v�i�z�m��Xd�VN&��_BYd�Ғ	6e";Ml�z���W�dx���1f�'f���Q�)�)9$I6��z" Yj"Rt�̕�—PHmF��4�իW�֭�9j�[`��-T�	 K-�v�ѣ��O۶��)s�rM�{/��Nd��!)���B[���P�2��x_%S�LLX�)Ah�O�P���l@`�~���*�{�;�!H�/���uA�}��oĮ���Z�O��҃X�w�5E(���4���:1rޯ짰�گ�����OL�샿:�þ �*W�֢Nc��v���.yQ>>>�rU��eo����]p�%P$��\^Z��kU� oonuo�rL�j5~��[m��x?�9�v����40�n��jM����iܴ!��u
��������c���IEND�B`�images/customfields-16.png000060400000001154152455755750011465 0ustar00�PNG


IHDR(-SPLTE���eZei_ksls�������������������rjs{v|������������WIX_S`���kblwlx�~��������������������������������������������������������������ݼ�������wwݧ�ޫ���ppެ����Ұ>>�44�AA���88�����������������tt��������֙��������⳱�ⷷ�����������������ל��EE���ݩ��ii����O� tRNS�wb�@���%Eww1��W|4w�wlyw�疖�/mb�IDAT�M��R�@��#$�)���JB�i�'E��{��avt�?g���7���I��^A$8��*���zA|-h���e�F�POH�(VUO挱��+���6|~�޳4M3�䁼��i͒8��o.A���	���-��ߨ�yz�?��PJ��|��a�{�q�ax7Xc۶�y�}:T~�#|���<�T(��%A�BB��vU��r�RG���&�Q�IEND�B`�images/blanck.png000060400000005434152455755750007777 0ustar00�PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�FGIDATx���	0���B��$���sw��c]���IEND�B`�images/no-photo.jpg000060400000031776152455755750010314 0ustar00���JFIFHH��CExifMM*bj(1r2��i��
��'
��'Adobe Photoshop CS4 Macintosh2013:05:25 16:09:41������Z&(.
HH���JFIFHH��Adobe_CM��Adobed����			



��Z�"��	��?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?�M`���ݧ����4��� �{��w��h>DpG))��U�߁K֫����-�~�o��Jmz�~��R�����$�׭W�~/Z��
��Jmz�~��R�����$�׭W�~/Z��
��Jmz�~��R�����$�׭W�~3�jn�$�2�n.�:�ȧkCx��{��ޥ����Hh��$��g�$������w�����;�UT����C���$�R�pw���t�Z�8#��#���.�?���S]�Cē�#:�>'�JY[@�	)����T-�0H3�(��~%<�Ƒ2
Jj$��+�ʡ�5�BCx��RR8
9'�m.��SuB���{��)I$�Jm����I/��	$�����w�����;�UT���I%%�gପ�L����ɩ���a���k]��v�����ܩ9�:�#�q	)�+Z������/Q�I��F��w��̓u����
*4��(�)����	#鏂JRI$��_�?��K���I)����w�����;�UT���I%%�gପ�85�LG�?�[�����d;ik��o����GM�kD�>j��f�#�JJI!A���0;����ޥ�l�/M�3a���%-C��<���FQs@Grns>������%!�c�y�k�JRI$��_�?��K���I)����w�����;�UR@t	)I��
]�K��}����N4IK�eڞðD��?z�I)��������QI%2��?z^��x��)$�[���K{�x��)$�;H՟6�N��r
t�hw?#�%.���7�j?{�$���_�?��K���I)��HsK�=��B��{���E��9<s��D������7�t�R�+�K����IH>���/�+�GI% �7�����$������7�t�R�+�K����IH>���D�����YI%#k,��J�Y��줒����
0Photoshop 3.08BIM8BIM%��\�/���{g��dպ8BIM�HH8BIM&?�8BIM
x8BIM8BIM�	8BIM'
8BIM�H/fflff/ff���2Z5-8BIM�p��������������������������������������������������������������������������������������������8BIM8BIM
8BIM08BIM-8BIM@@8BIM8BIMEZ�no-photo�ZnullboundsObjcRct1Top longLeftlongBtomlongZRghtlong�slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenumESliceOrigin
autoGeneratedTypeenum
ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongZRghtlong�urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT	horzAlignenumESliceHorzAligndefault	vertAlignenumESliceVertAligndefaultbgColorTypeenumESliceBGColorTypeNone	topOutsetlong
leftOutsetlongbottomOutsetlongrightOutsetlong8BIM(?�8BIM8BIM8BIM)�Z��p
���JFIFHH��Adobe_CM��Adobed����			



��Z�"��	��?	
	
3!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'������������Vfv�������7GWgw�������5!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F������������Vfv�������'7GWgw������?�M`���ݧ����4��� �{��w��h>DpG))��U�߁K֫����-�~�o��Jmz�~��R�����$�׭W�~/Z��
��Jmz�~��R�����$�׭W�~/Z��
��Jmz�~��R�����$�׭W�~3�jn�$�2�n.�:�ȧkCx��{��ޥ����Hh��$��g�$������w�����;�UT����C���$�R�pw���t�Z�8#��#���.�?���S]�Cē�#:�>'�JY[@�	)����T-�0H3�(��~%<�Ƒ2
Jj$��+�ʡ�5�BCx��RR8
9'�m.��SuB���{��)I$�Jm����I/��	$�����w�����;�UT���I%%�gପ�L����ɩ���a���k]��v�����ܩ9�:�#�q	)�+Z������/Q�I��F��w��̓u����
*4��(�)����	#鏂JRI$��_�?��K���I)����w�����;�UT���I%%�gପ�85�LG�?�[�����d;ik��o����GM�kD�>j��f�#�JJI!A���0;����ޥ�l�/M�3a���%-C��<���FQs@Grns>������%!�c�y�k�JRI$��_�?��K���I)����w�����;�UR@t	)I��
]�K��}����N4IK�eڞðD��?z�I)��������QI%2��?z^��x��)$�[���K{�x��)$�;H՟6�N��r
t�hw?#�%.���7�j?{�$���_�?��K���I)��HsK�=��B��{���E��9<s��D������7�t�R�+�K����IH>���/�+�GI% �7�����$������7�t�R�+�K����IH>���D�����YI%#k,��J�Y��줒���8BIM!UAdobe PhotoshopAdobe Photoshop CS48BIM�$���$���Z$���Z$��I$��I$���)d��/���4ij��9a��9a�I9a�I9a��Z9a��Z9a��4ij���/����)d���8BIM���http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41        "> <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:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmp:CreatorTool="Adobe Photoshop CS5 Windows" xmp:CreateDate="2011-05-22T11:34:30+02:00" xmp:MetadataDate="2013-05-25T16:09:41+02:00" xmp:ModifyDate="2013-05-25T16:09:41+02:00" xmpMM:InstanceID="xmp.iid:A9F3342008206811AB0FBA304D949980" xmpMM:DocumentID="xmp.did:471168655584E011A0CFBCFE7A800710" xmpMM:OriginalDocumentID="xmp.did:471168655584E011A0CFBCFE7A800710" dc:format="image/jpeg" photoshop:ColorMode="3" tiff:Orientation="1" tiff:XResolution="720000/10000" tiff:YResolution="720000/10000" tiff:ResolutionUnit="2" tiff:NativeDigest="256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;31DECB38E4190975F1AC39FD292441D4" exif:ColorSpace="65535" exif:PixelXDimension="135" exif:PixelYDimension="90" exif:NativeDigest="36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;193BC2BA82520B989671D9AFAA4665D9"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:471168655584E011A0CFBCFE7A800710" stEvt:when="2011-05-22T11:34:30+02:00" stEvt:softwareAgent="Adobe Photoshop CS5 Windows"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:481168655584E011A0CFBCFE7A800710" stEvt:when="2011-05-22T11:34:30+02:00" stEvt:softwareAgent="Adobe Photoshop CS5 Windows" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:0180117407206811AB0FBA304D949980" stEvt:when="2013-05-25T16:04:53+02:00" stEvt:softwareAgent="Adobe Photoshop CS4 Macintosh" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from image/jpeg to application/vnd.adobe.photoshop"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from image/jpeg to application/vnd.adobe.photoshop"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:0280117407206811AB0FBA304D949980" stEvt:when="2013-05-25T16:04:53+02:00" stEvt:softwareAgent="Adobe Photoshop CS4 Macintosh" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A8F3342008206811AB0FBA304D949980" stEvt:when="2013-05-25T16:09:41+02:00" stEvt:softwareAgent="Adobe Photoshop CS4 Macintosh" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:A9F3342008206811AB0FBA304D949980" stEvt:when="2013-05-25T16:09:41+02:00" stEvt:softwareAgent="Adobe Photoshop CS4 Macintosh" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:A8F3342008206811AB0FBA304D949980" stRef:documentID="xmp.did:471168655584E011A0CFBCFE7A800710" stRef:originalDocumentID="xmp.did:471168655584E011A0CFBCFE7A800710"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 <?xpacket end="w"?>��Adobed���		





��Z������	
	
s!1AQa"q�2���B#�R��3b�$r��%C4S���cs�5D'���6Tdt���&�	
��EF��V�U(�������eu�������fv�������7GWgw�������8HXhx�������)9IYiy�������*:JZjz�������m!1AQa"q��2������#BRbr�3$4C��S%�c��s�5�D�T�	
&6E'dtU7��()��󄔤�����eu�������FVfv�������GWgw�������8HXhx�������9IYiy�������*:JZjz��������?���S"ݏ���ت��m�чU �~����?��*��?��*��?��*��?��*��?��*��?��*��?��*��?��*��?��*��?��*��?��*��?��*��?��*�MJ�6�Y�D�⫨̞���i�]�=�W����G��P���aчQ���6��iO��U�]��v*�Uث�Wb��]��H�a���y6�e�~��b��5Jө��r~x�o�_��5�_����G��W��R��=�=�=>�UrH��هU=F*�v*���YP��h)��~������՘��$V���v*��U }�=u�V���e��?UWv*�Ǘ���qW����G��W��v*�v��@��F��P1TlP�� �	{����%��j�Џ|UՆ“�GA�S������UNP΅A��`*j�I�T���D
���ƣ��Y-E���~G���qWb��SO����*�����G��W��v*���?��1T�B�r�B���O���Zƒ�T�Ց��ъ���R�xb�;��0m?UE����W[V��n��� �׊��T�P���?Y�Pث�Wb���y�?������G��W��v*���?��1T�CO�]B����?�U�#z�<Jt~�}8���'���E;��o���b�~���O�8��
��:���*��R�C��gCb��]�����<��\U����G��W��v*���?��1T�A���r �"�h||*��d�4�:��c�s���O|UE���nџ��.*�a ����.���b��U.�?���qT6*�Uتi�_��5�_����G��W��v*���b\�H��b��rK����������H�E*���?3���&�����m��׺��o�]�V�LA��G��qUw�7B�d���b�=I"�o�;J?�a�犠�Zo�����P���Wb���y�?������G��W��SyB� rs�G���ZXؐ���Q�G��Q�����*�^��}�w�?���ן���y�]���o���~7�qWz���8���yDiܡ��*�%V4�.:�늯�]�����<��\U����G��THPI4�8��)$�9�~C^��(��{��*�v*�Uث�Wb��]��X���lG��y��|I����UTnC�����<��\U���C
�R5>�z�ኡWH,CK/&/�?US�o�Y�����F�ş�ۊ��o�Y�����F�ş�ۊ��o�Y�����F�ş�ۊ��o�Y�����F�ş�ۊ��o�Y�����F�ş�ۊ��o�Y�����F�ş�ۊ��o�Y������	h���O�*�V
�q*��cқb�����o���N����U�Wb��]��v*�Uث�Wb��]��v*�UB��E�~����m�N*���images/manager/approval_16.png000060400000003311152455755750012301 0ustar00�PNG


IHDR0P���	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z�
IDATxڜ�_hW��;;���d�1���&Ե!Ґ��/*m�VL�m*�������Vl)�TDԂV����R�ERQh�cj�l�FM�kL��u�$3��3}�d����r`f��w�;�s��'$�Y���C6MQtT�hj�-[e�N�������
jPS	2pB�Y�O����"p�|Q��rq!O���W]n���\TM��'����N[#�^N���'䧿�2wE`����=+�C�K�,䣽c��G�Ce��]͢�R&��(�!�*L��2����������`��#:F�<I�~YM�2�0	��EɊ\Ry���a9�%s@p��Av�n1�u%��mbH@D@���c�E>�����B�X)�T��_��ʻ�轭pd�K6�L��=�w��s{)��dFC�²��'�H��955�a�,�A�Z�2b��?�{��{1��-@e�
��^�@����)��bb�	HL=A��ل���PLԄ�e�	PS�}�'�]>}Q�D�̬��[O�J���PQ��p�YMϰU�{1F��Ί^�( ���e'[c�>!@W2���I��AW���MN��0����M�Y�<��?�+��0���T�_ �E���M��/��O��1j���\v��%<���������sW�n'��dz'��c���#l��KKd�TRg�k������\�����#ퟆ����Rj��b�7@�|��Eu�U{��YG<ٟ�/����3������W Q�!�0�~�:�f�}͎aD�Nߢ%2��o����Ә5C�±r���C9U�D����@Mz�k
73M��)&��q�s;JRN����j��M,��"�"ɱC��x���I��6��ۺOya�D��m���?�}WEr9��mK+|��[��4(d��$��M%{(pHY��>tm7�#��Q�3��w��s�dgS�J
�S��E��3n�CK�i[�,ĥƕ��'M��U��%s3|�&����ɱk;I$q
.��:J�pw��x��ۗy�-�}.Fm�4�oh���U9:& 'sw�-�q�7��V�>x��#�j4-�6�ɜ����ٵ\h�4���>"0@�+�#93����
܏LoZ�"��U�Ǚ�ea�OΛ�:Y)d����!�_Q9s��G�Ձ�]Q�!\�����$�&����j��I\A�6�/ѝ�M�LB�Rz�W�P��%?&bh��E`OG�,ut��YY^��m���-!w?5�Y���%�'��50�IEND�B`�images/manager/index.html000060400000000054152455755750011437 0ustar00<html><body bgcolor="#FFFFFF"></body></html>images/joomlic_iCagenda.png000060400000006766152455755750011765 0ustar00�PNG


IHDRPP����PLTE			


			








			������-,,:

/..������+*+������������&&�""��������22$hhi�55�//�,,�������))����󒑑������		�����殲��88�  ��������߶�ŭ���|��������������dd�]]�;;;;;%$%�����д��WXY�WW�MMGHJ)		��μ���zzuuu�ooKKK�GG@ADEq8C		p������Ơ������uusssjls�iia]^QQS�RRU0P[������������ǽ��[]d�((3�����ר�����������退wx}�lledf�==6683�&������ƥ��W%&�##h�f���������ꉉЀ��88./2z*+F*+�**�f��

�	��������а������rr�HH�<<�77�44m44�--�++�##w  ��\N�����������ཽ����nn�]]�LLlBE�;;X;;�55�**�$$��?����ɯ�������ጌ�ZZ�MM�DD�%%�wX^tRNS����������
�&��Á�3��|�[�
�IDATXÝ�wTSWDZvB�U�^IH�		����D�6���e�-[*"� J�lDq�V��{[m��{��G��Ix����<����߽7Gp���Xב�����F��7�ŖGǹr���3x�#��ģ�Q��o Ψ�p����D���8g�rw�+���Q��q��0Zd����Õk�����]Ɓ�]���&S|==��\�p��j��?�1.`�a8��M6�a�|q=�2�;�Y��s�Adz2@��T�k�ݗ]��C���T� �@�
G"����7��R��v��Y�|M��[o���T��z��}�C�|��1��;�3X��խ��}a��)S��4q��E*�Ŵ����������/
%g⚥�_�:�&O��qϿ�/�	�6�Q��[�p��*c���6�:s&�{	�^|�g
��ӾP�,��t��-_��ox��� �G�bެY��DJ�O�Gw(Ca��x�u`m�M�-�ެ�_~�^$Vxy�<ZY&����?�x�cefm/=�d;xӦ�!�Jv�2���1�KUwf)�z���M�C�5e܈qs��F�\
�=J��<���	�p�Ϭ)Ab��Ա�7w޵5*�C�hU+���}~QV۹s����*��9=
��K(Ie�N�޼y�T�"z�F��
Ϋ$(Ծ;_�z��3z�py$;(3y���Ǐ����`{�}�S�ތb�L*��|}.���M%!Dx��юg�T̩E�W�gg��։��^y�X,cr
��x��9\���'<	��#��?����IY\z&L��м�k�`�O���)7|)����#��=gBo��G:	�R����[CH8x��ܘ2��
/regS�ʲ�s�'x����D��,����sk��;kT�`^DLzNs遤��[3�� �|'e&; �׵H-��g��W�³#���-��).ʅ��|F�Q�-9�T�Np��w�4�|��*��キ11+���V��͗χ�WV~�]�x�2H�?�ߍ.�q�aڵ�#VYP��gb�\{���B�h����c8%4W?���`�Z,֘thr_�'�b�\(�瘌���N�"�HU���o�/����E["V��;�Aо��q_�_�xq։�hI��|r���>\�>:8�`]������ɧê�R]�� �
�1��R�9y5Z����ڏ-і`�6�ZSj2��0�r
z7n~��9��x7:DW�Q�Gq�k/��.mmp\b|x4|ʎȶ$�e�Z��>�WK80��t&ש$��Â#�	1V�f��3���U�c�L��#C*���@�`�2q�Yt��V)[֗Zm5k�����&Sv�2Kxs�Iv����o _�Y��39�b�%���ĭ�ZVUUYY���%!1&�)�Ծ�U�����&���ʚ3��:;��#���jw$�u�0�6��DE�27��rRVR�J��I�X�,8�x��G3�4�X��q�rϪfsJdZye��4:"}Us���RIש;�n֏�	1��9�p��m�
j��6x��*1 @���_^��ySDS����I�O�w{��D\����eMB8����:��%���LF#��	+Z�La���;T�'�<Ha�p����UEǕ
���0�1*R�5��vNU�%2�)�Ϧ��<􊫄ơ��\������SS��%�ٸ((�^�!X�y���8�� ��w��M>f�kC��W��cage� ��<�C�ߵ9��'>>ը��47���b���[��Fa�6S��
�����MH����~�޼21>ޘ�Yٕ�P$I���yl�JS.0<f�05��O?��!8o�+.))�뛭�*�^�Yy����kss�J��ظnݺƀ�-��́�˔0����J��5
6ܤI������Qa>�HS��>,�p	����BY�#�.`ʜ���(��LXվ��BÜ��6.n+�� ){���ZI�m�%
&�i�,��mh��⊥$�l@V_����[�� �I��p��M[�\��[R$&$�R5���iG��[_�
�s�6H56F�6�#3�}�V��
�˪,u�X�gv_I_Qr���Gw��Os��'��#I!�1@v_[᥋^�JB$�$�V%%'gTh�T.'�BX�����I�B*���̐��\h�r�/$��91T U*G:[NR(
�tP�/�����SK�I�.9���$��
���앋���Gn��ؠ}�r��t������x_�
� F:�@z�z�F�G��P+��Z�Vk��]h�p5~~?��.4ȚQ�=>����Q�	�:t�[� ��[9j2���H.�n�P��-��}�@�W�J�W�3��IjHl,�[�pK�� ���޹4/f���@��!o=�A��G�e ��h1�
DH�m�tӺ 4kJYJ�c��!IP1(B�;�V��!!����V3���]�����+���g8��_0�q�1����:\
�04�M9�z�0�\oE��^�H��ʋ~h���B]\@��H�i�'�'J��;E��0e�m�$�:$q�rz�~�2Svs=���2��Q�U�
�Z�B�;����VC�x;�A4Ԫy���
��#ˡ�u�}��AS���0��8��!��-B��}��~,+O��d!�y���������E�'�݀G�I��\G<��G�c�{�)�'1�_�J'$�/IEND�B`�images/generic-48.png000060400000004620152455755750010406 0ustar00�PNG


IHDR00`�	�PLTE�������O����6������W����������V���������|��������������~��{��}}}tn���Zjo�M�O������}��u������������M�2���w������������O�Pp��x&������K#�������ma�K~#���fpu���f"�Gd	{��bpux�������fv��j |�����������������z��w�����{����������牤�� �
�����������G�
����������Q�J���������M�(���y���z����,|������/�$�$�3���}���)�������C���v����Ϲ1����<�������6�?���n���$����� ��񌦬����������ů�/����Ob{��(���ǩ������㷰���ʣ�����������Bs������i*��ް�ū4#�C(�������˲Զ��.�Ҹ�������Vr)�����会p�½�l%�����������s���۾��7�>їT�����_�y}[Jϲ�������������I̼�������}���vJ�������Ɵt=����Sگw�־�J,ï����̇G�ٿ��I�b"����T7�b'�������{Q|"���������K*�\0iTIlon����X}�����������z��}���*���z��|��������i��}��v~��������}��-�Q|�tRNS:��.R^g(1���
?I�IrX"A'�9|g����-�yfҾ��h��A�8\��RҶ���Q��g�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������CIDATHǽ�LQ�A+*��{���j�*E*�ڪ8h��A+� ����{�u-$\J�%���-��c������%7���V-z���7��+��jӺSٲe;w�\���9��u.h�7�>��C&x��u��{ߎfee=+�.nT*�x�$H�����og�|����[�K&��EA$�w_�
ɽ�A.�%�+��k$��'Ow�Ť��Ĥm�òk���t�\�`0�'q<��	~����%6��VJ��̒x�~�/��8�>�f;(7�͒��xi�l��BBB�aK|t�>R��x�pr�xsB��(66ֶ%R G����pźu���Y�;���@�X�P������J	��̙��%R���H���_�J�×[�V����#���J��N�r�^��W""�Rd}�\N5�7�f̘�0:9���n!7N��tD�JƾVU[���\�r �Y=����j�	1-��EJQJ��ٲ�PL����	S��"Х�$���|�P(�}��_[��t�ԩ3|�BL"|�H(E�T����(��l�/�Z���A���t�#�-:�U(�WX���v-�rs�s��b�y��h�|D���je� |�Zas.����UP��ƨU�����Xć,܂A.�o�*W�l~�@��5��U�B��h+D�"��F-?!�܎���2�����p�Hsb-���tl��B�\>+nY�
{G-�k4����\#�(�z��#���r���+�Z:K�,3--s�:
X�a\R��Y�������͊�Y@�pa���X1.Xf��>_q�i��_�+,]��;��57��`+,DQrM&�t㣘:����y3g���������Q�E�I�Q���ZS��ßB}˜ėg�\]q����(�`b�LI��K��aRE
�R�ư$�۳���I$�f(q
�fHui٘A1�	HL�j��A^>v��y{6=ʣ.f��TX*I�\7�$�)����N����S�Mqi,&�v3U����҇�r�\�"��T� x��^��Eq���)%�眾�������N�9��v
��O�'��s7��i:��	^F���d*�a�n��+ab�
� �G�>�y�p?&O�2.q�U�J��i4a<�J

F8�=6z���Ɩ�M��x*��/�� �f�v4��0��kq�ߌ�j٣G��<>��T�|i�׭�A�shξ�8��L-N������ЊN���.s!]`7�^�Z�NH�:M*��w���Ö@��~�:B~9F�z���k���QghÆ
��	�]�~ph��A���+q�H�G7IEND�B`�images/youtube_iCagenda.png000060400000006351152455755750012013 0ustar00�PNG


IHDRl����	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z�*IDATx�b���g���/�\V&�{��\Rc ���Ğ����P[�"gv�*######���f9��,��b���g�	aݰ��"��3�����������]]�3���xJ)���BY�?>���b����c``H����~TT�����_�n�O[�A.)����Y���gp�~�q�������#�=	c ����M���۷�Ϟ=����s�#G��a�<��᧖�bA1L�$��jhh�`1�7�2000������=K�`F��7C��x��!��AP�u�_���&�إ8�'���	�u�
B&�h]!A0
�\���N�w��<�p9*C�a���l�]g^Ddgu���ϱ�6p"":�jݯ�@��eYL'����3���3���_@"B�����,/]��li�/��񁵫k��%6�r�ϴ;����|��4�5� ���h�񭿼��&����.�{=^���3��3���77?}ه���̔�kq�?�$�y)����AZM�)C��J������.]*� X
-��E�7:�Z�x�š���N�0�Ҵ��l�K~���Z:�����=��}��D&���E��x<ε�Q+�jݳ�7n�#��bgs�s�*����1#�?���KS9���@)Ex(`X�u��h4���a�-��gK�MZ�7���;��.0�r�ޱ�|�?E�{��?�\~0N�2�p�_��jb+gW?�ڟ��ٕ�T*5Թ L�4����`�4Mk6�M
�»|>�%_�,ˍ�bn�V;������p~������G�V��-��$>��8|�����=�����J��1��o6M�81�!_l������b�F�A�T"�͢�"�NS.����ٛO�p�E�]��rA��? P %*ڙ�j�p��̖]hW��3;q��k1����dRe�H�s'B())M�?(��"�W&���ګ"��EĪ�
�i�j�h�Uq!F%��lff��x��e�����;?��y�S���q�bLMM�}Rc�� �q���()vw���1?p}�Uj���/T`/p�(9
��.����??nݍt=��z	�2�V6��_.�R��-�K }~M}bW&���6U2��8�	�B<b��$���cc�������rď����~Ģ
�϶Q*�M@H��D�7��м�Bo�e���q�㭭���/��ڛ�fﯕl4�,��A���I�O�=̇R�K���]�߷~�G�Q�s�ྚ���0]�\j
rG��R\2������،
���<XUU����<�D�8�S������Z�g��1g[�s�����+��5+�۴_���B'�+�m�4���U���i�t]��?��z@��F�,��566.�L��HDض�'�e�>����,#�G�\�A����k�;H;�� ��T�u���������m{�>,�^a=5�J9����]]]g[ZZ�����===�V��њ�۞e� �Ǜ�&7x�����&���ŵ�<�y�̓p�4.b"������/Q9c��թiک�U�_�8VlO$.躞	�����!��蠻����6z{{I64���i̿�<F�UH	�<�����e���
��0�^��kv�&6�"�����������P(6���jc�h �DĈ	`��D<BAPR�J�@z� z��^�`�R8QL�(/iAӖZb�b���3�;3��T�����'{؝��gw'����,�53f� �L���ͪu�x���h��L����8��k�
K�p�����F)��i뵰b��KW�����[�a |:��/�7�8��ڡ�X�֍��s+}ɒ�]<��Ų�.�O�!~d:~.��� �్[X~)K���i
�ڑ>�"���scf)c��}v�ٯ���k�[��W�r��1�R�Y��~�}��������z�֭wt4��wɲ�[�	�lx�i��P��):w��F�A�jh$V����X�w��G޾�
$s��`�j���C��V欯��~�`?�
����I��O`U�u��2N��Q�i��d��9�*���xP��h�[k;\��4k�g�ܹsɉ'.���|PZZ: �x���'���]�M��T`�4) v\R���6�`�…�R����a�AF!��p~�n^<�Œ�^GÓ��/S��j����+_��a�D�<j��'z��Umc�'w��B��f��kjj��B�]�0�l�}�l"}�Io�·�g��|�`�����/���o���RJ-�0���!��А�!�#���	�hkP:&EJ�
1Q�҆��G�7����[CE�(ķ������N����A��_��U
����^��;f��1�y?OB{K���/���!D����=z����ae�3g͚�[\\����M����2Z?���5�T�XQ��%�5��H�	bM�)����kף�d�j��d��f-��G�y��ȫ�"�c�{����skV��D��
<^Uq�>K������u-`h�8�k��q���#��g���=�>D[[�ڄR���ɓC������tuu��={�����cѢE���knn�WWWwsxh(�;����c���.oZ�n��
H���D7��N�BR�"mQ�-*"x�a���"���T�S�`�|ӵ��+�����nl��f�-��s֎����HJ�[�Xk����RʋRJ��h�c)�5��}?�yb!�����{�
S#�D��Q�T���F���&�0ԑ�Ƒ1��J�@>J&ojm�xB��K�C�I�)R
{�Z펦S�IEND�B`�images/shadow.png000060400000013655152455755750010036 0ustar00�PNG


IHDR>#�eB	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATx��H[k�ǟ��IL�1&1M���Z�S܌������^���⺝���qq�"�[�"�-ED�[���HqJ)�"�q�[�+�׵Y����4M�4������twg�a�aw��{��|y��9/χ����,˲,���H
�
\�
\�
\�
\�
\�
\�
\�
\�
\�
\�
\�
\�
\�J�J���.F
������z�S��a�QY˝��
>a]X��?�V�Y��P��@q(��N+X��JfL��Dy�<��P�:��r*���j����=<�<���3Q��7�v��4w�;́����f��O�1�vv0~&��كN~�⇬&�>��rR��,5�:�B�X&^j��!O�$L��$�7�6�S�X[�-{�5�:u�>>37�<���?���v���{��0"b��v��m����S;�;����T(��Z��ڄF��I6MF) y%���ah���6p�v�*[��˜�a5�c=��`��p��Χ�t��`�3��ָi#�k�ިw�/gU�3��J�'���cc��%Q:P��N^I��C�;Z�q����=4!\L���R�0/N�SX�˰���\�H�T/���<$A�\EP��CH�!���,�p'�������Sc���;�����~=�P���g�Ƈ�7�=�c�I��{3����”���c��T(�q]�=Ѝ���"tB�!at�$7��T0��Y-��k9�ma��Sr�|n˥P��3�����
sÔ/�I-R^�M�r���C���G��N۪���U3�w|Nɛ��{OD�]ў<)�$5�;�n�
����܌�jp��#�J��5x����<g��ݢ��2�
k�36��Y&άe[�+�J�Pt��B��tL^�W��dEҙ,��B�.b����d'w�����3P
'��3ݪ-��n��Zo��X���)e�:�d��w��Jޝ��Kq�X*�q�mk�&Ԙ���
�XƇ&ԣbX�Oq*i�\���9u�e��iN$'$T�L�s�2�%��a�~3�~��t�O�M��V��)vR�fR3����b<��-n�!I�츰)���w��P��0�>�$�Yr�[>�&y}�W7*��+Ss<\����cہ�ؑ�1_l-��^�k��l����'/y��EA�UZ�% ��^�W_�\s���̱�Ѣ��_�X8�|Cנk�5��J��{��%����m�qnn�[���]Y�6:��n�.|Y;$Ջ5b5F�<�`
���T��x���J�<�So�
��YK�[���_p,8Ѓ�`���HM{VS�f�z��Ǯ�Jx!�>|.JQ.�d�����#�Nj��}�B~��&�)H~
���"?�0H~��o�m��t����I��xK�H�Lޣ_T��q�q1&��eb�%V;����q^��d�4Ćr�jw�w��\r��D�"�̀�+�E=�����-�����]ԉԌ��`�Z��`-�i�i�<o�7Ϛ��������"<%l
���I0ELSh���E�-�{�P2��<���7#�ق�����]~�'�?�3��YhH5���p���Mk�@nZ��$7�P��� yh���7L�
Oe]����/����h�1ML3Ӹݮy�y�������>o�I�p,~���Ԋ�j숕�ŜԺ7�k*`	�%4K34@�8���'?y N�d%+s.�:m�B���v����4g�6���ie:����-���H�)޳{b�t�\��#8����1f�=j/�x"��)�\.��e����&�>���$aEX���>�CEI�1\C?�h�\�@.��Z�yr�2.���*.��6i@p
�Bn���K�˿eN��}��2ڀ�th�13Q�r��+�B09��%'�F���#��忐��Fl��?�?A	������q��4��E��f83
e�}�n����s�u`�E(�j�|���7�q��N�i�����Ǡe�Tn�tK[Ƕ�l]��g����Ʌ���P�G������у�^}��ūm|��淍8�������iI^���J�+`�p�Fh��c��ש�>�j��a�G���E�MQh��4K�p��i��(�!�w�k��5�5��c�>���PNٔM��>�G0Cʣ?mb���D��� z4�C���������a���ay(\<�w�s�L%�|�m�z�9��y��r�ڤ��?ػt%s��&�n���<���Z���*�{�s�]��#�ۻ��Z��᭓��ӌ%�J�N|q�W���
�qנ
' �_B�fB��Y�U�7��K�
$��|��lx�N~�|��؅}t�����x�4O+X�T=���B4I_�Y��f�J�����AG�se /]�uf�Yg��Y�<��V�P֟�������<W�8�[�-�-w<W�z�F�~Ue�64fv�SEʧܝ?����zx���s7��(�c�w��Ǝg'�X�Q�t�G�Z�T8#��zn����X����m�VC���#1<�.3K�y�_����X�j�A]t<��Ԣ�M�|� yDž'�'�t�S��0�z���1~4�g�v�Mj�Fl�Vh�\+�@5����u(�A�Kw@�g4C�c�C;���=��'8F�8CS4	@�4�S�
��~)/�6tnݪ|���~$uڏ�K�ɸ�nɵ��&X�6��a9g��|�֓�oVJ�����"���/�e�({Q��j��듯�����7��Hm���^��؟f�Xn7D!�/U��f��!��*��B&�ITI
R��(:���Z�]c�X���UwEהZӭ�t��1���p^sEt���1�en�[���dO�7y�8�a��~Cf?w���u�%�'�'�����A������ϱ��s>.�^�J���A;�Վ�c�ehKu����� ��
��>��0f4g�0�d��XNUN��t����ԜUaX7�f��LLM�o��=н2���4-�W���5�p��woum�l�������Ň��yf�^�6�*���~�~'m�6G;�9�tQ��ڰ�X��4ES4)��O���V<����O���hl0^�e�Sv�y�yҥ8�~��V�UiM���s�����ƞg/h\��ڿ�߫_J]J].33���55�dA�n*�*�qVUVe���v�	�1s�v_vYvYvɎ	�����m���C)�!l��Y�������
�/E!�?�2IEND�B`�images/global_options-48.png000060400000004620152455755750012005 0ustar00�PNG


IHDR00`�	�PLTE�������O����6������W����������V���������|��������������~��{��}}}tn���Zjo�M�O������}��u������������M�2���w������������O�Pp��x&������K#�������ma�K~#���fpu���f"�Gd	{��bpux�������fv��j |�����������������z��w�����{����������牤�� �
�����������G�
����������Q�J���������M�(���y���z����,|������/�$�$�3���}���)�������C���v����Ϲ1����<�������6�?���n���$����� ��񌦬����������ů�/����Ob{��(���ǩ������㷰���ʣ�����������Bs������i*��ް�ū4#�C(�������˲Զ��.�Ҹ�������Vr)�����会p�½�l%�����������s���۾��7�>їT�����_�y}[Jϲ�������������I̼�������}���vJ�������Ɵt=����Sگw�־�J,ï����̇G�ٿ��I�b"����T7�b'�������{Q|"���������K*�\0iTIlon����X}�����������z��}���*���z��|��������i��}��v~��������}��-�Q|�tRNS:��.R^g(1���
?I�IrX"A'�9|g����-�yfҾ��h��A�8\��RҶ���Q��g�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������CIDATHǽ�LQ�A+*��{���j�*E*�ڪ8h��A+� ����{�u-$\J�%���-��c������%7���V-z���7��+��jӺSٲe;w�\���9��u.h�7�>��C&x��u��{ߎfee=+�.nT*�x�$H�����og�|����[�K&��EA$�w_�
ɽ�A.�%�+��k$��'Ow�Ť��Ĥm�òk���t�\�`0�'q<��	~����%6��VJ��̒x�~�/��8�>�f;(7�͒��xi�l��BBB�aK|t�>R��x�pr�xsB��(66ֶ%R G����pźu���Y�;���@�X�P������J	��̙��%R���H���_�J�×[�V����#���J��N�r�^��W""�Rd}�\N5�7�f̘�0:9���n!7N��tD�JƾVU[���\�r �Y=����j�	1-��EJQJ��ٲ�PL����	S��"Х�$���|�P(�}��_[��t�ԩ3|�BL"|�H(E�T����(��l�/�Z���A���t�#�-:�U(�WX���v-�rs�s��b�y��h�|D���je� |�Zas.����UP��ƨU�����Xć,܂A.�o�*W�l~�@��5��U�B��h+D�"��F-?!�܎���2�����p�Hsb-���tl��B�\>+nY�
{G-�k4����\#�(�z��#���r���+�Z:K�,3--s�:
X�a\R��Y�������͊�Y@�pa���X1.Xf��>_q�i��_�+,]��;��57��`+,DQrM&�t㣘:����y3g���������Q�E�I�Q���ZS��ßB}˜ėg�\]q����(�`b�LI��K��aRE
�R�ư$�۳���I$�f(q
�fHui٘A1�	HL�j��A^>v��y{6=ʣ.f��TX*I�\7�$�)����N����S�Mqi,&�v3U����҇�r�\�"��T� x��^��Eq���)%�眾�������N�9��v
��O�'��s7��i:��	^F���d*�a�n��+ab�
� �G�>�y�p?&O�2.q�U�J��i4a<�J

F8�=6z���Ɩ�M��x*��/�� �f�v4��0��kq�ߌ�j٣G��<>��T�|i�׭�A�shξ�8��L-N������ЊN���.s!]`7�^�Z�NH�:M*��w���Ö@��~�:B~9F�z���k���QghÆ
��	�]�~ph��A���+q�H�G7IEND�B`�images/icon_all-events.png000060400000004414152455755750011624 0ustar00�PNG


IHDR00`�	�PLTE�!#�qxTGUUHVRDS�  WJXSETTGUSET���UHVXKYRDSSESYLZ�ukuSETSFTRESSETRES�x��~t|������qgrmbng[g[N\{r{�RDSdXeQDR`Ta}t}TFUWKY�\O]�w�VIWrgr�~�������I9HQCRxnxj_ki^jQDRRDSSFT]O]SET^Q_aUb[N\�W\��?B�i]i�w��""�҉����zpzbVc�00������yoz�_S`cWdRDSRDS�YLZ�''\O]�@D�WJX���$$���������$$���{{���Ҩ�������RDSncoj_kqfqwmwRDSRES��TGU�x��y��%&�II��� ����jq��ah�dh���|��
��Ŏx���~��EE����w{��в�==�++���ך�������CD��������݋���""QDR���UGV���w�{r|\O\�z��}�wmxqfqtjt�fZf���ncobVc_R`i^j�h\hZM[���
�lam�~t~���������𙒙���g[h����}�qgr�����}������������������ٍ���tju��������ǩ�����ݰ�������ľÌ����22����SS�����''������Ա==�		����xx�hh��ơII�~~́��33կ��$$�����ٴ��tjuSET|s}}s}SETSFTSESw�w@�tRNS	������y�ǽV_�՜	�X���,����e���L���֝����?���s�l���������������.��:Ϗ����~$X����K����p��������x�k����Z�,��կ���}�������D��ݗ�����������������������������������������������������������������������������������������_�_}�IDATH���wLqp�jp�J�qo�{Ľ�{��ƽ��{�W;�b�r��h�,{q0�{�)���%�??���������aT���TYr�JH��0���H�^�%��{T��I����Xu�^���p+3edE��洒��l�C��BB|��+
���RF[.�r�R"Ξ�?���0�V�(T1*,1��O���*��<�iZ�}|tD��Ӑ����)���S]��w���
y�T*eŏ���^�A�T߆�y���{���y&���9��܍��}	F��J��O�j��Lucbb�||Dw��^�q���:»7x1a�������LrB_�E��{�t��G��v�-j]Gz���u��߱�����ٵM\sxUPT��y�5w��(**x��u�
g:���d�޼y3�ܚ�+�6qk�׷�t���9kn\ܙ��e��NZ{�je�ZgΙwqԢE��黳R��S��
:�xAnd~��M���o�f�����w�ȡJ��[����7Xi���"yW۴	��������
| �E.��/mڬ��<I�}�!���K��T,��D�^�8%�(6�Δ^���A&��$���KF7,�F&�4A�ŕ3�T:z%V�ar^�w���`�O���3A�n�HY�<�R�����QEc���S{E=.@�"R�l
KT!@>��l��7��Bp��e�6�.�I�P�s��9Wu��#"�7��t�r.��FЧ��#G�6�*n�R�t�\@%Фf�A�M�<P�#@���h�����9Q$��Rd�q�:�!q#�v�i�z�m��Xd�VN&��_BYd�Ғ	6e";Ml�z���W�dx���1f�'f���Q�)�)9$I6��z" Yj"Rt�̕�—PHmF��4�իW�֭�9j�[`��-T�	 K-�v�ѣ��O۶��)s�rM�{/��Nd��!)���B[���P�2��x_%S�LLX�)Ah�O�P���l@`�~���*�{�;�!H�/���uA�}��oĮ���Z�O��҃X�w�5E(���4���:1rޯ짰�گ�����OL�샿:�þ �*W�֢Nc��v���.yQ>>>�rU��eo����]p�%P$��\^Z��kU� oonuo�rL�j5~��[m��x?�9�v����40�n��jM����iܴ!��u
��������c���IEND�B`�images/newsletter-48.png000060400000013020152455755750011160 0ustar00�PNG


IHDR00W��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F;IDATx��{�U���?��;�{��h��V�Z�آ)[��X�i"��k����2#H�3,����>�XklkkҒmvu�]�V�T���R �������s_������w�9�����CDx/7��x{���\t�DG2�h<[bYV��+�A��������ߜ`����\ٶ��dn|���O���d��s�g���t���;LOQ�'�W?���c��?��e�D@<[��'�K�֓3И���;p�il�B0���a�$�	���SV!˲ZǭZ;�C@&�M#�l�1��&�>�Gk,�j9e�L�L2&��T�&̑��ߝA��q�n����N�/m[�:KC�nX�I�i�&��Y'3@@�01�t�f0��i��O����K.f��/�y�p8�eY�*z��u0M�g��?�ٞb�4�*OH�:���୷���3D��iA�U.�p�.����9���ӑ�F����i��mZZZذa�l>� �>.N5(s�Z�&��a�
6m\K�R!
!"hO�{�iz!Ѿ/�v�z�4ٵk�޳f`�F�EcD��#�①?B<�E��x�X<F8dO�عc+�f�d�#���iY��~էA�-�m�xcp�X���q�r���{I��؎��\$x"��H=n����,�����J�Z�?��K4X�4��Ӑ��s�겏E�����u(�ٺ��6�]��ګ�.{�AU���زy=]]i�ܳ�c���T�#�_�W�S�!�9JM�U��Ʋ,��"���q��U��v*�]w��tͣ(��0ad�F���Z{/��o�F���WaO�ӱ|J��͵/�p$L�X���8N��۾JWW�rũ�o]4�r�,��73cF7�����Qb�Zt-it�\}��lL�����M(lQ,�Y�j-��22|�m���6Z��OG����[6�:�f#��cDc�U�A{���yS����*T�@�}���!�|.ϭ}+��<�c��N��J��8
�vl�������ĢD��x�C{��LjDc�B�'s����7`��=�R���VF��G*�A�\�q*X���m�����u]\�k:J�/"���qDt��c*D�m@K]
��T�k��8.�a���tww3x�:*��;���fәL�k�6��4w�Y�m���9̌�.�e;p�:ྡྷR��Օ��̕�@yʗXS!���n�0�ֈGaY&=����vV
��_�#+W����c�o��G 1�z�
��(�����ΠP*!�Q����i��.�ӟZ�ڡUlX�Oi�h�)����8�$����*�0��0mmm�X�؛c�$��eVܹ�o}�{<�ď�뻓7�#њ ���w�*
�ۆ�#�/�y�RXAF��k�R8t�����-�S!�l��.S|dža����:`�<���RI��\���Ƣx��4,L~��_�<I�.��(�aZ&�b���V��d�|�z:����y�SKǞ}���?���ꪅ��=
D�߉�9���n��r�H8������;V����_��cAĮ�����a��ѮB��-qDy޵�#G��zU?=3f��S�@%���O=��7r�WH$����]:~��k"��J���m�qA�D"�#�� �Lr�����X�	�T�4y�%z�Zy�آ�D��c�n���bg2��i��r�ʕtϛ7�w/�t ��<����l3�Z��j������v���o��=L(dQ���!�D�y�c��s������'���y���={pr9>r�=t}�$���ӗ���w*�k�Bj�F�Ԑ?mkk��W��eדhm9a����u�e�r����?��G'���q�{�����9���y���K.����׃)
�$  �|2�͑��|N�w.�g�<)J)l�&�ˑ�d8�l�F�Ҷm'];��2���3��\�a�}���w���mmmKn��?�$F5�.��j���gtU<O���u~��_�pO�훾�".��6�_�4`n���t�f�jJ���	��O{�V8�꫼�};��p�ҥttt|�T(t���.
MZQ�:X���&&~�Ĭf�~=��ƿ�V
y�߿��7nDU*̺�Z==����̉��ƻ�ԸZ��QkB���5�=ߥMs������f��O���sՄ�\�f��kOAW�"���F�yP��T/F���E�II���Q+���np��/�2��#�4�0��hGW
1��k8|��s5���3�P�:�P�`��T��h�"FP�C���%�c�l�q�g?��`�����}�F���?}�Ys��X�*˜z}~���C)�xjڐO_x!��l�D7�k
��5gr�a! �)�u�;���I�ڙ�q��E�̙\14��k�Ak]��c�}y�������_��������}��N��-[�d�M}�9sX4<Lς��{����+W�DaU^�A����7�y�VJ�L��y�䡮��d�9����e�Jɍ7�p1�$
�2�
�!�Yo=��VJN�z�5���/��_�����~t�*�Z)�R�_
�w�X1�[oMٶm��k
�H�X�
�D�Tj���fw$i�΅R�f��x1����5w.�Ri�G-Z�{ǃ4Z�VJ�<�4J��ùS��k-���5P�^��y�|�-���^�@~y�M����ٽ����U�W�� �J�DiT!
�]���:�c��������D+%���g��������7	8Q��
�^۷�F[(�r���'D�ݰ�)M� ��؁˒���l6����=���ਜ਼t~B��s��^�EEIEND�B`�images/new_event-16.png000060400000002434152455755750010760 0ustar00�PNG


IHDR�a	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z�]IDATx�l�OL�u���ׯ_�Q(�����F�ȿ��`��D9H�q!�%`�7���� �͸�h8l�l�4"L�.s	�d��
��+�-��-��h���E'K|�����{x�o.���DaQѧ��}Wj��`�ɓX��)��U����5��蝆�f���>9������?~?\][�=��o(�p�j��Z��{�uyi��D����k˧N�pwu=(��8�yj��}w �Fbr�51<r?�i3z:=��z�F$R�����>LNO�
5�ɼM.W�/����#$��uݡ�RH�`}e�ҝVv�Y��S���O�V믦���_g]%�,.,b �U��L���y�v�?�WD�3����P�P��,F�aQ�j�abd�l I+
�í
BX��	r��NH��b�SW�E�uf�͒_XHCm5��A	V͚>LEO�u=�&�$�+�aoE9�u^�ރ{���|ޚ�,-/��夾�%˕��@ɤ�d�i̜����룿 ��ͦa�4.~q��^nn��r/%��ڏ������N�A2��k�D�J�J�F�x��M<�1&{{IE"�<�w���r(�c�Vּ��fon�8����wډ�!����搀�ӧ)�z�tt0s�2�)^hjj���:��M�a03=��UH(b��s��G=�={��CQu5�����qbssEA��ں�����5���;��� ��D�jdS)�mm䗕�_ZJ��G2"�Ja9�Z2M3#������~�j�K�!o�=n�s�Zt��=G�ϝC�۩��)�����C�XL�vv�K��r��N^il���7���}&���a�۔` �Sʟ�J$���Q��򉢪�^*��;v�vIEND�B`�images/cal/google_cal-24.png000060400000001644152455755750011621 0ustar00�PNG


IHDRש���PLTEf�m�~���j�w�{���t�q���y�����g�g���i�h�u�m�}�{�y�|�j������x�s�p�q�q�������w�l�z�b�|�i�k�}���j�u�t����~�g�{������(��?��~�w�A��r�x�������
r�m���m�����n���p������g�j�?��	����F��e�h�z�o�k�Hi>V���H{������_����'6c�#1s�������5Rx�>f��Г�������ս��=�����c��t�����;��	n�#{�!t�5��E����3}ǐ��o��[��T����ʺ�����`��n��1�᝽�U��1�ޏ�ѭ�͸��w�K��"�2�KtRNS�������������C�C�2Q/�IDAT(�m�W[�`���b]��$�k�)$����bW�޻�j�9�>���5�4��:�L�15B�X��j��2��W� �
��inqme��%���"�JP�,7;�0��,�����Y�e��0�ݑ�1�Y����E���%�&�R���\����"G
�?����m�骡�Bx�����^�(�P�3xR����%su�:�HCm;2d{��򁝧�����(�Z��P(Z/�nOo����P0|�lV�
��/-��Drk���lMv�*�$-�齏x)J�;}=]N:е�!�^|�9��������%��u0蠦E������Q^��b���q|�v�2&8��yP�l6��d��B?b��b&����a��G����U���wUM�U5��_ց��EIEND�B`�images/cal/google_cal-16.png000060400000001174152455755750011620 0ustar00�PNG


IHDR(-S,PLTEg�x�q�z����r���u�m�k�h�g�g�|�������~�i�|�z���s�g�k�w�v�q�������e�w�l�}�r�m�i�i�Z��}�����y�~�n���
h�p�u�5��o䒻�s����,<s�4��{���c�9��h����O�9V���X�`�U��s�vئ��l�)}ҷ�����,��D�����^����Ʈ��@��{�x�ȇ��)��7��C�㐶Ӧ��vݔ��W��
mұ��l������Һ�stRNS������������{���{ģ�P�IDAT�M�՚�P@ᭂ�-q�;�nŜ��|�w�+���-(�D1O��^���RE�k�p����TMS[���0�hmؤw�C�� DzJ�Ra#U�es��8Ψ�
�g��M@L�n��?�\�����$�����˪<�H$����}�hnˣN���m�w_���|�L;	qY��ӧ�`�mS�Us����Ɵ�����]�N/NO\��� x�qC���	B
����G�O2Yؓ�]4#�:���IEND�B`�images/cal/index.html000060400000000054152455755750010564 0ustar00<html><body bgcolor="#FFFFFF"></body></html>images/cal/google_cal-32.png000060400000002231152455755750011611 0ustar00�PNG


IHDR  D����PLTEf�~�j���m�u�{���w�q���u�g�����f�g�|�{�i�h�g�q�m�z�}�k���y�j�~�����l�r��p���x�o�w�t�v�u�u�l�o������n����������i�y�v�L�ל����,@���j�s����v����k�n�q坿����i���d���k����O��r������/E��i�hɐ��n�;��~���̥�����q�$~�y�z�m�������Њ��|�e���j�t�_�U{Q����P��9S���h�*�ژ�ɻ��&��=c��͆��}�.Ey�W������2L��؋�۷��@jx�f�^�v�0��f�1�Ҧ��S��I��a����ʆ�����S���Ϩ�����3�ײ��C�ቱ�u��ғ��g��A�ڀ�ș����{�ف��m�����v��e=`tRNS������������������+BIDAT8�}�u[Za�e-u8����C;�C@�i��ٺ�����{�l׮K~��܀�i:s�&p�m8,�CkQ��n�/8>9�v�I�N�|"5�X,vk�C��-��J�u�mk�0�M ��VC��RA�tas7��憑(B�P�������ªq�N7�R�H�.H����Puթ&�&�J"�AA�t�F;�FUN�%
`�5�̳
�A{�-��L��$��;;j5�;kX��KJ��}�_1�{gfFT�5�?�}q�6���,��Gl����rơ_��A���gC=0n�ryn�!�������Ç�n"�6��.)��K>�pp�4�����/��~����f�U�Т%Xrd���nQ���"I�/=P(��e0kL�A+�р$�T�_�圌�D$�ɬٌ"���Dh�j6���^��\�,��a�C5�/<�k�w��i�^��|p=j��'^�הJ=����i6R�<�GO_�y{����8�A:�^F*c�h4�����5L�T@�B2�!C��'88���7��j�8����?�j	,iJIEND�B`�images/cal/outlook_cal-32.png000060400000003310152455755750012030 0ustar00�PNG


IHDR  D���PLTE�a!mU%�soj��pxlY���!(���H?M�_���l}q]��Ƥi������{TwW�������]�����������n�v�y�i�dd7�sqcK�_�b�o�����k�j�����u��A�a����щ���ʍ$�{�TJL9Ӗ5�y�bu]*R
�h�p������������ܬi���������n��&������������۰f�� ��f��-��T����4��X���ߘ�Ȓ��k�����Y��p��džƊ+�ʜ��K��lܭc��B��:��O��Eǒ=�ٷ���ѕ6�Ș���ݲr�܍�Ǎ��c��e��o����L��N�������ԓ����b��i����W�����q�˪�ݓ������|֖�*��i�1Ό$��=���ΚI���޲jͦh��$�ǣ�ƭ�ϧ�����̷�n�ܮ�ց�>�����j��ŚإY��V���俋������٠���ؠ���-ݰ�*�������i�վך=������֟K��.��c��u��ͭ{�˅�Z��^�>Τcΐ.�y˜T�v�Ռմ�ɍ1�ͬɁ���׳{ǖK�P����Z�Ժ�ǂ�_Ҳq��Ѭr��aܳz��0�r�e
ңb���٥N��Q�m�Ҷ��˹�<�‚ȟ�3�3��$؝,Ћ�ȠĊ5�C�GҼ�ܠ7�т��"�����������Ի��Н�D��}��R���ٟ�Ґˍ-Ǡo���ئc�ܱ[AtRNS!��ߪ�C���q��"�WX2���f���4���n[T�����)��U�"�I����f.����1�Wէ6IDAT8�}�Tq��
���ݝw��8ݩ����(
�H�tIJ��Aww����Q�}���s���H`>f]�
��#
�jd޶������P>�{>xP�P���a3�.�U}++}&ӡo�|���C��4��#�	�>���wK����nW��=)�*MC�
���꘏��R�b�S��˃L��=�`X�Ww���۳�;nA�F��F���X�?���]
[:��T���cB���kVb�]4�=�`�k���O����X(�H)xw��F���|<��'�yz���{�@�󺺺G�޽N�N�>�(��	���6m��:r�^>�u+[�8g�b��حv���:�Og��+\���ͅF���wl�(��	���r����m
i���R�|w�2�rƖSq2�౛�׌P#�S~�C�W�.L�ғy��KH��͎㿱�^���!����R9�K��77�z������|sQ�&�%{w��Q3Aǰ�s�׃_Ӹ(#,�Y%���	`����Q����
���CP�"t�@s�o�
��(��%�A����4Ĕ_
��0v��s{Z��S���*�(�g٣8ǩ0J�qa,HB��t�6���q͟#e,�~��R�_���K�"@�w��v]eAx�
�NW!
S�ɲ��������Q��&��ǎ6A8R<�V�f�쯩�	�)�&��=���b!��X�<�������q7�Kd,e"X翦6��r��W}m�R�_i�Y=pňU��Z�3T�	���^+IEND�B`�images/cal/outlook_cal-16.png000060400000001624152455755750012040 0ustar00�PNG


IHDR(-S
PLTE�����Չ�z����ڮ���"$(�ܾvqh������mji�ҩ<=@�ب�ܶ�֝����ՠ��s�Ɠ����c2��-�\	�aɢldMlM��7�Z��\~RmQ��R�t:�k/�v;iO�޺�\�a�ܺ�hŘZ��ƕeХg�x�l��6–V��������c��k��Q��]��X��K�ۡ��N��4�ܼ�+��?�*����c���ԁ�؋رu��������Բ�������ش|۸����߻���UߦB��nشx��g��n�ԍ�]��=�6�ܐ�:�h�N��h�1����н��p�ܶ�ו�۬�,�ۗ��a��d�ֈڭ^޸�ݮ��+����ؐ�����޿�͑:�ȥ��Z�������,�X����Ü�ѯ�޳԰x�����Lѫt���Ǜ\��
�—�C����ɭӥdLJ"�Ñ�ֽ�l�ޭ�����S���ѭ����Φ�у�˩�؛�ݟ�zӛNѧe߷u��ؼ������̯������Ժ������c�-�5tRNSO�\���XGW�
�����Tʩ�2��Z'�u�H����Rʎ��L�� �w;���0�IDAT�c```cd`e���bn�,;�|{{�f�<KF��u^�gn��'P�ѱ�����6��2,��R㔝���Л���T���T �X2ݵޥ��-5��KT^��c��ݾ�.��>���UR�f��7��יU��0px,67��j�53��[Z�A{��>�����E�L��$8�L��45^�r�\�Zq�މ�m�f�kW��LRd`SPVQU3	Y�lM�*]%>v00246X�P���h�30��D�ST��IEND�B`�images/cal/outlook_cal-24.png000060400000003016152455755750012034 0ustar00�PNG


IHDRש��PLTE�[��j�����ҥ�h���")���hhj�\}c,��ץ�e��������Πq�a�Z���c̑7yzz�v$��l��Ƹ�|�e*������==?}b5�h$�����i�v
��.�lF��m����_�xU�����Ł����ܾ�q��#���՝:�k�r~\ FE/wTǁ�l�t/_O'�a�\xT��.�x�ھ�������������������������V��m��i��6��<�����#������бϗB�Ԧ��b��l��C��i��M��o��,��P��0ؽ����Ң\���ϧ۫c���Ǝ;̚N��Ŋ,��Y�������������Ғ�+��f����%��E�D��1����ֽ�Nحj��Xߣ(Ψk�g��y�ޭ����ԫ���ʝX�.ءOӔ+�Y��a�ζ��a����պ��q���ն����ƚ�׌�� ����ߧ�̰�vʔA��U�=�Ӽ�܋ཋ��kϙH�φ�|$�ы�֡�ю����ӕ����3Ԫ�ר�ϔ���ʓ�D����ݣ.��E���s���6��d�ɡܡ9Ԑ��f���Ԁ�ո���M׳���e��+��c�ݵ龆��V��v��J�Ձ���Ͱ��ڗ���̧i�����_��ќK�����g��=��g���Ў�Lӯvڲ{����r��b����Ȳ�q
����`��y��ٸ�ܵ{�ʰ�s߰oުM�[ٿ���I���՘�՝���k�Ү̙Jצ^OI���tRNS�#�����Ǿ_pH�%����➹
�����6����D��eۖ%_�=�\��y�e���������������������������������������������������������������������������������������������������>�QIDAT(�bfc `cc���b�%m���U��-�{sA}u}�4T9Gaaۜ�%�'N<�x*z��8X\�?��j^^^뭙����Q�� q&��K}� ���Q�x�r���9�|��bZ����`	��5��������iK�_�a��Ȫ����/�	�<��_,D�W�¤���7$l��=x�2ع<k�,���p�;!����s��Ԟ�&�<����
�i���z�Ƣ�+A��u�K��BBBҪ+v��zy,��d	G�)�v���\�8����~;�����_޿�>=�J��g�ϑ��ދ츁�3�z�gN��
w�ٛ�����Ğ��c��"��E�3벎h�����[(�|��]/|<|��5Om���镢��x4�����{R������L@������,.���r��t_��k���z-}�rW������_�R0_(����Ȩ�� #!�1�Τ����͸���0 *�b�l^z��,st`j-���-��%���v��G�'�IEND�B`�images/cal/yahoo_cal-16.png000060400000001421152455755750011456 0ustar00�PNG


IHDR(-S}PLTE_�t�r�d�u�x�d�r�u�s�x�`����x�g�m�m�g�v�p�t�v��=�y����u�d�~�¢м�͂(���ɍG���Ň8��}��r��Y��g�n�l�������:�����D����Ի�u��������=�h���������r�̶����j�־����˭ׄ0��.�v�l�u�ζ����Ϸ�ϻٮ��ε�Ğ�p�Ʈӂ=��2�Է�x'�ƧԹ�ɿ��z�������*�Ť�Ѹ�}!�����&���˳�m��������Ʈ�|*��P����:�|����¦����q�q�ǰӨr�{&�Ѽڸ�ʻ��ˮרw��^��>��h��X������q����b�1DtRNS�����������������������������������������������������������,�G�IDAT�%�eW�`@BB���s�WV��1ȡS�=����<��ý013��������0��N�˲�v���xMW*���a��wS���o�Zh�l�ܨ���e�nB�(�hD�Z��š.u�%��3�#�6�&��K����q��{�.�1P�QJnڠg;��<��	D��z��1�2�[�/�&b�e���ٵ^�ڲt@��3��3�h�[�T�
�\���NN����V�0�B���O�T`��A���%�7��B��IEND�B`�images/cal/windows-live_cal-32.png000060400000001300152455755750012760 0ustar00�PNG


IHDR  D����PLTE#��6��;����6��A����8��2��=��V��?��@����/��,��2��;��w��'��&��&��*��V����g����:������s����!��%��3��,��!��*��>��k��>��)�����6��A����j��,����J����+��;������-��*��1��+��=������������������������������������P�>tRNS5A��5k,5dOsRnBYw$2�B�7A�TNڎ����^"�Rlb}�OcOa�˭��`�cd<S��DIDAT8�ݓ�r�@@�Q�HS�����paE��s��M&�L�2��-sϖٽ7�7�I����`�|
�,J\���>n�Y#����4�K�GV��`Y��nMN,��M���D�*�k�{A}N=�Ǹ�9ĎB���N�M�R�����E�VUQ|��#���ө~�C�V���,�l^+��i�D�r�јL��Z�0�08��`d)";"7��j!���N� @�K����S�9��%-���F�+$B.�u�O
�X̖��nk�����$�(�,��^kKl�C��bvP���%�����v�(i��S�G^���j��IEND�B`�images/cal/yahoo_cal-24.png000060400000002250152455755750011456 0ustar00�PNG


IHDRש��.PLTEc����b�c�u�}�y�b�u�|�s�q
�w�y�{�w	��X���ƽ��g�n�n�i�i�i�u�u�z� �w��$��u��m��,��7��d�s��|�y���Ļ���ϋB���ʺ�ʏM�������c�u����h�s�����ϊM��G�н��������n�s�i�t�ȩ�r����Ի�о��2��V�ƨ������� �����Ͱ����k�x�n	���v�v��S�������y
��P��f�ɪ�z����l�t
��p���������Ȯ�̬��������ɯ�h�ƫ����q��3�ȯҺ�Ȇ>��N�q
��`�a�ӽ����^�ĥэI���ȏA�v������q����~��[��i��%���Ȅ,�d����q
��@��N��C��9�������]����̵�q
��?�ǫ�y#��M�z��4����æЋP�ϼ٫v��+��zÃ$����\��b��5��2��R��x��g����"��X��5����ƤՊH�����Ģ�l�)Ny�.tRNS������������������s���`���>�����������N����֕���IDAT(�M�gW�P��Z�{t��?&�4쑀l�b�"�ŽpU[F��U�[��nm_^o�=I����E>v�����G�����(UU�.�;������3��ũ�����Y�W��
����(��	�|`���h<6�~<����8�k��䭥f�,�2��(��Ep��`f)��\�"��6%M��/m����,X�X���J~�S|���V�����	��/�X�_����z�l%�8G�r݆s5�'ms���h�5��C9:�{s���O�&�G
�I0�����-{7c�V��+:1*��փ���k�ڭ ��?�����+<`y�l�K����c���(Hq�*�O7���P��/$Ik�x�ei4G�P���ԑU�����&I�*�C��h�4��g��',p3�T�����4m��|�N��@�FS���vU?�7ʍF�?��܃��b�K�V{<�_�lh��F�މvw��Uo�?�E{��$8�%�$/�?�ܢ����IEND�B`�images/cal/yahoo_cal-32.png000060400000002513152455755750011457 0ustar00�PNG


IHDR  D���
PLTEa�w	��&�x����|�|�u�u�z�y���ʩw�q�q�u�w�w�e��X�a�l��;��K���̯����ǣn���Šh�| �k�n��a��0�k�g�d�h����z
�u��#�u�| �q���̘[����ĥ������u�g�����k����d����k�����U����{�t����n����g���q�r��^������q
��4�x��&�u����o�����M�r�}�q���g�����[���m��a��`��U�`�x
�w���ɩz��F��a������h�u�w����h�k��0�w�����>���Ʋ�����d�¡����d�̳����5��9��L��]�r�z��]��i������͒R��X����Ϲ�������ˮ����ŪЯ�ĺ��| �����V��m�����5�^�������~ ��t������ť�Կܯ~�z#��}������������뫁�δك3��N��K��EI2tRNS������������������������-�����A�������q�IDAT8�}��SA��P����{���…����HI $��p�bS��Z���ݻK�ҙ���~��ϼy�أ'���w���뫫o_�ZVv�ڕ����

ť��_aO5*�:�!лm.˦���7��3�{����ƍje<0�'I�s�Ƿ:ݒjI�����C��QÁ�YWҕ��ќy�?�	�i!�C��Fu\�#�"m�^�?�	�أ�@�sx�	��uhY�(��M��~~1_@]	�Q���G�0�Х!��dF��}�>/��Dn ⦼�`Y��9�g�lj ���9���:�@��!�"IR*%y�Y��D�g�(�7�Į`Fa��dV0왖3nY����}��K�ɯ��!:	3+�"A���C[�%��m���calc�"�d\EjH��m6�����/�ζz���.���v�zW�B
9�z	*^��<�+-K	�ґ
�&'�lGMz�S}�ޘw�r�BfN��֭����<H��{�V��
X���!m�OhZ/��Oa����d'\���,�0������L�:X!���VW��3o��u�h�+T�ý+BZ��څ4MۭB���s��J��`04��N:;��L���8;΍�j�`����mM��ߞf�ׄn*�[m�ȻS���~-V��i��׾�U��/���U5�?����7�I�K�x�IEND�B`�images/cal/windows-live_cal-16.png000060400000001046152455755750012771 0ustar00�PNG


IHDR(-S�PLTE����K��2����3��������4��+������$������!��!��������O����������6����6��(��4����"��c��.��#��K��6��$��D��H��E��H����R����I����
����������!����F����*��1��7��F����)��
����������������������������AtRNS��^�
���2���m�£���ɥ�W�evI��g�"E��w�~���������݊����,X�i��˷�IDAT�}���0D��((JW{��$����}p�vvf��J�/'�:�)�=��r��Lðz
D��;�af3�A�|b`"H���y(,�B�bL�����s�n����āA2[.�V5��Zy�H+��l!��kX�*������t�\�eue\�>
����J���'�,�DIEND�B`�images/cal/windows-live_cal-24.png000060400000001365152455755750012774 0ustar00�PNG


IHDRש��2PLTEC��������������
��;��>����!��������
��?��+��3��!��F��$��0��3��.��4��0��+��������\��
����>��2��+��)��W����	��c��Z��`��!��,��'������
��H��G����$��=��8������$����=����*��$��h��U��!��!��
��y��y��7��g��^��]��_��/��/����0��"��8��.��+��;��!��������������������������������)�o�XtRNS������;>�]�l��K��f`r[m��m!��(<e��t��|Qg}�2L�z[.\Ԡل�˛.+t.�u�Bu`oS���o�5Y�����OxIDAT(ϭ��n�0����
!P ;:�{�����u��u��р*U���s�}��VY��֟cA[��V�/��O�Y�P�;*�q/��H�[5%#s|c@`Q�K��7o�{�+˾9a�g�![S����Q�뺞��(�Ycn���U��x�Jf�Z=O�D�Ի<sW��,��b-g��"�
�`����<���<�hB4�F�[���홾�8�~���ؙ�vm'��P�Т�_vFb�g��l"�����j��E�	���	����k���q�w���q�IEND�B`�images/cal/apple_ical-24.png000060400000002474152455755750011621 0ustar00�PNG


IHDRש���PLTE@>>e01&((000"""tNN%%%m<= ""___444�ac222�`bK77555�NOedd�fh8EE~}}�jl%%%;;;~NO�`b胅�[]�qs����twvoo�psyxxО�BBB��YZ[�[^UVVppp����~�SVagi���


�wxXNOTTS``_###GGH�?A�JL�JL�?A...,,,455VVVXXX���XXXEEEUUU���������QQQ������NNN���III�RT����eh��ު������TV�fh��Ⱥ��eeennn�������TV������IK�]_{{{vvv��������烃����[[[===����mo�{~�tw����_a�gisss����Y\hii�_a����pq��͈������`a�de___�����춷��CEkkk��۶[]ϑ��������8;���///�����ܢy{����jl�qt���ۇ��_a����mn�bc����nq������hi�LN;;;�su����{|�HJ��������袢������y{Ԛ��13�AC�������eg����bd}���JL�����ҋ���έFI��桨��Y[轾⮮bbb�km�jl����FH�CD�AB�΃��ACڨ��67];;N9:�-/~=?�7��TtRNSf�S9"��	�0�b�A��sܜq�E�)��cCj7Ґ��+����k<��"w�1�H�M�[�$��g�G]-H��� *���:���IDAT(�b@J��\3N(KE�Y����`�42��V�I8�fב�QV�5���q�
���������VJʒ���'45���{{ݘp�DFFFGWfkKJC�Ry���;�n^/I,�TP2�HG&PR�$�%2��v���s�%^H,>X�ճ|� HB��YW�m�~��̞ӗ�ݺ~�$HB��Ù3�mܶ���s�������Y�<�B��I��z9:w]HH+P"�oFĆ��L=s8�Ȏ�J�)4Ȭ��\�{k+�d�;P�;�L����}��CB�#-���}!`ڶ8$fR)����`�]�(�N
)+
����;�(�T����R]S�#�Z�3�Y��!�i��Y��l�QK��S���e/��ng��n�h̔������e9�qa	.�`̋)*̎ϛ�6=�6<.�NV��Q(��3y��I����q&
BҌ�l����KHc���ge�a@&_nq>1N��8A���ﺁIEND�B`�images/cal/apple_ical-16.png000060400000001350152455755750011612 0ustar00�PNG


IHDR(-SwPLTE   SVV/78,**Y9:���WXXyNO���uyzdqqђ�&&&\no,,+rrs+++dmn�dg�RU�`a333000�km����psoac�IJHHH�IKggg! ? ���������QQQ_^^����WY;;;���yyyppp�]^�������NQ����������^`HGG�BD����������su�ce����`b�����򵵴���������������ggg����}����W[����ce�vw���}}}��颢�������nq�ik������GJ���岳�jlNNNBBBЕ�侽��뮮��IJ؎��04������������uw�NP�KL�?B�ln�|~�12�@B(؅6tRNS@��6uH	a$�1c��_�{䈩�ɕ��"[�ر��x�֫��h+��������(]��IDAT�-��rE�n����{Wq-Rwww7��	�%ə�̈́��uT��J5�ڌ����Xc�C��K-�<�OO^�����΢�EC��2�i7�X��b��I�&>����I3��R����Lݢ�C��,���9$�KB��,�$�"��q�ERe��!S`�W(*6�#���b�
�(y�V"K̪$zu=��#r�"*���[����&��"�=#�v�e��6[�6�e'�+��r��IEND�B`�images/cal/apple_ical-32.png000060400000003314152455755750011612 0ustar00�PNG


IHDR  D���PLTE
@@@C00jhi+--244888


!!!'''�LN�moF@@///777�NP(((777$$$			999'''�eh�]^BBB�bdC99;<<�jl�_`?>>�\^rst|~�Z\�egiii턆���prt����su;BB�knǥ��vy�km�wyORRV<<XXX�������HJ�opm12kop777�JLGHI�>@zz|


AAA333
:;;^^^������TTTGGG���]]]���```������NNNYYYJJJ��������ιQS�EG�LNooo���xww������PPPgee�mpWWW�ad�sv��������ܶ�������׵LM��������빹����DDDz{{�ce����BD�HJ�>@�UW}}}�]_����pr�_a[[[����mo����pr�z}�`asss�����Ř��LLL�@B�{|�WY�^`AAAȀ���ȲXZϑ����΍�RRR�:<���jjj�ac%%%000�hk�kn�ln�TV�fhՙ��df�[]�Y[����fh����jm�Y[��粲������ʹNP�����ʩ����֗���IKک�ˉ����46S99�9;��ӫVX$$$�SUⲳ)))gHI�uw�gj�x{�}~�fh���lll���򄆢.0�hi�TVŌ�킅Ȧ��������BDỻ�vw�CE���������qyz����KM�^`�EG�:<���E::f>?r8:�89���v`tRNS-T��$�6H�x�����_�Kj:)̂��bGt̘�o/���>S���tv�zl����tm��̢�,^�X�rS��\�����CA1�O����зIDAT8�e�uPAƁ"C[�������}��r��q#��ww	ܽ8EZ����~�d�)��������w�:�k�Z�)�����	��.ӊ6�w����n�V��q�mk�i����*
��p��-��>�~��l������|ɼYE�QQ�Q�y��!�u5���{�d_Z���PQT�����
�^�`�����_�������*J�Cn:^��L���te�����U115�uw#"BJ.�A`̏o�I��nYi��*5ջ�9�;4��=��-{rr�29Y����8))\_ߔ�;��.	!`f�;�#9�>--�����a��Η���C�Z���6��Q�\��}'����.�#���ӟ�pك��(�$d1�C�h?��$�[� @m��I�<��8Ĺ#a�A(��D��&��
0�p�	��t9��y*��5���W>��T�0���+mH`&R���m���
�!�Db�� F�����'D��B;b��г�O�0�A��R4�
��%��K��Q=��<��,$��Fa���<ڧ��4
~�,C��0���Z��L�!��
4�D����H'��UA=�|��A`���Dk
vw�Pǹ���I��L,`
����v�BQ,�mmM�`�E���==�T�0��A��D:WY�}Z�Ly�s��Q !'�t2�!V�?qqF��(U(H��8.�ڄe+'M�2��L��@SɸRi-f�0��G�2���>��%g㓈-�7@�X��t���cM��W��^�z`P�IEND�B`�images/iconicagenda16_agenda.png000060400000006050152455755750012612 0ustar00�PNG


IHDR�a	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�FSIDATxڔ��NA��coi��0י��� �	�]i%�ؐ`���Oa�3`L�^�b/\��Y�;9L�ٙ���#�Gם�	����-�.��$I2:PPF��cE�و֚Z���:����bAǩ�h:���&����e�C��iRu�������F�z��n�A�OEk���R�PR
+�(��hI)��5@kM�����k��j?��|��B��h��b�r]�0�}2��#�mɜ��+�.i���X`�O�VEc�j�w.�S<�l6���Q.����0���pEQ��i��X{<r�M�gNJ<_�%p���o�`~�P��h��!IEND�B`�images/icon-edit.png000060400000007601152455755750010416 0ustar00�PNG


IHDROc#"	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATxڔ�QHTi�����g�fG��X�èR"%���4�-� �t�W��Ƃ�.1�A��ެ(uT,��DS�!�^L�(d�Ƭ;{��s<{���k��w�}�������o�7|ߜN���/HϤgҳC�M�6�E����ɒ%���…��U���F�Q-ՙI3i&��(����?7)iWڕv
�kg�ή��-�^իza�a�a�H�"��>�"VĊ������8�nխ�An�[�r?~,#�����?��Y9+g�ͅ��XaĜ�s���x�������Uj�Z����
��P{��&�&�&!�F�QP��O�' 9$��pT�Z�V����1=�g�[,�E�HHHۀݸq��bVtM�t
�8�8�8�Zӵ�kMp0|0|0q).�%ș93g�����+˿J��By�cn`�l�>���3�:�:�:}M}M}M���j�����;w*d,K@3�4cH;6�
6 D��^ݫ{!T��������~X��Gף�~��P�!x||�B�P+��3W�_���t�E,�Z��|�7o<�ѧѧѧ�Ϋ��<XI+i%!�^/����@�"[���ĉ����������tn><1{��î������Xϛ�7=o`�m�m�
\�q�8� Ax�{�o�|M"D`�~�~�j�<�yCUCUCU�;�;�{��h���ps���qpպj]� �.�!C��R{��^�g�|*�+�+�a�s�s�*T�8��~#u#u#W^^yy�%8��AA`�y添�&��V���zd=���o/���jFkFkF7G}��Q����=l�� ����^�W��b[��v~��y8w���s�a�u�u��Ioқ����:\�\�\�-`� g䌜&�d���Qp�ĉbv��f78�Π3ccc O���4t���׹&�'�'�A<�CP�JT������?e�"������t-��D>Qt��^i����U�
�������:�Ψ���,0����7�Op� ��#���w�Gx�G�8l\7�׋�s����,<���ңK�nϻ=��	��<+�ʳ�c��6UFFNr��`�3��@�Ky)�������w��X�/����K6�&��RN�I9+�)�VYe���?�oX)V��h5
�yټl^����W�+��3ޥ�H~��IEND�B`�images/iconevent48.png000060400000004414152455755750010710 0ustar00�PNG


IHDR00`�	�PLTE�!#�qxTGUUHVRDS�  WJXSETTGUSET���UHVXKYRDSSESYLZ�ukuSETSFTRESSETRES�x��~t|������qgrmbng[g[N\{r{�RDSdXeQDR`Ta}t}TFUWKY�\O]�w�VIWrgr�~�������I9HQCRxnxj_ki^jQDRRDSSFT]O]SET^Q_aUb[N\�W\��?B�i]i�w��""�҉����zpzbVc�00������yoz�_S`cWdRDSRDS�YLZ�''\O]�@D�WJX���$$���������$$���{{���Ҩ�������RDSncoj_kqfqwmwRDSRES��TGU�x��y��%&�II��� ����jq��ah�dh���|��
��Ŏx���~��EE����w{��в�==�++���ך�������CD��������݋���""QDR���UGV���w�{r|\O\�z��}�wmxqfqtjt�fZf���ncobVc_R`i^j�h\hZM[���
�lam�~t~���������𙒙���g[h����}�qgr�����}������������������ٍ���tju��������ǩ�����ݰ�������ľÌ����22����SS�����''������Ա==�		����xx�hh��ơII�~~́��33կ��$$�����ٴ��tjuSET|s}}s}SETSFTSESw�w@�tRNS	������y�ǽV_�՜	�X���,����e���L���֝����?���s�l���������������.��:Ϗ����~$X����K����p��������x�k����Z�,��կ���}�������D��ݗ�����������������������������������������������������������������������������������������_�_}�IDATH���wLqp�jp�J�qo�{Ľ�{��ƽ��{�W;�b�r��h�,{q0�{�)���%�??���������aT���TYr�JH��0���H�^�%��{T��I����Xu�^���p+3edE��洒��l�C��BB|��+
���RF[.�r�R"Ξ�?���0�V�(T1*,1��O���*��<�iZ�}|tD��Ӑ����)���S]��w���
y�T*eŏ���^�A�T߆�y���{���y&���9��܍��}	F��J��O�j��Lucbb�||Dw��^�q���:»7x1a�������LrB_�E��{�t��G��v�-j]Gz���u��߱�����ٵM\sxUPT��y�5w��(**x��u�
g:���d�޼y3�ܚ�+�6qk�׷�t���9kn\ܙ��e��NZ{�je�ZgΙwqԢE��黳R��S��
:�xAnd~��M���o�f�����w�ȡJ��[����7Xi���"yW۴	��������
| �E.��/mڬ��<I�}�!���K��T,��D�^�8%�(6�Δ^���A&��$���KF7,�F&�4A�ŕ3�T:z%V�ar^�w���`�O���3A�n�HY�<�R�����QEc���S{E=.@�"R�l
KT!@>��l��7��Bp��e�6�.�I�P�s��9Wu��#"�7��t�r.��FЧ��#G�6�*n�R�t�\@%Фf�A�M�<P�#@���h�����9Q$��Rd�q�:�!q#�v�i�z�m��Xd�VN&��_BYd�Ғ	6e";Ml�z���W�dx���1f�'f���Q�)�)9$I6��z" Yj"Rt�̕�—PHmF��4�իW�֭�9j�[`��-T�	 K-�v�ѣ��O۶��)s�rM�{/��Nd��!)���B[���P�2��x_%S�LLX�)Ah�O�P���l@`�~���*�{�;�!H�/���uA�}��oĮ���Z�O��҃X�w�5E(���4���:1rޯ짰�گ�����OL�샿:�þ �*W�֢Nc��v���.yQ>>>�rU��eo����]p�%P$��\^Z��kU� oonuo�rL�j5~��[m��x?�9�v����40�n��jM����iܴ!��u
��������c���IEND�B`�images/addthis_16.png000060400000000624152455755750010467 0ustar00�PNG


IHDR(-S�PLTE��f��i��f��k��m��h��e��n��n��n��n��n�����`��c�}\��k��g��d�zY�uR�xV�~_����~^�qL�kD�������������r�sP������������������w���
tRNS�������XWT[Z����IDAT�-�Y� DD�ư���FMr���WS�@yc�@!�Z�M)mD%%
���@��@�����y��d%tĠ�M��hr���hg��vo�?]�{�����6c�Z��K]�.)���>�!=M�h�l0=c���%:�q�|*vT��s�:�_�8J�P^X�SZ�����!j`�8TIEND�B`�images/addthis_16x16.png000060400000001544152455755750011030 0ustar00�PNG


IHDR�$r�<�PLTE����oP����nOv�Kn�������������������ȷ������-V�q�����&�ˏ���2i����-q��qlq��������.��6��l��P�����񲮵��FFݥh��S���niFF��k�����FFF���͔��
O��������[h��Ɖ�q�PMƉF���r��iFi��tRNS@��fLIDATX���[s�0���[B`�+J��Z�U[��m��Ԟ�ر������A~r������ը����jq�;�b��ޮפ��Kwm��
�qPV���l��^)�tu�6�j*]��	_!���Z�+��̇��PUݵ	z!��� p~"�:�*�<�~�P�gPI��r
�GQ�CÓ �P@#]����Get/tExIS3���$I��/H�Cj��F�kڣp������y����y�L�4	�U�LpS��V��0%o;f��"�)��w?o�wƐ>:�,��",�(	TGQlá(p�!g̲�#�~K†�!�0~Ʈ̙��	.ޜE�[T�ݧ�Ȟ�g�2�SE�Lq�D]
��Ճ ;���>� <�X���@SV��$��V�"��8
$����G���q��+�@Qg0��m8$
�)E�&0��—R+���\�`Bϛ��&V`1�4�<�˜�K���0�i�!`Q��l!!�p"Ê��`})��5�}$�#�qC "t�$�B����)L|'<�E�E���@��@����Ȗ�X�����u�Y�E@he0�IEND�B`�images/new_event-48.png000060400000007547152455755750010777 0ustar00�PNG


IHDR00W��	pHYs��9iCCPPhotoshop ICC profilexڭ��J�P��EšV��p'QPl��I[� X�C��IC��$�ܪ}G�.�>��������!Hp�o����p��bם�Q�A�U��H����3L@'�R��:��8�'>_ϛv�i�7��Ti`lw�,Q�:� ƀ�S
�0�I��(�rJA�o@I���0{��1�A�+���K
PKґ:�jY�,K��$���(�� ��q��4Qu��?��vӑkU��[�q=_�~���c��Cu�݅��\�/��-LO�l�
n6`��V�Pނ��³O�	�' cHRMz%������RX:�o�Z�
�IDATx�̙ypUu��?wy��KB�	�`�3l6MjElM�nzp��r�ne��ʱ���j��m��pDg�7$=e�AE�B.(��%!y	��{��w��^Hd�Ct�S��������;�)RJ������u]����99�(��,�����?�6EQR�*�0�^������ZRBުU(�M�.������xF!⽽��Y�������i��%zƈ��o!�����Ǝ�l��]]����U!*��`�Hӄ(EA�4Q�^������&N\��2��Y�PW�����GԌ� *�L&����-MC
A �����574��>��'ײ������/5j�BP�A̭[=='7B����|�f6�?z̘'TM/���&�~�ij^��4LƎ�g]ׯ@J�4�`%�
�жl���6��w }>��L�0�~����nTU�p�F�MaQ��G�	+�p��y3Ɔ
(>� Ŋ�K��Q
𖗣��c���/پm;;�� 
��Є��XX�P
�b�d-���^y�d{;��Zvp��q��1�x�ޕ+�������饫�$H!I��iA�u��YSC��G���U�e�{��X;w���@�-�:_�@�x��knG=��
��j�ݻ�!E�Q4
5!�g}=�4[*
I+�iZ���eZ�B�H��e���㩸?����q��I��e؎�iX�:m�N�F����-N]j$��gB
�$��p�z��w}ƛo��sL�DJ��(��D_oAl�ڷ�����_Б�Alݺ�ߎm;�������ĶR�7�\a8�-?�Xl:��)8��p]�X�I�a�\/��V��P��#RUI�'�d�0�,+�Ly@��IM���UJ�x&+��Q�E�����*
HH�(���@�@�BRJ\ץ��E��Bh�JP,�"iZ)��庸'S��$��8���8�rs��ϣ��	U�����8��퐰��ypݡ= �JZz�(zzzI�6F�`䨑��AB�Y������4����M徕���k������)).����с�CPUb

4��I��I&-�{�=�M�ʒ[oƈ�h~�-,���>�
EJ�cEE�?¶�l�r���^h޳��7�L��#�e�ײț<����&�_7c1��}7��ף�B����h�<XP����+p�I
���5
EӰz{i��ō�Q�-¹�c����O(��N���s�z𔈩���sBV!�t��s�]M���|�A
���y}(��}N����ҽm[�N���C�T}�Y�����
��K��EX|ήOf
 p�2/���%.�Ȯ�y}��-P\��> �-�:��0�d!�)PPP5���X���(hC<��W�@ֆ;�ð�a��!\ǥ���0�z����۶���%�AAWg�D�g�G�aC�p�%�k+���2|?�D�Q�ݾ���G�4EA���̿n>S˧�	�tvv�c�j���s0�\�%'7��n#�`�ɔ��/)fђE�(f�ƭ����%���I�/�NP�������?�����;�,ˢb��~�?��ᄑ��b���O b����߷��/�3oN���ml~c��߿0��k���:��x<�3�䊢(�qd6Y�̻�Dr#L+�@_O//>��a�q���R��
���E<p��e�w�^��p��ǣ���$pٕ��٧�!���)�@�QTE����tM���g�<]�9�xE�h�oL���c�q���X_�`(HII1�G[hn:����u�~¼k���p��mc;v��H�Eр\�l�Vu� C�v���`���".=�y�}���.�Փ?,�p$����0�ߏ��Ύ�����q��m'I��I1r()$�F�mڼ�X�"'�d�Ȁ�2g�a��NڌY�]��������O���m��(N5{�eX���c;����ش���::��?����rɥ�����'�V���hto}C�ƙ�f=��)[�uW8�����$�X��#Lj���Dȉ���Տ>M2y���R��.���8VҢ��q#��q�?~��-�w�]W�;8|8��̡��hZQQѴ����/���ݽbEm:���"
�9k��.vz��x�9|��z%����++��<F���E?�d�[��EQ5TMŶm�d�L`%-�^5���B�x��ի�t�:���S3��τo�{�aXi鴥w޹y���Kn��ܞa��:�2&]��_.��]���h$}����j
��>&]<��e덥��a�H$�e��焘5kE����!/Ϟ�އ>���i��8}:��_������p�_�m���O���8�m�@ ���)L��)̘=�x,��GL�`(����=Ѷ���!���R"�zzz���b銥���SSYI��u��w?ΝǏs�(Eaۼ�b��S��;W_�DUee���,t���p��0����Ysf��b�P�q��;~�?�j��Ѷ(�z0^*��	Q���)S�$��ʶ[o�1�s���\��w���~f͚GR��iTQ���ߛ�q�Mx|^n[vf"�?�%5��u��z�x}^6����W���l��D�s���<��Cf���^�i�N���~�����L%>��u��/l���6�ў"c�� (*�eq�O���W�r����]<�<�9�a�)))!v���ϫ��il���&
3gV�S}���l��̄�RPT�eY454�r��WOUn����V��Ņ̽v.���iڶ
�
�4��o��Ī*B���L7�U_�y1��~�p���{�6z�Fh���464�0M�t|�ɠ{&9c�)�[v簾���}����8�y`;�{QRH�H!RH4U����D{��2�d����%ln>
��EJٿ;U(�
�/�|IPJ���E�d�8q�D{���JJNy'6��t.-�ԝ���%��.�� �P��+\_cC�����|�n�yoN��W���dr�P�m�ѯ˵J�}�9e哯�6��O(�����.�L��U�Yq��U�E��u��+��v�lJg��uݺ�W���&�4������$���ee_I�7�;�Sf�7��
EJ��X����y�9�ǎ=U\\|S�����*z�Oݡ/���3�m{�/�8�t
�ˆ�ҥ]]]o�F�`і-�0МM�'M�r�FFΘ����
��q�7�~V(���������WV���_pl�N>Z����sJ�:r�&VU�K��h��쮫���䲲z 5,8_�:�_
�!$�in~�������j���m��ɶ}�d2��%b��|w�Z�"�8�x&�@���=��x_�;�m
�#-������PC]�i��3��ϡ{�՘�IEND�B`�images/loader.gif000060400000003075152455755750007773 0ustar00GIF89a2�������!�NETSCAPE2.0!�	
,2l��������ڋ�޼���H���j�j벱���.'=�õ|C n�+
YF��48sȠTy��V%u�
c�P�)s�js�n��Fimf[�_x��(8HXhx��(Q!�	
,2r��������ڋ�޼���H���j�j벱���.ワ"��V���|�\�i F�C�oɔ��#י�����<N�e���~�M�y�W�V�׬�HssRhx�������(Q!�	
,2u��������ڋ�޼���H���j�j벱���l���C\+�;��V�4&
E�q�l���uz'�ݜ�[
#�Q2�}���1�܃��|1�6c�"�x�������))Q!�	
,2w��������ڋ�޼���H���j�j벱��"2"���>\+�;ꔆ�����bոL�|Ѐԩ=��c*�9�J�b$֨=��_��}�s�kj{YU3c�B�28x�����)9I)Q!�	
,2u��������ڋ�޼���H���j�j벱��"r�B/ʂ��k�>��E|����`��Eh4[�*��m�����%��u����Xk�tx�6c�"�x�������))Q!�	,2v��������ڋ�޼���H���j�j벱��"r��-"�	���1��!
=\�L[F�S�{2���4P�n�d��������ܞ��p;׾��W3c�2�"(x������)9)Q!�	,2p��������ڋ�޼���H���j�j벱��"r��-�;z�b.�Cz��R9�O��we>����Ub�a.ј���j�*֎�MD����f�U���w2HXhx������(Q!�<,2i��������ڋ�޼���H���j�j벱��"r��-����������_3	(*���yu"�X��Y
�Y�����j1}&k3����O���(8HXh(Q!�	,+
���W!�	
,#

�p��{i��D�y�yxBS!�	
,
����Aϴ�"�3�E�g��8�����h!�	
,
(���ZJ�|uV{M��tNu	�FB����+�T��4��Q!�	
,
%/���ZJ��x�3��YYa&L�E��T�ɡ�������X�yT-��!�	
,
-4���ZJ��8+8��T��W�	cAX�����_kjcLs���	y��"*A�!�	
,
-0����ڒ�/J����VQ��!�]V�jtrb��4k���x��<R���U!�
,
-*�x���z(2Sԙ6�yJVg��D��x�/;ר-#m��~~(!�,
�_;images/newsletter-16.png000060400000006527152455755750011171 0ustar00�PNG


IHDR�a	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F�IDATxڤ�MH�a�n����efV��X
��u�
Z+�PQ�=�� � ���)��:T �a��!u,=XX!QF�K����3�,-�Cs����?̌���O8�
�NJ��G#ј�Z��[�E����g'�~"�\�Dg�9���'�'�%�H��,����TV.'^�����֠
�H�G�p�0�!*�lN�P�� ȍ���l��s�p`�^��/%S����y�x����(<|�X,F6�eay%�J�y���b�:�"Xc�\���T�Զ-�e2,_VACCw;:�d2�
Vd��AD1�K�,��9E2�$��0&DU��^�����d�7�t��X~~�ҥ�yW�\#rtw?AP�nn�b�Bf�~���cEE��=��0��+WUR[[çO�Y���3��Jm�}ԕ���d6o<���������(��.a�v�:��8�HE�|����<;w�����M����c�ؽ�����3��b�뺨Bo�STt|�?�{C]-�cm���Ϲ�
q����'N��GG�<�'��|?����@����=���)۴	�oϤ�6������H"���|��c��س�"pU�k�1Mb�I1�rב#��֦b̥��?�@��zz4H�U�)�п7�]5Us�IEND�B`�images/btn-regis.png000060400000006060152455755750010433 0ustar00�PNG


IHDR�a	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB aAHXLXN�H� $4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�| (�h���SЧ�������c3-� cHRMz%������u0�`:�o�_�F[IDATxڜ�1KA��5���B�t"
V).��N��؉V�6V���
�A!�(((9r���ɳ��ds\,20�2��훝#��1b23�]�Lv�r
�Vԉ�0އV��i'Ef���~x�,�,�����[l���O�2$�]�?�w��ajY�
��*�?Z��M�0�>(��1:�a��bwA^�R��R:+��dF��ޛTb�@.�݃����i`%$����T�0�7c����x���e8_���v�\V�h�#��?�[@�}M�m�Pp`�ߍ�-'�I%jGP}5�k�o\�Z�'v�ؖ��6&\�
�1c��f'��L&���`Q˶IEND�B`�images/panel_denied/new_event-48.png000060400000002401152455755750013366 0ustar00�PNG


IHDR00`�	�tEXtSoftwareAdobe ImageReadyq�e<�PLTE����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������^+�BtRNS�����������������������������������������������������������������D�IDATxڌ�疪0�3E�ХHǾǶ����/uP]������L�Xu��@���4^̱�3A��gk!�9H�
!>7{<[�OVY��kB—���t¹c���S������x.�;JZ\��qq)�tG�0����r�!̒�'���G8Y]!���۴ٞ�℡`���w�����0/���>�nGLG�*��3�#ܘ��v���$��G������0�L����}s+-q�W?�?�x�PPp�#D}�W�oz��Oz���rA�#�z5O²Ry����\K���q��#���ȧ�n�?@��O�~~@�&�u��e]J�u�R�JR��4���ii�2�2�s�|��Pz
�;�v&(-k�WWq��p�G��0�|�#ʨ�Gq��w/J�f��7�4��X�!n�a��	�Lw�8������M���/s=6v�E��3m�B^Ra؄���M��뺞N7	���N~J�1+"Əy۵X������MMz�]��\�%А��	o�ݧ`�C�u�$���������ϵAB[��0M�W�#�%���Y|c�/
r_#��n�e)y�)|��Oŧ�f[����ԚYU�5���e�9{���-a��[)�F�O4���n��@^/C>QW��VB�]�iY]����<\�>C�΅�nN�1�&���ء���؅�f@���S��T�e��;��"L��j���E�%��mVg�uNt�|����_�U3�w���+L��c�D)_�7LV�KSi�/BQ��:<��.�����N��B���k��`>�V�W��<� f�xcо�0��_��;��P��@F<L��Ks��s|#Ї �4���~���;�⇼y�ڱ1�`v��8����IEND�B`�images/panel_denied/info-48.png000060400000001741152455755750012335 0ustar00�PNG


IHDR00`�	�tEXtSoftwareAdobe ImageReadyq�e<�PLTE��������������������������������������������������������������������������������������������������������������������������������������������������������������8tRNS�������������������������������������������������������;\��IDATxڔ��b�0���$�Ͱ���[׶w��
0A���K�|�If$��)�s/2��S@�f�f�S��wHU"vַ��R��_��#'������;�̠k�B`�N���1h���- ���-�!G��7�B�g��XKPȺ�;���^��]��	ؚ��ͬ��+�w)�`Ct �V�����K@�pB��.�5`�F <��7qw0k��-�u�e,�նS1Ѭ8Z��!}_���}30I
���<N�D%mщ�D(j@o�S�0bfj�@`,�a֭�%	Ԁo��׿��{c����@`�q
��s�x/@�l�5�g��~��>(���}��3_�[���|�%�z{��#�=�k�an���Wu����sH'�~DC}���n&����8�-��~�?/x7@�f���˗Z���%*���Z�/���%��^6�x�"h�a�}N?���xʯ1+A�=ʟ���Y�g�(�{�x}d
��C�Y���o��|�e��P6�LQ!�?_�oW-�]@���3M=k���a��t�A�ʲ��rz�m[�Ե祎+nw�}y]Y��-oά
REi��ҩ�;I�R~�Q�7�R<�7#Z�<�'�D�mg���IEND�B`�images/panel_denied/all_cats-48.png000060400000001475152455755750013170 0ustar00�PNG


IHDR00`�	�tEXtSoftwareAdobe ImageReadyq�e<�PLTE��������������������������������������������������������������������������������������������������������������������������������������������������������������������2�#<tRNS���������������������������������������������������������������IDATx���v�@@G�q.��JQ@Q�W��Ĥm���:gn�h�$}�~R��3k���>	�
�W�ȩ��٭��p'��"��	����>pN!�wrX�pa��n�8�I��Ћ@���Y�g<��IR��Ǫ��%(�<���T'�0�8�i�+��b��x(H�%��2Fi��yC�:K
�(|�|��3�
����ԇ�� E)d"��֥e��0yۀ��g���5�F��|�0�|S�K���l,��1�E�&*��
otBN"8�!�l\����.L"���G����J3�`)�i����u�3�K=�3�x�����]�_5��J�-��k�}��<��ϻ�"��&�AݹF��>��A�i�NO�'lPk�2H�������EvX��m���x����<����~;݌F��f<^�F���H׳l�������[�O��v��)���IEND�B`�images/panel_denied/features-48.png000060400000001663152455755750013223 0ustar00�PNG


IHDR00`�	��PLTE������������������www______uuu��������τ�����www^^^���wwwwwwsssqqqwwwwww���www���ggg�����ߍ��fff���ggg___���rrrjjjjjj���jjj___������bbbeee��������ր�����ddd������wwwwww___������www���ppp___qqqg:
~AtRNSZ���Z���ZZ�Z�ZZfZ�iIZZBZF�Z�Z
�ZHm�"Z�=�Ze������SZxv<4��0�r}m�a^^IDATH�ŕۖ�0��� ��� b�P�μ�SuOH�b��߅k���d'd��g�����;� 4����벘��qz���k~��jH`ʌ_�_��E}#T]��?+H�:�T�`Ѭ�A�	�d�� ����+–�ߓ�AK.O�hA�K��
Yz��6��A�NhE���(��ِ9�X����_ePN��f�,�����tm�.��M�ʂ��^.L6a���*�wl��C�1�{SQ\����B��{!y��6���DF����)l<�y�7�b����tn��]�X�ea8n�3߲!���%"4sS�B�FZ�w��� +y��%���9��BPc
L@J�He!�i��8�`F*�Ǡ
�
��Y*ܘ�w0<Z�l��)��qZ�A��Z�l� ��m"B�β�<r�����T�P-��)8���O�ʻ�X1�'n������O���{C�߱E���vT@CzEV�Z{�~5�Q9���bC�C�{*`�!>1�_,lh��=,����V��qL����Ȳ���Q�c�p5Mő��ݾ��zR*0۽�/�MUA�,��8�}�J���|`
K��gIEND�B`�images/panel_denied/newsletter-48.png000060400000002123152455755750013571 0ustar00�PNG


IHDR00`�	�tEXtSoftwareAdobe ImageReadyq�e<�PLTE��������������������������������������������������򾾾��������翿����������������������������������������ٺ����鼼������������������ѽ������������������������������������������������������)�bCtRNS������������������������������������������������������������������Ab��IDATxڼ�	w�0�'Lb�<j�V{h�m����P;DP��}��F��%�d2��Q����v���Mk�⧑��
��}���|SR�:!�4��r�
��:��^����]�����!��ʔפL��ٯ���(�-;5-;Q4n�#�L�q$�t$��i��D\5*nDZ%�b\�1Z9��tv�s"�h��є���K�!�UZ��lO+�Cn 8� ,�$��eyr��9Fs8�6h�8ƈoS6�s�֑�:��>��ܬ�b���>�,�@s@`����^��]�-��'��'�*�Cp|r����
��)��'\m�"^��'�����������}���Z��=6Ju����PX��a
^��9h�;f��RF�3�
��0j
菱�^$ //�ԁ�5e%a��0��
��T�iE)�9�%�<b�*v�r(+��S���; z{Z�i���zӡR%B��jM�d�#���^�D��;C�@Uv��R8��8��D�[�u܅�R��ݲm��M8=ܐ��ս��<4q��$`�	XEHn�H���Cr�^O�nE��
�͠\ֺX��G�q�ظ���N�S�m�u�Pͪɷɓ/�OK*VI��az7,�T6��
�Z��{oR��Z
�^���;�� �7�" *E�$��8�T��IB�c�B�[������uvIEND�B`�images/panel_denied/customfields-48.png000060400000001357152455755750014106 0ustar00�PNG


IHDR00`�	��PLTE�����������Lj�����GGGLLLIII���KKK�����媪�������Ώ��lll�����ޝ��aaaNNN������RRR�����GGG������iii������}}}���������SSS������[[[������bbbvvvhhh������������oooyyy��Ԙ�����������JJJvvv���LLL[[[jjj��BtRNS������N��P�������+�������A����A�A
��b>$nbbnn�n6�bb��Dp�0�Z)�,�%��IDATHǵ��R�@�a�,DA�@TrÔ�`Z���]��_��b�:��f��,R�f�W�V1��Fo�o�= A�IBy�Us�K����o<Q�}:t��*�V�.�� G�@]3���
���/��Mmi�~�6��+ָ\
>�@�4p�Rz���|�=
�Q����R~��=V�*�x��r-}
��{�`�6���Hg��5���52l�ʦ@�oZ���K���X�SH����ہ܌�k���e�$D:<�E��Tc�C�㋀= ��
(�%�2�?�`����O��K�g�(���|n3I�l��?�A?i
�������� ��a�X�UYA�X�4B0 ��4��j5O�eiJ�V4z<
B�=�����V9�a�/�8[���mIEND�B`�images/panel_denied/new_cat-48.png000060400000002024152455755750013015 0ustar00�PNG


IHDR00`�	�tEXtSoftwareAdobe ImageReadyq�e<�PLTE��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������u�@tRNS����������������������������������������������������������������{�D�IDATx���z�@F�p�!싊�I�b6���j�������97���^�����_�W»)�y�07��[���?��?��G쯞�\U�VP70Awu�(P��JQ3RK(
��6�s��ִo��}�y�r���4�~"Q����~��=�ζL�O&8cW�0L'ʶ�����6�@Ð$%=��K��b	�dF�4˛"��iB�ap�K�U�+�CM�
oK�U8"ͻ1��a���4M+�ŴΘ�8�kZH]k)�y�h�5	gIқ
w*�4�k�����uEH�~�A��.K���m��:Ue�Ȳ�R���e�
����$�-\�\�q��
-�aa'*�X�W�S�,P��J)5]�rܻǨ�Z��|T�D~b{I-�U�Y�1u���	C�2�-�0�M�uO���Y	
�\�� �p�ʢ�W6����=�r��{�%d��R GL�2�9BD�����z
2��X��+�������%L���pXOl�Ͻ&7��T�n��_~�%�`v1�'�����A�a�c�0�'�g{|z=�߯������/�ն��i�B�|���<p�/�,?K�7݁{�毐I��Qp�	n0!\Vy�X��)�Y���{+`�~�k��&�kv�o�i7�/�+��oC�g���IEND�B`�images/panel_denied/index.html000060400000000054152455755750012434 0ustar00<html><body bgcolor="#FFFFFF"></body></html>images/panel_denied/registration-48.png000060400000002301152455755750014105 0ustar00�PNG


IHDR00`�	�tEXtSoftwareAdobe ImageReadyq�e<�PLTE��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������澾������罽����}v�EtRNS����������������������������������������������������������������������87IDATx�Ė�v�JFѢ�0eC3(�� ���$ݝ��[Ҋ&7���R\귩S��_�C�=oʭ�}���)���
�(���'\8~"�S���a�P8�Lj<��|���p�(c:,�k���JVRN����x�B%5x�Bx/����t���¦%�+�:}�#��O���Z8�
t�
����?�����̫"�|/x�4���s��')�\��t���+'�&ퟶ�6����]?l���0,�̪7�_Ӕe(6���t:�冀��?��O׸}>:ކ7,�w�-��c�H(o����5�����x�06���h���i��&���6�	ڏ�,�����JeP��^t^�C=;���J��m���;!�R�UR�"���;�=�U�� F�p�%��Otu�`)�ό�����(��X��H�y����@s�Ei�%�;�4�mA��Ptu>:TW/4_��a>�;A��Y��j��̛��G�_�@�U�@�4���TEsek0�I��K"X�يS�k���ӗ��c��t���z$=sN�;ҡH����t�Wz����GV�_
<��y��w
|%�����t%�5��v�z�8c"lڂ>7g�w���OW.vm"(l���]��it`.���]#�1g��=�4U&�p*�f���>��8n�g*tM�F��qA���`�^�Y�!/��N��Ў�j�jNpx����CM�4_od�k+���C�X,�
*�w'�᨟u�����mm����
��ߣ�a;��5���'����Ql�v�]�?b76���IEND�B`�images/panel_denied/all_events-48.png000060400000002571152455755750013540 0ustar00�PNG


IHDR00`�	�tEXtSoftwareAdobe ImageReadyq�e<�PLTE�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������K�IAtRNS����������������������������������������������������������������0U���IDATxڔ�g��:�Gz	-�"(�c/�n���nB����=�Cf^�A3ז0����h��G�AJ�?��̧sI��P��lp���C����I��+�Y�<�r�a�[A?a�2��Q����/���+�cT%�0���I��i� D��ލB|��A�#�`f #�)�iy�B�87xC=�ݰd�L�`n �-�—eY�8WM���E���]�S�`�[���0�y^�G�m�d���:����u�^]T0M�s!s�
��y�{�3Z$%����[u��Qz3�K��
w�'�o��:!�1&�q<e�{d���lL�P],��}��p8콽�M�
�����z�&�Z��������{X S����`�:ݷA�y�e���Z!���ϊx����C�E�@Ӵx0��4�qh���mK�d6b߈S-o����`��	����P���G�k� 7CZ�$�
�+��N�,}H��L�©���9�8;k����s
prew�w^�%��e#�^��6�?&c�lV��Π��Vpk<!��%�zb6��"Z,IuٶҨ�^
�6��H�9��a�1�_q!M�^H�4n �(z�tDב�&8��#M��"|��Y�����<��[�B���9�Z��KZ��<�
��0jBl�.k�9���y�2��QH`�#�ZC.�QLq��	�F��J�
���6���.|��
�	��̛1�V�U���؀�M���&�6���ւ^c��rߩף?�^�.��Dy֨DW�ۮQ7�1;��6����R۠^�y[&�-ܔ�A�i��64=Z�\3�J�wfM�&�L'
DE�c������U��t^�c*��N�zFי��>�������5#���Wz���ת����	)��e#$�4������7,��j���n1H���u͞aa����k��O����;;��`�j�|K��X�b:�ڝ��è��&�ʹ����M����3+�|�x���W!��ǡ��/OO��Ӌ�����Y�O�we�>n��IEND�B`�images/panel_denied/themes-48.png000060400000003042152455755750012663 0ustar00�PNG


IHDR00`�	�tEXtSoftwareAdobe ImageReadyq�e<�PLTE�������������������������������������������������������������������������������������������������������������������������������������������������������������������ϻ�����Vg�n?tRNS���������������������������������������������������������������&|�IDATx�|�i{�*�E��w#1�4{Ҟ����uǴI�ܞ�q^��>�.�A0<�i��'`�܀�Ɛ��<J1d�Ņ�*Q'q�X$"
�|���Y�V�*+�����]۠��R� >L�^�wm�sUnG
7��B�X�R��[���˳�TMը:x�����S��N��v�v�:zFSS���3�G!P�ķm[�dvz
0�='5���2���PJ|�0.��<Էm%��{ihc����.(J�Q#�9N��畧��c"�Q�6镴��w�mxO��1K-�Y�^$�k���	�<ú	�>����9!=p��L�,,�,+�F�7!���n�
�U�˗�2Ɲ��~UvY��q��cP'� �~�|sэ�\�U�
�+RW1~�Í��$�n7�T۪d���.�I	S�_�[W����M�b�yk�<�u���_�,*�=���*T���z~2�H�#�]'��z�IS(�m�(v-\r��l�\�V��D*����Ism;Lj�� �7̐: �;�S˴#�H�RV�DT�V��O�Fk�4,��j�`i����#�$�7<l@%pl:��˥�m�DZ)�U��K��B�Bh��eW��q��[I|Z�VseeY���z�k��L���\��[dX-�e��dI
��J�a�ze����8�11�{����d�[�]1L��Z�f��qV�	�ך
.b�T<	ux�0�\/�2����Ќ�kPlf�+v�M�nI{E|���~�����B�F�6!
.�^% �+0�a5i�w?���h�(�{Ѐ����1�.@P����Oc"Y��!��Ku.B�Y�r�b��L�=A
8��Da�Ͻ�B9ho�g8}�]гr�:��*;�ڨ����M8�	jLU�׮15�I�J���
68��-G2���5~ʰZ{
��3�V�'Vb���л5�+^+R����Aȇ�v�r�
�\���G�,%���&8Y	=c��=c���a��e���ˏ�aн̀�
�U;��y|:A�݄�^O�vI�Bޝ�U���z���Q����}��k��|y��߳Ga�j.<�}ƝN9l14�a�{��_��#Z�M#%K��=
ĔE�=��A�]3�ҭ
��(�ł��л���p��8%Q�	}�(L	�.���>�^���5X��I�Ǧ�>Y�	0W�AJ·�IEND�B`�images/panel_denied/global_options-48.png000060400000002576152455755750014424 0ustar00�PNG


IHDR00`�	�tEXtSoftwareAdobe ImageReadyq�e<�PLTE�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������?��AtRNS����������������������������������������������������������������0U��IDATxڔ�	w�<@C� ���XAgd�j;����{	b��|sz���KB�"z�&�!��2���xE�����R�(y��"M	-��BsPUU'�aE�B��\˲^T�U��IH4���P����M;�����^��<���wwp�+���AP5@�͊R�6I�IR�*-|X!'Irdx�gXcIj��y&�6Q+I��I����O��@�>s��/��MSx��a2}���ˊ��%��"N�?�wIR/*�n�IXL��I�L���%�S?MS�0M�N��ڔM�&<��*a|�{S�{A6K��tI:2��9E�g�ބ�b��6 �ԑ�(�2R���
޷�Vx�3d�0�	�
m�����;a1fP���[�U�/���^��`F�6@��E�H��-́�Q���S�u_."��X�xR��	K7�c�I�j� …=��q荔�Q�R��A�PAp��@"��w�v��b��q@?s�a���rG8�:h�2�2��pl+��уJc��Ϣ�<Ӕ�Q��Sa�ݮ�^�lB}���B�hr����k��2a
�+z�T­
#P�V}-7za
BR'�pƬ?�hm{�Z��u�/.�0ak�V�Q5�}
Ƅ䱭=�>�/�7at�ar�A� ��l�DMzX��Qa4��F��������"3���=�wO<-����h4:�ϋ���D]fy|��ͺu��&0e4z:o=f�0B�dF���,{�ң{fS� 6���Dz)<ڡ�65�j�,�wS$R8/�O@hw�rªEҕ��g���nXO?ߙi~��H2ؓS�G�����OS��z��-�����8��},-}ڐ����θ������:6��lj"�����c����y�jEu&�e�$�~�D�S6W��`��Y2v�[&��ǃ]V;��0�mX�lG��3�a-ƶ���M�|te�EQWB
��}P	-?��:�L{�I�U]WU�۵m������*I6c��;|���?�O�DQ��|RIEND�B`�images/iconicagenda36.png000060400000002641152455755750011317 0ustar00�PNG


IHDR�$7>V�PLTE�������������������������������������������������������������������������������������������������������������������������w�6tRNS�5
��%�	/�z�����Ep�LtY ]�N'�ݛ.����hC�99ɒ\��rIDATX�՘钢0��x�
���r���xK���-9B�]w�~5eդ�$�3���%�Am��qeYv}[}���Q����$G��7���=;��7wI�����:�a���
}�K-���&E��s,�W-�=�п��7�����A�GwIJ��dP6�xs�:e�˦c
���_&<�-T%*�$cWT;U�]_(K�Q���@K�n>-�<�����\'`)͹�����a^���BQ����]�Ҍ����Pf�\F��֢�]�)�~�rN�J�Z�F�-�d�Wl|j��X|D�.l4�*"���su�k9�D^1����Њ�
L�>�H�mi/�˥̦;C�K�6[�%p<J
��||k
�>Iy���ehR�Ln@��\�xY�"��P�cm���(
SONW"�B)��\���?^[��܈%#E��&���
�����$�&������~�W,"QᤥO_ɕjlz�N��{c��|��+��B��e�B0�K9�����t-�ׯ3P��fڜ�6O�)ϩ)��t~K�G�?N�Oα��5�^�ߥ����{7�e�M��.�´��}�%�-��u�ˣ���P�t	��e�h�]TX����t��|�s������
�����7.<X�viͫ�L˻�2�
�uYuQ��\8�92m.���.��]�v�[o��
8�A��\"ʥu]�줼���ﻴ��Y��2z��7K��0��ey���vkV-v��l��Q�N�3�p9@�����c�w�)�R�'צm�l��&B��Ś~C�)�5\7����e��Kp�czW2`���#]�LY*1k����`y:�����ʳ7X��i�W�ȹYe�P.�� ���A��tg��n�@0���^c&k�h�?�:}�-�Q����ϫ��:�GV�O�ʩ�����W�B��]��L�.t�����l3��զ2�����ψ��hԨ�6��6D�jt�h��a�	A��C�1�[ߖ$!��W�A̎����Nh��~��uY�C���L�?B�'/pԊӏPIe�V�w��W�,����|�u����e�URl���>%��;9t������aI�};���O|+N���8�IEND�B`�icicons/fonts/iCicons.ttf000060400000014244152455755750011457 0ustar00�0OS/2/B�`cmap@-�6\gaspxglyf���~�xhead��R�6hhea��0$hmtxv	T�locaM�R.�Dmaxp3� nameT�O�<Epost� �������3	 @����@�@ H %�%������ %�%���������N�F��797979�@@@	����@�����`` %��@``@�����@���@@@%	@���@���`� @@���� ��@�@@��`���(�#".'.54>7>32>7'&'&6&'.'.'&676>7&6'&&76&>'676&&67>7.#"'32>7j$8&&8$$T\c33c\T$$8&&8$$T\c33c\T$-/>
O !j
j+
-({48Z
00FOBS+a< !?,=mA= F4)=$4,b3I�9Q)#@2 IQV--VQI *$T\c33c\T$$8&&8$$T\c33c\T$$8&&8$�Y0s@!77I"EFJQNSE7�?-k,r.2}!5!
'
>-#:-+"G%Q*$*E|3 0""0 ����&-9ELU\ht{�����"32>54.#>73##>73!#53'5#'>7>7#>7#>73.'3#73#.'.'.'.'353'53#7.'3#7#.'%>7#>73.'.'>73�c��KK��cc��KK��c�
p���
p�	���
&��&
�u�	���
�p���	�
&��&
�u�	��p
�@`& :�{: &`9`& :�: &`�K��cc��KK��cc��K��A!!@@A!!@@!�@�+)R+�)��!@��@!!A��@!��+)R+�)��!@�!A@!�,M)#F)M,#��,M)#F)M,#�*!!!";!32654&#!!#"&54632����&&��&&������@&��&�&@&��@�� @����"-<KW]n##"&=!#"&=#"3!2654&#81!81!26=4&#"3!26=4&#"3!!!!!!;#3!"&53!26=#�`&&��&&`&&&&���



�



�����@�@�@��0&&�&&@ &&  && &�@&&�&�@���
�

�

�

�
�@�@�@�@�� && ����#'493#73#73#3#73#73#3#73#73#%3##5!#5#!#!!@����������������������������������@����@��@@�����������@��������@@@@��@��@���@�!"10>54.#"&54632#BuW2dxddxd2WuBPppPPppP�2WuBx�̂��xBuW2�pPPppPPpC�@8Ka.'.#"3#"&'.5467>7>32%>54&'2#"&'>7} (P(@d$$$:*+k@+11IP�G^�,+,$%$b??}?-��)9"":!

06Z'iC$A&&&Y30%	_$$$\:?}==_"""*xM
Z�>
�u
$9���
!!'3#!3!3����������@@K5���������@5�5�����*4#54.#"#"3!2654&#"&54632#!54632@@(F]55]F(@&&�&&��%%%%��K55K�5]F((F]5�&�@&&�&��%%%%��5KK5�@���� /4%'7%8181!8181#3!265##54&+"#!5#+53��:�:3���K5�5K��%�%��@����:r�:-��5KK5@%%@��@@���!.32>54.#"!>32!467#".5P��jj��PP��jj��P���,e7P�i<�,e7P�i<�j��PP��jj��PP��j7e,<i�P7e,��<i�P���+S�!"&5467>7.'.5467>32#%!.'.'.=467>54&#"'#>7>7>=4&'.546323>7.#";>7�`)%J(&$%a66a%$&(J%)��4K'
-5aEEa5-
'K�_K'
-5aE	-66a%$&(J%)�	@4v5,B'$R+<m+,00,+m<+R$'B,5v4`>-9#
g=VzzV=g
#9->@>-9#
g=Vz#

0,+m<+R$'B,5v41@@!!''!4632#"&5!3!����@��o���@8((88((8���@@�������y����+5(88((88(`��@@����)8GLQ"32>54.#".54>32#>54&#"%.#">73#3#5]�zFFz�]]�zFFz�]K�a99a�KK�a99a�K�
pP.P2[QE��P.Pp
EQ[2(@@@��@Fz�]]�zFFz�]]�zF��9a�KK�a99a�KK�a9�0Pp)"
'6E(�")pP0(E6'
���@�@@���!!"03!2.17>54&#!!���*<;)�81
//
18�);<*��4�=*��*H	,,	H*3*=�k8�����0=��%7'./#'737>77'>?5'.'"&54632#5'.'7'.'7'.'7'./#'''77737>77'>77'>77'>?"&54632#l)-:	@	:-)FF)-:	@	:-)FF�%%%% C9C'.8
;%@%;
8.'C9CC9C'.8
;%@%;
8.'C9C��:QQ::QQ:�:-)FF)-:	@	:-)FF)-:	@	�%%%%�@%;
8.'C9CC9C'.8
;%@%;
8.'C9CC9C'.8
;%kQ::QQ::Q��3�!2C#";26=4&#!#";26=4&##";26=4&#!#";26=4&#{\+''+\*((*f\*((*\+''+��\+''+\*((*f\*((*\+''+�'+\*((*\+''+\*((*\+'��(*\+''+\*((*\+''+\*(���C"326554.#>7>32#".'.'.'>7j��P�K55K�P��j�^2!KQW,,WQK!22!KQW,,WQK!2�,:!`����%%@�`!:,�
				

				
��)�!"3!2654&#
��



�����-2#"&7463"&7>#"'>323267#}33O:06DD�(,?	
T2g]N(G

G'0aWE�<(2O60(W�Fn$-*B.ZK��%)1E+)����!>7>'.2#"&7463"&?>#"'>323267#�b�GM��ab�GM��a4$-)"!+/{&4<y

+*:p�M��ab�GM��ab�G�$/ 4��)B�
286-�:1��!%%v����v�����(������+6#3!!35#"3!74&#53#54&+"#!5+581381`@ ��� @

��
���&�&����@@��@
��
�x
����@@&&@��@@su�2!!5s��2������*/4!!5!"&5463!2#1"3!2654&#!!!5!!5��0���,??,,?'��,,,,��%�0�0\\��?,,??,��'�,��,,,��\\�\\L��.�_<��C���C��������!����@��@@��)�s
,BPf>N�&��Hr�JJ���R��		z	�	�	�
<!��G$U2
4c		G	$	U		9	
4ciCiconsVersion 1.3iCiconsiCiconsiCiconsRegulariCiconsFont generated by IcoMoon.icicons/fonts/iCicons.woff000060400000014360152455755750011622 0ustar00wOFF��OS/2``/Bcmaph\\@-�6gasp�glyf�xx���~headD66��Rhhea|$$��hmtx���v	loca$DDM�R.maxph  3�name�EET�O�post�  �������3	 @����@�@ H %�%������ %�%���������N�F��797979�@@@	����@�����`` %��@``@�����@���@@@%	@���@���`� @@���� ��@�@@��`���(�#".'.54>7>32>7'&'&6&'.'.'&676>7&6'&&76&>'676&&67>7.#"'32>7j$8&&8$$T\c33c\T$$8&&8$$T\c33c\T$-/>
O !j
j+
-({48Z
00FOBS+a< !?,=mA= F4)=$4,b3I�9Q)#@2 IQV--VQI *$T\c33c\T$$8&&8$$T\c33c\T$$8&&8$�Y0s@!77I"EFJQNSE7�?-k,r.2}!5!
'
>-#:-+"G%Q*$*E|3 0""0 ����&-9ELU\ht{�����"32>54.#>73##>73!#53'5#'>7>7#>7#>73.'3#73#.'.'.'.'353'53#7.'3#7#.'%>7#>73.'.'>73�c��KK��cc��KK��c�
p���
p�	���
&��&
�u�	���
�p���	�
&��&
�u�	��p
�@`& :�{: &`9`& :�: &`�K��cc��KK��cc��K��A!!@@A!!@@!�@�+)R+�)��!@��@!!A��@!��+)R+�)��!@�!A@!�,M)#F)M,#��,M)#F)M,#�*!!!";!32654&#!!#"&54632����&&��&&������@&��&�&@&��@�� @����"-<KW]n##"&=!#"&=#"3!2654&#81!81!26=4&#"3!26=4&#"3!!!!!!;#3!"&53!26=#�`&&��&&`&&&&���



�



�����@�@�@��0&&�&&@ &&  && &�@&&�&�@���
�

�

�

�
�@�@�@�@�� && ����#'493#73#73#3#73#73#3#73#73#%3##5!#5#!#!!@����������������������������������@����@��@@�����������@��������@@@@��@��@���@�!"10>54.#"&54632#BuW2dxddxd2WuBPppPPppP�2WuBx�̂��xBuW2�pPPppPPpC�@8Ka.'.#"3#"&'.5467>7>32%>54&'2#"&'>7} (P(@d$$$:*+k@+11IP�G^�,+,$%$b??}?-��)9"":!

06Z'iC$A&&&Y30%	_$$$\:?}==_"""*xM
Z�>
�u
$9���
!!'3#!3!3����������@@K5���������@5�5�����*4#54.#"#"3!2654&#"&54632#!54632@@(F]55]F(@&&�&&��%%%%��K55K�5]F((F]5�&�@&&�&��%%%%��5KK5�@���� /4%'7%8181!8181#3!265##54&+"#!5#+53��:�:3���K5�5K��%�%��@����:r�:-��5KK5@%%@��@@���!.32>54.#"!>32!467#".5P��jj��PP��jj��P���,e7P�i<�,e7P�i<�j��PP��jj��PP��j7e,<i�P7e,��<i�P���+S�!"&5467>7.'.5467>32#%!.'.'.=467>54&#"'#>7>7>=4&'.546323>7.#";>7�`)%J(&$%a66a%$&(J%)��4K'
-5aEEa5-
'K�_K'
-5aE	-66a%$&(J%)�	@4v5,B'$R+<m+,00,+m<+R$'B,5v4`>-9#
g=VzzV=g
#9->@>-9#
g=Vz#

0,+m<+R$'B,5v41@@!!''!4632#"&5!3!����@��o���@8((88((8���@@�������y����+5(88((88(`��@@����)8GLQ"32>54.#".54>32#>54&#"%.#">73#3#5]�zFFz�]]�zFFz�]K�a99a�KK�a99a�K�
pP.P2[QE��P.Pp
EQ[2(@@@��@Fz�]]�zFFz�]]�zF��9a�KK�a99a�KK�a9�0Pp)"
'6E(�")pP0(E6'
���@�@@���!!"03!2.17>54&#!!���*<;)�81
//
18�);<*��4�=*��*H	,,	H*3*=�k8�����0=��%7'./#'737>77'>?5'.'"&54632#5'.'7'.'7'.'7'./#'''77737>77'>77'>77'>?"&54632#l)-:	@	:-)FF)-:	@	:-)FF�%%%% C9C'.8
;%@%;
8.'C9CC9C'.8
;%@%;
8.'C9C��:QQ::QQ:�:-)FF)-:	@	:-)FF)-:	@	�%%%%�@%;
8.'C9CC9C'.8
;%@%;
8.'C9CC9C'.8
;%kQ::QQ::Q��3�!2C#";26=4&#!#";26=4&##";26=4&#!#";26=4&#{\+''+\*((*f\*((*\+''+��\+''+\*((*f\*((*\+''+�'+\*((*\+''+\*((*\+'��(*\+''+\*((*\+''+\*(���C"326554.#>7>32#".'.'.'>7j��P�K55K�P��j�^2!KQW,,WQK!22!KQW,,WQK!2�,:!`����%%@�`!:,�
				

				
��)�!"3!2654&#
��



�����-2#"&7463"&7>#"'>323267#}33O:06DD�(,?	
T2g]N(G

G'0aWE�<(2O60(W�Fn$-*B.ZK��%)1E+)����!>7>'.2#"&7463"&?>#"'>323267#�b�GM��ab�GM��a4$-)"!+/{&4<y

+*:p�M��ab�GM��ab�G�$/ 4��)B�
286-�:1��!%%v����v�����(������+6#3!!35#"3!74&#53#54&+"#!5+581381`@ ��� @

��
���&�&����@@��@
��
�x
����@@&&@��@@su�2!!5s��2������*/4!!5!"&5463!2#1"3!2654&#!!!5!!5��0���,??,,?'��,,,,��%�0�0\\��?,,??,��'�,��,,,��\\�\\L��.�_<��C���C��������!����@��@@��)�s
,BPf>N�&��Hr�JJ���R��		z	�	�	�
<!��G$U2
4c		G	$	U		9	
4ciCiconsVersion 1.3iCiconsiCiconsiCiconsRegulariCiconsFont generated by IcoMoon.icicons/fonts/iCicons.svg000060400000043614152455755750011464 0ustar00<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="iCicons" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
<glyph unicode="&#x25b6;" d="M192 832l640-384-640-384z" />
<glyph unicode="&#x25b7;" d="M512 96v320l-320-320v704l320-320v320l352-352z" />
<glyph unicode="&#x25c0;" d="M832 64l-640 384 640 384z" />
<glyph unicode="&#x25c1;" d="M576 800v-320l320 320v-704l-320 320v-320l-352 352z" />
<glyph unicode="&#xe600;" d="M874.040 810.038c96.702-96.704 149.96-225.28 149.96-362.040s-53.258-265.334-149.96-362.038c-96.706-96.702-225.28-149.96-362.040-149.96s-265.334 53.258-362.040 149.96c-96.702 96.704-149.96 225.278-149.96 362.038s53.254 265.336 149.96 362.040c96.706 96.704 225.28 149.962 362.040 149.962s265.334-53.258 362.040-149.962zM828.784 131.214c63.058 63.060 104.986 141.608 122.272 227.062-13.474-19.836-26.362-27.194-34.344 17.206-8.22 72.39-74.708 26.148-116.516 51.86-44.004-29.658-142.906 57.662-126.098-40.824 25.934-44.422 140.008 59.45 83.148-34.542-36.274-65.616-132.642-210.932-120.106-286.258 1.582-109.744-112.134-22.884-151.314 13.52-26.356 72.92-8.982 200.374-77.898 236.086-74.802 3.248-139.004 10.046-167.994 93.67-17.446 59.828 18.564 148.894 82.678 162.644 93.85 58.966 127.374-69.054 215.39-71.434 27.328 28.594 101.816 37.686 107.992 69.75-57.75 10.19 73.268 48.558-5.528 70.382-43.47-5.112-71.478-45.074-48.368-78.958-84.238-19.642-86.936 121.904-167.91 77.258-2.058-70.59-132.222-22.886-45.036-8.572 29.956 13.088-48.86 51.016-6.28 44.124 20.916 1.136 91.332 25.812 72.276 42.402 39.21 24.34 72.16-58.29 110.538 1.882 27.708 46.266-11.62 54.808-46.35 31.356-19.58 21.924 34.57 69.276 82.332 89.738 15.918 6.82 31.122 10.536 42.746 9.484 24.058-27.792 68.55-32.606 70.878 3.342-59.582 28.534-125.276 43.608-193.292 43.608-97.622 0-190.47-31.024-267.308-88.39 20.65-9.46 32.372-21.238 12.478-36.296-15.456-46.054-78.17-107.876-133.224-99.124-28.586-49.296-47.412-103.606-55.46-160.528 46.112-15.256 56.744-45.45 46.836-55.55-23.496-20.488-37.936-49.53-45.376-81.322 15.010-91.836 58.172-176.476 125.27-243.576 84.616-84.614 197.118-131.214 316.784-131.214 119.664 0 232.168 46.6 316.784 131.214z" />
<glyph unicode="&#xe601;" d="M480 896c-265.096 0-480-214.904-480-480 0-265.098 214.904-480 480-480 265.098 0 480 214.902 480 480 0 265.096-214.902 480-480 480zM751.59 256c8.58 40.454 13.996 83.392 15.758 128h127.446c-3.336-44.196-13.624-87.114-30.68-128h-112.524zM208.41 576c-8.58-40.454-13.996-83.392-15.758-128h-127.444c3.336 44.194 13.622 87.114 30.678 128h112.524zM686.036 576c9.614-40.962 15.398-83.854 17.28-128h-191.316v128h174.036zM512 640v187.338c14.59-4.246 29.044-11.37 43.228-21.37 26.582-18.74 52.012-47.608 73.54-83.486 14.882-24.802 27.752-52.416 38.496-82.484h-155.264zM331.232 722.484c21.528 35.878 46.956 64.748 73.54 83.486 14.182 10 28.638 17.124 43.228 21.37v-187.34h-155.264c10.746 30.066 23.616 57.68 38.496 82.484zM448 576v-128h-191.314c1.88 44.146 7.666 87.038 17.278 128h174.036zM95.888 256c-17.056 40.886-27.342 83.804-30.678 128h127.444c1.762-44.608 7.178-87.546 15.758-128h-112.524zM256.686 384h191.314v-128h-174.036c-9.612 40.96-15.398 83.854-17.278 128zM448 192v-187.34c-14.588 4.246-29.044 11.372-43.228 21.37-26.584 18.74-52.014 47.61-73.54 83.486-14.882 24.804-27.75 52.418-38.498 82.484h155.266zM628.768 109.516c-21.528-35.876-46.958-64.746-73.54-83.486-14.184-9.998-28.638-17.124-43.228-21.37v187.34h155.266c-10.746-30.066-23.616-57.68-38.498-82.484zM512 256v128h191.314c-1.88-44.146-7.666-87.040-17.28-128h-174.034zM767.348 448c-1.762 44.608-7.178 87.546-15.758 128h112.524c17.056-40.886 27.344-83.806 30.68-128h-127.446zM830.658 640h-95.9c-18.638 58.762-44.376 110.294-75.316 151.428 42.536-20.34 81.058-47.616 114.714-81.272 21.48-21.478 40.362-44.938 56.502-70.156zM185.844 710.156c33.658 33.658 72.18 60.932 114.714 81.272-30.942-41.134-56.676-92.666-75.316-151.428h-95.898c16.138 25.218 35.022 48.678 56.5 70.156zM129.344 192h95.898c18.64-58.762 44.376-110.294 75.318-151.43-42.536 20.34-81.058 47.616-114.714 81.274-21.48 21.478-40.364 44.938-56.502 70.156zM774.156 121.844c-33.656-33.658-72.18-60.934-114.714-81.274 30.942 41.134 56.678 92.668 75.316 151.43h95.9c-16.14-25.218-35.022-48.678-56.502-70.156z" />
<glyph unicode="&#xe602;" d="M256 896h512v-128h-512zM960 704h-896c-35.2 0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h192v-256h512v256h192c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM704 64h-384v320h384v-320zM974.4 608c0-25.626-20.774-46.4-46.398-46.4-25.626 0-46.402 20.774-46.402 46.4s20.776 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" />
<glyph unicode="&#xe603;" d="M896 832h-96v-32c0-35.29-28.71-64-64-64s-64 28.71-64 64v32h-320v-32c0-35.29-28.71-64-64-64s-64 28.71-64 64v32h-96c-35.2 0-64-28.8-64-64v-704c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v704c0 35.2-28.8 64-64 64zM896 64.116c-0.034-0.040-0.076-0.082-0.116-0.116h-767.77c-0.040 0.034-0.082 0.076-0.114 0.116v575.884h768v-575.884zM288 768c17.672 0 32 14.328 32 32v128c0 17.672-14.328 32-32 32s-32-14.328-32-32v-128c0-17.672 14.328-32 32-32zM736 768c17.672 0 32 14.328 32 32v128c0 17.672-14.328 32-32 32s-32-14.328-32-32v-128c0-17.672 14.328-32 32-32zM576 576h-320v-64h256v-128h-256v-64h256v-128h-256v-64h320zM704 128h64v448h-128v-64h64zM872-24h-720c-35.2 0-64 20.8-64 56v-32c0-35.2 28.8-64 64-64h720c35.2 0 64 28.8 64 64v32c0-35.2-28.8-56-64-56z" />
<glyph unicode="&#xe604;" d="M320 576h128v-128h-128zM512 576h128v-128h-128zM704 576h128v-128h-128zM128 192h128v-128h-128zM320 192h128v-128h-128zM512 192h128v-128h-128zM320 384h128v-128h-128zM512 384h128v-128h-128zM704 384h128v-128h-128zM128 384h128v-128h-128zM832 960v-64h-128v64h-448v-64h-128v64h-128v-1024h960v1024h-128zM896 0h-832v704h832v-704z" />
<glyph unicode="&#xe605;" d="M512 960c-176.732 0-320-143.268-320-320 0-320 320-704 320-704s320 384 320 704c0 176.732-143.27 320-320 320zM512 448c-106.040 0-192 85.96-192 192s85.96 192 192 192 192-85.96 192-192-85.96-192-192-192z" />
<glyph unicode="&#xe606;" d="M893.312 822.24l24.704-90.656c-6.016-51.296-22.016-121.536-47.968-210.88-20.352 47.776-41.504 91.456-63.776 131.2-54.176 21.92-107.52 32.896-159.776 32.896-85.504 0-152.224-25.184-200.16-75.68-48.224-50.688-72.256-110.016-72.256-178.048 0-37.28 10.048-69.376 30.368-96.256 20.032-26.592 58.336-51.264 115.040-74.048 56.992-22.688 128.192-39.808 213.696-51.328 28.448-4.128 57.696-7.328 87.392-9.92 29.952-2.4 62.656-4.416 98.272-5.728 35.584-1.344 68.896-2.048 99.872-2.048l-72.384-94.944c-106.784-19.968-207.616-29.92-302.4-29.92-125.12 0-216.672 24-274.464 71.84-58.368 47.712-87.52 109.696-87.52 185.92 0 84.384 24.224 167.456 72.736 249.216 47.904 81.472 113.664 144.896 197.248 190.080 83.52 45.184 167.168 67.712 251.040 67.712 28-0.032 57.984-3.168 90.336-9.408zM75.968 822.848c54.080-2.464 92.608-7.68 115.552-15.616 22.688-7.936 34.016-23.584 34.016-46.88 0-56.832-22.592-136.544-67.616-239.072-36.672-21.984-75.776-39.456-117.312-52.288 24.64 120.672 36.992 222.688 36.992 306.144 0.032 15.36-0.608 31.232-1.632 47.712zM42.944 428.416c25.536-1.088 46.368-2.624 62.624-4.512 16.32-1.984 28.992-4 37.984-6.144 16.736-4.512 24.992-17.408 24.992-38.912 0-20.864-7.264-41.568-21.664-61.888-14.272-20.672-28.896-31.040-43.968-31.040-22.112 0-54.144 9.12-96 27.328 20.032 47.008 32 85.44 36.032 115.168z" />
<glyph unicode="&#xe607;" d="M896 960h-896v-1024h1024v896l-128 128zM512 832h128v-256h-128v256zM896 64h-768v768h64v-320h576v320h74.978l53.022-53.018v-714.982z" />
<glyph unicode="&#xe608;" d="M832 512h-64v192c0 141.384-114.616 256-256 256s-256-114.616-256-256v-192h-64c-35.2 0-64-28.8-64-64v-448c0-35.2 28.8-64 64-64h640c35.2 0 64 28.8 64 64v448c0 35.2-28.8 64-64 64zM512 128c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zM640 512h-256v192c0 70.58 57.42 128 128 128s128-57.42 128-128v-192z" />
<glyph unicode="&#xe609;" d="M448 165.49l-205.254 237.254 58.508 58.51 146.746-114.744 274.744 242.744 58.512-58.508zM831.772 832c0.078-0.066 0.162-0.15 0.228-0.23v-767.542c-0.066-0.078-0.15-0.162-0.228-0.228h-639.544c-0.080 0.066-0.162 0.15-0.228 0.228v767.544c0.066 0.080 0.15 0.162 0.23 0.228h-128.23v-768c0-70.4 57.6-128 128-128h640c70.4 0 128 57.6 128 128v768h-128.228zM640 832v64c0 35.346-28.654 64-64 64h-128c-35.346 0-64-28.654-64-64v-64h-128v-128h512v128h-128zM576 832h-128v64h128v-64z" />
<glyph unicode="&#xe60a;" d="M0 448c0-282.77 229.23-512 512-512 282.772 0 512 229.23 512 512s-229.228 512-512 512c-282.77 0-512-229.23-512-512zM896 448c0-73.236-20.512-141.68-56.088-199.912l-527.822 527.824c58.23 35.578 126.674 56.088 199.91 56.088 212.076 0 384-171.922 384-384zM128 448c0 73.236 20.512 141.678 56.090 199.912l527.822-527.824c-58.234-35.578-126.676-56.088-199.912-56.088-212.076 0-384 171.922-384 384z" />
<glyph unicode="&#xe60b;" d="M976-64h-672c-26.51 0-48 21.49-48 48 0 68.862 29.068 152.204 77.758 222.942 40.692 59.118 90.684 103.62 144.678 129.61-23.798 21.644-44.294 48.026-60.508 78.122-26 48.262-39.746 104.048-39.746 161.328 0 79.606 26.204 154.822 73.786 211.79 49.664 59.46 116.442 92.208 188.032 92.208s138.368-32.748 188.034-92.21c47.58-56.968 73.786-132.182 73.786-211.79 0-57.28-13.744-113.066-39.744-161.328-16.214-30.096-36.71-56.478-60.51-78.122 53.994-25.99 103.986-70.492 144.678-129.61 48.688-70.736 77.756-154.078 77.756-222.94 0-26.51-21.49-48-48-48zM358.074 32h563.852c-9.226 39.34-28.52 82.384-54.762 120.51-41.454 60.226-93.176 99.622-145.638 110.926-22.106 4.764-37.888 24.31-37.888 46.924v34.292c0 17.26 9.266 33.19 24.27 41.722 59.478 33.832 97.912 108.266 97.912 189.626 0 114.692-74.384 208-165.818 208s-165.818-93.308-165.818-208c0-81.36 38.434-155.792 97.914-189.626 15.002-8.534 24.268-24.462 24.268-41.722v-34.292c0-22.614-15.784-42.16-37.888-46.924-52.462-11.304-104.184-50.7-145.64-110.926-26.246-38.126-45.536-81.17-54.764-120.51zM197.114 96h-95.040c9.228 39.34 28.518 82.384 54.76 120.51 41.456 60.226 93.178 99.622 145.64 110.926 22.106 4.764 37.888 24.31 37.888 46.924v34.292c0 17.26-9.266 33.19-24.268 41.722-59.48 33.834-97.914 108.266-97.914 189.626 0 114.692 74.384 208 165.818 208 6.254 0 12.426-0.452 18.502-1.302 26.358 29.334 56.234 53.174 88.642 71.004-33.192 17.232-69.5 26.298-107.142 26.298-71.59 0-138.368-32.748-188.034-92.21-47.58-56.968-73.784-132.184-73.784-211.79 0-57.28 13.744-113.066 39.746-161.328 16.214-30.096 36.71-56.476 60.508-78.122-53.994-25.99-103.986-70.492-144.678-129.61-48.69-70.736-77.758-154.078-77.758-222.94 0-26.51 21.49-48 48-48h132.386c1.476 31.026 7.198 63.412 16.728 96z" />
<glyph unicode="&#xe60c;" d="M128 704v-640h896v640h-896zM960 170.666l-128 213.334-145.066-120.888-110.934 184.888-384-320v512h768v-469.334zM256 480c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM896 832h-896v-640h64v576h832z" />
<glyph unicode="&#xe60d;" d="M512 832c-247.424 0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448-200.576 448-448 448zM512 24c-198.824 0-360 161.178-360 360 0 198.824 161.176 360 360 360 198.822 0 360-161.176 360-360 0-198.822-161.178-360-360-360zM934.784 672.826c16.042 28.052 25.216 60.542 25.216 95.174 0 106.040-85.96 192-192 192-61.818 0-116.802-29.222-151.92-74.596 131.884-27.236 245.206-105.198 318.704-212.578zM407.92 885.404c-35.116 45.374-90.102 74.596-151.92 74.596-106.040 0-192-85.96-192-192 0-34.632 9.174-67.122 25.216-95.174 73.5 107.38 186.822 185.342 318.704 212.578zM448 640h64v-320h-64v320zM512 384h192v-64h-192v64z" />
<glyph unicode="&#xe60e;" d="M921.6 898.56h-819.2c-56.32 0-102.4-46.080-102.4-102.4v-563.2c0-56.32 45.158-111.462 100.403-122.522l223.846-44.749c0 0-192.666-68.25-68.25-68.25h512c124.416 0-68.25 68.25-68.25 68.25l223.846 44.749c55.194 11.059 100.403 66.202 100.403 122.522v563.2c0 56.32-46.080 102.4-102.4 102.4zM921.6 238.080h-819.2v568.32h819.2v-568.32z" />
<glyph unicode="&#xe60f;" d="M363.722 237.948l41.298 57.816-45.254 45.256-57.818-41.296c-10.722 5.994-22.204 10.774-34.266 14.192l-11.682 70.084h-64l-11.68-70.086c-12.062-3.418-23.544-8.198-34.266-14.192l-57.818 41.298-45.256-45.256 41.298-57.816c-5.994-10.72-10.774-22.206-14.192-34.266l-70.086-11.682v-64l70.086-11.682c3.418-12.060 8.198-23.544 14.192-34.266l-41.298-57.816 45.254-45.256 57.818 41.296c10.722-5.994 22.204-10.774 34.266-14.192l11.682-70.084h64l11.68 70.086c12.062 3.418 23.544 8.198 34.266 14.192l57.818-41.296 45.254 45.256-41.298 57.816c5.994 10.72 10.774 22.206 14.192 34.266l70.088 11.68v64l-70.086 11.682c-3.418 12.060-8.198 23.544-14.192 34.266zM224 96c-35.348 0-64 28.654-64 64s28.652 64 64 64 64-28.654 64-64-28.652-64-64-64zM1024 576v64l-67.382 12.25c-1.242 8.046-2.832 15.978-4.724 23.79l57.558 37.1-24.492 59.128-66.944-14.468c-4.214 6.91-8.726 13.62-13.492 20.13l39.006 56.342-45.256 45.254-56.342-39.006c-6.512 4.766-13.22 9.276-20.13 13.494l14.468 66.944-59.128 24.494-37.1-57.558c-7.812 1.892-15.744 3.482-23.79 4.724l-12.252 67.382h-64l-12.252-67.382c-8.046-1.242-15.976-2.832-23.79-4.724l-37.098 57.558-59.128-24.492 14.468-66.944c-6.91-4.216-13.62-8.728-20.13-13.494l-56.342 39.006-45.254-45.254 39.006-56.342c-4.766-6.51-9.278-13.22-13.494-20.13l-66.944 14.468-24.492-59.128 57.558-37.1c-1.892-7.812-3.482-15.742-4.724-23.79l-67.384-12.252v-64l67.382-12.25c1.242-8.046 2.832-15.978 4.724-23.79l-57.558-37.1 24.492-59.128 66.944 14.468c4.216-6.91 8.728-13.618 13.494-20.13l-39.006-56.342 45.254-45.256 56.342 39.006c6.51-4.766 13.22-9.276 20.13-13.492l-14.468-66.944 59.128-24.492 37.102 57.558c7.81-1.892 15.742-3.482 23.788-4.724l12.252-67.384h64l12.252 67.382c8.044 1.242 15.976 2.832 23.79 4.724l37.1-57.558 59.128 24.492-14.468 66.944c6.91 4.216 13.62 8.726 20.13 13.492l56.342-39.006 45.256 45.256-39.006 56.342c4.766 6.512 9.276 13.22 13.492 20.13l66.944-14.468 24.492 59.13-57.558 37.1c1.892 7.812 3.482 15.742 4.724 23.79l67.382 12.25zM672 468.8c-76.878 0-139.2 62.322-139.2 139.2s62.32 139.2 139.2 139.2 139.2-62.322 139.2-139.2c0-76.878-62.32-139.2-139.2-139.2z" />
<glyph unicode="&#xe610;" d="M378.88 755.2h-92.16c-56.32 0-81.92-25.6-81.92-81.92v-92.16c0-56.32 25.6-81.92 81.92-81.92h92.16c56.32 0 81.92 25.6 81.92 81.92v92.16c0 56.32-25.6 81.92-81.92 81.92zM737.28 755.2h-92.16c-56.32 0-81.92-25.6-81.92-81.92v-92.16c0-56.32 25.6-81.92 81.92-81.92h92.16c56.32 0 81.92 25.6 81.92 81.92v92.16c0 56.32-25.6 81.92-81.92 81.92zM378.88 396.8h-92.16c-56.32 0-81.92-25.6-81.92-81.92v-92.16c0-56.32 25.6-81.92 81.92-81.92h92.16c56.32 0 81.92 25.6 81.92 81.92v92.16c0 56.32-25.6 81.92-81.92 81.92zM737.28 396.8h-92.16c-56.32 0-81.92-25.6-81.92-81.92v-92.16c0-56.32 25.6-81.92 81.92-81.92h92.16c56.32 0 81.92 25.6 81.92 81.92v92.16c0 56.32-25.6 81.92-81.92 81.92z" />
<glyph unicode="&#xe611;" d="M512 960c-282.77 0-512-71.634-512-160v-96l384-384v-320c0-35.346 57.306-64 128-64 70.692 0 128 28.654 128 64v320l384 384v96c0 88.366-229.23 160-512 160zM94.384 821.176c23.944 13.658 57.582 26.62 97.278 37.488 87.944 24.076 201.708 37.336 320.338 37.336 118.628 0 232.394-13.26 320.338-37.336 39.696-10.868 73.334-23.83 97.28-37.488 15.792-9.006 24.324-16.624 28.296-21.176-3.972-4.552-12.506-12.168-28.296-21.176-23.946-13.658-57.584-26.62-97.28-37.488-87.942-24.076-201.708-37.336-320.338-37.336s-232.394 13.26-320.338 37.336c-39.696 10.868-73.334 23.83-97.278 37.488-15.792 9.008-24.324 16.624-28.298 21.176 3.974 4.552 12.506 12.168 28.298 21.176z" />
<glyph unicode="&#xe612;" d="M778.189 499.2h-532.429c-28.314 0-30.72-22.938-30.72-51.2s2.406-51.2 30.72-51.2h532.429c28.314 0 30.771 22.938 30.771 51.2s-2.458 51.2-30.771 51.2z" />
<glyph unicode="&#xe613;" d="M636.518 960c68.608 0 102.912-46.797 102.912-100.25 0-66.765-59.597-128.563-137.114-128.563-65.024 0-102.912 38.4-101.12 101.837 0 53.504 45.056 126.976 135.322 126.976zM425.421-64c-54.17 0-93.85 33.382-55.962 180.378l62.157 260.659c10.803 41.728 12.595 58.47 0 58.47-16.282 0-86.528-28.826-128.102-57.242l-27.034 45.107c131.738 111.923 283.238 177.51 348.211 177.51 54.118 0 63.078-65.126 36.096-165.325l-71.219-274.022c-12.595-48.435-7.219-65.126 5.376-65.126 16.282 0 69.478 20.122 121.805 61.85l30.72-41.728c-128.051-130.355-267.93-180.531-322.048-180.531z" />
<glyph unicode="&#xe614;" d="M505.702 918.989c-260.096-3.482-468.173-217.19-464.691-477.338 3.482-259.994 217.19-468.122 477.286-464.64s468.173 217.19 464.691 477.338c-3.43 260.045-217.19 468.122-477.286 464.64zM557.926 762.010c47.872 0 62.003-27.75 62.003-59.546 0-39.68-31.795-76.39-86.016-76.39-45.363 0-66.918 22.835-65.638 60.518 0 31.795 26.624 75.418 89.651 75.418zM435.149 153.6c-32.717 0-56.678 19.866-33.792 107.213l37.53 154.829c6.502 24.832 7.578 34.765 0 34.765-9.779 0-52.275-17.152-77.414-34.048l-16.333 26.778c79.616 66.458 171.162 105.472 210.381 105.472 32.717 0 38.144-38.707 21.811-98.253l-43.008-162.816c-7.578-28.774-4.301-38.707 3.277-38.707 9.779 0 41.984 11.878 73.626 36.762l18.483-24.832c-77.363-77.363-161.792-107.162-194.56-107.162z" />
<glyph unicode="&#xe615;" d="M0 448l373.76-235.52v470.989l-373.76-235.469zM1024 448.051l-373.76 235.469-0.051-471.040 373.811 235.571z" />
<glyph unicode="&#xe616;" d="M864 832h-64v-64h32v-512h-256v-256h-384v768h32v64h-64c-17.602 0-32-14.4-32-32v-832c0-17.6 14.398-32 32-32h504l232 232v632c0 17.6-14.4 32-32 32zM640 0v192h192l-192-192zM768 832h-128v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-128v-128h512v128zM576 832h-128v63.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886z" />
<glyph unicode="&#xe617;" d="M115.328 818.336h793.344v-189.44h-793.344v189.44z" />
<glyph unicode="&#xe618;" d="M152.128 528.928h719.744v-91.552h-719.744v91.552zM908.576-56.064h-793.184c-59.264 0-107.488 48.224-107.488 107.488v793.184c0 59.264 48.224 107.488 107.488 107.488h793.184c59.264 0 107.456-48.224 107.456-107.488v-793.184c0.032-28.736-11.168-55.744-31.424-76.032s-47.296-31.456-76.032-31.456v0zM115.392 920.096c-41.632 0-75.488-33.856-75.488-75.488v-793.184c0-41.632 33.856-75.488 75.488-75.488h793.184c41.632 0 75.488 33.888 75.488 75.488l-0.032 793.184c0 41.632-33.856 75.488-75.456 75.488h-793.184zM152.128 342.656h719.744v-91.52h-719.744v91.52zM152.128 160.512h719.744v-91.52h-719.744v91.52z" />
</font></defs></svg>icicons/fonts/iCicons.eot000060400000014510152455755750011445 0ustar00H��LP�.�iCiconsRegularVersion 1.3iCicons�0OS/2/B�`cmap@-�6\gaspxglyf���~�xhead��R�6hhea��0$hmtxv	T�locaM�R.�Dmaxp3� nameT�O�<Epost� �������3	 @����@�@ H %�%������ %�%���������N�F��797979�@@@	����@�����`` %��@``@�����@���@@@%	@���@���`� @@���� ��@�@@��`���(�#".'.54>7>32>7'&'&6&'.'.'&676>7&6'&&76&>'676&&67>7.#"'32>7j$8&&8$$T\c33c\T$$8&&8$$T\c33c\T$-/>
O !j
j+
-({48Z
00FOBS+a< !?,=mA= F4)=$4,b3I�9Q)#@2 IQV--VQI *$T\c33c\T$$8&&8$$T\c33c\T$$8&&8$�Y0s@!77I"EFJQNSE7�?-k,r.2}!5!
'
>-#:-+"G%Q*$*E|3 0""0 ����&-9ELU\ht{�����"32>54.#>73##>73!#53'5#'>7>7#>7#>73.'3#73#.'.'.'.'353'53#7.'3#7#.'%>7#>73.'.'>73�c��KK��cc��KK��c�
p���
p�	���
&��&
�u�	���
�p���	�
&��&
�u�	��p
�@`& :�{: &`9`& :�: &`�K��cc��KK��cc��K��A!!@@A!!@@!�@�+)R+�)��!@��@!!A��@!��+)R+�)��!@�!A@!�,M)#F)M,#��,M)#F)M,#�*!!!";!32654&#!!#"&54632����&&��&&������@&��&�&@&��@�� @����"-<KW]n##"&=!#"&=#"3!2654&#81!81!26=4&#"3!26=4&#"3!!!!!!;#3!"&53!26=#�`&&��&&`&&&&���



�



�����@�@�@��0&&�&&@ &&  && &�@&&�&�@���
�

�

�

�
�@�@�@�@�� && ����#'493#73#73#3#73#73#3#73#73#%3##5!#5#!#!!@����������������������������������@����@��@@�����������@��������@@@@��@��@���@�!"10>54.#"&54632#BuW2dxddxd2WuBPppPPppP�2WuBx�̂��xBuW2�pPPppPPpC�@8Ka.'.#"3#"&'.5467>7>32%>54&'2#"&'>7} (P(@d$$$:*+k@+11IP�G^�,+,$%$b??}?-��)9"":!

06Z'iC$A&&&Y30%	_$$$\:?}==_"""*xM
Z�>
�u
$9���
!!'3#!3!3����������@@K5���������@5�5�����*4#54.#"#"3!2654&#"&54632#!54632@@(F]55]F(@&&�&&��%%%%��K55K�5]F((F]5�&�@&&�&��%%%%��5KK5�@���� /4%'7%8181!8181#3!265##54&+"#!5#+53��:�:3���K5�5K��%�%��@����:r�:-��5KK5@%%@��@@���!.32>54.#"!>32!467#".5P��jj��PP��jj��P���,e7P�i<�,e7P�i<�j��PP��jj��PP��j7e,<i�P7e,��<i�P���+S�!"&5467>7.'.5467>32#%!.'.'.=467>54&#"'#>7>7>=4&'.546323>7.#";>7�`)%J(&$%a66a%$&(J%)��4K'
-5aEEa5-
'K�_K'
-5aE	-66a%$&(J%)�	@4v5,B'$R+<m+,00,+m<+R$'B,5v4`>-9#
g=VzzV=g
#9->@>-9#
g=Vz#

0,+m<+R$'B,5v41@@!!''!4632#"&5!3!����@��o���@8((88((8���@@�������y����+5(88((88(`��@@����)8GLQ"32>54.#".54>32#>54&#"%.#">73#3#5]�zFFz�]]�zFFz�]K�a99a�KK�a99a�K�
pP.P2[QE��P.Pp
EQ[2(@@@��@Fz�]]�zFFz�]]�zF��9a�KK�a99a�KK�a9�0Pp)"
'6E(�")pP0(E6'
���@�@@���!!"03!2.17>54&#!!���*<;)�81
//
18�);<*��4�=*��*H	,,	H*3*=�k8�����0=��%7'./#'737>77'>?5'.'"&54632#5'.'7'.'7'.'7'./#'''77737>77'>77'>77'>?"&54632#l)-:	@	:-)FF)-:	@	:-)FF�%%%% C9C'.8
;%@%;
8.'C9CC9C'.8
;%@%;
8.'C9C��:QQ::QQ:�:-)FF)-:	@	:-)FF)-:	@	�%%%%�@%;
8.'C9CC9C'.8
;%@%;
8.'C9CC9C'.8
;%kQ::QQ::Q��3�!2C#";26=4&#!#";26=4&##";26=4&#!#";26=4&#{\+''+\*((*f\*((*\+''+��\+''+\*((*f\*((*\+''+�'+\*((*\+''+\*((*\+'��(*\+''+\*((*\+''+\*(���C"326554.#>7>32#".'.'.'>7j��P�K55K�P��j�^2!KQW,,WQK!22!KQW,,WQK!2�,:!`����%%@�`!:,�
				

				
��)�!"3!2654&#
��



�����-2#"&7463"&7>#"'>323267#}33O:06DD�(,?	
T2g]N(G

G'0aWE�<(2O60(W�Fn$-*B.ZK��%)1E+)����!>7>'.2#"&7463"&?>#"'>323267#�b�GM��ab�GM��a4$-)"!+/{&4<y

+*:p�M��ab�GM��ab�G�$/ 4��)B�
286-�:1��!%%v����v�����(������+6#3!!35#"3!74&#53#54&+"#!5+581381`@ ��� @

��
���&�&����@@��@
��
�x
����@@&&@��@@su�2!!5s��2������*/4!!5!"&5463!2#1"3!2654&#!!!5!!5��0���,??,,?'��,,,,��%�0�0\\��?,,??,��'�,��,,,��\\�\\L��.�_<��C���C��������!����@��@@��)�s
,BPf>N�&��Hr�JJ���R��		z	�	�	�
<!��G$U2
4c		G	$	U		9	
4ciCiconsVersion 1.3iCiconsiCiconsiCiconsRegulariCiconsFont generated by IcoMoon.icicons/index.html000060400000000054152455755750010207 0ustar00<html><body bgcolor="#FFFFFF"></body></html>icicons/style.css000060400000006676152455755750010104 0ustar00/**
 *------------------------------------------------------------------------------
 *  iCicons font by Jooml!C
 *------------------------------------------------------------------------------
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version 	3.5.4 2015-04-03
 * @since       3.2.2
 *------------------------------------------------------------------------------
*/

@font-face {
	font-family: 'iCicons';
	src:url('../../../media/com_icagenda/icicons/fonts/iCicons.eot');
	src:url('../../../media/com_icagenda/icicons/fonts/iCicons.eot?#iefix') format('embedded-opentype'),
		url('../../../media/com_icagenda/icicons/fonts/iCicons.woff') format('woff'),
		url('../../../media/com_icagenda/icicons/fonts/iCicons.ttf') format('truetype'),
		url('../../../media/com_icagenda/icicons/fonts/iCicons.svg#iCicons') format('svg');
	font-weight: normal;
	font-style: normal;
}
[data-icon]:before {
	font-family: 'iCicons';
	content: attr(data-icon);
	speak: none;
}
[class^="iCicon-"], [class*=" iCicon-"] {
	font-family: 'iCicons';
	display: inline-block;
/*	width: 14px;
	height: 14px;
	margin-right: .25em;
	line-height: 14px; */
	font-weight: normal;
	font-variant: normal;
	text-transform: none;
	line-height: 1;

	/* Better Font Rendering =========== */
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
[class^="iCicon-"]:before,
[class*=" iCicon-"]:before {
	font-family: 'iCicons';
	font-style: normal;
	speak: none;
}
[class^="iCicon-"].disabled,
[class*=" iCicon-"].disabled {
	font-weight: normal;
}

.iCicon-header-before:before {
	content: "\e618";
}
.iCicon-header-after:before {
	content: "\e617";
}
.iCicon-thumbs:before {
	content: "\e60c";
}
.iCicon-form:before {
	content: "\e616";
}
.iCicon-location:before {
	content: "\e605";
}
.iCicon-clock:before {
	content: "\e60d";
}
.iCicon-calendar:before {
	content: "\e604";
}
.iCicon-calendar-2:before {
	content: "\e603";
}
.iCicon-print:before {
	content: "\e602";
}
.iCicon-disk:before {
	content: "\e607";
}
.iCicon-people:before {
	content: "\e60b";
}
.iCicon-private:before {
	content: "\e608";
}
.iCicon-options:before {
	content: "\e60f";
}
.iCicon-register:before {
	content: "\e609";
}
.iCicon-timezone:before {
	content: "\e601";
}
.iCicon-earth:before {
	content: "\e600";
}
.iCicon-blocked:before {
	content: "\e60a";
}
.iCicon-nextic:before {
	content: "\25b6";
}
.iCicon-backic:before {
	content: "\25c0";
}
.iCicon-backicY:before {
	content: "\25c1";
}
.iCicon-nexticY:before {
	content: "\25b7";
}
.iCicon-filter:before {
	content: "\e611";
}
.iCicon-screen:before {
	content: "\e60e";
}
.iCicon-minus:before {
	content: "\e612";
}
.iCicon-info:before {
	content: "\e613";
}
.iCicon-info-circle:before {
	content: "\e614";
}
.iCicon-icons:before {
	content: "\e610";
}
.iCicon-navigation:before {
	content: "\e615";
}

/* BI-COLOR ICONS */
.iCicon-bi-color-header:before {
	content: "\e618";
	letter-spacing: -1em;
	color: #bebebe;
}
.iCicon-bi-color-header:after {
	content: "\e617";
	color: #ca0000;
}

/* ONE-COLOR ICONS */
.iCicon-iclogo:before {
	content: "\e606";
	color: #990000;
}

/* ADDITIONAL STYLES */
.iCicon-info-circle:active,
.iCicon-info-circle:hover,
.iCicon-info-circle:focus {
	text-decoration: none !important;
	background: none;
	text-shadow:0px 0px 5px rgba(0,0,0,0.3);;
	cursor: help;
}
icicons/ie7/ie7.css000060400000005615152455755750010104 0ustar00.iCicon-header-before {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe618;');
}
.iCicon-header-after {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe617;');
}
.iCicon-iclogo {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe606;');
}
.iCicon-thumbs {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60c;');
}
.iCicon-form {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe616;');
}
.iCicon-location {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe605;');
}
.iCicon-clock {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60d;');
}
.iCicon-calendar {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe604;');
}
.iCicon-calendar-2 {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe603;');
}
.iCicon-print {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe602;');
}
.iCicon-disk {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe607;');
}
.iCicon-people {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60b;');
}
.iCicon-private {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe608;');
}
.iCicon-options {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60f;');
}
.iCicon-register {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe609;');
}
.iCicon-timezone {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe601;');
}
.iCicon-earth {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe600;');
}
.iCicon-blocked {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60a;');
}
.iCicon-nextic {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x25b6;');
}
.iCicon-backic {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x25c0;');
}
.iCicon-backicY {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x25c1;');
}
.iCicon-nexticY {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#x25b7;');
}
.iCicon-filter {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe611;');
}
.iCicon-screen {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe60e;');
}
.iCicon-minus {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe612;');
}
.iCicon-info {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe613;');
}
.iCicon-info-circle {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe614;');
}
.iCicon-icons {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe610;');
}
.iCicon-navigation {
	*zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe615;');
}
icicons/ie7/ie7.js000060400000003222152455755750007720 0ustar00/* To avoid CSS expressions while still supporting IE 7 and IE 6, use this script */
/* The script tag referring to this file must be placed before the ending body tag. */

/* Use conditional comments in order to target IE 7 and older:
	<!--[if lt IE 8]><!-->
	<script src="ie7/ie7.js"></script>
	<!--<![endif]-->
*/

(function() {
	function addIcon(el, entity) {
		var html = el.innerHTML;
		el.innerHTML = '<span style="font-family: \'iCicons\'">' + entity + '</span>' + html;
	}
	var icons = {
		'iCicon-header-before': '&#xe618;',
		'iCicon-header-after': '&#xe617;',
		'iCicon-iclogo': '&#xe606;',
		'iCicon-thumbs': '&#xe60c;',
		'iCicon-form': '&#xe616;',
		'iCicon-location': '&#xe605;',
		'iCicon-clock': '&#xe60d;',
		'iCicon-calendar': '&#xe604;',
		'iCicon-calendar-2': '&#xe603;',
		'iCicon-print': '&#xe602;',
		'iCicon-disk': '&#xe607;',
		'iCicon-people': '&#xe60b;',
		'iCicon-private': '&#xe608;',
		'iCicon-options': '&#xe60f;',
		'iCicon-register': '&#xe609;',
		'iCicon-timezone': '&#xe601;',
		'iCicon-earth': '&#xe600;',
		'iCicon-blocked': '&#xe60a;',
		'iCicon-nextic': '&#x25b6;',
		'iCicon-backic': '&#x25c0;',
		'iCicon-backicY': '&#x25c1;',
		'iCicon-nexticY': '&#x25b7;',
		'iCicon-filter': '&#xe611;',
		'iCicon-screen': '&#xe60e;',
		'iCicon-minus': '&#xe612;',
		'iCicon-info': '&#xe613;',
		'iCicon-info-circle': '&#xe614;',
		'iCicon-icons': '&#xe610;',
		'iCicon-navigation': '&#xe615;',
		'0': 0
		},
		els = document.getElementsByTagName('*'),
		i, c, el;
	for (i = 0; ; i += 1) {
		el = els[i];
		if(!el) {
			break;
		}
		c = el.className;
		c = c.match(/iCicon-[^\s'"]+/);
		if (c && icons[c[0]]) {
			addIcon(el, icons[c[0]]);
		}
	}
}());
css/icagenda.css000060400000004476152455755750007634 0ustar00/**
 *------------------------------------------------------------------------------
 *	CSS Common - iCagenda v3 by Jooml!C
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.4 2015-04-02
 * @since       3.5.0
 *------------------------------------------------------------------------------
*/

/* -- IC TEXT CHARACTERS COUNTER -------------------- */
.ic-counter-container {
	display: block;
	text-align: right;
	vertical-align: bottom !important;
	color: #777;
	font-size: 0.9em;
}
.ic-counter {
	display: inline-block;
}
.ic-counter input {
	width: auto !important;
	float: none !important; /* admin j2.5 */
	vertical-align: bottom !important;
	padding: 0 !important;
	margin: 0 !important;
	text-align: right !important;
	background: none !important;
	border: none !important;
	box-shadow: none !important;
	font-size: 1em;
}
.ic-counter-limit {
	font-weight: bold;
	color: red;
}

/* -- GOOGLE MAPS ----------------------------------- */
.map-wrapper {
	float:left;
	width: 92%;
	margin: 0 10px 0 10px;
}
#map {
	border: 1px solid #DDD;
	width: 100%;
	height: 300px;
	margin: 10px 0 10px 0;
	-webkit-box-shadow: #AAA 0px 0px 15px;
}
/* Fixed Known conflict Bootstrap/Google Maps */
#map img {
	max-width: none;
}
#legend {
	font-size: 12px;
	font-style: italic;
}
.icmap-box {
	margin-top: 30px;
}
/* For img in the map remove borders, shadow, no margin and no max-width */
.map img, .svPanel img {
    border: 0px;
    box-shadow: none;
    margin: 0px !important;
    padding: 0px !important;
    max-width: none !important;
    background: none !important;
}
/* Fixed Known conflict Bootstrap/Google Maps (joomla 3.2) */
.icagenda_map img {
	max-width: none;
}
/* Make sure the directions are below the map */
.directions {
    clear: left;
}
.adp-directions {
    width: 100%;
}
/* Solve problems in chrome with the show of the direction steps in full width */
.adp-placemark {
    width : 100%;
}
/* Padding for image overlay */
.controlDiv {
    padding : 5px;
}
.google-map-canvas,
.google-map-canvas * { .box-sizing(content-box); }
css/icagenda-back.css000060400000035246152455755750010531 0ustar00/**
 *------------------------------------------------------------------------------
 *	CSS Backend - iCagenda v3 by Jooml!C
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.4 2015-04-02
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/


/* -- GOOGLE MAPS FIELDS ---------------------------- */
.icmap-label {
	float: left;
	width: 140px;
	padding-top: 5px;
	padding-right: 5px;
	text-align: left;
}
.icmap-field {
	margin: 5px;
}
.form-validate .icmap-field input,
.icagenda_form .icmap-field input {
	background-color: #eee;
/*	width: auto; */
	color: #777;
}

/* -- FORM FIELD INVALID ---------------------------- */
.ic-field-invalid label{
/*	color: #9D261D; */
	color: red !important;
	font-weight: bold;
}
.ic-field-invalid input{
	border: 1px solid red !important;
}

.ic-field-invalid-lbl{
/*	color: #9D261D; */
	color: red !important;
	font-weight: bold;
}
.ic-field-invalid-input{
	border: 1px solid red !important;
}

.ic-date-invalid {
	color: red !important;
}
.ic-date-invalid input{
	color: red !important;
}

/* -- ALERT MESSAGES AND NOTICES -------------------- */
.ic-alert {
	padding: 8px 14px 8px 14px;
	margin-bottom: 18px;
	text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5);
	background-color: #FCF8E3;
	border: 1px solid #FBEED5;
	border-radius: 4px;
}
.ic-alert-note {
    background-color: #FAFAFA;
    border-color: #CCC;
	color: #777;
}

/* -- CSS TO BE CHECKED ----------------------------- */

#hidden {
	display: none;
	}

/** header **/

.container{
	width: 100%;
	position: relative;
}
.clr{
	clear: both;
	padding: 0;
	height: 0;
	margin: 0;
}
.container > header{
	margin: 10px;
	padding: 20px 10px 10px 10px;
	position: relative;
	display: block;
	text-shadow: 1px 1px 1px rgba(0,0,0,0.2);
    text-align: center;
}
.container > header h1{
	font-size: 40px;
	line-height: 40px;
	margin: 0;
	position: relative;
	font-weight: 300;
	/* color: #128680; */
	color: #777777;
	text-shadow: 1px 1px 1px rgba(255,255,255,0.7);
}
.container > header h1 span{
	font-weight: 700;
}
.container > header h2{
	font-size: 14px;
	font-weight: 300;
	margin: 0;
	padding: 15px 0 5px 0;
	/* color: #7c8e8d; */
	color: #888;
	font-family: Cambria, Georgia, serif;
	font-style: italic;
	text-shadow: 1px 1px 1px rgba(255,255,255,0.9);
}
/* Header Style */
.iCheader-top{
	line-height: 24px;
	font-size: 11px;
	background: #fff;
	background: rgba(255, 255, 255, 0.6);
	text-transform: uppercase;
	/*z-index: 9999;*/
	position: relative;
	font-family: Cambria, Georgia, serif;
	box-shadow: 1px 0px 2px rgba(0,0,0,0.2);
}
.iCheader-top a{
	padding: 0px 10px;
	letter-spacing: 1px;
	color: #333;
	display: inline-block;
}
.iCheader-top a:hover{
	background: rgba(255,255,255,0.3);
}
.iCheader-top span.right{
	float: right;
}
.iCheader-top span.right a{
	float: left;
	display: block;
}
/* Tutorial Videos Buttons Style */
.iCheader-videos{
    text-align:center;
	display: block;
	line-height: 30px;
	padding: 5px 0px;
}
.iCheader-videos a{
    display: inline-block;
	margin: 0px 4px;
	padding: 0px 6px;
	color: #aaa;
	line-height: 20px;
	font-size: 13px;
	text-shadow: 1px 1px 1px #fff;
	border: 1px solid #ddd;
	background: #ffffff; /* Old browsers */
	background: -moz-linear-gradient(top, #ffffff 0%, #f6f6f6 47%, #ededed 100%); /* FF3.6+ */
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(47%,#f6f6f6), color-stop(100%,#ededed)); /* Chrome,Safari4+ */
	background: -webkit-linear-gradient(top, #ffffff 0%,#f6f6f6 47%,#ededed 100%); /* Chrome10+,Safari5.1+ */
	background: -o-linear-gradient(top, #ffffff 0%,#f6f6f6 47%,#ededed 100%); /* Opera 11.10+ */
	background: -ms-linear-gradient(top, #ffffff 0%,#f6f6f6 47%,#ededed 100%); /* IE10+ */
	background: linear-gradient(top, #ffffff 0%,#f6f6f6 47%,#ededed 100%); /* W3C */
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ededed',GradientType=0 ); /* IE6-9 */
	box-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
}
.iCheader-videos a:hover{
	color: #333;
	box-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
}
.iCheader-videos a:active{
	background: #fff;
}
.iCheader-videos a.current-demo,
.iCheader-videos a.current-demo:hover{
	background: #f6f6f6;
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f6f6f6', endColorstr='#f6f6f6',GradientType=0 ); /* IE6-9 */
}



/** general **/
.clr {
	clear:both;
}

.iC-italic-grey {
	font-style: italic;
	color: #777
}

.iCflag {
	padding: 0px !important;
	margin-bottom: 3px;
}

.iCleft {
	text-align: left;
}


.locandina img {
	background:#dedede;
	padding:5px;
	border:1px solid #ccc;
	max-width:150px;
	max-height:200px;
}
.icon-48-events {
	background-image: url(../media/com_icagenda/images/icon48event.png);
}

icon48icagenda {
	background-image: none;
}

/**
 * ChangeLog
 **/

/* Header H3 */
h3.ic-changelog { margin-top: 20pt; font-size: 13pt; }
h3.ic-changelog-pro { color: #990000; margin-top: 20pt; font-size: 13pt; }

/* Header H4 */
h4.ic-changelog { border-bottom: 1px solid #ccc; color: #333; margin-top: 15pt; font-size: 10pt; }

/* Global */
ul.ic-changelog { list-style-type: none; padding: 7px; margin: 3px; font-size: 10pt; border: thin solid #ccc; background-color: #fefefe; border-radius: 5px; }
ul.ic-changelog li { line-height: 16px; padding: 0; margin: 3px 0 0 0; }

/* Info */
.ic-message-info { color:#fff; list-style-type: none; padding: 7px; margin: 10px 3px 20px 3px; font-size: 9pt; background-color: #578AD6; border-radius: 5px; }

/* legend */
.ic-box {
	line-height: 9px;
	display: inline-block;
	*display: inline;
	*zoom: 1;
    text-align: center;
    vertical-align: middle;
	border-radius: 3px;
	margin: -3px 2px auto 2px;
	padding: 1px 2px;
	font-size: 8px;
	font-weight: normal;
	height: 10px;
	width: auto;
}
/* legend */
.ic-box-12 {
	line-height: 10px;
	display: inline-block;
	*display: inline;
	*zoom: 1;
    text-align: center;
    vertical-align: middle;
	border-radius: 3px;
	margin: -1px 3px auto 3px;
	font-weight: normal;
	height: 12px;
	width: 12px;
}
.ic-box-important {
	background: #EBAD14;
	color: #FFFFFF;
}
.ic-box-added {
	background: #61BF1A;
	color: #FFFFFF;
}
.ic-box-removed {
	background: #ED2E38;
	color: #FFFFFF;
}
.ic-box-changed {
	background: #999;
	color: #FFFFFF;
}
.ic-box-fixed {
	background: #578AD6;
	color: #FFFFFF;
}
.ic-important {
	color: #cc9933;
}
.ic-added {
	color: #5aa427;
}
.ic-removed {
	color: #e52929;
}
.ic-changed {
	color: #777;
}
.ic-fixed {
	color: #0f6eac;
}

.ic-box-16 {
	display: inline-block;
	*display: inline;
	*zoom: 1;
    text-align: center;
    vertical-align: middle;
	border-radius: 3px;
	font-weight: normal;
	line-height: 14px;
	height: 16px;
	width: 16px;
	margin-right: 6px;
	margin-top: -2px;
}
.ic-bold { font-weight: bold; }

/* Sub Important */
li.ic-changelog-important-sub span {margin-left: 23px; border-left: 1px dashed #cc9933; padding-left: 5px }
li.ic-changelog-important-sub { color: #cc9933; font-weight: normal; }


.blockbtn {
    display: inline-block;
    *display: inline;
    padding: 4px 10px 4px;
    margin-bottom: 0;
    *margin-left: .3em;
    font-size: 13px;
    line-height: 18px;
    *line-height: 20px;
    color: #333;
    text-align: center;
    text-shadow: 0 1px 1px rgba(255,255,255,0.75);
    vertical-align: middle;
    cursor: pointer;
    background-color: #f5f5f5;
    *background-color: #e6e6e6;
    background-image: -ms-linear-gradient(top,#fff,#e6e6e6);
    background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));
    background-image: -webkit-linear-gradient(top,#fff,#e6e6e6);
    background-image: -o-linear-gradient(top,#fff,#e6e6e6);
    background-image: linear-gradient(top,#fff,#e6e6e6);
    background-image: -moz-linear-gradient(top,#fff,#e6e6e6);
    background-repeat: repeat-x;
    border: 1px solid #ccc;
    *border: 0;
    border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
    border-color: #e6e6e6 #e6e6e6 #bfbfbf;
    border-bottom-color: #b3b3b3;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);
    filter: progid:dximagetransform.microsoft.gradient(enabled=false);
    *zoom: 1;
    -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
    -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
}

.btn {
    display: inline-block;
    *display: inline;
    padding: 4px 10px 4px;
    margin-bottom: 0;
    *margin-left: .3em;
    font-size: 13px;
    line-height: 18px;
    *line-height: 20px;
    color: #333;
    text-align: center;
    text-shadow: 0 1px 1px rgba(255,255,255,0.75);
    vertical-align: middle;
    cursor: pointer;
    background-color: #f5f5f5;
    *background-color: #e6e6e6;
    background-image: -ms-linear-gradient(top,#fff,#e6e6e6);
    background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));
    background-image: -webkit-linear-gradient(top,#fff,#e6e6e6);
    background-image: -o-linear-gradient(top,#fff,#e6e6e6);
    background-image: linear-gradient(top,#fff,#e6e6e6);
    background-image: -moz-linear-gradient(top,#fff,#e6e6e6);
    background-repeat: repeat-x;
    border: 1px solid #ccc;
    *border: 0;
    border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
    border-color: #e6e6e6 #e6e6e6 #bfbfbf;
    border-bottom-color: #b3b3b3;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);
    filter: progid:dximagetransform.microsoft.gradient(enabled=false);
    *zoom: 1;
    -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
    -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);
}

.btn:hover {
    color: #FFF;
    text-decoration: none;
    background-color: #333333;
    *background-color: #333333;
    background-position: 0 -30px;
    -webkit-transition: background-position .1s linear;
    -moz-transition: background-position .1s linear;
    -ms-transition: background-position .1s linear;
    -o-transition: background-position .1s linear;
    transition: background-position .1s linear;
}
.btn:focus {
    outline: thin dotted #333;
    outline: 5px auto -webkit-focus-ring-color;
    outline-offset: -2px;
}

.btn_update {
	text-align:center;
	background:#990000;
	padding:5px;
	border-radius:5px;
	color:#FFFFFF;
	font-weight: bold;
}

.btn_update:hover {
	background:#333333;
    color: #FFFFFF;
    cursor: pointer;
}
.btn_update:focus {

}


/** map **/
.ui-autocomplete {
	background-color: white;
	width: 300px;
	border: 1px solid #cfcfcf;
	list-style-type: none;
	padding-left: 0px;
}

/** calendar **/
fieldset.adminform textarea.date {height: 130px; }
#add {line-height: 28px; margin-left:145px;}
table#dTable {width: 113px; border:1px solid #cdcec9;}


/*
 * Params Styles
**/

/* -- STYLE_BOX ------------------- */
.stylebox {
	margin:20px 0px 0px -13px; padding:10px 13px;
	background : transparent url(../../../media/com_icagenda/images/border_title.png) 0% 100% no-repeat;
 	/*font-size:12px; color:#EEE; background-color:#333; margin:10px 0px; padding:10px 5px; border-bottom:5px solid #ce0000; border-radius:3px;*/
}
/* -- STYLE_RED ------------------- */
.stylered {
	color:#cc0000; background-color:#FFFFFF; font-weight:bold; padding:10px 25px; margin:0; border:1px red dotted; text-align:center;
}
/* -- STYLE_BLANCK ------------------- */
.styleblanck {
	color:#555; background-color:transparent; font-size:14px; font-weight:bold; padding:10px 0px; margin:0; text-align:left;
}
/* -- STYLE_BLANCK CENTER ------------------- */
.styleblanck-center {
	color:#555; background-color:transparent; font-size:14px; font-weight:bold; padding:10px 0px; margin:0; text-align:center;
}
/* -- STYLE_NOTE ------------------- */
.stylenote {
	color:#666; margin:5px 0px 0px 0px; padding:5px 0px 0px 0px;
}
/* -- STYLE_NOTEP ------------------- */
.stylenotep {
	color:#666; margin:5px 0px 0px 0px; padding:0px;
}
/* -- STYLE_SUB ------------------- */
.stylesub {
	font-weight:normal; font-size:12px; text-transform:uppercase; color:#666; margin:10px 0px 0px 0px;
}
/* -- STYLE_COPY ------------------- */
.stylecopy {
	color:#666; font-size:12px; margin:0;
}



/** Control Panel **/

.icpanel div.icon, #icpanel div.icon {
    /* float: left; */
    margin-bottom: 15px;
    margin-left: 7px;
    margin-right: 7px;
    text-align: center;
    line-height: 14px;
}
.icpanel table {
    width: 100%;
    /*background: #F4F4F4;*/
    margin-top: 5px;
    margin-bottom: 10px;
}
.icpanel .left {
    float: left;
}
.icpanel .right {
    float: right;
}
.icpanel div.icon a, #icpanel div.icon a {
    background-color: #FFFFFF;
    background-position: -30px center;
    border: 1px solid #CCCCCC;
    /*border-radius: 5px 5px 5px 5px;*/
    border-radius: 5px;
    color: #565656;
    display: inline-block;
    /* float: left; */
    height: 98px;
    text-decoration: none;
    transition-duration: 0.5s;
    /*transition-property: background-position, -moz-border-radius-bottomleft, -moz-box-shadow;*/
    transition-property: all;
    vertical-align: middle;
    width: 108px;
}
#icpanel div.icon a:hover, #icpanel div.icon a:focus, #icpanel div.icon a:active, .icpanel div.icon a:hover, .icpanel div.icon a:focus, .icpanel div.icon a:active {
    background-position: 0 center;
    background-color: #FFFFFF;
    /*border-bottom-left-radius: 50% 20px;*/
    border: 1px solid #990000;
    color: #565656;
    box-shadow: -5px 10px 15px rgba(0, 0, 0, 0.25);
    border-radius: 10px;
    position: relative;
    z-index: 10;
}
#icpanel img, .icpanel img {
    margin: 0 auto;
    padding: 10px 0 5px 0;
}
#icpanel span.iconText, .icpanel span.iconText {
    display: block;
    text-align: center;
}
#icpanel span.denied, .icpanel span.denied {
    color: #999999;
}
div.icpanel-left {
    float: left;
    width: 54%;
}
div.icpanel-right {
    float: right;
    width: 45%;
}

/** Events List **/
.ic-nextdate {
	padding: 2px 5px;
	border-radius: 5px;
}
.ic-upcoming {
	color: #fff;
	background: #555;
	font-weight: bold;
}
.ic-today {
	color: #fff;
	background: #c30000;
	font-weight: bold;
}
.ic-past {
	color: #777;
	background: #e4e4e4;
	font-style: italic;
}
.ic-no-date {
	background: #fbb450;
	font-weight: bold;
}
css/jquery-ui-1.8.17.custom.css000060400000101316152455755750012065 0ustar00/*
 * jQuery UI CSS Framework 1.8.17
 *
 * 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/Theming/API
 */

/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
.ui-helper-clearfix:after { clear: both; }
.ui-helper-clearfix { zoom: 1; }
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }


/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }


/* Icons
----------------------------------*/

/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }


/* Misc visuals
----------------------------------*/

/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }


/*
 * jQuery UI CSS Framework 1.8.17
 *
 * 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/Theming/API
 *
 * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
 */


/* 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; }
.ui-state-hover a, .ui-state-hover a:hover { 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; }
.ui-widget :active { outline: 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; }

/* Icons
----------------------------------*/

/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }

/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-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: -64px -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: -64px -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: 0 -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-off { background-position: -96px -144px; }
.ui-icon-radio-on { 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; }


/* Misc visuals
----------------------------------*/

/* Corner radius */
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }

/* Overlays */
.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
 * jQuery UI Resizable 1.8.17
 *
 * 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/Resizable#theming
 */
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
 * jQuery UI Selectable 1.8.17
 *
 * 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/Selectable#theming
 */
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
/*
 * jQuery UI Accordion 1.8.17
 *
 * 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/Accordion#theming
 */
/* IE/Win - Fix animation bug - #4615 */
.ui-accordion { width: 100%; }
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
.ui-accordion .ui-accordion-content-active { display: block; }
/*
 * jQuery UI Autocomplete 1.8.17
 *
 * 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/Autocomplete#theming
 */
.ui-autocomplete { position: absolute; cursor: default; }

/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */

/*
 * jQuery UI Menu 1.8.17
 *
 * Copyright 2010, 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/Menu#theming
 */
.ui-menu {
	list-style:none;
	padding: 2px;
	margin: 0;
	display:block;
	float: left;
}
.ui-menu .ui-menu {
	margin-top: -3px;
}
.ui-menu .ui-menu-item {
	margin:0;
	padding: 0;
	zoom: 1;
	float: left;
	clear: left;
	width: 100%;
}
.ui-menu .ui-menu-item a {
	text-decoration:none;
	display:block;
	padding:.2em .4em;
	line-height:1.5;
	zoom:1;
}
.ui-menu .ui-menu-item a.ui-state-hover,
.ui-menu .ui-menu-item a.ui-state-active {
	font-weight: normal;
	margin: -1px;
}
/*
 * jQuery UI Button 1.8.17
 *
 * 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/Button#theming
 */
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
.ui-button-icons-only { width: 3.4em; }
button.ui-button-icons-only { width: 3.7em; }

/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4;  }
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
/* no icon support for input elements, provide padding by default */
input.ui-button { padding: .4em 1em; }

/*button icon element(s) */
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }

/*button sets*/
.ui-buttonset { margin-right: 7px; }
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }

/* workarounds */
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
/*
 * jQuery UI Dialog 1.8.17
 *
 * 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/Dialog#theming
 */
.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/*
 * jQuery UI Slider 1.8.17
 *
 * 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#theming
 */
.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-horizontal { height: .8em; }
.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; }/*
 * jQuery UI Tabs 1.8.17
 *
 * 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/Tabs#theming
 */
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }
/*
 * jQuery UI Datepicker 1.8.17
 *
 * 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/Datepicker#theming
 */
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; font-size:1em; z-index:10000 !important;}
.ui-datepicker dt { font-size:0.9em; }
.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-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .3em .3em; text-align: center; font-size:0.8em; font-weight: bold; border: 0;  }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .1em; text-align: center; 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; }
.ui_tpicker_hour dd,
.ui_tpicker_minute dd { margin: 0 .3em; }
.ui_tpicker_hour_slider,
.ui_tpicker_minute_slider { margin-right: 0.6em; }

/* 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 { border-left-width:0; }
.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:0em; }

/* 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 { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }

/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
    display: none; /*sorry for IE5*/
    display/**/: block; /*sorry for IE5*/
    position: absolute; /*must have*/
    z-index: -1; /*must have*/
    filter: mask(); /*must have*/
    top: -4px; /*must have*/
    left: -4px; /*must have*/
    width: 200px; /*must have*/
    height: 200px; /*must have*/
}/*
 * jQuery UI Progressbar 1.8.17
 *
 * 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/Progressbar#theming
 */
.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
css/images/ui-bg_flat_0_aaaaaa_40x100.png000060400000000264152455755750013742 0ustar00�PNG


IHDR(d�drz{IDATh���1� 1���7Y$t���3�;_�TUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTüŝc�)IEND�B`�css/images/ui-bg_flat_0_eeeeee_40x100.png000060400000000264152455755750013772 0ustar00�PNG


IHDR(d�drz{IDATh���1� 1��ַP$t���3�;_�TUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPT����݊�IEND�B`�css/images/ui-bg_flat_75_ffffff_40x100.png000060400000000262152455755750014072 0ustar00�PNG


IHDR(d�drzyIDATh���1� �R��	7��(Ț�����V��`%X	V��`%X	V��`%X	V��`%X	V��`%X	V��`%X	V��`%X	V��`%X	V��`%X	V��`%X	V��`%X	V��`%X	Vj��)2�NIEND�B`�css/images/ui-icons_454545_256x240.png000060400000010421152455755750012717 0ustar00�PNG


IHDR��IJ��PLTEDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDDFDm�:NtRNS2P���."Tp@f`� <BHJZ&0R,�4���j���8D��|�������(��$�
��b���lߝF>n~�hh�H��IDATx��]�b۶�H�儒-{i�ZK:g�lk�n��-��tI��q�q?  E�$�dK>$�>�;������P�Z����s�V��h!�Sy��0E�0}H�)-���tk��o�ܪKp�\R�Ϡ ��.�E�7��
�)�*V;~�Pe��
Bx�*�,=$z��Dؾ���� ��J����Ҹٻ����9�{ ��������Ǹ�Hp�qW@��"2'���B��[�$�� @T��i�H�/��b٥9�6�!�X�Hq`DE��*R����
HV!�%�����;�������"����
�i��]�dddddddd�����4y���5 ��	�Rb�@(�8���Cd��Ū�ݡ�,�@T�@i���b�rq0a�lX!�������p��e�,	��=4bW �{�
5���Ƭhu~�(�Q�^@���3�=��"�b��5XC@J����C�����T��7��6�������q_����5��@,r	šɩ�D�)�T�|�O��@�
ON-ՙ��	�������[n@��R���X�Im�݋(���F �@�?��=0��puL��;g$��@6η��
�K`�>п� @h գ�KV�n�"a�"���%l�@.v�$/��U^��G�:#`�`�� �u��TtK��~�ŋ�Z��5T���%�k�x�����������k��]\*�Q��
,҇���B��44�OXK�|�y��g���+_M�(�lоE�O���
 V$�T1BX���b�-�|?@ �f��B�Xr�%'@ҹA\�I��J,}��BBc��\V
��r����h(�]tI��^���}���o�צo�S3�	";��ʙ���b}��"߰	��){b$�������Gwwݾ����������a���b"��)���T@p��F_er6JvШ���"m�ޭ�M-��d7��6��x����˰6ӥ;��/����`>KrP\��_���^u�1%��O�T�M���.�}���Q3���.Nس��}��)���>����-�w�`���a�����+sy$���t���)�N�bFFFF�Be�j��nN��Vn4��,��A*��X��*��5��>��P���G��a��3	�{�oB�
�&<�L[���Nc.���ö�i=�`�Q@�d���
͆I��.I��l�`\t�[< �Cit�48��4�-r���+��f��쑱�B��CB ��MH�	i����y}���>���rx����p|z�;B��Ǐ;�b�u��r���c�K����4t��z��1�G~����`���ؚ��K��|	̔>��ۡ��O$�����~
�Ao)���0pzz
�}i�����`;AD�����m8n:�cf�A@s7�����L��� Z�/..�����h8�o��r?
�
�N��9��3B��~o_��'`��o���pO-��
:�TG�	L;��7���]`���B���%�˛>��*wT���pM��0H�}&t����^1��'Oq�r'�2P�͡��+�z,tIW''|en������=dzg��R�m�[N�S�t�K{��҉m���ؓV�t�6���ҲR`����ζN�&}�B	U��(�r<�qȁVyr�rA**��دzg6�D#��	�����YP�`�����v���s���~(�z�Ml�e�|u���Q�a�*}�+T��
�����R��Xc"+*�N�l�N�hc�Ft�<N+;-}�،Xtٕ$��à^��|uv���*��~�'E�_�5���1�q�s�*�R�`�OΒ��9�#x4�4�9�#�������WHۏ����Z��)]0�`p�<��ߝ��N��oY{�4�7��6�ǹ�>�ۗ&��������1%�Q''���?�l��׸�+&�r{�j�N�಻���4�)���`�N狌�.��߭�� ���ǣ������������)q	�2�?���n�3H�b��`�}� ����.`�������pqY1�e_b����u�7��e+N�_F����(�D�T��,���L}LL�r��mP5��|��x芥1�c���x DAb������`��M(��7���NED�~<v\	%,�ߚ/����p���R��~/^����l��np�
��7t����0_���0���l4�����_����b�0�MWΦj�m����б�Ɏ�l
|re����
�ȫ`B-����v.i��Ro�x}�
�)����%#`�Ђ�R5C���A�2su���a���sYy3��=jaeoI�7�~�.�plA��΃�
`O��)��	^�>��Mz�	�+4���BXd.��Mz��v͈������P�d8�p��<6?��8�N��*x����.��6ڍ6G����F�Z�����)���O���	!��l�S�s���h����ss�N�p8�`'�0�/<����s���}�.�@Ǩ�s�7ξ�O۟V�D���a5��a�v��]������m1��+���3��y�6�۠���>@�u50��P�s����5��1=��=�p�� *��KV�ҫ܂�����ݻc$N�4�(�X�r2###c-��賟L���δ�>��]���5�.�s���Ys�1��f0�;�'̨��Y�g銛�{�@9��	���`aC(��=%b�o�2��=���n��1�	j��B��o��S$n���#���m����=i��0�c���������i9�}�oI��	���q�T��]�W%.��(��؅�]z�\�x�
f��"]o��'u�䫵�t�k{�v;A��C3ֆw��w�R_#��X��(x��ҋ/q%��W��������hp��k_I�X���'b��/fX��K�i�"#####�QCL�i��2t��
���5���L0
����Qi�H�2;y�T�Ook;ע�ٶ`��R��Ng{z�y�!�Kx�����m�?A(v��U�~���mL�(`o/!n���mX��-{�v����[�� d�w�=�n「�������sdw��z��n�(��}O�y�~����m�
���?XU�;,���V'+��V�&�J�R��Z]᧭�:����zC'��-߆����@�y
�4���u���`Vۓw��ъ#��zP@Q�
N>2/��{�\o)����W���~a�3xL�w
:_Q�;��=p�ּ�dt���\'8�����~3�SRP���6��y+�������X�����Q�*��޺r
����̗ѭ*��޺r
g��l�/�\U^��u�$����|mb��Vn����w�\V��|���D�͊NVN���y��7�������k<;��/�E}?E*dzg�O ���~���g��/9��6����f
c�D}%��g$�Q�G�7�o��)����UJ���o�,O@�0߾Q(����;�b����w����:5�	�N�wR��N5�I�y'K�?}��:9�m��ֽ��*���@f�@jU9�m���ҫ���Í�{����$�ؗ�}��dF���p��|%!DdF��>����}G��{���@FFFFFFƦQܞH �
�����3
��u	���M�o�����~�vy�}�m�wz<�7���nP9�r�Wk���u=����|��_�n����z쿳}@���IX�n�����?��s<uPIEND�B`�css/images/ui-bg_highlight-soft_75_cccccc_1x100.png000060400000000145152455755750015757 0ustar00�PNG


IHDRdG,Z`,IDAT�cx���&�!D���J�qш��/��Cc
;��:*C��OIEND�B`�css/images/ui-icons_63a459_256x240.png000060400000010421152455755750013000 0ustar00�PNG


IHDR��IJ��PLTEd�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\d�\2��WNtRNS2P���."Tp@f`� <BHJZ&0R,�4���j���8D��|�������(��$�
��b���lߝF>n~�hh�H��IDATx��]�b۶�H�儒-{i�ZK:g�lk�n��-��tI��q�q?  E�$�dK>$�>�;������P�Z����s�V��h!�Sy��0E�0}H�)-���tk��o�ܪKp�\R�Ϡ ��.�E�7��
�)�*V;~�Pe��
Bx�*�,=$z��Dؾ���� ��J����Ҹٻ����9�{ ��������Ǹ�Hp�qW@��"2'���B��[�$�� @T��i�H�/��b٥9�6�!�X�Hq`DE��*R����
HV!�%�����;�������"����
�i��]�dddddddd�����4y���5 ��	�Rb�@(�8���Cd��Ū�ݡ�,�@T�@i���b�rq0a�lX!�������p��e�,	��=4bW �{�
5���Ƭhu~�(�Q�^@���3�=��"�b��5XC@J����C�����T��7��6�������q_����5��@,r	šɩ�D�)�T�|�O��@�
ON-ՙ��	�������[n@��R���X�Im�݋(���F �@�?��=0��puL��;g$��@6η��
�K`�>п� @h գ�KV�n�"a�"���%l�@.v�$/��U^��G�:#`�`�� �u��TtK��~�ŋ�Z��5T���%�k�x�����������k��]\*�Q��
,҇���B��44�OXK�|�y��g���+_M�(�lоE�O���
 V$�T1BX���b�-�|?@ �f��B�Xr�%'@ҹA\�I��J,}��BBc��\V
��r����h(�]tI��^���}���o�צo�S3�	";��ʙ���b}��"߰	��){b$�������Gwwݾ����������a���b"��)���T@p��F_er6JvШ���"m�ޭ�M-��d7��6��x����˰6ӥ;��/����`>KrP\��_���^u�1%��O�T�M���.�}���Q3���.Nس��}��)���>����-�w�`���a�����+sy$���t���)�N�bFFFF�Be�j��nN��Vn4��,��A*��X��*��5��>��P���G��a��3	�{�oB�
�&<�L[���Nc.���ö�i=�`�Q@�d���
͆I��.I��l�`\t�[< �Cit�48��4�-r���+��f��쑱�B��CB ��MH�	i����y}���>���rx����p|z�;B��Ǐ;�b�u��r���c�K����4t��z��1�G~����`���ؚ��K��|	̔>��ۡ��O$�����~
�Ao)���0pzz
�}i�����`;AD�����m8n:�cf�A@s7�����L��� Z�/..�����h8�o��r?
�
�N��9��3B��~o_��'`��o���pO-��
:�TG�	L;��7���]`���B���%�˛>��*wT���pM��0H�}&t����^1��'Oq�r'�2P�͡��+�z,tIW''|en������=dzg��R�m�[N�S�t�K{��҉m���ؓV�t�6���ҲR`����ζN�&}�B	U��(�r<�qȁVyr�rA**��دzg6�D#��	�����YP�`�����v���s���~(�z�Ml�e�|u���Q�a�*}�+T��
�����R��Xc"+*�N�l�N�hc�Ft�<N+;-}�،Xtٕ$��à^��|uv���*��~�'E�_�5���1�q�s�*�R�`�OΒ��9�#x4�4�9�#�������WHۏ����Z��)]0�`p�<��ߝ��N��oY{�4�7��6�ǹ�>�ۗ&��������1%�Q''���?�l��׸�+&�r{�j�N�಻���4�)���`�N狌�.��߭�� ���ǣ������������)q	�2�?���n�3H�b��`�}� ����.`�������pqY1�e_b����u�7��e+N�_F����(�D�T��,���L}LL�r��mP5��|��x芥1�c���x DAb������`��M(��7���NED�~<v\	%,�ߚ/����p���R��~/^����l��np�
��7t����0_���0���l4�����_����b�0�MWΦj�m����б�Ɏ�l
|re����
�ȫ`B-����v.i��Ro�x}�
�)����%#`�Ђ�R5C���A�2su���a���sYy3��=jaeoI�7�~�.�plA��΃�
`O��)��	^�>��Mz�	�+4���BXd.��Mz��v͈������P�d8�p��<6?��8�N��*x����.��6ڍ6G����F�Z�����)���O���	!��l�S�s���h����ss�N�p8�`'�0�/<����s���}�.�@Ǩ�s�7ξ�O۟V�D���a5��a�v��]������m1��+���3��y�6�۠���>@�u50��P�s����5��1=��=�p�� *��KV�ҫ܂�����ݻc$N�4�(�X�r2###c-��賟L���δ�>��]���5�.�s���Ys�1��f0�;�'̨��Y�g銛�{�@9��	���`aC(��=%b�o�2��=���n��1�	j��B��o��S$n���#���m����=i��0�c���������i9�}�oI��	���q�T��]�W%.��(��؅�]z�\�x�
f��"]o��'u�䫵�t�k{�v;A��C3ֆw��w�R_#��X��(x��ҋ/q%��W��������hp��k_I�X���'b��/fX��K�i�"#####�QCL�i��2t��
���5���L0
����Qi�H�2;y�T�Ook;ע�ٶ`��R��Ng{z�y�!�Kx�����m�?A(v��U�~���mL�(`o/!n���mX��-{�v����[�� d�w�=�n「�������sdw��z��n�(��}O�y�~����m�
���?XU�;,���V'+��V�&�J�R��Z]᧭�:����zC'��-߆����@�y
�4���u���`Vۓw��ъ#��zP@Q�
N>2/��{�\o)����W���~a�3xL�w
:_Q�;��=p�ּ�dt���\'8�����~3�SRP���6��y+�������X�����Q�*��޺r
����̗ѭ*��޺r
g��l�/�\U^��u�$����|mb��Vn����w�\V��|���D�͊NVN���y��7�������k<;��/�E}?E*dzg�O ���~���g��/9��6����f
c�D}%��g$�Q�G�7�o��)����UJ���o�,O@�0߾Q(����;�b����w����:5�	�N�wR��N5�I�y'K�?}��:9�m��ֽ��*���@f�@jU9�m���ҫ���Í�{����$�ؗ�}��dF���p��|%!DdF��>����}G��{���@FFFFFFƦQܞH �
�����3
��u	���M�o�����~�vy�}�m�wz<�7���nP9�r�Wk���u=����|��_�n����z쿳}@���IX�n�����?��s<uPIEND�B`�css/images/ui-bg_glass_75_e6e6e6_1x400.png000060400000000156152455755750013754 0ustar00�PNG


IHDR�oX
�5IDAT8���1
 �����y�U�X��H�a��@�[�{UU�u@��7���	��D�FIEND�B`�css/images/ui-icons_999999_256x240.png000060400000010421152455755750012752 0ustar00�PNG


IHDR��IJ��PLTE���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������_��NtRNS2P���."Tp@f`� <BHJZ&0R,�4���j���8D��|�������(��$�
��b���lߝF>n~�hh�H��IDATx��]�b۶�H�儒-{i�ZK:g�lk�n��-��tI��q�q?  E�$�dK>$�>�;������P�Z����s�V��h!�Sy��0E�0}H�)-���tk��o�ܪKp�\R�Ϡ ��.�E�7��
�)�*V;~�Pe��
Bx�*�,=$z��Dؾ���� ��J����Ҹٻ����9�{ ��������Ǹ�Hp�qW@��"2'���B��[�$�� @T��i�H�/��b٥9�6�!�X�Hq`DE��*R����
HV!�%�����;�������"����
�i��]�dddddddd�����4y���5 ��	�Rb�@(�8���Cd��Ū�ݡ�,�@T�@i���b�rq0a�lX!�������p��e�,	��=4bW �{�
5���Ƭhu~�(�Q�^@���3�=��"�b��5XC@J����C�����T��7��6�������q_����5��@,r	šɩ�D�)�T�|�O��@�
ON-ՙ��	�������[n@��R���X�Im�݋(���F �@�?��=0��puL��;g$��@6η��
�K`�>п� @h գ�KV�n�"a�"���%l�@.v�$/��U^��G�:#`�`�� �u��TtK��~�ŋ�Z��5T���%�k�x�����������k��]\*�Q��
,҇���B��44�OXK�|�y��g���+_M�(�lоE�O���
 V$�T1BX���b�-�|?@ �f��B�Xr�%'@ҹA\�I��J,}��BBc��\V
��r����h(�]tI��^���}���o�צo�S3�	";��ʙ���b}��"߰	��){b$�������Gwwݾ����������a���b"��)���T@p��F_er6JvШ���"m�ޭ�M-��d7��6��x����˰6ӥ;��/����`>KrP\��_���^u�1%��O�T�M���.�}���Q3���.Nس��}��)���>����-�w�`���a�����+sy$���t���)�N�bFFFF�Be�j��nN��Vn4��,��A*��X��*��5��>��P���G��a��3	�{�oB�
�&<�L[���Nc.���ö�i=�`�Q@�d���
͆I��.I��l�`\t�[< �Cit�48��4�-r���+��f��쑱�B��CB ��MH�	i����y}���>���rx����p|z�;B��Ǐ;�b�u��r���c�K����4t��z��1�G~����`���ؚ��K��|	̔>��ۡ��O$�����~
�Ao)���0pzz
�}i�����`;AD�����m8n:�cf�A@s7�����L��� Z�/..�����h8�o��r?
�
�N��9��3B��~o_��'`��o���pO-��
:�TG�	L;��7���]`���B���%�˛>��*wT���pM��0H�}&t����^1��'Oq�r'�2P�͡��+�z,tIW''|en������=dzg��R�m�[N�S�t�K{��҉m���ؓV�t�6���ҲR`����ζN�&}�B	U��(�r<�qȁVyr�rA**��دzg6�D#��	�����YP�`�����v���s���~(�z�Ml�e�|u���Q�a�*}�+T��
�����R��Xc"+*�N�l�N�hc�Ft�<N+;-}�،Xtٕ$��à^��|uv���*��~�'E�_�5���1�q�s�*�R�`�OΒ��9�#x4�4�9�#�������WHۏ����Z��)]0�`p�<��ߝ��N��oY{�4�7��6�ǹ�>�ۗ&��������1%�Q''���?�l��׸�+&�r{�j�N�಻���4�)���`�N狌�.��߭�� ���ǣ������������)q	�2�?���n�3H�b��`�}� ����.`�������pqY1�e_b����u�7��e+N�_F����(�D�T��,���L}LL�r��mP5��|��x芥1�c���x DAb������`��M(��7���NED�~<v\	%,�ߚ/����p���R��~/^����l��np�
��7t����0_���0���l4�����_����b�0�MWΦj�m����б�Ɏ�l
|re����
�ȫ`B-����v.i��Ro�x}�
�)����%#`�Ђ�R5C���A�2su���a���sYy3��=jaeoI�7�~�.�plA��΃�
`O��)��	^�>��Mz�	�+4���BXd.��Mz��v͈������P�d8�p��<6?��8�N��*x����.��6ڍ6G����F�Z�����)���O���	!��l�S�s���h����ss�N�p8�`'�0�/<����s���}�.�@Ǩ�s�7ξ�O۟V�D���a5��a�v��]������m1��+���3��y�6�۠���>@�u50��P�s����5��1=��=�p�� *��KV�ҫ܂�����ݻc$N�4�(�X�r2###c-��賟L���δ�>��]���5�.�s���Ys�1��f0�;�'̨��Y�g銛�{�@9��	���`aC(��=%b�o�2��=���n��1�	j��B��o��S$n���#���m����=i��0�c���������i9�}�oI��	���q�T��]�W%.��(��؅�]z�\�x�
f��"]o��'u�䫵�t�k{�v;A��C3ֆw��w�R_#��X��(x��ҋ/q%��W��������hp��k_I�X���'b��/fX��K�i�"#####�QCL�i��2t��
���5���L0
����Qi�H�2;y�T�Ook;ע�ٶ`��R��Ng{z�y�!�Kx�����m�?A(v��U�~���mL�(`o/!n���mX��-{�v����[�� d�w�=�n「�������sdw��z��n�(��}O�y�~����m�
���?XU�;,���V'+��V�&�J�R��Z]᧭�:����zC'��-߆����@�y
�4���u���`Vۓw��ъ#��zP@Q�
N>2/��{�\o)����W���~a�3xL�w
:_Q�;��=p�ּ�dt���\'8�����~3�SRP���6��y+�������X�����Q�*��޺r
����̗ѭ*��޺r
g��l�/�\U^��u�$����|mb��Vn����w�\V��|���D�͊NVN���y��7�������k<;��/�E}?E*dzg�O ���~���g��/9��6����f
c�D}%��g$�Q�G�7�o��)����UJ���o�,O@�0߾Q(����;�b����w����:5�	�N�wR��N5�I�y'K�?}��:9�m��ֽ��*���@f�@jU9�m���ҫ���Í�{����$�ؗ�}��dF���p��|%!DdF��>����}G��{���@FFFFFFƦQܞH �
�����3
��u	���M�o�����~�vy�}�m�wz<�7���nP9�r�Wk���u=����|��_�n����z쿳}@���IX�n�����?��s<uPIEND�B`�css/images/ui-icons_2e83ff_256x240.png000060400000010421152455755750013142 0ustar00�PNG


IHDR��IJ��PLTE,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��,��ˬ�MNtRNS2P���."Tp@f`� <BHJZ&0R,�4���j���8D��|�������(��$�
��b���lߝF>n~�hh�H��IDATx��]�b۶�H�儒-{i�ZK:g�lk�n��-��tI��q�q?  E�$�dK>$�>�;������P�Z����s�V��h!�Sy��0E�0}H�)-���tk��o�ܪKp�\R�Ϡ ��.�E�7��
�)�*V;~�Pe��
Bx�*�,=$z��Dؾ���� ��J����Ҹٻ����9�{ ��������Ǹ�Hp�qW@��"2'���B��[�$�� @T��i�H�/��b٥9�6�!�X�Hq`DE��*R����
HV!�%�����;�������"����
�i��]�dddddddd�����4y���5 ��	�Rb�@(�8���Cd��Ū�ݡ�,�@T�@i���b�rq0a�lX!�������p��e�,	��=4bW �{�
5���Ƭhu~�(�Q�^@���3�=��"�b��5XC@J����C�����T��7��6�������q_����5��@,r	šɩ�D�)�T�|�O��@�
ON-ՙ��	�������[n@��R���X�Im�݋(���F �@�?��=0��puL��;g$��@6η��
�K`�>п� @h գ�KV�n�"a�"���%l�@.v�$/��U^��G�:#`�`�� �u��TtK��~�ŋ�Z��5T���%�k�x�����������k��]\*�Q��
,҇���B��44�OXK�|�y��g���+_M�(�lоE�O���
 V$�T1BX���b�-�|?@ �f��B�Xr�%'@ҹA\�I��J,}��BBc��\V
��r����h(�]tI��^���}���o�צo�S3�	";��ʙ���b}��"߰	��){b$�������Gwwݾ����������a���b"��)���T@p��F_er6JvШ���"m�ޭ�M-��d7��6��x����˰6ӥ;��/����`>KrP\��_���^u�1%��O�T�M���.�}���Q3���.Nس��}��)���>����-�w�`���a�����+sy$���t���)�N�bFFFF�Be�j��nN��Vn4��,��A*��X��*��5��>��P���G��a��3	�{�oB�
�&<�L[���Nc.���ö�i=�`�Q@�d���
͆I��.I��l�`\t�[< �Cit�48��4�-r���+��f��쑱�B��CB ��MH�	i����y}���>���rx����p|z�;B��Ǐ;�b�u��r���c�K����4t��z��1�G~����`���ؚ��K��|	̔>��ۡ��O$�����~
�Ao)���0pzz
�}i�����`;AD�����m8n:�cf�A@s7�����L��� Z�/..�����h8�o��r?
�
�N��9��3B��~o_��'`��o���pO-��
:�TG�	L;��7���]`���B���%�˛>��*wT���pM��0H�}&t����^1��'Oq�r'�2P�͡��+�z,tIW''|en������=dzg��R�m�[N�S�t�K{��҉m���ؓV�t�6���ҲR`����ζN�&}�B	U��(�r<�qȁVyr�rA**��دzg6�D#��	�����YP�`�����v���s���~(�z�Ml�e�|u���Q�a�*}�+T��
�����R��Xc"+*�N�l�N�hc�Ft�<N+;-}�،Xtٕ$��à^��|uv���*��~�'E�_�5���1�q�s�*�R�`�OΒ��9�#x4�4�9�#�������WHۏ����Z��)]0�`p�<��ߝ��N��oY{�4�7��6�ǹ�>�ۗ&��������1%�Q''���?�l��׸�+&�r{�j�N�಻���4�)���`�N狌�.��߭�� ���ǣ������������)q	�2�?���n�3H�b��`�}� ����.`�������pqY1�e_b����u�7��e+N�_F����(�D�T��,���L}LL�r��mP5��|��x芥1�c���x DAb������`��M(��7���NED�~<v\	%,�ߚ/����p���R��~/^����l��np�
��7t����0_���0���l4�����_����b�0�MWΦj�m����б�Ɏ�l
|re����
�ȫ`B-����v.i��Ro�x}�
�)����%#`�Ђ�R5C���A�2su���a���sYy3��=jaeoI�7�~�.�plA��΃�
`O��)��	^�>��Mz�	�+4���BXd.��Mz��v͈������P�d8�p��<6?��8�N��*x����.��6ڍ6G����F�Z�����)���O���	!��l�S�s���h����ss�N�p8�`'�0�/<����s���}�.�@Ǩ�s�7ξ�O۟V�D���a5��a�v��]������m1��+���3��y�6�۠���>@�u50��P�s����5��1=��=�p�� *��KV�ҫ܂�����ݻc$N�4�(�X�r2###c-��賟L���δ�>��]���5�.�s���Ys�1��f0�;�'̨��Y�g銛�{�@9��	���`aC(��=%b�o�2��=���n��1�	j��B��o��S$n���#���m����=i��0�c���������i9�}�oI��	���q�T��]�W%.��(��؅�]z�\�x�
f��"]o��'u�䫵�t�k{�v;A��C3ֆw��w�R_#��X��(x��ҋ/q%��W��������hp��k_I�X���'b��/fX��K�i�"#####�QCL�i��2t��
���5���L0
����Qi�H�2;y�T�Ook;ע�ٶ`��R��Ng{z�y�!�Kx�����m�?A(v��U�~���mL�(`o/!n���mX��-{�v����[�� d�w�=�n「�������sdw��z��n�(��}O�y�~����m�
���?XU�;,���V'+��V�&�J�R��Z]᧭�:����zC'��-߆����@�y
�4���u���`Vۓw��ъ#��zP@Q�
N>2/��{�\o)����W���~a�3xL�w
:_Q�;��=p�ּ�dt���\'8�����~3�SRP���6��y+�������X�����Q�*��޺r
����̗ѭ*��޺r
g��l�/�\U^��u�$����|mb��Vn����w�\V��|���D�͊NVN���y��7�������k<;��/�E}?E*dzg�O ���~���g��/9��6����f
c�D}%��g$�Q�G�7�o��)����UJ���o�,O@�0߾Q(����;�b����w����:5�	�N�wR��N5�I�y'K�?}��:9�m��ֽ��*���@f�@jU9�m���ҫ���Í�{����$�ؗ�}��dF���p��|%!DdF��>����}G��{���@FFFFFFƦQܞH �
�����3
��u	���M�o�����~�vy�}�m�wz<�7���nP9�r�Wk���u=����|��_�n����z쿳}@���IX�n�����?��s<uPIEND�B`�css/images/ui-bg_flat_55_eeeeee_40x100.png000060400000000264152455755750014064 0ustar00�PNG


IHDR(d�drz{IDATh���1� 1��ַP$t���3�;_�TUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPTUAUPT����݊�IEND�B`�css/images/ui-bg_glass_60_eeeeee_1x400.png000060400000000156152455755750014163 0ustar00�PNG


IHDR�oX
�5IDAT8�c����&�Qb�%�-���d.###v.�^�,��Qb�%��	�ʁW>IEND�B`�css/images/ui-bg_inset-hard_75_999999_1x100.png000060400000000162152455755750014500 0ustar00�PNG


IHDRdG,Z`9IDAT��ϱ	1�Ӟ��j�D``x�d`�Uw/$�D��-���U5y�}'0|��
�����IEND�B`�css/images/ui-bg_flat_55_c0402a_40x100.png000060400000000266152455755750013542 0ustar00�PNG


IHDR(d�drz}IDATh���1� A$)�n3��p�	�z��_N
����*�
����*�
����*�
����*�
����*�
����*�
����*�
����*�
����*�
����*�
����*�
����*�
�
��7���IEND�B`�css/images/ui-bg_glass_65_ffffff_1x400.png000060400000000151152455755750014171 0ustar00�PNG


IHDR�oX
�0IDAT8���! �����+	��̼��J�HR)�[lk�=O_��(�<`�
H�"�IEND�B`�css/images/ui-icons_fbc856_256x240.png000060400000010421152455755750013142 0ustar00�PNG


IHDR��IJ��PLTE��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T��T>0�NtRNS2P���."Tp@f`� <BHJZ&0R,�4���j���8D��|�������(��$�
��b���lߝF>n~�hh�H��IDATx��]�b۶�H�儒-{i�ZK:g�lk�n��-��tI��q�q?  E�$�dK>$�>�;������P�Z����s�V��h!�Sy��0E�0}H�)-���tk��o�ܪKp�\R�Ϡ ��.�E�7��
�)�*V;~�Pe��
Bx�*�,=$z��Dؾ���� ��J����Ҹٻ����9�{ ��������Ǹ�Hp�qW@��"2'���B��[�$�� @T��i�H�/��b٥9�6�!�X�Hq`DE��*R����
HV!�%�����;�������"����
�i��]�dddddddd�����4y���5 ��	�Rb�@(�8���Cd��Ū�ݡ�,�@T�@i���b�rq0a�lX!�������p��e�,	��=4bW �{�
5���Ƭhu~�(�Q�^@���3�=��"�b��5XC@J����C�����T��7��6�������q_����5��@,r	šɩ�D�)�T�|�O��@�
ON-ՙ��	�������[n@��R���X�Im�݋(���F �@�?��=0��puL��;g$��@6η��
�K`�>п� @h գ�KV�n�"a�"���%l�@.v�$/��U^��G�:#`�`�� �u��TtK��~�ŋ�Z��5T���%�k�x�����������k��]\*�Q��
,҇���B��44�OXK�|�y��g���+_M�(�lоE�O���
 V$�T1BX���b�-�|?@ �f��B�Xr�%'@ҹA\�I��J,}��BBc��\V
��r����h(�]tI��^���}���o�צo�S3�	";��ʙ���b}��"߰	��){b$�������Gwwݾ����������a���b"��)���T@p��F_er6JvШ���"m�ޭ�M-��d7��6��x����˰6ӥ;��/����`>KrP\��_���^u�1%��O�T�M���.�}���Q3���.Nس��}��)���>����-�w�`���a�����+sy$���t���)�N�bFFFF�Be�j��nN��Vn4��,��A*��X��*��5��>��P���G��a��3	�{�oB�
�&<�L[���Nc.���ö�i=�`�Q@�d���
͆I��.I��l�`\t�[< �Cit�48��4�-r���+��f��쑱�B��CB ��MH�	i����y}���>���rx����p|z�;B��Ǐ;�b�u��r���c�K����4t��z��1�G~����`���ؚ��K��|	̔>��ۡ��O$�����~
�Ao)���0pzz
�}i�����`;AD�����m8n:�cf�A@s7�����L��� Z�/..�����h8�o��r?
�
�N��9��3B��~o_��'`��o���pO-��
:�TG�	L;��7���]`���B���%�˛>��*wT���pM��0H�}&t����^1��'Oq�r'�2P�͡��+�z,tIW''|en������=dzg��R�m�[N�S�t�K{��҉m���ؓV�t�6���ҲR`����ζN�&}�B	U��(�r<�qȁVyr�rA**��دzg6�D#��	�����YP�`�����v���s���~(�z�Ml�e�|u���Q�a�*}�+T��
�����R��Xc"+*�N�l�N�hc�Ft�<N+;-}�،Xtٕ$��à^��|uv���*��~�'E�_�5���1�q�s�*�R�`�OΒ��9�#x4�4�9�#�������WHۏ����Z��)]0�`p�<��ߝ��N��oY{�4�7��6�ǹ�>�ۗ&��������1%�Q''���?�l��׸�+&�r{�j�N�಻���4�)���`�N狌�.��߭�� ���ǣ������������)q	�2�?���n�3H�b��`�}� ����.`�������pqY1�e_b����u�7��e+N�_F����(�D�T��,���L}LL�r��mP5��|��x芥1�c���x DAb������`��M(��7���NED�~<v\	%,�ߚ/����p���R��~/^����l��np�
��7t����0_���0���l4�����_����b�0�MWΦj�m����б�Ɏ�l
|re����
�ȫ`B-����v.i��Ro�x}�
�)����%#`�Ђ�R5C���A�2su���a���sYy3��=jaeoI�7�~�.�plA��΃�
`O��)��	^�>��Mz�	�+4���BXd.��Mz��v͈������P�d8�p��<6?��8�N��*x����.��6ڍ6G����F�Z�����)���O���	!��l�S�s���h����ss�N�p8�`'�0�/<����s���}�.�@Ǩ�s�7ξ�O۟V�D���a5��a�v��]������m1��+���3��y�6�۠���>@�u50��P�s����5��1=��=�p�� *��KV�ҫ܂�����ݻc$N�4�(�X�r2###c-��賟L���δ�>��]���5�.�s���Ys�1��f0�;�'̨��Y�g銛�{�@9��	���`aC(��=%b�o�2��=���n��1�	j��B��o��S$n���#���m����=i��0�c���������i9�}�oI��	���q�T��]�W%.��(��؅�]z�\�x�
f��"]o��'u�䫵�t�k{�v;A��C3ֆw��w�R_#��X��(x��ҋ/q%��W��������hp��k_I�X���'b��/fX��K�i�"#####�QCL�i��2t��
���5���L0
����Qi�H�2;y�T�Ook;ע�ٶ`��R��Ng{z�y�!�Kx�����m�?A(v��U�~���mL�(`o/!n���mX��-{�v����[�� d�w�=�n「�������sdw��z��n�(��}O�y�~����m�
���?XU�;,���V'+��V�&�J�R��Z]᧭�:����zC'��-߆����@�y
�4���u���`Vۓw��ъ#��zP@Q�
N>2/��{�\o)����W���~a�3xL�w
:_Q�;��=p�ּ�dt���\'8�����~3�SRP���6��y+�������X�����Q�*��޺r
����̗ѭ*��޺r
g��l�/�\U^��u�$����|mb��Vn����w�\V��|���D�͊NVN���y��7�������k<;��/�E}?E*dzg�O ���~���g��/9��6����f
c�D}%��g$�Q�G�7�o��)����UJ���o�,O@�0߾Q(����;�b����w����:5�	�N�wR��N5�I�y'K�?}��:9�m��ֽ��*���@f�@jU9�m���ҫ���Í�{����$�ؗ�}��dF���p��|%!DdF��>����}G��{���@FFFFFFƦQܞH �
�����3
��u	���M�o�����~�vy�}�m�wz<�7���nP9�r�Wk���u=����|��_�n����z쿳}@���IX�n�����?��s<uPIEND�B`�css/images/index.html000060400000000032152455755750010611 0ustar00<html><body></body></html>css/images/ui-bg_glass_55_fbf9ee_1x400.png000060400000000170152455755750014106 0ustar00�PNG


IHDR�oX
�?IDAT8���1
�0Bѯ��l��`�6C�s��<]�:����[��&�B�A	��e7�l�QJ��ŜQY�*IEND�B`�css/images/ui-bg_inset-soft_50_c9c9c9_1x100.png000060400000000140152455755750014720 0ustar00�PNG


IHDRdG,Z`'IDAT�c8y��&��E022"���b#�)�f����rQo-[IEND�B`�css/images/ui-icons_222222_256x240.png000060400000010421152455755750012700 0ustar00�PNG


IHDR��IJ��PLTE$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$$"$�ÈNtRNS2P���."Tp@f`� <BHJZ&0R,�4���j���8D��|�������(��$�
��b���lߝF>n~�hh�H��IDATx��]�b۶�H�儒-{i�ZK:g�lk�n��-��tI��q�q?  E�$�dK>$�>�;������P�Z����s�V��h!�Sy��0E�0}H�)-���tk��o�ܪKp�\R�Ϡ ��.�E�7��
�)�*V;~�Pe��
Bx�*�,=$z��Dؾ���� ��J����Ҹٻ����9�{ ��������Ǹ�Hp�qW@��"2'���B��[�$�� @T��i�H�/��b٥9�6�!�X�Hq`DE��*R����
HV!�%�����;�������"����
�i��]�dddddddd�����4y���5 ��	�Rb�@(�8���Cd��Ū�ݡ�,�@T�@i���b�rq0a�lX!�������p��e�,	��=4bW �{�
5���Ƭhu~�(�Q�^@���3�=��"�b��5XC@J����C�����T��7��6�������q_����5��@,r	šɩ�D�)�T�|�O��@�
ON-ՙ��	�������[n@��R���X�Im�݋(���F �@�?��=0��puL��;g$��@6η��
�K`�>п� @h գ�KV�n�"a�"���%l�@.v�$/��U^��G�:#`�`�� �u��TtK��~�ŋ�Z��5T���%�k�x�����������k��]\*�Q��
,҇���B��44�OXK�|�y��g���+_M�(�lоE�O���
 V$�T1BX���b�-�|?@ �f��B�Xr�%'@ҹA\�I��J,}��BBc��\V
��r����h(�]tI��^���}���o�צo�S3�	";��ʙ���b}��"߰	��){b$�������Gwwݾ����������a���b"��)���T@p��F_er6JvШ���"m�ޭ�M-��d7��6��x����˰6ӥ;��/����`>KrP\��_���^u�1%��O�T�M���.�}���Q3���.Nس��}��)���>����-�w�`���a�����+sy$���t���)�N�bFFFF�Be�j��nN��Vn4��,��A*��X��*��5��>��P���G��a��3	�{�oB�
�&<�L[���Nc.���ö�i=�`�Q@�d���
͆I��.I��l�`\t�[< �Cit�48��4�-r���+��f��쑱�B��CB ��MH�	i����y}���>���rx����p|z�;B��Ǐ;�b�u��r���c�K����4t��z��1�G~����`���ؚ��K��|	̔>��ۡ��O$�����~
�Ao)���0pzz
�}i�����`;AD�����m8n:�cf�A@s7�����L��� Z�/..�����h8�o��r?
�
�N��9��3B��~o_��'`��o���pO-��
:�TG�	L;��7���]`���B���%�˛>��*wT���pM��0H�}&t����^1��'Oq�r'�2P�͡��+�z,tIW''|en������=dzg��R�m�[N�S�t�K{��҉m���ؓV�t�6���ҲR`����ζN�&}�B	U��(�r<�qȁVyr�rA**��دzg6�D#��	�����YP�`�����v���s���~(�z�Ml�e�|u���Q�a�*}�+T��
�����R��Xc"+*�N�l�N�hc�Ft�<N+;-}�،Xtٕ$��à^��|uv���*��~�'E�_�5���1�q�s�*�R�`�OΒ��9�#x4�4�9�#�������WHۏ����Z��)]0�`p�<��ߝ��N��oY{�4�7��6�ǹ�>�ۗ&��������1%�Q''���?�l��׸�+&�r{�j�N�಻���4�)���`�N狌�.��߭�� ���ǣ������������)q	�2�?���n�3H�b��`�}� ����.`�������pqY1�e_b����u�7��e+N�_F����(�D�T��,���L}LL�r��mP5��|��x芥1�c���x DAb������`��M(��7���NED�~<v\	%,�ߚ/����p���R��~/^����l��np�
��7t����0_���0���l4�����_����b�0�MWΦj�m����б�Ɏ�l
|re����
�ȫ`B-����v.i��Ro�x}�
�)����%#`�Ђ�R5C���A�2su���a���sYy3��=jaeoI�7�~�.�plA��΃�
`O��)��	^�>��Mz�	�+4���BXd.��Mz��v͈������P�d8�p��<6?��8�N��*x����.��6ڍ6G����F�Z�����)���O���	!��l�S�s���h����ss�N�p8�`'�0�/<����s���}�.�@Ǩ�s�7ξ�O۟V�D���a5��a�v��]������m1��+���3��y�6�۠���>@�u50��P�s����5��1=��=�p�� *��KV�ҫ܂�����ݻc$N�4�(�X�r2###c-��賟L���δ�>��]���5�.�s���Ys�1��f0�;�'̨��Y�g銛�{�@9��	���`aC(��=%b�o�2��=���n��1�	j��B��o��S$n���#���m����=i��0�c���������i9�}�oI��	���q�T��]�W%.��(��؅�]z�\�x�
f��"]o��'u�䫵�t�k{�v;A��C3ֆw��w�R_#��X��(x��ҋ/q%��W��������hp��k_I�X���'b��/fX��K�i�"#####�QCL�i��2t��
���5���L0
����Qi�H�2;y�T�Ook;ע�ٶ`��R��Ng{z�y�!�Kx�����m�?A(v��U�~���mL�(`o/!n���mX��-{�v����[�� d�w�=�n「�������sdw��z��n�(��}O�y�~����m�
���?XU�;,���V'+��V�&�J�R��Z]᧭�:����zC'��-߆����@�y
�4���u���`Vۓw��ъ#��zP@Q�
N>2/��{�\o)����W���~a�3xL�w
:_Q�;��=p�ּ�dt���\'8�����~3�SRP���6��y+�������X�����Q�*��޺r
����̗ѭ*��޺r
g��l�/�\U^��u�$����|mb��Vn����w�\V��|���D�͊NVN���y��7�������k<;��/�E}?E*dzg�O ���~���g��/9��6����f
c�D}%��g$�Q�G�7�o��)����UJ���o�,O@�0߾Q(����;�b����w����:5�	�N�wR��N5�I�y'K�?}��:9�m��ֽ��*���@f�@jU9�m���ҫ���Í�{����$�ؗ�}��dF���p��|%!DdF��>����}G��{���@FFFFFFƦQܞH �
�����3
��u	���M�o�����~�vy�}�m�wz<�7���nP9�r�Wk���u=����|��_�n����z쿳}@���IX�n�����?��s<uPIEND�B`�css/images/ui-icons_cd0a0a_256x240.png000060400000010421152455755750013175 0ustar00�PNG


IHDR��IJ��PLTE�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�FcNtRNS2P���."Tp@f`� <BHJZ&0R,�4���j���8D��|�������(��$�
��b���lߝF>n~�hh�H��IDATx��]�b۶�H�儒-{i�ZK:g�lk�n��-��tI��q�q?  E�$�dK>$�>�;������P�Z����s�V��h!�Sy��0E�0}H�)-���tk��o�ܪKp�\R�Ϡ ��.�E�7��
�)�*V;~�Pe��
Bx�*�,=$z��Dؾ���� ��J����Ҹٻ����9�{ ��������Ǹ�Hp�qW@��"2'���B��[�$�� @T��i�H�/��b٥9�6�!�X�Hq`DE��*R����
HV!�%�����;�������"����
�i��]�dddddddd�����4y���5 ��	�Rb�@(�8���Cd��Ū�ݡ�,�@T�@i���b�rq0a�lX!�������p��e�,	��=4bW �{�
5���Ƭhu~�(�Q�^@���3�=��"�b��5XC@J����C�����T��7��6�������q_����5��@,r	šɩ�D�)�T�|�O��@�
ON-ՙ��	�������[n@��R���X�Im�݋(���F �@�?��=0��puL��;g$��@6η��
�K`�>п� @h գ�KV�n�"a�"���%l�@.v�$/��U^��G�:#`�`�� �u��TtK��~�ŋ�Z��5T���%�k�x�����������k��]\*�Q��
,҇���B��44�OXK�|�y��g���+_M�(�lоE�O���
 V$�T1BX���b�-�|?@ �f��B�Xr�%'@ҹA\�I��J,}��BBc��\V
��r����h(�]tI��^���}���o�צo�S3�	";��ʙ���b}��"߰	��){b$�������Gwwݾ����������a���b"��)���T@p��F_er6JvШ���"m�ޭ�M-��d7��6��x����˰6ӥ;��/����`>KrP\��_���^u�1%��O�T�M���.�}���Q3���.Nس��}��)���>����-�w�`���a�����+sy$���t���)�N�bFFFF�Be�j��nN��Vn4��,��A*��X��*��5��>��P���G��a��3	�{�oB�
�&<�L[���Nc.���ö�i=�`�Q@�d���
͆I��.I��l�`\t�[< �Cit�48��4�-r���+��f��쑱�B��CB ��MH�	i����y}���>���rx����p|z�;B��Ǐ;�b�u��r���c�K����4t��z��1�G~����`���ؚ��K��|	̔>��ۡ��O$�����~
�Ao)���0pzz
�}i�����`;AD�����m8n:�cf�A@s7�����L��� Z�/..�����h8�o��r?
�
�N��9��3B��~o_��'`��o���pO-��
:�TG�	L;��7���]`���B���%�˛>��*wT���pM��0H�}&t����^1��'Oq�r'�2P�͡��+�z,tIW''|en������=dzg��R�m�[N�S�t�K{��҉m���ؓV�t�6���ҲR`����ζN�&}�B	U��(�r<�qȁVyr�rA**��دzg6�D#��	�����YP�`�����v���s���~(�z�Ml�e�|u���Q�a�*}�+T��
�����R��Xc"+*�N�l�N�hc�Ft�<N+;-}�،Xtٕ$��à^��|uv���*��~�'E�_�5���1�q�s�*�R�`�OΒ��9�#x4�4�9�#�������WHۏ����Z��)]0�`p�<��ߝ��N��oY{�4�7��6�ǹ�>�ۗ&��������1%�Q''���?�l��׸�+&�r{�j�N�಻���4�)���`�N狌�.��߭�� ���ǣ������������)q	�2�?���n�3H�b��`�}� ����.`�������pqY1�e_b����u�7��e+N�_F����(�D�T��,���L}LL�r��mP5��|��x芥1�c���x DAb������`��M(��7���NED�~<v\	%,�ߚ/����p���R��~/^����l��np�
��7t����0_���0���l4�����_����b�0�MWΦj�m����б�Ɏ�l
|re����
�ȫ`B-����v.i��Ro�x}�
�)����%#`�Ђ�R5C���A�2su���a���sYy3��=jaeoI�7�~�.�plA��΃�
`O��)��	^�>��Mz�	�+4���BXd.��Mz��v͈������P�d8�p��<6?��8�N��*x����.��6ڍ6G����F�Z�����)���O���	!��l�S�s���h����ss�N�p8�`'�0�/<����s���}�.�@Ǩ�s�7ξ�O۟V�D���a5��a�v��]������m1��+���3��y�6�۠���>@�u50��P�s����5��1=��=�p�� *��KV�ҫ܂�����ݻc$N�4�(�X�r2###c-��賟L���δ�>��]���5�.�s���Ys�1��f0�;�'̨��Y�g銛�{�@9��	���`aC(��=%b�o�2��=���n��1�	j��B��o��S$n���#���m����=i��0�c���������i9�}�oI��	���q�T��]�W%.��(��؅�]z�\�x�
f��"]o��'u�䫵�t�k{�v;A��C3ֆw��w�R_#��X��(x��ҋ/q%��W��������hp��k_I�X���'b��/fX��K�i�"#####�QCL�i��2t��
���5���L0
����Qi�H�2;y�T�Ook;ע�ٶ`��R��Ng{z�y�!�Kx�����m�?A(v��U�~���mL�(`o/!n���mX��-{�v����[�� d�w�=�n「�������sdw��z��n�(��}O�y�~����m�
���?XU�;,���V'+��V�&�J�R��Z]᧭�:����zC'��-߆����@�y
�4���u���`Vۓw��ъ#��zP@Q�
N>2/��{�\o)����W���~a�3xL�w
:_Q�;��=p�ּ�dt���\'8�����~3�SRP���6��y+�������X�����Q�*��޺r
����̗ѭ*��޺r
g��l�/�\U^��u�$����|mb��Vn����w�\V��|���D�͊NVN���y��7�������k<;��/�E}?E*dzg�O ���~���g��/9��6����f
c�D}%��g$�Q�G�7�o��)����UJ���o�,O@�0߾Q(����;�b����w����:5�	�N�wR��N5�I�y'K�?}��:9�m��ֽ��*���@f�@jU9�m���ҫ���Í�{����$�ؗ�}��dF���p��|%!DdF��>����}G��{���@FFFFFFƦQܞH �
�����3
��u	���M�o�����~�vy�}�m�wz<�7���nP9�r�Wk���u=����|��_�n����z쿳}@���IX�n�����?��s<uPIEND�B`�css/images/ui-bg_glass_75_dadada_1x400.png000060400000000157152455755750014153 0ustar00�PNG


IHDR�oX
�6IDAT8�cx���&�Qb�%�-���7(����`bbBf!�؈���(1J���c	ܠ��IEND�B`�css/images/ui-icons_888888_256x240.png000060400000010421152455755750012744 0ustar00�PNG


IHDR��IJ��PLTE����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ƁONtRNS2P���."Tp@f`� <BHJZ&0R,�4���j���8D��|�������(��$�
��b���lߝF>n~�hh�H��IDATx��]�b۶�H�儒-{i�ZK:g�lk�n��-��tI��q�q?  E�$�dK>$�>�;������P�Z����s�V��h!�Sy��0E�0}H�)-���tk��o�ܪKp�\R�Ϡ ��.�E�7��
�)�*V;~�Pe��
Bx�*�,=$z��Dؾ���� ��J����Ҹٻ����9�{ ��������Ǹ�Hp�qW@��"2'���B��[�$�� @T��i�H�/��b٥9�6�!�X�Hq`DE��*R����
HV!�%�����;�������"����
�i��]�dddddddd�����4y���5 ��	�Rb�@(�8���Cd��Ū�ݡ�,�@T�@i���b�rq0a�lX!�������p��e�,	��=4bW �{�
5���Ƭhu~�(�Q�^@���3�=��"�b��5XC@J����C�����T��7��6�������q_����5��@,r	šɩ�D�)�T�|�O��@�
ON-ՙ��	�������[n@��R���X�Im�݋(���F �@�?��=0��puL��;g$��@6η��
�K`�>п� @h գ�KV�n�"a�"���%l�@.v�$/��U^��G�:#`�`�� �u��TtK��~�ŋ�Z��5T���%�k�x�����������k��]\*�Q��
,҇���B��44�OXK�|�y��g���+_M�(�lоE�O���
 V$�T1BX���b�-�|?@ �f��B�Xr�%'@ҹA\�I��J,}��BBc��\V
��r����h(�]tI��^���}���o�צo�S3�	";��ʙ���b}��"߰	��){b$�������Gwwݾ����������a���b"��)���T@p��F_er6JvШ���"m�ޭ�M-��d7��6��x����˰6ӥ;��/����`>KrP\��_���^u�1%��O�T�M���.�}���Q3���.Nس��}��)���>����-�w�`���a�����+sy$���t���)�N�bFFFF�Be�j��nN��Vn4��,��A*��X��*��5��>��P���G��a��3	�{�oB�
�&<�L[���Nc.���ö�i=�`�Q@�d���
͆I��.I��l�`\t�[< �Cit�48��4�-r���+��f��쑱�B��CB ��MH�	i����y}���>���rx����p|z�;B��Ǐ;�b�u��r���c�K����4t��z��1�G~����`���ؚ��K��|	̔>��ۡ��O$�����~
�Ao)���0pzz
�}i�����`;AD�����m8n:�cf�A@s7�����L��� Z�/..�����h8�o��r?
�
�N��9��3B��~o_��'`��o���pO-��
:�TG�	L;��7���]`���B���%�˛>��*wT���pM��0H�}&t����^1��'Oq�r'�2P�͡��+�z,tIW''|en������=dzg��R�m�[N�S�t�K{��҉m���ؓV�t�6���ҲR`����ζN�&}�B	U��(�r<�qȁVyr�rA**��دzg6�D#��	�����YP�`�����v���s���~(�z�Ml�e�|u���Q�a�*}�+T��
�����R��Xc"+*�N�l�N�hc�Ft�<N+;-}�،Xtٕ$��à^��|uv���*��~�'E�_�5���1�q�s�*�R�`�OΒ��9�#x4�4�9�#�������WHۏ����Z��)]0�`p�<��ߝ��N��oY{�4�7��6�ǹ�>�ۗ&��������1%�Q''���?�l��׸�+&�r{�j�N�಻���4�)���`�N狌�.��߭�� ���ǣ������������)q	�2�?���n�3H�b��`�}� ����.`�������pqY1�e_b����u�7��e+N�_F����(�D�T��,���L}LL�r��mP5��|��x芥1�c���x DAb������`��M(��7���NED�~<v\	%,�ߚ/����p���R��~/^����l��np�
��7t����0_���0���l4�����_����b�0�MWΦj�m����б�Ɏ�l
|re����
�ȫ`B-����v.i��Ro�x}�
�)����%#`�Ђ�R5C���A�2su���a���sYy3��=jaeoI�7�~�.�plA��΃�
`O��)��	^�>��Mz�	�+4���BXd.��Mz��v͈������P�d8�p��<6?��8�N��*x����.��6ڍ6G����F�Z�����)���O���	!��l�S�s���h����ss�N�p8�`'�0�/<����s���}�.�@Ǩ�s�7ξ�O۟V�D���a5��a�v��]������m1��+���3��y�6�۠���>@�u50��P�s����5��1=��=�p�� *��KV�ҫ܂�����ݻc$N�4�(�X�r2###c-��賟L���δ�>��]���5�.�s���Ys�1��f0�;�'̨��Y�g銛�{�@9��	���`aC(��=%b�o�2��=���n��1�	j��B��o��S$n���#���m����=i��0�c���������i9�}�oI��	���q�T��]�W%.��(��؅�]z�\�x�
f��"]o��'u�䫵�t�k{�v;A��C3ֆw��w�R_#��X��(x��ҋ/q%��W��������hp��k_I�X���'b��/fX��K�i�"#####�QCL�i��2t��
���5���L0
����Qi�H�2;y�T�Ook;ע�ٶ`��R��Ng{z�y�!�Kx�����m�?A(v��U�~���mL�(`o/!n���mX��-{�v����[�� d�w�=�n「�������sdw��z��n�(��}O�y�~����m�
���?XU�;,���V'+��V�&�J�R��Z]᧭�:����zC'��-߆����@�y
�4���u���`Vۓw��ъ#��zP@Q�
N>2/��{�\o)����W���~a�3xL�w
:_Q�;��=p�ּ�dt���\'8�����~3�SRP���6��y+�������X�����Q�*��޺r
����̗ѭ*��޺r
g��l�/�\U^��u�$����|mb��Vn����w�\V��|���D�͊NVN���y��7�������k<;��/�E}?E*dzg�O ���~���g��/9��6����f
c�D}%��g$�Q�G�7�o��)����UJ���o�,O@�0߾Q(����;�b����w����:5�	�N�wR��N5�I�y'K�?}��:9�m��ֽ��*���@f�@jU9�m���ҫ���Í�{����$�ؗ�}��dF���p��|%!DdF��>����}G��{���@FFFFFFƦQܞH �
�����3
��u	���M�o�����~�vy�}�m�wz<�7���nP9�r�Wk���u=����|��_�n����z쿳}@���IX�n�����?��s<uPIEND�B`�css/images/ui-bg_glass_35_dddddd_1x400.png000060400000000155152455755750014156 0ustar00�PNG


IHDR�oX
�4IDAT8�cx���&�Qb�%�-���1FFFd!��Ą��5J����$b)	�mneIEND�B`�css/images/ui-bg_glass_100_f8f8f8_1x400.png000060400000000201152455755750014021 0ustar00�PNG


IHDR�_:MHIDAT8���1�@��1�I��2�!iFt�2�0�m$�9����Uա#bU�Qlw�C�O���{y���~n��S���IEND�B`�css/images/ui-bg_glass_95_fef1ec_1x400.png000060400000000167152455755750014111 0ustar00�PNG


IHDR�oX
�>IDAT8���1
�0Cџ��� �$�C�B���}1@)e_ƅ�`I8�-�%c�M0�����)�"
�
�LIEND�B`�css/images/ui-icons_3383bb_256x240.png000060400000010421152455755750013051 0ustar00�PNG


IHDR��IJ��PLTE4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��4��Z'?NtRNS2P���."Tp@f`� <BHJZ&0R,�4���j���8D��|�������(��$�
��b���lߝF>n~�hh�H��IDATx��]�b۶�H�儒-{i�ZK:g�lk�n��-��tI��q�q?  E�$�dK>$�>�;������P�Z����s�V��h!�Sy��0E�0}H�)-���tk��o�ܪKp�\R�Ϡ ��.�E�7��
�)�*V;~�Pe��
Bx�*�,=$z��Dؾ���� ��J����Ҹٻ����9�{ ��������Ǹ�Hp�qW@��"2'���B��[�$�� @T��i�H�/��b٥9�6�!�X�Hq`DE��*R����
HV!�%�����;�������"����
�i��]�dddddddd�����4y���5 ��	�Rb�@(�8���Cd��Ū�ݡ�,�@T�@i���b�rq0a�lX!�������p��e�,	��=4bW �{�
5���Ƭhu~�(�Q�^@���3�=��"�b��5XC@J����C�����T��7��6�������q_����5��@,r	šɩ�D�)�T�|�O��@�
ON-ՙ��	�������[n@��R���X�Im�݋(���F �@�?��=0��puL��;g$��@6η��
�K`�>п� @h գ�KV�n�"a�"���%l�@.v�$/��U^��G�:#`�`�� �u��TtK��~�ŋ�Z��5T���%�k�x�����������k��]\*�Q��
,҇���B��44�OXK�|�y��g���+_M�(�lоE�O���
 V$�T1BX���b�-�|?@ �f��B�Xr�%'@ҹA\�I��J,}��BBc��\V
��r����h(�]tI��^���}���o�צo�S3�	";��ʙ���b}��"߰	��){b$�������Gwwݾ����������a���b"��)���T@p��F_er6JvШ���"m�ޭ�M-��d7��6��x����˰6ӥ;��/����`>KrP\��_���^u�1%��O�T�M���.�}���Q3���.Nس��}��)���>����-�w�`���a�����+sy$���t���)�N�bFFFF�Be�j��nN��Vn4��,��A*��X��*��5��>��P���G��a��3	�{�oB�
�&<�L[���Nc.���ö�i=�`�Q@�d���
͆I��.I��l�`\t�[< �Cit�48��4�-r���+��f��쑱�B��CB ��MH�	i����y}���>���rx����p|z�;B��Ǐ;�b�u��r���c�K����4t��z��1�G~����`���ؚ��K��|	̔>��ۡ��O$�����~
�Ao)���0pzz
�}i�����`;AD�����m8n:�cf�A@s7�����L��� Z�/..�����h8�o��r?
�
�N��9��3B��~o_��'`��o���pO-��
:�TG�	L;��7���]`���B���%�˛>��*wT���pM��0H�}&t����^1��'Oq�r'�2P�͡��+�z,tIW''|en������=dzg��R�m�[N�S�t�K{��҉m���ؓV�t�6���ҲR`����ζN�&}�B	U��(�r<�qȁVyr�rA**��دzg6�D#��	�����YP�`�����v���s���~(�z�Ml�e�|u���Q�a�*}�+T��
�����R��Xc"+*�N�l�N�hc�Ft�<N+;-}�،Xtٕ$��à^��|uv���*��~�'E�_�5���1�q�s�*�R�`�OΒ��9�#x4�4�9�#�������WHۏ����Z��)]0�`p�<��ߝ��N��oY{�4�7��6�ǹ�>�ۗ&��������1%�Q''���?�l��׸�+&�r{�j�N�಻���4�)���`�N狌�.��߭�� ���ǣ������������)q	�2�?���n�3H�b��`�}� ����.`�������pqY1�e_b����u�7��e+N�_F����(�D�T��,���L}LL�r��mP5��|��x芥1�c���x DAb������`��M(��7���NED�~<v\	%,�ߚ/����p���R��~/^����l��np�
��7t����0_���0���l4�����_����b�0�MWΦj�m����б�Ɏ�l
|re����
�ȫ`B-����v.i��Ro�x}�
�)����%#`�Ђ�R5C���A�2su���a���sYy3��=jaeoI�7�~�.�plA��΃�
`O��)��	^�>��Mz�	�+4���BXd.��Mz��v͈������P�d8�p��<6?��8�N��*x����.��6ڍ6G����F�Z�����)���O���	!��l�S�s���h����ss�N�p8�`'�0�/<����s���}�.�@Ǩ�s�7ξ�O۟V�D���a5��a�v��]������m1��+���3��y�6�۠���>@�u50��P�s����5��1=��=�p�� *��KV�ҫ܂�����ݻc$N�4�(�X�r2###c-��賟L���δ�>��]���5�.�s���Ys�1��f0�;�'̨��Y�g銛�{�@9��	���`aC(��=%b�o�2��=���n��1�	j��B��o��S$n���#���m����=i��0�c���������i9�}�oI��	���q�T��]�W%.��(��؅�]z�\�x�
f��"]o��'u�䫵�t�k{�v;A��C3ֆw��w�R_#��X��(x��ҋ/q%��W��������hp��k_I�X���'b��/fX��K�i�"#####�QCL�i��2t��
���5���L0
����Qi�H�2;y�T�Ook;ע�ٶ`��R��Ng{z�y�!�Kx�����m�?A(v��U�~���mL�(`o/!n���mX��-{�v����[�� d�w�=�n「�������sdw��z��n�(��}O�y�~����m�
���?XU�;,���V'+��V�&�J�R��Z]᧭�:����zC'��-߆����@�y
�4���u���`Vۓw��ъ#��zP@Q�
N>2/��{�\o)����W���~a�3xL�w
:_Q�;��=p�ּ�dt���\'8�����~3�SRP���6��y+�������X�����Q�*��޺r
����̗ѭ*��޺r
g��l�/�\U^��u�$����|mb��Vn����w�\V��|���D�͊NVN���y��7�������k<;��/�E}?E*dzg�O ���~���g��/9��6����f
c�D}%��g$�Q�G�7�o��)����UJ���o�,O@�0߾Q(����;�b����w����:5�	�N�wR��N5�I�y'K�?}��:9�m��ֽ��*���@f�@jU9�m���ҫ���Í�{����$�ؗ�}��dF���p��|%!DdF��>����}G��{���@FFFFFFƦQܞH �
�����3
��u	���M�o�����~�vy�}�m�wz<�7���nP9�r�Wk���u=����|��_�n����z쿳}@���IX�n�����?��s<uPIEND�B`�css/tipTip.css000060400000004600152455755750007337 0ustar00/* TipTip CSS - Version 1.2 */

#tiptip_holder {
	display: none;
	position: absolute;
	top: 0;
	left: 0;
	z-index: 99999;
}

#tiptip_holder.tip_top {
	padding-bottom: 5px;
}

#tiptip_holder.tip_bottom {
	padding-top: 5px;
}

#tiptip_holder.tip_right {
	padding-left: 5px;
}

#tiptip_holder.tip_left {
	padding-right: 5px;
}

#tiptip_content {
	font-size: 11px;
	color: #fff;
	text-shadow: 0 0 2px #000;
	padding: 4px 8px;
	border: 1px solid rgba(255,255,255,0.25);
	background-color: rgb(25,25,25);
	background-color: rgba(25,25,25,0.92);
	background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(transparent), to(#000));
	border-radius: 3px;
	-webkit-border-radius: 3px;
	-moz-border-radius: 3px;
	box-shadow: 0 0 3px #555;
	-webkit-box-shadow: 0 0 3px #555;
	-moz-box-shadow: 0 0 3px #555;
}

#tiptip_arrow, #tiptip_arrow_inner {
	position: absolute;
	border-color: transparent;
	border-style: solid;
	border-width: 6px;
	height: 0;
	width: 0;
}

#tiptip_holder.tip_top #tiptip_arrow {
	border-top-color: #fff;
	border-top-color: rgba(255,255,255,0.35);
}

#tiptip_holder.tip_bottom #tiptip_arrow {
	border-bottom-color: #fff;
	border-bottom-color: rgba(255,255,255,0.35);
}

#tiptip_holder.tip_right #tiptip_arrow {
	border-right-color: #fff;
	border-right-color: rgba(255,255,255,0.35);
}

#tiptip_holder.tip_left #tiptip_arrow {
	border-left-color: #fff;
	border-left-color: rgba(255,255,255,0.35);
}

#tiptip_holder.tip_top #tiptip_arrow_inner {
	margin-top: -7px;
	margin-left: -6px;
	border-top-color: rgb(25,25,25);
	border-top-color: rgba(25,25,25,0.92);
}

#tiptip_holder.tip_bottom #tiptip_arrow_inner {
	margin-top: -5px;
	margin-left: -6px;
	border-bottom-color: rgb(25,25,25);
	border-bottom-color: rgba(25,25,25,0.92);
}

#tiptip_holder.tip_right #tiptip_arrow_inner {
	margin-top: -6px;
	margin-left: -5px;
	border-right-color: rgb(25,25,25);
	border-right-color: rgba(25,25,25,0.92);
}

#tiptip_holder.tip_left #tiptip_arrow_inner {
	margin-top: -6px;
	margin-left: -7px;
	border-left-color: rgb(25,25,25);
	border-left-color: rgba(25,25,25,0.92);
}

/* Webkit Hacks  */
@media screen and (-webkit-min-device-pixel-ratio:0) {	
	#tiptip_content {
		padding: 4px 8px 5px 8px;
		background-color: rgba(45,45,45,0.88);
	}
	#tiptip_holder.tip_bottom #tiptip_arrow_inner { 
		border-bottom-color: rgba(45,45,45,0.88);
	}
	#tiptip_holder.tip_top #tiptip_arrow_inner { 
		border-top-color: rgba(20,20,20,0.92);
	}
}css/template.j25.css000060400000430275152455755750010313 0ustar00
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
nav,
section {
	display: block;
}
audio,
canvas,
video {
	display: inline-block;
	*display: inline;
	*zoom: 1;
}
audio:not([controls]) {
	display: none;
}
html {
	font-size: 100%;
	-webkit-text-size-adjust: 100%;
	-ms-text-size-adjust: 100%;
}
a:focus {
	outline: thin dotted #333;
	outline: 5px auto -webkit-focus-ring-color;
	outline-offset: -2px;
}
a:hover,
a:active {
	outline: 0;
}
sub,
sup {
	position: relative;
	font-size: 75%;
	line-height: 0;
	vertical-align: baseline;
}
sup {
	top: -0.5em;
}
sub {
	bottom: -0.25em;
}
img {
	max-width: 100%;
	height: auto;
	vertical-align: middle;
	border: 0;
	-ms-interpolation-mode: bicubic;
}
#map_canvas img {
	max-width: none;
}
button,
input,
select,
textarea {
	margin: 0;
	font-size: 100%;
	vertical-align: middle;
}
button,
input {
	*overflow: visible;
	line-height: normal;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
	padding: 0;
	border: 0;
}
button,
input[type="button"],
input[type="reset"],
input[type="submit"] {
	cursor: pointer;
	-webkit-appearance: button;
}
input[type="search"] {
	-webkit-box-sizing: content-box;
	-moz-box-sizing: content-box;
	box-sizing: content-box;
	-webkit-appearance: textfield;
}
input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button {
	-webkit-appearance: none;
}
textarea {
	overflow: auto;
	vertical-align: top;
}
.clearfix {
	*zoom: 1;
}
.clearfix:before,
.clearfix:after {
	display: table;
	content: "";
	line-height: 0;
}
.clearfix:after {
	clear: both;
}
.hide-text {
	font: 0/0 a;
	color: transparent;
	text-shadow: none;
	background-color: transparent;
	border: 0;
}
.input-block-level {
	display: block;
	width: 100%;
	min-height: 30px;
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}
body {
	margin: 0;
	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
	font-size: 13px;
	line-height: 18px;
	color: #333;
	background-color: #fff;
}
a {
	color: #08c;
	text-decoration: none;
}
a:hover {
	color: #005580;
	text-decoration: underline;
}
.img-rounded {
	-webkit-border-radius: 6px;
	-moz-border-radius: 6px;
	border-radius: 6px;
}
.img-polaroid {
	padding: 4px;
	background-color: #fff;
	border: 1px solid #ccc;
	border: 1px solid rgba(0,0,0,0.2);
	-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.1);
	-moz-box-shadow: 0 1px 3px rgba(0,0,0,0.1);
	box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.img-circle {
	-webkit-border-radius: 500px;
	-moz-border-radius: 500px;
	border-radius: 500px;
}
.row {
	margin-left: -20px;
	*zoom: 1;
}
.row:before,
.row:after {
	display: table;
	content: "";
	line-height: 0;
}
.row:after {
	clear: both;
}
[class*="span"] {
	float: left;
	margin-left: 20px;
}
.container,
.navbar-static-top .container,
.navbar-fixed-top .container,
.navbar-fixed-bottom .container {
	width: 940px;
}
.span12 {
	width: 940px;
}
.span11 {
	width: 860px;
}
.span10 {
	width: 780px;
}
.span9 {
	width: 700px;
}
.span8 {
	width: 620px;
}
.span7 {
	width: 540px;
}
.span6 {
	width: 460px;
}
.span5 {
	width: 380px;
}
.span4 {
	width: 300px;
}
.span3 {
	width: 220px;
}
.span2 {
	width: 140px;
}
.span1 {
	width: 60px;
}
.offset12 {
	margin-left: 980px;
}
.offset11 {
	margin-left: 900px;
}
.offset10 {
	margin-left: 820px;
}
.offset9 {
	margin-left: 740px;
}
.offset8 {
	margin-left: 660px;
}
.offset7 {
	margin-left: 580px;
}
.offset6 {
	margin-left: 500px;
}
.offset5 {
	margin-left: 420px;
}
.offset4 {
	margin-left: 340px;
}
.offset3 {
	margin-left: 260px;
}
.offset2 {
	margin-left: 180px;
}
.offset1 {
	margin-left: 100px;
}
.row-fluid {
	width: 100%;
	*zoom: 1;
}
.row-fluid:before,
.row-fluid:after {
	display: table;
	content: "";
	line-height: 0;
}
.row-fluid:after {
	clear: both;
}
.row-fluid [class*="span"] {
	display: block;
	width: 100%;
	min-height: 30px;
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	float: left;
	margin-left: 2.1276595744681%;
	*margin-left: 2.0744680851064%;
}
.row-fluid [class*="span"]:first-child {
	margin-left: 0;
}
.row-fluid .span12 {
	width: 100%;
	*width: 99.946808510638%;
}
.row-fluid .span11 {
	width: 91.489361702128%;
	*width: 91.436170212766%;
}
.row-fluid .span10 {
	width: 82.978723404255%;
	*width: 82.925531914894%;
}
.row-fluid .span9 {
	width: 74.468085106383%;
	*width: 74.414893617021%;
}
.row-fluid .span8 {
	width: 65.957446808511%;
	*width: 65.904255319149%;
}
.row-fluid .span7 {
	width: 57.446808510638%;
	*width: 57.393617021277%;
}
.row-fluid .span6 {
	width: 48.936170212766%;
	*width: 48.882978723404%;
}
.row-fluid .span5 {
	width: 40.425531914894%;
	*width: 40.372340425532%;
}
.row-fluid .span4 {
	width: 31.914893617021%;
	*width: 31.86170212766%;
}
.row-fluid .span3 {
	width: 23.404255319149%;
	*width: 23.351063829787%;
}
.row-fluid .span2 {
	width: 14.893617021277%;
	*width: 14.840425531915%;
}
.row-fluid .span1 {
	width: 6.3829787234043%;
	*width: 6.3297872340426%;
}
.row-fluid .offset12 {
	margin-left: 104.25531914894%;
	*margin-left: 104.14893617021%;
}
.row-fluid .offset12:first-child {
	margin-left: 102.12765957447%;
	*margin-left: 102.02127659574%;
}
.row-fluid .offset11 {
	margin-left: 95.744680851064%;
	*margin-left: 95.63829787234%;
}
.row-fluid .offset11:first-child {
	margin-left: 93.617021276596%;
	*margin-left: 93.510638297872%;
}
.row-fluid .offset10 {
	margin-left: 87.234042553191%;
	*margin-left: 87.127659574468%;
}
.row-fluid .offset10:first-child {
	margin-left: 85.106382978723%;
	*margin-left: 85%;
}
.row-fluid .offset9 {
	margin-left: 78.723404255319%;
	*margin-left: 78.617021276596%;
}
.row-fluid .offset9:first-child {
	margin-left: 76.595744680851%;
	*margin-left: 76.489361702128%;
}
.row-fluid .offset8 {
	margin-left: 70.212765957447%;
	*margin-left: 70.106382978723%;
}
.row-fluid .offset8:first-child {
	margin-left: 68.085106382979%;
	*margin-left: 67.978723404255%;
}
.row-fluid .offset7 {
	margin-left: 61.702127659574%;
	*margin-left: 61.595744680851%;
}
.row-fluid .offset7:first-child {
	margin-left: 59.574468085106%;
	*margin-left: 59.468085106383%;
}
.row-fluid .offset6 {
	margin-left: 53.191489361702%;
	*margin-left: 53.085106382979%;
}
.row-fluid .offset6:first-child {
	margin-left: 51.063829787234%;
	*margin-left: 50.957446808511%;
}
.row-fluid .offset5 {
	margin-left: 44.68085106383%;
	*margin-left: 44.574468085106%;
}
.row-fluid .offset5:first-child {
	margin-left: 42.553191489362%;
	*margin-left: 42.446808510638%;
}
.row-fluid .offset4 {
	margin-left: 36.170212765957%;
	*margin-left: 36.063829787234%;
}
.row-fluid .offset4:first-child {
	margin-left: 34.042553191489%;
	*margin-left: 33.936170212766%;
}
.row-fluid .offset3 {
	margin-left: 27.659574468085%;
	*margin-left: 27.553191489362%;
}
.row-fluid .offset3:first-child {
	margin-left: 25.531914893617%;
	*margin-left: 25.425531914894%;
}
.row-fluid .offset2 {
	margin-left: 19.148936170213%;
	*margin-left: 19.042553191489%;
}
.row-fluid .offset2:first-child {
	margin-left: 17.021276595745%;
	*margin-left: 16.914893617021%;
}
.row-fluid .offset1 {
	margin-left: 10.63829787234%;
	*margin-left: 10.531914893617%;
}
.row-fluid .offset1:first-child {
	margin-left: 8.5106382978723%;
	*margin-left: 8.4042553191489%;
}
[class*="span"].hide,
.row-fluid [class*="span"].hide {
	display: none;
}
[class*="span"].pull-right,
.row-fluid [class*="span"].pull-right {
	float: right;
}
.container {
	margin-right: auto;
	margin-left: auto;
	*zoom: 1;
}
.container:before,
.container:after {
	display: table;
	content: "";
	line-height: 0;
}
.container:after {
	clear: both;
}
.container-fluid {
	padding-right: 20px;
	padding-left: 20px;
	*zoom: 1;
}
.container-fluid:before,
.container-fluid:after {
	display: table;
	content: "";
	line-height: 0;
}
.container-fluid:after {
	clear: both;
}
p {
	margin: 0 0 9px;
}
.lead {
	margin-bottom: 18px;
	font-size: 20px;
	font-weight: 200;
	line-height: 27px;
}
small {
	font-size: 85%;
}
strong {
	font-weight: bold;
}
em {
	font-style: italic;
}
cite {
	font-style: normal;
}
.muted {
	color: #999;
}
h1,
h2,
h3,
h4,
h5,
h6 {
	margin: 9px 0;
	font-family: inherit;
	font-weight: bold;
	line-height: 1;
	color: inherit;
	text-rendering: optimizelegibility;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small {
	font-weight: normal;
	line-height: 1;
	color: #999;
}
h1 {
	font-size: 36px;
	line-height: 40px;
}
h2 {
	font-size: 30px;
	line-height: 40px;
}
h3 {
	font-size: 24px;
	line-height: 40px;
}
h4 {
	font-size: 18px;
	line-height: 20px;
}
h5 {
	font-size: 14px;
	line-height: 20px;
}
h6 {
	font-size: 12px;
	line-height: 20px;
}
h1 small {
	font-size: 24px;
}
h2 small {
	font-size: 18px;
}
h3 small {
	font-size: 14px;
}
h4 small {
	font-size: 14px;
}
.page-header {
	padding-bottom: 8px;
	margin: 18px 0 27px;
	border-bottom: 1px solid #eee;
}
ul,
ol {
	padding: 0;
	margin: 0 0 9px 25px;
}
ul ul,
ul ol,
ol ol,
ol ul {
	margin-bottom: 0;
}
li {
	line-height: 18px;
}
ul.unstyled,
ol.unstyled {
	margin-left: 0;
	list-style: none;
}
dl {
	margin-bottom: 18px;
}
dt,
dd {
	line-height: 18px;
}
dt {
	font-weight: bold;
}
dd {
	margin-left: 9px;
}
.dl-horizontal dt {
	float: left;
	width: 120px;
	clear: left;
	text-align: right;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.dl-horizontal dd {
	margin-left: 130px;
}
hr {
	margin: 18px 0;
	border: 0;
	border-top: 1px solid #eee;
	border-bottom: 1px solid #fff;
}
abbr[title] {
	cursor: help;
	border-bottom: 1px dotted #999;
}
abbr.initialism {
	font-size: 90%;
	text-transform: uppercase;
}
blockquote {
	padding: 0 0 0 15px;
	margin: 0 0 18px;
	border-left: 5px solid #eee;
}
blockquote p {
	margin-bottom: 0;
	font-size: 16px;
	font-weight: 300;
	line-height: 22.5px;
}
blockquote small {
	display: block;
	line-height: 18px;
	color: #999;
}
blockquote small:before {
	content: '\2014 \00A0';
}
blockquote.pull-right {
	float: right;
	padding-right: 15px;
	padding-left: 0;
	border-right: 5px solid #eee;
	border-left: 0;
}
blockquote.pull-right p,
blockquote.pull-right small {
	text-align: right;
}
blockquote.pull-right small:before {
	content: '';
}
blockquote.pull-right small:after {
	content: '\00A0 \2014';
}
q:before,
q:after,
blockquote:before,
blockquote:after {
	content: "";
}
address {
	display: block;
	margin-bottom: 18px;
	font-style: normal;
	line-height: 18px;
}
code,
pre {
	padding: 0 3px 2px;
	font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
	font-size: 11px;
	color: #333;
	-webkit-border-radius: 3px;
	-moz-border-radius: 3px;
	border-radius: 3px;
}
code {
	padding: 2px 4px;
	color: #d14;
	background-color: #f7f7f9;
	border: 1px solid #e1e1e8;
}
pre {
	display: block;
	padding: 8.5px;
	margin: 0 0 9px;
	font-size: 12px;
	line-height: 18px;
	word-break: break-all;
	word-wrap: break-word;
	white-space: pre;
	white-space: pre-wrap;
	background-color: #f5f5f5;
	border: 1px solid #ccc;
	border: 1px solid rgba(0,0,0,0.15);
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
}
pre.prettyprint {
	margin-bottom: 18px;
}
pre code {
	padding: 0;
	color: inherit;
	background-color: transparent;
	border: 0;
}
.pre-scrollable {
	max-height: 340px;
	overflow-y: scroll;
}
form {
	margin: 0 0 18px;
}
fieldset {
	padding: 0;
	margin: 0;
	border: 0;
}
legend {
	display: block;
	width: 100%;
	padding: 0;
	margin-bottom: 18px;
	font-size: 19.5px;
	line-height: 36px;
	color: #333;
	border: 0;
	border-bottom: 1px solid #e5e5e5;
}
legend small {
	font-size: 13.5px;
	color: #999;
}
label,
input,
button,
select,
textarea {
	font-size: 13px;
	font-weight: normal;
	line-height: 18px;
}
input,
button,
select,
textarea {
	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
label {
	display: block;
	margin-bottom: 5px;
}
select,
textarea,
input[type="text"],
input[type="password"],
input[type="datetime"],
input[type="datetime-local"],
input[type="date"],
input[type="month"],
input[type="time"],
input[type="week"],
input[type="number"],
input[type="email"],
input[type="url"],
input[type="search"],
input[type="tel"],
input[type="color"],
.uneditable-input {
	display: inline-block;
	height: 18px;
	padding: 4px 6px;
	margin-bottom: 9px;
	font-size: 13px !important;
	line-height: 18px;
	color: #555;
	-webkit-border-radius: 3px;
	-moz-border-radius: 3px;
	border-radius: 3px;
}
input,
textarea {
	width: 210px;
}
textarea {
	height: auto;
}
textarea,
input[type="text"],
input[type="password"],
input[type="datetime"],
input[type="datetime-local"],
input[type="date"],
input[type="month"],
input[type="time"],
input[type="week"],
input[type="number"],
input[type="email"],
input[type="url"],
input[type="search"],
input[type="tel"],
input[type="color"],
.uneditable-input {
	background-color: #fff;
	border: 1px solid #ccc;
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
	-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
	box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
	-webkit-transition: border linear .2s, box-shadow linear .2s;
	-moz-transition: border linear .2s, box-shadow linear .2s;
	-o-transition: border linear .2s, box-shadow linear .2s;
	transition: border linear .2s, box-shadow linear .2s;
}
textarea:focus,
input[type="text"]:focus,
input[type="password"]:focus,
input[type="datetime"]:focus,
input[type="datetime-local"]:focus,
input[type="date"]:focus,
input[type="month"]:focus,
input[type="time"]:focus,
input[type="week"]:focus,
input[type="number"]:focus,
input[type="email"]:focus,
input[type="url"]:focus,
input[type="search"]:focus,
input[type="tel"]:focus,
input[type="color"]:focus,
.uneditable-input:focus {
	border-color: rgba(82,168,236,0.8);
	outline: 0;
	outline: thin dotted \9;
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
	-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
	box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
}
input[type="radio"],
input[type="checkbox"] {
	margin: 4px 0 0;
	*margin-top: 0;
	margin-top: 1px \9;
	line-height: normal;
	cursor: pointer;
}
input[type="file"],
input[type="image"],
input[type="submit"],
input[type="reset"],
input[type="button"],
input[type="radio"],
input[type="checkbox"] {
	width: auto;
}
select,
input[type="file"] {
	height: 30px;
	*margin-top: 4px;
	line-height: 30px;
}
select {
	width: 220px;
	border: 1px solid #bbb;
	background-color: #fff;
}
select[multiple],
select[size] {
	height: auto;
}
select:focus,
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
	outline: thin dotted #333;
	outline: 5px auto -webkit-focus-ring-color;
	outline-offset: -2px;
}
.uneditable-input,
.uneditable-textarea {
	color: #999;
	background-color: #fcfcfc;
	border-color: #ccc;
	-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.025);
	-moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.025);
	box-shadow: inset 0 1px 2px rgba(0,0,0,0.025);
	cursor: not-allowed;
}
.uneditable-input {
	overflow: hidden;
	white-space: nowrap;
}
.uneditable-textarea {
	width: auto;
	height: auto;
}
input:-moz-placeholder,
textarea:-moz-placeholder {
	color: #999;
}
input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
	color: #999;
}
input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
	color: #999;
}
.radio,
.checkbox {
	min-height: 18px;
	padding-left: 18px;
}
.radio input[type="radio"],
.checkbox input[type="checkbox"] {
	float: left;
	margin-left: -18px;
}
.controls > .radio:first-child,
.controls > .checkbox:first-child {
	padding-top: 5px;
}
.radio.inline,
.checkbox.inline {
	display: inline-block;
	padding-top: 5px;
	margin-bottom: 0;
	vertical-align: middle;
}
.radio.inline + .radio.inline,
.checkbox.inline + .checkbox.inline {
	margin-left: 10px;
}
.input-mini {
	width: 60px;
}
.input-small {
	width: 90px;
}
.input-medium {
	width: 150px;
}
.input-large {
	width: 210px;
}
.input-xlarge {
	width: 270px;
}
.input-xxlarge {
	width: 530px;
}
input[class*="span"],
select[class*="span"],
textarea[class*="span"],
.uneditable-input[class*="span"],
.row-fluid input[class*="span"],
.row-fluid select[class*="span"],
.row-fluid textarea[class*="span"],
.row-fluid .uneditable-input[class*="span"] {
	float: none;
	margin-left: 0;
}
.input-append input[class*="span"],
.input-append .uneditable-input[class*="span"],
.input-prepend input[class*="span"],
.input-prepend .uneditable-input[class*="span"],
.row-fluid input[class*="span"],
.row-fluid select[class*="span"],
.row-fluid textarea[class*="span"],
.row-fluid .uneditable-input[class*="span"],
.row-fluid .input-prepend [class*="span"],
.row-fluid .input-append [class*="span"] {
	display: inline-block;
}
input,
textarea,
.uneditable-input {
	margin-left: 0;
}
.controls-row [class*="span"] + [class*="span"] {
	margin-left: 20px;
}
input.span12, textarea.span12, .uneditable-input.span12 {
	width: 926px;
}
input.span11, textarea.span11, .uneditable-input.span11 {
	width: 846px;
}
input.span10, textarea.span10, .uneditable-input.span10 {
	width: 766px;
}
input.span9, textarea.span9, .uneditable-input.span9 {
	width: 686px;
}
input.span8, textarea.span8, .uneditable-input.span8 {
	width: 606px;
}
input.span7, textarea.span7, .uneditable-input.span7 {
	width: 526px;
}
input.span6, textarea.span6, .uneditable-input.span6 {
	width: 446px;
}
input.span5, textarea.span5, .uneditable-input.span5 {
	width: 366px;
}
input.span4, textarea.span4, .uneditable-input.span4 {
	width: 286px;
}
input.span3, textarea.span3, .uneditable-input.span3 {
	width: 206px;
}
input.span2, textarea.span2, .uneditable-input.span2 {
	width: 126px;
}
input.span1, textarea.span1, .uneditable-input.span1 {
	width: 46px;
}
.controls-row {
	*zoom: 1;
}
.controls-row:before,
.controls-row:after {
	display: table;
	content: "";
	line-height: 0;
}
.controls-row:after {
	clear: both;
}
.controls-row [class*="span"] {
	float: left;
}
input[disabled],
select[disabled],
textarea[disabled],
input[readonly],
select[readonly],
textarea[readonly] {
	cursor: not-allowed;
	background-color: #eee;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"][readonly],
input[type="checkbox"][readonly] {
	background-color: transparent;
}
.control-group.warning > label,
.control-group.warning .help-block,
.control-group.warning .help-inline {
	color: #c09853;
}
.control-group.warning .checkbox,
.control-group.warning .radio,
.control-group.warning input,
.control-group.warning select,
.control-group.warning textarea {
	color: #c09853;
	border-color: #c09853;
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
	-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
	box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
}
.control-group.warning .checkbox:focus,
.control-group.warning .radio:focus,
.control-group.warning input:focus,
.control-group.warning select:focus,
.control-group.warning textarea:focus {
	border-color: #a47e3c;
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #dbc59e;
	-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #dbc59e;
	box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #dbc59e;
}
.control-group.warning .input-prepend .add-on,
.control-group.warning .input-append .add-on {
	color: #c09853;
	background-color: #fcf8e3;
	border-color: #c09853;
}
.control-group.error > label,
.control-group.error .help-block,
.control-group.error .help-inline {
	color: #b94a48;
}
.control-group.error .checkbox,
.control-group.error .radio,
.control-group.error input,
.control-group.error select,
.control-group.error textarea {
	color: #b94a48;
	border-color: #b94a48;
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
	-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
	box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
}
.control-group.error .checkbox:focus,
.control-group.error .radio:focus,
.control-group.error input:focus,
.control-group.error select:focus,
.control-group.error textarea:focus {
	border-color: #953b39;
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #d59392;
	-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #d59392;
	box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #d59392;
}
.control-group.error .input-prepend .add-on,
.control-group.error .input-append .add-on {
	color: #b94a48;
	background-color: #f2dede;
	border-color: #b94a48;
}
.control-group.success > label,
.control-group.success .help-block,
.control-group.success .help-inline {
	color: #468847;
}
.control-group.success .checkbox,
.control-group.success .radio,
.control-group.success input,
.control-group.success select,
.control-group.success textarea {
	color: #468847;
	border-color: #468847;
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
	-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
	box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
}
.control-group.success .checkbox:focus,
.control-group.success .radio:focus,
.control-group.success input:focus,
.control-group.success select:focus,
.control-group.success textarea:focus {
	border-color: #356635;
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #7aba7b;
	-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #7aba7b;
	box-shadow: inset 0 1px 1px rgba(0,0,0,0.075), 0 0 6px #7aba7b;
}
.control-group.success .input-prepend .add-on,
.control-group.success .input-append .add-on {
	color: #468847;
	background-color: #dff0d8;
	border-color: #468847;
}
input:focus:required:invalid,
textarea:focus:required:invalid,
select:focus:required:invalid {
	color: #b94a48;
	border-color: #ee5f5b;
}
input:focus:required:invalid:focus,
textarea:focus:required:invalid:focus,
select:focus:required:invalid:focus {
	border-color: #e9322d;
	-webkit-box-shadow: 0 0 6px #f8b9b7;
	-moz-box-shadow: 0 0 6px #f8b9b7;
	box-shadow: 0 0 6px #f8b9b7;
}
.form-actions {
	padding: 17px 20px 18px;
	margin-top: 18px;
	margin-bottom: 18px;
	background-color: #f5f5f5;
	border-top: 1px solid #e5e5e5;
	*zoom: 1;
}
.form-actions:before,
.form-actions:after {
	display: table;
	content: "";
	line-height: 0;
}
.form-actions:after {
	clear: both;
}
.help-block,
.help-inline {
	color: #595959;
}
.help-block {
	display: block;
	margin-bottom: 9px;
}
.help-inline {
	display: inline-block;
	*display: inline;
	*zoom: 1;
	vertical-align: middle;
	padding-left: 5px;
}
.input-append,
.input-prepend {
	margin-bottom: 5px;
	font-size: 0;
	white-space: nowrap;
}
.input-append input,
.input-append select,
.input-append .uneditable-input,
.input-prepend input,
.input-prepend select,
.input-prepend .uneditable-input {
	position: relative;
	margin-bottom: 0;
	*margin-left: 0;
	font-size: 13px;
	vertical-align: top;
	-webkit-border-radius: 0 3px 3px 0;
	-moz-border-radius: 0 3px 3px 0;
	border-radius: 0 3px 3px 0;
}
.input-append input:focus,
.input-append select:focus,
.input-append .uneditable-input:focus,
.input-prepend input:focus,
.input-prepend select:focus,
.input-prepend .uneditable-input:focus {
	z-index: 2;
}
.input-append .add-on,
.input-prepend .add-on {
	display: inline-block;
	width: auto;
	height: 18px;
	min-width: 16px;
	padding: 4px 5px;
	font-size: 13px;
	font-weight: normal;
	line-height: 18px;
	text-align: center;
	text-shadow: 0 1px 0 #fff;
	background-color: #eee;
	border: 1px solid #ccc;
}
.input-append .add-on,
.input-append .btn,
.input-prepend .add-on,
.input-prepend .btn {
	margin-left: -1px;
	vertical-align: top;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
.input-append .active,
.input-prepend .active {
	background-color: #a9dba9;
	border-color: #46a546;
}
.input-prepend .add-on,
.input-prepend .btn {
	margin-right: -1px;
}
.input-prepend .add-on:first-child,
.input-prepend .btn:first-child {
	-webkit-border-radius: 3px 0 0 3px;
	-moz-border-radius: 3px 0 0 3px;
	border-radius: 3px 0 0 3px;
}
.input-append input,
.input-append select,
.input-append .uneditable-input {
	-webkit-border-radius: 3px 0 0 3px;
	-moz-border-radius: 3px 0 0 3px;
	border-radius: 3px 0 0 3px;
}
.input-append .add-on:last-child,
.input-append .btn:last-child {
	-webkit-border-radius: 0 3px 3px 0;
	-moz-border-radius: 0 3px 3px 0;
	border-radius: 0 3px 3px 0;
}
.input-prepend.input-append input,
.input-prepend.input-append select,
.input-prepend.input-append .uneditable-input {
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
.input-prepend.input-append .add-on:first-child,
.input-prepend.input-append .btn:first-child {
	margin-right: -1px;
	-webkit-border-radius: 3px 0 0 3px;
	-moz-border-radius: 3px 0 0 3px;
	border-radius: 3px 0 0 3px;
}
.input-prepend.input-append .add-on:last-child,
.input-prepend.input-append .btn:last-child {
	margin-left: -1px;
	-webkit-border-radius: 0 3px 3px 0;
	-moz-border-radius: 0 3px 3px 0;
	border-radius: 0 3px 3px 0;
}
input.search-query {
	padding-right: 14px;
	padding-right: 4px \9;
	padding-left: 14px;
	padding-left: 4px \9;
	margin-bottom: 0;
	-webkit-border-radius: 15px;
	-moz-border-radius: 15px;
	border-radius: 15px;
}
.form-search .input-append .search-query,
.form-search .input-prepend .search-query {
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
.form-search .input-append .search-query {
	-webkit-border-radius: 14px 0 0 14px;
	-moz-border-radius: 14px 0 0 14px;
	border-radius: 14px 0 0 14px;
}
.form-search .input-append .btn {
	-webkit-border-radius: 0 14px 14px 0;
	-moz-border-radius: 0 14px 14px 0;
	border-radius: 0 14px 14px 0;
}
.form-search .input-prepend .search-query {
	-webkit-border-radius: 0 14px 14px 0;
	-moz-border-radius: 0 14px 14px 0;
	border-radius: 0 14px 14px 0;
}
.form-search .input-prepend .btn {
	-webkit-border-radius: 14px 0 0 14px;
	-moz-border-radius: 14px 0 0 14px;
	border-radius: 14px 0 0 14px;
}
.form-search input,
.form-search textarea,
.form-search select,
.form-search .help-inline,
.form-search .uneditable-input,
.form-search .input-prepend,
.form-search .input-append,
.form-inline input,
.form-inline textarea,
.form-inline select,
.form-inline .help-inline,
.form-inline .uneditable-input,
.form-inline .input-prepend,
.form-inline .input-append,
.form-horizontal input,
.form-horizontal textarea,
.form-horizontal select,
.form-horizontal .help-inline,
.form-horizontal .uneditable-input,
.form-horizontal .input-prepend,
.form-horizontal .input-append {
	display: inline-block;
	*display: inline;
	*zoom: 1;
	margin-bottom: 0;
	vertical-align: middle;
}
.form-search .hide,
.form-inline .hide,
.form-horizontal .hide {
	display: none;
}
.form-search label,
.form-inline label,
.form-search .btn-group,
.form-inline .btn-group {
	display: inline-block;
}
.form-search .input-append,
.form-inline .input-append,
.form-search .input-prepend,
.form-inline .input-prepend {
	margin-bottom: 0;
}
.form-search .radio,
.form-search .checkbox,
.form-inline .radio,
.form-inline .checkbox {
	padding-left: 0;
	margin-bottom: 0;
	vertical-align: middle;
}
.form-search .radio input[type="radio"],
.form-search .checkbox input[type="checkbox"],
.form-inline .radio input[type="radio"],
.form-inline .checkbox input[type="checkbox"] {
	float: left;
	margin-right: 3px;
	margin-left: 0;
}
.control-group {
	margin-bottom: 9px;
}
legend + .control-group {
	margin-top: 18px;
	-webkit-margin-top-collapse: separate;
}
.form-horizontal .control-group {
	margin-bottom: 18px;
	*zoom: 1;
}
.form-horizontal .control-group:before,
.form-horizontal .control-group:after {
	display: table;
	content: "";
	line-height: 0;
}
.form-horizontal .control-group:after {
	clear: both;
}
.form-horizontal .control-label {
	float: left;
	width: 140px;
	padding-top: 5px;
	text-align: right;
}
.form-horizontal .controls {
	*display: inline-block;
	*padding-left: 20px;
	margin-left: 160px;
	*margin-left: 0;
}
.form-horizontal .controls:first-child {
	*padding-left: 160px;
}
.form-horizontal .help-block {
	margin-top: 9px;
	margin-bottom: 0;
}
.form-horizontal .form-actions {
	padding-left: 160px;
}
table {
	max-width: 100%;
	background-color: transparent;
	border-collapse: collapse;
	border-spacing: 0;
}
.table {
	width: 100%;
	margin-bottom: 18px;
}
.table th,
.table td {
	padding: 8px;
	line-height: 18px;
	text-align: left;
	vertical-align: top;
	border-top: 1px solid #ddd;
}
.table th {
	font-weight: bold;
}
.table thead th {
	vertical-align: bottom;
}
.table caption + thead tr:first-child th,
.table caption + thead tr:first-child td,
.table colgroup + thead tr:first-child th,
.table colgroup + thead tr:first-child td,
.table thead:first-child tr:first-child th,
.table thead:first-child tr:first-child td {
	border-top: 0;
}
.table tbody + tbody {
	border-top: 2px solid #ddd;
}
.table-condensed th,
.table-condensed td {
	padding: 4px 5px;
}
.table-bordered {
	border: 1px solid #ddd;
	border-collapse: separate;
	*border-collapse: collapse;
	border-left: 0;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
}
.table-bordered th,
.table-bordered td {
	border-left: 1px solid #ddd;
}
.table-bordered caption + thead tr:first-child th,
.table-bordered caption + tbody tr:first-child th,
.table-bordered caption + tbody tr:first-child td,
.table-bordered colgroup + thead tr:first-child th,
.table-bordered colgroup + tbody tr:first-child th,
.table-bordered colgroup + tbody tr:first-child td,
.table-bordered thead:first-child tr:first-child th,
.table-bordered tbody:first-child tr:first-child th,
.table-bordered tbody:first-child tr:first-child td {
	border-top: 0;
}
.table-bordered thead:first-child tr:first-child th:first-child,
.table-bordered tbody:first-child tr:first-child td:first-child {
	-webkit-border-top-left-radius: 4px;
	border-top-left-radius: 4px;
	-moz-border-radius-topleft: 4px;
}
.table-bordered thead:first-child tr:first-child th:last-child,
.table-bordered tbody:first-child tr:first-child td:last-child {
	-webkit-border-top-right-radius: 4px;
	border-top-right-radius: 4px;
	-moz-border-radius-topright: 4px;
}
.table-bordered thead:last-child tr:last-child th:first-child,
.table-bordered tbody:last-child tr:last-child td:first-child,
.table-bordered tfoot:last-child tr:last-child td:first-child {
	-webkit-border-radius: 0 0 0 4px;
	-moz-border-radius: 0 0 0 4px;
	border-radius: 0 0 0 4px;
	-webkit-border-bottom-left-radius: 4px;
	border-bottom-left-radius: 4px;
	-moz-border-radius-bottomleft: 4px;
}
.table-bordered thead:last-child tr:last-child th:last-child,
.table-bordered tbody:last-child tr:last-child td:last-child,
.table-bordered tfoot:last-child tr:last-child td:last-child {
	-webkit-border-bottom-right-radius: 4px;
	border-bottom-right-radius: 4px;
	-moz-border-radius-bottomright: 4px;
}
.table-bordered caption + thead tr:first-child th:first-child,
.table-bordered caption + tbody tr:first-child td:first-child,
.table-bordered colgroup + thead tr:first-child th:first-child,
.table-bordered colgroup + tbody tr:first-child td:first-child {
	-webkit-border-top-left-radius: 4px;
	border-top-left-radius: 4px;
	-moz-border-radius-topleft: 4px;
}
.table-bordered caption + thead tr:first-child th:last-child,
.table-bordered caption + tbody tr:first-child td:last-child,
.table-bordered colgroup + thead tr:first-child th:last-child,
.table-bordered colgroup + tbody tr:first-child td:last-child {
	-webkit-border-top-right-radius: 4px;
	border-top-right-radius: 4px;
	-moz-border-right-topleft: 4px;
}
.table-striped tbody tr:nth-child(odd) td,
.table-striped tbody tr:nth-child(odd) th {
	background-color: #f9f9f9;
}
.table-hover tbody tr:hover td,
.table-hover tbody tr:hover th {
	background-color: #f5f5f5;
}
table [class*=span],
.row-fluid table [class*=span] {
	display: table-cell;
	float: none;
	margin-left: 0;
}
table .span1 {
	float: none;
	width: 44px;
	margin-left: 0;
}
table .span2 {
	float: none;
	width: 124px;
	margin-left: 0;
}
table .span3 {
	float: none;
	width: 204px;
	margin-left: 0;
}
table .span4 {
	float: none;
	width: 284px;
	margin-left: 0;
}
table .span5 {
	float: none;
	width: 364px;
	margin-left: 0;
}
table .span6 {
	float: none;
	width: 444px;
	margin-left: 0;
}
table .span7 {
	float: none;
	width: 524px;
	margin-left: 0;
}
table .span8 {
	float: none;
	width: 604px;
	margin-left: 0;
}
table .span9 {
	float: none;
	width: 684px;
	margin-left: 0;
}
table .span10 {
	float: none;
	width: 764px;
	margin-left: 0;
}
table .span11 {
	float: none;
	width: 844px;
	margin-left: 0;
}
table .span12 {
	float: none;
	width: 924px;
	margin-left: 0;
}
table .span13 {
	float: none;
	width: 1004px;
	margin-left: 0;
}
table .span14 {
	float: none;
	width: 1084px;
	margin-left: 0;
}
table .span15 {
	float: none;
	width: 1164px;
	margin-left: 0;
}
table .span16 {
	float: none;
	width: 1244px;
	margin-left: 0;
}
table .span17 {
	float: none;
	width: 1324px;
	margin-left: 0;
}
table .span18 {
	float: none;
	width: 1404px;
	margin-left: 0;
}
table .span19 {
	float: none;
	width: 1484px;
	margin-left: 0;
}
table .span20 {
	float: none;
	width: 1564px;
	margin-left: 0;
}
table .span21 {
	float: none;
	width: 1644px;
	margin-left: 0;
}
table .span22 {
	float: none;
	width: 1724px;
	margin-left: 0;
}
table .span23 {
	float: none;
	width: 1804px;
	margin-left: 0;
}
table .span24 {
	float: none;
	width: 1884px;
	margin-left: 0;
}
.table tbody tr.success td {
	background-color: #dff0d8;
}
.table tbody tr.error td {
	background-color: #f2dede;
}
.table tbody tr.info td {
	background-color: #d9edf7;
}
.dropup,
.dropdown {
	position: relative;
}
.dropdown-toggle {
	*margin-bottom: -3px;
}
.dropdown-toggle:active,
.open .dropdown-toggle {
	outline: 0;
}
.caret {
	display: inline-block;
	width: 0;
	height: 0;
	vertical-align: top;
	border-top: 4px solid #000;
	border-right: 4px solid transparent;
	border-left: 4px solid transparent;
	content: "";
}
.dropdown .caret {
	margin-top: 8px;
	margin-left: 2px;
}
.dropdown-menu {
	position: absolute;
	top: 100%;
	left: 0;
	z-index: 1000;
	display: none;
	float: left;
	min-width: 160px;
	padding: 5px 0;
	margin: 2px 0 0;
	list-style: none;
	background-color: #fff;
	border: 1px solid #ccc;
	border: 1px solid rgba(0,0,0,0.2);
	*border-right-width: 2px;
	*border-bottom-width: 2px;
	-webkit-border-radius: 6px;
	-moz-border-radius: 6px;
	border-radius: 6px;
	-webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.2);
	-moz-box-shadow: 0 5px 10px rgba(0,0,0,0.2);
	box-shadow: 0 5px 10px rgba(0,0,0,0.2);
	-webkit-background-clip: padding-box;
	-moz-background-clip: padding;
	background-clip: padding-box;
}
.dropdown-menu.pull-right {
	right: 0;
	left: auto;
}
.dropdown-menu .divider {
	*width: 100%;
	height: 1px;
	margin: 8px 1px;
	*margin: -5px 0 5px;
	overflow: hidden;
	background-color: #e5e5e5;
	border-bottom: 1px solid #fff;
}
.dropdown-menu a {
	display: block;
	padding: 3px 20px;
	clear: both;
	font-weight: normal;
	line-height: 18px;
	color: #333;
	white-space: nowrap;
}
.dropdown-menu li > a:hover,
.dropdown-menu li > a:focus,
.dropdown-submenu:hover > a {
	text-decoration: none;
	color: #fff;
	background-color: #08c;
	background-color: #0081c2;
	background-image: -moz-linear-gradient(top,#08c,#0077b3);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));
	background-image: -webkit-linear-gradient(top,#08c,#0077b3);
	background-image: -o-linear-gradient(top,#08c,#0077b3);
	background-image: linear-gradient(to bottom,#08c,#0077b3);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0076b2', GradientType=0);
}
.dropdown-menu .active > a,
.dropdown-menu .active > a:hover {
	color: #fff;
	text-decoration: none;
	outline: 0;
	background-color: #08c;
	background-color: #0081c2;
	background-image: -moz-linear-gradient(top,#08c,#0077b3);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));
	background-image: -webkit-linear-gradient(top,#08c,#0077b3);
	background-image: -o-linear-gradient(top,#08c,#0077b3);
	background-image: linear-gradient(to bottom,#08c,#0077b3);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0076b2', GradientType=0);
}
.dropdown-menu .disabled > a,
.dropdown-menu .disabled > a:hover {
	color: #999;
}
.dropdown-menu .disabled > a:hover {
	text-decoration: none;
	background-color: transparent;
	cursor: default;
}
.open {
	*z-index: 1000;
}
.open > .dropdown-menu {
	display: block;
}
.pull-right > .dropdown-menu {
	right: 0;
	left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
	border-top: 0;
	border-bottom: 4px solid #000;
	content: "\2191";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
	top: auto;
	bottom: 100%;
	margin-bottom: 1px;
}
.dropdown-submenu {
	position: relative;
}
.dropdown-submenu > .dropdown-menu {
	top: 0;
	left: 100%;
	margin-top: -6px;
	margin-left: -1px;
	-webkit-border-radius: 0 6px 6px 6px;
	-moz-border-radius: 0 6px 6px 6px;
	border-radius: 0 6px 6px 6px;
}
.dropdown-submenu:hover .dropdown-menu {
	display: block;
}
.dropdown-submenu > a:after {
	display: block;
	content: " ";
	float: right;
	width: 0;
	height: 0;
	border-color: transparent;
	border-style: solid;
	border-width: 5px 0 5px 5px;
	border-left-color: #cccccc;
	margin-top: 5px;
	margin-right: -10px;
}
.dropdown-submenu:hover > a:after {
	border-left-color: #fff;
}
.dropdown .dropdown-menu .nav-header {
	padding-left: 20px;
	padding-right: 20px;
}
.typeahead {
	margin-top: 2px;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
}
.well {
	min-height: 20px;
	padding: 19px;
	margin-bottom: 20px;
	background-color: #f5f5f5;
	border: 1px solid #e3e3e3;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
	-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
	box-shadow: inset 0 1px 1px rgba(0,0,0,0.05);
}
.well blockquote {
	border-color: #ddd;
	border-color: rgba(0,0,0,0.15);
}
.well-large {
	padding: 24px;
	-webkit-border-radius: 6px;
	-moz-border-radius: 6px;
	border-radius: 6px;
}
.well-small {
	padding: 9px;
	-webkit-border-radius: 3px;
	-moz-border-radius: 3px;
	border-radius: 3px;
}
.fade {
	opacity: 0;
	-webkit-transition: opacity .15s linear;
	-moz-transition: opacity .15s linear;
	-o-transition: opacity .15s linear;
	transition: opacity .15s linear;
}
.fade.in {
	opacity: 1;
}
.collapse {
	position: relative;
	height: 0;
	overflow: hidden;
	-webkit-transition: height .35s ease;
	-moz-transition: height .35s ease;
	-o-transition: height .35s ease;
	transition: height .35s ease;
}
.collapse.in {
	height: auto;
}
.close {
	float: right;
	font-size: 20px;
	font-weight: bold;
	line-height: 18px;
	color: #000;
	text-shadow: 0 1px 0 #ffffff;
	opacity: 0.2;
	filter: alpha(opacity=20);
}
.close:hover {
	color: #000;
	text-decoration: none;
	cursor: pointer;
	opacity: 0.4;
	filter: alpha(opacity=40);
}
button.close {
	padding: 0;
	cursor: pointer;
	background: transparent;
	border: 0;
	-webkit-appearance: none;
}
.btn {
	display: inline-block;
	*display: inline;
	*zoom: 1;
	padding: 4px 14px;
	margin-bottom: 0;
	font-size: 13px;
	line-height: 18px;
	*line-height: 18px;
	text-align: center;
	vertical-align: middle;
	cursor: pointer;
	color: #333;
	text-shadow: 0 1px 1px rgba(255,255,255,0.75);
	background-color: #f5f5f5;
	background-image: -moz-linear-gradient(top,#fff,#e6e6e6);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));
	background-image: -webkit-linear-gradient(top,#fff,#e6e6e6);
	background-image: -o-linear-gradient(top,#fff,#e6e6e6);
	background-image: linear-gradient(to bottom,#fff,#e6e6e6);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe5e5e5', GradientType=0);
	border-color: #e6e6e6 #e6e6e6 #bfbfbf;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #e6e6e6;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
	border: 1px solid #bbb;
	*border: 0;
	border-bottom-color: #a2a2a2;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
	*margin-left: .3em;
	-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
}
.btn:hover,
.btn:active,
.btn.active,
.btn.disabled,
.btn[disabled] {
	color: #333;
	background-color: #e6e6e6;
	*background-color: #d9d9d9;
}
.btn:active,
.btn.active {
	background-color: #cccccc \9;
}
.btn:first-child {
	*margin-left: 0;
}
.btn:hover {
	color: #333;
	text-decoration: none;
	background-color: #e6e6e6;
	*background-color: #d9d9d9;
	background-position: 0 -15px;
	-webkit-transition: background-position .1s linear;
	-moz-transition: background-position .1s linear;
	-o-transition: background-position .1s linear;
	transition: background-position .1s linear;
}
.btn:focus {
	outline: thin dotted #333;
	outline: 5px auto -webkit-focus-ring-color;
	outline-offset: -2px;
}
.btn.active,
.btn:active {
	background-color: #e6e6e6;
	background-color: #d9d9d9 \9;
	background-image: none;
	outline: 0;
	-webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
	-moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
	box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
}
.btn.disabled,
.btn[disabled] {
	cursor: default;
	background-color: #e6e6e6;
	background-image: none;
	opacity: 0.65;
	filter: alpha(opacity=65);
	-webkit-box-shadow: none;
	-moz-box-shadow: none;
	box-shadow: none;
}
.btn-large {
	padding: 9px 14px;
	font-size: 15px;
	line-height: normal;
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	border-radius: 5px;
}
.btn-large [class^="icon-"] {
	margin-top: 2px;
}
.btn-small {
	padding: 3px 9px;
	font-size: 11px;
	line-height: 16px;
}
.btn-small [class^="icon-"] {
	margin-top: 0;
}
.btn-mini {
	padding: 2px 6px;
	font-size: 10px;
	line-height: 14px;
}
.btn-block {
	display: block;
	width: 100%;
	padding-left: 0;
	padding-right: 0;
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}
.btn-block + .btn-block {
	margin-top: 5px;
}
.btn-primary.active,
.btn-warning.active,
.btn-danger.active,
.btn-success.active,
.btn-info.active,
.btn-inverse.active {
	color: rgba(255,255,255,0.75);
}
.btn {
	border-color: #c5c5c5;
	border-color: rgba(0,0,0,0.15) rgba(0,0,0,0.15) rgba(0,0,0,0.25);
}
.btn-primary {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #1d6cb0;
	background-image: -moz-linear-gradient(top,#2384d3,#15497c);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#2384d3),to(#15497c));
	background-image: -webkit-linear-gradient(top,#2384d3,#15497c);
	background-image: -o-linear-gradient(top,#2384d3,#15497c);
	background-image: linear-gradient(to bottom,#2384d3,#15497c);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2384d3', endColorstr='#ff15497c', GradientType=0);
	border-color: #15497c #15497c #0a223b;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #15497c;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-primary:hover,
.btn-primary:active,
.btn-primary.active,
.btn-primary.disabled,
.btn-primary[disabled] {
	color: #fff;
	background-color: #15497c;
	*background-color: #113c66;
}
.btn-primary:active,
.btn-primary.active {
	background-color: #0e2f50 \9;
}
.btn-warning {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #faa732;
	background-image: -moz-linear-gradient(top,#fbb450,#f89406);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));
	background-image: -webkit-linear-gradient(top,#fbb450,#f89406);
	background-image: -o-linear-gradient(top,#fbb450,#f89406);
	background-image: linear-gradient(to bottom,#fbb450,#f89406);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffab44f', endColorstr='#fff89406', GradientType=0);
	border-color: #f89406 #f89406 #ad6704;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #f89406;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-warning:hover,
.btn-warning:active,
.btn-warning.active,
.btn-warning.disabled,
.btn-warning[disabled] {
	color: #fff;
	background-color: #f89406;
	*background-color: #df8505;
}
.btn-warning:active,
.btn-warning.active {
	background-color: #c67605 \9;
}
.btn-danger {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #da4f49;
	background-image: -moz-linear-gradient(top,#ee5f5b,#bd362f);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));
	background-image: -webkit-linear-gradient(top,#ee5f5b,#bd362f);
	background-image: -o-linear-gradient(top,#ee5f5b,#bd362f);
	background-image: linear-gradient(to bottom,#ee5f5b,#bd362f);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
	border-color: #bd362f #bd362f #802420;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #bd362f;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-danger:hover,
.btn-danger:active,
.btn-danger.active,
.btn-danger.disabled,
.btn-danger[disabled] {
	color: #fff;
	background-color: #bd362f;
	*background-color: #a9302a;
}
.btn-danger:active,
.btn-danger.active {
	background-color: #942a25 \9;
}
.btn-success {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #5bb75b;
	background-image: -moz-linear-gradient(top,#62c462,#51a351);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));
	background-image: -webkit-linear-gradient(top,#62c462,#51a351);
	background-image: -o-linear-gradient(top,#62c462,#51a351);
	background-image: linear-gradient(to bottom,#62c462,#51a351);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
	border-color: #51a351 #51a351 #387038;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #51a351;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-success:hover,
.btn-success:active,
.btn-success.active,
.btn-success.disabled,
.btn-success[disabled] {
	color: #fff;
	background-color: #51a351;
	*background-color: #499249;
}
.btn-success:active,
.btn-success.active {
	background-color: #408140 \9;
}
.btn-info {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #49afcd;
	background-image: -moz-linear-gradient(top,#5bc0de,#2f96b4);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));
	background-image: -webkit-linear-gradient(top,#5bc0de,#2f96b4);
	background-image: -o-linear-gradient(top,#5bc0de,#2f96b4);
	background-image: linear-gradient(to bottom,#5bc0de,#2f96b4);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
	border-color: #2f96b4 #2f96b4 #1f6377;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #2f96b4;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-info:hover,
.btn-info:active,
.btn-info.active,
.btn-info.disabled,
.btn-info[disabled] {
	color: #fff;
	background-color: #2f96b4;
	*background-color: #2a85a0;
}
.btn-info:active,
.btn-info.active {
	background-color: #24748c \9;
}
.btn-inverse {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #363636;
	background-image: -moz-linear-gradient(top,#444,#222);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));
	background-image: -webkit-linear-gradient(top,#444,#222);
	background-image: -o-linear-gradient(top,#444,#222);
	background-image: linear-gradient(to bottom,#444,#222);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
	border-color: #222 #222 #000000;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #222;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-inverse:hover,
.btn-inverse:active,
.btn-inverse.active,
.btn-inverse.disabled,
.btn-inverse[disabled] {
	color: #fff;
	background-color: #222;
	*background-color: #151515;
}
.btn-inverse:active,
.btn-inverse.active {
	background-color: #090909 \9;
}
button.btn,
input[type="submit"].btn {
	*padding-top: 3px;
	*padding-bottom: 3px;
}
button.btn::-moz-focus-inner,
input[type="submit"].btn::-moz-focus-inner {
	padding: 0;
	border: 0;
}
button.btn.btn-large,
input[type="submit"].btn.btn-large {
	*padding-top: 7px;
	*padding-bottom: 7px;
}
button.btn.btn-small,
input[type="submit"].btn.btn-small {
	*padding-top: 3px;
	*padding-bottom: 3px;
}
button.btn.btn-mini,
input[type="submit"].btn.btn-mini {
	*padding-top: 1px;
	*padding-bottom: 1px;
}
.btn-link,
.btn-link:active {
	background-color: transparent;
	background-image: none;
	-webkit-box-shadow: none;
	-moz-box-shadow: none;
	box-shadow: none;
}
.btn-link {
	border-color: transparent;
	cursor: pointer;
	color: #08c;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
.btn-link:hover {
	color: #005580;
	text-decoration: underline;
	background-color: transparent;
}
.btn-group {
	position: relative;
	font-size: 0;
	white-space: nowrap;
	*margin-left: .3em;
}
.btn-group:first-child {
	*margin-left: 0;
}
.btn-group + .btn-group {
	margin-left: 5px;
}
.btn-toolbar {
	font-size: 0;
	margin-top: 9px;
	margin-bottom: 9px;
}
.btn-toolbar .btn-group {
	display: inline-block;
	*display: inline;
	*zoom: 1;
}
.btn-toolbar .btn + .btn,
.btn-toolbar .btn-group + .btn,
.btn-toolbar .btn + .btn-group {
	margin-left: 5px;
}
.btn-group > .btn {
	position: relative;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
.btn-group > .btn + .btn {
	margin-left: -1px;
}
.btn-group > .btn,
.btn-group > .dropdown-menu {
	font-size: 13px;
}
.btn-group > .btn-mini {
	font-size: 11px;
}
.btn-group > .btn-small {
	font-size: 12px;
}
.btn-group > .btn-large {
	font-size: 16px;
}
.btn-group > .btn:first-child {
	margin-left: 0;
	-webkit-border-top-left-radius: 4px;
	-moz-border-radius-topleft: 4px;
	border-top-left-radius: 4px;
	-webkit-border-bottom-left-radius: 4px;
	-moz-border-radius-bottomleft: 4px;
	border-bottom-left-radius: 4px;
}
.btn-group > .btn:last-child,
.btn-group > .dropdown-toggle {
	-webkit-border-top-right-radius: 4px;
	-moz-border-radius-topright: 4px;
	border-top-right-radius: 4px;
	-webkit-border-bottom-right-radius: 4px;
	-moz-border-radius-bottomright: 4px;
	border-bottom-right-radius: 4px;
}
.btn-group > .btn.large:first-child {
	margin-left: 0;
	-webkit-border-top-left-radius: 6px;
	-moz-border-radius-topleft: 6px;
	border-top-left-radius: 6px;
	-webkit-border-bottom-left-radius: 6px;
	-moz-border-radius-bottomleft: 6px;
	border-bottom-left-radius: 6px;
}
.btn-group > .btn.large:last-child,
.btn-group > .large.dropdown-toggle {
	-webkit-border-top-right-radius: 6px;
	-moz-border-radius-topright: 6px;
	border-top-right-radius: 6px;
	-webkit-border-bottom-right-radius: 6px;
	-moz-border-radius-bottomright: 6px;
	border-bottom-right-radius: 6px;
}
.btn-group > .btn:hover,
.btn-group > .btn:focus,
.btn-group > .btn:active,
.btn-group > .btn.active {
	z-index: 2;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
	outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
	padding-left: 8px;
	padding-right: 8px;
	-webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	-moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	*padding-top: 5px;
	*padding-bottom: 5px;
}
.btn-group > .btn-mini + .dropdown-toggle {
	padding-left: 5px;
	padding-right: 5px;
	*padding-top: 2px;
	*padding-bottom: 2px;
}
.btn-group > .btn-small + .dropdown-toggle {
	*padding-top: 5px;
	*padding-bottom: 4px;
}
.btn-group > .btn-large + .dropdown-toggle {
	padding-left: 12px;
	padding-right: 12px;
	*padding-top: 7px;
	*padding-bottom: 7px;
}
.btn-group.open .dropdown-toggle {
	background-image: none;
	-webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
	-moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
	box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
}
.btn-group.open .btn.dropdown-toggle {
	background-color: #e6e6e6;
}
.btn-group.open .btn-primary.dropdown-toggle {
	background-color: #15497c;
}
.btn-group.open .btn-warning.dropdown-toggle {
	background-color: #f89406;
}
.btn-group.open .btn-danger.dropdown-toggle {
	background-color: #bd362f;
}
.btn-group.open .btn-success.dropdown-toggle {
	background-color: #51a351;
}
.btn-group.open .btn-info.dropdown-toggle {
	background-color: #2f96b4;
}
.btn-group.open .btn-inverse.dropdown-toggle {
	background-color: #222;
}
.btn .caret {
	margin-top: 8px;
	margin-left: 0;
}
.btn-mini .caret,
.btn-small .caret,
.btn-large .caret {
	margin-top: 6px;
}
.btn-large .caret {
	border-left-width: 5px;
	border-right-width: 5px;
	border-top-width: 5px;
}
.dropup .btn-large .caret {
	border-bottom: 5px solid #000;
	border-top: 0;
}
.btn-primary .caret,
.btn-warning .caret,
.btn-danger .caret,
.btn-info .caret,
.btn-success .caret,
.btn-inverse .caret {
	border-top-color: #fff;
	border-bottom-color: #fff;
}
.btn-group-vertical {
	display: inline-block;
	*display: inline;
	*zoom: 1;
}
.btn-group-vertical .btn {
	display: block;
	float: none;
	width: 100%;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
.btn-group-vertical .btn + .btn {
	margin-left: 0;
	margin-top: -1px;
}
.btn-group-vertical .btn:first-child {
	-webkit-border-radius: 4px 4px 0 0;
	-moz-border-radius: 4px 4px 0 0;
	border-radius: 4px 4px 0 0;
}
.btn-group-vertical .btn:last-child {
	-webkit-border-radius: 0 0 4px 4px;
	-moz-border-radius: 0 0 4px 4px;
	border-radius: 0 0 4px 4px;
}
.btn-group-vertical .btn-large:first-child {
	-webkit-border-radius: 6px 6px 0 0;
	-moz-border-radius: 6px 6px 0 0;
	border-radius: 6px 6px 0 0;
}
.btn-group-vertical .btn-large:last-child {
	-webkit-border-radius: 0 0 6px 6px;
	-moz-border-radius: 0 0 6px 6px;
	border-radius: 0 0 6px 6px;
}
.alert {
	padding: 8px 35px 8px 14px;
	margin-bottom: 18px;
	text-shadow: 0 1px 0 rgba(255,255,255,0.5);
	background-color: #fcf8e3;
	border: 1px solid #fbeed5;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
	color: #c09853;
	display: inline-block; /* Joomla 2.5 */
}
.alert h4 {
	margin: 0;
}
.alert .close {
	position: relative;
	top: -2px;
	right: -21px;
	line-height: 18px;
}
.alert-success {
	background-color: #dff0d8;
	border-color: #d6e9c6;
	color: #468847;
}
.alert-danger,
.alert-error {
	background-color: #f2dede;
	border-color: #eed3d7;
	color: #b94a48;
}
.alert-info {
	background-color: #d9edf7;
	border-color: #bce8f1;
	color: #3a87ad;
}
.alert-block {
	padding-top: 14px;
	padding-bottom: 14px;
}
.alert-block > p,
.alert-block > ul {
	margin-bottom: 0;
}
.alert-block p + p {
	margin-top: 5px;
}
.nav {
	margin-left: 0;
	margin-bottom: 18px;
	list-style: none;
}
.nav > li > a {
	display: block;
}
.nav > li > a:hover {
	text-decoration: none;
	background-color: #eee;
}
.nav > .pull-right {
	float: right;
}
.nav-header {
	display: block;
	padding: 3px 15px;
	font-size: 11px;
	font-weight: bold;
	line-height: 18px;
	color: #999;
	text-shadow: 0 1px 0 rgba(255,255,255,0.5);
	text-transform: uppercase;
}
.nav li + .nav-header {
	margin-top: 9px;
}
.nav-list {
	padding-left: 15px;
	padding-right: 15px;
	margin-bottom: 0;
}
.nav-list > li > a,
.nav-list .nav-header {
	margin-left: -15px;
	margin-right: -15px;
	text-shadow: 0 1px 0 rgba(255,255,255,0.5);
}
.nav-list > li > a {
	padding: 3px 15px;
}
.nav-list > .active > a,
.nav-list > .active > a:hover {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.2);
	background-color: #08c;
}
.nav-list [class^="icon-"] {
	margin-right: 2px;
}
.nav-list .divider {
	*width: 100%;
	height: 1px;
	margin: 8px 1px;
	*margin: -5px 0 5px;
	overflow: hidden;
	background-color: #e5e5e5;
	border-bottom: 1px solid #fff;
}

/* -- TAB STYLES ----------------------------- */
/* J 2.5 */
div.current {
	background-color: #fff;
	padding: 10px;
}

dl.tabs dt {
	padding-top: 8px;
	padding-bottom: 8px;
	line-height: 18px;
	border: 1px solid transparent;
	-webkit-border-radius: 4px 4px 0 0;
	-moz-border-radius: 4px 4px 0 0;
	border-radius: 4px 4px 0 0;
}

dl.tabs dt.open {
	color: #fff;
	background-color: #08c;
}

/* J 3 */
.nav-tabs,
.nav-pills {
	*zoom: 1;
}
.nav-tabs:before,
.nav-tabs:after,
.nav-pills:before,
.nav-pills:after {
	display: table;
	content: "";
	line-height: 0;
}
.nav-tabs:after,
.nav-pills:after {
	clear: both;
}
.nav-tabs > li,
.nav-pills > li {
	float: left;
}
.nav-tabs > li > a,
.nav-pills > li > a {
	padding-right: 12px;
	padding-left: 12px;
	margin-right: 2px;
	line-height: 14px;
}
.nav-tabs {
	border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
	margin-bottom: -1px;
}
.nav-tabs > li > a {
	padding-top: 8px;
	padding-bottom: 8px;
	line-height: 18px;
	border: 1px solid transparent;
	-webkit-border-radius: 4px 4px 0 0;
	-moz-border-radius: 4px 4px 0 0;
	border-radius: 4px 4px 0 0;
}
.nav-tabs > li > a:hover {
	border-color: #eee #eee #ddd;
}
.nav-tabs > .active > a,
.nav-tabs > .active > a:hover {
	color: #555;
	background-color: #fff;
	border: 1px solid #ddd;
	border-bottom-color: transparent;
	cursor: default;
}
.nav-pills > li > a {
	padding-top: 8px;
	padding-bottom: 8px;
	margin-top: 2px;
	margin-bottom: 2px;
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	border-radius: 5px;
}
.nav-pills > .active > a,
.nav-pills > .active > a:hover {
	color: #fff;
	background-color: #08c;
}
.nav-stacked > li {
	float: none;
}
.nav-stacked > li > a {
	margin-right: 0;
}
.nav-tabs.nav-stacked {
	border-bottom: 0;
}
.nav-tabs.nav-stacked > li > a {
	border: 1px solid #ddd;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
.nav-tabs.nav-stacked > li:first-child > a {
	-webkit-border-top-right-radius: 4px;
	-moz-border-radius-topright: 4px;
	border-top-right-radius: 4px;
	-webkit-border-top-left-radius: 4px;
	-moz-border-radius-topleft: 4px;
	border-top-left-radius: 4px;
}
.nav-tabs.nav-stacked > li:last-child > a {
	-webkit-border-bottom-right-radius: 4px;
	-moz-border-radius-bottomright: 4px;
	border-bottom-right-radius: 4px;
	-webkit-border-bottom-left-radius: 4px;
	-moz-border-radius-bottomleft: 4px;
	border-bottom-left-radius: 4px;
}
.nav-tabs.nav-stacked > li > a:hover {
	border-color: #ddd;
	z-index: 2;
}
.nav-pills.nav-stacked > li > a {
	margin-bottom: 3px;
}
.nav-pills.nav-stacked > li:last-child > a {
	margin-bottom: 1px;
}
.nav-tabs .dropdown-menu {
	-webkit-border-radius: 0 0 6px 6px;
	-moz-border-radius: 0 0 6px 6px;
	border-radius: 0 0 6px 6px;
}
.nav-pills .dropdown-menu {
	-webkit-border-radius: 6px;
	-moz-border-radius: 6px;
	border-radius: 6px;
}
.nav .dropdown-toggle .caret {
	border-top-color: #08c;
	border-bottom-color: #08c;
	margin-top: 6px;
}
.nav .dropdown-toggle:hover .caret {
	border-top-color: #005580;
	border-bottom-color: #005580;
}
.nav-tabs .dropdown-toggle .caret {
	margin-top: 8px;
}
.nav .active .dropdown-toggle .caret {
	border-top-color: #fff;
	border-bottom-color: #fff;
}
.nav-tabs .active .dropdown-toggle .caret {
	border-top-color: #555;
	border-bottom-color: #555;
}
.nav > .dropdown.active > a:hover {
	cursor: pointer;
}
.nav-tabs .open .dropdown-toggle,
.nav-pills .open .dropdown-toggle,
.nav > li.dropdown.open.active > a:hover {
	color: #fff;
	background-color: #999;
	border-color: #999;
}
.nav li.dropdown.open .caret,
.nav li.dropdown.open.active .caret,
.nav li.dropdown.open a:hover .caret {
	border-top-color: #fff;
	border-bottom-color: #fff;
	opacity: 1;
	filter: alpha(opacity=100);
}
.tabs-stacked .open > a:hover {
	border-color: #999;
}
.tabbable {
	*zoom: 1;
}
.tabbable:before,
.tabbable:after {
	display: table;
	content: "";
	line-height: 0;
}
.tabbable:after {
	clear: both;
}
.tab-content {
	overflow: auto;
}
.tabs-below > .nav-tabs,
.tabs-right > .nav-tabs,
.tabs-left > .nav-tabs {
	border-bottom: 0;
}
.tab-content > .tab-pane,
.pill-content > .pill-pane {
	display: none;
}
.tab-content > .active,
.pill-content > .active {
	display: block;
}
.tabs-below > .nav-tabs {
	border-top: 1px solid #ddd;
}
.tabs-below > .nav-tabs > li {
	margin-top: -1px;
	margin-bottom: 0;
}
.tabs-below > .nav-tabs > li > a {
	-webkit-border-radius: 0 0 4px 4px;
	-moz-border-radius: 0 0 4px 4px;
	border-radius: 0 0 4px 4px;
}
.tabs-below > .nav-tabs > li > a:hover {
	border-bottom-color: transparent;
	border-top-color: #ddd;
}
.tabs-below > .nav-tabs > .active > a,
.tabs-below > .nav-tabs > .active > a:hover {
	border-color: transparent #ddd #ddd #ddd;
}
.tabs-left > .nav-tabs > li,
.tabs-right > .nav-tabs > li {
	float: none;
}
.tabs-left > .nav-tabs > li > a,
.tabs-right > .nav-tabs > li > a {
	min-width: 74px;
	margin-right: 0;
	margin-bottom: 3px;
}
.tabs-left > .nav-tabs {
	float: left;
	margin-right: 19px;
	border-right: 1px solid #ddd;
}
.tabs-left > .nav-tabs > li > a {
	margin-right: -1px;
	-webkit-border-radius: 4px 0 0 4px;
	-moz-border-radius: 4px 0 0 4px;
	border-radius: 4px 0 0 4px;
}
.tabs-left > .nav-tabs > li > a:hover {
	border-color: #eee #ddd #eee #eee;
}
.tabs-left > .nav-tabs .active > a,
.tabs-left > .nav-tabs .active > a:hover {
	border-color: #ddd transparent #ddd #ddd;
	*border-right-color: #fff;
}
.tabs-right > .nav-tabs {
	float: right;
	margin-left: 19px;
	border-left: 1px solid #ddd;
}
.tabs-right > .nav-tabs > li > a {
	margin-left: -1px;
	-webkit-border-radius: 0 4px 4px 0;
	-moz-border-radius: 0 4px 4px 0;
	border-radius: 0 4px 4px 0;
}
.tabs-right > .nav-tabs > li > a:hover {
	border-color: #eee #eee #eee #ddd;
}
.tabs-right > .nav-tabs .active > a,
.tabs-right > .nav-tabs .active > a:hover {
	border-color: #ddd #ddd #ddd transparent;
	*border-left-color: #fff;
}
.nav > .disabled > a {
	color: #999;
}
.nav > .disabled > a:hover {
	text-decoration: none;
	background-color: transparent;
	cursor: default;
}
.navbar {
	overflow: visible;
	margin-bottom: 18px;
	color: #555;
	*position: relative;
	*z-index: 2;
}
.navbar-inner {
	min-height: 40px;
	padding-left: 20px;
	padding-right: 20px;
	background-color: #fafafa;
	background-image: -moz-linear-gradient(top,#ffffff,#f2f2f2);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#ffffff),to(#f2f2f2));
	background-image: -webkit-linear-gradient(top,#ffffff,#f2f2f2);
	background-image: -o-linear-gradient(top,#ffffff,#f2f2f2);
	background-image: linear-gradient(to bottom,#ffffff,#f2f2f2);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
	border: 1px solid #d4d4d4;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
	-webkit-box-shadow: 0 1px 4px rgba(0,0,0,0.065);
	-moz-box-shadow: 0 1px 4px rgba(0,0,0,0.065);
	box-shadow: 0 1px 4px rgba(0,0,0,0.065);
}
.navbar .container {
	width: auto;
}
.nav-collapse.collapse {
	height: auto;
}
.navbar .brand {
	float: left;
	display: block;
	padding: 11px 20px 11px;
	margin-left: -20px;
	font-size: 20px;
	font-weight: 200;
	color: #555;
	text-shadow: 0 1px 0 #ffffff;
}
.navbar .brand:hover {
	text-decoration: none;
}
.navbar-text {
	margin-bottom: 0;
	line-height: 40px;
}
.navbar-link {
	color: #555;
}
.navbar-link:hover {
	color: #333;
}
.navbar .divider-vertical {
	height: 40px;
	margin: 0 9px;
	border-left: 1px solid #f2f2f2;
	border-right: 1px solid #ffffff;
}
.navbar .btn,
.navbar .btn-group {
	margin-top: 6px;
}
.navbar .btn-group .btn {
	margin: 0;
}
.navbar-form {
	margin-bottom: 0;
	*zoom: 1;
}
.navbar-form:before,
.navbar-form:after {
	display: table;
	content: "";
	line-height: 0;
}
.navbar-form:after {
	clear: both;
}
.navbar-form input,
.navbar-form select,
.navbar-form .radio,
.navbar-form .checkbox {
	margin-top: 5px;
}
.navbar-form input,
.navbar-form select,
.navbar-form .btn {
	display: inline-block;
	margin-bottom: 0;
}
.navbar-form input[type="image"],
.navbar-form input[type="checkbox"],
.navbar-form input[type="radio"] {
	margin-top: 3px;
}
.navbar-form .input-append,
.navbar-form .input-prepend {
	margin-top: 6px;
	white-space: nowrap;
}
.navbar-form .input-append input,
.navbar-form .input-prepend input {
	margin-top: 0;
}
.navbar-search {
	position: relative;
	float: left;
	margin-top: 5px;
	margin-bottom: 0;
}
.navbar-search .search-query {
	margin-bottom: 0;
	padding: 4px 14px;
	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
	font-size: 13px;
	font-weight: normal;
	line-height: 1;
	-webkit-border-radius: 15px;
	-moz-border-radius: 15px;
	border-radius: 15px;
}
.navbar-static-top {
	position: static;
	width: 100%;
	margin-bottom: 0;
}
.navbar-static-top .navbar-inner {
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
.navbar-fixed-top,
.navbar-fixed-bottom {
	position: fixed;
	right: 0;
	left: 0;
	z-index: 1030;
	margin-bottom: 0;
}
.navbar-fixed-top .navbar-inner,
.navbar-fixed-bottom .navbar-inner,
.navbar-static-top .navbar-inner {
	border: 0;
}
.navbar-fixed-top .navbar-inner,
.navbar-fixed-bottom .navbar-inner {
	padding-left: 0;
	padding-right: 0;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
.navbar-static-top .container,
.navbar-fixed-top .container,
.navbar-fixed-bottom .container {
	width: 940px;
}
.navbar-fixed-top {
	top: 0;
}
.navbar-fixed-top .navbar-inner,
.navbar-static-top .navbar-inner {
	-webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.1), 0 1px 10px rgba(0,0,0,.1);
	-moz-box-shadow: inset 0 -1px 0 rgba(0,0,0,.1), 0 1px 10px rgba(0,0,0,.1);
	box-shadow: inset 0 -1px 0 rgba(0,0,0,.1), 0 1px 10px rgba(0,0,0,.1);
}
.navbar-fixed-bottom {
	bottom: 0;
}
.navbar-fixed-bottom .navbar-inner {
	-webkit-box-shadow: inset 0 1px 0 rgba(0,0,0,.1), 0 -1px 10px rgba(0,0,0,.1);
	-moz-box-shadow: inset 0 1px 0 rgba(0,0,0,.1), 0 -1px 10px rgba(0,0,0,.1);
	box-shadow: inset 0 1px 0 rgba(0,0,0,.1), 0 -1px 10px rgba(0,0,0,.1);
}
.navbar .nav {
	position: relative;
	left: 0;
	display: block;
	float: left;
	margin: 0 10px 0 0;
}
.navbar .nav.pull-right {
	float: right;
}
.navbar .nav > li {
	float: left;
}
.navbar .nav > li > a {
	float: none;
	padding: 11px 15px 11px;
	color: #555;
	text-decoration: none;
	text-shadow: 0 1px 0 #ffffff;
}
.navbar .nav .dropdown-toggle .caret {
	margin-top: 8px;
}
.navbar .nav > li > a:focus,
.navbar .nav > li > a:hover {
	background-color: transparent;
	color: #333;
	text-decoration: none;
}
.navbar .nav > .active > a,
.navbar .nav > .active > a:hover,
.navbar .nav > .active > a:focus {
	color: #555;
	text-decoration: none;
	background-color: #e6e6e6;
	-webkit-box-shadow: inset 0 3px 8px rgba(0,0,0,0.125);
	-moz-box-shadow: inset 0 3px 8px rgba(0,0,0,0.125);
	box-shadow: inset 0 3px 8px rgba(0,0,0,0.125);
}
.navbar .btn-navbar {
	display: none;
	float: right;
	padding: 7px 10px;
	margin-left: 5px;
	margin-right: 5px;
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #ededed;
	background-image: -moz-linear-gradient(top,#f2f2f2,#e6e6e6);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e6e6e6));
	background-image: -webkit-linear-gradient(top,#f2f2f2,#e6e6e6);
	background-image: -o-linear-gradient(top,#f2f2f2,#e6e6e6);
	background-image: linear-gradient(to bottom,#f2f2f2,#e6e6e6);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
	border-color: #e6e6e6 #e6e6e6 #bfbfbf;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #e6e6e6;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
	-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
	-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
	box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075);
}
.navbar .btn-navbar:hover,
.navbar .btn-navbar:active,
.navbar .btn-navbar.active,
.navbar .btn-navbar.disabled,
.navbar .btn-navbar[disabled] {
	color: #fff;
	background-color: #e6e6e6;
	*background-color: #d9d9d9;
}
.navbar .btn-navbar:active,
.navbar .btn-navbar.active {
	background-color: #cccccc \9;
}
.navbar .btn-navbar .icon-bar {
	display: block;
	width: 18px;
	height: 2px;
	background-color: #f5f5f5;
	-webkit-border-radius: 1px;
	-moz-border-radius: 1px;
	border-radius: 1px;
	-webkit-box-shadow: 0 1px 0 rgba(0,0,0,0.25);
	-moz-box-shadow: 0 1px 0 rgba(0,0,0,0.25);
	box-shadow: 0 1px 0 rgba(0,0,0,0.25);
}
.btn-navbar .icon-bar + .icon-bar {
	margin-top: 3px;
}
.navbar .nav > li > .dropdown-menu:before {
	content: '';
	display: inline-block;
	border-left: 7px solid transparent;
	border-right: 7px solid transparent;
	border-bottom: 7px solid #ccc;
	border-bottom-color: rgba(0,0,0,0.2);
	position: absolute;
	top: -7px;
	left: 9px;
}
.navbar .nav > li > .dropdown-menu:after {
	content: '';
	display: inline-block;
	border-left: 6px solid transparent;
	border-right: 6px solid transparent;
	border-bottom: 6px solid #fff;
	position: absolute;
	top: -6px;
	left: 10px;
}
.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
	border-top: 7px solid #ccc;
	border-top-color: rgba(0,0,0,0.2);
	border-bottom: 0;
	bottom: -7px;
	top: auto;
}
.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
	border-top: 6px solid #fff;
	border-bottom: 0;
	bottom: -6px;
	top: auto;
}
.navbar .nav li.dropdown.open > .dropdown-toggle,
.navbar .nav li.dropdown.active > .dropdown-toggle,
.navbar .nav li.dropdown.open.active > .dropdown-toggle {
	background-color: #e6e6e6;
	color: #555;
}
.navbar .nav li.dropdown > .dropdown-toggle .caret {
	border-top-color: #555;
	border-bottom-color: #555;
}
.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
	border-top-color: #555;
	border-bottom-color: #555;
}
.navbar .pull-right > li > .dropdown-menu,
.navbar .nav > li > .dropdown-menu.pull-right {
	left: auto;
	right: 0;
}
.navbar .pull-right > li > .dropdown-menu:before,
.navbar .nav > li > .dropdown-menu.pull-right:before {
	left: auto;
	right: 12px;
}
.navbar .pull-right > li > .dropdown-menu:after,
.navbar .nav > li > .dropdown-menu.pull-right:after {
	left: auto;
	right: 13px;
}
.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
	left: auto;
	right: 100%;
	margin-left: 0;
	margin-right: -1px;
	-webkit-border-radius: 6px 0 6px 6px;
	-moz-border-radius: 6px 0 6px 6px;
	border-radius: 6px 0 6px 6px;
}
.navbar-inverse {
	color: #d9d9d9;
}
.navbar-inverse .navbar-inner {
	background-color: #13294a;
	background-image: -moz-linear-gradient(top,#152d53,#10223e);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#152d53),to(#10223e));
	background-image: -webkit-linear-gradient(top,#152d53,#10223e);
	background-image: -o-linear-gradient(top,#152d53,#10223e);
	background-image: linear-gradient(to bottom,#152d53,#10223e);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff142c52', endColorstr='#ff0f213e', GradientType=0);
	border-color: #0b172a;
}
.navbar-inverse .brand,
.navbar-inverse .nav > li > a {
	color: #d9d9d9;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
}
.navbar-inverse .brand:hover,
.navbar-inverse .nav > li > a:hover {
	color: #fff;
}
.navbar-inverse .nav > li > a:focus,
.navbar-inverse .nav > li > a:hover {
	background-color: transparent;
	color: #fff;
}
.navbar-inverse .nav .active > a,
.navbar-inverse .nav .active > a:hover,
.navbar-inverse .nav .active > a:focus {
	color: #fff;
	background-color: #10223e;
}
.navbar-inverse .navbar-link {
	color: #d9d9d9;
}
.navbar-inverse .navbar-link:hover {
	color: #fff;
}
.navbar-inverse .divider-vertical {
	border-left-color: #10223e;
	border-right-color: #152d53;
}
.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
	background-color: #10223e;
	color: #fff;
}
.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
	border-top-color: #d9d9d9;
	border-bottom-color: #d9d9d9;
}
.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
	border-top-color: #fff;
	border-bottom-color: #fff;
}
.navbar-inverse .navbar-search .search-query {
	color: #fff;
	background-color: #2959a4;
	border-color: #10223e;
	-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
	-moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
	box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15);
	-webkit-transition: none;
	-moz-transition: none;
	-o-transition: none;
	transition: none;
}
.navbar-inverse .navbar-search .search-query:-moz-placeholder {
	color: #ccc;
}
.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
	color: #ccc;
}
.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
	color: #ccc;
}
.navbar-inverse .navbar-search .search-query:focus,
.navbar-inverse .navbar-search .search-query.focused {
	padding: 5px 15px;
	color: #333;
	text-shadow: 0 1px 0 #fff;
	background-color: #fff;
	border: 0;
	-webkit-box-shadow: 0 0 3px rgba(0,0,0,0.15);
	-moz-box-shadow: 0 0 3px rgba(0,0,0,0.15);
	box-shadow: 0 0 3px rgba(0,0,0,0.15);
	outline: 0;
}
.navbar-inverse .btn-navbar {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #0e1d36;
	background-image: -moz-linear-gradient(top,#10223e,#0b172a);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#10223e),to(#0b172a));
	background-image: -webkit-linear-gradient(top,#10223e,#0b172a);
	background-image: -o-linear-gradient(top,#10223e,#0b172a);
	background-image: linear-gradient(to bottom,#10223e,#0b172a);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0f213e', endColorstr='#ff0a1629', GradientType=0);
	border-color: #0b172a #0b172a #000000;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #0b172a;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.navbar-inverse .btn-navbar:hover,
.navbar-inverse .btn-navbar:active,
.navbar-inverse .btn-navbar.active,
.navbar-inverse .btn-navbar.disabled,
.navbar-inverse .btn-navbar[disabled] {
	color: #fff;
	background-color: #0b172a;
	*background-color: #050c16;
}
.navbar-inverse .btn-navbar:active,
.navbar-inverse .btn-navbar.active {
	background-color: #000101 \9;
}
.breadcrumb {
	padding: 8px 15px;
	margin: 0 0 18px;
	list-style: none;
	background-color: #f5f5f5;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
}
.breadcrumb li {
	display: inline-block;
	*display: inline;
	*zoom: 1;
	text-shadow: 0 1px 0 #fff;
}
.breadcrumb .divider {
	padding: 0 5px;
	color: #ccc;
}
.breadcrumb .active {
	color: #999;
}
/*
.pagination {
	height: 36px;
	margin: 18px 0;
}
.pagination ul {
	display: inline-block;
	*display: inline;
	*zoom: 1;
	margin-left: 0;
	margin-bottom: 0;
	-webkit-border-radius: 3px;
	-moz-border-radius: 3px;
	border-radius: 3px;
	-webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.05);
	-moz-box-shadow: 0 1px 2px rgba(0,0,0,0.05);
	box-shadow: 0 1px 2px rgba(0,0,0,0.05);
}
.pagination li {
	display: inline;
}
.pagination a,
.pagination span {
	float: left;
	padding: 0 14px;
	line-height: 34px;
	text-decoration: none;
	background-color: #fff;
	border: 1px solid #ddd;
	border-left-width: 0;
}
.pagination a:hover,
.pagination .active a,
.pagination .active span {
	background-color: #f5f5f5;
}
.pagination .active a,
.pagination .active span {
	color: #999;
	cursor: default;
}
.pagination .disabled span,
.pagination .disabled a,
.pagination .disabled a:hover {
	color: #999;
	background-color: transparent;
	cursor: default;
}
.pagination li:first-child a,
.pagination li:first-child span {
	border-left-width: 1px;
	-webkit-border-radius: 3px 0 0 3px;
	-moz-border-radius: 3px 0 0 3px;
	border-radius: 3px 0 0 3px;
}
.pagination li:last-child a,
.pagination li:last-child span {
	-webkit-border-radius: 0 3px 3px 0;
	-moz-border-radius: 0 3px 3px 0;
	border-radius: 0 3px 3px 0;
}
.pagination-centered {
	text-align: center;
}
.pagination-right {
	text-align: right;
}
.pager {
	margin: 18px 0;
	list-style: none;
	text-align: center;
	*zoom: 1;
}
.pager:before,
.pager:after {
	display: table;
	content: "";
	line-height: 0;
}
.pager:after {
	clear: both;
}
.pager li {
	display: inline;
}
.pager a {
	display: inline-block;
	padding: 5px 14px;
	background-color: #fff;
	border: 1px solid #ddd;
	-webkit-border-radius: 15px;
	-moz-border-radius: 15px;
	border-radius: 15px;
}
.pager a:hover {
	text-decoration: none;
	background-color: #f5f5f5;
}
.pager .next a {
	float: right;
}
.pager .previous a {
	float: left;
}
.pager .disabled a,
.pager .disabled a:hover {
	color: #999;
	background-color: #fff;
	cursor: default;
}
*/
.modal-open .dropdown-menu {
	z-index: 2050;
}
.modal-open .dropdown.open {
	*z-index: 2050;
}
.modal-open .popover {
	z-index: 2060;
}
.modal-open .tooltip {
	z-index: 2080;
}
.modal-backdrop {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 1040;
	background-color: #000;
}
.modal-backdrop.fade {
	opacity: 0;
}
.modal-backdrop,
.modal-backdrop.fade.in {
	opacity: 0.8;
	filter: alpha(opacity=80);
}
div.modal {
	position: fixed;
	top: 50%;
	left: 50%;
	z-index: 1050;
	overflow: auto;
	width: 560px;
	margin: -250px 0 0 -280px;
	background-color: #fff;
	border: 1px solid #999;
	border: 1px solid rgba(0,0,0,0.3);
	*border: 1px solid #999;
	-webkit-border-radius: 6px;
	-moz-border-radius: 6px;
	border-radius: 6px;
	-webkit-box-shadow: 0 3px 7px rgba(0,0,0,0.3);
	-moz-box-shadow: 0 3px 7px rgba(0,0,0,0.3);
	box-shadow: 0 3px 7px rgba(0,0,0,0.3);
	-webkit-background-clip: padding-box;
	-moz-background-clip: padding-box;
	background-clip: padding-box;
}
div.modal.fade {
	-webkit-transition: opacity .3s linear, top .3s ease-out;
	-moz-transition: opacity .3s linear, top .3s ease-out;
	-o-transition: opacity .3s linear, top .3s ease-out;
	transition: opacity .3s linear, top .3s ease-out;
	top: -25%;
}
div.modal.fade.in {
	top: 50%;
}
.modal-header {
	padding: 9px 15px;
	border-bottom: 1px solid #eee;
}
.modal-header .close {
	margin-top: 2px;
}
.modal-header h3 {
	margin: 0;
	line-height: 30px;
}
.modal-body {
	overflow-y: auto;
	max-height: 400px;
	padding: 15px;
}
.modal-form {
	margin-bottom: 0;
}
.modal-footer {
	padding: 14px 15px 15px;
	margin-bottom: 0;
	text-align: right;
	background-color: #f5f5f5;
	border-top: 1px solid #ddd;
	-webkit-border-radius: 0 0 6px 6px;
	-moz-border-radius: 0 0 6px 6px;
	border-radius: 0 0 6px 6px;
	-webkit-box-shadow: inset 0 1px 0 #fff;
	-moz-box-shadow: inset 0 1px 0 #fff;
	box-shadow: inset 0 1px 0 #fff;
	*zoom: 1;
}
.modal-footer:before,
.modal-footer:after {
	display: table;
	content: "";
	line-height: 0;
}
.modal-footer:after {
	clear: both;
}
.modal-footer .btn + .btn {
	margin-left: 5px;
	margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
	margin-left: -1px;
}
.tooltip {
	position: absolute;
	z-index: 1030;
	display: block;
	visibility: visible;
	padding: 5px;
	font-size: 11px;
	opacity: 0;
	filter: alpha(opacity=0);
}
.tooltip.in {
	opacity: 0.8;
	filter: alpha(opacity=80);
}
.tooltip.top {
	margin-top: -3px;
}
.tooltip.right {
	margin-left: 3px;
}
.tooltip.bottom {
	margin-top: 3px;
}
.tooltip.left {
	margin-left: -3px;
}
.tooltip-inner {
	max-width: 200px;
	padding: 3px 8px;
	color: #fff;
	text-align: center;
	text-decoration: none;
	background-color: #000;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
}
.tooltip-arrow {
	position: absolute;
	width: 0;
	height: 0;
	border-color: transparent;
	border-style: solid;
}
.tooltip.top .tooltip-arrow {
	bottom: 0;
	left: 50%;
	margin-left: -5px;
	border-width: 5px 5px 0;
	border-top-color: #000;
}
.tooltip.right .tooltip-arrow {
	top: 50%;
	left: 0;
	margin-top: -5px;
	border-width: 5px 5px 5px 0;
	border-right-color: #000;
}
.tooltip.left .tooltip-arrow {
	top: 50%;
	right: 0;
	margin-top: -5px;
	border-width: 5px 0 5px 5px;
	border-left-color: #000;
}
.tooltip.bottom .tooltip-arrow {
	top: 0;
	left: 50%;
	margin-left: -5px;
	border-width: 0 5px 5px;
	border-bottom-color: #000;
}
.popover {
	position: absolute;
	top: 0;
	left: 0;
	z-index: 1010;
	display: none;
	width: 236px;
	padding: 1px;
	background-color: #fff;
	-webkit-background-clip: padding-box;
	-moz-background-clip: padding;
	background-clip: padding-box;
	border: 1px solid #ccc;
	border: 1px solid rgba(0,0,0,0.2);
	-webkit-border-radius: 6px;
	-moz-border-radius: 6px;
	border-radius: 6px;
	-webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.2);
	-moz-box-shadow: 0 5px 10px rgba(0,0,0,0.2);
	box-shadow: 0 5px 10px rgba(0,0,0,0.2);
}
.popover.top {
	margin-bottom: 10px;
}
.popover.right {
	margin-left: 10px;
}
.popover.bottom {
	margin-top: 10px;
}
.popover.left {
	margin-right: 10px;
}
.popover-title {
	margin: 0;
	padding: 8px 14px;
	font-size: 14px;
	font-weight: normal;
	line-height: 18px;
	background-color: #f7f7f7;
	border-bottom: 1px solid #ebebeb;
	-webkit-border-radius: 5px 5px 0 0;
	-moz-border-radius: 5px 5px 0 0;
	border-radius: 5px 5px 0 0;
}
.popover-content {
	padding: 9px 14px;
}
.popover-content p,
.popover-content ul,
.popover-content ol {
	margin-bottom: 0;
}
.popover .arrow,
.popover .arrow:after {
	position: absolute;
	display: inline-block;
	width: 0;
	height: 0;
	border-color: transparent;
	border-style: solid;
}
.popover .arrow:after {
	content: "";
	z-index: -1;
}
.popover.top .arrow {
	bottom: -10px;
	left: 50%;
	margin-left: -10px;
	border-width: 10px 10px 0;
	border-top-color: #fff;
}
.popover.top .arrow:after {
	border-width: 11px 11px 0;
	border-top-color: rgba(0,0,0,0.25);
	bottom: -1px;
	left: -11px;
}
.popover.right .arrow {
	top: 50%;
	left: -10px;
	margin-top: -10px;
	border-width: 10px 10px 10px 0;
	border-right-color: #fff;
}
.popover.right .arrow:after {
	border-width: 11px 11px 11px 0;
	border-right-color: rgba(0,0,0,0.25);
	bottom: -11px;
	left: -1px;
}
.popover.bottom .arrow {
	top: -10px;
	left: 50%;
	margin-left: -10px;
	border-width: 0 10px 10px;
	border-bottom-color: #fff;
}
.popover.bottom .arrow:after {
	border-width: 0 11px 11px;
	border-bottom-color: rgba(0,0,0,0.25);
	top: -1px;
	left: -11px;
}
.popover.left .arrow {
	top: 50%;
	right: -10px;
	margin-top: -10px;
	border-width: 10px 0 10px 10px;
	border-left-color: #fff;
}
.popover.left .arrow:after {
	border-width: 11px 0 11px 11px;
	border-left-color: rgba(0,0,0,0.25);
	bottom: -11px;
	right: -1px;
}
.thumbnails {
	margin-left: -20px;
	list-style: none;
	*zoom: 1;
}
.thumbnails:before,
.thumbnails:after {
	display: table;
	content: "";
	line-height: 0;
}
.thumbnails:after {
	clear: both;
}
.row-fluid .thumbnails {
	margin-left: 0;
}
.thumbnails > li {
	float: left;
	margin-bottom: 18px;
	margin-left: 20px;
}
.thumbnail {
	display: block;
	padding: 4px;
	line-height: 18px;
	border: 1px solid #ddd;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
	-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.055);
	-moz-box-shadow: 0 1px 3px rgba(0,0,0,0.055);
	box-shadow: 0 1px 3px rgba(0,0,0,0.055);
	-webkit-transition: all .2s ease-in-out;
	-moz-transition: all .2s ease-in-out;
	-o-transition: all .2s ease-in-out;
	transition: all .2s ease-in-out;
}
a.thumbnail:hover {
	border-color: #08c;
	-webkit-box-shadow: 0 1px 4px rgba(0,105,214,0.25);
	-moz-box-shadow: 0 1px 4px rgba(0,105,214,0.25);
	box-shadow: 0 1px 4px rgba(0,105,214,0.25);
}
.thumbnail > img {
	display: block;
	max-width: 100%;
	margin-left: auto;
	margin-right: auto;
}
.thumbnail .caption {
	padding: 9px;
	color: #555;
}
.label,
.badge {
	font-size: 10.998px;
	font-weight: bold;
	line-height: 14px;
	color: #fff;
	vertical-align: baseline;
	white-space: nowrap;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #999;
}
.label {
	padding: 1px 4px 2px;
	-webkit-border-radius: 3px;
	-moz-border-radius: 3px;
	border-radius: 3px;
}
.badge {
	padding: 1px 9px 2px;
	-webkit-border-radius: 9px;
	-moz-border-radius: 9px;
	border-radius: 9px;
}
a.label:hover,
a.badge:hover {
	color: #fff;
	text-decoration: none;
	cursor: pointer;
}
.label-important,
.badge-important {
	background-color: #b94a48;
}
.label-important[href],
.badge-important[href] {
	background-color: #953b39;
}
.label-warning,
.badge-warning {
	background-color: #f89406;
}
.label-warning[href],
.badge-warning[href] {
	background-color: #c67605;
}
.label-success,
.badge-success {
	background-color: #468847;
}
.label-success[href],
.badge-success[href] {
	background-color: #356635;
}
.label-info,
.badge-info {
	background-color: #3a87ad;
}
.label-info[href],
.badge-info[href] {
	background-color: #2d6987;
}
.label-inverse,
.badge-inverse {
	background-color: #333;
}
.label-inverse[href],
.badge-inverse[href] {
	background-color: #1a1a1a;
}
.btn .label,
.btn .badge {
	position: relative;
	top: -1px;
}
.btn-mini .label,
.btn-mini .badge {
	top: 0;
}
@-webkit-keyframes progress-bar-stripes {
	from {
		background-position: 40px 0;
	}
	to {
		background-position: 0 0;
	}
}
@-moz-keyframes progress-bar-stripes {
	from {
		background-position: 40px 0;
	}
	to {
		background-position: 0 0;
	}
}
@-ms-keyframes progress-bar-stripes {
	from {
		background-position: 40px 0;
	}
	to {
		background-position: 0 0;
	}
}
@-o-keyframes progress-bar-stripes {
	from {
		background-position: 0 0;
	}
	to {
		background-position: 40px 0;
	}
}
@keyframes progress-bar-stripes {
	from {
		background-position: 40px 0;
	}
	to {
		background-position: 0 0;
	}
}
.progress {
	overflow: hidden;
	height: 18px;
	margin-bottom: 18px;
	background-color: #f7f7f7;
	background-image: -moz-linear-gradient(top,#f5f5f5,#f9f9f9);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));
	background-image: -webkit-linear-gradient(top,#f5f5f5,#f9f9f9);
	background-image: -o-linear-gradient(top,#f5f5f5,#f9f9f9);
	background-image: linear-gradient(to bottom,#f5f5f5,#f9f9f9);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
	-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
	-moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
	box-shadow: inset 0 1px 2px rgba(0,0,0,0.1);
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
}
.progress .bar {
	width: 0%;
	height: 100%;
	color: #fff;
	float: left;
	font-size: 12px;
	text-align: center;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #0e90d2;
	background-image: -moz-linear-gradient(top,#149bdf,#0480be);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));
	background-image: -webkit-linear-gradient(top,#149bdf,#0480be);
	background-image: -o-linear-gradient(top,#149bdf,#0480be);
	background-image: linear-gradient(to bottom,#149bdf,#0480be);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
	-webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);
	-moz-box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);
	box-shadow: inset 0 -1px 0 rgba(0,0,0,0.15);
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	-webkit-transition: width .6s ease;
	-moz-transition: width .6s ease;
	-o-transition: width .6s ease;
	transition: width .6s ease;
}
.progress .bar + .bar {
	-webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);
	-moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);
	box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15);
}
.progress-striped .bar {
	background-color: #149bdf;
	background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent));
	background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	-webkit-background-size: 40px 40px;
	-moz-background-size: 40px 40px;
	-o-background-size: 40px 40px;
	background-size: 40px 40px;
}
.progress.active .bar {
	-webkit-animation: progress-bar-stripes 2s linear infinite;
	-moz-animation: progress-bar-stripes 2s linear infinite;
	-ms-animation: progress-bar-stripes 2s linear infinite;
	-o-animation: progress-bar-stripes 2s linear infinite;
	animation: progress-bar-stripes 2s linear infinite;
}
.progress-danger .bar,
.progress .bar-danger {
	background-color: #dd514c;
	background-image: -moz-linear-gradient(top,#ee5f5b,#c43c35);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));
	background-image: -webkit-linear-gradient(top,#ee5f5b,#c43c35);
	background-image: -o-linear-gradient(top,#ee5f5b,#c43c35);
	background-image: linear-gradient(to bottom,#ee5f5b,#c43c35);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);
}
.progress-danger.progress-striped .bar,
.progress-striped .bar-danger {
	background-color: #ee5f5b;
	background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent));
	background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
}
.progress-success .bar,
.progress .bar-success {
	background-color: #5eb95e;
	background-image: -moz-linear-gradient(top,#62c462,#57a957);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));
	background-image: -webkit-linear-gradient(top,#62c462,#57a957);
	background-image: -o-linear-gradient(top,#62c462,#57a957);
	background-image: linear-gradient(to bottom,#62c462,#57a957);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);
}
.progress-success.progress-striped .bar,
.progress-striped .bar-success {
	background-color: #62c462;
	background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent));
	background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
}
.progress-info .bar,
.progress .bar-info {
	background-color: #4bb1cf;
	background-image: -moz-linear-gradient(top,#5bc0de,#339bb9);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));
	background-image: -webkit-linear-gradient(top,#5bc0de,#339bb9);
	background-image: -o-linear-gradient(top,#5bc0de,#339bb9);
	background-image: linear-gradient(to bottom,#5bc0de,#339bb9);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);
}
.progress-info.progress-striped .bar,
.progress-striped .bar-info {
	background-color: #5bc0de;
	background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent));
	background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
}
.progress-warning .bar,
.progress .bar-warning {
	background-color: #faa732;
	background-image: -moz-linear-gradient(top,#fbb450,#f89406);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));
	background-image: -webkit-linear-gradient(top,#fbb450,#f89406);
	background-image: -o-linear-gradient(top,#fbb450,#f89406);
	background-image: linear-gradient(to bottom,#fbb450,#f89406);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffab44f', endColorstr='#fff89406', GradientType=0);
}
.progress-warning.progress-striped .bar,
.progress-striped .bar-warning {
	background-color: #fbb450;
	background-image: -webkit-gradient(linear,0 100%,100% 0,color-stop(.25,rgba(255,255,255,0.15)),color-stop(.25,transparent),color-stop(.5,transparent),color-stop(.5,rgba(255,255,255,0.15)),color-stop(.75,rgba(255,255,255,0.15)),color-stop(.75,transparent),to(transparent));
	background-image: -webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: -moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: -o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
	background-image: linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);
}
.accordion {
	margin-bottom: 18px;
}
.accordion-group {
	margin-bottom: 2px;
	border: 1px solid #e5e5e5;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
}
.accordion-heading {
	border-bottom: 0;
}
.accordion-heading .accordion-toggle {
	display: block;
	padding: 8px 15px;
}
.accordion-toggle {
	cursor: pointer;
}
.accordion-inner {
	padding: 9px 15px;
	border-top: 1px solid #e5e5e5;
}
.carousel {
	position: relative;
	margin-bottom: 18px;
	line-height: 1;
}
.carousel-inner {
	overflow: hidden;
	width: 100%;
	position: relative;
}
.carousel .item {
	display: none;
	position: relative;
	-webkit-transition: .6s ease-in-out left;
	-moz-transition: .6s ease-in-out left;
	-o-transition: .6s ease-in-out left;
	transition: .6s ease-in-out left;
}
.carousel .item > img {
	display: block;
	line-height: 1;
}
.carousel .active,
.carousel .next,
.carousel .prev {
	display: block;
}
.carousel .active {
	left: 0;
}
.carousel .next,
.carousel .prev {
	position: absolute;
	top: 0;
	width: 100%;
}
.carousel .next {
	left: 100%;
}
.carousel .prev {
	left: -100%;
}
.carousel .next.left,
.carousel .prev.right {
	left: 0;
}
.carousel .active.left {
	left: -100%;
}
.carousel .active.right {
	left: 100%;
}
.carousel-control {
	position: absolute;
	top: 40%;
	left: 15px;
	width: 40px;
	height: 40px;
	margin-top: -20px;
	font-size: 60px;
	font-weight: 100;
	line-height: 30px;
	color: #fff;
	text-align: center;
	background: #222;
	border: 3px solid #fff;
	-webkit-border-radius: 23px;
	-moz-border-radius: 23px;
	border-radius: 23px;
	opacity: 0.5;
	filter: alpha(opacity=50);
}
.carousel-control.right {
	left: auto;
	right: 15px;
}
.carousel-control:hover {
	color: #fff;
	text-decoration: none;
	opacity: 0.9;
	filter: alpha(opacity=90);
}
.carousel-caption {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 15px;
	background: #333;
	background: rgba(0,0,0,0.75);
}
.carousel-caption h4,
.carousel-caption p {
	color: #fff;
	line-height: 18px;
}
.carousel-caption h4 {
	margin: 0 0 5px;
}
.carousel-caption p {
	margin-bottom: 0;
}
.hero-unit {
	padding: 60px;
	margin-bottom: 30px;
	background-color: #eee;
	-webkit-border-radius: 6px;
	-moz-border-radius: 6px;
	border-radius: 6px;
}
.hero-unit h1 {
	margin-bottom: 0;
	font-size: 60px;
	line-height: 1;
	color: inherit;
	letter-spacing: -1px;
}
.hero-unit p {
	font-size: 18px;
	font-weight: 200;
	line-height: 27px;
	color: inherit;
}
.pull-right {
	float: right;
}
.pull-left {
	float: left;
}
.hide {
	display: none;
}
.show {
	display: block;
}
.invisible {
	visibility: hidden;
}
.affix {
	position: fixed;
}
.hidden {
	display: none;
	visibility: hidden;
}
.visible-phone {
	display: none !important;
}
.visible-tablet {
	display: none !important;
}
.hidden-desktop {
	display: none !important;
}
.visible-desktop {
	display: inherit !important;
}
@media (min-width: 768px) and (max-width: 979px) {
	.hidden-desktop {
		display: inherit !important;
	}
	.visible-desktop {
		display: none !important;
	}
	.visible-tablet {
		display: inherit !important;
	}
	.hidden-tablet {
		display: none !important;
	}
}
@media (max-width: 767px) {
	.hidden-desktop {
		display: inherit !important;
	}
	.visible-desktop {
		display: none !important;
	}
	.visible-phone {
		display: inherit !important;
	}
	.hidden-phone {
		display: none !important;
	}
}
@media (max-width: 767px) {
	body {
		padding-left: 20px;
		padding-right: 20px;
	}
	.navbar-fixed-top,
	.navbar-fixed-bottom {
		margin-left: -20px;
		margin-right: -20px;
	}
	.container-fluid {
		padding: 0;
	}
	.dl-horizontal dt {
		float: none;
		clear: none;
		width: auto;
		text-align: left;
	}
	.dl-horizontal dd {
		margin-left: 0;
	}
	.container {
		width: auto;
	}
	.row-fluid {
		width: 100%;
	}
	.row,
	.thumbnails {
		margin-left: 0;
	}
	[class*="span"],
	.row-fluid [class*="span"] {
		float: none;
		display: block;
		width: auto;
		margin-left: 0;
	}
	.span12,
	.row-fluid .span12 {
		width: 100%;
		-webkit-box-sizing: border-box;
		-moz-box-sizing: border-box;
		box-sizing: border-box;
	}
	.input-large,
	.input-xlarge,
	.input-xxlarge,
	input[class*="span"],
	select[class*="span"],
	textarea[class*="span"],
	.uneditable-input {
		display: block;
		width: 100%;
		min-height: 30px;
		-webkit-box-sizing: border-box;
		-moz-box-sizing: border-box;
		box-sizing: border-box;
	}
	.input-prepend input,
	.input-append input,
	.input-prepend input[class*="span"],
	.input-append input[class*="span"] {
		display: inline-block;
		width: auto;
	}
	div.modal {
		position: fixed;
		top: 20px;
		left: 20px;
		right: 20px;
		width: auto;
		margin: 0;
	}
	div.modal.fade.in {
		top: auto;
	}
}
@media (max-width: 480px) {
	.nav-collapse {
		-webkit-transform: translate3d(0,0,0);
	}
	.page-header h1 small {
		display: block;
		line-height: 18px;
	}
	input[type="checkbox"],
	input[type="radio"] {
		border: 1px solid #ccc;
	}
	.form-horizontal .control-group > label {
		float: none;
		width: auto;
		padding-top: 0;
		text-align: left;
	}
	.form-horizontal .controls {
		margin-left: 0;
	}
	.form-horizontal .control-list {
		padding-top: 0;
	}
	.form-horizontal .form-actions {
		padding-left: 10px;
		padding-right: 10px;
	}
	div.modal {
		top: 10px;
		left: 10px;
		right: 10px;
	}
	.modal-header .close {
		padding: 10px;
		margin: -10px;
	}
	.carousel-caption {
		position: static;
	}
}
@media (min-width: 768px) and (max-width: 979px) {
	.row {
		margin-left: -20px;
		*zoom: 1;
	}
	.row:before,
	.row:after {
		display: table;
		content: "";
		line-height: 0;
	}
	.row:after {
		clear: both;
	}
	[class*="span"] {
		float: left;
		margin-left: 20px;
	}
	.container,
	.navbar-static-top .container,
	.navbar-fixed-top .container,
	.navbar-fixed-bottom .container {
		width: 724px;
	}
	.span12 {
		width: 724px;
	}
	.span11 {
		width: 662px;
	}
	.span10 {
		width: 600px;
	}
	.span9 {
		width: 538px;
	}
	.span8 {
		width: 476px;
	}
	.span7 {
		width: 414px;
	}
	.span6 {
		width: 352px;
	}
	.span5 {
		width: 290px;
	}
	.span4 {
		width: 228px;
	}
	.span3 {
		width: 166px;
	}
	.span2 {
		width: 104px;
	}
	.span1 {
		width: 42px;
	}
	.offset12 {
		margin-left: 764px;
	}
	.offset11 {
		margin-left: 702px;
	}
	.offset10 {
		margin-left: 640px;
	}
	.offset9 {
		margin-left: 578px;
	}
	.offset8 {
		margin-left: 516px;
	}
	.offset7 {
		margin-left: 454px;
	}
	.offset6 {
		margin-left: 392px;
	}
	.offset5 {
		margin-left: 330px;
	}
	.offset4 {
		margin-left: 268px;
	}
	.offset3 {
		margin-left: 206px;
	}
	.offset2 {
		margin-left: 144px;
	}
	.offset1 {
		margin-left: 82px;
	}
	.row-fluid {
		width: 100%;
		*zoom: 1;
	}
	.row-fluid:before,
	.row-fluid:after {
		display: table;
		content: "";
		line-height: 0;
	}
	.row-fluid:after {
		clear: both;
	}
	.row-fluid [class*="span"] {
		display: block;
		width: 100%;
		min-height: 30px;
		-webkit-box-sizing: border-box;
		-moz-box-sizing: border-box;
		box-sizing: border-box;
		float: left;
		margin-left: 2.7624309392265%;
		*margin-left: 2.7092394498648%;
	}
	.row-fluid [class*="span"]:first-child {
		margin-left: 0;
	}
	.row-fluid .span12 {
		width: 100%;
		*width: 99.946808510638%;
	}
	.row-fluid .span11 {
		width: 91.489361702128%;
		*width: 91.436170212766%;
	}
	.row-fluid .span10 {
		width: 82.978723404255%;
		*width: 82.925531914894%;
	}
	.row-fluid .span9 {
		width: 74.468085106383%;
		*width: 74.414893617021%;
	}
	.row-fluid .span8 {
		width: 65.957446808511%;
		*width: 65.904255319149%;
	}
	.row-fluid .span7 {
		width: 57.446808510638%;
		*width: 57.393617021277%;
	}
	.row-fluid .span6 {
		width: 48.936170212766%;
		*width: 48.882978723404%;
	}
	.row-fluid .span5 {
		width: 40.425531914894%;
		*width: 40.372340425532%;
	}
	.row-fluid .span4 {
		width: 31.914893617021%;
		*width: 31.86170212766%;
	}
	.row-fluid .span3 {
		width: 23.404255319149%;
		*width: 23.351063829787%;
	}
	.row-fluid .span2 {
		width: 14.893617021277%;
		*width: 14.840425531915%;
	}
	.row-fluid .span1 {
		width: 6.3829787234043%;
		*width: 6.3297872340426%;
	}
	.row-fluid .offset12 {
		margin-left: 105.52486187845%;
		*margin-left: 105.41847889973%;
	}
	.row-fluid .offset12:first-child {
		margin-left: 102.76243093923%;
		*margin-left: 102.6560479605%;
	}
	.row-fluid .offset11 {
		margin-left: 95.744680851064%;
		*margin-left: 95.63829787234%;
	}
	.row-fluid .offset11:first-child {
		margin-left: 93.617021276596%;
		*margin-left: 93.510638297872%;
	}
	.row-fluid .offset10 {
		margin-left: 87.234042553191%;
		*margin-left: 87.127659574468%;
	}
	.row-fluid .offset10:first-child {
		margin-left: 85.106382978723%;
		*margin-left: 85%;
	}
	.row-fluid .offset9 {
		margin-left: 78.723404255319%;
		*margin-left: 78.617021276596%;
	}
	.row-fluid .offset9:first-child {
		margin-left: 76.595744680851%;
		*margin-left: 76.489361702128%;
	}
	.row-fluid .offset8 {
		margin-left: 70.212765957447%;
		*margin-left: 70.106382978723%;
	}
	.row-fluid .offset8:first-child {
		margin-left: 68.085106382979%;
		*margin-left: 67.978723404255%;
	}
	.row-fluid .offset7 {
		margin-left: 61.702127659574%;
		*margin-left: 61.595744680851%;
	}
	.row-fluid .offset7:first-child {
		margin-left: 59.574468085106%;
		*margin-left: 59.468085106383%;
	}
	.row-fluid .offset6 {
		margin-left: 53.191489361702%;
		*margin-left: 53.085106382979%;
	}
	.row-fluid .offset6:first-child {
		margin-left: 51.063829787234%;
		*margin-left: 50.957446808511%;
	}
	.row-fluid .offset5 {
		margin-left: 44.68085106383%;
		*margin-left: 44.574468085106%;
	}
	.row-fluid .offset5:first-child {
		margin-left: 42.553191489362%;
		*margin-left: 42.446808510638%;
	}
	.row-fluid .offset4 {
		margin-left: 36.170212765957%;
		*margin-left: 36.063829787234%;
	}
	.row-fluid .offset4:first-child {
		margin-left: 34.042553191489%;
		*margin-left: 33.936170212766%;
	}
	.row-fluid .offset3 {
		margin-left: 27.659574468085%;
		*margin-left: 27.553191489362%;
	}
	.row-fluid .offset3:first-child {
		margin-left: 25.531914893617%;
		*margin-left: 25.425531914894%;
	}
	.row-fluid .offset2 {
		margin-left: 19.148936170213%;
		*margin-left: 19.042553191489%;
	}
	.row-fluid .offset2:first-child {
		margin-left: 17.021276595745%;
		*margin-left: 16.914893617021%;
	}
	.row-fluid .offset1 {
		margin-left: 10.63829787234%;
		*margin-left: 10.531914893617%;
	}
	.row-fluid .offset1:first-child {
		margin-left: 8.5106382978723%;
		*margin-left: 8.4042553191489%;
	}
	input,
	textarea,
	.uneditable-input {
		margin-left: 0;
	}
	.controls-row [class*="span"] + [class*="span"] {
		margin-left: 20px;
	}
	input.span12, textarea.span12, .uneditable-input.span12 {
		width: 710px;
	}
	input.span11, textarea.span11, .uneditable-input.span11 {
		width: 648px;
	}
	input.span10, textarea.span10, .uneditable-input.span10 {
		width: 586px;
	}
	input.span9, textarea.span9, .uneditable-input.span9 {
		width: 524px;
	}
	input.span8, textarea.span8, .uneditable-input.span8 {
		width: 462px;
	}
	input.span7, textarea.span7, .uneditable-input.span7 {
		width: 400px;
	}
	input.span6, textarea.span6, .uneditable-input.span6 {
		width: 338px;
	}
	input.span5, textarea.span5, .uneditable-input.span5 {
		width: 276px;
	}
	input.span4, textarea.span4, .uneditable-input.span4 {
		width: 214px;
	}
	input.span3, textarea.span3, .uneditable-input.span3 {
		width: 152px;
	}
	input.span2, textarea.span2, .uneditable-input.span2 {
		width: 90px;
	}
	input.span1, textarea.span1, .uneditable-input.span1 {
		width: 28px;
	}
}
@media (min-width: 1200px) {
	.row {
		margin-left: -30px;
		*zoom: 1;
	}
	.row:before,
	.row:after {
		display: table;
		content: "";
		line-height: 0;
	}
	.row:after {
		clear: both;
	}
	[class*="span"] {
		float: left;
		margin-left: 30px;
	}
	.container,
	.navbar-static-top .container,
	.navbar-fixed-top .container,
	.navbar-fixed-bottom .container {
		width: 1170px;
	}
	.span12 {
		width: 1170px;
	}
	.span11 {
		width: 1070px;
	}
	.span10 {
		width: 970px;
	}
	.span9 {
		width: 870px;
	}
	.span8 {
		width: 770px;
	}
	.span7 {
		width: 670px;
	}
	.span6 {
		width: 570px;
	}
	.span5 {
		width: 470px;
	}
	.span4 {
		width: 370px;
	}
	.span3 {
		width: 270px;
	}
	.span2 {
		width: 170px;
	}
	.span1 {
		width: 70px;
	}
	.offset12 {
		margin-left: 1230px;
	}
	.offset11 {
		margin-left: 1130px;
	}
	.offset10 {
		margin-left: 1030px;
	}
	.offset9 {
		margin-left: 930px;
	}
	.offset8 {
		margin-left: 830px;
	}
	.offset7 {
		margin-left: 730px;
	}
	.offset6 {
		margin-left: 630px;
	}
	.offset5 {
		margin-left: 530px;
	}
	.offset4 {
		margin-left: 430px;
	}
	.offset3 {
		margin-left: 330px;
	}
	.offset2 {
		margin-left: 230px;
	}
	.offset1 {
		margin-left: 130px;
	}
	.row-fluid {
		width: 100%;
		*zoom: 1;
	}
	.row-fluid:before,
	.row-fluid:after {
		display: table;
		content: "";
		line-height: 0;
	}
	.row-fluid:after {
		clear: both;
	}
	.row-fluid [class*="span"] {
		display: block;
		width: 100%;
		min-height: 30px;
		-webkit-box-sizing: border-box;
		-moz-box-sizing: border-box;
		box-sizing: border-box;
		float: left;
		margin-left: 2.5641025641026%;
		*margin-left: 2.5109110747409%;
	}
	.row-fluid [class*="span"]:first-child {
		margin-left: 0;
	}
	.row-fluid .span12 {
		width: 100%;
		*width: 99.946808510638%;
	}
	.row-fluid .span11 {
		width: 91.436464088398%;
		*width: 91.383272599036%;
	}
	.row-fluid .span10 {
		width: 82.872928176796%;
		*width: 82.819736687434%;
	}
	.row-fluid .span9 {
		width: 74.309392265193%;
		*width: 74.256200775832%;
	}
	.row-fluid .span8 {
		width: 65.745856353591%;
		*width: 65.692664864229%;
	}
	.row-fluid .span7 {
		width: 57.182320441989%;
		*width: 57.129128952627%;
	}
	.row-fluid .span6 {
		width: 48.618784530387%;
		*width: 48.565593041025%;
	}
	.row-fluid .span5 {
		width: 40.055248618785%;
		*width: 40.002057129423%;
	}
	.row-fluid .span4 {
		width: 31.491712707182%;
		*width: 31.438521217821%;
	}
	.row-fluid .span3 {
		width: 22.92817679558%;
		*width: 22.874985306218%;
	}
	.row-fluid .span2 {
		width: 14.364640883978%;
		*width: 14.311449394616%;
	}
	.row-fluid .span1 {
		width: 5.8011049723757%;
		*width: 5.747913483014%;
	}
	.row-fluid .offset12 {
		margin-left: 105.12820512821%;
		*margin-left: 105.02182214948%;
	}
	.row-fluid .offset12:first-child {
		margin-left: 102.5641025641%;
		*margin-left: 102.45771958538%;
	}
	.row-fluid .offset11 {
		margin-left: 96.961325966851%;
		*margin-left: 96.854942988127%;
	}
	.row-fluid .offset11:first-child {
		margin-left: 94.198895027624%;
		*margin-left: 94.092512048901%;
	}
	.row-fluid .offset10 {
		margin-left: 88.397790055249%;
		*margin-left: 88.291407076525%;
	}
	.row-fluid .offset10:first-child {
		margin-left: 85.635359116022%;
		*margin-left: 85.528976137299%;
	}
	.row-fluid .offset9 {
		margin-left: 79.834254143646%;
		*margin-left: 79.727871164923%;
	}
	.row-fluid .offset9:first-child {
		margin-left: 77.07182320442%;
		*margin-left: 76.965440225696%;
	}
	.row-fluid .offset8 {
		margin-left: 71.270718232044%;
		*margin-left: 71.164335253321%;
	}
	.row-fluid .offset8:first-child {
		margin-left: 68.508287292818%;
		*margin-left: 68.401904314094%;
	}
	.row-fluid .offset7 {
		margin-left: 62.707182320442%;
		*margin-left: 62.600799341719%;
	}
	.row-fluid .offset7:first-child {
		margin-left: 59.944751381215%;
		*margin-left: 59.838368402492%;
	}
	.row-fluid .offset6 {
		margin-left: 54.14364640884%;
		*margin-left: 54.037263430116%;
	}
	.row-fluid .offset6:first-child {
		margin-left: 51.381215469613%;
		*margin-left: 51.27483249089%;
	}
	.row-fluid .offset5 {
		margin-left: 45.580110497238%;
		*margin-left: 45.473727518514%;
	}
	.row-fluid .offset5:first-child {
		margin-left: 42.817679558011%;
		*margin-left: 42.711296579288%;
	}
	.row-fluid .offset4 {
		margin-left: 37.016574585635%;
		*margin-left: 36.910191606912%;
	}
	.row-fluid .offset4:first-child {
		margin-left: 34.254143646409%;
		*margin-left: 34.147760667685%;
	}
	.row-fluid .offset3 {
		margin-left: 28.453038674033%;
		*margin-left: 28.34665569531%;
	}
	.row-fluid .offset3:first-child {
		margin-left: 25.690607734807%;
		*margin-left: 25.584224756083%;
	}
	.row-fluid .offset2 {
		margin-left: 19.889502762431%;
		*margin-left: 19.783119783708%;
	}
	.row-fluid .offset2:first-child {
		margin-left: 17.127071823204%;
		*margin-left: 17.020688844481%;
	}
	.row-fluid .offset1 {
		margin-left: 11.325966850829%;
		*margin-left: 11.219583872105%;
	}
	.row-fluid .offset1:first-child {
		margin-left: 8.5635359116022%;
		*margin-left: 8.4571529328788%;
	}
	input,
	textarea,
	.uneditable-input {
		margin-left: 0;
	}
	.controls-row [class*="span"] + [class*="span"] {
		margin-left: 30px;
	}
	input.span12, textarea.span12, .uneditable-input.span12 {
		width: 1156px;
	}
	input.span11, textarea.span11, .uneditable-input.span11 {
		width: 1056px;
	}
	input.span10, textarea.span10, .uneditable-input.span10 {
		width: 956px;
	}
	input.span9, textarea.span9, .uneditable-input.span9 {
		width: 856px;
	}
	input.span8, textarea.span8, .uneditable-input.span8 {
		width: 756px;
	}
	input.span7, textarea.span7, .uneditable-input.span7 {
		width: 656px;
	}
	input.span6, textarea.span6, .uneditable-input.span6 {
		width: 556px;
	}
	input.span5, textarea.span5, .uneditable-input.span5 {
		width: 456px;
	}
	input.span4, textarea.span4, .uneditable-input.span4 {
		width: 356px;
	}
	input.span3, textarea.span3, .uneditable-input.span3 {
		width: 256px;
	}
	input.span2, textarea.span2, .uneditable-input.span2 {
		width: 156px;
	}
	input.span1, textarea.span1, .uneditable-input.span1 {
		width: 56px;
	}
	.thumbnails {
		margin-left: -30px;
	}
	.thumbnails > li {
		margin-left: 30px;
	}
	.row-fluid .thumbnails {
		margin-left: 0;
	}
}
@media (max-width: 738px) {
	body {
		padding-top: 0;
	}
	.navbar-fixed-top,
	.navbar-fixed-bottom {
		position: static;
	}
	.navbar-fixed-top {
		margin-bottom: 18px;
	}
	.navbar-fixed-bottom {
		margin-top: 18px;
	}
	.navbar-fixed-top .navbar-inner,
	.navbar-fixed-bottom .navbar-inner {
		padding: 5px;
	}
	.navbar .container {
		width: auto;
		padding: 0;
	}
	.navbar .brand {
		padding-left: 10px;
		padding-right: 10px;
		margin: 0 0 0 -5px;
	}
	.nav-collapse {
		clear: both;
	}
	.nav-collapse .nav {
		float: none;
		margin: 0 0 9px;
	}
	.nav-collapse .nav > li {
		float: none;
	}
	.nav-collapse .nav > li > a {
		margin-bottom: 2px;
	}
	.nav-collapse .nav > .divider-vertical {
		display: none;
	}
	.nav-collapse .nav .nav-header {
		color: #555;
		text-shadow: none;
	}
	.nav-collapse .nav > li > a,
	.nav-collapse .dropdown-menu a {
		padding: 9px 15px;
		font-weight: bold;
		color: #555;
		-webkit-border-radius: 3px;
		-moz-border-radius: 3px;
		border-radius: 3px;
	}
	.nav-collapse .btn {
		padding: 4px 10px 4px;
		font-weight: normal;
		-webkit-border-radius: 4px;
		-moz-border-radius: 4px;
		border-radius: 4px;
	}
	.nav-collapse .dropdown-menu li + li a {
		margin-bottom: 2px;
	}
	.nav-collapse .nav > li > a:hover,
	.nav-collapse .dropdown-menu a:hover {
		background-color: #f2f2f2;
	}
	.navbar-inverse .nav-collapse .nav > li > a:hover,
	.navbar-inverse .nav-collapse .dropdown-menu a:hover {
		background-color: #10223e;
	}
	.nav-collapse.in .btn-group {
		margin-top: 5px;
		padding: 0;
	}
	.nav-collapse .dropdown-menu {
		position: static;
		top: auto;
		left: auto;
		float: none;
		display: block;
		max-width: none;
		margin: 0 15px;
		padding: 0;
		background-color: transparent;
		border: none;
		-webkit-border-radius: 0;
		-moz-border-radius: 0;
		border-radius: 0;
		-webkit-box-shadow: none;
		-moz-box-shadow: none;
		box-shadow: none;
	}
	.nav-collapse .dropdown-menu:before,
	.nav-collapse .dropdown-menu:after {
		display: none;
	}
	.nav-collapse .dropdown-menu .divider {
		display: none;
	}
	.nav-collapse .navbar-form,
	.nav-collapse .navbar-search {
		float: none;
		padding: 9px 15px;
		margin: 9px 0;
		border-top: 1px solid #f2f2f2;
		border-bottom: 1px solid #f2f2f2;
		-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
		-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
		box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
	}
	.navbar .nav-collapse .nav.pull-right {
		float: none;
		margin-left: 0;
	}
	.nav-collapse,
	.nav-collapse.collapse {
		overflow: hidden;
		height: 0;
	}
	.navbar .btn-navbar {
		display: block;
	}
	.navbar-static .navbar-inner {
		padding-left: 10px;
		padding-right: 10px;
	}
}
@media (min-width: 980px) {
	.nav-collapse.collapse {
		height: auto !important;
		overflow: visible !important;
	}
}
.small {
	font-size: 11px;
}
iframe,
svg {
	max-width: 100%;
}
.nowrap {
	white-space: nowrap;
}
.center,
.table td.center,
.table th.center {
	text-align: center;
}
a.disabled,
a.disabled:hover {
	color: #999999;
	background-color: transparent;
	cursor: default;
	text-decoration: none;
}
.hero-unit {
	text-align: center;
}
.hero-unit .lead {
	margin-bottom: 18px;
	font-size: 20px;
	font-weight: 200;
	line-height: 27px;
}
.btn .caret {
	margin-bottom: 7px;
}
.blog-row-rule,
.blog-item-rule {
	border: 0;
}
body.modal {
	padding-top: 0;
}
.row-even,
.row-odd {
	padding: 5px;
	width: 99%;
	border-bottom: 1px solid #ddd;
}
.row-odd {
	background-color: transparent;
}
.row-even {
	background-color: #f9f9f9;
}
.blog-row-rule,
.blog-item-rule {
	border: 0;
}
.row-fluid .row-reveal {
	visibility: hidden;
}
.row-fluid:hover .row-reveal {
	visibility: visible;
}
.btn-wide {
	width: 80%;
}
.nav-list > li.offset > a {
	padding-left: 30px;
	font-size: 12px;
}
.blog-row-rule,
.blog-item-rule {
	border: 0;
}
.row-fluid .offset1 {
	margin-left: 8.382978723%;
}
.row-fluid .offset2 {
	margin-left: 16.89361702%;
}
.row-fluid .offset3 {
	margin-left: 25.404255317%;
}
.row-fluid .offset4 {
	margin-left: 33.914893614%;
}
.row-fluid .offset5 {
	margin-left: 42.425531911%;
}
.row-fluid .offset6 {
	margin-left: 50.93617020799999%;
}
.row-fluid .offset7 {
	margin-left: 59.446808505%;
}
.row-fluid .offset8 {
	margin-left: 67.95744680199999%;
}
.row-fluid .offset9 {
	margin-left: 76.468085099%;
}
.row-fluid .offset10 {
	margin-left: 84.97872339599999%;
}
.row-fluid .offset11 {
	margin-left: 91.489361693%;
}
.navbar .nav > li > a.btn {
	padding: 4px 10px;
	line-height: 18px;
}
.nav-tabs.nav-dark {
	border-bottom: 1px solid #333;
	text-shadow: 1px 1px 1px #000;
}
.nav-tabs.nav-dark > li > a {
	color: #F8F8F8;
}
.nav-tabs.nav-dark > li > a:hover {
	border-color: #333 #333 #111;
	background-color: #777777;
}
.nav-tabs.nav-dark > .active > a,
.nav-tabs.nav-dark > .active > a:hover {
	color: #ffffff;
	background-color: #555555;
	border: 1px solid #222;
	border-bottom-color: transparent;
}
.thumbnail.pull-left {
	margin: 0 10px 10px 0;
}
.thumbnail.pull-right {
	margin: 0 0 10px 10px;
}
.width-10 {
	width: 10px;
}
.width-20 {
	width: 20px;
}
.width-30 {
	width: 30px;
}
.width-40 {
	width: 40px;
}
.width-50 {
	width: 50px;
}
.width-60 {
	width: 60px;
}
.width-70 {
	width: 70px;
}
.width-80 {
	width: 80px;
}
.width-90 {
	width: 90px;
}
.width-100 {
	width: 100px;
}
.height-10 {
	height: 10px;
}
.height-20 {
	height: 20px;
}
.height-30 {
	height: 30px;
}
.height-40 {
	height: 40px;
}
.height-50 {
	height: 50px;
}
.height-60 {
	height: 60px;
}
.height-70 {
	height: 70px;
}
.height-80 {
	height: 80px;
}
.height-90 {
	height: 90px;
}
.height-100 {
	height: 100px;
}
hr.hr-condensed {
	margin: 10px 0;
}
.list-striped,
.row-striped {
	list-style: none;
	line-height: 18px;
	text-align: left;
	vertical-align: middle;
	border-top: 1px solid #ddd;
	margin-left: 0;
}
.list-striped li,
.list-striped dd,
.row-striped .row,
.row-striped .row-fluid {
	border-bottom: 1px solid #ddd;
	padding: 8px;
}
.list-striped li:nth-child(odd),
.list-striped dd:nth-child(odd),
.row-striped .row:nth-child(odd),
.row-striped .row-fluid:nth-child(odd) {
	background-color: #f9f9f9;
}
.list-striped li:hover,
.list-striped dd:hover,
.row-striped .row:hover,
.row-striped .row-fluid:hover {
	background-color: #f5f5f5;
}
.row-striped .row-fluid {
	width: 97%;
}
.row-striped .row-fluid [class*="span"] {
	min-height: 10px;
}
.row-striped .row-fluid [class*="span"] {
	margin-left: 8px;
}
.row-striped .row-fluid [class*="span"]:first-child {
	margin-left: 0;
}
.list-condensed li {
	padding: 4px 5px;
}
.row-condensed .row,
.row-condensed .row-fluid {
	padding: 4px 5px;
}
.list-bordered,
.row-bordered {
	list-style: none;
	line-height: 18px;
	text-align: left;
	vertical-align: middle;
	margin-left: 0;
	border: 1px solid #ddd;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
}
.radio.btn-group input[type=radio] {
	display: none;
}
.radio.btn-group > label:first-of-type {
	margin-left: 0;
	-webkit-border-bottom-left-radius: 4px;
	border-bottom-left-radius: 4px;
	-webkit-border-top-left-radius: 4px;
	border-top-left-radius: 4px;
	-moz-border-radius-bottomleft: 4px;
	-moz-border-radius-topleft: 4px;
}
fieldset.radio.btn-group {
	padding-left: 0;
}
.iframe-bordered {
	border: 1px solid #ddd;
}
.tab-content {
	overflow: visible;
}
.tabs-left .tab-content {
	overflow: auto;
}
.nav-tabs > li > span {
	display: block;
	margin-right: 2px;
	padding-right: 12px;
	padding-left: 12px;
	padding-top: 8px;
	padding-bottom: 8px;
	line-height: 18px;
	border: 1px solid transparent;
	-webkit-border-radius: 4px 4px 0 0;
	-moz-border-radius: 4px 4px 0 0;
	border-radius: 4px 4px 0 0;
}
.btn-micro {
	padding: 1px 4px;
	font-size: 10px;
	line-height: 8px;
}


/* ToolTip Forms iCagenda */
.tip-wrap {
	max-width: 400px;
	padding: 3px 8px;
	color: #fff;
	text-align: center;
	text-decoration: none;
	background: #333;
	background: rgba(0,0,0,0.8);
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
	z-index: 100;
}


.page-header {
	margin: 2px 0px 10px 0px;
	padding-bottom: 5px;
}
.input-prepend .chzn-container-single .chzn-single {
	border-color: #ccc;
	height: 26px;
	-webkit-border-radius: 0 3px 3px 0;
	-moz-border-radius: 0 3px 3px 0;
	border-radius: 0 3px 3px 0;
	-moz-box-shadow: none;
	-webkit-box-shadow: none;
	box-shadow: none;
}
.input-prepend .chzn-container-active .chzn-single-with-drop {
	-webkit-border-radius: 0 3px 0 0;
	-moz-border-radius: 0 3px 0 0;
	border-radius: 0 3px 0 0;
}
.input-prepend .chzn-container-single .chzn-drop {
	border-color: #ccc;
}
.input-prepend > .add-on,
.input-append > .add-on {
	vertical-align: top;
}
.element-invisible {
	position: absolute;
	padding: 0;
	margin: 0;
	border: 0;
	height: 1px;
	width: 1px;
	overflow: hidden;
}
.form-vertical .control-label {
	float: none;
	width: auto;
	padding-right: 0;
	padding-top: 0;
	text-align: left;
}
.form-vertical .controls {
	margin-left: 0;
}
.width-auto {
	width: auto;
}
.btn-group .chzn-results {
	white-space: normal;
}
.accordion-body.in:hover {
	overflow: visible;
}
.invalid {
	color: #9d261d;
	font-weight: bold;
}
input.invalid {
	border: 1px solid #9d261d;
}
.tip-text {
	text-align: left;
}
@font-face {
	font-family: 'IcoMoon';
	src: url('../../../../media/jui/fonts/IcoMoon.eot');
	src: url('../../../../media/jui/fonts/IcoMoon.eot?#iefix') format('embedded-opentype'), url('../../../../media/jui/fonts/IcoMoon.woff') format('woff'), url('../../../../media/jui/fonts/IcoMoon.ttf') format('truetype'), url('../../../../media/jui/fonts/IcoMoon.svg#IcoMoon') format('svg');
	font-weight: normal;
	font-style: normal;
}
/*
[data-icon]:before {
	font-family: 'IcoMoon';
	content: attr(data-icon);
	speak: none;
}
[class^="icon-"],
[class*=" icon-"] {
	display: inline-block;
	width: 14px;
	height: 14px;
	*margin-right: .3em;
	line-height: 14px;
}
[class^="icon-"]:before,
[class*=" icon-"]:before {
	font-family: 'IcoMoon';
	font-style: normal;
	speak: none;
}
*/
.icon-home:before {
	content: "\21";
}
.icon-user:before {
	content: "\22";
}
.icon-checkedout:before,
.icon-lock:before,
.icon-locked:before {
	content: "\23";
}
.icon-comment:before,
.icon-comments:before {
	content: "\24";
}
.icon-comments-2:before {
	content: "\25";
}
.icon-share-alt:before,
.icon-out:before {
	content: "\26";
}
.icon-share:before,
.icon-redo:before {
	content: "\27";
}
.icon-undo:before {
	content: "\28";
}
.icon-file-add:before {
	content: "\29";
}
.icon-new:before,
.icon-plus:before {
	content: "\2a";
}
.icon-apply:before,
.icon-edit:before,
.icon-pencil:before {
	content: "\2b";
}
.icon-edit:before,
.icon-pencil:before {
	color: #2f96b4;
}
.icon-pencil-2:before {
	content: "\2c";
}
.icon-folder-open:before,
.icon-folder:before {
	content: "\2d";
}
.icon-folder-close:before,
.icon-folder-2:before {
	content: "\2e";
}
.icon-picture:before {
	content: "\2f";
}
.icon-pictures:before {
	content: "\30";
}
.icon-list:before,
.icon-list-view:before {
	content: "\31";
}
.icon-power-cord:before {
	content: "\32";
}
.icon-cube:before {
	content: "\33";
}
.icon-puzzle:before {
	content: "\34";
}
.icon-flag:before {
	content: "\35";
}
.icon-tools:before {
	content: "\36";
}
.icon-cogs:before {
	content: "\37";
}
.icon-options:before,
.icon-cog:before {
	content: "\38";
}
.icon-equalizer:before {
	content: "\39";
}
.icon-wrench:before {
	content: "\3a";
}
.icon-brush:before {
	content: "\3b";
}
.icon-eye-open:before,
.icon-eye:before {
	content: "\3c";
}
.icon-checkbox-unchecked:before {
	content: "\3d";
}
.icon-checkin:before,
.icon-checkbox:before {
	content: "\3e";
}
.icon-checkbox-partial:before {
	content: "\3f";
}
.icon-asterisk:before,
.icon-star-empty:before {
	content: "\40";
}
.icon-star-2:before {
	content: "\41";
}
.icon-featured:before,
.icon-star:before {
	content: "\42";
	color: #f89406;
}
.icon-calendar:before {
	content: "\43";
}
.icon-calendar-2:before {
	content: "\44";
}
.icon-question-sign:before,
.icon-help:before {
	content: "\45";
}
.icon-support:before {
	content: "\46";
}
.icon-pending:before,
.icon-warning:before {
	content: "\48";
	color: #f89406;
}
.icon-publish:before,
.icon-save:before,
.icon-ok:before,
.icon-checkmark:before {
	content: "\47";
	color: #51a351;
}
.icon-unpublish:before,
.icon-cancel:before {
	content: "\4a";
	color: #bd362f;
}
.icon-eye-close:before,
.icon-minus:before {
	content: "\4b";
}
.icon-purge:before,
.icon-trash:before {
	content: "\4c";
}
.icon-envelope:before,
.icon-mail:before {
	content: "\4d";
}
.icon-mail-2:before {
	content: "\4e";
}
.icon-unarchive:before,
.icon-drawer:before {
	content: "\4f";
}
.icon-archive:before,
.icon-drawer-2:before {
	content: "\50";
}
.icon-box-add:before {
	content: "\51";
}
.icon-box-remove:before {
	content: "\52";
}
.icon-search:before {
	content: "\53";
}
.icon-filter:before {
	content: "\54";
}
.icon-camera:before {
	content: "\55";
}
.icon-play:before {
	content: "\56";
}
.icon-music:before {
	content: "\57";
}
.icon-grid-view:before {
	content: "\58";
}
.icon-grid-view-2:before {
	content: "\59";
}
.icon-menu:before {
	content: "\5a";
}
.icon-thumbs-up:before {
	content: "\5b";
}
.icon-thumbs-down:before {
	content: "\5c";
}
.icon-delete:before,
.icon-remove:before,
.icon-cancel-2:before {
	content: "\49";
}
.icon-save-new:before,
.icon-plus-2:before {
	content: "\5d";
	color: #51a351;
}
.icon-ban-circle:before,
.icon-minus-sign:before,
.icon-minus-2:before {
	content: "\5e";
	color: #bd362f;
}
.icon-key:before {
	content: "\5f";
}
.icon-quote:before {
	content: "\60";
}
.icon-quote-2:before {
	content: "\61";
}
.icon-database:before {
	content: "\62";
}
.icon-location:before {
	content: "\63";
}
.icon-zoom-in:before {
	content: "\64";
}
.icon-zoom-out:before {
	content: "\65";
}
.icon-expand:before {
	content: "\66";
}
.icon-contract:before {
	content: "\67";
}
.icon-expand-2:before {
	content: "\68";
}
.icon-contract-2:before {
	content: "\69";
}
.icon-health:before {
	content: "\6a";
}
.icon-wand:before {
	content: "\6b";
}
.icon-unblock:before,
.icon-refresh:before {
	content: "\6c";
}
.icon-vcard:before {
	content: "\6d";
}
.icon-clock:before {
	content: "\6e";
}
.icon-compass:before {
	content: "\6f";
}
.icon-address:before {
	content: "\70";
}
.icon-feed:before {
	content: "\71";
}
.icon-flag-2:before {
	content: "\72";
}
.icon-pin:before {
	content: "\73";
}
.icon-lamp:before {
	content: "\74";
}
.icon-chart:before {
	content: "\75";
}
.icon-bars:before {
	content: "\76";
}
.icon-pie:before {
	content: "\77";
}
.icon-dashboard:before {
	content: "\78";
}
.icon-lightning:before {
	content: "\79";
}
.icon-move:before {
	content: "\7a";
}
.icon-next:before {
	content: "\7b";
}
.icon-previous:before {
	content: "\7c";
}
.icon-first:before {
	content: "\7d";
}
.icon-last:before {
	content: "\e000";
}
.icon-loop:before {
	content: "\e001";
}
.icon-shuffle:before {
	content: "\e002";
}
.icon-arrow-first:before {
	content: "\e003";
}
.icon-arrow-last:before {
	content: "\e004";
}
.icon-chevron-up:before,
.icon-uparrow:before,
.icon-arrow-up:before {
	content: "\e005";
}
.icon-chevron-right:before,
.icon-arrow-right:before {
	content: "\e006";
}
.icon-chevron-down:before,
.icon-downarrow:before,
.icon-arrow-down:before {
	content: "\e007";
}
.icon-chevron-left:before,
.icon-arrow-left:before {
	content: "\e008";
}
.icon-arrow-up-2:before {
	content: "\e009";
}
.icon-arrow-right-2:before {
	content: "\e00a";
}
.icon-download:before,
.icon-arrow-down-2:before {
	content: "\e00b";
}
.icon-arrow-left-2:before {
	content: "\e00c";
}
.icon-play-2:before {
	content: "\e00d";
}
.icon-menu-2:before {
	content: "\e00e";
}
.icon-arrow-up-3:before {
	content: "\e00f";
}
.icon-arrow-right-3:before {
	content: "\e010";
}
.icon-arrow-down-3:before {
	content: "\e011";
}
.icon-arrow-left-3:before {
	content: "\e012";
}
.icon-print:before,
.icon-printer:before {
	content: "\e013";
}
.icon-color-palette:before {
	content: "\e014";
}
.icon-camera-2:before {
	content: "\e015";
}
.icon-file:before {
	content: "\e016";
}
.icon-file-remove:before {
	content: "\e017";
}
.icon-save-copy:before,
.icon-copy:before {
	content: "\e018";
	color: #51a351;
}
.icon-cart:before {
	content: "\e019";
}
.icon-basket:before {
	content: "\e01a";
}
.icon-broadcast:before {
	content: "\e01b";
}
.icon-screen:before {
	content: "\e01c";
}
.icon-tablet:before {
	content: "\e01d";
}
.icon-mobile:before {
	content: "\e01e";
}
.icon-users:before {
	content: "\e01f";
}
.icon-briefcase:before {
	content: "\e020";
}
.icon-download:before {
	content: "\e021";
}
.icon-upload:before {
	content: "\e022";
}
.icon-bookmark:before {
	content: "\e023";
}
.icon-out-2:before {
	content: "\e024";
}
html {
	height: 100%;
}
body {
	height: 100%;
}
.view-login {
	padding-top: 0;
	background-color: #142849;
	background-image: -webkit-gradient(radial,center center,0,center center,460,from(#165387),to(#142849));
	background-image: -webkit-radial-gradient(circle,#165387,#142849);
	background-image: -moz-radial-gradient(circle,#165387,#142849);
	background-image: -o-radial-gradient(circle,#165387,#142849);
	background-repeat: no-repeat;
}
.view-login .container {
	width: 300px;
	position: absolute;
	top: 50%;
	left: 50%;
	margin-top: -206px;
	margin-left: -150px;
}
.view-login .navbar-fixed-bottom {
	padding-left: 20px;
	padding-right: 20px;
	text-align: center;
}
.view-login .navbar-fixed-bottom,
.view-login .navbar-fixed-bottom a {
	color: #FCFCFC;
	text-shadow: 1px 1px 1px rgba(0,0,0,0.5);
}
.view-login .well {
	padding-bottom: 0;
	-webkit-box-shadow: 0px 0px 60px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 0.9) inset;
	-moz-box-shadow: 0px 0px 60px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 0.9) inset;
	box-shadow: 0px 0px 60px rgba(0, 0, 0, 0.5), 0px 1px 0px rgba(255, 255, 255, 0.9) inset;
}
.view-login .login-joomla {
	display: inline-block;
	height: 24px;
	width: 24px;
	text-indent: -9999px;
	background: url('../images/login-joomla.png') no-repeat;
	margin-left: -20px;
}
.view-login .navbar-fixed-bottom {
	position: absolute;
}
.view-login .input-medium {
	width: 184px;
}
.login .chzn-single {
	width: 230px !important;
}
.login .chzn-container,
.login .chzn-drop {
	width: 238px !important;
	max-width: 238px !important;
}
.small {
	font-size: 11px;
}
.row-even .small,
.row-odd .small,
.row-even .small a,
.row-odd .small a {
	color: #888;
}
body .navbar,
body .navbar-fixed-top {
	margin-bottom: 0;
}
.navbar-inner {
	min-height: 0;
}
.navbar-inner .container-fluid {
	padding-left: 10px;
	padding-right: 10px;
}
.navbar .navbar-text {
	line-height: 30px;
}
.navbar .brand {
	padding: 5px 12px 5px 12px;
	font-size: 16px;
	margin-left: 0;
}
.navbar .nav > li > a {
	padding: 6px 10px;
}
.header {
	background-color: #184a7d;
	background-image: -moz-linear-gradient(top,#17568c,#1a3867);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#17568c),to(#1a3867));
	background-image: -webkit-linear-gradient(top,#17568c,#1a3867);
	background-image: -o-linear-gradient(top,#17568c,#1a3867);
	background-image: linear-gradient(to bottom,#17568c,#1a3867);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff17568c', endColorstr='#ff1a3867', GradientType=0);
	border-top: 1px solid rgba(255,255,255,0.2);
	padding: 5px;
}
.navbar .btn-navbar {
	background: #17568c;
	background: -moz-linear-gradient(top,#17568c 0%,#1a3867 100%);
	background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#17568c),color-stop(100%,#1a3867));
	background: -webkit-linear-gradient(top,#17568c 0%,#1a3867 100%);
	background: -o-linear-gradient(top,#17568c 0%,#1a3867 100%);
	background: -ms-linear-gradient(top,#17568c 0%,#1a3867 100%);
	background: linear-gradient(top,#17568c 0%,#1a3867 100%);
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#17568c',endColorstr='#1a3867',GradientType=0);
	border: 1px solid #0D2242;
	margin-bottom: 2px;
}
@media (max-width: 767px) {
	.header {
		margin-left: -20px;
		margin-right: -20px;
	}
}
.header .navbar-search {
	margin-top: 0;
}
@media (max-width: 979px) {
	.header .navbar-search {
		border-top: 0;
		border-bottom: 0;
		-webkit-box-shadow: none;
		-moz-box-shadow: none;
		box-shadow: none;
	}
}
.navbar-search .search-query {
	background: rgba(255,255,255,0.3);
}
.logo {
	width: 100%;
	max-width: 143px;
	height: auto;
}
.container-logo {
	text-align: center;
}
.page-title {
	color: white;
	text-shadow: 1px 1px 1px rgba(0,0,0,0.8);
	font-weight: normal;
	font-size: 20px;
	line-height: 36px;
	margin: 0;
}
.content-title {
	font-size: 24px;
	font-weight: normal;
	line-height: 26px;
	margin-top: 0;
}
.subhead {
	background: #ffffff;
	background: -moz-linear-gradient(top,#ffffff 0%,#ededed 100%);
	background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffffff),color-stop(100%,#ededed));
	background: -webkit-linear-gradient(top,#ffffff 0%,#ededed 100%);
	background: -o-linear-gradient(top,#ffffff 0%,#ededed 100%);
	background: -ms-linear-gradient(top,#ffffff 0%,#ededed 100%);
	background: linear-gradient(top,#ffffff 0%,#ededed 100%);
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#ededed',GradientType=0);
	border-bottom: 1px solid #D3D3D3;
	color: #0C192E;
	text-shadow: 0 1px 0 #FFF;
	margin-bottom: 10px;
}
.subhead-fixed {
	position: fixed;
	width: 100%;
	top: 30px;
	z-index: 100;
	-moz-box-shadow: 0px 2px 5px rgba(0,0,0,0.2);
	-webkit-box-shadow: 0px 2px 5px rgba(0,0,0,0.2);
	box-shadow: 0px 2px 5px rgba(0,0,0,0.2);
}
@media (max-width: 767px) {
	.subhead {
		margin-left: -20px;
		margin-right: -20px;
		padding-left: 10px;
		padding-right: 10px;
	}
}
.subhead h1 {
	font-size: 17px;
	font-weight: normal;
	margin-left: 10px;
	margin-top: 6px;
}
#toolbar .btn-success {
	width: 148px;
}
.well .page-header {
	margin: -10px 0 18px 0;
	padding-bottom: 5px;
}
.well .row-even p,
.well .row-odd p {
	margin-bottom: 0;
}
h1,
h2,
h3,
h4,
h5,
h6 {
	margin: 12px 0;
}
h1 {
	font-size: 26px;
	line-height: 28px;
}
h2 {
	font-size: 22px;
	line-height: 24px;
}
h3 {
	font-size: 18px;
	line-height: 20px;
}
h4 {
	font-size: 14px;
	line-height: 16px;
}
h5 {
	font-size: 13px;
	line-height: 15px;
}
h6 {
	font-size: 12px;
	line-height: 14px;
}
.sidebar-nav .nav-list > li > a {
	color: #555;
}
.sidebar-nav .nav-list > li.active > a {
	color: #fff;
}
.container-main,
#system-debug {
	padding-bottom: 50px;
}
#status {
	background: #EDEDED;
	border-top: 1px solid #DDDDDD;
	padding: 2px 10px 4px 10px;
	-webkit-box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.8) inset, 0px -15px 15px rgba(255, 255, 255, 0.6);
	-moz-box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.8) inset, 0px -15px 15px rgba(255, 255, 255, 0.6);
	box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.8) inset, 0px -15px 15px rgba(255, 255, 255, 0.6);
	color: #999999;
}
#status .btn-toolbar,
#status p {
	margin: 0px;
}
#status .btn-toolbar,
#status .btn-group {
	font-size: 12px;
}
#status a {
	color: #999999;
}
#status.status-top {
	background: #1a3867;
	-webkit-box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.2) inset, 0px -1px 0px rgba(0, 0, 0, 0.3) inset, 0px -1px 0px rgba(0, 0, 0, 0.3);
	-moz-box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.2) inset, 0px -1px 0px rgba(0, 0, 0, 0.3) inset, 0px -1px 0px rgba(0, 0, 0, 0.3);
	box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.2) inset, 0px -1px 0px rgba(0, 0, 0, 0.3) inset, 0px -1px 0px rgba(0, 0, 0, 0.3);
	border-top: 0;
	color: #d9d9d9;
	padding: 2px 20px 6px 20px;
}
#status.status-top a {
	color: #d9d9d9;
}
.pagination-toolbar {
	margin: 0;
}
.pagination-toolbar a {
	line-height: 26px;
}
.pull-right > .dropdown-menu {
	left: auto;
	right: 0;
}
.disabled {
	cursor: default;
	background-image: none;
	opacity: 0.65;
	filter: alpha(opacity=65);
	-webkit-box-shadow: none;
	-moz-box-shadow: none;
	box-shadow: none;
}
.nav-filters hr {
	margin: 5px 0;
}
.view-module .tab-content {
	overflow: visible;
}
#assignment.tab-pane {
	min-height: 500px;
}
.btn-primary.active,
.btn-warning.active,
.btn-danger.active,
.btn-success.active,
.btn-info.active,
.btn-inverse.active {
	color: rgba(255,255,255,0.95);
}
.chzn-container,
.chzn-drop {
	max-width: 100% !important;
}
.CodeMirror-wrapping {
	height: auto !important;
}
@media (max-width: 979px) {
	.navbar .brand {
		font-size: 13px;
	}
	.navbar .nav {
		margin: 0 2px 0 0;
	}
	.navbar .nav > li > a {
		padding: 6px;
	}
	.container-fluid {
		padding-left: 10px;
		padding-right: 10px;
	}
}
@media (min-width: 768px) {
	.row-fluid [class*="span"] {
		margin-left: 15px;
	}
}
@media (max-width: 767px) {
	.page-title {
		text-align: center;
	}
	.navbar-search.pull-right {
		float: none;
		text-align: center;
	}
	.subhead-fixed {
		position: static;
		width: auto;
	}
	.container-fluid {
		padding-left: 0;
		padding-right: 0;
	}
}
@media (min-width: 738px) {
	body {
		padding-top: 30px;
	}
	body.component {
		padding-top: 0;
	}
}
@media (max-width: 738px) {
	.navbar .brand {
		font-size: 16px;
	}
}
.btn-subhead {
	display: none;
}
@media (min-width: 481px) {
	#filter-bar {
		height: 29px;
	}
}
@media (max-width: 480px) {
	.table th:nth-of-type(n+5),
	.table th:nth-of-type(3),
	.table th:nth-of-type(2),
	.table td:nth-of-type(n+5),
	.table td:nth-of-type(2),
	.table td:nth-of-type(3) {
		white-space: normal;
	}
	.pagination a {
		padding: 5px;
	}
	.btn-group.divider,
	.header .row-fluid .span3,
	.header .row-fluid .span7,
	.subhead-collapse {
		display: none;
	}
	.navbar .btn {
		margin: 0;
	}
	.btn-subhead {
		display: block;
		margin: 10px 0;
	}
	.chzn-container,
	.chzn-container .chzn-results,
	.chzn-container-single .chzn-drop,
	.btn-toolbar > .btn-group,
	.btn-toolbar > .btn-group > .btn {
		width: 99% !important;
	}
	.login .chzn-single {
		width: 222px !important;
	}
	.login .chzn-container,
	.login .chzn-drop {
		width: 230px !important;
	}
}
@media (max-width: 320px) {
	.view-login .navbar-fixed-bottom {
		display: none;
	}
}
.nav-collapse .nav li a,
.dropdown-menu a {
	background-image: none;
}
@media (max-width: 738px) {
	.navbar-fixed-top .navbar-inner,
	.navbar-fixed-top .navbar-inner .container-fluid {
		padding: 0;
	}
	.navbar .brand {
		margin-top: 2px;
	}
	.navbar .btn-navbar {
		margin-top: 3px;
		margin-right: 3px;
		margin-bottom: 3px;
	}
	.nav-collapse .nav .nav-header {
		color: #fff;
	}
	.nav-collapse.collapse.in {
		height: auto !important;
	}
	.nav-collapse .nav,
	.navbar .nav-collapse .nav.pull-right {
		margin: 0;
	}
	.nav-collapse .dropdown-menu {
		margin: 0;
	}
	.nav-collapse .nav > li > a.dropdown-toggle {
		background-color: rgba(255,255,255,0.07);
		background-image: -moz-linear-gradient(top,rgba(255,255,255,0.15),rgba(255,255,255,0.05));
		background-image: -webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,0.15)),to(rgba(255,255,255,0.05)));
		background-image: -webkit-linear-gradient(top,rgba(255,255,255,0.15),rgba(255,255,255,0.05));
		background-image: -o-linear-gradient(top,rgba(255,255,255,0.15),rgba(255,255,255,0.05));
		background-image: linear-gradient(to bottom,rgba(255,255,255,0.15),rgba(255,255,255,0.05));
		background-repeat: repeat-x;
		filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#26ffffff', endColorstr='#0cffffff', GradientType=0);
		font-size: 12px;
		font-weight: bold;
		color: #eee;
		text-transform: uppercase;
		padding-left: 15px;
	}
	.nav-collapse .nav li a {
		margin-bottom: 0;
		border-top: 1px solid rgba(255,255,255,0.25);
		border-bottom: 1px solid rgba(0,0,0,0.5);
	}
	.nav-collapse .nav li ul li ul.dropdown-menu,
	.nav-collapse .nav li ul li:hover ul.dropdown-menu,
	.nav-collapse .caret {
		display: none !important;
	}
	.nav-collapse .nav > li > a,
	.nav-collapse .dropdown-menu a {
		font-size: 15px;
		font-weight: normal;
		color: #fff;
		-webkit-border-radius: 0;
		-moz-border-radius: 0;
		border-radius: 0;
	}
	.navbar .nav-collapse .nav > li > .dropdown-menu::before,
	.navbar .nav-collapse .nav > li > .dropdown-menu::after,
	.navbar .nav-collapse .dropdown-submenu > a::after {
		display: none;
	}
	.nav-collapse .dropdown-menu li + li a {
		margin-bottom: 0;
	}
}
.sortable-handler.inactive {
	opacity: 0.3;
	filter: alpha(opacity=30);
}
.form-horizontal .control-label {
	width: auto;
	padding-right: 5px;
	text-align: left;
}
.form-horizontal #jform_catid_chzn {
	vertical-align: middle;
}
ul.manager .height-50 .icon-folder-2 {
	height: 35px;
	width: 35px;
	line-height: 35px;
	font-size: 30px;
}
.upload-queue > li > span,
.upload-queue > li > a {
	margin: 0 2px;
}
.upload-queue .file-remove {
	float: right;
}
.moor-box {
	z-index: 3;
}
.admin .chzn-container .chzn-drop {
	z-index: 1200;
}
ul.treeselect,
ul.treeselect li {
	margin: 0;
	padding: 0;
}
ul.treeselect {
	margin-top: 8px;
}
ul.treeselect li {
	padding: 2px 10px 2px;
	list-style: none;
}
ul.treeselect i.treeselect-toggle {
	line-height: 18px;
}
ul.treeselect label {
	font-size: 1em;
	margin-left: 8px;
}
ul.treeselect label.nav-header {
	padding: 0;
}
ul.treeselect input {
	margin: 2px 0 0 8px;
}
ul.treeselect .treeselect-menu {
	margin: 0 6px;
}
ul.treeselect ul.dropdown-menu {
	margin: 0;
}
ul.treeselect ul.dropdown-menu li {
	padding: 0 5px;
	border: none;
}
td.has-context {
	height: 23px;
}
css/icagenda-front.css000060400000051403152455755750010752 0ustar00/**
 *------------------------------------------------------------------------------
 *	CSS Frontend - iCagenda v3 by Jooml!C
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-06-22
 * @since       3.4.0
 *------------------------------------------------------------------------------
*/


/* -- IC FORM GROUP/LABEL STYLES ----------------------------- */
.ic-control-group {
	padding: 5px 10px;
}

.ic-control-label {
	float: left;
}

.ic-control-label label {
	padding-top: 5px;
}

.ic-controls {
}

.ic-select {
	margin-bottom: 10px;
}


/* -- IC RADIO BUTTON STYLES ----------------------------- */
.ic-btn {
	display: inline-block;
	*display: inline;
	*zoom: 1;
	padding: 4px 14px;
	margin-bottom: 0;
	font-size: 13px;
	line-height: 18px;
	*line-height: 18px;
	text-align: center;
	vertical-align: middle;
	cursor: pointer;
	color: #333;
	text-shadow: 0 1px 1px rgba(255,255,255,0.75);
	background-color: #f5f5f5;
	background-image: -moz-linear-gradient(top,#fff,#e6e6e6);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));
	background-image: -webkit-linear-gradient(top,#fff,#e6e6e6);
	background-image: -o-linear-gradient(top,#fff,#e6e6e6);
	background-image: linear-gradient(to bottom,#fff,#e6e6e6);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe5e5e5', GradientType=0);
	border-color: #e6e6e6 #e6e6e6 #bfbfbf;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #e6e6e6;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
	border: 1px solid #bbb;
	*border: 0;
	border-bottom-color: #a2a2a2;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
	*margin-left: .3em;
	-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
}
.ic-btn:hover,
.ic-btn:active,
.ic-btn.active,
.ic-btn.disabled,
.ic-btn[disabled] {
	color: #333;
	background-color: #e6e6e6;
	*background-color: #d9d9d9;
}
.ic-btn:active,
.ic-btn.active {
	background-color: #cccccc;
}
.ic-btn:first-child {
	*margin-left: 0;
}
.ic-btn:hover {
	color: #333;
	text-decoration: none;
	background-color: #e6e6e6;
	*background-color: #d9d9d9;
	background-position: 0 -15px;
	-webkit-transition: background-position .1s linear;
	-moz-transition: background-position .1s linear;
	-o-transition: background-position .1s linear;
	transition: background-position .1s linear;
}
.ic-btn:focus {
	outline: thin dotted #333;
	outline: 5px auto -webkit-focus-ring-color;
	outline-offset: -2px;
}
.ic-btn.active,
.ic-btn:active {
	background-color: #e6e6e6;
	background-color: #d9d9d9;
	background-image: none;
	outline: 0;
	-webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
	-moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
	box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
}
.ic-btn.disabled,
.ic-btn[disabled] {
	cursor: default;
	background-color: #e6e6e6;
	background-image: none;
	opacity: 0.65;
	filter: alpha(opacity=65);
	-webkit-box-shadow: none;
	-moz-box-shadow: none;
	box-shadow: none;
}
.ic-btn-large {
	padding: 9px 14px;
	font-size: 15px;
	line-height: normal;
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	border-radius: 5px;
}
.ic-btn-large [class^="icon-"] {
	margin-top: 2px;
}
.ic-btn-small {
	padding: 3px 9px;
	font-size: 11px;
	line-height: 16px;
}
.ic-btn-small [class^="icon-"] {
	margin-top: 0;
}
.ic-btn-mini {
	padding: 2px 6px;
	font-size: 10px;
	line-height: 14px;
}
.ic-btn-block {
	display: block;
	width: 100%;
	padding-left: 0;
	padding-right: 0;
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}
.ic-btn-block + .ic-btn-block {
	margin-top: 5px;
}
.ic-btn-primary.active,
.ic-btn-warning.active,
.ic-btn-danger.active,
.ic-btn-success.active,
.ic-btn-info.active,
.ic-btn-inverse.active {
	color: rgba(255,255,255,0.75);
}
.ic-btn {
	border-color: #c5c5c5;
	border-color: rgba(0,0,0,0.15) rgba(0,0,0,0.15) rgba(0,0,0,0.25);
}
.ic-btn-primary {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #1d6cb0;
	background-image: -moz-linear-gradient(top,#2384d3,#15497c);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#2384d3),to(#15497c));
	background-image: -webkit-linear-gradient(top,#2384d3,#15497c);
	background-image: -o-linear-gradient(top,#2384d3,#15497c);
	background-image: linear-gradient(to bottom,#2384d3,#15497c);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2384d3', endColorstr='#ff15497c', GradientType=0);
	border-color: #15497c #15497c #0a223b;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #15497c;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.ic-btn-primary:hover,
.ic-btn-primary:active,
.ic-btn-primary.active,
.ic-btn-primary.disabled,
.ic-btn-primary[disabled] {
	color: #fff;
	background-color: #15497c;
	*background-color: #113c66;
}
.ic-btn-primary:active,
.ic-btn-primary.active {
	background-color: #0e2f50;
}
.ic-btn-warning {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #faa732;
	background-image: -moz-linear-gradient(top,#fbb450,#f89406);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));
	background-image: -webkit-linear-gradient(top,#fbb450,#f89406);
	background-image: -o-linear-gradient(top,#fbb450,#f89406);
	background-image: linear-gradient(to bottom,#fbb450,#f89406);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffab44f', endColorstr='#fff89406', GradientType=0);
	border-color: #f89406 #f89406 #ad6704;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #f89406;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.ic-btn-warning:hover,
.ic-btn-warning:active,
.ic-btn-warning.active,
.ic-btn-warning.disabled,
.ic-btn-warning[disabled] {
	color: #fff;
	background-color: #f89406;
	*background-color: #df8505;
}
.ic-btn-warning:active,
.ic-btn-warning.active {
	background-color: #c67605;
}
.ic-btn-danger {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #da4f49;
	background-image: -moz-linear-gradient(top,#ee5f5b,#bd362f);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));
	background-image: -webkit-linear-gradient(top,#ee5f5b,#bd362f);
	background-image: -o-linear-gradient(top,#ee5f5b,#bd362f);
	background-image: linear-gradient(to bottom,#ee5f5b,#bd362f);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
	border-color: #bd362f #bd362f #802420;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #bd362f;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.ic-btn-danger:hover,
.ic-btn-danger:active,
.ic-btn-danger.active,
.ic-btn-danger.disabled,
.ic-btn-danger[disabled] {
	color: #fff;
	background-color: #bd362f;
	*background-color: #a9302a;
}
.ic-btn-danger:active,
.ic-btn-danger.active {
	background-color: #942a25;
}
.ic-btn-success {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #5bb75b;
	background-image: -moz-linear-gradient(top,#62c462,#51a351);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));
	background-image: -webkit-linear-gradient(top,#62c462,#51a351);
	background-image: -o-linear-gradient(top,#62c462,#51a351);
	background-image: linear-gradient(to bottom,#62c462,#51a351);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
	border-color: #51a351 #51a351 #387038;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #51a351;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.ic-btn-success:hover,
.ic-btn-success:active,
.ic-btn-success.active,
.ic-btn-success.disabled,
.ic-btn-success[disabled] {
	color: #fff;
	background-color: #51a351;
	*background-color: #499249;
}
.ic-btn-success:active,
.ic-btn-success.active {
	background-color: #408140;
}
.ic-btn-info {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #49afcd;
	background-image: -moz-linear-gradient(top,#5bc0de,#2f96b4);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));
	background-image: -webkit-linear-gradient(top,#5bc0de,#2f96b4);
	background-image: -o-linear-gradient(top,#5bc0de,#2f96b4);
	background-image: linear-gradient(to bottom,#5bc0de,#2f96b4);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
	border-color: #2f96b4 #2f96b4 #1f6377;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #2f96b4;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.ic-btn-info:hover,
.ic-btn-info:active,
.ic-btn-info.active,
.ic-btn-info.disabled,
.ic-btn-info[disabled] {
	color: #fff;
	background-color: #2f96b4;
	*background-color: #2a85a0;
}
.ic-btn-info:active,
.ic-btn-info.active {
	background-color: #24748c;
}
.ic-btn-inverse {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #363636;
	background-image: -moz-linear-gradient(top,#444,#222);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));
	background-image: -webkit-linear-gradient(top,#444,#222);
	background-image: -o-linear-gradient(top,#444,#222);
	background-image: linear-gradient(to bottom,#444,#222);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
	border-color: #222 #222 #000000;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #222;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.ic-btn-inverse:hover,
.ic-btn-inverse:active,
.ic-btn-inverse.active,
.ic-btn-inverse.disabled,
.ic-btn-inverse[disabled] {
	color: #fff;
	background-color: #222;
	*background-color: #151515;
}
.ic-btn-inverse:active,
.ic-btn-inverse.active {
	background-color: #090909;
}
#icagenda button.ic-btn,
#icagenda input[type="submit"].ic-btn {
	*padding-top: 3px;
	*padding-bottom: 3px;
}
#icagenda button.ic-btn::-moz-focus-inner,
#icagenda input[type="submit"].ic-btn::-moz-focus-inner {
	padding: 0;
	border: 0;
}
#icagenda button.ic-btn.ic-btn-large,
#icagenda input[type="submit"].ic-btn.ic-btn-large {
	*padding-top: 7px;
	*padding-bottom: 7px;
}
#icagenda button.ic-btn.ic-btn-small,
#icagenda input[type="submit"].ic-btn.ic-btn-small {
	*padding-top: 3px;
	*padding-bottom: 3px;
}
#icagenda button.ic-btn.ic-btn-mini,
#icagenda input[type="submit"].ic-btn.ic-btn-mini {
	*padding-top: 1px;
	*padding-bottom: 1px;
}
.ic-btn-link,
.ic-btn-link:active {
	background-color: transparent;
	background-image: none;
	-webkit-box-shadow: none;
	-moz-box-shadow: none;
	box-shadow: none;
}
.ic-btn-link {
	border-color: transparent;
	cursor: pointer;
	color: #08c;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
.ic-btn-link:hover {
	color: #005580;
	text-decoration: underline;
	background-color: transparent;
}
.ic-btn-group {
	position: relative;
	display: inline-block;
	*display: inline;
	*zoom: 1;
	font-size: 0;
	vertical-align: middle;
	white-space: nowrap;
	*margin-left: .3em;
}
.ic-btn-group:first-child {
	*margin-left: 0;
}
.ic-btn-group + .ic-btn-group {
	margin-left: 5px;
}
.ic-btn-toolbar {
	font-size: 0;
	margin-top: 9px;
	margin-bottom: 9px;
}
.ic-btn-toolbar .ic-btn-group {
	display: inline-block;
	*display: inline;
	*zoom: 1;
}
.ic-btn-toolbar .ic-btn + .ic-btn,
.ic-btn-toolbar .ic-btn-group + .ic-btn,
.ic-btn-toolbar .ic-btn + .ic-btn-group {
	margin-left: 5px;
}
.ic-btn-group > .ic-btn {
	position: relative;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
.ic-btn-group > .ic-btn + .ic-btn {
	margin-left: -1px;
}
.ic-btn-group > .ic-btn,
.ic-btn-group > #icagenda .dropdown-menu {
	font-size: 13px;
}
.ic-btn-group > .ic-btn-mini {
	font-size: 11px;
}
.ic-btn-group > .ic-btn-small {
	font-size: 12px;
}
.ic-btn-group > .ic-btn-large {
	font-size: 16px;
}
.ic-btn-group > .ic-btn:first-child {
	margin-left: 0;
	-webkit-border-top-left-radius: 4px;
	-moz-border-radius-topleft: 4px;
	border-top-left-radius: 4px;
	-webkit-border-bottom-left-radius: 4px;
	-moz-border-radius-bottomleft: 4px;
	border-bottom-left-radius: 4px;
}
.ic-btn-group > .ic-btn:last-child,
.ic-btn-group > #icagenda .dropdown-toggle {
	-webkit-border-top-right-radius: 4px;
	-moz-border-radius-topright: 4px;
	border-top-right-radius: 4px;
	-webkit-border-bottom-right-radius: 4px;
	-moz-border-radius-bottomright: 4px;
	border-bottom-right-radius: 4px;
}
.ic-btn-group > .ic-btn.large:first-child {
	margin-left: 0;
	-webkit-border-top-left-radius: 6px;
	-moz-border-radius-topleft: 6px;
	border-top-left-radius: 6px;
	-webkit-border-bottom-left-radius: 6px;
	-moz-border-radius-bottomleft: 6px;
	border-bottom-left-radius: 6px;
}
.ic-btn-group > .ic-btn.large:last-child,
.ic-btn-group > #icagenda .large.dropdown-toggle {
	-webkit-border-top-right-radius: 6px;
	-moz-border-radius-topright: 6px;
	border-top-right-radius: 6px;
	-webkit-border-bottom-right-radius: 6px;
	-moz-border-radius-bottomright: 6px;
	border-bottom-right-radius: 6px;
}
.ic-btn-group > .ic-btn:hover,
.ic-btn-group > .ic-btn:focus,
.ic-btn-group > .ic-btn:active,
.ic-btn-group > .ic-btn.active {
	z-index: 2;
}
.ic-btn-group .dropdown-toggle:active,
.ic-btn-group.open .dropdown-toggle {
	outline: 0;
}
.ic-btn-group > .ic-btn + #icagenda .dropdown-toggle {
	padding-left: 8px;
	padding-right: 8px;
	-webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	-moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	*padding-top: 5px;
	*padding-bottom: 5px;
}
.ic-btn-group > .ic-btn-mini + #icagenda .dropdown-toggle {
	padding-left: 5px;
	padding-right: 5px;
	*padding-top: 2px;
	*padding-bottom: 2px;
}
.ic-btn-group > .ic-btn-small + #icagenda .dropdown-toggle {
	*padding-top: 5px;
	*padding-bottom: 4px;
}
.ic-btn-group > .ic-btn-large + #icagenda .dropdown-toggle {
	padding-left: 12px;
	padding-right: 12px;
	*padding-top: 7px;
	*padding-bottom: 7px;
}
.ic-btn-group.open .dropdown-toggle {
	background-image: none;
	-webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
	-moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
	box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
}
.ic-btn-group.open .ic-btn.dropdown-toggle {
	background-color: #e6e6e6;
}
.ic-btn-group.open .ic-btn-primary.dropdown-toggle {
	background-color: #15497c;
}
.ic-btn-group.open .ic-btn-warning.dropdown-toggle {
	background-color: #f89406;
}
.ic-btn-group.open .ic-btn-danger.dropdown-toggle {
	background-color: #bd362f;
}
.ic-btn-group.open .ic-btn-success.dropdown-toggle {
	background-color: #51a351;
}
.ic-btn-group.open .ic-btn-info.dropdown-toggle {
	background-color: #2f96b4;
}
.ic-btn-group.open .ic-btn-inverse.dropdown-toggle {
	background-color: #222;
}
.ic-btn .caret {
	margin-top: 8px;
	margin-left: 0;
}
.ic-btn-mini .caret,
.ic-btn-small .caret,
.ic-btn-large .caret {
	margin-top: 6px;
}
.ic-btn-large .caret {
	border-left-width: 5px;
	border-right-width: 5px;
	border-top-width: 5px;
}
#icagenda .dropup .ic-btn-large .caret {
	border-bottom: 5px solid #000;
	border-top: 0;
}
.ic-btn-primary .caret,
.ic-btn-warning .caret,
.ic-btn-danger .caret,
.ic-btn-info .caret,
.ic-btn-success .caret,
.ic-btn-inverse .caret {
	border-top-color: #fff;
	border-bottom-color: #fff;
}
.ic-btn-group-vertical {
	display: inline-block;
	*display: inline;
	*zoom: 1;
}
.ic-btn-group-vertical .ic-btn {
	display: block;
	float: none;
	width: 100%;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
.ic-btn-group-vertical .ic-btn + .ic-btn {
	margin-left: 0;
	margin-top: -1px;
}
.ic-btn-group-vertical .ic-btn:first-child {
	-webkit-border-radius: 4px 4px 0 0;
	-moz-border-radius: 4px 4px 0 0;
	border-radius: 4px 4px 0 0;
}
.ic-btn-group-vertical .ic-btn:last-child {
	-webkit-border-radius: 0 0 4px 4px;
	-moz-border-radius: 0 0 4px 4px;
	border-radius: 0 0 4px 4px;
}
.ic-btn-group-vertical .ic-btn-large:first-child {
	-webkit-border-radius: 6px 6px 0 0;
	-moz-border-radius: 6px 6px 0 0;
	border-radius: 6px 6px 0 0;
}
.ic-btn-group-vertical .ic-btn-large:last-child {
	-webkit-border-radius: 0 0 6px 6px;
	-moz-border-radius: 0 0 6px 6px;
	border-radius: 0 0 6px 6px;
}

.ic-radio.ic-btn-group input[type=radio] {
	display: none;
}
.ic-radio.ic-btn-group > label:first-of-type {
	margin-left: 0;
	-webkit-border-bottom-left-radius: 4px;
	border-bottom-left-radius: 4px;
	-webkit-border-top-left-radius: 4px;
	border-top-left-radius: 4px;
	-moz-border-radius-bottomleft: 4px;
	-moz-border-radius-topleft: 4px;
}
fieldset.ic-radio.ic-btn-group {
	padding-left: 0;
}

/* TO PREVENT SOME POSSIBLE TEMPLATE CONFLICT */
#icagenda .ic-btn-group {
	display: inline-block;
}
#icagenda .ic-radio.ic-btn-group .ic-btn {
	width: auto;
	margin: 0;
}
#icagenda .ic-btn.ic-btn-danger {
	color: #fff;
}
#icagenda .ic-btn-danger:hover,
#icagenda .ic-btn-danger:focus,
#icagenda .ic-btn-danger:active,
#icagenda .ic-btn-danger.active,
#icagenda .ic-btn-danger.disabled,
#icagenda .ic-btn-danger[disabled] {
	color: #fff;
}
#icagenda .ic-btn.ic-btn-success {
	color: #fff;
}
#icagenda .ic-btn-success:hover,
#icagenda .ic-btn-success:focus,
#icagenda .ic-btn-success:active,
#icagenda .ic-btn-success.active,
#icagenda .ic-btn-success.disabled,
#icagenda .ic-btn-success[disabled] {
	color: #fff;
}

/* TO BE REMOVED when all btn converted to ic-btn */
.ic-btn {
	width: auto !important;
	margin: 0 !important;
}
.btn-danger {
	color: #fff !important;
}
.btn-success {
	color: #fff !important;
}
.btn-success:hover,
.btn-success:focus,
.btn-success:active,
.btn-success.active,
.btn-success.disabled,
.btn-success[disabled] {
	color: #fff !important;
}
.btn-success:active,
.btn-success.active {
	color: #fff !important;
}


/* -- ICAGENDA FORM ------------------------------------- */
#icagenda form {
	margin: 0;
}

/* -- IC FORM FIELD INVALID ----------------------------- */
.ic-field-invalid label{
/*	color: #9D261D; */
	color: red !important;
	font-weight: bold;
}
.ic-field-invalid input{
	border: 1px solid red !important;
}

.ic-field-invalid-lbl{
/*	color: #9D261D; */
	color: red !important;
	font-weight: bold;
}
.ic-field-invalid-input{
	border: 1px solid red !important;
}

.ic-date-invalid {
	color: red !important;
}
.ic-date-invalid input{
	color: red !important;
}


/* -- IC IMAGE PREVIEW AND CONTROL ----------------------------- */
#ic-upload-preview img {
	max-width: 100%;
}

/**
 *	GENERAL
 **/

/* Clear a div float */
.ic-clearfix {
	*zoom: 1;
}
.ic-clearfix:before,
.ic-clearfix:after {
	display: table;
	content: "";
	line-height: 0;
}
.ic-clearfix:after {
	clear: both;
}

/* Fixed Known conflict Bootstrap/Google Maps (joomla 3.2) */
.icagenda_map img {
	max-width: none;
}


/**
 *	ICONS
 **/

/* Hide old class used before in theme pack, to prevent double display of the back button */
#icagenda .back {
	display:none;
}

/* Style top buttons line (core file views/tmpl/event.php */
.ic-top-buttons {
	display: block;
	height: 35px;
}

/* iCicon size 16px (approval) */
.iCicon-16 {
	display: inline-block;
	height: 16px;
	width: 16px;
}

/* Approval Icon */
.iCicon-16.approval {
	background-image: url(../../../../media/com_icagenda/images/manager/approval_16.png);
	background-position: -16px 0;
}

a div.iCicon-16.approval:hover {
	background-image: url(../../../../media/com_icagenda/images/manager/approval_16.png);
	background-position: 16px 0;
}


/*
 * STYLES for classes not presents in Theme Pack files, but in iCagenda core files
 */

/** map autocomplete **/
.ui-autocomplete {
	background-color: white;
	width: 300px;
	border: 1px solid #cfcfcf;
	list-style-type: none;
	padding-left: 0px;
}

/** calendar **/
fieldset.adminform textarea.date {height: 130px; }
#add {line-height: 28px; margin-left:145px;}
table#dTable {width: 113px; border:1px solid #cdcec9;}
table#dTable th {padding:5px;}
table#dTable td {padding:5px;}
#ui-datepicker-div{font-size:12px; padding:15px;}

css/icagenda-back.j25.css000060400000003622152455755750011121 0ustar00/**
 *------------------------------------------------------------------------------
 *	CSS iCagenda - Joomla 2.5
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.4.0 2014-07-23
 * @since       3.0
 *------------------------------------------------------------------------------
*/


/** general **/
.clr {
	clear:both;
}

/** admin forms **/
/*
.control-group {
	height: 35px;
}
*/

fieldset select {
	max-width: 220px;
}

/* -- BUTTON STYLES ----------------------------- */
.btn-group {
	height: 35px;
}

.btn-group label:not(.active) {
	width: auto;
	line-height:24px;
	padding: 0px 10px !important;
	margin: 3px -3px 3px 2px !important;
	}
.btn-primary {
	width: auto !important;
	line-height:24px !important;
	padding: 0px 10px !important;
	margin: 3px -3px 3px 2px !important;
	}
.btn-danger {
	width: auto !important;
	line-height:24px !important;
	padding: 0px 10px !important;
	margin: 3px -3px 3px 2px !important;
	}
.btn-success {
	width: auto !important;
	line-height:24px !important;
	padding: 0px 10px !important;
	margin: 3px -3px 3px 2px !important;
	}

/* -- TOOLTIP STYLES ----------------------------- */
.tip {
	background: none !important;
	border: 0px !important;
	}

.tip-title {
	background: none !important;
	}

.tip-text {
	font-size: 1em;
	margin: 0;
	}

/* -- ADMIN ----------------------------- */
.lead {
	margin-bottom: 18px;
	font-size: 20px !important;
	font-weight: 200;
	line-height: 27px;
	}

.input-xxlarge {
    width: 460px;
    font-size: 12px;
}

div.control-label label{
    margin-top: 0px !important;
}

textarea {
	float: none !important; /* admin j2.5 */
	width: 98%;
}
css/icagenda-front.j25.css000060400000076226152455755750011363 0ustar00/**
 *------------------------------------------------------------------------------
 *	CSS iCagenda FRONTEND - Joomla 2.5
 *------------------------------------------------------------------------------
 * @package     com_icagenda
 * @copyright   Copyright (c)2012-2015 Cyril Rezé, Jooml!C - All rights reserved
 *
 * @license     GNU General Public License version 3 or later; see LICENSE.txt
 * @author      Cyril Rezé (Lyr!C)
 * @link        http://www.joomlic.com
 *
 * @version     3.5.6 2015-05-21
 * @since       3.0
 *------------------------------------------------------------------------------
*/


/** general **/
.clr {
	clear:both;
}


#icagenda button,
#icagenda input,
#icagenda select,
#icagenda textarea {
	margin: 0;
	font-size: 100%;
	vertical-align: middle;
}
#icagenda button,
#icagenda input {
	*overflow: visible;
	line-height: normal;
}
#icagenda button::-moz-focus-inner,
#icagenda input::-moz-focus-inner {
	padding: 0;
	border: 0;
}
#icagenda button,
#icagenda input[type="button"],
#icagenda input[type="reset"],
#icagenda input[type="submit"] {
	cursor: pointer;
	-webkit-appearance: button;
}
#icagenda input[type="search"] {
	-webkit-box-sizing: content-box;
	-moz-box-sizing: content-box;
	box-sizing: content-box;
	-webkit-appearance: textfield;
}
#icagenda input[type="search"]::-webkit-search-decoration,
#icagenda input[type="search"]::-webkit-search-cancel-button {
	-webkit-appearance: none;
}
#icagenda textarea {
	overflow: auto;
	vertical-align: top;
}
#icagenda .input-block-level {
	display: block;
	width: 100%;
	min-height: 30px;
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}
#icagenda p {
	margin: 0 0 9px;
}
#icagenda .lead {
	margin-bottom: 18px;
	font-size: 20px;
	font-weight: 200;
	line-height: 27px;
}
#icagenda small {
	font-size: 85%;
}
#icagenda strong {
	font-weight: bold;
}
#icagenda em {
	font-style: italic;
}

#icagenda form {
	margin: 0 0 18px;
}
#icagenda fieldset {
	padding: 0;
	margin: 0;
	border: 0;
}
#icagenda legend {
	display: block;
	width: 100%;
	padding: 0;
	margin-bottom: 18px;
	font-size: 19.5px;
	line-height: 36px;
	color: #333;
	border: 0;
	border-bottom: 1px solid #e5e5e5;
}
#icagenda legend small {
	font-size: 13.5px;
	color: #999;
}
#icagenda label,
#icagenda input,
#icagenda button,
#icagenda select,
#icagenda textarea {
	font-size: 13px;
	font-weight: normal;
	line-height: 18px;
}
#icagenda input,
#icagenda button,
#icagenda select,
#icagenda textarea {
	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
#icagenda label {
	display: block;
	margin-bottom: 5px;
}
#icagenda select,
#icagenda textarea,
#icagenda input[type="text"],
#icagenda input[type="password"],
#icagenda input[type="datetime"],
#icagenda input[type="datetime-local"],
#icagenda input[type="date"],
#icagenda input[type="month"],
#icagenda input[type="time"],
#icagenda input[type="week"],
#icagenda input[type="number"],
#icagenda input[type="email"],
#icagenda input[type="url"],
#icagenda input[type="search"],
#icagenda input[type="tel"],
#icagenda input[type="color"],
#icagenda .uneditable-input {
	display: inline-block;
	height: 18px;
	padding: 4px 6px;
	margin-bottom: 9px;
	font-size: 13px !important;
	line-height: 18px;
	color: #555;
	-webkit-border-radius: 3px;
	-moz-border-radius: 3px;
	border-radius: 3px;
}
/*
#icagenda input {
	width: 210px;
}
*/
#icagenda textarea {
	width: 100%;
}
#icagenda textarea {
	height: auto;
}
#icagenda textarea,
#icagenda input[type="text"],
#icagenda input[type="password"],
#icagenda input[type="datetime"],
#icagenda input[type="datetime-local"],
#icagenda input[type="date"],
#icagenda input[type="month"],
#icagenda input[type="time"],
#icagenda input[type="week"],
#icagenda input[type="number"],
#icagenda input[type="email"],
#icagenda input[type="url"],
#icagenda input[type="search"],
#icagenda input[type="tel"],
#icagenda input[type="color"],
#icagenda .uneditable-input {
	background-color: #fff;
	border: 1px solid #ccc;
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
	-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
	box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
	-webkit-transition: border linear .2s, box-shadow linear .2s;
	-moz-transition: border linear .2s, box-shadow linear .2s;
	-o-transition: border linear .2s, box-shadow linear .2s;
	transition: border linear .2s, box-shadow linear .2s;
}
#icagenda textarea:focus,
#icagenda input[type="text"]:focus,
#icagenda input[type="password"]:focus,
#icagenda input[type="datetime"]:focus,
#icagenda input[type="datetime-local"]:focus,
#icagenda input[type="date"]:focus,
#icagenda input[type="month"]:focus,
#icagenda input[type="time"]:focus,
#icagenda input[type="week"]:focus,
#icagenda input[type="number"]:focus,
#icagenda input[type="email"]:focus,
#icagenda input[type="url"]:focus,
#icagenda input[type="search"]:focus,
#icagenda input[type="tel"]:focus,
#icagenda input[type="color"]:focus,
#icagenda .uneditable-input:focus {
	border-color: rgba(82,168,236,0.8);
	outline: 0;
	outline: thin dotted \9;
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
	-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
	box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
}
#icagenda input[type="radio"],
#icagenda input[type="checkbox"] {
	margin: 4px 0 0;
	*margin-top: 0;
	margin-top: 1px \9;
	line-height: normal;
	cursor: pointer;
}
#icagenda input[type="file"],
#icagenda input[type="image"],
#icagenda input[type="submit"],
#icagenda input[type="reset"],
#icagenda input[type="button"],
#icagenda input[type="radio"],
#icagenda input[type="checkbox"] {
	width: auto;
}
#icagenda select,
#icagenda input[type="file"] {
	height: 30px;
	*margin-top: 4px;
	line-height: 30px;
}
#icagenda select {
	width: 220px;
	border: 1px solid #bbb;
	background-color: #fff;
}
#icagenda select[multiple],
#icagenda select[size] {
	height: auto;
}
#icagenda select:focus,
#icagenda input[type="file"]:focus,
#icagenda input[type="radio"]:focus,
#icagenda input[type="checkbox"]:focus {
	outline: thin dotted #333;
	outline: 5px auto -webkit-focus-ring-color;
	outline-offset: -2px;
}
#icagenda .uneditable-input,
#icagenda .uneditable-textarea {
	color: #999;
	background-color: #fcfcfc;
	border-color: #ccc;
	-webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.025);
	-moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.025);
	box-shadow: inset 0 1px 2px rgba(0,0,0,0.025);
	cursor: not-allowed;
}
#icagenda input:-moz-placeholder {
	color: #999;
}
#icagenda input:-ms-input-placeholder {
	color: #999;
}
#icagenda input::-webkit-input-placeholder {
	color: #999;
}
#icagenda .radio,
#icagenda .checkbox {
	min-height: 18px;
	padding-left: 18px;
}
#icagenda .radio input[type="radio"],
#icagenda .checkbox input[type="checkbox"] {
	float: left;
	margin-left: -18px;
}
#icagenda .input-mini {
	width: 60px;
}
#icagenda .input-small {
	width: 90px;
}
#icagenda .input-medium {
	width: 150px;
}
#icagenda .input-large {
	width: 210px;
}
#icagenda .input-xlarge {
	width: 270px;
}
#icagenda .input-xxlarge {
	width: 530px;
}
#icagenda input[class*="span"],
#icagenda select[class*="span"],
#icagenda textarea[class*="span"],
#icagenda .uneditable-input[class*="span"],
#icagenda .row-fluid input[class*="span"],
#icagenda .row-fluid select[class*="span"],
#icagenda .row-fluid textarea[class*="span"],
#icagenda .row-fluid .uneditable-input[class*="span"] {
	float: none;
	margin-left: 0;
}
#icagenda .input-append input[class*="span"],
#icagenda .input-append .uneditable-input[class*="span"],
#icagenda .input-prepend input[class*="span"],
#icagenda .input-prepend .uneditable-input[class*="span"],
#icagenda .row-fluid input[class*="span"],
#icagenda .row-fluid select[class*="span"],
#icagenda .row-fluid textarea[class*="span"],
#icagenda .row-fluid .uneditable-input[class*="span"],
#icagenda .row-fluid .input-prepend [class*="span"],
#icagenda .row-fluid .input-append [class*="span"] {
	display: inline-block;
}

#icagenda .btn {
	display: inline-block;
	*display: inline;
	*zoom: 1;
	padding: 4px 14px;
	margin-bottom: 0;
	font-size: 13px;
	line-height: 18px;
	*line-height: 18px;
	text-align: center;
	vertical-align: middle;
	cursor: pointer;
	color: #333;
	text-shadow: 0 1px 1px rgba(255,255,255,0.75);
	background-color: #f5f5f5;
	background-image: -moz-linear-gradient(top,#fff,#e6e6e6);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));
	background-image: -webkit-linear-gradient(top,#fff,#e6e6e6);
	background-image: -o-linear-gradient(top,#fff,#e6e6e6);
	background-image: linear-gradient(to bottom,#fff,#e6e6e6);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe5e5e5', GradientType=0);
	border-color: #e6e6e6 #e6e6e6 #bfbfbf;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #e6e6e6;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
	border: 1px solid #bbb;
	*border: 0;
	border-bottom-color: #a2a2a2;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
	*margin-left: .3em;
	-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
}
#icagenda .btn:hover,
#icagenda .btn:active,
#icagenda .btn.active,
#icagenda .btn.disabled,
#icagenda .btn[disabled] {
	color: #333;
	background-color: #e6e6e6;
	*background-color: #d9d9d9;
}
#icagenda .btn:active,
#icagenda .btn.active {
	background-color: #cccccc \9;
}
#icagenda .btn:first-child {
	*margin-left: 0;
}
#icagenda .btn:hover {
	color: #333;
	text-decoration: none;
	background-color: #e6e6e6;
	*background-color: #d9d9d9;
	background-position: 0 -15px;
	-webkit-transition: background-position .1s linear;
	-moz-transition: background-position .1s linear;
	-o-transition: background-position .1s linear;
	transition: background-position .1s linear;
}
#icagenda .btn:focus {
	outline: thin dotted #333;
	outline: 5px auto -webkit-focus-ring-color;
	outline-offset: -2px;
}
#icagenda .btn.active,
#icagenda .btn:active {
	background-color: #e6e6e6;
	background-color: #d9d9d9 \9;
	background-image: none;
	outline: 0;
	-webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
	-moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
	box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
}
#icagenda .btn.disabled,
#icagenda .btn[disabled] {
	cursor: default;
	background-color: #e6e6e6;
	background-image: none;
	opacity: 0.65;
	filter: alpha(opacity=65);
	-webkit-box-shadow: none;
	-moz-box-shadow: none;
	box-shadow: none;
}
#icagenda .btn-large {
	padding: 9px 14px;
	font-size: 15px;
	line-height: normal;
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	border-radius: 5px;
}
#icagenda .btn-large [class^="icon-"] {
	margin-top: 2px;
}
#icagenda .btn-small {
	padding: 3px 9px;
	font-size: 11px;
	line-height: 16px;
}
#icagenda .btn-small [class^="icon-"] {
	margin-top: 0;
}
#icagenda .btn-mini {
	padding: 2px 6px;
	font-size: 10px;
	line-height: 14px;
}
#icagenda .btn-block {
	display: block;
	width: 100%;
	padding-left: 0;
	padding-right: 0;
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}
#icagenda .btn-block + #icagenda .btn-block {
	margin-top: 5px;
}
#icagenda .btn-primary.active,
#icagenda .btn-warning.active,
#icagenda .btn-danger.active,
#icagenda .btn-success.active,
#icagenda .btn-info.active,
#icagenda .btn-inverse.active {
	color: rgba(255,255,255,0.75);
}
#icagenda .btn {
	border-color: #c5c5c5;
	border-color: rgba(0,0,0,0.15) rgba(0,0,0,0.15) rgba(0,0,0,0.25);
}
#icagenda .btn-primary {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #1d6cb0;
	background-image: -moz-linear-gradient(top,#2384d3,#15497c);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#2384d3),to(#15497c));
	background-image: -webkit-linear-gradient(top,#2384d3,#15497c);
	background-image: -o-linear-gradient(top,#2384d3,#15497c);
	background-image: linear-gradient(to bottom,#2384d3,#15497c);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2384d3', endColorstr='#ff15497c', GradientType=0);
	border-color: #15497c #15497c #0a223b;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #15497c;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
#icagenda .btn-primary:hover,
#icagenda .btn-primary:active,
#icagenda .btn-primary.active,
#icagenda .btn-primary.disabled,
#icagenda .btn-primary[disabled] {
	color: #fff;
	background-color: #15497c;
	*background-color: #113c66;
}
#icagenda .btn-primary:active,
#icagenda .btn-primary.active {
	background-color: #0e2f50 \9;
}
#icagenda .btn-warning {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #faa732;
	background-image: -moz-linear-gradient(top,#fbb450,#f89406);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));
	background-image: -webkit-linear-gradient(top,#fbb450,#f89406);
	background-image: -o-linear-gradient(top,#fbb450,#f89406);
	background-image: linear-gradient(to bottom,#fbb450,#f89406);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffab44f', endColorstr='#fff89406', GradientType=0);
	border-color: #f89406 #f89406 #ad6704;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #f89406;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
#icagenda .btn-warning:hover,
#icagenda .btn-warning:active,
#icagenda .btn-warning.active,
#icagenda .btn-warning.disabled,
#icagenda .btn-warning[disabled] {
	color: #fff;
	background-color: #f89406;
	*background-color: #df8505;
}
#icagenda .btn-warning:active,
#icagenda .btn-warning.active {
	background-color: #c67605 \9;
}
#icagenda .btn-danger {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #da4f49;
	background-image: -moz-linear-gradient(top,#ee5f5b,#bd362f);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));
	background-image: -webkit-linear-gradient(top,#ee5f5b,#bd362f);
	background-image: -o-linear-gradient(top,#ee5f5b,#bd362f);
	background-image: linear-gradient(to bottom,#ee5f5b,#bd362f);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
	border-color: #bd362f #bd362f #802420;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #bd362f;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
#icagenda .btn-danger:hover,
#icagenda .btn-danger:active,
#icagenda .btn-danger.active,
#icagenda .btn-danger.disabled,
#icagenda .btn-danger[disabled] {
	color: #fff;
	background-color: #bd362f;
	*background-color: #a9302a;
}
#icagenda .btn-danger:active,
#icagenda .btn-danger.active {
	background-color: #942a25 \9;
}
#icagenda .btn-success {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #5bb75b;
	background-image: -moz-linear-gradient(top,#62c462,#51a351);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));
	background-image: -webkit-linear-gradient(top,#62c462,#51a351);
	background-image: -o-linear-gradient(top,#62c462,#51a351);
	background-image: linear-gradient(to bottom,#62c462,#51a351);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
	border-color: #51a351 #51a351 #387038;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #51a351;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
#icagenda .btn-success:hover,
#icagenda .btn-success:active,
#icagenda .btn-success.active,
#icagenda .btn-success.disabled,
#icagenda .btn-success[disabled] {
	color: #fff;
	background-color: #51a351;
	*background-color: #499249;
}
#icagenda .btn-success:active,
#icagenda .btn-success.active {
	background-color: #408140 \9;
}
#icagenda .btn-info {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #49afcd;
	background-image: -moz-linear-gradient(top,#5bc0de,#2f96b4);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));
	background-image: -webkit-linear-gradient(top,#5bc0de,#2f96b4);
	background-image: -o-linear-gradient(top,#5bc0de,#2f96b4);
	background-image: linear-gradient(to bottom,#5bc0de,#2f96b4);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
	border-color: #2f96b4 #2f96b4 #1f6377;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #2f96b4;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
#icagenda .btn-info:hover,
#icagenda .btn-info:active,
#icagenda .btn-info.active,
#icagenda .btn-info.disabled,
#icagenda .btn-info[disabled] {
	color: #fff;
	background-color: #2f96b4;
	*background-color: #2a85a0;
}
#icagenda .btn-info:active,
#icagenda .btn-info.active {
	background-color: #24748c \9;
}
#icagenda .btn-inverse {
	color: #fff;
	text-shadow: 0 -1px 0 rgba(0,0,0,0.25);
	background-color: #363636;
	background-image: -moz-linear-gradient(top,#444,#222);
	background-image: -webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));
	background-image: -webkit-linear-gradient(top,#444,#222);
	background-image: -o-linear-gradient(top,#444,#222);
	background-image: linear-gradient(to bottom,#444,#222);
	background-repeat: repeat-x;
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
	border-color: #222 #222 #000000;
	border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);
	*background-color: #222;
	filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
#icagenda .btn-inverse:hover,
#icagenda .btn-inverse:active,
#icagenda .btn-inverse.active,
#icagenda .btn-inverse.disabled,
#icagenda .btn-inverse[disabled] {
	color: #fff;
	background-color: #222;
	*background-color: #151515;
}
#icagenda .btn-inverse:active,
#icagenda .btn-inverse.active {
	background-color: #090909 \9;
}
#icagenda button.btn,
#icagenda input[type="submit"].btn {
	*padding-top: 3px;
	*padding-bottom: 3px;
}
#icagenda button.btn::-moz-focus-inner,
#icagenda input[type="submit"].btn::-moz-focus-inner {
	padding: 0;
	border: 0;
}
#icagenda button.btn.btn-large,
#icagenda input[type="submit"].btn.btn-large {
	*padding-top: 7px;
	*padding-bottom: 7px;
}
#icagenda button.btn.btn-small,
#icagenda input[type="submit"].btn.btn-small {
	*padding-top: 3px;
	*padding-bottom: 3px;
}
#icagenda button.btn.btn-mini,
#icagenda input[type="submit"].btn.btn-mini {
	*padding-top: 1px;
	*padding-bottom: 1px;
}
#icagenda .btn-link,
#icagenda .btn-link:active {
	background-color: transparent;
	background-image: none;
	-webkit-box-shadow: none;
	-moz-box-shadow: none;
	box-shadow: none;
}
#icagenda .btn-link {
	border-color: transparent;
	cursor: pointer;
	color: #08c;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
#icagenda .btn-link:hover {
	color: #005580;
	text-decoration: underline;
	background-color: transparent;
}
#icagenda .btn-group {
	position: relative;
	font-size: 0;
	white-space: nowrap;
	*margin-left: .3em;
}
#icagenda .btn-group:first-child {
	*margin-left: 0;
}
#icagenda .btn-group + #icagenda .btn-group {
	margin-left: 5px;
}
#icagenda .btn-toolbar {
	font-size: 0;
	margin-top: 9px;
	margin-bottom: 9px;
}
#icagenda .btn-toolbar .btn-group {
	display: inline-block;
	*display: inline;
	*zoom: 1;
}
#icagenda .btn-toolbar .btn + #icagenda .btn,
#icagenda .btn-toolbar .btn-group + #icagenda .btn,
#icagenda .btn-toolbar .btn + #icagenda .btn-group {
	margin-left: 5px;
}
#icagenda .btn-group > #icagenda .btn {
	position: relative;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
#icagenda .btn-group > #icagenda .btn + .btn {
	margin-left: -1px;
}
#icagenda .btn-group > #icagenda .btn,
#icagenda .btn-group > #icagenda .dropdown-menu {
	font-size: 13px;
}
#icagenda .btn-group > #icagenda .btn-mini {
	font-size: 11px;
}
#icagenda .btn-group > #icagenda .btn-small {
	font-size: 12px;
}
#icagenda .btn-group > #icagenda .btn-large {
	font-size: 16px;
}
#icagenda .btn-group > #icagenda .btn:first-child {
	margin-left: 0;
	-webkit-border-top-left-radius: 4px;
	-moz-border-radius-topleft: 4px;
	border-top-left-radius: 4px;
	-webkit-border-bottom-left-radius: 4px;
	-moz-border-radius-bottomleft: 4px;
	border-bottom-left-radius: 4px;
}
#icagenda .btn-group > #icagenda .btn:last-child,
#icagenda .btn-group > #icagenda .dropdown-toggle {
	-webkit-border-top-right-radius: 4px;
	-moz-border-radius-topright: 4px;
	border-top-right-radius: 4px;
	-webkit-border-bottom-right-radius: 4px;
	-moz-border-radius-bottomright: 4px;
	border-bottom-right-radius: 4px;
}
#icagenda .btn-group > #icagenda .btn.large:first-child {
	margin-left: 0;
	-webkit-border-top-left-radius: 6px;
	-moz-border-radius-topleft: 6px;
	border-top-left-radius: 6px;
	-webkit-border-bottom-left-radius: 6px;
	-moz-border-radius-bottomleft: 6px;
	border-bottom-left-radius: 6px;
}
#icagenda .btn-group > #icagenda .btn.large:last-child,
#icagenda .btn-group > #icagenda .large.dropdown-toggle {
	-webkit-border-top-right-radius: 6px;
	-moz-border-radius-topright: 6px;
	border-top-right-radius: 6px;
	-webkit-border-bottom-right-radius: 6px;
	-moz-border-radius-bottomright: 6px;
	border-bottom-right-radius: 6px;
}
#icagenda .btn-group > #icagenda .btn:hover,
#icagenda .btn-group > #icagenda .btn:focus,
#icagenda .btn-group > #icagenda .btn:active,
#icagenda .btn-group > #icagenda .btn.active {
	z-index: 2;
}
#icagenda .btn-group .dropdown-toggle:active,
#icagenda .btn-group.open .dropdown-toggle {
	outline: 0;
}
#icagenda .btn-group > #icagenda .btn + #icagenda .dropdown-toggle {
	padding-left: 8px;
	padding-right: 8px;
	-webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	-moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
	*padding-top: 5px;
	*padding-bottom: 5px;
}
#icagenda .btn-group > #icagenda .btn-mini + #icagenda .dropdown-toggle {
	padding-left: 5px;
	padding-right: 5px;
	*padding-top: 2px;
	*padding-bottom: 2px;
}
#icagenda .btn-group > #icagenda .btn-small + #icagenda .dropdown-toggle {
	*padding-top: 5px;
	*padding-bottom: 4px;
}
#icagenda .btn-group > #icagenda .btn-large + #icagenda .dropdown-toggle {
	padding-left: 12px;
	padding-right: 12px;
	*padding-top: 7px;
	*padding-bottom: 7px;
}
#icagenda .btn-group.open .dropdown-toggle {
	background-image: none;
	-webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
	-moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
	box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
}
#icagenda .btn-group.open .btn.dropdown-toggle {
	background-color: #e6e6e6;
}
#icagenda .btn-group.open .btn-primary.dropdown-toggle {
	background-color: #15497c;
}
#icagenda .btn-group.open .btn-warning.dropdown-toggle {
	background-color: #f89406;
}
#icagenda .btn-group.open .btn-danger.dropdown-toggle {
	background-color: #bd362f;
}
#icagenda .btn-group.open .btn-success.dropdown-toggle {
	background-color: #51a351;
}
#icagenda .btn-group.open .btn-info.dropdown-toggle {
	background-color: #2f96b4;
}
#icagenda .btn-group.open .btn-inverse.dropdown-toggle {
	background-color: #222;
}
#icagenda .btn .caret {
	margin-top: 8px;
	margin-left: 0;
}
#icagenda .btn-mini .caret,
#icagenda .btn-small .caret,
#icagenda .btn-large .caret {
	margin-top: 6px;
}
#icagenda .btn-large .caret {
	border-left-width: 5px;
	border-right-width: 5px;
	border-top-width: 5px;
}
#icagenda .dropup .btn-large .caret {
	border-bottom: 5px solid #000;
	border-top: 0;
}
#icagenda .btn-primary .caret,
#icagenda .btn-warning .caret,
#icagenda .btn-danger .caret,
#icagenda .btn-info .caret,
#icagenda .btn-success .caret,
#icagenda .btn-inverse .caret {
	border-top-color: #fff;
	border-bottom-color: #fff;
}
#icagenda .btn-group-vertical {
	display: inline-block;
	*display: inline;
	*zoom: 1;
}
#icagenda .btn-group-vertical .btn {
	display: block;
	float: none;
	width: 100%;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}
#icagenda .btn-group-vertical .btn + .btn {
	margin-left: 0;
	margin-top: -1px;
}
#icagenda .btn-group-vertical .btn:first-child {
	-webkit-border-radius: 4px 4px 0 0;
	-moz-border-radius: 4px 4px 0 0;
	border-radius: 4px 4px 0 0;
}
#icagenda .btn-group-vertical .btn:last-child {
	-webkit-border-radius: 0 0 4px 4px;
	-moz-border-radius: 0 0 4px 4px;
	border-radius: 0 0 4px 4px;
}
#icagenda .btn-group-vertical .btn-large:first-child {
	-webkit-border-radius: 6px 6px 0 0;
	-moz-border-radius: 6px 6px 0 0;
	border-radius: 6px 6px 0 0;
}
#icagenda .btn-group-vertical .btn-large:last-child {
	-webkit-border-radius: 0 0 6px 6px;
	-moz-border-radius: 0 0 6px 6px;
	border-radius: 0 0 6px 6px;
}
@media (max-width: 767px) {
	.row-fluid {
		width: 100%;
	}
	[class*="span"],
	.row-fluid [class*="span"] {
		float: none;
		display: block;
		width: auto;
		margin-left: 0;
	}
	.span12,
	.row-fluid .span12 {
		width: 100%;
		-webkit-box-sizing: border-box;
		-moz-box-sizing: border-box;
		box-sizing: border-box;
	}
	.input-large,
	.input-xlarge,
	.input-xxlarge,
	input[class*="span"],
	select[class*="span"],
	textarea[class*="span"],
	.uneditable-input {
		display: block;
		width: 100%;
		min-height: 30px;
		-webkit-box-sizing: border-box;
		-moz-box-sizing: border-box;
		box-sizing: border-box;
	}
}
@media (max-width: 480px) {
	input[type="checkbox"],
	input[type="radio"] {
		border: 1px solid #ccc;
	}
}
@media (min-width: 768px) and (max-width: 979px) {
	[class*="span"] {
		float: left;
		margin-left: 20px;
	}
	.span12 {
		width: 724px;
	}
	.span11 {
		width: 662px;
	}
	.span10 {
		width: 600px;
	}
	.span9 {
		width: 538px;
	}
	.span8 {
		width: 476px;
	}
	.span7 {
		width: 414px;
	}
	.span6 {
		width: 352px;
	}
	.span5 {
		width: 290px;
	}
	.span4 {
		width: 228px;
	}
	.span3 {
		width: 166px;
	}
	.span2 {
		width: 104px;
	}
	.span1 {
		width: 42px;
	}
	.row-fluid {
		width: 100%;
		*zoom: 1;
	}
	.row-fluid:before,
	.row-fluid:after {
		display: table;
		content: "";
		line-height: 0;
	}
	.row-fluid:after {
		clear: both;
	}
	.row-fluid [class*="span"] {
		display: block;
		width: 100%;
		min-height: 30px;
		-webkit-box-sizing: border-box;
		-moz-box-sizing: border-box;
		box-sizing: border-box;
		float: left;
		margin-left: 2.7624309392265%;
		*margin-left: 2.7092394498648%;
	}
	.row-fluid [class*="span"]:first-child {
		margin-left: 0;
	}
	.row-fluid .span12 {
		width: 100%;
		*width: 99.946808510638%;
	}
	.row-fluid .span11 {
		width: 91.489361702128%;
		*width: 91.436170212766%;
	}
	.row-fluid .span10 {
		width: 82.978723404255%;
		*width: 82.925531914894%;
	}
	.row-fluid .span9 {
		width: 74.468085106383%;
		*width: 74.414893617021%;
	}
	.row-fluid .span8 {
		width: 65.957446808511%;
		*width: 65.904255319149%;
	}
	.row-fluid .span7 {
		width: 57.446808510638%;
		*width: 57.393617021277%;
	}
	.row-fluid .span6 {
		width: 48.936170212766%;
		*width: 48.882978723404%;
	}
	.row-fluid .span5 {
		width: 40.425531914894%;
		*width: 40.372340425532%;
	}
	.row-fluid .span4 {
		width: 31.914893617021%;
		*width: 31.86170212766%;
	}
	.row-fluid .span3 {
		width: 23.404255319149%;
		*width: 23.351063829787%;
	}
	.row-fluid .span2 {
		width: 14.893617021277%;
		*width: 14.840425531915%;
	}
	.row-fluid .span1 {
		width: 6.3829787234043%;
		*width: 6.3297872340426%;
	}
	input.span12, textarea.span12, .uneditable-input.span12 {
		width: 710px;
	}
	input.span11, textarea.span11, .uneditable-input.span11 {
		width: 648px;
	}
	input.span10, textarea.span10, .uneditable-input.span10 {
		width: 586px;
	}
	input.span9, textarea.span9, .uneditable-input.span9 {
		width: 524px;
	}
	input.span8, textarea.span8, .uneditable-input.span8 {
		width: 462px;
	}
	input.span7, textarea.span7, .uneditable-input.span7 {
		width: 400px;
	}
	input.span6, textarea.span6, .uneditable-input.span6 {
		width: 338px;
	}
	input.span5, textarea.span5, .uneditable-input.span5 {
		width: 276px;
	}
	input.span4, textarea.span4, .uneditable-input.span4 {
		width: 214px;
	}
	input.span3, textarea.span3, .uneditable-input.span3 {
		width: 152px;
	}
	input.span2, textarea.span2, .uneditable-input.span2 {
		width: 90px;
	}
	input.span1, textarea.span1, .uneditable-input.span1 {
		width: 28px;
	}
}
@media (min-width: 1200px) {
	.span12 {
		width: 1170px;
	}
	.span11 {
		width: 1070px;
	}
	.span10 {
		width: 970px;
	}
	.span9 {
		width: 870px;
	}
	.span8 {
		width: 770px;
	}
	.span7 {
		width: 670px;
	}
	.span6 {
		width: 570px;
	}
	.span5 {
		width: 470px;
	}
	.span4 {
		width: 370px;
	}
	.span3 {
		width: 270px;
	}
	.span2 {
		width: 170px;
	}
	.span1 {
		width: 70px;
	}
	.row-fluid {
		width: 100%;
		*zoom: 1;
	}
	.row-fluid:before,
	.row-fluid:after {
		display: table;
		content: "";
		line-height: 0;
	}
	.row-fluid:after {
		clear: both;
	}
	.row-fluid [class*="span"] {
		display: block;
		width: 100%;
		min-height: 30px;
		-webkit-box-sizing: border-box;
		-moz-box-sizing: border-box;
		box-sizing: border-box;
		float: left;
		margin-left: 2.5641025641026%;
		*margin-left: 2.5109110747409%;
	}
	.row-fluid [class*="span"]:first-child {
		margin-left: 0;
	}
	.row-fluid .span12 {
		width: 100%;
		*width: 99.946808510638%;
	}
	.row-fluid .span11 {
		width: 91.436464088398%;
		*width: 91.383272599036%;
	}
	.row-fluid .span10 {
		width: 82.872928176796%;
		*width: 82.819736687434%;
	}
	.row-fluid .span9 {
		width: 74.309392265193%;
		*width: 74.256200775832%;
	}
	.row-fluid .span8 {
		width: 65.745856353591%;
		*width: 65.692664864229%;
	}
	.row-fluid .span7 {
		width: 57.182320441989%;
		*width: 57.129128952627%;
	}
	.row-fluid .span6 {
		width: 48.618784530387%;
		*width: 48.565593041025%;
	}
	.row-fluid .span5 {
		width: 40.055248618785%;
		*width: 40.002057129423%;
	}
	.row-fluid .span4 {
		width: 31.491712707182%;
		*width: 31.438521217821%;
	}
	.row-fluid .span3 {
		width: 22.92817679558%;
		*width: 22.874985306218%;
	}
	.row-fluid .span2 {
		width: 14.364640883978%;
		*width: 14.311449394616%;
	}
	.row-fluid .span1 {
		width: 5.8011049723757%;
		*width: 5.747913483014%;
	}
	input,
	textarea,
	.uneditable-input {
		margin-left: 0;
	}
	input.span12, textarea.span12, .uneditable-input.span12 {
		width: 1156px;
	}
	input.span11, textarea.span11, .uneditable-input.span11 {
		width: 1056px;
	}
	input.span10, textarea.span10, .uneditable-input.span10 {
		width: 956px;
	}
	input.span9, textarea.span9, .uneditable-input.span9 {
		width: 856px;
	}
	input.span8, textarea.span8, .uneditable-input.span8 {
		width: 756px;
	}
	input.span7, textarea.span7, .uneditable-input.span7 {
		width: 656px;
	}
	input.span6, textarea.span6, .uneditable-input.span6 {
		width: 556px;
	}
	input.span5, textarea.span5, .uneditable-input.span5 {
		width: 456px;
	}
	input.span4, textarea.span4, .uneditable-input.span4 {
		width: 356px;
	}
	input.span3, textarea.span3, .uneditable-input.span3 {
		width: 256px;
	}
	input.span2, textarea.span2, .uneditable-input.span2 {
		width: 156px;
	}
	input.span1, textarea.span1, .uneditable-input.span1 {
		width: 56px;
	}
}
css/index.html000060400000000054152455755750007350 0ustar00<html><body bgcolor="#FFFFFF"></body></html>