| @@ -3,6 +3,9 @@ | ||||
| 		"mochikit.repository": "http://svn.mochikit.com/mochikit/trunk/", | ||||
| 		"mochikit.version": "1249" | ||||
| 	}, | ||||
|  | ||||
| 	"html.template": "index_template.html", | ||||
|  | ||||
| 	"js": [ | ||||
| 		"MochiKit/Base.js", | ||||
| 		"MochiKit/Iter.js", | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,28 +1,3 @@ | ||||
| <!-- | ||||
|  | ||||
| Copyright 2008-2011 Clipperz Srl | ||||
|  | ||||
| This file is part of Clipperz Community Edition. | ||||
| Clipperz Community Edition is an online password manager. | ||||
| For further information about its features and functionalities please | ||||
| refer to http://www.clipperz.com. | ||||
|  | ||||
| * Clipperz Community Edition is free software: you can redistribute | ||||
|   it and/or modify it under the terms of the GNU Affero General Public | ||||
|   License as published by the Free Software Foundation, either version | ||||
|   3 of the License, or (at your option) any later version. | ||||
|  | ||||
| * Clipperz Community Edition is distributed in the hope that it will | ||||
|   be useful, but WITHOUT ANY WARRANTY; without even the implied | ||||
|   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||||
|   See the GNU Affero General Public License for more details. | ||||
|  | ||||
| * You should have received a copy of the GNU Affero General Public | ||||
|   License along with Clipperz Community Edition.  If not, see | ||||
|   <http://www.gnu.org/licenses/>. | ||||
|  | ||||
| --> | ||||
|  | ||||
| <html> | ||||
| <head> | ||||
| 	<title>clipperz</title> | ||||
|   | ||||
| @@ -142,7 +142,7 @@ Clipperz.PM.Proxy.prototype = MochiKit.Base.update(null, { | ||||
| 	'processMessage': function (aFunctionName, someParameters, aRequestType) { | ||||
| 		var	deferredResult; | ||||
|  | ||||
| 		deferredResult = new Clipperz.Async.Deferred("Proxy.processMessage", {trace:true}); | ||||
| 		deferredResult = new Clipperz.Async.Deferred("Proxy.processMessage", {trace:false}); | ||||
| 		deferredResult.addMethod(this, 'payToll', aRequestType); | ||||
| 		deferredResult.addMethod(this, 'sendMessage', aFunctionName); | ||||
| 		deferredResult.addMethod(this, 'setTollCallback'); | ||||
|   | ||||
| @@ -102,8 +102,8 @@ Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.Tooltip, Clipperz.PM.UI.Co | ||||
| 			{tag:'div', id:this.getId('body'), cls:'tooltip_body', children:[ | ||||
| 				{tag:'div', cls:'tooltip_text', children:[ | ||||
| 					{tag:'span', html:this.text()} | ||||
| 				]}, | ||||
| 				{tag:'div', id:this.getId('footer'), cls:'tooltip_footer'} | ||||
| 				]}//, | ||||
| //				{tag:'div', id:this.getId('footer'), cls:'tooltip_footer'} | ||||
| 			]}, | ||||
| 			{tag:'div', id:this.getId('arrow'), cls:'tooltip_arrow'} | ||||
| 		]}); | ||||
| @@ -146,45 +146,46 @@ Clipperz.Base.extend(Clipperz.PM.UI.Common.Components.Tooltip, Clipperz.PM.UI.Co | ||||
| 			switch (this.position()) { | ||||
| 				case 'ABOVE': | ||||
| //console.log("ABOVE"); | ||||
| 					MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:36, h:13}, 'px'); | ||||
| //					MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:36, h:13}, 'px'); | ||||
| 					bodyPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - this.boxDimensions().w/2); | ||||
| 					bodyPosition.y = elementSizeAndPosition.position.y - this.boxDimensions().h - 13; | ||||
| 				 | ||||
| 					arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2); | ||||
| 					arrowPosition.y = elementSizeAndPosition.position.y - 13; | ||||
| //					arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2); | ||||
| //					arrowPosition.y = elementSizeAndPosition.position.y - 13; | ||||
| 					break; | ||||
| 				case 'BELOW': | ||||
| //console.log("BELOW"); | ||||
| 					MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:36, h:13}, 'px'); | ||||
| //					MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:36, h:13}, 'px'); | ||||
| 					bodyPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - this.boxDimensions().w/2); | ||||
| 					bodyPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h + 13; | ||||
| 				 | ||||
| 					arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2); | ||||
| 					arrowPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h; | ||||
| //					arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2); | ||||
| //					arrowPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h; | ||||
| 					break; | ||||
| 				case 'LEFT': | ||||
| //console.log("LEFT"); | ||||
| 					MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:13, h:36}, 'px'); | ||||
| //					MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:13, h:36}, 'px'); | ||||
| 					bodyPosition.x = elementSizeAndPosition.position.x - this.boxDimensions().w - 13; | ||||
| 					bodyPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - this.boxDimensions().h/2); | ||||
|  | ||||
| 					arrowPosition.x = elementSizeAndPosition.position.x -13; | ||||
| 					arrowPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - 36/2); | ||||
| //					arrowPosition.x = elementSizeAndPosition.position.x -13; | ||||
| //					arrowPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - 36/2); | ||||
| 					break; | ||||
| 				case 'RIGHT': | ||||
| //console.log("RIGHT"); | ||||
| 					MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:13, h:36}, 'px'); | ||||
| //					MochiKit.Style.setElementDimensions(this.getId('arrow'), {w:13, h:36}, 'px'); | ||||
| 					bodyPosition.x = elementSizeAndPosition.position.x + elementSizeAndPosition.dimensions.w + 13; | ||||
| 					bodyPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - this.boxDimensions().h/2); | ||||
|  | ||||
| 					arrowPosition.x = elementSizeAndPosition.position.x + elementSizeAndPosition.dimensions.w; | ||||
| 					arrowPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - 36/2); | ||||
| //					arrowPosition.x = elementSizeAndPosition.position.x + elementSizeAndPosition.dimensions.w; | ||||
| //					arrowPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - 36/2); | ||||
| 					break; | ||||
| 			} | ||||
| //console.log("X: " + bodyPosition.x + ", Y: " + bodyPosition.y); | ||||
|  | ||||
| 			MochiKit.Style.setElementPosition(this.getId('body'), bodyPosition); | ||||
| 			MochiKit.Style.setElementPosition(this.getId('arrow'), arrowPosition); | ||||
| 			MochiKit.Style.setElementPosition(this.getId('tooltip'), bodyPosition); | ||||
| //			MochiKit.Style.setElementPosition(this.getId('body'), bodyPosition); | ||||
| //			MochiKit.Style.setElementPosition(this.getId('arrow'), arrowPosition); | ||||
| 			MochiKit.Visual.appear(this.displayElement(), {duration:0.4}); | ||||
| 		} | ||||
| 	}, | ||||
|   | ||||
| @@ -65,24 +65,9 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginForm, Clipperz.PM.UI.Com | ||||
| //						{tag:'form', cls:'loginForm', autocomplete:this.autocomplete(), children:[ | ||||
| 						{tag:'form', id:this.getId('form'), cls:'loginForm', children:[ | ||||
| 							{tag:'label', html:'username', 'for':this.getId('usernameField')}, | ||||
| 							{tag:'input', id:this.getId('usernameField'), type:'text', cls:'username'/*, value:'joe'*/}, | ||||
| 							{tag:'ul', id:this.getId('passwordOptions'), children:[ | ||||
| 								{tag:'li', id:this.getId('passphraseOption'), children:[ | ||||
| 									{tag:'label', html:'passphrase / OTP', 'for':this.getId('passphraseField')}, | ||||
| 									{tag:'input', id:this.getId('passphraseField'), type:'password', cls:'password'/*, value:'clipperz'*/} | ||||
| 								]}	//	, | ||||
| /* | ||||
| 								{tag:'li', id:this.getId('otpOption'), children:[ | ||||
| 									{tag:'label', html:'one-time password', 'for':this.getId('otpField_1')}, | ||||
| 									{tag:'input', id:this.getId('otpField_1'), type:'text', cls:'otp', value:'abcd-efgh'}, | ||||
| 									{tag:'input', id:this.getId('otpField_2'), type:'text', cls:'otp', value:'abcd-efgh'}, | ||||
| 									{tag:'input', id:this.getId('otpField_3'), type:'text', cls:'otp', value:'abcd-efgh'}, | ||||
| 									{tag:'input', id:this.getId('otpField_4'), type:'text', cls:'otp', value:'abcd-efgh'} | ||||
| 								]} | ||||
| */ | ||||
| 							]}, | ||||
| //							{tag:'input', id:this.getId('otpCheckbox'), type:'checkbox', cls:'checkbox'}, | ||||
| //							{tag:'label', html:'use a one-time passphrase', 'for':this.getId('otpCheckbox'), cls:'checkbox'}, | ||||
| 							{tag:'input', id:this.getId('usernameField'), type:'text', cls:'username'}, | ||||
| 							{tag:'label', html:'passphrase / OTP', 'for':this.getId('passphraseField')}, | ||||
| 							{tag:'input', id:this.getId('passphraseField'), type:'password', cls:'password'}, | ||||
|  | ||||
| 							{tag:'div', cls:'translations', children:[ | ||||
| 								{tag:'h4', html:'choose your language'}, | ||||
| @@ -161,29 +146,22 @@ Clipperz.Base.extend(Clipperz.PM.UI.Web.Components.LoginForm, Clipperz.PM.UI.Com | ||||
| 	//------------------------------------------------------------------------- | ||||
| 	 | ||||
| 	'loginEventHandler': function(anEvent) { | ||||
| 		var	username; | ||||
| 		var passphrase; | ||||
| //		var shouldUseOTP; | ||||
| //		var otp; | ||||
| //		var	username; | ||||
| //		var passphrase; | ||||
| 		var signalArguments; | ||||
|  | ||||
| 		anEvent.preventDefault(); | ||||
|  | ||||
| 		username = this.getElement('usernameField').value; | ||||
| 		passphrase = this.getElement('passphraseField').value; | ||||
| //		otp =	this.getElement('otpField_1').value + | ||||
| //				this.getElement('otpField_2').value + | ||||
| //				this.getElement('otpField_3').value + | ||||
| //				this.getElement('otpField_4').value; | ||||
| //		shouldUseOTP = this.getElement('otpCheckbox').checked; | ||||
| //		username = this.getElement('usernameField').value; | ||||
| //		passphrase = this.getElement('passphraseField').value; | ||||
|  | ||||
| 		signalArguments = {username:username}; | ||||
| //		signalArguments = {username:username}; | ||||
| //		signalArguments.passphrase = passphrase; | ||||
|  | ||||
| //		if (shouldUseOTP) { | ||||
| //			signalArguments.otp = otp; | ||||
| //		} else { | ||||
| 			signalArguments.passphrase = passphrase; | ||||
| //		} | ||||
| 		signalArguments = { | ||||
| 			'username':		this.getElement('usernameField').value, | ||||
| 			'passphrase':	this.getElement('passphraseField').value | ||||
| 		}; | ||||
|  | ||||
| 		MochiKit.Signal.signal(this, 'doLogin', signalArguments); | ||||
| 	}, | ||||
|   | ||||
| @@ -81,13 +81,11 @@ MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.LoginController.prototype, { | ||||
| 	'doLogin': function(aLoginForm, anEvent) { | ||||
| 		var deferredResult; | ||||
| 		var	parameters; | ||||
| //		var	shouldUseOTP; | ||||
| 		var loginProgress; | ||||
| 		var	user; | ||||
| 		var getPassphraseDelegate; | ||||
|  | ||||
| 		parameters = anEvent; | ||||
| //		shouldUseOTP = (typeof(parameters.passphrase) == 'undefined'); | ||||
|  | ||||
| 		getPassphraseDelegate = MochiKit.Base.partial(MochiKit.Async.succeed, parameters.passphrase); | ||||
| 		user = new Clipperz.PM.DataModel.User({'username':parameters.username, 'getPassphraseFunction':MochiKit.Base.method(Clipperz.PM.RunTime.mainController, 'getPassphrase')}); | ||||
| @@ -99,11 +97,7 @@ MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.LoginController.prototype, { | ||||
| 		deferredResult.addMethod(Clipperz.PM.RunTime.mainController, 'setPassphraseDelegate', getPassphraseDelegate); | ||||
| 		deferredResult.addMethod(loginProgress, 'deferredShowModal', {deferredObject:deferredResult, openFromElement:aLoginForm.submitButtonElement()}); | ||||
| 		deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'deferredEntropyCollection'); | ||||
| //		if (shouldUseOTP == false) { | ||||
| 			deferredResult.addMethod(user, 'login'); | ||||
| //		} else { | ||||
| //			deferredResult.addMethod(user, 'loginUsingOTP', parameters.username, parameters.otp); | ||||
| //		} | ||||
| 		deferredResult.addMethod(user, 'login'); | ||||
| 		deferredResult.addCallback(function(aLoginProgress, res) { | ||||
| 			aLoginProgress.disableCancel(); | ||||
| 			return res; | ||||
|   | ||||
| @@ -8,7 +8,7 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('Async', '1.5', ['Base']); | ||||
| MochiKit.Base.module(MochiKit, 'Async', '1.5', ['Base']); | ||||
|  | ||||
| /** @id MochiKit.Async.Deferred */ | ||||
| MochiKit.Async.Deferred = function (/* optional */ canceller) { | ||||
| @@ -20,28 +20,32 @@ MochiKit.Async.Deferred = function (/* optional */ canceller) { | ||||
|     this.canceller = canceller; | ||||
|     this.silentlyCancelled = false; | ||||
|     this.chained = false; | ||||
|     this.finalized = false; | ||||
| }; | ||||
|  | ||||
| MochiKit.Async.Deferred.prototype = { | ||||
|     /** @id MochiKit.Async.Deferred.prototype.repr */ | ||||
|     repr: function () { | ||||
|         var state; | ||||
|         if (this.fired == -1) { | ||||
|             state = 'unfired'; | ||||
|         } else if (this.fired === 0) { | ||||
|             state = 'success'; | ||||
|         } else { | ||||
|             state = 'error'; | ||||
|         } | ||||
|         return 'Deferred(' + this.id + ', ' + state + ')'; | ||||
|         return 'Deferred(' + this.id + ', ' + this.state() + ')'; | ||||
|     }, | ||||
|  | ||||
|     toString: MochiKit.Base.forwardCall("repr"), | ||||
|  | ||||
|     _nextId: MochiKit.Base.counter(), | ||||
|  | ||||
|     /** @id MochiKit.Async.Deferred.prototype.state */ | ||||
|     state: function () { | ||||
|         if (this.fired == -1) { | ||||
|             return 'unfired'; | ||||
|         } else if (this.fired === 0) { | ||||
|             return 'success'; | ||||
|         } else { | ||||
|             return 'error'; | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     /** @id MochiKit.Async.Deferred.prototype.cancel */ | ||||
|     cancel: function () { | ||||
|     cancel: function (e) { | ||||
|         var self = MochiKit.Async; | ||||
|         if (this.fired == -1) { | ||||
|             if (this.canceller) { | ||||
| @@ -50,10 +54,15 @@ MochiKit.Async.Deferred.prototype = { | ||||
|                 this.silentlyCancelled = true; | ||||
|             } | ||||
|             if (this.fired == -1) { | ||||
|                 this.errback(new self.CancelledError(this)); | ||||
|                 if (typeof(e) === 'string') { | ||||
|                     e = new self.GenericError(e); | ||||
|                 } else if (!(e instanceof Error)) { | ||||
|                     e = new self.CancelledError(this); | ||||
|                 } | ||||
|                 this.errback(e); | ||||
|             } | ||||
|         } else if ((this.fired === 0) && (this.results[0] instanceof self.Deferred)) { | ||||
|             this.results[0].cancel(); | ||||
|             this.results[0].cancel(e); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
| @@ -65,7 +74,9 @@ MochiKit.Async.Deferred.prototype = { | ||||
|         ***/ | ||||
|         this.fired = ((res instanceof Error) ? 1 : 0); | ||||
|         this.results[this.fired] = res; | ||||
|         this._fire(); | ||||
|         if (this.paused === 0) { | ||||
|             this._fire(); | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _check: function () { | ||||
| @@ -129,6 +140,9 @@ MochiKit.Async.Deferred.prototype = { | ||||
|         if (this.chained) { | ||||
|             throw new Error("Chained Deferreds can not be re-used"); | ||||
|         } | ||||
|         if (this.finalized) { | ||||
|             throw new Error("Finalized Deferreds can not be re-used"); | ||||
|         } | ||||
|         this.chain.push([cb, eb]); | ||||
|         if (this.fired >= 0) { | ||||
|             this._fire(); | ||||
| @@ -136,6 +150,24 @@ MochiKit.Async.Deferred.prototype = { | ||||
|         return this; | ||||
|     }, | ||||
|  | ||||
|     /** @id MochiKit.Async.Deferred.prototype.setFinalizer */ | ||||
|     setFinalizer: function (fn) { | ||||
|         if (this.chained) { | ||||
|             throw new Error("Chained Deferreds can not be re-used"); | ||||
|         } | ||||
|         if (this.finalized) { | ||||
|             throw new Error("Finalized Deferreds can not be re-used"); | ||||
|         } | ||||
|         if (arguments.length > 1) { | ||||
|             fn = MochiKit.Base.partial.apply(null, arguments); | ||||
|         } | ||||
|         this._finalizer = fn; | ||||
|         if (this.fired >= 0) { | ||||
|             this._fire(); | ||||
|         } | ||||
|         return this; | ||||
|     }, | ||||
|  | ||||
|     _fire: function () { | ||||
|         /*** | ||||
|  | ||||
| @@ -160,11 +192,8 @@ MochiKit.Async.Deferred.prototype = { | ||||
|                 fired = ((res instanceof Error) ? 1 : 0); | ||||
|                 if (res instanceof MochiKit.Async.Deferred) { | ||||
|                     cb = function (res) { | ||||
|                         self._resback(res); | ||||
|                         self.paused--; | ||||
|                         if ((self.paused === 0) && (self.fired >= 0)) { | ||||
|                             self._fire(); | ||||
|                         } | ||||
|                         self._resback(res); | ||||
|                     }; | ||||
|                     this.paused++; | ||||
|                 } | ||||
| @@ -178,6 +207,10 @@ MochiKit.Async.Deferred.prototype = { | ||||
|         } | ||||
|         this.fired = fired; | ||||
|         this.results[fired] = res; | ||||
|         if (this.chain.length == 0 && this.paused === 0 && this._finalizer) { | ||||
|             this.finalized = true; | ||||
|             this._finalizer(res); | ||||
|         } | ||||
|         if (cb && this.paused) { | ||||
|             // this is for "tail recursion" in case the dependent deferred | ||||
|             // is already fired | ||||
| @@ -249,7 +282,7 @@ MochiKit.Base.update(MochiKit.Async, { | ||||
|             var status = null; | ||||
|             try { | ||||
|                 status = this.status; | ||||
|                 if (!status && m.isNotEmpty(this.responseText)) { | ||||
|                 if (!status && (this.response || m.isNotEmpty(this.responseText))) { | ||||
|                     // 0 or undefined seems to mean cached or local | ||||
|                     status = 304; | ||||
|                 } | ||||
| @@ -337,7 +370,8 @@ MochiKit.Base.update(MochiKit.Async, { | ||||
|             username: undefined, | ||||
|             password: undefined, | ||||
|             headers: undefined, | ||||
|             mimeType: undefined | ||||
|             mimeType: undefined, | ||||
|             responseType: undefined | ||||
|             */ | ||||
|         }, opts); | ||||
|         var self = MochiKit.Async; | ||||
| @@ -371,6 +405,9 @@ MochiKit.Base.update(MochiKit.Async, { | ||||
|                 req.setRequestHeader(name, value); | ||||
|             } | ||||
|         } | ||||
|         if ("responseType" in opts && "responseType" in req) { | ||||
|             req.responseType = opts.responseType; | ||||
|         } | ||||
|         return self.sendXMLHttpRequest(req, opts.sendContent); | ||||
|     }, | ||||
|  | ||||
| @@ -404,16 +441,44 @@ MochiKit.Base.update(MochiKit.Async, { | ||||
|         return d; | ||||
|     }, | ||||
|  | ||||
|     /** @id MochiKit.Async.loadScript */ | ||||
|     loadScript: function (url) { | ||||
|         var d = new MochiKit.Async.Deferred(); | ||||
|         var script = document.createElement("script"); | ||||
|         script.type = "text/javascript"; | ||||
|         script.src = url; | ||||
|         script.onload = function () { | ||||
|             script.onload = null; | ||||
|             script.onerror = null; | ||||
|             script.onreadystatechange = null; | ||||
|             script = null; | ||||
|             d.callback(); | ||||
|         }; | ||||
|         script.onerror = function (msg) { | ||||
|             script.onload = null; | ||||
|             script.onerror = null; | ||||
|             script.onreadystatechange = null; | ||||
|             script = null; | ||||
|             msg = "Failed to load script at " + url + ": " + msg; | ||||
|             d.errback(new URIError(msg, url)); | ||||
|         } | ||||
|         script.onreadystatechange = function () { | ||||
|             if (script.readyState == "loaded" || script.readyState == "complete") { | ||||
|                 script.onload(); | ||||
|             } else { | ||||
|                 // IE doesn't bother to report errors... | ||||
|                 MochiKit.Async.callLater(10, script.onerror, "Script loading timed out") | ||||
|             } | ||||
|         }; | ||||
|         document.getElementsByTagName("head")[0].appendChild(script); | ||||
|         return d; | ||||
|     }, | ||||
|  | ||||
|     /** @id MochiKit.Async.wait */ | ||||
|     wait: function (seconds, /* optional */value) { | ||||
|         var d = new MochiKit.Async.Deferred(); | ||||
|         var m = MochiKit.Base; | ||||
|         if (typeof(value) != 'undefined') { | ||||
|             d.addCallback(function () { return value; }); | ||||
|         } | ||||
|         var timeout = setTimeout( | ||||
|             m.bind("callback", d), | ||||
|             Math.floor(seconds * 1000)); | ||||
|         var cb = MochiKit.Base.bind("callback", d, value); | ||||
|         var timeout = setTimeout(cb, Math.floor(seconds * 1000)); | ||||
|         d.canceller = function () { | ||||
|             try { | ||||
|                 clearTimeout(timeout); | ||||
| @@ -510,6 +575,7 @@ MochiKit.Async.DeferredList = function (list, /* optional */fireOnOneCallback, f | ||||
| }; | ||||
|  | ||||
| MochiKit.Async.DeferredList.prototype = new MochiKit.Async.Deferred(); | ||||
| MochiKit.Async.DeferredList.prototype.constructor = MochiKit.Async.DeferredList; | ||||
|  | ||||
| MochiKit.Async.DeferredList.prototype._cbDeferred = function (index, succeeded, result) { | ||||
|     this.resultList[index] = [succeeded, result]; | ||||
|   | ||||
| @@ -8,33 +8,43 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| if (typeof(MochiKit) == 'undefined') { | ||||
|     MochiKit = {}; | ||||
| } | ||||
|  | ||||
| // MochiKit module (namespace) | ||||
| var MochiKit = MochiKit || {}; | ||||
| if (typeof(MochiKit.__export__) == "undefined") { | ||||
|     MochiKit.__export__ = true; | ||||
| } | ||||
| if (typeof(MochiKit.Base) == 'undefined') { | ||||
|     MochiKit.Base = {}; | ||||
| } | ||||
| MochiKit.NAME = "MochiKit"; | ||||
| MochiKit.VERSION = "1.5"; | ||||
| MochiKit.__repr__ = function () { | ||||
|     return "[" + this.NAME + " " + this.VERSION + "]"; | ||||
| }; | ||||
| MochiKit.toString = function () { | ||||
|     return this.__repr__(); | ||||
| }; | ||||
|  | ||||
|  | ||||
| // MochiKit.Base module | ||||
| MochiKit.Base = MochiKit.Base || {}; | ||||
|  | ||||
| /** | ||||
|  * Registers a new MochiKit module. This function will insert a new | ||||
|  * property into the "MochiKit" object, making sure that all | ||||
|  * dependency modules have already been inserted. It will also make | ||||
|  * sure that the appropriate properties and default module functions | ||||
|  * are defined. | ||||
|  * Creates a new module in a parent namespace. This function will | ||||
|  * create a new empty module object with "NAME", "VERSION", | ||||
|  * "toString" and "__repr__" properties. This object will be inserted into the parent object | ||||
|  * using the specified name (i.e. parent[name] = module). It will | ||||
|  * also verify that all the dependency modules are defined in the | ||||
|  * parent, or an error will be thrown. | ||||
|  * | ||||
|  * @param {Object} parent the parent module (use "this" or "window" for | ||||
|  *            a global module) | ||||
|  * @param {String} name the module name, e.g. "Base" | ||||
|  * @param {String} version the module version, e.g. "1.5" | ||||
|  * @param {Array} deps the array of module dependencies (as strings) | ||||
|  * @param {Array} [deps] the array of module dependencies (as strings) | ||||
|  */ | ||||
| MochiKit.Base._module = function (name, version, deps) { | ||||
|     if (!(name in MochiKit)) { | ||||
|         MochiKit[name] = {}; | ||||
|     } | ||||
|     var module = MochiKit[name]; | ||||
|     module.NAME = "MochiKit." + name; | ||||
| MochiKit.Base.module = function (parent, name, version, deps) { | ||||
|     var module = parent[name] = parent[name] || {}; | ||||
|     var prefix = (parent.NAME ? parent.NAME + "." : ""); | ||||
|     module.NAME = prefix + name; | ||||
|     module.VERSION = version; | ||||
|     module.__repr__ = function () { | ||||
|         return "[" + this.NAME + " " + this.VERSION + "]"; | ||||
| @@ -42,14 +52,15 @@ MochiKit.Base._module = function (name, version, deps) { | ||||
|     module.toString = function () { | ||||
|         return this.__repr__(); | ||||
|     }; | ||||
|     for (var i = 0; i < deps.length; i++) { | ||||
|         if (!(deps[i] in MochiKit)) { | ||||
|             throw 'MochiKit.' + name + ' depends on MochiKit.' + deps[i] + '!'; | ||||
|     for (var i = 0; deps != null && i < deps.length; i++) { | ||||
|         if (!(deps[i] in parent)) { | ||||
|             throw module.NAME + ' depends on ' + prefix + deps[i] + '!'; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|     return module; | ||||
| }; | ||||
|  | ||||
| MochiKit.Base._module("Base", "1.5", []); | ||||
| MochiKit.Base.module(MochiKit, "Base", "1.5", []); | ||||
|  | ||||
| /** @id MochiKit.Base.update */ | ||||
| MochiKit.Base.update = function (self, obj/*, ... */) { | ||||
| @@ -240,6 +251,7 @@ MochiKit.Base.update(MochiKit.Base, { | ||||
|  | ||||
|     _newNamedError: function (module, name, func) { | ||||
|         func.prototype = new MochiKit.Base.NamedError(module.NAME + "." + name); | ||||
|         func.prototype.constructor = func; | ||||
|         module[name] = func; | ||||
|     }, | ||||
|  | ||||
| @@ -351,7 +363,7 @@ MochiKit.Base.update(MochiKit.Base, { | ||||
|         } else if (typeof(value) === "number" || value instanceof Number) { | ||||
|             return !isNaN(value) && value != 0; | ||||
|         } else if (value != null && typeof(value.length) === "number") { | ||||
|             return value.length !== 0 | ||||
|             return value.length !== 0; | ||||
|         } else { | ||||
|             return value != null; | ||||
|         } | ||||
| @@ -675,6 +687,9 @@ MochiKit.Base.update(MochiKit.Base, { | ||||
|         newfunc.im_self = im_self; | ||||
|         newfunc.im_func = im_func; | ||||
|         newfunc.im_preargs = im_preargs; | ||||
|         if (typeof(im_func.NAME) == 'string') { | ||||
|             newfunc.NAME = "bind(" + im_func.NAME + ",...)"; | ||||
|         } | ||||
|         return newfunc; | ||||
|     }, | ||||
|  | ||||
| @@ -788,11 +803,14 @@ MochiKit.Base.update(MochiKit.Base, { | ||||
|             } | ||||
|             return MochiKit.Base.reprRegistry.match(o); | ||||
|         } catch (e) { | ||||
|             if (typeof(o.NAME) == 'string' && ( | ||||
|                     o.toString == Function.prototype.toString || | ||||
|                     o.toString == Object.prototype.toString | ||||
|                 )) { | ||||
|                 return o.NAME; | ||||
|             try { | ||||
|                 if (typeof(o.NAME) == 'string' && ( | ||||
|                         o.toString == Function.prototype.toString || | ||||
|                         o.toString == Object.prototype.toString | ||||
|                     )) { | ||||
|                     return o.NAME; | ||||
|                 } | ||||
|             } catch (ignore) { | ||||
|             } | ||||
|         } | ||||
|         try { | ||||
| @@ -840,16 +858,13 @@ MochiKit.Base.update(MochiKit.Base, { | ||||
|  | ||||
|  | ||||
|     /** @id MochiKit.Base.evalJSON */ | ||||
|     evalJSON: function () { | ||||
|         return eval("(" + MochiKit.Base._filterJSON(arguments[0]) + ")"); | ||||
|     evalJSON: function (jsonText) { | ||||
|         return eval("(" + MochiKit.Base._filterJSON(jsonText) + ")"); | ||||
|     }, | ||||
|  | ||||
|     _filterJSON: function (s) { | ||||
|         var m = s.match(/^\s*\/\*(.*)\*\/\s*$/); | ||||
|         if (m) { | ||||
|             return m[1]; | ||||
|         } | ||||
|         return s; | ||||
|         return (m) ? m[1] : s; | ||||
|     }, | ||||
|  | ||||
|     /** @id MochiKit.Base.serializeJSON */ | ||||
| @@ -894,6 +909,12 @@ MochiKit.Base.update(MochiKit.Base, { | ||||
|         // short-circuit for objects that support "json" serialization | ||||
|         // if they return "self" then just pass-through... | ||||
|         var newObj; | ||||
|         if (typeof(o.toJSON) == "function") { | ||||
|             newObj = o.toJSON(); | ||||
|             if (o !== newObj) { | ||||
|                 return me(newObj); | ||||
|             } | ||||
|         } | ||||
|         if (typeof(o.__json__) == "function") { | ||||
|             newObj = o.__json__(); | ||||
|             if (o !== newObj) { | ||||
| @@ -1100,7 +1121,7 @@ MochiKit.Base.update(MochiKit.Base, { | ||||
|         if (data.length === 0) { | ||||
|             throw new TypeError('median() requires at least one argument'); | ||||
|         } | ||||
|         data.sort(compare); | ||||
|         data.sort(MochiKit.Base.compare); | ||||
|         if (data.length % 2 == 0) { | ||||
|             var upper = data.length / 2; | ||||
|             return (data[upper] + data[upper - 1]) / 2; | ||||
| @@ -1290,19 +1311,45 @@ MochiKit.Base.AdapterRegistry.prototype = { | ||||
|     } | ||||
| }; | ||||
|  | ||||
| MochiKit.Base._exportSymbols = function (globals, module) { | ||||
|     if (MochiKit.__export__ === false || module.__export__ === false) { | ||||
|         return; | ||||
|     } | ||||
|     for (var k in module) { | ||||
|         var v = module[k]; | ||||
|         if (v != null) { | ||||
|             var okName = (k[0] !== "_" && k !== "toString"); | ||||
|             if (v.__export__ === true || (v.__export__ !== false && okName)) { | ||||
|                 globals[k] = module[k]; | ||||
| /** | ||||
|  * Exports all symbols from one or more modules into the specified | ||||
|  * namespace (or scope). This is similar to MochiKit.Base.update(), | ||||
|  * except for special handling of the "__export__" flag, contained | ||||
|  * sub-modules (exported recursively), and names starting with "_". | ||||
|  * | ||||
|  * @param {Object} namespace the object or scope to modify | ||||
|  * @param {Object} module the module to export | ||||
|  */ | ||||
| MochiKit.Base.moduleExport = function (namespace, module/*, ...*/) { | ||||
|     var SKIP = { toString: true, NAME: true, VERSION: true }; | ||||
|     var mods = MochiKit.Base.extend([], arguments, 1); | ||||
|     while ((module = mods.shift()) != null) { | ||||
|         for (var k in module) { | ||||
|             var v = module[k]; | ||||
|             if (v != null) { | ||||
|                 var flagSet = (typeof(v.__export__) == 'boolean'); | ||||
|                 var nameValid = (k[0] !== "_" && !SKIP[k]); | ||||
|                 if (flagSet ? v.__export__ : nameValid) { | ||||
|                     if (typeof(v) == 'object' && v.NAME && v.VERSION) { | ||||
|                         mods.push(v); | ||||
|                     } else { | ||||
|                         namespace[k] = module[k]; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     return namespace; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Identical to moduleExport, but also considers the global and | ||||
|  * module-specific "__export__" flag. | ||||
|  */ | ||||
| MochiKit.Base._exportSymbols = function (namespace, module) { | ||||
|     if (MochiKit.__export__ !== false && module.__export__ !== false) { | ||||
|         MochiKit.Base.moduleExport(namespace, module); | ||||
|     } | ||||
| }; | ||||
|  | ||||
| /** | ||||
| @@ -1321,7 +1368,7 @@ MochiKit.Base._exportSymbols = function (globals, module) { | ||||
|  * @param {String} version the first version when the source function | ||||
|  *            was deprecated (e.g. '1.4') | ||||
|  * @param {Boolean} [exportable] the exportable function flag, | ||||
|  *            defaults to true | ||||
|  *            defaults to false | ||||
|  */ | ||||
| MochiKit.Base._deprecated = function (module, name, target, version, exportable) { | ||||
|     if (typeof(module) === 'string') { | ||||
| @@ -1349,11 +1396,9 @@ MochiKit.Base._deprecated = function (module, name, target, version, exportable) | ||||
|         } | ||||
|         return MochiKit[targetModule][targetName].apply(this, arguments); | ||||
|     }; | ||||
|     if (exportable === false) { | ||||
|         func.__export__ = false; | ||||
|     } | ||||
|     func.__export__ = (exportable === true); | ||||
|     module[name] = func; | ||||
| } | ||||
| }; | ||||
|  | ||||
| MochiKit.Base.__new__ = function () { | ||||
|     var m = this; | ||||
| @@ -1362,8 +1407,8 @@ MochiKit.Base.__new__ = function () { | ||||
|     m.noop = m.operator.identity; | ||||
|  | ||||
|     // Backwards compat | ||||
|     m._deprecated(m, 'forward', 'MochiKit.Base.forwardCall', '1.3', false); | ||||
|     m._deprecated(m, 'find', 'MochiKit.Base.findValue', '1.3', false); | ||||
|     m._deprecated(m, 'forward', 'MochiKit.Base.forwardCall', '1.3'); | ||||
|     m._deprecated(m, 'find', 'MochiKit.Base.findValue', '1.3'); | ||||
|  | ||||
|     if (typeof(encodeURIComponent) != "undefined") { | ||||
|         /** @id MochiKit.Base.urlEncode */ | ||||
| @@ -1375,7 +1420,7 @@ MochiKit.Base.__new__ = function () { | ||||
|             return escape(unencoded | ||||
|                 ).replace(/\+/g, '%2B' | ||||
|                 ).replace(/\"/g,'%22' | ||||
|                 ).rval.replace(/\'/g, '%27'); | ||||
|                 ).replace(/\'/g, '%27'); | ||||
|         }; | ||||
|     } | ||||
|  | ||||
| @@ -1385,6 +1430,7 @@ MochiKit.Base.__new__ = function () { | ||||
|         this.name = name; | ||||
|     }; | ||||
|     m.NamedError.prototype = new Error(); | ||||
|     m.NamedError.prototype.constructor = m.NamedError; | ||||
|     m.update(m.NamedError.prototype, { | ||||
|         repr: function () { | ||||
|             if (this.message && this.message != this.name) { | ||||
| @@ -1409,6 +1455,8 @@ MochiKit.Base.__new__ = function () { | ||||
|     m.isCallable = m.typeMatcher('function'); | ||||
|     /** @id MochiKit.Base.isUndefined */ | ||||
|     m.isUndefined = m.typeMatcher('undefined'); | ||||
|     /** @id MochiKit.Base.isValue */ | ||||
|     m.isValue = m.typeMatcher('boolean', 'number', 'string'); | ||||
|  | ||||
|     /** @id MochiKit.Base.merge */ | ||||
|     m.merge = m.partial(m.update, null); | ||||
|   | ||||
| @@ -8,7 +8,7 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('Color', '1.5', ['Base', 'DOM', 'Style']); | ||||
| MochiKit.Base.module(MochiKit, 'Color', '1.5', ['Base', 'DOM', 'Style']); | ||||
|  | ||||
| /** @id MochiKit.Color.Color */ | ||||
| MochiKit.Color.Color = function (red, green, blue, alpha) { | ||||
| @@ -112,7 +112,7 @@ MochiKit.Color.Color.prototype = { | ||||
|  | ||||
|     /** @id MochiKit.Color.Color.prototype.isLight */ | ||||
|     isLight: function () { | ||||
|         return this.asHSL().b > 0.5; | ||||
|         return this.asHSL().l > 0.5; | ||||
|     }, | ||||
|  | ||||
|     /** @id MochiKit.Color.Color.prototype.isDark */ | ||||
| @@ -641,19 +641,10 @@ MochiKit.Base.update(MochiKit.Color, { | ||||
|             yellow: [1, 1, 0] | ||||
|         }; | ||||
|  | ||||
|         var makeColor = function (name, r, g, b, a) { | ||||
|             var rval = this.fromRGB(r, g, b, a); | ||||
|             this[name] = function () { return rval; }; | ||||
|             return rval; | ||||
|         }; | ||||
|  | ||||
|         for (var k in colors) { | ||||
|             var name = k + "Color"; | ||||
|             var bindArgs = m.concat( | ||||
|                 [makeColor, this.Color, name], | ||||
|                 colors[k] | ||||
|             ); | ||||
|             this.Color[name] = m.bind.apply(null, bindArgs); | ||||
|             var value = this.Color.fromRGB.apply(this.Color, colors[k]); | ||||
|             this.Color[name] = m.partial(m.operator.identity, value); | ||||
|         } | ||||
|  | ||||
|         var isColor = function () { | ||||
|   | ||||
| @@ -8,7 +8,7 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('DOM', '1.5', ['Base']); | ||||
| MochiKit.Base.module(MochiKit, 'DOM', '1.5', ['Base']); | ||||
|  | ||||
| MochiKit.Base.update(MochiKit.DOM, { | ||||
|  | ||||
| @@ -297,11 +297,11 @@ MochiKit.Base.update(MochiKit.DOM, { | ||||
|     updateNodeAttributes: function (node, attrs) { | ||||
|         var elem = node; | ||||
|         var self = MochiKit.DOM; | ||||
|         var base = MochiKit.Base; | ||||
|         if (typeof(node) == 'string') { | ||||
|             elem = self.getElement(node); | ||||
|         } | ||||
|         if (attrs) { | ||||
|             var updatetree = MochiKit.Base.updatetree; | ||||
|             if (self.attributeArray.compliant) { | ||||
|                 // not IE, good. | ||||
|                 for (var k in attrs) { | ||||
| @@ -310,7 +310,7 @@ MochiKit.Base.update(MochiKit.DOM, { | ||||
|                         if (k == "style" && MochiKit.Style) { | ||||
|                             MochiKit.Style.setStyle(elem, v); | ||||
|                         } else { | ||||
|                             updatetree(elem[k], v); | ||||
|                             base.updatetree(elem[k], v); | ||||
|                         } | ||||
|                     } else if (k.substring(0, 2) == "on") { | ||||
|                         if (typeof(v) == "string") { | ||||
| @@ -320,8 +320,8 @@ MochiKit.Base.update(MochiKit.DOM, { | ||||
|                     } else { | ||||
|                         elem.setAttribute(k, v); | ||||
|                     } | ||||
|                     if (typeof(elem[k]) == "string" && elem[k] != v) { | ||||
|                         // Also set property for weird attributes (see #302) | ||||
|                     if (base.isValue(elem[k]) && elem[k] != v) { | ||||
|                         // Also set property for weird attributes (see #302 & #335) | ||||
|                         elem[k] = v; | ||||
|                     } | ||||
|                 } | ||||
| @@ -340,7 +340,7 @@ MochiKit.Base.update(MochiKit.DOM, { | ||||
|                         if (k == "style" && MochiKit.Style) { | ||||
|                             MochiKit.Style.setStyle(elem, v); | ||||
|                         } else { | ||||
|                             updatetree(elem[k], v); | ||||
|                             base.updatetree(elem[k], v); | ||||
|                         } | ||||
|                     } else if (k.substring(0, 2) == "on") { | ||||
|                         if (typeof(v) == "string") { | ||||
| @@ -350,8 +350,8 @@ MochiKit.Base.update(MochiKit.DOM, { | ||||
|                     } else { | ||||
|                         elem.setAttribute(k, v); | ||||
|                     } | ||||
|                     if (typeof(elem[k]) == "string" && elem[k] != v) { | ||||
|                         // Also set property for weird attributes (see #302) | ||||
|                     if (base.isValue(elem[k]) && elem[k] != v) { | ||||
|                         // Also set property for weird attributes (see #302 & #335) | ||||
|                         elem[k] = v; | ||||
|                     } | ||||
|                 } | ||||
| @@ -990,6 +990,7 @@ MochiKit.Base.update(MochiKit.DOM, { | ||||
|                 "for": "htmlFor", | ||||
|                 "readonly": "readOnly", | ||||
|                 "colspan": "colSpan", | ||||
|                 "rowspan": "rowSpan", | ||||
|                 "bgcolor": "bgColor", | ||||
|                 "cellspacing": "cellSpacing", | ||||
|                 "cellpadding": "cellPadding" | ||||
| @@ -1007,7 +1008,7 @@ MochiKit.Base.update(MochiKit.DOM, { | ||||
|  | ||||
|         // Backwards compatibility aliases | ||||
|         /** @id MochiKit.DOM.computedStyle  */ | ||||
|         m._deprecated(this, 'computedStyle', 'MochiKit.Style.getStyle', '1.4'); | ||||
|         m._deprecated(this, 'computedStyle', 'MochiKit.Style.getStyle', '1.4', true); | ||||
|         /** @id MochiKit.DOM.elementDimensions  */ | ||||
|         m._deprecated(this, 'elementDimensions', 'MochiKit.Style.getElementDimensions', '1.4'); | ||||
|         /** @id MochiKit.DOM.elementPosition  */ | ||||
| @@ -1041,48 +1042,38 @@ MochiKit.Base.update(MochiKit.DOM, { | ||||
|  | ||||
|         // shorthand for createDOM syntax | ||||
|         var createDOMFunc = this.createDOMFunc; | ||||
|         /** @id MochiKit.DOM.UL */ | ||||
|         this.UL = createDOMFunc("ul"); | ||||
|         /** @id MochiKit.DOM.OL */ | ||||
|         this.OL = createDOMFunc("ol"); | ||||
|         /** @id MochiKit.DOM.LI */ | ||||
|         this.LI = createDOMFunc("li"); | ||||
|         /** @id MochiKit.DOM.A */ | ||||
|         this.A = createDOMFunc("a"); | ||||
|         /** @id MochiKit.DOM.ARTICLE */ | ||||
|         this.ARTICLE = createDOMFunc("article"); | ||||
|         /** @id MochiKit.DOM.ASIDE */ | ||||
|         this.ASIDE = createDOMFunc("aside"); | ||||
|         /** @id MochiKit.DOM.BR */ | ||||
|         this.BR = createDOMFunc("br"); | ||||
|         /** @id MochiKit.DOM.BUTTON */ | ||||
|         this.BUTTON = createDOMFunc("button"); | ||||
|         /** @id MochiKit.DOM.CANVAS */ | ||||
|         this.CANVAS = createDOMFunc("canvas"); | ||||
|         /** @id MochiKit.DOM.CAPTION */ | ||||
|         this.CAPTION = createDOMFunc("caption"); | ||||
|         /** @id MochiKit.DOM.DD */ | ||||
|         this.DD = createDOMFunc("dd"); | ||||
|         /** @id MochiKit.DOM.DIV */ | ||||
|         this.DIV = createDOMFunc("div"); | ||||
|         /** @id MochiKit.DOM.DL */ | ||||
|         this.DL = createDOMFunc("dl"); | ||||
|         /** @id MochiKit.DOM.DT */ | ||||
|         this.DT = createDOMFunc("dt"); | ||||
|         /** @id MochiKit.DOM.DD */ | ||||
|         this.DD = createDOMFunc("dd"); | ||||
|         /** @id MochiKit.DOM.TD */ | ||||
|         this.TD = createDOMFunc("td"); | ||||
|         /** @id MochiKit.DOM.TR */ | ||||
|         this.TR = createDOMFunc("tr"); | ||||
|         /** @id MochiKit.DOM.TBODY */ | ||||
|         this.TBODY = createDOMFunc("tbody"); | ||||
|         /** @id MochiKit.DOM.THEAD */ | ||||
|         this.THEAD = createDOMFunc("thead"); | ||||
|         /** @id MochiKit.DOM.TFOOT */ | ||||
|         this.TFOOT = createDOMFunc("tfoot"); | ||||
|         /** @id MochiKit.DOM.TABLE */ | ||||
|         this.TABLE = createDOMFunc("table"); | ||||
|         /** @id MochiKit.DOM.TH */ | ||||
|         this.TH = createDOMFunc("th"); | ||||
|         /** @id MochiKit.DOM.INPUT */ | ||||
|         this.INPUT = createDOMFunc("input"); | ||||
|         /** @id MochiKit.DOM.SPAN */ | ||||
|         this.SPAN = createDOMFunc("span"); | ||||
|         /** @id MochiKit.DOM.A */ | ||||
|         this.A = createDOMFunc("a"); | ||||
|         /** @id MochiKit.DOM.DIV */ | ||||
|         this.DIV = createDOMFunc("div"); | ||||
|         /** @id MochiKit.DOM.IMG */ | ||||
|         this.IMG = createDOMFunc("img"); | ||||
|         /** @id MochiKit.DOM.BUTTON */ | ||||
|         this.BUTTON = createDOMFunc("button"); | ||||
|         /** @id MochiKit.DOM.TT */ | ||||
|         this.TT = createDOMFunc("tt"); | ||||
|         /** @id MochiKit.DOM.PRE */ | ||||
|         this.PRE = createDOMFunc("pre"); | ||||
|         /** @id MochiKit.DOM.FIELDSET */ | ||||
|         this.FIELDSET = createDOMFunc("fieldset"); | ||||
|         /** @id MochiKit.DOM.FIGURE */ | ||||
|         this.FIGURE = createDOMFunc("figure"); | ||||
|         /** @id MochiKit.DOM.FIGCAPTION */ | ||||
|         this.FIGCAPTION = createDOMFunc("figcaption"); | ||||
|         /** @id MochiKit.DOM.FOOTER */ | ||||
|         this.FOOTER = createDOMFunc("footer"); | ||||
|         /** @id MochiKit.DOM.FORM */ | ||||
|         this.FORM = createDOMFunc("form"); | ||||
|         /** @id MochiKit.DOM.H1 */ | ||||
|         this.H1 = createDOMFunc("h1"); | ||||
|         /** @id MochiKit.DOM.H2 */ | ||||
| @@ -1095,38 +1086,82 @@ MochiKit.Base.update(MochiKit.DOM, { | ||||
|         this.H5 = createDOMFunc("h5"); | ||||
|         /** @id MochiKit.DOM.H6 */ | ||||
|         this.H6 = createDOMFunc("h6"); | ||||
|         /** @id MochiKit.DOM.BR */ | ||||
|         this.BR = createDOMFunc("br"); | ||||
|         /** @id MochiKit.DOM.HEADER */ | ||||
|         this.HEADER = createDOMFunc("header"); | ||||
|         /** @id MochiKit.DOM.HGROUP */ | ||||
|         this.HGROUP = createDOMFunc("hgroup"); | ||||
|         /** @id MochiKit.DOM.HR */ | ||||
|         this.HR = createDOMFunc("hr"); | ||||
|         /** @id MochiKit.DOM.IFRAME */ | ||||
|         this.IFRAME = createDOMFunc("iframe"); | ||||
|         /** @id MochiKit.DOM.IMG */ | ||||
|         this.IMG = createDOMFunc("img"); | ||||
|         /** @id MochiKit.DOM.INPUT */ | ||||
|         this.INPUT = createDOMFunc("input"); | ||||
|         /** @id MochiKit.DOM.LABEL */ | ||||
|         this.LABEL = createDOMFunc("label"); | ||||
|         /** @id MochiKit.DOM.TEXTAREA */ | ||||
|         this.TEXTAREA = createDOMFunc("textarea"); | ||||
|         /** @id MochiKit.DOM.FORM */ | ||||
|         this.FORM = createDOMFunc("form"); | ||||
|         /** @id MochiKit.DOM.P */ | ||||
|         this.P = createDOMFunc("p"); | ||||
|         /** @id MochiKit.DOM.SELECT */ | ||||
|         this.SELECT = createDOMFunc("select"); | ||||
|         /** @id MochiKit.DOM.OPTION */ | ||||
|         this.OPTION = createDOMFunc("option"); | ||||
|         /** @id MochiKit.DOM.OPTGROUP */ | ||||
|         this.OPTGROUP = createDOMFunc("optgroup"); | ||||
|         /** @id MochiKit.DOM.LEGEND */ | ||||
|         this.LEGEND = createDOMFunc("legend"); | ||||
|         /** @id MochiKit.DOM.FIELDSET */ | ||||
|         this.FIELDSET = createDOMFunc("fieldset"); | ||||
|         /** @id MochiKit.DOM.LI */ | ||||
|         this.LI = createDOMFunc("li"); | ||||
|         /** @id MochiKit.DOM.LINK */ | ||||
|         this.LINK = createDOMFunc("link"); | ||||
|         /** @id MochiKit.DOM.MARK */ | ||||
|         this.MARK = createDOMFunc("mark"); | ||||
|         /** @id MochiKit.DOM.METER */ | ||||
|         this.METER = createDOMFunc("meter"); | ||||
|         /** @id MochiKit.DOM.NAV */ | ||||
|         this.NAV = createDOMFunc("nav"); | ||||
|         /** @id MochiKit.DOM.OL */ | ||||
|         this.OL = createDOMFunc("ol"); | ||||
|         /** @id MochiKit.DOM.OPTGROUP */ | ||||
|         this.OPTGROUP = createDOMFunc("optgroup"); | ||||
|         /** @id MochiKit.DOM.OPTION */ | ||||
|         this.OPTION = createDOMFunc("option"); | ||||
|         /** @id MochiKit.DOM.P */ | ||||
|         this.P = createDOMFunc("p"); | ||||
|         /** @id MochiKit.DOM.PRE */ | ||||
|         this.PRE = createDOMFunc("pre"); | ||||
|         /** @id MochiKit.DOM.PROGRESS */ | ||||
|         this.PROGRESS = createDOMFunc("progress"); | ||||
|         /** @id MochiKit.DOM.SCRIPT */ | ||||
|         this.SCRIPT = createDOMFunc("script"); | ||||
|         /** @id MochiKit.DOM.SECTION */ | ||||
|         this.SECTION = createDOMFunc("section"); | ||||
|         /** @id MochiKit.DOM.SELECT */ | ||||
|         this.SELECT = createDOMFunc("select"); | ||||
|         /** @id MochiKit.DOM.SPAN */ | ||||
|         this.SPAN = createDOMFunc("span"); | ||||
|         /** @id MochiKit.DOM.STRONG */ | ||||
|         this.STRONG = createDOMFunc("strong"); | ||||
|         /** @id MochiKit.DOM.CANVAS */ | ||||
|         this.CANVAS = createDOMFunc("canvas"); | ||||
|  | ||||
|         /** @id MochiKit.DOM.STYLE */ | ||||
|         this.STYLE = createDOMFunc("style"); | ||||
|         /** @id MochiKit.DOM.TABLE */ | ||||
|         this.TABLE = createDOMFunc("table"); | ||||
|         /** @id MochiKit.DOM.TBODY */ | ||||
|         this.TBODY = createDOMFunc("tbody"); | ||||
|         /** @id MochiKit.DOM.TD */ | ||||
|         this.TD = createDOMFunc("td"); | ||||
|         /** @id MochiKit.DOM.TEXTAREA */ | ||||
|         this.TEXTAREA = createDOMFunc("textarea"); | ||||
|         /** @id MochiKit.DOM.TFOOT */ | ||||
|         this.TFOOT = createDOMFunc("tfoot"); | ||||
|         /** @id MochiKit.DOM.TH */ | ||||
|         this.TH = createDOMFunc("th"); | ||||
|         /** @id MochiKit.DOM.THEAD */ | ||||
|         this.THEAD = createDOMFunc("thead"); | ||||
|         /** @id MochiKit.DOM.TR */ | ||||
|         this.TR = createDOMFunc("tr"); | ||||
|         /** @id MochiKit.DOM.TT */ | ||||
|         this.TT = createDOMFunc("tt"); | ||||
|         /** @id MochiKit.DOM.UL */ | ||||
|         this.UL = createDOMFunc("ul"); | ||||
|         /** @id MochiKit.DOM.NBSP */ | ||||
|         this.NBSP = "\u00a0"; | ||||
|         /** @id MochiKit.DOM.$ */ | ||||
|         this.$ = this.getElement; | ||||
|  | ||||
|         m.nameFunctions(this); | ||||
|  | ||||
|     } | ||||
| }); | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('DateTime', '1.5', ['Base']); | ||||
| MochiKit.Base.module(MochiKit, 'DateTime', '1.5', ['Base']); | ||||
|  | ||||
| /** @id MochiKit.DateTime.isoDate */ | ||||
| MochiKit.DateTime.isoDate = function (str) { | ||||
| @@ -20,10 +20,10 @@ MochiKit.DateTime.isoDate = function (str) { | ||||
|     if (iso.length === 0) { | ||||
|         return null; | ||||
|     } | ||||
| 	var date = new Date(iso[0], iso[1] - 1, iso[2]); | ||||
| 	date.setFullYear(iso[0]); | ||||
| 	date.setMonth(iso[1] - 1); | ||||
| 	date.setDate(iso[2]); | ||||
|     var date = new Date(parseInt(iso[0], 10), parseInt(iso[1], 10) - 1, parseInt(iso[2], 10)); | ||||
|     date.setFullYear(iso[0]); | ||||
|     date.setMonth(iso[1] - 1); | ||||
|     date.setDate(iso[2]); | ||||
|     return date; | ||||
| }; | ||||
|  | ||||
| @@ -80,15 +80,17 @@ MochiKit.DateTime.toISOTime = function (date, realISO/* = false */) { | ||||
|     if (typeof(date) == "undefined" || date === null) { | ||||
|         return null; | ||||
|     } | ||||
|     var hh = date.getHours(); | ||||
|     var mm = date.getMinutes(); | ||||
|     var ss = date.getSeconds(); | ||||
|     var _padTwo = MochiKit.DateTime._padTwo; | ||||
|     if (realISO) { | ||||
|         // adjust date for UTC timezone | ||||
|         date = new Date(date.getTime() + (date.getTimezoneOffset() * 60000)); | ||||
|     } | ||||
|     var lst = [ | ||||
|         ((realISO && (hh < 10)) ? "0" + hh : hh), | ||||
|         ((mm < 10) ? "0" + mm : mm), | ||||
|         ((ss < 10) ? "0" + ss : ss) | ||||
|         (realISO ? _padTwo(date.getHours()) : date.getHours()), | ||||
|         _padTwo(date.getMinutes()), | ||||
|         _padTwo(date.getSeconds()) | ||||
|     ]; | ||||
|     return lst.join(":"); | ||||
|     return lst.join(":") + (realISO ? "Z" : ""); | ||||
| }; | ||||
|  | ||||
| /** @id MochiKit.DateTime.toISOTimeStamp */ | ||||
| @@ -96,12 +98,13 @@ MochiKit.DateTime.toISOTimestamp = function (date, realISO/* = false*/) { | ||||
|     if (typeof(date) == "undefined" || date === null) { | ||||
|         return null; | ||||
|     } | ||||
|     var time = MochiKit.DateTime.toISOTime(date, realISO); | ||||
|     var sep = realISO ? "T" : " "; | ||||
|     var foot = realISO ? "Z" : ""; | ||||
|     if (realISO) { | ||||
|         // adjust date for UTC timezone | ||||
|         date = new Date(date.getTime() + (date.getTimezoneOffset() * 60000)); | ||||
|     } | ||||
|     return MochiKit.DateTime.toISODate(date) + sep + MochiKit.DateTime.toISOTime(date, realISO) + foot; | ||||
|     return MochiKit.DateTime.toISODate(date) + sep + time; | ||||
| }; | ||||
|  | ||||
| /** @id MochiKit.DateTime.toISODate */ | ||||
| @@ -110,7 +113,7 @@ MochiKit.DateTime.toISODate = function (date) { | ||||
|         return null; | ||||
|     } | ||||
|     var _padTwo = MochiKit.DateTime._padTwo; | ||||
| 	var _padFour = MochiKit.DateTime._padFour; | ||||
|     var _padFour = MochiKit.DateTime._padFour; | ||||
|     return [ | ||||
|         _padFour(date.getFullYear()), | ||||
|         _padTwo(date.getMonth() + 1), | ||||
| @@ -133,14 +136,14 @@ MochiKit.DateTime._padTwo = function (n) { | ||||
| }; | ||||
|  | ||||
| MochiKit.DateTime._padFour = function(n) { | ||||
| 	switch(n.toString().length) { | ||||
| 		case 1: return "000" + n; break; | ||||
| 		case 2: return "00" + n; break; | ||||
| 		case 3: return "0" + n; break; | ||||
| 		case 4: | ||||
| 		default: | ||||
| 			return n; | ||||
| 	} | ||||
|     switch(n.toString().length) { | ||||
|         case 1: return "000" + n; break; | ||||
|         case 2: return "00" + n; break; | ||||
|         case 3: return "0" + n; break; | ||||
|         case 4: | ||||
|         default: | ||||
|             return n; | ||||
|     } | ||||
| }; | ||||
|  | ||||
| /** @id MochiKit.DateTime.toPaddedAmericanDate */ | ||||
|   | ||||
| @@ -8,7 +8,7 @@ Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('DragAndDrop', '1.5', ['Base', 'Iter', 'DOM', 'Signal', 'Visual', 'Position']); | ||||
| MochiKit.Base.module(MochiKit, 'DragAndDrop', '1.5', ['Base', 'Iter', 'DOM', 'Signal', 'Visual', 'Position']); | ||||
|  | ||||
| MochiKit.DragAndDrop.Droppables = { | ||||
|     /*** | ||||
| @@ -306,8 +306,9 @@ MochiKit.DragAndDrop.Draggables = { | ||||
|         var pointer = event.mouse(); | ||||
|         // Mozilla-based browsers fire successive mousemove events with | ||||
|         // the same coordinates, prevent needless redrawing (moz bug?) | ||||
|         if (this._lastPointer && (MochiKit.Base.repr(this._lastPointer.page) == | ||||
|                                   MochiKit.Base.repr(pointer.page))) { | ||||
|         if (this._lastPointer && | ||||
|             this._lastPointer.page.x == pointer.page.x && | ||||
|             this._lastPointer.page.y == pointer.page.y) { | ||||
|             return; | ||||
|         } | ||||
|         this._lastPointer = pointer; | ||||
| @@ -442,8 +443,8 @@ MochiKit.DragAndDrop.Draggable.prototype = { | ||||
|     currentDelta: function () { | ||||
|         var s = MochiKit.Style.getStyle; | ||||
|         return [ | ||||
|           parseInt(s(this.element, 'left') || '0'), | ||||
|           parseInt(s(this.element, 'top') || '0')]; | ||||
|           parseInt(s(this.element, 'left') || '0', 10), | ||||
|           parseInt(s(this.element, 'top') || '0', 10)]; | ||||
|     }, | ||||
|  | ||||
|     /** @id MochiKit.DragAndDrop.initDrag */ | ||||
| @@ -481,8 +482,7 @@ MochiKit.DragAndDrop.Draggable.prototype = { | ||||
|                                          this.options.selectclass); | ||||
|         } | ||||
|         if (this.options.zindex) { | ||||
|             this.originalZ = parseInt(MochiKit.Style.getStyle(this.element, | ||||
|                                       'z-index') || '0'); | ||||
|             this.originalZ = MochiKit.Style.getStyle(this.element, 'z-index'); | ||||
|             this.element.style.zIndex = this.options.zindex; | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('Format', '1.5', ['Base']); | ||||
| MochiKit.Base.module(MochiKit, 'Format', '1.5', ['Base']); | ||||
|  | ||||
| MochiKit.Format._numberFormatter = function (placeholder, header, footer, locale, isPercent, precision, leadingZeros, separatorAt, trailingZeros) { | ||||
|     return function (num) { | ||||
| @@ -104,7 +104,7 @@ MochiKit.Format.numberFormatter = function (pattern, placeholder/* = "" */, loca | ||||
|             return [ | ||||
|                 self.NAME, | ||||
|                 "(", | ||||
|                 map(m.repr, args).join(", "), | ||||
|                 m.map(m.repr, args).join(", "), | ||||
|                 ")" | ||||
|             ].join(""); | ||||
|         }; | ||||
| @@ -142,7 +142,7 @@ MochiKit.Format.twoDigitAverage = function (numerator, denominator) { | ||||
|  | ||||
| /** @id MochiKit.Format.twoDigitFloat */ | ||||
| MochiKit.Format.twoDigitFloat = function (aNumber) { | ||||
|     var res = roundToFixed(aNumber, 2); | ||||
|     var res = MochiKit.Format.roundToFixed(aNumber, 2); | ||||
|     if (res.indexOf(".00") > 0) { | ||||
|         return res.substring(0, res.length - 3); | ||||
|     } else if (res.charAt(res.length - 1) == "0") { | ||||
| @@ -193,7 +193,7 @@ MochiKit.Format.truncToFixed = function (aNumber, precision) { | ||||
|         fixed = MochiKit.Format._shiftNumber(fixed, 0); | ||||
|     } | ||||
|     return fixed; | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** @id MochiKit.Format.roundToFixed */ | ||||
| MochiKit.Format.roundToFixed = function (aNumber, precision) { | ||||
| @@ -205,7 +205,7 @@ MochiKit.Format.roundToFixed = function (aNumber, precision) { | ||||
|         fixed = MochiKit.Format._shiftNumber(str, -precision); | ||||
|     } | ||||
|     return fixed; | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Converts a number to a fixed format string. This function handles | ||||
| @@ -221,7 +221,7 @@ MochiKit.Format.roundToFixed = function (aNumber, precision) { | ||||
| MochiKit.Format._numberToFixed = function (aNumber, precision) { | ||||
|     var str = aNumber.toString(); | ||||
|     var parts = str.split(/[eE]/); | ||||
|     var exp = (parts.length === 1) ? 0 : parseInt(parts[1]) || 0; | ||||
|     var exp = (parts.length === 1) ? 0 : parseInt(parts[1], 10) || 0; | ||||
|     var fixed = MochiKit.Format._shiftNumber(parts[0], exp); | ||||
|     parts = fixed.split(/\./); | ||||
|     var whole = parts[0]; | ||||
| @@ -234,7 +234,7 @@ MochiKit.Format._numberToFixed = function (aNumber, precision) { | ||||
|     } else { | ||||
|         return whole; | ||||
|     } | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Shifts the decimal dot location in a fixed format number string. | ||||
| @@ -275,7 +275,7 @@ MochiKit.Format._shiftNumber = function (num, exp) { | ||||
|         num = "-" + num.substring(2); | ||||
|     } | ||||
|     return num; | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** @id MochiKit.Format.percentFormat */ | ||||
| MochiKit.Format.percentFormat = function (aNumber) { | ||||
|   | ||||
| @@ -8,7 +8,7 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('Iter', '1.5', ['Base']); | ||||
| MochiKit.Base.module(MochiKit, 'Iter', '1.5', ['Base']); | ||||
|  | ||||
| MochiKit.Base.update(MochiKit.Iter, { | ||||
|     /** @id MochiKit.Iter.registerIteratorFactory */ | ||||
| @@ -222,14 +222,15 @@ MochiKit.Base.update(MochiKit.Iter, { | ||||
|             }, | ||||
|             toString: m.forwardCall("repr"), | ||||
|             next: function () { | ||||
|                 if (start >= stop) { | ||||
|                     throw self.StopIteration; | ||||
|                 } | ||||
|  | ||||
|                 var rval; | ||||
|                 while (i < start) { | ||||
|                     rval = seq.next(); | ||||
|                     i++; | ||||
|                 } | ||||
|                 if (start >= stop) { | ||||
|                     throw self.StopIteration; | ||||
|                 } | ||||
|                 start += step; | ||||
|                 return rval; | ||||
|             } | ||||
| @@ -280,15 +281,12 @@ MochiKit.Base.update(MochiKit.Iter, { | ||||
|             next: function () { | ||||
|                 while (argiter.length > 1) { | ||||
|                     try { | ||||
|                         var result = argiter[0].next(); | ||||
|                         return result; | ||||
|                         return argiter[0].next(); | ||||
|                     } catch (e) { | ||||
|                         if (e != self.StopIteration) { | ||||
|                             throw e; | ||||
|                         } | ||||
|                         argiter.shift(); | ||||
|                         var result = argiter[0].next(); | ||||
|                         return result; | ||||
|                     } | ||||
|                 } | ||||
|                 if (argiter.length == 1) { | ||||
| @@ -413,7 +411,7 @@ MochiKit.Base.update(MochiKit.Iter, { | ||||
|  | ||||
|         var self = MochiKit.Iter; | ||||
|         iterable = self.iter(iterable); | ||||
|         var rval = []; | ||||
|         rval = []; | ||||
|         var a_val; | ||||
|         try { | ||||
|             while (true) { | ||||
|   | ||||
| @@ -8,7 +8,7 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('Logging', '1.5', ['Base']); | ||||
| MochiKit.Base.module(MochiKit, 'Logging', '1.5', ['Base']); | ||||
|  | ||||
|     /** @id MochiKit.Logging.LogMessage */ | ||||
| MochiKit.Logging.LogMessage = function (num, level, info) { | ||||
| @@ -187,7 +187,7 @@ MochiKit.Logging.Logger.prototype = { | ||||
|         } | ||||
|         var messages = this.getMessages(howMany); | ||||
|         if (messages.length) { | ||||
|             var lst = map(function (m) { | ||||
|             var lst = MochiKit.Base.map(function (m) { | ||||
|                 return '\n  [' + m.num + '] ' + m.level + ': ' + m.info.join(' '); | ||||
|             }, messages); | ||||
|             lst.unshift('LAST ' + messages.length + ' MESSAGES:'); | ||||
|   | ||||
| @@ -8,7 +8,7 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('LoggingPane', '1.5', ['Base', 'Logging']); | ||||
| MochiKit.Base.module(MochiKit, 'LoggingPane', '1.5', ['Base', 'Logging']); | ||||
|  | ||||
| /** @id MochiKit.LoggingPane.createLoggingPane */ | ||||
| MochiKit.LoggingPane.createLoggingPane = function (inline/* = false */) { | ||||
| @@ -24,7 +24,10 @@ MochiKit.LoggingPane.createLoggingPane = function (inline/* = false */) { | ||||
|     return m._loggingPane; | ||||
| }; | ||||
|  | ||||
| /** @id MochiKit.LoggingPane.LoggingPane */ | ||||
| /** | ||||
|  * @id MochiKit.LoggingPane.LoggingPane | ||||
|  * @constructor | ||||
|  */ | ||||
| MochiKit.LoggingPane.LoggingPane = function (inline/* = false */, logger/* = MochiKit.Logging.logger */) { | ||||
|  | ||||
|     /* Use a div if inline, pop up a window if not */ | ||||
| @@ -146,7 +149,7 @@ MochiKit.LoggingPane.LoggingPane = function (inline/* = false */, logger/* = Moc | ||||
|             infore = new RegExp(infoFilterField.value); | ||||
|         } catch(e) { | ||||
|             /* If there was an error with the regexes, do no filtering */ | ||||
|             logDebug("Error in filter regex: " + e.message); | ||||
|             MochiKit.Logging.logDebug("Error in filter regex: " + e.message); | ||||
|             return null; | ||||
|         } | ||||
|  | ||||
| @@ -184,7 +187,7 @@ MochiKit.LoggingPane.LoggingPane = function (inline/* = false */, logger/* = Moc | ||||
|         try { | ||||
|             try { | ||||
|               debugPane.loggingPane = null; | ||||
|             } catch(e) { logFatal("Bookmarklet was closed incorrectly."); } | ||||
|             } catch(e) { MochiKit.Logging.logFatal("Bookmarklet was closed incorrectly."); } | ||||
|             if (inline) { | ||||
|                 debugPane.parentNode.removeChild(debugPane); | ||||
|             } else { | ||||
| @@ -224,7 +227,7 @@ MochiKit.LoggingPane.LoggingPane = function (inline/* = false */, logger/* = Moc | ||||
|     /** @id MochiKit.LoggingPane.filterOnEnter */ | ||||
|     var filterOnEnter = bind(function (event) { | ||||
|         event = event || window.event; | ||||
|         key = event.which || event.keyCode; | ||||
|         var key = event.which || event.keyCode; | ||||
|         if (key == 13) { | ||||
|             this.buildAndApplyFilter(); | ||||
|         } | ||||
|   | ||||
							
								
								
									
										11
									
								
								frontend/gamma/js/MochiKit/MochiKit.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								frontend/gamma/js/MochiKit/MochiKit.js
									
									
									
									
										vendored
									
									
								
							| @@ -8,17 +8,14 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| if (typeof(MochiKit) == 'undefined') { | ||||
|     MochiKit = {}; | ||||
| } | ||||
| var MochiKit = MochiKit || {}; | ||||
|  | ||||
| if (typeof(MochiKit.MochiKit) == 'undefined') { | ||||
|     /** @id MochiKit.MochiKit */ | ||||
|     MochiKit.MochiKit = {}; | ||||
| } | ||||
| /** @id MochiKit.MochiKit */ | ||||
| MochiKit.MochiKit = MochiKit.MochiKit || {}; | ||||
|  | ||||
| MochiKit.MochiKit.NAME = "MochiKit.MochiKit"; | ||||
| MochiKit.MochiKit.VERSION = "1.5"; | ||||
| MochiKit.MochiKit.__export__ = false; | ||||
| MochiKit.MochiKit.__repr__ = function () { | ||||
|     return "[" + this.NAME + " " + this.VERSION + "]"; | ||||
| }; | ||||
|   | ||||
| @@ -8,16 +8,13 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| if (typeof(MochiKit) == "undefined") { | ||||
|     MochiKit = {}; | ||||
| } | ||||
| var MochiKit = MochiKit || {}; | ||||
|  | ||||
| if (typeof(MochiKit.MockDOM) == "undefined") { | ||||
|     MochiKit.MockDOM = {}; | ||||
| } | ||||
| MochiKit.MockDOM = MochiKit.MockDOM || {}; | ||||
|  | ||||
| MochiKit.MockDOM.NAME = "MochiKit.MockDOM"; | ||||
| MochiKit.MockDOM.VERSION = "1.5"; | ||||
| MochiKit.MockDOM.__export__ = false; | ||||
|  | ||||
| MochiKit.MockDOM.__repr__ = function () { | ||||
|     return "[" + this.NAME + " " + this.VERSION + "]"; | ||||
|   | ||||
| @@ -8,7 +8,7 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('Position', '1.5', ['Base', 'DOM', 'Style']); | ||||
| MochiKit.Base.module(MochiKit, 'Position', '1.5', ['Base', 'DOM', 'Style']); | ||||
|  | ||||
| MochiKit.Base.update(MochiKit.Position, { | ||||
|     // Don't export from this module | ||||
|   | ||||
| @@ -8,7 +8,7 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('Selector', '1.5', ['Base', 'DOM', 'Iter']); | ||||
| MochiKit.Base.module(MochiKit, 'Selector', '1.5', ['Base', 'DOM', 'Iter']); | ||||
|  | ||||
| MochiKit.Selector.Selector = function (expression) { | ||||
|     this.params = {classNames: [], pseudoClassNames: []}; | ||||
| @@ -127,8 +127,8 @@ MochiKit.Selector.Selector.prototype = { | ||||
|                             a = 2; | ||||
|                             b = 0; | ||||
|                         } else { | ||||
|                             a = match[2] && parseInt(match) || null; | ||||
|                             b = parseInt(match[3]); | ||||
|                             a = match[2] && parseInt(match, 10) || null; | ||||
|                             b = parseInt(match[3], 10); | ||||
|                         } | ||||
|                         conditions.push('this.nthChild(element,' + a + ',' + b | ||||
|                                         + ',' + !!pseudoClass.match('^nth-last')    // Reverse | ||||
| @@ -167,7 +167,7 @@ MochiKit.Selector.Selector.prototype = { | ||||
|                         break; | ||||
|                     case 'not': | ||||
|                         var subselector = new MochiKit.Selector.Selector(pseudoClassArgument); | ||||
|                         conditions.push('!( ' + subselector.buildMatchExpression() + ')') | ||||
|                         conditions.push('!( ' + subselector.buildMatchExpression() + ')'); | ||||
|                         break; | ||||
|                 } | ||||
|             } | ||||
| @@ -177,7 +177,7 @@ MochiKit.Selector.Selector.prototype = { | ||||
|                 var value = 'MochiKit.DOM.getNodeAttribute(element, ' + repr(attribute.name) + ')'; | ||||
|                 var splitValueBy = function (delimiter) { | ||||
|                     return value + '.split(' + repr(delimiter) + ')'; | ||||
|                 } | ||||
|                 }; | ||||
|                 conditions.push(value + ' != null'); | ||||
|                 switch (attribute.operator) { | ||||
|                     case '=': | ||||
| @@ -352,6 +352,12 @@ MochiKit.Base.update(MochiKit.Selector, { | ||||
|             return res; | ||||
|         }; | ||||
|         return MochiKit.Base.flattenArray(MochiKit.Base.map(function (expression) { | ||||
|             try { | ||||
|                 var res = element.querySelectorAll(expression); | ||||
|                 return Array.prototype.slice.call(res, 0); | ||||
|             } catch (ignore) { | ||||
|                 // No querySelectorAll or extended expression syntax used | ||||
|             } | ||||
|             var nextScope = ""; | ||||
|             var reducer = function (results, expr) { | ||||
|                 var match = expr.match(/^[>+~]$/); | ||||
|   | ||||
| @@ -8,7 +8,7 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('Signal', '1.5', ['Base', 'DOM', 'Style']); | ||||
| MochiKit.Base.module(MochiKit, 'Signal', '1.5', ['Base', 'DOM']); | ||||
|  | ||||
| MochiKit.Signal._observers = []; | ||||
|  | ||||
| @@ -266,16 +266,17 @@ MochiKit.Base.update(MochiKit.Signal.Event.prototype, { | ||||
|  | ||||
|         if (this.type() && ( | ||||
|             this.type().indexOf('mouse') === 0 || | ||||
|             this.type().indexOf('drag') === 0 || | ||||
|             this.type().indexOf('click') != -1 || | ||||
|             this.type() == 'contextmenu')) { | ||||
|  | ||||
|             m.client = new MochiKit.Style.Coordinates(0, 0); | ||||
|             m.client = { x: 0, y: 0 }; | ||||
|             if (e.clientX || e.clientY) { | ||||
|                 m.client.x = (!e.clientX || e.clientX < 0) ? 0 : e.clientX; | ||||
|                 m.client.y = (!e.clientY || e.clientY < 0) ? 0 : e.clientY; | ||||
|             } | ||||
|  | ||||
|             m.page = new MochiKit.Style.Coordinates(0, 0); | ||||
|             m.page = { x: 0, y: 0 }; | ||||
|             if (e.pageX || e.pageY) { | ||||
|                 m.page.x = (!e.pageX || e.pageX < 0) ? 0 : e.pageX; | ||||
|                 m.page.y = (!e.pageY || e.pageY < 0) ? 0 : e.pageY; | ||||
| @@ -337,7 +338,7 @@ MochiKit.Base.update(MochiKit.Signal.Event.prototype, { | ||||
|                 } | ||||
|             } | ||||
|             if (this.type() == 'mousewheel') { | ||||
|                 m.wheel = new MochiKit.Style.Coordinates(0, 0); | ||||
|                 m.wheel = { x: 0, y: 0 }; | ||||
|                 if (e.wheelDeltaX || e.wheelDeltaY) { | ||||
|                     m.wheel.x = e.wheelDeltaX / -40 || 0; | ||||
|                     m.wheel.y = e.wheelDeltaY / -40 || 0; | ||||
| @@ -672,6 +673,18 @@ MochiKit.Base.update(MochiKit.Signal, { | ||||
|         return ident; | ||||
|     }, | ||||
|  | ||||
|     /** @id MochiKit.Signal.connectOnce */ | ||||
|     connectOnce: function (src, sig, objOrFunc/* optional */, funcOrStr) { | ||||
|         var self = MochiKit.Signal; | ||||
|         var ident1 = self.connect(src, sig, objOrFunc, funcOrStr); | ||||
|         var ident2; | ||||
|         ident2 = self.connect(src, sig, function() { | ||||
|             self.disconnect(ident1); | ||||
|             self.disconnect(ident2); | ||||
|         }); | ||||
|         return ident1; | ||||
|     }, | ||||
|  | ||||
|     _disconnect: function (ident) { | ||||
|         // already disconnected | ||||
|         if (!ident.connected) { | ||||
| @@ -715,7 +728,7 @@ MochiKit.Base.update(MochiKit.Signal, { | ||||
|                 var o = observers[i]; | ||||
|                 if (o.source === src && o.signal === sig && o.objOrFunc === obj && o.funcOrStr === func) { | ||||
|                     self._disconnect(o); | ||||
|                     if (!self._lock) { | ||||
|                     if (self._lock === 0) { | ||||
|                         observers.splice(i, 1); | ||||
|                     } else { | ||||
|                         self._dirty = true; | ||||
| @@ -727,7 +740,7 @@ MochiKit.Base.update(MochiKit.Signal, { | ||||
|             var idx = m.findIdentical(observers, ident); | ||||
|             if (idx >= 0) { | ||||
|                 self._disconnect(ident); | ||||
|                 if (!self._lock) { | ||||
|                 if (self._lock === 0) { | ||||
|                     observers.splice(idx, 1); | ||||
|                 } else { | ||||
|                     self._dirty = true; | ||||
| @@ -743,7 +756,7 @@ MochiKit.Base.update(MochiKit.Signal, { | ||||
|         var self = MochiKit.Signal; | ||||
|         var observers = self._observers; | ||||
|         var disconnect = self._disconnect; | ||||
|         var locked = self._lock; | ||||
|         var lock = self._lock; | ||||
|         var dirty = self._dirty; | ||||
|         if (typeof(funcOrStr) === 'undefined') { | ||||
|             funcOrStr = null; | ||||
| @@ -753,10 +766,10 @@ MochiKit.Base.update(MochiKit.Signal, { | ||||
|             if (ident.objOrFunc === objOrFunc && | ||||
|                     (funcOrStr === null || ident.funcOrStr === funcOrStr)) { | ||||
|                 disconnect(ident); | ||||
|                 if (locked) { | ||||
|                     dirty = true; | ||||
|                 } else { | ||||
|                 if (lock === 0) { | ||||
|                     observers.splice(i, 1); | ||||
|                 } else { | ||||
|                     dirty = true; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| @@ -774,7 +787,7 @@ MochiKit.Base.update(MochiKit.Signal, { | ||||
|         var disconnect = self._disconnect; | ||||
|         var observers = self._observers; | ||||
|         var i, ident; | ||||
|         var locked = self._lock; | ||||
|         var lock = self._lock; | ||||
|         var dirty = self._dirty; | ||||
|         if (signals.length === 0) { | ||||
|             // disconnect all | ||||
| @@ -782,7 +795,7 @@ MochiKit.Base.update(MochiKit.Signal, { | ||||
|                 ident = observers[i]; | ||||
|                 if (ident.source === src) { | ||||
|                     disconnect(ident); | ||||
|                     if (!locked) { | ||||
|                     if (lock === 0) { | ||||
|                         observers.splice(i, 1); | ||||
|                     } else { | ||||
|                         dirty = true; | ||||
| @@ -798,7 +811,7 @@ MochiKit.Base.update(MochiKit.Signal, { | ||||
|                 ident = observers[i]; | ||||
|                 if (ident.source === src && ident.signal in sigs) { | ||||
|                     disconnect(ident); | ||||
|                     if (!locked) { | ||||
|                     if (lock === 0) { | ||||
|                         observers.splice(i, 1); | ||||
|                     } else { | ||||
|                         dirty = true; | ||||
| @@ -818,7 +831,7 @@ MochiKit.Base.update(MochiKit.Signal, { | ||||
|         } | ||||
|         var args = MochiKit.Base.extend(null, arguments, 2); | ||||
|         var errors = []; | ||||
|         self._lock = true; | ||||
|         self._lock++; | ||||
|         for (var i = 0; i < observers.length; i++) { | ||||
|             var ident = observers[i]; | ||||
|             if (ident.source === src && ident.signal === sig && | ||||
| @@ -837,8 +850,8 @@ MochiKit.Base.update(MochiKit.Signal, { | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         self._lock = false; | ||||
|         if (self._dirty) { | ||||
|         self._lock--; | ||||
|         if (self._lock === 0 && self._dirty) { | ||||
|             self._dirty = false; | ||||
|             for (var i = observers.length - 1; i >= 0; i--) { | ||||
|                 if (!observers[i].connected) { | ||||
| @@ -861,7 +874,7 @@ MochiKit.Signal.__new__ = function (win) { | ||||
|     var m = MochiKit.Base; | ||||
|     this._document = document; | ||||
|     this._window = win; | ||||
|     this._lock = false; | ||||
|     this._lock = 0; | ||||
|     this._dirty = false; | ||||
|  | ||||
|     try { | ||||
|   | ||||
| @@ -6,7 +6,7 @@ See scriptaculous.js for full license. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('Sortable', '1.5', ['Base', 'Iter', 'DOM', 'Position', 'DragAndDrop']); | ||||
| MochiKit.Base.module(MochiKit, 'Sortable', '1.5', ['Base', 'Iter', 'DOM', 'Position', 'DragAndDrop']); | ||||
|  | ||||
| MochiKit.Base.update(MochiKit.Sortable, { | ||||
|     __export__: false, | ||||
| @@ -179,7 +179,7 @@ MochiKit.Base.update(MochiKit.Sortable, { | ||||
|             onhover: self.onHover, | ||||
|             tree: options.tree, | ||||
|             accept: options.accept | ||||
|         } | ||||
|         }; | ||||
|  | ||||
|         var options_for_tree = { | ||||
|             onhover: self.onEmptyHover, | ||||
| @@ -187,7 +187,7 @@ MochiKit.Base.update(MochiKit.Sortable, { | ||||
|             containment: options.containment, | ||||
|             hoverclass: options.hoverclass, | ||||
|             accept: options.accept | ||||
|         } | ||||
|         }; | ||||
|  | ||||
|         // fix for gecko engine | ||||
|         MochiKit.DOM.removeEmptyTextNodes(element); | ||||
| @@ -430,11 +430,11 @@ MochiKit.Base.update(MochiKit.Sortable, { | ||||
|                 children: [], | ||||
|                 position: parent.children.length, | ||||
|                 container: self._findChildrenElement(children[i], options.treeTag.toUpperCase()) | ||||
|             } | ||||
|             }; | ||||
|  | ||||
|             /* Get the element containing the children and recurse over it */ | ||||
|             if (child.container) { | ||||
|                 self._tree(child.container, options, child) | ||||
|                 self._tree(child.container, options, child); | ||||
|             } | ||||
|  | ||||
|             parent.children.push (child); | ||||
| @@ -475,7 +475,7 @@ MochiKit.Base.update(MochiKit.Sortable, { | ||||
|             children: new Array, | ||||
|             container: element, | ||||
|             position: 0 | ||||
|         } | ||||
|         }; | ||||
|  | ||||
|         return MochiKit.Sortable._tree(element, options, root); | ||||
|     }, | ||||
|   | ||||
| @@ -6,9 +6,12 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| (c) 2005-2006 Bob Ippolito, Beau Hartshorne.  All rights Reserved. | ||||
|  | ||||
| The MochiKit.Style.getElementPosition function is adapted from | ||||
| YAHOO.util.Dom.getXY v0.9.0. which is copyrighted by Yahoo! Inc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('Style', '1.5', ['Base', 'DOM']); | ||||
| MochiKit.Base.module(MochiKit, 'Style', '1.5', ['Base', 'DOM']); | ||||
|  | ||||
|  | ||||
| /** @id MochiKit.Style.Dimensions */ | ||||
| @@ -179,7 +182,7 @@ MochiKit.Base.update(MochiKit.Style, { | ||||
|                    o.nodeType == null && | ||||
|                    typeof(o.x) == "number" && | ||||
|                    typeof(o.y) == "number"; | ||||
|         } | ||||
|         }; | ||||
|  | ||||
|         if (typeof(elem) == "string") { | ||||
|             elem = dom.getElement(elem); | ||||
| @@ -197,7 +200,7 @@ MochiKit.Base.update(MochiKit.Style, { | ||||
|         var de = d.documentElement; | ||||
|         var b = d.body; | ||||
|  | ||||
|         if (!elem.parentNode && elem.x && elem.y) { | ||||
|         if (isCoordinates(elem)) { | ||||
|             /* it's just a MochiKit.Style.Coordinates object */ | ||||
|             c.x += elem.x || 0; | ||||
|             c.y += elem.y || 0; | ||||
| @@ -228,8 +231,8 @@ MochiKit.Base.update(MochiKit.Style, { | ||||
|  | ||||
|             if (parent != elem) { | ||||
|                 while (parent) { | ||||
|                     c.x += parseInt(parent.style.borderLeftWidth) || 0; | ||||
|                     c.y += parseInt(parent.style.borderTopWidth) || 0; | ||||
|                     c.x += parseInt(parent.style.borderLeftWidth, 10) || 0; | ||||
|                     c.y += parseInt(parent.style.borderTopWidth, 10) || 0; | ||||
|                     c.x += parent.offsetLeft; | ||||
|                     c.y += parent.offsetTop; | ||||
|                     parent = parent.offsetParent; | ||||
| @@ -390,7 +393,7 @@ MochiKit.Base.update(MochiKit.Style, { | ||||
|         if (contentSize) { | ||||
|             var tableCell = 'colSpan' in elem && 'rowSpan' in elem; | ||||
|             var collapse = (tableCell && elem.parentNode && self.getStyle( | ||||
|                     elem.parentNode, 'borderCollapse') == 'collapse') | ||||
|                     elem.parentNode, 'borderCollapse') == 'collapse'); | ||||
|             if (collapse) { | ||||
|                 if (/MSIE/.test(navigator.userAgent)) { | ||||
|                     var borderLeftQuota = elem.previousSibling? 0.5 : 1; | ||||
| @@ -543,8 +546,8 @@ MochiKit.Base.update(MochiKit.Style, { | ||||
|         } | ||||
|  | ||||
|         // Backwards compatibility aliases | ||||
|         m._deprecated(this, 'elementPosition', 'MochiKit.Style.getElementPosition', '1.3'); | ||||
|         m._deprecated(this, 'elementDimensions', 'MochiKit.Style.getElementDimensions', '1.3'); | ||||
|         m._deprecated(this, 'elementPosition', 'MochiKit.Style.getElementPosition', '1.3', true); | ||||
|         m._deprecated(this, 'elementDimensions', 'MochiKit.Style.getElementDimensions', '1.3', true); | ||||
|  | ||||
|         this.hideElement = m.partial(this.setDisplayForElement, 'none'); | ||||
|         // TODO: showElement could be improved by using getDefaultDisplay. | ||||
|   | ||||
| @@ -8,7 +8,7 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('Test', '1.5', ['Base']); | ||||
| MochiKit.Base.module(MochiKit, 'Test', '1.5', ['Base']); | ||||
|  | ||||
| MochiKit.Test.runTests = function (obj) { | ||||
|     if (typeof(obj) == "string") { | ||||
|   | ||||
| @@ -8,7 +8,7 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('Text', '1.5', ['Base', 'Format']); | ||||
| MochiKit.Base.module(MochiKit, 'Text', '1.5', ['Base', 'Format']); | ||||
|  | ||||
| /** | ||||
|  * Checks if a text string starts with the specified substring. If | ||||
| @@ -22,7 +22,7 @@ MochiKit.Base._module('Text', '1.5', ['Base', 'Format']); | ||||
|  */ | ||||
| MochiKit.Text.startsWith = function (substr, str) { | ||||
|     return str != null && substr != null && str.indexOf(substr) == 0; | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Checks if a text string ends with the specified substring. If | ||||
| @@ -37,7 +37,7 @@ MochiKit.Text.startsWith = function (substr, str) { | ||||
| MochiKit.Text.endsWith = function (substr, str) { | ||||
|     return str != null && substr != null && | ||||
|            str.lastIndexOf(substr) == Math.max(str.length - substr.length, 0); | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Checks if a text string contains the specified substring. If | ||||
| @@ -51,7 +51,7 @@ MochiKit.Text.endsWith = function (substr, str) { | ||||
|  */ | ||||
| MochiKit.Text.contains = function (substr, str) { | ||||
|     return str != null && substr != null && str.indexOf(substr) >= 0; | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Adds a character to the left-hand side of a string until it | ||||
| @@ -71,7 +71,7 @@ MochiKit.Text.padLeft = function (str, minLength, fillChar) { | ||||
|         str = fillChar + str; | ||||
|     } | ||||
|     return str; | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Adds a character to the right-hand side of a string until it | ||||
| @@ -91,7 +91,7 @@ MochiKit.Text.padRight = function (str, minLength, fillChar) { | ||||
|         str += fillChar; | ||||
|     } | ||||
|     return str; | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Returns a truncated copy of a string. If the string is shorter | ||||
| @@ -119,29 +119,55 @@ MochiKit.Text.truncate = function (str, maxLength, tail) { | ||||
|     } else { | ||||
|         return str.slice(0, maxLength); | ||||
|     } | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Splits a text string, applies a function and joins the results | ||||
|  * back together again. This is a convenience function for calling | ||||
|  * split(), map() and join() separately. It can be used to easily | ||||
|  * trim each line in a text string (using the strip function), or to | ||||
|  * translate a text word-by-word. | ||||
|  * Splits a text string using separator as the split point | ||||
|  * If max is given, at most max splits are done, giving at most | ||||
|  * max + 1 elements in the returned list. | ||||
|  * | ||||
|  * @param {Function} func the function to apply | ||||
|  * @param {String} str the string to split | ||||
|  * @param {String} [separator] the separator character to use, | ||||
|  * @param {String/RegExp} [separator] the separator char or regexp to use, | ||||
|  *            defaults to newline | ||||
|  * | ||||
|  * @return {String} a string with the joined up results | ||||
|  * @param {Number} [max] the maximum number of parts to return | ||||
|  * @return {Array} an array of parts of the string | ||||
|  */ | ||||
| MochiKit.Text.splitJoin = function (func, str, separator) { | ||||
|     if (str == null || str.length == 0) { | ||||
| MochiKit.Text.split = function (str, separator, max) { | ||||
|     if (str == null) { | ||||
|         return str; | ||||
|     } | ||||
|     separator = separator || '\n' | ||||
|     return MochiKit.Base.map(func, str.split(separator)).join(separator); | ||||
| } | ||||
|     separator = separator || '\n'; | ||||
|     var bits = str.split(separator); | ||||
|     if ((typeof(max) == "undefined") || max >= bits.length - 1) { | ||||
|         return bits; | ||||
|     } | ||||
|     bits.splice(max, bits.length, bits.slice(max, bits.length).join(separator)); | ||||
|     return bits; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Splits a text string using separator as the split point | ||||
|  * If max is given, at most max splits are done, | ||||
|  * using splits from the right | ||||
|  * | ||||
|  * @param {String} str the string to split | ||||
|  * @param {String/RegExp} [separator] the separator char or regexp to use, | ||||
|  *            defaults to newline | ||||
|  * @param {Number} [max] the maximum number of parts to return | ||||
|  * @return {Array} an array of parts of the string | ||||
|  */ | ||||
| MochiKit.Text.rsplit = function (str, separator, max) { | ||||
|     if (str == null) { | ||||
|         return str; | ||||
|     } | ||||
|     separator = separator || '\n'; | ||||
|     var bits = str.split(separator); | ||||
|     if ((typeof(max) == "undefined") || max >= bits.length - 1){ | ||||
|         return bits; | ||||
|     } | ||||
|     bits.splice(0, bits.length-max, bits.slice(0, bits.length-max).join(separator)); | ||||
|     return bits; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Creates a formatter function for the specified formatter pattern | ||||
| @@ -158,7 +184,7 @@ MochiKit.Text.splitJoin = function (func, str, separator) { | ||||
|  * @throws FormatPatternError if the format pattern was invalid | ||||
|  */ | ||||
| MochiKit.Text.formatter = function (pattern, locale) { | ||||
|     if (typeof(locale) == "undefined") { | ||||
|     if (locale == null) { | ||||
|         locale = MochiKit.Format.formatLocale(); | ||||
|     } else if (typeof(locale) == "string") { | ||||
|         locale = MochiKit.Format.formatLocale(locale); | ||||
| @@ -175,8 +201,8 @@ MochiKit.Text.formatter = function (pattern, locale) { | ||||
|             } | ||||
|         } | ||||
|         return res.join(""); | ||||
|     } | ||||
| } | ||||
|     }; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Formats the specified arguments according to a formatter pattern. | ||||
| @@ -193,7 +219,7 @@ MochiKit.Text.formatter = function (pattern, locale) { | ||||
| MochiKit.Text.format = function (pattern/*, ...*/) { | ||||
|     var func = MochiKit.Text.formatter(pattern); | ||||
|     return func.apply(this, MochiKit.Base.extend([], arguments, 1)); | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Format a value with the specified format specifier. | ||||
| @@ -205,24 +231,29 @@ MochiKit.Text.format = function (pattern/*, ...*/) { | ||||
|  *            LOCALE.en_US | ||||
|  * | ||||
|  * @return {String} the formatted output string | ||||
|  * | ||||
|  * @throws FormatPatternError if the format specifier was invalid | ||||
|  */ | ||||
| MochiKit.Text.formatValue = function (spec, value, locale) { | ||||
|     var self = MochiKit.Text; | ||||
|     if (typeof(spec) === "string") { | ||||
|         spec = self._parseFormatFlags(spec, 0, spec.length - 1); | ||||
|         spec = self._parseFormatFlags(spec, 0, spec.length); | ||||
|     } | ||||
|     for (var i = 0; spec.path != null && i < spec.path.length; i++) { | ||||
|         if (value != null) { | ||||
|             value = value[spec.path[i]]; | ||||
|         } | ||||
|     } | ||||
|     if (typeof(locale) == "undefined") { | ||||
|     if (locale == null) { | ||||
|         locale = MochiKit.Format.formatLocale(); | ||||
|     } else if (typeof(locale) == "string") { | ||||
|         locale = MochiKit.Format.formatLocale(locale); | ||||
|     } | ||||
|     var str = ""; | ||||
|     if (spec.numeric) { | ||||
|     if (spec.type == "number") { | ||||
|         if (value instanceof Number) { | ||||
|             value = value.valueOf(); | ||||
|         } | ||||
|         if (typeof(value) != "number" || isNaN(value)) { | ||||
|             str = ""; | ||||
|         } else if (value === Number.POSITIVE_INFINITY) { | ||||
| @@ -230,8 +261,7 @@ MochiKit.Text.formatValue = function (spec, value, locale) { | ||||
|         } else if (value === Number.NEGATIVE_INFINITY) { | ||||
|             str = "-\u221e"; | ||||
|         } else { | ||||
|             var sign = (spec.sign === "-") ? "" : spec.sign; | ||||
|             sign = (value < 0) ? "-" : sign; | ||||
|             var sign = (value < 0) ? "-" : spec.sign; | ||||
|             value = Math.abs(value); | ||||
|             if (spec.format === "%") { | ||||
|                 str = self._truncToPercent(value, spec.precision); | ||||
| @@ -254,7 +284,7 @@ MochiKit.Text.formatValue = function (spec, value, locale) { | ||||
|             } else if (spec.padding == "0") { | ||||
|                 str = self.padLeft(str, spec.width - sign.length, "0"); | ||||
|             } | ||||
|             str = self._localizeNumber(str, locale, spec.grouping); | ||||
|             str = self._localizeNumber(str, locale, spec.group); | ||||
|             str = sign + str; | ||||
|         } | ||||
|         if (str !== "" && spec.format === "%") { | ||||
| @@ -264,7 +294,7 @@ MochiKit.Text.formatValue = function (spec, value, locale) { | ||||
|         if (spec.format == "r") { | ||||
|             str = MochiKit.Base.repr(value); | ||||
|         } else { | ||||
|             str = (value == null) ? "null" : value.toString(); | ||||
|             str = (value == null) ? "" : value.toString(); | ||||
|         } | ||||
|         str = self.truncate(str, spec.precision); | ||||
|     } | ||||
| @@ -274,7 +304,7 @@ MochiKit.Text.formatValue = function (spec, value, locale) { | ||||
|         str = self.padLeft(str, spec.width); | ||||
|     } | ||||
|     return str; | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Adjust an already formatted numeric string for locale-specific | ||||
| @@ -284,16 +314,16 @@ MochiKit.Text.formatValue = function (spec, value, locale) { | ||||
|  * | ||||
|  * @param {String} num the formatted number string | ||||
|  * @param {Object} locale the formatting locale to use | ||||
|  * @param {Boolean} grouping the grouping flag | ||||
|  * @param {Boolean} group the grouping flag | ||||
|  * | ||||
|  * @return {String} the localized number string | ||||
|  */ | ||||
| MochiKit.Text._localizeNumber = function (num, locale, grouping) { | ||||
| MochiKit.Text._localizeNumber = function (num, locale, group) { | ||||
|     var parts = num.split(/\./); | ||||
|     var whole = parts[0]; | ||||
|     var frac = (parts.length == 1) ? "" : parts[1]; | ||||
|     var res = (frac.length > 0) ? locale.decimal : ""; | ||||
|     while (grouping && frac.length > 3) { | ||||
|     while (group && frac.length > 3) { | ||||
|         res = res + frac.substring(0, 3) + locale.separator; | ||||
|         frac = frac.substring(3); | ||||
|         if (whole.charAt(0) == "0") { | ||||
| @@ -301,15 +331,15 @@ MochiKit.Text._localizeNumber = function (num, locale, grouping) { | ||||
|         } | ||||
|     } | ||||
|     if (frac.length > 0) { | ||||
|         res += frac; | ||||
|         res = res + frac; | ||||
|     } | ||||
|     while (grouping && whole.length > 3) { | ||||
|     while (group && whole.length > 3) { | ||||
|         var pos = whole.length - 3; | ||||
|         res = locale.separator + whole.substring(pos) + res; | ||||
|         whole = whole.substring((whole.charAt(0) == "0") ? 1 : 0, pos); | ||||
|     } | ||||
|     return whole + res; | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Parses a format pattern and returns an array of constant strings | ||||
| @@ -324,44 +354,32 @@ MochiKit.Text._localizeNumber = function (num, locale, grouping) { | ||||
| MochiKit.Text._parsePattern = function (pattern) { | ||||
|     var self = MochiKit.Text; | ||||
|     var parts = []; | ||||
|     var start = 0; | ||||
|     var pos = 0; | ||||
|     for (pos = 0; pos < pattern.length; pos++) { | ||||
|         if (pattern.charAt(pos) == "{") { | ||||
|             if (pos + 1 >= pattern.length) { | ||||
|                 var msg = "unescaped { char, should be escaped as {{"; | ||||
|                 throw new self.FormatPatternError(pattern, pos, msg); | ||||
|             } else if (pattern.charAt(pos + 1) == "{") { | ||||
|                 parts.push(pattern.substring(start, pos + 1)); | ||||
|                 start = pos + 2; | ||||
|                 pos++; | ||||
|             } else { | ||||
|                 if (start < pos) { | ||||
|                     parts.push(pattern.substring(start, pos)); | ||||
|                 } | ||||
|                 start = pattern.indexOf("}", pos) + 1; | ||||
|                 if (start <= 0) { | ||||
|                     var msg = "unmatched { char, not followed by a } char"; | ||||
|                     throw new self.FormatPatternError(pattern, pos, msg); | ||||
|                 } | ||||
|                 parts.push(self._parseFormat(pattern, pos + 1, start - 1)); | ||||
|                 pos = start - 1; | ||||
|             } | ||||
|         } else if (pattern.charAt(pos) == "}") { | ||||
|             if (pos + 1 >= pattern.length || pattern.charAt(pos + 1) != "}") { | ||||
|                 var msg = "unescaped } char, should be escaped as }}"; | ||||
|                 throw new self.FormatPatternError(pattern, pos, msg); | ||||
|             } | ||||
|             parts.push(pattern.substring(start, pos + 1)); | ||||
|             start = pos + 2; | ||||
|             pos++; | ||||
|     var re = /{[^{}]*}|{{?|}}?/g; | ||||
|     var lastPos = re.lastIndex = 0; | ||||
|     var m; | ||||
|     while ((m = re.exec(pattern)) != null) { | ||||
|         if (lastPos < m.index) { | ||||
|             parts.push(pattern.substring(lastPos, m.index)) | ||||
|         } | ||||
|         var str = m[0]; | ||||
|         lastPos = m.index + str.length; | ||||
|         if (self.startsWith("{", str) && self.endsWith("}", str)) { | ||||
|             parts.push(self._parseFormat(pattern, m.index + 1, lastPos - 1)); | ||||
|         } else if (self.startsWith("{{", str) || self.startsWith("}}", str)) { | ||||
|             parts.push(str.substring(1)); | ||||
|         } else if (self.startsWith("{", str)) { | ||||
|             var msg = "unescaped { char, should be escaped as {{"; | ||||
|             throw new self.FormatPatternError(pattern, m.index, msg); | ||||
|         } else if (self.startsWith("}", str)) { | ||||
|             var msg = "unescaped } char, should be escaped as }}"; | ||||
|             throw new self.FormatPatternError(pattern, m.index, msg); | ||||
|         } | ||||
|     } | ||||
|     if (start < pos) { | ||||
|         parts.push(pattern.substring(start, pos)); | ||||
|     if (lastPos < pattern.length) { | ||||
|         parts.push(pattern.substring(lastPos)); | ||||
|     } | ||||
|     return parts; | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Parses a format instruction and returns a format info object. | ||||
| @@ -377,40 +395,30 @@ MochiKit.Text._parsePattern = function (pattern) { | ||||
| MochiKit.Text._parseFormat = function (pattern, startPos, endPos) { | ||||
|     var self = MochiKit.Text; | ||||
|     var text = pattern.substring(startPos, endPos); | ||||
|     var info; | ||||
|     var pos = text.indexOf(":"); | ||||
|     if (pos == 0) { | ||||
|         info = self._parseFormatFlags(pattern, startPos + 1, endPos); | ||||
|         info.path = [0]; | ||||
|     } else if (pos > 0) { | ||||
|         info = self._parseFormatFlags(pattern, startPos + pos + 1, endPos); | ||||
|         info.path = text.substring(0, pos).split("."); | ||||
|     } else { | ||||
|         info = self._parseFormatFlags(pattern, endPos, endPos); | ||||
|         info.path = text.split("."); | ||||
|     } | ||||
|     var DIGITS = /^\d+$/; | ||||
|     var parts = self.split(text, ":", 1); | ||||
|     var path = parts[0]; | ||||
|     var flagsPos = startPos + path.length + ((parts.length == 1) ? 0 : 1); | ||||
|     var info = self._parseFormatFlags(pattern, flagsPos, endPos); | ||||
|     info.path = (path == "") ? [] : path.split("."); | ||||
|     for (var i = 0; i < info.path.length; i++) { | ||||
|         var e = info.path[i]; | ||||
|         if (typeof(e) == "string") { | ||||
|             // TODO: replace with MochiKit.Format.strip? | ||||
|             e = e.replace(/^\s+/, "").replace(/\s+$/, ""); | ||||
|             if (e == "" && info.path.length == 1) { | ||||
|                 e = 0; | ||||
|             } else if (e == "") { | ||||
|                 var msg = "format value path contains blanks"; | ||||
|                 throw new self.FormatPatternError(pattern, startPos, msg); | ||||
|             } else if (DIGITS.test(e)) { | ||||
|                 e = parseInt(e); | ||||
|             } | ||||
|         var v = info.path[i]; | ||||
|         // TODO: replace with MochiKit.Format.strip? | ||||
|         v = v.replace(/^\s+/, "").replace(/\s+$/, ""); | ||||
|         if (v == "" && info.path.length == 1) { | ||||
|             v = 0; | ||||
|         } else if (v == "") { | ||||
|             var msg = "format value path contains blanks"; | ||||
|             throw new self.FormatPatternError(pattern, startPos, msg); | ||||
|         } else if (/^\d+$/.test(v)) { | ||||
|             v = parseInt(v, 10); | ||||
|         } | ||||
|         info.path[i] = e; | ||||
|         info.path[i] = v; | ||||
|     } | ||||
|     if (info.path.length < 0 || typeof(info.path[0]) != "number") { | ||||
|     if (info.path.length <= 0 || typeof(info.path[0]) != "number") { | ||||
|         info.path.unshift(0); | ||||
|     } | ||||
|     return info; | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Parses a string with format flags and returns a format info object. | ||||
| @@ -424,81 +432,52 @@ MochiKit.Text._parseFormat = function (pattern, startPos, endPos) { | ||||
|  * @throws FormatPatternError if the format pattern was invalid | ||||
|  */ | ||||
| MochiKit.Text._parseFormatFlags = function (pattern, startPos, endPos) { | ||||
|     var self = MochiKit.Text; | ||||
|     var info = { numeric: false, format: "s", width: 0, precision: -1, | ||||
|                  align: ">", sign: "-", padding: " ", grouping: false }; | ||||
|     var update = MochiKit.Base.update; | ||||
|     var info = { type: "string", format: "s", width: 0, precision: -1, | ||||
|                  align: ">", sign: "", padding: " ", group: false }; | ||||
|     // TODO: replace with MochiKit.Format.rstrip? | ||||
|     var flags = pattern.substring(startPos, endPos).replace(/\s+$/, ""); | ||||
|     while (flags.length > 0) { | ||||
|         switch (flags.charAt(0)) { | ||||
|         case ">": | ||||
|         case "<": | ||||
|             info.align = flags.charAt(0); | ||||
|             flags = flags.substring(1); | ||||
|             break; | ||||
|         case "+": | ||||
|         case "-": | ||||
|         case " ": | ||||
|             info.sign = flags.charAt(0); | ||||
|             flags = flags.substring(1); | ||||
|             break; | ||||
|         case ",": | ||||
|             info.grouping = true; | ||||
|             flags = flags.substring(1); | ||||
|             break; | ||||
|         case ".": | ||||
|             var chars = /^\d*/.exec(flags.substring(1))[0]; | ||||
|             info.precision = parseInt(chars); | ||||
|             flags = flags.substring(1 + chars.length); | ||||
|             break; | ||||
|         case "0": | ||||
|             info.padding = flags.charAt(0); | ||||
|             flags = flags.substring(1); | ||||
|             break; | ||||
|         case "1": | ||||
|         case "2": | ||||
|         case "3": | ||||
|         case "4": | ||||
|         case "5": | ||||
|         case "6": | ||||
|         case "7": | ||||
|         case "8": | ||||
|         case "9": | ||||
|             var chars = /^\d*/.exec(flags)[0]; | ||||
|             info.width = parseInt(chars); | ||||
|             flags = flags.substring(chars.length); | ||||
|             break; | ||||
|         case "s": | ||||
|         case "r": | ||||
|             info.format = flags.charAt(0); | ||||
|             flags = flags.substring(1); | ||||
|             break; | ||||
|         case "b": | ||||
|         case "d": | ||||
|         case "o": | ||||
|         case "x": | ||||
|         case "X": | ||||
|         case "f": | ||||
|         case "%": | ||||
|             info.numeric = true; | ||||
|             info.format = flags.charAt(0); | ||||
|             info.radix = 10; | ||||
|             if (info.format === "b") { | ||||
|                 info.radix = 2; | ||||
|             } else if (info.format === "o") { | ||||
|                 info.radix = 8; | ||||
|             } else if (info.format === "x" || info.format === "X") { | ||||
|                 info.radix = 16; | ||||
|             } | ||||
|             flags = flags.substring(1); | ||||
|             break; | ||||
|         default: | ||||
|             var msg = "unsupported format flag: " + flags.charAt(0); | ||||
|             throw new self.FormatPatternError(pattern, startPos, msg); | ||||
|     var text = pattern.substring(startPos, endPos).replace(/\s+$/, ""); | ||||
|     var m = /^([<>+ 0,-]+)?(\d+)?(\.\d*)?([srbdoxXf%])?(.*)$/.exec(text); | ||||
|     var flags = m[1]; | ||||
|     var width = m[2]; | ||||
|     var precision = m[3]; | ||||
|     var type = m[4]; | ||||
|     var unmatched = m[5]; | ||||
|     for (var i = 0; flags && i < flags.length; i++) { | ||||
|         var chr = flags.charAt(i); | ||||
|         if (chr == "<" || chr == ">") { | ||||
|             info.align = chr; | ||||
|         } else if (chr == "+" || chr == "-" || chr == " ") { | ||||
|             info.sign = (chr == "-") ? "" : chr; | ||||
|         } else if (chr == "0") { | ||||
|             info.padding = chr; | ||||
|         } else if (chr == ",") { | ||||
|             info.group = true; | ||||
|         } | ||||
|     } | ||||
|     if (width) { | ||||
|         info.width = parseInt(width, 10); | ||||
|     } | ||||
|     if (precision && precision.length > 1) { | ||||
|         info.precision = parseInt(precision.substring(1), 10); | ||||
|     } | ||||
|     if (type == "s" || type == "r") { | ||||
|         info.format = type; | ||||
|     } else if (type == "b") { | ||||
|         update(info, { type: "number", format: type, radix: 2 }); | ||||
|     } else if (type == "o") { | ||||
|         update(info, { type: "number", format: type, radix: 8 }); | ||||
|     } else if (type == "x" || type == "X") { | ||||
|         update(info, { type: "number", format: type, radix: 16 }); | ||||
|     } else if (type == "d" || type == "f" || type == "%") { | ||||
|         update(info, { type: "number", format: type, radix: 10 }); | ||||
|     } | ||||
|     if (unmatched) { | ||||
|         var msg = "unsupported format flag: " + unmatched.charAt(0); | ||||
|         throw new MochiKit.Text.FormatPatternError(pattern, startPos, msg); | ||||
|     } | ||||
|     return info; | ||||
| } | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Formats a value as a percentage. This method avoids multiplication | ||||
| @@ -510,33 +489,23 @@ MochiKit.Text._parseFormatFlags = function (pattern, startPos, endPos) { | ||||
|  * @param {Number} precision the number of precision digits | ||||
|  */ | ||||
| MochiKit.Text._truncToPercent = function (value, precision) { | ||||
|     // TODO: This can be simplified by using the same helper function | ||||
|     //       as roundToFixed now does. | ||||
|     // TODO: This can be simplified by using MochiKit.Format._shiftNumber | ||||
|     //       as roundToFixed does. | ||||
|     var str; | ||||
|     if (precision >= 0) { | ||||
|         str = MochiKit.Format.roundToFixed(value, precision + 2); | ||||
|     } else { | ||||
|         str = (value == null) ? "0" : value.toString(); | ||||
|     } | ||||
|     var fracPos = str.indexOf("."); | ||||
|     if (fracPos < 0) { | ||||
|         str = str + "00"; | ||||
|     } else if (fracPos + 3 >= str.length) { | ||||
|         var fraction = str.substring(fracPos + 1); | ||||
|         while (fraction.length < 2) { | ||||
|             fraction = fraction + "0"; | ||||
|         } | ||||
|         str = str.substring(0, fracPos) + fraction; | ||||
|     } else { | ||||
|         var fraction = str.substring(fracPos + 1); | ||||
|         str = str.substring(0, fracPos) + fraction.substring(0, 2) + | ||||
|               "." + fraction.substring(2); | ||||
|     var arr = MochiKit.Text.split(str, ".", 2); | ||||
|     var frac = MochiKit.Text.padRight(arr[1], 2, "0"); | ||||
|     var whole = arr[0] + frac.substring(0, 2); | ||||
|     frac = frac.substring(2); | ||||
|     while (/^0[0-9]/.test(whole)) { | ||||
|         whole = whole.substring(1); | ||||
|     } | ||||
|     while (str.length > 1 && str.charAt(0) == "0" && str.charAt(1) != ".") { | ||||
|         str = str.substring(1); | ||||
|     } | ||||
|     return str; | ||||
| } | ||||
|     return (frac.length <= 0) ? whole : whole + "." + frac; | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Creates a new format pattern error. | ||||
| @@ -558,13 +527,13 @@ MochiKit.Text.FormatPatternError = function (pattern, pos, message) { | ||||
|     this.pattern = pattern; | ||||
|     this.pos = pos; | ||||
|     this.message = message; | ||||
| } | ||||
| MochiKit.Text.FormatPatternError.prototype = | ||||
|     new MochiKit.Base.NamedError("MochiKit.Text.FormatPatternError"); | ||||
| }; | ||||
|  | ||||
| MochiKit.Text.FormatPatternError.prototype = new MochiKit.Base.NamedError("MochiKit.Text.FormatPatternError"); | ||||
| MochiKit.Text.FormatPatternError.constructor = MochiKit.Text.FormatPatternError; | ||||
|  | ||||
| // | ||||
| //XXX: Internet Explorer exception handling blows | ||||
| //XXX: Internet Explorer export fix | ||||
| // | ||||
| if (MochiKit.__export__) { | ||||
|     formatter = MochiKit.Text.formatter; | ||||
|   | ||||
| @@ -8,7 +8,7 @@ See <http://mochikit.com/> for documentation, downloads, license, etc. | ||||
|  | ||||
| ***/ | ||||
|  | ||||
| MochiKit.Base._module('Visual', '1.5', ['Base', 'DOM', 'Style', 'Color', 'Position']); | ||||
| MochiKit.Base.module(MochiKit, 'Visual', '1.5', ['Base', 'DOM', 'Style', 'Color', 'Position']); | ||||
|  | ||||
| MochiKit.Visual._RoundCorners = function (e, options) { | ||||
|     e = MochiKit.DOM.getElement(e); | ||||
| @@ -469,6 +469,11 @@ MochiKit.Visual.Transitions.parabolic = function (pos) { | ||||
|    return pos * pos; | ||||
| }; | ||||
|  | ||||
| /** @id MochiKit.Visual.Transitions.spring */ | ||||
| MochiKit.Visual.Transitions.spring = function (pos) { | ||||
|    return 1 - (Math.cos(pos * 2.5 * Math.PI) * Math.exp(-pos * 6)); | ||||
| }; | ||||
|  | ||||
| /** @id MochiKit.Visual.Transitions.none */ | ||||
| MochiKit.Visual.Transitions.none = function (pos) { | ||||
|     return 0; | ||||
| @@ -534,6 +539,11 @@ MochiKit.Base.update(MochiKit.Visual.ScopedQueue.prototype, { | ||||
|                     e.finalize(); | ||||
|                 }, this.effects); | ||||
|                 break; | ||||
|             case 'replace': | ||||
|                 ma(function (e) { | ||||
|                     e.cancel(); | ||||
|                 }, this.effects); | ||||
|                 break; | ||||
|         } | ||||
|  | ||||
|         effect.startOn += timestamp; | ||||
| @@ -662,8 +672,12 @@ MochiKit.Visual.Base.prototype = { | ||||
|             this.event('afterSetup'); | ||||
|         } | ||||
|         if (this.state == 'running') { | ||||
|             if (this.options.transition) { | ||||
|                 pos = this.options.transition(pos); | ||||
|             var trans = this.options.transition; | ||||
|             if (typeof(trans) == "string") { | ||||
|                 trans = MochiKit.Visual.Transitions[trans]; | ||||
|             } | ||||
|             if (typeof(trans) == "function") { | ||||
|                 pos = trans(pos); | ||||
|             } | ||||
|             pos *= (this.options.to - this.options.from); | ||||
|             pos += this.options.from; | ||||
| @@ -1686,8 +1700,8 @@ MochiKit.Visual.squish = function (element, /* optional */ options) { | ||||
|     var elemClip; | ||||
|     options = b.update({ | ||||
|         restoreAfterFinish: true, | ||||
|         scaleMode: {originalHeight: elementDimensions.w, | ||||
|                     originalWidth: elementDimensions.h}, | ||||
|         scaleMode: {originalHeight: elementDimensions.h, | ||||
|                     originalWidth: elementDimensions.w}, | ||||
|         beforeSetupInternal: function (effect) { | ||||
|             elemClip = s.makeClipping(effect.element); | ||||
|         }, | ||||
| @@ -1958,18 +1972,5 @@ MochiKit.Visual.fold = function (element, /* optional */ options) { | ||||
| }; | ||||
|  | ||||
|  | ||||
| /* end of Rico adaptation */ | ||||
|  | ||||
| MochiKit.Visual.__new__ = function () { | ||||
|     var m = MochiKit.Base; | ||||
|  | ||||
|     // Backwards compatibility aliases | ||||
|     m._deprecated(this, 'Color', 'MochiKit.Color.Color', '1.1'); | ||||
|     m._deprecated(this, 'getElementsComputedStyle', 'MochiKit.Style.getStyle', '1.1'); | ||||
|  | ||||
|     m.nameFunctions(this); | ||||
| }; | ||||
|  | ||||
| MochiKit.Visual.__new__(); | ||||
|  | ||||
| MochiKit.Base.nameFunctions(MochiKit.Visual); | ||||
| MochiKit.Base._exportSymbols(this, MochiKit.Visual); | ||||
|   | ||||
| @@ -1,18 +0,0 @@ | ||||
| dojo.kwCompoundRequire({ | ||||
|     "common": [ | ||||
|         "MochiKit.Base", | ||||
|         "MochiKit.Iter", | ||||
|         "MochiKit.Logging", | ||||
|         "MochiKit.DateTime", | ||||
|         "MochiKit.Format", | ||||
|         "MochiKit.Async", | ||||
|         "MochiKit.DOM", | ||||
|         "MochiKit.Style", | ||||
|         "MochiKit.LoggingPane", | ||||
|         "MochiKit.Color", | ||||
|         "MochiKit.Signal", | ||||
|         "MochiKit.Position", | ||||
|         "MochiKit.Visual" | ||||
|     ] | ||||
| }); | ||||
| dojo.provide("MochiKit.*"); | ||||
| @@ -81,11 +81,11 @@ function run() { | ||||
|  | ||||
| 	Clipperz.PM.RunTime.mainController.run(shouldShowRegistrationForm); | ||||
|  | ||||
| //Clipperz.log("HASH: " + window.location.hash); | ||||
| if (window.location.hash != "") { | ||||
| 	window.location.hash = "" | ||||
| } | ||||
| //Clipperz.log("HASH cleaned"); | ||||
| 	//Clipperz.log("HASH: " + window.location.hash); | ||||
| //	if (window.location.hash != "") { | ||||
| //		window.location.hash = "" | ||||
| //	} | ||||
| //	Clipperz.log("HASH cleaned"); | ||||
| //	#credentials=base64encoded({username:'joe', passphrase:'clipperz'}) | ||||
| //	MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', {username:'joe', passphrase:'clipperz'}); | ||||
| } | ||||
|   | ||||
| @@ -1,8 +1,11 @@ | ||||
| { | ||||
| 	"copyright.values": {              | ||||
| 		"mochikit.repository": "http://svn.mochikit.com/mochikit/trunk/", | ||||
| 		"mochikit.version": "1506" | ||||
| 		"mochikit.repository": "https://github.com/mochi/mochikit.git", | ||||
| 		"mochikit.version": "fe8d17bb9ac0a4e5ad4a8d5c2c94a6fac1c92d75" | ||||
| 	}, | ||||
|  | ||||
| 	"html.template": "index_template.html", | ||||
|  | ||||
| 	"js": [ | ||||
| 		"MochiKit/Base.js", | ||||
| 		"MochiKit/Iter.js", | ||||
|   | ||||
| @@ -28,7 +28,6 @@ refer to http://www.clipperz.com. | ||||
| 	<title>Clipperz.Crypto.AES_v3 - TEST</title> | ||||
| 	 | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -32,7 +32,6 @@ refer to http://www.clipperz.com. | ||||
| 	</script> | ||||
| 	 | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,6 @@ refer to http://www.clipperz.com. | ||||
| <html> | ||||
| <head> | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,6 @@ refer to http://www.clipperz.com. | ||||
| <html> | ||||
| <head> | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,6 @@ refer to http://www.clipperz.com. | ||||
| <html> | ||||
| <head> | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,6 @@ refer to http://www.clipperz.com. | ||||
| <html> | ||||
| <head> | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,6 @@ refer to http://www.clipperz.com. | ||||
| <html> | ||||
| <head> | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -28,7 +28,6 @@ refer to http://www.clipperz.com. | ||||
| 	<script> jslog_config_enabled = true; </script> | ||||
| 	 | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,6 @@ refer to http://www.clipperz.com. | ||||
| <html> | ||||
| <head> | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -63,7 +63,6 @@ refer to http://www.clipperz.com. | ||||
| 	</script> | ||||
| 	 | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,6 @@ refer to http://www.clipperz.com. | ||||
| <html> | ||||
| <head> | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -28,7 +28,6 @@ refer to http://www.clipperz.com. | ||||
| 	<title>Clipperz.Crypto.Usage - TEST</title> | ||||
| 	 | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -28,7 +28,6 @@ refer to http://www.clipperz.com. | ||||
| 	<title>Clipperz.PM.Date - test</title> | ||||
|  | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<!-- script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script --> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -28,7 +28,6 @@ refer to http://www.clipperz.com. | ||||
| 	<title>Clipperz.PM.Proxy - TEST</title> | ||||
|  | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -28,7 +28,6 @@ refer to http://www.clipperz.com. | ||||
| 	<title>Clipperz.PM.Toll - test</title> | ||||
|  | ||||
| 	<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -28,7 +28,6 @@ refer to http://www.clipperz.com. | ||||
| 	<title>Clipperz.PM.UI.Web.MainController - test</title> | ||||
|  | ||||
| 	<script type="text/javascript" src="../../../../../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../../../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../../../../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../../../../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,6 @@ refer to http://www.clipperz.com. | ||||
| <html> | ||||
| <head> | ||||
| 	<script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></script> | ||||
| 	<script type="text/javascript" src="../../../js/JSLog/jslog.js"></script> | ||||
|     <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script> | ||||
|     <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> | ||||
|  | ||||
|   | ||||
| @@ -101,9 +101,7 @@ refer to http://www.clipperz.com. | ||||
| Clipperz_IEisBroken = true; | ||||
| </script><![endif]--> | ||||
|  | ||||
| 	<link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" /> | ||||
| 	<link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" /> | ||||
| 	<link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" /> | ||||
| 	<link rel="stylesheet" type="text/css" href="../../../../css/web.css" /> | ||||
|  | ||||
| </head> | ||||
| <body> | ||||
|   | ||||
| @@ -99,9 +99,7 @@ refer to http://www.clipperz.com. | ||||
| Clipperz_IEisBroken = true; | ||||
| </script><![endif]--> | ||||
|  | ||||
| 	<link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" /> | ||||
| 	<link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" /> | ||||
| 	<link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" /> | ||||
| 	<link rel="stylesheet" type="text/css" href="../../../../css/web.css" /> | ||||
|  | ||||
| <style> | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Giulio Cesare Solaroli
					Giulio Cesare Solaroli