<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**

 * CodeIgniter

 *

 * An open source application development framework for PHP 5.1.6 or newer

 *

 * @package		CodeIgniter

 * @author		ExpressionEngine Dev Team

 * @copyright	Copyright (c) 2008 - 2011, EllisLab, Inc.

 * @license		http://codeigniter.com/user_guide/license.html

 * @link		http://codeigniter.com

 * @since		Version 1.0

 * @filesource

 */



// ------------------------------------------------------------------------



/**

 * CodeIgniter Smiley Helpers

 *

 * @package		CodeIgniter

 * @subpackage	Helpers

 * @category	Helpers

 * @author		ExpressionEngine Dev Team

 * @link		http://codeigniter.com/user_guide/helpers/smiley_helper.html

 */



// ------------------------------------------------------------------------



/**

 * Smiley Javascript

 *

 * Returns the javascript required for the smiley insertion.  Optionally takes

 * an array of aliases to loosely couple the smiley array to the view.

 *

 * @access	public

 * @param	mixed	alias name or array of alias->field_id pairs

 * @param	string	field_id if alias name was passed in

 * @return	array

 */

if ( ! function_exists('smiley_js'))

{

	function smiley_js($alias = '', $field_id = '', $inline = TRUE)

	{

		static $do_setup = TRUE;



		$r = '';



		if ($alias != '' && ! is_array($alias))

		{

			$alias = array($alias => $field_id);

		}



		if ($do_setup === TRUE)

		{

				$do_setup = FALSE;



				$m = array();



				if (is_array($alias))

				{

					foreach ($alias as $name => $id)

					{

						$m[] = '"'.$name.'" : "'.$id.'"';

					}

				}



				$m = '{'.implode(',', $m).'}';



				$r .= <<<EOF

				var smiley_map = {$m};



				function insert_smiley(smiley, field_id) {

					var el = document.getElementById(field_id), newStart;



					if ( ! el && smiley_map[field_id]) {

						el = document.getElementById(smiley_map[field_id]);



						if ( ! el)

							return false;

					}



					el.focus();

					smiley = " " + smiley;



					if ('selectionStart' in el) {

						newStart = el.selectionStart + smiley.length;



						el.value = el.value.substr(0, el.selectionStart) +

										smiley +

										el.value.substr(el.selectionEnd, el.value.length);

						el.setSelectionRange(newStart, newStart);

					}

					else if (document.selection) {

						document.selection.createRange().text = smiley;

					}

				}

EOF;

		}

		else

		{

			if (is_array($alias))

			{

				foreach ($alias as $name => $id)

				{

					$r .= 'smiley_map["'.$name.'"] = "'.$id.'";'."\n";

				}

			}

		}



		if ($inline)

		{

			return '<script type="text/javascript" charset="utf-8">/*<![CDATA[ */'.$r.'// ]]></script>';

		}

		else

		{

			return $r;

		}

	}

}



// ------------------------------------------------------------------------



/**

 * Get Clickable Smileys

 *

 * Returns an array of image tag links that can be clicked to be inserted

 * into a form field.

 *

 * @access	public

 * @param	string	the URL to the folder containing the smiley images

 * @return	array

 */

if ( ! function_exists('get_clickable_smileys'))

{

	function get_clickable_smileys($image_url, $alias = '', $smileys = NULL)

	{

		// For backward compatibility with js_insert_smiley



		if (is_array($alias))

		{

			$smileys = $alias;

		}



		if ( ! is_array($smileys))

		{

			if (FALSE === ($smileys = _get_smiley_array()))

			{

				return $smileys;

			}

		}



		// Add a trailing slash to the file path if needed

		$image_url = rtrim($image_url, '/').'/';



		$used = array();

		foreach ($smileys as $key => $val)

		{

			// Keep duplicates from being used, which can happen if the

			// mapping array contains multiple identical replacements.  For example:

			// :-) and :) might be replaced with the same image so both smileys

			// will be in the array.

			if (isset($used[$smileys[$key][0]]))

			{

				continue;

			}



			$link[] = "<a href=\"javascript:void(0);\" onclick=\"insert_smiley('".$key."', '".$alias."')\"><img src=\"".$image_url.$smileys[$key][0]."\" width=\"".$smileys[$key][1]."\" height=\"".$smileys[$key][2]."\" alt=\"".$smileys[$key][3]."\" style=\"border:0;\" /></a>";



			$used[$smileys[$key][0]] = TRUE;

		}



		return $link;

	}

}



// ------------------------------------------------------------------------



/**

 * Parse Smileys

 *

 * Takes a string as input and swaps any contained smileys for the actual image

 *

 * @access	public

 * @param	string	the text to be parsed

 * @param	string	the URL to the folder containing the smiley images

 * @return	string

 */

if ( ! function_exists('parse_smileys'))

{

	function parse_smileys($str = '', $image_url = '', $smileys = NULL)

	{

		if ($image_url == '')

		{

			return $str;

		}



		if ( ! is_array($smileys))

		{

			if (FALSE === ($smileys = _get_smiley_array()))

			{

				return $str;

			}

		}



		// Add a trailing slash to the file path if needed

		$image_url = preg_replace("/(.+?)\/*$/", "\\1/",  $image_url);



		foreach ($smileys as $key => $val)

		{

			$str = str_replace($key, "<img src=\"".$image_url.$smileys[$key][0]."\" width=\"".$smileys[$key][1]."\" height=\"".$smileys[$key][2]."\" alt=\"".$smileys[$key][3]."\" style=\"border:0;\" />", $str);

		}



		return $str;

	}

}



// ------------------------------------------------------------------------



/**

 * Get Smiley Array

 *

 * Fetches the config/smiley.php file

 *

 * @access	private

 * @return	mixed

 */

if ( ! function_exists('_get_smiley_array'))

{

	function _get_smiley_array()

	{

		if (defined('ENVIRONMENT') AND file_exists(APPPATH.'config/'.ENVIRONMENT.'/smileys.php'))

		{

		    include(APPPATH.'config/'.ENVIRONMENT.'/smileys.php');

		}

		elseif (file_exists(APPPATH.'config/smileys.php'))

		{

			include(APPPATH.'config/smileys.php');

		}

		

		if (isset($smileys) AND is_array($smileys))

		{

			return $smileys;

		}



		return FALSE;

	}

}



// ------------------------------------------------------------------------



/**

 * JS Insert Smiley

 *

 * Generates the javascript function needed to insert smileys into a form field

 *

 * DEPRECATED as of version 1.7.2, use smiley_js instead

 *

 * @access	public

 * @param	string	form name

 * @param	string	field name

 * @return	string

 */

if ( ! function_exists('js_insert_smiley'))

{

	function js_insert_smiley($form_name = '', $form_field = '')

	{

		return <<<EOF

<script type="text/javascript">

	function insert_smiley(smiley)

	{

		document.{$form_name}.{$form_field}.value += " " + smiley;

	}

</script>

EOF;

	}

}





/* End of file smiley_helper.php */

/* Location: ./system/helpers/smiley_helper.php */