Ignore:
Timestamp:
09/17/12 14:30:47 (12 years ago)
Author:
douglas
Message:

Ticket #0000 - Copiadas as alterações do Trunk. Versão final da 2.4.2.

Location:
branches/2.4
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2.4

  • branches/2.4/prototype/modules/calendar/js/helpers.js

    r6972 r7228  
    101101} 
    102102 
    103 /* 
    104 function listEvents(){ 
    105         var list = $('.fc-header-right').find('.fc-button.fc-button-agendaDay').clone(); 
     103function printNow(){ 
     104        if($("#calendar").fullCalendar('getView').name == "agendaWeek" || $("#calendar").fullCalendar('getView').name == "basicWeek" || $("#calendar").fullCalendar('getView').name == "year") 
     105                alert('A tela de impressão será melhor visualizada com a preferência "Paisagem" do seu browser selecionada.'); 
     106                 
     107        var window_print = window.open('','ExpressoCalendar','width=800,height=600,scrollbars=yes');         
     108        window_print.document.open(); 
     109 
     110        var start = $("#calendar").fullCalendar('getView').visStart.getTime()/1000; 
     111        var end = $("#calendar").fullCalendar('getView').visEnd.getTime()/1000; 
     112        var criteria = DataLayer.criteria("schedulable:calendar", {'start':start, 'end':end} ); 
     113         
     114        var data = DataLayer.get("schedulable:print", criteria);         
     115 
     116        if($("#calendar").fullCalendar('getView').name == "month"){                              
     117                window_print.document.write(DataLayer.render('templates/calendar_month_print.ejs', { 
     118                        'InfoPage' : $("#calendar").fullCalendar('getView').title, 
     119                        'days' : data 
     120                } )); 
     121        } 
     122        if($("#calendar").fullCalendar('getView').name == "agendaDay" || $("#calendar").fullCalendar('getView').name == "basicDay"){                             
     123                window_print.document.write(DataLayer.render('templates/calendar_day_print.ejs', { 
     124                        'InfoPage' : $("#calendar").fullCalendar('getView').title, 
     125                        'days' : data 
     126                } )); 
     127        } 
     128        if($("#calendar").fullCalendar('getView').name == "agendaWeek" || $("#calendar").fullCalendar('getView').name == "basicWeek"){ 
     129                window_print.document.write(DataLayer.render('templates/calendar_week_print.ejs', { 
     130                        'InfoPage' : $("#calendar").fullCalendar('getView').title, 
     131                        'days' : data 
     132                })); 
     133                 
     134                var aux = 0; 
     135                setTimeout(function(){$(window_print.document).find(".all-day").each(function(){ 
     136                        if($(this).height() > aux) 
     137                                aux = $(this).height(); 
     138                }); 
     139                $(window_print.document).find(".all-day").each(function(){ 
     140                        $(this).height(aux); 
     141                }); 
     142                $(window_print.document).find(".all-day-line .write").height(aux); 
     143                aux = 0; 
     144                },20); 
     145        } 
     146        if($("#calendar").fullCalendar('getView').name == "year"){       
     147                window_print.document.write(DataLayer.render('templates/calendar_year_print.ejs', { 
     148                        'html' : $('#calendar .fc-content').html(), 
     149                        'header': $('#calendar').find('.fc-header-center h2').text() 
     150                } )); 
     151        }                
     152        window_print.document.close(); 
     153        window_print.print(); 
     154} 
     155 
     156function printEvents(){ 
     157        //var html = DataLayer.render( path + 'templates/attendee_permissions.ejs', {} ); 
     158        var print = $('.fc-header-right').find('.fc-button.fc-button-agendaDay').clone(); 
     159 
    106160        $('.fc-header-right').find('.fc-button-year').toggleClass('fc-corner-right'); 
    107         list.addClass('fc-corner-right'); 
    108         list.addClass('fc-button-listagem'); 
    109         list.removeClass('fc-button-agendaDay'); 
    110         list.removeClass('fc-corner-left'); 
    111         list.find('.fc-button-content').html('Listagem'); 
    112         $('.fc-header-right').append(list); 
    113 } 
    114 */ 
     161        print.addClass('fc-corner-right'); 
     162        print.addClass('fc-button-print'); 
     163        print.removeClass('fc-button-agendaDay'); 
     164        print.removeClass('fc-corner-left'); 
     165        print.find('.fc-button-content').html('Imprimir'); 
     166        $('.fc-header-right').append(print); 
     167        $('.fc-button-print').click(function(){ 
     168            printNow(); 
     169        }); 
     170} 
    115171 
    116172/* 
     
    122178function eventDetails( objEvent, decoded, path, isMail, repeat) 
    123179{ 
     180 
     181    $('.qtip.qtip-blue').remove(); 
     182 
    124183    attendees = {}; 
    125184         
     
    399458        modal:true,  
    400459        autoOpen: false, 
    401         width:702,  
     460        width:701,  
    402461        position: 'center',  
    403462        close: function(event, ui) { 
     
    883942    timeFormat: "hh:mm tt", 
    884943    onSelect: function (selectedDateTime){ 
    885         if(!(User.preferences.hourFormat.length == 5)) 
    886             $(this).val(selectedDateTime.replace(/[\.]/gi, ""));                                                                 
    887         updateMap(); 
     944        if ((selectedDateTime.value == '__:__') || (selectedDateTime.value == '__:__ __')) 
     945                          selectedDateTime.value = ""; 
     946                if(!(User.preferences.hourFormat.length == 5)) 
     947                $(this).val(selectedDateTime.replace(/[\.]/gi, ""));                                                             
     948                updateMap(); 
    888949    }, 
    889950    onClose : function (selectedDateTime){ 
    890951        if(!(User.preferences.hourFormat.length == 5)) 
    891952            $(this).val(selectedDateTime.replace(/[\.]/gi, "")); 
     953    }, 
     954    beforeShow: function (selectedDateTime) { 
     955                if ((selectedDateTime.value == '__:__') || (selectedDateTime.value == '__:__ __')) 
     956                        selectedDateTime.value = ""; 
    892957    } 
    893958}); 
     
    9361001// load template of attendees 
    9371002var blkAddAtendee = UI.dialogs.addEvent.find('#calendar_addevent_details6').append(attendeeHtml); 
    938 if(objEvent.attendee.length) 
    939     callbackAttendee(); 
     1003if(objEvent.attendee.length)  
     1004                callbackAttendee();  
    9401005/** 
    941                                 Opções de delegação do participante/organizer 
    942                         */               
     1006Opções de delegação do participante/organizer 
     1007*/               
    9431008blkAddAtendee.find(".button.participant-delegate").button({ 
    9441009    icons: { 
     
    9681033 
    9691034UI.dialogs.addEvent.find(".attendee-list-add .add-attendee-input input").Watermark("digite um email para convidar"); 
    970 /* Trata a edição de um novo participante adicionado 
    971                         *  
    972                         */ 
     1035/*  
     1036 * Trata a edição de um novo participante adicionado 
     1037 */ 
    9731038var hasNewAttendee = false; 
    9741039                         
     
    9781043                         
    9791044blkAddAtendee.find('.attendee-list-add .add-attendee-input input').keydown(function(event) { 
    980                                  
    9811045    if (event.keyCode == '13' && $(this).val() != '' || (event.keyCode == undefined && $(this).val() != '')) { 
    9821046        Encoder.EncodeType = "entity"; 
     
    9901054 
    9911055        /** 
    992                                          * email válido? 
    993                                          */ 
     1056        * email válido? 
     1057        */ 
    9941058        info.match(/^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/) ?  
    9951059        newAttendeeEmail = info : newAttendeeName = info; 
    9961060 
    9971061        /** 
    998                                          * 1) busca no banco para saber se o usuário já existe 
    999                                          *              1.1) se existe, atualiza as info na lista de participantes e nao abre o tooltip 
    1000                                          *              1.2) se não existe 
    1001                                          *                      a) salva como novo usuario externo no banco (apenas com email) 
    1002                                          *                      b) exibe tooltip pedindo o nome 
    1003                                          *                      c) se o usuário preenche tooltip e salva, atualiza com o nome o usuário recém criado 
    1004                                          *                      d) se o usuário cancela o tooltip, fica o usuário salvo apenas com email e sem nome 
    1005                                          */ 
     1062        * 1) busca no banco para saber se o usuário já existe 
     1063        *               1.1) se existe, atualiza as info na lista de participantes e nao abre o tooltip 
     1064        *               1.2) se não existe 
     1065        *                       a) salva como novo usuario externo no banco (apenas com email) 
     1066        *                       b) exibe tooltip pedindo o nome 
     1067        *                       c) se o usuário preenche tooltip e salva, atualiza com o nome o usuário recém criado 
     1068        *                       d) se o usuário cancela o tooltip, fica o usuário salvo apenas com email e sem nome 
     1069        */ 
    10061070 
    10071071        var user = DataLayer.get('user', ["=", "mail", $(this).val()]); 
     
    10121076                                         
    10131077        /** 
    1014                                          * guarda o último tooltip aberto referente à lista de participantes  
    1015                                          */ 
     1078        * guarda o último tooltip aberto referente à lista de participantes  
     1079        */ 
    10161080        lastEditAttendeeToolTip = []; 
    10171081 
    10181082        /** 
    1019                                          * Valida email e salva um participante externo  
    1020                                          */ 
     1083        * Valida email e salva um participante externo  
     1084        */ 
    10211085        var saveContact = function() { 
    10221086            Encoder.EncodeType = "entity"; 
     
    11921256    $(this).val(''); 
    11931257 
    1194 } else if (!skipAddNewLine) {            
     1258} else if (!skipAddNewLine) { 
    11951259    /** 
    1196                                                 * a) salva como novo usuario externo no banco (apenas com email) e... 
    1197                                                 * adiciona novo contato externo à lista de convidados 
    1198                                                 */ 
     1260    * a) salva como novo usuario externo no banco (apenas com email) e... 
     1261    * adiciona novo contato externo à lista de convidados 
     1262    */ 
    11991263 
    12001264    userId = DataLayer.put('user', { 
     
    12851349 
    12861350/**  
    1287                         * Trata a busca de usuários para adição de participantes 
    1288                         */ 
     1351* Trata a busca de usuários para adição de participantes 
     1352*/ 
    12891353blkAddAtendee.find('.add-attendee-search .ui-icon-search').click(function(event) { 
    12901354    blkAddAtendee.find('.add-attendee-search input').keydown(); 
     
    13741438    } 
    13751439}); 
     1440 
    13761441//$('.block-add-attendee .search-result-list').selectable(); 
    13771442 
     
    13951460                        }); 
    13961461                }); 
    1397                 $('.attachment-list input').remove(); 
    1398                 $('.row.fileupload-buttonbar .attachments-list p').remove(); 
     1462                $('div.new-event-win .attachment-list input').remove(); 
     1463                $('div.new-event-win .row.fileupload-buttonbar .attachments-list p').remove(); 
     1464                $('div.new-event-win .btn-danger.delete').addClass('hidden'); 
    13991465            } 
    14001466        }}); 
     
    14151481    text: false 
    14161482}); 
    1417 var maxSizeFile = 2000000; 
    1418 $('#fileupload').fileupload({ 
    1419     sequentialUploads: true, 
    1420     add: function (e, data) { 
    1421         if(data.files[0].size < maxSizeFile) 
    1422             data.submit(); 
    1423     }, 
    1424     change: function (e, data) { 
    1425         $.each(data.files, function (index, file) { 
    1426             var attach = {}; 
    1427             attach.fileName = file.name; 
    1428             var ext = file.name.split('.'); 
    1429             if(file.name.length > 10) 
    1430                 attach.fileName = ext.length == 1 ? file.name.substr(0, 10) :  file.name.substr(0, 6) + '.' + ext[ext.length -1]; 
    1431             attach.fileSize = formatBytes(file.size); 
    1432             if(file.size > maxSizeFile) 
    1433                 attach.error = 'Tamanho de arquivo nao permitido!!' 
    1434                                  
    1435             $('.attachments-list').append(DataLayer.render(path+'templates/attachment_add_itemlist.ejs', { 
    1436                 file : attach 
    1437             })); 
    1438                                  
    1439             if(file.size < maxSizeFile){ 
    1440                 $('.fileinput-button.new').append(data.fileInput[0]).removeClass('new'); 
    1441                 $('.attachments-list').find('[type=file]').addClass('hidden'); 
    1442                                          
    1443             }else 
    1444                 $('.fileinput-button.new').removeClass('new'); 
    1445                                  
    1446                                  
    1447             $('.attachments-list').find('.button.close').button({ 
    1448                 icons: { 
    1449                     primary: "ui-icon-close" 
    1450                 }, 
    1451                 text: false 
    1452             }).click(function(){ 
    1453                 var idAttach = $(this).parent().find('input[name="fileId[]"]').val(); 
    1454                 $('.attachment-list').find('input[value="'+idAttach+'"]') 
    1455                 $(this).parent().remove(); 
    1456             });  
    1457                                  
    1458         }) 
    1459         }, 
    1460     done: function(e, data){ 
    1461         var currentUpload = $('.progress.after-upload:first').removeClass('after-upload').addClass('on-complete').hide(); 
    1462  
    1463         if(!!data.result && data.result != "[]"){ 
    1464             var newAttach = (attch = jQuery.parseJSON(data.result)) ? attch : jQuery.parseJSON(data.result[0].activeElement.childNodes[0].data); 
    1465             $('.attachment-list').append('<input tyepe="hidden" name="attachment[]" value="'+newAttach['attachment'][0][0].id+'"/>'); 
    1466             currentUpload.removeClass('on-complete').parents('p') 
    1467             .append('<input type="hidden" name="fileId[]" value="'+newAttach['attachment'][0][0].id+'"/>') 
    1468             .find('.status-upload').addClass('ui-icon ui-icon-check'); 
    1469         }else 
    1470             currentUpload.removeClass('on-complete').parents('p').find('.status-upload').addClass('ui-icon ui-icon-cancel'); 
    1471     } 
    1472 }); 
    1473 $('.attachments-list .button').button(); 
    1474  
    1475 if(!!window.FormData)                    
    1476 $('#fileupload').bind('fileuploadstart', function () { 
    1477     var widget = $(this), 
    1478     progressElement = $('#fileupload-progress').fadeIn(), 
    1479     interval = 500, 
    1480     total = 0, 
    1481     loaded = 0, 
    1482     loadedBefore = 0, 
    1483     progressTimer, 
    1484     progressHandler = function (e, data) { 
    1485         loaded = data.loaded; 
    1486         total = data.total; 
    1487     }, 
    1488     stopHandler = function () { 
    1489         widget 
    1490         .unbind('fileuploadprogressall', progressHandler) 
    1491         .unbind('fileuploadstop', stopHandler); 
    1492         window.clearInterval(progressTimer); 
    1493         progressElement.fadeOut(function () { 
    1494             progressElement.html(''); 
    1495         }); 
    1496     }, 
    1497     formatTime = function (seconds) { 
    1498         var date = new Date(seconds * 1000); 
    1499         return ('0' + date.getUTCHours()).slice(-2) + ':' + 
    1500         ('0' + date.getUTCMinutes()).slice(-2) + ':' + 
    1501         ('0' + date.getUTCSeconds()).slice(-2); 
    1502     }, 
    1503     /* formatBytes = function (bytes) { 
    1504             if (bytes >= 1000000000) { 
    1505                 return (bytes / 1000000000).toFixed(2) + ' GB'; 
    1506             } 
    1507             if (bytes >= 1000000) { 
    1508                 return (bytes / 1000000).toFixed(2) + ' MB'; 
    1509             } 
    1510             if (bytes >= 1000) { 
    1511                 return (bytes / 1000).toFixed(2) + ' KB'; 
    1512             } 
    1513             return bytes + ' B'; 
    1514         },*/ 
    1515     formatPercentage = function (floatValue) { 
    1516         return (floatValue * 100).toFixed(2) + ' %'; 
    1517     }, 
    1518     updateProgressElement = function (loaded, total, bps) { 
    1519         progressElement.html( 
    1520             formatBytes(bps) + 'ps | ' + 
    1521             formatTime((total - loaded) / bps) + ' | ' + 
    1522             formatPercentage(loaded / total) + ' | ' + 
    1523             formatBytes(loaded) + ' / ' + formatBytes(total) 
    1524             ); 
    1525     }, 
    1526     intervalHandler = function () { 
    1527         var diff = loaded - loadedBefore; 
    1528         if (!diff) { 
    1529             return; 
    1530         } 
    1531         loadedBefore = loaded; 
    1532         updateProgressElement( 
    1533             loaded, 
    1534             total, 
    1535             diff * (1000 / interval) 
    1536             ); 
    1537     }; 
    1538     widget 
    1539     .bind('fileuploadprogressall', progressHandler) 
    1540     .bind('fileuploadstop', stopHandler); 
    1541     progressTimer = window.setInterval(intervalHandler, interval); 
    1542 }); 
     1483 
     1484extendsFileupload('event', path); 
    15431485         
    15441486if(objEvent.isShared){ 
     
    15571499} 
    15581500 
    1559 disponibily(objEvent, path, attendees); 
     1501disponibily(objEvent, path, attendees, 'event'); 
    15601502 
    15611503/*Seleciona a agenda padrão para criação de um evento*/ 
     
    15731515 
    15741516UI.dialogs.addEvent.dialog('open'); 
    1575 //$('[href="#calendar_addevent_details7"]').trigger('click'); 
    1576 //$('[href="#calendar_addevent_details2"]').trigger('click'); 
     1517 
    15771518} 
    15781519 
     
    16911632 
    16921633 
    1693 function add_tab_configure_calendar(calendar)  
     1634function add_tab_configure_calendar(calendar, type)  
    16941635{ 
     1636    $('.qtip.qtip-blue').remove(); 
     1637 
    16951638    var calendars = []; 
    16961639    var signatures = []; 
     
    16981641        var calendarAlarms = []; 
    16991642         
    1700     for (var i=0; i<Calendar.signatures.length; i++) { 
    1701         calendars[i]  = Calendar.signatures[i].calendar; 
    1702         signatures[i] = Calendar.signatures[i]; 
    1703         signatures[i].numberDefaultAlarm = signatures[i].defaultAlarms != '' ?  signatures[i].defaultAlarms.length: 0; 
    1704         if (calendar && calendars[i].id == calendar) 
    1705             previewActiveCalendarConf = i; 
    1706     } 
    1707                  
    1708     if(!(document.getElementById('configure_tab'))) 
     1643        for (var i=0; i<Calendar.signatures.length; i++) { 
     1644                if(parseInt(Calendar.signatures[i].calendar.type) == type){ 
     1645                   calendars.push(Calendar.signatures[i].calendar); 
     1646                   signatures.push(Calendar.signatures[i]); 
     1647                   length = signatures.length - 1; 
     1648                   signatures[length].numberDefaultAlarm = signatures[length].defaultAlarms != '' ?  signatures[length].defaultAlarms.length: 0; 
     1649                   if (calendar && calendars[length].id == calendar) 
     1650                           previewActiveCalendarConf = length; 
     1651                } 
     1652   } 
     1653        var tab_selector = ['configure_tab', 'configure_tab_group'];     
     1654    if(!(document.getElementById(tab_selector[type]))) 
    17091655    { 
    17101656        $('.positionHelper').css('display', 'none'); 
    17111657        $('.cal-list-options-btn').removeClass('fg-menu-open ui-state-active'); 
    1712         var tab_title = "Configurações de agendas"; 
    1713         $tabs.tabs( "add", "#configure_tab", tab_title ); 
     1658        if(type == 0){ 
     1659                var tab_title = "Configurações de agendas"; 
     1660        }else{ 
     1661                var tab_title = "Configurações de Grupos"; 
     1662        } 
     1663        $tabs.tabs( "add", "#"+tab_selector[type], tab_title ); 
    17141664                 
    17151665        var dataColorPicker = { 
     
    17341684            DataLayer.render( 'templates/configure_calendars_itemlist.ejs', { 
    17351685                user:User,  
     1686                type:0, 
    17361687                calendar:calendars[nowActive],  
    17371688                signature:signatures[nowActive] 
    17381689                }, function( form_template ){ 
    1739                 var form_content = jQuery('.accordion-user-calendars .ui-accordion-content').eq(nowActive).html( form_template ).find('form'); 
     1690                var form_content = jQuery('#'+tab_selector[type]+' .accordion-user-calendars .ui-accordion-content').eq(nowActive).html( form_template ).find('form'); 
    17401691                form_content.find('.preferences-alarms-list .button').button({ 
    17411692                    text:false,  
     
    17561707 
    17571708                form_content.find('.button-add-alarms').click(function(){ 
    1758                     DataLayer.render( 'templates/alarms_add_itemlist.ejs', {}, function( template ){                                             
     1709                    DataLayer.render( 'templates/alarms_add_itemlist.ejs', {type: 0}, function( template ){                                              
    17591710                        jQuery('.preferences-alarms-list').append(template) 
    17601711                        .find('li:last label:eq(0)').remove().end() 
     
    18621813DataLayer.render( 'templates/configure_calendars.ejs', { 
    18631814    user:User,  
     1815        type: 0, 
    18641816    calendars:calendars,  
    18651817    signatures:signatures 
    18661818}, function( template ){ 
    1867     var template_content = jQuery('#configure_tab').html( template ).find('.configure-calendars-win'); 
     1819    var template_content = jQuery('#'+tab_selector[type]).html( template ).find('.configure-calendars-win'); 
    18681820    template_content.find('.button').button().filter('.save').click(function(evt){ 
    18691821        if(calendarAlarms.length) 
    18701822                DataLayer.removeFilter('calendarSignatureAlarm', {filter: ['IN','id', calendarAlarms]});         
    18711823        template_content.find('form').submit(); 
    1872         $tabs.tabs( "remove", "#configure_tab"); 
     1824        $tabs.tabs( "remove", "#"+tab_selector[type]); 
    18731825        DataLayer.commit( false, false, function( received ){ 
    18741826            delete Calendar.currentViewKey; 
     
    18791831                Calendar.load(); 
    18801832    }).end().filter('.cancel').click(function(evt){ 
    1881         $tabs.tabs( "remove", "#configure_tab"); 
     1833        $tabs.tabs( "remove", "#"+tab_selector[type]); 
    18821834    }); 
    18831835 
     
    19051857        $('.positionHelper').css('display','none'); 
    19061858    $('.cal-list-options-btn').removeClass('fg-menu-open ui-state-active'); 
    1907     $tabs.tabs("select", "#configure_tab"); 
     1859    $tabs.tabs("select", "#"+tab_selector[type]); 
    19081860    $('.accordion-user-calendars').accordion( "activate" , previewActiveCalendarConf ); 
    19091861                 
     
    19131865} 
    19141866 
    1915 function getSelectedCalendars( reverse ){ 
     1867function getSelectedCalendars( reverse, type ){ 
     1868        var selector = ""; 
     1869        if(type == 0) 
     1870                selector = ".my-calendars"; 
     1871        if(type == 1) 
     1872                selector = ".my-groups-task"; 
    19161873    var selecteds = {}; 
    19171874    var cont = 0;  
    19181875    jQuery(function() { 
    1919         jQuery(".my-calendars .calendar-view").each(function(i, obj) {  
     1876        jQuery(selector+" .calendar-view").each(function(i, obj) {  
    19201877            var check_box = obj; 
    19211878            if( reverse ? !check_box.checked : check_box.checked ) { 
     
    19741931} 
    19751932 
    1976 function remove_event(eventId, idCalendar){ 
    1977     $.Zebra_Dialog('Tem certeza que deseja excluir o evento?', { 
     1933function remove_event(eventId, idCalendar, type){ 
     1934    $.Zebra_Dialog('Tem certeza que deseja excluir?', { 
    19781935        'type':     'question', 
    19791936        'overlay_opacity': '0.5', 
     
    19871944                var me = schudableDecode.me.user ? schudableDecode.me.user.id : schudableDecode.me.id; 
    19881945 
    1989                 DataLayer.removeFilter('schedulable', {filter: ['AND', ['=','id',eventId], ['=','calendar',idCalendar], ['=','user', me]]}) 
     1946        var filter = {filter: ['AND', ['=','id',eventId], ['=','calendar',idCalendar], ['=','user', me]]}; 
     1947 
     1948        if(type) 
     1949            filter.filter.push(['=','type',type]); 
     1950 
     1951                DataLayer.removeFilter('schedulable', filter); 
    19901952                Calendar.rerenderView(true); 
    19911953            } 
     
    20291991 
    20301992 
    2031 function remove_calendar(){ 
     1993function remove_calendar(type){ 
    20321994    /* Pode ser assim $('.cal-list-options-btn.ui-state-active').attr('class').replace(/[a-zA-Z-]+/g, ''); */ 
    2033     $.Zebra_Dialog('Todos os eventos desta agenda serão removidos. Deseja prosseguir com a operação?', { 
     1995        if(!!parseInt(type)) 
     1996                var title = 'Todas as tarefas deste grupo serão removidas. Deseja prosseguir com a operação?'; 
     1997        else 
     1998                var title = 'Todos os eventos desta agenda serão removidos. Deseja prosseguir com a operação?'; 
     1999    $.Zebra_Dialog(title, { 
    20342000        'type':     'question', 
    20352001        'overlay_opacity': '0.5', 
     
    20472013                    delete Calendar.currentViewKey; 
    20482014                    Calendar.load(); 
    2049                     refresh_calendars(); 
     2015                    refresh_calendars(type); 
    20502016                }); 
    20512017            } 
     
    20562022} 
    20572023 
    2058 function refresh_calendars(){ 
     2024function refresh_calendars(type){ 
    20592025 
    20602026    var colorsSuggestions = colors_suggestions(); 
     
    20912057                }); 
    20922058        } 
     2059         
    20932060        doMenu(); 
     2061        var currentToolTip = null; 
    20942062        $('#divAppbox').on('scroll',function(){ 
    20952063                if ($('.cal-list-options-btn.fg-menu-open.ui-state-active')){                    
    20962064                        var offset = $('.cal-list-options-btn.fg-menu-open.ui-state-active').offset(); 
    20972065                        if (offset) 
    2098                                 $('.positionHelper').css('top',offset.top); 
     2066                            $('.positionHelper').css('top',offset.top); 
    20992067                } 
    2100                 if ($('.button.config-menu.fg-menu-open')){  
    2101                 var offset = $('.button.config-menu.fg-menu-open').offset();  
    2102                 if (offset)  
    2103                         $('.positionHelper').css('top',offset.top);  
    2104         }    
     2068 
     2069                if ($('.button.config-menu.fg-menu-open')){ 
     2070                        var offset = $('.button.config-menu.fg-menu-open').offset(); 
     2071                        if (offset) 
     2072                            $('.positionHelper').css('top',offset.top); 
     2073                }                
     2074 
     2075                 
     2076                if ($(".new-group.qtip-active").length || $(".new-calendar.qtip-active").length)                         
     2077                    $('.qtip-active').css('top',currentToolTip.offset().top - 50); 
     2078                 
    21052079        }); 
     2080         
    21062081        $('ul.list-calendars .cal-list-options-btn').on('click',function(){doMenu();});          
    21072082         
     2083 
     2084    /***************************************New Calendar***************************************/ 
    21082085        meu_container.find(".button.new-calendar").button({ 
    21092086            icons: { 
     
    21122089            text: false 
    21132090        }).click(function () { 
    2114                  
    2115             if( $('.qtip.qtip-blue.qtip-active').val() !== ''){ 
    2116                 $(this).qtip({ 
    2117                     show: { 
    2118                     ready: true,  
    2119             solo: true,  
    2120             when: { 
    2121                     event: 'click' 
    2122                     } 
    2123                 }, 
    2124                 hide: false, 
    2125                 content: { 
    2126                 text: $('<div></div>').html( DataLayer.render( 'templates/calendar_quick_add.ejs', {} ) ),  
    2127                 title: { 
    2128                 text:'Nova Agenda',  
    2129                 button: '<a class="button close" href="#">close</a>' 
    2130                 } 
    2131                 }, 
    2132                 style: { 
    2133                 name: 'blue',  
    2134             tip: { 
    2135                 corner: 'leftMiddle' 
    2136                 },  
    2137             border: { 
    2138                 width: 4,  
    2139             radius: 8 
    2140                 },  
    2141             width: { 
    2142                 min: 230,  
    2143             max:230 
    2144                 } 
    2145             }, 
    2146             position: { 
    2147             corner: { 
    2148             target: 'rightMiddle', 
    2149             tooltip: 'leftMiddle' 
    2150             }, 
    2151             adjust: { 
    2152             x:0,  
    2153             y:-12 
    2154             } 
    2155             } 
    2156             }) 
    2157         .qtip("api").onShow = function(arg0) { 
    2158             $('.qtip-active .button.close').button({ 
    2159                 icons: { 
    2160                     primary: "ui-icon-close" 
    2161                 }, 
    2162                 text: false 
    2163             }) 
    2164             .click(function(){ 
    2165                 meu_container.find(".button.new-calendar").qtip('destroy'); 
    2166             }); 
    2167             //TODO emplementar tratamento de duplicação de valores no location 
    2168             $('.qtip-active .button.save').button().click(function(){ 
    2169                 for(var i = 0; i < Calendar.calendars.length; i++){ 
    2170                     if(Calendar.calendars[i].location == ( User.me.uid + '/' + $('.qtip-active input').val())){  
    2171                         $.Zebra_Dialog('O nome desta agenda já está sendo utilizada em uma Url de outra agenda. Por favor, informe outro nome para agenda.',{ 
    2172                             'overlay_opacity': '0.5', 
    2173                             'type': 'warning' 
    2174                         }); 
    2175                         meu_container.find(".button.new").qtip('destroy'); 
    2176                         return; 
    2177                     } 
    2178                 } 
     2091                currentToolTip = $(this); 
     2092        var typeCalendar = !!parseInt($(this).attr('class').match(/[0-9]+/g)) ?  
     2093            {type: 'new-group', title: 'Novo Grupo', typeValue: 1, prompt: 'Nome do grupo'} :  
     2094            {type: 'new-calendar', title: 'Nova Agenda', typeValue: 0, prompt: 'Nome da agenda'} 
     2095                 
     2096            if(!$('.qtip.qtip-blue.qtip-active.'+typeCalendar.type).length){ 
     2097 
     2098            $('.qtip.qtip-blue').remove(); 
     2099 
     2100                $(this).qtip({ 
     2101                                show: { 
     2102                       ready: true,  
     2103                   solo: true,  
     2104                   when: { 
     2105                          event: 'click' 
     2106                       } 
     2107                    }, 
     2108                  hide: false, 
     2109                  content: { 
     2110                          text: $('<div></div>').html( DataLayer.render( 'templates/calendar_quick_add.ejs', {} ) ),  
     2111                          title: { 
     2112                              text: typeCalendar.title,  
     2113                              button: '<a class="button close" href="#">close</a>' 
     2114                          } 
     2115                        }, 
     2116                  style: { 
     2117                          name: 'blue',  
     2118                      tip: { 
     2119                              corner: 'leftMiddle' 
     2120                          },  
     2121                   border: { 
     2122                           width: 4,  
     2123                           radius: 8 
     2124                          },  
     2125                      width: { 
     2126                              min: 230,  
     2127                          max:230 
     2128                          } 
     2129                    }, 
     2130               position: { 
     2131                       corner: { 
     2132                           target: 'rightMiddle', 
     2133                           tooltip: 'leftMiddle' 
     2134                       }, 
     2135                       adjust: { 
     2136                            x:0,  
     2137                            y: -12 
     2138                                                 
     2139                       } 
     2140                    } 
     2141            }) 
     2142                .qtip("api").onShow = function(arg0) { 
    21792143                                 
    2180                 var selected; 
    2181                 var color = $('.cal-colors-options-btn').each(function(index){ 
    2182                     if ($(this).is('.color-selected')) 
    2183                         selected = index; 
    2184                 }); 
    2185                 DataLayer.put( "calendarSignature", { 
    2186                     user: User.me.id, 
    2187                     calendar: { 
    2188                         name: Encoder.htmlEncode($('.qtip-active input').val()), 
    2189                         timezone: User.preferences.timezone                              
    2190                     }, 
    2191                     isOwner: 1, 
    2192                     fontColor: colorsSuggestions[selected]['font'].substring(1) , 
    2193                     backgroundColor: colorsSuggestions[selected]['background'].substring(1) , 
    2194                     borderColor: colorsSuggestions[selected]['border'].substring(1) 
    2195                 }); 
    2196                 DataLayer.commit( false, false, function( received ){ 
    2197                     delete Calendar.currentViewKey; 
    2198                     Calendar.load(); 
    2199                     refresh_calendars(); 
    2200                 }); 
    2201                 meu_container.find(".button.new").qtip('destroy'); 
    2202             }); 
    2203                          
    2204             $('.qtip-active .button.cancel').button().click(function(){ 
    2205                 meu_container.find(".button.new").qtip('destroy'); 
    2206             }); 
    2207                          
    2208             $(".qtip-active input").Watermark("Nome da agenda"); 
    2209                          
    2210             $('.qtip-active').keydown(function(event) { 
    2211                 if (event.keyCode == '27') { 
    2212                     meu_container.find(".button.new").qtip('destroy'); 
    2213                 } 
    2214             }); 
    2215                          
    2216             $('.colors-options').prepend(buttons_colors); 
    2217             $('.colors-options .signed-cal-colors-options-btn-0').addClass('color-selected'); 
    2218                                          
    2219             var buttons = $('.cal-colors-options-btn').button(); 
    2220                          
    2221             buttons.click(function(){ 
    2222                 buttons.removeClass('color-selected'); 
    2223                 $(this).addClass('color-selected'); 
    2224             }); 
    2225         }                                
    2226         } 
     2144                    $('.qtip-active .button.close').button({ 
     2145                          icons: { 
     2146                              primary: "ui-icon-close" 
     2147                          }, 
     2148                          text: false 
     2149                    }) 
     2150                    .click(function(){ 
     2151                              $('.qtip.qtip-blue').remove(); 
     2152                    }); 
     2153                     
     2154                 $('.qtip-active').addClass(typeCalendar.type); 
     2155 
     2156                    $('.qtip-active .button.save').button().click(function(){ 
     2157                    if(!typeCalendar.typeValue) 
     2158                                for(var i = 0; i < Calendar.calendars.length; i++){ 
     2159                                    if(Calendar.calendars[i].location == ( User.me.uid + '/' + $('.qtip-active input').val())){  
     2160                                        $.Zebra_Dialog('O nome desta agenda já está sendo utilizada em uma Url de outra agenda. Por favor, informe outro nome para agenda.',{ 
     2161                                            'overlay_opacity': '0.5', 
     2162                                            'type': 'warning' 
     2163                                        }); 
     2164                                        $('.qtip.qtip-blue').remove(); 
     2165                                        return; 
     2166                                    } 
     2167                                } 
     2168                                         
     2169                        var selected; 
     2170                        var color = $('.cal-colors-options-btn').each(function(index){ 
     2171                            if ($(this).is('.color-selected')) 
     2172                                 selected = index; 
     2173                        }); 
     2174                        DataLayer.put( "calendarSignature", { 
     2175                            user: User.me.id, 
     2176                            calendar: { 
     2177                                name: Encoder.htmlEncode($('.qtip-active input').val()), 
     2178                                timezone: User.preferences.timezone, 
     2179                        type: typeCalendar.typeValue                     
     2180                            }, 
     2181                            isOwner: 1, 
     2182                            fontColor: colorsSuggestions[selected]['font'].substring(1) , 
     2183                            backgroundColor: colorsSuggestions[selected]['background'].substring(1) , 
     2184                            borderColor: colorsSuggestions[selected]['border'].substring(1) 
     2185                        }); 
     2186                        DataLayer.commit( false, false, function( received ){ 
     2187                            delete Calendar.currentViewKey; 
     2188                            Calendar.load(); 
     2189                            refresh_calendars(); 
     2190                        }); 
     2191                        $('.qtip.qtip-blue').remove(); 
     2192                    }); 
     2193                                 
     2194                    $('.qtip-active .button.cancel').button().click(function(){ 
     2195                        meu_container.find(".button.new").qtip('destroy'); 
     2196                    }); 
     2197                                 
     2198                    $(".qtip-active input").Watermark(typeCalendar.prompt); 
     2199                                 
     2200                    $('.qtip-active').keydown(function(event) { 
     2201                            if (event.keyCode == '27')  
     2202                              meu_container.find(".button.new").qtip('destroy'); 
     2203                    }); 
     2204                                 
     2205                    $('.colors-options').prepend(buttons_colors); 
     2206                    $('.colors-options .signed-cal-colors-options-btn-0').addClass('color-selected'); 
     2207                                                 
     2208                    var buttons = $('.cal-colors-options-btn').button(); 
     2209                                 
     2210                    buttons.click(function(){ 
     2211                        buttons.removeClass('color-selected'); 
     2212                        $(this).addClass('color-selected'); 
     2213                    }); 
     2214                }                                
     2215           } 
    22272216    }); 
    2228          
     2217 
    22292218    $("img.cal-list-img").click(function(evt) { 
    2230         $(".cal-list-options_1").toggleClass( "hidden" ); 
     2219           $(".cal-list-options_1").toggleClass( "hidden" ); 
    22312220    }); 
    22322221 
     2222    $(".my-groups-task a.title-my-calendars").click(function() { 
     2223        $(".my-groups-task ul.my-list-calendars").toggleClass("hidden") 
     2224        $('.my-groups-task .status-list').toggleClass("ui-icon-triangle-1-s"); 
     2225        $('.my-groups-task .status-list').toggleClass("ui-icon-triangle-1-e"); 
     2226    }); 
     2227 
    22332228    $(".my-calendars a.title-my-calendars").click(function() { 
    2234         $(".my-calendars ul.my-list-calendars").toggleClass("hidden") 
    2235         $('.my-calendars .status-list').toggleClass("ui-icon-triangle-1-s"); 
    2236         $('.my-calendars .status-list').toggleClass("ui-icon-triangle-1-e"); 
     2229        $(".my-calendars ul.my-list-calendars").toggleClass("hidden") 
     2230        $('.my-calendars .status-list').toggleClass("ui-icon-triangle-1-s"); 
     2231        $('.my-calendars .status-list').toggleClass("ui-icon-triangle-1-e"); 
    22372232    }); 
    22382233                 
    22392234    $(".signed-calendars a.title-signed-calendars").click(function() { 
    2240         $(".signed-calendars ul.signed-list-calendars").toggleClass( "hidden"); 
     2235           $(".signed-calendars ul.signed-list-calendars").toggleClass( "hidden"); 
    22412236    }); 
    22422237 
     
    22702265                 
    22712266    $('.calendar-view').click(function(evt){ 
    2272         if($tabs.tabs('option' ,'selected') == 1){ 
    2273             pageselectCallback('', 0); 
     2267        if($tabs.tabs('option' ,'selected') != 0){ 
     2268            pageselectCallback('', 0, false, type); 
    22742269        } 
    22752270                         
     
    22852280} 
    22862281 
    2287 function add_events_list(keyword) 
     2282function add_events_list(keyword, type) 
    22882283{ 
    22892284    var tab_title = "";  
    22902285    if (keyword){ 
    2291         if(keyword.length < 10) 
    2292             tab_title = keyword;  
    2293         else 
    2294             tab_title = keyword.substr(0,10) + '..."';  
     2286                type = 2; 
     2287                if(keyword.length < 10) 
     2288                        tab_title = keyword;  
     2289                else 
     2290                        tab_title = keyword.substr(0,10) + '..."';  
    22952291    }else{ 
    2296         tab_title = "Lista de eventos"; 
    2297     } 
     2292                if(type){ 
     2293                        if(!!parseInt(type)) 
     2294                                tab_title = "Lista de tarefas"; 
     2295                        else 
     2296                                tab_title = "Lista de eventos"; 
     2297                } 
     2298    } 
     2299        var tab_selector = ['tab_events_list_', 'tab_tasks_list_', 'tab_all_list_']; 
    22982300    keyword = ( keyword || '' ).replace( /\s+/g, "_" ); 
    22992301         
    2300     if(!(document.getElementById('tab_events_list_' + (Base64.encode(keyword)).replace(/[^\w\s]/gi, "") )))      
     2302    if(!(document.getElementById(tab_selector[type] + (Base64.encode(keyword)).replace(/[^\w\s]/gi, "") )))      
    23012303    { 
    23022304        Encoder.EncodeType = "entity"; 
    2303         $tabs.tabs( "add", "#tab_events_list_" + (Base64.encode(keyword)).replace(/[^\w\s]/gi, ""), Encoder.htmlEncode(tab_title) ); 
     2305        $tabs.tabs( "add", "#"+tab_selector[type] + (Base64.encode(keyword)).replace(/[^\w\s]/gi, ""), Encoder.htmlEncode(tab_title) ); 
    23042306    } 
    23052307    else /* Tab already opened */ 
    23062308    { 
    2307         $tabs.tabs("option", "selected", 2); 
    2308     } 
    2309          
    2310     pageselectCallback(keyword, 0); // load page 1 and insert data on event_list.ejs 
     2309                //$tabs.tabs("option", "selected", 2); 
     2310        } 
     2311         
     2312    pageselectCallback(keyword, 0, false, type); // load page 1 and insert data on event_list.ejs 
    23112313         
    23122314    $('.preferences-win.active .button.save, .preferences-win.active .button.cancel, .preferences-win.active .button.import, .preferences-win.active .button.export').button(); 
     
    23282330        if(paginator.indexOf('next') > 0){ 
    23292331            if(parseInt($(currentView+' [name = results]').val()) > 25) 
    2330                 pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($(currentView+' [name = page_index]').val())) +1)); 
     2332                pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($(currentView+' [name = page_index]').val())) +1), false,  2); 
    23312333        }else{ 
    23322334            if(parseInt($(currentView+' [name = page_index]').val()) > 0) 
    2333                 pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($(currentView+' [name = page_index]').val())) -1)); 
     2335                pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($(currentView+' [name = page_index]').val())) -1), false, 2); 
    23342336        } 
    23352337    }); 
     
    23692371} 
    23702372 
    2371 function paginatorList(currentView, view){ 
    2372     $(currentView+' .events-list.events-list-win.active .list-events-paginator .fc-header-title').html('<h2>'+mountTitleList( parseInt($('[name = page_index]').val()),view)+'</h2>'); 
     2373function paginatorList(currentView, view, type){ 
     2374    $(currentView+' .events-list.events-list-win.active .list-events-paginator .fc-header-title').html('<h2>'+mountTitleList( parseInt($(currentView+' [name = page_index]').val()),view)+'</h2>'); 
    23732375    $(currentView+' .events-list.events-list-win.active .header-paginator .fc-header-right .fc-button').removeClass('fc-state-active') 
    23742376    if(view == 'basicDay') 
     
    23902392        var goView = $(this).attr('class'); 
    23912393        if(goView.indexOf('agendaDay') > 0) 
    2392             pageselectCallback($(currentView+' [name = keyword]').val(), 0, '', 'agendaDay'); 
     2394            pageselectCallback($(currentView+' [name = keyword]').val(), 0, 'agendaDay', type); 
    23932395        else if(goView.indexOf('month') > 0) 
    2394             pageselectCallback($(currentView+' [name = keyword]').val(), 0, '', 'month'); 
     2396            pageselectCallback($(currentView+' [name = keyword]').val(), 0, 'month', type); 
    23952397        else if(goView.indexOf('year') > 0) 
    2396             pageselectCallback($(currentView+' [name = keyword]').val(), 0, '', 'year'); 
     2398            pageselectCallback($(currentView+' [name = keyword]').val(), 0, 'year', type); 
    23972399        else if(goView.indexOf('agendaWeek') > 0) 
    2398             pageselectCallback($(currentView+' [name = keyword]').val(), 0, '', 'agendaWeek'); 
     2400            pageselectCallback($(currentView+' [name = keyword]').val(), 0, 'agendaWeek', type); 
    23992401 
    24002402    }); 
     
    24122414        var paginator = $(this).attr('class'); 
    24132415        if(paginator.indexOf('next') > 0) 
    2414             pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($('[name = page_index]').val())) +1), '', view); 
     2416            pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($(currentView+' [name = page_index]').val())) +1), view, type); 
    24152417        else 
    2416             pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($('[name = page_index]').val())) -1), '', view); 
     2418            pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($(currentView+' [name = page_index]').val())) -1), view, type); 
    24172419    });  
    24182420} 
    24192421 
    2420 function paginatorListEvent(currentView, typeView, view){ 
     2422function printEventList(view){ 
     2423        $('.fc-button-print.print-list-events').click(function(){ 
     2424                var window_print = window.open('','ExpressoCalendar','width=800,height=600,scrollbars=yes'); 
     2425                var listEvents = $(view).clone(); 
     2426                listEvents.find('.fc-button').remove(); 
     2427                listEvents.find('.details-event-list').remove(); 
     2428                listEvents.find('.list-events-paginator').remove(); 
     2429                listEvents = listEvents.html(); 
     2430                type = $(this).parents('.ui-tabs-panel').attr("id").split("_")[1]; 
     2431 
     2432                var data = { 
     2433                        type : type == "tasks" ? "task-list" : ( type == "events" ? "event-list" : "search"), 
     2434                        html : listEvents, 
     2435                        InfoPage : $(this).parents('table.header-paginator').find( '.fc-header-title' ).text() 
     2436                } 
     2437                window_print.document.open();            
     2438                window_print.document.write(DataLayer.render('templates/calendar_list_print.ejs', data)); 
     2439                window_print.document.close(); 
     2440                window_print.print(); 
     2441        }); 
     2442} 
     2443 
     2444function paginatorListEvent(currentView, typeView, view, type){ 
    24212445    if(!!$(currentView).find('.fc-calendar').length) 
    24222446        return; 
     
    24302454    $(currentView+' .events-list.events-list-win.active .fc-header .fc-header-center').addClass('list-events-paginator'); 
    24312455    $(currentView+' .events-list.events-list-win.active .fc-header .list-events-paginator').removeClass('fc-header-center');             
    2432                  
     2456                 
    24332457    //Adicionar class no header padronizar com a tela principal 
    2434     $(currentView+' .events-list.events-list-win.active .fc-header').addClass('header-paginator'); 
    2435     $(currentView+' .events-list.events-list-win.active .header-paginator').removeClass('fc-header'); 
    2436                                  
     2458        $(currentView+' .events-list.events-list-win.active .fc-header .fc-button-print').addClass('print-list-events');                 
     2459        $(currentView+' .events-list.events-list-win.active .fc-header').addClass('header-paginator'); 
     2460    $(currentView+' .events-list.events-list-win.active .header-paginator').removeClass('fc-header');    
     2461         
     2462        printEventList(currentView); 
     2463         
    24372464    if(typeView == 'search'){ 
    2438         $(currentView+' .events-list.events-list-win.active .header-paginator .fc-header-right').remove() 
     2465        $(currentView+' .events-list.events-list-win.active .header-paginator .fc-header-right span.fc-button:not(.fc-button-print)').remove(); 
    24392466        $(currentView+' .events-list.events-list-win.active .list-events-paginator .fc-header-title').html('<h2>Resultados para: '+$(currentView+' [name = keyword]').val()+'</h2>'); 
    24402467        if((parseInt($(currentView+' [name = page_index]').val()) == 0) && (parseInt($(currentView+' [name = results]').val()) <= 25)) 
     
    24422469        paginatorSearch(currentView); 
    24432470    }else 
    2444         paginatorList(currentView, view); 
     2471        paginatorList(currentView, view, type); 
    24452472} 
    24462473 
     
    24502477        case 'basicDay': 
    24512478        case 'agendaDay': 
    2452             rangeStart = new Date().add({ 
     2479            rangeStart = new Date.today().add({ 
    24532480                days: page_index 
    24542481            }).getTime(); 
    2455             rangeEnd = rangeStart; 
     2482            rangeEnd = rangeStart + 86400000; 
    24562483            break; 
    24572484        case 'agendaWeek': 
     
    25192546} 
    25202547 
    2521 function pageselectCallback(keyword, page_index, jq, view){ 
    2522          
    2523     var selecteds = getSelectedCalendars(); 
    2524     if(!selecteds && (keyword != '' && keyword != null)){        
    2525         jQuery('#tab_events_list_' + ((Base64.encode(keyword)).replace(/[^\w\s]/gi, "")|| '')).html( 
    2526             '<div title="Lista de eventos" class="events-list events-list-win active empty">' + 
    2527             '<label>Por favor selecione ao menos uma agenda.</label>' + 
     2548function pageselectCallback(keyword, page_index, view, type){ 
     2549    $('.qtip.qtip-blue').remove(); 
     2550        var tab_selector = ['tab_events_list_', 'tab_tasks_list_', 'tab_all_list_']; 
     2551        var tab_title = ['Lista de eventos', 'Lista de tarefas']; 
     2552        var label_noselect_calendar = ['Por favor selecione ao menos uma agenda.', 'Por favor selecione ao menos um grupo.', 'Por favor selecione ao menos uma agenda ou grupo.']; 
     2553        var label_nofound_search = ['Não foi encontrado nenhum evento correspondente à sua pesquisa.', 'Não foi encontrado nenhuma tarefa ou atividade correspondente à sua pesquisa.', 'Não foi encontrado nenhum evento ou tarefa ou atividade correspondente à sua pesquisa.']; 
     2554        var label_nofound = ['Não foram encontrados eventos neste intervalo.', 'Não foram encontradas tarefas ou atividades neste intervalo.', 'Não foram encontrados eventos ou tarefas ou atividades neste intervalo.']; 
     2555        var selecteds = getSelectedCalendars(false, type); 
     2556     
     2557        if(!selecteds && (keyword != '' && keyword != null)){    
     2558        jQuery('#'+tab_selector[type] + ((Base64.encode(keyword)).replace(/[^\w\s]/gi, "")|| '')).html( 
     2559            '<div title="'+tab_title[type]+'" class="events-list events-list-win active empty">' + 
     2560            '<label>'+label_noselect_calendar[type]+'</label>' + 
    25282561            '</div>' 
    25292562            ); 
     
    25452578    var results = DataLayer.get('schedulable:detail', criteria); 
    25462579    keyword = ( keyword || '' ).replace( /\s+/g, "_" );  
    2547 } 
     2580        } 
    25482581// não há resultados     
    25492582 
    2550 var currentView = '#tab_events_list_' + ((Base64.encode(keyword)).replace(/[^\w\s]/gi, "") || ''); 
     2583var currentView = '#'+tab_selector[type] + ((Base64.encode(keyword)).replace(/[^\w\s]/gi, "") || ''); 
    25512584 
    25522585if ((((typeof(results) == 'undefined') || (!results.events_list )) && selecteds) &&(keyword != '' && keyword != null)) { 
    25532586    $(currentView).html( 
    2554                 '<div title="Lista de eventos" class="events-list events-list-win active empty">' + 
    2555                 '<label>Não foi encontrado nenhum evento correspondente à sua pesquisa.</label>' + 
     2587                '<div title="'+title+'" class="events-list events-list-win active empty">' + 
     2588                '<label>'+label_nofound_search[type]+'</label>' + 
    25562589                '</div>' 
    25572590        ); 
     
    25612594                results['page_index'] = page_index; 
    25622595                results['keyword'] = keyword; 
    2563                                  
     2596                results['tab_title'] = tab_title[type];  
    25642597                DataLayer.render( 'templates/event_list.ejs', results, function( html ){ 
    25652598                         
     
    25672600                        $('.events-list-win .menu-container .button').button(); 
    25682601                                                                                                                         
    2569                         $(".event-details-item").parent().click(function(){ 
    2570  
     2602                        $(".event-details-item").parent().click(function(event){ 
     2603                        event.stopImmediatePropagation(); 
    25712604                        $(this).siblings("div.details-event-list").toggleClass("hidden") 
    2572                         .find('.button.delete').click(function(){ 
     2605                        .find('.button.delete').click(function(event){ 
    25732606                                var eventId = $(this).siblings('[name="eventid"]').val(); 
    25742607                                var calendarId = $(this).siblings('[name="calendarid"]').val(); 
    2575  
    2576                                 remove_event(eventId, calendarId); 
     2608                                remove_event(eventId, calendarId, 2); 
     2609                                event.stopImmediatePropagation() 
    25772610                        }) 
    2578                         .end().find('.button.edit').click(function(){                            
    2579                                 eventDetails( DataLayer.get( "schedulable", $(this).siblings('[name="eventid"]').val() ), true );                                        
     2611                        .end().find('.button.edit').click(function(event){ 
     2612                switch($(this).siblings('[name="eventtype"]').val()){ 
     2613                    case '1': 
     2614                        eventDetails( DataLayer.get( "schedulable", $(this).siblings('[name="eventid"]').val() ), true ); 
     2615                    break; 
     2616                    case '2': 
     2617                        taskDetails( DataLayer.get( "schedulable", $(this).siblings('[name="eventid"]').val() ), true ); 
     2618                    break; 
     2619                    case '3': 
     2620                        activityDetails( DataLayer.get( "schedulable", $(this).siblings('[name="eventid"]').val() ), true ); 
     2621                    break;  
     2622                } 
     2623                                event.stopImmediatePropagation() 
     2624                        }) 
     2625                        .end().find('.button.print').click(function(event){      
     2626                                var window_print = window.open('','ExpressoCalendar','width=800,height=600,scrollbars=yes'); 
     2627                                var html = $(this).parents("td:first").clone(); 
     2628                                html.find(".menu-container.footer-container").remove(); 
     2629                                html.find(".fc-header-title").remove(); 
     2630                                var html = html.html(); 
     2631                                var data = { 
     2632                                        type : $(this).parents('.details-event-list').hasClass("details-event") ? "event-detail" : "task-detail", 
     2633                                        html : html, 
     2634                                        InfoPage : 'Detalhes: '+$(this).parents('tr.start-date').find('td span a').text() 
     2635                                } 
     2636                                window_print.document.open();            
     2637                                window_print.document.write(DataLayer.render('templates/calendar_list_print.ejs', data)); 
     2638                                window_print.document.close(); 
     2639                                window_print.print(); 
     2640                                 
     2641                                event.stopImmediatePropagation() 
    25802642                        }); 
    25812643 
    25822644                        }); 
    2583                         paginatorListEvent(currentView, (keyword == '' || keyword == null) ? 'list' : 'search',  !!view ? view : User.preferences.defaultCalView); 
     2645                        paginatorListEvent(currentView, (keyword == '' || keyword == null) ? 'list' : 'search',  !!view ? view : User.preferences.defaultCalView, type); 
    25842646                }); 
    25852647    }else{ 
    25862648                $(currentView).html( 
    2587                         '<div title="Lista de eventos" class="events-list events-list-win active empty">' + 
     2649                        '<div title="'+title+'" class="events-list events-list-win active empty">' + 
    25882650                        '<input type="hidden" name="page_index" value="'+page_index+'"></inpunt>'+ 
    25892651                        '<input type="hidden" name="keyword" value="'+keyword+'"></inpunt>'+ 
    2590                         '<label class="empty-result">Não foram encontrados eventos neste intervalo.</label>' + 
     2652                        '<label class="empty-result">'+label_nofound[type]+'</label>' + 
    25912653                        '</div>' 
    25922654                        ); 
    2593                 paginatorListEvent(currentView, 'list', !!view ? view : User.preferences.defaultCalView); 
    2594     } 
    2595 } 
    2596         if(currentView != '#tab_events_list_') 
     2655                paginatorListEvent(currentView, 'list', !!view ? view : User.preferences.defaultCalView, type); 
     2656    } 
     2657} 
     2658        if(currentView != '#'+tab_selector[type]) 
    25972659            $tabs.tabs("select", currentView); 
    25982660} 
    25992661 
    2600 function show_modal_import_export(tab, calendarId) { 
     2662function show_modal_import_export(tab, calendarId, typeView){ 
     2663    $('.qtip.qtip-blue').remove(); 
    26012664    DataLayer.render( 'templates/import_export.ejs', { 
    2602         calendars: Calendar.calendars,  
    2603         owner: User.me.id 
     2665        calendars: typeView == 0 ? Calendar.calendars : Calendar.groups,  
     2666        owner: User.me.id, 
     2667        typeView: typeView 
    26042668        }, function( html ){ 
    26052669 
    26062670        if (!UI.dialogs.importCalendar) { 
    26072671            UI.dialogs.importCalendar = jQuery('#div-import-export-calendar') 
    2608             .append('<div title="Importar e Exportar Eventos" class="import-export import-export-win active"> <div>') 
     2672            .append('<div title="Importar e Exportar "' + (typeView == 0 ? 'Eventos' : 'Tarefas') + '" class="import-export import-export-win active"> <div>') 
    26092673            .find('.import-export-win.active').html(html).dialog({ 
    26102674                resizable: false,  
     
    27182782 
    27192783    var schedulable = DataLayer.get('schedulable', event+''); 
     2784    schedulable['class'] = '1'; 
    27202785         
    27212786    calendar = !!calendar ? calendar : schedulable.calendar; 
     
    28312896    } 
    28322897} 
     2898 
     2899function extendsFileupload(view, path){ 
     2900    var viewName = 'div.new-'+view+'-win'; 
     2901     
     2902    path = !!path ? path : ''; 
     2903     
     2904    var maxSizeFile = 2000000; 
     2905    $('#fileupload'+view).fileupload({ 
     2906        sequentialUploads: true, 
     2907        add: function (e, data) { 
     2908            if(data.files[0].size < maxSizeFile) 
     2909                data.submit(); 
     2910        }, 
     2911        change: function (e, data) { 
     2912            $.each(data.files, function (index, file) { 
     2913                var attach = {}; 
     2914                attach.fileName = file.name; 
     2915                var ext = file.name.split('.'); 
     2916                if(file.name.length > 10) 
     2917                    attach.fileName = ext.length == 1 ? file.name.substr(0, 10) :  file.name.substr(0, 6) + '.' + ext[ext.length -1]; 
     2918                attach.fileSize = formatBytes(file.size); 
     2919                if(file.size > maxSizeFile) 
     2920                    attach.error = 'Tamanho de arquivo nao permitido!!' 
     2921                                 
     2922                $(viewName+' .attachments-list').append(DataLayer.render(path+'templates/attachment_add_itemlist.ejs', { 
     2923                    file : attach 
     2924                })); 
     2925                                 
     2926                if(file.size < maxSizeFile){ 
     2927                    $(viewName+' .fileinput-button.new').append(data.fileInput[0]).removeClass('new'); 
     2928                    $(viewName+' .attachments-list').find('[type=file]').addClass('hidden'); 
     2929                                         
     2930                }else 
     2931                    $(viewName+' .fileinput-button.new').removeClass('new'); 
     2932                                 
     2933                                 
     2934                $(viewName+' .attachments-list').find('.button.close').button({ 
     2935                    icons: { 
     2936                        primary: "ui-icon-close" 
     2937                    }, 
     2938                    text: false 
     2939                }).click(function(){ 
     2940                    var idAttach = $(this).parent().find('input[name="fileId[]"]').val(); 
     2941                    $(viewName+' .attachment-list').find('input[value="'+idAttach+'"]').remove(); 
     2942                    $(this).parent().remove(); 
     2943                 
     2944                    if(!$(viewName+' .attachment-list input').length) 
     2945                        $(viewName+' .btn-danger.delete').addClass('hidden'); 
     2946                 
     2947                });      
     2948                                 
     2949            }) 
     2950        }, 
     2951        done: function(e, data){ 
     2952            var currentUpload = $(viewName+' .progress.after-upload:first').removeClass('after-upload').addClass('on-complete').hide(); 
     2953 
     2954            if(!!data.result && data.result != "[]"){ 
     2955                $(viewName+' .btn-danger.delete').removeClass('hidden'); 
     2956                var newAttach = (attch = jQuery.parseJSON(data.result)) ? attch : jQuery.parseJSON(data.result[0].activeElement.childNodes[0].data); 
     2957                $(viewName+' .attachment-list').append('<input tyepe="hidden" name="attachment[]" value="'+newAttach['attachment'][0][0].id+'"/>'); 
     2958                currentUpload.removeClass('on-complete').parents('p') 
     2959                .append('<input type="hidden" name="fileId[]" value="'+newAttach['attachment'][0][0].id+'"/>') 
     2960                .find('.status-upload').addClass('ui-icon ui-icon-check'); 
     2961            }else 
     2962                currentUpload.removeClass('on-complete').parents('p').find('.status-upload').addClass('ui-icon ui-icon-cancel'); 
     2963        } 
     2964    }); 
     2965    $('.attachments-list .button').button();     
     2966 
     2967    if(!!window.FormData)                        
     2968        $('#fileupload'+view).bind('fileuploadstart', function () { 
     2969            var widget = $(this), 
     2970            progressElement = $('#fileupload-progress-'+view).fadeIn(), 
     2971            interval = 500, 
     2972            total = 0, 
     2973            loaded = 0, 
     2974            loadedBefore = 0, 
     2975            progressTimer, 
     2976            progressHandler = function (e, data) { 
     2977                loaded = data.loaded; 
     2978                total = data.total; 
     2979            }, 
     2980            stopHandler = function () { 
     2981                widget 
     2982                .unbind('fileuploadprogressall', progressHandler) 
     2983                .unbind('fileuploadstop', stopHandler); 
     2984                window.clearInterval(progressTimer); 
     2985                progressElement.fadeOut(function () { 
     2986                    progressElement.html(''); 
     2987                }); 
     2988            }, 
     2989            formatTime = function (seconds) { 
     2990                var date = new Date(seconds * 1000); 
     2991                return ('0' + date.getUTCHours()).slice(-2) + ':' + 
     2992                ('0' + date.getUTCMinutes()).slice(-2) + ':' + 
     2993                ('0' + date.getUTCSeconds()).slice(-2); 
     2994            }, 
     2995            /* formatBytes = function (bytes) { 
     2996            if (bytes >= 1000000000) { 
     2997                return (bytes / 1000000000).toFixed(2) + ' GB'; 
     2998            } 
     2999            if (bytes >= 1000000) { 
     3000                return (bytes / 1000000).toFixed(2) + ' MB'; 
     3001            } 
     3002            if (bytes >= 1000) { 
     3003                return (bytes / 1000).toFixed(2) + ' KB'; 
     3004            } 
     3005            return bytes + ' B'; 
     3006        },*/ 
     3007            formatPercentage = function (floatValue) { 
     3008                return (floatValue * 100).toFixed(2) + ' %'; 
     3009            }, 
     3010            updateProgressElement = function (loaded, total, bps) { 
     3011                progressElement.html( 
     3012                    formatBytes(bps) + 'ps | ' + 
     3013                    formatTime((total - loaded) / bps) + ' | ' + 
     3014                    formatPercentage(loaded / total) + ' | ' + 
     3015                    formatBytes(loaded) + ' / ' + formatBytes(total) 
     3016                    ); 
     3017            }, 
     3018            intervalHandler = function () { 
     3019                var diff = loaded - loadedBefore; 
     3020                if (!diff) { 
     3021                    return; 
     3022                } 
     3023                loadedBefore = loaded; 
     3024                updateProgressElement( 
     3025                    loaded, 
     3026                    total, 
     3027                    diff * (1000 / interval) 
     3028                    ); 
     3029            }; 
     3030            widget 
     3031            .bind('fileuploadprogressall', progressHandler) 
     3032            .bind('fileuploadstop', stopHandler); 
     3033            progressTimer = window.setInterval(intervalHandler, interval); 
     3034        }); 
     3035     
     3036} 
Note: See TracChangeset for help on using the changeset viewer.