dojo.provide("dojo.widget.CurrencyTextbox");
dojo.require("dojo.widget.IntegerTextbox");
dojo.require("dojo.validate.common");
dojo.widget.defineWidget(
"dojo.widget.CurrencyTextbox",
dojo.widget.IntegerTextbox,
{
// summary:
// A subclass that extends IntegerTextbox.
// Over-rides isValid/isInRange to test if input denotes a monetary value .
/*=====
// fractional: Boolean
// The decimal places (e.g. for cents). Can be true or false, optional if omitted.
fractional: undefined,
// symbol: String
// A currency symbol such as Yen "???", Pound "???", or the Euro "???". Default is "$".
symbol: "$",
// separator: String
// Default is "," instead of no separator as in IntegerTextbox.
separator: ",",
// min: Number
// Minimum signed value. Default is -Infinity
min: undefined,
// max: Number
// Maximum signed value. Default is +Infinity
max: undefined,
=====*/
mixInProperties: function(localProperties, frag){
// First initialize properties in super-class.
dojo.widget.CurrencyTextbox.superclass.mixInProperties.apply(this, arguments);
// Get properties from markup attributes, and assign to flags object.
if(localProperties.fractional){
this.flags.fractional = (localProperties.fractional == "true");
}else if(localProperties.cents){
dojo.deprecated("dojo.widget.IntegerTextbox", "use fractional attr instead of cents", "0.5");
this.flags.fractional = (localProperties.cents == "true");
}
if(localProperties.symbol){
this.flags.symbol = localProperties.symbol;
}
if(localProperties.min){
this.flags.min = parseFloat(localProperties.min);
}
if(localProperties.max){
this.flags.max = parseFloat(localProperties.max);
}
},
isValid: function(){
// summary: Over-ride for currency validation
return dojo.validate.isCurrency(this.textbox.value, this.flags);
},
isInRange: function(){
// summary: Over-ride for currency validation
return dojo.validate.isInRange(this.textbox.value, this.flags);
}
}
);