var champsObligatoires;

$(document).ready( function() {
    /************************************
    *                         INIT LABELS
    *************************************/
    $("#formulaireInscription").find("label[class='labelBlock']").inFieldLabels();


    /************************************
    *                          VERIF FORM
    *************************************/
    // gestion des champs dupliqués (vérification à la frappe)
    $("input.inputText").each(function(){
        if($(this).attr("name").match(/email/)) {
            $(this).keyup(function() {
                checkFieldsMatch('email');
            });
            $(this).blur(function() {
                checkFieldsMatch('email');
            });
        }
    });

    $("input.inputPass").each(function(){
        $(this).keyup(function() {
            checkFieldsMatch('pass');
        });
    });

     initInscription();
    /************************************
    *                     INIT AJAX LINKS
    *************************************/
    /*$('#userland #serviceLinks a#createAccountButton').click(function()
        {
            $.address.value($(this).attr('href'));
            return false;
        });//*/
});

/************************************
*                    INIT INSCRIPTION
*************************************/
function initInscription() {

    // handle login, build a hash with concatenated username + ':' + pass
    $("#formulaireInscription").submit(function(datas) {

        if(verifForm())
        {
            var datas = 'formulaireInscription=1';
            $("#formulaireInscription input[type='text']").each( function()
                {
                    datas += '&'+$(this).attr('name')+'='+$(this).val();
                }
            );
            $("#formulaireInscription input[type='hidden']").each( function()
                {
                    datas += '&'+$(this).attr('name')+'='+$(this).val();
                }
            );
            $("#formulaireInscription input[type='password']").each( function()
                {
                    datas += '&'+$(this).attr('name')+'='+$(this).val();
                }
            );
            $("#formulaireInscription input[type='checkbox']").each( function()
                {
                    if($(this).attr('checked'))
                    {
                        datas += '&'+$(this).attr('name')+'='+$(this).val();
                    }
                }
            );
            $("#formulaireInscription input[type='radio']").each( function()
                {
                    if($(this).attr('checked'))
                    {
                        datas += '&'+$(this).attr('name')+'='+$(this).val();
                    }
                }
            );
            $("#formulaireInscription select").each( function()
                {
                    datas += '&'+$(this).attr('name')+'='+$(this).val();
                }
            );

            var urlfin = $(this).attr('action');

            $.ajax({
              url      : urlfin,
              type     : 'POST',
              data     : datas,
              timeout  : 3000, // bigger timeout lets the php login script use sleep() to minimize DDOS attempts

              error: function(e) {
                // server or network error
              },

              success: function(reponse) {
                    // handle errors
                    $("#membre_inscription").html(reponse);
                    // whatever happens, don't care as it only updates session and cookie
              }
            });//*

        };

         return false;
      });
}

/************************************
*                          VERIF FORM
*************************************/
function verifForm()
{
    champsObligatoires = new Array(
                                "nom",
                                "prenom"
                                  );
    if(verifEmptyField())
    {
        if(verifMail())
        {
            if(verifPassword())
            {
                return true;
            };
        };
    };

    return false;
}


function verifMail()
{
    // Récupère le mail
    var mail1 = verifChamp( $("input[name=email]") );
    var mail2 = verifChamp( $("input[name=email_confirm]") );

    // Vérifie si le mail est bien formé
    if ( mailTest(mail1) && confirmation(mail1,mail2) )
    {
        // vide le panneau erreur
        $("#formulaireInscription .erreur").html('');
        $("input[name=email], input[name=email_confirm]").css("borderColor", '#898083');
    }
    // Erreur
    else if ( !confirmation(mail1,mail2) )
    {
        // On affiche l'erreur
        $("#formulaireInscription .erreur").html(erreurs['mails_differents']);
        //$("#formulaireInscription .erreur").html('mails_differents');
        $("input[name=email], input[name=email_confirm]").css("borderColor", '#c00');
        return false;
    }
    else
    {
        // On affiche l'erreur
        $("#formulaireInscription .erreur").html(erreurs['mail_invalide']);
        //$("#formulaireInscription .erreur").html('mail_invalide');
        $("input[name=email]").css("borderColor", '#c00');
        return false;
    }

    return true;
}


function verifPassword()
{
    // Récupère le pass
    var mdp1 = verifChamp( $("input[name=pass]") );
    var mdp2 = verifChamp( $("input[name=pass_confirm]") );

    // Vérifie si le mail est bien formé
    if ( mdpTest(mdp1) && confirmation(mdp1, mdp2) )
    {
        // vide le panneau erreur
        $("#formulaireInscription .erreur").html('');
        $("input[name=mdp], input[name=pass_confirm]").css("borderColor", '#898083');
    }
    // Erreur
    else if ( !confirmation(mdp1, mdp2) )
    {
        // On affiche l'erreur
        $("#formulaireInscription .erreur").html(erreurs['mdp_differents']);
        //$("#formulaireInscription .erreur").html('mdp_differents');
        $("input[name=pass], input[name=pass_confirm]").css("borderColor", '#c00');

        return false;
    }
    else
    {
        // On affiche l'erreur
        $("#formulaireInscription .erreur").html(erreurs['mdp_invalide']);
        //$("#formulaireInscription .erreur").html('mdp_invalide');
        $("input[name=mdp]").css("borderColor", '#c00');
        return false;
    }

    return true;
}

function verifEmptyField()
{
    for(var fieldName in champsObligatoires)
    {
        var field = $('input[name="'+champsObligatoires[fieldName]+'"]');
        if(!verifChamp(field))
        {
            $("#formulaireInscription .erreur").html(erreurs[champsObligatoires[fieldName]+'_vide']);
            //$("#formulaireInscription .erreur").html(champsObligatoires[fieldName]+'_vide');
            $(field).css("borderColor", '#c00');
            return false;
        }else
        {
            $("#formulaireInscription .erreur").html('');
            $(field).css("borderColor", '#898083');
        };//*/
    }
    return true;
}

function mdpTest( mdp )
{
    // test
    if(mdp.length > 2)
        return true;
    else
        return false;
}

function urlTest( url )
{
    var re=RegExp("^\/.*$");
    if(!re.test(url))
    {
        return false;
    }
    else
    {
        return true;
    }
}

function confirmation( exp1 , exp2 )
{
    return ( exp1 == exp2 )?true:false;
}

function verifChamp( champ )
{
    var valeur = champ.val();
    //var defaut = champ.attr('memo');
    return ( valeur.length > 1 )?valeur:false;
}

/************************************
* checks if pass are not empty, checks if fieldVal1 = fieldVal2, and checks if valid email when fieldname contains 'email'
* @fieldPrefix : name of the field to check
*************************************/
function checkFieldsMatch(fieldPrefix) {
    var fieldVal1 = $('input[name='+fieldPrefix+']').val();
    var fieldVal2 = $('input[name='+fieldPrefix+'_confirm]').val();
    if(    fieldVal1!=fieldVal2
        || fieldVal2==''
        || fieldVal2=='undefined'
        || fieldVal1==''
        || fieldVal1=='undefined'
        || ( fieldPrefix.match(/email/) && ( !mailTest(fieldVal1) || !mailTest(fieldVal2) ) )
        )
    {
        $('input[name='+fieldPrefix+']').css("borderColor", "darkred");
        $('input[name='+fieldPrefix+'_confirm]').css("borderColor", "darkred");
        return false;
    } else
    {
        $('input[name='+fieldPrefix+']').css("borderColor", "#898083");
        $('input[name='+fieldPrefix+'_confirm]').css("borderColor", "#898083");
        return true;
    }
}

/************************************
* validate a mail
* @mail : mail to valid
*************************************/
function mailTest( mail )
{
    var re=RegExp("^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@([a-zA-Z0-9-_]{2,}[.])+[a-zA-Z]{2,8}$");
    //var re=RegExp('/^([a-zA-Z0-9_-])+([.]?[a-zA-Z0-9_-]{1,})*@([a-zA-Z0-9-_]{2,}[.])+[a-zA-Z]{2,}$/');
    if(!re.test(mail))
    {
        return false;
    }
    else
    {
        return true;
    }
}
