function InitSpinner() {

	// preload images
	for (i = 1 ; i <= 12 ; i++) {
		var imgPreload = new Image();
		imgPreload.src = pathImages + 'spinner-' + i + '.png';
	}
	if (hasCaption) {
		var imgCaptionLeft = new Image();
		var imgCaptionBody = new Image();
		var imgCaptionRight = new Image();
		imgCaptionLeft.src = pathImages + 'spinner-caption-left.png';
		imgCaptionBody.src = pathImages + 'spinner-caption-body.png';
		imgCaptionRight.src = pathImages + 'spinner-caption-right.png';
	}
	else {
		var imgSpinRight = new Image();
		imgSpinRight.src = pathImages + 'spinner-right.png';
	}

	var theBody = document.getElementsByTagName("body").item(0);

	var spinner = document.createElement("div");
	spinner.setAttribute('id', 'Spinner');
	spinner.style.position = 'absolute';
	spinner.style.left = '0px';
	spinner.style.top = '0px';
	spinner.style.visibility = 'hidden';
	spinner.style.zIndex = '999';
	theBody.insertBefore(spinner, theBody.firstChild);

	var spinImg = document.createElement("img");
	spinImg.setAttribute('id', 'SpinWheel');
	spinImg.setAttribute('src', pathImages + 'spinner-1.png');
	spinner.appendChild(spinImg);

	InitSpinnerCaption();

	window.onresize = PositionSpinner;
}

function InitSpinnerCaption() {

	var theBody = document.getElementsByTagName("body").item(0);

	var captionDiv = document.createElement("div");
	captionDiv.setAttribute('id', 'SpinnerCaptionDiv');
	captionDiv.style.position = 'absolute'; 		
	captionDiv.style.visibility = 'hidden';
	captionDiv.style.marginLeft = 'auto';
	captionDiv.style.marginRight = 'auto';
	captionDiv.style.zIndex = '999';
	theBody.insertBefore(captionDiv, theBody.firstChild);

	var captionTable = document.createElement("table");
	captionTable.setAttribute('border', '0');
	captionTable.setAttribute('cellPadding', '0');
	captionTable.setAttribute('cellSpacing', '0');
	captionDiv.appendChild(captionTable);

	var captionTBody = document.createElement("tbody");	// pour IE
	captionTable.appendChild(captionTBody);

	var captionRow = document.createElement("tr");
	captionTBody.appendChild(captionRow);

	if (hasCaption) {
		var captionColLeft = document.createElement("td");
		captionColLeft.setAttribute('align', 'right');
		captionRow.appendChild(captionColLeft);

		var captionImgLeft = document.createElement("img");
		captionImgLeft.setAttribute('src', pathImages + 'spinner-caption-left.png');
		captionImgLeft.setAttribute('width', '12');
		captionImgLeft.setAttribute('height', '50');
		captionImgLeft.style.display = 'block';
		captionColLeft.appendChild(captionImgLeft);

		var captionColBody = document.createElement("td");
		captionColBody.setAttribute('background', pathImages + 'spinner-caption-body.png');
		captionColBody.setAttribute('id', 'SpinnerCaptionTxt');
		captionColBody.setAttribute('valign', 'middle');
		captionColBody.style.fontSize = '14px';
		captionColBody.style.fontFamily = 'Helvetica';
		captionColBody.style.fontWeight = 'bold';
		captionColBody.style.color = '#ffffff';
		captionColBody.style.textShadow = '0px 2px 4px #000000';
		captionColBody.style.whiteSpace = 'nowrap';
		captionColBody.innerHTML = spinnerCaptionMsg;
		captionRow.appendChild(captionColBody);
	}

	var captionColRight = document.createElement("td");
	captionRow.appendChild(captionColRight);

	var captionImgRight = document.createElement("img");
	if (hasCaption) {
		captionImgRight.setAttribute('src', pathImages + 'spinner-caption-right.png');
		captionImgRight.setAttribute('width', '12');
	}
	else {
		captionImgRight.setAttribute('src', pathImages + 'spinner-right.png');
		captionImgRight.setAttribute('width', '9');
	}
	captionImgRight.setAttribute('height', '50');

	captionImgRight.style.display = 'block';
	captionColRight.appendChild(captionImgRight);
}

function GetBrowserWindowSizes() {
	if (self.innerHeight) { 	// tous sauf IE
		windowWidth = window.innerWidth;
		windowHeight = window.innerHeight;
		windowScroll = window.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.clientHeight) { // IE6 Strict
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
		windowScroll = document.documentElement.scrollTop;
	}
	else if (document.body) { // autre IE (IE7)
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
		windowScroll = document.body.scrollTop;
	}
}

function Spin() {
	if (spinTimer == 0) {
		var caption = document.getElementById("SpinnerCaptionDiv");
		var spinnerTotalWidth = spinImageWidth + caption.offsetWidth;

		GetBrowserWindowSizes();
		var spinner = document.getElementById("Spinner");
		spinner.style.left = ((windowWidth - spinnerTotalWidth) / 2) + 'px';
		spinner.style.top = ((windowHeight / 3) + windowScroll) + 'px';
		spinFrame = 1;
		document.getElementById("SpinWheel").src = pathImages + 'spinner-' + spinFrame + '.png';  
		spinTimer = setInterval("Spin()", 70);

		caption.style.left = ((windowWidth - spinnerTotalWidth) / 2 + spinImageWidth) + 'px';
		caption.style.top = ((windowHeight / 3) + windowScroll) + 'px';

		spinner.style.visibility = "visible";	
		caption.style.visibility = "visible";
	}
	else {
		document.getElementById("SpinWheel").src = pathImages + 'spinner-' + spinFrame + '.png';
		spinFrame++;
		if (spinFrame > 12) spinFrame = 1;
	}
}

function PositionSpinner() {
	if (spinnerStarted) {
		GetBrowserWindowSizes();
		var spinner = document.getElementById("Spinner");
		var caption = document.getElementById("SpinnerCaptionDiv");
		var spinnerTotalWidth = spinImageWidth + caption.offsetWidth;
		spinner.style.left = ((windowWidth - spinnerTotalWidth) / 2) + 'px';
		spinner.style.top = ((windowHeight / 3) + windowScroll) + 'px';
		caption.style.left = ((windowWidth - spinnerTotalWidth) / 2 + spinImageWidth) + 'px';
		caption.style.top = ((windowHeight / 3) + windowScroll) + 'px';
	}
}

function StartSpinner() {
	Spin();	
	spinnerStarted = true;
}

function StopSpinner() {
	spinnerStarted = false;
	document.getElementById("Spinner").style.visibility = "hidden";    
	document.getElementById("SpinnerCaptionDiv").style.visibility = "hidden";    
	clearInterval(spinTimer);
	spinTimer = 0;
}	


