/* RAPPORT initialization functions */

var report = new Object();

function initReport() {
	report.elem = document.getElementById('rapport');
	report.overlay = document.getElementById('overlay');
	
	report['initWidth'] = 980;
	report['initHeight'] = 562;
	report['stepTime'] = 10;
	report['animSteps'] = 1;
	
	// Report dimensions
	report['mapPaddingLeft'] = 0;
	report['pageWidth'] = 340;
	
	// Page turning properties
	report['pageStepTime'] = 20;
	report['pageAnimSteps'] = 10;
	

	report.pages = new Array();	

	var allDivs = document.getElementById('booklet').getElementsByTagName('div');

	// First, add a dummy page (0)
	var dummyPage = document.createElement('div');
	dummyPage.id = 'dummy_front';
	dummyPage.className = 'page';
//	dummyPage.innerHTML = '(dummy)';
	allDivs[0].parentNode.insertBefore(dummyPage,allDivs[0]);
	
	// Search for all divs with class page and add them to pages array
	for (var i=0;i<allDivs.length;i++) {
		if (allDivs[i].className == 'page') {
			report.pages.push(allDivs[i]);
			allDivs[i].className = 'invisible';
		}
	}
//	alert('pagina\'s: ' + report.pages.length);

	
	// Add one or two extra pages on the end, depending on odd or even total page number
	if (report.pages.length % 2 == 0) {
		var backPage = document.getElementById('page_back');
		var x = dummyPage.cloneNode(true);
		x.id = 'dummy_back_02';
		var backArrayValue = report.pages.pop();
		report.pages.push(document.getElementById('booklet').insertBefore(x,backPage));	
		report.pages.push(backArrayValue);
	}
	var x = dummyPage.cloneNode(true);
	x.id = 'dummy_back';
	report.pages.push(document.getElementById('booklet').appendChild(x));


	// Loop through pages array and put a content div inside every one of them
	for (var i=0;i<report.pages.length;i++) {
		report.pages[i].innerHTML = '<div class="content">' + report.pages[i].innerHTML + '</div>';
	}
	
	report['totalPages'] = report.pages.length - 2;
	
//	alert('pagina\'s: ' + report.pages.length);
	
	// Initialize all report elements
	currLeftId = 0;
	pageFinalDestination = currLeftId;
	togglePageNavigation();
	
	setPageIds(currLeftId);
	setPageClasses();
	
	setReportPosition();
	window.onresize = setReportPosition;
}

/* RAPPORT overlay functions */

function setReportPosition() {
	var x,y;
	if (self.innerHeight) // all except Explorer
	{
		x = self.innerWidth;
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
		// Explorer 6 Strict Mode
	{
		x = document.documentElement.clientWidth;
		y = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		x = document.body.clientWidth;
		y = document.body.clientHeight;
	}
	
	var offsetLeft = (x - report.elem.offsetWidth) / 2;

//	alert(offsetLeft);	
	report.elem.style.left = offsetLeft + 'px';
}

// Report box Dimensions animation step
function setReportDimensions(step) {
	var width = step * report.initWidth / report.animSteps;
	var height = step * report.initHeight / report.animSteps;
	report.overlay.style.width = width+'px';
	report.overlay.style.height = height+'px';
}

// enlargeReport(): enlarges report overlay div, starting at zero
function enlargeReport() {	
	for (var i=0;i<=report.animSteps;i++) {
		setTimeout('setReportDimensions(' + i + ')',report.stepTime*i);
	}
}
// minimizeReport(): enlargeReport's counterpart
function minimizeReport() {
	for (var i=report.animSteps;i>=0;i--) {
		setTimeout('setReportDimensions(' + i + ')',report.stepTime * (report.animSteps - i));
	}	
}
// toggleReport(): enlarges or minimizes report overlay div, based on current state
function toggleReport() {
		
	if (report.overlay.offsetWidth == 0) {
//		enlargeReport();
	}
	else {
//		minimizeReport();
	}
	
	var curStyle = report.elem.style.visibility;
	
	if (!curStyle || curStyle == 'hidden') {
		report.overlay.style.display = 'block';
		report.elem.style.display = 'block';
		setReportPosition();
		report.elem.style.visibility = 'visible';
		
		document.getElementById('filter_thema').style.visibility = 'hidden';
		document.getElementById('filter_eigenaar').style.visibility = 'hidden';	
	}
	else if (curStyle == 'visible') {
		report.overlay.style.display = 'none';
		report.elem.style.visibility = 'hidden';
		report.elem.style.display = 'none';

		document.getElementById('filter_thema').style.visibility = 'visible';
		document.getElementById('filter_eigenaar').style.visibility = 'visible';		
	}
}

/* RAPPORT navigation functions */

var grower;
var shrinker;

function setPageIds(i) {
	currLeftId = (i >= 0) ? i : 0;
	if (currLeftId < report.totalPages)
		currRightId = currLeftId + 1;
	else {
		currLeftId = report.totalPages;
		currRightId = report.totalPages + 1;
	}
	if (currLeftId < (report.totalPages)) {
		nextLeftId = currLeftId + 2 ;
		nextRightId = currLeftId + 3;
	}
	else {
		nextLeftId = report.totalPages;
		nextRightId = report.totalPages + 1;
	}
	
	if (currLeftId > 2) {
		prevLeftId =  currLeftId - 2;
		prevRightId = currLeftId - 1;
	}
	else {
		prevLeftId = 0;
		prevRightId = 1;		
	}
}

function setPageClasses() {
	report.pages[prevLeftId].className = 'prev_left';	
	report.pages[prevRightId].className = 'prev_right';		
	report.pages[nextLeftId].className = 'next_left';	
	report.pages[nextRightId].className = 'next_right';
	
	report.pages[currLeftId].className = 'curr_left';
	report.pages[currRightId].className = 'curr_right';
}

function setNextPageDimensions(step) {
	var totalSteps = report.pageAnimSteps;
	grower = report.pages[nextLeftId];
	shrinker = report.pages[currRightId];

	var nextLeftOffsetLeft = (report['pageWidth'] * 2 + report['mapPaddingLeft']) - (step * (report['pageWidth'] * 2) / totalSteps);
	var nextLeftWidth = step * (report['pageWidth'] / totalSteps);
	var currRightWidth = report['pageWidth'] - (step * report['pageWidth'] / totalSteps);
	grower.style.left = nextLeftOffsetLeft+'px';
	grower.style.width = nextLeftWidth+'px';
	shrinker.style.width = currRightWidth+'px';
	
	if (step == totalSteps) {
		setTimeout('rearrangePages(' + (currLeftId + 2) + ", 'next')",report.pageStepTime);
	}

}
function setPrevPageDimensions(step) {
	var totalSteps = report.pageAnimSteps;
	
	grower = report.pages[prevRightId];
	shrinker = report.pages[currLeftId];
	
	var prevRightOffsetLeft = report['mapPaddingLeft'] + (step * report['pageWidth'] / totalSteps);
	var prevRightWidth = step * (report['pageWidth'] / totalSteps);
	var currLeftWidth = report['pageWidth'] - (step * report['pageWidth'] / totalSteps);
	grower.style.left = prevRightOffsetLeft+'px';
	grower.style.width = prevRightWidth+'px';
	shrinker.style.width = currLeftWidth+'px';

	
	if (step == totalSteps) {
		setTimeout('rearrangePages(' + (currLeftId - 2) + ", 'prev')",report.pageStepTime);
	}
}	

function rearrangePages(i,movedTo) {

	if (movedTo == 'next') {			
		report.pages[prevLeftId].className = 'invisible';	
		report.pages[prevRightId].className = 'invisible';
		
	}
	else if (movedTo == 'prev') {			
		report.pages[nextLeftId].className = 'invisible';	
		report.pages[nextRightId].className = 'invisible';
	}
	
	setPageIds(i);
	setPageClasses();

	grower.style.left = "";
	grower.style.width = "";
	shrinker.style.width = "";

}

function togglePageNavigation() {
	var prevLink = document.getElementById('rapport').getElementsByTagName('div')[1].getElementsByTagName('a')[0];
	var nextLink = document.getElementById('rapport').getElementsByTagName('div')[1].getElementsByTagName('a')[1];
		
	// Hide prev page link if we're moving to the first page, else show it
	prevLink.style.display =  (pageFinalDestination <= 0) ? 'none' : 'block';
		
	// Hide next page link if we're moving to the last page, else show it
	nextLink.style.display =  (pageFinalDestination >= report.totalPages) ? 'none' : 'block';
}

function nextPage() {
	pageFinalDestination = (pageFinalDestination <= report.totalPages) ? pageFinalDestination + 2 : report.totalPages;
	var totalSteps = report.pageAnimSteps;

	// Show/hide prev/next page navigation
	togglePageNavigation();
	
	if (currLeftId < report.totalPages) {
		for (var i=0;i<=totalSteps;i++) {
			setTimeout('setNextPageDimensions(' + i + ')',report.pageStepTime*i);
		}		
	}
}

function prevPage() {
	pageFinalDestination = (pageFinalDestination >= 2) ? pageFinalDestination - 2 : 0;
	var totalSteps = report.pageAnimSteps;
	
	// Show/hide prev/next page navigation
	togglePageNavigation();
		
	if (currLeftId > 0) {
		for (var i=0;i<=totalSteps;i++) {
			setTimeout('setPrevPageDimensions(' + i + ')',report.pageStepTime*i);
		}		
	}
}


