var animManager = null;
// Background fade in/out timing
var bgFadeoutDuration = 300;
var bgFadeinDuration = 300;
// Move mainlink duration
var mlMoveDuration = 300;

// wait for fadein/out/animations before navigation
var timeoutBeforeNav = 1000;
// wait for fade in before showing text (better effect)
var timeoutBeforeText = 400;

function getAnimManager() {
	if( animManager == null ) {
		animManager = new jsAnimManager( 50 );
	}
	return animManager;
}


function leavePage( target ) {
	// fade out background and label if necessary
	var fhElem = document.getElementById('elem_filterhelper');
	var pcElem = document.getElementById('elem_pagecontainer');

	if( fhElem != null ) {
		pcElem.style.visibility = 'hidden';
		fhElem.style.visibility = 'hidden';
	}
	
	var testDiv = document.getElementById('pageIsIndex');
	if( testDiv == null ) {
		var labelElem = document.getElementById('coordblock');
		if( labelElem == null ) labelElem = document.getElementById('publicblock');
		if( labelElem == null ) labelElem = document.getElementById('consultblock');
		if( labelElem == null ) labelElem = document.getElementById('policyblock');
		
		if( labelElem != null ) {
			labelElem.style.visibility = 'hidden';
		}
	}

	var elem_next_bg = document.getElementById('elem_next_background');
	if( elem_next_bg != null ) elem_next_bg.style.visibility = 'visible';

	var animBack = getAnimManager().createAnimObject( 'elem_background' );
	animBack.add({property: Prop.opacity, from: 1.0, to: 0.0, duration: bgFadeoutDuration});

	// IE doesn't play nice. Need to explicitly set alpha filter before being able to fade in/out
//	elem_next_bg.filters.alpha.opacity = 100;
//	var animBackNext = getAnimManager().createAnimObject( 'elem_next_background' );
//	animBackNext.add({property: Prop.opacity, from: 0.0, to: 1.0, duration: bgFadeoutDuration});
	
	
	setTimeout( 'gotoPage( "' + target + '");', timeoutBeforeNav );
}

function enterPage() {
	// fade in textblock
	setTimeout( 'showText();', timeoutBeforeText );
}

function showText() {
	var fhElem = document.getElementById('elem_filterhelper');
	var pcElem = document.getElementById('elem_pagecontainer')
	if( fhElem != null ) {
		pcElem.style.visibility = 'visible';
		fhElem.style.visibility = 'visible';
	}
}

function gotoPage( target ) {
	window.location = target;
}

function fillin( target ) {
	var animPage = getAnimManager().createAnimObject( target );
	animPage.add({property: Prop.opacity, from: 0.2, to: 0.8, duration: 300});
}

function fillout( target ) {
	var animPage = getAnimManager().createAnimObject( target );
	animPage.add({property: Prop.opacity, from: 0.8, to: 0.2, duration: 300});
}

function glowtext( target ) {
	var animPage = getAnimManager().createAnimObject( target );
	animPage.add({property: Prop.opacity, from: 0.5, to: 1.0, duration: 300});
}

function fadetext( target ) {
	var animPage = getAnimManager().createAnimObject( target );
	animPage.add({property: Prop.opacity, from: 1.0, to: 0.5, duration: 300});
}

function showDescription( target ) {
	var animPage = getAnimManager().createAnimObject( target );
	animPage.add({property: Prop.opacity, from: 0.0, to: 1.0, duration: 300});
	var elem = document.getElementById(target);
	elem.style.display = 'block';
	elem.style.zIndex = 100;
}

function hideDescription( target ) {
	var animPage = getAnimManager().createAnimObject( target );
	animPage.add({property: Prop.opacity, from: 1.0, to: 0.0, duration: 300});
	var elem = document.getElementById(target);
	elem.style.display = 'none';
	elem.style.zIndex = 1;
}

function openFieldPage( target, linkElemId ) {
	removeOtherLinks( linkElemId );
	moveLinkToLabel( linkElemId );
	leavePageKeepLabel( target );
}

function removeOtherLinks( linkElemId ) {
	var labelElem = null;

	if( linkElemId != 'coordblock' ) {
		labelElem = document.getElementById('coordblock');
		if( labelElem != null ) labelElem.style.display = 'none';
	}
	if( linkElemId != 'publicblock' ) {
		labelElem = document.getElementById('publicblock');
		if( labelElem != null ) labelElem.style.display = 'none';
	}
	if( linkElemId != 'consultblock' ) {
		labelElem = document.getElementById('consultblock');
		if( labelElem != null ) labelElem.style.display = 'none';
	}
	if( linkElemId != 'policyblock' ) {
		labelElem = document.getElementById('policyblock');
		if( labelElem != null ) labelElem.style.display = 'none';
	}
}

function moveLinkToLabel( linkElemId ) {
	var animPage = getAnimManager().createAnimObject( linkElemId );
	animPage.add({property: Prop.left, to: 80, duration: mlMoveDuration, ease: jsAnimEase.parabolicPos});
	animPage.add({property: Prop.top, to: 175, duration: mlMoveDuration, ease: jsAnimEase.parabolicPos});
}


function leavePageKeepLabel( target ) {
	// fade out background
	var fhElem = document.getElementById('elem_filterhelper');
	var pcElem = document.getElementById('elem_pagecontainer')
	if( fhElem != null ) {
		pcElem.style.visibility = 'hidden';
		fhElem.style.visibility = 'hidden';
	}
	
	var elem_next_bg = document.getElementById('elem_next_background');
	if( elem_next_bg != null ) elem_next_bg.style.visibility = 'visible';
	
	var animBack = getAnimManager().createAnimObject( 'elem_background' );
	animBack.add({property: Prop.opacity, from: 1.0, to: 0.0, duration: bgFadeoutDuration});
//	var animBackNext = getAnimManager().createAnimObject( 'elem_next_background' );
//	animBackNext.add({property: Prop.opacity, from: 0.0, to: 1.0, duration: bgFadeoutDuration});
	
	setTimeout( 'gotoPage( "' + target + '");', timeoutBeforeNav );
	//gotoPage( target );
}

