diff options
author | Fabio Bas <ctrlaltca@gmail.com> | 2013-10-16 18:04:37 +0200 |
---|---|---|
committer | Fabio Bas <ctrlaltca@gmail.com> | 2013-11-26 11:42:45 +0100 |
commit | 21c565b3ca9de9cc4cfc3fb2e847cc0330921c48 (patch) | |
tree | bd9d9852fa99e705d7590d87fb4dd8330772593a /framework/Web/Javascripts/source/prado | |
parent | 2b11341614ac4a15be697fa8acad07055154ac54 (diff) |
jquery port
Diffstat (limited to 'framework/Web/Javascripts/source/prado')
17 files changed, 937 insertions, 260 deletions
diff --git a/framework/Web/Javascripts/source/prado/activecontrols/activecontrols3.js b/framework/Web/Javascripts/source/prado/activecontrols/activecontrols3.js index 3e6fe5b7..1b94ef7c 100644 --- a/framework/Web/Javascripts/source/prado/activecontrols/activecontrols3.js +++ b/framework/Web/Javascripts/source/prado/activecontrols/activecontrols3.js @@ -80,7 +80,7 @@ Prado.WebUI.TActiveTextBox = Class.extend(Prado.WebUI.TTextBox, if(options['TextMode'] != 'MultiLine') this.observe(this.element, "keydown", this.handleReturnKey.bind(this)); if(this.options['AutoPostBack']==true) - this.observe(this.element, "change", this.doCallback.bindEvent(this,options)); + this.observe(this.element, "change", jQuery.proxy(this.doCallback,this,options)); }, doCallback : function(event, options) @@ -178,7 +178,7 @@ Prado.WebUI.TAutoComplete = Class.extend(Prado.WebUI.TAutoComplete, /** * Time Triggered Callback class. */ -Prado.WebUI.TTimeTriggeredCallback = Class.create(Prado.WebUI.Control, +Prado.WebUI.TTimeTriggeredCallback = jQuery.klass(Prado.WebUI.Control, { onInit : function(options) { @@ -262,7 +262,7 @@ Object.extend(Prado.WebUI.TTimeTriggeredCallback, } }); -Prado.WebUI.ActiveListControl = Class.create(Prado.WebUI.Control, +Prado.WebUI.ActiveListControl = jQuery.klass(Prado.WebUI.Control, { onInit : function(options) { @@ -281,13 +281,13 @@ Prado.WebUI.ActiveListControl = Class.create(Prado.WebUI.Control, } }); -Prado.WebUI.TActiveDropDownList = Class.create(Prado.WebUI.ActiveListControl); -Prado.WebUI.TActiveListBox = Class.create(Prado.WebUI.ActiveListControl); +Prado.WebUI.TActiveDropDownList = jQuery.klass(Prado.WebUI.ActiveListControl); +Prado.WebUI.TActiveListBox = jQuery.klass(Prado.WebUI.ActiveListControl); /** * Observe event of a particular control to trigger a callback request. */ -Prado.WebUI.TEventTriggeredCallback = Class.create(Prado.WebUI.Control, +Prado.WebUI.TEventTriggeredCallback = jQuery.klass(Prado.WebUI.Control, { onInit : function(options) { @@ -327,7 +327,7 @@ Prado.WebUI.TEventTriggeredCallback = Class.create(Prado.WebUI.Control, /** * Observe changes to a property of a particular control to trigger a callback. */ -Prado.WebUI.TValueTriggeredCallback = Class.create(Prado.WebUI.Control, +Prado.WebUI.TValueTriggeredCallback = jQuery.klass(Prado.WebUI.Control, { count : 1, @@ -406,5 +406,5 @@ Object.extend(Prado.WebUI.TValueTriggeredCallback, } }); -Prado.WebUI.TActiveTableCell = Class.create(Prado.WebUI.CallbackControl); -Prado.WebUI.TActiveTableRow = Class.create(Prado.WebUI.CallbackControl); +Prado.WebUI.TActiveTableCell = jQuery.klass(Prado.WebUI.CallbackControl); +Prado.WebUI.TActiveTableRow = jQuery.klass(Prado.WebUI.CallbackControl); diff --git a/framework/Web/Javascripts/source/prado/activecontrols/activedatepicker.js b/framework/Web/Javascripts/source/prado/activecontrols/activedatepicker.js index f7f63026..b6d94b0b 100755 --- a/framework/Web/Javascripts/source/prado/activecontrols/activedatepicker.js +++ b/framework/Web/Javascripts/source/prado/activecontrols/activedatepicker.js @@ -1,7 +1,7 @@ /** * TActiveDatePicker control */ -Prado.WebUI.TActiveDatePicker = Class.create(Prado.WebUI.TDatePicker, +Prado.WebUI.TActiveDatePicker = jQuery.klass(Prado.WebUI.TDatePicker, { onInit : function(options) { @@ -35,21 +35,21 @@ Prado.WebUI.TActiveDatePicker = Class.create(Prado.WebUI.TDatePicker, Object.extend(this,options); if (this.options.ShowCalendar) - this.observe(this.trigger, triggerEvent, this.show.bindEvent(this)); + this.observe(this.trigger, triggerEvent, jQuery.proxy(this.show,this)); // Listen to change event if(this.options.InputMode == "TextBox") { - this.observe(this.control, "change", this.onDateChanged.bindEvent(this)); + this.observe(this.control, "change", jQuery.proxy(this.onDateChanged,this)); } else { var day = Prado.WebUI.TDatePicker.getDayListControl(this.control); var month = Prado.WebUI.TDatePicker.getMonthListControl(this.control); var year = Prado.WebUI.TDatePicker.getYearListControl(this.control); - if (day) this.observe (day, "change", this.onDateChanged.bindEvent(this)); - if (month) this.observe (month, "change", this.onDateChanged.bindEvent(this)); - if (year) this.observe (year, "change", this.onDateChanged.bindEvent(this)); + if (day) this.observe (day, "change", jQuery.proxy(this.onDateChanged,this)); + if (month) this.observe (month, "change", jQuery.proxy(this.onDateChanged,this)); + if (year) this.observe (year, "change", jQuery.proxy(this.onDateChanged,this)); } diff --git a/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js b/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js index e19f5d49..10f4fae6 100644 --- a/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js +++ b/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js @@ -1,5 +1,5 @@ -Prado.AjaxRequest = Class.create(); +Prado.AjaxRequest = jQuery.klass(); Prado.AjaxRequest.prototype = Object.clone(Ajax.Request.prototype); /** @@ -127,7 +127,7 @@ Object.extend(Prado.AjaxRequest.prototype, /** * Prado Callback client-side request handler. */ -Prado.CallbackRequest = Class.create(); +Prado.CallbackRequest = jQuery.klass(); /** * Static definitions. @@ -970,7 +970,7 @@ Prado.Callback = function(UniqueID, parameter, onSuccess, options) if (typeof(Prado.AssetManagerClass)=="undefined") { - Prado.AssetManagerClass = Class.create(); + Prado.AssetManagerClass = jQuery.klass(); Prado.AssetManagerClass.prototype = { initialize: function() { diff --git a/framework/Web/Javascripts/source/prado/activecontrols/dragdrop.js b/framework/Web/Javascripts/source/prado/activecontrols/dragdrop.js index 511c2ab9..7fa9e791 100755 --- a/framework/Web/Javascripts/source/prado/activecontrols/dragdrop.js +++ b/framework/Web/Javascripts/source/prado/activecontrols/dragdrop.js @@ -2,7 +2,7 @@ * DropContainer control */ -Prado.WebUI.DropContainer = Class.create(Prado.WebUI.CallbackControl, +Prado.WebUI.DropContainer = jQuery.klass(Prado.WebUI.CallbackControl, { onInit: function(options) { diff --git a/framework/Web/Javascripts/source/prado/activecontrols/inlineeditor.js b/framework/Web/Javascripts/source/prado/activecontrols/inlineeditor.js index 0260c219..d2a17c8d 100644 --- a/framework/Web/Javascripts/source/prado/activecontrols/inlineeditor.js +++ b/framework/Web/Javascripts/source/prado/activecontrols/inlineeditor.js @@ -1,4 +1,4 @@ -Prado.WebUI.TInPlaceTextBox = Class.create(Prado.WebUI.Control, +Prado.WebUI.TInPlaceTextBox = jQuery.klass(Prado.WebUI.Control, { onInit : function(options) { diff --git a/framework/Web/Javascripts/source/prado/activefileupload/activefileupload.js b/framework/Web/Javascripts/source/prado/activefileupload/activefileupload.js index 5f20944e..388bc7b0 100755 --- a/framework/Web/Javascripts/source/prado/activefileupload/activefileupload.js +++ b/framework/Web/Javascripts/source/prado/activefileupload/activefileupload.js @@ -1,4 +1,4 @@ -Prado.WebUI.TActiveFileUpload = Class.create(Prado.WebUI.Control, +Prado.WebUI.TActiveFileUpload = jQuery.klass(Prado.WebUI.Control, { onInit : function(options) { diff --git a/framework/Web/Javascripts/source/prado/colorpicker/colorpicker.js b/framework/Web/Javascripts/source/prado/colorpicker/colorpicker.js index 142745cf..14195090 100644 --- a/framework/Web/Javascripts/source/prado/colorpicker/colorpicker.js +++ b/framework/Web/Javascripts/source/prado/colorpicker/colorpicker.js @@ -1,7 +1,7 @@ //-------------------- ricoColor.js if(typeof(Rico) == "undefined") Rico = {}; -Rico.Color = Class.create(); +Rico.Color = jQuery.klass(); Rico.Color.prototype = { @@ -242,7 +242,7 @@ Rico.Color.RGBtoHSB = function(r, g, b) { }; -Prado.WebUI.TColorPicker = Class.create(); +Prado.WebUI.TColorPicker = jQuery.klass(); Object.extend(Prado.WebUI.TColorPicker, { @@ -573,7 +573,7 @@ Object.extend(Prado.WebUI.TColorPicker.prototype, for(var type in this.inputs) { Event.observe(this.inputs[type], "change", - this.onInputChanged.bindEvent(this,type)); + jQuery.proxy(this.onInputChanged,this,type)); i++; if(i > 6) break; @@ -596,7 +596,7 @@ Object.extend(Prado.WebUI.TColorPicker.prototype, this.observeMouseMovement(); - Event.observe(this.buttons.Cancel, "click", this.hide.bindEvent(this,this.options['Mode'])); + Event.observe(this.buttons.Cancel, "click", jQuery.proxy(this.hide,this,this.options['Mode'])); Event.observe(this.buttons.OK, "click", this.onOKClicked.bind(this)); }, diff --git a/framework/Web/Javascripts/source/prado/controls/accordion.js b/framework/Web/Javascripts/source/prado/controls/accordion.js index 90d01316..28075cd6 100644 --- a/framework/Web/Javascripts/source/prado/controls/accordion.js +++ b/framework/Web/Javascripts/source/prado/controls/accordion.js @@ -7,7 +7,7 @@ * http://creativecommons.org/licenses/by-sa/3.0/us/ */ -Prado.WebUI.TAccordion = Class.create(Prado.WebUI.Control, +Prado.WebUI.TAccordion = jQuery.klass(Prado.WebUI.Control, { onInit : function(options) { @@ -32,7 +32,7 @@ Prado.WebUI.TAccordion = Class.create(Prado.WebUI.Control, var header = $(view+'_0'); if(header) { - this.observe(header, "click", this.elementClicked.bindEvent(this,view)); + this.observe(header, "click", jQuery.proxy(this.elementClicked,this,view)); if(this.hiddenField.value == i) { this.currentView = view; diff --git a/framework/Web/Javascripts/source/prado/controls/controls.js b/framework/Web/Javascripts/source/prado/controls/controls.js index 8ea6afe3..d2e796e1 100644 --- a/framework/Web/Javascripts/source/prado/controls/controls.js +++ b/framework/Web/Javascripts/source/prado/controls/controls.js @@ -1,21 +1,21 @@ -Prado.WebUI = Class.create(); +Prado.WebUI = jQuery.klass(); -Prado.WebUI.Control = Class.create({ +Prado.WebUI.Control = jQuery.klass({ initialize : function(options) { this.registered = false; this.ID = options.ID; - this.element = $(this.ID); + this.element = jQuery("#" + this.ID).get(0); this.observers = new Array(); this.intervals = new Array(); var e; - if (e = Prado.Registry.get(this.ID)) - this.replace(e, options); - else + if (jQuery.inArray(this.ID, Prado.Registry) == -1) this.register(options); + else + this.replace(Prado.Registry[this.ID], options); - if (this === Prado.Registry.get(this.ID)) + if (this === Prado.Registry[this.ID]) { this.registered = true; if(this.onInit) @@ -29,7 +29,7 @@ Prado.WebUI.Control = Class.create({ */ register : function(options) { - return Prado.Registry.set(options.ID, this); + return Prado.Registry[options.ID] = this; }, /** @@ -38,8 +38,12 @@ Prado.WebUI.Control = Class.create({ deregister : function() { // extra check so we don't ever deregister another wrapper - if (Prado.Registry.get(this.ID)===this) - return Prado.Registry.unset(this.ID); + var value = Prado.Registry[this.ID]; + if (value===this) + { + delete Prado.Registry[this.ID]; + return value; + } else debugger; // invoke debugger - this should never happen }, @@ -76,11 +80,11 @@ Prado.WebUI.Control = Class.create({ * @param string event name to observe * @param handler event handler function */ - observe: function(element, eventName, handler) + observe: function(element, eventName, handler, options) { var e = { _element: element, _eventName: eventName, _handler: handler }; this.observers.push(e); - return Event.observe(e._element,e._eventName,e._handler); + return jQuery(e._element).bind(e._eventName, options, e._handler); }, /** @@ -121,7 +125,7 @@ Prado.WebUI.Control = Class.create({ else debugger; // shouldn't happen - return Event.stopObserving(element,eventName,handler); + return jQuery(element).unbind(eventName, handler); }, /** @@ -133,7 +137,7 @@ Prado.WebUI.Control = Class.create({ */ setTimeout: function(func, delay) { - if (!Object.isFunction(func)) + if (!jQuery.isFunction(func)) { var expr = func; func = function() { return eval(expr); } @@ -164,7 +168,7 @@ Prado.WebUI.Control = Class.create({ */ setInterval: function(func, delay) { - if (!Object.isFunction(func)) func = function() { eval(func); }; + if (!jQuery.isFunction(func)) func = function() { eval(func); }; var obj = this; var h = window.setInterval(function() { if (!obj.isLingering()) @@ -212,7 +216,7 @@ Prado.WebUI.Control = Class.create({ while (this.observers.length>0) { var e = this.observers.pop(); - Event.stopObserving(e._element,e._eventName,e._handler); + jQuery(e._element).unbind(e._eventName, e._handler); } } else @@ -225,7 +229,7 @@ Prado.WebUI.Control = Class.create({ }); -Prado.WebUI.PostBackControl = Class.create(Prado.WebUI.Control, { +Prado.WebUI.PostBackControl = jQuery.klass(Prado.WebUI.Control, { onInit : function(options) { @@ -241,13 +245,13 @@ Prado.WebUI.PostBackControl = Class.create(Prado.WebUI.Control, { this._elementOnClick = this.element.onclick.bind(this.element); this.element.onclick = null; } - this.observe(this.element, "click", this.elementClicked.bindEvent(this,options)); + this.observe(this.element, "click", jQuery.proxy(this.elementClicked,this,options)); } }, - elementClicked : function(event, options) + elementClicked : function(options, event) { - var src = Event.element(event); + var src = event.target; var doPostBack = true; var onclicked = null; @@ -258,29 +262,29 @@ Prado.WebUI.PostBackControl = Class.create(Prado.WebUI.Control, { doPostBack = onclicked; } if(doPostBack && !Prado.Element.isDisabled(src)) - this.onPostBack(event,options); + this.onPostBack(options,event); if(typeof(onclicked) == "boolean" && !onclicked) - Event.stop(event); + event.stopPropagation(); }, - onPostBack : function(event, options) + onPostBack : function(options, event) { - Prado.PostBack(event,options); + Prado.PostBack(options, event); } }); -Prado.WebUI.TButton = Class.create(Prado.WebUI.PostBackControl); -Prado.WebUI.TLinkButton = Class.create(Prado.WebUI.PostBackControl); -Prado.WebUI.TCheckBox = Class.create(Prado.WebUI.PostBackControl); -Prado.WebUI.TBulletedList = Class.create(Prado.WebUI.PostBackControl); -Prado.WebUI.TImageMap = Class.create(Prado.WebUI.PostBackControl); +Prado.WebUI.TButton = jQuery.klass(Prado.WebUI.PostBackControl); +Prado.WebUI.TLinkButton = jQuery.klass(Prado.WebUI.PostBackControl); +Prado.WebUI.TCheckBox = jQuery.klass(Prado.WebUI.PostBackControl); +Prado.WebUI.TBulletedList = jQuery.klass(Prado.WebUI.PostBackControl); +Prado.WebUI.TImageMap = jQuery.klass(Prado.WebUI.PostBackControl); /** * TImageButton client-side behaviour. With validation, Firefox needs * to capture the x,y point of the clicked image in hidden form fields. */ -Prado.WebUI.TImageButton = Class.create(Prado.WebUI.PostBackControl, +Prado.WebUI.TImageButton = jQuery.klass(Prado.WebUI.PostBackControl, { /** * Override parent onPostBack function, tried to add hidden forms @@ -346,11 +350,11 @@ Prado.WebUI.TImageButton = Class.create(Prado.WebUI.PostBackControl, /** * Radio button, only initialize if not already checked. */ -Prado.WebUI.TRadioButton = Class.create(Prado.WebUI.PostBackControl, +Prado.WebUI.TRadioButton = jQuery.klass(Prado.WebUI.PostBackControl, { initialize : function($super, options) { - this.element = $(options['ID']); + this.element = $("#" + options['ID']).get(0); if(this.element) { if(!this.element.checked) @@ -360,7 +364,7 @@ Prado.WebUI.TRadioButton = Class.create(Prado.WebUI.PostBackControl, }); -Prado.WebUI.TTextBox = Class.create(Prado.WebUI.PostBackControl, +Prado.WebUI.TTextBox = jQuery.klass(Prado.WebUI.PostBackControl, { onInit : function(options) { @@ -368,27 +372,27 @@ Prado.WebUI.TTextBox = Class.create(Prado.WebUI.PostBackControl, if(this.options['TextMode'] != 'MultiLine') this.observe(this.element, "keydown", this.handleReturnKey.bind(this)); if(this.options['AutoPostBack']==true) - this.observe(this.element, "change", Prado.PostBack.bindEvent(this,options)); + this.observe(this.element, "change", jQuery.proxy(Prado.PostBack,this,options)); }, handleReturnKey : function(e) { - if(Event.keyCode(e) == Event.KEY_RETURN) + if(e.keyCode == 13) // KEY_RETURN { - var target = Event.element(e); + var target = e.target; if(target) { if(this.options['AutoPostBack']==true) { - Event.fireEvent(target, "change"); - Event.stop(e); + $(target).trigger( "change" ); + e.stopPropagation(); } else { if(this.options['CausesValidation'] && typeof(Prado.Validation) != "undefined") { if(!Prado.Validation.validate(this.options['FormID'], this.options['ValidationGroup'], $(this.options['ID']))) - return Event.stop(e); + return e.stopPropagation(); } } } @@ -396,23 +400,23 @@ Prado.WebUI.TTextBox = Class.create(Prado.WebUI.PostBackControl, } }); -Prado.WebUI.TListControl = Class.create(Prado.WebUI.PostBackControl, +Prado.WebUI.TListControl = jQuery.klass(Prado.WebUI.PostBackControl, { onInit : function(options) { - this.observe(this.element, "change", Prado.PostBack.bindEvent(this,options)); + this.observe(this.element, "change", jQuery.proxy(Prado.PostBack,this,options)); } }); -Prado.WebUI.TListBox = Class.create(Prado.WebUI.TListControl); -Prado.WebUI.TDropDownList = Class.create(Prado.WebUI.TListControl); +Prado.WebUI.TListBox = jQuery.klass(Prado.WebUI.TListControl); +Prado.WebUI.TDropDownList = jQuery.klass(Prado.WebUI.TListControl); -Prado.WebUI.DefaultButton = Class.create(Prado.WebUI.Control, +Prado.WebUI.DefaultButton = jQuery.klass(Prado.WebUI.Control, { onInit : function(options) { this.options = options; - this.observe(options['Panel'], 'keydown', this.triggerEvent.bindEvent(this)); + this.observe(options['Panel'], "keydown", jQuery.proxy(this.triggerEvent,this)); }, triggerEvent : function(ev, target) @@ -435,7 +439,7 @@ Prado.WebUI.DefaultButton = Class.create(Prado.WebUI.Control, } }); -Prado.WebUI.TTextHighlighter = Class.create(); +Prado.WebUI.TTextHighlighter = jQuery.klass(); Prado.WebUI.TTextHighlighter.prototype = { initialize:function(id) @@ -453,7 +457,7 @@ Prado.WebUI.TTextHighlighter.prototype = } }; -Object.extend(Prado.WebUI.TTextHighlighter, +jQuery.klass(Prado.WebUI.TTextHighlighter, { copy : function(obj) { @@ -483,14 +487,14 @@ Object.extend(Prado.WebUI.TTextHighlighter, }); -Prado.WebUI.TCheckBoxList = Base.extend( +Prado.WebUI.TCheckBoxList = jQuery.klass(Prado.WebUI.Control, { constructor : function(options) { Prado.Registry.set(options.ListID, this); for(var i = 0; i<options.ItemCount; i++) { - var checkBoxOptions = Object.extend( + var checkBoxOptions = jQuery.extend( { ID : options.ListID+"_c"+i, EventTarget : options.ListName+"$c"+i @@ -500,14 +504,14 @@ Prado.WebUI.TCheckBoxList = Base.extend( } }); -Prado.WebUI.TRadioButtonList = Base.extend( +Prado.WebUI.TRadioButtonList = jQuery.klass(Prado.WebUI.Control, { constructor : function(options) { Prado.Registry.set(options.ListID, this); for(var i = 0; i<options.ItemCount; i++) { - var radioButtonOptions = Object.extend( + var radioButtonOptions = jQuery.extend( { ID : options.ListID+"_c"+i, EventTarget : options.ListName+"$c"+i diff --git a/framework/Web/Javascripts/source/prado/controls/htmlarea.js b/framework/Web/Javascripts/source/prado/controls/htmlarea.js index 5cba4f6c..a425e697 100644 --- a/framework/Web/Javascripts/source/prado/controls/htmlarea.js +++ b/framework/Web/Javascripts/source/prado/controls/htmlarea.js @@ -8,7 +8,7 @@ */ -Prado.WebUI.THtmlArea = Class.create(Prado.WebUI.Control, +Prado.WebUI.THtmlArea = jQuery.klass(Prado.WebUI.Control, { initialize: function($super, options) { diff --git a/framework/Web/Javascripts/source/prado/controls/htmlarea4.js b/framework/Web/Javascripts/source/prado/controls/htmlarea4.js index cd3c6a0e..418a6e19 100644 --- a/framework/Web/Javascripts/source/prado/controls/htmlarea4.js +++ b/framework/Web/Javascripts/source/prado/controls/htmlarea4.js @@ -8,7 +8,7 @@ */ -Prado.WebUI.THtmlArea4 = Class.create(Prado.WebUI.Control, +Prado.WebUI.THtmlArea4 = jQuery.klass(Prado.WebUI.Control, { initialize: function($super, options) { diff --git a/framework/Web/Javascripts/source/prado/controls/keyboard.js b/framework/Web/Javascripts/source/prado/controls/keyboard.js index 25541074..768b8d8d 100644 --- a/framework/Web/Javascripts/source/prado/controls/keyboard.js +++ b/framework/Web/Javascripts/source/prado/controls/keyboard.js @@ -1,4 +1,4 @@ -Prado.WebUI.TKeyboard = Class.create(Prado.WebUI.Control, +Prado.WebUI.TKeyboard = jQuery.klass(Prado.WebUI.Control, { onInit : function(options) { diff --git a/framework/Web/Javascripts/source/prado/controls/tabpanel.js b/framework/Web/Javascripts/source/prado/controls/tabpanel.js index bd0a7494..78f6478c 100644 --- a/framework/Web/Javascripts/source/prado/controls/tabpanel.js +++ b/framework/Web/Javascripts/source/prado/controls/tabpanel.js @@ -1,58 +1,58 @@ -Prado.WebUI.TTabPanel = Class.create(Prado.WebUI.Control, +Prado.WebUI.TTabPanel = jQuery.klass(Prado.WebUI.Control, { onInit : function(options) { this.views = options.Views; this.viewsvis = options.ViewsVis; - this.hiddenField = $(options.ID+'_1'); + this.hiddenField = $("#"+options.ID+'_1').get(0); this.activeCssClass = options.ActiveCssClass; this.normalCssClass = options.NormalCssClass; var length = options.Views.length; for(var i = 0; i<length; i++) { var item = options.Views[i]; - var element = $(item+'_0'); + var element = jQuery("#"+item+'_0').get(0); if (element && options.ViewsVis[i]) { - this.observe(element, "click", this.elementClicked.bindEvent(this,item)); + this.observe(element, "click", jQuery.proxy(this.elementClicked,this,item)); if (options.AutoSwitch) - this.observe(element, "mouseenter", this.elementClicked.bindEvent(this,item)); + this.observe(element, "mouseenter", jQuery.proxy(this.elementClicked,this,item)); } if(element) { - var view = $(options.Views[i]); + var view = $("#"+options.Views[i]).get(0); if (view) if(this.hiddenField.value == i) { element.className=this.activeCssClass; - view.show(); + jQuery(view).show(); } else { element.className=this.normalCssClass; - view.hide(); + jQuery(view).hide(); } } } }, - elementClicked : function(event,viewID) + elementClicked : function(viewID, event) { var length = this.views.length; for(var i = 0; i<length; i++) { var item = this.views[i]; - if ($(item)) + if (jQuery("#"+item)) { if(item == viewID) { - $(item+'_0').className=this.activeCssClass; - $(item).show(); + jQuery("#"+item+'_0').removeClass(this.normalCssClass).addClass(this.activeCssClass); + jQuery("#"+item).show(); this.hiddenField.value=i; } else { - $(item+'_0').className=this.normalCssClass; - $(item).hide(); + jQuery("#"+item+'_0').removeClass(this.activeCssClass).addClass(this.normalCssClass); + jQuery("#"+item).hide(); } } } diff --git a/framework/Web/Javascripts/source/prado/datepicker/datepicker.js b/framework/Web/Javascripts/source/prado/datepicker/datepicker.js index ae1ad4b9..bb581751 100644 --- a/framework/Web/Javascripts/source/prado/datepicker/datepicker.js +++ b/framework/Web/Javascripts/source/prado/datepicker/datepicker.js @@ -1,4 +1,4 @@ -Prado.WebUI.TDatePicker = Class.create(Prado.WebUI.Control, +Prado.WebUI.TDatePicker = jQuery.klass(Prado.WebUI.Control, { MonthNames : [ "January", "February", "March", "April", "May", "June", "July", "August", @@ -52,23 +52,23 @@ Prado.WebUI.TDatePicker = Class.create(Prado.WebUI.Control, // generate default date _after_ extending options this.selectedDate = this.newDate(); - Event.observe(this.trigger, triggerEvent, this.show.bindEvent(this)); + Event.observe(this.trigger, triggerEvent, jQuery.proxy(this.show,this)); // Listen to change event if needed if (typeof(this.options.OnDateChanged) == "function") { if(this.options.InputMode == "TextBox") { - Event.observe(this.control, "change", this.onDateChanged.bindEvent(this)); + Event.observe(this.control, "change", jQuery.proxy(this.onDateChanged,this)); } else { var day = Prado.WebUI.TDatePicker.getDayListControl(this.control); var month = Prado.WebUI.TDatePicker.getMonthListControl(this.control); var year = Prado.WebUI.TDatePicker.getYearListControl(this.control); - Event.observe (day, "change", this.onDateChanged.bindEvent(this)); - Event.observe (month, "change", this.onDateChanged.bindEvent(this)); - Event.observe (year, "change", this.onDateChanged.bindEvent(this)); + Event.observe (day, "change", jQuery.proxy(this.onDateChanged,this)); + Event.observe (month, "change", jQuery.proxy(this.onDateChanged,this)); + Event.observe (year, "change", jQuery.proxy(this.onDateChanged,this)); } @@ -214,8 +214,8 @@ Prado.WebUI.TDatePicker = Class.create(Prado.WebUI.Control, tmp.data = text; this.dateSlot[(week*7)+day] = tmp; - Event.observe(td, "mouseover", this.hover.bindEvent(this)); - Event.observe(td, "mouseout", this.hover.bindEvent(this)); + Event.observe(td, "mouseover", jQuery.proxy(this.hover,this)); + Event.observe(td, "mouseout", jQuery.proxy(this.hover,this)); } } @@ -257,19 +257,19 @@ Prado.WebUI.TDatePicker = Class.create(Prado.WebUI.Control, // end IE55+ extension // hook up events - Event.observe(previousMonth, "click", this.prevMonth.bindEvent(this)); - Event.observe(nextMonth, "click", this.nextMonth.bindEvent(this)); - Event.observe(todayButton, "click", this.selectToday.bindEvent(this)); - //Event.observe(clearButton, "click", this.clearSelection.bindEvent(this)); - Event.observe(this._monthSelect, "change", this.monthSelect.bindEvent(this)); - Event.observe(this._yearSelect, "change", this.yearSelect.bindEvent(this)); + Event.observe(previousMonth, "click", jQuery.proxy(this.prevMonth,this)); + Event.observe(nextMonth, "click", jQuery.proxy(this.nextMonth,this)); + Event.observe(todayButton, "click", jQuery.proxy(this.selectToday,this)); + //Event.observe(clearButton, "click", jQuery.proxy(this.clearSelection,this)); + Event.observe(this._monthSelect, "change", jQuery.proxy(this.monthSelect,this)); + Event.observe(this._yearSelect, "change", jQuery.proxy(this.yearSelect,this)); // ie, opera - Event.observe(this._calDiv, "mousewheel", this.mouseWheelChange.bindEvent(this)); + Event.observe(this._calDiv, "mousewheel", jQuery.proxy(this.mouseWheelChange,this)); // ff - Event.observe(this._calDiv, "DOMMouseScroll", this.mouseWheelChange.bindEvent(this)); + Event.observe(this._calDiv, "DOMMouseScroll", jQuery.proxy(this.mouseWheelChange,this)); - Event.observe(calendarBody, "click", this.selectDate.bindEvent(this)); + Event.observe(calendarBody, "click", jQuery.proxy(this.selectDate,this)); Prado.Element.focus(this.control); diff --git a/framework/Web/Javascripts/source/prado/logger/logger.js b/framework/Web/Javascripts/source/prado/logger/logger.js index 55cc1aa3..c5cea3ca 100644 --- a/framework/Web/Javascripts/source/prado/logger/logger.js +++ b/framework/Web/Javascripts/source/prado/logger/logger.js @@ -13,7 +13,7 @@ Use it all you want. Just remember to give me some credit :) // Custom Event // ------------ -CustomEvent = Class.create(); +CustomEvent = jQuery.klass(); CustomEvent.prototype = { initialize : function() { this.listeners = [] @@ -179,7 +179,7 @@ Logger = { } }; -LogEntry = Class.create() +LogEntry = jQuery.klass() LogEntry.prototype = { initialize : function(message, tag) { this.message = message @@ -187,7 +187,7 @@ LogEntry.prototype = { } }; -LogConsole = Class.create(); +LogConsole = jQuery.klass(); LogConsole.prototype = { // Properties diff --git a/framework/Web/Javascripts/source/prado/prado.js b/framework/Web/Javascripts/source/prado/prado.js index 05f11dcd..00c65a92 100644 --- a/framework/Web/Javascripts/source/prado/prado.js +++ b/framework/Web/Javascripts/source/prado/prado.js @@ -14,81 +14,722 @@ var Prado = * Registry for Prado components * @var Registry */ - Registry: $H(), + Registry: {}, +}; + +/** + * Performs a PostBack using javascript. + * @function Prado.PostBack + * @param options - Postback options + * @param event - Event that triggered this postback + * @... {string} FormID - Form that should be posted back + * @... {optional boolean} CausesValidation - Validate before PostBack if true + * @... {optional string} ValidationGroup - Group to Validate + * @... {optional string} ID - Validation ID + * @... {optional string} PostBackUrl - Postback URL + * @... {optional boolean} TrackFocus - Keep track of focused element if true + * @... {string} EventTarget - Id of element that triggered PostBack + * @... {string} EventParameter - EventParameter for PostBack + */ +Prado.PostBack = function(options, event) +{ + var form = jQuery("#" + options['FormID']).get(0); + var canSubmit = true; + + if(options['CausesValidation'] && typeof(Prado.Validation) != "undefined") + { + if(!Prado.Validation.validate(options['FormID'], options['ValidationGroup'], $(options['ID']))) + return event.preventDefault(); + } + + if(options['PostBackUrl'] && options['PostBackUrl'].length > 0) + form.action = options['PostBackUrl']; + + if(options['TrackFocus']) + { + var lastFocus = $('PRADO_LASTFOCUS'); + if(lastFocus) + { + var active = document.activeElement; //where did this come from + if(active) + lastFocus.value = active.id; + else + lastFocus.value = options['EventTarget']; + } + } + + $('PRADO_POSTBACK_TARGET').value = options['EventTarget']; + $('PRADO_POSTBACK_PARAMETER').value = options['EventParameter']; + /** + * Since google toolbar prevents browser default action, + * we will always disable default client-side browser action + */ + /*if(options['StopEvent']) */ + event.preventDefault(); + form.submit(); + + $('PRADO_POSTBACK_TARGET').value = ''; + $('PRADO_POSTBACK_PARAMETER').value = ''; +}; + +/** + * Prado utilities to manipulate DOM elements. + * @object Prado.Element + */ +Prado.Element = +{ + /** + * Set the value of a particular element. + * @function ? + * @param {string} element - Element id + * @param {string} value - New element value + */ + setValue : function(element, value) + { + var el = jQuery("#" + element).get(0); + if(el && typeof(el.value) != "undefined") + el.value = value; + }, + + /** + * Select options from a selectable element. + * @function ? + * @param {string} element - Element id + * @param {string} method - Name of any {@link Prado.Element.Selection} method + * @param {array|boolean|string} value - Values that should be selected + * @param {int} total - Number of elements + */ + select : function(element, method, value, total) + { + var el = jQuery("#" + element).get(0); + if(!el) return; + var selection = Prado.Element.Selection; + if(typeof(selection[method]) == "function") + { + var control = selection.isSelectable(el) ? [el] : selection.getListElements(element,total); + selection[method](control, value); + } + }, + + /** + * Trigger a click event on a DOM element. + * @function ? + * @param {string} element - Element id + */ + click : function(element) + { + var el = jQuery("#" + element).get(0); + if(el) + el.click(); + }, + + /** + * Check if an DOM element is disabled. + * @function {boolean} ? + * @param {string} element - Element id + * @returns true if element is disabled + */ + isDisabled : function(element) + { + if(!element.attributes['disabled']) //FF + return false; + var value = element.attributes['disabled'].nodeValue; + if(typeof(value)=="string") + return value.toLowerCase() == "disabled"; + else + return value == true; + }, + + /** + * Sets an attribute of a DOM element. + * @function ? + * @param {string} element - Element id + * @param {string} attribute - Name of attribute + * @param {string} value - Value of attribute + */ + setAttribute : function(element, attribute, value) + { + var el = jQuery("#" + element).get(0); + if(!el) return; + if((attribute == "disabled" || attribute == "multiple" || attribute == "readonly" || attribute == "href") && value==false) + el.removeAttribute(attribute); + else if(attribute.match(/^on/i)) //event methods + { + try + { + eval("(func = function(event){"+value+"})"); + el[attribute] = func; + } + catch(e) + { + debugger; + throw "Error in evaluating '"+value+"' for attribute "+attribute+" for element "+element.id; + } + } + else + el.setAttribute(attribute, value); + }, + + /** + * Sets the options for a select element. + * @function ? + * @param {string} element - Element id + * @param {array[]} options - Array of options, each an array of structure + * [ "optionText" , "optionValue" , "optionGroup" ] + */ + setOptions : function(element, options) + { + var el = jQuery("#" + element).get(0); + if(!el) return; + var previousGroup = null; + var optGroup=null; + if(el && el.tagName.toLowerCase() == "select") + { + while(el.childNodes.length > 0) + el.removeChild(el.lastChild); + + var optDom = Prado.Element.createOptions(options); + for(var i = 0; i < optDom.length; i++) + el.appendChild(optDom[i]); + } + }, + + /** + * Create opt-group options from an array of options. + * @function {array} ? + * @param {array[]} options - Array of options, each an array of structure + * [ "optionText" , "optionValue" , "optionGroup" ] + * @returns Array of option DOM elements + */ + createOptions : function(options) + { + var previousGroup = null; + var optgroup=null; + var result = []; + for(var i = 0; i<options.length; i++) + { + var option = options[i]; + if(option.length > 2) + { + var group = option[2]; + if(group!=previousGroup) + { + if(previousGroup!=null && optgroup!=null) + { + result.push(optgroup); + previousGroup=null; + optgroup=null; + } + optgroup = document.createElement('optgroup'); + optgroup.label = group; + previousGroup = group; + } + } + var opt = document.createElement('option'); + opt.text = option[0]; + opt.innerHTML = option[0]; + opt.value = option[1]; + if(optgroup!=null) + optgroup.appendChild(opt); + else + result.push(opt); + } + if(optgroup!=null) + result.push(optgroup); + return result; + }, + + /** + * Set focus (delayed) on a particular element. + * @function ? + * @param {string} element - Element id + */ + focus : function(element) + { + var obj = jQuery("#" + element).get(0); + if(typeof(obj) != "undefined" && typeof(obj.focus) != "undefined") + setTimeout(function(){ obj.focus(); }, 100); + return false; + }, + + /** + * Replace a DOM element either with given content or + * with content from a CallBack response boundary + * using a replacement method. + * @function ? + * @param {string|element} element - DOM element or element id + * @param {string} method - Name of method to use for replacement + * @param {optional string} content - New content of element + * @param {optional string} boundary - Boundary of new content + */ + replace : function(element, method, content, boundary) + { + if(boundary) + { + var result = Prado.Element.extractContent(this.transport.responseText, boundary); + if(result != null) + content = result; + } + if(typeof(element) == "string") + { + if(jQuery("#" + element).get(0)) + method.toFunction().apply(this,[element,""+content]); + } + else + { + method.toFunction().apply(this,[""+content]); + } + }, + + /** + * Appends a javascript block to the document. + * @function ? + * @param {string} boundary - Boundary containing the javascript code + */ + appendScriptBlock : function(boundary) + { + var content = Prado.Element.extractContent(this.transport.responseText, boundary); + if(content == null) + return; + + var el = document.createElement("script"); + el.type = "text/javascript"; + el.id = 'inline_' + boundary; + el.text = content; + + (document.getElementsByTagName('head')[0] || document.documentElement).appendChild(el); + el.parentNode.removeChild(el); + }, /** - * Returns browser information. + * Extract content from a text by its boundary id. + * Boundaries have this form: * <pre> - * var browser = Prado.Browser(); - * alert(browser.ie); //should ouput true if IE, false otherwise + * <!--123456-->Democontent<!--//123456--> * </pre> - * @function {object} ? - * @version 1.0 - * @returns browserinfo - * @... {string} agent - Reported user agent - * @... {string} ver - Reported agent version - * @... {0|1} dom - 1 for DOM browsers - * @... {0|1} ns4 - 1 for Netscape 4 - * @... {0|1} ns6 - 1 for Netscape 6 and Firefox - * @... {boolean} ie3 - true for IE 3 - * @... {0|1} ie5 - 1 for IE 5 - * @... {0|1} ie6 - 1 for IE 6 - * @... {0|1} ie4 - 1 for IE 4 - * @... {0|1} ie - 1 for IE 4-6 - * @... {0|1} hotjava - 1 for HotJava - * @... {0|1} ver3 - 1 for IE3 and HotJava - * @... {0|1} opera - 1 for Opera - * @... {boolean} opera7 - true for Opera 7 - * @... {0|1} operaOld - 1 for older Opera - * @... {0|1} bw - 1 for IE 4-6, Netscape 4&6, Firefox and Opera - * @... {boolean} mac - true for mac systems - * @... {static} Version - Version of returned structure (1.0) - */ - Browser : function() - { - var info = { Version : "1.0" }; - var is_major = parseInt( navigator.appVersion ); - info.nver = is_major; - info.ver = navigator.appVersion; - info.agent = navigator.userAgent; - info.dom = document.getElementById ? 1 : 0; - info.opera = window.opera ? 1 : 0; - info.ie5 = ( info.ver.indexOf( "MSIE 5" ) > -1 && info.dom && !info.opera ) ? 1 : 0; - info.ie6 = ( info.ver.indexOf( "MSIE 6" ) > -1 && info.dom && !info.opera ) ? 1 : 0; - info.ie4 = ( document.all && !info.dom && !info.opera ) ? 1 : 0; - info.ie = info.ie4 || info.ie5 || info.ie6; - info.mac = info.agent.indexOf( "Mac" ) > -1; - info.ns6 = ( info.dom && parseInt( info.ver ) >= 5 ) ? 1 : 0; - info.ie3 = ( info.ver.indexOf( "MSIE" ) && ( is_major < 4 ) ); - info.hotjava = ( info.agent.toLowerCase().indexOf( 'hotjava' ) != -1 ) ? 1 : 0; - info.ns4 = ( document.layers && !info.dom && !info.hotjava ) ? 1 : 0; - info.bw = ( info.ie6 || info.ie5 || info.ie4 || info.ns4 || info.ns6 || info.opera ); - info.ver3 = ( info.hotjava || info.ie3 ); - info.opera7 = ( ( info.agent.toLowerCase().indexOf( 'opera 7' ) > -1 ) || ( info.agent.toLowerCase().indexOf( 'opera/7' ) > -1 ) ); - info.operaOld = info.opera && !info.opera7; - return info; - }, - - /** - * Import CSS from Url. + * @function {string} ? + * @param {string} text - Text that contains boundaries + * @param {string} boundary - Boundary id + * @returns Content from given boundaries + */ + extractContent : function(text, boundary) + { + var tagStart = '<!--'+boundary+'-->'; + var tagEnd = '<!--//'+boundary+'-->'; + var start = text.indexOf(tagStart); + if(start > -1) + { + start += tagStart.length; + var end = text.indexOf(tagEnd,start); + if(end > -1) + return text.substring(start,end); + } + return null; + /*var f = RegExp('(?:<!--'+boundary+'-->)((?:.|\n|\r)+?)(?:<!--//'+boundary+'-->)',"m"); + var result = text.match(f); + if(result && result.length >= 2) + return result[1]; + else + return null;*/ + }, + + /** + * Evaluate a javascript snippet from a string. * @function ? - * @param doc - document DOM object - * @param css_file - Url to CSS file + * @param {string} content - String containing the script */ - ImportCss : function(doc, css_file) + evaluateScript : function(content) { - if (Prado.Browser().ie) - var styleSheet = doc.createStyleSheet(css_file); + try + { + content.evalScripts(); + } + catch(e) + { + if(typeof(Logger) != "undefined") + Logger.error('Error during evaluation of script "'+content+'"'); + else + debugger; + throw e; + } + }, + + /** + * Set CSS style with Camelized keys. + * See <a href="http://www.prototypejs.org/api/element/setstyle" target="_blank">Prototype's + * Element.setStyle</a> for details. + * @function ? + * @param {string|element} element - DOM element or element id + * @param {object} styles - Object with style properties/values + */ + setStyle : function (element, styles) + { + var s = {} + // Camelize all styles keys + for (var property in styles) + { + s[property.camelize()]=styles[property].camelize(); + } + Element.setStyle(element, s); + } +}; + +jQuery.extend(String.prototype, { + + /** + * Add padding to string + * @function {string} ? + * @param {string} side - "left" to pad the string on the left, "right" to pad right. + * @param {int} len - Minimum string length. + * @param {string} chr - Character(s) to pad + * @returns Padded string + */ + pad : function(side, len, chr) { + if (!chr) chr = ' '; + var s = this; + var left = side.toLowerCase()=='left'; + while (s.length<len) s = left? chr + s : s + chr; + return s; + }, + + /** + * Add left padding to string + * @function {string} ? + * @param {int} len - Minimum string length. + * @param {string} chr - Character(s) to pad + * @returns Padded string + */ + padLeft : function(len, chr) { + return this.pad('left',len,chr); + }, + + /** + * Add right padding to string + * @function {string} ? + * @param {int} len - Minimum string length. + * @param {string} chr - Character(s) to pad + * @returns Padded string + */ + padRight : function(len, chr) { + return this.pad('right',len,chr); + }, + + /** + * Add zeros to the right of string + * @function {string} ? + * @param {int} len - Minimum string length. + * @returns Padded string + */ + zerofill : function(len) { + return this.padLeft(len,'0'); + }, + + /** + * Remove white spaces from both ends of string. + * @function {string} ? + * @returns Trimmed string + */ + trim : function() { + return this.replace(/^\s+|\s+$/g,''); + }, + + /** + * Remove white spaces from the left side of string. + * @function {string} ? + * @returns Trimmed string + */ + trimLeft : function() { + return this.replace(/^\s+/,''); + }, + + /** + * Remove white spaces from the right side of string. + * @function {string} ? + * @returns Trimmed string + */ + trimRight : function() { + return this.replace(/\s+$/,''); + }, + + /** + * Convert period separated function names into a function reference. + * <br />Example: + * <pre> + * "Prado.AJAX.Callback.Action.setValue".toFunction() + * </pre> + * @function {function} ? + * @returns Reference to the corresponding function + */ + toFunction : function() + { + var commands = this.split(/\./); + var command = window; + jQuery(commands).each(function(idx, action) + { + if(command[new String(action)]) + command=command[new String(action)]; + }); + if(typeof(command) == "function") + return command; else { - var elm = doc.createElement("link"); + if(typeof Logger != "undefined") + Logger.error("Missing function", this); + + throw new Error ("Missing function '"+this+"'"); + } + }, + + /** + * Convert string into integer, returns null if not integer. + * @function {int} ? + * @returns Integer, null if string does not represent an integer. + */ + toInteger : function() + { + var exp = /^\s*[-\+]?\d+\s*$/; + if (this.match(exp) == null) + return null; + var num = parseInt(this, 10); + return (isNaN(num) ? null : num); + }, - elm.rel = "stylesheet"; - elm.href = css_file; - var headArr; + /** + * Convert string into a double/float value. <b>Internationalization + * is not supported</b> + * @function {double} ? + * @param {string} decimalchar - Decimal character, defaults to "." + * @returns Double, null if string does not represent a float value + */ + toDouble : function(decimalchar) + { + if(this.length <= 0) return null; + decimalchar = decimalchar || "."; + var exp = new RegExp("^\\s*([-\\+])?(\\d+)?(\\" + decimalchar + "(\\d+))?\\s*$"); + var m = this.match(exp); - if (headArr = doc.getElementsByTagName("head")) - headArr[0].appendChild(elm); + if (m == null) + return null; + m[1] = m[1] || ""; + m[2] = m[2] || "0"; + m[4] = m[4] || "0"; + + var cleanInput = m[1] + (m[2].length>0 ? m[2] : "0") + "." + m[4]; + var num = parseFloat(cleanInput); + return (isNaN(num) ? null : num); + }, + + /** + * Convert strings that represent a currency value to float. + * E.g. "10,000.50" will become "10000.50". The number + * of dicimal digits, grouping and decimal characters can be specified. + * <i>The currency input format is <b>very</b> strict, null will be returned if + * the pattern does not match</i>. + * @function {double} ? + * @param {string} groupchar - Grouping character, defaults to "," + * @param {int} digits - Number of decimal digits + * @param {string} decimalchar - Decimal character, defaults to "." + * @returns Double, null if string does not represent a currency value + */ + toCurrency : function(groupchar, digits, decimalchar) + { + groupchar = groupchar || ","; + decimalchar = decimalchar || "."; + digits = typeof(digits) == "undefined" ? 2 : digits; + + var exp = new RegExp("^\\s*([-\\+])?(((\\d+)\\" + groupchar + ")*)(\\d+)" + + ((digits > 0) ? "(\\" + decimalchar + "(\\d{1," + digits + "}))?" : "") + + "\\s*$"); + var m = this.match(exp); + if (m == null) + return null; + var intermed = m[2] + m[5] ; + var cleanInput = m[1] + intermed.replace( + new RegExp("(\\" + groupchar + ")", "g"), "") + + ((digits > 0) ? "." + m[7] : ""); + var num = parseFloat(cleanInput); + return (isNaN(num) ? null : num); + }, + + /** + * Converts the string to a date by finding values that matches the + * date format pattern. + * @function {Date} ? + * @param {string} format - Date format pattern, e.g. MM-dd-yyyy + * @returns Date extracted from the string + */ + toDate : function(format) + { + return Date.SimpleParse(this, format); + } +}); + +jQuery.extend(Date.prototype, +{ + /** + * SimpleFormat + * @function ? + * @param {string} format - TODO + * @param {string} data - TODO + * @returns TODO + */ + SimpleFormat: function(format, data) + { + data = data || {}; + var bits = new Array(); + bits['d'] = this.getDate(); + bits['dd'] = String(this.getDate()).zerofill(2); + + bits['M'] = this.getMonth()+1; + bits['MM'] = String(this.getMonth()+1).zerofill(2); + if(data.AbbreviatedMonthNames) + bits['MMM'] = data.AbbreviatedMonthNames[this.getMonth()]; + if(data.MonthNames) + bits['MMMM'] = data.MonthNames[this.getMonth()]; + var yearStr = "" + this.getFullYear(); + yearStr = (yearStr.length == 2) ? '19' + yearStr: yearStr; + bits['yyyy'] = yearStr; + bits['yy'] = bits['yyyy'].toString().substr(2,2); + + // do some funky regexs to replace the format string + // with the real values + var frm = new String(format); + for (var sect in bits) + { + var reg = new RegExp("\\b"+sect+"\\b" ,"g"); + frm = frm.replace(reg, bits[sect]); } + return frm; + }, + + /** + * toISODate + * @function {string} ? + * @returns TODO + */ + toISODate : function() + { + var y = this.getFullYear(); + var m = String(this.getMonth() + 1).zerofill(2); + var d = String(this.getDate()).zerofill(2); + return String(y) + String(m) + String(d); } -}; +}); + +jQuery.extend(Date, +{ + /** + * SimpleParse + * @function ? + * @param {string} format - TODO + * @param {string} data - TODO + * @returns TODO + */ + SimpleParse: function(value, format) + { + var val=String(value); + format=String(format); + + if(val.length <= 0) return null; + + if(format.length <= 0) return new Date(value); + + var isInteger = function (val) + { + var digits="1234567890"; + for (var i=0; i < val.length; i++) + { + if (digits.indexOf(val.charAt(i))==-1) { return false; } + } + return true; + }; + + var getInt = function(str,i,minlength,maxlength) + { + for (var x=maxlength; x>=minlength; x--) + { + var token=str.substring(i,i+x); + if (token.length < minlength) { return null; } + if (isInteger(token)) { return token; } + } + return null; + }; + + var i_val=0; + var i_format=0; + var c=""; + var token=""; + var token2=""; + var x,y; + var now=new Date(); + var year=now.getFullYear(); + var month=now.getMonth()+1; + var date=1; + + while (i_format < format.length) + { + // Get next token from format string + c=format.charAt(i_format); + token=""; + while ((format.charAt(i_format)==c) && (i_format < format.length)) + { + token += format.charAt(i_format++); + } + + // Extract contents of value based on format token + if (token=="yyyy" || token=="yy" || token=="y") + { + if (token=="yyyy") { x=4;y=4; } + if (token=="yy") { x=2;y=2; } + if (token=="y") { x=2;y=4; } + year=getInt(val,i_val,x,y); + if (year==null) { return null; } + i_val += year.length; + if (year.length==2) + { + if (year > 70) { year=1900+(year-0); } + else { year=2000+(year-0); } + } + } + + else if (token=="MM"||token=="M") + { + month=getInt(val,i_val,token.length,2); + if(month==null||(month<1)||(month>12)){return null;} + i_val+=month.length; + } + else if (token=="dd"||token=="d") + { + date=getInt(val,i_val,token.length,2); + if(date==null||(date<1)||(date>31)){return null;} + i_val+=date.length; + } + else + { + if (val.substring(i_val,i_val+token.length)!=token) {return null;} + else {i_val+=token.length;} + } + } + + // If there are any trailing characters left in the value, it doesn't match + if (i_val != val.length) { return null; } + + // Is date valid for month? + if (month==2) + { + // Check for leap year + if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year + if (date > 29){ return null; } + } + else { if (date > 28) { return null; } } + } + + if ((month==4)||(month==6)||(month==9)||(month==11)) + { + if (date > 30) { return null; } + } + + var newdate=new Date(year,month-1,date, 0, 0, 0); + return newdate; + } +}); diff --git a/framework/Web/Javascripts/source/prado/validator/validation3.js b/framework/Web/Javascripts/source/prado/validator/validation3.js index 0361389f..c820b610 100644 --- a/framework/Web/Javascripts/source/prado/validator/validation3.js +++ b/framework/Web/Javascripts/source/prado/validator/validation3.js @@ -61,7 +61,7 @@ * @module validation */ -Prado.Validation = Class.create(); +Prado.Validation = jQuery.klass(); /** * Global Validation Object. @@ -76,7 +76,7 @@ Prado.Validation = Class.create(); * * @object {static} Prado.Validation */ -Object.extend(Prado.Validation, +jQuery.extend(Prado.Validation, { /** * Hash of registered validation managers @@ -133,8 +133,10 @@ Object.extend(Prado.Validation, */ getForm : function() { - var keys = $H(this.managers).keys(); - return keys[0]; + var keys = jQuery.map(this.managers, function(value, key) { + return key; + }); + return keys.length>0 ? keys[0] : null; }, /** @@ -201,14 +203,14 @@ Object.extend(Prado.Validation, setErrorMessage : function(validatorID, message) { - $H(Prado.Validation.managers).each(function(manager) + jQuery.each(Prado.Validation.managers, function(manager) { - manager[1].validators.each(function(validator) + jQuery.each(manager[1].validators, function(validator) { if(validator.options.ID == validatorID) { validator.options.ErrorMessage = message; - $(validatorID).innerHTML = message; + jQuery("#" + validatorID).get(0).innerHTML = message; } }); }); @@ -216,9 +218,9 @@ Object.extend(Prado.Validation, updateActiveCustomValidator : function(validatorID, isValid) { - $H(Prado.Validation.managers).each(function(manager) + jQuery.each(Prado.Validation.managers, function(idx, manager) { - manager[1].validators.each(function(validator) + jQuery.each(manager[1].validators, function(idx, validator) { if(validator.options.ID == validatorID) { @@ -239,7 +241,7 @@ Object.extend(Prado.Validation, * * @class Prado.ValidationManager */ -Prado.ValidationManager = Class.create(); +Prado.ValidationManager = jQuery.klass(); Prado.ValidationManager.prototype = { /** @@ -301,7 +303,10 @@ Prado.ValidationManager.prototype = */ reset : function(group) { - this.validatorPartition(group)[0].invoke('reset'); + var vals = this.validatorPartition(group)[0]; + for(var i = 0; i < vals.length; i++) + vals[i].reset(); + this.updateSummary(group, true); }, @@ -316,9 +321,14 @@ Prado.ValidationManager.prototype = validate : function(group, source) { var partition = this.validatorPartition(group); - var valid = partition[0].invoke('validate', source).all(); + var valid=true; + for(var i = 0; i < partition[0].length; i++) + { + if(!partition[0][i].validate(source)) + valid=false; + } this.focusOnError(partition[0]); - partition[1].invoke('hide'); + jQuery(partition[1]).hide(); this.updateSummary(group, true); return valid; }, @@ -374,12 +384,16 @@ Prado.ValidationManager.prototype = */ validatorsInGroup : function(groupID) { - if(this.groups.include(groupID)) + if(jQuery.inArray(groupID, this.groups)!=-1) { - return this.validators.partition(function(val) - { - return val.group == groupID; + var trues = [], falses = []; + jQuery.each(this.validators, function(idx, val) { + if(val.group == groupID) + trues.push(val); + else + falses.push(val); }); + return [trues, falses]; } else return [[],[]]; @@ -396,10 +410,14 @@ Prado.ValidationManager.prototype = */ validatorsWithoutGroup : function() { - return this.validators.partition(function(val) - { - return !val.group; + var trues = [], falses = []; + jQuery.each(this.validators, function(idx, val) { + if(!val.group) + trues.push(val); + else + falses.push(val); }); + return [trues, falses]; }, /** @@ -412,7 +430,13 @@ Prado.ValidationManager.prototype = */ isValid : function(group) { - return this.validatorPartition(group)[0].pluck('isValid').all(); + for(var i = 0; i < this.validatorPartition(group)[0]; i++) + { + if(!this.validatorPartition(group)[0].isValid()) + return false; + } + + return true; }, /** @@ -427,7 +451,7 @@ Prado.ValidationManager.prototype = this.removeValidator(validator); this.validators.push(validator); - if(validator.group && !this.groups.include(validator.group)) + if(validator.group && jQuery.inArray(validator.group, this.groups)==-1) this.groups.push(validator.group); if (typeof this.controls[validator.control.id] === 'undefined') @@ -452,14 +476,15 @@ Prado.ValidationManager.prototype = */ removeValidator : function(validator) { - this.validators = this.validators.reject(function(v) + this.validators = jQuery.grep(this.validators, function(v) { - return (v.options.ID==validator.options.ID); + return (v.options.ID!=validator.options.ID); }); + // WTF? if (this.controls[validator.control.id]) - this.controls[validator.control.id].reject( function(v) + jQuery.grep(this.controls[validator.control.id], function(v) { - return (v.options.ID==validator.options.ID) + return (v.options.ID!=validator.options.ID) }); }, @@ -473,7 +498,7 @@ Prado.ValidationManager.prototype = */ getValidatorsWithError : function(group) { - return this.validatorPartition(group)[0].findAll(function(validator) + return jQuery.grep(this.validatorPartition(group)[0], function(validator) { return !validator.isValid; }); @@ -491,7 +516,7 @@ Prado.ValidationManager.prototype = updateSummary : function(group, refresh) { var validators = this.getValidatorsWithError(group); - this.summaries.each(function(summary) + jQuery.each(this.summaries, function(idx, summary) { var inGroup = group && summary.group == group; var noGroup = !group || !summary.group; @@ -522,7 +547,7 @@ Prado.ValidationManager.prototype = * * @class Prado.WebUI.TValidationSummary */ -Prado.WebUI.TValidationSummary = Class.create(); +Prado.WebUI.TValidationSummary = jQuery.klass(); Prado.WebUI.TValidationSummary.prototype = { /** @@ -558,8 +583,8 @@ Prado.WebUI.TValidationSummary.prototype = * Summary DOM element * @var {element} messages */ - this.messages = $(options.ID); - Prado.Registry.set(options.ID, this); + this.messages = jQuery("#" + options.ID).get(0); + Prado.Registry[options.ID] = this; if(this.messages) { /** @@ -592,7 +617,14 @@ Prado.WebUI.TValidationSummary.prototype = var refresh = update || this.visible == false || this.options.Refresh != false; // Also, do not refresh summary if at least 1 validator is waiting for callback response. // This will avoid the flickering of summary if the validator passes its test - refresh = refresh && validators.any(function(v) { return !v.requestDispatched; }); + for(var i = 0; i < validators.length; i++) + { + if(validators[i].requestDispatched) + { + refresh=false; + break; + } + } if(this.options.ShowSummary != false && refresh) { @@ -619,7 +651,7 @@ Prado.WebUI.TValidationSummary.prototype = { while(this.messages.childNodes.length > 0) this.messages.removeChild(this.messages.lastChild); - this.messages.insert(this.formatSummary(messages)); + jQuery(this.messages).append(this.formatSummary(messages)); }, /** @@ -642,7 +674,7 @@ Prado.WebUI.TValidationSummary.prototype = getMessages : function(validators) { var messages = []; - validators.each(function(validator) + jQuery.each(validators, function(idx, validator) { var message = validator.getErrorMessage(); if(typeof(message) == 'string' && message.length > 0) @@ -666,7 +698,7 @@ Prado.WebUI.TValidationSummary.prototype = { this.messages.style.visibility="hidden"; if(this.options.Display == "None" || this.options.Display == "Dynamic") - this.messages.hide(); + jQuery(this.messages).hide(); } this.visible = false; }, @@ -682,7 +714,7 @@ Prado.WebUI.TValidationSummary.prototype = if(typeof(this.options.OnShowSummary) == "function") this.options.OnShowSummary(this,validators); else - this.messages.show(); + jQuery(this.messages).show(); this.visible = true; }, @@ -724,7 +756,7 @@ Prado.WebUI.TValidationSummary.prototype = var format = this.formats(this.options.DisplayMode); var output = this.options.HeaderText ? this.options.HeaderText + format.header : ""; output += format.first; - messages.each(function(message) + jQuery.each(messages, function(idx, message) { output += message.length > 0 ? format.pre + message + format.post : ""; }); @@ -776,7 +808,7 @@ Prado.WebUI.TValidationSummary.prototype = * * @class Prado.WebUI.TBaseValidator */ -Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, +Prado.WebUI.TBaseValidator = jQuery.klass(Prado.WebUI.Control, { /** * Initialize TBaseValidator. @@ -846,14 +878,14 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, * DOM element of control to validate * @var {element} control */ - this.control = $(options.ControlToValidate); + this.control = jQuery("#" + options.ControlToValidate).get(0); /** * DOM element of validator * @var {element} message */ - this.message = $(options.ID); + this.message = jQuery("#" + options.ID).get(0); - Prado.Registry.set(options.ID, this); + Prado.Registry[options.ID] = this; if (this.onInit) this.onInit(); @@ -907,7 +939,7 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, if(this.options.Display == "Dynamic") { var msg=this.message; - this.isValid ? msg.hide() : msg.show(); + this.isValid ? jQuery(msg).hide() : jQuery(msg).show(); } this.message.style.visibility = this.isValid ? "hidden" : "visible"; } @@ -933,13 +965,13 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, if (control.lastValidator == this.options.ID) { control.lastValidator = null; - control.removeClassName(CssClass); + jQuery(control).removeClass(CssClass); } } else { control.lastValidator = this.options.ID; - control.addClassName(CssClass); + jQuery(control).addClass(CssClass); } } }, @@ -977,7 +1009,7 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, { //try to find the control. if(!this.control) - this.control = $(this.options.ControlToValidate); + this.control = jQuery("#" + this.options.ControlToValidate).get(0); if(!this.control || this.control.disabled) { @@ -1102,7 +1134,7 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, return value; else { - var value = string.toDate(this.options.DateFormat); + var value = string.toDate(string, this.options.DateFormat); if(value && typeof(value.getTime) == "function") return value.getTime(); else @@ -1131,7 +1163,7 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, case 'TDatePicker': if(control.type == "text") { - var value = this.trim($F(control)); + var value = this.trim(jQuery("#" + control).get(0).val()); if(this.options.DateFormat) { @@ -1151,15 +1183,17 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, case 'THtmlArea4': if(typeof tinyMCE != "undefined") tinyMCE.triggerSave(); - return $F(control); + return control.value; case 'TRadioButton': if(this.options.GroupName) return this.getRadioButtonGroupValue(); + case 'TCheckBox': + return control.checked; default: if(this.isListControlType()) return this.getFirstSelectedListValue(); else - return $F(control); + return jQuery(control).val(); } }, @@ -1184,6 +1218,7 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, case 'THtmlArea4': return this.trim(value); case 'TRadioButton': + case 'TCheckBox': return value; default: if(this.isListControlType()) @@ -1202,7 +1237,7 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, { var name = this.control.name; var value = ""; - $A(document.getElementsByName(name)).each(function(el) + jQuery.each(document.getElementsByName(name), function(idx, el) { if(el.checked) value = el.value; @@ -1216,13 +1251,10 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, */ observeDatePickerChanges : function() { - if(Prado.Browser().ie) - { - var DatePicker = Prado.WebUI.TDatePicker; - this.observeChanges(DatePicker.getDayListControl(this.control)); - this.observeChanges(DatePicker.getMonthListControl(this.control)); - this.observeChanges(DatePicker.getYearListControl(this.control)); - } + var DatePicker = Prado.WebUI.TDatePicker; + this.observeChanges(DatePicker.getDayListControl(this.control)); + this.observeChanges(DatePicker.getMonthListControl(this.control)); + this.observeChanges(DatePicker.getYearListControl(this.control)); }, /** @@ -1239,7 +1271,7 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, var checked = 0; var values = []; var isSelected = this.isCheckBoxType(elements[0]) ? 'checked' : 'selected'; - elements.each(function(element) + jQuery.each(elements, function(idx, element) { if(element[isSelected] && element.value != initialValue) { @@ -1266,19 +1298,19 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, var elements = []; for(var i = 0; i < this.options.TotalItems; i++) { - var element = $(this.options.ControlToValidate+"_c"+i); + var element = jQuery("#" + this.options.ControlToValidate+"_c"+i).get(0); if(this.isCheckBoxType(element)) elements.push(element); } return elements; case 'TListBox': var elements = []; - var element = $(this.options.ControlToValidate); + var element = jQuery("#" + this.options.ControlToValidate).get(0); var type; if(element && (type = element.type.toLowerCase())) { if(type == "select-one" || type == "select-multiple") - elements = $A(element.options); + elements = element.options; } return elements; default: @@ -1310,7 +1342,7 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, isListControlType : function() { var list = ['TCheckBoxList', 'TRadioButtonList', 'TListBox']; - return list.include(this.options.ControlType); + return (jQuery.inArray(this.options.ControlType, list)!=-1); }, /** @@ -1339,7 +1371,7 @@ Prado.WebUI.TBaseValidator = Class.create(Prado.WebUI.Control, * @class Prado.WebUI.TRequiredFieldValidator * @extends Prado.WebUI.TBaseValidator */ -Prado.WebUI.TRequiredFieldValidator = Class.extend(Prado.WebUI.TBaseValidator, +Prado.WebUI.TRequiredFieldValidator = jQuery.klass(Prado.WebUI.TBaseValidator, { /** * Evaluate validation state @@ -1380,7 +1412,7 @@ Prado.WebUI.TRequiredFieldValidator = Class.extend(Prado.WebUI.TBaseValidator, * @class Prado.WebUI.TCompareValidator * @extends Prado.WebUI.TBaseValidator */ -Prado.WebUI.TCompareValidator = Class.extend(Prado.WebUI.TBaseValidator, +Prado.WebUI.TCompareValidator = jQuery.klass(Prado.WebUI.TBaseValidator, { /** * Additional constructor options. @@ -1407,7 +1439,7 @@ Prado.WebUI.TCompareValidator = Class.extend(Prado.WebUI.TBaseValidator, if (value.length <= 0) return true; - var comparee = $(this.options.ControlToCompare); + var comparee = jQuery("#" + this.options.ControlToCompare).get(0); if(comparee) var compareTo = this.getValidationValue(comparee); @@ -1487,7 +1519,7 @@ Prado.WebUI.TCompareValidator = Class.extend(Prado.WebUI.TBaseValidator, * @class Prado.WebUI.TCustomValidator * @extends Prado.WebUI.TBaseValidator */ -Prado.WebUI.TCustomValidator = Class.extend(Prado.WebUI.TBaseValidator, +Prado.WebUI.TCustomValidator = jQuery.klass(Prado.WebUI.TBaseValidator, { /** * Additional constructor options. @@ -1521,7 +1553,7 @@ Prado.WebUI.TCustomValidator = Class.extend(Prado.WebUI.TBaseValidator, * @class Prado.WebUI.TActiveCustomValidator * @extends Prado.WebUI.TBaseValidator */ -Prado.WebUI.TActiveCustomValidator = Class.extend(Prado.WebUI.TBaseValidator, +Prado.WebUI.TActiveCustomValidator = jQuery.klass(Prado.WebUI.TBaseValidator, { /** * Override the parent implementation to store the invoker, in order to @@ -1538,7 +1570,7 @@ Prado.WebUI.TActiveCustomValidator = Class.extend(Prado.WebUI.TBaseValidator, //try to find the control. if(!this.control) - this.control = $(this.options.ControlToValidate); + this.control = jQuery("#" + this.options.ControlToValidate).get(0); if(!this.control || this.control.disabled) { @@ -1604,7 +1636,7 @@ Prado.WebUI.TActiveCustomValidator = Class.extend(Prado.WebUI.TBaseValidator, * @class Prado.WebUI.TRangeValidator * @extends Prado.WebUI.TBaseValidator */ -Prado.WebUI.TRangeValidator = Class.extend(Prado.WebUI.TBaseValidator, +Prado.WebUI.TRangeValidator = jQuery.klass(Prado.WebUI.TBaseValidator, { /** * Additional constructor options. @@ -1663,7 +1695,7 @@ Prado.WebUI.TRangeValidator = Class.extend(Prado.WebUI.TBaseValidator, * @class Prado.WebUI.TRegularExpressionValidator * @extends Prado.WebUI.TBaseValidator */ -Prado.WebUI.TRegularExpressionValidator = Class.extend(Prado.WebUI.TBaseValidator, +Prado.WebUI.TRegularExpressionValidator = jQuery.klass(Prado.WebUI.TBaseValidator, { /** * Additional constructor option. @@ -1707,7 +1739,7 @@ Prado.WebUI.TEmailAddressValidator = Prado.WebUI.TRegularExpressionValidator; * @class Prado.WebUI.TListControlValidator * @extends Prado.WebUI.TBaseValidator */ -Prado.WebUI.TListControlValidator = Class.extend(Prado.WebUI.TBaseValidator, +Prado.WebUI.TListControlValidator = jQuery.klass(Prado.WebUI.TBaseValidator, { /** * Evaluate validation state @@ -1733,10 +1765,10 @@ Prado.WebUI.TListControlValidator = Class.extend(Prado.WebUI.TBaseValidator, */ observeListElements : function(elements) { - if(Prado.Browser().ie && this.isCheckBoxType(elements[0])) + if(this.isCheckBoxType(elements[0])) { var validator = this; - elements.each(function(element) + jQuery.each(elements, function(idx, element) { validator.observeChanges(element); }); @@ -1763,9 +1795,9 @@ Prado.WebUI.TListControlValidator = Class.extend(Prado.WebUI.TBaseValidator, { if(values.length < required.length) return false; - required.each(function(requiredValue) + jQuery.each(required, function(idx, requiredValue) { - exists = exists && values.include(requiredValue); + exists = exists && (jQuery.inArray(requiredValue, values)!=-1); }); } @@ -1808,7 +1840,7 @@ Prado.WebUI.TListControlValidator = Class.extend(Prado.WebUI.TBaseValidator, * @class Prado.WebUI.TDataTypeValidator * @extends Prado.WebUI.TBaseValidator */ -Prado.WebUI.TDataTypeValidator = Class.extend(Prado.WebUI.TBaseValidator, +Prado.WebUI.TDataTypeValidator = jQuery.klass(Prado.WebUI.TBaseValidator, { /** * Additional constructor option. @@ -1839,7 +1871,7 @@ Prado.WebUI.TDataTypeValidator = Class.extend(Prado.WebUI.TBaseValidator, * @class Prado.WebUI.TCaptchaValidator * @extends Prado.WebUI.TBaseValidator */ -Prado.WebUI.TCaptchaValidator = Class.extend(Prado.WebUI.TBaseValidator, +Prado.WebUI.TCaptchaValidator = jQuery.klass(Prado.WebUI.TBaseValidator, { /** * Evaluate validation state @@ -1910,7 +1942,7 @@ Prado.WebUI.TCaptchaValidator = Class.extend(Prado.WebUI.TBaseValidator, * @class Prado.WebUI.TReCaptchaValidator * @extends Prado.WebUI.TBaseValidator */ -Prado.WebUI.TReCaptchaValidator = Class.create(Prado.WebUI.TBaseValidator, +Prado.WebUI.TReCaptchaValidator = jQuery.klass(Prado.WebUI.TBaseValidator, { onInit : function() { @@ -1926,7 +1958,7 @@ Prado.WebUI.TReCaptchaValidator = Class.create(Prado.WebUI.TBaseValidator, responseChanged: function() { - var field = $(this.options.ID+'_1'); + var field = jQuery("#" + this.options.ID+'_1').get(0); if (field.value=='1') return; field.value = '1'; Prado.Validation.validateControl(this.options.ID); @@ -1939,7 +1971,7 @@ Prado.WebUI.TReCaptchaValidator = Class.create(Prado.WebUI.TBaseValidator, */ evaluateIsValid : function() { - return ($(this.options.ID+'_1').value=='1'); + return (jQuery("#" + this.options.ID+'_1').get(0).value=='1'); } }); |