//Copyright Elias Khoury 2008

var ekRotatorDelay = 5;
var ekRotatorTick = 0;

var ekpreimgArray = null;
var ekpreimgArrayIndex = null;
var ekpreimgArrayAttempts = null;
var ekpreimgArrayRetry = null;
var ekpreimgArrayComplete = null;
var ekpreimgCount = 0;
var ekpreimgFunctionSuccess = '';
var ekpreimgFunctionFail = '';
var ekpreimgTimeoutID = null;
var ekpreimgTimeoutID2 = null;
var ekpreimgSet = false;
var ekBarWidth = 300;

var ekRotatorWidth = 600;
var ekRotatorHeight = 105;
var ekRotatorImageCount = 5;
var ekRotatorImagesWidth = null;
var ekRotatorImagesHeight = null;
var ekRotatorImagesWidthAverage = 0;
var ekRotatorImagesHeightAverage = 0;
var ekRotatorImagesSet = false;
var ekRotatorLastSelected = null;
var ekRotatorAnimating = false;
var ekRotatorLinks = null;
var ekallowedcharsNum='0123456789.';
var ekLastPos=0;

var ekRotatorShrink = new Array(ekRotatorImageCount);
var ekarWidth=new Array(ekRotatorImageCount+1), ekarHeight=new Array(ekRotatorImageCount+1), ekarID=new Array(ekRotatorImageCount+1), ekarLeft=new Array(ekRotatorImageCount+1), ekarTop=new Array(ekRotatorImageCount+1), ekarZIndex=new Array(ekRotatorImageCount+1);

var ekpreimgArrayAttemptsMax = 10;

function eksetLinks()
{
	var b=eksetLinks.arguments.length;
	
	ekRotatorLinks= new Array(b);
	
	for (a=0; a < b; a++)
	{
		ekRotatorLinks[a]=eksetLinks.arguments[a];
	}

	for (a=0; a < b; a++)
	{
		ekRotatorLinks[b + a]=ekRotatorLinks[a];
	}
}

function eksetPosition(ekVal)
{
	ekpreimgSetSuccess('ekRotateDefault('+ekCheckString(ekVal, ekallowedcharsNum)+')');
}

function ekCheckString(ekStr, ekallowedchars)
{
	var ekNewStr='';
	
	ekStr=ekStr.toString();
	
	for (var a=0; a < ekStr.length; a++)
	{
		ekNewStr+= (ekallowedchars.indexOf(ekStr.substr(a, 1)) >= 0) ? ekStr.substr(a, 1) : '';
	}
		
	return ekNewStr;
}

function ekpreimgSetSuccess(ekVal)
{
	ekpreimgFunctionSuccess=ekVal;
}

function ekpreimgSetFail(ekVal)
{
	ekpreimgFunctionFail=ekVal;
}

function ekRotateGetDetails()
{
	var ekPos=ekRotatorLastSelected;
	
	if (ekPos >= ekpreimgCount) ekPos = ekPos % ekpreimgCount;
	ekPos-=2;
	while (ekPos < 0) ekPos+=ekpreimgCount;	
	
	for (var a=ekPos; (a-ekPos) < ekRotatorImageCount; a++)
	{
		ekarID[a-ekPos]=parseInt((a % ekpreimgCount));
		ekarWidth[a-ekPos]=parseInt(ekCheckString(document.getElementById('ekpreimage' + (a % ekpreimgCount)).width, ekallowedcharsNum));
		ekarHeight[a-ekPos]=parseInt(ekCheckString(document.getElementById('ekpreimage' + (a % ekpreimgCount)).height, ekallowedcharsNum));
		ekarLeft[a-ekPos]=parseInt(ekCheckString(document.getElementById('ekpreimg' + (a % ekpreimgCount)).style.left, ekallowedcharsNum));
		ekarTop[a-ekPos]=parseInt(ekCheckString(document.getElementById('ekpreimg' + (a % ekpreimgCount)).style.top, ekallowedcharsNum));
		ekarZIndex[a-ekPos]=parseInt(document.getElementById('ekpreimg' + (a % ekpreimgCount)).style.zIndex);
	}
	
	ekarLeft[ekRotatorImageCount]=ekarLeft[ekRotatorImageCount-1]-50;
	ekarTop[ekRotatorImageCount]=ekarTop[ekRotatorImageCount-1];
	ekarWidth[ekRotatorImageCount]=ekarWidth[ekRotatorImageCount-1];
	ekarHeight[ekRotatorImageCount]=ekarHeight[ekRotatorImageCount-1];
	ekarZIndex[ekRotatorImageCount]=0;
	ekarID[ekRotatorImageCount]=ekarID[ekRotatorImageCount-1]+1;
	if (ekarID[ekRotatorImageCount] >= ekpreimgCount) ekarID[ekRotatorImageCount] = ekarID[ekRotatorImageCount] % ekpreimgCount;

	ekarLeft[-1]=ekarLeft[0]+50;
	ekarTop[-1]=ekarTop[0];
	ekarWidth[-1]=ekarWidth[0];
	ekarHeight[-1]=ekarHeight[0];
	ekarZIndex[-1]=0;
	ekarID[-1]=ekarID[0]-1;
	while (ekarID[-1] < 0) ekarID[-1]+=ekpreimgCount;
}

function ekRotateLeft(ekCount, ekPos)
{
	var ekSteps=10;

	for (var a=-1; a < ekRotatorImageCount; a++)
	{
		if (Math.floor(ekSteps / 2) == ekPos) document.getElementById('ekpreimg' + ekarID[a]).style.zIndex=ekarZIndex[a+1];
		
		document.getElementById('ekpreimg' + ekarID[a]).style.left=(ekarLeft[a] + Math.floor((ekarLeft[a+1]-ekarLeft[a]) * (ekPos/ekSteps)) ) + 'px';
		document.getElementById('ekpreimg' + ekarID[a]).style.top=(ekarTop[a] + Math.floor((ekarTop[a+1]-ekarTop[a]) * (ekPos/ekSteps)) ) + 'px';
		document.getElementById('ekpreimage' + ekarID[a]).style.height=(ekarHeight[a] + Math.floor((ekarHeight[a+1]-ekarHeight[a]) * (ekPos/ekSteps)) ) + 'px';
		document.getElementById('ekpreimage' + ekarID[a]).style.width=(ekarWidth[a] + Math.floor((ekarWidth[a+1]-ekarWidth[a]) * (ekPos/ekSteps)) ) + 'px';
		document.getElementById('ekpreimg' + ekarID[a]).style.height=(ekarHeight[a] + Math.floor((ekarHeight[a+1]-ekarHeight[a]) * (ekPos/ekSteps)) ) + 'px';
		document.getElementById('ekpreimg' + ekarID[a]).style.width=(ekarWidth[a] + Math.floor((ekarWidth[a+1]-ekarWidth[a]) * (ekPos/ekSteps)) ) + 'px';
	}
	
	if (ekPos==0)
	{
		document.getElementById('ekpreimage' + ekarID[-1]).style.visibility='visible';
		document.getElementById('ekpreimg' + ekarID[-1]).style.visibility='visible';
		document.getElementById('ekpreimg' + ekarID[-1]).style.zIndex=0;			
	}	
	
	if (ekPos < ekSteps)
	{
		ekpreimgTimeoutID = window.setTimeout('ekRotateLeft('+ekCount+', '+(ekPos+1)+')', 50);
	}
	else if (ekCount > 1)
	{
		ekRotateDefault(ekRotatorLastSelected-1);
		ekRotateGetDetails();
		ekpreimgTimeoutID = window.setTimeout('ekRotateLeft('+(ekCount-1)+', '+0+')', 50);
	}
	else
	{
		ekRotateDefault(ekRotatorLastSelected-1);
		ekRotatorAnimating=false;
	}
}

function ekRotateRight(ekCount, ekPos)
{
	var ekSteps=10;

	for (var a=0; a <= ekRotatorImageCount; a++)
	{
		if (Math.floor(ekSteps / 2) == ekPos) document.getElementById('ekpreimg' + ekarID[a]).style.zIndex=ekarZIndex[a-1];
		
		document.getElementById('ekpreimg' + ekarID[a]).style.left=(ekarLeft[a] + Math.floor((ekarLeft[a-1]-ekarLeft[a]) * (ekPos/ekSteps)) ) + 'px';
		document.getElementById('ekpreimg' + ekarID[a]).style.top=(ekarTop[a] + Math.floor((ekarTop[a-1]-ekarTop[a]) * (ekPos/ekSteps)) ) + 'px';
		document.getElementById('ekpreimage' + ekarID[a]).style.height=(ekarHeight[a] + Math.floor((ekarHeight[a-1]-ekarHeight[a]) * (ekPos/ekSteps)) ) + 'px';
		document.getElementById('ekpreimage' + ekarID[a]).style.width=(ekarWidth[a] + Math.floor((ekarWidth[a-1]-ekarWidth[a]) * (ekPos/ekSteps)) ) + 'px';
		document.getElementById('ekpreimg' + ekarID[a]).style.height=(ekarHeight[a] + Math.floor((ekarHeight[a-1]-ekarHeight[a]) * (ekPos/ekSteps)) ) + 'px';
		document.getElementById('ekpreimg' + ekarID[a]).style.width=(ekarWidth[a] + Math.floor((ekarWidth[a-1]-ekarWidth[a]) * (ekPos/ekSteps)) ) + 'px';
	}
	
	if (ekPos==0)
	{
		document.getElementById('ekpreimage' + ekarID[ekRotatorImageCount]).style.visibility='visible';
		document.getElementById('ekpreimg' + ekarID[ekRotatorImageCount]).style.visibility='visible';
		document.getElementById('ekpreimg' + ekarID[ekRotatorImageCount]).style.zIndex=0;			
	}	
	
	if (ekPos < ekSteps)
	{
		ekpreimgTimeoutID = window.setTimeout('ekRotateRight('+ekCount+', '+(ekPos+1)+')', 50);
	}
	else if (ekCount > 1)
	{
		ekRotateDefault(ekRotatorLastSelected+1);
		ekRotateGetDetails();
		ekpreimgTimeoutID = window.setTimeout('ekRotateRight('+(ekCount-1)+', '+0+')', 50);
	}
	else
	{
		ekRotateDefault(ekRotatorLastSelected+1);
		ekRotatorAnimating=false;
	}
}

function ekRotateMoveB()
{
	if (!ekRotatorAnimating) ekRotatorTick++;
	if (ekRotatorTick >= ekRotatorDelay)
	{
		ekRotateMove( (ekLastPos+1) >= ekpreimgCount ? 0 : (ekLastPos+1) );
		ekRotatorTick=0;
	}
	ekpreimgTimeoutID2 = window.setTimeout('ekRotateMoveB()', 1000);
}

function ekRotateMove(ekPos)
{	
	ekLastPos=ekPos;
	ekRotatorTick=0;
	
	if (ekRotatorAnimating) return 0;
	if (ekRotatorLastSelected == ekPos) return 0;
	
	ekRotatorAnimating=true;
	
	var downtwo=ekRotatorLastSelected-2;
	while (downtwo < 0) downtwo+=ekpreimgCount;

	var downone=ekRotatorLastSelected-1;
	while (downone < 0) downone+=ekpreimgCount;
	
	var upone=ekRotatorLastSelected+1;
	if (upone >= ekpreimgCount) upone = upone % ekpreimgCount;

	var uptwo=ekRotatorLastSelected+2;
	if (uptwo >= ekpreimgCount) uptwo = uptwo % ekpreimgCount;
	
	ekRotateGetDetails();
	
	switch (ekPos)
	{
		case downtwo:
		ekRotateLeft(2, 0);
		break;
		case downone:
		ekRotateLeft(1, 0);
		break;
		case uptwo:
		ekRotateRight(2, 0);
		break;
		case upone:
		ekRotateRight(1, 0);
		break;
		default:
		ekRotatorAnimating=false;
		break;
	}
}

function ekRotateDefault(ekPos)
{
	ekPos=parseInt(ekPos);
	
	if (ekPos >= ekpreimgCount) ekPos = ekPos % ekpreimgCount;
	while (ekPos < 0) ekPos+=ekpreimgCount;
	
	if (!ekpreimgSet)
	{
		ekLastPos=ekPos;
		ekRotateMoveB();
		ekpreimgSet=true;
	}
	
	ekRotatorTick=0;
	
	if (ekRotatorLastSelected==null) ekRotatorLastSelected=ekPos; else if (ekRotatorLastSelected != ekPos) ekRotatorLastSelected=ekPos; else if (ekRotatorLastSelected == ekPos) return 0;
	ekPos-=2;
	while (ekPos < 0) ekPos+=ekpreimgCount;
	
	var tWidth=0, tHeight=0, tAdjust=0;

	
	if (!ekRotatorImagesSet)
	{
		ekRotatorImagesWidth = new Array(ekpreimgCount);
		ekRotatorImagesHeight = new Array(ekpreimgCount);
		
		for (var a=0; a < ekpreimgCount; a++)
		{		
			ekRotatorImagesWidth[a]=ekCheckString(document.getElementById('ekpreimage' + a).width, ekallowedcharsNum);
			ekRotatorImagesHeight[a]=ekCheckString(document.getElementById('ekpreimage' + a).height, ekallowedcharsNum);	
			ekRotatorImagesWidthAverage+=parseInt(ekRotatorImagesWidth[a]);
			ekRotatorImagesHeightAverage+=parseInt(ekRotatorImagesHeight[a]);
		}
		ekRotatorImagesWidthAverage=Math.floor(ekRotatorImagesWidthAverage/ekpreimgCount);
		ekRotatorImagesHeightAverage=Math.floor(ekRotatorImagesHeightAverage/ekpreimgCount);
		ekRotatorImagesSet=true;
	}

	for (var a=0; a < ekpreimgCount+ekPos; a++) 
	{
		if ((a >= ekPos && a < ekPos + ekRotatorImageCount) )
		{
			document.getElementById('ekpreimage' + (a % ekpreimgCount)).style.visibility='visible';
			document.getElementById('ekpreimg' + (a % ekpreimgCount)).style.visibility='visible';
		}
		else
		{
			document.getElementById('ekpreimage' + (a % ekpreimgCount)).style.visibility='hidden';
			document.getElementById('ekpreimg' + (a % ekpreimgCount)).style.visibility='hidden';
		}
	}
		
	for (var a=ekPos; (a-ekPos) < ekRotatorImageCount; a++)
	{		
		tWidth=ekRotatorImagesWidthAverage*ekRotatorShrink[a-ekPos];
		document.getElementById('ekpreimage' + (a % ekpreimgCount)).width=tWidth;
		tHeight=ekRotatorImagesHeightAverage*ekRotatorShrink[a-ekPos];
		document.getElementById('ekpreimage' + (a % ekpreimgCount)).height=tHeight;
		
		
		switch (a-ekPos)
		{
		case 0:
		tAdjust=(ekRotatorWidth-tWidth) / 15;
		break;
		case 1:
		tAdjust=(ekRotatorWidth-tWidth) / 5;
		break;
		case 2:
		tAdjust=(ekRotatorWidth-tWidth) / 2;
		break;
		case 3:
		tAdjust=(ekRotatorWidth-tWidth) / 5 * 4;
		break;
		case 4:
		tAdjust=(ekRotatorWidth-tWidth) / 15 * 14;
		break;						
		}
		
		document.getElementById('ekpreimg' + (a % ekpreimgCount)).style.left=Math.floor(tAdjust) + 'px';
		document.getElementById('ekpreimg' + (a % ekpreimgCount)).style.top=(Math.floor((ekRotatorHeight-tHeight) / 2)) + 'px';
	}
	
	document.getElementById('ekpreimg' + ((ekPos+0) % ekpreimgCount)).style.zIndex=1;
	document.getElementById('ekpreimg' + ((ekPos+1) % ekpreimgCount)).style.zIndex=2;
	document.getElementById('ekpreimg' + ((ekPos+2) % ekpreimgCount)).style.zIndex=5;
	document.getElementById('ekpreimg' + ((ekPos+3) % ekpreimgCount)).style.zIndex=4;
	document.getElementById('ekpreimg' + ((ekPos+4) % ekpreimgCount)).style.zIndex=3;
}

function ekpreloadImages()
{
	var tmpArgs='';
	ekpreimgCount=ekpreloadImages.arguments.length;
	
	if (ekpreimgCount < 5)
	{
		alert('Must have at least 5 images!');
		return 0;
	}

	for (var a=0; a < ekpreimgCount; a++) tmpArgs+='\'' + ekpreloadImages.arguments[a] + '\', ';
	for (var a=0; a < ekpreimgCount-1; a++) tmpArgs+='\'' + ekpreloadImages.arguments[a] + '\', ';
	
	tmpArgs+='\'' + ekpreloadImages.arguments[a] + '\'';

	eval('ekpreloadImagesB('+tmpArgs+')');
}

function ekpreloadImagesB()
{
	ekpreimgCount=ekpreloadImagesB.arguments.length;
	
	ekpreimgArray = new Array(ekpreimgCount);
	ekpreimgArrayIndex = new Array(ekpreimgCount);
	ekpreimgArrayAttempts = new Array(ekpreimgCount);
	ekpreimgArrayRetry = new Array(ekpreimgCount);
	ekpreimgArrayComplete = new Array(ekpreimgCount);
	
	ekRotatorShrink[0] = 0.5;
	ekRotatorShrink[1] = 0.7;
	ekRotatorShrink[2] = 1.0;
	ekRotatorShrink[3] = 0.7;
	ekRotatorShrink[4] = 0.5;
	
	document.write('<div onmousedown="return false;" onselectstart="return false;" align="center"><div style="position: relative; width: '+ekRotatorWidth+'px; height: '+ekRotatorHeight+'px;">');
	document.write('<table align="center" width="'+ekRotatorWidth+'" height="'+ekRotatorHeight+'" cellpadding="0" cellspacing="0" style="position: absolute; top: 0px; left: 0px;"><tr><td align="center" valign="middle"><div id="ekpreimgprog" style="position: relative; left: 0px; top: 0px; width: '+ekBarWidth+'px; height: 25px; border: 2px solid #000000; visibility: hidden;" align="left"><div id="ekpreimgprogtxt" style="position: absolute; left: 0px; top: 0px; width: '+ekBarWidth+'px; height: 25px; line-height: 25px;" align="center"></div><div id="ekpreimgprogin" style="width: 0px; height: 25px; background-color: #ffff99;"></div></div></td></tr></table>');
	
	for (var a=0; a < ekpreimgCount; a++)
	{
		ekpreimgArray[a]=ekpreloadImagesB.arguments[a].split('|');
		ekpreimgArrayIndex[a]=0;
		ekpreimgArrayAttempts[a]=0;
		ekpreimgArrayRetry[a]=false;
		ekpreimgArrayComplete[a]=false;
		document.write('<div onmouseover="ekClearAll(); ekHighlightThis('+a+');" onmouseout="ekClearAll();" ondblclick="ekClearAll();" ondragstart="ekClearAll(); return false;" onclick="ekClearAll();" onmousedown="ekClearAll(); ekHighlightThis('+a+');" onmouseup="ekRotateMove('+a+'); return false;" style="position: absolute; left: 0px; top: 0px; border: 2px solid transparent; visibility: hidden;" id="ekpreimg' + a + '"></div>');
	}
	
	
	document.write('</div></div>');
	
	ekpreimg2();
}

function ekClearAll()
{
	for (var a=0; a < ekpreimgCount; a++)
	{	
		document.getElementById('ekpreimg' + a).style.border='2px solid transparent';
	}
}

function ekHighlightThis(a)
{
	if (!ekRotatorAnimating && ekRotatorLastSelected != a)
	{
		//document.getElementById('ekpreimg' + a).style.border='2px solid #88BBFF';
	}
}

function ekpreimg2()
{
	for (var a=0; a < ekpreimgCount; a++)
	{
		ekpreimgSpot(a);
	}
	
	ekpreimgTimeoutID = window.setTimeout('ekpreimgCheck(0)', 100);
}

function ekCheckImage(a)
{
	if (ekRotatorLastSelected==a)
	{
		return true;
	}
	else
	{
		return false;
	}
}

function ekpreimgSpot(a)
{
	if (++ekpreimgArrayAttempts[a] > ekpreimgArrayAttemptsMax)
	{
		
	}
	else
	{
		document.getElementById('ekpreimg' + a).innerHTML='<a href="'+ekRotatorLinks[a]+'" onClick="return ekCheckImage('+a+');"><img border="0" id="ekpreimage' + a +'" ondragstart="return false;" onmousedown="return false;" style="visibility: hidden;" onload="ekpreimgSetComplete(' + a + ');" onabort="ekpreimgSetRetry(' + a + ');" onerror="ekpreimgSetRetry(' + a + ');" src="' + ekpreimgArray[a][ekpreimgArrayIndex[a]] + '"></a>';
		ekpreimgArrayIndex[a]=(ekpreimgArrayIndex[a]+1) % ekpreimgArray[a].length;
	}
}

function ekpreimgSetRetry(a)
{
	ekpreimgArrayRetry[a]=true;
}

function ekpreimgSetComplete(a)
{
	ekpreimgArrayComplete[a]=true;
}

function ekpreimgCheck(ekPercent)
{
	var bFlag = false; var successCount = 0;
	var ektempPercent=ekPercent;
	
	for (var a=0; a < ekpreimgCount; a++)
	{
		if (ekpreimgArrayRetry[a])
		{
			ekpreimgSpot(a);
			ekpreimgArrayRetry[a]=false;
			if (ekpreimgArrayAttempts[a] <= ekpreimgArrayAttemptsMax)
			{
				bFlag = true;
			}
		}
		else
		{
			if (ekpreimgArrayComplete[a])
			{
				successCount++;
			}
			else
			{
				if (ekpreimgArrayAttempts[a] <= ekpreimgArrayAttemptsMax)
				{
					bFlag = true;
				}
			}
		}
	}

	while (successCount / ekpreimgCount * 100 > ektempPercent)
	{
		ektempPercent++;
		bFlag=true;
	}
	
	if (ektempPercent < 100)
	{
		document.getElementById('ekpreimgprogtxt').innerHTML='Loading content please wait... (' + ektempPercent + '%)';
		document.getElementById('ekpreimgprogin').style.width=Math.floor(ekBarWidth * (ektempPercent / 100)) + 'px';		
	}
	else
	{
		bFlag=false;
	}
	
	if (bFlag)
	{
		document.getElementById('ekpreimgprog').style.visibility='visible';
		ekpreimgTimeoutID = window.setTimeout('ekpreimgCheck('+ektempPercent+')', 10);
	}
	else
	{		
		document.getElementById('ekpreimgprog').style.visibility='hidden';
		
		if (successCount == ekpreimgCount)
		{
			eval(ekpreimgFunctionSuccess);
		}
		else
		{
			eval(ekpreimgFunctionFail);
		}
	}
}
