(function($) {
        $.docGallerie = function(){alert('ajaxLogin v0.1');}
        $.fn.docGallerie = function(settings) {
        settings = jQuery.extend({
                uploadDir : baseUrl+ 'public/upload',
                deleteUrl: false,
                controllerUrl : false,
                pictureUrl: baseUrl+'ressources/galleriedoc/mime/',
                sortUrl : false,
                isProtectedUrl: false,
                id : '#gallerieHolder',
                admin: true

            },settings);

         //Variables globales
         var width;
         var height;
         var firstOne = true;
         var basicOrder = new Array();
         var artId;

         //On lance la fonction pour récupérer les données
         refreshTable();
         
 
         function refreshTable(){

                  $.ajax({
                             url: settings.controllerUrl,
                             type: "POST",
                             data: "",
                             dataType: "json",
                             error: function () {alert('Impossible de contacter le serveur')},
                             success: function(resp)
                                    {
                                      populate(resp);
                                    }
                      });
         }

        //On injecte le contenu dans la div
         function populate(resp){
           
            var data = eval(resp);
            var id = settings.id.substr(1, settings.id.length);
            var markup = '<ul id="'+id+'-linkListDGM" class="galleryManager ui-helper-reset ui-helper-clearfix">';
            for(i = 0; i < data.total; i++){
                  basicOrder[i] = "db-"+data.files[i].id;
                  markup +='<li class="ui-widget-content ui-corner-tr" id="db-'+data.files[i].id+'" ">\
                                <h5 class="ui-widget-header">'+data.files[i].name.substr(0, 15)+'</h5>\
                                <img src="'+settings.pictureUrl+data.files[i].picture+'.png" alt="'+data.files[i].name+'" width="90px;" id="pict-'+data.files[i].id+'" >';
                 if(settings.admin){
                     markup +='<div style="clear:both;"><a href="'+settings.pictureUrl+data.files[i].picture+'.png" title="Taille réel" class="ui-icon ui-icon-zoomin seeDoc" id="see-'+data.files[i].id+'">Voir</a>\
                                <a href="link/to/trash/script/when/we/have/js/off" title="Supprimer l\'image" class="ui-icon ui-icon-trash deletePicture" id="del-'+data.files[i].id+'" >Supprimer</a></div>\
                            </li>';
                 }else{
                     markup += '<div style="clear:both;"><a href="'+data.files[i].path+'" title="Visualiser l\'image" class="ui-icon ui-icon-arrowthickstop-1-s deletePicture" id="del-'+data.files[i].id+'" >Télécharger</a></div>\
                                </li>';
                 }

                                
            } 
            markup +='</ul>' 
            $(settings.id).empty();
            $(settings.id).append(markup) ;

            if(settings.admin){
                if(! $(settings.id).next("div").hasClass("protectFile")){
                    $(settings.id).after('<div class="protectFile"><label title="Les documents protégés ne seront que visibles par un utilisateur ayant le droit : Voir les documents ">Protéger les documents :</label><input id="isProtected" type="checkbox" '+data.isProtect+'></div>')
                }
            }

            if(settings.admin){
                animate();
            }else{
                basicAnimate();
            }
         }
         
         function basicAnimate(){
             $(settings.id+'-linkListDGM').sortable();
         }

         //On lance les fonctions de suppression, agrandissement, et sortable
         function animate(){

             $(function(){
               $("#isProtected").click(function(){      
                   $.ajax({
                             url: settings.isProtectedUrl,
                             type: "GET",
                             dataType: "json",
                             success: function(resp)
                                    {
                                        if(resp != true){
                                            alert(resp);
                                        }

                                    }
                      }); 
               })


              $('.seeDoc').click(function(event){
                   var id = this.id;
                   var dbId = id.substr(4, id.length);
                   var img = '#pict-'+dbId;
                   var target = event.target;
                   var title = $(img).attr('alt');
                   viewLargerImage(target, title,dbId);
                  return false;
              })

              $('.deletePicture').click(function(){
                var id = this.id;
                deleteImage(id.substr(4, id.length));
                return false;
              })
              
               $(settings.id+'-linkListDGM').sortable({
			update: function(event, ui) {
				var order = $(settings.id+'-linkListDGM').sortable('toArray');
                                reOrder(order);
			}
		});

                //On cherche les éléments déplacés et on met à jour la BDD
                function reOrder(order){
                   var start;
               
                   for(var i=0; i< order.length; i++){
                        //alert("base: "+basicOrder[i]+"courant: "+order[i]);
                        if(basicOrder[i] != order[i] ){
                               start = i;
                               break;
                        }
                   }
                   basicOrder = order;
                   var json = {"start": start,"list": order};
                   //Envois des données afin de sauvegarder l'ordre'
                   $.ajax({
                             url: settings.sortUrl,
                             type: "POST",
                             data: "sortList="+JSON.stringify(json),
                             dataType: "json",
                             error: function () {alert('Impossible de contacter le serveur')},
                             success: function(resp)
                                    {
                                        if(resp != true){
                                            alert(resp);
                                        }

                                    }
                      });

                }
                

                //On injecte l'image dans un markup et on affiche la dialoge'
                function viewLargerImage(target, title, dbId ) {
                        var src= target;

                        if(firstOne){
                            var markup ='<img id="viewImage" alt="chargement en cours" style="display:none;  margin-left: 20px;" src="'+src+'">';
                            $('body').append(markup);
                            firstOne = false;
                        }else{
                           $( "#viewImage" ).attr("src", src);
                        }
                       
                        setTimeout(function() {
                            $( "#viewImage" ).dialog({
                                title: title,
                                height: height,
                                width: width,
                                resizable:false,
                                modal: true,
                                close: function(event, ui) {
                                    $("#viewImage").attr("src","");
                                }


                            });
                        },2);

		}

                //On supprime l'image des bdd et on la fait disparaitre'
                function deleteImage(imageId){
                     $.ajax({
                             url: settings.deleteUrl,
                             type: "POST",
                             data: "id="+imageId,
                             dataType: "json",
                             error: function () {alert('Impossible de contacter le serveur')},
                             success: function(resp)
                                    {
                                        if(resp == true){
                                             var removeLiId = '#db-'+imageId ;
                                             $(removeLiId).fadeOut("slow", function(){$(this).remove();});
                                        }else{
                                            alert(resp);
                                        }

                                    }
                      });
                }

            })
         }

    };

    





})(jQuery);

