//<!-- 

var idioma=null;
/**
 * Evalua el formulario
 *
 * @access public
 * @author WebMind
 * @param onload = true | false
 * @param configuraciones  = objeto con todas las configuraciones menos la de guardar
 */
function evaluar_form(onload,configuraciones){
	// puedo pasar un tercer parametro opcional 
	//para setear el FORM a evaluar
	var form="form1";
	if(arguments[2])
		form=arguments[2];
		
	//if(configuraciones.length > 0){
		var elem_repetidos=obtenerRepetidos(form);
		for(conf in configuraciones) 
			if((onload && configuraciones[conf]["onload"]==true) || (!onload && evaluar_condicion(configuraciones[conf])))
				ejecutar_form_configuracion(configuraciones[conf],elem_repetidos,form);
//	}
}
function ejecutar_form_configuracion(conf,elem_repetidos,form){
	
	var oForm= $(form);
	for(accion in conf){
		switch(accion){
			case 'solo_lectura':
				aplicar_solo_lectura(conf[accion],elem_repetidos,oForm);	
			break;
			case 'matematica':
				aplicar_matematica(conf[accion],elem_repetidos);	
			break;
			case 'mostrar':
				if(conf[accion] && conf[accion]!="")
					aplicar_mostrar(conf[accion],elem_repetidos);	
			break;
			case 'estado':
				if(conf[accion] && conf[accion]!="")
					aplicar_estado(conf[accion],elem_repetidos,oForm);	
			break;
			case 'valor_default':
				if(conf[accion] && conf[accion]!="")
					aplicar_valor_default(conf[accion],elem_repetidos,oForm);	
			break;
			case 'valores_posibles':
				
				if(conf[accion] && conf[accion]!=""){
					aplicar_valores_posibles(conf[accion],elem_repetidos,oForm);	
				
				;}
			break;	

		}
	
	} 

}
function evaluar_condicion(conf){
	var condicion=conf["condiciones"];
	var retorno=false; 	
	if(condicion!="" && typeof(condicion)!="undefined"){
			condicion=condicion.gsub("{","$('");
			condicion=condicion.gsub("}","').value");
			eval("if("+condicion+")retorno=true;");
		}
	return retorno;
}

function aplicar_solo_lectura(campos,elem_repetidos,oForm){
	for(campo in campos){
		//alert(campo +" "+campos[campo] );
		if($(campo)){	
			if(campos[campo]){
				$(campo).readOnly="readOnly";
				//$(campo).disable();
				if(elem_repetidos.indexOf(campo)!=-1)				
					aplicar_a_radios("readOnly","readOnly",campo,oForm);	
				
				
				//Form.Element.enable(campo);
			}else{
				if(elem_repetidos.indexOf(campo)!=-1)				
					aplicar_a_radios("readOnly","''",campo,oForm);	
				//$(campo).enable();
				$(campo).readOnly="";
			}		
		}else{
			intentar_campos_check_solo_lectura(campo,campos[campo]);
			
		}
	}
}
function aplicar_estado(campos,elem_repetidos,oForm){
	//alert(Object.toJSON(campos));
	for(campo in campos){
		//alert(campo +" "+campos[campo] );
		
		if($(campo)){	
			if(campos[campo]){
				//Form.Element.disable(campo);
				$(campo).disable();
				if(elem_repetidos.indexOf(campo)!=-1)				
					aplicar_a_radios("disabled","true",campo,oForm);	
				
				
				//Form.Element.enable(campo);
			}else{
				if(elem_repetidos.indexOf(campo)!=-1)				
					aplicar_a_radios("disabled","false",campo,oForm);	
				$(campo).enable();
			}		
		}else{
			intentar_campos_check(campo,campos[campo]);
			
		}
	}
}

function intentar_campos_check_solo_lectura(campo,readOnly){
	var x=0;
	while(1==1){
		x++;
		if($("a"+x+"_"+campo)){
			if(readOnly){
				
				$("a"+x+"_"+campo).readOnly=true;
			}else{
				
				$("a"+x+"_"+campo).readOnly=false;
				
			}
		}else
			break;	
	}

}

function intentar_campos_check(campo,deshabilito){
	var x=0;
	while(1==1){
		x++;
		if($("a"+x+"_"+campo)){
			if(deshabilito)
				Form.Element.disable("a"+x+"_"+campo);
			else
				$("a"+x+"_"+campo).enable();
		}else
			break;	
	}

}
function aplicar_matematica(campos,elem_repetidos){
	//alert(Object.toJSON(campos));
	if(campos!="")
		for(campo in campos){
				var condicion="";
					condicion="$('"+campo+"').value"+"="+campos[campo];
					condicion=condicion.gsub("{","$('");
					condicion=condicion.gsub("}","').value");
					eval(condicion+";");
				
			}
}

function aplicar_mostrar(campos,elem_repetidos){
	
	for(campo in campos){
		var idiomas= new Array("_sp","_en");		
		if($(campo)) {	
			var fila_del_campo=$(campo).parentNode.parentNode;
			muestro = campos[campo];
			//¿HAY IDIOMA SELECCIONADO?
			if(idioma!=null){
				
				var tiene_prefijo=false;
				var campo_prefijo="";
				//¿EL CAMPO QUE ESTOY PROCESANDO, TIENE SUFIJO DE IDIOMAS?
				idiomas.each(function (i){
					//alert(campo.substr(campo.length-3,3)+"=="+i);
					if(campo.substr(campo.length-3,3)==i){
						tiene_prefijo=true;
						campo_prefijo=i;
						}
				});
				//alert(campo +" " +muestro +" "+idioma_filtro);
				// SI TIENE PREFIJO, ¿EL PREFIJO ES = AL IDIOMA SELECCIONADO?
				// en caso de que coincida el idoma_filtro con el sufijo del campo
				//lo muestro, sino lo oculto
				if(tiene_prefijo){
					if(campo_prefijo != "_"+idioma)
						muestro = false;	
					
				}
			}
			if(!muestro){
				fila_del_campo.style.display='none';
				if(elem_repetidos.indexOf(campo)!=-1){// P/RADIOS				
					$("tr_"+campo).style.display='none';
					//fila_del_campo.parentNode.parentNode.style.display='none';
					//alert(fila_del_campo.parentNode +" "+fila_del_campo.parentNode.parentNode);
				}

			}else{

				fila_del_campo.style.display='';
				if(elem_repetidos.indexOf(campo)!=-1)
					fila_del_campo.parentNode.parentNode.style.display='';
			}		
		}else{
			//INTENTA CON CHECKBOX, SI NO LO ENCUENTRA BUSCA DIVS
			if(!intentar_campos_check_mostrar(campo,campos[campo]))
				intentar_div_separador_mostrar(campo,campos[campo]);
		}
	}
}
function intentar_div_separador_mostrar(campo,oculto){
	if($("tr_"+campo)){
		if(oculto)
			$("tr_"+campo).show();	
		else
			$("tr_"+campo).hide();	
		return true;
	}
	if($("div_"+campo)){
		if(oculto)
			$("div_"+campo).show();	
		else
			$("div_"+campo).hide();	
		return true;
	}else
		return false;
}
function intentar_campos_check_mostrar(campo,oculto){
	if($("div_a"+1+"_"+campo)){
		if(oculto)
			Element.show($("div_a"+1+"_"+campo).parentNode.parentNode.parentNode);
		else{
			Element.hide($("div_a"+1+"_"+campo).parentNode.parentNode.parentNode);
		}
		return true;
	}else
		return false;
	
}


function aplicar_a_radios(propiedad,valor,campo,oForm){
	if(propiedad=="readOnly")
		return

	var nombre_form=oForm.id;
		
	eval('var obj=document.'+nombre_form+'.'+campo+';');
	
	for(var x=0; x< obj.length ;x++){
		eval('document.'+nombre_form+'.'+campo+'['+x+'].'+propiedad+'='+valor+';');
	}
}

function obtenerRepetidos(form){
	oForm=$(form);
	var aItems= new Array();
	for(var x=0; x<oForm.elements.length;x++)
		aItems[x]=oForm.elements[x].name;

    var s;
    s = "";
    aItems.sort();
    for (var i = 1; i < aItems.length; i++)
     if (aItems[i] == aItems[i - 1])
      if (s.indexOf(String(aItems[i])) == -1)
       s += "," + String(aItems[i]);
    //alert(s.substr(1, s.length - 1));
	return s.substr(1, s.length - 1).split(",");

   } 
function aplicar_valor_default(campos,elem_repetidos,oForm){
	var nombre_form=oForm.id;
	//SETEO LOS VALORES SEGUN EL TIPO DE CAMPO
	
	for(campo in campos){
		// SI NO EXISTE ES UN CHECKBOX(formato de un campo check= "a1_{campo},a2_{campo}")
		if(!$(campo)){
			var bucle=1;
			//BUCLE PARA IDENTIFICAR TODOS LOS POSIBLES CAMPOS CHECKBOX
			while(bucle!=-1){
				var posible_campo="a"+bucle+"_"+campo;
				
				if($(posible_campo)){
					$(posible_campo).checked=""; // DESTILDO P/QUE SOLO QUEDEN LOS CAMPOS X DEFAULT					
					for(y=0; y< campos[campo].length;y++ ){
						if($(posible_campo).value==campos[campo][y]){
							$(posible_campo).checked="checked";
						}
											
					}
				}else
					break; // NO HA MAS CAMPOS
				bucle++;
			}
		
		}
		
		if($(campo) && $(campo).type=='text' )		
			$(campo).value=campos[campo];
		// APLICA A CAMPO RADIO
		if($(campo) && $(campo).type=='radio' ){		
			eval('var obj=document.'+nombre_form+'.'+campo+';');
			for(y=0; y< campos[campo].length;y++ )
				for(var x=0; x< obj.length ;x++){
					if(obj[x].value==campos[campo][y]){
						obj[x].checked="checked";
						break	;
					}
				}
		}
		// APLICA A CAMPO SELECT (MULTIPLE O NO)	
		if($(campo) && $(campo).type.substr(0,6)=='select' ){
			for(x=0; x< campos[campo].length;x++ ){
				//RECORRO SELECT Y SELECCIONO LOS CAMPOS
				var select=$(campo);
				for(y=0;y < select.length;y++){
					if(select.options[y].value == campos[campo][x] ){
						select.options[y].selected=true;
						break;
					}
						
				}
			}
		}		
	}
	
}
function aplicar_valores_posibles(campos,elem_repetidos,oForm){
	var  nombre_form= oForm.id;
	for(campo in campos){
		// SI NO EXISTE ES UN CHECKBOX
		if(!$(campo)){
			var bucle=1;
			//BUCLE PARA IDENTIFICAR TODOS LOS POSIBLES CAMPOS CHECKBOX
			while(bucle!=-1){
				var posible_campo="a"+bucle+"_"+campo;
				if($(posible_campo)){
					
					$('div_'+posible_campo).hide(); // DESTILDO P/QUE SOLO QUEDEN LOS CAMPOS X DEFAULT					
					for(y=0; y< campos[campo].length;y++ ){
						if($(posible_campo).value==campos[campo][y]){
							//alert('mostrando: div_'+posible_campo);		
							$('div_'+posible_campo).show();
						}
											
					}
				}else
					break; // NO HA MAS CAMPOS
				bucle++;
			}
		
		}
		
		if($(campo) && $(campo).type=='text' )		
			$(campo).show();
		// APLICA A CAMPO RADIO
		if($(campo) && $(campo).type=='radio' ){		
			eval('var obj=document.'+nombre_form+'.'+campo+';');
			var cta=1;
			for(var x=0; x< obj.length ;x++){
					for(y=0; y< campos[campo].length;y++ ){			
						$('div_'+cta+'_'+campo).hide();
						if(obj[x].value.strip()==campos[campo][y].strip()){
							$('div_'+cta+'_'+campo).show();
							break	;
						}
					}
			cta++;
			}
			
			
		}
		// APLICA A CAMPO SELECT (MULTIPLE O NO)	
		if($(campo) && $(campo).type.substr(0,6)=='select' ){
			//RECORRO SELECT Y SELECCIONO LOS CAMPOS
			var select=$(campo);
			for(y=0;y < select.length;y++){
				for(x=0; x< campos[campo].length;x++ ){
					select.options[y].hide();
					if(select.options[y].text==campos[campo][x]){
						select.options[y].show();
						break;
					}
					
				}

			}		
		}
	
	}
}
//-->
