//TODO: Anexar todo lo necesario para funciones de Formulario
   
   
    function loseFocus(element, e) {
        // alert('desHabilitarCamposFormE');
        if(e && e.which){ //mozilla
            e = e
            characterCode = e.which 
        }
        else {
            e = event
            characterCode = e.keyCode //IE
        }
     
        if(characterCode == 13){ //si El codigo es enter ejecutamos
            element.blur();
        }
           
        
    }
    
  


	/********************************
	*
	*	Widgets
	*
	*********************************/

        
    
    /**
     *
     *  Crea widget validadores
     *  todos los elements que que tengan _config como terminacion de su id
     *  son los config para crear los validators           
     *
     */                   
    function createWidgetsValidator(){
        
        var inputs = $$('input');
        
        for(var i = 0; i < inputs.length; i++){
            
            if  (   (inputs[i].type == "hidden") && 
                    (inputs[i].id.indexOf('_config') > 0) && 
                    ( (inputs[i].id.length -7) == inputs[i].id.indexOf('_config') ) 
                ){
                    
                //como primer parametro tenemos el type (textField, textArea)
                 var type = (inputs[i].value.substr(0, inputs[i].value.indexOf("&"))).split("=");
                 
                 switch (type[1]){
                    case "textField":
                        createTextFieldWidget(inputs[i].id);
                    break;
                 
                 }        
            
            } 
             
        
        }
            
        
    }
    
	
	/**
     *
     *  Crea un Widget de tipo TexField
     *
     */ 
    function createTextFieldWidget( idInpunt ){
    
        var data = $F(idInpunt);
        var params = new Object();
        params = x_ajaxResponseToArray(data);
        
        if (params['format'] == ""){
        
            var format = "";
        }else{
        
            var format = ",format:'"+params['format']+"'";
        }
                
        //string de creacion del widget       
        var newWidget = "var "+params['id']+"=new Spry.Widget.ValidationTextField('"+params['id']+"','"+params['descriptor']+"',{isRequired:"+params['isRequired']+",maxChars:"+params['maxChars']+format+",useCharacterMasking:true,validateOn:['change'] }  );" +"global_vars["+params['id']+".getNombre()] = "+params['id']+";"; 
        
        //alert(newWidget);
        try{
            eval(newWidget);
        }catch(err){
            //error
            //para debug alert(err.message);            
            //alert(err.message);
            return;
        }
   
    }
    
    
    
    
                     
	//deshabilita todos los textbox del documento
	 function disabeTextBoxes(){
		
		var inputs = $$("input");
		
		for ( var i=0; i<inputs.length; i++){
		
			if (inputs[i].type == "text"){
						
				inputs[i].disabled = true;
				
			}
			
		}
	 
	 }
 
 
	//habilita todos los textbox del documento
	function enableTextBoxes(){
	
		var inputs = $$("input");
		
		for ( var i=0; i<inputs.length; i++){
		
			if (inputs[i].type == "text"){            
				inputs[i].disabled = false;
			}
			
		}
	
	}      

    
	//libera todos los radios que esten seleccionados
	function freeRadiosChecked(){
	
		var inputs = $$("input");
		
		for ( var i=0; i<inputs.length; i++){
		
			if (inputs[i].type == "radio"){            
				inputs[i].checked = false;
			}
			
		}
	
	
	}
 
	//selecciona todos los items de un combo
	function seleccionarTodosLosItems(idCombo){
	
		var combo = $(idCombo);
		
		if (combo && combo.type == "select-multiple" ){
			
			for(var i=0;i< combo.options.length; i++){
				
				combo.options[i].selected = true;
				
			}
		
		}
	
	}

	/**
	 *  
	 *  Recibe como parametro el div al que le hicieron click.
	 *  Oculta el div y muestra el componente input. Tambien asigna el Id que recibio como parametro
	 */ 
	  function x_enableListInput(element, id){        
	  //  alert('habilitarCampoForm');    
		var div = element;//element.id.substring(0 , element.id.indexOf('_'))+"_valor"; 
		var input = element.id.substring(0 , element.id.lastIndexOf('_'))+"_input";
		// Reseteamos le input que nos indica el ENTER
		$('aux_enter').value = 0;
		$('id').value = id;
		// Cargamos el valor del div en el input
		$(input).value = trim(element.innerHTML);
		// Guardamos dicho valor en caso de querer restaurarlo
		$('aux_valor_original').value = element.innerHTML;
		//Mostramos el input y ocultamos el div
		element.style.display = 'none';  
		$(input).style.display = 'inline';  
		// Guardamos el nombre de la clase original del input
		$('aux').value = $(div).className;  
		// Ponemos el foco en el campo del formulario recien habilitado
		$(input).focus();
	 }
 
 
	function x_disableFormField(element){
		//alert('desHabilitarCamposForm');
		if ( $('aux_enter').value != 1) {
			var div = element.id.substring(0 , element.id.lastIndexOf('_'))+"_valor";     
			// Ocultamos el Input
			element.style.display = 'none';     
			// Restauramos la clase original 
			$(div).className = $('aux').value;
			// Mostramos el DIV
			$(div).style.display = '';
			// Restauramos el valor original
			$(div).innerHTML = $('aux_valor_original').value;
		}
	}
 
	/**
	* Deshabilita un form field
	*
	*    
	*/
	function x_disableFormFieldE(element, e) {
		// alert('desHabilitarCamposFormE');
		if(e && e.which){ //mozilla
			e = e
			characterCode = e.which 
		}
		else {
			e = event
			characterCode = e.keyCode //IE
		}
	
		if(characterCode == 13){ //si El codigo es enter ejecutamos
		   
			// Seteamos el input que nos indica el ENTER
			$('aux_enter').value = 1;
			   
			var div = element.id.substring(0 , element.id.lastIndexOf('_'))+"_valor";  
			//primero validamos q lo datos ingresados sean correctos
			var varValidate =  global_vars[element.id.substring(0 , element.id.lastIndexOf('_'))];
			if (!varValidate.validate()){
				$('aux_enter').value = 0;            
				x_disableFormField(element);
				$(element.id.substring(0 , element.id.lastIndexOf('_'))+"_input").value = $('aux_valor_original').value;
				varValidate.reset();
				varValidate.validate();
				
			   // $(div).className = $('aux').value; 
				$('Codigo_input').focus();
				return true;
			}
			$(div).innerHTML = element.value;
			element.style.display = 'none';  
			$(div).style.display = '';
			$(div).className = $('aux').value; 
			//ajax que cambia el valor en la base
			//alert('tengo q ejecutar ajax');    
			updateRecord($('id').value,element);     
			return false
		} else {
				return true;
		}
	
	}


	/**
	* Actulaiza un valor en la base de datos dado por element
	*   
	*/     
	function updateRecord(Codigo,element){
		//var urlFicha="modulos/"+$F('modulo')+"/"+$F('submodulo')+".php?";
		var urlFicha=element.form.action;
		var elementoValor = "&"+element.name+"="+encodeURIComponent(element.value);
		var paramsFicha = "id="+Codigo+elementoValor;
		//alert("url y parametros al script: "+urlFicha+paramsFicha);
		x_doAjaxCall('get', urlFicha, paramsFicha, 'doupdateRecord',"'"+element.id+"'",'doError',false,false);
	
	}
  
	/**
	*
	*/
    function doupdateRecord(responseText,elementoId){
       
        var cadena =unescape(responseText);
        var objectResponse  = x_evalAjaxResponse(cadena) 	

        //alert(cadenaDelimitada);
        if (objectResponse['false']!="" || objectResponse['error']!="" ){
           /// global_vars[elementoId.substring(0 , elementoId.lastIndexOf('_'))].mensajeAjax(cadenaDelimitada);
            x_alert("No se pudo realizar la modificacion");
            if ($(elementoId).type == "text")
                $(elementoId+"_valor").innerHTML = $F(elementoId);
                
                
        }else {
            
            x_alert('Modificado con exito');
            
            if($(elementoId).type == "select-one"){
            $(elementoId.substring(0 , elementoId.lastIndexOf('_'))+"_valor").innerHTML = $(elementoId).options[$(elementoId).selectedIndex].text;
            }   
        }    
        
    }
    
    

	/**
	 *  Crea variables Spry widgets a partir de un elemento input 
	 *  con un tipo (integer,email...) y opciones (isRequired...) 
	 *  typeSpryte es el tipo de sprtyte (textFieldValidation)
	 *  options tiene que venir como un string pero con formato json "{minChars:3....}"
	 */   
	function x_createEditableDivs(elementId,descriptor,options,typeSpryte){
		var elemet = $F(elementId);
		var widgetsNames = elemet.split(';');
		var creator = "new "
		for(var i=0; i< widgetsNames.length;i++){
			
			if (widgetsNames[i] != ""){
			
				//widgetsNames[i] = widgetsNames[i].replace(/-/g, "_");
				
				//alert(widgetsNames[i]);
				
				creator = "var "+widgetsNames[i]+ " =  new " + typeSpryte + "('"+ widgetsNames[i] +"','"+descriptor+"',"+ options + ");";
				creator = creator + " global_vars[" + widgetsNames[i]+ ".getNombre()] = " + widgetsNames[i]+ ";";
			   // alert(creator);
				eval(creator);   
			}      
		}
			   
	}
    
    
    function x_createAutosuggests(){
    
        var inputs = $$(".autossugest_config");
        
        for(var i = 0; i < inputs.length; i++){
           
            try{
                //alert(inputs[i].value)
                //document.write(inputs[i].value);
                eval(inputs[i].value);
                
            }catch(err){                         
                
               // alert("ERROR:" + err.message);
               // return;
                
            }        
            
        }      
    
    }            
	
	
	function updateComboBox(caller, idelement, manager, metodo, cascade) {

		var index = caller.selectedIndex;
	    var id_selected = caller.options[index].value;
		
		if (cascade) cascade = 1;
		else cascade = 0;
		var params = 'action=1&manager='+manager+'&method='+metodo+'&idelement='+idelement+'&idcaller='+id_selected+'&cascade='+cascade;
		var idcontainer = idelement+'_combo';
		x_loadModule('common','getcombo',params, idcontainer, 'common');
		
	}
