/**
 *  Solo se necesita declarar la variable para manejar pasando el nombre de la tabla.
    Ejem. var expand = new Expand1('nombreTabla');
    En los tr donde que se queiran ocultar agregar el atributo idpadre=id del tr que sera el pivote para ocultar o mostrar las filas.
    En los tr que seran pivotes se debe agregar el atributo id. y llamar al metodo <a onclick= expand.controlarBloque(id)></a>;
 *  Una vez creada la tabla se llama al metodo ocultarTodo().
 *  Sirve para tablas de html5
 *  Se tiene incluido el manejo para desplegar iconos de bootstap ( span.ui-icon-plus- span.ui-icon-minu) + o - cuando se despliegue elementos, 
    se deben incluir dentro del tr > th que se quiera mostrar.
    Ejemplo:
        <label><span style='display:none' class='ui-icon ui-icon-minus'></span>
 				<span                      class='ui-icon ui-icon-plus'> </span>
 		</label>     
 */
function Expand1 ( idtabla , tr )
{			
	this.idtabla = idtabla;
						
	this.ocultarTodo = function ( )
	{
		$( '#' + this.idtabla + ' tr[idpadre]' ).hide();
		$( '#' + this.idtabla + ' tr' ).attr( 'estatus', 'cerrado' );
				
	};//Termina function ocultarTodo( )	
	
	this.ocultarBloque = function ( tr )
	{			
		$( '#'  + this.idtabla + ' tr[idpadre=' + tr + ']' ).hide();
		$('#'+this.idtabla).find('tr[id=' + tr + ']').attr('estatus', 'cerrado');		
		$('#'+this.idtabla).find('tr[id=' + tr + '] span.ui-icon-plus').show();
		$('#'+this.idtabla).find('tr[id=' + tr + '] span.ui-icon-minus').hide();
		
	};//Termina function fOcultarBloque( )

	this.ocultarBloqueHijos = function ( tr ){							
		var ids = [];
		var cont = 0;
		$('#'  + this.idtabla).find(' tr[idpadre=' + tr + ']').each(function(){	       					
			if($(this).attr('estatus') == "abierto"){
				ids[cont] = $(this).attr('id');
				cont++;										
			}		   
		})			
		
		for(var i=0; i<ids.length; i++ )		
		    this.ocultarBloque(ids[i]);			
	}
		
	this.mostrarBloque = function ( tr )
	{
		 $( '#' + this.idtabla + ' tr[idpadre=' + tr + ']' ).show();
		 $('#'+this.idtabla).find('tr[id=' + tr + ']').attr('estatus', 'abierto');		
		 $('#'+this.idtabla).find('tr[id=' + tr + '] span.ui-icon-minus').show();
		 $('#'+this.idtabla).find('tr[id=' + tr + '] span.ui-icon-plus').hide();				
	};//Termina function mostrarBloque( )		
		
	this.controlarBloque = function ( tr )
	{
		if( $('#'+this.idtabla).find('tr[id=' + tr + ']').attr('estatus') == "abierto" )
		{	
			this.ocultarBloqueHijos( tr );
			this.ocultarBloque( tr );						
		}
		else
		{				
			this.mostrarBloque( tr );				
		}
	};//Termina function controlarBloque(  )		
					
};				