﻿/*
幻灯片
1.0
*/
var MySV=null;
function SlideView(container,menuCtn,width,height,cssMenuOut,cssMenuOver,cssMenuSeparator)
{
	MySV=this;
	this.Images=new Array();
	this.Links=new Array();
	this.AutoEnable=true;
	this.Width=width;
	this.Height=height;
	this.Container=container;
	this.MenuCtn=menuCtn;
	this.CssMenuOut=cssMenuOut;
	this.CssMenuOver=cssMenuOver;
	this.CssMenuSeparator=cssMenuSeparator;
	this.CurItem=null;
	this.NextItem=null;
	
//	this.Image=null;
//	this.Link=null;
	this.CurrentIndex=-1;
	this.MinOpacity=0;
	this.Scale=10;
	this.Delay=50;
	this.Opacity=100;
	this.AutoDelay=4000;
	this.TimeHandler=null;
	this.AutoHandler=null;
	
	this.Init=SlideView_Init;
	this.AddImage=SlideView_AddImage;
	this.Show=SlideView_Show;
	this.ShadowUp=SlideView_ShadowUp;
	this.ShadowDown=SlideView_ShadowDown;
	this.Auto=SlideView_Auto;
	this.AutoAction=SlideView_AutoAction;
	this.StopAuto=SlideView_StopAuto;
	this.OnMenuOver=SlideView_OnMenuOver;
	this.OnMenuOut=SlideView_OnMenuOut;
	this.BuildItem=SlideView_BuildItem;
	this.GetCurItem=SlideView_GetCurItem;
	this.GetNextItem=SlideView_GetNextItem;
}

function SlideView_Init()
{
	var ctn=document.getElementById(this.Container);
	var mCtn=document.getElementById(this.MenuCtn);
	if(!ctn || !mCtn)
	{
		alert('SlideView的Container不存在');
		return;
	}
	if(this.Images.length==0)
		return;

	this.CurrentIndex=0;
	
	var menuCtn=document.createElement('ul');
	menuCtn.style.margin='0';
	menuCtn.style.padding='0';
	menuCtn.style.clear='both';
	menuCtn.style.height='20px';
	var str='';
	for(var i=0;i<this.Images.length;i++)
	{
		this.BuildItem(i);
		if(i>0)
			str+='<li style="float:left;" class="'+this.CssMenuSeparator+'">&nbsp;</li>';
		str+='<li id="SVMenu_'+i+'" style="float:left;" class="'+this.CssMenuOut+'" onmouseover="MySV.OnMenuOver('+i+')" onmouseout="MySV.OnMenuOut()">'+(i+1)+'</li>';
	}
	menuCtn.innerHTML=str;
	
	mCtn.appendChild(menuCtn);
	
	this.CurItem=this.GetCurItem();
	this.NextItem=this.GetNextItem();
	
	//alert(this.CurrentIndex);
	//alert(this.NextItem);
	
	this.CurItem.style.display='block';
	this.CurItem.style.zIndex=2;
	this.NextItem.style.display='block';
	this.NextItem.style.zIndex=1;
	
	document.getElementById('SVMenu_'+this.CurrentIndex).className=this.CssMenuOver;
	
	//alert(ctn.innerHTML);
	
	this.Show(0);
	this.Auto();
}

function SlideView_BuildItem(index)
{
	var ctn=document.getElementById(this.Container);
	var itemCtn,img,a;
	itemCtn=document.createElement('div');
	img=document.createElement('img');
	a=document.createElement('a');
	//ctn.style.position='absolute';
	itemCtn.id='SlideViewItem_'+index;
	itemCtn.style.display='none';
	itemCtn.style.position='absolute';
	itemCtn.style.left='0px';
	itemCtn.style.top='0px';
	
	img.src=this.Images[index];
	img.id='SlideViewImg_'+index;
	img.width=this.Width;
	img.height=this.Height;
	AddEventHandler(img,'mouseover',function(){MySV.StopAuto()});
	AddEventHandler(img,'mouseout',function(){MySV.Auto()});
	
	a.target='_blank';
	a.id='SlideViewImg_'+index;
	a.href=this.Links[index];
	
	ctn.appendChild(itemCtn);
	itemCtn.appendChild(a);
	a.appendChild(img);
}

function SlideView_AddImage(image,url)
{
	var index=this.Images.length;
	this.Images[index]=image;
	this.Links[index]=url;
}

function SlideView_Auto()
{
	//alert('auto');
	if(!this.AutoEnable)
		return;
	
	this.AutoHandler=setTimeout('MySV.AutoAction()',this.AutoDelay);
}

function SlideView_AutoAction()
{
	var index=0;
	if(this.CurrentIndex<0)
		index=0;
	index=this.CurrentIndex+1;
	if(index>this.Images.length-1)
		index=0;
	this.Show(index);
	this.Auto();
}

function SlideView_StopAuto()
{
	if(this.AutoHandler)
		clearTimeout(this.AutoHandler);
	//alert('stop');
}

function SlideView_OnMenuOver(index)
{
	this.StopAuto();
	this.AutoEnable=false;
	this.Show(index);
}

function SlideView_OnMenuOut()
{
	this.AutoEnable=true;
}

function SlideView_Show(index)
{
	var IE=document.all?true:false;
	if(this.CurrentIndex==index)
		return;
	if(this.TimeHandler)
		window.clearTimeout(this.TimeHandler);
	var curMenu,newMenu;
	if(this.CurrentIndex<0 || this.CurrentIndex>=this.Images.length)
		curMenu=null;
	else
		curMenu=document.getElementById('SVMenu_'+this.CurrentIndex);
	newMenu=document.getElementById('SVMenu_'+index);
	//alert(!curMenu);
	//alert(index);
	if(curMenu)
		curMenu.className=this.CssMenuOut;
	newMenu.className=this.CssMenuOver;
	
	//this.CurItem=this.GetCurItem();
	this.NextItem=document.getElementById('SlideViewItem_'+index);
	//alert(this.NextItem);
	this.NextItem.style.zIndex=1;
	this.NextItem.style.display='block';
	
	this.CurrentIndex=index;
	this.Opacity=100;
	this.ShadowDown();
}

function SlideView_GetCurItem()
{
	return document.getElementById('SlideViewItem_'+this.CurrentIndex);
}

function SlideView_GetNextItem()
{
	var index=this.CurrentIndex;
	//alert(index);
	if(index<this.Images.length-1)
	{
		return document.getElementById('SlideViewItem_'+(index+1));
	}
	else
		return document.getElementById('SlideViewItem_0');
}

function SlideView_ShadowDown()
{
	var IE=document.all?true:false;
	var img=this.CurItem.childNodes[0].childNodes[0];
	this.Opacity=this.Opacity-this.Scale;
	if(this.Opacity<=this.MinOpacity)
		this.Opacity=this.MinOpacity;
	if(IE)
		img.style.filter='alpha(opacity='+this.Opacity+')';
	else
		img.style.opacity=this.Opacity/100;
		
	//alert(this.Opacity);
	
	//alert('Down:\nopacity='+this.Opacity+'\nindex='+this.CurrentIndex);
	
	if(this.Opacity<=this.MinOpacity)
	{
		var nextItem=this.NextItem;
		var curItem=this.CurItem;
		nextItem.style.zIndex=2;
		curItem.style.zIndex=0;
		curItem.style.display='none';
		this.CurItem=this.NextItem;
		this.Opacity=100;
		
		if(IE)
			img.style.filter='alpha(opacity='+this.Opacity+')';
		else
			img.style.opacity=this.Opacity/100;
		
		//this.TimeHandler=setTimeout('MySV.ShadowUp()',this.Delay);
	}
	else
		this.TimeHandler=setTimeout('MySV.ShadowDown()',this.Delay);
}

function SlideView_ShadowUp()
{
	var IE=document.all?true:false;
	var img=this.Image;
	if(this.CurrentIndex<0 || this.CurrentIndex>=this.Images.length)
		this.CurrentIndex=0;
	if(this.Opacity<=this.MinOpacity)
	{
		img.src=this.Images[this.CurrentIndex];
		this.Link.href=this.Links[this.CurrentIndex];
	}
	this.Opacity=this.Opacity+this.Scale;
	if(this.Opacity>100)
		this.Opacity=100;
	if(IE)
		img.style.filter='alpha(opacity='+this.Opacity+')';
	else
		img.style.opacity=this.Opacity/100;
	//alert('Up:\nopacity='+this.Opacity+'\nindex='+this.CurrentIndex);
	if(this.Opacity>=100)
		return;
	this.TimeHandler=setTimeout('MySV.ShadowUp()',this.Delay);
}
