// JavaScript Document
/***
 *	Crea una instancia del componente DataBaseHandler ,para manipular informacion que viene
 *	desde una base de datos y devolver valores en javascript
 *
 *	@example:
 *
 *		db=new DataBaseHandler(objData);
 *	(1) if(db.hasRows()){
 *			do{
 *	(2)			alert(db.getRow(0)+" - "+db.getRow(1));
 *	(3)		}while(db.next());
 *		}
 *		
 *		objData tiene que ser de la forma 
 *			valorReg_11#||#valorReg_12#||#...valorReg_1n@@@valorReg_21#||#valorReg_22#||#...valorReg_2n@@@...valorReg_11#||#valorReg_12#||#...valorReg_1n@@@..........valorReg_n1#||#valorReg_n2#||#...valorReg_nn@@@
 *		(1) Pregunta si existen registros
 *		(2) Muestra la columna 0 y 1 del registro seleccionado
 *		(3) Mientras haya un proximo registro vuelve a (2)
 *
 */

function DataBaseHandler(objData){
	this.ROW_SPLIT="#||#";
	this.COLUMN_SPLIT="@@@";
	
	this.arrayData;
	this.intCantData=0;
	this.intIndex=0;
	
	
	this.arrayData=objData.split(this.COLUMN_SPLIT);
	this.intCantData=this.arrayData.length-1;
	this.next=next_;
	this.first=first_;
	this.last=last_;
	this.getRow=getRow_;
	this.hasRows=hasRows_;
	
	
}

/**
 * hasRows_ me indica si hay al menos un registro
 * @return
 *		true si hay al menos un registro,sino false
 */
function hasRows_(){
	return (this.intCantData>0);
}

/**
 * next_ avanza el cursor
 * @return
 *		true si hay mas registros, sino false
 */
function next_(){
	if((this.intIndex+1) < this.intCantData){
		this.intIndex++;
		return true;
	}
	return false;
}

/**
 * first_ se mueve el cursor al primer registro
 */
function first_(){
	this.intIndex=0;
}

/**
 * last_ se mueve el cursor al ultimo registro
 */
function last_(){
	this.intIndex=(this.intCantData);
}

/**
 * getRow_ obtengo la informacion del campo indexRow del registro seleccionado
 * @param
 *		indexRow - un indice del registro
 * @return
 *		la informacion del campo indexRow
 */
function getRow_(indexRow){
	if(indexRow<0 || indexRow > this.intCantData+1)
		alert("Error getRow() :: Indice fuera del arreglo");
	else{
		arrayTemp=this.arrayData[this.intIndex].split(this.ROW_SPLIT);
		return arrayTemp[indexRow];
	}
}