(function($){

    $.popup = {

        info: function(title, info){
            $.popup._openWindows(title, info, 'OK');
            $('#popupCancel').remove();

            $('#popupOk').click(function(){
                $.popup._closeWindows();
            });
        },

        valid: function(title, valid, callback, ok, annuler){
            $.popup._openWindows(title, valid, ok, annuler);

            if(callback)
            {
                $('#popupOk').click(function(){
                    callback(true);
                });
            }

            $('#popupOk').click(function(){
                $.popup._closeWindows();
            });
        },

        form: function(title, form, ok, annuler, callback){
            $.popup._openWindows(title, '', ok, annuler);
            html = '';
            for(key in form)
            {
                
                if(form[key].options){
                    element = $.popup._getItemHTML(form[key].type, form[key].options);
                }
                else{
                    element = $.popup._getItemHTML(form[key].type);
                }

                var regValue = new RegExp("({value})", "g");

                if(form[key].value){
                    element = element.replace(regValue, form[key].value);
                }
                else{
                    element = element.replace(regValue, '');
                }

                var regId = new RegExp("({id})", "g");

                if(form[key].id){
                    element = element.replace(regId, 'popupInput'+form[key].id);
                }
                else{
                    element = element.replace(regId, '');
                }
                

                html = html + form[key].label + '<br/>' + element + '<br/><br/>';
            }

            //On enleve le <br/> en trop
            html = html.slice(0,-5);

            $('#popupText').html(html);

            if(callback)
            {
                $('#popupOk').click(function(){
                    result = '{';
                    for(i in form)
                    {
                        if (form[i].type == 'radio'){
                            result += '"'+form[i].id+'":"'+$('input[type=radio][name=popupInput' + form[i].id + ']:checked').attr('value')+'",';
                        }
                        else{
                            result += '"'+form[i].id+'":"'+$('#popupInput'+form[i].id).val()+'",';
                        }
                    }
                    result = result.slice(0,-1);
                    result += '}';
                    result = JSON.parse(result)
                    callback(result);
                    $.popup._closeWindows();
                });
            }

            $.popup._setPosition();
        },

        infosClient:function(title, value, ok, annuler, callback){
            $.popup._openWindows(title, '', ok, annuler);
            var HTML =  '<table id="infosClients">'+
                        '<tr>'+
                            '<td>Nom</td>'+
                            '<td><input type="text" id="popupNom" tabindex="1"/></td>'+
                            '<td>Email</td>'+
                            '<td><input type="text" id="popupEmail" tabindex="11"/></td>'+
                        '</tr>'+
                        '<tr>'+
                            '<td>Prénom</td>'+
                            '<td><input type="text" id="popupPrenom" tabindex="2"/></td>'+
                            '<td>Mot de passe</td>'+
                            '<td><input type="password" id="popupPass" tabindex="12"/></td>'+
                        '</tr>'+
                        '<tr>'+
                            '<td>Rue</td>'+
                            '<td><input type="text" id="popupRue" tabindex="3"/></td>'+
                            '<td>Confirmation</td>'+
                            '<td><input type="password" id="popupPassConfirm" tabindex="13"/></td>'+
                        '</tr>'+
                        '<tr>'+
                            '<td>Complement</td>'+
                            '<td><input type="text" id="popupComplement" tabindex="4"/></td>'+
                            '<td>Licence</td>'+
                            '<td><input type="text" id="popupLicence" tabindex="14"/></td>'+
                        '</tr>'+
                        '<tr>'+
                            '<td>Code Postal</td>'+
                            '<td><input type="text" id="popupCodePostal" tabindex="5"/></td>'+
                            '<td>Championnat</td>'+
                            '<td><select id="popupChampionnat" tabindex="15"><option value="1">Oui</option><option value="0" selected>Non</option></select></td>'+
                        '</tr>'+
                        '<tr>'+
                            '<td>Ville</td>'+
                            '<td><input type="text" id="popupVille" tabindex="6"/></td>'+
                            '<td>Lequel</td>'+
                            '<td><input type="text" id="popupNomChampionnat" tabindex="16"/></td>'+
                        '</tr>'+
                        '<tr>'+
                            '<td>Pays</td>'+
                            '<td><input type="text" id="popupPays" tabindex="7"/></td>'+
                            '<td>Chrono</td>'+
                            '<td><input type="text" id="popupChrono" tabindex="17"/></td>'+
                        '</tr>'+
                        '<tr>'+
                            '<td>Fixe</td>'+
                            '<td><input type="text" id="popupFixe" tabindex="8"/></td>'+
                            '<td>Votre moto</td>'+
                            '<td id="popupContainerMoto">'+
                                '<select id="popupMarque" tabindex="18">'+
                                '</select>&nbsp;'+
                                '<select id="popupModele" tabindex="19">'+
                                '</select>&nbsp;'+
                                '<select id="popupAnnee" tabindex="20">'+
                                '</select>'+
                            '</td>'+
                        '</tr>'+
                        '<tr>'+
                            '<td>Mobile</td>'+
                            '<td><input type="text" id="popupMobile" tabindex="9"/></td>'+
                            '<td>Autre</td>'+
                            '<td><input type="text" id="popupAutreMarque" value="Marque" tabindex="21"/></td>'+
                        '</tr>'+
                        '<tr>'+
                            '<td>Profession</td>'+
                            '<td><input type="text" id="popupProfession" tabindex="10"/></td>'+
                            '<td></td>'+
                            '<td><input type="text" id="popupAutreModele" value="Modèle" tabindex="22"/></td>'+
                        '</tr>'+
                        '<tr>'+
                            '<td></td>'+
                            '<td></td>'+
                            '<td></td>'+
                            '<td>'+
                            '<select id="popupAutreAnnee" tabindex="23">'+
                            '</select>'+
                            '</td>'+
                        '</tr>'+
                        '</table>';
            $('#popupText').html(HTML);

            $.getJSON(
                "scripts/loadMarques.php",
                function(data){
                    $("#popupMarque").html("");
                    $.each(data, function(index, array) {
                        $("#popupMarque").append(new Option(array['marque'],array['id']));
                    });
                    if(value != 0)
                    {
                        $("#popupMarque option[value="+value['idMarque']+"]").attr('selected', 'selected');
                        $.getJSON(
                            "scripts/loadModele.php",
                            {"marque": value['idMarque']},
                            function(data){
                                if (data[0].total == 0)
                                {
                                    $.getJSON(
                                        "scripts/loadModele.php",
                                        {"marque": "1"},
                                        function(data){
                                            $("#popupModele").html("");
                                            var select = $("#popupModele");
                                            var options = select.attr('option');
                                            $.each(data, function(index, array) {
                                                $("#popupModele").append(new Option(array['modele'],array['id']));
                                            });
                                            $("#popupMarque").append(new Option('Marque','-'));
                                            $("#popupModele").append(new Option('Modèle','-'));
                                            $("#popupAnnee").append(new Option('Année','-'));
                                            $("#popupMarque option[value=-]").attr('selected', 'selected');
                                            $("#popupModele option[value=-]").attr('selected', 'selected');
                                            $("#popupAnnee option[value=-]").attr('selected', 'selected');
                                    });
                                }
                                else
                                {
                                    $("#popupModele").html("");
                                    var select = $("#popupModele");
                                    var options = select.attr('option');
                                    $.each(data, function(index, array) {
                                        $("#popupModele").append(new Option(array['modele'],array['id']));
                                    });
                                    $("#popupModele option[value="+value['idMoto']+"]").attr('selected', 'selected');
                                }
                                
                        });
                    }
                    else
                    {
                        $("#popupMarque option[value=1]").attr('selected', 'selected');
                        $.getJSON(
                            "scripts/loadModele.php",
                            {"marque": 1},
                            function(data){
                                $("#popupModele").html("");
                                var select = $("#popupModele");
                                var options = select.attr('option');
                                $.each(data, function(index, array) {
                                    $("#popupModele").append(new Option(array['modele'],array['id']));
                                });
                                $("#popupModele option[value="+value['idMoto']+"]").attr('selected', 'selected');
                        });
                    }
            });

            $('#popupMarque').change(function(){
            $.getJSON(
                "scripts/loadModele.php",
                {"marque": $(this).val()},
                function(data){
                    $("#popupModele").html("");
                    var select = $("#popupModele");
                    var options = select.attr('option');
                    $.each(data, function(index, array) {
                        $("#popupModele").append(new Option(array['modele'],array['id']));
                    });
            });

            });

            d = new Date();
            depart = d.getFullYear();
            annee = '';
            for(var i = depart; i>=1990; i--)
            {
                annee = annee + '<option value="'+ i +'">'+ i +'</option>';
            }


            $('#popupAnnee').html(annee);
            $('#popupAutreAnnee').html(annee);
            $('#popupAutreAnnee').prepend('<option value="-" selected="selected">Annee</option>');
            if(value != 0)
            {
                $("#popupAnnee option[value="+value['anneeMoto']+"]").attr('selected', 'selected');

                $('#popupNom').val(value['nom']);
                $('#popupPrenom').val(value['prenom']);
                $('#popupRue').val(value['rue']);
                $('#popupComplement').val(value['complement']);
                $('#popupCodePostal').val(value['codePostal']);
                $('#popupVille').val(value['ville']);
                $('#popupPays').val(value['pays']);
                $('#popupFixe').val(value['telFixe']);
                $('#popupMobile').val(value['telMobile']);
                $('#popupProfession').val(value['profession']);
                $('#popupEmail').val(value['email']);
                $('#popupLicence').val(value['numLicence']);
                
                $('#popupnNomChampionnat').val(value['NomChampionnat']);
                $('#popupChrono').val(value['chrono']);

                if(value['championnat'] == 1)
                {
                    $('#popupChampionnat option[value=1]').attr('selected', 'selected');
                }
                else
                {
                    $('#popupChampionnat option[value=0]').attr('selected', 'selected');
                }
            }


            if(callback)
            {
                $('#popupOk').click(function(){
                    form = {0:'Nom', 1:'Prenom', 2:'Rue', 3:'Complement', 4:'CodePostal', 5:'Ville', 6:'Pays', 7:'Fixe', 8:'Mobile', 9:'Profession', 10:'Email', 11:'Licence', 12:'Championnat', 13:'NomChampionnat', 14:'Chrono', 15:'Pass', 16:'PassConfirm', 17:'Marque', 18:'Modele', 19:'Annee', 20:'AutreMarque', 21:'AutreModele', 22:'AutreAnnee'};
                    result = '{';
                    for(i in form)
                    {
                        result += '"'+form[i]+'":"'+$('#popup'+form[i]).val()+'",';
                    }
                    result = result.slice(0,-1);
                    result += '}';
                    result = JSON.parse(result)
                    $.popup._closeWindows();
                    callback(result);
                });
            }

            $('#popupAutreMarque').focusin(function(){
                if($('#popupAutreMarque').val() == 'Marque')
                {
                    $('#popupAutreMarque').val('');
                }
            });

            $('#popupAutreMarque').focusout(function(){
                if($('#popupAutreMarque').val() == '')
                {
                    $('#popupAutreMarque').val('Marque');
                }
            });

            $('#popupAutreModele').focusin(function(){
                if($('#popupAutreModele').val() == 'Modèle')
                {
                    $('#popupAutreModele').val('');
                }
            });

            $('#popupAutreModele').focusout(function(){
                if($('#popupAutreModele').val() == '')
                {
                    $('#popupAutreModele').val('Modèle');
                }
            });
            
        },

        _openWindows: function(title, text, ok, annuler){
            $.popup._closeWindows();
            $('BODY').append(
                '<div id=\'popupWindows\'></div>' +
                    '<div id=\'popupContainer\'>' +
                    '<div id=\'popupClose\'><img id="buttonClose" src="images/closePopup.png" border="0"/></div>' +
                        '<div id=\'popupTitle\'></div>' +
                        '<div id=\'popupText\'></div>' + 
                        '<div id=\'popupButtons\'><br/>' +
                            '<input type=\'button\' id=\'popupCancel\' value=\''+ annuler +'\'/>' +
                            '<input type=\'button\' id=\'popupOk\' value=\''+ ok +'\'/><br/>' +
                        '</div>' +
                    '</div>');

            $('#popupWindows').css({height: $(document).height()});
            $.popup._setPosition();
            $('#popupTitle').text(title);
            $('#popupText').html(text);

            $('#popupContainer').keypress(function(e){
                if(e.keyCode == 27){
                    $('#popupCancel').trigger('click');
                }
            });
                
            $('#popupWindows').dblclick(function(){
                $.popup._closeWindows();
            });
                
            $('#popupCancel').click(function(){
                $.popup._closeWindows();
            }); 

            $('#buttonClose').click(function(){
                $.popup._closeWindows();
            }); 
        },

        _closeWindows: function(){
            $('#popupWindows').remove();
            $('#popupContainer').remove();
        },

        _setPosition: function (){
            setTop = (($(window).height() / 2) - ($("#popupContainer").outerHeight() / 2));
            setLeft = (($(window).width() / 2) - ($("#popupContainer").outerWidth() / 2));
            pos = ($.browser.msie && parseInt($.browser.version) <= 6 ) ? 'absolute' : 'fixed';
            $('#popupContainer').css({
                top: setTop,
                left: setLeft,
                position: pos
            });
        },

        _getItemHTML: function(id, options){
            switch(id)
            {
                case 'text':
                    return '<input type=\'text\' id=\'{id}\' value=\'{value}\'/>';
                break;
                case 'textarea':
                    return '<textarea id=\'{id}\'>{value}</textarea>';
                break;
                case 'password':
                    return '<input type=\'password\' id=\'{id}\' value=\'{value}\'/>';
                break;
                case 'hidden':
                    return '<input type=\'hidden\' id=\'{id}\' value=\'{value}\'/>';
                break;
                case 'checkbox':
                    return '<input type=\'checkbox\' id=\'{id}\' {value} />';
                break;
                case 'select':
                    select = '<select id=\'{id}\'>';
                    for (line in options)
                    {
                        if (options[line].checked == 'checked'){
                            select += '<option value=\'' + options[line].value + '\' selected>' + options[line].label + '</option>';
                        }
                        else{
                            select += '<option value=\'' + options[line].value + '\'>' + options[line].label + '</option>';
                        }
                    }
                    select += '</select>';
                    return select;
                break;
                case 'radio':
                    radio = '';
                    for (line in options)
                    {
                        if (options[line].checked){
                            radio += options[line].label + '<input type=\'radio\' name=\'{id}\' value=\'' + options[line].value + '\' checked/> <br/>';
                        }
                        else{
                            radio += options[line].label + '<input type=\'radio\' name=\'{id}\' value=\'' + options[line].value + '\' /> <br/>';
                        }
                    }
                        
                    
                    return radio;
                break;
            }
        }
    }

    popInfo = function (title, info){
        $.popup.info(title, info);
        $.popup._setPosition();
    };

    popValid = function (title, valid, callback, ok, annuler){
        $.popup.valid(title, valid, callback, ok, annuler);
        $.popup._setPosition();
    };

    popForm = function (title, form, ok, annuler, callback){
        $.popup.form(title, form, ok, annuler, callback);
        $.popup._setPosition();
    };

    popInfosClient = function (title, value, ok, annuler, callback){
        $.popup.infosClient(title, value, ok, annuler, callback);
        $.popup._setPosition();
    };
    
})(jQuery);
