/**
 * @author molezz(孤鹜) QQ13148960 msn:mole_zz@hotmail.com
 * @constructor ad class IE6.0+  firefox 1.5+
 * @version 1.3.1.0 beta
 * @since 1.3.0.0 beta  改进了产生随机ID的算法 L35
 */
function adManager(name){
	this.adPool=[]; //存放已添加的广告
	this.err='';    //错误控制
	this.pageWidth=958; //页面显示内容区域的宽度，当可视区减去广告占位小于此值时广告不显示
	typeof(name)=="string"?this.name=name:this.err="类初始化失败";	
	this.delay=0.08; //迟延系数
	this.locked=false; //setTimeout锁定
	var oTag=this;
	if (typeof document.attachEvent!='undefined') { //添加动作
	   window.attachEvent('onload',function(){oTag.showAd()});
	   window.attachEvent('onscroll',function(){oTag.changeAdPos()});
	   window.attachEvent('onresize',function(){oTag.changeAdPos()});	   
	}else{
	   window.addEventListener('load',function(){oTag.showAd()},false);
	   window.addEventListener('scroll',function(){oTag.changeAdPos()},false);
	   window.addEventListener('resize',function(){oTag.changeAdPos()},false);	  
	}; 
};
/*
 * x:距页面左右边框的距离
 * y:距页面上边框的距离
 * width:广告条的宽
 * height:广告条的高
 * content:广告条内容
 * adType：可选参数 表示广告类型: “both”，“left”，“right”,"top" ,默认为“left”
 * adStation：可选参数 表示广告浮动类型:“float”，“sleep”, 默认为“float”
 */
adManager.prototype.addAd=function(x,y,width,height,content){ 	
	var idRandom=this.name+"_n"+x+y+width+height+Math.random();
	var tX=isNaN(parseInt(x))?10:parseInt(x);
	var tY=isNaN(parseInt(y))?80:parseInt(y);
	if(typeof content!="string"){return ;}
	var adCont=content.split("|");	
	var args=this.addAd.arguments;
	var adType; //广告类型 
	var adStation; //广告位置
	if(typeof args[5]!="undefined"&&args[5]!=""){
		adType=args[5];
	}else{		
		adType="left";		
	};
	if(typeof args[6]!="undefined"&&args[6]!=""){
		adStation=args[6];
	}else{		
		adStation="sleep";		
	};
	var oDiv=document.createElement("div"); //创建外层div
	oDiv.id=idRandom;
	oDiv.style.height=(isNaN(parseInt(height))?80:parseInt(height))+"px";
	oDiv.style.overflow="hidden";	
	if(adType=="top"){
		oDiv.style.width="945px";
		oDiv.style.margin="0 auto";
		oDiv.style.position="relative";		
	}else{
		oDiv.style.position="absolute";
		oDiv.style.zIndex="10";
		oDiv.style.width=(isNaN(parseInt(width))?60:parseInt(width))+"px";		
		oDiv.style.left=tX+"px";
		if(adType=="right"){
			oDiv.style.left=document.documentElement.clientWidth-parseInt(width)-(isNaN(parseInt(x))?10:parseInt(x))-20+"px";
		};	
		oDiv.style.top=tY+"px";			
	};
	oDiv.style.border="1px solid #666";	
	oDiv.style.display="none";
	oDiv.innerHTML=adCont[0];	
	var newAd={object:oDiv,x:tX,y:tY,height:parseInt(oDiv.style.height),adType:adType,adStation:adStation};	
	if(adType=="both"){ //双侧帘幕广告，复制另一侧帘幕广告
		var oDiv2=oDiv.cloneNode(true);
		oDiv2.id=oDiv.id+"_copy";
		//滚动条宽为20px;
		var offSetX=(document.documentElement.clientWidth-parseInt(oDiv2.style.width)-tX-20)+"px";				
		oDiv2.style.left=offSetX;
		if(adCont.length>1){
			oDiv2.innerHTML=adCont[1];			
		}else{
			oDiv2.innerHTML=adCont[0];
		};		
		newAd.linkObj=oDiv2;
	}	
	this.adPool.push(newAd);	
};
adManager.prototype.showAd=function(){ //请在页面加载完毕后调用此函数
		var oTag=this;		
		var tPool=oTag.adPool;		
		var miniWidth; //显示广告的最小宽度
		oTag.pageWidth=(isNaN(oTag.pageWidth))?945:parseInt(oTag.pageWidth); //安全检查，防止pageWidth被错误赋值			
		if(!document.body){oTag.err+="|页面加载未完成";return false;}  //检查页面是否加载完毕		
		var oDoc=document.body;			
		//for (i=0;i<tPool.length;i++){ //将已有广告添加到文档
		for (i in tPool){			
			var tX=tPool[i].x;
			var tObj=tPool[i].object;
			var tLObj=tPool[i].linkObj;
			var tType=tPool[i].adType;			
			switch(tType){
				case "top":
					oDoc.insertBefore(tObj,oDoc.firstChild);
					tObj.style.height=0;
					tObj.style.display="none";					
					window.setTimeout(this.name+".smoothSpread('spread')",4000);
					break;
				case "left":
					oDoc.appendChild(tObj);
					miniWidth=document.documentElement.clientWidth-(tX+parseInt(tObj.style.width))*2;
					if(miniWidth>oTag.pageWidth){tObj.style.display="";}
					break;
				case "both":
					oDoc.appendChild(tObj);
					if(typeof tLObj!="undefined"){ oDoc.appendChild(tLObj);} //添加双侧帘幕广告的另一侧					
					miniWidth=document.documentElement.clientWidth-(tX+parseInt(tObj.style.width))*2;
					if(miniWidth>oTag.pageWidth){
						tObj.style.display="";
						if(typeof tLObj!="undefined"){
							tLObj.style.display="";
						}
					}
					break;
				case "right":
					oDoc.appendChild(tObj);
					miniWidth=document.documentElement.clientWidth-(tX+parseInt(tObj.style.width));
					if(miniWidth>oTag.pageWidth){tObj.style.display="";}
					break;
				default:		
				
			}			
			oTag.addCloseBtn(tObj);
			if(typeof tLObj!="undefined"){
				oTag.addCloseBtn(tLObj);
			}
		}; 	
};
adManager.prototype.changeAdPos=function(){ //调整广告位置				
		var tPool=this.adPool;		
		var endX=document.documentElement.clientWidth;
		var miniWidth;//显示广告的最小宽度					
		for(i=0;i<tPool.length;i++){
			if(tPool[i].adType!="left"){
				miniWidth=document.documentElement.clientWidth-(tPool[i].x+parseInt(tPool[i].object.style.width))*2;
			}else{
				miniWidth=document.documentElement.clientWidth-(tPool[i].x+parseInt(tPool[i].object.style.width));
			};			
			if(tPool[i].adStation=="float"&&tPool[i].adType!="top"){					
				if(miniWidth>this.pageWidth&&tPool[i].object.style.display!="none"){									
					tPool[i].object.style.display="";
					if(tPool[i].adType=="right"){
						tPool[i].object.style.left=(endX-parseInt(tPool[i].object.style.width)-parseInt(tPool[i].x)-3)+"px";
					};					
					if(typeof tPool[i].linkObj!="undefined"){
						tPool[i].linkObj.style.display="";
						tPool[i].linkObj.style.left=(endX-parseInt(tPool[i].linkObj.style.width)-parseInt(tPool[i].x)-3)+"px";
					};					
				}else{
					tPool[i].object.style.display="none";
					if(typeof tPool[i].linkObj!="undefined"){tPool[i].linkObj.style.display="none";};
				};			
			}else if(tPool[i].adStation=="sleep"&&tPool[i].adType!="top"){				
				if(miniWidth>this.pageWidth){					
					tPool[i].object.style.display="";
					if(typeof tPool[i].linkObj!="undefined"){tPool[i].linkObj.style.display="";}
				}else{
					//tPool[i].object.style.display="none";
					//if(typeof tPool[i].linkObj!="undefined"){tPool[i].linkObj.style.display="none";}
				};
			}else{
				continue;
			};			
			
		}
		if(!this.locked){
			window.setTimeout(this.name+".smoothPlay()",10);
			this.locked=true;
		};	
};
adManager.prototype.smoothPlay=function(){ //平滑滚动效果
		var tPool=this.adPool;
		var ifAllFinished=true; //确认是否所有广告条目已停止运动
		try{ //防止IE报错
			for(i=0;i<tPool.length;i++){
				if(tPool[i].adStation=="float"&&tPool[i].adType!="top"){
					var tOffSetTop=tPool[i].object.offsetTop;
					if(tOffSetTop!=(document.documentElement.scrollTop+tPool[i].y)) {
						ifAllFinished=false;
						var dy=(document.documentElement.scrollTop+tPool[i].y-tOffSetTop)*this.delay;
						dy=(dy>0?1:-1)*Math.ceil(Math.abs(dy));
						tPool[i].object.style.top=(tOffSetTop+dy)+"px";
						if(typeof tPool[i].linkObj!="undefined"){tPool[i].linkObj.style.top=(tOffSetTop+dy)+"px";};
					};
				};
			};
		}catch(e){
			//alert(e);
		};
		if(this.locked&&(!ifAllFinished)){
			window.setTimeout(this.name+".smoothPlay()",10);
		}else{
			this.locked=false;
		};
		
};
adManager.prototype.smoothSpread=function(control){
		if(typeof control=="undefined"){return;};
		var tPool=this.adPool;
		//if(typeof this.spread=="undefined"){
			this.spread="stop"; //控制展开阶段
		//}		
		var tHeight;
		if(control=="spread"){
			for(i=0;i<tPool.length;i++){
				if(tPool[i].adType=="top"){
					var finalHeight=tPool[i].height;
					tHeight=parseInt(tPool[i].object.style.height);
					if(tHeight<finalHeight){
						this.spread="spread";
						tPool[i].object.style.display="";
						tPool[i].object.style.height=(tHeight+Math.ceil((finalHeight-tHeight)/5))+"px";
					};
				};
			};
		}else if(control=="close"){
			for(i=0;i<tPool.length;i++){
				if(tPool[i].adType=="top"&&tPool[i].adStation!="sleep"){
					var finalHeight=tPool[i].height;
					tHeight=parseInt(tPool[i].object.style.height);
					if(tHeight>0&&tPool[i].object.style.display!="none"){
						this.spread="rollback";
						tPool[i].object.style.display="";
						tPool[i].object.style.height=(tHeight-Math.ceil(tHeight/2))+"px";
					}else{
						tPool[i].object.style.display="none";
					};
				};
			};
		};		
		if(this.spread=="spread"){
			window.setTimeout(this.name+".smoothSpread('spread')",10);
		}else if(this.spread=="stop"){
			window.setTimeout(this.name+".smoothSpread('close')",15000); //15000毫秒后开始关闭动作
		}else{
			window.setTimeout(this.name+".smoothSpread('close')",10);
		};		
};
adManager.prototype.addCloseBtn=function(obj){ //添加广告的关闭按钮
	if(typeof obj!="object"){return;};
	var oA=document.createElement("a");
	var oText=document.createTextNode("关闭");	
	oA.appendChild(oText);
	oA.setAttribute("href","javascript:"+this.name+".closeAds('"+obj.id+"');");	
	oA.style.display="block";
	oA.style.fontSize="12px";
	oA.style.color="#EEE";
	oA.style.width="30px";
	oA.style.height="14px";
	oA.style.background="#666";		
	oA.style.position="absolute";
	oA.style.zIndex=999;
	oA.style.top=0;
	oA.style.right=0;	
	obj.insertBefore(oA,obj.firstChild); 
};
adManager.prototype.closeAds=function(tagId){
	if(typeof tagId!="string"){return;}	;
	if(tagId.indexOf("_copy")>0){
		var oTag=document.getElementById(tagId.substr(0,tagId.indexOf("_copy")));
		var oTagLink=document.getElementById(tagId);
	}else{
		var oTag=document.getElementById(tagId);
		var oTagLink=document.getElementById(tagId+"_copy");		
	};	
	if(oTag!=null){
		oTag.style.display="none";
	};	
	if(oTagLink!=null){
		oTagLink.style.display="none";
	};
};































