/* 
----------------------------------------------------
BANDIT.FM 
http://www.bandit.fm
----------------------------------------------------
HORIZONTAL CONTENT SCROLLER

Author: Sony BMG Music Australia
Author Notes:
Each scroller requires 4 components on the page:
1. Next & prev buttons w/ ID's of 
next_[YOUR_NAME] & prev_[YOUR_NAME]
(with active & inactive CSS styles)
2. Sliding Div for content of ID: slider_[YOUR_NAME] 
3. Container of ID: slidingPanelOuter_[YOUR_NAME]
4. Loader icon of ID: sliderLoading_[YOUR_NAME]
- JB
----------------------------------------------------
*/

function shiftLeft(e) {
	function getEventTarget() {
		if (!e) e = window.event;
				if (e.target) e = e.target.parentNode; // 'parentNode' is due to Flash element
				else if (e.srcElement) e = e.srcElement;
				if (e.nodeType == 3) // defeat Safari bug
					e = targ.parentNode;
	}
	
	function slidePanelNow() {
		if(document.getElementById('sectionHeaderSWF_'+sliderSection)) findSWF('sectionHeaderSWF_'+sliderSection).loading(0);
		var movingObject = document.getElementById('slider_'+sliderSection);
		var shiftAmount = document.getElementById('slidingPanelOuter_'+sliderSection).offsetWidth;
		if(sliderShiftOffset[sliderSection]) shiftAmount += sliderShiftOffset[sliderSection];
		
		if(currentDestinationID==2) { // enable prev button
			var adjPrevButton = document.getElementById('prev_'+targetIdArray[1]);
			toggleFlashButton('prev_'+sliderSection+'SWF',1); // Flash
			// add event listener again is it was removed last time prev was clicked
			if (adjPrevButton.addEventListener) adjPrevButton.addEventListener('click',shiftRight,true);
			else if(adjPrevButton.attachEvent) adjPrevButton.attachEvent('onclick', shiftRight);
		}
		
		slidePos(movingObject,shiftAmount,0,600);
		if(currentDestinationID<=sliderPageLimit[sliderSection]-1) {
			setTimeout(function() { // add event listener again as it was removed when button was clicked
								if (e.addEventListener) e.addEventListener('click',shiftLeft,true);
								else if(e.attachEvent) e.attachEvent('onclick', shiftLeft);
								},600);
		}
	}
	
	function displayNewPage(e) {
		if (!e) e = window.event;
		if (e.target) e = e.target; // 'parentNode' is due to Flash element
		else if (e.srcElement) e = e.srcElement;
		if (e.nodeType == 3) // defeat Safari bug
			e = targ.parentNode;	
				
		if(e.getAttribute('id')) {	// fix IE bug that doesn't remove event
			if(sliderSection=='ourPicks') renderOurPicsFlash(currentPageNo[sliderSection]);
			else if(sliderSection=='justAdded') renderJustAddedFlash(currentPageNo[sliderSection]);
			else if(sliderSection=='ourPicksPromo') renderOurPicsFlash_promo(currentPageNo[sliderSection]);
			slidePanelNow();
		}
	}	
	getEventTarget();
	if(e.removeEventListener) e.removeEventListener('click',shiftLeft,true); // to disallow double-clicking
	else if(e.detachEvent) e.detachEvent('onclick',shiftLeft);
	
	var targetIdArray = e.getAttribute('id').split('_');
	var sliderSection = targetIdArray[1];
	var currentData, currentDestinationID = '';
	
	if(!sliderPageLimit[sliderSection]) sliderPageLimit[sliderSection] = (document.getElementById('widgetResponse_'+sliderSection+'_pageCount').innerHTML)*1;
	switch(currentPageNo[sliderSection]) {
	case ((sliderPageLimit[sliderSection])-1):	currentDestinationID = currentPageNo[sliderSection]+1;
	/* if last page */							getEventTarget();
												toggleFlashButton('next_'+sliderSection+'SWF',0); // disable this button
												break;
	default: currentDestinationID = currentPageNo[sliderSection]+1;	break;									
	}
	
	var refreshVal = Math.floor(Math.random()*1000);
	currentData = sliderBaseURL[sliderSection] + '&page='+currentDestinationID;//+'&inc=true';
	//if(sliderPageSize[sliderSection]) currentData += '&pageSize=' + sliderPageSize[sliderSection];
	//if(releaseScrollerColumns&&sliderSection=='newReleases') currentData += '&releaseScrollerColumns=' + releaseScrollerColumns;
	currentData += '&rfsh='+refreshVal;
	
	if(currentPageNo[sliderSection]<sliderPageLimit[sliderSection]) { // advance page		
		currentPageNo[sliderSection]++;
		var divToChange 			= 'widgetResponse_'+sliderSection+'_page'+currentDestinationID;
		var objectToChange 			= document.getElementById(divToChange);
		if(document.getElementById('sectionHeaderSWF_'+sliderSection))
			findSWF('sectionHeaderSWF_'+sliderSection).pageIndicators(currentDestinationID,currentDestinationID-1);
		if(objectToChange) {
			if(objectToChange.innerHTML=='') { // won't load if loaded already
				if(document.getElementById('sectionHeaderSWF_'+sliderSection)) findSWF('sectionHeaderSWF_'+sliderSection).loading(1);
				getWidget(currentData,divToChange);
				
				if (objectToChange.addEventListener) { // Firefox & Safari
					objectToChange.addEventListener('datafound', displayNewPage,true);
				}
				else if (objectToChange.attachEvent) {	 // IE
					objectToChange.attachEvent('onclick', function() {
						displayNewPage();
						objectToChange.detachEvent('onclick',arguments.callee,false);
					});
				}			
			} else slidePanelNow();
		}
	}
}



function shiftRight(e) {
	function getEventTarget() {
	if (!e) e = window.event;
		if (e.target) e = e.target.parentNode; // 'parentNode' due to Flash element
		else if (e.srcElement) e = e.srcElement;
		if (e.nodeType == 3) // defeat Safari bug
			e = targ.parentNode;
	}
	
	getEventTarget();
	if(e.removeEventListener) e.removeEventListener('click',shiftRight,true); // to disallow double-clicking
	else if(e.detachEvent) e.detachEvent('onclick',shiftRight);
	var targetIdArray = e.getAttribute('id').split('_');
	var sliderSection = targetIdArray[1];
	if(currentPageNo[sliderSection]>1) {
		if(currentPageNo[sliderSection]==sliderPageLimit[sliderSection]) {  // enable next button
			var adjNextButton = document.getElementById('next_'+targetIdArray[1]);
			toggleFlashButton('next_'+sliderSection+'SWF',1); // Flash
			
			// add event listener again as it was removed when next button was last clicked
			if (adjNextButton.addEventListener) adjNextButton.addEventListener('click',shiftLeft,true);
			else if(adjNextButton.attachEvent) adjNextButton.attachEvent('onclick', shiftLeft);
			
		}
		if(currentPageNo[sliderSection]==2) toggleFlashButton('prev_'+sliderSection+'SWF',0); // Flash
		
		if(document.getElementById('sectionHeaderSWF_'+sliderSection))
			findSWF('sectionHeaderSWF_'+sliderSection).pageIndicators(currentPageNo[sliderSection]-1,currentPageNo[sliderSection]);
		
		currentPageNo[sliderSection]--;
		var movingObject = document.getElementById('slider_'+sliderSection);
		var shiftAmount = document.getElementById('slidingPanelOuter_'+sliderSection).offsetWidth;
		if(sliderShiftOffset[sliderSection]) shiftAmount += sliderShiftOffset[sliderSection];
		slidePos(movingObject,shiftAmount,1,600);
		if(currentPageNo[sliderSection]>=2) {
			setTimeout(function() { // add event listener again as it was removed when button was clicked
									if (e.addEventListener) e.addEventListener('click',shiftRight,true);
									else if(e.attachEvent) e.attachEvent('onclick', shiftRight);
									},600);
		}
	} 
}


function putFlashButton(buttonID) {
	var fplayer = new SWFObject("/bandit/flash/common/scrollerButton.swf", buttonID+"SWF", "22", "22", "7", "#ffffff");
	fplayer.addVariable("id",buttonID);
	// add custom colours
	if(flashColoursSet==false) setFlashWidgetColours();
	if(!widgetColours) var widgetColours = getFlashWidgetColours();
	fplayer.addVariable("colours", widgetColours);
	fplayer.addParam("wmode","transparent");
	fplayer.write(buttonID);
}


/* NEXT BUTTON - LISTENER FUNCTION */
function nextScrollButton(buttonID) {
	putFlashButton(buttonID);  
	newListener = document.getElementById(buttonID);
	if (newListener.addEventListener) { // Firefox & Safari
		newListener.addEventListener('click',shiftLeft,true);
	}
	else if (newListener.attachEvent) {	 // IE
		newListener.attachEvent('onclick', shiftLeft);
	}
}

function prevScrollButton(buttonID) {
	putFlashButton(buttonID);
}

function scrollSimulationFromFlash(id) { // IE EVENT/SWF Bug Fix
	var eventTarget = document.getElementById(id);
	if( document.createEventObject ) eventTarget.fireEvent('onclick');
}


   
function toggleFlashButton(flashId,str) {
		findSWF(flashId).disabler(str);
	}
	
function showFlashIndicators(sliderSection) {
	console.log('showFlashIndicators ran');
	if(sliderPageLimit[sliderSection]) findSWF('sectionHeaderSWF_'+sliderSection).showIndicators(sliderPageLimit[sliderSection]);
}
	
	
function hozScroller(sectionName) {
	var widgetResponseDiv = document.getElementById('slider_'+sectionName);
		if (widgetResponseDiv.addEventListener) { // Firefox & Safari
			widgetResponseDiv.addEventListener('datafound', function() { 
				initHozScroller(sectionName);
				widgetResponseDiv.removeEventListener('datafound',arguments.callee,true);
			} ,true);
		}
		else if (widgetResponseDiv.attachEvent) {	 // IE
			widgetResponseDiv.attachEvent('onclick', function() { 
			   initHozScroller(sectionName);
			   widgetResponseDiv.detachEvent('onclick',arguments.callee,false);
			} );
		} 
}

function initHozScroller(sectionName) {
		if(!sliderPageLimit[sectionName]) {
			if(document.getElementById('widgetResponse_'+sectionName+'_pageCount'))
				sliderPageLimit[sectionName] = (document.getElementById('widgetResponse_'+sectionName+'_pageCount').innerHTML)*1;
		}
		
	
		if(sliderPageLimit[sectionName]) {	
			currentPageNo[sectionName] = 1;	
			// create all empty divs for incoming data
			if(sliderPageLimit[sectionName]>1) {
				if(document.getElementById('next_'+sectionName)) 	new nextScrollButton('next_'+sectionName);	
				if(document.getElementById('prev_'+sectionName)) 	new prevScrollButton('prev_'+sectionName);
				for(var x=2;x<sliderPageLimit[sectionName]+1;x++) {
					var newContainer = document.createElement("div");
					newContainer.setAttribute('id','widgetResponse_'+sectionName+'_page'+x);
					if(sectionName.indexOf('connected')>=0) newContainer.className = 'connectionsPage';
					else newContainer.className = 'ourPicksPage';
					document.getElementById('slider_'+sectionName).appendChild(newContainer);
				}
			} else document.getElementById('next_'+sectionName).style.visibility = document.getElementById('prev_'+sectionName).style.visibility = 'hidden';
		} else document.getElementById('next_'+sectionName).style.visibility = document.getElementById('prev_'+sectionName).style.visibility = 'hidden';
	} // end of createRecommendsContainers
	
	
var currentPageNo = new Array;
var sliderPageLimit = new Array;
var sliderBaseURL = new Array;
var sliderShiftOffset = new Array;	