//Catalogue Browser: view catalogue in category page, with page navigation

var position=0;
var pageHeight=0;
var pageWidth=0;
var numberOfPages=0;
var currentPage=1;
var maxHeight=0;
var pageHeightTweak = 8;
var timerA = 0;
var timerB = 0;
var selectBoxDelay = 300;
var flashReady = 0;


function getPageHeight(){
	var maskObj = document.getElementById('catalogueMask');
		
	if(maskObj.offsetHeight){ 
       pageHeight=maskObj.offsetHeight; 
  } 
  else if(maskObj.style.pixelHeight){ 
       pageHeight=maskObj.style.pixelHeight; 
  } 
  pageHeight=pageHeight-pageHeightTweak;
}

function getPageWidth(){
	var maskObj = document.getElementById('catalogue');
		
	if(maskObj.offsetWidth){ 
       pageWidth=maskObj.offsetWidth; 
  } 
  else if(maskObj.style.pixelWidth){ 
       pageWidth=maskObj.style.pixelWidth; 
  } 
}

function getMaxHeight(){
	var containerObj = document.getElementById('catalogueContainer');
	
	if(containerObj.offsetHeight){ 
       maxHeight=containerObj.offsetHeight; 
  } 
  else if(containerObj.style.pixelHeight){ 
       maxHeight=containerObj.style.pixelHeight; 
  } 
}

function getNumberOfPages(){
	return(Math.ceil(maxHeight/pageHeight));
}

function writePagesNumbers(){
	var pageNumberTopObj = document.getElementById('pageNumbersTop');
	var pageNumberBottomObj = document.getElementById('pageNumbersBottom');
	
	pageNumberTopObj.innerHTML = '<span>' + currentPage + '/' + numberOfPages + '</span>';
	pageNumberBottomObj.innerHTML = '<span>' + currentPage + '/' + numberOfPages + '</span>';
}


function nextPage()	{
	if ((position+(pageHeight*1.1)) < maxHeight) {
		
		position = position + pageHeight;
		document.getElementById('catalogueContainer').style.marginTop = (-1 * position) + 'px';
		currentPage++;
		writePagesNumbers();
		
		//if last page
		if (currentPage == numberOfPages){
			document.getElementById('buttonRightTop').className = 'buttonRight_inactive';
			document.getElementById('buttonRightBottom').className = 'buttonRight_inactive';
		}
		
		//if not first page
		if (currentPage != 1){
			document.getElementById('buttonLeftTop').className = 'buttonLeft';
			document.getElementById('buttonLeftBottom').className = 'buttonLeft';
		}
		//clearPopups();	
	}
}

function prevPage()	{
	if ((position-pageHeight) >= 0){
		position = position - pageHeight;
		document.getElementById('catalogueContainer').style.marginTop = (-1 * position) + 'px';
		currentPage--;
		writePagesNumbers();
		
		//if first page
		if (currentPage == 1){
			document.getElementById('buttonLeftTop').className = 'buttonLeft_inactive';
			document.getElementById('buttonLeftBottom').className = 'buttonLeft_inactive';
		}
		
		//if not last page
		if (currentPage != numberOfPages){
			document.getElementById('buttonRightTop').className = 'buttonRight';
			document.getElementById('buttonRightBottom').className = 'buttonRight';
		}
		//clearPopups();
	}		
}

function getPosition(obj){
	var rolloverObj = document.getElementById('rolloverPopup');
	var curleft=0;
	var curtop=0;
	
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
}


function delay(millis){
	var date = new Date();
	var curDate = null;

	do { curDate = new Date(); }
	while(curDate-date < millis);
} 


function getFlashObj(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
    }
    else {
        return document[movieName]
    }
}


function clearPopups(){	
	var rolloverObj = document.getElementById('rolloverPopup');
	var flashObject = getFlashObj(flashObjectName);
	
	try{
		flashObject.restartFlash();
		rolloverObj.style.left='-199px';
		rolloverObj.style.top='-225px';	
	}
	catch(err) {;}
}

function signalFlashReady(errorText){
		flashReady=1;
}

function rolloverPopup(parentObj, gameCategory, gameID, gamePack, gameTagline, productLink, offersLink){
	
		var rolloverObj = document.getElementById('rolloverPopup');
			//rolloverObj.style.visibility = 'visible';
		
		var positionX = 0;
		var positionY = 0;
		
		var columnWidth = 0;
		var columnNumber = 0;
		var maxColumns = 0;
		
		var rowHeight = 0;
		var rowNumber = 0;
		var maxRows = 0;
	
		var flashObject = getFlashObj(flashObjectName);

			clearPopups();

			//get position (pixels)
		  positionX = parentObj.offsetLeft;
		  positionY = (parentObj.offsetTop)%pageHeight;
		  pageOffset = parentObj.offsetTop - positionY;
		  
		  
		  //get column width and row height
			if(parentObj.offsetWidth){ 
		  	columnWidth=parentObj.offsetWidth;   	       
		  	rowHeight=parentObj.offsetHeight;   	       
		  } 
		  else if(parentObj.style.pixelWidth){ 
		    columnWidth=parentObj.style.pixelWidth; 
		    rowHeight=parentObj.style.pixelHeight; 
		  } 
		  
		  //get column and row number
		  columnNumber = Math.round(positionX/columnWidth);
		  rowNumber = Math.round(positionY/rowHeight);
		  
		  //get maximum columns and rows
		  maxColumns = Math.round((pageWidth-columnWidth)/columnWidth);
		  maxRows = Math.round((pageHeight-rowHeight)/rowHeight);
	
			//position horizontal rollover object
			if (columnNumber == 0)  //align left
				rolloverObj.style.left= '-11px';
			else if (columnNumber == maxColumns) //align right
				rolloverObj.style.left= (positionX-8) + 'px';
			else //align centre
				rolloverObj.style.left= (positionX-12) + 'px';
				
	
			//position vertical rollover object
			pageOffset = 0; //doesn't need to calculate pageOffset anymore (position relative to window)
			if (rowNumber == 0) //align top
				rolloverObj.style.top= pageOffset + (positionY - 8) + 'px';
			else if (rowNumber == maxRows) //align bottom
				rolloverObj.style.top= pageOffset + (positionY - 65) + 'px';
			else //align middle
				rolloverObj.style.top= pageOffset + (positionY - 25) + 'px';
			
			//send game data to Flash movie
			
			//flashProxy.call('gamedata', gameCategory, gameID, gamePack, gameTagline);
			flashObject.gameData(gameCategory, gameID, gamePack, gameTagline, productLink, offersLink);
					
			rolloverObj.style.visibility='visible';

			//restart Flash movie
			flashObject.restartFlash();

}


function catalogueInit(){
	getPageHeight();
	getPageWidth(); 
	getMaxHeight(); 
	numberOfPages = getNumberOfPages();
	
	//if more than one page write page numbers, else hide buttons and page numbers
	if (numberOfPages > 1) {
		writePagesNumbers();
	}
	else {
		document.getElementById('buttonLeftTop').style.display = 'none';
		document.getElementById('buttonLeftBottom').style.display = 'none';
		document.getElementById('buttonRightTop').style.display = 'none';
		document.getElementById('buttonRightBottom').style.display = 'none';
		document.getElementById('pageNumbersTop').style.display = 'none';;
		document.getElementById('pageNumbersBottom').style.display = 'none';;
	}
}


function clearTimers(){
	clearTimeout(timerA);
	clearTimeout(timerB);	
}
		
function selectBoxToggle(name){ 
	var currentBox = document.getElementById(name);
	
	//clearPopups();
			
	if ((currentBox.style.visibility == 'hidden') || (currentBox.style.visibility == '')){
		closeSelectBoxes();
		currentBox.style.visibility='visible';
	}
	else{
		currentBox.style.visibility='hidden';
	}	
	clearTimers();
} 
		
function closeSelectBoxes(){	
	for (i=1; i<4; i++)
		document.getElementById('selectBox' + i).style.visibility='hidden';
}
		
function selectElement(selectBox, value){
	clearTimers();	
	closeSelectBoxes(); 				
	//alert(selectBox + ', ' + value);				
	window.location.replace(value);
}	

