/* Begin: Time functions */
var timerID;
var DaysOfWeek=["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"];

// Get the difference in time between the local machine and web server, so that we can use the web server clock rather than the local clock
function getServerClockDifference(serverEpochTime)	{

	//get local machine date
	var localDate = new Date();
	var localEpochTime = Date.parse(localDate.toUTCString());
	
	var clockOffset = (serverEpochTime - localEpochTime); //offset in milliseconds between local time and server time
	
	return clockOffset;
}


function tzone(tz, os, ds, da) {
	this.ct = new Date(0) ;		// datetime
	this.tz = tz ;		// code
	this.os = os ;		// GMT offset
	this.ds = ds ;		// has daylight savings
	this.da = da ;		// has daylight savings
}

function LondonDSActive(clockOffset) {
	var dt = new Date() ;	// [GMT] time according to machine clock
	dt.setMilliseconds(clockOffset); //modify time to use server clock	

	var startDST = new Date(dt.getFullYear(), 2, 31) ; //31st March.  Starts last Sunday in March.
	while (startDST.getDay() != 0)
		startDST.setDate(startDST.getDate() - 1);

	var endDST = new Date(dt.getFullYear(), 9, 31) ; //31st October. Ends last Sunday of October.
	while (endDST.getDay() != 0)
		endDST.setDate(endDST.getDate() - 1) ;

	var ds_active ;		// DS currently active
	if (startDST < dt && dt < endDST)
		ds_active = 1 ;
	else
		ds_active = 0 ;
	
	return ds_active;
}

function NewYorkDSActive(clockOffset) {
	var dt = new Date() ;	// [GMT] time according to machine clock
	dt.setMilliseconds(clockOffset); //modify time to use server clock	

	var startDST = new Date(dt.getFullYear(), 2, 8) ; //8th March.  Starts second Sunday in March.
	while (startDST.getDay() != 0)
		startDST.setDate(startDST.getDate() + 1);

	var endDST = new Date(dt.getFullYear(), 10, 1) ; //1st Nov. Ends first Sunday of November.
	while (endDST.getDay() != 0)
		endDST.setDate(endDST.getDate() + 1) ;

	var ds_active ;		// DS currently active
	if (startDST < dt && dt < endDST)
		ds_active = 1 ;
	else
		ds_active = 0 ;
	
	return ds_active;
}


function UpdateClocks(offset) {

	var clockOffset = offset;

	var ct = new Array(
		new tzone('London',  0, 1, LondonDSActive(clockOffset)),
		new tzone('New York', -5, 1, NewYorkDSActive(clockOffset)),
		new tzone('Tokyo', +9, 0, 0)
	) ;

	// Adjust each clock offset if that clock has DS and in DS.
	for(n=0 ; n<ct.length ; n++)
		if (ct[n].ds == 1 && ct[n].da == 1) ct[n].os++ ;

	// compensate time zones
	gmdt = new Date() ;
	gmdt.setMilliseconds(clockOffset); //modify time to use server clock		
	for (n=0 ; n<ct.length ; n++)
		ct[n].ct = new Date(gmdt.getTime() + ct[n].os * 3600 * 1000) ;

	//document.getElementById("Clock0").innerHTML = ClockString(ct[0].ct, ct[0].tz);
	//document.getElementById("Clock1").innerHTML = ClockString(ct[1].ct, ct[1].tz);
	//document.getElementById("Clock2").innerHTML = ClockString(ct[2].ct, ct[2].tz);

	timerID = window.setTimeout(function(){UpdateClocks(clockOffset);}, 1001) ;
}

function ClockString(dt, location) {
	var stemp, ampm ;
	var dt_year = dt.getUTCFullYear() ;
	var dt_month = dt.getUTCMonth() + 1 ;
	var dt_day = dt.getUTCDate() ;
	var dt_hour = dt.getUTCHours() ;
	var dt_minute = dt.getUTCMinutes() ;
	var dt_second = dt.getUTCSeconds() ;

	dt_year = dt_year.toString() ;
	if (0 <= dt_hour && dt_hour < 10) {
		dt_hour = '0' + dt_hour;
	}

	if (dt_minute < 10)
		dt_minute = '0' + dt_minute ;

	if (dt_second < 10)
		dt_second = '0' + dt_second ;

	stemp = '<span class="timeZone">' + location + ':</span><span class="time">' + dt_hour + ":" + dt_minute + '</span>'
	return stemp ;
}
/* END: Time functions */

/*START: homepage fund table functions*/

function expandcontent(typeName,callingObject){
	//show or hide table rows
	var tabRows = document.getElementById('fundTable').rows;
	for(i=1;i < tabRows.length;i++){
		if(tabRows[i].id.match(typeName)){
			tabRows[i].style.display='';
			//if ie ever implements the table-row value for display
			//tabRows[i].style.display='table-row';
		}
		else{
			tabRows[i].style.display='none';
		}
	}
	//highlight tabs
	var lstTabs = document.getElementById('tablist');
	for(var j in lstTabs.childNodes){
		lstTabs.childNodes[j].className = '';
	}
	callingObject.className='current';
}

/*END: homepage fund table functions*/

/*START: homepage Stories tabbing*/

function resetAll(){
	document.getElementById('tab1').style.display = 'none';
	document.getElementById('tab2').style.display = 'none';
	document.getElementById('tab3').style.display = 'none';
	document.getElementById('tab4').style.display = 'none';
	
	document.getElementById('tablink1').className = 'tab';
	document.getElementById('tablink2').className = 'tab';
	document.getElementById('tablink3').className = 'tab';
	document.getElementById('tablink4').className = 'tab';

}
function toggleRow2(row,link) {
	resetAll();
	document.getElementById(''+row+'').style.display = 'block';
	link.className = 'tabSelected';
}

/*END: homepage fund Stories tabbing*/

