// init props
var btt_block;
var bY;
var fader = '';


/**
* Determines the screen movement
*/
function pollMoveCheck(){
	
	scrolledY 		= document.documentElement.scrollTop;
	viewportHeight 	= window.innerHeight;
	buttonHeight 	= btt_block.offsetHeight;
	
	content 		= document.getElementById('content-container');
	contentHeight 	= content.offsetHeight;
	
	footerLinks 	= document.getElementById('footer-links');
	footerText 		= document.getElementById('footer-text');
	footerHeight 	= footerLinks.offsetHeight + footerText.offsetHeight;
	
	if(scrolledY > 10) {
		
		if(fader == '') {
			btt_block.style.display = 'block';
		}
		
		if(fader != 'in') {
			opacity('back-to-top', 0, 100, 500);
			//Effect.Appear('back-to-top'); // not reliable
			fader = 'in';
		}
	} 
	
	else if(fader == 'in') {
		opacity('back-to-top', 100, 0, 500);
		//Effect.Fade('back-to-top'); // not reliable
		fader = 'out';
	}
	
	viewBottom = contentHeight - viewportHeight - scrolledY + footerHeight + 20;
	if (viewBottom < 0) viewBottom = 0;
	
	//alert(viewportHeight + " : " + contentHeight);
	
	moveElY(btt_block, viewBottom);
}



/**
* Moves the element
*/
function moveElY(el, toY){
	el.style.bottom = toY+"px";	
}



/**
* Initialises the scroller
*/
function initScroll(){
	// setup props
	btt_block = document.getElementById('back-to-top');
	
	window.setInterval(pollMoveCheck, 20);
}



/**
* Fades the scroll button
*/
function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        
		for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
		
    } 
	
	else if(opacStart < opacEnd) {
        
		for(i = opacStart; i <= opacEnd; i++) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
		
    }
}

/**
* Change the opacity for different browsers
*/
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
	
	if(object.display=='none') object.display = 'block';
    
	object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
} 



/**
* Fades in
*/
Effect.PhaseIn = function(element) {
  element = $(element);
  new Effect.BlindDown(element, arguments[1] || {});
  new Effect.Appear(element, arguments[2] || arguments[1] || {});
}



/**
* Fades out
*/
Effect.PhaseOut = function(element) {
  element = $(element);
  new Effect.Fade(element, arguments[1] || {});
  new Effect.BlindUp(element, arguments[2] || arguments[1] || {});
}



Effect.PhaseAndJumpFooter = function(element) {
    element = $(element);
    
	if (element.style.display == 'none'){
		var interval = window.setInterval('gotoAnchor(\'foot\')',5);
		new Effect.PhaseIn(element, {afterFinish:function(){ window.clearInterval(interval);}});
	} 
	
	else new Effect.PhaseOut(element, arguments[1] || {}, arguments[2] || arguments[1] || {});
}



function toggleElement(elId){
	Effect.PhaseAndJumpFooter(elId);
	
}



function gotoAnchor(sAnchor){
	document.location.hash = sAnchor;
	return;
}



function delayGotoAnchor(sAnchor){
	window.setTimeout('document.location.hash = \''+sAnchor+'\'', 1000);
	return;
}
