function AnimateAd(animateId,isHorizontal,maxStep,originBeginFlag,originEndFlag,duration,perStepPx,atFirstFun,atLastFun,removeBackFun){
	this.animateId = animateId;
	this.isHorizontal = isHorizontal;
	this.isPositiveMove = true;
	this.maxStep = maxStep;
	this.originBeginFlag = originBeginFlag;
	this.originEndFlag = originEndFlag;
	this.duration = duration;
	this.beginFlag = originBeginFlag;
	this.endFlag = originEndFlag;
	this.perStepPx = perStepPx;
	this.cssName = isHorizontal ? "left" : "top" ;
	this.atFirstFun = atFirstFun ;
	this.atLastFun = atLastFun ;
	this.hasChange = false;
	this.removeBackFun = removeBackFun;
};

AnimateAd.prototype.resetFun = function(resetBeginFlag,resetEndFlag,resetPosition,resetMaxStep){
	this.beginFlag = resetBeginFlag;
	this.endFlag = resetEndFlag;
	$("#"+this.animateId).css(this.cssName,resetPosition);
	this.hasChange = false;
	this.maxStep = resetMaxStep;
};

AnimateAd.prototype.doAnimateFun = function(){
	var newPosition = 0;
	var oldPosition = $("#"+this.animateId).css(this.cssName);
	oldPosition = parseInt(oldPosition.substring(0,oldPosition.length - 2));
	if(this.isPositiveMove){
		if(this.beginFlag <= 1){
			return;			
		}else{
		   newPosition = oldPosition + this.perStepPx;
		   this.endFlag--;
		   this.beginFlag--;		  
		}
	}else{		
		if(this.endFlag >= this.maxStep){
			return;			
		}
		newPosition = oldPosition - this.perStepPx;
		this.endFlag++;
	    this.beginFlag++;	   
	}	
	var tempDuration = this.duration;
	var properties = null;
	if(this.cssName == "left"){
		properties = {left:newPosition};
	}else if(this.cssName == "top"){
		properties = {top:newPosition};
	}	
	$("#"+this.animateId).animate(properties,tempDuration,"swing");	
	this.hasChange = true;
	if(this.removeBackFun){
		this.removeBackFun.call(this,this.beginFlag,this.endFlag,this.maxStep);
	}
	
	if(this.beginFlag <= 1){
		if(this.atFirstFun ){			
			this.atFirstFun.call(this);
			return;
		}
	}	
	if(this.endFlag >= this.maxStep){
		if(this.atLastFun){
			this.atLastFun.call(this);
			return;
		}
	}
};

AnimateAd.prototype.positiveMoveFun = function(){
	this.isPositiveMove = true;
	this.doAnimateFun();
};
AnimateAd.prototype.negativeMoveFun = function(){
	this.isPositiveMove = false;
	this.doAnimateFun();
};