﻿var f;
f = $(document);
f.ready(initFormMail);

var baseUrlFormMail = "";
var bufferCaptchaUser = ""; 
var bufferCaptchaValid = false; 

/* initFormMail()
* se ejecuta al cargarse la pagina. 
* lee la configuracion de paises del servidor y captura los eventos de los controles del formulario 
*/
function initFormMail() {
                
    // config inicial de controles
    clearControlsMail();       
    
    // Cargo los dispositivos
    loadSmartPhones();
    
    // Cargo el captcha
    loadCaptchaMail();

    // capturo el click del boton send
    x = $("#enviar_email");
    x.click(onSendMailClick);
        
    if (formMode == "normal") {
        $("#f_nombre").blur(onNombreLostFocus);    
        $("#f_nombre").focus(onNombreGotFocus);        
        $("#f_email").blur(onEMailLostFocus);    
        $("#f_email").focus(onEMailGotFocus);        
    }
    $("#f_emailamigo").blur(onEMailAmigoLostFocus);
    $("#f_emailamigo").focus(onEMailAmigoGotFocus);    
    $("#seguridad_mail").blur(onCaptchaLostFocus);
    $("#seguridad_mail").focus(onCaptchaGotFocus);
    $("#f_phone").blur(onPhoneLostFocus);    
    $("#f_phone").focus(onPhoneGotFocus);        

    clearFormMailErrors();        

    $("#hiddenResult").hide(); 
    
    // Windows live (solo modo normal) 
    //if (formMode == "normal") {
    //    loadWLApplication();         
    //}
    
}


/* onSendMailClick()
* se ejecuta el clickear el boton Send. 
* envia la solicitud al backend para el envío del SMS.
*/
function onSendMailClick() {
    $("#sendMailResponse").html("");    
    
    clearFormMailErrors(); 				    
    
    var formValid = validateFormMail();    
    if (formValid == true) 
    {                    
        // armo la URL con los params segun el modo 
        if (formMode == "normal") {
            var sendUrl = baseUrlFormMail + "sendmail.aspx?" +
                "&cp=" + $("#seguridad_mail").val() +
                "&nm=" + $("#f_nombre").val() +
                "&ph=" + $("#f_phone").val() +
                "&m=" + $("#f_email").val() +
                "&f=" + $("#f_emailamigo").val() +
			    "&campania="; 
        }
        else {
            var sendUrl = baseUrlFormMail + "sendmail.aspx?" +
                "&cp=" + $("#seguridad_mail").val() +
                "&nm=" +
                "&ph=" + $("#f_phone").val() +
                "&m=" +
                "&f=" + $("#f_emailamigo").val() +
			    "&campania=WL_BB_LandPage"; 
        }			 
        
        $("#sendMailResponse").html("enviando ...");        
                
        // hago la llamada y obtengo el resultado 
        // en la variable sendMailResponse, llamando por ajax sincronico (para obtener el resultado y continuar)
        
        $.ajax({
            url: sendUrl,
            async: true,
            success: onSuccessSendMail,
            error: function() {$("#sendMailResponse").html("No se ha podido enviar. Intenta nuevamente.");}
        });
    }
}

function onSuccessSendMail(result)
{    
    $("#sendMailResponse").html("");
                  
    if (result == "&idresultado=0") {
        
        /* Al de recibir el OK del envio de mail 
           redireccionamos a la pagina de GRACIAS */            
        //location.href = 'gracias.aspx';
        
        
        // NO VA MAS el gracias por AJAX 
        // $("#sendMailResponse").hide();            
        /*
        var thanksHtml = $.ajax({
            url: "getthanksmail.aspx?cp=" + $("#seguridad_mail").val(),
            async: false
        }).responseText;                                               
        */
        
        //$("#form").hide();
        //$("#form_container").load("getthanksmail.aspx?cp=" + $("#seguridad_mail").val());            
        $("#form_container").load("getformgracias.aspx");            
        // levanto el gracias 
        //$("#form_container").fadeIn("slow");
        
        /*
        $("#formulario-mail").oneTime(10000, function() {
            $("#gracias_email").fadeOut("slow");
            clearControlsMail();
            window.location.reload();
        });
        */
    }          
    else
    {
        if (result == "&idresultado=2") {
            // codigo captcha incorrecto 
            setCaptchaError();
        }
    }
}

function onPhoneGotFocus () {  
    $("#f_phone").attr("class", "");
    $("#f_phone_ast").attr("class", "asterisco");    
    $("#error_phone").css("visibility", "hidden");
}

function onPhoneLostFocus () {    
    var strError = "";
    
    if ($("#f_phone").val() == "0") {
        $("#f_phone").attr("class", "input_error");        
        $("#f_phone_ast").attr("class", "asterisco_error");        
        $("#error_phone").css("visibility", "visible");
    }
}

function onNombreGotFocus () {  
    $("#f_nombre").attr("class", "");
    $("#f_nombre_ast").attr("class", "asterisco");    
    $("#error_nombre").css("visibility", "hidden");
    $("#sendMailResponse").html("");
}

function onNombreLostFocus () {    
    var strError = "";
    
    if ($("#f_nombre").val() == "")
        strError = "Ingresa tu nombre";
    else
        if (validateChars($("#f_nombre").val()) == false)               
            strError = "Nombre incorrecto";        
     
    if (strError != "") {        
        $("#f_nombre").attr("class", "input_error");        
        $("#f_nombre_ast").attr("class", "asterisco_error");        
        $("#error_nombre").css("visibility", "visible");
    }
}

function onEMailGotFocus () {    
    $("#f_email").attr("class", "");
    $("#f_email_ast").attr("class", "asterisco");    
    $("#error_email").css("visibility", "hidden");
    $("#sendMailResponse").html("");
}

function onEMailLostFocus () {    
    var strError = "";
        
    
    if ($("#f_email").val() == "")
        strError = "Ingresa tu e-mail";
    else
         if (validateEmail($("#f_email").val()) == false) 
            strError = "E-mail incorrecto";        
     
    if (strError != "") {        
        $("#error_email").css("visibility", "visible");
        $("#f_email").attr("class", "input_error");
        $("#f_email_ast").attr("class", "asterisco_error");
    }
}

function onEMailAmigoGotFocus () {    
    $("#f_emailamigo").attr("class", "");    
    $("#error_emailamigo").css("visibility", "hidden");                       
    $("#sendMailResponse").html("");
}

function onEMailAmigoLostFocus () {    
    var strError = "";
                              
    if ($("#f_emailamigo").val() != "") {
         if (validateEmail($("#f_emailamigo").val()) == false) {
            strError = "E-mail incorrecto";         
         }
    }
    else {
        if (formMode == "replay") {
            if ($("#f_emailamigo").val() == "") {
                strError = "Ingresa tu e-mail";
            }
        }
    }
     
    if (strError != "") {
        $("#error_emailamigo").css("visibility", "visible");                               
        $("#f_emailamigo").attr("class", "input_error");
    }   
}

function onCaptchaGotFocus () {        
    $("#error_seguridad").css("visibility", "hidden");                               
    $("#seguridad_mail").attr("class", "");
    $("#seguridad_mail_ast").attr("class", "asterisco");    
}

function onCaptchaLostFocus () {           
    if (doValidateCaptcha() == true) 
    {
        if ($("#error_seguridad").css("visibility") == "hidden")
        {
            //$("#error_seguridad").html("Validando ...");                 
            validateCaptchaServer();                  
        } 
        else 
        {
            setCaptchaError();
        }   
    }
    else
    {                 
        if (bufferCaptchaValid == false)
        {
            setCaptchaError();
        }        
    }
    
    bufferCaptchaUser = $("#seguridad_mail").val();     
}

function doValidateCaptcha ()
{
    return(($("#seguridad_mail").val() == "") || ($("#seguridad_mail").val() != "" && $("#seguridad_mail").val() != bufferCaptchaUser));     
}

function validateCaptchaServer ()
{
    $.ajax({
        type: "GET",        
        url: "validatecaptcha.aspx",
        data: "cp=" + $("#seguridad_mail").val(),
        success: function(result) {            
            if (result == "&idresultado=2") 
            {
                bufferCaptchaValid = false;
                setCaptchaError(); 
            }
            else 
            {
                bufferCaptchaValid = true;                
                $("#error_seguridad").css("visibility", "hidden");
                onCaptchaGotFocus();
            }
        },
        error: function() {            
            setCaptchaError(); 
        }                
    });

}

function setCaptchaError () {    
    $("#error_seguridad").css("visibility", "visible");  
    $("#seguridad_mail").attr("class", "input_error");
    $("#seguridad_mail_ast").attr("class", "asterisco_error");
}

function getSendMailMessage(result) {
    var retValue = "";
    
    if (result != "&idresultado=0") {
        // Significa que vino un error.
        // Ej: &idresultado=1&err=Dirección de e-mail no válida
        // Busco &err y devuelvo lo que le sigue ...
        var iPos = result.indexOf("&err=",0);         
        retValue = result.substring(iPos + 5, result.length);                 
    }
    
    return(retValue);               
}

/* validateFormMail()
* controla el ingreso del usuario. 
* esta funcion es llamada al presionarse el boton 'send'.
* devuelve vacio o el mensaje de error que corresponda. 
*/
function validateFormMail() {
    var retValue = true;        
    var i = 1;
       
    // ejecuto las funciones de validacion lostfocus 
    if (formMode == "normal") {
        onNombreLostFocus();
        onEMailLostFocus();        
    }
    onEMailAmigoLostFocus();          
    onPhoneLostFocus();
            
    var blnNotValid = true; 
    
    if ($("#seguridad_mail").val() == "") 
    {
        blnNotValid = true; 
        setCaptchaError();
    }
    else
    {
        if (formMode == "normal") {
            blnNotValid = ($("#error_nombre").css("visibility") == "visible") || 
                          ($("#error_email").css("visibility") == "visible") ||
                          ($("#error_phone").css("visibility") == "visible") ||                 
                         (($("#f_emailamigo").val() != "") && ($("#error_emailamigo").css("visibility") == "visible")); 
        }                
        else {    
            blnNotValid = ($("#error_emailamigo").css("visibility") == "visible") ||
                            ($("#error_email").css("visibility") == "visible");
        }        
    }
           
    // valido que no haya error
    if (blnNotValid == true) {
        retValue = false; 
        /* IMPORTANTE!
        No puedo ejecutar la validacion de captcha explicita junto con la de los otros campos antes de este IF
        porque como es ajax y eso manda otra solicitud ajax se arma un bolonqui en algunos como cuando se 
        el foco esta en el captcha y se clickea en enviar sin salir del control (validacion por lostfocus generada por el click,
        y validacion explicita aca).
        Igualmente el captcha se valida en el server, por lo que si estuviese mal saldría justamente con el mismo error
        de validación aunque lo dejemos pasar por aca. 
        Pero, si el error esta en alguno de los otros controles, como no se va a hacer llamada ajax para validar/enviar,
        tenemos que ejecutar el lostfocus del captcha para que tambien verifique si esta bien o no y queden 
        los 3 campos validados correctamente.
        Por esto el siguiente onCaptchaLostFocus() */        
        onCaptchaLostFocus();      
        $("#sendMailResponse").html("Por favor corrije los datos indicados");
    }        
        
    return (retValue);
}

function validateEmail(mailValue) {            
    var regexp = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
    if (regexp.test(mailValue))
        return (true);
    else
        return (false);    
}

function validateChars(value) { 
    var regexp = /^[a-zA-Z0-9¿¡ñÑáéíóúÁÉÍÓÚ ]{0,255}$/; 
    if (regexp.test(value))
        return (true);
    else
        return (false);    
}


/* clearControlsMail() 
* limpia los controles del form 
*/
function clearControlsMail() {
    // Vacios 
    $("#f_nombre").attr("value", "");
    $("#f_email").attr("value", "");
    $("#f_emailamigo").attr("value", "");
    $("#seguridad_mail").attr("value", "");    
    clearFormMailErrors();
    $("#gracias_email").hide();    
}

function clearFormMailErrors() {    
    $("#error_nombre").css("visibility", "hidden");    
    $("#error_email").css("visibility", "hidden");
    $("#error_emailamigo").css("visibility", "hidden");
    $("#error_phone").css("visibility", "hidden");    
    onNombreGotFocus();
    onEMailGotFocus();
    onEMailAmigoGotFocus();
    onPhoneGotFocus();
    onCaptchaGotFocus();
}

function loadCaptchaMail() {
    /*
    var htmlCaptcha = $.ajax({
        type: "GET",
        url: baseUrlFormMail + "getcaptchamail.aspx",
        cache: false,
        async: false
    }).responseText;
    $("#captcha_img").html(htmlCaptcha);
    */
}

function loadSmartPhones() {
	// leo el XML de configuracion y cargo los paises
    // luego me guardo el XML que lo tengo que usar para reconfigurar el form segun el pais seleccionado
	$.ajax({
	    type: "GET",
	    url: baseUrlFormMail + "getdevices.aspx",
	    dataType: "xml",
	    success: function(xml) {
	        // Guardo el XML
	        xmlConfig = xml;
	        // cargo los paises
	        $(xml).find('device').each(function() {
	            // cargo el combo de paises, con el shortName como valor de cada opcion
	            $("#f_phone").append("<option value='" + $(this).attr('code') + "'>" + $(this).attr('name') + "</option>");
	        });
	    }
	});	
}

function loadWLApplication() {
    var wlAppTag = $.ajax({
        url: baseUrlFormMail + "getwlappverifier.aspx",
        cache: false,
        async: false
    }).responseText;
    $("#wlApplication").html(wlAppTag);    
}


/* EOF */