// JavaScript Document

/*
	Archivo de Libreria de Funciones
	Fecha: 06/06/2006
	Autor: L.I. Gerardo Daniel Ibarra Hernández.
	Ver. 1.0
*/
// Esta Funcion sirve para Abrir una Pagina en otro navegador centrada en pantalla
function OpenBrWindow(theURL,winName,features, myWidth, myHeight, isCenter) { 
	if(window.screen)
		if(isCenter)
			if(isCenter=="true"){
				if(myWidth == 0)//le Asigna el 70 % de acuerdo a la resolucion de la pantalla de altura
					myWidth = screen.width * .9
				
				if(myHeight == 0) //le Asigna el 50 % de acuerdo a la resolucion de la pantalla de altura
					myHeight = screen.height * .9
				
				var myLeft = (screen.width-myWidth)/2;
				var myTop = (screen.height-myHeight)/2;
				features+=(features !='')?',':'';
				features+='left='+myLeft+',top='+myTop;
	}
	window.open(theURL,winName,features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight);
}

//Oculta una Capa al Imprimir
function toPrint(pCloseWin){
	document.all.imprime.style.visibility="hidden";	
	window.print();
	if(pCloseWin)
		window.close();
	else
		document.all.imprime.style.visibility="visible";
}

//Obtiene la fecha del Ordenador
function fechaHoy(){
	fec=new Date;
	dia=fec.getDate();
	if (dia<10) dia='0'+dia;
	mes=fec.getMonth()+1;
	if (mes<10) mes='0'+mes;
	anio=fec.getFullYear();
	fecha=dia+'/'+mes+'/'+anio;
	
return fecha;
}

/*
	Esta Funcion Compara 2 Fechas y Determina si una fecha es Mayor o Menor
	la una respecto a la otra
*/
function comparaFechas(pFecha_Compara, pFecha_RspctoA, pOperacion){
var vFecha_Cmpra = new Date(pFecha_Compara.substring(6,10), eval(pFecha_Compara.substring(3,5)-1), pFecha_Compara.substring(0,2));
var vFecha_RspctoA = new Date(pFecha_RspctoA.substring(6,10), eval(pFecha_RspctoA.substring(3,5)-1), pFecha_RspctoA.substring(0,2));

	if(pOperacion == "MAYOR QUE")
		if(vFecha_Cmpra > vFecha_RspctoA)
			return true;
		else return false;
	else if(pOperacion == "MENOR QUE")
		if(vFecha_Cmpra < vFecha_RspctoA)
			return true;
		else return false;
	else if(pOperacion == "IGUAL QUE")
		if(vFecha_Cmpra == vFecha_RspctoA)
			return true;
		else return false;
	else if(pOperacion == "MAYOR IGUAL QUE")
		if(vFecha_Cmpra >= vFecha_RspctoA)
			return true;
		else return false;
	else if(pOperacion == "MENOR IGUAL QUE")
		if(vFecha_Cmpra <= vFecha_RspctoA)
			return true;
		else return false;	
}

/* 
	Las Siguientes Funciones para su funcionamiento requieren de la instalacion de la 
	libreria
				'prototype.js'
	y la invocacion de esta en primer lugar antes del archivo de funciones de la siguiente
	forma:
		<script type="text/javascript" src="js/prototype.js"></script>	  
		<script language="javascript" src="js/funciones.js"></script>
*/
/*
	Esta funcion le da el foco a un elemento de una lista de Objetos de un Formulario
	de Acuerdo a los siguientes parametros:
		pId_Campo - id del Campo del Formulario al cual se le quiere dar el foco
*/
function fCampo(pId_Campo){
	Field.focus(pId_Campo);
	if(Field.present(pId_Campo))
		Field.select(pId_Campo);
}

/*
	Esta Funcion asigna un Valor a un Campo de Texto proporcionando
	los siguientes parametros:
	pId_Sel - Selector es un Obj. Checkbox en su estado puede ser falso o verdadero.
	pId_CmpoSrc - Campo Fuente es el Textbox que contiene el valor a pasar.
	pId_CmpoTrg - Campo Destino es el Textbox que va a recibir el valor.
*/
function asgVal_Campo(pId_Sel, pId_CmpoSrc, pId_CmpoTrg){
	if($(pId_Sel).checked)
		if(Field.present(pId_CmpoSrc)){
			$(pId_CmpoTrg).value = $(pId_CmpoSrc).value;
			$(pId_Sel).checked = true;			
		}else{
			alert("Debe Asignar un Valor");
			$(pId_Sel).checked = false;			
		}
	else
		$(pId_CmpoTrg).value = "";
}

//Limpia Una area determinada la cual incluya una etiqueta id
function clrSubtool(pId){
	$(pId).innerHTML = "";
}

/*
	Nombre: isChecked
	Parametros: Recibe el ID del formulario y el Id de la Colecion de Objetos Check o Radio
	Descripcion: Devuelve Verdadero o Falso si algun objecto de la coleccion esta checado
*/
function isChecked(pId, pObj, pName){
	var vValor = false;
	var aObj = Form.getInputs(pId, pObj);
	aObj.each(
				function(value, index){
					if(aObj[index].checked && aObj[index].id == pName){
						vValor = aObj[index].checked;
						throw $break;
					}
				}
			  )
	return vValor;
}
/*
	Selecciona Todos los Checks de un formulario
	parametros : recibe ID del formulario
*/
function selChkTodo(pId){
	var aChk = Form.getInputs(pId, 'checkbox');
	aChk.each(
				function(value, index){
					if(aChk[0].checked){
						aChk[index].click();
						aChk[0].checked = aChk[index].checked;
					}else{
						aChk[index].click();
						aChk[0].checked = aChk[index].checked;						
					}
				}				
			)
}

/*
	Selecciona Todos los Checks de un formulario
	parametros : recibe ID del formulario
	Nota: Mejora a  la funcion selChkTodo
*/
function selChkAll(pId){
	var aChk = Form.getInputs(pId, 'checkbox');
	aChk.each(
				function(value, index){
					if(aChk[0].checked)
						aChk[index].checked = aChk[0].checked;
					else
						aChk[index].checked = aChk[0].checked;
				}				
			)
}

/*
	Nombre: selChkAllAs()
	Parametros: Recibe el ID del formulario y nombre sin indice del objeto Asociado
	Descripción: Habilita o Inhabilita el objeto asociado al check en cuestion
*/
function selChkAllAs(pId, objAsoc){
	var ind = 0;
	var aChk = Form.getInputs(pId, 'checkbox');
	var aObj = Form.getInputs(pId, objAsoc);
	aChk.each(
				function(value, index){
					if(aChk[0].checked){
						aChk[index].checked = aChk[0].checked;
						$(aObj[index].id).enable();
					}else{
						aChk[index].checked = aChk[0].checked;
						$(aObj[index].id).disable();					
					}
				}				
			)
}

/*
	Nombre : getValorObj
	Descripcion: Esta Funcion devuelve el valor de Objetos  como Check's o Radio's
	Modo de Uso: recibe como parametros el id del formulario y el tipo de objeto que debe buscar
				que puede ser 2 valores 'radio' o 'checkbox'.
	Sintaxis:
				getValorObj('idform', 'radio|checkbox')
*/
function getValorObj(pId , pObj){
	var vValor = null;
	var aRdio = Form.getInputs(pId, pObj);
	aRdio.each(
				function(value, index){
					if(aRdio[index].checked)
						vValor = aRdio[index].value;
				}
			  )
	return vValor;
}

/*
	Nombre : getValorObjByName
	Descripcion: Esta Funcion devuelve el valor de Objetos  como Check's o Radio's pero
				de acuerdo a su id especifico del objeto a buscar.
	Modo de Uso: recibe como parametros el id del formulario, el tipo de objeto que debe buscar
				que puede ser 2 valores 'radio' o 'checkbox' y el id del objeto.
				Nota. Este se puede emplear cuando se tiene grupo objetos (radio's, check's) dentro
				del mismo formulario pero que guardan valores distintos.
	Sintaxis:
				getValorObjByName('idform', 'radio|checkbox', 'idObj')
*/
function getValorObjByName(pId, pObj, pName){
	var vValor = null;
	var aObj = Form.getInputs(pId, pObj);
	aObj.each(
				function(value, index){
					if(aObj[index].checked && aObj[index].id == pName)
						vValor = aObj[index].value;
				}
			  )
	return vValor;
}

/*
	Nombre : setValorObjByName
	Descripcion: Esta Funcion cambia el valor de Objetos  como Check's o Radio's
	Modo de Uso: recibe como parametros el id del formulario, el tipo de objeto que debe buscar
				que puede ser 2 valores 'radio' o 'checkbox', el id del objeto y el Valor que debe
				ser checado.
	Sintaxis:
				setValorObjByName('idform', 'radio|checkbox', 'idObj', 'valor')
*/
function setValorObjByName(pId, pObj, pName, pValor){
	var aObj_Orig = Form.getInputs(pId, pObj);
	aObj_Orig.each(
				   function(value, index){
					   if(aObj_Orig[index].id == pName && aObj_Orig[index].value == pValor)
							aObj_Orig[index].checked = true;
				   }
				  )
}

/*
	Nombre : valUnCheckBox
	Descripcion: Esta Funcion Valida que solo un CheckBox Haya sido Seleccionado
	Modo de Uso: recibe como parametros el id del formulario y el id del elemento
				que se quiere validar.
	Sintaxis:
				valUnCheckBox('idform', 'idElem')
	Valor Devuelto:
				un alert con un mensaje preventivo y el valor logico false o true
*/
function valUnCheckBox(pId, pName){
	var vNum_Rg = 0;
	var aObj_Org = Form.getInputs(pId, "checkbox", pName);
	aObj_Org.each(
				  function(value, index){
						if(aObj_Org[index].checked)
							vNum_Rg ++;
				  }
				 )

	if(vNum_Rg > 1){
		alert("Solo Puede Seleccionar un Elemento");
		return false;
	}else return true;
}

//Habilita textBox para los Movimientos de Prestamo, Entrega
function enaDatoAdic(pId, pObjTxt, pVisibility){
		$(pId).style.visibility = pVisibility;
		
	Field.focus(pObjTxt);
}

/*
	Nombre : isNull
	Descripcion: Devuelve un valor determinado por default en caso de que el valor de la variable sea Nulo.
	Modo de Uso: recibe dos parametros el primero la variable que se va evaluar, y el valor que se requiere 
					sea devuelto.
	Sintaxis:
				isNull('nombreVariable', 'valor por default')
*/
function isNull(pValor, pValorDfault){
	if(pValor == null)
		pValor = pValorDfault;
return pValor
}

/*
	Nombre : loadPagina
	Descripcion: Realiza la Peticion de una pagina al Servidor mediante Ajax
	Modo de Uso: Recibe la 'Url' de la pagina solicitada, el 'Id' del elemento donde se cargará el contenido
					'pParam' los parametros enviados a la url o comillas vacias
*/
function loadPagina(pUrl, pElemId, pParam){
	var vParam = "?kh="+Math.random();

	if(pParam != "")
		vParam = pParam + "&kh="+Math.random();
	
	var peticion = new Ajax.Request(
		pUrl, 
		{
			method: "post",
			parameters: vParam,
			onFailure: function(){
				$(pElemId).innerHTML = respuesta.responseText;
			},
			onStateChange: 
		 		$(pElemId).innerHTML = "<div style=\"text-align:center\"><img src=\"../images/ajax-loader_bar_only.gif\" /><br><font class='TextoAzul'>Procesando Peticion...Espere</font></div>",			
			onComplete: function(respuesta){
				if(respuesta.status == 200)
				{
					
					$(pElemId).innerHTML = respuesta.responseText;
				}
				else
					$(pElemId).innerHTML = respuesta.statusText;				
			}
		}
	);	
}

function ajaxPage(pUrl, pElemId, pParam){
	var vParam = "?kh="+Math.random();

	if(pParam != "")
		vParam = pParam + "&kh="+Math.random();
	
	var peticion = new Ajax.Request(
		pUrl, 
		{
			method: "get",
			parameters: vParam,
			onFailure: function(){
				$(pElemId).innerHTML = "error"; //respuesta.responseText;
			},
			onComplete: function(respuesta){				
					$(pElemId).innerHTML = respuesta.responseText;
			}
		}
	);	
}


//Validar Login de Usuario
function validar(){
	var ok = true;
	if($("uname").value == ""){
		alert("El Nombre de Usuario no debe estar Vacio");
		$("uname").focus();
		ok = false;
	}else if($("pwd").value == ""){
				alert("La Contraseña del Usuario no debe estar Vacia");
				$("pwd").focus();
		ok = false;
	}
	
return ok;
}

//
function blinDwn(id){
	if(!$(id).visible())
		Effect.BlindDown(id, {duration:0.5});
	else
		Effect.BlindUp(id, {duration:0.5});
}
