/* 
 * Proyecto: Contador caracteres estilo Twitter
 * Autor: Carlos Canela
 * Web: www.plima.com.mx
 * mail: carlos.canela@plima.com.mx
 */

/*
 * Esta funcion se manda a llamar al ENVIAR la forma
 */
function revisar(){
    //La variable error se incrementa cada que se detecta un error
    var error = 0;
    //revisamos que este campo no se haya pasado de los caracteres
    if(!cuentaCaracteresTextArea(document.forma.descripcion, 'displayContador', 150)){
        error += 1;
        //mandamos a la ventana el error
        muestraMensajeVentana('¡Escribiste más de lo debido!');
    }
    //revisamos que este campo no este vacio
    if(document.forma.descripcion.value=="" || trim(document.forma.descripcion.value)==""){
        error+=1;
        //mandamos a la ventana el error
        muestraMensajeVentana('... no escribiste nada...');
    }
    //Revisamos que no haya errores
    if(error==0){
        document.forma.submit();//enviamos la forma
    }
}

/*
 * Esta es la función que se utiliza para contar los caracteres de un campo predeterminado.
 * Funciona con cualquier INPUT el cual tenga el atributo value
 *
 * @param: campo - El objeto tipo INPUT que se va a evaluar
 * @param: zonaContador - El ID del cuadro donde se muestra el contador de caracteres (los números)
 * @param: max - La cantidad máxima de caracteres permitidos en el campo
 */
function cuentaCaracteresTextArea(campo,zonaContador,max){
    var maxLength = max;	
    //isOK = TRUE si no se pasa de caracteres o es igual al máximo y FALSE cuando se pasa del máximo
    var isOk = false;
    
	campo.value = campo.value.slice(0, max); // by RCaF
	
	//con estas evaluaciones, cambiamos el estilo del contador dependiendo de cuántos caracteres falten
    if((maxLength-campo.value.length)<=15){
        document.getElementById(zonaContador).className = "cuentaCaracteres15";
        //los nombres de los estilos son fijos, se ha de crear un estilo por cada rango de caracteres diferente
        isOk = true;
    }
    if((maxLength-campo.value.length)<=5){
        document.getElementById(zonaContador).className = "cuentaCaracteres5";
        isOk = true;
    }
    if((maxLength-campo.value.length)<=0){
        document.getElementById(zonaContador).className = "cuentaCaracteresSePaso";
        isOk = false;
    }else if((maxLength-campo.value.length)>15){
        document.getElementById(zonaContador).className = "cuentaCaracteres";
        isOk = true;
    }
    //aquí actualizamos el contador en la página
    document.getElementById(zonaContador).innerHTML = "("+(maxLength-campo.value.length)+")"; // modificado by RCaF

    return isOk;
}

//Id del contador
var IDtimerVentana = 0;
var posIni = -100;//Igual que en la hoja de estilo contadorCaracteres.css
var posAct = posIni;
/*
 * Esta es la función donde se muestra la ventana con el mensaje que se envía.
 *
 * @param:mensaje - El mensaje a mostrar en la ventana
 */
function muestraMensajeVentana(mensaje){
    //hacemos que "la vista" de la página se suba automáticamente a la anchor de ARRIBA
    window.location.href="#ARRIBA";
    document.getElementById('ventanaMensaje').style.display='block';//se vuelve visible
    document.getElementById('mensajeVentanaMensaje').innerHTML=""+mensaje;//inserta el mensaje
    //indicamos que comience a deslizarse la ventana, el número representa la velocidad con que baja
    //mientras más grande el número, más se tardará la ventana en bajar
    IDtimerVentana = setInterval ( "deslizaVentana('abajo')", 40 );
}

/*
 * Función que "anima" la ventanam hacia arriba o hacia abajo.
 *
 * @param:direccion - arriba o abajo, hacia dónde se mueve la ventana
 */
function deslizaVentana(direccion){
    var ventana = document.getElementById('ventanaMensaje');
    if(direccion=="abajo"){
        if(posAct>=0){
            posAct=0;
            clearInterval(IDtimerVentana);
            //aquí mandamos la ventana de vuelta para arriba pues ya llegó a la posición final deseada
            //el número dentro del setInterva representa la velócidad en que sube.
            //el número dentro del setTimeout es el tiempo que la ventana permanece sin moverse antes de volver a subir
            setTimeout('IDtimerVentana = setInterval ( "deslizaVentana(\'arriba\')", 90 );',5000);
        }else{
            posAct+= 5;
        }
    }else if(direccion=="arriba"){
        if(posAct<=posIni){
            clearInterval(IDtimerVentana);
        }else{
            posAct-= 5;
        }
    }
    ventana.style.marginTop=posAct+"px";
}

/*
 * Función que remueve espacios y ENTER en cualquier string que se le envía
 */
function trim(stringToTrim){
    //http://www.somacon.com/p355.php Javascript Trim LTrim and RTrim Functions
    return stringToTrim.replace(/^\s+|\s+$/g,"");
}
