<% /* * Copyright: * (C) 2006 by Derrell Lipman * All rights reserved * * License: * LGPL 2.1: http://creativecommons.org/licenses/LGPL/2.1/ */ /* * Date class for JSON-RPC */ function _JSON_Date_create(secondsSinceEpoch) { var o = new Object(); o.__type = "_JSON_Date"; function _setUtcDateTimeFields(year, month, day, hour, minute, second, millisecond) { this.year = year + 0; this.month = month + 0; this.day = day + 0; this.hour = hour + 0; this.minute = minute + 0; this.second = second + 0; this.millisecond = millisecond + 0; } o.setUtcYear = _setUtcDateTimeFields; function _setUtcYear(year) { this.year = year + 0; } o.setUtcYear = _setUtcYear; function _setUtcMonth(month) { this.month = month + 0; } o.setUtcMonth = _setUtcMonth; function _setUtcDay(day) { this.day = day + 0; } o.setUtcDay = _setUtcDay; function _setUtcHour(hour) { this.hour = hour + 0; } o.setUtcHour = _setUtcHour; function _setUtcMinute(minute) { this.minute = minute + 0; } o.setUtcMinute = _setUtcMinute; function _setUtcSecond(second) { this.second = second + 0; } o.setUtcSecond = _setUtcSecond; function _setUtcMillisecond(millisecond) { this.millisecond = millisecond + 0; } o.setUtcMillisecond = _setUtcMillisecond; function _setEpochTime(secondsSinceEpoch) { var microseconds = 0; if (typeof(secondsSinceEpoch) != "number") { var currentTime = gettimeofday(); secondsSinceEpoch = currentTime.sec; microseconds = currentTime.usec; } var tm = gmtime(secondsSinceEpoch); this.year = 1900 + tm.tm_year; this.month = tm.tm_mon; this.day = tm.tm_mday; this.hour = tm.tm_hour; this.minute = tm.tm_min; this.second = tm.tm_sec; this.millisecond = 0; } o.setEpochTime = _setEpochTime; function _getUtcYear() { return this.year; } o.getUtcYear = _getUtcYear; function _getUtcMonth() { return this.month; } o.getUtcMonth = _getUtcMonth; function _getUtcDay() { return this.day; } o.getUtcDay = _getUtcDay; function _getUtcHour() { return this.hour; } o.getUtcHour = _getUtcHour; function _getUtcMinute() { return this.minute; } o.getUtcMinute = _getUtcMinute; function _getUtcSecond() { return this.second; } o.getUtcSecond = _getUtcSecond; function _getUtcMillisecond() { return this.millisecond; } o.getUtcMillisecond = _getUtcMillisecond; function _getEpochTime() { var tm = new Object(); tm.tm_sec = this.second; tm.tm_min = this.minute; tm.tm_hour = this.hour; tm.tm_mday = -1; tm.tm_mon = this.month; tm.tm_year = this.year; tm.tm_wday = -1; tm.tm_yday = -1; tm.isdst = 0; return gmmktime(tm); } o.getEpochTime = _getEpochTime; function _encoding() { /* Encode the date in a well-documented fashion */ return sprintf("new Date(Date.UTC(%d,%d,%d,%d,%d,%d,%d))", this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond); } o.encoding = _encoding; if (! secondsSinceEpoch) { var now = gettimeofday(); o.setEpochTime(now.sec); } else { o.setEpochTime(secondsSinceEpoch); } o.year = 0; o.month = 0; o.day = 0; o.hour = 0; o.minute = 0; o.second = 0; o.millisecond = 0; return o; } JSON_Date = new Object(); JSON_Date.create = _JSON_Date_create; _JSON_Date_create = null; /* * Local Variables: * mode: c * End: */ %>