/** tabManager 1.2
 * tab management with SWFAddress integration and Omniture tagging
*/

var TabManager = {
	initialized:false,
	index:null,
	currentHeaderSRC:null,
	data:[],
	selector:null,
	statsHaveNotBeenSendViaTabInteraction:true,
	
	init: function(selector,data) {
		
		this.selector = selector;
		this.data = data;
		
		var name = document.location.toString();
		
		if (name.match('#')) {
		  // click the navigation item corresponding to the anchor
			name = name.split('#/')[1];
		}else{
			name = data[0].id;
		}
		
		var num = TabManager.getIndexFromTabName(name);
		
		if(num == undefined) num = 0;
		TabManager.activateTab(num);
		
		// init Tab Buttons
		$(this.selector+" a").click(function(){
	        /*var length = $(this).attr("href").length;
	        var tab    = $(this).attr("href").charAt(length-1);
	        TabManager.activateTab(tab-1);*/
	      
	      	var hrefAnchor  =$(this).attr("href").split('#')[1];
	      	if(SWFAddress) SWFAddress.setValue(hrefAnchor);
	      	
	      	//send statistics when users has clicked
	      	var name = hrefAnchor;
			if (name.match('#')) name = name.split('#')[1];
	      	var num = TabManager.getIndexFromTabName(name);
			if(num==-1) return;
			TabManager.sendStatistics(num);
	      	
	    	return false;
		});
		
		
		if(SWFAddress){
			
			SWFAddress.onChange = function(){
				
				var name = SWFAddress.getValue();
				if (name.match('#')) {
				  // click the navigation item corresponding to the anchor
					name = name.split('#')[1];
				}
				var num = TabManager.getIndexFromTabName(name);
				if(num==-1) return;
				
				TabManager.activateTab(num);
				
			}
			
			
		}
		
		
		setTimeout("TabManager.triggerEvent('"+name+"')", 10);
		
		
		
		
	},
	
	triggerEvent: function(name){
		$("#cp_tab_"+(TabManager.getIndexFromTabName(name)+1)+" a").trigger('click');
	},
	
	getCurrentTabId: function(){
		
		return this.data[this.index].id;
	},
	
	getIndexFromTabName: function(name){
		var num = -1;
		if(!name) return;
		if (name.match('/')) name = name.split('/')[1];
			
		for (var i = 0; i < this.data.length; i++) { // find index from universal tab names
			if (this.data[i].id == name) var num = i;
		}
		return num;
	},
	
	setTab: function (value){
		if(value == "undefined") value = 0;
		if(!parseInt(value)) value = 0;
		
		if (value >= $('#p-rcb "+this.selector+" li').length) value = 0;
		if (this.index == value)  return ;
		
		$('li#cp_tab_' + (value + 1) + ' a').click();
	},
	
	/*
	 * show a tab and hides others
	 *
	 * @var integer or string, the index of the availableTabs global or a string which must be present in availableTabs
	 */
	activateTab : function (value){
			
			var v = this.data[value].id;
			
			// Hide all
		    for (var i = 0; i < $(this.selector+" li").length; i++) {
		        var content_tab = this.data[i].id;
				var tab = $(this.selector+" li:eq("+i+")");
		        if (i == value) {
					
					
		            // First tab
		            if ((value + 1) == 1) {
		                tab.addClass('cp_active_firstTab'); // extra class needed because IE6 doesn't fully support multiple class chains
		            }

		            // Last tab
		            if ((value + 1) == $(this.selector+" li").length){
		                tab.addClass('cp_active_lastTab');
		            }

		            tab.addClass('cp_active');
		            tab.prev().addClass('cp_active_leftSibling');
		            tab.next().addClass('cp_active_rightSibling');
		            tab.removeClass('cp_inactive');
		            
		            $("#"+content_tab).show();
		            
		        } else {

		            tab.addClass('cp_inactive');
		            tab.removeClass('cp_active');
		            tab.removeClass('cp_active_firstTab');
		            tab.removeClass('cp_active_lastTab');
		            tab.prev().removeClass('cp_active_leftSibling');
		            tab.next().removeClass('cp_active_rightSibling');
		            $("#"+content_tab).hide();
		        }
		    }
		    
			
		    // remember last set index
		    this.index = value;
		    
		    cp_openPage(this.data[this.index].id);
			
		    // ping statistics (commented out and moved to click event handler because omniture should only be sent if user click a tab)
		    /*if(!this.initialized){
		    	this.initialized=true;
		    	this.sendStatistics(value);
		    }*/
		    
		    if(cp_tabChanged) cp_tabChanged(value);
	},
	
	/*
	 * Send statictics when the user interacts with the tabs.
	 */
	sendStatistics: function (value) {
		
	    if (typeof s != 'object')
	        return;
	    
	    // normalize tab values;
	    if (typeof this.data[value].name != 'undefined'){
	        value = this.data[value].name;
		}else{
	        value = "TAB" + value;
		}
	    if (!this.statsHaveNotBeenSendViaTabInteraction) {
		    var PRODUCTSUBCATEGORY = this.getMetrics('PRODUCTSUBCATEGORY');
		    var DIVISION = this.getMetrics('DIVISION');
		    var SECTION = this.getMetrics('SECTION');
		    var CATALOGTYPE = this.getMetrics('CATALOGTYPE');
		    var PRODUCTGROUP = this.getMetrics('PRODUCTGROUP');
		    var PRODUCTCATEGORY = this.getMetrics('PRODUCTCATEGORY');
		    
	        if (PRODUCTSUBCATEGORY != "") {
	            var TABSECTION = PRODUCTSUBCATEGORY + '_' + value;
	            s.pageName = DIVISION + ":" + SECTION + ":" + TABSECTION + ":" + CATALOGTYPE;
	        } else if (PRODUCTCATEGORY != "") {
	            var TABSECTION = PRODUCTCATEGORY + '_' + value;
	            s.pageName = DIVISION + ":" + SECTION + ":" + TABSECTION + ":" + CATALOGTYPE;
	        }
	        s.t();
	    }
	    this.statsHaveNotBeenSendViaTabInteraction = false;
	},
	
	getMetrics: function (metric) {
	  var content = $("meta[name='PHILIPS.METRICS."+metric+"']").attr("content");
	  if (typeof content == 'undefined' || content == null){
	      return '';
	  }else{
	      return content;
	  }
	}
	
}
