<?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 HTML Helpers

 *

 * @package		CodeIgniter

 * @subpackage	Helpers

 * @category	Helpers

 * @author		ExpressionEngine Dev Team

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

 */



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



/**

 * Heading

 *

 * Generates an HTML heading tag.  First param is the data.

 * Second param is the size of the heading tag.

 *

 * @access	public

 * @param	string

 * @param	integer

 * @return	string

 */

if ( ! function_exists('heading'))

{

	function heading($data = '', $h = '1', $attributes = '')

	{

		$attributes = ($attributes != '') ? ' '.$attributes : $attributes;

		return "<h".$h.$attributes.">".$data."</h".$h.">";

	}

}



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



/**

 * Unordered List

 *

 * Generates an HTML unordered list from an single or multi-dimensional array.

 *

 * @access	public

 * @param	array

 * @param	mixed

 * @return	string

 */

if ( ! function_exists('ul'))

{

	function ul($list, $attributes = '')

	{

		return _list('ul', $list, $attributes);

	}

}



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



/**

 * Ordered List

 *

 * Generates an HTML ordered list from an single or multi-dimensional array.

 *

 * @access	public

 * @param	array

 * @param	mixed

 * @return	string

 */

if ( ! function_exists('ol'))

{

	function ol($list, $attributes = '')

	{

		return _list('ol', $list, $attributes);

	}

}



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



/**

 * Generates the list

 *

 * Generates an HTML ordered list from an single or multi-dimensional array.

 *

 * @access	private

 * @param	string

 * @param	mixed

 * @param	mixed

 * @param	integer

 * @return	string

 */

if ( ! function_exists('_list'))

{

	function _list($type = 'ul', $list, $attributes = '', $depth = 0)

	{

		// If an array wasn't submitted there's nothing to do...

		if ( ! is_array($list))

		{

			return $list;

		}



		// Set the indentation based on the depth

		$out = str_repeat(" ", $depth);



		// Were any attributes submitted?  If so generate a string

		if (is_array($attributes))

		{

			$atts = '';

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

			{

				$atts .= ' ' . $key . '="' . $val . '"';

			}

			$attributes = $atts;

		}

		elseif (is_string($attributes) AND strlen($attributes) > 0)

		{

			$attributes = ' '. $attributes;

		}



		// Write the opening list tag

		$out .= "<".$type.$attributes.">\n";



		// Cycle through the list elements.  If an array is

		// encountered we will recursively call _list()



		static $_last_list_item = '';

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

		{

			$_last_list_item = $key;



			$out .= str_repeat(" ", $depth + 2);

			$out .= "<li>";



			if ( ! is_array($val))

			{

				$out .= $val;

			}

			else

			{

				$out .= $_last_list_item."\n";

				$out .= _list($type, $val, '', $depth + 4);

				$out .= str_repeat(" ", $depth + 2);

			}



			$out .= "</li>\n";

		}



		// Set the indentation for the closing tag

		$out .= str_repeat(" ", $depth);



		// Write the closing list tag

		$out .= "</".$type.">\n";



		return $out;

	}

}



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



/**

 * Generates HTML BR tags based on number supplied

 *

 * @access	public

 * @param	integer

 * @return	string

 */

if ( ! function_exists('br'))

{

	function br($num = 1)

	{

		return str_repeat("<br />", $num);

	}

}



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



/**

 * Image

 *

 * Generates an <img /> element

 *

 * @access	public

 * @param	mixed

 * @return	string

 */

if ( ! function_exists('img'))

{

	function img($src = '', $index_page = FALSE)

	{

		if ( ! is_array($src) )

		{

			$src = array('src' => $src);

		}



		// If there is no alt attribute defined, set it to an empty string

		if ( ! isset($src['alt']))

		{

			$src['alt'] = '';

		}



		$img = '<img';



		foreach ($src as $k=>$v)

		{



			if ($k == 'src' AND strpos($v, '://') === FALSE)

			{

				$CI =& get_instance();



				if ($index_page === TRUE)

				{

					$img .= ' src="'.$CI->config->site_url($v).'"';

				}

				else

				{

					$img .= ' src="'.$CI->config->slash_item('base_url').$v.'"';

				}

			}

			else

			{

				$img .= " $k=\"$v\"";

			}

		}



		$img .= '/>';



		return $img;

	}

}



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



/**

 * Doctype

 *

 * Generates a page document type declaration

 *

 * Valid options are xhtml-11, xhtml-strict, xhtml-trans, xhtml-frame,

 * html4-strict, html4-trans, and html4-frame.  Values are saved in the

 * doctypes config file.

 *

 * @access	public

 * @param	string	type	The doctype to be generated

 * @return	string

 */

if ( ! function_exists('doctype'))

{

	function doctype($type = 'xhtml1-strict')

	{

		global $_doctypes;



		if ( ! is_array($_doctypes))

		{

			if (defined('ENVIRONMENT') AND is_file(APPPATH.'config/'.ENVIRONMENT.'/doctypes.php'))

			{

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

			}

			elseif (is_file(APPPATH.'config/doctypes.php'))

			{

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

			}



			if ( ! is_array($_doctypes))

			{

				return FALSE;

			}

		}



		if (isset($_doctypes[$type]))

		{

			return $_doctypes[$type];

		}

		else

		{

			return FALSE;

		}

	}

}



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



/**

 * Link

 *

 * Generates link to a CSS file

 *

 * @access	public

 * @param	mixed	stylesheet hrefs or an array

 * @param	string	rel

 * @param	string	type

 * @param	string	title

 * @param	string	media

 * @param	boolean	should index_page be added to the css path

 * @return	string

 */

if ( ! function_exists('link_tag'))

{

	function link_tag($href = '', $rel = 'stylesheet', $type = 'text/css', $title = '', $media = '', $index_page = FALSE)

	{

		$CI =& get_instance();



		$link = '<link ';



		if (is_array($href))

		{

			foreach ($href as $k=>$v)

			{

				if ($k == 'href' AND strpos($v, '://') === FALSE)

				{

					if ($index_page === TRUE)

					{

						$link .= 'href="'.$CI->config->site_url($v).'" ';

					}

					else

					{

						$link .= 'href="'.$CI->config->slash_item('base_url').$v.'" ';

					}

				}

				else

				{

					$link .= "$k=\"$v\" ";

				}

			}



			$link .= "/>";

		}

		else

		{

			if ( strpos($href, '://') !== FALSE)

			{

				$link .= 'href="'.$href.'" ';

			}

			elseif ($index_page === TRUE)

			{

				$link .= 'href="'.$CI->config->site_url($href).'" ';

			}

			else

			{

				$link .= 'href="'.$CI->config->slash_item('base_url').$href.'" ';

			}



			$link .= 'rel="'.$rel.'" type="'.$type.'" ';



			if ($media	!= '')

			{

				$link .= 'media="'.$media.'" ';

			}



			if ($title	!= '')

			{

				$link .= 'title="'.$title.'" ';

			}



			$link .= '/>';

		}





		return $link;

	}

}



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



/**

 * Generates meta tags from an array of key/values

 *

 * @access	public

 * @param	array

 * @return	string

 */

if ( ! function_exists('meta'))

{

	function meta($name = '', $content = '', $type = 'name', $newline = "\n")

	{

		// Since we allow the data to be passes as a string, a simple array

		// or a multidimensional one, we need to do a little prepping.

		if ( ! is_array($name))

		{

			$name = array(array('name' => $name, 'content' => $content, 'type' => $type, 'newline' => $newline));

		}

		else

		{

			// Turn single array into multidimensional

			if (isset($name['name']))

			{

				$name = array($name);

			}

		}



		$str = '';

		foreach ($name as $meta)

		{

			$type		= ( ! isset($meta['type']) OR $meta['type'] == 'name') ? 'name' : 'http-equiv';

			$name		= ( ! isset($meta['name']))		? ''	: $meta['name'];

			$content	= ( ! isset($meta['content']))	? ''	: $meta['content'];

			$newline	= ( ! isset($meta['newline']))	? "\n"	: $meta['newline'];



			$str .= '<meta '.$type.'="'.$name.'" content="'.$content.'" />'.$newline;

		}



		return $str;

	}

}



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



/**

 * Generates non-breaking space entities based on number supplied

 *

 * @access	public

 * @param	integer

 * @return	string

 */

if ( ! function_exists('nbs'))

{

	function nbs($num = 1)

	{

		return str_repeat("&nbsp;", $num);

	}

}





/* End of file html_helper.php */

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