<?php defined('SYSPATH') or die('No direct access allowed.');

/**
 * This class is for rendering HTML blocks or widget.
 *
 * It will provide a title and body for the content.
 *
 * @package    lnApp
 * @category   Helpers
 * @author     Deon George
 * @copyright  (c) 2009-2013 Deon George
 * @license    http://dev.leenooks.net/license.html
 * @uses       Style
 */
abstract class lnApp_Block extends HTMLRender {
	protected static $_data = array();
	protected static $_spacer = '';
	protected static $_c = 0;
	protected $_items = array('body','id','scrollable','span','title','title_icon','type');

	protected static $_required_keys = array('body');

	/**
	 * Add a block to be rendered
	 *
	 * @param array Block attributes
	 * @deprecated
	 */
	public static function add($block,$prepend=FALSE) {
		// Any body objects should be converted to a string, so that any calls to Style/Script are processed
		if (isset($block['body']))
			$block['body'] = (string)$block['body'];

		parent::add($block);

		// Detect any style sheets.
		if (! empty($block['style']) && is_array($block['style']))
			foreach ($block['style'] as $data=>$media)
				Style::add(array(
					'type'=>'file',
					'data'=>$data,
					'media'=>$media,
				));
	}

	/**
	 * Render this Block
	 */
	protected function render() {
		$record = static::$_data[$this->_x];

		$output = '';
		$output .= sprintf('<div class="span%s %s">',empty($record['span']) ? '12' : $record['span'],empty($record['scrollable']) ? '' : 'scrollable');
		$output .= '<div class="widget stacked">';

		if (! empty($record['title']))
			$output .= sprintf('<div class="widget-header">%s<h3>%s</h3></div>',empty($record['title_icon']) ? '' : sprintf(' <i class="%s"></i>',$record['title_icon']),$record['title']);

		$output .= '<div class="widget-content">';

		if (! empty($record['type']))
			switch ($record['type']) {
				case 'form': $output .= Form::open(NULL,(empty($record['id']) ? NULL : array('id'=>$record['id'])));
					$output .= (string)$record['body'];
					$output .= Form::close();
					break;

				case 'form-horizontal': $output .= Form::open(NULL,Arr::merge(array('class'=>'form-horizontal'),(empty($record['id']) ? array() : array('id'=>$record['id']))));
					$output .= (string)$record['body'];
					$output .= Form::close();
					break;

				default:
					$output .= (string)$record['body'];
			}

		else
			$output .= (string)$record['body'];

		$output .= '</div> <!-- /widget-content -->';
		$output .= '</div> <!-- /widget-stacked -->';
		$output .= '</div> <!-- /span -->';

		return $output;
	}
}
?>