﻿//该插件对html的基本要求<tag id="flash"><dt></dt><dd></dd></tag>
//大小图以，路径|路径|路径的形式传入
//大小图的数量必须相等
//参数hover_class为<dt></dt>子节点mouseover时要添加的class
//前台调用方法$("$flash").flash_init(params...);

$(function(){
    $.fn.extend({
	    flash_init:function(bigImg,smallImg,links,hover_class){
		    //数据成员部分
			var bImg=new Array();    //大图路径数组
			var sImg=new Array();    //小图路径数组
			var alinks=new Array();    //链接路径数组
			var hc=hover_class?hover_class:"";    //指示类
			var pos=0;    //指示位置
			var pelem=this;    //flash的DOM对象
			var i,j;    //普通下标变量
			
			var arr_tmp=bigImg.split("|");
			for(i=0,j=0;i<arr_tmp.length;i++)
				if(arr_tmp[i]) bImg[j++]=arr_tmp[i];
			arr_tmp=smallImg.split("|");
			for(i=0,j=0;i<arr_tmp.length;i++)
				if(arr_tmp[i]) sImg[j++]=arr_tmp[i];
			alinks=links.split("|");
			
			//函数成员部分
			this.m_test=function(){    //进行必要的初始化前检查
				with($(pelem))
				{
				    if(size()<=0) {date("error","没有flash成员");return false;}
				    if(attr("id")!="flash") {data("error","引用的成员不是flash成员");return false;}
				    if(children("dt").size()!=1) {data("error","flash成员的html结构不对");return false;}
					if(children("dd").size()!=1) {data("error","flash成员的html结构不对");return false;}
					if(bImg.length<=0 || sImg.length<=0) {data("error","没有图片");return false;}
					if(bImg.length!=sImg.length) {data("error","大小图数量不相等");return false;}
				}
				return true;
			};
			this.m_init=function(){    //插件初始化
			    with($(pelem))
				{
			        data("pos",0);
					children("dd,dt").empty();
					//加载小图
					for(i=0;i<sImg.length;i++) children("dt").append('<a href="#" rel="'+i+'"><img src="'+sImg[i]+'" /></a>');
					children("dt").children("a").eq(0).addClass(hc);
					//加载大图
					for(i=0;i<bImg.length;i++) children("dd").append('<a href="'+alinks[i]+'" rel="'+i+'" target="_blank"><img src="'+bImg[i]+'" /></a>');
					children("dd").children("a").hide().eq(0).show();
				}
			};
			this.m_move=function(pos){    //显示页面
			    with($(pelem))
				{
				    var old_pos=data("pos");
					old_pos=parseInt(old_pos);
					pos=parseInt(pos);
					data("pos",pos);
					children("dt").children("a").eq(old_pos).removeClass(hc);
					children("dt").children("a").eq(pos).addClass(hc);
					children("dd").children("a").eq(old_pos).hide();
					children("dd").children("a").eq(pos).fadeIn("slow");
				}
			};
			this.m_report_error=function(){    //错误报告
		        alert($(pelem).data("error"));
			};
			
			//添加函数成员列表
			with($(pelem))
			{
				data("m_test",this.m_test);
				data("m_init",this.m_init);
				data("m_move",this.m_move);
				data("m_report_error",this.m_report_error);
			}
			
			//调用部分
			if(!this.m_test()) {this.m_report_error();return;}
			this.m_init();
			$(pelem).children("dt").children("a").click(function(e){
			    var pos=$(this).attr("rel");
				var move_fun=$(pelem).data("m_move");
				move_fun(pos);
				e.preventDefault()				 
			});
			setInterval(
			    function(){
				    var old_pos=$(pelem).data("pos");
					var pos=(parseInt(old_pos)+1)%bImg.length;
					var move_fun=$(pelem).data("m_move");
				    move_fun(pos);
				},
				5000
			);
		}
	});   
});