/**
基本功能：
1、JS卷帘广告特效，定时展开收缩广告，广告显示一定时间后自动关闭。
2、可设置显示时长，延迟时长，收展速度等参数。
3、可自定义广告展开前执行操作和广告收缩完成后执行操作。

使用示例：
var s = new slider('slideAd',3,1,10,90,3);
s.addafter(function(){alert("谢谢观看！");});

参数说明：
new slider(id, stay, delay, scrolldelay, MaxHeight, MinHeight);
id				'slideAd'	容器ID								(必选)
stay			[3]			显示时长								(可选，默认:3秒)
delay			[1]			延时，推迟展开						(可选，默认:1秒)
scrolldelay		[10]		停顿时间，值越小，收展速度越快			(可选，默认:10)

MaxHeight		[90]		容器最大高度，当广告展开到MaxHeight高度时停止展开		(可选，默认将容器完全展开)
MinHeight		[3]			容器最小高度，当广告收起到MinHeight高度时停止收起		(可选，默认:容器指定的height或0)

辅助功能：
addbefore - 添加广告展开前需要执行的操作，要求所传参数是function
addafter - 添加广告收缩完成后所需执行的操作，要求所传参数是function

演示地址：http://down.phper.org.cn/demo/slider/
下载地址：http://down.phper.org.cn/attach/slider.rar

说明：
程序制作/版权所有:phper(QQ:258284610) 网址：http://www.phper.org.cn
*/
function slider(id, stay, delay, scrolldelay)
{
	this.ID = document.getElementById(id);
	this.stay = typeof stay == "number" ? stay : 3;
	this.delay = typeof delay == "number" ? delay : 1;
	this.scrolldelay = typeof scrolldelay == "number" ? scrolldelay : 10;
	if(typeof arguments[5] == "number")
	{
		this.MinHeight = arguments[5];
	}
	else
	{
		if(this.ID.style.height)
		{
			this.MinHeight = this.ID.offsetHeight;
		}
		else
		{
			this.MinHeight = 0;
			this.ID.style.height = "0px";
		}
	}
	if(typeof arguments[4] == "number")
	{
		this.MaxHeight = arguments[4];
	}
	else
	{
		var _h = this.ID.offsetHeight;
		var _display = this.ID.style.display;
		this.ID.style.display = '';
		this.ID.style.visibility = 'hidden';
		this.ID.style.height = '';
		this.MaxHeight = this.ID.offsetHeight;
		this.ID.style.visibility = 'visible';
		this.ID.style.display = _display;
		this.ID.style.height = _h + 'px';
	}
	this.before = [];
	this.after = [];
	var intervalId = null;
	var a = this;
	
	function show()
	{
		try{ a.dobefore(); }catch(e){ }
		var h = a.ID.offsetHeight;
		a.ID.style.display = '';
		a.ID.style.height = (h + 1) + "px";
		if(a.ID.offsetHeight >= a.MaxHeight)
		{ 
			setTimeout(shut, a.stay * 1000);
		}
		else
		{
			setTimeout(show, a.scrolldelay); 
		}
	}
	
	function shut()
	{
		var h = a.ID.offsetHeight; 
		a.ID.style.height = (h - 1 < 0 ? 0 : h - 1) + "px";
		if (a.ID.offsetHeight <= a.MinHeight)
		{ 
			if(a.MinHeight == 0) a.ID.style.display = "none";
			try{
				a.doafter();
			}catch(e){
				
			}
		}
		else
		{
			setTimeout(shut, a.scrolldelay); 
		}
	}
	
	this.show = show;
	this.shut = shut;
	setTimeout(show, this.delay * 1000);
}

slider.prototype.addbefore = function(func)
{
	this.before.push(func);
}

slider.prototype.dobefore = function()
{
	for(var i = 0; i < this.before.length; i++)
	{
		this.before[i]();
	}
}

slider.prototype.addafter = function(func)
{
	this.after.push(func);
}

slider.prototype.doafter = function()
{
	for(var i = 0; i < this.after.length; i++)
	{
		this.after[i]();
	}
}
