var canoeSlimbanner = {};	

/* +--------------------------
   | properties
   +-------------------------- */
canoeSlimbanner._id           = '';
canoeSlimbanner._swf          = '';
canoeSlimbanner._height_open  = 0;
canoeSlimbanner._height_close = 0;
canoeSlimbanner._css          = '';
canoeSlimbanner._position     = 0;
canoeSlimbanner._opened       = false;
canoeSlimbanner._interval     = 0;





/* +----------------------------------------------------
   | private methods
   +---------------------------------------------------- */
/* +-------------------------
   | _generateHTML()
   +------------------------- */
canoeSlimbanner._generateHTML = function() {

	// add css
	var cssNode   = document.createElement('link');
	cssNode.type  = 'text/css';
	cssNode.rel   = 'stylesheet';
	cssNode.href  = canoeSlimbanner._css;
	cssNode.media = 'screen';
	document.getElementsByTagName("head")[0].appendChild(cssNode);

	// add html
	var object = (navigator.appVersion.indexOf("MSIE") != -1) ? 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' : 'type="application/x-shockwave-flash" data="'+canoeSlimbanner._swf+'"';
	return ''+
		'<div id="slimbanner">'+
		'	<object '+object+' id="slimbanner_swf">'+
		'		<param name="movie"             value="'+canoeSlimbanner._swf+'" />'+
		'		<param name="quality"           value="autohigh" />'+
		'		<param name="wmode"             value="transparent" />'+
		'		<param name="allowScriptAccess" value="always" />'+
		'	</object>'+
		'</div>'+
	'';
};

/* +-------------------------
   | _open()
   +------------------------- */
canoeSlimbanner._open = function() {
	canoeSlimbanner._position = canoeSlimbanner._height_close;
	canoeSlimbanner._interval = setInterval('canoeSlimbanner._do_open()',10);
};

/* +-------------------------
   | _do_open()
   +------------------------- */
canoeSlimbanner._do_open = function() {
	canoeSlimbanner._position += 10;	
	
	if (canoeSlimbanner._position >= canoeSlimbanner._height_open) {
		canoeSlimbanner._position = canoeSlimbanner._height_open;
		canoeSlimbanner._opened = true;
		clearInterval(canoeSlimbanner._interval);
		canoeSlimbanner._interval = false;
	}

	document.getElementById('slimbanner').style.height     = canoeSlimbanner._position+'px';
	document.getElementById('slimbanner_swf').style.height = canoeSlimbanner._position+'px';
};

/* +-------------------------
   | _do_close()
   +------------------------- */
canoeSlimbanner._do_close = function() {
	canoeSlimbanner._position -= 10;	
	
	if (canoeSlimbanner._position <= canoeSlimbanner._height_close) {
		canoeSlimbanner._position = canoeSlimbanner._height_close;
		canoeSlimbanner._opened = false;
		clearInterval(canoeSlimbanner._interval);
		canoeSlimbanner._interval = false;
	}

	document.getElementById('slimbanner').style.height     = canoeSlimbanner._position+'px';
	document.getElementById('slimbanner_swf').style.height = canoeSlimbanner._position+'px';
};





/* +----------------------------------------------------
   | public methods
   +---------------------------------------------------- */
/* +-------------------------
   | isOpened()
   +------------------------- */
canoeSlimbanner.isOpened = function() {
	return canoeSlimbanner._opened;
};

/* +-------------------------
   | getNbOpens()
   +------------------------- */
canoeSlimbanner.getNbOpens = function() {
	var cookie = document.cookie;
	var name   = 'canoeSlimbanner_'+canoeSlimbanner._id+'=';
	var begin  = cookie.toString().indexOf('; '+name);
	
	if (begin == -1) {
		begin = cookie.indexOf(name);
		if (begin != 0) { return null; }
	} else {
		begin += 2;
	}

	var end = cookie.indexOf(';', begin);
	if (end == -1) { end = cookie.length; }

	return unescape(cookie.substring(begin + name.length, end));
};

/* +-------------------------
   | setId(id)
   +------------------------- */
canoeSlimbanner.setId = function(id) {
	canoeSlimbanner._id = id;
	
	// value
	var nb = canoeSlimbanner.getNbOpens();
	nb = (nb) ? Number(nb)+1 : 1;

	// domain
	var domain_elements = document.domain.split('.');
	var domain = '.'+domain_elements[domain_elements.length-2]+'.'+domain_elements[domain_elements.length-1]

	// expire at the end of the day
	var expire = new Date();
	expire.setHours(23);
	expire.setMinutes(59);
	expire.setSeconds(59);
	expire.setTime(expire.getTime() - new Date(0).getTime());
	var date = expire.toGMTString();

	document.cookie = '' +
		'canoeSlimbanner_'+canoeSlimbanner._id+'='+nb+			
		'; expires=' +date+
		'; path=/'+
		'; domain='+domain+
	'';

};

/* +-------------------------
   | setCss(css)
   +------------------------- */
canoeSlimbanner.setCss = function(css) {
	canoeSlimbanner._css = css;
};

/* +-------------------------
   | setOpenedHeight(height)
   +------------------------- */
canoeSlimbanner.setOpenedHeight = function(height) {
	canoeSlimbanner._height_open = height;
};

/* +-------------------------
   | setClosedHeight(height)
   +------------------------- */
canoeSlimbanner.setClosedHeight = function(height) {
	canoeSlimbanner._height_close = height;
};

/* +-------------------------
   | setSwf(swf)
   +------------------------- */
canoeSlimbanner.setSwf = function(swf) {
	canoeSlimbanner._swf = swf;
};

/* +-------------------------
   | getHTML()
   +------------------------- */
canoeSlimbanner.getHTML = function() {
	return canoeSlimbanner._generateHTML();
};

/* +-------------------------
   | write()
   +------------------------- */
canoeSlimbanner.write = function() {
	document.write(canoeSlimbanner._generateHTML());
};




/* +-------------------------
   | open(timeout)
   +------------------------- */
canoeSlimbanner.open = function(timeout) {
	if (!canoeSlimbanner._interval && !canoeSlimbanner.isOpened()) {
		setTimeout('canoeSlimbanner._open()',(timeout) ? timeout : 0);
	}
	return false;
};

/* +-------------------------
   | close()
   +------------------------- */
canoeSlimbanner.close = function() {
	if (!canoeSlimbanner._interval && canoeSlimbanner.isOpened()) {
		canoeSlimbanner._position = canoeSlimbanner._height_open;
		canoeSlimbanner._interval = setInterval('canoeSlimbanner._do_close()',10);
	}
	return false;
};

/* +-------------------------
   | openOnLoad(timeout)
   +------------------------- */
canoeSlimbanner.openOnLoad = function(timeout) {
	timeout = (timeout) ? timeout : 0;
	
	if (window.addEventListener){
		eval("window.addEventListener('load', function() { canoeSlimbanner.open("+timeout+"); }, false);");
	} else if (window.attachEvent){
		eval("window.attachEvent('onload', function() { canoeSlimbanner.open("+timeout+"); });");
	}
	return false;
};

