mirror of
https://github.com/purplecabbage/phonegap-plugins.git
synced 2026-01-13 16:38:08 -05:00
548 lines
19 KiB
JavaScript
548 lines
19 KiB
JavaScript
/*
|
||
* PhoneGap is available under *either* the terms of the modified BSD license *or* the
|
||
* MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
|
||
*
|
||
* Copyright (c) 2010-2011, IBM Corporation
|
||
*
|
||
*/
|
||
|
||
var Globalization = function() {
|
||
};
|
||
|
||
Globalization.prototype.getPreferredLanguage = function(successCB, failureCB)
|
||
{
|
||
// successCallback required
|
||
if (typeof successCB != "function") {
|
||
console.log("Globalization.getPreferredLanguage Error: successCB is not a function");
|
||
return;
|
||
}
|
||
|
||
// errorCallback required
|
||
if (typeof failureCB != "function") {
|
||
console.log("Globalization.getPreferredLanguage Error: failureCB is not a function");
|
||
return;
|
||
}
|
||
|
||
Codova.exec(successCB, failureCB, "Globalization","getPreferredLanguage", []);
|
||
};
|
||
|
||
/**
|
||
* Returns the string identifier for the client's current locale setting.
|
||
* It returns the locale identifier string to the successCB callback with a
|
||
* properties object as a parameter. If there is an error getting the locale,
|
||
* then the errorCB callback is invoked.
|
||
*
|
||
* @param {Function} successCB
|
||
* @param {Function} errorCB
|
||
*
|
||
* @return Object.value {String}: The locale identifier
|
||
*
|
||
* @error GlobalizationError.UNKNOWN_ERROR
|
||
*
|
||
* Example
|
||
* globalization.getLocaleName(function (locale) {alert('locale:' + locale.value + '\n');},
|
||
* function () {});
|
||
*/
|
||
Globalization.prototype.getLocaleName = function(successCB, failureCB)
|
||
{
|
||
// successCallback required
|
||
if (typeof successCB != "function") {
|
||
console.log("Globalization.getLocaleName Error: successCB is not a function");
|
||
return;
|
||
}
|
||
|
||
// errorCallback required
|
||
if (typeof failureCB != "function") {
|
||
console.log("Globalization.getLocaleName Error: failureCB is not a function");
|
||
return;
|
||
}
|
||
Cordova.exec(successCB, failureCB, "Globalization","getLocaleName", []);
|
||
};
|
||
|
||
|
||
/**
|
||
* Returns a date formatted as a string according to the client's user preferences and
|
||
* calendar using the time zone of the client. It returns the formatted date string to the
|
||
* successCB callback with a properties object as a parameter. If there is an error
|
||
* formatting the date, then the errorCB callback is invoked.
|
||
*
|
||
* The defaults are: formatLenght="short" and selector="date and time"
|
||
*
|
||
* @param {Date} date
|
||
* @param {Function} successCB
|
||
* @param {Function} errorCB
|
||
* @param {Object} options {optional}
|
||
* formatLength {String}: “short”, “medium”, “long”, or “full”
|
||
* selector {String}: “date”, “time”, or “date and time”
|
||
*
|
||
* @return Object.value {String}: The localized date string
|
||
*
|
||
* @error GlobalizationError.FORMATTING_ERROR
|
||
*
|
||
* Example
|
||
* globalization.dateToString(new Date(),
|
||
* function (date) {alert('date:' + date.value + '\n');},
|
||
* function (errorCode) {alert(errorCode);},
|
||
* {formatLength:'short'});
|
||
*/
|
||
Globalization.prototype.dateToString = function(date, successCB, failureCB, options)
|
||
{
|
||
// successCallback required
|
||
if (typeof successCB != "function") {
|
||
console.log("Globalization.dateToString Error: successCB is not a function");
|
||
return;
|
||
}
|
||
|
||
// errorCallback required
|
||
if (typeof failureCB != "function") {
|
||
console.log("Globalization.dateToString Error: failureCB is not a function");
|
||
return;
|
||
}
|
||
|
||
|
||
if (date instanceof Date){
|
||
var dateValue;
|
||
dateValue = date.valueOf();
|
||
Cordova.exec(successCB, failureCB, "Globalization", "dateToString", [{"date": dateValue, "options": options}]);
|
||
}
|
||
else {
|
||
console.log("Globalization.dateToString Error: date is not a Date object");
|
||
}
|
||
};
|
||
|
||
|
||
/**
|
||
* Parses a date formatted as a string according to the client's user
|
||
* preferences and calendar using the time zone of the client and returns
|
||
* the corresponding date object. It returns the date to the successCB
|
||
* callback with a properties object as a parameter. If there is an error
|
||
* parsing the date string, then the errorCB callback is invoked.
|
||
*
|
||
* The defaults are: formatLength="short" and selector="date and time"
|
||
*
|
||
* @param {String} dateString
|
||
* @param {Function} successCB
|
||
* @param {Function} errorCB
|
||
* @param {Object} options {optional}
|
||
* formatLength {String}: “short”, “medium”, “long”, or “full”
|
||
* selector {String}: “date”, “time”, or “date and time”
|
||
*
|
||
* @return Object.year {Number}: The four digit year
|
||
* Object.month {Number}: The month from (0 - 11)
|
||
* Object.day {Number}: The day from (1 - 31)
|
||
* Object.hour {Number}: The hour from (0 - 23)
|
||
* Object.minute {Number}: The minute from (0 - 59)
|
||
* Object.second {Number}: The second from (0 - 59)
|
||
* Object.millisecond {Number}: The milliseconds (from 0 – 999),
|
||
* not available on all platforms
|
||
*
|
||
* @error GlobalizationError.PARSING_ERROR
|
||
*
|
||
* Example
|
||
* globalization.stringToDate('4/11/2011',
|
||
* function (date) { alert('Month:' + date.month + “\n” +
|
||
* 'Day:' + date.day + “\n” +
|
||
* 'Year:' + date.year + “\n”);},
|
||
* function (errorCode) {alert(errorCode);},
|
||
* {selector:'date'});
|
||
*/
|
||
Globalization.prototype.stringToDate = function(dateString, successCB, failureCB, options)
|
||
{
|
||
// successCallback required
|
||
if (typeof successCB != "function") {
|
||
console.log("Globalization.stringToDate Error: successCB is not a function");
|
||
return;
|
||
}
|
||
|
||
// errorCallback required
|
||
if (typeof failureCB != "function") {
|
||
console.log("Globalization.stringToDate Error: failureCB is not a function");
|
||
return;
|
||
}
|
||
|
||
if (typeof dateString == "string"){
|
||
Cordova.exec(successCB, failureCB, "Globalization", "stringToDate", [{"dateString": dateString, "options": options}]);
|
||
}
|
||
else {
|
||
console.log("Globalization.stringToDate Error: dateString is not a string");
|
||
}
|
||
};
|
||
|
||
|
||
/**
|
||
* Returns a pattern string for formatting and parsing dates according to the client's
|
||
* user preferences. It returns the pattern to the successCB callback with a
|
||
* properties object as a parameter. If there is an error obtaining the pattern,
|
||
* then the errorCB callback is invoked.
|
||
*
|
||
* The defaults are: formatLength="short" and selector="date and time"
|
||
*
|
||
* @param {Function} successCB
|
||
* @param {Function} errorCB
|
||
* @param {Object} options {optional}
|
||
* formatLength {String}: “short”, “medium”, “long”, or “full”
|
||
* selector {String}: “date”, “time”, or “date and time”
|
||
*
|
||
* @return Object.pattern {String}: The date and time pattern for formatting and parsing dates.
|
||
* The patterns follow Unicode Technical Standard #35
|
||
* http://unicode.org/reports/tr35/tr35-4.html
|
||
* Object.timezone {String}: The abbreviated name of the time zone on the client
|
||
* Object.utc_offset {Number}: The current difference in seconds between the client's
|
||
* time zone and coordinated universal time.
|
||
* Object.dst_offset {Number}: The current daylight saving time offset in seconds
|
||
* between the client's non-daylight saving's time zone
|
||
* and the client's daylight saving's time zone.
|
||
*
|
||
* @error GlobalizationError.PATTERN_ERROR
|
||
*
|
||
* Example
|
||
* globalization.getDatePattern(
|
||
* function (date) {alert('pattern:' + date.pattern + '\n');},
|
||
* function () {},
|
||
* {formatLength:'short'});
|
||
*/
|
||
Globalization.prototype.getDatePattern = function(successCB, failureCB, options)
|
||
{
|
||
// successCallback required
|
||
if (typeof successCB != "function") {
|
||
console.log("Globalization.getDatePattern Error: successCB is not a function");
|
||
return;
|
||
}
|
||
|
||
// errorCallback required
|
||
if (typeof failureCB != "function") {
|
||
console.log("Globalization.getDatePattern Error: failureCB is not a function");
|
||
return;
|
||
}
|
||
|
||
Cordova.exec(successCB, failureCB, "Globalization", "getDatePattern", [{"options": options}]);
|
||
};
|
||
|
||
|
||
/**
|
||
* Returns an array of either the names of the months or days of the week
|
||
* according to the client's user preferences and calendar. It returns the array of names to the
|
||
* successCB callback with a properties object as a parameter. If there is an error obtaining the
|
||
* names, then the errorCB callback is invoked.
|
||
*
|
||
* The defaults are: type="wide" and item="months"
|
||
*
|
||
* @param {Function} successCB
|
||
* @param {Function} errorCB
|
||
* @param {Object} options {optional}
|
||
* type {String}: “narrow” or “wide”
|
||
* item {String}: “months”, or “days”
|
||
*
|
||
* @return Object.value {Array{String}}: The array of names starting from either
|
||
* the first month in the year or the
|
||
* first day of the week.
|
||
* @error GlobalizationError.UNKNOWN_ERROR
|
||
*
|
||
* Example
|
||
* globalization.getDateNames(function (names) {
|
||
* for(var i = 0; i < names.value.length; i++) {
|
||
* alert('Month:' + names.value[i] + '\n');}},
|
||
* function () {});
|
||
*/
|
||
Globalization.prototype.getDateNames = function(successCB, failureCB, options)
|
||
{
|
||
// successCallback required
|
||
if (typeof successCB != "function") {
|
||
console.log("Globalization.getDateNames Error: successCB is not a function");
|
||
return;
|
||
}
|
||
|
||
// errorCallback required
|
||
if (typeof failureCB != "function") {
|
||
console.log("Globalization.getDateNames Error: failureCB is not a function");
|
||
return;
|
||
}
|
||
|
||
Cordova.exec(successCB, failureCB, "Globalization", "getDateNames", [{"options": options}]);
|
||
};
|
||
|
||
/**
|
||
* Returns whether daylight savings time is in effect for a given date using the client's
|
||
* time zone and calendar. It returns whether or not daylight savings time is in effect
|
||
* to the successCB callback with a properties object as a parameter. If there is an error
|
||
* reading the date, then the errorCB callback is invoked.
|
||
*
|
||
* @param {Date} date
|
||
* @param {Function} successCB
|
||
* @param {Function} errorCB
|
||
*
|
||
* @return Object.dst {Boolean}: The value "true" indicates that daylight savings time is
|
||
* in effect for the given date and "false" indicate that it is not.
|
||
*
|
||
* @error GlobalizationError.UNKNOWN_ERROR
|
||
*
|
||
* Example
|
||
* globalization.isDayLightSavingsTime(new Date(),
|
||
* function (date) {alert('dst:' + date.dst + '\n');}
|
||
* function () {});
|
||
*/
|
||
Globalization.prototype.isDayLightSavingsTime = function(date, successCB, failureCB)
|
||
{
|
||
// successCallback required
|
||
if (typeof successCB != "function") {
|
||
console.log("Globalization.isDayLightSavingsTime Error: successCB is not a function");
|
||
return;
|
||
}
|
||
|
||
// errorCallback required
|
||
if (typeof failureCB != "function") {
|
||
console.log("Globalization.isDayLightSavingsTime Error: failureCB is not a function");
|
||
return;
|
||
}
|
||
|
||
|
||
if (date instanceof Date){
|
||
var dateValue;
|
||
dateValue = date.valueOf();
|
||
Cordova.exec(successCB, failureCB, "Globalization", "isDayLightSavingsTime", [{"date": dateValue}]);
|
||
}
|
||
else {
|
||
console.log("Globalization.isDayLightSavingsTime Error: date is not a Date object");
|
||
}
|
||
|
||
};
|
||
|
||
/**
|
||
* Returns the first day of the week according to the client's user preferences and calendar.
|
||
* The days of the week are numbered starting from 1 where 1 is considered to be Sunday.
|
||
* It returns the day to the successCB callback with a properties object as a parameter.
|
||
* If there is an error obtaining the pattern, then the errorCB callback is invoked.
|
||
*
|
||
* @param {Function} successCB
|
||
* @param {Function} errorCB
|
||
*
|
||
* @return Object.value {Number}: The number of the first day of the week.
|
||
*
|
||
* @error GlobalizationError.UNKNOWN_ERROR
|
||
*
|
||
* Example
|
||
* globalization.getFirstDayOfWeek(function (day)
|
||
* { alert('Day:' + day.value + '\n');},
|
||
* function () {});
|
||
*/
|
||
Globalization.prototype.getFirstDayOfWeek = function(successCB, failureCB)
|
||
{
|
||
// successCallback required
|
||
if (typeof successCB != "function") {
|
||
console.log("Globalization.getFirstDayOfWeek Error: successCB is not a function");
|
||
return;
|
||
}
|
||
|
||
// errorCallback required
|
||
if (typeof failureCB != "function") {
|
||
console.log("Globalization.getFirstDayOfWeek Error: failureCB is not a function");
|
||
return;
|
||
}
|
||
|
||
Cordova.exec(successCB, failureCB, "Globalization", "getFirstDayOfWeek", []);
|
||
};
|
||
|
||
|
||
/**
|
||
* Returns a number formatted as a string according to the client's user preferences.
|
||
* It returns the formatted number string to the successCB callback with a properties object as a
|
||
* parameter. If there is an error formatting the number, then the errorCB callback is invoked.
|
||
*
|
||
* The defaults are: type="decimal"
|
||
*
|
||
* @param {Number} number
|
||
* @param {Function} successCB
|
||
* @param {Function} errorCB
|
||
* @param {Object} options {optional}
|
||
* type {String}: “decimal”, "percent", or “currency”
|
||
*
|
||
* @return Object.value {String}: The formatted number string.
|
||
*
|
||
* @error GlobalizationError.FORMATTING_ERROR
|
||
*
|
||
* Example
|
||
* globalization.numberToString(3.25,
|
||
* function (number) {alert('number:' + number.value + '\n');},
|
||
* function () {},
|
||
* {type:'decimal'});
|
||
*/
|
||
Globalization.prototype.numberToString = function(number, successCB, failureCB, options)
|
||
{
|
||
// successCallback required
|
||
if (typeof successCB != "function") {
|
||
console.log("Globalization.numberToString Error: successCB is not a function");
|
||
return;
|
||
}
|
||
|
||
// errorCallback required
|
||
if (typeof failureCB != "function") {
|
||
console.log("Globalization.numberToString Error: failureCB is not a function");
|
||
return;
|
||
}
|
||
|
||
if(typeof number == "number") {
|
||
Cordova.exec(successCB, failureCB, "Globalization", "numberToString", [{"number": number, "options": options}]);
|
||
}
|
||
else {
|
||
console.log("Globalization.numberToString Error: number is not a number");
|
||
}
|
||
};
|
||
|
||
/**
|
||
* Parses a number formatted as a string according to the client's user preferences and
|
||
* returns the corresponding number. It returns the number to the successCB callback with a
|
||
* properties object as a parameter. If there is an error parsing the number string, then
|
||
* the errorCB callback is invoked.
|
||
*
|
||
* The defaults are: type="decimal"
|
||
*
|
||
* @param {String} numberString
|
||
* @param {Function} successCB
|
||
* @param {Function} errorCB
|
||
* @param {Object} options {optional}
|
||
* type {String}: “decimal”, "percent", or “currency”
|
||
*
|
||
* @return Object.value {Number}: The parsed number.
|
||
*
|
||
* @error GlobalizationError.PARSING_ERROR
|
||
*
|
||
* Example
|
||
* globalization.stringToNumber('1234.56',
|
||
* function (number) {alert('Number:' + number.value + '\n');},
|
||
* function () { alert('Error parsing number');});
|
||
*/
|
||
Globalization.prototype.stringToNumber = function(numberString, successCB, failureCB, options)
|
||
{
|
||
// successCallback required
|
||
if (typeof successCB != "function") {
|
||
console.log("Globalization.stringToNumber Error: successCB is not a function");
|
||
return;
|
||
}
|
||
|
||
// errorCallback required
|
||
if (typeof failureCB != "function") {
|
||
console.log("Globalization.stringToNumber Error: failureCB is not a function");
|
||
return;
|
||
}
|
||
|
||
if(typeof numberString == "string") {
|
||
Cordova.exec(successCB, failureCB, "Globalization", "stringToNumber", [{"numberString": numberString, "options": options}]);
|
||
}
|
||
else {
|
||
console.log("Globalization.stringToNumber Error: numberString is not a string");
|
||
}
|
||
};
|
||
|
||
/**
|
||
* Returns a pattern string for formatting and parsing numbers according to the client's user
|
||
* preferences. It returns the pattern to the successCB callback with a properties object as a
|
||
* parameter. If there is an error obtaining the pattern, then the errorCB callback is invoked.
|
||
*
|
||
* The defaults are: type="decimal"
|
||
*
|
||
* @param {Function} successCB
|
||
* @param {Function} errorCB
|
||
* @param {Object} options {optional}
|
||
* type {String}: “decimal”, "percent", or “currency”
|
||
*
|
||
* @return Object.pattern {String}: The number pattern for formatting and parsing numbers.
|
||
* The patterns follow Unicode Technical Standard #35.
|
||
* http://unicode.org/reports/tr35/tr35-4.html
|
||
* Object.symbol {String}: The symbol to be used when formatting and parsing
|
||
* e.g., percent or currency symbol.
|
||
* Object.fraction {Number}: The number of fractional digits to use when parsing and
|
||
* formatting numbers.
|
||
* Object.rounding {Number}: The rounding increment to use when parsing and formatting.
|
||
* Object.positive {String}: The symbol to use for positive numbers when parsing and formatting.
|
||
* Object.negative: {String}: The symbol to use for negative numbers when parsing and formatting.
|
||
* Object.decimal: {String}: The decimal symbol to use for parsing and formatting.
|
||
* Object.grouping: {String}: The grouping symbol to use for parsing and formatting.
|
||
*
|
||
* @error GlobalizationError.PATTERN_ERROR
|
||
*
|
||
* Example
|
||
* '
|
||
*/
|
||
Globalization.prototype.getNumberPattern = function(successCB, failureCB, options)
|
||
{
|
||
// successCallback required
|
||
if (typeof successCB != "function") {
|
||
console.log("Globalization.getNumberPattern Error: successCB is not a function");
|
||
return;
|
||
}
|
||
|
||
// errorCallback required
|
||
if (typeof failureCB != "function") {
|
||
console.log("Globalization.getNumberPattern Error: failureCB is not a function");
|
||
return;
|
||
}
|
||
|
||
Cordova.exec(successCB, failureCB, "Globalization", "getNumberPattern", [{"options": options}]);
|
||
};
|
||
|
||
/**
|
||
* Returns a pattern string for formatting and parsing currency values according to the client's
|
||
* user preferences and ISO 4217 currency code. It returns the pattern to the successCB callback with a
|
||
* properties object as a parameter. If there is an error obtaining the pattern, then the errorCB
|
||
* callback is invoked.
|
||
*
|
||
* @param {String} currencyCode
|
||
* @param {Function} successCB
|
||
* @param {Function} errorCB
|
||
*
|
||
* @return Object.pattern {String}: The currency pattern for formatting and parsing currency values.
|
||
* The patterns follow Unicode Technical Standard #35
|
||
* http://unicode.org/reports/tr35/tr35-4.html
|
||
* Object.code {String}: The ISO 4217 currency code for the pattern.
|
||
* Object.fraction {Number}: The number of fractional digits to use when parsing and
|
||
* formatting currency.
|
||
* Object.rounding {Number}: The rounding increment to use when parsing and formatting.
|
||
* Object.decimal: {String}: The decimal symbol to use for parsing and formatting.
|
||
* Object.grouping: {String}: The grouping symbol to use for parsing and formatting.
|
||
*
|
||
* @error GlobalizationError.FORMATTING_ERROR
|
||
*
|
||
* Example
|
||
* globalization.getCurrencyPattern('EUR',
|
||
* function (currency) {alert('Pattern:' + currency.pattern + '\n');}
|
||
* function () {});
|
||
*/
|
||
Globalization.prototype.getCurrencyPattern = function(currencyCode, successCB, failureCB)
|
||
{
|
||
// successCallback required
|
||
if (typeof successCB != "function") {
|
||
console.log("Globalization.getCurrencyPattern Error: successCB is not a function");
|
||
return;
|
||
}
|
||
|
||
// errorCallback required
|
||
if (typeof failureCB != "function") {
|
||
console.log("Globalization.getCurrencyPattern Error: failureCB is not a function");
|
||
return;
|
||
}
|
||
|
||
if(typeof currencyCode == "string") {
|
||
Cordova.exec(successCB, failureCB, "Globalization", "getCurrencyPattern", [{"currencyCode": currencyCode}]);
|
||
}
|
||
else {
|
||
console.log("Globalization.getCurrencyPattern Error: currencyCode is not a currency code");
|
||
}
|
||
};
|
||
|
||
GlobalizationError = function() {
|
||
this.code = null;
|
||
}
|
||
|
||
// Globalization error codes
|
||
GlobalizationError.UNKNOWN_ERROR = 0;
|
||
GlobalizationError.FORMATTING_ERROR = 1;
|
||
GlobalizationError.PARSING_ERROR = 2;
|
||
GlobalizationError.PATTERN_ERROR = 3;
|
||
|
||
|
||
if(!window.plugins) {
|
||
window.plugins = {};
|
||
}
|
||
if (!window.plugins.globalization) {
|
||
window.plugins.globalization = new Globalization();
|
||
} |