From c5d0cd2824e3c3bb2f6f3834177a71c1d7b78519 Mon Sep 17 00:00:00 2001
From: xue <>
Date: Tue, 27 Mar 2007 00:47:38 +0000
Subject: merge from 3.0 branch till 1779.
---
framework/Web/Javascripts/js/debug/prado.js | 1662 ++++++++-------------------
1 file changed, 481 insertions(+), 1181 deletions(-)
(limited to 'framework/Web/Javascripts/js/debug/prado.js')
diff --git a/framework/Web/Javascripts/js/debug/prado.js b/framework/Web/Javascripts/js/debug/prado.js
index 8f292b72..87622c93 100644
--- a/framework/Web/Javascripts/js/debug/prado.js
+++ b/framework/Web/Javascripts/js/debug/prado.js
@@ -3349,6 +3349,63 @@ var Builder = {
+var Prado =
+{
+ Version: '3.1',
+
+ /**
+ * Returns browser information. Example
+ *
+ * var browser = Prado.Browser();
+ * alert(browser.ie); //should ouput true if IE, false otherwise
+ *
+ * @param ${parameter}
+ * @return ${return}
+ */
+ 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;
+ },
+
+ ImportCss : function(doc, css_file)
+ {
+ if (Prado.Browser().ie)
+ var styleSheet = doc.createStyleSheet(css_file);
+ else
+ {
+ var elm = doc.createElement("link");
+
+ elm.rel = "stylesheet";
+ elm.href = css_file;
+
+ if (headArr = doc.getElementsByTagName("head"))
+ headArr[0].appendChild(elm);
+ }
+ }
+};
+
+
+
/**
* Similar to bindAsEventLister, but takes additional arguments.
*/
@@ -3485,297 +3542,339 @@ Base.implement = function(_interface) {
this.prototype.extend(_interface);
};
-/*
- * Signals and Slots for Prototype: Easy custom javascript events
- * http://tetlaw.id.au/view/blog/signals-and-slots-for-prototype-easy-custom-javascript-events
- * Andrew Tetlaw
- * Version 1.2 (2006-06-19)
- *
- * http://creativecommons.org/licenses/by-sa/2.5/
+/**
+ * Performs a post-back using javascript
*
-Signal = {
- throwErrors : true,
- MT : function(){ return true },
- connect : function(obj1, func1, obj2, func2, options) {
- var options = Object.extend({
- connectOnce : false,
- before : false,
- mutate : function() {return arguments;}
- }, options || {});
- if(typeof func1 != 'string' || typeof func2 != 'string') return;
+ */
+Prado.PostBack = function(event,options)
+{
+ var form = $(options['FormID']);
+ var canSubmit = true;
- var sigObj = obj1 || window;
- var slotObj = obj2 || window;
- var signame = func1+'__signal_';
- var slotsname = func1+'__slots_';
- if(!sigObj[signame]) {
- // having the slotFunc in a var and setting it by using an anonymous function in this way
- // is apparently a good way to prevent memory leaks in IE if the objects are DOM nodes.
- var slotFunc = function() {
- var args = [];
- for(var x = 0; x < arguments.length; x++){
- args.push(arguments[x]);
- }
- args = options.mutate.apply(null,args)
- var result;
- if(!options.before) result = sigObj[signame].apply(sigObj,arguments); //default: call sign before slot
- sigObj[slotsname].each(function(slot){
- try {
- if(slot && slot[0]) { // testing for null, a disconnect may have nulled this slot
- slot[0][slot[1]].apply(slot[0],args); //[0] = obj, [1] = func name
- }
- } catch(e) {
- if(Signal.throwErrors) throw e;
- }
- });
- if(options.before) result = sigObj[signame].apply(sigObj,arguments); //call slot before sig
- return result; //return sig result
- };
- (function() {
- sigObj[slotsname] = $A([]);
- sigObj[signame] = sigObj[func1] || Signal.MT;
- sigObj[func1] = slotFunc;
- })();
- }
- var con = (sigObj[slotsname].length > 0) ?
- (options.connectOnce ? !sigObj[slotsname].any(function(slot) { return (slot[0] == slotObj && slot[1] == func2) }) : true) :
- true;
- if(con) {
- sigObj[slotsname].push([slotObj,func2]);
- }
- },
- connectOnce : function(obj1, func1, obj2, func2, options) {
- Signal.connect(obj1, func1, obj2, func2, Object.extend(options || {}, {connectOnce : true}))
- },
- disconnect : function(obj1, func1, obj2, func2, options) {
- var options = Object.extend({
- disconnectAll : false
- }, options || {});
- if(typeof func1 != 'string' || typeof func2 != 'string') return;
+ if(options['CausesValidation'] && typeof(Prado.Validation) != "undefined")
+ {
+ if(!Prado.Validation.validate(options['FormID'], options['ValidationGroup'], $(options['ID'])))
+ return Event.stop(event);
+ }
- var sigObj = obj1 || window;
- var slotObj = obj2 || window;
- var signame = func1+'__signal_';
- var slotsname = func1+'__slots_';
+ if(options['PostBackUrl'] && options['PostBackUrl'].length > 0)
+ form.action = options['PostBackUrl'];
- // I null them in this way so that any currectly active signal will read a null slot,
- // otherwise the slot will be applied even though it's been disconnected
- if(sigObj[slotsname]) {
- if(options.disconnectAll) {
- sigObj[slotsname] = sigObj[slotsname].collect(function(slot) {
- if(slot[0] == slotObj && slot[1] == func2) {
- slot[0] = null;
- return null;
- } else {
- return slot;
- }
- }).compact();
- } else {
- var idx = -1;
- sigObj[slotsname] = sigObj[slotsname].collect(function(slot, index) {
- if(slot[0] == slotObj && slot[1] == func2 && idx < 0) { //disconnect first match
- idx = index;
- slot[0] = null;
- return null;
- } else {
- return slot;
- }
- }).compact();
- }
+ 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'];
}
- },
- disconnectAll : function(obj1, func1, obj2, func2, options) {
- Signal.disconnect(obj1, func1, obj2, func2, Object.extend(options || {}, {disconnectAll : true}))
}
-}
-*/
-
-/*
- Tests
-
-// 1. Simple Test 1 "hello Fred" should trigger "Fred is a stupid head"
-
-
- sayHello = function(n) {
- alert("Hello! " + n);
- }
- moron = function(n) {
- alert(n + " is a stupid head");
- }
- Signal.connect(null,'sayHello',null,'moron');
-
- onclick="sayHello('Fred')"
-
-
-// 2. Simple Test 2 repeated insults about Fred
-
-
- Signal.connect(null,'sayHello2',null,'moron2');
- Signal.connect(null,'sayHello2',null,'moron2');
- Signal.connect(null,'sayHello2',null,'moron2');
-
-
-// 3. Simple Test 3 multiple insults about Fred
-
-
- Signal.connect(null,'sayHello3',null,'moron3');
- Signal.connect(null,'sayHello3',null,'bonehead3');
- Signal.connect(null,'sayHello3',null,'idiot3');
-
-
-// 4. Simple Test 4 3 insults about Fred first - 3 then none
-
-
- Signal.connect(null,'sayHello4',null,'moron4');
- Signal.connect(null,'sayHello4',null,'moron4');
- Signal.connect(null,'sayHello4',null,'moron4');
- Signal.disconnect(null,'sayHello4',null,'moron4');
- Signal.disconnect(null,'sayHello4',null,'moron4');
- Signal.disconnect(null,'sayHello4',null,'moron4');
-
-
-// 5. Simple Test 5 connect 3 insults about Fred first - only one, then none
-
-
- Signal.connect(null,'sayHello5',null,'moron5');
- Signal.connect(null,'sayHello5',null,'moron5');
- Signal.connect(null,'sayHello5',null,'moron5');
- Signal.disconnectAll(null,'sayHello5',null,'moron5');
-
-
-// 6. Simple Test 6 connect 3 insults but only one comes out
-
-
- Signal.connectOnce(null,'sayHello6',null,'moron6');
- Signal.connectOnce(null,'sayHello6',null,'moron6');
- Signal.connectOnce(null,'sayHello6',null,'moron6');
-
-
-// 7. Simple Test 7 connect via objects
-
-
- var o = {};
- o.sayHello = function(n) {
- alert("Hello! " + n + " (from object o)");
- }
- var m = {};
- m.moron = function(n) {
- alert(n + " is a stupid head (from object m)");
- }
-
- Signal.connect(o,'sayHello',m,'moron');
-
- onclick="o.sayHello('Fred')"
-
-// 8. Simple Test 8 connect but the insult comes first using {before:true}
-
-
- Signal.connect(null,'sayHello8',null,'moron8', {before:true});
-
-
-// 9. Simple Test 9 connect but the insult is mutated
-
-
- Signal.connect(null,'sayHello9',null,'moron9', {mutate:function() { return ['smelly ' + arguments[0]] }});
+ $('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.stop(event);
+ Event.fireEvent(form,"submit");
+}
- */
-
-
/**
- * @class String extensions
+ * Additional element utilities.
*/
-Object.extend(String.prototype,
+Prado.Element =
{
/**
- * @param {String} "left" to pad the string on the left, "right" to pad right.
- * @param {Number} minimum string length.
- * @param {String} character(s) to pad
- * @return {String} padded character(s) on the left or right to satisfy minimum string length
+ * Set the value of a particular element.
+ * @param string element id
+ * @param string new element value.
*/
-
- pad : function(side, len, chr) {
- if (!chr) chr = ' ';
- var s = this;
- var left = side.toLowerCase()=='left';
- while (s.length -1;
+ if(!el && !isList) return;
+ method = isList ? 'check'+method : el.tagName.toLowerCase()+method;
+ var selection = Prado.Element.Selection;
+ if(isFunction(selection[method]))
+ selection[method](isList ? element : el,value);
},
- /**
- * @param {Number} minimum string length.
- * @param {String} character(s) to pad
- * @return {String} padded character(s) on the right to satisfy minimum string length
- */
- padRight : function(len, chr) {
- return this.pad('right',len,chr);
+ click : function(element)
+ {
+ var el = $(element);
+ if(el)
+ Event.fireEvent(el,'click');
},
- /**
- * @param {Number} minimum string length.
- * @return {String} append zeros to the left to satisfy minimum string length.
- */
- zerofill : function(len) {
- return this.padLeft(len,'0');
+ setAttribute : function(element, attribute, value)
+ {
+ var el = $(element);
+ if(attribute == "disabled" && value==false)
+ el.removeAttribute(attribute);
+ else
+ el.setAttribute(attribute, value);
},
- /**
- * @return {String} removed white spaces from both ends.
- */
- trim : function() {
- return this.replace(/^\s+|\s+$/g,'');
+ setOptions : function(element, options)
+ {
+ var el = $(element);
+ if(el && el.tagName.toLowerCase() == "select")
+ {
+ while(el.length > 0)
+ el.remove(0);
+ for(var i = 0; i1)
+ return Builder.node(tag,args.shift(),args);
+
+ };
+ });
+ }
+});
+
+Builder.exportTags();
+
+/**
+ * @class String extensions
+ */
+Object.extend(String.prototype, {
+ /**
+ * @param {String} "left" to pad the string on the left, "right" to pad right.
+ * @param {Number} minimum string length.
+ * @param {String} character(s) to pad
+ * @return {String} padded character(s) on the left or right to satisfy minimum string length
+ */
+
+ pad : function(side, len, chr) {
+ if (!chr) chr = ' ';
+ var s = this;
+ var left = side.toLowerCase()=='left';
+ while (s.lengthInternationalization
+ /**
+ * Convert a string into a double/float value. Internationalization
* is not supported
* @param {String} the decimal character
* @return {Double} null if string does not represent a float value
@@ -3800,21 +3899,21 @@ Object.extend(String.prototype,
decimalchar = decimalchar || ".";
var exp = new RegExp("^\\s*([-\\+])?(\\d+)?(\\" + decimalchar + "(\\d+))?\\s*$");
var m = this.match(exp);
-
- if (m == null)
+
+ 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 (e.g. a float with grouping
- * characters) to float. E.g. "10,000.50" will become "10000.50". The number
+ * Convert strings that represent a currency value (e.g. a float with grouping
+ * characters) to float. E.g. "10,000.50" will become "10000.50". The number
* of dicimal digits, grouping and decimal characters can be specified.
* The currency input format is very strict, null will be returned if
* the pattern does not match.
@@ -3837,14 +3936,14 @@ Object.extend(String.prototype,
return null;
var intermed = m[2] + m[5] ;
var cleanInput = m[1] + intermed.replace(
- new RegExp("(\\" + groupchar + ")", "g"), "")
+ 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
+ * Converts the string to a date by finding values that matches the
* date format pattern.
* @param string date format pattern, e.g. MM-dd-yyyy
* @return {Date} the date extracted from the string
@@ -3853,8 +3952,8 @@ Object.extend(String.prototype,
{
return Date.SimpleParse(this, format);
}
-});
-
+});
+
/**
* @class Event extensions.
*/
@@ -3925,9 +4024,8 @@ Object.extend(Event,
* @param {Object} element id string or a DOM element.
* @param {String} event type to dispatch.
*/
- fireEvent : function(element,type,canBubble)
+ fireEvent : function(element,type)
{
- canBubble = (typeof(canBubble) == undefined) ? true : canBubble;
element = $(element);
if(type == "submit")
return element.submit();
@@ -3936,14 +4034,14 @@ Object.extend(Event,
if(Event.isHTMLEvent(type))
{
var event = document.createEvent('HTMLEvents');
- event.initEvent(type, canBubble, true);
+ event.initEvent(type, true, true);
}
else if(Event.isMouseEvent(type))
{
var event = document.createEvent('MouseEvents');
if (event.initMouseEvent)
{
- event.initMouseEvent(type,canBubble,true,
+ event.initMouseEvent(type,true,true,
document.defaultView, 1, 0, 0, 0, 0, false,
false, false, false, 0, null);
}
@@ -3951,7 +4049,7 @@ Object.extend(Event,
{
// Safari
// TODO we should be initialising other mouse-event related attributes here
- event.initEvent(type, canBubble, true);
+ event.initEvent(type, true, true);
}
}
element.dispatchEvent(event);
@@ -3964,779 +4062,160 @@ Object.extend(Event,
else if(typeof(element['on'+type]) == "function")
element['on'+type]();
}
-});
-
+});
+
+
Object.extend(Date.prototype,
-{
+{
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()
- {
- 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);
- }
-});
-
-Object.extend(Date,
-{
- SimpleParse: function(value, format)
- {
- 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;
- }
-});
-
-
-Object.extend(Builder,
-{
- exportTags:function()
- {
- var tags=["BUTTON","TT","PRE","H1","H2","H3","BR","CANVAS","HR","LABEL","TEXTAREA","FORM","STRONG","SELECT","OPTION","OPTGROUP","LEGEND","FIELDSET","P","UL","OL","LI","TD","TR","THEAD","TBODY","TFOOT","TABLE","TH","INPUT","SPAN","A","DIV","IMG", "CAPTION"];
- tags.each(function(tag)
- {
- window[tag]=function()
- {
- var args=$A(arguments);
- if(args.length==0)
- return Builder.node(tag,null);
- if(args.length==1)
- return Builder.node(tag,args[0]);
- if(args.length>1)
- return Builder.node(tag,args.shift(),args);
-
- };
- });
- }
-});
-
-Builder.exportTags();
-
-
-
-var Prado =
-{
- Version: '3.1',
-
- /**
- * Returns browser information. Example
- *
- * var browser = Prado.Browser();
- * alert(browser.ie); //should ouput true if IE, false otherwise
- *
- * @param ${parameter}
- * @return ${return}
- */
- 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;
- },
-
- ImportCss : function(doc, css_file)
- {
- if (Prado.Browser().ie)
- var styleSheet = doc.createStyleSheet(css_file);
- else
- {
- var elm = doc.createElement("link");
-
- elm.rel = "stylesheet";
- elm.href = css_file;
-
- if (headArr = doc.getElementsByTagName("head"))
- headArr[0].appendChild(elm);
- }
- }
-};
-
-
-/*Prado.Focus = Class.create();
-
-Prado.Focus.setFocus = function(id)
-{
- var target = document.getElementById ? document.getElementById(id) : document.all[id];
- if(target && !Prado.Focus.canFocusOn(target))
- {
- target = Prado.Focus.findTarget(target);
- }
- if(target)
- {
- try
- {
- target.focus();
- target.scrollIntoView(false);
- if (window.__smartNav)
- {
- window.__smartNav.ae = target.id;
- }
- }
- catch (e)
- {
- }
- }
-}
-
-Prado.Focus.canFocusOn = function(element)
-{
- if(!element || !(element.tagName))
- return false;
- var tagName = element.tagName.toLowerCase();
- return !element.disabled && (!element.type || element.type.toLowerCase() != "hidden") && Prado.Focus.isFocusableTag(tagName) && Prado.Focus.isVisible(element);
-}
-
-Prado.Focus.isFocusableTag = function(tagName)
-{
- return (tagName == "input" || tagName == "textarea" || tagName == "select" || tagName == "button" || tagName == "a");
-}
-
-
-Prado.Focus.findTarget = function(element)
-{
- if(!element || !(element.tagName))
- {
- return null;
- }
- var tagName = element.tagName.toLowerCase();
- if (tagName == "undefined")
- {
- return null;
- }
- var children = element.childNodes;
- if (children)
- {
- for(var i=0;i 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.stop(event);
- Event.fireEvent(form,"submit");
-}
-
-/*
-
-Prado.doPostBack = function(formID, eventTarget, eventParameter, performValidation, validationGroup, actionUrl, trackFocus, clientSubmit)
-{
- if (typeof(performValidation) == 'undefined')
- {
- var performValidation = false;
- var validationGroup = '';
- var actionUrl = null;
- var trackFocus = false;
- var clientSubmit = true;
- }
- var theForm = document.getElementById ? document.getElementById(formID) : document.forms[formID];
- var canSubmit = true;
- if (performValidation)
- {
- //canSubmit = Prado.Validation.validate(validationGroup);
- * Prado.Validation.ActiveTarget = theForm;
- Prado.Validation.CurrentTargetGroup = null;
- Prado.Validation.IsGroupValidation = false;
- canSubmit = Prado.Validation.IsValid(theForm);
- Logger.debug(canSubmit);*
- canSubmit = Prado.Validation.IsValid(theForm);
- }
- if (canSubmit)
- {
- if (actionUrl != null && (actionUrl.length > 0))
- {
- theForm.action = actionUrl;
- }
- if (trackFocus)
- {
- var lastFocus = theForm.elements['PRADO_LASTFOCUS'];
- if ((typeof(lastFocus) != 'undefined') && (lastFocus != null))
- {
- var active = document.activeElement;
- if (typeof(active) == 'undefined')
- {
- lastFocus.value = eventTarget;
- }
- else
- {
- if ((active != null) && (typeof(active.id) != 'undefined'))
- {
- if (active.id.length > 0)
- {
- lastFocus.value = active.id;
- }
- else if (typeof(active.name) != 'undefined')
- {
- lastFocus.value = active.name;
- }
- }
- }
- }
- }
- if (!clientSubmit)
- {
- canSubmit = false;
- }
- }
- if (canSubmit && (!theForm.onsubmit || theForm.onsubmit()))
- {
- theForm.PRADO_POSTBACK_TARGET.value = eventTarget;
- theForm.PRADO_POSTBACK_PARAMETER.value = eventParameter;
- theForm.submit();
- }
-}
-*/
-
-Prado.Element =
-{
- /**
- * Set the value of a particular element.
- * @param string element id
- * @param string new element value.
- */
- setValue : function(element, value)
- {
- var el = $(element);
- if(el && typeof(el.value) != "undefined")
- el.value = value;
- },
-
- select : function(element, method, value, total)
- {
- var el = $(element);
- if(!el) return;
- var selection = Prado.Element.Selection;
- if(typeof(selection[method]) == "function")
- {
- control = selection.isSelectable(el) ? [el] : selection.getListElements(element,total);
- selection[method](control, value);
- }
- },
-
- click : function(element)
- {
- var el = $(element);
- if(el)
- Event.fireEvent(el,'click');
- },
-
- setAttribute : function(element, attribute, value)
- {
- var el = $(element);
- if(!el) return;
- if((attribute == "disabled" || attribute == "multiple") && value==false)
- el.removeAttribute(attribute);
- else if(attribute.match(/^on/i)) //event methods
- {
- try
- {
- eval("(func = function(event){"+value+"})");
- el[attribute] = func;
- }
- catch(e)
- {
- throw "Error in evaluating '"+value+"' for attribute "+attribute+" for element "+element.id;
- }
- }
- else
- el.setAttribute(attribute, value);
- },
-
- setOptions : function(element, options)
- {
- var el = $(element);
- if(!el) return;
- if(el && el.tagName.toLowerCase() == "select")
- {
- el.options.length = options.length;
- for(var i = 0; i)([\\s\\S\\w\\W]*)()',"m");
- var result = text.match(f);
- if(result && result.length >= 2)
- return result[2];
- else
- return null;
- },
-
- evaluateScript : function(content)
+ toISODate : function()
{
- content.evalScripts();
+ 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);
}
-}
+});
-Prado.Element.Selection =
+Object.extend(Date,
{
- isSelectable : function(el)
+ SimpleParse: function(value, format)
{
- if(el && el.type)
+ val=String(value);
+ format=String(format);
+
+ if(val.length <= 0) return null;
+
+ if(format.length <= 0) return new Date(value);
+
+ var isInteger = function (val)
{
- switch(el.type.toLowerCase())
+ var digits="1234567890";
+ for (var i=0; i < val.length; i++)
{
- case 'checkbox':
- case 'radio':
- case 'select':
- case 'select-multiple':
- case 'select-one':
- return true;
+ if (digits.indexOf(val.charAt(i))==-1) { return false; }
}
- }
- return false;
- },
-
- inputValue : function(el, value)
- {
- switch(el.type.toLowerCase())
- {
- case 'checkbox':
- case 'radio':
- return el.checked = value;
- }
- },
+ return true;
+ };
- selectValue : function(elements, value)
- {
- elements.each(function(el)
+ var getInt = function(str,i,minlength,maxlength)
{
- $A(el.options).each(function(option)
+ for (var x=maxlength; x>=minlength; x--)
{
- if(typeof(value) == "boolean")
- options.selected = value;
- else if(option.value == value)
- option.selected = true;
- });
- })
- },
+ var token=str.substring(i,i+x);
+ if (token.length < minlength) { return null; }
+ if (isInteger(token)) { return token; }
+ }
+ return null;
+ };
- selectValues : function(elements, values)
- {
- selection = this;
- values.each(function(value)
- {
- selection.selectValue(elements,value);
- })
- },
+ 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;
- selectIndex : function(elements, index)
- {
- elements.each(function(el)
+ while (i_format < format.length)
{
- if(el.type.toLowerCase() == 'select-one')
- el.selectedIndex = index;
- else
+ // Get next token from format string
+ c=format.charAt(i_format);
+ token="";
+ while ((format.charAt(i_format)==c) && (i_format < format.length))
{
- for(var i = 0; i 70) { year=1900+(year-0); }
+ else { year=2000+(year-0); }
+ }
}
- })
- },
- selectInvert : function(elements)
- {
- elements.each(function(el)
- {
- if(el.type.toLowerCase() != 'select-one')
+ else if (token=="MM"||token=="M")
{
- $A(el.options).each(function(option)
- {
- option.selected = !options.selected;
- })
+ 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;}
}
- })
- },
-
- selectIndices : function(elements, indices)
- {
- selection = this;
- indices.each(function(index)
- {
- selection.selectIndex(elements,index);
- })
- },
-
- selectClear : function(elements)
- {
- elements.each(function(el)
- {
- el.selectedIndex = -1;
- })
- },
-
- getListElements : function(element, total)
- {
- elements = new Array();
- for(i = 0; i < total; i++)
- {
- el = $(element+"_c"+i);
- if(el)
- elements.push(el);
}
- return elements;
- },
-
- checkValue : function(elements, value)
- {
- elements.each(function(el)
- {
- if(typeof(value) == "boolean")
- el.checked = value;
- else if(el.value == value)
- el.checked = true;
- });
- },
- checkValues : function(elements, values)
- {
- selection = this;
- values.each(function(value)
- {
- selection.checkValue(elements, value);
- })
- },
+ // If there are any trailing characters left in the value, it doesn't match
+ if (i_val != val.length) { return null; }
- checkIndex : function(elements, index)
- {
- for(var i = 0; i 29){ return null; }
+ }
+ else { if (date > 28) { return null; } }
}
- },
-
- checkIndices : function(elements, indices)
- {
- selection = this;
- indices.each(function(index)
- {
- selection.checkIndex(elements, index);
- })
- },
-
- checkClear : function(elements)
- {
- elements.each(function(el)
- {
- el.checked = false;
- });
- },
-
- checkAll : function(elements)
- {
- elements.each(function(el)
- {
- el.checked = true;
- })
- },
- checkInvert : function(elements)
- {
- elements.each(function(el)
+ if ((month==4)||(month==6)||(month==9)||(month==11))
{
- el.checked != el.checked;
- })
- }
-};
-
-
-Prado.Element.Insert =
-{
- append: function(element, content)
- {
- new Insertion.Bottom(element, content);
- },
-
- prepend: function(element, content)
- {
- new Insertion.Top(element, content);
- },
-
- after: function(element, content)
- {
- new Insertion.After(element, content);
- },
+ if (date > 30) { return null; }
+ }
- before: function(element, content)
- {
- new Insertion.Before(element, content);
+ var newdate=new Date(year,month-1,date, 0, 0, 0);
+ return newdate;
}
-}
+});
Prado.WebUI = Class.create();
@@ -5029,182 +4508,3 @@ Prado.WebUI.TRadioButtonList = Base.extend(
}
});
-Prado.WebUI.TRatingList = Base.extend(
-{
- selectedIndex : -1,
- rating: -1,
- enabled : true,
- readOnly : false,
-
- constructor : function(options)
- {
- var cap = $(options.CaptionID);
- this.options = Object.extend(
- {
- caption : cap ? cap.innerHTML : ''
- }, options || {});
-
- Prado.WebUI.TRatingList.register(this);
- this._init();
- this.selectedIndex = options.SelectedIndex;
- this.rating = options.Rating;
- if(options.Rating <= 0 && options.SelectedIndex >= 0)
- this.rating = options.SelectedIndex+1;
- this.showRating(this.rating);
- },
-
- _init: function(options)
- {
- Element.addClassName($(this.options.ListID),this.options.Style);
- this.radios = new Array();
- var index=0;
- for(var i = 0; i halfMax ? base+1 : base;
- for(var i = 0; i halfMax ? base+1 : base;
- var hasHalf = remainder >= halfMin && remainder <= halfMax;
- for(var i = 0; i index ? 'removeClassName' : 'addClassName';
- Element[action](node, "rating_selected");
- if(i==index+1 && hasHalf)
- Element.addClassName(node, "rating_half");
- else
- Element.removeClassName(node, "rating_half");
- Element.removeClassName(node,"rating_hover");
- }
- },
-
- getIndexCaption : function(index)
- {
- return index > -1 ? this.radios[index].value : this.options.caption;
- },
-
- showCaption : function(value)
- {
- var caption = $(this.options.CaptionID);
- if(caption) caption.innerHTML = value;
- $(this.options.ListID).title = value;
- },
-
- setCaption : function(value)
- {
- this.options.caption = value;
- this.showCaption(value);
- },
-
- setEnabled : function(value)
- {
- this.enabled = value;
- for(var i = 0; i