/*
----------------------------------------------------------------
Title : ArteoMenuSortableLib.js
Author : Cedric Radicia
Description :
    Gestion du menu triable
Lib externes utilise:
    - jQuery: http://jquery.com/
Created : 2009/02/10
Modified : 2009/02/10
----------------------------------------------------------------
*/
(function(Arteo) {
    Arteo.extend({ MenuSortable: function() { } });
    
    Arteo.MenuSortable.extend = extend;
    Arteo.MenuSortable.extend({
        webServicePath : Arteo.domain + "/Utility/ShopWebService.asmx/", // Chemin vers les WebService
        /*
        ** METHODES
        */
    	init: function() { // Initialisation du tri sur le menu
    	    Arteo.debug("[MenuSortable]: initialisation");
            jQuery(".menu-list li").each( function(i, elem) {
                if (jQuery(this).attr("ismovable") == 'true') {
                    jQuery(this).attr("class", "sortableItem");
                    jQuery(".menu-list li a").eq(i).before("<div class=\"menuPane editionMenuPanel\"></div>");
                }
                /* transparence du picto de tri */
                jQuery(".editionMenuPanel").ifixpng();
            });
            Arteo.MenuSortable.setMenuSortable();
    	},
    	setMenuSortable: function() { // Gestion de la methode de tri sur le menu
    	    Arteo.debug("[MenuSortable]: initialisation du menu via jQuery");
            if (jQuery(".menu-list").length != 0)
            {
                jQuery(".menu-list").sortable({
                    items: "li.sortableItem",
                    placeholder: 'sortHelper',
                    tolerance: 'intersect',
                    opacity: 0.5,
                    scroll: true,
                    handle: 'div.menuPane',
                    distance: 5,
                    revert: true,
                    update: function(e, ui) {
                        jQuery(".menu-list").sortable("disable");
                        jQuery(".menu-list").append(jQuery("<div class=\"editionMenuPanelWaiting\"></div>"));
                        /* creation du tableau avec le nouvel ordre */
                        var menuOrdered = new Array();
                        var serial = jQuery(".menu-list").sortable('serialize', {attribute: 'menuid'} );
                        var serialTab = serial.split('&');
                        for(var i=0; serialTab.length>i; ++i)
                            menuOrdered.push(parseInt(serialTab[i].split('[').shift()));
    
                        Arteo.MenuSortable.updateMenuSortable(menuOrdered);
                    }
                });
            }
    	},
    	
    	updateMenuSortable: function(menuOrdered) { // Mise a jour du menu triable
    	    Arteo.debug("[MenuSortable]: Update du menu");
    	    Arteo.debug("[MenuSortable]: Webservice: " + Arteo.MenuSortable.webServicePath + "SetNewOrder");
    	    Arteo.debug("[MenuSortable]: New order: " + menuOrdered.toString() );
        	/* updateMenuSortable: Methode d'ordonencement du menu */
            jQuery.ajaxDotNet(Arteo.MenuSortable.webServicePath + "SetNewOrder", {
                verb: "POST",
                data: {menu: menuOrdered, hubId : 262},
                success: function(obj) {
                    jQuery(".menu-list").sortable("enable");
                    jQuery(".editionMenuPanelWaiting").remove();
            	    Arteo.debug("[MenuSortable]: Update reussi");
                },
                error: function(obj) {
            	    Arteo.debug("[MenuSortable]: Update Error:"+ obj);
                }
            });
    	}
    	
    });
})(Arteo);
