  var sts //Status
  var tmp
  var nyt // Eastern Time
  var Mins
  var mc = 1600;
  var mo = 930;
  var mb = 730;
	
  DayAry = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
  MonthAry = new Array("January ","February ","March ","April ","May ","June ","July ","August ","September ", "October ","November ","December ");
  DateAry = new Array("0th","1st","2nd","3rd","4th","5th","6th","7th","8th","9th","10th","11th","12th","13th","14th","15th","16th","17th","18th","19th","20th","21st","22nd","23rd","24th","25th","26th","27th","28th","29th","30th","31st");
  HourAry = new Array("0","1","2","3","4","5","6","7","8","9","10","11","12","1","2","3","4","5","6","7","8","9","10","11","12");
	
	/* This function creates and displays the date and time current to Eastern Time U.S. */
	/* It sets variables for MarketCtr() to determine what time of day it is */
	/* U.S. Markets close at 4PM EST */
  function MarketClock() {
		now = new Date();
		Offset = now.getTimezoneOffset() / 60;	// get current time zone offset in minutes
		Mins = now.getMinutes();
		Day = now.getDay();
			
		UTC = now.getHours() + Offset;
		nyt = UTC - 5;	// convert to ZULU +4 or +5
		mt = (nyt * 100) + Mins;	// convert to 24hour clock
				
		bmb = (mt < mb || mt > mc) ? 1 : 0; // market is closed anyway
		wkd = (Day == 0 || Day == 6 || bmb == 1) ? 1 : 0 ; // closed variable 1=true
		tmp = (mt > 1200 && mt < 2400) ? "pm" : "am" ; // is it am or pm
		if (Mins < 10){
			Mins = "0" + Mins; // set the minutes
		}
				
		if (wkd != 1){
			sts = (mt > mo && mt < mc) ? 1 : 2; /* market open or open soon */
		} else {
			sts = 0; /* market closed */
		}
				
		display = DayAry[Day] + ", " + MonthAry[now.getMonth()] + " " + DateAry[now.getDate()] + " " 
		  + now.getFullYear() + "  " + HourAry[nyt] + ":" + Mins + tmp + " ET";
			
		return display;
  }
	
	/* This function determines how long the market has left to be open */
	/* Or how soon the market will open within 2 hours of open */
	/* Also display the time til open, time til close or closed */
  function MarketCtr() {
		bomb = 0; // preset to false
		switch(sts) {
		  case 1:
				bomb = 1;
				ch = 16 - nyt;
				cm = 60 - Mins;
				if (cm == 60) {
					cm = 0;
				} else {
					ch = ch - 1;
				}
			break;
		  case 2:
				bomb = 1;
				ch = (Mins < 30) ? 9 - nyt : 8 - nyt;
				cm = (Mins < 30) ? 30 - Mins : 90 - Mins;
			break;
		  default:
		  	DisCtr = "U.S. markets closed.";
		}
		
		//This stub displays based on the market status if not closed
		if (bomb == 1) {
		  hr = (ch == 1) ? ch + " hour" : ch + " hours";
		  mn = (cm == 1) ? cm + " minute" : cm + " minutes";
		  rl = (sts == 1) ? "close" : "open";
		  DisCtr = "U.S. markets " + rl + " in ";
		  DisCtr += (ch == 0) ? mn : hr + " and " + mn;
		}
		return DisCtr;
  }
	
	function DisplayClock() {
		var Clock, Counter, Display
		
		Clock = MarketClock();
		Counter = MarketCtr();
		
		Display = Clock + " - " + Counter;
		
		document.write(Display);
	}
