<?php

class Zend_View_Helper_MontaUnidadesPrevias extends Zend_View_Helper_Abstract {
	
	public function montaUnidadesPrevias($atributo, $numeroLinha=false, $first=false) {
		?>
		<tr>
			<td width="1%" align="center"><b><?= ($atributo['id_parent'] ? '' : $numeroLinha) ?></b></td>
			<td width="24%"><b><?=$atributo['ds_descricao_atributo'];?></b></td><?
			
			if($atributo['fl_pertence_folha'] === false) {
				for($i = 0; $i < 4; $i++): ?>
					<td align="left" nowrap="nowrap"><?=$this->getElement($atributo, $atributo['respostas'][$i], $i, $first);?></td><?
				endfor;
			} else { 
				?>
				<td colspan='2' align="left" nowrap="nowrap" width="10%"><?=$this->getElement($atributo, $atributo['respostas'][0], false);?></td><?
			}?>
		</tr>
		<?
	}
	
	public function getElement($atributo, $resposta=false, $item=false, $first=false) {
		$Element = new Agro_Element();
		if($atributo['ds_chave_tipo_atributo'] == "textarea"){
			$Element->setAttrib('style', 'width:97%');
		}else{
			$Element->setAttrib('style', 'width:150px');
		}

		if($resposta) {
			foreach($resposta as $key => $val) {
				$resposta[strtoupper($key)] = $val;
			}
		}

		$Element->setType($atributo['ds_chave_tipo_atributo']);

		$Element->setValue($resposta['ds_resposta']);

		if($first) {
			$class = 'validar coluna_'. $item . ' ' . $atributo['ds_chave_tipo_atributo'];
		} else {
			$class = 'coluna_'. $item . ' ' . $atributo['ds_chave_tipo_atributo'];
		}

		if($atributo['fl_pertence_folha'] && !$atributo['id_parent']) {
			$class .= " req";
		}

		//print_r($atributo['ds_descricao_atributo']);
		if($atributo['ds_descricao_atributo'] == 'Coordenadas' 
		|| $atributo['ds_descricao_atributo'] == 'Qual a coordenada geográfica dessa área?'
		|| $atributo['ds_descricao_atributo'] == 'Informe a coordenada correta:'){
			$class .= " coordenadas";
		}

		if($atributo['ds_descricao_atributo'] == 'Hora'){
			$class .= " hora";
		}		

		$Element->setClass($class);	
		
		if($item !== false) {
			$Element->setName("atributo[$item][{$atributo['id']}]");
		} else {
			$Element->setName("folha[{$atributo['id']}]");
		}
		
		switch ($atributo['ds_chave_tipo_atributo']) {
			case 'lookup':
				$Element->setOptions($this->getOptions($atributo));
				break;
			default:
				$Element->setOptions($atributo['ds_valores_opcoes']);
				break;
		}
		
		return $Element->get();
	}
	
	public function getOptions($atributo) {
		$Db = Agro_Db_Table_Abstract::getDefaultAdapter();
		
		$select = $Db->select();
		$select->distinct(true);
		$select->from("{$atributo[ds_schema]}.{$atributo[ds_table]}", array($atributo[ds_option_value], $atributo[ds_option_text]));
		$select->order($atributo[ds_option_text]);
		
		if ($atributo['ds_option_filter']) {
			$select->where("{$atributo['ds_option_filter']} = ?", $atributo[$atributo['ds_option_filter']]);
		}
		
		$Rs = $Db->fetchAll($select);
		
		if ($Rs) {
			$options = array();
			foreach ($Rs as $Row) {
				if(strlen($Row[$atributo[ds_option_text]]) > 15) {
					$text = substr($Row[$atributo[ds_option_text]], 0, 15) . '...';
				} else {
					$text = $Row[$atributo[ds_option_text]];
				}
				
				$options[$Row[$atributo[ds_option_value]]] = $text;
			}
		}
		
		return $options;
	}
}
