function trim(str)
{
    return str.replace(/^\s+/g,'').replace(/\s+$/g,'')
}
function campoVacio(elemt)
{
    if(trim(elemt.value) == "")
        return false;
    return true;
}
function campo_maxLength(elemt, num)
{
    if(trim(elemt.value).length > num)
        return false;
    return true;
}
function campo_minLength(elemt, num)
{
    if(trim(elemt.value).length < num)
        return false;
    return true;
}
function campoExpReg(elemt, regExp)
{
    if(!trim(elemt.value).match(regExp))
        return false;
    return true;
}
function mostrarError(span, textoErro)
{
    span.innerHTML = textoErro;
    span.style.visibility = 'visible';
}
function quitarError(span)
{
    span.style.visibility = 'hidden';
    return true;
}
function activarKeyUp(elemt, span)
{
    elemt.onkeyup = function(){comprobarElemt(this, span);}
    elemt.onchange = function(){comprobarElemt(this, span);}
}
function comprobarElemt(elemt, span)
{
    var valido = true;
    switch(elemt.name){
        case 'nombre':
            if(!campoVacio(elemt)){
                mostrarError(span, 'needed / necesario');
                valido = false;
            }
            else if(!campo_minLength(elemt, 2)){
                mostrarError(span, 'needed / necesario');
                valido = false;
            }
            else if(!campoExpReg(elemt, /^[a-zA-Z -']*$/)){
                mostrarError(span, 'needed / necesario');
                valido = false;
            }
            else
                valido = quitarError(span);
            break;
        case 'asunto':
            if(!campoVacio(elemt)){
                mostrarError(span, 'needed / necesario');
                valido = false;
            }
            else if(!campo_minLength(elemt, 2)){
                mostrarError(span, 'needed / necesario');
                valido = false;
            }
            else if(!campoExpReg(elemt, /^[a-zA-Z -']*$/)){
                mostrarError(span, 'needed / necesario');
                valido = false;
            }
            else
                valido = quitarError(span);
            break;
        case 'email':
            if(!campoVacio(elemt)){
                mostrarError(span, 'needed / necesario');
                valido = false;
            }
            else if(!campoExpReg(elemt, /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/)){
                mostrarError(span, 'needed / necesario');
                valido = false;
            }
            else
                valido = quitarError(span);
            break;
        case 'comentarios':
            if(!campoVacio(elemt)){
                mostrarError(span, 'needed / necesario');
                valido = false;
            }
            else
                valido = quitarError(span);
            break;
    }
    activarKeyUp(elemt, span);
    return valido;
}
function validarFormulario(form)
{
    var valido = true;
    var focusError = false;
    var span = document.getElementById('contact').getElementsByTagName('span');
    for(var i = 0; i < span.length; i++){
        if(!comprobarElemt(form.elements[i], span[i])){
            valido = false;
            if(!focusError){
                focusError = true;
                form.elements[i].focus();
            }
        }
    }
    if(valido){
        ajax_enviarFormulario();
    }
    return false;
}
function inicializarHttp()
{
    if(window.XMLHttpRequest) return new XMLHttpRequest();
    else if(window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
    else return null;
}
function queryFormulario()
{
    return  "nombre=" + encodeURIComponent(trim(document.getElementsByName('nombre')[0].value)) +
            "&email=" + encodeURIComponent(trim(document.getElementsByName('email')[0].value)) +
            "&asunto=" + encodeURIComponent(trim(document.getElementsByName('asunto')[0].value)) +
            "&comentarios=" + encodeURIComponent(trim(document.getElementsByName('comentarios')[0].value)) +
            "&nocache=" + Math.random();
}
function ajax_enviarFormulario()
{
    var peticionHttp = inicializarHttp();
    if(peticionHttp){
        peticionHttp.onreadystatechange = function(){
            if(peticionHttp.readyState == 4){
                if(peticionHttp.status == 200){
                    var respuesta = peticionHttp.responseText;
                    if(respuesta){
                        alert("Sent / Enviado \nWe'll contact you soon. Thanks.\nEn breves nos pondremos en contacto con Ud. Muchas gracias.");
                    }
                    else{
                        alert("Error, try again / Error, inténtelo de nuevo");
                    }
                }
            }
        }
        peticionHttp.open("post", "envio_formulario.php", true);
        peticionHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        var query = queryFormulario();
        peticionHttp.send(query);
    }

}
/*function cursorInputNombre(){document.getElementsByName('nombre')[0].focus();}
if(window.addEventListener) window.addEventListener('load', cursorInputNombre, false);
else window.attachEvent('onload', cursorInputNombre);*/
