/*-----------------------------------------------------------------------------------------/
 * JavaScript Framework Written For ZHTV. Based On JQuery 1.3.2+.
/*----------------------------------------------------------------------------------------*/



/*-----------------------------------------------------------------------------------------/
 * JQuery PlugIn - Slide Show(or, Switch Tab)
 * JQuery滑动切换插件 ver 1.2.0
 *
 * defaultIndex 	- 默认选中的标签索引，从0开始
 * titOnClassName	- 标签选中时的样式
 * titCell			- 自定义标题标签，支持选择符
 * mainCell			- 自定义标题标签，支持选择符
 * delayTime		- 延迟触发时间. 当这个时间小于切换动画效果时间时, 动画将被禁用
 * interTime		- 自动切换时间. 当这个时间大于0时, 标签将定时自动切换
 * trigger			- 滑动触发方式. 默认为click, 可选择mouseover
 * effect			- 切换动画. 默认不使用动画. 目前仅提供fade(淡出), slide(向下展开)两种
 * omitLinks		- 是否忽略带链接标签，默认为否
 * debug			- 调试模式. 默认关闭
/*----------------------------------------------------------------------------------------*/

jQuery.fn.switchTab = function(settings) {
	settings = jQuery.extend({//可配置参数
		defaultIndex: 0,
		titOnClassName: "on",
		titCell: "dt span",
		mainCell: "dd",
		delayTime: 250,
		interTime: 0,
		trigger: "click",
		effect: "",
		omitLinks: false,
		debug: ""
	},
	settings,
	{//插件信息
		version: 120
	});

	this.each(function() {
		var st;
		var curTagIndex = -1;
		var obj = jQuery(this);
		if(settings.omitLinks && settings.titCell.substr(settings.titCell.length-1, 1)=="a"){
			settings.titCell = settings.titCell + "[href^='#']";
		}
		var oTit = obj.find(settings.titCell);
		var oMain = obj.find(settings.mainCell);
		var cellCount = oTit.length;//可切换个数
		var ShowSTCon = function (oi){
			if(oi != curTagIndex){
				if(curTagIndex<0)obj.find(settings.titCell+"."+settings.titOnClassName).removeClass(settings.titOnClassName);
				else oTit.eq(curTagIndex).removeClass(settings.titOnClassName);
				oMain.hide();
				obj.find(settings.titCell + ":eq(" + oi + ")").addClass(settings.titOnClassName);
				if(settings.delayTime <250 && settings.effect != "")settings.effect = "";
				if(settings.effect == "fade"){
					obj.find(settings.mainCell + ":eq(" + oi + ")").fadeIn({queue: false, duration: 250});
				}else if(settings.effect == "slide"){
					obj.find(settings.mainCell + ":eq(" + oi + ")").slideDown({queue: false, duration: 250});
				}else{
					obj.find(settings.mainCell + ":eq(" + oi + ")").show();
				}
				curTagIndex = oi;
			}
		};
		
		var ShowNext = function (){
			oTit.eq(curTagIndex).removeClass(settings.titOnClassName);
			oMain.hide();
			if(++curTagIndex >= cellCount)curTagIndex = 0;
			oTit.eq(curTagIndex).addClass(settings.titOnClassName);
			oMain.eq(curTagIndex).show();
			//ShowSTCon(curTagIndex);
		};
		
		//根据defaultIndex初始化
		ShowSTCon(settings.defaultIndex);

		//定时切换
		if(settings.interTime > 0){
			var sInterval = setInterval(function(){
				ShowNext();
			}, settings.interTime);
		}

		//处理交互事件
		oTit.each(function(i, ele){
			if(settings.trigger=="click"){
				jQuery(ele).click(function(){
					ShowSTCon(i);
					return false;//若有链接而选择了click模式, 链接不起作用
				});
			}else if(settings.delayTime > 0){
				jQuery(ele).hover(function(){
					st = setTimeout(function(){//延时触发
						ShowSTCon(i);
						st = null;
					}, settings.delayTime);
				},function(){
					if(st!=null)clearTimeout(st);
				});
			}else{
				jQuery(ele).mouseover(function(){
					ShowSTCon(i);
				});
			}
		});
	});
	if(settings.debug!="")alert(settings[settings.debug]);
	return this;
};

//垂直向上滚动
//wrapper, 容器选择符
//sItem, 滚动元素选择符
jQuery.fn.scrollUp = function(settings) {
	settings = jQuery.extend({
		delayTime: 4000,
		sItem: 'li'
	}, settings);

	var obj = jQuery(this);
	this.each(function() {
		var stepScroll = function(){
			var curItem = obj.find(settings.sItem + ":first");
			curItem.animate({
				marginTop: "-" + curItem.height()
			},
			300,
			"",
			function(){
				curItem.appendTo(obj);
				curItem.css("margin-top", "0px");
			});
		};
		setInterval(stepScroll, settings.delayTime);
	});
	return this;
};

//内容无缝滚动
function Marquee(marqueeBox, delaytime, direction, itemCell){
	if(delaytime == undefined)delaytime = 50;
	if(direction == undefined)direction = "up";
	if(itemCell == undefined)itemCell = "ul";
	var oMarquee = jQuery(marqueeBox);
	var oMarqueeCon = oMarquee.find(itemCell);
	var oMarqueeCopy = oMarqueeCon.clone(true).insertAfter(oMarqueeCon);

	var ScrollUp = function(){
		if(oMarqueeCopy[0].offsetHeight-oMarquee[0].scrollTop<=0){
			oMarquee[0].scrollTop = 0;
		}else{
			oMarquee[0].scrollTop++;
		}
	}
	
	var ScrollLeft = function(){
		if(oMarqueeCopy[0].offsetWidth-oMarquee[0].scrollLeft<=0){
			oMarquee[0].scrollLeft = 0;
		}else{
			oMarquee[0].scrollLeft++;
		}
	}
	var ScrollRight = function(){
		if(oMarquee[0].scrollLeft<=0){
			oMarquee[0].scrollLeft += oMarqueeCopy[0].offsetWidth;
		}else{
			oMarquee[0].scrollLeft--;
		}
	}
	switch(direction){
		case "left":
			var oScroll = ScrollLeft;
			break;
		case "right":
			var oScroll = ScrollRight;
			break;
		case "up":
		default:
			var oScroll = ScrollUp;
	}
	
	var interScroll = setInterval(oScroll, delaytime);
	oMarquee.bind("mouseover", function(){clearInterval(interScroll);});
	oMarquee.bind("mouseout", function(){interScroll = setInterval(oScroll, delaytime);});

//交互按钮定义
	var oGoLeft = jQuery("#sLeft");
	var oGoRight = jQuery("#sRight");
	var oStop = jQuery("#stopBtn");
	var oPlay = jQuery("#playBtn");
	
	oGoLeft.click(function(){
		if(oGoLeft.length > 0 && oScroll != ScrollLeft){
			oScroll = ScrollLeft;
			clearInterval(interScroll);
			interScroll = setInterval(oScroll, delaytime);
			oMarquee.unbind("mouseout");
			oMarquee.bind("mouseout", function(){interScroll = setInterval(oScroll, delaytime);});
		}
		return false;
	});

	oGoRight.click(function(){
		if(oGoRight.length > 0 && oScroll != ScrollRight){
			oScroll = ScrollRight;
			clearInterval(interScroll);
			interScroll = setInterval(oScroll, delaytime);
			oMarquee.unbind("mouseout");
			oMarquee.bind("mouseout", function(){interScroll = setInterval(oScroll, delaytime);});
		}
		return false;
	});
	
	oStop.click(function(){
		clearInterval(interScroll);
		interScroll = null;
		return false;
	});

	oPlay.click(function(){
		if(interScroll==null)interScroll = setInterval(oScroll, delaytime);
		return false;
	});
}


//列高度统一
function HeightFix(column, column2, offset){
	var oCol = jQuery(column);
	var oCol2 = jQuery(column2);
	if(offset == undefined)offset = 0;
	if(oCol.height() > oCol2.height()){
		oCol2.height(oCol.height() - offset);
	}else{
		oCol.height(oCol2.height() - offset);
	}
}


//获得日期
function RunGLNL(obj){
	var today = new Date();
	var d = new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
	DDDD = "<em>"+(today.getFullYear()<100 ? today.getFullYear()+1900:today.getFullYear())+"</em>年<em>"+(today.getMonth()+1)+"</em>月<em>"+today.getDate()+"</em>日";
	DDDD = DDDD + " " + d[today.getDay()];
	DDDD = DDDD + " " + (CnDateofDateStr(today));
	DDDD = DDDD + " " + SolarTerm(today);
	jQuery(obj).html(DDDD);
}
function DaysNumberofDate(DateGL){
	return parseInt((Date.parse(DateGL)-Date.parse(DateGL.getFullYear()+"/1/1"))/86400000)+1;
}
function CnDateofDate(DateGL){
	var CnData=new Array(
	0x16,0x2a,0xda,0x00,0x83,0x49,0xb6,0x05,0x0e,0x64,0xbb,0x00,0x19,0xb2,0x5b,0x00,
	0x87,0x6a,0x57,0x04,0x12,0x75,0x2b,0x00,0x1d,0xb6,0x95,0x00,0x8a,0xad,0x55,0x02,
	0x15,0x55,0xaa,0x00,0x82,0x55,0x6c,0x07,0x0d,0xc9,0x76,0x00,0x17,0x64,0xb7,0x00,
	0x86,0xe4,0xae,0x05,0x11,0xea,0x56,0x00,0x1b,0x6d,0x2a,0x00,0x88,0x5a,0xaa,0x04,
	0x14,0xad,0x55,0x00,0x81,0xaa,0xd5,0x09,0x0b,0x52,0xea,0x00,0x16,0xa9,0x6d,0x00,
	0x84,0xa9,0x5d,0x06,0x0f,0xd4,0xae,0x00,0x1a,0xea,0x4d,0x00,0x87,0xba,0x55,0x04
	);
	var CnMonth=new Array();
	var CnMonthDays=new Array();
	var CnBeginDay;
	var LeapMonth;
	var Bytes=new Array();
	var I;
	var CnMonthData;
	var DaysCount;
	var CnDaysCount;
	var ResultMonth;
	var ResultDay;
	var yyyy=DateGL.getFullYear();
	var mm=DateGL.getMonth()+1;
	var dd=DateGL.getDate();
	if(yyyy<100) yyyy+=1900;
	if ((yyyy < 1997) || (yyyy > 2020)){
		return 0;
		}
	Bytes[0] = CnData[(yyyy - 1997) * 4];
	Bytes[1] = CnData[(yyyy - 1997) * 4 + 1];
	Bytes[2] = CnData[(yyyy - 1997) * 4 + 2];
	Bytes[3] = CnData[(yyyy - 1997) * 4 + 3];
	if ((Bytes[0] & 0x80) != 0) {CnMonth[0] = 12;}
	else {CnMonth[0] = 11;}
	CnBeginDay = (Bytes[0] & 0x7f);
	CnMonthData = Bytes[1];
	CnMonthData = CnMonthData << 8;
	CnMonthData = CnMonthData | Bytes[2];
	LeapMonth = Bytes[3];
	for (I=15;I>=0;I--){
		CnMonthDays[15 - I] = 29;
		if (((1 << I) & CnMonthData) != 0 ){
		  CnMonthDays[15 - I]++;}
		if (CnMonth[15 - I] == LeapMonth ){
		  CnMonth[15 - I + 1] = - LeapMonth;}
		else{
		  if (CnMonth[15 - I] < 0 ){CnMonth[15 - I + 1] = - CnMonth[15 - I] + 1;}
		  else {CnMonth[15 - I + 1] = CnMonth[15 - I] + 1;}
		  if (CnMonth[15 - I + 1] > 12 ){ CnMonth[15 - I + 1] = 1;}
		}
	}
	DaysCount = DaysNumberofDate(DateGL) - 1;
	if (DaysCount <= (CnMonthDays[0] - CnBeginDay)){
		if ((yyyy > 1901) && (CnDateofDate(new Date((yyyy - 1)+"/12/31")) < 0)){
		  ResultMonth = - CnMonth[0];}
		else {ResultMonth = CnMonth[0];}
		ResultDay = CnBeginDay + DaysCount;
	}
	else{
		CnDaysCount = CnMonthDays[0] - CnBeginDay;
		I = 1;
		while ((CnDaysCount < DaysCount) && (CnDaysCount + CnMonthDays[I] < DaysCount)){
		  CnDaysCount+= CnMonthDays[I];
		  I++;
		}
		ResultMonth = CnMonth[I];
		ResultDay = DaysCount - CnDaysCount;
	}
	if (ResultMonth > 0){
		return ResultMonth * 100 + ResultDay;}
	else{return ResultMonth * 100 - ResultDay;}
	}
	function CnYearofDate(DateGL){
	var YYYY=DateGL.getFullYear();
	var MM=DateGL.getMonth()+1;
	var CnMM=parseInt(Math.abs(CnDateofDate(DateGL))/100);
	if(YYYY<100) YYYY+=1900;
	if(CnMM>MM) YYYY--;
	YYYY-=1864;
	return CnEra(YYYY)+"年";
	}
	function CnMonthofDate(DateGL){
	var CnMonthStr=new Array("零","正","二","三","四","五","六","七","八","九","十","十一","十二");
	var Month;
	Month = parseInt(CnDateofDate(DateGL)/100);
	if (Month < 0){return "闰" + CnMonthStr[-Month] + "月";}
	else{return CnMonthStr[Month] + "月";}
}
function CnDayofDate(DateGL){
	var CnDayStr=new Array("零",
		"初一", "初二", "初三", "初四", "初五",
		"初六", "初七", "初八", "初九", "初十",
		"十一", "十二", "十三", "十四", "十五",
		"十六", "十七", "十八", "十九", "二十",
		"廿一", "廿二", "廿三", "廿四", "廿五",
		"廿六", "廿七", "廿八", "廿九", "三十");
	var Day;
	Day = (Math.abs(CnDateofDate(DateGL)))%100;
	return CnDayStr[Day];
}
function DaysNumberofMonth(DateGL){
	var MM1=DateGL.getFullYear();
		MM1<100 ? MM1+=1900:MM1;
	var MM2=MM1;
		MM1+="/"+(DateGL.getMonth()+1);
		MM2+="/"+(DateGL.getMonth()+2);
		MM1+="/1";
		MM2+="/1";
	return parseInt((Date.parse(MM2)-Date.parse(MM1))/86400000);
}
function CnEra(YYYY){
	var Tiangan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
	var Dizhi=new Array("子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)","巳(蛇)",
						"午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)");
	//var Dizhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
	return Tiangan[YYYY%10]+Dizhi[YYYY%12];
}
function CnDateofDateStr(DateGL){
	if(CnMonthofDate(DateGL)=="零月") return "请调整您的计算机日期!";
	else return "农历"+CnYearofDate(DateGL)+ " " + CnMonthofDate(DateGL) + CnDayofDate(DateGL);
}
function SolarTerm(DateGL){
	var SolarTermStr=new Array(
			"小寒","大寒","立春","雨水","惊蛰","春分",
			"清明","谷雨","立夏","小满","芒种","夏至",
			"小暑","大暑","立秋","处暑","白露","秋分",
			"寒露","霜降","立冬","小雪","大雪","冬至");
	var DifferenceInMonth=new Array(
			1272060,1275495,1281180,1289445,1299225,1310355,
			1321560,1333035,1342770,1350855,1356420,1359045,
			1358580,1355055,1348695,1340040,1329630,1318455,
			1306935,1297380,1286865,1277730,1274550,1271556);
	var DifferenceInYear=31556926;
	var BeginTime=new Date(1901/1/1);
	BeginTime.setTime(947120460000);
		 for(;DateGL.getFullYear()<BeginTime.getFullYear();){
			BeginTime.setTime(BeginTime.getTime()-DifferenceInYear*1000);
		 }
		 for(;DateGL.getFullYear()>BeginTime.getFullYear();){
			BeginTime.setTime(BeginTime.getTime()+DifferenceInYear*1000);
		 }
		 for(var M=0;DateGL.getMonth()>BeginTime.getMonth();M++){
			BeginTime.setTime(BeginTime.getTime()+DifferenceInMonth[M]*1000);
		 }
		 if(DateGL.getDate()>BeginTime.getDate()){
			BeginTime.setTime(BeginTime.getTime()+DifferenceInMonth[M]*1000);
			M++;
		 }
		 if(DateGL.getDate()>BeginTime.getDate()){
			BeginTime.setTime(BeginTime.getTime()+DifferenceInMonth[M]*1000);
			M==23?M=0:M++;
		 }
	var JQ;
	if(DateGL.getDate()==BeginTime.getDate()){
		JQ=" 今天是<strong>"+SolarTermStr[M] + "</strong>";
	}
	else if(DateGL.getDate()==BeginTime.getDate()-1){
		JQ=" 明天是<strong>"+SolarTermStr[M] + "</strong>";
	}
	else if(DateGL.getDate()==BeginTime.getDate()-2){
		JQ=" 后天是<strong>"+SolarTermStr[M] + "</strong>";
	}
	else{
	   JQ=" "
	   if(DateGL.getMonth()==BeginTime.getMonth()){
		  JQ+=" 本月";
	   }
	   else{
		 JQ+=" 下月";
	   }
	   JQ+="<em>"+BeginTime.getDate()+"</em>日"+" <strong>"+SolarTermStr[M]+"</strong>";
	}
	return JQ;
}