/* Funciones comunes */
  
  function chkVacios(arr,msg){
    /* recibe un array de elementos(inputs) y devuelve true si ningun es vacío.
    En caso de que alguno sea vacío devuelve false y otorga el focus a dicho elemento
    Por ultimo, si recibe un segundo parametro "mensaje" hará un alert */
    
    var itemVacios = arr.filter(function(item, index){
     return item.value == '';
    });
    
    if(itemVacios.length > 0){
      if($chk(msg)) alert(msg);
      itemVacios[0].focus();
      return false;
    }
    return true;
  }
  
  function chkNumericos(arr,msg){
    /* recibe un array de elementos(inputs) y devuelve true todos son valores numericos eneteros no negativos.
    En caso contrario devuelve false y otorga el focus a dicho elemento
    Por ultimo, si recibe un segundo parametro "mensaje" hará un alert */
    var n=/^([0-9])+$/;
    
    var itemNoValidos = arr.filter(function(item, index){      
      return (n.test(item.value))? false:true;
    });
    
    if(itemNoValidos.length > 0){
      if($chk(msg)) alert(msg);
      itemNoValidos[0].focus();
      return false;
    }
    return true;
  }
  
  function chkPositivos(arr,msg){
    /* recibe un array de elementos(inputs) y devuelve true todos son valores numericos eneteros postivos.
    En caso contrario devuelve false y otorga el focus a dicho elemento
    Por ultimo, si recibe un segundo parametro "mensaje" hará un alert */
    var n=/^([0-9])+$/;
    
    var itemNoValidos = arr.filter(function(item, index){      
      return (n.test(item.value))? ((item.value>0)?false:true):true;
    });
    
    if(itemNoValidos.length > 0){
      if($chk(msg)) alert(msg);
      itemNoValidos[0].focus();
      return false;
    }
    return true;
  }
  
  function chkDecimales(arr,msg){
    /* recibe un array de elementos(inputs) y devuelve true todos son valores numericos decimales no negativos.
    En caso contrario devuelve false y otorga el focus a dicho elemento
    Por ultimo, si recibe un segundo parametro "mensaje" hará un alert */
    var n=/^(([0-9]+)|([0-9]+(\.[0-9]+)?))$/;
    
    var itemNoValidos = arr.filter(function(item, index){      
      return (n.test(item.value))? false:true;
    });
    
    if(itemNoValidos.length > 0){
      if($chk(msg)) alert(msg);
      itemNoValidos[0].focus();
      return false;
    }
    return true;
  }
  
  function chkEmails(arr,msg){    
    var itemNoValidos = arr.filter(function(item, index){      
      return (h2o_checkMail(item.value))? false:true;
    });
    
    if(itemNoValidos.length > 0){
      if($chk(msg)) alert(msg);
      itemNoValidos[0].focus();
      return false;
    }
    return true;
  }
  
  function h2o_checkMail(str){
    var er_email=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return (er_email.test(str))? true:false;
  }
/* Creación de Slider MooTools parametrizado*/
  function scrollUpDown(el,e,maxsteps,sensibilidad)
  {                        
    if (e.wheel > 0) {
      dest=el.step - sensibilidad;
      el.set((dest > 0) ? dest : 0);
    } 
    else if (e.wheel < 0) {
      dest=el.step + sensibilidad;
      el.set((dest < maxsteps) ? dest : maxsteps);
    }
  }               	
  function crearSlider(c1,c2,c3,c4,h,s,divsli){

    var miDivSli=($chk(divsli))? $(divsli):$('slider');
     
    var alt=$(c2).getSize()['size']['y']-h;
    $(c1).setStyle('overflow','hidden');

    if(alt>0){
      miDivSli.setStyle('display','block');
      var miSli = new Slider($(c3), $(c4), {	
      	steps: h,	
      	mode: 'vertical',	
      	onChange: function(step){
      		y=parseInt(step*(alt/h));
      		$(c1).scrollTop=y;
      	}
      });
      
      miDivSli.addEvent('mousewheel', function(event) {
        event = new Event(event);
        scrollUpDown(miSli,event,h,h);
      });
      $(c1).addEvent('mousewheel', function(event) {
        event = new Event(event);
        scrollUpDown(miSli,event,h,s);
      });
      return miSli;
    }
    else
    {
      miDivSli.setStyle('display','none');
      return null;
    }
  }
  
  function highlight(elem,dur,del){
      var miDur = ($chk(dur))? dur:500;
      var miDel = ($chk(del))? del:500;
      var ele = $(elem);
      if(ele){
        var efecto = new Fx.Tween(ele,{duration:miDur}).start('opacity');
        ele.setStyle('display', 'none');
        ele.setStyle('opacity', '0.1');
        ele.setStyle('display', 'block');      
        
        var dummyfunc = function(ef,v){
          ef.start(v);
        }
        
        efecto.start(1).chain(function(){
          dummyfunc.pass([efecto,0]).delay(miDel);
        }).chain(function(){
          ele.setStyle('display', 'none');
        });
      }
  }
  
  function lightOn(elem,dur){
      var miDur = ($chk(dur))? dur:500;
      var ele = $(elem);
      if(ele){
	  	  var efecto = new Fx.Tween(ele,{duration:miDur}).start('opacity');
        efecto.start(1);
      }
  }
  
  function lightOff(elem,dur){
      var miDur = ($chk(dur))? dur:500;
      var ele = $(elem);
      if(ele){
  	  var efecto = new Fx.Tween(ele,{duration:miDur}).start('opacity');
        efecto.start(0.3);
      }
  }
  
  function fadeIn(elem,dur){
      var miDur = ($chk(dur))? dur:500;
      var ele = $(elem);
      if(ele){
        if(ele.getStyle('display')!='block'){
          ele.setStyle('display', 'block');
        }
        
        if(ele.getStyle('opacity')!=1){
        var efecto = new Fx.Tween(ele,{duration:miDur}).start('opacity');
          efecto.start(1);
        }
      }
  }
  
  function fadeOut(elem,dur){
      var miDur = ($chk(dur))? dur:500;
      var ele = $(elem);
      if(ele){
	  	  var efecto = new Fx.Tween(ele,{duration:miDur}).start('opacity');
        efecto.start(0).chain(function(){
          ele.setStyle('display', 'none');
        });
      }
  }