// wstock.net 2005/04/05 2005/04/19
// Copyright WSTOCK.NET
// =============  定义港股美股下载用到的公用函数 ============================


//  沪深节假日定义
 var mSSHoliday=new Array();
 var mSSHoliStr=new Array();
 var i=-1;

 i++;mSSHoliday[i]=new Date(2010,0,1);mSSHoliStr[i]="元旦";

 i++;mSSHoliday[i]=new Date(2010,1,15);mSSHoliStr[i]="春节长假，春节愉快";
 i++;mSSHoliday[i]=new Date(2010,1,16);mSSHoliStr[i]="春节长假，春节愉快";
 i++;mSSHoliday[i]=new Date(2010,1,17);mSSHoliStr[i]="春节长假，春节愉快";
 i++;mSSHoliday[i]=new Date(2010,1,18);mSSHoliStr[i]="春节长假，春节愉快";
 i++;mSSHoliday[i]=new Date(2010,1,19);mSSHoliStr[i]="春节长假，春节愉快";

 i++;mSSHoliday[i]=new Date(2010,3,5);mSSHoliStr[i]="清明节";

 i++;mSSHoliday[i]=new Date(2010,4,3);mSSHoliStr[i]="五一节换休";

 i++;mSSHoliday[i]=new Date(2010,5,14);mSSHoliStr[i]="端午节换休";
 i++;mSSHoliday[i]=new Date(2010,5,15);mSSHoliStr[i]="端午节换休";
 i++;mSSHoliday[i]=new Date(2010,5,16);mSSHoliStr[i]="端午节";

 i++;mSSHoliday[i]=new Date(2010,8,22);mSSHoliStr[i]="中秋节换休";
 i++;mSSHoliday[i]=new Date(2010,8,23);mSSHoliStr[i]="中秋节换休";
 i++;mSSHoliday[i]=new Date(2010,8,24);mSSHoliStr[i]="中秋节";

 i++;mSSHoliday[i]=new Date(2010,9,1);mSSHoliStr[i]="国庆节长假";
 i++;mSSHoliday[i]=new Date(2010,9,4);mSSHoliStr[i]="国庆节长假";
 i++;mSSHoliday[i]=new Date(2010,9,5);mSSHoliStr[i]="国庆节长假";
 i++;mSSHoliday[i]=new Date(2010,9,6);mSSHoliStr[i]="国庆节长假";
 i++;mSSHoliday[i]=new Date(2010,9,7);mSSHoliStr[i]="国庆节长假";

 i++;mSSHoliday[i]=new Date(2011,0,1);mSSHoliStr[i]="元旦";


//  港股节假日定义
 var mHKHoliday=new Array();
 var mHKHoliStr=new Array();
 var i=-1;

 i++;mHKHoliday[i]=new Date(2009,11,25);mHKHoliStr[i]="圣诞节";
 i++;mHKHoliday[i]=new Date(2009,11,26);mHKHoliStr[i]="圣诞节补假";

 i++;mHKHoliday[i]=new Date(2010,0,1);mHKHoliStr[i]="元旦";

 i++;mHKHoliday[i]=new Date(2010,1,15);mHKHoliStr[i]="农历年初二";
 i++;mHKHoliday[i]=new Date(2010,1,16);mHKHoliStr[i]="农历年初三";

 i++;mHKHoliday[i]=new Date(2010,3,2);mHKHoliStr[i]="耶稣受难日";
 i++;mHKHoliday[i]=new Date(2010,3,5);mHKHoliStr[i]="复活节星期一";

 i++;mHKHoliday[i]=new Date(2010,3,6);mHKHoliStr[i]="清明节翌日";
// i++;mHKHoliday[i]=new Date(2010,4,1);mHKHoliStr[i]="五一劳动节";
 i++;mHKHoliday[i]=new Date(2010,4,21);mHKHoliStr[i]="佛诞";
 i++;mHKHoliday[i]=new Date(2010,5,16);mHKHoliStr[i]="端午节";
 i++;mHKHoliday[i]=new Date(2010,6,1);mHKHoliStr[i]="香港特区成立纪念日";
 i++;mHKHoliday[i]=new Date(2010,8,23);mHKHoliStr[i]="中秋节翌日";
 i++;mHKHoliday[i]=new Date(2010,9,1);mHKHoliStr[i]="国庆节";
 i++;mHKHoliday[i]=new Date(2010,11,27);mHKHoliStr[i]="圣诞节补假";

 i++;mHKHoliday[i]=new Date(2011,0,1);mHKHoliStr[i]="元旦";


//  台湾节假日定义
 var mTWHoliday=new Array();
 var mTWHoliStr=new Array();
 var i=-1;


 i++;mTWHoliday[i]=new Date(2010,0,1);mTWHoliStr[i]="元旦";

 i++;mTWHoliday[i]=new Date(2010,1,11);mTWHoliStr[i]="春节长假";
 i++;mTWHoliday[i]=new Date(2010,1,12);mTWHoliStr[i]="春节长假";
 i++;mTWHoliday[i]=new Date(2010,1,15);mTWHoliStr[i]="春节长假";
 i++;mTWHoliday[i]=new Date(2010,1,16);mTWHoliStr[i]="春节长假";
 i++;mTWHoliday[i]=new Date(2010,1,17);mTWHoliStr[i]="春节长假";
 i++;mTWHoliday[i]=new Date(2010,1,18);mTWHoliStr[i]="春节长假";
 i++;mTWHoliday[i]=new Date(2010,1,19);mTWHoliStr[i]="春节长假";

 i++;mTWHoliday[i]=new Date(2010,1,28);mTWHoliStr[i]="休市";
 i++;mTWHoliday[i]=new Date(2008,3,5);mTWHoliStr[i]="清明节";

 i++;mTWHoliday[i]=new Date(2010,4,1);mTWHoliStr[i]="五一劳动节";
 i++;mTWHoliday[i]=new Date(2010,5,16);mTWHoliStr[i]="端午节";
 i++;mTWHoliday[i]=new Date(2010,8,22);mTWHoliStr[i]="中秋节";

// i++;mTWHoliday[i]=new Date(2008,6,28);mTWHoliStr[i]="因台风休市";
 i++;mTWHoliday[i]=new Date(2010,9,10);mTWHoliStr[i]="1010休市";

 i++;mTWHoliday[i]=new Date(2011,0,1);mTWHoliStr[i]="元旦";


//  新加坡节假日定义
 var mSGHoliday=new Array();
 var mSGHoliStr=new Array();
 var i=-1;

 i++;mSGHoliday[i]=new Date(2009,11,25);mSGHoliStr[i]="圣诞节";

 i++;mSGHoliday[i]=new Date(2010,0,1);mSGHoliStr[i]="元旦";
 i++;mSGHoliday[i]=new Date(2010,1,14);mSGHoliStr[i]="春节";
 i++;mSGHoliday[i]=new Date(2010,1,15);mSGHoliStr[i]="春节";
 i++;mSGHoliday[i]=new Date(2010,1,16);mSGHoliStr[i]="春节";
 i++;mSGHoliday[i]=new Date(2010,3,2);mSGHoliStr[i]="耶稣受难日";
 i++;mSGHoliday[i]=new Date(2010,4,1);mSGHoliStr[i]="五一劳动节";
 i++;mSGHoliday[i]=new Date(2010,4,28);mSGHoliStr[i]="卫塞节";
 i++;mSGHoliday[i]=new Date(2010,7,9);mSGHoliStr[i]="新加坡国庆日";
 i++;mSGHoliday[i]=new Date(2010,8,10);mSGHoliStr[i]="开斋节";
 i++;mSGHoliday[i]=new Date(2010,10,5);mSGHoliStr[i]="屠妖节";
 i++;mSGHoliday[i]=new Date(2010,10,17);mSGHoliStr[i]="哈芝节 ";
 i++;mSGHoliday[i]=new Date(2010,11,25);mSGHoliStr[i]="圣诞节";

 i++;mSGHoliday[i]=new Date(2011,0,1);mSGHoliStr[i]="元旦";


// 美股节假日定义
 var mUSHoliday=new Array();
 var mUSHoliStr=new Array();
 var i=-1;

 i++;mUSHoliday[i]=new Date(2009,10,26);mUSHoliStr[i]="感恩节";
 i++;mUSHoliday[i]=new Date(2009,11,25);mUSHoliStr[i]="圣诞节";

 i++;mUSHoliday[i]=new Date(2010,0,1);mUSHoliStr[i]="元旦";
 i++;mUSHoliday[i]=new Date(2010,0,18);mUSHoliStr[i]="马丁.路德.金纪念日";
 i++;mUSHoliday[i]=new Date(2010,1,15);mUSHoliStr[i]="华盛顿生日";
 i++;mUSHoliday[i]=new Date(2010,3,2);mUSHoliStr[i]="耶稣受难日";
 i++;mUSHoliday[i]=new Date(2010,4,31);mUSHoliStr[i]="美国阵亡战士纪念日";
 i++;mUSHoliday[i]=new Date(2010,6,5);mUSHoliStr[i]="美国独立日补假";
 i++;mUSHoliday[i]=new Date(2010,8,6);mUSHoliStr[i]="美国劳工日";
 i++;mUSHoliday[i]=new Date(2010,10,25);mUSHoliStr[i]="感恩节";
 i++;mUSHoliday[i]=new Date(2010,11,24);mUSHoliStr[i]="圣诞节";

 i++;mUSHoliday[i]=new Date(2011,0,1);mUSHoliStr[i]="元旦";



// 加拿大TSX节假日定义
 var mTSXHoliday=new Array();
 var mTSXHoliStr=new Array();
 var i=-1;

 i++;mTSXHoliday[i]=new Date(2009,11,25);mTSXHoliStr[i]="圣诞节";
 i++;mTSXHoliday[i]=new Date(2009,11,28);mTSXHoliStr[i]="节礼日（赠礼节,BOXING DAY）";

 i++;mTSXHoliday[i]=new Date(2010,0,1);mTSXHoliStr[i]="元旦";
 i++;mTSXHoliday[i]=new Date(2010,1,15);mTSXHoliStr[i]="加拿大家庭日";
 i++;mTSXHoliday[i]=new Date(2010,3,2);mTSXHoliStr[i]="耶稣受难日";
 i++;mTSXHoliday[i]=new Date(2010,4,24);mTSXHoliStr[i]="加拿大 维多利亚日";
 i++;mTSXHoliday[i]=new Date(2010,6,1);mTSXHoliStr[i]="加拿大日";
 i++;mTSXHoliday[i]=new Date(2010,7,2);mTSXHoliStr[i]="加拿大 市政日";
 i++;mTSXHoliday[i]=new Date(2010,8,6);mTSXHoliStr[i]="劳动节";
 i++;mTSXHoliday[i]=new Date(2010,9,11);mTSXHoliStr[i]="感恩节";
 i++;mTSXHoliday[i]=new Date(2010,11,27);mTSXHoliStr[i]="圣诞节补假";
 i++;mTSXHoliday[i]=new Date(2010,11,28);mTSXHoliStr[i]="节礼日（赠礼节,BOXING DAY）补假";

 i++;mTSXHoliday[i]=new Date(2011,0,1);mTSXHoliStr[i]="元旦";


// 判断港股节假日
// wstock.net 2005/04/05
// 是假日，返回数组中的索引值；不是假日，返回-1
function funIsHKHoliday(vDate) {
	var i;

	for (i=0;i<mHKHoliday.length;i++) {
		if (vDate.getTime() == mHKHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mHKHoliday[i].getTime() ) {return i}
	}

	return -1;
}

// 判断台湾节假日
// wstock.net 2005/04/05
// 是假日，返回数组中的索引值；不是假日，返回-1
function funIsTWHoliday(vDate) {
	var i;

	for (i=0;i<mTWHoliday.length;i++) {
		if (vDate.getTime() == mTWHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mTWHoliday[i].getTime() ) {return i}
	}

	return -1;
}


// 判断新加坡节假日
// wstock.net 2005/04/05
// 是假日，返回数组中的索引值；不是假日，返回-1
function funIsSGHoliday(vDate) {
	var i;

	for (i=0;i<mSGHoliday.length;i++) {
		if (vDate.getTime() == mSGHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mSGHoliday[i].getTime() ) {return i}
	}

	return -1;
}


// 判断美股节假日
// wstock.net 2005/04/05
// 是假日，返回数组中的索引值；不是假日，返回-1
function funIsUSHoliday(vDate) {
	var i;

	for (i=0;i<mUSHoliday.length;i++) {
		// 7200000 是为了避免夏令时影响加上去的
		if ( vDate.getTime() == mUSHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mUSHoliday[i].getTime() ) {return i}
	}

	return -1;
}



// 判断加拿大TSX节假日
// wstock.net 2005/04/05 2008/07/12
// 是假日，返回数组中的索引值；不是假日，返回-1
function funIsTSXHoliday(vDate) {
	var i;

	for (i=0;i<mTSXHoliday.length;i++) {
		// 7200000 是为了避免夏令时影响加上去的
		if ( vDate.getTime() == mTSXHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mTSXHoliday[i].getTime() ) {return i}
	}

	return -1;
}



// 判断沪深节假日
// wstock.net 2005/04/05
// 是假日，返回数组中的索引值；不是假日，返回-1
function funIsSSHoliday(vDate) {
	var i;

	for (i=0;i<mSSHoliday.length;i++) {
		if (vDate.getTime() == mSSHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mSSHoliday[i].getTime() ) {return i}
	}

	return -1;
}

function funMarquee(){
	var tDesc;
	var tMarket;
	var i; 
	var j;

	tDesc = "";
	if ( M_MARQUEE_MARKET == "SSHK" ) {
		i = funIsSSHoliday(M_SHSZ_DATE);		j = funIsHKHoliday(M_HK_DATE);
		if ( i != -1 && j !=-1 ) { tMarket = "亚洲指数"; tDesc = tDesc + "<BR>沪深港股停牌，" + mSSHoliStr[i];
		} else {
			if ( i != -1 ) { tMarket = "港股市场"; tDesc = tDesc + "<BR>沪深市场休市，" + mSSHoliStr[i];}
			if ( j != -1 ) { tMarket = "沪深市场"; tDesc = tDesc + "<BR>港股市场休市，" + mHKHoliStr[j];}
			if ( i == -1 && j == -1) { tMarket = "沪深港股"; }
		}
	} else {
		i = funIsUSHoliday(M_US_DATE); 
		if ( i != -1 ) { tMarket = "美股指数"; tDesc = tDesc + "<BR>美股市场休市，" + mUSHoliStr[i];
		} else { tMarket = "美股市场"; }
	}

	document.write("<B>" + tMarket + "数据已上传<BR>");
	document.write("上传时间：" + M_MARQUEE_DATE + tDesc + "</B>");
	return;
}

// 返回日期加减天后的日期
// vDate：日期对象；vDay：为数字，如1天，-1天等
// 返回值：日期形式的串
// wstock.net 2005/04/04
function funGetDatePlusDay(vDate,vDay) {
	var tStep=86400000;
	var tD;

//	tStep=tStep*vDay;
//	tStep=vDate.getTime()+tStep;
//	tD = vDate;
//	tD.setTime(tStep);	// setTime 与 时区有关

	tStep = tStep*vDay + vDate.valueOf();	// vDate.valueOf()也与时区有关，但日期加减 其实与时区无关，因为始终是本地时间
						// 问题的根本是美国夏令时导致的，2008年美国夏令时开始于3月9日，导致3月9日零点变成了3月8日23:00

	tStep = tStep + 7200000;		// 加上两个小时，避免夏令时的影响
	tD = new Date(tStep);

	return tD;
}


// 得到双月双日的表现形式，如1月5日表示为"0105"
// wstock.net 2005/04/05
function funGetMonthDay2(vDate) {
	var tStr=new String();
	var i;

	i=vDate.getMonth()+1;
	if (i<10) {tStr = "0" + i} else {tStr=i}
	i=vDate.getDate();
	if (i<10) {tStr += "0" + i} else {tStr = "" + tStr + i + ""}
	return tStr;
}

// 得到双日的表现形式，如5日表示为"05"
// wstock.net 2005/04/05
function funGetDay2(vDate) {
	var tStr=new String();
	var i;

	i=vDate.getDate();
	if (i<10) {tStr = "0" + i} else {tStr = i}
	return tStr;
}

// 得到上月双月的表现形式，如5月表示为"05"
// wstock.net 2005/04/05
function funGetLastMonth2(vDate) {
	var tStr=new String();
	var i;

	i=vDate.getMonth();
	if (i==0) i=12;
	if (i<10) {tStr = "0" + i} else {tStr = i}
	return tStr;
}
