// common.js
// Sep 7, 2008
// @author: Michael Chen
// (C)opyright, Trellist 2008
//

var	weekDays = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
var	shortMonths = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
var	months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var	days = new Array(
				"Zeroth",
				"First", 
				"Second", 
				"Third",
				"Fourth",
				"Fifth",
				"Sixth",
				"Seventh",
				"Eighth",
				"Ninth",
				"Tenth",
				"Eleventh",
				"Twelfth",
				"Thirteenth",
				"Fourteenth",
				"Fifteenth",
				"Sixteenth",
				"Seventeenth",
				"Eighteenth",
				"Nineteenth",
				"Twentieth",
				"Twenty-First", 
				"Twenty-Second",
				"Twenty-Third",
				"Twenty-Fourth",
				"Twenty-Fifth",
				"Twenty-Sixth",
				"Twenty-Seventh",
				"Twenty-Eighth",
				"Twenty-Ninth",
				"Thirtieth",
				"Thirty-First");

var	numbers = new Array(
				"Zero",
				"One",
				"Two",
				"Three",
				"Four",
				"Five",
				"Six",
				"Seven",
				"Eight",
				"Nine",
				"Ten",
				"Eleven",
				"Twelve",
				"Thirteen",
				"Fourteen",
				"Fifteen",
				"Sixteen",
				"Seventeen",
				"Eighteen",
				"Nineteen",
				"Twenty",
				"Twenty-One",
				"Twenty-Two",
				"Twenty-Three",
				"Twenty-Four",
				"Twenty-Five",
				"Twenty-Six",
				"Twenty-Seven",
				"Twenty-Eight",
				"Twenty-Nine",
				"Thirty",
				"Thirty-One",
				"Thirty-Two",
				"Thirty-Three",
				"Thirty-Four",
				"Thirty-Five",
				"Thirty-Six",
				"Thirty-Seven",
				"Thirty-Eight",
				"Thirty-Nine",
				"Forty",
				"Forty-One",
				"Forty-Two",
				"Forty-Three",
				"Forty-Four",
				"Forty-Five",
				"Forty-Six",
				"Forty-Seven",
				"Forty-Eight",
				"Forty-Nine",
				"Fifty",
				"Fifty-One",
				"Fifty-Two",
				"Fifty-Three",
				"Fifty-Four",
				"Fifty-Five",
				"Fifty-Six",
				"Fifty-Seven",
				"Fifty-Eight",
				"Fifty-Nine",
				"Sixty",
				"Sixty-One",
				"Sixty-Two",
				"Sixty-Three",
				"Sixty-Four",
				"Sixty-Five",
				"Sixty-Six",
				"Sixty-Seven",
				"Sixty-Eight",
				"Sixty-Nine",
				"Seventy",
				"Seventy-One",
				"Seventy-Two",
				"Seventy-Three",
				"Seventy-Four",
				"Seventy-Five",
				"Seventy-Six",
				"Seventy-Seven",
				"Seventy-Eight",
				"Seventy-Nine",
				"Eighty",
				"Eighty-One",
				"Eighty-Two",
				"Eighty-Three",
				"Eighty-Four",
				"Eighty-Five",
				"Eighty-Six",
				"Eighty-Seven",
				"Eighty-Eight",
				"Eighty-Nine",
				"Ninety",
				"Ninety-One",
				"Ninety-Two",
				"Ninety-Three",
				"Ninety-Four",
				"Ninety-Five",
				"Ninety-Six",
				"Ninety-Seven",
				"Ninety-Eight",
				"Ninety-Nine");

function getMonthInt(shortMon)
{
	for(i=0;i < shortMonths.length; i++)
		if (shortMonths[i]==shortMon) return i;
}

function getMonthLong(longMon)
{
	for(var i=0;i < months.length; i++)
		if (months[i]==longMon) return i;
}

function _getDayString(d)
{
	try {
		var str = days[d];
		return d+str.substr(str.length-2);
	}
	catch(exception) {
		return d;
	}
}

function _getDate(y,m,d)
{
	var dt = new Date(y,m,d);
	return dt.getMonth()==m&&dt.getDate()==d ? dt : new Date(y,m+1,1); // 4/31			
}
	
function _toFormalDate(y,  m, d) {
	var dt = _getDate(y,getMonthLong(m),d);	 // m: 1-12
	
	var rc = weekDays[dt.getDay()];
	rc += ", the ";
	rc += days[dt.getDate()];
	rc += " of ";
	rc += months[dt.getMonth()];
	
	return rc;
}

function _toFormalDateNoWeekDay(y,m,d) {
	var dt = _getDate(y,m-1,d);	
	
	var rc = "the ";
	rc += days[dt.getDate()];
	rc += " of ";
	rc += months[dt.getMonth()];
	
	return rc;
}

function _toFormalYear(year) {
	if (year>=2000 && year < 2100) {
		return "Two thousand and " + numbers[year % 100].toLowerCase();
	}
	else if (year >= 1970) {
		return "Nineteen hundred and " + numbers[year % 100].toLowerCase();
	}
	else
		return ""+year;
}


function short2LongMonth(sMon)
{
	for(var i=0;i < shortMonths.length; i++) {
		if (shortMonths[i]==sMon) 
			return months[i];	
	}
	
	return sMon;	
}

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };

// sendOpenerTo()
// safe open page in parent, checks if opener exits
function sendOpenerTo(mypage) {
    if (typeof(opener)=="object" && opener!=null) {
        if (opener.closed) {
            var winparent = window.open(mypage,'parentwindow','');
            if (winparent != null) winparent.focus();
   	    } else {
            //break out of frames
            opener.top.location.href = mypage;
            opener.focus();
        }
    } else {
        var winparent = window.open(mypage,'parentwindow','');
        if (winparent != null) winparent.focus();
    }
    window.close();
}

// breakoutFrameLinks()
// used by include iframe wrapper pages for nav includes
// sends links to target _top if previously undefined
function breakoutFrameLinks() {
	var tArray = new Array("A","FORM");
	
	for (var j=0; j<tArray.length; j++) {
		var tEl = document.getElementsByTagName(tArray[j]);
		for (var i=0; i<tEl.length; i++) {
			if (tEl[i].target=="") tEl[i].target="_top";
		}
	}	
}

function sendTopTo(myURL) {
    top.location.href = myURL;
}

function getDayNo(day)	{
	var vDay = day;
	try {
		if (day == 11 || day == 12 || day == 13) {
			vDay += "th";
		}
		else {
			switch (day % 10) {
				case 1: vDay += "st"; break;
				case 2: vDay += "nd"; break;
				case 3: vDay += "rd"; break;
				default: vDay += "th"; break;
			}
		}
	}
	catch (e) {}
	
	return vDay;
}
