//javascript

var nextLoadedArr = new Array();
//nextLoadedArr["idEscuela"]=new Array("idDepartamento","idAula");
//nextLoadedArr["idDepartamento"]="idAcademia"
//nextLoadedArr["idAcademia"]= new Array("idAsignatura","iFolioPeriodo");

var nextMethodArr = new Array();
//nextMethodArr["idAsignatura_actividades"] = "loadSelect(getObj('idAcademia').value,'iFolioPeriodo','actividades')";
function loadSelect(value,loadedId,src)
{
	resetDivs(loadedId,src);
	if(value!=""&&value>0)
	{
		params = "module=loadSelect&function=catalogos&value="+value+"&loadedId="+loadedId+"&src="+src;	
		getObj("container"+loadedId).innerHTML = "Cargando..."
		var nextMethod ="";
		
		if(nextMethodArr[loadedId+"_"+src]!=null)
		{
			//alert(typeof nextMethodArr[loadedId+"_"+src])
			nextMethod =nextMethodArr[loadedId+"_"+src];
		}
		//userAjax.getResponse(params,null,"loadHTML('divContenedorDeRequisitos')");
		userAjax.getNewResponse("../php/ajaxControl.php","get",params,"container"+loadedId,nextMethod);
	}
}
function showMousePositioned(id,dX,dY)
{	
	//cX y cY necesitan estar definidos en el documento	
	var div = getObj(id);
	div.style.left = (cX*1+dX*1)+"px"
	div.style.top = (cY*1+dY*1)+"px"
	if((cX*1+dX*1)<0)
		div.style.left ="0px"
	
	show(id)
}
//funcion exclusiva para campos datetime que copia en un hidden input la fecha, hora, minuto,segundo concatenados
function copyDateTime(id)
{
	var fecha = trim(getObj("fecha_"+id).value);
	var hora = getObj("hora_"+id).value;
	var minuto = getObj("minuto_"+id).value;
	if(fecha!="")
	{	//30-01-2008
		getObj(id).value = fecha+" "+hora+":"+minuto+":00";	
	}else
		getObj(id).value ="";	
	//alert(getObj(id).value+"------fecha:"+fecha+". Hora:"+hora+".Minuto: "+minuto)

}

function resetDivs(loadedId,src)
{
	switch(src)
	{
/*
		case "actividadesProfesores":
				getObj("containeridAula").innerHTML = "Selecciona una escuela primero...";
			break;
		case "actividades":
			if(getObj(loadedId)!=null)
			{				
				if((typeof nextLoadedArr[loadedId])!="string"&&(typeof nextLoadedArr[loadedId])!="undefined")
				{
					var i =0;
					
					while(nextLoadedArr[loadedId][i]!=null)
					{
						resetDivs(nextLoadedArr[loadedId][i],src);
						i++;	
					}
				}
				else
				{					
					resetDivs(nextLoadedArr[loadedId],src);
				}
				switch(loadedId)
				{
					case "idDepartamento":
						getObj("containeridDepartamento").innerHTML = "Selecciona una escuela primero...";
						break;
					case "idAcademia":
						getObj("containeridAcademia").innerHTML = "Selecciona un departamento primero...";
						break;	
					case "idAsignatura":
						getObj("containeridAsignatura").innerHTML = "Selecciona una academia primero...";
						break;
					case "iFolioPeriodo":
						getObj("containeriFolioPeriodo").innerHTML = "Selecciona una academia primero...";
						break;	
						
				}
			}
			break;
*/
	}
}

function changeToError()
{
	getObj("alert").innerHTML = "<table border='0'  width='100%' cellpadding='0' cellspacing='1'>						<td height='20'>							<table border='0' class='error' width='100%' cellpadding='0' cellspacing='0'>								<td height='20' align='center'>Favor de completar los campos								</td>							</table>						</td>					</table>";	
}
function checkAll(id,status)
{
	for(i=0;true;i++)
	{
		if(getObj(id+"_"+i)!=null)
		{
			getObj(id+"_"+i).checked = status;
		}	
		else
			break;
	}

}
function searchStudent(matricula,loadV,e) {
	var searchAjax = true
	if(e!="nada")//If a key was pressed
	{
		//Check which key was pressesd
			/*
		keys:
			13 Enter
			37 Arrow left
			38 Arrow up
			39 Arrow right	
			40 Arrow Down
		*/
		var keyCode = checkKey(e);
		if(keyCode==13||keyCode==37||keyCode==38||keyCode==39||keyCode==40)//If it is an arrow or enter key
		{
			searchAjax = false;
		}
		if(!(keyCode==37||keyCode==38||keyCode==39||keyCode==40)&&getObj("btnGuardar")!=null)//If it is an arrow, don't disable
			getObj("btnGuardar").disabled = "true"
	
	}
	if(searchAjax)
	{		
		var extra = "";
		if(loadV=="load")
			extra = "&load=true";
		if(matricula.length >= 3) {
				var params = "function=catalogos&module=searchStudent&sMatricula="+matricula+extra;
				userAjax.getNewResponse("../php/ajaxControl.php","get",params,"chooseTable","");
		} else {
			document.getElementById("chooseTable").innerHTML = "";
		}
	
	}
	else {
		keyMovementAlumno(e,loadV)
	}
}
function keyMovementAlumno(e,loadV)
{
	/*
	keys:
		13 Enter
		38 Arrow up
		40 Arrow Down
	*/
	var keyCode = checkKey(e);
	if(getObj("currentSelected")!=null)
	{
		var current = getObj("currentSelected").value;
		var previous = -1;
		var next = -1;
		if(getObj("previous_"+current)!=null)
			previous = getObj("previous_"+current).value;
		if(getObj("next_"+current)!=null)	
		next = getObj("next_"+current).value; 
		var sMatricula = getObj("sMatricula_"+current).value
		//alert("Current: "+current+". Matricula: "+sMatricula+". Previous:"+previous+". Next: "+next)
		switch(keyCode)
		{
			case 13://ENTER
				getObj("sMatricula").value = sMatricula;
				getObj("idAlumno").value = current
				if(loadV==0)
				{					
					nombre    = getObj("sNombre_"+current).value;				
					correo    = getObj("sCorreoAlterno_"+current).value;	   
					getObj("studentDetails").innerHTML = "Nombre: "+nombre+" Correo alterno: "+correo+"<br>  ";
					resize();
					focusProcess();					
				}
				else
				{
					//cargaSolicitudes();	
				}
				if(getObj("btnGuardar")!=null)
						getObj("btnGuardar").disabled=false;
				getObj("chooseTable").innerHTML = "";
				break;
			case 38: //Arrow up
				if(previous>0)//If there exists a previous element
				{
					//Select Previous
					getObj("selectingTd_"+previous).className = getObj("selectingTd_"+current).className;
					//Unselect Current	
					getObj("selectingTd_"+current).className = "";
					
					//Set current to previous
					getObj("currentSelected").value = previous;
				}
				break;
			case 40: //Arrow down
				if(next>0)//If there exists a next element
				{
					//Select next
					getObj("selectingTd_"+next).className = getObj("selectingTd_"+current).className;
					//Unselect Current	
					getObj("selectingTd_"+current).className = "";
					
					//Set current to next
					getObj("currentSelected").value = next;
				}
				break;
		}
	}
}
function searchSpSelect(id,value,requiredFields,e,procedure)
{

	var searchAjax = true;	
	if(e!="nada")//If a key was pressed
	{
		//Check which key was pressed
			/*
		keys:
			13 Enter
			37 Arrow left
			38 Arrow up
			39 Arrow right	
			40 Arrow Down
		*/

		var keyCode = checkKey(e);
		if(keyCode==13||keyCode==37||keyCode==38||keyCode==39||keyCode==40)//If it is an arrow or enter key
		{
			searchAjax = false;
		}
		if(!(keyCode==37||keyCode==38||keyCode==39||keyCode==40)&&getObj("sBtn")!=null)//If it is an arrow, don't disable
			getObj("sBtn").disabled = "true";
		
	}
	if(searchAjax)
	{		
		//alert(id+value+requiredFields+procedure);
		var extra = "";
		if(requiredFields!=""&&requiredFields!="none")
		{
			var req = new Array();
			req = requiredFields.split("-");
			//Obtener parametros adicionales en caso de ser necesario
			
			for(var i = 0;i<req.length;i++){
			  //bar[i] = bar[i].split("@");
			  if(getObj(req[i])!=null)
				  extra += "&"+req[i]+"="+getObj(req[i]).value;
			  else
			  	extra += "&"+req[i]+"=0";
			}		
		}
		if(value.length >= 3) {
				var params = "function=catalogos&module=searchSpSelect&requiredFields="+requiredFields+"&procedure="+procedure+"&id="+id+"&value="+value+extra;
				userAjax.getNewResponse("../php/ajaxControl.php","get",params,"chooseTable_"+id,"");
		} else {
			document.getElementById("chooseTable_"+id).innerHTML = "";
			var val = trim(value);
			if(val.length==0)
				getObj(id).value ="";
		}
	
	}
	else 
	{
		spKeyMovement(id,value,requiredFields,e,procedure)
	}
}
function spKeyMovement(id,value,requiredFields,e,procedure)
{
		/*
	keys:
		13 Enter
		38 Arrow up
		40 Arrow Down
	*/
	var keyCode = checkKey(e);
	
	if(getObj("currentSelected_"+id)!=null)
	{
		var current = getObj("currentSelected_"+id).value;
		var previous = -1;
		var next = -1;
		if(getObj("previous_"+id+"_"+current)!=null)
			previous = getObj("previous_"+id+"_"+current).value;
		if(getObj("next_"+id+"_"+current)!=null)	
		next = getObj("next_"+id+"_"+current).value; 
		var display = getObj("display_"+id+"_"+current).value
		//alert("Current: "+current+". display: "+display+". Previous:"+previous+". Next: "+next)
		switch(keyCode)
		{
			case 13://ENTER
				getObj("sp_"+id).value = display;
				getObj(id).value = current
				if(procedure=="jaja")
				{										
				}				
				if(getObj("sBtn")!=null)
						getObj("sBtn").disabled=false;
				getObj("chooseTable_"+id).innerHTML = "";
				break;
			case 38: //Arrow up
				if(previous>0)//If there exists a previous element
				{
					//Select Previous
					getObj("selectingTd_"+id+"_"+previous).className = getObj("selectingTd_"+id+"_"+current).className;
					//Unselect Current	
					getObj("selectingTd_"+id+"_"+current).className = "";
					
					//Set current to previous
					getObj("currentSelected_"+id).value = previous;
				}
				break;
			case 40: //Arrow down
				if(next>0)//If there exists a next element
				{
					//Select next
					getObj("selectingTd_"+id+"_"+next).className = getObj("selectingTd_"+id+"_"+current).className;
					//Unselect Current	
					getObj("selectingTd_"+id+"_"+current).className = "";
					
					//Set current to next
					getObj("currentSelected_"+id).value = next;
				}
				break;
		}
	}
}
function checkKey(e){ //e is event object passed from function invocation
	var characterCode //literal character code will be stored in this variable
	if(e && e.which){ //if which property of event object is supported (NN4)
		e = e
		characterCode = e.which //character code is contained in NN4's which property
	}
	else{
		e = event
		characterCode = e.keyCode //character code is contained in IE's keyCode property
	}
	return characterCode;
}
function showHideNew()
{
	resizeVerticalAnimated("newElementContainer","newElementInner",20,20);	
}
function resizeVerticalAnimated(container,element,numberOfFrames,minHeight)
{
if(getObj("mode").value!=1)//Si no es modo update
	if(resizing==0)//controlar que solo se pueda resizear 1 a la vez
	{
		resizing =1;
		if(resized==0)
			getObj(element).style.visibility = "visible";
		animateResize(container,element,numberOfFrames,0,minHeight);
	}
}
function animateResize(containert,divName,numberOfFrames,iterationNum,minHeight)
{
	//alert(iterationNum)
	//checar el iteration num
	var container = getObj(containert);
	var inner= getObj(divName);
	var heightMax = inner.offsetHeight+40;
	var height = Math.floor((heightMax/numberOfFrames)*iterationNum)+minHeight;
	if(resized==1)//Si se esta contrayendo
	{
		height = heightMax-height;
		if(height<minHeight)
			height=minHeight;
	}
	else //si se esta expandiendo
	{
		if(height>heightMax)
			height=heightMax;
	}
	
	iterationNum++;

	if(iterationNum<numberOfFrames)
	{
		container.style.height = height+"px";
//		alert("animateResize('"+containert+"','"+divName+"',"+numberOfFrames+","+iterationNum+","+minHeight+")"); 

		setTimeout(function(){
			animateResize(containert,divName,numberOfFrames,iterationNum,minHeight)
							}
							,10)				
		
	//	setTimeout("animateResize('"+containert+"','"+divName+"',"+numberOfFrames+","+iterationNum+","+minHeight+")",10); 
	}
	else
	{
		if(resized==0)//Si se estaba expandiendo
			container.style.height = heightMax+"px";
		else//se estaba contrayendo
			container.style.height = minHeight+"px";
		resizing=0;
		if(resized==0)
		{
			resized=1;
		if(getObj("catalogo").value==13)
		{
			if(!getObj("sMatricula").disabled)
			getObj("sMatricula").focus();	
		}
		}
		else
		{
			resized=0;
			inner.style.visibility = "hidden";	
		}
	}
}
var resizing = 0;
var resizingExcel = 0;
var resized=0;//0 significa que esta colapsado, 1 signigica que esta expandido
var resizedExcel=0;//0 significa que esta colapsado, 1 signigica que esta expandido
function animateResizeExcel(containert,divName,numberOfFrames,iterationNum,minHeight)
{
	//alert(iterationNum)
	//checar el iteration num
	var container = getObj(containert);
	var inner= getObj(divName);
	var heightMax = inner.offsetHeight+40;
	var height = Math.floor((heightMax/numberOfFrames)*iterationNum)+minHeight;
	if(resizedExcel==1)//Si se esta contrayendo
	{
		height = heightMax-height;
		if(height<minHeight)
			height=minHeight;
	}
	else //si se esta expandiendo
	{
		if(height>heightMax)
			height=heightMax;
	}
	
	iterationNum++;
	if(iterationNum<numberOfFrames)
	{
		container.style.height = height+"px";
		//alert("animateResize('"+containert+"','"+divName+"',"+numberOfFrames+","+iterationNum+","+minHeight+")"); 

		setTimeout("animateResizeExcel('"+containert+"','"+divName+"',"+numberOfFrames+","+iterationNum+","+minHeight+")",20); 
	}
	else
	{
		if(resizedExcel==0)//Si se estaba expandiendo
			container.style.height = heightMax+"px";
		else//se estaba contrayendo
			container.style.height = minHeight+"px";
		resizingExcel=0;
		if(resizedExcel==0)
		{
			resizedExcel=1;
		}
		else
		{
			resizedExcel=0;
			inner.style.visibility = "hidden";	
		}
	}
}
function resizeVerticalAnimatedExcel(container,element,numberOfFrames,minHeight)
{

	if(resizingExcel==0)//controlar que solo se pueda resizear 1 a la vez
	{
		resizingExcel =1;
		if(resizedExcel==0)
			getObj(element).style.visibility = "visible";
		animateResizeExcel(container,element,numberOfFrames,0,minHeight);

	}
}