// 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(2012,0,2);mSSHoliStr[i]="元旦";
 i++;mSSHoliday[i]=new Date(2012,0,3);mSSHoliStr[i]="元旦";

 i++;mSSHoliday[i]=new Date(2012,0,23);mSSHoliStr[i]="春节长假，春节愉快";
 i++;mSSHoliday[i]=new Date(2012,0,24);mSSHoliStr[i]="春节长假，春节愉快";
 i++;mSSHoliday[i]=new Date(2012,0,25);mSSHoliStr[i]="春节长假，春节愉快";
 i++;mSSHoliday[i]=new Date(2012,0,26);mSSHoliStr[i]="春节长假，春节愉快";
 i++;mSSHoliday[i]=new Date(2012,0,27);mSSHoliStr[i]="春节长假，春节愉快";

 i++;mSSHoliday[i]=new Date(2012,3,2);mSSHoliStr[i]="清明节";
 i++;mSSHoliday[i]=new Date(2012,3,3);mSSHoliStr[i]="清明节";
 i++;mSSHoliday[i]=new Date(2012,3,4);mSSHoliStr[i]="清明节";

 i++;mSSHoliday[i]=new Date(2012,3,30);mSSHoliStr[i]="五一节换休";
 i++;mSSHoliday[i]=new Date(2012,4,1);mSSHoliStr[i]="五一节";

 i++;mSSHoliday[i]=new Date(2012,5,24);mSSHoliStr[i]="端午节";

 i++;mSSHoliday[i]=new Date(2012,9,1);mSSHoliStr[i]="国庆节长假";
 i++;mSSHoliday[i]=new Date(2012,9,2);mSSHoliStr[i]="国庆节长假";
 i++;mSSHoliday[i]=new Date(2012,9,3);mSSHoliStr[i]="国庆节长假";
 i++;mSSHoliday[i]=new Date(2012,9,4);mSSHoliStr[i]="国庆节长假";
 i++;mSSHoliday[i]=new Date(2012,9,5);mSSHoliStr[i]="国庆节长假";


//  港股节假日定义
 var mHKHoliday=new Array();
 var mHKHoliStr=new Array();
 var i=-1;

 i++;mHKHoliday[i]=new Date(2011,11,26);mHKHoliStr[i]="圣诞节补假";
 i++;mHKHoliday[i]=new Date(2011,11,27);mHKHoliStr[i]="圣诞节补假";

 i++;mHKHoliday[i]=new Date(2012,0,2);mHKHoliStr[i]="元旦";

 i++;mHKHoliday[i]=new Date(2012,0,23);mHKHoliStr[i]="农历年初一";
 i++;mHKHoliday[i]=new Date(2012,0,24);mHKHoliStr[i]="农历年初二";
 i++;mHKHoliday[i]=new Date(2012,0,25);mHKHoliStr[i]="农历年初三";

 i++;mHKHoliday[i]=new Date(2012,3,4);mHKHoliStr[i]="清明节";

 i++;mHKHoliday[i]=new Date(2012,3,6);mHKHoliStr[i]="耶稣受难日";
 i++;mHKHoliday[i]=new Date(2012,3,9);mHKHoliStr[i]="复活节星期一";

 i++;mHKHoliday[i]=new Date(2012,4,1);mHKHoliStr[i]="五一劳动节";
 i++;mHKHoliday[i]=new Date(2012,6,2);mHKHoliStr[i]="香港特区成立纪念日";
 i++;mHKHoliday[i]=new Date(2012,9,1);mHKHoliStr[i]="中秋节翌日";
 i++;mHKHoliday[i]=new Date(2012,9,2);mHKHoliStr[i]="国庆节";
 i++;mHKHoliday[i]=new Date(2012,9,23);mHKHoliStr[i]="重阳节";

 i++;mHKHoliday[i]=new Date(2012,11,25);mHKHoliStr[i]="圣诞节";
 i++;mHKHoliday[i]=new Date(2012,11,26);mHKHoliStr[i]="圣诞节补假";


//  台湾节假日定义
 var mTWHoliday=new Array();
 var mTWHoliStr=new Array();
 var i=-1;


 i++;mTWHoliday[i]=new Date(2012,0,19);mTWHoliStr[i]="春节长假";
 i++;mTWHoliday[i]=new Date(2012,0,20);mTWHoliStr[i]="春节长假";
 i++;mTWHoliday[i]=new Date(2012,0,23);mTWHoliStr[i]="春节长假";
 i++;mTWHoliday[i]=new Date(2012,0,24);mTWHoliStr[i]="春节长假";
 i++;mTWHoliday[i]=new Date(2012,0,25);mTWHoliStr[i]="春节长假";
 i++;mTWHoliday[i]=new Date(2012,0,26);mTWHoliStr[i]="春节长假";
 i++;mTWHoliday[i]=new Date(2012,0,27);mTWHoliStr[i]="春节长假";

 i++;mTWHoliday[i]=new Date(2012,1,27);mTWHoliStr[i]="休市";
 i++;mTWHoliday[i]=new Date(2012,1,28);mTWHoliStr[i]="休市";
 i++;mTWHoliday[i]=new Date(2012,3,4);mTWHoliStr[i]="儿童节";

 i++;mTWHoliday[i]=new Date(2012,4,1);mTWHoliStr[i]="五一劳动节";

 i++;mTWHoliday[i]=new Date(2012,9,10);mTWHoliStr[i]="1010休市";
 i++;mTWHoliday[i]=new Date(2012,11,31);mTWHoliStr[i]="迎元旦，休市";



//  新加坡节假日定义
 var mSGHoliday=new Array();
 var mSGHoliStr=new Array();
 var i=-1;

 i++;mSGHoliday[i]=new Date(2011,11,26);mSGHoliStr[i]="圣诞节补假";

 i++;mSGHoliday[i]=new Date(2012,0,2);mSGHoliStr[i]="元旦";
 i++;mSGHoliday[i]=new Date(2012,0,23);mSGHoliStr[i]="春节";
 i++;mSGHoliday[i]=new Date(2012,0,24);mSGHoliStr[i]="春节";
 i++;mSGHoliday[i]=new Date(2012,3,6);mSGHoliStr[i]="耶稣受难日";
 i++;mSGHoliday[i]=new Date(2012,4,1);mSGHoliStr[i]="五一劳动节";
 i++;mSGHoliday[i]=new Date(2012,4,5);mSGHoliStr[i]="卫塞节";
 i++;mSGHoliday[i]=new Date(2012,7,9);mSGHoliStr[i]="新加坡国庆日";
 i++;mSGHoliday[i]=new Date(2012,7,20);mSGHoliStr[i]="开斋节翌日";
 i++;mSGHoliday[i]=new Date(2012,9,26);mSGHoliStr[i]="哈芝节";
 i++;mSGHoliday[i]=new Date(2012,10,13);mSGHoliStr[i]="屠妖节";
 i++;mSGHoliday[i]=new Date(2012,11,25);mSGHoliStr[i]="圣诞节";


// 美股节假日定义
 var mUSHoliday=new Array();
 var mUSHoliStr=new Array();
 var i=-1;

 i++;mUSHoliday[i]=new Date(2011,10,24);mUSHoliStr[i]="感恩节";
 i++;mUSHoliday[i]=new Date(2011,11,26);mUSHoliStr[i]="圣诞节补假";

 i++;mUSHoliday[i]=new Date(2012,0,2);mUSHoliStr[i]="元旦";
 i++;mUSHoliday[i]=new Date(2012,0,16);mUSHoliStr[i]="马丁.路德.金纪念日";
 i++;mUSHoliday[i]=new Date(2012,1,20);mUSHoliStr[i]="华盛顿纪念日";
 i++;mUSHoliday[i]=new Date(2012,3,6);mUSHoliStr[i]="耶稣受难日";
 i++;mUSHoliday[i]=new Date(2012,4,28);mUSHoliStr[i]="美国阵亡战士纪念日";
 i++;mUSHoliday[i]=new Date(2012,7-1,4);mUSHoliStr[i]="美国独立日";
 i++;mUSHoliday[i]=new Date(2012,8,3);mUSHoliStr[i]="美国劳工日";
 i++;mUSHoliday[i]=new Date(2012,10,22);mUSHoliStr[i]="感恩节";
 i++;mUSHoliday[i]=new Date(2012,11,25);mUSHoliStr[i]="圣诞节";



// 加拿大TSX节假日定义
 var mTSXHoliday=new Array();
 var mTSXHoliStr=new Array();
 var i=-1;

 i++;mTSXHoliday[i]=new Date(2011,11,26);mTSXHoliStr[i]="圣诞节";
 i++;mTSXHoliday[i]=new Date(2011,11,27);mTSXHoliStr[i]="节礼日（赠礼节,BOXING DAY）";

 i++;mTSXHoliday[i]=new Date(2012,0,2);mTSXHoliStr[i]="元旦";
 i++;mTSXHoliday[i]=new Date(2012,1,20);mTSXHoliStr[i]="加拿大家庭日";
 i++;mTSXHoliday[i]=new Date(2012,3,6);mTSXHoliStr[i]="耶稣受难日";
 i++;mTSXHoliday[i]=new Date(2012,4,21);mTSXHoliStr[i]="加拿大 维多利亚日";
 i++;mTSXHoliday[i]=new Date(2012,6,2);mTSXHoliStr[i]="加拿大日";
 i++;mTSXHoliday[i]=new Date(2012,7,6);mTSXHoliStr[i]="加拿大 市政日";
 i++;mTSXHoliday[i]=new Date(2012,8,3);mTSXHoliStr[i]="劳动节";
 i++;mTSXHoliday[i]=new Date(2012,9,8);mTSXHoliStr[i]="感恩节";
 i++;mTSXHoliday[i]=new Date(2012,11,25);mTSXHoliStr[i]="圣诞节";
 i++;mTSXHoliday[i]=new Date(2012,11,26);mTSXHoliStr[i]="节礼日（赠礼节,BOXING DAY）";



// 伦敦LD节假日定义
 var mLDHoliday=new Array();
 var mLDHoliStr=new Array();
 var i=-1;

 i++;mLDHoliday[i]=new Date(2011,11,26);mLDHoliStr[i]="圣诞节";
 i++;mLDHoliday[i]=new Date(2011,11,27);mLDHoliStr[i]="赠礼节";

 i++;mLDHoliday[i]=new Date(2012,0,2);mLDHoliStr[i]="元旦";
 i++;mLDHoliday[i]=new Date(2012,3,6);mLDHoliStr[i]="复活节前星期五";
 i++;mLDHoliday[i]=new Date(2012,3,9);mLDHoliStr[i]="复活节";
 i++;mLDHoliday[i]=new Date(2012,4,7);mLDHoliStr[i]="5月第一周的周一 五月银行假日(Early Monday)";
 i++;mLDHoliday[i]=new Date(2012,5,4);mLDHoliStr[i]="5月最终周的周一 春季银行假日 (Spring Bank Holiday)";
 i++;mLDHoliday[i]=new Date(2012,5,5);mLDHoliStr[i]="女王登基60周年";
 i++;mLDHoliday[i]=new Date(2012,7,27);mLDHoliStr[i]="8月最终周的周一 夏季银行假日 (Summer Bank Holiday)";
 i++;mLDHoliday[i]=new Date(2012,11,24);mLDHoliStr[i]="圣诞节";
 i++;mLDHoliday[i]=new Date(2012,11,25);mLDHoliStr[i]="圣诞节";
 i++;mLDHoliday[i]=new Date(2012,11,26);mLDHoliStr[i]="赠礼节";


// 澳大利亚ASX节假日定义
 var mASXHoliday=new Array();
 var mASXHoliStr=new Array();
 var i=-1;

 i++;mASXHoliday[i]=new Date(2011,11,26);mASXHoliStr[i]="圣诞节";
 i++;mASXHoliday[i]=new Date(2011,11,27);mASXHoliStr[i]="圣诞节补假";

 i++;mASXHoliday[i]=new Date(2012,0,2);mASXHoliStr[i]="元旦";
 i++;mASXHoliday[i]=new Date(2012,0,26);mASXHoliStr[i]="澳大利亚日";
 i++;mASXHoliday[i]=new Date(2012,3,6);mASXHoliStr[i]="复活节前周五（Good Friday）";
 i++;mASXHoliday[i]=new Date(2012,3,9);mASXHoliStr[i]="复活节";
 i++;mASXHoliday[i]=new Date(2012,3,25);mASXHoliStr[i]="澳新 军团日假期 （ANZAC Day Holiday ）";
 i++;mASXHoliday[i]=new Date(2012,5,11);mASXHoliStr[i]="女王生日（Queen's Birthday ）";
 i++;mASXHoliday[i]=new Date(2012,11,25);mASXHoliStr[i]="圣诞节";
 i++;mASXHoliday[i]=new Date(2012,11,26);mASXHoliStr[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 2010/05/13
// 是假日，返回数组中的索引值；不是假日，返回-1
function funIsASXHoliday(vDate) {
	var i;

	for (i=0;i<mASXHoliday.length;i++) {
		if (vDate.getTime() == mASXHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mASXHoliday[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;
}

// 判断伦敦LD节假日
// wstock.net 2005/04/05 2008/07/12  2010/05/02
// 是假日，返回数组中的索引值；不是假日，返回-1
function funIsLDHoliday(vDate) {
	var i;

	for (i=0;i<mLDHoliday.length;i++) {
		// 7200000 是为了避免夏令时影响加上去的
		if ( vDate.getTime() == mLDHoliday[i].getTime() || ( vDate.getTime() - 7200000) == mLDHoliday[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;
}

