var Spry; if (!Spry) Spry = {}; if (!Spry.Widget) Spry.Widget = {}; 

Spry.Widget.ExtendedTabbedPanels = function(element, opts) { 
    Spry.Widget.TabbedPanels.call(this, element, opts); 
}; 

Spry.Widget.ExtendedTabbedPanels.prototype = new Spry.Widget.TabbedPanels(); 
Spry.Widget.ExtendedTabbedPanels.prototype.constructor = Spry.Widget.ExtendedTabbedPanels; 

Spry.Widget.ExtendedTabbedPanels.prototype.addTab = function (tabname, tabcontent, position) { 
var tabs = this.getTabs(); 

if((!position && position != 0)|| position > tabs.length) 
position = tabs.length; 

var newtab = tabs[tabs.length - 1].cloneNode(true); 
this.setElementNodeValue(newtab, tabname); 

if(position == tabs.length) 
this.getTabGroup().appendChild(newtab); 
else 
this.getTabGroup().insertBefore(newtab, tabs[position]); 

var tabContents = this.getContentPanels(); 
var newContentPanel = tabContents[tabContents.length - 1].cloneNode(false); 
newContentPanel.innerHTML = tabcontent; 

if(position == tabs.length) 
this.getContentPanelGroup().appendChild(newContentPanel); 
else 
this.getContentPanelGroup().insertBefore(newContentPanel, tabContents[position]); 

this.addPanelEventListeners(newtab, newContentPanel); 

this.showPanel(position); 
}

Spry.Widget.ExtendedTabbedPanels.removeEventListener = function(element, eventType, handler, capture) 
{ 
	try 
	{ 
	if (element.removeEventListener) 
	element.removeEventListener(eventType, handler, capture); 
	else if (element.detachEvent) 
	element.detachEvent("on" + eventType, handler); 
	} 
	catch (e) {} 
}; 


Spry.Widget.ExtendedTabbedPanels.prototype.removePanelEventListeners = function(tab, panel) 
{ 
	var self = this; 
	Spry.Widget.ExtendedTabbedPanels.removeEventListener(tab, "click", function(e) { return self.onTabClick(e, tab); }, false); 
	Spry.Widget.ExtendedTabbedPanels.removeEventListener(tab, "mouseover", function(e) { return self.onTabMouseOver(e, tab); }, false); 
	Spry.Widget.ExtendedTabbedPanels.removeEventListener(tab, "mouseout", function(e) { return self.onTabMouseOut(e, tab); }, false); 

	if (this.enableKeyboardNavigation) 
	{ 
		// XXX: IE doesn't allow the setting of tabindex dynamically. This means we can't 
		// rely on adding the tabindex attribute if it is missing to enable keyboard navigation 
		// by default. 

		// Find the first element within the tab container that has a tabindex or the first 
		// anchor tag. 

		var tabIndexEle = null; 
		var tabAnchorEle = null; 

		this.preorderTraversal(tab, function(node) { 
		  if (node.nodeType == 1 ) 
		  { 
		    var tabIndexAttr = tab.attributes.getNamedItem("tabindex"); 
		    if (tabIndexAttr) 
		    { 
		      tabIndexEle = node; 
		      return true; 
		    } 
		    if (!tabAnchorEle && node.nodeName.toLowerCase() == "a") 
		      tabAnchorEle = node; 
		  } 
		return false; 
		}); 

		if (tabIndexEle) 
		  this.focusElement = tabIndexEle; 
		else if (tabAnchorEle) 
		  this.focusElement = tabAnchorEle; 

		if (this.focusElement) 
		{ 
		   Spry.Widget.ExtendedTabbedPanels.removeEventListener(this.focusElement, "focus", function(e) { return self.onTabFocus(e, tab); }, false); 
		   Spry.Widget.ExtendedTabbedPanels.removeEventListener(this.focusElement, "blur", function(e) { return self.onTabBlur(e, tab); }, false); 
		   Spry.Widget.ExtendedTabbedPanels.removeEventListener(this.focusElement, "keydown", function(e) { return self.onTabKeyDown(e, tab); }, false); 
		} 
	} 
}; 


Spry.Widget.ExtendedTabbedPanels.prototype.setElementNodeValue = function(element, nodevalue) { 
	var currentElement = element; 
	var tmpElement = this.getElementChildren(element); 

	while(tmpElement.length != 0) { 
	currentElement = tmpElement[0]; 
	tmpElement = this.getElementChildren(tmpElement[0]); 
	} 
	currentElement.innerHTML = nodevalue; 
};

Spry.Widget.ExtendedTabbedPanels.tabIDPrefix = "tabdivID_"; 
Spry.Widget.ExtendedTabbedPanels.tabIDCounter = 0; 
Spry.Widget.ExtendedTabbedPanels.getNewTabID = function(){ 
return Spry.Widget.ExtendedTabbedPanels.tabIDPrefix + Spry.Widget.ExtendedTabbedPanels.tabIDCounter++ ; 
}; 

Spry.Widget.ExtendedTabbedPanels.prototype.addTabFromURL = function (tabname, tabURL, position) { 
  var contentDivID = Spry.Widget.ExtendedTabbedPanels.getNewTabID(); 
  var tabContent = "<div id='" + contentDivID + "' class='TabbedPanelsContent'></div>"; 

  this.addTab(tabname, tabContent, position); 
  Spry.Utils.updateContent(contentDivID, tabURL); 
}; 

Spry.Widget.ExtendedTabbedPanels.prototype.addTabWithManagePlaylist = function (tabname, position) { 

  var tabs = this.getTabs(); alert('tabs.length ' + tabs.length);
  if (tabs.length > position)
    return; 
  
  var contentDivID = Spry.Widget.ExtendedTabbedPanels.getNewTabID(); 
  var tabContent = "<div id='managePlaylist' class='TabbedPanelsContent' style='visibility:hidden;background-color:_#E6E9EC;padding:0px;font-size:12px;-border:1px solid #ddd;border-bottom:0px; width: 435px;height:150px;position:relative; margin-top:20px; margin-left:10px;overflow-x:hidden; overflow-y:auto'></div>"; 

  this.addTab(tabname, tabContent, position); 
  document.getElementById('managePlaylist').innerHTML = document.getElementById('_managePlaylist').innerHTML;
}; 
