function get_request_obj()
{
    var obj = null;
    
    if(window.XMLHttpRequest)
        obj = new XMLHttpRequest();
    else
        obj = new ActiveXObject("MSXML2.XMLHTTP");

    obj.abort();
    
    return obj;
}

// Check Ajax Object Status
function checkReadyState(obj)
{
    if(obj.readyState == 4)
    {
        if(obj.status == 200)
            return true;
    }
    return false;
}

function closeErrorDiv()
{
    var div = document.getElementById("error_div");
    div.style.visibility = 'hidden';
}

function change_password()
{
    popupDiv('change_password');
    document.getElementById("old_passwd").value = '';
    document.getElementById("new_passwd").value = '';
    document.getElementById("new_passwd2").value = '';
}

function close_password()
{
    closePopup();
    document.getElementById("old_passwd").value = '';
    document.getElementById("new_passwd").value = '';
    document.getElementById("new_passwd2").value = '';
}

function accept_password()
{
    var v0 = document.getElementById("old_passwd").value;
    var v1 = document.getElementById("new_passwd").value;
    var v2 = document.getElementById("new_passwd2").value;
    if(v1 != v2)
    {
        window.alert("Le nouveau mot de passe et la vérification ne concordent pas !");
        return false;
    }

    var req = "change_passwd.php?old=" + encodeURI(v0) + "&new=" + encodeURI(v1);

    get = get_request_obj();
    get.onreadystatechange = onResponse_password;
    get.open("GET", req, true);
    get.send(null);
}

function onResponse_password()
{
    if(checkReadyState(get))
    {
        var res = get.responseText;
        if(res == "OK")
        {
            window.alert("Changement de mot de passe effectué.");
            close_password();
            return true;
        }
        window.alert(res);
        return false;
    }
}


function request_new_password()
{
    popupDiv('forgotten_password');
    document.getElementById("fp_login").value = '';
    document.getElementById("fp_email").value = '';
    document.getElementById("fp_captcha").value = '';
}

function close_forgotten_password()
{
    closePopup();
    document.getElementById("fp_login").value = '';
    document.getElementById("fp_email").value = '';
    document.getElementById("fp_captcha").value = '';
}

function accept_forgotten_password()
{
    if(document.forms["forgotten_password_form"])
    {
        var req = "recreate_password.php?";

        var form_elements = document.forms["forgotten_password_form"].elements;
        for(i=0 ; i<form_elements.length ; i++)
        {
            if(form_elements[i].name)
            {
                req += form_elements[i].name + '=' + encodeURIComponent(form_elements[i].value) + "&";
            }
        }

        get = get_request_obj();
        get.onreadystatechange = onResponse_forgotten_password;
        get.open("GET", req, true);
        get.send(null);
    }
}

function onResponse_forgotten_password()
{
    if(checkReadyState(get))
    {
        var res = get.responseText;
        if(res == "OK")
        {
            window.alert("Votre mot de passe a été changé et envoyé par e-mail");
            close_new_account();
            return true;
        }
        window.alert(res);
        return false;
    }
}



function create_new_account()
{
    popupDiv('create_account');
    document.getElementById("ca_new_login").value = '';
    document.getElementById("ca_new_passwd").value = '';
    document.getElementById("ca_new_passwd2").value = '';
    document.getElementById("ca_new_email").value = '';
    document.getElementById("ca_captcha").value = '';
}

function close_new_account()
{
    closePopup();
    document.getElementById("ca_new_login").value = '';
    document.getElementById("ca_new_passwd").value = '';
    document.getElementById("ca_new_passwd2").value = '';
    document.getElementById("ca_new_email").value = '';
    document.getElementById("ca_captcha").value = '';
}

function accept_new_account()
{
    var v1 = document.getElementById("ca_new_passwd").value;
    var v2 = document.getElementById("ca_new_passwd2").value;
    if(v1 != v2)
    {
        window.alert("Le mot de passe et la vérification ne concordent pas !");
        return false;
    }

    if(document.forms["create_account_form"])
    {
        var req = "create_account.php?";

        var form_elements = document.forms["create_account_form"].elements;
        for(i=0 ; i<form_elements.length ; i++)
        {
            if(form_elements[i].name)
            {
                req += form_elements[i].name + '=' + encodeURIComponent(form_elements[i].value) + "&";
            }
        }

        get = get_request_obj();
        get.onreadystatechange = onResponse_new_account;
        get.open("GET", req, true);
        get.send(null);
    }
}

function onResponse_new_account()
{
    if(checkReadyState(get))
    {
        var res = get.responseText;
        if(res == "OK")
        {
            window.alert("Votre compte a été créé. Un email a été envoyé pour confirmer votre adresse.");
            close_new_account();
            return true;
        }
        window.alert(res);
        return false;
    }
}

var ajaxCallback;
function ajaxRequest(request, callback)
{
    var req = null;
    if(request.substr(0,7) == "http://")
        req = "request_external.php?url=" + encodeURIComponent(request);
    else
        req = getBaseAjaxRequest() + request;
    ajaxCallback = callback;
    get = get_request_obj();
    get.onreadystatechange = onResponse_ajax;
    get.open("GET", req, true);
    get.send(null);
}

function ajaxPostRequest(request, callback, postData)
{
    var req = getBaseAjaxRequest() + request;
    ajaxCallback = callback;
    get = get_request_obj();
    get.onreadystatechange = onResponse_ajax;
    get.open("POST", req, true);
    get.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    get.send(postData);
}

function ajaxFormRequest(request, form_name, callback)
{
    var req = getBaseAjaxRequest() + "&" + request + "&";
    ajaxCallback = callback;

    if(document.forms[form_name])
    {
        var form_elements = document.forms[form_name].elements;

        for(i=0 ; i<form_elements.length ; i++)
        {
            if(form_elements[i].name)
            {
                if(form_elements[i].type && form_elements[i].type.toUpperCase() == 'CHECKBOX')
                {
                    if(form_elements[i].checked)
                        req += form_elements[i].name + '=1&';
                    else
                        req += form_elements[i].name + '=0&';
                }
                else if(form_elements[i].type && form_elements[i].type.toUpperCase() == 'RADIO')
                {
                    if(form_elements[i].checked)
                        req += form_elements[i].name + '=' + encodeURIComponent(form_elements[i].value) + "&";
                }
                else
                {
                    req += form_elements[i].name + '=' + encodeURIComponent(form_elements[i].value) + "&";
                }
            }
        }

        get = get_request_obj();
        get.onreadystatechange = onResponse_ajax;
        get.open("GET", req, true);
        get.send(null);
    }
}

var last_ajax_result = "";
function onResponse_ajax()
{
    if(checkReadyState(get))
    {
        last_ajax_result = get.responseText;
        ajaxCallback()
    }
}

function getLastAjaxResult()
{
    return last_ajax_result;
}

var popupId = '';
function popupDiv(divId)
{
    if(popupId != '')
        return false;
    document.getElementById('disabled_bg').style.visibility = 'visible';
    var divToPopup = document.getElementById(divId);
    if(divToPopup)
    {
        divToPopup.style.visibility = 'visible';
        popupId = divId;
        return true;
    }
    return false
}

function closePopup()
{
    document.getElementById('disabled_bg').style.visibility = 'hidden';
    if(popupId == '')
        return false;
    document.getElementById(popupId).style.visibility = 'hidden';
    popupId = '';
    return true;
}
