// a global month names array
var gsMonthNames = new Array(
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
);
// a global day names array
var gsDayNames = new Array(
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
);
// the date format prototype
Date.prototype.format = function(f)
{
    if (!this.valueOf())
        return '&nbsp;';

    var d = this;

    return f.replace(/(yyyy|mmmm|mmm|mm|dddd|ddd|dd|d|hh|h|nn|n|ss|s|tz|a\/p)/gi,
        function($1)
        {
            switch ($1.toLowerCase())
            {
            case 'yyyy': return d.getFullYear();
            case 'mmmm': return gsMonthNames[d.getMonth()];
            case 'mmm':  return gsMonthNames[d.getMonth()].substr(0, 3);
            case 'mm':   return (d.getMonth() + 1).zf(2);
            case 'dddd': return gsDayNames[d.getDay()];
            case 'ddd':  return gsDayNames[d.getDay()].substr(0, 3);
            case 'dd':   return d.getDate().zf(2);
            case 'd':   return d.getDate();
            case 'hh':   return ((h = d.getHours() % 12) ? h : 12).zf(2);
            case 'h':   return ((h = d.getHours() % 12) ? h : 12);
            case 'nn':   return d.getMinutes().zf(2);
            case 'n':   return d.getMinutes();
            case 'ss':   return d.getSeconds().zf(2);
            case 's':   return d.getSeconds();
            case 'tz':
                if (d.getTimezoneOffset() == 0)
                    return "GMT";
                else if (d.getTimezoneOffset() < 0)
                    return "GMT+" + (-d.getTimezoneOffset() / 60);
                else
                    return "GMT" + (-d.getTimezoneOffset() / 60);
            case 'a/p':  return d.getHours() < 12 ? 'a' : 'p';
            }
        }
    );
}

Number.prototype.zf = function(l)
{
    var n = this.toString();
    while (n.length < l)
    {
        n = "0" + n;
    }
    return n;
}


function processPageTimes()
{
    processPageTimeElements("__time", "dddd, mmmm d yyyy @ h:nna/pm (tz)");
    //processPageTimeElements("__date", "dddd, mmmm d yyyy");
}

function processPageTimeElements(tagID, tformat)
{
    var timeElements = document.getElementsByName(tagID);
    if (timeElements)
    {
        if (timeElements.length)
        {
			var arr = new Array();
			for(i=0;i<timeElements.length;i++)
			{
				arr[i] = timeElements[i];
			}
			for(i=0;i<arr.length;i++)
			{
				replacePageTime(arr[i], tformat);
			}
        }
        else
        {
            replacePageTime(timeElements, tformat);
        }
    }
}

function replacePageTime(element, tformat)
{
    if (element.value)
    {
        var d = new Date();
        d.setTime(element.value);
		if (element.parentNode)
        {
			element.parentNode.innerHTML = d.format(tformat);
        }
        else
            element.outerHTML = d.format(tformat);
    }
}



processPageTimes();