﻿function Flash()				//还可以构造Image类，用于负责静态图片的显示
	{
		var flashEl;
		var contentHtml;
		var DivID;
				
		var generateHtml=function(width,height,flashUrl,DivIDOnly)
		{
			DivID=DivIDOnly;
		/*		
			contentHtml="<Div id=\""+DivID+"\""+">"
				+"<EMBED src=\""
				+flashUrl
				+"\" quality=high bgcolor=#FFFFFF WIDTH=\""
				+width
				+"\" HEIGHT=\""
				+height+"\""
				+"wmode=\"transparent\"" 
				+"\" "+"NAME=\"myMovieName\" ALIGN=\"\" TYPE=\"application/x-shockwave-flash\" "
				+"PLUGINSPAGE=\"http://www.macromedia.com/go/getflashplayer\"></EMBED>"
				+"</Div>";
		*/	
			
			contentHtml="<object id=\"Shockwaveflash9\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\""   
						+"codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab #version=7,0,19,0\""   
						+"height=\""+height+"\""
						+"title=\""+"MyFlash"+"\"" 
						+"viewastext=\""+""+"\""
						+"width=\""+width+"\"" 
						+"style=\"z-index:"+"-1"+";\">"  
						+"<param name=\"movie\" value=\""+flashUrl+"\"/>"   
						+"<param name=\"quality\" value=\"high\"/>"   
						+"<param name=\"wmode\" value=\"transparent\"/>"  
					+"<embed src=\""+flashUrl+"\""
					+"quality=\"high\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\""
					+"wmode=\"transparent\"" 			//wmode参数可以确保flash背景透明，从而使得其它的div可以在flash上显示！
					+"height=\""+height+"\""
					+"width=\""+width+"\">"
				+"</object>";
					
		};
			
		var createDom=function(container,DivIDOnly)
		{
			var jsonObj={'tag':'Div','id':DivIDOnly,'style':{'display':'none','z-index':'-1'},html:contentHtml};
			Ext.DomHelper.append(container,jsonObj);
			var id=""+DivID;
			flashEl=Ext.get(id);
		};
			
		this.initial=function(width,height,flashUrl,container,DivID)			//生成Div内的innerHTML，负责具体的显示；
		{		
			generateHtml(width,height,flashUrl,DivID);
			createDom(container,DivID);
				
		};
		
		this.show=function()
		{
			Ext.DomHelper.applyStyles(flashEl.dom,{"display":"block"});	
						
		};
		
		
		this.addAction=function(event,handle)		//在调用初始化函数initial之后即可调用！
		{
			flashEl.on(event,handle);
		};
		
		
		this.getEl=function()
		{
			return flashEl;
		};
	};
	
	
	/*Btn类：负责按钮部分*/
	function Btn()
	{
		var btnEl;
		var btnHtml;
		var DivID;
		
		var text="未定义";
		var fontSize="9pt";
		var fontFamily="Times New Roman";
		var fontColor="White";
		var fontWeight="bold";
				
		 var generateHtml=function()
		 {			
			btnHtml=text;
		 };
		 		
		 var createDom=function(width,height,container, DivIDOnly)
		 {
			DivID=DivIDOnly;
			
			var jsonObj={'tag':'Div','id':DivID,'style':{'display':'none','width':width,'height':height},html:btnHtml};
			Ext.DomHelper.append(container,jsonObj);
			var id=""+DivID;
			btnEl=Ext.get(id);
		 };
		 
		this.initial=function(width,height,btnText,divContainer,DivIDOnly,normalImageUrl,mouseonImageUrl,clickdownImageUrl)
		{		
			text=btnText;
			container=divContainer;
			generateHtml();
			createDom(width,height,container,DivIDOnly);
			addDefaultAction(normalImageUrl,mouseonImageUrl,clickdownImageUrl);
		};
		 
		this.show=function()
		{	
			/*设置text的css*/
			Ext.DomHelper.applyStyles(btnEl.dom,{'font-size':fontSize});	
			Ext.DomHelper.applyStyles(btnEl.dom,{'font-family':fontFamily});	
			Ext.DomHelper.applyStyles(btnEl.dom,{'color':fontColor});	
			Ext.DomHelper.applyStyles(btnEl.dom,{'font-weight':fontWeight});	
					
			Ext.DomHelper.applyStyles(btnEl.dom,{"display":"block"});
	
			
		};
				
		 var addDefaultAction=function(normalImageUrl,mouseonImageUrl,clickdownImageUrl)
		 {
			/*默认的按钮表现：鼠标与按钮交互时的各种背景设置*/
			Ext.DomHelper.applyStyles(btnEl.dom,{'background-image':'url('+normalImageUrl+')','background-repeat':'no-repeat'});
						
			btnEl.on('mouseover',onMouseOver, null,{'url':'"'+mouseonImageUrl+'"'});
			btnEl.on('mouseout',onMouseOut, null,{'url':'"'+normalImageUrl+'"'});
			btnEl.on('mousedown',onMouseDown, null,{'url':'"'+clickdownImageUrl+'"'});
					
		 };
	
		var changeBackground=function(imageUrl)
		{
			Ext.DomHelper.applyStyles(btnEl.dom,{'background-image':'url('+imageUrl+')','background-repeat':'no-repeat'});
		};
		var onMouseOver=function(ev, target, options)
		{
			changeBackground(options.url);
			Ext.DomHelper.applyStyles(btnEl.dom,{'cursor':'pointer'});
		};
		var onMouseOut=function(ev, target, options)
		{
			changeBackground(options.url);
		};
		var onMouseDown=function(ev, target, options)
		{
			changeBackground(options.url);
		};
		
	
		this.dispose=function()			//清除所有的listener
		{
			btnEl.purgeListeners();
		};
		
				
		/*public函数，对外接口*/
		this.addAction=function(event,handle)
		{
			btnEl.addListener(event, handle);			//不需要继承自Ext.util.Observable
		};
		this.setFontSize=function(fSize)
		{
			fontSize=fSize;
		};
		this.setFontFamily=function(fFamlily)
		{
			fontFamily=fFamlily;
		};
		this.setFontColor=function(fColor)
		{
			fontColor=fColor;
		};
		this.setFontWeight=function(fWeight)
		{	
			fontWeight=fWeight;
		};
		this.getEl=function()
		{
			return btnEl;
		};
		this.hide=function()
		{
			Ext.DomHelper.applyStyles(btnEl.dom,{'display':'none'});
		};
	};
	
	
	
	function InfoWnd()		
	{
	
		var container;
		
		var flash;
		var closeBtn;
		
					
		var wndHtml;
		var wndEl;
		var DivID;
		
		
		var cBtnWidth=52;
		var cBtnHeight=19;
		var cBtnText="Close";
		
		//var imgRootUrl;
	/*	var normalStateImage;
		var mouseOnStateImage;
		var clickDownStateIamage;
	*/	
		var normalStateImage="../MyCode/MyJs/FlashInfo/resources/image/normal.gif";
		var mouseOnStateImage="../MyCode/MyJs/FlashInfo/resources/image/mouseon.gif";
		var clickDownStateIamage="../MyCode/MyJs/FlashInfo/resources/image/click.gif";
		
		
		var flashWidth;
		var flashHeight;
		var flashUrl;
		
		
		var staticTime=5000;
		var getOutTime=300;
		var closeable=true;
		
		
		var generateHtml=function()
		{
			wndHtml="";
		};
		
		var createDom=function(container)
		{
			var jsonObj={'tag':'Div','id':DivID,'style':{'display':'none','position':'relative','width':flashWidth,'height':flashHeight,'overflow':'hidden','zoom':1},html:wndHtml};				//'overflow':'hidden','zoom':1参数是为了在flash消失后不影响网页原来的布局
			Ext.DomHelper.append(container,jsonObj);
			var id=""+DivID;
			wndEl=Ext.get(id);
		};	
		
		this.initial=function(width,height,flashUrl,divContainer,DivIDOnly)		//构造flashLayer和btnLayer的warapperDiv
		{	
			
			DivID=DivIDOnly;
			container=divContainer;
			
			flashWidth=width;
			flashHeight=height;
			
			generateHtml();
			createDom(container);
			
			flash=new Flash();
			flash.initial(flashWidth,flashHeight,flashUrl,wndEl.dom,777777777);			
			
			if(closeable==true)
			{
				closeBtn=new Btn();
				closeBtn.initial(cBtnWidth,cBtnHeight,cBtnText,wndEl.dom,99999999,normalStateImage,mouseOnStateImage,clickDownStateIamage);
				
				closeBtn.setFontSize("11pt");
				
				closeBtn.addAction('click', vanish);
			}
			
			
		};
		
		this.show=function()
		{				
			layOut();
			Ext.DomHelper.applyStyles(wndEl.dom,{"display":"block"});	
			
			flash.show();
			if(closeBtn!=undefined)
			{
				closeBtn.show();
			}
			
			if(staticTime>0)
			{
				setTimeout(animateOut,staticTime);
			};
		};
				
		var layOut=function()		
		{	
			
			if(closeBtn!=undefined)
			{
				Ext.DomHelper.applyStyles(closeBtn.getEl().dom,{'float':'right','position':'relative','top':-cBtnHeight,'right':0,'z-index':'100000'});
			}
			
		};
		
		
		
		var animateOut=function()
		{
		
			closeBtn.hide();
		/*	wndEl.fadeOut({ 
				callback:function()
				{
					Ext.DomHelper.applyStyles(wndEl.dom,{'display':'none'});
				},
				endOpacity: 0.4, 				//可以是0和1之间的任意值 
				easing: 'easeOut', 
				duration: getOutTime/1000
				}
			);*/
				wndEl.slideOut(
                    "t",//指定方向  "t"=top,"b"=buttom,"l"=left,"r"=right
                    {
                         easing: 'easeOut',//动画方式
                         duration: getOutTime/1000,//持续时间
                         remove: false,//false -不从DOM中删除,默认是设置该元素隐藏(visibility = 'hidden')
                                       //ture - 从DOM中删除该元素
                         useDisplay: true//还不太清楚可能是 是否显示该元素所占位置
                    }
                )//滑出效果	
					//alert("Zoom in begins!");
		/*	wndEl.scale(
				0,
				0, 
				{
					easing: 'easeOutStrong',
					duration: getOutTime/1000
				}
			);
			*/
		};
		var vanish=function()
		{
			Ext.DomHelper.applyStyles(wndEl.dom,{'display':'none'});
		};
		
		/*对于大多数情况下有相同值的参数，在类里设置具有相应默认值的变量，以减少外部传参的复杂性，同时提供结构，以供客户在需要修改默认值时调用*/
		this.setShowDuration=function(time)
		{
			staticTime=time;
		};
		this.setVanishDuration=function(time)
		{
			getOutTime=time;
		};
		this.setCloseBtn=function(isCloseable)
		{
			closeable=isCloseable;
		};
	};
	
	function InfoWndApp()
	{		
		var flashWnd;	
		
		this.initial=function(width,height,flashUrl,container)
		{					
			flashWnd=new InfoWnd();

			flashWnd.initial(width,height,flashUrl,container,6666666);	
		
		};
		
		this.run=function()
		{			
			flashWnd.show();
		};
		
		this.setShowDuration=function(time)
		{
			flashWnd.setShowDuration(time);
		};
		this.setVanishDuration=function(time)
		{
			flashWnd.setVanishDuration(time);
		};
		this.setCloseBtn=function(isCloseable)
		{
			flashWnd.setCloseBtn(isCloseable);
		};
	};
