var rgElement = null;
var rgLoaderElement = null;

var rgContentInterval = null;
var rgContentIntervalLength = 20;
var rgContentList = new Array();
var rgContentPointer = 0;
var rgContentLastPointer = rgContentPointer;

var rgSettingsOffset = new Array(7);
var rgSettingsScale = new Array(7);
var rgSettingsZindex = new Array(7);
var rgSettingsOffsetIncrement = new Array(7);
var rgSettingsScaleIncrement = new Array(7);
var rgSettingsOffsetDecrement = new Array(7);
var rgSettingsScaleDecrement = new Array(7);
var rgSettingsTmpOffset = new Array(7);
var rgSettingsTmpScale = new Array(7);
var rgSettingsTmpZindex = new Array(7);

var rgSettingsSteps = 8;
var rgSettingsStep = 0;

var rgContentElements = null;
var rgContentElementsStyle = null;
var rgContentBackgrounds = null;
var rgContentBackgroundsStyle = null;
var rgContentImage = null;
var rgContentImageStyle = null;

var rgSettingsDefaultElement = null;
var rgSettingsDefaultBackground = null;
var rgSettingsDefaultImage = null;
var rgSettingsDefaultImageOffset = 14;

var rgScrollbarElement = null;
var rgScrollbarAreaElement = null;
var rgScrollbarAreaPosition = null;
var rgScrollbarAreaHelperElement = null;
var rgScrollbarAreaHelperElementStyle = null;
var rgScrollbarScrollerElement = null;
var rgScrollbarScrollerElementStyle = null;
var rgScrollbarButtonLeftElement = null;
var rgScrollbarButtonRightElement = null;
var rgScrollbarStepWidth = null;
var rgScrollbarStepMaxWidth = null;

var rgScrollbarAnimationInterval = null;
var rgScrollbarAnimationStep = 0;
var rgScrollbarAnimationStepWidth = null;

var rgBackgroundHtml = null;
var rgBackgroundBody = null;
var rgBackgroundTable = null;
var rgBackgroundHeader = null;
var rgBackgroundFooter = null;
var rgBackgroundTimeout = null;
var rgBackgroundTimeoutLength = 800;
var rgBackgrounds = null;

var rgPreloadInterval = null;
var rgPreloadIntervalLenght = 300;
document.rgPreloadFiles = Array();


var rgAnimationState = -1;
var rgAnimationInterval = null;
var rgAnimationIntervalLength = 2000;

function rgContentRefresh()
{
	var i = rgContentLastPointer - 3;
	var maxi = rgContentLastPointer + 3;
	for(var position=0; i<=maxi; i++,position++){
		if(rgContentElements[i] != null){
			if(rgSettingsTmpOffset[position] == null){
				rgSettingsTmpOffset[position] = rgSettingsOffset[position];
				rgSettingsTmpScale[position] = rgSettingsScale[position];
				rgSettingsTmpZindex[position] = rgSettingsZindex[position];
				rgContentElementsStyle[i].display = "block";
			}
			
			rgContentRefreshBox(i, position);
		}
	}
}
function rgContentRefreshBox(pointer, position)
{
	rgContentElementsStyle[pointer].marginLeft = Math.round(rgSettingsTmpOffset[position]) + "px";
	rgContentElementsStyle[pointer].zIndex = Math.round(rgSettingsTmpZindex[position]);
	
	dhSetOpacity(rgContentImage[pointer], rgSettingsTmpScale[position] * 100);
	
	var realPosition = position-3;
	
	if(realPosition != 0){
		rgContentImageStyle[pointer].cursor = "pointer";
	}else{
		rgContentImageStyle[pointer].cursor = "";
	}
	
	rgContentImage[pointer].onmousedown = function(){
		if(rgContentLastPointer != rgContentPointer){
			return;
		}
		if(realPosition > 0){
			rgContentPointer += 1;
			rgContentMove(true);
		}else if(realPosition < 0){
			rgContentPointer -= 1;
			rgContentMove(false);
		}
	};
		
	var scaledWidth = rgSettingsTmpScale[position] * rgSettingsDefaultBackground.width;
	var scaledHeight = rgSettingsTmpScale[position] * rgSettingsDefaultBackground.height;
	if(scaledWidth < 0 || scaledHeight < 0){
		scaledWidth = 0;
		scaledHeight = 0;
	}
	
	rgContentBackgroundsStyle[pointer].width = Math.round(scaledWidth) + "px";
	rgContentBackgroundsStyle[pointer].height = Math.round(scaledHeight) + "px";
	
	var centerOffset = (rgSettingsDefaultBackground.height - scaledHeight) / 2;
	rgContentBackgroundsStyle[pointer].marginTop = Math.round(centerOffset) + "px";
	
	var imageOffset = rgSettingsTmpScale[position] * rgSettingsDefaultImageOffset;
	rgContentImageStyle[pointer].marginTop = Math.round(centerOffset + imageOffset) + "px";
	
	var align = false;
	if(rgContentLastPointer < rgContentPointer){
		if(realPosition > 0){
			align = true;
		}
	}else{
		if(realPosition >= 0){
			align = true;
		}
	}
	
	if(align == true){
		var marginLeft = (rgSettingsDefaultBackground.width - scaledWidth);
		rgContentBackgroundsStyle[pointer].marginLeft = Math.round(marginLeft) + "px";
		rgContentImageStyle[pointer].marginLeft = Math.round(marginLeft + imageOffset) + "px";
	}else{
		rgContentBackgroundsStyle[pointer].marginLeft = "0px";
		rgContentImageStyle[pointer].marginLeft = Math.round(imageOffset) + "px";
	}
	
	var scaledWidth = rgSettingsTmpScale[position] * rgSettingsDefaultImage.width;
	var scaledHeight = rgSettingsTmpScale[position] * rgSettingsDefaultImage.height;
	if(scaledWidth < 0 || scaledHeight < 0){
		scaledWidth = 0;
		scaledHeight = 0;
	}
	
	rgContentImageStyle[pointer].width = Math.round(scaledWidth) + "px";
	rgContentImageStyle[pointer].height = Math.round(scaledHeight) + "px";
}
function rgContentMove(increment)
{	
	if(rgContentInterval == null){
		rgSettingsStep = 0;
		
		if(increment == true){
			rgContentLastPointer = rgContentPointer - 1;
		}else{
			rgContentLastPointer = rgContentPointer + 1;
		}
		rgScrollbarRefresh();
	}
	
	if(rgSettingsStep == 0){
		rgChangeBackground(rgContentPointer);
	}
	
	for(var i=0; i<=7; i++){
		if(increment == true){
			if(rgSettingsOffset[i - 1] == null){
				continue;
			}
			rgSettingsTmpOffset[i] += rgSettingsOffsetIncrement[i];
			rgSettingsTmpScale[i] += rgSettingsScaleIncrement[i];
			if(rgSettingsStep == Math.round(rgSettingsSteps / 2)){
				rgSettingsTmpZindex[i] = rgSettingsZindex[i - 1];
			}
		}else{
			if(rgSettingsOffset[i + 1] == null){
				continue;
			}
			rgSettingsTmpOffset[i] += rgSettingsOffsetDecrement[i];
			rgSettingsTmpScale[i] += rgSettingsScaleDecrement[i];
			if(rgSettingsStep == Math.round(rgSettingsSteps / 2)){
				rgSettingsTmpZindex[i] = rgSettingsZindex[i + 1];
			}
		}
	}
	rgSettingsStep++;
	
	if(rgSettingsStep == rgSettingsSteps){
		window.clearTimeout(rgContentInterval);
		rgContentInterval = null;
		
		if(increment == true){
			rgContentLastPointer++;
		}else{
			rgContentLastPointer--;
		}
		
		for(var i=0; i<=7; i++){
			rgSettingsTmpOffset[i] = null;
			rgSettingsTmpScale[i] =  null;
			rgSettingsTmpZindex[i] = null;
		}
		
	}
	
	rgContentRefresh();
	
	if(rgSettingsStep != rgSettingsSteps){
		rgContentInterval = window.setTimeout(
			function(){
				rgContentMove(increment);
			}
			, rgContentIntervalLength
		);
	}
}
function rgSetConfiguration()
{	
	rgSettingsOffset[0] = -40;
	rgSettingsScale[0] = 0;
	rgSettingsZindex[0] = 9000;

	rgSettingsOffset[1] = 0;
	rgSettingsScale[1] = 0.64;
	rgSettingsZindex[1] = 10000;
	
	rgSettingsOffset[2] = 52;
	rgSettingsScale[2] = 0.80;
	rgSettingsZindex[2] = 11000;
	
	rgSettingsOffset[3] = 122;
	rgSettingsScale[3] = 1.00;
	rgSettingsZindex[3] = 12000;
	
	rgSettingsOffset[4] = 192;
	rgSettingsScale[4] = 0.80;
	rgSettingsZindex[4] = 11000;
	
	rgSettingsOffset[5] = 244;
	rgSettingsScale[5] = 0.64;
	rgSettingsZindex[5] = 10000;
	
	rgSettingsOffset[6] = 284;
	rgSettingsScale[6] = 0;
	rgSettingsZindex[6] = 9000;
	
	for(var i=0; i<=7; i++){
		if(rgSettingsOffset[i-1] != null){
			rgSettingsOffsetIncrement[i] = (rgSettingsOffset[i-1] - rgSettingsOffset[i]) / rgSettingsSteps;
			rgSettingsScaleIncrement[i] = (rgSettingsScale[i-1] - rgSettingsScale[i]) / rgSettingsSteps;
		}else{
			rgSettingsOffsetIncrement[i] = rgSettingsOffset[i] / rgSettingsSteps;
			rgSettingsScaleIncrement[i] = rgSettingsScale[i] / rgSettingsSteps;
		}
		if(rgSettingsOffset[i+1] != null){
			rgSettingsOffsetDecrement[i] = (rgSettingsOffset[i+1] - rgSettingsOffset[i]) / rgSettingsSteps;
			rgSettingsScaleDecrement[i] = (rgSettingsScale[i+1] - rgSettingsScale[i]) / rgSettingsSteps;
		}else{
			rgSettingsOffsetDecrement[i] = rgSettingsOffset[i] / rgSettingsSteps;
			rgSettingsScaleDecrement[i] = rgSettingsScale[i] / rgSettingsSteps;
		}
		rgSettingsTmpOffset[i]= null;
		rgSettingsTmpScale[i] = null;
		rgSettingsTmpZindex[i] = null;
	}
	
	rgContentGetDefaultDimensions();
	
	var scrollbarAreaDimensions = dhGetObjectDimensions(rgScrollbarAreaElement);
	var scrollerDimensions = dhGetObjectDimensions(rgScrollbarScrollerElement);
	rgScrollbarStepWidth = (scrollbarAreaDimensions.width - scrollerDimensions.width) / (rgContentElements.length - 1);
	rgScrollbarStepMaxWidth = scrollbarAreaDimensions.width - scrollerDimensions.width;
}
function rgContentGetDefaultDimensions()
{
	if(rgContentElements[rgContentPointer] == null){
		return;
	}
	rgContentElementsStyle[rgContentPointer].display = "block";
	
	rgSettingsDefaultElement = dhGetObjectDimensions(rgContentElements[rgContentPointer]);
	rgSettingsDefaultBackground = dhGetObjectDimensions(rgContentBackgrounds[rgContentPointer]);
	rgSettingsDefaultImage = dhGetObjectDimensions(rgContentImage[rgContentPointer]);
	rgSettingsDefaultImageOffset = 14;
	
	rgContentElementsStyle[rgContentPointer].display = "none";
}

function rgScrollbarDragScroller(e)
{
	var helperOffset = 40;
	var helperZindex = 13000;
	var scrollbarPosition = dhGetObjectPosition(rgScrollbarElement);
	var scrollbarDimensions = dhGetObjectDimensions(rgScrollbarElement);
	
	rgScrollbarAreaHelperElementStyle.position = "absolute";
	rgScrollbarAreaHelperElementStyle.top = scrollbarPosition.y - helperOffset;
	rgScrollbarAreaHelperElementStyle.left = scrollbarPosition.x - helperOffset;
	rgScrollbarAreaHelperElementStyle.width = scrollbarDimensions.width + helperOffset * 2;
	rgScrollbarAreaHelperElementStyle.height = scrollbarDimensions.height + helperOffset * 2;
	rgScrollbarAreaHelperElementStyle.zIndex = helperZindex;
	
	rgScrollbarAreaHelperElementStyle.display = "block";
	rgScrollbarAreaHelperElement.onmousemove = function(e){
		rgScrollbarMoveScroller(e);
	};
	rgScrollbarAreaHelperElement.onmouseup = function(e){
		rgScrollbarAreaHelperElement.onmousemove = null;
		rgScrollbarAreaHelperElementStyle.display = "none";
	};
	rgScrollbarAreaHelperElement.onmouseout = function(e){
		rgScrollbarAreaHelperElement.onmousemove = null;
		rgScrollbarAreaHelperElementStyle.display = "none";
	};
}
function rgScrollbarMoveScroller(e)
{
	if(rgContentLastPointer != rgContentPointer){
		return;
	}
	
	dhDeselectObject();
	
	var mousePosition = dhGetMousePosition(e);
	
	var offset = mousePosition.x - rgScrollbarAreaPosition.x;
	
	offset = offset - (offset % rgScrollbarStepWidth);
	if(offset < 0){
		offset = 0;
	}
	if(offset > rgScrollbarStepMaxWidth){
		offset = rgScrollbarStepMaxWidth;
	}
	
	var oldPointer = rgContentPointer;
	rgContentPointer = Math.round(offset/rgScrollbarStepWidth);
	
	if(rgContentPointer > oldPointer){
		rgContentMove(true);
	}else if(rgContentPointer < oldPointer){
		rgContentMove(false);
	}
	
	rgScrollbarRefresh();
}
function rgScrollbarRefresh()
{
	var currentStepIncrement = rgContentPointer * rgScrollbarStepWidth - rgContentLastPointer * rgScrollbarStepWidth;
	rgScrollbarAnimationStepWidth = currentStepIncrement / rgSettingsSteps;
	
	rgScrollbarScrollerElementStyle.marginLeft = (rgContentLastPointer * rgScrollbarStepWidth) + "px";
	
	rgScrollbarAnimationStep = 0;
	if(rgScrollbarAnimationInterval != null){
		window.clearTimeout(rgScrollbarAnimationInterval);
		rgScrollbarAnimationInterval = null;
	}
	rgScrollbarAnimate();
}
function rgScrollbarAnimate()
{
	rgScrollbarAnimationStep++;
	if(rgScrollbarAnimationStep < rgSettingsSteps){
		var scrollerCurrentPosition = parseInt(rgScrollbarScrollerElementStyle.marginLeft);
		scrollerCurrentPosition += rgScrollbarAnimationStepWidth;
		var scrollerNextPosition = Math.round(rgContentPointer * rgScrollbarStepWidth);
		
		rgScrollbarScrollerElementStyle.marginLeft = Math.round(scrollerCurrentPosition) + "px";
	}else{
		rgScrollbarScrollerElementStyle.marginLeft = (rgContentPointer * rgScrollbarStepWidth) + "px";
		return;
	}
	
	rgScrollbarAnimationInterval = window.setTimeout(
			function(){
				rgScrollbarAnimate();
			}
			, rgContentIntervalLength
	);
}

function rgScrollLeft()
{
	if(rgContentLastPointer != rgContentPointer){
		return;
	}
	
	rgContentPointer--;
	if(rgContentPointer < 0){
		rgContentPointer = 0;
	}else{
		rgContentMove(false);
		rgScrollbarRefresh();
	}
}
function rgScrollRight()
{
	if(rgContentLastPointer != rgContentPointer){
		return;
	}
	
	rgContentPointer++;
	if(rgContentPointer >= rgContentElements.length){
		rgContentPointer = rgContentElements.length - 1;
	}else{
		rgContentMove(true);
		rgScrollbarRefresh();
	}
}
function rgRun()
{
	rgLoaderElement.style.display = "none";
	
	rgScrollbarScrollerElement.onmousedown = function(){
		rgScrollbarDragScroller();
	};
	rgScrollbarButtonLeftElement.onmousedown = function(){
		rgScrollLeft();
	};
	rgScrollbarButtonRightElement.onmousedown = function(){
		rgScrollRight();
	};
	
	rgSetConfiguration();
	
	rgScrollbarRefresh();
	rgContentRefresh();
	
	rgElement.onmousedown = function(){
		if(rgAnimationInterval != null){
			window.clearTimeout(rgAnimationInterval);
			rgAnimationInterval = null;
			rgElement.onmousedown = null;
		}
	};
	rgAnimate();
}

function rgAnimate()
{
	if(rgContentPointer == (rgContentElements.length-1)){
		rgAnimationState = 1;
	}
	if(rgAnimationState == 1){
		var pointer = 0;
		if((rgContentElements.length % 2) == 0){
			pointer = Math.round(rgContentElements.length / 2) - 1;
		}else{
			pointer = Math.round(rgContentElements.length / 2 - 1);
		}
		if(pointer < 0){
			pointer = 0;
		}
		if(rgContentPointer == pointer){
			window.clearTimeout(rgAnimationInterval);
			rgAnimationInterval = null;
			rgAnimationState == 2;
			return;
		}
	}
	if(rgAnimationState == -1){
		rgAnimationState = 0;
	}else if(rgAnimationState == 0){
		rgScrollRight();
	}else if(rgAnimationState == 1){		
		rgScrollLeft();
	}
	
	rgAnimationInterval = window.setTimeout(
		function(){
			rgAnimate();
		}
		, rgAnimationIntervalLength
	);
}

function rgConstruct(contentNumber)
{
	rgElement = document.getElementById("rg");
	rgLoaderElement = document.getElementById("rgLoader");
	
	rgContentList = new Array(contentNumber);
	rgContentElements = new Array(contentNumber);
	rgContentElementsStyle = new Array(contentNumber);
	rgContentBackgrounds = new Array(contentNumber);
	rgContentBackgroundsStyle = new Array(contentNumber);
	rgContentImage = new Array(contentNumber);
	rgContentImageStyle = new Array(contentNumber);
	
	while(contentNumber--){
		rgContentElements[contentNumber] = document.getElementById("rgContent" + contentNumber);
		rgContentBackgrounds[contentNumber] = document.getElementById("rgContent" + contentNumber + "Background");
		rgContentImage[contentNumber] = document.getElementById("rgContent" + contentNumber + "Image");
		
		rgContentElementsStyle[contentNumber] = rgContentElements[contentNumber].style;
		rgContentBackgroundsStyle[contentNumber] = rgContentBackgrounds[contentNumber].style;
		rgContentImageStyle[contentNumber] = rgContentImage[contentNumber].style;
		
		rgContentElementsStyle[contentNumber].display = "none";
	}
	
	rgScrollbarElement = document.getElementById("rgScrollbar");
	rgScrollbarAreaElement = document.getElementById("rgScrollerArea");
	rgScrollbarAreaPosition = dhGetObjectPosition(rgScrollbarAreaElement);
	rgScrollbarAreaHelperElement = document.getElementById("rgScrollerAreaHelper");
	rgScrollbarAreaHelperElementStyle = rgScrollbarAreaHelperElement.style;
	rgScrollbarScrollerElement =  document.getElementById("rgScroller");
	rgScrollbarScrollerElementStyle = rgScrollbarScrollerElement.style;
	rgScrollbarButtonLeftElement = document.getElementById("rgScrollerButtonLeft");
	rgScrollbarButtonRightElement = document.getElementById("rgScrollerButtonRight");
}

function rgChangeBackground(pointer)
{
	rgBackgroundHtml = document.getElementsByTagName("html")[0].style;
	rgBackgroundBody = document.getElementsByTagName("body")[0].style;
	rgBackgroundTable = document.getElementById("mcContentBackGround").style;
	
	rgBackgroundHeader = document.getElementById("mfLanguageSelection");
	rgBackgroundFooter = document.getElementById("mfSubFooter");
	
	if(rgBackgroundTimeout != null){
		window.clearTimeout(rgBackgroundTimeout);
		rgBackgroundTimeout = null;
	}
	
	rgBackgroundTimeout = window.setTimeout(
		function(){
			rgSetBackground(pointer);
		}
		, rgBackgroundTimeoutLength
	);
}
function rgSetBackground(pointer)
{
	rgBackgroundHtml.backgroundImage = 'url("' + rgBackgrounds[pointer].image + '")';
	rgBackgroundHtml.backgroundColor = rgBackgrounds[pointer].color;
	rgBackgroundHtml.backgroundPosition = rgBackgrounds[pointer].position;
	rgBackgroundHtml.backgroundRepeat = rgBackgrounds[pointer].repeat;
	
	rgBackgroundBody.backgroundImage = 'url("' + rgBackgrounds[pointer].image + '")';
	rgBackgroundBody.backgroundColor = rgBackgrounds[pointer].color;
	rgBackgroundBody.backgroundPosition = rgBackgrounds[pointer].position;
	rgBackgroundBody.backgroundRepeat = rgBackgrounds[pointer].repeat;
	
	rgBackgroundTable.backgroundImage = 'url("' + rgBackgrounds[pointer].inner.image + '")';
	rgBackgroundTable.backgroundColor = rgBackgrounds[pointer].inner.color;
	
	rgBackgroundHeader.style.color = rgBackgrounds[pointer].header;
	var i = rgBackgroundHeader.childNodes.length;
	while(i--){
		if(rgBackgroundHeader.childNodes[i].style != null){
			rgBackgroundHeader.childNodes[i].style.color = rgBackgrounds[pointer].header;
		}
	}
	
	rgBackgroundFooter.style.color = rgBackgrounds[pointer].footer;
	var i = rgBackgroundFooter.childNodes.length;
	while(i--){
		if(rgBackgroundFooter.childNodes[i].style != null){
			rgBackgroundFooter.childNodes[i].style.color = rgBackgrounds[pointer].footer;
		}
	}
}
function rgSetBackgroundConfiguration(configuration)
{
	rgBackgrounds = configuration;
	rgChangeBackground(rgContentPointer);
}

function rgPreload()
{
	var i = rgContentImage.length;
	while(i--){
		if(rgContentImage[i].src != null){
			var tmpImage = new Image();
			tmpImage.src = rgContentImage[i].src;
			document.rgPreloadFiles.push(tmpImage);
		}
	}
	var i = rgBackgrounds.length;
	while(i--){
		if(rgBackgrounds[i].image != null && rgBackgrounds[i].image != ""){
			var tmpImage = new Image();
			tmpImage.src = rgBackgrounds[i].image;
			document.rgPreloadFiles.push(tmpImage);
		}
		if(rgBackgrounds[i].inner.image != null && rgBackgrounds[i].inner.image != ""){
			var tmpImage = new Image();
			tmpImage.src = rgBackgrounds[i].inner.image;
			document.rgPreloadFiles.push(tmpImage);
		}
	}
	rgPreloadInterval = window.setInterval(
		function(){
			rgPreloadCheck(function(){rgRun();});
		}
		, rgPreloadIntervalLenght
	);
}
function rgPreloadCheck(callbackFunction)
{
	var complete = true;
	var i = document.rgPreloadFiles.length;
	while(i--){
		if(document.rgPreloadFiles[i].complete != true){
			complete = false;
		}
	}
	if(complete == true){
		document.rgPreloadFiles = null;
		window.clearInterval(rgPreloadInterval);
		callbackFunction();
	}
}