function init(){
	updateDate();
}
function checkJava() {
	var _app = navigator.appName;
	var javaCheck = checkJavaSupport();
	//alert('Java enabled/supported: '+javaCheck.javaEnabled + '\nJava version: '+javaCheck.version + '\nPlatform: '+navigator.platform + '\nUserAgent(browser): '+navigator.userAgent);
	if(!javaCheck.javaEnabled){
		alert('In order to see the page updating, you must have java enabled.\nPlease go to your browser\'s settings and change that!');
		document.location.href="index_static.html";
	}
}
function checkJavaSupport() {
	var result = { 
		javaEnabled: false,
		version: ''
	};
	if (typeof navigator != 'undefined' && typeof navigator.javaEnabled != 'undefined') 
		result.javaEnabled = navigator.javaEnabled();
	else
		result.javaEnabled = 'unknown';
	if (navigator.javaEnabled() && typeof java != 'undefined')
		result.version = java.lang.System.getProperty("java.version");
	return result;
}
function writeDivData(divName, divData){
	if(document.getElementById(divName))
		document.getElementById(divName).innerHTML = divData;
	else if(eval('document.'+divName))
		eval('document.'+divName+'.innerHTML = ' + divData);
	else if(eval('document.all.'+divName))
		eval('document.all.'+divName+'.innerHTML = ' + divData);
}

function change(act){
	var divs = document.getElementById('data').getElementsByTagName('div');
	for (var i = 0; i < divs.length; i++) {
		var el = divs[i].id;
		if(document.getElementById(el)){
			var divs_id = el.split("_");
			if(act){
				document.getElementById(el).style.display="block";
			}else{
				document.getElementById(el).style.display="none";
			}
		}
	}
}

function createXMLHttpRequest(){
	var ua;
	if(window.XMLHttpRequest) {
		try{
			ua = new XMLHttpRequest();
		}catch(e){
			ua = false;
		}
	}else if(window.ActiveXObject){
		try{ 
			ua = new ActiveXObject("Microsoft.XMLHTTP");
		}catch(e){
			ua = false;
		}
	}
	return ua;
}

var size = 0;
function checkForNewData(){
	var req = createXMLHttpRequest();
	req.open('get', '/getFileSize.jsp?product=headsup');
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
	req.onreadystatechange = function() {
		if(req.readyState == 4){
			if(req.status == 200){
				var tempSize = 0+req.responseText;
				if(size != tempSize){
					size = tempSize;
					if(size<600){
						writeDivData('data', '<center><b>No data.</b></center>');
					}else{
						updateData();
					}
				}
			}
		}
	}
	req.send(null);
}

function updateData(){
	var req = createXMLHttpRequest();
	req.open('get', '/headsup/parser.jsp');
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
	req.onreadystatechange = function() {
		if(req.readyState == 4){
			if(req.status == 200){
				//alert(req.responseText);
				writeDivData('data', req.responseText);
			}else{
				writeDivData('data', '<center><b>Service temporarily unavailable, please wait</b></center>');
			}
			window.status='';
		}
	}
	req.send(null);
}

function updateDate() {
	var EST = getESTTime();
	printOpensIn(EST);
	printCurrentDate(EST);
	setTimeout("updateDate()",40*1000);
	return;
}
function getESTTime() {
	var EST_time = new Date();
	var GMToffset = EST_time.getTimezoneOffset() / 60; // diferenta locala fata de GMT in nr. ore
	var EST_time_temp = EST_time.getTime() + GMToffset*3600*1000 - 4*3600*1000; //(EST = GMT-5 sau EDT = GMT-4)
	EST_time.setTime(EST_time_temp);
	return EST_time;
}
function printOpensIn(EST_now){
	var minPerDay = 60 * 1000 ;
	var hoursPerDay = 60 * 60 * 1000;
	var delta = 0;
	var opening_hour = new Date();
	opening_hour.setTime(EST_now.getTime());
	opening_hour.setHours(9);
	opening_hour.setMinutes(30);
	var closing_hour = new Date();
	closing_hour.setTime(EST_now.getTime());
	closing_hour.setHours(16);
	closing_hour.setMinutes(0);
	delta = opening_hour.getTime() - EST_now.getTime();
	if((EST_now.getDay()==5) & (EST_now.getHours()>=16)){ // it's friday, when the market is closed
		opening_hour.setTime(opening_hour.getTime()+3*24*60*60*1000); //maresc timpul cu 3 zile, pentru ca marketul e inchis acum si se deschide luni la 09:30
		delta = opening_hour.getTime() - EST_now.getTime();
		hoursRemain = Math.floor(delta/hoursPerDay);
		minRemain = (delta/minPerDay) % 60;
		writeDivData('opens_in', '<span class="marketpurple">Market Opens in:</span> <span class="marketblack">' + hoursRemain + ((hoursRemain==1)?' Hour ':' Hours ') + minRemain + ((minRemain==1)?' Minute':' Minutes') + '</span>');
	}else if(EST_now.getDay()==6){ // it's saturday, when the market is closed
		opening_hour.setTime(opening_hour.getTime()+2*24*60*60*1000); //maresc timpul cu 2 zile, pentru ca marketul e inchis acum si se deschide luni la 09:30
		delta = opening_hour.getTime() - EST_now.getTime();
		hoursRemain = Math.floor(delta/hoursPerDay);
		minRemain = (delta/minPerDay) % 60;
		writeDivData('opens_in', '<span class="marketpurple">Market Opens in:</span> <span class="marketblack">' + hoursRemain + ((hoursRemain==1)?' Hour ':' Hours ') + minRemain + ((minRemain==1)?' Minute':' Minutes') + '</span>');
	}else if(EST_now.getDay()==0){ // it's Sunday, when the market is closed
		opening_hour.setTime(opening_hour.getTime()+24*60*60*1000); //maresc timpul cu o zi, pentru ca marketul e inchis acum si se deschide luni la 09:30
		delta = opening_hour.getTime() - EST_now.getTime();
		hoursRemain = Math.floor(delta/hoursPerDay);
		minRemain = (delta/minPerDay) % 60;
		writeDivData('opens_in', '<span class="marketpurple">Market Opens in:</span> <span class="marketblack">' + hoursRemain + ((hoursRemain==1)?' Hour ':' Hours ') + minRemain + ((minRemain==1)?' Minute':' Minutes') + '</span>');
	}else{
		if(delta > 0){ // market closed, morning
			hoursRemain = Math.floor(delta/hoursPerDay);
			minRemain = (delta/minPerDay) % 60;
			writeDivData('opens_in', '<span class="marketpurple">Market Opens in:</span> <span class="marketblack">' + hoursRemain + ((hoursRemain==1)?' Hour ':' Hours ') + minRemain + ((minRemain==1)?' Minute':' Minutes') + '</span>');
		}else{ 
			delta = closing_hour.getTime() - EST_now.getTime();
			if(delta > 0){ // market open
				hoursRemain = Math.floor(delta/hoursPerDay);
				minRemain = (delta/minPerDay) % 60;
				writeDivData('opens_in', '<span class="marketopen">Market Closes in:</span> <span class="marketblack">' + hoursRemain + ((hoursRemain==1)?' Hour ':' Hours ') + minRemain + ((minRemain==1)?' Minute':' Minutes') + '</span>');
			}else{ // market closed, evening
				opening_hour.setTime(opening_hour.getTime()+24*60*60*1000); //maresc timpul cu o zi, pentru ca marketul e inchis acum si se deschide a doua zi la 09:30
				delta = opening_hour.getTime() - EST_now.getTime();
				hoursRemain = Math.floor(delta/hoursPerDay);
				minRemain = (delta/minPerDay) % 60;
				writeDivData('opens_in', '<span class="marketpurple">Market Opens in:</span> <span class="marketblack">' + hoursRemain + ((hoursRemain==1)?' Hour ':' Hours ') + minRemain + ((minRemain==1)?' Minute':' Minutes') + '</span>');
			}
		}
	}
}
function printCurrentDate(EST_now){
	var days_of_the_week = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
	var day_of_the_week = EST_now.getDay();
	var month = addZero(EST_now.getMonth()+1);
	var day = addZero(EST_now.getDate());
	var fullyear = EST_now.getFullYear();
	var hour = EST_now.getHours();
	var minute = addZero(EST_now.getMinutes());
	var meridian = '';
	if(hour<12){ 
		meridian = 'AM';
	}else if(hour>12) {
		hour = hour - 12;
		meridian = 'PM';
	}else if(hour==12){
		hour = 12;
		meridian = 'PM';
	}
	writeDivData('cur_date', '<nobr><span class="timeblack">CURRENT DATE:</span> <span class="timepurple">'+days_of_the_week[day_of_the_week]+', '+month+'/'+day+'/'+fullyear+'</span></nobr><br><nobr><span class="timeblack">CURRENT TIME:</span> <span class="timepurple">'+hour+':'+minute+' '+meridian+' EST'+'</span></nobr>');
}
function addZero(num){
	if(num<10){
		num = '0'+num;
	}
	return num
}
function printForm(){ 
	var i;
	var EST_previousDay = getESTTime();
	EST_previousDay.setTime(EST_previousDay.getTime()-1*24*60*60*1000);
	var month = EST_previousDay.getMonth()+1;
	var day = EST_previousDay.getDate();
	var year = EST_previousDay.getFullYear();
	var frm = 
'		<form name="history" method="post" action="/headsup/history.jsp">\r\n'+
'			<select name="day_mm">\r\n';
	i = 0;
	for(i=1; i<=12; i++){ 
		if(i==month){
			frm += 
'				<option value="'+addZero(i)+'" selected>'+addZero(i)+'</option>\r\n';
		}else{
			frm += 
'				<option value="'+addZero(i)+'">'+addZero(i)+'</option>\r\n';
		}
	}
	frm += 
'			</select> / \r\n'+
'			<select name="day_dd">\r\n';
	i = 0;
	for(i=1; i<=31; i++){ 
		if(i==day){
			frm += 
'				<option value="'+addZero(i)+'" selected>'+addZero(i)+'</option>\r\n';
		}else{
			frm += 
'				<option value="'+addZero(i)+'">'+addZero(i)+'</option>\r\n';
		}
	}
	frm += 
'			</select> / \r\n'+
'			<select name="day_yyyy">\r\n';
	i = 0;
	for(i=EST_previousDay.getFullYear(); i>=2005; i--){ 
		if(i==year){
			frm += 
'				<option value="'+i+'">'+i+'</option>\r\n';
		}else{
			frm += 
'				<option value="'+i+'">'+i+'</option>\r\n';
		}
	}
	frm += 
'			</select>\r\n'+
'			<input type="submit" value="Submit">\r\n'+
'			<input type="hidden" name="page_type" value="dynamic">\r\n'+
'		</form>\r\n';
	document.write(frm);
}

function printForm2(){ 
	var frm2 = 
'		<form name="symbol_history" method="get" action="/headsup/symbol_history.jsp">\r\n'+
'			<input type="Text" name="symbol" value="">\r\n'+
'			<input type="submit" value="Submit">\r\n'+
'		</form>\r\n';
	document.write(frm2);
}
