var progressImageBaseName = 'progress_';
var progressImageExt = '.png';
var progressImagesDir   = '/images/progress/';
var progressImageCount = 12;
var doLinks = true;
var doForms = true;
var nudgeRight = 0;//px
var nudgeLeft = 0;//px

//startup settings
var current_frame = 1;
var preloadAnimTimer = false;
var nudge = nudgeRight - nudgeLeft;


function initProgress(){
	preloadimgs();
	getSize();
	insertProgressHTML();
	
	if(doLinks){
		var links = $('side_nav').getElementsByTagName("A");
		pattern = 'javascript';
		var reg = new RegExp(pattern,'gi');
		for(var i=0; i<links.length; i++){
			$link = $(links[i]);
			if(!$link.hasClassName('popup') && $link.href !='#' && reg.test($link.href) == false && ($link.onclick == undefined || reg.test($link.onclick) == false)){
				addClickEvent(links[i], showProgress);
			}
		}
	}
	if(doForms){
		var submissions = getElementsByType("submit");
		for(var i=0; i<submissions.length; i++){
			addClickEvent(submissions[i], showProgress)
		}
	}
}

function showProgress(){
	$('progressBlock').show();
	preloadAnimTimer = setInterval("progressAnimate()", 100);
}
function hideProgress(){
	$('progressBlock').hide();
	if(preloadAnimTimer){
		clearInterval(preloadAnimTimer);
	}
}

function progressAnimate(){
	if(current_frame == progressImageCount){
		current_frame = 1;
	}else{
		current_frame++;
	}
	src = progressImagesDir +'/'+ progressImageBaseName + current_frame + progressImageExt;
	$('progressImage').setAttribute('src',src);
}

function preloadimgs(){
  for(var i=1; i<progressImageCount; i++){
	  var image = new Image();
	  image.src = progressImagesDir +'/'+ progressImageBaseName + i + progressImageExt;
  }
}

function insertProgressHTML(){
    var inBody = document.getElementsByTagName("body").item(0);
	
	var inProgressbox = document.createElement("div");
	inProgressbox.setAttribute('id', 'progressBlock');
	inProgressbox.style.position = 'absolute';
	inProgressbox.style.left = Math.abs(myWidth/2) + (nudge) +'px';
	inProgressbox.style.top = Math.abs(myHeight/2) +'px';
	//inProgressbox.style.visibility = 'hidden';
	inProgressbox.style.zIndex = '525';
	inBody.insertBefore(inProgressbox, inBody.firstChild);
	
	var inProgressImage = document.createElement("img");
	inProgressImage.setAttribute('id', 'progressImage');
	inProgressImage.setAttribute('src', progressImagesDir +'/'+ progressImageBaseName +'1'+ progressImageExt);
	inProgressbox.appendChild(inProgressImage);
	
	hideProgress();
}


function getSize() {

	// Window Size

	if (self.innerHeight) { // Everyone but IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
		myScroll = window.pageYOffset;
	} else if (document.documentElement && document.documentElement.clientHeight) { // IE6 Strict
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
		myScroll = document.documentElement.scrollTop;
	} else if (document.body) { // Other IE, such as IE7
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
		myScroll = document.body.scrollTop;
	}

	// Page size w/offscreen areas

	if (window.innerHeight && window.scrollMaxY) {	
		myScrollWidth = document.body.scrollWidth;
		myScrollHeight = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight) { // All but Explorer Mac
		myScrollWidth = document.body.scrollWidth;
		myScrollHeight = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		myScrollWidth = document.body.offsetWidth;
		myScrollHeight = document.body.offsetHeight;
	}
}

addLoadEvent(initProgress);