<?php
class AppElementoFormulario extends Zend_Form_Element_Xhtml{
	
	protected $_padre; 
	protected $_nombreObjeto;
	protected $_eventos = array();
	protected $_ancho_label = 4;
	
	
	
	public function setAnchoLabel($valor){
		$this->_ancho_label = $valor;
	}
	
	public function getEvento($distparador){
		if(isset($this->_eventos[$distparador]))
			$this->_eventos[$distparador];
	}
	
	public function __construct($spec, $options = null){
		parent::__construct($spec, $options);
		$this->_nombreObjeto = $spec;
	}
	public function setNombreObjeto($valor){
		$this->_nombreObjeto = $valor;
	}
	
	public function getNombreObjeto(){
		return $this->_nombreObjeto;
	}
	
	public function setIgual($name, $mensaje){
		$this->addValidator(new VLDIgual($name, $mensaje));
	}
	
	public function addEvento(&$evento){
		if(isset($this->_eventos[$evento->getDisparador()])){
			 
			AppEvento::destroyEvento($this->_eventos[$evento->getDisparador()]);
			unset($this->_eventos[$evento->getDisparador()]);
		}
		
		$evento->setPadre($this);
		$this->_eventos[$evento->getDisparador()] = $evento;
	}
	
	public function existeAccionFormulario($accion){
		if($this->_padre instanceof AppFormulario){
			return  $this->_padre->existeAccionFormulario($accion);
		}
		return false;
	}
	
	
	/**
	 * Nos regresa el select de jQ del elemento dle formulario
	 * @return string
	 */
	public function identificadorScript(){
		$nombre = $this->getId();
		$prefijo = '';
		
		if($this->_padre instanceof AppFormulario){
			$prefijo = $this->_padre->identificadorScript().' ';
		}
		
		if(strlen($nombre)>0)
			return $prefijo.'#'.$nombre;
		else
			return '';
			
	}
	
	public function setPadre($padre){
		$this->_padre = $padre;
		
	}

	public function getPadre(){
		return $this->_padre;
	
	}
	/**
	 * 
	 * @param integer $ancho numero entre el 1 y el 12 para definir el ancho del campo
	 */
	
	public function setAncho($ancho){
		$clases = $this->getAttrib('class');
		$clases.= ' span'.$ancho; 
		$clases = $this->setAttrib('class', $clases);
	}
	
	public function getHelper(){
		return $this->helper;
	}
	
	public function renderInput(){
		$view = $this->getView();
		$helper = $this->getHelper();
		$attribs   = $this->getAttribs();
		if (!array_key_exists('id', $attribs)) {
			$attribs['id'] = $this->getName();
		}
		if(isset($attribs['helper'])){
			unset($attribs['helper']);
		}
		try {
			return  $view->$helper($this->getName(), $this->getValue(), $attribs);
		} catch (Exception $e) {
		return $e->__toString();
		}
		
	}
	
	public function renderLabel(){

		$padre = $this->getPadre();
		$clases = '';
		if($padre instanceof AppFormulario){
			if($padre->getLabelSuperior()){
				
			}else{
				$clases = 'control-label col-xs-'.$this->_ancho_label;
			}
		}
		
		
		
		return '<label  class="'.$clases .'" rel="#'.$this->getName().'">'. $this->getLabel().'</label>';
		
		
	}
	
	public function render(Zend_View_Interface $view = null){
		
		$label = $this->renderLabel();
		$input = $this->renderInput();
		
		$html = '<div class="form-group">';
		
		$html.= $label;

		$padre = $this->getPadre();
		
		if($padre instanceof AppFormulario){
			if($padre->getLabelSuperior()){
				$html .= $input.($this->getDescription()? '<p class="help-block">'.$this->getDescription().'</p>':'');
			}else{
				$html .= '<div class="col-xs-'. (12 - $this->_ancho_label) .'">'.$input.($this->getDescription()? $this->getDescription():'').'</div>';
			}
		}
		
		
		
		
		
		
		
		$html .= '</div>';
		return $html;
	}
	
	
}

