blob: c2161b8453b1477da0cf4639dd5e45b8845330cb [file] [log] [blame]
/*
Copyright (c) 2004-2005, The Dojo Foundation
All Rights Reserved.
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
http://dojotoolkit.org/community/licensing.shtml
*/
dojo.provide("dojo.widget.TimePicker");
dojo.provide("dojo.widget.TimePicker.util");
dojo.require("dojo.widget.DomWidget");
dojo.widget.TimePicker = function(){
dojo.widget.Widget.call(this);
this.widgetType = "TimePicker";
this.isContainer = false;
// the following aliases prevent breaking people using 0.2.x
this.toRfcDateTime = dojo.widget.TimePicker.util.toRfcDateTime;
this.fromRfcDateTime = dojo.widget.TimePicker.util.fromRfcDateTime;
this.toAmPmHour = dojo.widget.TimePicker.util.toAmPmHour;
this.fromAmPmHour = dojo.widget.TimePicker.util.fromAmPmHour;
}
dojo.inherits(dojo.widget.TimePicker, dojo.widget.Widget);
dojo.widget.tags.addParseTreeHandler("dojo:timepicker");
dojo.requireAfterIf("html", "dojo.widget.html.TimePicker");
dojo.widget.TimePicker.util = new function() {
// utility functions
this.toRfcDateTime = function(jsDate) {
if(!jsDate) {
jsDate = new Date();
}
var year = jsDate.getFullYear();
var month = jsDate.getMonth() + 1;
if (month < 10) {
month = "0" + month.toString();
}
var date = jsDate.getDate();
if (date < 10) {
date = "0" + date.toString();
}
var hour = jsDate.getHours();
if (hour < 10) {
hour = "0" + hour.toString();
}
var minute = jsDate.getMinutes();
if (minute < 10) {
minute = "0" + minute.toString();
}
// no way to set seconds, so set to zero
var second = "00";
var timeZone = jsDate.getTimezoneOffset();
var timeZoneHour = parseInt(timeZone/60);
if(timeZoneHour > -10 && timeZoneHour < 0) {
timeZoneHour = "-0" + Math.abs(timeZoneHour);
} else if(timeZoneHour < 10) {
timeZoneHour = "+0" + timeZoneHour.toString();
} else if(timeZoneHour >= 10) {
timeZoneHour = "+" + timeZoneHour.toString();
}
var timeZoneMinute = timeZone%60;
if(timeZoneMinute < 10) {
timeZoneMinute = "0" + timeZoneMinute.toString();
}
return year + "-" + month + "-" + date + "T" + hour + ":" + minute + ":" + second + timeZoneHour +":" + timeZoneMinute;
}
this.fromRfcDateTime = function(rfcDate, useDefaultMinutes) {
var tempDate = new Date();
if(!rfcDate || !rfcDate.split("T")[1]) {
if(useDefaultMinutes) {
tempDate.setMinutes(Math.floor(tempDate.getMinutes()/5)*5);
} else {
tempDate.setMinutes(0);
}
} else {
var tempTime = rfcDate.split("T")[1].split(":");
// fullYear, month, date
var tempDate = new Date();
tempDate.setHours(tempTime[0]);
tempDate.setMinutes(tempTime[1]);
}
return tempDate;
}
this.toAmPmHour = function(hour) {
var amPmHour = hour;
var isAm = true;
if (amPmHour == 0) {
amPmHour = 12;
} else if (amPmHour>12) {
amPmHour = amPmHour - 12;
isAm = false;
} else if (amPmHour == 12) {
isAm = false;
}
return [amPmHour, isAm];
}
this.fromAmPmHour = function(amPmHour, isAm) {
var hour = parseInt(amPmHour, 10);
if(isAm && hour == 12) {
hour = 0;
} else if (!isAm && hour<12) {
hour = hour + 12;
}
return hour;
}
}