/* -----------------------------------------------------------------------------
' (c) Paginar.net 2003      http://paginar.net
' -----------------------------------------------------------------------------
' Nombre   	:	Buscador.js
' Descrip  	:	Conjunto de funciones Javascript utilizadoas para el 
				funcionamiento DHTML del buscador de Datos (buscador.asp)
' Depend	:
' -----------------------------------------------------------------------------
' Versiones :
'	1.0		MDU		@ 23/11/2003
'			Creacion
' -----------------------------------------------------------------------------
' To Do		:   
' ----------------------------------------------------------------------------- */

var formName		= "FormConsulta";
var varList			= "VarList";
var filtersList		= "FiltersListJ"; //para el uso del javascript: solo los ID de variables
var filtersListBusq = "FiltersList"; //para el uso del ASP, formato IDVariable=IDValor,IDVariable=IDValor
	
// Array de Variables del Indicador, cargado dinámicamente desde buscador.asp
var arrVariables		= new Array();
var variableDesplegada	= "";
var templates_path		= "";
var cantVarsDisponibles = 4;


function submitToWindow() {
	openPopupV2("/modulos/statsV1/frontend/verIndicadores.asp?FormEstado=PRE_CONSULTA", "", 750, 600);
}


function SubmitIfValid() {
	var primeraDep			= document.forms[formName].elements["PrimeraDepName"].value;
	var segundaDep			= document.forms[formName].elements["SegundaDepName"].value;
	var terceraDep			= document.forms[formName].elements["TerceraDepName"].value;
	var cuartaDep			= document.forms[formName].elements["CuartaDepName"].value;
	var varsIndependientes	= document.forms[formName].elements[filtersList].value;
	
	var seleccionoPais = false, seleccionoAnio = false;
		
	if (primeraDep == "Pais") {
		seleccionoPais = true; //no muevo el pais, porque se supone que este 1ro
	}else if(segundaDep == "Pais") {
		seleccionoPais = true;
		ReordenarDepData(2, 1); //muevo el pais de la Segunda dependiente a la primera
		
	}else if(terceraDep == "Pais") {
		seleccionoPais = true;
		ReordenarDepData(3, 1); //muevo el pais de la Tercera dependiente a la primera
	}else if(cuartaDep == "Pais") {
		seleccionoPais = true;
		ReordenarDepData(4, 1); //muevo el pais de la Cuarta dependiente a la primera
	}
	if (primeraDep == "Año") {
		seleccionoAnio = true;
	} else if(segundaDep == "Año") {
		seleccionoAnio = true;
		if (!seleccionoPais) {
			ReordenarDepData(2, 1); 
		}
	} else if(terceraDep == "Año") {
		seleccionoAnio = true;
		if (!seleccionoPais) {
			ReordenarDepData(3, 1); 
		}else {
			ReordenarDepData(3, 2); 
		}
	} else if(cuartaDep == "Año") {
		seleccionoAnio = true;
		if (!seleccionoPais) {
			ReordenarDepData(4, 1); 
		}else {
			ReordenarDepData(4, 2); 
		}
	} else if(varsIndependientes.indexOf("Año") != -1) {
		seleccionoAnio = true;
	}
		
	if(varsIndependientes.indexOf("Pais") != -1) {
		seleccionoPais = true;
	}
	
	if(seleccionoPais && seleccionoAnio) {
		//en vez de hacer un setFormEstado habitual, llamo a submitToWindow() porque
		//el resultado debe presentarse en una ventana popup
		submitToWindow();
		//setFormEstado('FormConsulta', 'EXEC_CONSULTA');
	}else {
		alert("Debe seleccionar algún valor para Pais y para Año obligatoriamente");
	}	
	
}


function CheckUnckeckVar(pstrNombreVariable) {
	
	var arrAllValues = document.forms[formName].elements[pstrNombreVariable + '_allValues'].value.split(",");
	
	if (document.forms[formName].elements[pstrNombreVariable].value == "unchecked") { //Check all Values
		
		if (ValidateExtras(pstrNombreVariable)) {
			if (cantVarsDisponibles > 0) {
				for(var x = 0; x < arrAllValues.length; x++) {
					Check(pstrNombreVariable + '_valor_' + arrAllValues[x]);		
				}	
				VerVariables(pstrNombreVariable + "_lyr");
				
			}else {
				alert("Ya no hay variables disponibles");
			}	
		}	
	}else { //Uncheck all Values
	
		for(var x = 0; x < arrAllValues.length; x++) {
			UnCheck(pstrNombreVariable + '_valor_' + arrAllValues[x]);		
		}	
	}
	
	writeSeleccion();
}

function VerVariables(pstrNombreVariable) {
	if (variableDesplegada != "") MM_showHideLayers(variableDesplegada,'','hide');
	MM_showHideLayers(pstrNombreVariable,'','show');
		
	variableDesplegada = pstrNombreVariable;
}

function EsconderVariables(pstrNombreVariable) {
	
	MM_showHideLayers(pstrNombreVariable,'','hide');
}

function getVariableNameFromValorName(pstrValorName) {
	var auxArr		= pstrValorName.split("_");
	var strReturn	= auxArr[0] + "_" + auxArr[1];
	
	return strReturn
}


function getValueIDFromValorName(pstrValorName) {
	var auxArr = pstrValorName.split("_");
	
	return auxArr[3];	
}

function getVariableIDFromVariableName(pstrVariableName) {
	var auxArr = pstrVariableName.split("_");
	
	return auxArr[1];
}



function Check_Uncheck(pstrValorName) {
	
	if (document.forms[formName].elements[pstrValorName].value == "unchecked") { //Check
		
		Check(pstrValorName);
		
	}else { //UnCheck
				
		UnCheck(pstrValorName);
	}
	
	writeSeleccion();
}



function Check(pstrValorName) {
	var VariableName	= getVariableNameFromValorName(pstrValorName);
	var ValueID			= getValueIDFromValorName(pstrValorName);
	
	if (validateCheck(VariableName)) {
		//swap img check valor
		MM_swapImage(pstrValorName + '_chkimg','',templates_path + 'images/checkbox1.gif',1)
		
		//agregar valor a hidden de variable
		AddValue(VariableName, getValueIDFromValorName(pstrValorName));
		
		//marcar el valor como chequeado
		document.forms[formName].elements[pstrValorName].value = "checked"
	}
		
}



function UnCheck(pstrValorName) {
	var VariableName	= getVariableNameFromValorName(pstrValorName);
	var ValueID			= getValueIDFromValorName(pstrValorName);
	
	//swap img check valor
	MM_swapImage(pstrValorName + '_chkimg','',templates_path + 'images/checkbox2.gif',1)
	
	//sacar valor de hidden de variable
	RemoveValue(VariableName, ValueID);
	
	//marcar el valor como no chequeado
	document.forms[formName].elements[pstrValorName].value = "unchecked"

}


function AddValue(pstrVariableName, pValueID) {
	var selectedValues	= pstrVariableName + '_selectedValues';
	var VariableID		= getVariableIDFromVariableName(pstrVariableName);

	// Agregar valueID al hidden
	AddToCSV(selectedValues, pValueID);	
	
	//chequear cuantos valores quedan para la variable
	switch(getCantVars(selectedValues)) {
		case 1:
			//si es uno, swapear la imgchk de la variable y agregar a filters list
			MM_swapImage(pstrVariableName + '_chkimg_O','',templates_path + 'images/checkbox1.gif',1)
			MM_swapImage(pstrVariableName + '_chkimg_C','',templates_path + 'images/checkbox1.gif',1)
			document.forms[formName].elements[pstrVariableName].value = "checked"
			AddToCSV(filtersList, VariableID);
			AddToCSV(filtersListBusq, VariableID + "=" + pValueID);
			break;
		case 2:
			//si es dos, sacar del filters list, agregar como variable, y decrementar variables disponibles 
			RemoveFromCSV(filtersList, VariableID);
			var valueAnterior = document.forms[formName].elements[selectedValues].value.slice(0,document.forms[formName].elements[selectedValues].value.indexOf(","));
			RemoveFromCSV(filtersListBusq, VariableID + "=" + valueAnterior);
			AddToCSV(varList, VariableID);	
			AddDepData(VariableID);
			ActDepData(VariableID)
			--cantVarsDisponibles;
			break;
		default:
			ActDepData(VariableID);
			break;	
	}	

}


function RemoveValue(pstrVariableName, pValueID) {
	var selectedValues = pstrVariableName + '_selectedValues';
	var VariableID		= getVariableIDFromVariableName(pstrVariableName);
			
	// sacar valueID al hidden
	RemoveFromCSV(selectedValues, pValueID);
	
	//chequear cuantos valores quedan para la variable
	
	switch(getCantVars(selectedValues)) {
		case 0:	
			//si hay 0, swapear la imgchk de la variable, y sacar del filters list
			MM_swapImage(pstrVariableName + '_chkimg_C','',templates_path + 'images/checkbox2.gif',1);
			MM_swapImage(pstrVariableName + '_chkimg_O','',templates_path + 'images/checkbox2.gif',1);
			document.forms[formName].elements[pstrVariableName].value = "unchecked"
			RemoveFromCSV(filtersList, VariableID);
			RemoveFromCSV(filtersListBusq, VariableID + "=" + pValueID);
			break;
		case 1:
			//si hay uno, incrementar la cantidad de variables disponibles y agregar a filters list
			RemoveFromCSV(varList, VariableID);
			RemoveDepData(VariableID);
			AddToCSV(filtersList, VariableID);
			AddToCSV(filtersListBusq, VariableID + "=" + document.forms[formName].elements[selectedValues].value);
			++cantVarsDisponibles;
			break;
		default:
			ActDepData(VariableID);
			break;	
	}
	

}


function AddToCSV(pElement, pValue) {
	
	if (!existsInCSV(formName, pElement, pValue)) { 
		if (document.forms[formName].elements[pElement].value == "") {
			document.forms[formName].elements[pElement].value = pValue;
		}else {
			document.forms[formName].elements[pElement].value += "," + pValue;
		}
	}	
}	


function RemoveFromCSV(pElement, pValue) {
	var auxArr = document.forms[formName].elements[pElement].value.split(",");
	var strRes = ""
	
	for(var x = 0; x <= auxArr.length; x++) {
		if (auxArr[x] != pValue && auxArr[x] != undefined) {
			if (strRes == "") {
				strRes = auxArr[x];
			}else {
				strRes = strRes + "," + auxArr[x];
			}
		}
	}
	document.forms[formName].elements[pElement].value = strRes;
}

function getCantVars(pElement) {
	
	if (document.forms[formName].elements[pElement].value != "") {
		var auxArr = document.forms[formName].elements[pElement].value.split(",");

		return auxArr.length;
	}else {
		return 0;
	}	
}

function validateCheck(pVariableName) {

	if (ValidateExtras(pVariableName)) {
		if ((cantVarsDisponibles == 0) && (getCantVars(pVariableName + "_selectedValues") == 1)) {
			alert("Ya no hay variables disponibles");
			return false;
		}else {
			return true;
		}
	} else {
		return false;
	}		
}


function RemoveDepData(VariableID) {

	if (VariableID == document.forms[formName].elements["CuartaDepName"].value) {
		document.forms[formName].elements["CuartaDepName"].value	= "";
		document.forms[formName].elements["CuartaDepValues"].value	= "";
	
	}else if (VariableID == document.forms[formName].elements["TerceraDepName"].value) {
		document.forms[formName].elements["TerceraDepName"].value	= document.forms[formName].elements["CuartaDepName"].value;
		document.forms[formName].elements["TerceraDepValues"].value	= document.forms[formName].elements["CuartaDepValues"].value;
		document.forms[formName].elements["CuartaDepName"].value	= "";
		document.forms[formName].elements["CuartaDepValues"].value	= "";
		
	}else if (VariableID == document.forms[formName].elements["SegundaDepName"].value) {
		document.forms[formName].elements["SegundaDepName"].value	= document.forms[formName].elements["TerceraDepName"].value;
		document.forms[formName].elements["SegundaDepValues"].value	= document.forms[formName].elements["TerceraDepValues"].value;
		document.forms[formName].elements["TerceraDepName"].value	= document.forms[formName].elements["CuartaDepName"].value;
		document.forms[formName].elements["TerceraDepValues"].value	= document.forms[formName].elements["CuartaDepValues"].value;
		document.forms[formName].elements["CuartaDepName"].value	= "";
		document.forms[formName].elements["CuartaDepValues"].value	= "";
	
	}else if (VariableID == document.forms[formName].elements["PrimeraDepName"].value) {
		document.forms[formName].elements["PrimeraDepName"].value	= document.forms[formName].elements["SegundaDepName"].value;
		document.forms[formName].elements["PrimeraDepValues"].value	= document.forms[formName].elements["SegundaDepValues"].value;
		document.forms[formName].elements["SegundaDepValues"].value	= document.forms[formName].elements["TerceraDepValues"].value;
		document.forms[formName].elements["TerceraDepName"].value	= document.forms[formName].elements["CuartaDepName"].value;
		document.forms[formName].elements["TerceraDepValues"].value	= document.forms[formName].elements["CuartaDepValues"].value;
		document.forms[formName].elements["CuartaDepName"].value	= "";
		document.forms[formName].elements["CuartaDepValues"].value	= "";
	}

}



function ReordenarDepData(DepOrdenActual, DepOrdenNuevo) {
	var auxName, auxValues;
	
	switch (DepOrdenActual) {
		case 2:
			if (DepOrdenNuevo == 1) {
				auxName		= document.forms[formName].elements["SegundaDepName"].value
				auxValues	= document.forms[formName].elements["SegundaDepValues"].value
				
				document.forms[formName].elements["SegundaDepName"].value   = document.forms[formName].elements["PrimeraDepName"].value;
				document.forms[formName].elements["SegundaDepValues"].value = document.forms[formName].elements["PrimeraDepValues"].value;
				document.forms[formName].elements["PrimeraDepName"].value	= auxName;
				document.forms[formName].elements["PrimeraDepValues"].value	= auxValues;
			}
			break;
		case 3:
			
			switch (DepOrdenNuevo) {
				case 1:
					auxName		= document.forms[formName].elements["TerceraDepName"].value;
					auxValues	= document.forms[formName].elements["TerceraDepValues"].value;
					
					document.forms[formName].elements["TerceraDepName"].value	= document.forms[formName].elements["SegundaDepName"].value;
					document.forms[formName].elements["TerceraDepValues"].value	= document.forms[formName].elements["SegundaDepValues"].value;
					document.forms[formName].elements["SegundaDepName"].value   = document.forms[formName].elements["PrimeraDepName"].value;
					document.forms[formName].elements["SegundaDepValues"].value = document.forms[formName].elements["PrimeraDepValues"].value;
					document.forms[formName].elements["PrimeraDepName"].value	= auxName;
					document.forms[formName].elements["PrimeraDepValues"].value	= auxValues;
					
					break;	
				case 2:
					auxName		= document.forms[formName].elements["TerceraDepName"].value;
					auxValues	= document.forms[formName].elements["TerceraDepValues"].value;
					
					document.forms[formName].elements["TerceraDepName"].value	= document.forms[formName].elements["SegundaDepName"].value;
					document.forms[formName].elements["TerceraDepValues"].value	= document.forms[formName].elements["SegundaDepValues"].value;
					document.forms[formName].elements["SegundaDepName"].value   = auxName;
					document.forms[formName].elements["SegundaDepValues"].value = auxValues;
					
					break;
			}
			break;
		case 4:
			switch (DepOrdenNuevo) {
				case 1:
					auxName		= document.forms[formName].elements["CuartaDepName"].value;
					auxValues	= document.forms[formName].elements["CuartaDepValues"].value;
					
					document.forms[formName].elements["CuartaDepName"].value	= document.forms[formName].elements["TerceraDepName"].value;
					document.forms[formName].elements["CuartaDepValues"].value	= document.forms[formName].elements["TerceraDepValues"].value;
					document.forms[formName].elements["TerceraDepName"].value	= document.forms[formName].elements["SegundaDepName"].value;
					document.forms[formName].elements["TerceraDepValues"].value	= document.forms[formName].elements["SegundaDepValues"].value;
					document.forms[formName].elements["SegundaDepName"].value   = document.forms[formName].elements["PrimeraDepName"].value;
					document.forms[formName].elements["SegundaDepValues"].value = document.forms[formName].elements["PrimeraDepValues"].value;
					document.forms[formName].elements["PrimeraDepName"].value	= auxName;
					document.forms[formName].elements["PrimeraDepValues"].value	= auxValues;								
					break;	
				case 2:
					auxName		= document.forms[formName].elements["CuartaDepName"].value;
					auxValues	= document.forms[formName].elements["CuartaDepValues"].value;
					
					document.forms[formName].elements["CuartaDepName"].value	= document.forms[formName].elements["TerceraDepName"].value;
					document.forms[formName].elements["CuartaDepValues"].value	= document.forms[formName].elements["TerceraDepValues"].value;
					document.forms[formName].elements["TerceraDepName"].value	= document.forms[formName].elements["SegundaDepName"].value;
					document.forms[formName].elements["TerceraDepValues"].value	= document.forms[formName].elements["SegundaDepValues"].value;
					document.forms[formName].elements["SegundaDepName"].value   = auxName;
					document.forms[formName].elements["SegundaDepValues"].value = auxValues;
					break;
			}			
			break;
	}

}

function AddDepData(VariableID){
	
	switch(cantVarsDisponibles) {
		case 4:	
			document.forms[formName].elements["PrimeraDepName"].value = VariableID;			
			break;
		case 3:	
			document.forms[formName].elements["SegundaDepName"].value = VariableID;
			break;	
		case 2:	
			document.forms[formName].elements["TerceraDepName"].value = VariableID;
			break;	
		case 1:
			document.forms[formName].elements["CuartaDepName"].value = VariableID;
			break;	
	}		
}


function ActDepData(VariableID){
	var values = document.forms[formName].elements["var_" + VariableID + "_selectedValues"].value;

	if (VariableID == document.forms[formName].elements["CuartaDepName"].value) {
		document.forms[formName].elements["CuartaDepValues"].value	= values;
	
	}else if (VariableID == document.forms[formName].elements["TerceraDepName"].value) {
		document.forms[formName].elements["TerceraDepValues"].value	= values;
		
	}else if (VariableID == document.forms[formName].elements["SegundaDepName"].value) {
		document.forms[formName].elements["SegundaDepValues"].value	= values;
	
	}else if (VariableID == document.forms[formName].elements["PrimeraDepName"].value) {
		document.forms[formName].elements["PrimeraDepValues"].value	= values;
	}
}


function writeSeleccion() {
	var tablaResTop = "<table width='475' border='0' cellspacing='0' cellpadding='0' bgcolor='#E7EDED'>" +
				      "<tr>\n<td width='10' rowspan=2>&nbsp;</td>\n<td class='linkchi'><b>LOS CRITERIOS SELECCIONADOS SON:</b><br><br></td></tr>"
	
	var tablaResCriterios = "";
	var nombreVariable = "";
	var valorIDVariable = "";
	var descripValor = "";
	
	//agrego dependientes
	var arrAux		= document.forms[formName].elements[varList].value.split(",");
	var arrValores;
	
	for (var x= 0;x < arrAux.length;x++) {
		if (arrAux[x] != "" && arrAux[x] != undefined && arrAux[x] != null) {
			nombreVariable	= document.forms[formName].elements["var_" + arrAux[x] + "_descrip"].value;
			arrValores		= document.forms[formName].elements["var_" + arrAux[x] + "_selectedValues"].value.split(",");	
			for (var y= 0;y < arrValores.length;y++) {
				valorIDVariable	= arrValores[y];
				if (y == 0) {
					descripValor	= document.forms[formName].elements["var_" + arrAux[x] + "_valor_" + valorIDVariable + "_descrip"].value;
				}else{
					descripValor	= descripValor + ", " + document.forms[formName].elements["var_" + arrAux[x] + "_valor_" + valorIDVariable + "_descrip"].value;
				}	
			}
		
			tablaResCriterios = tablaResCriterios + "<B>" + nombreVariable + "</b>" + ": " + descripValor + "<br>";
		}
		
	}
	
	var arrAux = document.forms[formName].elements[filtersList].value.split(",");
	
	//agrego variables independientes
	for (var x= 0;x < arrAux.length;x++) {
		if (arrAux[x] != "" && arrAux[x] != undefined && arrAux[x] != null) {
			nombreVariable	= document.forms[formName].elements["var_" + arrAux[x] + "_descrip"].value;
			valorIDVariable	= document.forms[formName].elements["var_" + arrAux[x] + "_selectedValues"].value;
			descripValor	= document.forms[formName].elements["var_" + arrAux[x] + "_valor_" + valorIDVariable + "_descrip"].value;
		
			tablaResCriterios = tablaResCriterios + "<B>" + nombreVariable + "</b>" + ": " + descripValor + "<br>";
		}
	}

	
	
	var tablaResBottom = "<tr><td class='linkchi'>" + tablaResCriterios + "</td>\n</tr></table>"
	
	WriteLayer("variablesDisponibles", "[" + cantVarsDisponibles + " de 4]");
	
	WriteLayer("criterios", tablaResTop + tablaResBottom);

}


function WriteLayer(ID, sText) { 
	if (document.layers) { 
		var oLayer; 
		if(parentID){ 
			oLayer = eval('document.' + parentID + '.document.' + ID + '.document'); 
		}else{ 
			oLayer = document.layers[ID].document; 
		} 
		oLayer.open(); 
		oLayer.write(sText); 
		oLayer.close(); 
	} else if (parseInt(navigator.appVersion)>=5&&navigator.appName=="Netscape") { 
		document.getElementById(ID).innerHTML = sText; 
	} else if (document.all) document.all[ID].innerHTML = sText 
} 


function ValidateExtras(pVariableName) {
	
	if (pVariableName == "var_ClimaEducativo") {
		if (getCantVars("var_NivelIngresos_selectedValues") > 0) {
			alert("No puede seleccionar las variables Nivel de Ingresos y Clima Educativo simultáneamente.");
			return false;
		}else {
			return true;
		}	
	}else if (pVariableName == "var_NivelIngresos") {
		if (getCantVars("var_ClimaEducativo_selectedValues") > 0) {
			alert("No puede seleccionar las variables Nivel de Ingresos y Clima Educativo simultáneamente.");
			return false;
		}else {
			return true;
		}	
	} else {
		return true
	}

}


function existsInCSV(pFormName, pCSVList, pValue) {
	
	if (document.forms[pFormName].elements[pCSVList].value != "") {
		var auxArr = document.forms[pFormName].elements[pCSVList].value.split(",");
		for(var x = 0; x <= auxArr.length; x++) {
			if (auxArr[x] == pValue) return true;
		}
	}
	return false;
}