
var appname       = navigator.appName;
var appversion    = parseInt(navigator.appVersion);
var returnColumn  = 1;

// Need to set the expiration date of the cookies to midnight of the
// next day.  So if the user opens the gateway page today, the cookies
// will expire at midnight.
var today = new Date();
var tomorrow = new Date();

tomorrow.setDate(today.getDate()+1);
tomorrow.setHours(0);
tomorrow.setMinutes(0);
tomorrow.setSeconds(1);

// Build the object tag and document.write the variable from the page.
var bannerValue = MAIN_FLASH_FILE +
				  "?banner1num=" + beginRotation(1,BANNER_COLUMN_1) +
				  "&banner2num=" + beginRotation(2,BANNER_COLUMN_2) +
				  "&banner3num=" + beginRotation(3,BANNER_COLUMN_3) +
				  "&banner4num=" + beginRotation(4,BANNER_COLUMN_4) +
				  "&returning=" + returning();

var flashObjectString = "<object classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0 width=\"750\" height=\"310\"><param name=\"movie\" value=\"" + bannerValue + "\"><param name=\"quality\" value=\"high\"><embed src=\"" + bannerValue + "\" quality=\"high\" pluginspage=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"750\" height=\"310\"></embed></object>";


function returning()
{
	if(getCookieValue("returning", "1") == "1")
	{
		return 1;
	}
	else
	{	
		setCookieValue("returning","1",tomorrow);
		return 0;
	}
}


/**
 *  Determines which method to use to display banners depending on
 *  the browser's capability of handling cookies.
 *  Returns the column number to display.
 */
function beginRotation(columnNumber,bannerLimit) {

	// First check if banner limit is only 1.  If so, it's not
	// necessary to continue setting cookies, etc..
	if( bannerLimit == 1 ) {
		return 1;
	}

	if( cookiesEnabled() ) {
		return orderedRotation(columnNumber,bannerLimit);
	} else {
		return randomRotation(columnNumber,bannerLimit);
	}
}


/**
 *  If browser's cookie functionality is turned ON then disply
 *  the banners in an orderly fashion for each banner column.  After
 *  a day has passed since the user has opened the gateway page, the
 *  cookies must be deleted so the first row of banners display again.
 */
function orderedRotation(columnNumber,bannerLimit) {

	// Each column number receives a cookie name (ie. column1, column2, etc).
	var cookieName = "column" + columnNumber;

	if( checkCookie(cookieName) ) {
 		returnColumn = getCookieValue(cookieName);
		returnColumn = parseInt(returnColumn) + 1;
	} else {
		setCookieValue(cookieName,returnColumn,tomorrow);
	}

	if( returnColumn > bannerLimit ) {
		returnColumn = 1;
		setCookieValue(cookieName,returnColumn,tomorrow);
	} else {
		setCookieValue(cookieName,returnColumn,tomorrow);
	}
	return returnColumn;
}


/**
 *  If browser's cookie functionality is turned off then randomly display
 *  the banners for each column.
 */
function randomRotation(columnNumber,bannerLimit) {
	var bannerArray  = new Array(bannerLimit);
	var randomNbr;
	var x = 0;
	var y = 0;

	// Determine the method of randomizing depending on browser platform.
	if (appname.toUpperCase() == "NETSCAPE" && appversion >= 3){
		randomNbr = Math.random();
	}
	else {
		randomNbr = RandomNumber(columnNumber);
	}

	// Dynamically build the array.
	for(z = 0; z <= bannerLimit; z++) {
		if( z == 0 ) {
			bannerArray[z] = bannerLimit;
		}
		bannerArray[z] = z;
	}

	y = 1 / bannerLimit;
	for(x = 1; x <= bannerLimit; x++) {
		if ( randomNbr > (bannerLimit - x) * y ) {
			returnColumn = bannerArray[x];
			break;
		}
	}
	return returnColumn;
}


/**
 *  Used to determine random number for IE browsers.
 */
function RandomNumber(column) {
  var today = new Date();
  var num= Math.abs(Math.sin(today.getTime()/1000+column));
  return num;
}
