
function GetRandom(start,end) 
{ 
    var range = end - start + 1; 
    var result = start + Math.floor(Math.random()*range); 
    return result; 
}


// Generic Layer Object Functions

function getObjectInfo(objectin)
{
	var objectOut = new Object();
	objectOut.top = 0;
	objectOut.left = 0;
	objectOut.width = 0;
	objectOut.height = 0;
	objectOut.right = 0;
	objectOut.bottom = 0;

	if ((IEmac && IE5) || (IE4plus && !isMac))
	{
		var newobject = objectin;
		
		objectOut.left = newobject.offsetLeft;
		objectOut.top = newobject.offsetTop; //document.body.topMargin;
		var newp = newobject.offsetParent;

		while(newp != null)
		{
			objectOut.left += newp.offsetLeft;
			objectOut.top += newp.offsetTop;
			newp = newp.offsetParent;
		}

		if (IEmac)
		{	
			objectOut.left += parseInt(document.body.leftMargin);
			objectOut.top +=  parseInt(document.body.topMargin);
		}
		objectOut.height = newobject.height;
		objectOut.width = newobject.width;
	}
	else if (NS4)
	{
		objectOut.left = objectin.x;
		objectOut.top = objectin.y;
		objectOut.width = objectin.width;
		objectOut.height = objectin.height;

	}
	else if (isMac && !IE5 && IE4plus)
	{
		var el = eval(objectin);
		do
		{	
			if (isInt(el.offsetTop))
				objectOut.top += el.offsetTop;
			if (isInt(el.offsetLeft))
				objectOut.left += el.offsetLeft;
			el = el.parentElement;
		} while (el.tagName != "BODY");
		if (navigator.appVersion.indexOf("4.5")>=0)
			objectOut.top = objectOut.top - 15;

		objectOut.width = eval(objectin).offsetWidth;
		objectOut.height = eval(objectin).offsetHeight; 
		objectOut.right = objectOut.left + objectOut.width;
		objectOut.bottom = objectOut.top + objectOut.height;
	}
	else if (NS6)
	{
		objectOut.left = objectin.offsetLeft+document.getElementsByTagName('body')[0].offsetLeft;
		objectOut.top = objectin.offsetTop+document.getElementsByTagName('body')[0].offsetTop;
		objectOut.width = objectin.offsetWidth;
		objectOut.height = objectin.offsetHeight;
	}
	objectOut.right = objectOut.left + objectOut.width;
	objectOut.bottom = objectOut.top + objectOut.height;

	return objectOut;
} 

//
// FlyingAd Class
//

function FlyingAd_Animate()
{	
	var i = GetRandom(0,this.anim.length - 1);
	if (!NS6) // Netscape 6 seems to lose the image if we try to do this
		this.animImage.src = this.anim[i];
}

function FlyingAd_Finished()
{	
	if ( (this.passes >= this.maxPasses) ||
		 (this.hasDestination && (this.x <= this.destX)) )
		return true;
	else
		return false;
}

function FlyingAd_Move()
{	
	this.x += this.moveX;
	this.y += this.moveY;

	if (this.x+this.width < 10)
	{ 
		this.x = getWindowWidth();
		this.passes++;
		
		this.y += this.driftY;
	}
	
	moveTo(this.dv,this.x,this.y);
}

function FlyingAd_SetLoc(x,y)
{	
	this.x = x;
	this.y = y;

	moveTo(this.dv,this.x,this.y);
}

function FlyingAd_SetDest(x,y)
{	
	this.destX = x;
	this.destY = y;
	this.passes = 0;
	this.hasDestination = true;
}

function FlyingAd_Show(shouldShow)
{	
	if (shouldShow)
		showObject(this.dv);
	else
		hideObject(this.dv);
}


function FlyingAd(divName,animImgName,bannerImgName,divObj)
{
	this.moveX = -5;
	this.moveY = 0;
	this.destX = 0;
	this.destY = 0;
	this.hasDestination = false;
	this.driftY = 50;
	this.passes = 0;
	this.maxPasses = 3;
	this.speed = 50;
	this.animationspeed = 500;
	this.animIndex = 0;
	this.dv = divObj;
	this.x = parseInt(this.dv.left);
	this.y = parseInt(this.dv.top);

	if(NS4)
	{
		this.animImage = eval("divObj.document."+ animImgName);
		this.bannerImage = eval("divObj.document."+ bannerImgName);
		this.width = this.animImage.width + this.bannerImage.width;
	}
	else if (IE4plus) 
	{
		//this.x = this.div.pixelLeft;
		//this.y = this.div.pixelTop;
		this.animImage =  eval("document." + animImgName);
		this.bannerImage =  eval("document." + bannerImgName);
		this.width = parseInt(this.dv.width);
	}
	else if (NS6) 
	{
		this.animImage =  document.getElementById(animImgName);
		this.bannerImage =  document.getElementById(bannerImgName);
		this.width = parseInt(this.dv.width);
	}

	this.animInfo = getObjectInfo(this.animImage);

	
	this.anim = new Array();
	for (i=0;i<arguments.length-4;i++)
	{
		var img = new Image();
		img.src = arguments[i+4];
		this.anim[i] = arguments[i+4];
	}
	
	this.Move = FlyingAd_Move;
	this.Animate = FlyingAd_Animate;
	this.Finished = FlyingAd_Finished;
	this.SetLoc = FlyingAd_SetLoc;
	this.SetDest = FlyingAd_SetDest;
	this.Show = FlyingAd_Show;
}

function CreateFlyingLayer()
{
	var html = "";
	html += '<table border="0" cellspacing="0" cellpadding="0">';
	html += '<tr>';
	html += '<td><img src="images/planea.gif" width="145"  height="60" border="0" name="anim" id="anim"></td>';
	html += '<td><a href="javascript:FlyingAdClick()"><img src="images/spacer.gif" width="351"  height="60" border="0" name="animbanner" id="animbanner"></a></td>';
	html += '</tr>';
	html += '</table>';
	
	var nL = createLayer("flyingad",0,0,613,60,html);
	return nL;
}


function MoveAnimation() 
{
	gFlyingAd.Move();

	if (!gFlyingAd.Finished())
		setTimeout("MoveAnimation()",gFlyingAd.speed);
	else
		FinishAnimation();
}

function DoAnimation() 
{
	gFlyingAd.Animate();
	if (!gFlyingAd.Finished())
		setTimeout("DoAnimation()",gFlyingAd.animationspeed);
}

function FindFirstBannerAd()
{
	var returnObj = null;
	for (var i=0;i < document.images.length; i++)
	{
		if ((document.images[i].width==468) && (document.images[i].height==60) && 
			(document.images[i].name != "animbanner") )
		{
			returnObj = document.images[i];
			break;
		}
	}
	
	return returnObj;
}

function FindHighestBannerAd()
{
	var returnObj = null;
	var lastY = 0;
	var imgY = 0;
	
	for (var i=0;i < document.images.length; i++)
	{
		if ((document.images[i].width==468) && (document.images[i].height==60) && 
			(document.images[i].name != "animbanner") )
		{
			if (IE4plus)
				imgY = document.images[i].offsetTop;
			else
				imgY = document.images[i].y;
				
			if (!returnObj || (imgY < lastY))
			{
				returnObj = document.images[i];
				lastY = imgY;
			}
		}
	}
	
	return returnObj;
}

function FindFirstBannerAdLink(x,y)
{
	var returnObj = null;
	var objInfo = null;
	for (var i=0;i < document.links.length; i++)
	{
		objInfo = getObjectInfo(document.links[i]);
		if ((objInfo.left==x) && (objInfo.top==y))
		{
			returnObj = document.links[i];
			break;
		}
	}
	
	return returnObj;
}

function GrabBanner()
{	
	if (IE4plus || NS4 || NS6)
	{
		var startX = getWindowWidth();

		if (gBannerName=="")
			gBannerImg = FindHighestBannerAd();
		else
			gBannerImg = eval("document."+gBannerName);
		gBannerInfo = getObjectInfo(gBannerImg);

		if (!gFlyingAd)
		{
			var layer = CreateFlyingLayer();
			gFlyingAd = new FlyingAd("flyingad","anim","animbanner",layer,"images/planea.gif","images/planeb.gif","images/planec.gif");
		}
		var destX = gBannerInfo.left - gFlyingAd.animInfo.width;
		var destY = gBannerInfo.top;

		gFlyingAd.SetLoc(startX,destY);
		gFlyingAd.SetDest(destX,destY);
		gFlyingAd.Show(true);
		gAnimationTimer = setTimeout("DoAnimation()",gFlyingAd.animationspeed);
	
		GoToBanner();
	}
}

function FinishAnimation()
{
	var startX = getWindowWidth();
	var destX = gBannerInfo.left - gFlyingAd.animInfo.width;
	var destY = gBannerInfo.top;

	gFlyingAd.SetLoc(startX,destY);
	gFlyingAd.SetDest(destX,destY);

	
	ReturnBanner();
}

function GoToBanner()
{
	gFlyingAd.Move();

	if (!gFlyingAd.Finished())
		setTimeout("GoToBanner()",gFlyingAd.speed);
	else
	{
		gFlyingAd.bannerImage.src = gBannerImg.src;			
		gBannerImg.src = "images/delmassey3.gif";
		gFlyingAd.hasDestination = false;
		MoveAnimation();
	}
}

function ReturnBanner()
{
	gFlyingAd.Move();

	if (!gFlyingAd.Finished())
		setTimeout("ReturnBanner()",gFlyingAd.speed);
	else
	{
		gBannerImg.src = gFlyingAd.bannerImage.src;
		gFlyingAd.Show(false);
		gFlyingAd.bannerImage.src = "images/spacer.gif";
		clearTimeout(gAnimationTimer);
	}
}


function FlyingAdClick()
{
	var bannerLink = "";
	if (gBannerImg)
	{
		if (gBannerLinkName == "")
		{
			if (IE4plus)
			{
				// Assume parent element of image is an anchor (<A>) tag
				bannerLink = gBannerImg.parentElement.href;
			}
			else
			{
				// Look for the first anchor that has the same host as the image src
				var start = 0;
				var end = gBannerImg.src.length;
				
				if (gBannerImg.src.indexOf("http://")>=0)
					start = gBannerImg.src.indexOf("http://") + 7;
				
				if (gBannerImg.src.indexOf("/",start)>0)
					end = gBannerImg.src.indexOf("/",start);
				var host = gBannerImg.src.substring(start,end);

				for (var i=0;i<document.links.length;i++)
				{	
					if (document.links[i].href.indexOf(host) >= 0)
					{
						bannerLink = document.links[i].href;
						break;
					}
				}
			}
		}
		else
		{
			for (var i=0;i<document.anchors.length;i++)
			{
				if (document.anchors[i].name == gBannerLinkName)
				{
					bannerLink = document.anchors[i].href;
					break;
				}
			}
		}
	}
	
	window.location.href = bannerLink;
}


function Replay()
{
	window.location.reload();
}


SafeAddOnload(GrabBanner);

var gAnimationTimer = null;
var gFlyingAd = null;
var gBannerImg = null;
var gBannerInfo = null;

