/* ======================================================
 * 程序名: xc_SlidingAds  xc滑动广告类
 * 当前版本: v0.0.3
 * 作者: xiaoc
 * 联系邮件: [email]calmer91#gmail.com[/email]
 * QQ: 77497426
 * 最后更新: 2009-1-7
 * 使用方法: new xc_SlidingAds(objID,scrollSpeed);  objID为浮动层的ID,scrollSpeed滑动延时时间(数字越小,停留延时越短)
    例:new  xc_SlidingAds("obj1")  或  new  xc_SlidingAds("obj1",62)
 * 此段注释不影响使用.
 * 演示地址 http://www.desdiy.com/demo/xc_SlidingAds/
 * =======================================================
 */
function xc_SlidingAds(objID,scrollSpeed)
{
	var base=this;
	if(!objID)return;
	this.scrollSpeed=scrollSpeed;
	if(scrollSpeed==null)this.scrollSpeed=55;
	this.objID=document.getElementById(objID);
	this.objID.style.marginTop=this.objID.offsetTop+"px";
	this.objID.style.top="0px";
	this.timer1=null;
	if (window.addEventListener) {
        window.addEventListener("scroll", function(){base.bind()}, false);
    } else if (window.attachEvent) {
        window.attachEvent("onscroll", function(){base.bind()});
    } else {
        window["onscroll"] = function(){base.bind()};
    }
	
}

xc_SlidingAds.prototype.bind=function()
{
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
currentTop=parseInt(this.objID.style.top);
if(currentTop<scrollTop)this.scrollto(scrollTop,currentTop,1,"down");
if(currentTop>scrollTop)this.scrollto(scrollTop,currentTop,1,"up");
}

xc_SlidingAds.prototype.scrollto=function(topNum,btopNum,i,direction)
{
	var objBase=this;
	clearTimeout(this.timer1);
	if(this.scrollSpeed==0){this.objID.style.top=topNum;return }
  	currentTop=parseInt(this.objID.style.top);
	if(currentTop<topNum&&direction=="down"){
		this.timer1=setTimeout(function(){t=objBase.Sine.easeOut(i++,btopNum,topNum-btopNum,Math.ceil(objBase.scrollSpeed/2));objBase.objID.style.top=t+"px";objBase.scrollto(topNum,btopNum,i,"down");},25);
	}
	
	if(currentTop>topNum&&direction=="up"){
		this.timer1=setTimeout(function(){t=objBase.Sine.easeIn(i++,btopNum,topNum-btopNum,Math.ceil(objBase.scrollSpeed/2));objBase.objID.style.top=t+"px";objBase.scrollto(topNum,btopNum,i,"up");},25);
	}
	
}

xc_SlidingAds.prototype.Sine={
	easeIn: function(t,b,c,d){
	 return -c * Math.cos(t/d * (Math.PI/2)) + c + b;},
	easeOut: function(t,b,c,d){
		return c * Math.sin(t/d * (Math.PI/2)) + b;},
	easeInOut: function(t,b,c,d){
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;}
}

