/*
	TABSTRIP.XML 1.5
	download at: http://acidmartin.wemakesites.net/?pageId=TabStripXml
	created by: Martin Ivanov
	email: acid_martin@yahoo.com, martin@acidmartin.com
	personal website: http://acidmartin.wemakesites.net/
	portfolio: http://wemakesites.net
	
	IMPORTANT REGULATIONS:
	
	1. IF YOU ARE USING THE OBFUSCATED VERSION OF TABSTRIP.XML, IT IS FORBIDDEN TO DEOBFUSCATE AND MODIFY THIS SRCIPT WITHOUT AUTHOR'S WRITTEN PERMISSION. OTHERWISE SUCH ACTIONS WILL BE CONSIDERED VIOLATIONS OF THE COPYRIGHT LAWS AND LEGAL STEPS WILL BE TAKEN.
	
	2. IF YOU HAVE PURCHASED THE SOURCE CODE OF TABSTRIP.XML, YOU CANNOT USE THIS SCRIPT ON WEBPAGES WITHOUT
	OBFUSCATING IT. OTHERWISE SUCH ACTIONS WILL BE CONSIDERED VIOLATIONS OF THE COPYRIGHT LAWS AND LEGAL STEPS WILL BE TAKEN.
*/

var TabstripXmlVersion = '1.5';
var TabStripName = 'TabStrip.XML';
var ErrMessage = '\n\nError: Unable to Create Tabstrip\n\n';
var TrueOrFalse = 'It should be either "true" or "false".';
var PurchaseLink = 'http://acidmartin.wemakesites.net/BuyTabStripXml15.html';

function $(stringId)
{
	return document.getElementById(stringId);
}

function changeTabs(tabStripId, tabButtonId, tabPaneId)
{
	var tabLinks = $(tabStripId + '_tab_buttons').getElementsByTagName('a');
	var tabContainerElement = $(tabStripId + '_tab_panes').getElementsByTagName('div');
	
	for (i = 0; i < tabLinks.length; i ++)
	{
		tabLinks[i].className = '';
	}
	for (i = 0; i < tabContainerElement.length; i ++)
	{
		tabContainerElement[i].className = 'tab_pane TabPanesHidden';
	}
	
	$(tabButtonId).className = 'SelectedTabStripButton';
	$(tabPaneId).className = 'tab_panes TabPanesVisible';
}

function createTabStrip(TabFile, TabLoader)
{
	var TabStripXmlIsDemo = false;
	var TabPlaceHolder = $(TabLoader);
	if(window.ActiveXObject)
	{
		tabs = new ActiveXObject("Microsoft.XMLDOM");
		tabs.async = false;
		tabs.load(TabFile);
	}
	else if(document.implementation && document.implementation.createDocument)
	{
		tabs = document.implementation.createDocument("","",null);
		tabs.async = false;
		tabs.load(TabFile);
	}
	if(TabPlaceHolder == null)
	{
		alert(TabStripName + ' ' + TabstripXmlVersion + ErrMessage + '"' + TabLoader + '" ID was not found in the context of the page.\nMake sure you have specified the right ID for TabStrip placeholder.');
		return false;
	}
	var loadTabStripBaseCssFile = document.createElement('link');
	loadTabStripBaseCssFile.setAttribute('type', 'text/css');
	loadTabStripBaseCssFile.setAttribute('rel', 'stylesheet');
	loadTabStripBaseCssFile.setAttribute('href', TabStripScriptsFolder + '/Tabstrip.XML/Scripts/Tabstrip.css');
	document.getElementsByTagName('head')[0].appendChild(loadTabStripBaseCssFile);
	var loadTabStripSkinFile = document.createElement('link');
	loadTabStripSkinFile.setAttribute('type', 'text/css');
	loadTabStripSkinFile.setAttribute('rel', 'stylesheet');
	loadTabStripSkinFile.setAttribute('href', TabStripScriptsFolder + '/Tabstrip.XML/Skins/' + tabs.getElementsByTagName('tabstripxml')[0].getAttribute('skin') + '/Styles.css');
	document.getElementsByTagName('head')[0].appendChild(loadTabStripSkinFile);
	
	if(tabs.getElementsByTagName('tabstripxml')[0].getAttribute('enabled'))
	{
		TabPlaceHolder.className = 'tabstripxml ' + tabs.getElementsByTagName('tabstripxml')[0].getAttribute('skin');
		try
		{
			TabPlaceHolder.style.width = tabs.getElementsByTagName('tabstripxml')[0].getAttribute('width') + 'px';
		}
		catch(e)
		{
			alert(TabStripName + ' ' + TabstripXmlVersion + ErrMessage + 'Invalid value of the "width" property. It should be an integer. Do not use units (pixels, etc).')
			TabPlaceHolder.style.display = 'none';
		}
		var tabsTripTabs = tabs.getElementsByTagName('tabs');
		var buttonsPlaceHolder = document.createElement('div');
		var buttonsListElement = document.createElement('ul');
		var tabContentPlaceHolder = document.createElement('div');
		var demoVersionLine = document.createElement('div');
		demoVersionLine.setAttribute('id', TabPlaceHolder.id + '_demoVersionLine');
		demoVersionLine.innerHTML = '<span style="color: red !important; text-align: center !important; display: block !important; visibility: visible !important; text-indent: 0 !important; background: white !important; padding: 2px 0 !important; font: normal 11px Arial, Verdana, Sans-serif;">This is a demo of version ' + TabStripName + ' ' + TabstripXmlVersion + '. You may <a style="color: blue !important;" href="' + PurchaseLink + '" target="_blank" title="Purchase the full version">purchase</a> the full version.</span>';
		TabPlaceHolder.appendChild(buttonsPlaceHolder);
		TabPlaceHolder.appendChild(tabContentPlaceHolder);
		TabPlaceHolder.appendChild(demoVersionLine);
		buttonsPlaceHolder.className = 'tab_buttons';
		buttonsPlaceHolder.setAttribute('id', TabPlaceHolder.id + '_tab_buttons');
		tabContentPlaceHolder.setAttribute('id', TabPlaceHolder.id + '_tab_panes');
		tabContentPlaceHolder.className = 'tab_panes';
		buttonsPlaceHolder.appendChild(buttonsListElement);
		
		for (i = 0; i < tabsTripTabs.length; i++)
		{
			var hotkey = tabsTripTabs[i].getAttribute('hotkey');
			var buttonWidth = tabs.getElementsByTagName('tabstripxml')[0].getAttribute('buttonwidth');
			var buttonsListElementItem = document.createElement('li');
			buttonsListElementItem.setAttribute('id', TabLoader + '_list_item_' + i);
			var buttonsListElementItemLink = tabsTripTabs[i].getAttribute('title');
			var tabContentPlaceHolderPanel = document.createElement('div');
			var tabContentPlaceHolderPanelContents = tabsTripTabs[i].childNodes[0].nodeValue;
			var tabEnabledState = tabsTripTabs[i].getAttribute('enabled');
			var tabVisibleState = tabsTripTabs[i].getAttribute('visible');
			var tabIcon = tabsTripTabs[i].getAttribute('iconurl');
			var displayIcon = tabs.getElementsByTagName('tabstripxml')[0].getAttribute('displayicon');
			var enabletabclose = tabs.getElementsByTagName('tabstripxml')[0].getAttribute('enabletabclose');
			var enableTabCLoseCss = '';
			if(enabletabclose == 'false')
			{
				enableTabCLoseCss = 'display: none';
			}
			if(enabletabclose == 'true')
			{
				enableTabCLoseCss = '';
			}
			else if(enabletabclose != 'false' && enabletabclose != 'true')
			{
				alert(TabStripName + ' ' + TabstripXmlVersion + ErrMessage + '"' + tabs.getElementsByTagName('tabstripxml')[0].getAttribute('enabletabclose') + '" is not a valid value of the "enabletabclose" property of the <tabstripxml> tag. ' + TrueOrFalse);
				TabPlaceHolder.style.display = 'none';
				return false;
			}
			var iconHtml = '';
			if(displayIcon == 'false')
			{
				iconHtml = '';
			}
			if(displayIcon == 'true')
			{
				iconHtml = '<img src="' + tabIcon + '" height="16" width="16" class="iconImage" />';
			}
			else if(displayIcon != 'false' && displayIcon != 'true')
			{
				alert(TabStripName + ' ' + TabstripXmlVersion + ErrMessage + '"' + tabs.getElementsByTagName('tabstripxml')[0].getAttribute('displayicon') + '" is not a valid value of the "displayicon" property of the <tabstripxml> tag. ' + TrueOrFalse);
				TabPlaceHolder.style.display = 'none';
				return false;
			}
			tabContentPlaceHolderPanel.className = 'tab_pane';
			tabContentPlaceHolderPanel.setAttribute('id', TabPlaceHolder.id + '_tab_panes_' + i);
			tabContentPlaceHolderPanel.innerHTML = '<blockquote class="panelContentWrapper">' + tabContentPlaceHolderPanelContents + '</blockquote>';
			tabContentPlaceHolder.appendChild(tabContentPlaceHolderPanel);
			buttonsListElement.appendChild(buttonsListElementItem);
			buttonsListElementItem.innerHTML = '<a accesskey="' + hotkey + '" style="width: ' + buttonWidth + 'px;" onfocus="this.blur();" href="javascript:void(0)" title="' + buttonsListElementItemLink + '" id="' + TabPlaceHolder.id + '_tab_button_' + i + '" onclick="changeTabs(\'' + TabPlaceHolder.id + '\', this.id, \'' + TabPlaceHolder.id + '_tab_panes_' + i + '\'); ' + tabsTripTabs[i].getAttribute('onclentclick') + '" ><span class="tabStripOuterSpan"><span class="tabStripInnerSpan">' + iconHtml + '<span class="tabTextContainer">' + buttonsListElementItemLink + '</span></span></span></a><span style="' + enableTabCLoseCss + '" class="tabCloseButton" title="Close Tab" onclick="$(\'' + TabLoader + '_list_item_' + i + '\').className = \'closedTabStripElement\';$(\'' + TabLoader + '_tab_panes_' + i + '\').className = \'closedTabStripElement\';">Close Tab</span>';
			if(TabStripXmlIsDemo == false)
			{
				$(TabPlaceHolder.id + '_demoVersionLine').style.display = 'none';
			}
			
			if(tabEnabledState == 'false')
			{
				buttonsListElementItem.innerHTML = '<a disabled="disabled" style="cursor: no-drop !important; width: ' + buttonWidth + 'px; opacity: .5 !important; -moz-opacity: .5 !important;" onfocus="this.blur();" href="javascript:void(0)" title="' + buttonsListElementItemLink + ' (disabled)" id="' + TabPlaceHolder.id + '_tab_button_' + i + '"><span class="tabStripOuterSpan"><span class="tabStripInnerSpan">' + iconHtml + '<span class="tabTextContainer">' + buttonsListElementItemLink + '</span></span></span></a><span style="' + enableTabCLoseCss + '" class="tabCloseButton" title="Close Tab" onclick="$(\'' + TabLoader + '_list_item_' + i + '\').className = \'closedTabStripElement\';$(\'' + TabLoader + '_tab_panes_' + i + '\').className = \'closedTabStripElement\';">Close Tab</span>';
			}
			
			try
			{
				$(TabPlaceHolder.id + '_tab_panes_' + i).style.height = tabs.getElementsByTagName('tabstripxml')[0].getAttribute('tabpaneheight') + 'px';
			}
			catch(e)
			{
				alert(TabStripName + ' ' + TabstripXmlVersion + ErrMessage + 'Invalid value of the "tabpaneheight" property. It should be an integer. Do not use units (px, %, em etc).')
				TabPlaceHolder.style.display = 'none';
				return;
			}
		}
		
		var defaultOpenTab = tabs.getElementsByTagName('tabstripxml')[0].getAttribute('defaultopentab');
		try
		{
			if(defaultOpenTab == "" || !defaultOpenTab)
			{
				$(TabPlaceHolder.id + '_tab_panes_0').className = 'tab_pane TabPanesVisible';
				$(TabPlaceHolder.id + '_tab_button_0').className = 'SelectedTabStripButton';
			}
			else
			{
				$(TabPlaceHolder.id + '_tab_panes_' + defaultOpenTab).className = 'tab_pane TabPanesVisible';
				$(TabPlaceHolder.id + '_tab_button_' + defaultOpenTab).className = 'SelectedTabStripButton';
			}
		}
		catch(e)
		{
			alert(TabStripName + ' ' + TabstripXmlVersion + ErrMessage + 'Tab "' + defaultOpenTab + '" does not exist. Make sure you add the right default open tab in the "defaultopentab" property of the <tabstripxml> tag.\nIt is zero-indexed, i.e. if you want to open by default the first tab, it\'s number should be "0")');
		}
		
		if(tabs.getElementsByTagName('tabstripxml')[0].getAttribute('enabled') == "false")
		{
			TabPlaceHolder.style.display = 'none';
		}
		if(tabs.getElementsByTagName('tabstripxml')[0].getAttribute('enabled') != "false" && tabs.getElementsByTagName('tabstripxml')[0].getAttribute('enabled') != "true")
		{
			TabPlaceHolder.style.display = 'none';
			alert(TabStripName + ' ' + TabstripXmlVersion + ErrMessage + '"' + tabs.getElementsByTagName('tabstripxml')[0].getAttribute('enabled') + '" is not a valid value of the "enabled" property of the <tabstripxml> tag. ' + TrueOrFalse);
		}
	}
}

if(window.attachEvent)
{
	window.attachEvent('onload', function(e)
		{
			initTabStrips();
		}
	);
}
else
{
	window.addEventListener('load', function(e)
		{
			initTabStrips();		
		}, true	
	);
}