/*
 * Script from NETTUTS.com [by James Padolsey]
 * @requires jQuery($), jQuery UI & sortable/draggable UI modules
 */
try{
    var iNettuts = {     
        jQuery : $,
        
        restore: TLTP_widget.restore,
        timeout: TLTP_utilities.testTimeout,
                
        settings : {
            widgetarray: TLTP_settings.widgetarray, 
            accueilecrid: TLTP_settings.accueilecrid,
            ajaxEnabled: TLTP_settings.ajaxEnabled,
            currentWidget: '', 
            startColumn: '',
            columns : '.dragcolumn',
            widgetSelector: '.widget',
            handleSelector: '.widget-head',
            contentSelector: '.widget-content',
            widgetHead: '.widget-head-middle',
            widgetContent: '.widget-content-middle',
            widgetFooter: '.widget-footer',
            widgetDefault : {
                maximizable: true,
                movable: true,
                removable: true,
                collapsible: true,
                colorClasses : ['color-yellow', 'color-red', 'color-blue', 'color-white', 'color-orange', 'color-green']
            },
            widgetIndividual : {
                intro : {
                    maximizable: false,
                    movable: false,
                    removable: false,
                    collapsible: false
                }
            }
        },

        init : function () {
            this.addWidgetControls();
            this.makeSortable();
             $('.maxslot .main-widget-content-container').each(function(){
                $(this).css({
                    height: 0.5 * $(window).height() 
                });
             }); 
        },
        
        getWidgetSettings : function (id) {
            var $ = this.jQuery,
                settings = this.settings;
            return (id&&settings.widgetIndividual[id]) ? $.extend({},settings.widgetDefault,settings.widgetIndividual[id]) : settings.widgetDefault;
        },
        
        addWidgetControls : function () {
            var iNettuts = this,
                $ = this.jQuery,
                settings = this.settings;               
                $('.btnAddWidget').mousedown(function (e){
                    e.stopPropagation();    
                }).click(function () {
                     var widgetidArray = this.id.split("-");
                     var widgetid = widgetidArray[1];
                                                
                     if (settings.ajaxEnabled){              
                        $.get('../gui/addWidget', {'widgetid': widgetid}, function(data){
                            if (!iNettuts.timeout(data)){     
                                alert("Ce module a \u00E9t\u00E9 ajout\u00E9 \u00E0 votre page personnelle");
                                $('#fragment-' + TLTP_settings.accueilecrid).html(data);
                                
                            }
                            else{
                                alert('Votre session est expir\u00E9e.');
                            }
                        });
                     }                  
                });    
                
                $('.collapse').mousedown(function (e) {
                    e.stopPropagation();    
                }).toggle(function () {
                    $(this).css({backgroundPosition: '0 0'}) 
                            .parents(settings.widgetSelector)
                            .find(settings.contentSelector).hide();
                    $(this).css({backgroundPosition: '0 0'}) 
                            .parents(settings.widgetSelector)
                            .find(settings.widgetFooter).show();
                    return false;
                },function () {
                    $(this).css({backgroundPosition: '-16px 0'})
                        .parents(settings.widgetSelector)
                            .find(settings.contentSelector).show();
                    $(this).css({backgroundPosition: '-16px 0'})
                        .parents(settings.widgetSelector)
                            .find(settings.widgetFooter).hide();
                    return false;
                });                
                    
                $('.remove').mousedown(function (e) {
                    e.stopPropagation();    
                }).click(function () {
                    if(confirm("Ce module sera supprim\u00E9 de votre page personnelle, vous pouvez retrouver ce module dans l'univers concern\u00E9 ou dans la liste des module disponibles")) {
                        // get id 
                        $(this).parents(settings.widgetSelector).animate({
                            opacity: 0    
                        },function () {
                            var element = this;
                            var tltp_ul_id = $(this).parent()[0].id;                           
                            var tempArray = tltp_ul_id.split("-");                     
                            var tabnum = tempArray[0].substring(3);                               
                            var widgetid = $(this).children('table.widget-container')[0].id;   
                            $(this).wrap('<div/>').parent().slideUp(function () {
                                $(this).remove();
                            });                                                    
                            // remove the widget from widgetarray
                            settings.widgetarray[widgetid].tab = "-1";
                            settings.widgetarray[widgetid].column = "-1";
                            settings.widgetarray[widgetid].row = "-1";
                       
                            var tempwidgetid = widgetid.split("-");
                            var serverwidgetid = tempwidgetid[0];                                  
                            // check if widget is on Accueil tab and uncheck the corresponding checkbox in widget disponible accordion
                            if (tabnum == settings.accueilecrid && settings.ajaxEnabled){
                                iNettuts.removeWidgetFromAccordion(serverwidgetid);           
                            }                                    
                            //do ajax call
                            if (settings.ajaxEnabled){
                                $.get('../gui/close', {'widget': serverwidgetid, 'tab': tabnum }, function(data){
                                    if (!iNettuts.timeout(data)){
                                        //alert('Destruction du widget accomplie!');
                                    }
                                    else{
                                        alert('Votre session est expirée.');
                                    }
                                });
                            }
                        });
                    }
                    return false;
                });
								
                $('.maximize').mousedown(function (e) {
                    e.stopPropagation();    
                }).click(function () {
					
					var elem_maxButton = $(this);
					var p = elem_maxButton.css("background-position"); // get background position of button maximize
					
                    $(this).parents(settings.widgetSelector).each(function(){
						 var element = this;
                         // recuperer le numero d'onglet et le numero de colonne
                         var tltp_ul_id = $(this).parent()[0].id;                   // ex: tab1-column1
                         var tempArray = tltp_ul_id.split("-");                     // ex: array containing tab1, column1
                         var tabnum = tempArray[0].substring(3);                            
                         // d'apres le ul id on devine si on est dans tab1-maxslotcol ou dans tab1-column1 par exemple
                         if (tltp_ul_id.search('maxslotcol') < 0){
							
							if(p == "0px 0px") // change le bouton minimize to maximise 
							{
								$('.maximize').css({backgroundPosition: ''});
								elem_maxButton.css({backgroundPosition: '-15px 0'});
							}
						 
                             // restore tout autre widgets qui sont maximized sur cet onglet
                             $('#tab' + tempArray[0].substring(3) + '-maxslotcol').children('li.widget').each(iNettuts.restore);  
							 
                            // maximize
                             var columnnum = tempArray[1].substring(6);     
                             
                             // recuperer l'identifiant du widget                      
                             var widgetid = $(this).children('table.widget-container')[0].id;
                             var tempwidgetid = widgetid.split("-");
                             var serverwidgetid = tempwidgetid[0];        
                             var newParent = document.getElementById("tab" + tabnum + "-maxslotcol");                            
                             // Move to new parent.
                             newParent.appendChild(element);                               
                             $(newParent).find('.main-widget-content-container').each(function(){
                                $(this).css({
                                    height: 0.5 * $(window).height()   
                                }); 
                             });   
                                                                                                                                                                                                                                                                         
                             if (settings.ajaxEnabled){                    
                                $.get('../gui/maximize', {'widget': serverwidgetid, 'useraction': 'maximize', 'tab': tabnum}, function(data){
                                    if (!iNettuts.timeout(data)){
                                    }
                                    else{
                                        alert('Votre session est expirée.');
                                    }
                                });
                             }
                         }
                         else{
                            // restore
                            $(this).each(iNettuts.restore);
							
							if(p == "-15px 0px") // change le bouton maximise to minimize
							{
								elem_maxButton.css({backgroundPosition: ''});
							}
                         } 
                    });
                });           
                                         
                
            $(settings.widgetSelector, $(settings.columns)).each(function () {
                var thisWidgetSettings = iNettuts.getWidgetSettings(this.id);          
            });        
        },
        
        makeSortable : function () {            
            var iNettuts = this,
                $ = this.jQuery,
                settings = this.settings,
                $sortableItems = (function () {
                    try{
                        var notSortable = '';
                        $(settings.widgetSelector,$(settings.columns)).each(function (i) {
                            if (!iNettuts.getWidgetSettings(this.id).movable) {
                                if(!this.id) {
                                    this.id = 'widget-no-id-' + i;
                                }
                                notSortable += '#' + this.id + ',';
                            }
                        });
                        return $('> li:not(' + notSortable + ')', settings.columns);  
                    }
                    catch(err){
                        processError(err, "inettuts/makeSortable");             
                    }           
                })();
            
            $sortableItems.find(settings.handleSelector).css({
                cursor: 'move'
            }).mousedown(function (e) {
                var tr_id = this.id;
                var widgetid = tr_id.substring(3); 
                settings.currentWidget = widgetid;
         
                $sortableItems.css({width:''});
                $(this).parent().css({
                    width: $(this).parent().width() + 'px'
                });
            }).mouseup(function () {
                if(!$(this).parent().hasClass('dragging')) {
                    $(this).parent().css({width: ''});
                } else {
                    $(settings.columns).sortable('disable');
                }
            });

            $(settings.columns).sortable({
                items: $sortableItems,
                connectWith: $(settings.columns),
                handle: settings.handleSelector,
                placeholder: 'widget-placeholder',
                forcePlaceholderSize: true,
                revert: 300,
                delay: 100,
                opacity: 0.8,
                containment: 'document'
            });        
            $(settings.columns).bind('sortupdate', function(event, ui) { 
                try{                                 
                    // change the position of the widget in widgetarray
                    // get ul id
                    var ul_id = this.id;                
                    // get the new position
                    var col = TLTP_widget.getColumnFromUlId(ul_id);
                    var tab = TLTP_widget.getTabFromUlId(ul_id);
                    var widgetcount = 1;    // start count on 1
                    var widgets = "";

                    var children = $(this).children('li.widget');
                    for(var i=0; i<children.length; i++){
                        var tempwidget = children[i];
                        if (tempwidget != null && $(tempwidget).hasClass(settings.widgetSelector) && !($(tempwidget).hasClass('nodisplay'))){
                            // rearrange all widgets in the column
                            var widgetid = $(tempwidget).children('table.widget-container')[0].id;
                            var tempwidgetid = widgetid.split("-");
                            var serverwidgetid = tempwidgetid[0];                               
                            var num = widgetid.substring(6);
                            //var widgetindex = widgetid + "-" + tab;
                            if (parseInt(num) > 0){   
                                iNettuts.settings.widgetarray[widgetid].column = col;
                                iNettuts.settings.widgetarray[widgetid].tab = tab; 
                                iNettuts.settings.widgetarray[widgetid].row = widgetcount++;  
                                widgets = widgets + serverwidgetid + ","; 
                            }                                             
                        }
                    }
                    if (settings.ajaxEnabled){ 
                        $.get('../gui/sort', {'widgets': widgets, 'column': col, 'tab': tab}, function(data){
                            if (!iNettuts.timeout(data)){
                            }
                            else{
                                alert('Votre session est expirée.');
                            }
                        });
                    }  
                    var id = $(this).parents('.tabsheet').attr('id');
                    var divheight1 = $(this).parents('.tabsheet').children('.inline-div').height();
                    var divheight2 = $(this).parents('.inline-div').height();
                    var divheight = (divheight1<divheight2) ? divheight2 :divheight1;
                    if (id!=null && id != ""){
                        if (divheight<430){
                            $('#'+id).css("height","430px");    
                        }
                        else if (divheight>430){
                            $('#'+id).css("height","");    
                        }
                    }              
                }
                catch(err){    
                    processError(err, "function for event sortupdate");       
                }
            });
            $(settings.columns).bind('sortstop', function(event, ui) {
                settings.startColumn = this.id;
                $(ui.helper).addClass('dragging');  
            });
            $(settings.columns).bind('sortstart', function(event, ui) { 
                $(ui.item).removeClass('dragging');
            });              
        },
        
        removeWidgetFromAccordion : function(widgetid){
            $('#chk'+widgetid).each(function(){
                this.checked = false;
            });
        }
    };
}
catch(err){
     processError(err, "inettuts");       
}

//press, retouche, cordonnerie
function txtAreaBackgroundFocus(idTxtArea)
{
	document.getElementById(idTxtArea).style.backgroundPosition = "0px 80px";
}
	
function txtAreaBackgroundBlur(idTxtArea)
{
	if(document.getElementById(idTxtArea).value == "")
	{
		document.getElementById(idTxtArea).style.backgroundPosition = "0px 0px";
	}
}
