/* ----------------------------------------------------------------
	APP BROWSER
	JS -> CINTA_DUMP
-------------------------------------------------------------------*/

var oPopup		= null;
var versionActiveX = true;
var nOffsetDumpX = 5;
var nOffsetDumpY = 5;

var STATUS_PENDING		= 0;
var STATUS_QUEUED 		= 2;
var STATUS_DOWNLOADING	= 4;
var STATUS_PAUSED 		= 8;
var STATUS_FINISHED 	= 16;
var STATUS_ABORTED	 	= 32;

var ITEM_ERROR			= -9999;
/**
 * Obtiene los datos que se estan bajando y los envia por api a la app para armar
 * @param	string	sFrame	Nombre del frame donde esta el objeto downloader
 * la cinta
 */
function browseDownloader(sFrame) {
	if (getStatusUsuario() == "logueado") {	
		//var oDownloader = getDownloader(sFrame);
		//if (oDownloader != undefined) {
		if (top.downloader.oDownloader != undefined && top.downloader.oDownloader != null) {
			//Verifico si no hay un timer ejecutandose
			/*
			if (!nHandleInterval) {
				//Limpio el intevalo para que no afecte lo que se va a mostrar
				window.clearInterval(nHandleInterval);
				nHandleInterval = 0;
			}
			*/
			//Obtengo los items
			//var sItems = oDownloader.itemsToString();
			var sItems = top.downloader.oDownloader.itemsToString();
			//Cargo el array de parametros
			aParameter ={
										items			: sItems,
										desde_row : 0,
										cant_row	: 99999
									};
			//Ahora cargo la cinta
			//browserCinta.setTotales(oDownloader.items.length);
			//Calculo la cantidad de items ya que ahora se completa con items vacios para que sea multiplo de 4 siempre
			//var nTotal = top.downloader.oDownloader.items.length;

			//var nTotal = sItems.split(",").length;
			var nTotal;
			if(sItems)
				nTotal=sItems.split(",").length;
			else //Con esto el paginado muestra contenido 0 de 0, en lugar de 1 de 1
				nTotal=0;

			browserCinta.setTotales(nTotal);
			browserCinta.setCintaDump(aParameter);
			//Verifico si no hay un timer ejecutandose
			/*
			if (!nHandleInterval) {
				//Creo el interval
				nHandleInterval = window.setInterval("statusInterval()",1000);
			}
			*/
		}	
	}
}

	/*
---------------------------
Microsoft Internet Explorer
---------------------------
url:[/scripts/app/framework.php?APP=browser|browser|browser|principal&API=cinta_dump&cmd=setCinta&xsl=cinta_dump.xsl&pk=&pl=]
dest:[cinta]
app:[browser|browser|browser|principal]
param:[&cmd=setCinta&xsl=cinta_dump.xsl&pk=&pl=]
---------------------------
Aceptar   
---------------------------
	 */

/**
 * Inicializa la transferencia
 * @param	int	nIdMaterial	ID del material
 */
function startTransfer(nIdMaterial) {
	if (top.downloader.oDownloader != undefined && top.downloader.oDownloader != null) {
		var nIndex = top.downloader.oDownloader.idToIndex(nIdMaterial);
		if (nIndex != null) {
			top.downloader.oDownloader.items[nIndex].startTransfer();					
		}
	}
}

/**
 * Pausa una transferencia
 * @param	int	nIdMaterial	ID del material
 */
function pauseTransfer(nIdMaterial) {
	if (top.downloader.oDownloader != undefined && top.downloader.oDownloader != null) {
		var nIndex = top.downloader.oDownloader.idToIndex(nIdMaterial);
		if (nIndex != null) {
			top.downloader.oDownloader.items[nIndex].pauseTransfer();
		}
	}
}

/**
 * Cancela la transferencia en curso y borra el archivo de la maquina del cliente
 * @param	int	nIdMaterial	ID del material que se esta cancelando
 */
function abortTransfer(nIdMaterial) {
	if (top.downloader.oDownloader != undefined && top.downloader.oDownloader != null) {
		var nIndex = top.downloader.oDownloader.idToIndex(nIdMaterial);
		if (nIndex != null) {
			top.downloader.oDownloader.items[nIndex].abortTransfer();
		}
	}
}

function getMessageDiv(sId) {
	return document.getElementById(sId);
}

function setMessage(nId,sMessage) {
	var oDiv = getMessageDiv("dldPorcentaje_"+nId);
	if (oDiv != undefined && oDiv != null) {
		//Pongo el mensaje
		oDiv.innerHTML = sMessage;
		//Esta oculto y debo mostrarlo, pero si esta oculto seguro que esta visible el de error
		oDivErr = getMessageDiv("dldError_" + nId);
		if (oDivErr != undefined && oDivErr != null) {
			oDivErr.style.display = "none";
		}
		oDiv.style.display = "block";
	}
}

function setError(nId,sMessage) {
	var oDiv = getMessageDiv("dldError_"+nId);
	if (oDiv !=undefined && oDiv != null) {
		//Pongo el mensaje
		oDiv.innerHTML = sMessage;
		//Oculto el display de mensajes y muestro el de error
		oDivMsg = getMessageDiv("dldPorcentaje_"+nId);
		if (oDivMsg != undefined && oDivMsg != null) {
			oDivMsg.style.display = "none";				
		}		
		oDiv.style.display = "block";
	}
}

function setPorcentaje(nId,nPorcentaje) {
	
}

/**
 * Devuelve el estado de un item
 */
function getStatusDownloadItem(nIdMaterial) {
	var nReturn = -1;
	if (top.downloader.oDownloader != undefined && top.downloader.oDownloader != null) {
		var nIndex = top.downloader.oDownloader.idToIndex(nIdMaterial)
		if (nIndex != null) {
			//Si es un error retorno -9999
			if (top.downloader.oDownloader.items[nIndex].isError) {
				nReturn = ITEM_ERROR;			
			} else {
				nReturn = top.downloader.oDownloader.items[nIndex].status;				
			}
		}
	}
	return nReturn;
}

/**
 * Reproduce el archivo que se esta descargando
 * @param	numeric	nIndex	ID de slot asignado
 */
function playLocal(nIdMaterial) {
	var oPlayer = obtenerReferenciaPlayer("player");
	if (oPlayer != undefined && oPlayer != null) {
		if (top.downloader.oDownloader != undefined && top.downloader.oDownloader != null) {
			var nIndex = top.downloader.oDownloader.idToIndex(nIdMaterial);
			if (nIndex != null) {
				var sUrl = "file:///" + top.downloader.oDownloader.getPendingPath() + top.downloader.oDownloader.items[nIndex].fileName;
				sUrl=sUrl.replace(/\\/g,"/");
				//Informo en el header de la playlist que se esta viendo un archivo 
				//de forma local				
				setCurrentLocal(top.downloader.oDownloader.items[nIndex].image,top.downloader.oDownloader.items[nIndex].title,top.downloader.oDownloader.getPendingPath() + top.downloader.oDownloader.items[nIndex].fileName.replace(/\\/g,"/"));
				oPlayer.url = sUrl;
				oPlayer.controls.play();
			}
		}
	}
}

////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
//Captura de eventos
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////

function onTransferStarted(iSlot) {
	if (top.downloader.oDownloader != undefined && top.downloader.oDownloader != null) {
		var nIndex = top.downloader.oDownloader.slotToIndex(iSlot);
		if (nIndex != null && top.principal.getStatusText) {
			setMessage(top.downloader.oDownloader.items[nIndex].id,getStatusText(top.downloader.oDownloader.items[nIndex].status));			
			//Cambio el estado del boton
			var oBtn = document.getElementById("dldPausa_"+top.downloader.oDownloader.items[nIndex].id);
			if (oBtn != null) {
				oBtn.className = "itemPausa";
			}
		}
	}
}

function onTransferFinished(iSlot) {
	if (top.downloader.oDownloader != undefined && top.downloader.oDownloader != null) {
		var nIndex = top.downloader.oDownloader.slotToIndex(iSlot);
		if (nIndex != null && top.principal.getStatusText) {
			setMessage(top.downloader.oDownloader.items[nIndex].id,getStatusText(top.downloader.oDownloader.items[nIndex].status));
		}
	}
}

function onTransferPaused(iSlot) {
	if (top.downloader.oDownloader != undefined && top.downloader.oDownloader != null) {
		var nIndex = top.downloader.oDownloader.slotToIndex(iSlot);
		if (nIndex != null && top.principal.getStatusText) {
			setMessage(top.downloader.oDownloader.items[nIndex].id,getStatusText(top.downloader.oDownloader.items[nIndex].status));			
			//Cambio el estado del boton
			var oBtn = document.getElementById("dldPausa_"+top.downloader.oDownloader.items[nIndex].id);
			if (oBtn != null) {				
				oBtn.className = "itemResumir";
			}			
		}		
	}
}

function onTransferRemoved(iSlot) {
	if (top.downloader.oDownloader != undefined && top.downloader.oDownloader != null) {
		var nIndex = top.downloader.oDownloader.slotToIndex(iSlot);
		//Si existe un indice
		if (nIndex != null && top.principal.getStatusText) {
			setMessage(top.downloader.oDownloader.items[nIndex].id,getStatusText(top.downloader.oDownloader.items[nIndex].status));			
		}
	}
}

function onTransferRemovedById(iIdMaterial) {
	if (top.downloader.oDownloader != undefined && top.downloader.oDownloader != null) {
		var nIndex = top.downloader.oDownloader.idToIndex(iIdMaterial);
		//Si existe un indice
		if (nIndex != null && top.principal.getStatusText) {
			setMessage(top.downloader.oDownloader.items[nIndex].id,getStatusText(top.downloader.oDownloader.items[nIndex].status));
		}
	}	
}

function onTransferError(iSlot) {
	if (top.downloader.oDownloader != undefined && top.downloader.oDownloader != null) {
		var nIndex = top.downloader.oDownloader.slotToIndex(iSlot);
		var oItem = null;
		if (nIndex == null) {
			//Tomo el item actual
			oItem = top.downloader.oDownloader.currentItem;
		} else {
			oItem = top.downloader.oDownloader.items[nIndex];
		}
		if (oItem != null && top.principal.getStatusText) {
			setError(oItem.id,getStatusText(oItem.status));
		}
	}
}

function onTransferDownload(iSlot) {
	if (top.downloader.oDownloader != undefined && top.downloader.oDownloader != null) {
		var nIndex = top.downloader.oDownloader.slotToIndex(iSlot);
		if (nIndex != null) {
			var nPorcentaje = parseInt(top.downloader.oDownloader.object.dblPercentTransferred(top.downloader.oDownloader.items[nIndex].slot));
			if (top.principal.getStatusText) {
				setMessage(top.downloader.oDownloader.items[nIndex].id,getStatusText(top.downloader.oDownloader.items[nIndex].status) + " " +nPorcentaje+"%");				
			}
		}
	}
}

////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
//Funciones para manejo del alt de la cinta de dump
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////

/**
 * Inicializa el alt de la cinta de dump
 * @param	numeric	nIdMaterial	ID del material que se tiene que informar
 */
function showAltDump(nIdMaterial) {
	var oAlt = document.getElementById("divAltDump");
	if (oAlt != null) {
		//Averiguo los datos y los escribo en el dump
		var nIndex = top.downloader.oDownloader.idToIndex(nIdMaterial);
		if (nIndex != null) {			
			document.getElementById("strTitleDump").innerHTML = top.downloader.oDownloader.items[nIndex].title;
			document.getElementById("strEncodeDump").innerHTML = top.downloader.oDownloader.items[nIndex].bitRate;
			if (top.downloader.oDownloader.items[nIndex].slot > 0 && (top.downloader.oDownloader.items[nIndex].status == STATUS_DOWNLOADING || top.downloader.oDownloader.items[nIndex].status == STATUS_PAUSED)) {
				document.getElementById("strEstado").innerHTML = getStatusText(top.downloader.oDownloader.items[nIndex].status) + " " + parseInt(top.downloader.oDownloader.object.dblPercentTransferred(top.downloader.oDownloader.items[nIndex].slot)) + "%";
			} else {
				if (!top.downloader.oDownloader.items[nIndex].isError) {
					document.getElementById("strEstado").innerHTML = getStatusText(top.downloader.oDownloader.items[nIndex].status);					
				} else {
					document.getElementById("strEstado").innerHTML = getStatusText(ITEM_ERROR);
				}
			}
			//Si hay un error entonces debo mostrar el mensaje
			if (top.downloader.oDownloader.items[nIndex].isError) {
				document.getElementById("divAltDumpErr").style.display = "block";
				//document.getElementById("spnErrorDump").innerHTML = top.downloader.oDownloader.object.strError(top.downloader.oDownloader.items[nIndex].slot);
				document.getElementById("spnErrorDump").innerHTML = top.downloader.oDownloader.items[nIndex].errorMessage;
			}
			//Muestro 
			oAlt.style.display = "block";
			oAlt.style.left	= (event.x!=null)? event.x+nOffsetDumpX : event.clientX+nOffsetDumpX;
			oAlt.style.top	= (event.y!=null)? event.y+nOffsetDumpY : event.clientY+nOffsetDumpY;
		}
	}
}

/**
 * Cierra el alt de la cinta de dump
 */
function closeAltDump() {
	var oAlt = document.getElementById("divAltDump");
	if (oAlt != null) {
		oAlt.style.display = "none";
	}
}

/**
 * Mueve el alt siguiendo el cursor
 */
function moveAltDump(nIdMaterial) {
	var oAlt = document.getElementById("divAltDump");
	//Actualizo el estado solamente si se esta descargando
	var nIndex = top.downloader.oDownloader.idToIndex(nIdMaterial);
	if (nIndex != null && top.downloader.oDownloader.items[nIndex].status == STATUS_DOWNLOADING) {
		document.getElementById("strEstado").innerHTML = getStatusText(top.downloader.oDownloader.items[nIndex].status) + " " + parseInt(top.downloader.oDownloader.object.dblPercentTransferred(top.downloader.oDownloader.items[nIndex].slot)) + "%";
	}
	oAlt.style.left	= (event.x!=null)? event.x+nOffsetDumpX : parseInt(event.clientX+nOffsetDumpX)+"px";
	oAlt.style.top	= (event.y!=null)? event.y+nOffsetDumpY : parseInt(event.clientY+nOffsetDumpY)+"px";	
}







/*IMPORTS*/
/*VARIABLES*/
window.oPopup=oPopup;
window.versionActiveX=versionActiveX;
window.nOffsetDumpX=nOffsetDumpX;
window.nOffsetDumpY=nOffsetDumpY;
window.STATUS_PENDING=STATUS_PENDING;
window.STATUS_QUEUED=STATUS_QUEUED;
window.STATUS_DOWNLOADING=STATUS_DOWNLOADING;
window.STATUS_PAUSED=STATUS_PAUSED;
window.STATUS_FINISHED=STATUS_FINISHED;
window.STATUS_ABORTED=STATUS_ABORTED;
window.ITEM_ERROR=ITEM_ERROR;
/*FUNCIONES*/
window.browseDownloader=browseDownloader;
window.startTransfer=startTransfer;
window.pauseTransfer=pauseTransfer;
window.abortTransfer=abortTransfer;
window.getMessageDiv=getMessageDiv;
window.setMessage=setMessage;
window.setError=setError;
window.setPorcentaje=setPorcentaje;
window.getStatusDownloadItem=getStatusDownloadItem;
window.playLocal=playLocal;
window.onTransferStarted=onTransferStarted;
window.onTransferFinished=onTransferFinished;
window.onTransferPaused=onTransferPaused;
window.onTransferRemoved=onTransferRemoved;
window.onTransferRemovedById=onTransferRemovedById;
window.onTransferError=onTransferError;
window.onTransferDownload=onTransferDownload;
window.showAltDump=showAltDump;
window.closeAltDump=closeAltDump;
window.moveAltDump=moveAltDump;