var timeZonePrefixes = [ "E", "C", "M", "P" ]
var months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]
function formatDate(date) {
	var year = date.getFullYear()
	var month = padNumber(date.getMonth() + 1)
	var day = padNumber(date.getDate())
	return year + "-" + month + "-" + day
}
function formatDateLong(date) {
	var month = months[date.getMonth()]
	var day = date.getDate()
	var year = date.getFullYear()
	return month + " " + day + ", " + year
}
function formatLength(ms) {
	var totalSeconds = Math.round(ms / 1000)
	var minutes = padNumber(Math.floor(totalSeconds / 60))
	var seconds = padNumber(totalSeconds % 60)
	return minutes + ":" + seconds;
}
function formatTime(ms) {
	var date = new Date(ms)
	var hour = date.getHours()
	var ampm = hour < 12 ? "AM" : "PM"
	hour = hour == 0 ? "12" : padNumber(hour > 12 ? hour - 12 : hour)
	var minutes = padNumber(date.getMinutes())
	var seconds = padNumber(date.getSeconds())
	return hour + ":" + minutes + ":" + seconds + " " + ampm
}
function isDaylightSaving(date) {
	var jan1st = new Date(date.getFullYear(), 0, 1)
	return date.getTimezoneOffset() != jan1st.getTimezoneOffset()
}
function getGmtTimeZone(date) {
	var tzo = date.getTimezoneOffset()
	var hrs = padNumber(Math.floor(Math.abs(tzo / 60)))
	var min = padNumber(Math.abs(tzo % 60))
	return "GMT" + (tzo > 0 ? "-" : "+") + hrs + ":" + min
}
function getStandardTimeZone(date) {
	var dst = isDaylightSaving(date)
	var index = date.getTimezoneOffset() / 60 - (dst ? 4 : 5)
	var prefix = timeZonePrefixes[index]
	return typeof prefix == "undefined" ? null : prefix + (dst ? "DT" : "ST")
}
function getTimeZone(date) {
	var timeZone = getStandardTimeZone(date)
	return timeZone == null ? getGmtTimeZone(date) : timeZone
}
function padNumber(n) {
	return (n < 10 ? "0" : "") + n
}
function parseDate(sDate) {
	var match = /(\d{4})-(\d{2})-(\d{2})/.exec(sDate)
	var year = match[1] - 0
	var month = match[2] - 1
	var day = match[3] - 0
	return new Date(year, month, day)
}