//Desde aqui tablas
function Cuerpo()
{
	this.Tipo="TBODY";

	this.AdicionaFila=function(objFila)
	{
		this.Obj.appendChild(objFila);
	}
	
	this.BorraFila=function(objFila)
	{
		this.Obj.removeChild(objFila);
	}
}

function Fila()
{
	this.Tipo="TR";
	this.AdicionaCelda=function(objFila)
	{
		this.Obj.appendChild(objFila);
	}
}

function Celda()
{
	this.Tipo="TD";
	this.AdicionaTexto=function(mensaje)
	{
		this.Obj.innerHTML=mensaje;
	}

	this.AdicionaObjeto=function(objElemento)
	{
		this.Obj.appendChild(objElemento);
	}

}


Fila.prototype=new Objecto();
Celda.prototype=new Objecto();
Cuerpo.prototype=new Objecto();

function Tabla(Filas,Columnas)
{
	this.Tipo="TABLE";
	this.objCuerpo=new Cuerpo();
	this.objFila=new Array();
	this.objCelda=new Array();
	
	this.objTabla=null;
	this.numFilas=Filas;
	this.numColumnas=Columnas;

	this.AdicionaCuerpo=function(objCuerpo)
	{
		this.objTabla.appendChild(objCuerpo);
	}
	
	this.CreaTabla=function()	
	{
		this.objTabla=this.Crea();
		this.AdicionaCuerpo(this.objCuerpo.Crea());

		for(iFilas=0;iFilas<this.numFilas;iFilas++)
		{
			this.objFila[iFilas]=new Fila();	
			this.objCuerpo.AdicionaFila(this.objFila[iFilas].Crea());

			for(iCeldas=0;iCeldas<this.numColumnas;iCeldas++)
			{
				this.objCelda[iCeldas]=new Celda();
				this.objFila[iFilas].AdicionaCelda(this.objCelda[iCeldas].Crea());
			}
		}
	}

	this.ObtieneCuerpo=function()
	{
		var ArrCuerpo=this.objTabla.getElementsByTagName("tbody");
		this.objCuerpo.Obj=ArrCuerpo[0];
	}
	
	this.BorrarFilas=function(PosFilas)
	{
		for(iFilas=PosFilas;iFilas<this.objFila.length;iFilas++)
		{
			this.objCuerpo.BorraFila(this.objFila[iFilas].Obj);
		}
	}

	this.ObtieneFilas=function()
	{
		this.objFila=new Array();
		var ArrFilas=this.objCuerpo.Obj.getElementsByTagName("tr");
		for(iFilas=0; iFilas<ArrFilas.length; iFilas++)
		{
			if(ArrFilas[iFilas].parentNode.parentNode.id == this.objCuerpo.Obj.parentNode.id)
			{
				this.objFila[iFilas]=new Fila();
				this.objFila[iFilas].Obj=ArrFilas[iFilas];
				this.objFila[iFilas].Copia(ArrFilas[iFilas]);
			}
		}
	}

	this.ObtieneCeldas=function()
	{
		for(iFilas=0; iFilas<this.objFila.length; iFilas++)
		{
			var ArrCeldas=this.objFila[iFilas].Obj.getElementsByTagName("td");
			this.objCelda[iFilas]=new Array();
			for(iCeldas=0; iCeldas<ArrCeldas.length; iCeldas++)
			{
				this.objCelda[iFilas][iCeldas]=new Fila();
				this.objCelda[iFilas][iCeldas].Obj=ArrCeldas[iCeldas];
				this.objCelda[iFilas][iCeldas].Copia(ArrCeldas[iCeldas]);
			}
		}
	}

}

function Paginacion(ObjCuerpo,Celdas,Paginacion)
{
	this.Cuerpo=ObjCuerpo;
	this.NumCeldas=Celdas;
	this.NumPaginacion=Paginacion;
	
	this.Crea=function()
	{
		objFilaNueva=new Fila();
		objFilaNueva.Crea();
		this.Cuerpo.AdicionaFila(objFilaNueva.Obj);

		objCeldacontenedora=new Celda();

		objCeldacontenedora.Crea();
		objFilaNueva.AdicionaCelda(objCeldacontenedora.Obj);
		objCeldacontenedora.Obj.setAttribute("colspan",this.NumCeldas)

		objTablaAlterna=new Tabla(0,0);
		objTablaAlterna.Ancho="100";
		objTablaAlterna.Medida="%";
		objTablaAlterna.Clase="ClaseTabla__Paginacion";
		objTablaAlterna.CreaTabla();
		objCeldacontenedora.AdicionaObjeto(objTablaAlterna.objTabla);
		objCeldacontenedora.Obj.setAttribute("class","ClaseContenedora__Paginacion");
		objCeldacontenedora.Obj.setAttribute("align","center");

 		objFilaNuevaTablaAlterna=new Fila();
 		objFilaNuevaTablaAlterna.Crea();
 		objTablaAlterna.objCuerpo.AdicionaFila(objFilaNuevaTablaAlterna.Obj);

		objTablaAlterna.objCuerpo.Obj.setAttribute("Paginacion",this.NumPaginacion);

 		objFilaNuevaTablaAlterna.AdicionaCelda(this.CreaFlechas("Primero"));
		objFilaNuevaTablaAlterna.AdicionaCelda(this.CreaFlechas("Atras"));
		objFilaNuevaTablaAlterna.AdicionaCelda(this.CreaNumeracion(1));
		//objFilaNuevaTablaAlterna.AdicionaCelda(this.CreaNumeracion(" de "+this.NumPaginacion));
		objFilaNuevaTablaAlterna.AdicionaCelda(this.CreaFlechas("Adelante"));
		objFilaNuevaTablaAlterna.AdicionaCelda(this.CreaFlechas("Ultimo"));
	}

	this.CreaFlechas=function(Tipo)
	{
		objCelda=new Celda();
		objCelda.Crea();
		objFilaNueva.AdicionaCelda(objCelda.Obj);

		objElementoNuevo=new objBoton();
		objElementoNuevo.Id="__Id"+Tipo;
		//objElementoNuevo.Nombre="__btn"+Tipo;
		objElementoNuevo.Clase="clasepaginacion__"+Tipo;
		objElementoNuevo.CreaElemento();
		objElementoNuevo.Obj.value=Tipo;
		objElementoNuevo.Obj.onclick=Muestradatos;
		
/*		objElementoNuevo="<input type='button' name='__btn"+Tipo+"' id='__Id"+Tipo+"' onclick=Muestradatos(event) value="+Tipo+" >";*/
		
		objCelda.AdicionaObjeto(objElementoNuevo.Obj);
//		objCelda.Obj.innerHTML=objElementoNuevo;
		return objCelda.Obj;
	}

	this.CreaNumeracion=function(texto)
	{
		objCelda=new Celda();
		objCelda.Crea();
		objFilaNueva.AdicionaCelda(objCelda.Obj);

		objElementoNuevo=new objTexto();
		objElementoNuevo.Id="__IdNumeracion";
		objElementoNuevo.Nombre="__btnNumeracion";
		objElementoNuevo.Clase="clasepaginacion__Numeracion";
		objElementoNuevo.CreaElemento();
		objElementoNuevo.Obj.value=texto;
		objElementoNuevo.Obj.disabled=true;
		
		objCelda.AdicionaObjeto(objElementoNuevo.Obj);
//		objElementoNuevo="<input type='text' name='__btnNumeracion' id='__IdNumeracion' value=1 >";
//		objCelda.Obj.innerHTML=objElementoNuevo;
		return objCelda.Obj;
	}
}



	function Muestradatos(e)
	{
		var objBoton=null;
		var PosFila=0;
		var PosInicial=0;
		var PosFinal=0;
		var despliega="";
 		if(ie4==true)
 			objBoton=event.srcElement;
 		else
 			objBoton=e.target;
// 
 		var objTexto=objBoton.parentNode.parentNode.childNodes[2].childNodes[0];
 		var objTbody=objBoton.parentNode.parentNode.parentNode;
 		var objTabla=objBoton.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;

 		objTablaPaginacion=new Tabla();
		objTablaPaginacion.objTabla=objTabla;
 		objTablaPaginacion.ObtieneCuerpo();
 		objTablaPaginacion.ObtieneFilas();
 		objTablaPaginacion.ObtieneCeldas();

  		var PosFilaPaginacion=objTexto.value;
  		var Paginacion=parseInt(objTbody.getAttribute("paginacion"));
 
		switch(objBoton.value)
		{
			case "Primero":
				PosFilaPaginacion=1;
				PosInicial=0;
				PosFinal=Paginacion;
			break;
			case "Atras":
				if(PosFilaPaginacion>1)
				{
					PosFilaPaginacion--;
					PosFinal=PosFilaPaginacion*Paginacion;
					PosInicial=(PosFilaPaginacion-1)*Paginacion;
				}
			break;
			case "Adelante":
				PosInicial=PosFilaPaginacion*Paginacion;
				if(PosFilaPaginacion<(objTablaPaginacion.objFila.length/Paginacion))
					PosFilaPaginacion++;
				else
					return;
				PosFinal=PosFilaPaginacion*Paginacion;
			break;
			case "Ultimo":
				var DivPosFilaPaginacion=objTablaPaginacion.objFila.length/Paginacion;
				PosFilaPaginacion=Math.floor(DivPosFilaPaginacion);

				if(DivPosFilaPaginacion-PosFilaPaginacion>0)
					PosFilaPaginacion++;

				PosInicial=(PosFilaPaginacion-1)*Paginacion;
				PosFinal=PosFilaPaginacion*Paginacion;
			break;
		}

		for(iFilas=0;iFilas<objTablaPaginacion.objFila.length;iFilas++)
		{
			if(objTablaPaginacion.objFila[iFilas].Obj.getAttribute("_ifila"))
 			{
				despliega="display:none;";
				if( parseInt(objTablaPaginacion.objFila[iFilas].Obj.getAttribute("_ifila")) > PosInicial && parseInt(objTablaPaginacion.objFila[iFilas].Obj.getAttribute("_ifila")) <= PosFinal)
				{
					despliega="display:table-cell;";
				}
				
				for(iCelda=0;iCelda<objTablaPaginacion.objCelda[iFilas].length;iCelda++)
					this.ie4 ? objTablaPaginacion.objCelda[iFilas][iCelda].Obj.getAttribute("style").cssText=despliega : objTablaPaginacion.objCelda[iFilas][iCelda].Obj.setAttribute("style",despliega);
			}
		}
		objTexto.value=PosFilaPaginacion;
	}

Tabla.prototype=new Objecto();


