/**
 * Artilinki briefcase JS Class
 * 
 * This file contains all the method for the briefcase uses.
 * This file use and require jquery plugin  
 * 
 * @author fl0r3nt
 */
var briefcase;

$(document).ready(function() {
  if (Briefcase) {
	  briefcase = new Briefcase();
	  briefcase.init();
  }  
});

function Briefcase() {
  this.tabs				= [];
  this.tabLinks 		= [];
  this.subtabLinks 		= [];
  this.container        = null;
  this.parentHeader		= null;
  this.parentMenu		= null;
  this.content         	= '';
  this.tabContent       = '';
  this.loading			= null;
  this.selectedTabId	= null;
  this.selectedSubTabId	= null;
  this.destinationTabId	= null;
  this.loadingTabId		= null;
  this.isOpen			= false;
  this.currentRoute		= '';
  this.xhr				= null;
  this.cacheContent		= [];
  
  /**
   * init
   * instantiate the briefcase.
   */
  Briefcase.prototype.init = function() {
	//Global structure elements
	this.parentHeader = $('#artiHeader');
	this.parentMenu = $('div.headerBtmBg_log');
	this.container = $('#briefcase_container'); 
	this.content = $('#porteDocsContainer');
	this.loading = $('#briefcaseLoading');
		
	this.parentHeader.find('a.briefcase_tab').each(function(i, elt){
	  $(elt).bind('click', function(event) {
		event.preventDefault();
		briefcase.selectTab(i);
	  });
	  briefcase.tabLinks[i] = {link: $(elt), arrow: $(elt).find('span > span'), id: i};
	});
		
	// Default css configuration
	if (this.parentHeader.height() > 150) this.headerHeight = 114;
	else this.headerHeight = this.parentHeader.height();
	this.parentHeader.css('top', '0');
	this.parentHeader.css('left', '0');	  
	this.parentHeader.css('z-index', '99');
	this.content.css('opacity', 0);
  };
	
  /**
   * selectTab
   * select a main tab (like favorites, alerts, ...) 
   * @author fl0r3nt
   */
  Briefcase.prototype.selectTab = function(offset) {
	this.destinationTabId = offset;
	this.selectTabItem(this.destinationTabId);
	this.toggleDisplay();
  };
	
  /**
   * resetTabItem
   * reset active main tab
   * @author fl0r3nt
   */
  Briefcase.prototype.resetTabItem = function() {
	for (i=0; i < briefcase.tabLinks.length; i++) {
	  if (briefcase.tabLinks[i].link.hasClass('thumbnailOn')) briefcase.tabLinks[i].link.removeClass('thumbnailOn');
	  if (briefcase.tabLinks[i].link.hasClass('thumbnailUp')) briefcase.tabLinks[i].link.removeClass('thumbnailUp');
	  if (briefcase.tabLinks[i].arrow.hasClass('arrowUp')) briefcase.tabLinks[i].arrow.removeClass('arrowUp');
	  if (briefcase.parentMenu.hasClass('alertOn')) briefcase.parentMenu.removeClass('alertOn');
	}
  };

  /**
   * selectTabItem
   * select active main tab
   * @author fl0r3nt
   */
  Briefcase.prototype.selectTabItem = function(offset) {
	briefcase.resetTabItem();
	if (!briefcase.tabLinks[offset].link.hasClass('thumbnailOn')) briefcase.tabLinks[offset].link.addClass('thumbnailOn');
	if (!briefcase.tabLinks[offset].link.hasClass('thumbnailUp')) briefcase.tabLinks[offset].link.addClass('thumbnailUp');
	if (!briefcase.tabLinks[offset].arrow.hasClass('arrowUp')) briefcase.tabLinks[offset].arrow.addClass('arrowUp');
	if (offset==1 && briefcase.tabLinks[offset].link.find('span.headerBtmLeftAlarmsNb').length > 0) {
  	  if (!briefcase.parentMenu.hasClass('alertOn')) briefcase.parentMenu.addClass('alertOn');
	}
  };

  /**
   * resetSubTabItem
   * reset active sub tab
   * @author fl0r3nt
   */
  Briefcase.prototype.resetSubTabItem = function() {
	for (i=0; i < briefcase.subtabLinks.length; i++) {
	  if (briefcase.subtabLinks[i].li.hasClass('porteDocsMenuActive')) {
		briefcase.subtabLinks[i].li.removeClass('porteDocsMenuActive');
	  }
	  else if (briefcase.subtabLinks[i].li.hasClass('porteDocsMenuFirstActive')) {
		briefcase.subtabLinks[i].li.removeClass('porteDocsMenuFirstActive').addClass('porteDocsMenuFirst');				
	  }
	  else if (briefcase.subtabLinks[i].li.hasClass('porteDocsMenuLastActive')) {
		briefcase.subtabLinks[i].li.removeClass('porteDocsMenuLastActive').addClass('porteDocsMenuLast');
	  }
	}
  };

  /**
   * selectSubTabItem
   * select active sub tab
   * @author fl0r3nt
   */
  Briefcase.prototype.selectSubTabItem = function(offset) {
	briefcase.resetSubTabItem();
	if (!briefcase.subtabLinks[offset].li.hasClass('porteDocsMenuFirst') && !briefcase.subtabLinks[offset].li.hasClass('porteDocsMenuLast')) {
	  briefcase.subtabLinks[offset].li.addClass('porteDocsMenuActive');
	}
	if (briefcase.subtabLinks[offset].li.hasClass('porteDocsMenuFirst')) {
	  briefcase.subtabLinks[offset].li.removeClass('porteDocsMenuActive').removeClass('porteDocsMenuFirst').addClass('porteDocsMenuFirstActive');
	}
	if (briefcase.subtabLinks[offset].li.hasClass('porteDocsMenuLast')) {
	  briefcase.subtabLinks[offset].li.removeClass('porteDocsMenuActive').removeClass('porteDocsMenuLast').addClass('porteDocsMenuLastActive');
	}
	briefcase.selectedSubTabId = offset;
  };

  /**
   * restoreSubTabItem
   * restore active sub tab
   * @author fl0r3nt
   */
  Briefcase.prototype.restoreSubTabItem = function() {
	var lis = $('ul.porteDocsMenu > li');
	lis.each(function(i, elt){
	  var element = $(elt);
	  element.removeClass('porteDocsMenuLast')
	    .removeClass('porteDocsMenuLastActive')
	    .removeClass('porteDocsMenuFirst')
	    .removeClass('porteDocsMenuFirstActive')
	    .removeClass('porteDocsMenuActive');
	  if (i == 0) {
		element.addClass('porteDocsMenuFirst');
		if (i == lis.length-1) {
		  element.addClass('porteDocsMenuLast');
		}
	  }
	  else if (i == lis.length-1) {
	    element.addClass('porteDocsMenuLast');
	  }
	});
  };

  /**
   * selectFirstSubTab
   * select the fist tab with content
   * @author fl0r3nt
   */
  Briefcase.prototype.selectFirstSubTab = function(currentTabId) {
	briefcase.subtabLinks[currentTabId].li.remove();
	var tabId = 0;
	if ($('ul.porteDocsMenu > li').length > 0){
	  for (i=0; i < this.subtabLinks.length; i++) {
		if (this.subtabLinks[i].li.html() == $('ul.porteDocsMenu > li:first').html()) {
		  tabId = i;  
		}
	  }
	  briefcase.restoreSubTabItem();
	  briefcase.selectSubTabItem(tabId);
	  briefcase.loadSubTabContent(briefcase.subtabLinks[tabId].link.attr('href'));
	}
	else {
	  if (briefcase.selectedTabId == 1) {
		$('a.alertsThumbnail').removeClass('thumbnailAlertOn');
		$('#headerNbAlert').remove();
		var html = '<p>'+artilinki.options.briefcase.alerts_empty_part1+'<br />'
		  +artilinki.options.briefcase.alerts_empty_part2
		  +'(<a href="'+artilinki.options.briefcase.alerts_empty_url+'" title="'+artilinki.options.briefcase.alerts_empty_link+'">'+artilinki.options.briefcase.alerts_empty_link+'</a>)'
		  +'</p>';
		briefcase.tabContent.css('opacity',0);
		briefcase.tabContent.html(html);
		briefcase.tabContent.fadeTo('slow', 1);
	  }
	  else {
		var html = '<p>'+artilinki.options.briefcase.fav_empty_part1+'<br />'
		  +artilinki.options.briefcase.fav_empty_part2
		  +'(<span class="addToFav2"></span>).'
		  +'</p>';
		briefcase.tabContent.css('opacity',0);
		briefcase.tabContent.html(html);
		briefcase.tabContent.fadeTo('slow', 1);
	  }
	}
  };

  /**
   * disabledTabs
   * disable tabs (during transition)
   * @author fl0r3nt
   */
  Briefcase.prototype.disabledTabs = function() {
	for (i=0; i < this.tabLinks.length; i++) {
	  this.tabLinks[i].link.unbind('click');
	  this.tabLinks[i].link.bind('click', function(event) {
		event.preventDefault();
	  });
	}
  };

  /**
   * enabledTabs
   * enable tabs (after transition)
   * @author fl0r3nt
   */
  Briefcase.prototype.enabledTabs = function() {
	this.parentHeader.find('a.briefcase_tab').each(function(i, elt){
	  $(elt).unbind('click');
	  $(elt).bind('click', function(event) {
		event.preventDefault();
		briefcase.selectTab(i);
	  });
	});
  };
	
  /**
   * toggleDisplay
   * on click on tab, open briefcase if its not, change tab if its different than current tab, 
   * or close briefcase if its same tab
   * @author fl0r3nt
   */
  Briefcase.prototype.toggleDisplay = function() {
	if ($(window).scrollTop() != 0 && (briefcase.destinationTabId == briefcase.selectedTabId || briefcase.selectedTabId == null)) {
	  var bodyElt;
	  if ($.browser.safari || $.browser.chrome) {
		bodyElt = $('body');	
	  }
	  else {
	    bodyElt = $('html');
	  }
	  bodyElt.animate({scrollTop: 0}, 300, function() {
		briefcase.toggleSlide();
	  });
	}
	else {
	  briefcase.toggleSlide();
	}
  };
	
  /**
   * toggleSlide
   * move current page to top position (scroll) if its necessary
   * @author fl0r3nt
   */
  Briefcase.prototype.toggleSlide = function() {
	if (this.isOpen && this.destinationTabId == this.selectedTabId && this.destinationTabId == this.loadingTabId) 
	{
	  this.disabledTabs();
	  this.checkXhr();
	  this.isOpen = false;
	  this.container.stop(true, true).slideUp({complete: this.close});
	}
	else {	
	  this.container.slideDown('slow');
	  this.setHeader('fixed');
	  this.isOpen = true;
	  $('#artiContent').css('margin-top', this.headerHeight+'px');
	  this.loadTabContent();
	}
  };	
  
  /**
   * close
   * close the brefcase : reset options and clear content
   * @author fl0r3nt
   */
  Briefcase.prototype.close = function() {
	briefcase.setHeader();
	briefcase.destinationTabId = null;
	briefcase.selectedTabId = null;
	briefcase.loadingTabId = null;
	briefcase.enabledTabs();
	briefcase.content.html('');
  };
  
  /**
   * setHeader
   * modify page header in order to keep it in the foreground (over the page content)
   * @author fl0r3nt
   */
  Briefcase.prototype.setHeader = function(state) {
	if (state == 'fixed') {
	  this.parentHeader.css('position', 'fixed');
	  $('#artiContent').css('margin-top', this.headerHeight+'px');
	  this.parentHeader.css('width', $(window).width());
	  $(window).bind('resize', this.onWindowResize);
	}
	else {
	  briefcase.resetTabItem();
	  briefcase.parentHeader.css('position', 'relative');
	  $('#artiContent').css('margin-top', '0');
	  $(window).unbind('resize');
	  briefcase.parentHeader.css('width', '100%');
	}
  };

  /**
   * onWindowResize
   * update header size on window resize
   * @author fl0r3nt
   */
  Briefcase.prototype.onWindowResize = function() {
	briefcase.parentHeader.css('width', $(window).width());
  };
	
  /**
   * showLoading
   * display main loading
   * @author fl0r3nt
   */
  Briefcase.prototype.showLoading = function() {
	briefcase.content.stop(true,true).fadeTo('slow', 0);
	briefcase.loading.css('display', 'block');
	briefcase.loading.stop(true,true).fadeTo('slow', 1);
  };
  
  /**
   * hideLoading
   * hide main loading
   * @author fl0r3nt
   */
  Briefcase.prototype.hideLoading = function() {
	briefcase.content.stop(true,true).fadeTo('slow', 1);
	briefcase.loading.stop(true,true).fadeTo('slow', 0, function(){
	  briefcase.loading.css('display', 'none');
	});
  };

  /**
   * showContentLoading
   * show content loading (for sub tabs)
   * @author fl0r3nt
   */
  Briefcase.prototype.showContentLoading = function() {
	briefcase.tabContent.stop(true,true).fadeTo('slow', 0);
	briefcase.loading.css('display', 'block');
	briefcase.loading.stop(true,true).fadeTo('slow', 1);
  };
  
  /**
   * hideContentLoading
   * hide content loading (for sub tabs)
   * @author fl0r3nt
   */
  Briefcase.prototype.hideContentLoading = function() {
	briefcase.tabContent.stop(true,true).fadeTo('slow', 1);
	briefcase.loading.stop(true,true).fadeTo('slow', 0, function(){
	  briefcase.loading.css('display', 'none');
	});
  };
	
  /**
   * initSubTab
   * manage all actions and listener for a tab
   * @author fl0r3nt
   * @author bat
   */
  Briefcase.prototype.initSubTab = function() {
	//Setting up sub tb menu
	this.content.find('.porteDocsMenu').find('a').each(function(i, elt){
	  $(elt).bind('click', function(event){
		event.preventDefault();
		briefcase.selectSubTabItem(i);
		briefcase.loadSubTabContent($(event.currentTarget).attr('href'));
	  });
	  var parentLi = $(elt).parent();
	  briefcase.subtabLinks[i] = {link: $(elt), li: parentLi, id: i};
	  if (parentLi.hasClass('porteDocsMenuFirstActive') || parentLi.hasClass('porteDocsMenuLastActive') || parentLi.hasClass('porteDocsMenuActive')) {
		briefcase.currentRoute = $(elt).attr('href');
		briefcase.selectedSubTabId = i;
	  }
	});
		
	//Setting up artibox on loaded links
	artibox.scanLinks(this.content);
	this.content.find(".ajax_delete").each(function(i, elt){
	  $(elt).bind('click', function(event) {
		event.preventDefault();
		$(event.currentTarget).parent().parent().find('.porteDocsContentListItemLoading').css('display', 'block');
		if (briefcase.selectedTabId == 1) {
		  briefcase.removeAlert($(event.currentTarget).attr('href'));
		}
		else {
		  briefcase.removeFavorite($(event.currentTarget).attr('href'));
		}
	  });
	}, false);
	
	var buttonIsOver = false;
	this.content.find(".infos").each(function(i, elt){
	  var $button = $(elt);
	  $button.click(function(event) {
		var $menu = $(event.target).next('.infosList');		
		event.preventDefault();
		// Close all opened infos if necessary
  	    $('.infosList:visible').each(function(i, val){
	      $(val).css('display', 'none');
	      $(val).prev('.infos').removeClass('infosActive');
	      $(val).parent('.porteDocsContentListItemHeader').removeClass('porteDocsContentListItemHeaderActive');
	    });
		$(event.target).addClass('infosActive');
		$(event.target).parent('.porteDocsContentListItemHeader').addClass('porteDocsContentListItemHeaderActive');
		
		$(event.target).css('z-index', 0);
		if( $menu.is("ul") ) {
		  // Let's get content with Ajax request
	      briefcase.loadAlertNotifContent($button);
	      $button.parent('.infosContainer').bind("mouseleave",function(event){
	    	$menu.fadeOut('fast').unbind('mouseover').unbind('mouseleave');
	    	$button.removeClass('infosActive').unbind('mouseover').unbind('mouseleave');
	  	  });
		}
	  });
	}, false);
		
	//Setting width to prevent vertical scroll
	this.updateTabWidth();
  };
  
  /**
   * loadAlertNotifContent
   * load alert infos content
   * @author Bat
   * @author fl0r3nt
   */
  Briefcase.prototype.loadAlertNotifContent = function(elt){
	parent_id = elt.closest('.porteDocsContentListItem').attr('id');
    if (briefcase.cacheContent[parent_id] != undefined) {
      elt.next('.infosList').html(briefcase.cacheContent[parent_id]).css('display', 'block');
	}
	else {
	  loading_elt = elt.parent().prev('.infosListItemLoading');
	  loading_elt.css('display', 'block');
	  url = elt.attr('href');
	  this.xhr = $.ajax({
	    type: 'GET',
	    url: this.getAjaxUrl(url+'?update=1'),
	    beforeSend: briefcase.checkXhr,
	    success: function (data) {
		  loading_elt.css('display', 'none');
		  elt.next('.infosList').html(data).css('display', 'block');
		  briefcase.cacheContent[parent_id] = data;
	    },
	    error: briefcase.onAjaxError
	  });
	}
  };
  
  /*
  Briefcase.prototype.updateAlertNotifContent = function(elt){
	elt.html(data);
  };
  */
  
  /**
   * updateTabWidth
   * on open, adjust the div size to be just on line, with overflow scroll
   * @author fl0r3nt
   */
  Briefcase.prototype.updateTabWidth = function() {
	var items = briefcase.content.find('.briefcase_item');
	if (items.length > 0) {
	  $('#porteDocsContainerContent').css('width',(items.length * ($(items[0]).outerWidth()+25))+'px');
	}
  };
  
  /**
   * loadSubTabContent
   * load the content of a subtab, with an ajax request
   * @author fl0r3nt
   */
  Briefcase.prototype.loadSubTabContent = function(url) {
	if (this.currentRoute != url) {
	  artibox.unbindLinks(this.content);
	  this.currentRoute = url;
	  if (briefcase.cacheContent[briefcase.selectedTabId+'_'+briefcase.selectedSubTabId] != undefined) {
		briefcase.tabContent.html(briefcase.cacheContent[briefcase.selectedTabId+'_'+briefcase.selectedSubTabId]);
		briefcase.initSubTab();
	  }
	  else {
		this.showContentLoading();
		this.xhr = $.ajax({
		  type: 'GET',
		  url: this.getAjaxUrl(url+'?update=1'),
		  beforeSend: briefcase.checkXhr,
		  success: briefcase.onLoadSubTabContent,
		  error: briefcase.onAjaxError
		});
	  }
	}
  };
  
  /**
   * onLoadSubTabContent
   * callback for loadSubTabContent
   * called when request is finished
   * @author fl0r3nt
   */
  Briefcase.prototype.onLoadSubTabContent = function(data) {
	briefcase.tabContent.html(data);
	briefcase.cacheContent[briefcase.selectedTabId+'_'+briefcase.selectedSubTabId] = data;
	briefcase.tabContent = $('#porteDocsContainerContent');
	briefcase.initSubTab();
	briefcase.hideContentLoading();
  };
	
  /**
   * loadTabContent
   * load the content of a tab, with an ajax request
   * @author fl0r3nt
   */
  Briefcase.prototype.loadTabContent = function() {
	if (this.destinationTabId != this.selectedTabId && this.destinationTabId != this.loadingTabId) {
	  this.showLoading();
	  this.loadingTabId = this.destinationTabId;
	  this.selectedTabId = this.destinationTabId;
	  this.xhr = $.ajax({
		type: 'GET',
		url: briefcase.getAjaxUrl(briefcase.tabLinks[briefcase.destinationTabId].link.attr('href')),
		beforeSend: briefcase.checkXhr,
		success: briefcase.onAjaxLoad,
		error: briefcase.onAjaxError
	  });
	}
  };
	
  /**
   * onAjaxLoad
   * callback for loadTabContent
   * called when request is finished
   * @author fl0r3nt
   */
  Briefcase.prototype.onAjaxLoad = function(data) {
	briefcase.content.html(data);
	briefcase.tabContent = $('#porteDocsContainerContent');
	briefcase.selectedTabId = briefcase.destinationTabId;
	briefcase.initSubTab();
	briefcase.hideLoading();
	this.loadingTabId = null;
  };
  
  /**
   * checkXhr
   * check if an ajax request is in progress,
   * in that case, stop request before starting the new one
   * @author fl0r3nt
   */
  Briefcase.prototype.checkXhr = function() { if (briefcase.xhr != null) briefcase.xhr.abort(); };
  
  /**
   * onAjaxError
   * callback for loadTabContent
   * called when request produce an error
   * @author fl0r3nt
   */
  Briefcase.prototype.onAjaxError = function(xhr, textStatus) {
	var msg = '';
	switch (xhr.status) {
	  case 404:
	  	msg = "<p>" + artilinki.options.error_404 +xhr.status + " " + xhr.statusText+"</p>";
	  break;
	  case 401:
	  	msg = "<p>" + artilinki.options.error401 + "</p>";
	  break;
	  default:
	  	msg = "<p>" + artilinki.options.error_500 + xhr.status + " " + xhr.statusText+"</p>";
	  break;
	}
	if (msg != '') {
	  briefcase.content.html("<div class=\"porteDocsContentMenu\"></div><div class=\"porteDocsContentListContainer\"><div id=\"porteDocsContainerContent\" class=\"porteDocsContentList\">"+msg+"</div></div>");
	}
	briefcase.hideLoading();
	this.loadingTabId = null;
  };
  
  /**
   * onAjaxErrorAlert
   * callback for removeAlert
   * display an alert xith the eroor message
   * @author fl0r3nt
   */
  Briefcase.prototype.onAjaxErrorAlert = function(xhr, textStatus) {
	var msg = '';
	switch (xhr.status) {
	  case 401:
	  	msg = "" + artilinki.options.error401 + "";
	  break;
	}
	if (msg != '') {
	  alert(msg);
	}
	$('.porteDocsContentListContainer').find('.porteDocsContentListItemLoading').css('display', 'none');
	briefcase.hideLoading();
  };
	
  /**
   * removeAlert
   * launch the delete alert request in ajax
   * for now, commented : wait for new alert specs
   * @author fl0r3nt
   */
  Briefcase.prototype.removeAlert = function(url) {
	this.xhr = $.ajax({
	  type: 'GET',
	  url: url,
	  beforeSend: briefcase.checkXhr,
	  success: briefcase.onRemoveAlert,
	  error: briefcase.onAjaxErrorAlert
	});
  };
	
  /**
   * removeFavorite
   * launch the delete favorite request in ajax
   * @author fl0r3nt
   */
  Briefcase.prototype.removeFavorite = function(url) {
	this.xhr = $.ajax({
	  type: 'GET',
	  url: url,
	  beforeSend: briefcase.checkXhr,
	  success: briefcase.onRemoveFavorite,
	  error: briefcase.onAjaxErrorAlert
	});
  };
	
  /**
   * onRemoveAlert
   * callback for removeAlert
   * remove deleted alert element in the DOM (with effects)
   * for now, commented : wait for new alert specs
   * @author fl0r3nt
   */
  Briefcase.prototype.onRemoveAlert = function(data) {
	var posSpace = data.indexOf(' ', 0) != -1 ? data.indexOf(' ', 0) : data.length;
	var result = data.substr(0, posSpace);
	switch(result) {
	  case "[success_callback]":
		var sep1 = data.indexOf('[[', posSpace);
		var sep2 = data.indexOf(']]', posSpace);
		if (sep1 == -1 || sep2==-1) {
		  alert(artilinki.options.error_redirect);
		}
		else {
		  var tmp = data.slice(sep1+2, sep2);
		  params = tmp.split(';');
		  //briefcase.deleteAlert(params[1]);
		  var nb = $('#headerNbAlert'); var c = nb.html();
		  nb.html(''+(parseInt(c)-1)+'');
		  if (nb.html() == 0) {
		    $('.alertsThumbnail').removeClass('thumbnailAlertOn');
		    nb.remove();
		  }
		  var currentTabId = briefcase.selectedSubTabId;
		  if (briefcase.selectedTabId == 1) { //only if called from alerts tab
		    var subtab = briefcase.subtabLinks[currentTabId].li.find('span.number');
		    nb = parseInt(subtab.html())-1;
		    subtab.html(''+(nb)+'');
		    briefcase.cacheContent['1_'+currentTabId] = undefined;
		    $('#alert_'+params[1]).fadeOut('fast', function(){
		      $('#alert_'+params[1]).remove();
			  briefcase.updateTabWidth();
			  if (nb == 0) {
			    briefcase.selectFirstSubTab(currentTabId);
			  }	
		    });		  
		  }
		}
	    return true;
	  break;
	}
  };
	
  /**
   * onRemoveFavorite
   * callback for removeFavorites
   * remove deleted favorite element in the DOM (with effects)
   * @author fl0r3nt
   */
  Briefcase.prototype.onRemoveFavorite = function(data) {
	var posSpace = data.indexOf(' ', 0) != -1 ? data.indexOf(' ', 0) : data.length;
	var result = data.substr(0, posSpace);
	switch(result) {
	  case "[success_callback]":
		var sep1 = data.indexOf('[[', posSpace);
		var sep2 = data.indexOf(']]', posSpace);
		if (sep1 == -1 || sep2==-1) {
		  alert(artilinki.options.error_redirect);
		}
		else {
		  var tmp = data.slice(sep1+2, sep2);
		  params = tmp.split(';');
		  var nb = $('#headerNbFav');
		  var c = nb.html(); var pos = c.indexOf(')', 0) != -1 ? c.indexOf(')', 0) : c.length;
		  c = c.slice(1, pos); nb.html('('+(parseInt(c)-1)+')');
		  var currentTabId = briefcase.selectedSubTabId;
		  var subtab = briefcase.subtabLinks[currentTabId].li.find('span.number');
		  nb = parseInt(subtab.html())-1;
		  subtab.html(''+(nb)+'');
		  briefcase.cacheContent['1_'+currentTabId] = undefined;
		  $('#favorite_'+params[1]).fadeOut('fast', function(e){
			$('#favorite_'+params[1]).remove();
			briefcase.updateTabWidth();
			if (nb == 0) {
			  briefcase.selectFirstSubTab(currentTabId);
			  if ($('.porteDocsMenu > li').length == 0){
			    subtab.remove(); /*$('#headerNbAlert').remove();*/
			    $('.alertsThumbnail').removeClass('thumbnailAlertOn');			
			  }
			}	
		  });
		  if (params[2] == 1) {
			briefcase.deleteAlert(params[1]);
		  }
		}
	    return true;
	  break;
	}
  };
	 
  /**
   * getAjaxUrl
   * add time GET param to prevent cache bug on former browser
   * @author fl0r3nt
   */
  Briefcase.prototype.getAjaxUrl = function(url) {
	var currentTime = new Date();
	if (url.indexOf("?")!=-1) {url+= '&t='+currentTime.getTime();}
	else {url+= '?t='+currentTime.getTime();}
	return url;
  };
}

