/* 
----------------------------------------------------
BANDIT.FM 
http://www.bandit.fm
----------------------------------------------------
EXPANDING & CONTRACTING MENU TABS

Author: Sony BMG Music Australia
Author Notes:
Each menu requires the following:
1. Must be a bulleted list with any ID specified in 
the <ul> tag & with class of 'pageTabs'
2. Each <li> must contain: 
<a href="link"><h2>Label</h2></a>
3. The ID of each <h2> must be the same ID as the <ul>
followed by '_tab[TABNO]' (eg. 'storeTabs_tab1')
4. Flash file must be in at the correct location
specified in the 'swfURL' var (line 26)
5. Tabs will not look display correctly if the 
relevant CSS styles are not included on the page.
- JB
----------------------------------------------------
*/

var swfURL = "/bandit/flash/common/tabTitle.swf";
var openingContentDivs; 

function moveTab(e) {
	if(currentlyExpanding==false) {
		var browserVersion = navigator.userAgent;
		
		// get the tab that was clicked 
		// NOTE: 'parentNode' is requred for when Flash Replacement is used for text
		if (!e) globalOpeningTab = window.event.parentNode;
		if (e.target) {
			if(browserVersion.indexOf('Firefox/3')>0) globalOpeningTab = e.target.parentNode.parentNode;
			else globalOpeningTab = e.target.parentNode;
		}
		else if (e.srcElement) { globalOpeningTab = e.srcElement; } // IE
		if (globalOpeningTab.nodeType == 3) // defeat Safari bug
			globalOpeningTab = targ.parentNode.parentNode;
		
		if(globalOpeningTab.tagName=='A') globalOpeningTab = globalOpeningTab.firstChild;	// Firefox 2
		if(globalOpeningTab.tagName=='LI') globalOpeningTab = globalOpeningTab.firstChild.firstChild; // Firefox 3
		globalOpeningMenu = globalOpeningTab.parentNode.parentNode.parentNode.getAttribute('id');
		
		// if a redirector tab, go straight to the URL
		if(globalOpeningTab.parentNode.href.indexOf('http://')>=0) {
			document.location = globalOpeningTab.parentNode.href;
			return false;
		}
		var clickedTabStatus = 	globalOpeningTab.parentNode.parentNode.className;
		if(clickedTabStatus!='initial'&&clickedTabStatus!='selected'&&globalOpeningTab.getAttribute('id')) { 
			// Close tab that is already open (but user must have clicked on an unopen tab & must have clicked on the H2 element).
			var liTabArray = document.getElementById(globalOpeningMenu).getElementsByTagName('li');
			var liTabNo = liTabArray.length;
			for(var x=0;x<liTabNo;x++) {
				if (liTabArray[x].className) {
					if (liTabArray[x].className=='selected'||liTabArray[x].className=='initial') {
							var closeTab = liTabArray[x].firstChild.firstChild;
							slideWidth(closeTab,69,0,150,0);
							liTabArray[x].className='unselected';
							callFlash(closeTab.getAttribute('id')+'swfID',0);
							if (closeTab.addEventListener) { // Firefox
								closeTab.addEventListener('tabclose',openNewTab,true);
							}
							else if(closeTab.attachEvent ) {	 // IE
								closeTab.attachEvent('onmousemove', openNewTab);
							} 
					}
				}
			}	
		}
	}
}

function openNewTab(e) {
	var browserVersion = navigator.userAgent;
	if(currentlyExpanding==false) {
		currentlyExpanding = true;
		var browserVersion = navigator.userAgent;
		// for Firefox Mac
		if((browserVersion.indexOf('Firefox')>0)&&browserVersion.indexOf('Macintosh')>0) globalOpeningTab.parentNode.onclick(); 
		globalOpeningTab.parentNode.parentNode.className = 'selected'; 
		slideWidth(globalOpeningTab,55,1,300,1);
		// setTimeout(function() { currentlyExpanding=false; },350);
		callFlash(globalOpeningTab.getAttribute('id')+'swfID',1);
		
		// put a loader icon on the tab
		var existingTabLoader = document.getElementById('flashTabLoader');
		if(existingTabLoader) existingTabLoader.parentNode.removeChild(existingTabLoader);
			
		var flashLoaderIcon = document.createElement("div");
		flashLoaderIcon.setAttribute('class','tabLoader');
		flashLoaderIcon.setAttribute('className','tabLoader');
		flashLoaderIcon.setAttribute('id','flashTabLoader');
		var swfLoaderLocation = '/bandit/flash/common/loader.swf';
		var loaderSwfId = 'tabLoaderIcon_'+Math.floor(Math.random()*1000);
		var loaderplayer = new SWFObject(swfLoaderLocation, loaderSwfId, "16", "16", "7", "#000000");
		loaderplayer.addVariable("unselectedColor",globalUnselectedColor);
		loaderplayer.addParam("wmode", "transparent");
		loaderplayer.write(flashLoaderIcon);
		globalOpeningTab.appendChild(flashLoaderIcon);
		setTimeout(function() { flashLoaderIcon.style.visibility='visible';},350);
	}
}


function Menutab(tabId) {	
	tabId = tabId+'';
	if(document.getElementById(tabId)) var tabObject = document.getElementById(tabId);
	tabObject.style.width = (tabObject.offsetWidth*1) + 'px';
	if(navigator.userAgent.indexOf('Safari')>=0) { tabObject.parentNode.parentNode.style.visibility = 'hidden'; } // Safari is slower
	if (tabObject.addEventListener) { // Firefox & Safari
		tabObject.addEventListener('click',moveTab,true);
		tabObject.parentNode.addEventListener('click',moveTab,true);
	}
	else if (tabObject.attachEvent) {	 // IE
		tabObject.attachEvent('onclick', moveTab);
	}
	
	var currentSwfId = tabId + 'swfID';
	var fplayer = new SWFObject(swfURL, currentSwfId, "200", "28", "7", "#FFFFFF");
	fplayer.addVariable("titleText",tabObject.innerHTML.toUpperCase());
	fplayer.addVariable("identifier",tabId);
	var tabVarNames = new Array("unselectedColor","selectedTabColor");
	var tabStylenames = new Array("flashTabText","flashTabTextSelected");
	
	if(tabObject.parentNode.parentNode.className=='initial')
		fplayer.addVariable("initialTab",true);
	fplayer.addParam("wmode", "transparent");
	addManyColoursAndRender(tabVarNames,tabStylenames,fplayer,tabId);
}

function eventSimulationFromFlash(identifier) { // IE & Opera EVENT/SWF Bug Fix
var browserVersion = navigator.userAgent;
if(document.createEventObject||(browserVersion.indexOf('Opera')>=0)) {
	var eventTarget = document.getElementById(identifier);
	globalOpeningTab = eventTarget;
	if(document.createEventObject) eventTarget.fireEvent('onclick');
	else { // Opera
			var evObj = document.createEvent('MouseEvents');
			evObj.initEvent( 'click', true, true );
			eventTarget.firstChild.dispatchEvent(evObj); 
		}
	} 
}

function eventSimulationFromPage(identifier) {
	var eventTarget = document.getElementById(identifier);
	globalOpeningTab = eventTarget;
	
	var tempOnclick = eventTarget.parentNode.getAttribute('onclick');
	eventTarget.parentNode.setAttribute('onclick','');
	
	if( document.createEventObject ) { // IE
		eventTarget.fireEvent('onclick');
	} else if( document.createEvent ) { // Firefox & Safari
		var evObj = document.createEvent('MouseEvents');
		evObj.initEvent( 'click', true, true );
		eventTarget.firstChild.dispatchEvent(evObj); 
	}  
	eventTarget.parentNode.setAttribute('onclick',tempOnclick);
}
/* 
function findSWF(movieName) {
		if (navigator.appName.indexOf("Microsoft") != -1) {
			return window[movieName];
		} else {
			return document[movieName];
		}
	}
   */
function callFlash(flashId,str) {
		findSWF(flashId).jsCall(str);
	}
/*
function rgb2hex(rgb) {
	var RGB = new Array(256);
	var k = 0;
	var hex = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
	
	for (i = 0; i < 16; i++) {	
		for (j = 0; j < 16; j++) {		
			RGB[k] = hex[i] + hex[j];
			k++;
		}
	}
	
	var RGBarray = rgb.split("rgb(");
	RGBarray = RGBarray[1].split(",");
	r = RGB[RGBarray[0]];
	g = RGB[RGBarray[1]*1];
	bb = RGBarray[2].split(")");
	b = RGB[bb[0]*1];
	
	return("0x"+r+g+b);
}
*/
function initTabs(ulName) {
	if(document.getElementById(ulName)) {
		var liTabArray = document.getElementById(ulName).getElementsByTagName('li');
		for(var x=1;x<=liTabArray.length;x++) {
			//var newTabLabel = liTabArray[x-1].getElementsByTagName('h2')[0].firstChild.nodeValue;
			//var newTab = ulName+'_'+newTabLabel;
			var newTab = liTabArray[x-1].getElementsByTagName('h2')[0].id;
			new Menutab(newTab);
			if(x==liTabArray.length) document.getElementById(ulName).parentNode.style.visibility = 'visible';
		}	
	}
}

function openAndCloseSameTab(tabObject) {
	if(tabObject.parentNode.parentNode.className=='initial') {
		tabObject.parentNode.parentNode.className='';
		callFlash(tabObject.id+'swfID',0);
		slideWidth(tabObject,39,0,150,0);
		setTimeout(function() { slideWidth(tabObject,55,1,300,1); callFlash(tabObject.id+'swfID',1); }, 150);
		setTimeout(function() { tabObject.parentNode.parentNode.className='selected'; callFlash(tabObject.id+'swfID',0); },450);
		setTimeout(function() { callFlash(tabObject.id+'swfID',1); }, 600);
	} else {
		callFlash(tabObject.id+'swfID',0);
		slideWidth(tabObject,69,0,150,0);
		setTimeout(function() { slideWidth(tabObject,54,1,300,1); callFlash(tabObject.id+'swfID',1); }, 150);
		setTimeout(function() { callFlash(tabObject.id+'swfID',0); }, 300);
		setTimeout(function() { callFlash(tabObject.id+'swfID',1); }, 450);
	}
}

	
function initAllMenus() {
	if (window.onload) {
			var existing = window.onload;
		}
		
	var ulCollection = document.getElementsByTagName('ul');
	for (var x=0;x<ulCollection.length;x++) {
		var currentClass = ulCollection[x].getAttribute('className') ? ulCollection[x].getAttribute('className') : ulCollection[x].getAttribute('class');
		if(currentClass=='pageTabs') {
			initTabs(ulCollection[x].getAttribute('id'));
		}
	}	
	
	if (existing) {
			existing();
		}
}



	
/* 	
var browserVersion = navigator.userAgent;
if((browserVersion.indexOf('Opera')>=0)||(browserVersion.indexOf('Konqueror')>=0)) {
	if(document.addEventListener) document.addEventListener("DOMContentLoaded", initAllMenus, false);
}
*/
	
// GLOBAL JS THAT EXECUTES ON PAGE LOAD
var globalOpeningTab, globalOpeningMenu;
currentlyExpanding = false;
var globalUnselectedColor = getCSSColor('.flashTabText');
var globalSelectedColor = getCSSColor('.flashTabTextSelected');

if(typeof window.addEventListener != 'undefined') {
	window.addEventListener('load', initAllMenus, false);
} else if(typeof document.addEventListener != 'undefined') {
	document.addEventListener('load', initAllMenus, false);
} else if(typeof window.attachEvent != 'undefined') {
	window.attachEvent('onload', initAllMenus);
} else { // older browsers
	if(typeof window.onload == 'function') {
		var existing = onload;
		window.onload = function() {
			existing();
			initAllMenus();
		};
	} else {
		window.onload = initAllMenus;
	}
}