<?


function mostrar_detalles_objeto($obj, $permisos, $formato, $nombres, $titulo, $extra, $counter = false, $display = "none"){

	
	$class_tabla 	= "tabla_listado";
	$class_td1 		= "td_titulo_listado";
	$class_tr1 		= "tr_datos_listado";
	$class_td2 		= "";
	$ancho1			= "160";
	$ancho2			= "";

	$nombre_clase	= get_class($obj);
	
	if (!$obj){
		$tabla_detalle = "
		<p><table class='tabla_mensaje' align='center'>
		<tr>
			<th>
				Elemento no encontrado
			</th>
		</tr>
		</table></p>
		";
		return $tabla_detalle;
	}
	
	$arr = obj2array($obj);
	
	if ($extra)
		$colspan = 4;
	else
		$colspan = 3;
	
	$cont = 0;
	$tabla_detalle = "
	<table class=$class_tabla width='100%' border=0>
	<tr>
	<td class=$class_td1 colspan=$colspan align=center>$titulo</td>
	</tr>";
	
	$show_first = 0;
	
	foreach ($arr as $atributo => $valor) {
		
		if ($valor == null) $valor = "&nbsp;";						//Si no hay valor asigna un espacio en blanco para desplegar en la tabla
		$mostrar_atributo 	= substr($permisos, $cont, 1);			//Revisa los permisos externos para mostrar o no la variable 
		$aplicar_formato	= substr($formato, $cont, 1);			//aplicar formatos preestablecidos a la variable 
		$atributo 			= format_nombre_atributo($atributo,$nombres);
		$valor 				= format_valor_atributo($valor, $aplicar_formato, $atributo);
		$mostrar_atributo	= format_auto_ocultar_atributos($atributo, $mostrar_atributo);
		
		$text = "";
		$numero = $cont+1;
		if ($counter) $text = "<td>$numero</td>";
		
		if ($mostrar_atributo == '2' && $valor != "&nbsp;"){
			if ($show_first == 0){
				$popup = popup_php("Ver más",20);
				$link_show = "<a $popup href='javascript:cambiar_panel(\"div_$nombre_clase\");'><img src='imagenes/iconos/shown.gif' border=0></a>";
				$show_first++;
			}
			else
				$link_show = "";
			
			if ($extra){
				$tabla_detalle .= "<tr class=$class_tr1>$text<td width=$ancho1 class=$class_td1>$atributo</td><td>$valor</td><td width='3%' align='center'>$extra</td><td width='3%' align='center'>$link_show</td></tr>";	
			}
			else
				$tabla_detalle .= "<tr class=$class_tr1>$text<td width=$ancho1 class=$class_td1>$atributo</td><td>$valor</td><td align='center'>$link_show</td></tr>";	
		}
		
		$cont++;
	}
	
	$tabla_detalle .="
	</table>
	";
	
	$cont = 0;
	$tabla_detalle .= "<div id=div_$nombre_clase style='display: none;'>";
	$tabla_detalle .= "<table border=0 width=100% class=$class_tabla>";
	foreach ($arr as $atributo => $valor) {
		
		
		$mostrar_atributo 	= substr($permisos, $cont, 1);			//Revisa los permisos externos para mostrar o no la variable 
		$aplicar_formato	= substr($formato, $cont, 1);			//aplicar formatos preestablecidos a la variable 
		$atributo 			= format_nombre_atributo($atributo,$nombres);
		$valor 				= format_valor_atributo($valor, $aplicar_formato, $atributo);
		$mostrar_atributo	= format_auto_ocultar_atributos($atributo, $mostrar_atributo);
		
		$text = "";
		$numero = $cont+1;
		if ($counter) $text = "<td>$numero</td>";
		
		if (($mostrar_atributo !== '0') and ($mostrar_atributo !== '2')){
			$tabla_detalle .= "<tr class=$class_tr1>$text<td width=$ancho1 class=$class_td1>$atributo</td><td class=$class_td2>$valor</td></tr>";	
		}
		
		$cont++;
	}
	$tabla_detalle .= "</table></div></p>";
	
	return $tabla_detalle;
	
}

function format_auto_ocultar_atributos($atributo, $mostrar_atributo){
	if ((strlen($atributo)<5) and (strcmp(substr($atributo, 0, 2),"Ex") == 0)) return '0';
	else return $mostrar_atributo;
}

function format_valor_atributo($valor, $formato, $atributo){
	
	switch ($formato) {
		case 'F':	$valor = convertirFechaBD_fecha($valor);	break;
		case 'H':	$valor = convertirHoraBD_Hora($valor);		break;
		case 'M':	$valor = "$" . format_money($valor);		break;
		case 'R':	$valor = format_rut($valor);				break;
		case 'N':	$valor = sprintf("%08s", $valor);			break;
		case '1':	$valor = sprintf("%01s", $valor);			break;
		case '2':	$valor = sprintf("%02s", $valor);			break;
		case '3':	$valor = sprintf("%03s", $valor);			break;
		case '4':	$valor = sprintf("%04s", $valor);			break;
		case '5':	$valor = sprintf("%05s", $valor);			break;
		case '6':	$valor = sprintf("%06s", $valor);			break;
		case '7':	$valor = sprintf("%07s", $valor);			break;
		case '8':	$valor = sprintf("%08s", $valor);			break;
		case 'U':	$valor = strtoupper($valor);				break;
	
		
		default:
			//Formateo automatico de variables
			if (substr($atributo, 0, 3) == "id_")		$valor = sprintf("%08s", $valor);
			if (substr($atributo, 0, 5) == "fecha")		$valor = convertirFechaBD_fecha($valor);
			if (substr($atributo, 0, 2) == "fecha")		$valor = convertirFechaBD_fecha($valor);
			break;
	}
	
	
	
	return $valor;
}

function format_nombre_atributo($atributo,$nombres){
	if ($nombres["$atributo"] != "")
		$atributo = $nombres["$atributo"];
	else{
		$atributo = str_replace("id_", "Nro ", $atributo);
		$atributo = str_replace("_", " ", $atributo);
		$atributo = ucwords(strtolower($atributo)); 
	}
	return $atributo;
}


function obj2array ( &$Instance ) {
   $clone = (array) $Instance;
   $rtn = array ();
   //$rtn['___SOURCE_KEYS_'] = $clone;

   while ( list ($key, $value) = each ($clone) ) {
       $aux = explode ("\0", $key);
       $newkey = $aux[count($aux)-1];
       $rtn[$newkey] = $clone[$key];
   }

   return $rtn;
}


?>
