var tab_len = 2; ( function($){ var ctTab = Object(); var ctKey = Object(); var tabList = Object(); $.fn.dynatabs = function(options){ var tabs = $(this.selector); var settings = $.extend({ tabBodyID : 'tabbody', defaultTab: 0, //default is 0 - first tab deactiveClass : 'unselected', activeClass : 'selected', showCloseBtn : false, //shows the close button on the tabs closeableClass : 'closeable', tabLoaderClass : 'tabLoader', confirmDelete : false, confirmMessage : 'Delete Tab?', switchToNewTab : true, fromIframe : false, debug : false, bindCard : false, zframe : false },options); $.fn.debug = function(message){ if(settings.debug) { if($.browser.webkit || $.browser.mozilla) { console.log(message); } else { alert('You have debug enabled in settings. It is only supported in Firefox and Chrome now.'); } } }; /** * Function to show a tab */ $.fn.showTab = function(event){ var ahref = event.data.ahref; var tab = event.data.tab; if(ahref != null) { if(event.target.nodeName != "IMG"){ $.fn.activateTab($(ahref).attr('tabid'), ahref, tab); } } else { $.fn.debug('unable to show a null tab'); } }; $.fn.closeTab = function(event){ if(event.data.key != null && event.data.tab != null) { try { //czyścimy zaznaczenia porównywarki var tab_frame = $( event.data.key ).find( "iframe" ); $(tab_frame)[0].contentWindow.jQuery('#clear_compare').click(); if(localStorage.es_brangeGrid__selection != undefined){ localStorage.es_brangeGrid__selection = ''; } } catch(ex) {} // zdejmujemy blokady try { var tab_frame = $( event.data.key ).find( "iframe" ); var type_theme = 1; if($(tab_frame)[0].contentWindow.new_type_theme != undefined){ type_theme = 2; } if(type_theme == 2){ $.ajax({ type: "POST", url: "task/ajax/LockUnLock.php", async: true, data: { lockUnlockBranchId: $(tab_frame)[0].contentWindow.branch_id, type_theme: type_theme, aj_function: 'UnlockTask', } }); } else { if($(tab_frame)[0].contentWindow.window_id == 'task' && $(tab_frame)[0].contentWindow.branch_id != undefined && !$(tab_frame)[0].contentWindow.task.locked){ $.ajax({ type: "POST", async: true, url: "custom/ajax/ajax_task.php", data: { lockUnlockBranchId: $(tab_frame)[0].contentWindow.branch_id, aj_function: 'lockUnlock', lockUnlock: 'UNLOCK', } }); } } } catch(ex) {} // to samo dla CRM try { var tab_frame = $( event.data.key ).find( "iframe" ); if($(tab_frame)[0].contentWindow.window_id == 'crm_task' && $(tab_frame)[0].contentWindow.task_crm_id != undefined && $(tab_frame)[0].contentWindow.task_crm_id > 0 && !$(tab_frame)[0].contentWindow.task_locked && !$(tab_frame)[0].contentWindow.session_expired){ $.ajax({ type: "POST", async: true, url: "custom/ajax/ajax_crm.php", data: { id_task_crm: $(tab_frame)[0].contentWindow.task_crm_id, aj_function: 'unlockTask', } }); } } catch(ex) {} $.fn.debug('deleting tab'); var canDelete = false; var ahref = null; //check if the tab can be deleted if(settings.confirmDelete) { if(confirm(settings.confirmMessage)) { canDelete = true; } } else { canDelete = true; } //delete the tab if(canDelete) { //find the ahref ahref = tabs.find("a[tabid='" + event.data.key + "']"); if(ahref != null && ahref.length == 1) { // zamykamy powiązaną zakładkę if($(ahref).hasClass( "bindTabClass" )){ var from_tabid = tabs.find("a[from_tabid='" + event.data.key + "']"); //usuwamy class $('a[tabid="'+$(ahref).attr('from_tabid')+'"]').removeClass("bindTabClass"); //usuwamy powiązany tab var del_tabid = $(from_tabid).attr('tabid'); if(del_tabid != undefined){ $(from_tabid).parent().remove(); $(del_tabid).remove(); if(tabs.find("a").length > 0) { var tmp = tabs.find("a").last(); if(ctKey[$(event.data.tab).attr('id')] == $(from_tabid).attr('tabid')) { $.fn.activateTab($(tmp).attr('tabid'), tmp, event.data.tab); } } } } var from_tabid = $(ahref).attr('from_tabid'); $.fn.logicRefresh(from_tabid, ahref); //delete it $(ahref).parent().remove(); $(event.data.key).remove(); //activate the next tab (if any) if(tabs.find("a").length > 0) { var tmp = tabs.find("a").last(); if(ctKey[$(event.data.tab).attr('id')] == $(ahref).attr('tabid')) { $.fn.activateTab($(tmp).attr('tabid'), tmp, event.data.tab); } } } else { $.fn.debug('Too many A Hrefs found with id ' + event.data.key); } } } return false; }; $.fn.refreshTab = function(event){ //odświeżamy var tab_frame = $( event.data.key ).find( "iframe" ); $(tab_frame).attr('src', $(tab_frame).attr('src')); //zmianiamy tytół zakładka taki jak w iframe addCSSlink2Frame(event.data.key); } $.fn.closeActiveTab = function(iframehref){ var tabid = ctKey[$('#addajaxtab').attr('id')]; //nie zamykamy kalendarza if(tabid == '#tabview0'){ return; } //zabezpieczenia, jeżeli zadanie jest w trakcie wysłania, a zmienie się zakładkę if(iframehref != undefined){ // alert(tabid); // alert($("iframe")); $( "iframe" ).each(function() { if($(this)[0].contentWindow.location.href == iframehref){ if($(this).parent().attr('id') != undefined) { tabid = '#' + $(this).parent().attr('id'); }; } }); } if(tabid != null) { //odblokowujemy task i crm// ze względu rozczapkania kodu w obecnym systemie nie udało się zrobić to uniwersalnie try { var tab_frame = $( tabid ).find( "iframe" ); var type_theme = 1; if($(tab_frame)[0].contentWindow.new_type_theme != undefined){ type_theme = 2; } if(type_theme == 2){ $.ajax({ type: "POST", url: "task/ajax/LockUnLock.php", data: { lockUnlockBranchId: $(tab_frame)[0].contentWindow.branch_id, aj_function: 'UnlockTask', } }); } else { if($(tab_frame)[0].contentWindow.window_id == 'task' && $(tab_frame)[0].contentWindow.branch_id != undefined && !$(tab_frame)[0].contentWindow.task.locked){ $.ajax({ type: "POST", url: "custom/ajax/ajax_task.php", data: { lockUnlockBranchId: $(tab_frame)[0].contentWindow.branch_id, type_theme: type_theme, aj_function: 'lockUnlock', lockUnlock: 'UNLOCK', } }); } } // left_menu.lockUnlock = 'UNLOCK'; // left_menu.lockUnlockBranchId = branch_id; } catch(ex) {} // to samo dla CRM try { var tab_frame = $( tabid ).find( "iframe" ); if($(tab_frame)[0].contentWindow.window_id == 'crm_task' && $(tab_frame)[0].contentWindow.task_crm_id != undefined && $(tab_frame)[0].contentWindow.task_crm_id > 0 && !$(tab_frame)[0].contentWindow.task_locked && !$(tab_frame)[0].contentWindow.session_expired){ $.ajax({ type: "POST", url: "custom/ajax/ajax_crm.php", data: { id_task_crm: $(tab_frame)[0].contentWindow.task_crm_id, aj_function: 'unlockTask', } }); } } catch(ex) {} var ahref = null; //find the ahref ahref = tabs.find("a[tabid='" + tabid + "']"); if(ahref != null && ahref.length == 1) { // zamykamy powiązaną zakładkę if($(ahref).hasClass( "bindTabClass" )){ var from_tabid = tabs.find("a[from_tabid='" + tabid + "']"); //usuwamy class $('a[tabid="'+$(ahref).attr('from_tabid')+'"]').removeClass("bindTabClass"); //usuwamy powiązany tab var del_tabid = $(from_tabid).attr('tabid'); if(del_tabid != undefined){ $(from_tabid).parent().remove(); $(del_tabid).remove(); if(tabs.find("a").length > 0) { var tmp = tabs.find("a").last(); if(ctKey[$('#addajaxtab').attr('id')] == $(from_tabid).attr('tabid')) { $.fn.activateTab($(tmp).attr('tabid'), tmp, $('#addajaxtab')); } } } } var from_tabid = $(ahref).attr('from_tabid'); $.fn.logicRefresh(from_tabid, ahref); //delete it $(ahref).parent().remove(); $(tabid).remove(); //activate the next tab (if any) if(tabs.find("a").length > 0) { var tmp = tabs.find("a").last(); $.fn.activateTab($(tmp).attr('tabid'), tmp, $('#addajaxtab')); } } } return false; }; $.fn.activateTab = function(key, ahref, tab){ if(key != null && ahref != null && tab != null) { $.fn.debug(tab); $.fn.debug(key); $.fn.hideTab(ctKey[$(tab).attr('id')], ctTab[$(tab).attr('id')]); $(ahref).parent().addClass(settings.activeClass); $(key).show(); ctKey[$(tab).attr('id')] = key; ctTab[$(tab).attr('id')] = ahref; // ładujemy iframe dopiero po aktywacji zakładki - jeżeli brak src var $f = $($(ahref).attr('tabid')).find(".st"); if($($f[0]).attr('src') != undefined && $($f[0]).attr('src') == ''){ $($f[0]).attr('src', $($f).attr('src_start')); } //odswierzamy MGView, bo błąd w obecnym systemie try { $f[0].contentWindow.showMAggg(); } catch (ex) {} try { $f[0].contentWindow.resizeHiddenPanelControl(); } catch (ex) {} //włączamy esView w towym tasku try { // $f[0].contentWindow.buildEsViewer(); } catch (ex) {} } //zamykamy menu jeżeli komorka $( ".count_tabs").html($( "#addajaxtab li" ).length); if($('.navbar-toggle').css('display') !='none') { // $( "#addajaxtab" ).fadeOut( "fast", function() {}); } //WM $('.close-tab-img').show(); $('#selected-zakladki').html($( '#addajaxtab' ).find('.selected').find('a').find('element').html()); // nie zamykamy ostatnią zakładkę if($( "#addajaxtab li" ).length < 2){ $('.close-tab-img').hide(); }; $('body').removeClass('pushy-open-right'); }; $.fn.hideTab = function(key, ahref){ if(key != null && ahref != null) { $(ahref).parent().removeClass(settings.activeClass); //$(ahref).parent().addClass(settings.deactiveClass); $(key).hide(); } }; /** * Bind the on-click of each tab to showtab function */ $.fn.bindTabs = function(){ $.each(tabs.find("li > a"), function(idx, a){ //bind click function of the tab header var tabid = $(a).attr('tabid'); $(a).bind('click',{ ahref: a, tab: tabs, tabid: tabid}, $.fn.showTab); //show the close button if enabled in settings if(settings.showCloseBtn && $(a).find("span").length == 0) { $.fn.addCloseBtn(a); } }); }; $.fn.addCloseBtn = function(ahref){ if(ahref != null) { this.debug('adding close button'); var key = $(ahref).attr('tabid'); if(key.length > 0) { $(ahref).prepend(''); $(ahref).find(".refreshtab").bind('click', { key: key, tab: tabs } ,$.fn.refreshTab); $(ahref).append(''); $(ahref).find(".closeable").bind('click', { key: key, tab: tabs } ,$.fn.closeTab); } } }; $.fn.addTabLoader = function(ahref){ if(ahref != null) { this.debug('adding tab loader button'); var key = $(ahref).attr('tabid'); if(key.length > 0) { $(ahref).append(''); $(ahref).find("span").bind('click', { key: key } ,$.fn.closeTab); } } }; $.fn.activateTabCustom = function(tabid, tabs){ ahref = tabs.find("a[tabid='" + tabid+ "']"); if(ahref != null && ahref.length == 1) { if(tabs.find("a").length > 0) { var tmp = tabs.find("a:last"); $.fn.activateTab($(tmp).attr('tabid'), tmp, '#addajaxtab'); } } }; $.fn.addNewTab = function(defaults, tabBody){ settings.tabBodyID = tabBody; tabs = $("#"+defaults.tabID); $.fn.debug('Tab ID : ' + defaults.tabID); if(defaults.type === 'html') { if(defaults.html != null && defaults.html.length > 0) { //create the title tag var a = $(""); //create the li tag var li = $("
"); //create data div var div = $(""); var len = tabs.find("li").length + 1; $(a).attr('href', '#'); $(a).attr('tabid', '#tabview' + '_' + settings.tabBodyID + len); $(a).html(defaults.tabTitle); $(li).append(a); $(div).attr('id', 'tabview' + '_' + settings.tabBodyID + len); $(div).html(defaults.html); //append to tab list tabs.append(li); $(div).addClass(settings.deactiveClass); $('#' + settings.tabBodyID).append(div); //bind all click functions to tab headers $.fn.bindTabs(); } else { $.fn.debug('No HTML content found for the new tab. Skipping new tab creation'); } } else if(defaults.type === 'div') { if(defaults.divID != null && defaults.divID.length > 0 && $("#" + defaults.divID)[0]) { //hide the div which holds actual content $("#" + defaults.divID).css("display", "none"); //create the title tag var a = $(""); //create the li tag var li = $(""); //create data div var div = $(""); var len = tabs.find("li").length + 1; $(a).attr('href', '#'); $(a).attr('tabid', '#tabview' + '_' + settings.tabBodyID + len); $(a).html(defaults.tabTitle); $(li).append(a); $(div).attr('id', 'tabview' + '_' + settings.tabBodyID + len); $(div).html($("#" + defaults.divID).html()); //append to tab list tabs.append(li); $(div).addClass(settings.deactiveClass); $('#' + settings.tabBodyID).append(div); //bind all click functions to tab headers $.fn.bindTabs(); } else { $.fn.debug('No Div found with id ' + defaults.divID + ' in the body for html content.'); } } else if(defaults.type === 'ajax') { //zamykamy menu jeżeli komorka if($('.navbar-toggle').css('display') !='none') { $('#navnav').removeClass('in'); // $( "#addajaxtab" ).fadeOut( "fast", function() {}); } if(defaults.url.length > 0 && defaults.method.length > 0 && defaults.dtype.length > 0) { //sprawdzamy czy istnieje, jeżeli tak to aktywujemy var dublstop = false; var rep_div = ''; $.each(tabs.find("li > a"), function(idx, a){ var tab_name = '