function isNumber(n) {
	return !isNaN(parseFloat(n)) && isFinite(n);
}

function FlashInstalled()
{
	result = false;
	if (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"])
	{
		result = navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin;
	}
	else if (document.all && (navigator.appVersion.indexOf("Mac")==-1))
	{
		// IE Windows only -- check for ActiveX control, have to hide code in eval from Netscape (doesn't like try)
		eval ('try {var xObj = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");if (xObj)	result = true; xObj = null;	} catch (e)	{}');
	}
	return result;
}

function GetFlashHTML(url,width,height)
{
	var htm = '<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';
	htm += '  codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" ';
	htm += ' WIDTH=' + width + ' HEIGHT=' + height + '>';
	htm += ' <PARAM NAME=movie VALUE="' + url + '"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#FFFFFF> <param name="allowScriptAccess" value="always" /> '; 
	htm += ' <EMBED src="' + url + '" allowScriptAccess="always" quality=high bgcolor=#FFFFFF  ';
	htm += ' swLiveConnect=FALSE WIDTH=' + width + ' HEIGHT=' + height;
	htm += ' TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">';
	htm += ' </EMBED></OBJECT>';
	return htm;
}

function BannerMgr_GetBanner()
{
	var possibles =  this.banners;
	var result = null;
	var sum=0, cum=0;
	
	for(i=0; i<possibles.length; i++)
	   sum += possibles[i].viewShare;
	
	var r = Math.floor(Math.random()*sum);
	
	for(i=0; i<possibles.length; i++)
	{
	   cum += possibles[i].viewShare;
	   if (cum > r)
       {
	        result = possibles[i];
	        break;
	   }
	}
	return result;	
}

function BannerMgr_Add( viewShare, imgSrc, ref, flashSrc, width, height, impressionUrl, bannerHtml)
{
	var banArray = this.banners; 
	var banObj = new Object();
	banObj.viewShare = viewShare;
	banObj.altText = "Click Here!";
	banObj.ref = ref;
	banObj.impressionUrl = (!impressionUrl ? "" : impressionUrl);
	banObj.bannerHtml = (!bannerHtml ? "" : bannerHtml);
	
	if (flashSrc && flashSrc != "")
	{
		banObj.flashSrc = "http://ads2.floridakeys.com/banners/"+flashSrc;
		banObj.imgSrc = "http://ads2.floridakeys.com/banners/banner0.gif";
	    if (isNumber(width)) 
		     banObj.width  = width; 
		else 
		     banObj.width=468;
		if (isNumber(height)) 
		    banObj.height = height; 
		else 
		    banObj.height=60;		 
	}	
	else
	{
		banObj.flashSrc = null;
		if (imgSrc.indexOf("http://") <0)
		    banObj.imgSrc = "http://ads2.floridakeys.com/banners/"+imgSrc;
                else
                     banObj.imgSrc = imgSrc;
	}
	banArray[banArray.length] = banObj;
}

function BannerMgr_WriteBanner()
{
	var htm = this.GetBannerHTML();
	document.write(htm);
}

function BannerMgr_GetBannerHTML()
{
    var htm = '';
	var banObj = this.GetBanner();
	if (banObj == null)
	{
	    htm = '<a  href="http://www.floridakeys.com/info" target="new">';
		htm += '<img src="http://ads2.floridakeys.com/banners/banner0.gif" ';
		htm += 'border=0></a>';
	    return htm;
	}
	
	if (banObj.bannerHtml != "")
	{
		htm = banObj.bannerHtml;
	}
	else
	{
		var ref = "http://ads2.floridakeys.com/getBanner/redirect.aspx?bc=" +banObj.ref;
		// 20080709 CEM Adding referrer
		ref += "&ref=" + location.href

		if (banObj.flashSrc && FlashInstalled())
		{
			htm = GetFlashHTML(banObj.flashSrc+"?link="+ref,banObj.width,banObj.height);
		}
		else
		{
			htm = '<a  href="' + ref + '" target="new">';
			htm += '<img src="' + banObj.imgSrc + '" ';
			htm += 'alt="' + banObj.altText + '" border=0 /></a>';
		}
	}
	
	htm += '<img src="http://ads2.floridakeys.com/getBanner/view.aspx?bc=' + banObj.ref + '" border=0 />';

	if (banObj.impressionUrl != "")
	{
		htm += '<img src="' + banObj.impressionUrl + '" width="1" height="1" border="0"/>';
	}
	
	return htm;
}

function BannerMgr()
{
	this.banners = new Array( );
	// Methods
	this.WriteBanner = BannerMgr_WriteBanner;
	this.Add = BannerMgr_Add;
	this.GetBanner = BannerMgr_GetBanner;
	this.GetBannerHTML = BannerMgr_GetBannerHTML;
}
