// Script Javascript de gestion des idées cadeaux

var boxMain         = null;
var boxContent      = null;
var boxBlackhole    = null;
var fldScript       = null;
var Lng             = 1;
var stepUser        = 1;
var axData          = {};
var fV              = [];

var dp              = [];
    dp[1]           = 'fr';
    dp[2]           = '';
    
var msg             = [];
    msg['invalidChoice']    = new Array('Choix Invalide !','Invalid Selection !')
    msg['requiredField']    = new Array('Le(s) champ(s) en surbrillance est/sont obligatoire(s) !','Enlighted field(s) is/are required !')
    msg['wrongMail']        = new Array('L\'email est absent ou mal saisi !','Your email is incorrect !')
    msg['badAsNumber']      = new Array('Le nombre de lettres indiqué n\'est pas le bon !','You made a bad account !')
    msg['wrongCode']        = new Array('Le code de sécurité sisi n\'est pas le bon !','You have not entered the right secured code !')
    

$(G_Init)

function G_Init(){
    G_setJSDefault();
    G_setAjaxDefault();
    G_display();
}
// Méthode de Gestion des Evenements selon les objets sources
function G_event(e){
    var o = e.target;
    var t = e.type
    window.defaultStatus = t+' '+o+' id : '+o.id
    switch(t){
        // Gestion des Evenements de type onclick
        case 'click':        
            if(stepUser==2)G_processFieldValue('set')
            switch(o.id){
                case 'id_naviPrevious':
                    G_display(--stepUser)
                    break;
                case 'id_naviReload':
                    G_display($('#id_whatYear').val())
                    break;
                case 'id_naviNext':
                    if(!G_checkForm())return
                    stepUser=3;
                    G_display();
                    break;
                case 'refreshCode':
                    $('.imgCode',boxMain).attr('src', 'include/image_code.php?r='+Math.random())
                    break;
            }
            break;
        // Gestion des Evenements de type onchange
        case 'change':
        
            switch(o.id){
                // Le visiteur sélectionne l'heure
                case 'id_arrivalHour':
                    var arrivalHour = $(o).val();
                    if(arrivalHour==''){
                        G_alert('invalidChoice')
                        return
                    }
                    break;
                // Le visiteur sélectionne une année
                case 'id_listgc':
                    stepUser=2;
                    var year = $(o).val();
                    if(!G_isNumeric(year)){
                        G_alert('invalidChoice')
                        return
                    }
                    G_display($(o).val())
                    break;
            }
            break;
    }
}

function G_display(par){
    switch(stepUser){
        // Etape 1 : affichage du selecteur de date
        case 1:
            G_stepBirthday()
            G_setEvent()
            G_setNavigation()
            break;
        // Etape 2 : affichage du Goncourt en relation avec le choix de la date
        case 2:
            G_stepGetGC(par)
            G_setEvent()
            G_setCalendar()
            G_processFieldValue('get')
            G_setNavigation()
            break;
        // Envoi des données du formulaire
        case 3:
            var jsO = $(':input',boxContent).serializeArray()
            $(boxContent).load(fldScript,jsO);
            break;
    }
}

function G_alert(m){
    alert(msg[m][Lng-1])
    return;
}

function G_checkForm(){
    var check = true;
    var n = [];
        n[1] = new Array('un','deux','trois','quatre','cinq','six','sept','huit','neuf','dix');
        n[2] = new Array('one','two','three','four','five','six','seven','eight','nine','ten');
    
    $('.required',boxMain).each  (
                            function(i)  { 
                                            $(this).removeClass('alertBorder') 
                                            if(!check)return
                                            //$(boxMain).data(this.name,this.value)
                                            switch(this.name){
                                                case 'fld_email':
                                                    //alert(boxBlackhole+' '+this.name)
                                                    axData = {target:'forjavascript',step:'validEmail',mail:this.value}
                                                    //$(boxBlackhole).css('border','1px solid blue')
                                                    $(boxBlackhole).load(fldScript,axData)
                                                    eval($(boxBlackhole).html())
                                                    //alert(check)
                                                    if(!check){
                                                        $(this).addClass('alertBorder') 
                                                        G_alert('wrongMail')
                                                        check = false;
                                                        return                                                        
                                                    }
                                                    break;
                                                case 'fld_asanswer':
                                                    var q = $('#id_asquestion').val()
                                                    var v = (this.value.length)?this.value:0
                                                    //alert(n[Lng][q.length-1]+' '+v)
                                                    if(n[Lng][q.length-1]!=v){
                                                        $(this).addClass('alertBorder') 
                                                        G_alert('badAsNumber')
                                                        check = false;
                                                        return                                                        
                                                    }
                                                    break;
                                                case 'fld_ascode':
                                                    axData = {target:'forjavascript',step:'validSecureCode',ascode:this.value}
                                                    $(boxBlackhole).load(fldScript,axData)
                                                    eval($(boxBlackhole).html())
                                                    if(!check){
                                                        $(this).addClass('alertBorder') 
                                                        G_alert('wrongCode')
                                                        $('.imgCode',boxMain).attr('src', 'include/image_code.php?r='+Math.random())
                                                        check = false;
                                                        return                                                        
                                                    }                                                    
                                                    break;
                                                default:
                                                    if(!this.value.length){
                                                        $(this).addClass('alertBorder') 
                                                        G_alert('requiredField')
                                                        check = false;
                                                        return
                                                    }
                                                    break;    
                                            }
                                        }
                        )    
    return check;
}

function G_setCalendar(){
    var y = new Date()
    if($.browser.msie){
        var ds = y.getYear();
    } else {
        var ds = 1900+y.getYear()
    }
    var de = ds+1      
    $('#id_arrivalDate').datepicker({ yearRange:ds+':'+de,minDate:y});    
    $('#id_arrivalDate').datepicker($.datepicker.regional[dp[Lng]]); 
}

function G_stepBirthday(){
    axData = {target:'forjavascript',step:'getBirthday'}
    boxContent.load(fldScript,axData)    
}

function G_stepGetGC(year){
    axData = {target:'forjavascript',step:'getGoncourt',year:year}    
    boxContent.load(fldScript,axData)    
}

function G_setAjaxDefault(){
    $.ajaxSetup({async:false,cache:false,type:'POST'})
}

function G_setJSDefault(){
    boxMain         =   $('#boxGift')
    boxContent      =   $('.content',boxMain);
    boxBlackhole    =   $('.blackhole',boxMain);
    fldScript       =   $('.parCurrentPage',boxMain).val();    
    Lng             =   $('.parCurrentLng',boxMain).val();    
}

function G_setEvent(){
    $(boxMain).unbind('change.gc');
    $(boxMain).unbind('click.gc');
    $('SELECT',boxMain).bind('change.gc',G_event);
    $('.link',boxMain).bind('click.gc',G_event);
    $('.output',boxMain).show(2000);
}

function G_setNavigation(){
    //if($('.navigation',boxMain))alert('Navigation')
}

function G_isNumeric(val){
    var re = /[0-9]+/
    return (val.match(re)==null)?false:true;
}

function G_processFieldValue(op){
    switch(op){
        case 'set':
            $('.visitor',boxMain).each  (
                                    function(i)  { 
                                                    $(boxMain).data(this.name,this.value)
                                                }
                                )
            break;
        case 'get':
            $('input.visitor[@type="text"]',boxMain).each  (
                function(i){
                    $(this,boxMain).val($(boxMain).data(this.name))
                }
            )
            $('textarea.visitor',boxMain).each  (
                function(i){
                    $(this,boxMain).val($(boxMain).data(this.name))
                }
            )
            $('select.visitor',boxMain).each  (
                function(i){
                    $('option[@value='+$(boxMain).data(this.name)+']',this).attr('selected',true)
                }
            )
            break;
    }
    
}
