/* -------------------------------------------------------------------------- */
/** 
 *    @fileoverview
 *       auto revising position of the footer area.
 *
 *    @version rev001.2007-06-26
 *    @requires common.js
 */
/* -------------------------------------------------------------------------- */

var BANA_FOOTER_POS_REVISE;



/* -------------------- Constructor : BANAFooterPosRevise -------------------- */

function BANAFooterPosRevise() {
	this.controlNodeID = 'endof-content-area';
	this.footerNodeID  = 'footer-area';
	this.controlNode   = null;
	this.footerNode    = null;
	this.currentOffset = 0;
	this.reviseTimer   = null;
}

BANAFooterPosRevise.prototype.init = function() {
	if (BA.ua.isOpera) return;

	var sheet = document.styleSheets[0];
	var rule  = '{ visibility: hidden }';
	[this.controlNodeID, this.footerNodeID].forEach(function(id) {
		var seltxt = '#' + id;
		if (BA.ua.isSafari) {
			// Safari
			var style = new BATag('style', { type : 'text/css' });
			style.appendChildBA(seltxt + rule);
			document.write(style.toString());
		} else if (sheet.insertRule) {
			// Std DOM. (opera causes crash)
			sheet.insertRule(seltxt + rule, sheet.cssRules.length);
		} else if (sheet.addRule) {
			// IE
			sheet.addRule(seltxt, rule);
		}
	});
}

BANAFooterPosRevise.prototype.startAutoRevise = function() {
	this.controlNode = document.getElementByIdBA(this.controlNodeID);
	this.footerNode  = document.getElementByIdBA(this.footerNodeID );

	window.addEventListenerBA('resize', this.revise, this);
	new BASetInterval(this.revise, 1000, this);
	this.revise();
	this.showFooter();
}

BANAFooterPosRevise.prototype.showFooter = function() {
	this.controlNode.style.visibility = 
	this.footerNode .style.visibility = 'visible';
}

BANAFooterPosRevise.prototype.hideFooter = function() {
	this.controlNode.style.visibility = 
	this.footerNode .style.visibility = 'hidden';
}

BANAFooterPosRevise.prototype.getOffset = function() {
	return this.currentOffset;
}

BANAFooterPosRevise.prototype.setOffset = function(offsetY) {
	if (typeof offsetY != 'number' || offsetY < 0) {
		offsetY = 0;
	}
	this.controlNode.style.top = 
	this.footerNode .style.top = offsetY + 'px';
	this.currentOffset = offsetY;
}


BANAFooterPosRevise.prototype.revise = function() {
	var geom = BAGetGeometry();
	var fBtm = this.footerNode.getAbsoluteOffsetBA().Y + this.footerNode.offsetHeight;
	var rev  = (BA.ua.isIE && BA.ua.revision < 7) ? -3 : -1;
	this.setOffset(this.getOffset() + geom.windowH - fBtm + rev);
}

BANAFooterPosRevise.prototype.unrevise = function() {
	this.setOffset(0);
}







/* -------------------- Main : register start-up -------------------- */

if (typeof BA == 'object' && BA.ua.DOMok) {
	BANA_FOOTER_POS_REVISE = new BANAFooterPosRevise();
	BANA_FOOTER_POS_REVISE.init();
	BAAddOnload(function() {
		BANA_FOOTER_POS_REVISE.startAutoRevise();
	});
}
