function axisbanner_init(nid,nbanner,ntotal,ninterval) {
	//this will initialize a banner
	//get objects
	var banner = oniongetelement("axisbanner"+nid);
	var stack = oniongetelement("axisbanner"+nid+"_stack");
	var controls = oniongetelement("axisbanner"+nid+"_controls");
	
	//show controls
	controls.style.display = "block";
	
	//setup runtime values
	banner.axisbanner = new Object;
	banner.axisbanner.paused = false;
	banner.axisbanner.current = nbanner;
	banner.axisbanner.total = ntotal;
	banner.axisbanner.interval = ninterval;
	banner.axisbanner.fadeinterval = 10;
	banner.axisbanner.fadestep = 0.05;
	banner.axisbanner.fade = 1.0;
	
	//start timer for next banner
	banner.axisbanner.timer = setTimeout("axisbanner_intervalcheck('"+nid+"')",banner.axisbanner.interval);
}

function axisbanner_next(nid,nfade) {
	//get objects
	var banner = oniongetelement("axisbanner"+nid);
	var stack = oniongetelement("axisbanner"+nid+"_stack");
	var controls = oniongetelement("axisbanner"+nid+"_controls");
	
	var nextbanner = banner.axisbanner.current+1;
	if (nextbanner > banner.axisbanner.total-1) { nextbanner = 0; }
	
	//stop any existing timer
	if (banner.axisbanner.timer != false) {
		clearTimeout(banner.axisbanner.timer);
		banner.axisbanner.timer = false;
	}

	//get banners from stack
	var bannernew = oniongetelement("axisbanner"+nid+"_banner"+nextbanner);
	var bannerold = oniongetelement("axisbanner"+nid+"_banner"+banner.axisbanner.current);
	
	//check mode
	if (nfade == false) {
		//instant swap
		//move new banner to top of stack
		axisbanner_setalpha(bannernew,1.0);
		stack.appendChild(bannernew);
		
		//start new interval timer
		banner.axisbanner.timer = setTimeout("axisbanner_intervalcheck('"+nid+"')",banner.axisbanner.interval);
	} else {
		//fade swap
		//move new banner to top of stack
		banner.axisbanner.fade = 0.0;
		axisbanner_setalpha(bannernew,banner.axisbanner.fade);
		stack.appendChild(bannernew);
		
		//start new interval timer
		banner.axisbanner.timer = setTimeout("axisbanner_fadeupdate('"+nid+"')",banner.axisbanner.fadeinterval);
	}
	
	//update runtime values
	banner.axisbanner.current = nextbanner;
}

function axisbanner_prev(nid,nfade) {
	//get objects
	var banner = oniongetelement("axisbanner"+nid);
	var stack = oniongetelement("axisbanner"+nid+"_stack");
	var controls = oniongetelement("axisbanner"+nid+"_controls");
	
	var nextbanner = banner.axisbanner.current-1;
	if (nextbanner < 0) { nextbanner = banner.axisbanner.total-1; }
	
	//stop any existing timer
	if (banner.axisbanner.timer != false) {
		clearTimeout(banner.axisbanner.timer);
		banner.axisbanner.timer = false;
	}

	//get banners from stack
	var bannernew = oniongetelement("axisbanner"+nid+"_banner"+nextbanner);
	var bannerold = oniongetelement("axisbanner"+nid+"_banner"+banner.axisbanner.current);
	
	//check mode
	if (nfade == false) {
		//instant swap
		//move new banner to top of stack
		axisbanner_setalpha(bannernew,1.0);
		stack.appendChild(bannernew);
		
		//start new interval timer
		banner.axisbanner.timer = setTimeout("axisbanner_intervalcheck('"+nid+"')",banner.axisbanner.interval);
	} else {
		//fade swap
		//move new banner to top of stack
		banner.axisbanner.fade = 0.0;
		axisbanner_setalpha(bannernew,banner.axisbanner.fade);
		stack.appendChild(bannernew);
		
		//start new interval timer
		banner.axisbanner.timer = setTimeout("axisbanner_fadeupdate('"+nid+"')",banner.axisbanner.fadeinterval);
	}
	
	//update runtime values
	banner.axisbanner.current = nextbanner;
}

function axisbanner_intervalcheck(nid) {
	//this will check to see if it is time to fade to next
	//get objects
	var banner = oniongetelement("axisbanner"+nid);
	var stack = oniongetelement("axisbanner"+nid+"_stack");
	var controls = oniongetelement("axisbanner"+nid+"_controls");
	
	if (banner.axisbanner.paused == true) {
		//restart interval check
		banner.axisbanner.timer = setTimeout("axisbanner_intervalcheck('"+nid+"')",500);
	} else {
		//fade to next
		axisbanner_next(nid,true);
	}
}

function axisbanner_fadeupdate(nid) {
	//get objects
	var banner = oniongetelement("axisbanner"+nid);
	var stack = oniongetelement("axisbanner"+nid+"_stack");
	var controls = oniongetelement("axisbanner"+nid+"_controls");
	var currentbanner = oniongetelement("axisbanner"+nid+"_banner"+banner.axisbanner.current);
	
	//increase alpha
	banner.axisbanner.fade += banner.axisbanner.fadestep;
	
	//check mode of fade
	if (banner.axisbanner.fade >= 1.0) {
		//end of fade
		banner.axisbanner.fade = 1.0;
		banner.axisbanner.timer = setTimeout("axisbanner_intervalcheck('"+nid+"')",banner.axisbanner.interval);
	} else {
		//continue fade
		banner.axisbanner.timer = setTimeout("axisbanner_fadeupdate('"+nid+"')",banner.axisbanner.fadeinterval);
	}
	
	//update banner
	axisbanner_setalpha(currentbanner,banner.axisbanner.fade);
}

function axisbanner_setalpha(nobject,nalpha) {
	//change alpha
	if (nobject.style) {
		if (nobject.style.MozOpacity!=null) {  
			/* Mozilla's pre-CSS3 proprietary rule */
			nobject.style.MozOpacity = nalpha;
		} else if (nobject.style.opacity!=null) {
			/* CSS3 compatible */
			nobject.style.opacity = nalpha;
		} else if (nobject.style.filter!=null) {
			/* IE's proprietary filter */
			nobject.style.filter = "alpha(opacity="+(nalpha*100.0)+")";
		}
	}
}

function axisbanner_onmouseover(nid) {
	//get objects
	var banner = oniongetelement("axisbanner"+nid);
	var stack = oniongetelement("axisbanner"+nid+"_stack");
	var controls = oniongetelement("axisbanner"+nid+"_controls");
	
	banner.axisbanner.paused = true;
}

function axisbanner_onmouseout(nid) {
	//get objects
	var banner = oniongetelement("axisbanner"+nid);
	var stack = oniongetelement("axisbanner"+nid+"_stack");
	var controls = oniongetelement("axisbanner"+nid+"_controls");
	
	banner.axisbanner.paused = false;
}
