1
0
mirror of http://git.whoc.org.uk/git/password-manager.git synced 2025-01-10 12:00:02 +01:00

Merge pull request #34 from gcsolaroli/master

Fixed some resources
This commit is contained in:
Giulio Cesare Solaroli 2012-03-17 14:18:52 -07:00
commit 288b8df03a
49 changed files with 1861 additions and 3309 deletions

View File

@ -3,6 +3,9 @@
"mochikit.repository": "http://svn.mochikit.com/mochikit/trunk/", "mochikit.repository": "http://svn.mochikit.com/mochikit/trunk/",
"mochikit.version": "1249" "mochikit.version": "1249"
}, },
"html.template": "index_template.html",
"js": [ "js": [
"MochiKit/Base.js", "MochiKit/Base.js",
"MochiKit/Iter.js", "MochiKit/Iter.js",

File diff suppressed because it is too large Load Diff

View File

@ -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> <html>
<head> <head>
<title>clipperz</title> <title>clipperz</title>

View File

@ -142,7 +142,7 @@ Clipperz.PM.Proxy.prototype = MochiKit.Base.update(null, {
'processMessage': function (aFunctionName, someParameters, aRequestType) { 'processMessage': function (aFunctionName, someParameters, aRequestType) {
var deferredResult; 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, 'payToll', aRequestType);
deferredResult.addMethod(this, 'sendMessage', aFunctionName); deferredResult.addMethod(this, 'sendMessage', aFunctionName);
deferredResult.addMethod(this, 'setTollCallback'); deferredResult.addMethod(this, 'setTollCallback');

View File

@ -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', id:this.getId('body'), cls:'tooltip_body', children:[
{tag:'div', cls:'tooltip_text', children:[ {tag:'div', cls:'tooltip_text', children:[
{tag:'span', html:this.text()} {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'} {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()) { switch (this.position()) {
case 'ABOVE': case 'ABOVE':
//console.log("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.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - this.boxDimensions().w/2);
bodyPosition.y = elementSizeAndPosition.position.y - this.boxDimensions().h - 13; bodyPosition.y = elementSizeAndPosition.position.y - this.boxDimensions().h - 13;
arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2); // arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2);
arrowPosition.y = elementSizeAndPosition.position.y - 13; // arrowPosition.y = elementSizeAndPosition.position.y - 13;
break; break;
case 'BELOW': case 'BELOW':
//console.log("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.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - this.boxDimensions().w/2);
bodyPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h + 13; bodyPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h + 13;
arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2); // arrowPosition.x = elementSizeAndPosition.position.x + (elementSizeAndPosition.dimensions.w/2 - 36/2);
arrowPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h; // arrowPosition.y = elementSizeAndPosition.position.y + elementSizeAndPosition.dimensions.h;
break; break;
case 'LEFT': case 'LEFT':
//console.log("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.x = elementSizeAndPosition.position.x - this.boxDimensions().w - 13;
bodyPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - this.boxDimensions().h/2); bodyPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - this.boxDimensions().h/2);
arrowPosition.x = elementSizeAndPosition.position.x -13; // arrowPosition.x = elementSizeAndPosition.position.x -13;
arrowPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - 36/2); // arrowPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - 36/2);
break; break;
case 'RIGHT': case 'RIGHT':
//console.log("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.x = elementSizeAndPosition.position.x + elementSizeAndPosition.dimensions.w + 13;
bodyPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - this.boxDimensions().h/2); bodyPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - this.boxDimensions().h/2);
arrowPosition.x = elementSizeAndPosition.position.x + elementSizeAndPosition.dimensions.w; // arrowPosition.x = elementSizeAndPosition.position.x + elementSizeAndPosition.dimensions.w;
arrowPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - 36/2); // arrowPosition.y = elementSizeAndPosition.position.y + (elementSizeAndPosition.dimensions.h/2 - 36/2);
break; break;
} }
//console.log("X: " + bodyPosition.x + ", Y: " + bodyPosition.y); //console.log("X: " + bodyPosition.x + ", Y: " + bodyPosition.y);
MochiKit.Style.setElementPosition(this.getId('body'), bodyPosition); MochiKit.Style.setElementPosition(this.getId('tooltip'), bodyPosition);
MochiKit.Style.setElementPosition(this.getId('arrow'), arrowPosition); // MochiKit.Style.setElementPosition(this.getId('body'), bodyPosition);
// MochiKit.Style.setElementPosition(this.getId('arrow'), arrowPosition);
MochiKit.Visual.appear(this.displayElement(), {duration:0.4}); MochiKit.Visual.appear(this.displayElement(), {duration:0.4});
} }
}, },

View File

@ -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', cls:'loginForm', autocomplete:this.autocomplete(), children:[
{tag:'form', id:this.getId('form'), cls:'loginForm', children:[ {tag:'form', id:this.getId('form'), cls:'loginForm', children:[
{tag:'label', html:'username', 'for':this.getId('usernameField')}, {tag:'label', html:'username', 'for':this.getId('usernameField')},
{tag:'input', id:this.getId('usernameField'), type:'text', cls:'username'/*, value:'joe'*/}, {tag:'input', id:this.getId('usernameField'), type:'text', cls:'username'},
{tag:'ul', id:this.getId('passwordOptions'), children:[
{tag:'li', id:this.getId('passphraseOption'), children:[
{tag:'label', html:'passphrase / OTP', 'for':this.getId('passphraseField')}, {tag:'label', html:'passphrase / OTP', 'for':this.getId('passphraseField')},
{tag:'input', id:this.getId('passphraseField'), type:'password', cls:'password'/*, value:'clipperz'*/} {tag:'input', id:this.getId('passphraseField'), type:'password', cls:'password'},
]} // ,
/*
{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:'div', cls:'translations', children:[ {tag:'div', cls:'translations', children:[
{tag:'h4', html:'choose your language'}, {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) { 'loginEventHandler': function(anEvent) {
var username; // var username;
var passphrase; // var passphrase;
// var shouldUseOTP;
// var otp;
var signalArguments; var signalArguments;
anEvent.preventDefault(); anEvent.preventDefault();
username = this.getElement('usernameField').value; // username = this.getElement('usernameField').value;
passphrase = this.getElement('passphraseField').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;
signalArguments = {username:username}; // signalArguments = {username:username};
// signalArguments.passphrase = passphrase;
// if (shouldUseOTP) { signalArguments = {
// signalArguments.otp = otp; 'username': this.getElement('usernameField').value,
// } else { 'passphrase': this.getElement('passphraseField').value
signalArguments.passphrase = passphrase; };
// }
MochiKit.Signal.signal(this, 'doLogin', signalArguments); MochiKit.Signal.signal(this, 'doLogin', signalArguments);
}, },

View File

@ -81,13 +81,11 @@ MochiKit.Base.update(Clipperz.PM.UI.Web.Controllers.LoginController.prototype, {
'doLogin': function(aLoginForm, anEvent) { 'doLogin': function(aLoginForm, anEvent) {
var deferredResult; var deferredResult;
var parameters; var parameters;
// var shouldUseOTP;
var loginProgress; var loginProgress;
var user; var user;
var getPassphraseDelegate; var getPassphraseDelegate;
parameters = anEvent; parameters = anEvent;
// shouldUseOTP = (typeof(parameters.passphrase) == 'undefined');
getPassphraseDelegate = MochiKit.Base.partial(MochiKit.Async.succeed, parameters.passphrase); 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')}); 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(Clipperz.PM.RunTime.mainController, 'setPassphraseDelegate', getPassphraseDelegate);
deferredResult.addMethod(loginProgress, 'deferredShowModal', {deferredObject:deferredResult, openFromElement:aLoginForm.submitButtonElement()}); deferredResult.addMethod(loginProgress, 'deferredShowModal', {deferredObject:deferredResult, openFromElement:aLoginForm.submitButtonElement()});
deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'deferredEntropyCollection'); deferredResult.addMethod(Clipperz.Crypto.PRNG.defaultRandomGenerator(), 'deferredEntropyCollection');
// if (shouldUseOTP == false) {
deferredResult.addMethod(user, 'login'); deferredResult.addMethod(user, 'login');
// } else {
// deferredResult.addMethod(user, 'loginUsingOTP', parameters.username, parameters.otp);
// }
deferredResult.addCallback(function(aLoginProgress, res) { deferredResult.addCallback(function(aLoginProgress, res) {
aLoginProgress.disableCancel(); aLoginProgress.disableCancel();
return res; return res;

View File

@ -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 */ /** @id MochiKit.Async.Deferred */
MochiKit.Async.Deferred = function (/* optional */ canceller) { MochiKit.Async.Deferred = function (/* optional */ canceller) {
@ -20,28 +20,32 @@ MochiKit.Async.Deferred = function (/* optional */ canceller) {
this.canceller = canceller; this.canceller = canceller;
this.silentlyCancelled = false; this.silentlyCancelled = false;
this.chained = false; this.chained = false;
this.finalized = false;
}; };
MochiKit.Async.Deferred.prototype = { MochiKit.Async.Deferred.prototype = {
/** @id MochiKit.Async.Deferred.prototype.repr */ /** @id MochiKit.Async.Deferred.prototype.repr */
repr: function () { repr: function () {
var state; return 'Deferred(' + this.id + ', ' + this.state() + ')';
if (this.fired == -1) {
state = 'unfired';
} else if (this.fired === 0) {
state = 'success';
} else {
state = 'error';
}
return 'Deferred(' + this.id + ', ' + state + ')';
}, },
toString: MochiKit.Base.forwardCall("repr"), toString: MochiKit.Base.forwardCall("repr"),
_nextId: MochiKit.Base.counter(), _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 */ /** @id MochiKit.Async.Deferred.prototype.cancel */
cancel: function () { cancel: function (e) {
var self = MochiKit.Async; var self = MochiKit.Async;
if (this.fired == -1) { if (this.fired == -1) {
if (this.canceller) { if (this.canceller) {
@ -50,10 +54,15 @@ MochiKit.Async.Deferred.prototype = {
this.silentlyCancelled = true; this.silentlyCancelled = true;
} }
if (this.fired == -1) { 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)) { } 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.fired = ((res instanceof Error) ? 1 : 0);
this.results[this.fired] = res; this.results[this.fired] = res;
if (this.paused === 0) {
this._fire(); this._fire();
}
}, },
_check: function () { _check: function () {
@ -129,6 +140,9 @@ MochiKit.Async.Deferred.prototype = {
if (this.chained) { if (this.chained) {
throw new Error("Chained Deferreds can not be re-used"); 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]); this.chain.push([cb, eb]);
if (this.fired >= 0) { if (this.fired >= 0) {
this._fire(); this._fire();
@ -136,6 +150,24 @@ MochiKit.Async.Deferred.prototype = {
return this; 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 () { _fire: function () {
/*** /***
@ -160,11 +192,8 @@ MochiKit.Async.Deferred.prototype = {
fired = ((res instanceof Error) ? 1 : 0); fired = ((res instanceof Error) ? 1 : 0);
if (res instanceof MochiKit.Async.Deferred) { if (res instanceof MochiKit.Async.Deferred) {
cb = function (res) { cb = function (res) {
self._resback(res);
self.paused--; self.paused--;
if ((self.paused === 0) && (self.fired >= 0)) { self._resback(res);
self._fire();
}
}; };
this.paused++; this.paused++;
} }
@ -178,6 +207,10 @@ MochiKit.Async.Deferred.prototype = {
} }
this.fired = fired; this.fired = fired;
this.results[fired] = res; this.results[fired] = res;
if (this.chain.length == 0 && this.paused === 0 && this._finalizer) {
this.finalized = true;
this._finalizer(res);
}
if (cb && this.paused) { if (cb && this.paused) {
// this is for "tail recursion" in case the dependent deferred // this is for "tail recursion" in case the dependent deferred
// is already fired // is already fired
@ -249,7 +282,7 @@ MochiKit.Base.update(MochiKit.Async, {
var status = null; var status = null;
try { try {
status = this.status; 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 // 0 or undefined seems to mean cached or local
status = 304; status = 304;
} }
@ -337,7 +370,8 @@ MochiKit.Base.update(MochiKit.Async, {
username: undefined, username: undefined,
password: undefined, password: undefined,
headers: undefined, headers: undefined,
mimeType: undefined mimeType: undefined,
responseType: undefined
*/ */
}, opts); }, opts);
var self = MochiKit.Async; var self = MochiKit.Async;
@ -371,6 +405,9 @@ MochiKit.Base.update(MochiKit.Async, {
req.setRequestHeader(name, value); req.setRequestHeader(name, value);
} }
} }
if ("responseType" in opts && "responseType" in req) {
req.responseType = opts.responseType;
}
return self.sendXMLHttpRequest(req, opts.sendContent); return self.sendXMLHttpRequest(req, opts.sendContent);
}, },
@ -404,16 +441,44 @@ MochiKit.Base.update(MochiKit.Async, {
return d; 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 */ /** @id MochiKit.Async.wait */
wait: function (seconds, /* optional */value) { wait: function (seconds, /* optional */value) {
var d = new MochiKit.Async.Deferred(); var d = new MochiKit.Async.Deferred();
var m = MochiKit.Base; var cb = MochiKit.Base.bind("callback", d, value);
if (typeof(value) != 'undefined') { var timeout = setTimeout(cb, Math.floor(seconds * 1000));
d.addCallback(function () { return value; });
}
var timeout = setTimeout(
m.bind("callback", d),
Math.floor(seconds * 1000));
d.canceller = function () { d.canceller = function () {
try { try {
clearTimeout(timeout); 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 = new MochiKit.Async.Deferred();
MochiKit.Async.DeferredList.prototype.constructor = MochiKit.Async.DeferredList;
MochiKit.Async.DeferredList.prototype._cbDeferred = function (index, succeeded, result) { MochiKit.Async.DeferredList.prototype._cbDeferred = function (index, succeeded, result) {
this.resultList[index] = [succeeded, result]; this.resultList[index] = [succeeded, result];

View File

@ -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") { if (typeof(MochiKit.__export__) == "undefined") {
MochiKit.__export__ = true; MochiKit.__export__ = true;
} }
if (typeof(MochiKit.Base) == 'undefined') { MochiKit.NAME = "MochiKit";
MochiKit.Base = {}; 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 * Creates a new module in a parent namespace. This function will
* property into the "MochiKit" object, making sure that all * create a new empty module object with "NAME", "VERSION",
* dependency modules have already been inserted. It will also make * "toString" and "__repr__" properties. This object will be inserted into the parent object
* sure that the appropriate properties and default module functions * using the specified name (i.e. parent[name] = module). It will
* are defined. * 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} name the module name, e.g. "Base"
* @param {String} version the module version, e.g. "1.5" * @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) { MochiKit.Base.module = function (parent, name, version, deps) {
if (!(name in MochiKit)) { var module = parent[name] = parent[name] || {};
MochiKit[name] = {}; var prefix = (parent.NAME ? parent.NAME + "." : "");
} module.NAME = prefix + name;
var module = MochiKit[name];
module.NAME = "MochiKit." + name;
module.VERSION = version; module.VERSION = version;
module.__repr__ = function () { module.__repr__ = function () {
return "[" + this.NAME + " " + this.VERSION + "]"; return "[" + this.NAME + " " + this.VERSION + "]";
@ -42,14 +52,15 @@ MochiKit.Base._module = function (name, version, deps) {
module.toString = function () { module.toString = function () {
return this.__repr__(); return this.__repr__();
}; };
for (var i = 0; i < deps.length; i++) { for (var i = 0; deps != null && i < deps.length; i++) {
if (!(deps[i] in MochiKit)) { if (!(deps[i] in parent)) {
throw 'MochiKit.' + name + ' depends on MochiKit.' + deps[i] + '!'; 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 */ /** @id MochiKit.Base.update */
MochiKit.Base.update = function (self, obj/*, ... */) { MochiKit.Base.update = function (self, obj/*, ... */) {
@ -240,6 +251,7 @@ MochiKit.Base.update(MochiKit.Base, {
_newNamedError: function (module, name, func) { _newNamedError: function (module, name, func) {
func.prototype = new MochiKit.Base.NamedError(module.NAME + "." + name); func.prototype = new MochiKit.Base.NamedError(module.NAME + "." + name);
func.prototype.constructor = func;
module[name] = func; module[name] = func;
}, },
@ -351,7 +363,7 @@ MochiKit.Base.update(MochiKit.Base, {
} else if (typeof(value) === "number" || value instanceof Number) { } else if (typeof(value) === "number" || value instanceof Number) {
return !isNaN(value) && value != 0; return !isNaN(value) && value != 0;
} else if (value != null && typeof(value.length) === "number") { } else if (value != null && typeof(value.length) === "number") {
return value.length !== 0 return value.length !== 0;
} else { } else {
return value != null; return value != null;
} }
@ -675,6 +687,9 @@ MochiKit.Base.update(MochiKit.Base, {
newfunc.im_self = im_self; newfunc.im_self = im_self;
newfunc.im_func = im_func; newfunc.im_func = im_func;
newfunc.im_preargs = im_preargs; newfunc.im_preargs = im_preargs;
if (typeof(im_func.NAME) == 'string') {
newfunc.NAME = "bind(" + im_func.NAME + ",...)";
}
return newfunc; return newfunc;
}, },
@ -788,12 +803,15 @@ MochiKit.Base.update(MochiKit.Base, {
} }
return MochiKit.Base.reprRegistry.match(o); return MochiKit.Base.reprRegistry.match(o);
} catch (e) { } catch (e) {
try {
if (typeof(o.NAME) == 'string' && ( if (typeof(o.NAME) == 'string' && (
o.toString == Function.prototype.toString || o.toString == Function.prototype.toString ||
o.toString == Object.prototype.toString o.toString == Object.prototype.toString
)) { )) {
return o.NAME; return o.NAME;
} }
} catch (ignore) {
}
} }
try { try {
var ostring = (o + ""); var ostring = (o + "");
@ -840,16 +858,13 @@ MochiKit.Base.update(MochiKit.Base, {
/** @id MochiKit.Base.evalJSON */ /** @id MochiKit.Base.evalJSON */
evalJSON: function () { evalJSON: function (jsonText) {
return eval("(" + MochiKit.Base._filterJSON(arguments[0]) + ")"); return eval("(" + MochiKit.Base._filterJSON(jsonText) + ")");
}, },
_filterJSON: function (s) { _filterJSON: function (s) {
var m = s.match(/^\s*\/\*(.*)\*\/\s*$/); var m = s.match(/^\s*\/\*(.*)\*\/\s*$/);
if (m) { return (m) ? m[1] : s;
return m[1];
}
return s;
}, },
/** @id MochiKit.Base.serializeJSON */ /** @id MochiKit.Base.serializeJSON */
@ -894,6 +909,12 @@ MochiKit.Base.update(MochiKit.Base, {
// short-circuit for objects that support "json" serialization // short-circuit for objects that support "json" serialization
// if they return "self" then just pass-through... // if they return "self" then just pass-through...
var newObj; var newObj;
if (typeof(o.toJSON) == "function") {
newObj = o.toJSON();
if (o !== newObj) {
return me(newObj);
}
}
if (typeof(o.__json__) == "function") { if (typeof(o.__json__) == "function") {
newObj = o.__json__(); newObj = o.__json__();
if (o !== newObj) { if (o !== newObj) {
@ -1100,7 +1121,7 @@ MochiKit.Base.update(MochiKit.Base, {
if (data.length === 0) { if (data.length === 0) {
throw new TypeError('median() requires at least one argument'); throw new TypeError('median() requires at least one argument');
} }
data.sort(compare); data.sort(MochiKit.Base.compare);
if (data.length % 2 == 0) { if (data.length % 2 == 0) {
var upper = data.length / 2; var upper = data.length / 2;
return (data[upper] + data[upper - 1]) / 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) { * Exports all symbols from one or more modules into the specified
return; * 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) { for (var k in module) {
var v = module[k]; var v = module[k];
if (v != null) { if (v != null) {
var okName = (k[0] !== "_" && k !== "toString"); var flagSet = (typeof(v.__export__) == 'boolean');
if (v.__export__ === true || (v.__export__ !== false && okName)) { var nameValid = (k[0] !== "_" && !SKIP[k]);
globals[k] = module[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 * @param {String} version the first version when the source function
* was deprecated (e.g. '1.4') * was deprecated (e.g. '1.4')
* @param {Boolean} [exportable] the exportable function flag, * @param {Boolean} [exportable] the exportable function flag,
* defaults to true * defaults to false
*/ */
MochiKit.Base._deprecated = function (module, name, target, version, exportable) { MochiKit.Base._deprecated = function (module, name, target, version, exportable) {
if (typeof(module) === 'string') { if (typeof(module) === 'string') {
@ -1349,11 +1396,9 @@ MochiKit.Base._deprecated = function (module, name, target, version, exportable)
} }
return MochiKit[targetModule][targetName].apply(this, arguments); return MochiKit[targetModule][targetName].apply(this, arguments);
}; };
if (exportable === false) { func.__export__ = (exportable === true);
func.__export__ = false;
}
module[name] = func; module[name] = func;
} };
MochiKit.Base.__new__ = function () { MochiKit.Base.__new__ = function () {
var m = this; var m = this;
@ -1362,8 +1407,8 @@ MochiKit.Base.__new__ = function () {
m.noop = m.operator.identity; m.noop = m.operator.identity;
// Backwards compat // Backwards compat
m._deprecated(m, 'forward', 'MochiKit.Base.forwardCall', '1.3', false); m._deprecated(m, 'forward', 'MochiKit.Base.forwardCall', '1.3');
m._deprecated(m, 'find', 'MochiKit.Base.findValue', '1.3', false); m._deprecated(m, 'find', 'MochiKit.Base.findValue', '1.3');
if (typeof(encodeURIComponent) != "undefined") { if (typeof(encodeURIComponent) != "undefined") {
/** @id MochiKit.Base.urlEncode */ /** @id MochiKit.Base.urlEncode */
@ -1375,7 +1420,7 @@ MochiKit.Base.__new__ = function () {
return escape(unencoded return escape(unencoded
).replace(/\+/g, '%2B' ).replace(/\+/g, '%2B'
).replace(/\"/g,'%22' ).replace(/\"/g,'%22'
).rval.replace(/\'/g, '%27'); ).replace(/\'/g, '%27');
}; };
} }
@ -1385,6 +1430,7 @@ MochiKit.Base.__new__ = function () {
this.name = name; this.name = name;
}; };
m.NamedError.prototype = new Error(); m.NamedError.prototype = new Error();
m.NamedError.prototype.constructor = m.NamedError;
m.update(m.NamedError.prototype, { m.update(m.NamedError.prototype, {
repr: function () { repr: function () {
if (this.message && this.message != this.name) { if (this.message && this.message != this.name) {
@ -1409,6 +1455,8 @@ MochiKit.Base.__new__ = function () {
m.isCallable = m.typeMatcher('function'); m.isCallable = m.typeMatcher('function');
/** @id MochiKit.Base.isUndefined */ /** @id MochiKit.Base.isUndefined */
m.isUndefined = m.typeMatcher('undefined'); m.isUndefined = m.typeMatcher('undefined');
/** @id MochiKit.Base.isValue */
m.isValue = m.typeMatcher('boolean', 'number', 'string');
/** @id MochiKit.Base.merge */ /** @id MochiKit.Base.merge */
m.merge = m.partial(m.update, null); m.merge = m.partial(m.update, null);

View File

@ -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 */ /** @id MochiKit.Color.Color */
MochiKit.Color.Color = function (red, green, blue, alpha) { MochiKit.Color.Color = function (red, green, blue, alpha) {
@ -112,7 +112,7 @@ MochiKit.Color.Color.prototype = {
/** @id MochiKit.Color.Color.prototype.isLight */ /** @id MochiKit.Color.Color.prototype.isLight */
isLight: function () { isLight: function () {
return this.asHSL().b > 0.5; return this.asHSL().l > 0.5;
}, },
/** @id MochiKit.Color.Color.prototype.isDark */ /** @id MochiKit.Color.Color.prototype.isDark */
@ -641,19 +641,10 @@ MochiKit.Base.update(MochiKit.Color, {
yellow: [1, 1, 0] 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) { for (var k in colors) {
var name = k + "Color"; var name = k + "Color";
var bindArgs = m.concat( var value = this.Color.fromRGB.apply(this.Color, colors[k]);
[makeColor, this.Color, name], this.Color[name] = m.partial(m.operator.identity, value);
colors[k]
);
this.Color[name] = m.bind.apply(null, bindArgs);
} }
var isColor = function () { var isColor = function () {

View File

@ -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, { MochiKit.Base.update(MochiKit.DOM, {
@ -297,11 +297,11 @@ MochiKit.Base.update(MochiKit.DOM, {
updateNodeAttributes: function (node, attrs) { updateNodeAttributes: function (node, attrs) {
var elem = node; var elem = node;
var self = MochiKit.DOM; var self = MochiKit.DOM;
var base = MochiKit.Base;
if (typeof(node) == 'string') { if (typeof(node) == 'string') {
elem = self.getElement(node); elem = self.getElement(node);
} }
if (attrs) { if (attrs) {
var updatetree = MochiKit.Base.updatetree;
if (self.attributeArray.compliant) { if (self.attributeArray.compliant) {
// not IE, good. // not IE, good.
for (var k in attrs) { for (var k in attrs) {
@ -310,7 +310,7 @@ MochiKit.Base.update(MochiKit.DOM, {
if (k == "style" && MochiKit.Style) { if (k == "style" && MochiKit.Style) {
MochiKit.Style.setStyle(elem, v); MochiKit.Style.setStyle(elem, v);
} else { } else {
updatetree(elem[k], v); base.updatetree(elem[k], v);
} }
} else if (k.substring(0, 2) == "on") { } else if (k.substring(0, 2) == "on") {
if (typeof(v) == "string") { if (typeof(v) == "string") {
@ -320,8 +320,8 @@ MochiKit.Base.update(MochiKit.DOM, {
} else { } else {
elem.setAttribute(k, v); elem.setAttribute(k, v);
} }
if (typeof(elem[k]) == "string" && elem[k] != v) { if (base.isValue(elem[k]) && elem[k] != v) {
// Also set property for weird attributes (see #302) // Also set property for weird attributes (see #302 & #335)
elem[k] = v; elem[k] = v;
} }
} }
@ -340,7 +340,7 @@ MochiKit.Base.update(MochiKit.DOM, {
if (k == "style" && MochiKit.Style) { if (k == "style" && MochiKit.Style) {
MochiKit.Style.setStyle(elem, v); MochiKit.Style.setStyle(elem, v);
} else { } else {
updatetree(elem[k], v); base.updatetree(elem[k], v);
} }
} else if (k.substring(0, 2) == "on") { } else if (k.substring(0, 2) == "on") {
if (typeof(v) == "string") { if (typeof(v) == "string") {
@ -350,8 +350,8 @@ MochiKit.Base.update(MochiKit.DOM, {
} else { } else {
elem.setAttribute(k, v); elem.setAttribute(k, v);
} }
if (typeof(elem[k]) == "string" && elem[k] != v) { if (base.isValue(elem[k]) && elem[k] != v) {
// Also set property for weird attributes (see #302) // Also set property for weird attributes (see #302 & #335)
elem[k] = v; elem[k] = v;
} }
} }
@ -990,6 +990,7 @@ MochiKit.Base.update(MochiKit.DOM, {
"for": "htmlFor", "for": "htmlFor",
"readonly": "readOnly", "readonly": "readOnly",
"colspan": "colSpan", "colspan": "colSpan",
"rowspan": "rowSpan",
"bgcolor": "bgColor", "bgcolor": "bgColor",
"cellspacing": "cellSpacing", "cellspacing": "cellSpacing",
"cellpadding": "cellPadding" "cellpadding": "cellPadding"
@ -1007,7 +1008,7 @@ MochiKit.Base.update(MochiKit.DOM, {
// Backwards compatibility aliases // Backwards compatibility aliases
/** @id MochiKit.DOM.computedStyle */ /** @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 */ /** @id MochiKit.DOM.elementDimensions */
m._deprecated(this, 'elementDimensions', 'MochiKit.Style.getElementDimensions', '1.4'); m._deprecated(this, 'elementDimensions', 'MochiKit.Style.getElementDimensions', '1.4');
/** @id MochiKit.DOM.elementPosition */ /** @id MochiKit.DOM.elementPosition */
@ -1041,48 +1042,38 @@ MochiKit.Base.update(MochiKit.DOM, {
// shorthand for createDOM syntax // shorthand for createDOM syntax
var createDOMFunc = this.createDOMFunc; var createDOMFunc = this.createDOMFunc;
/** @id MochiKit.DOM.UL */ /** @id MochiKit.DOM.A */
this.UL = createDOMFunc("ul"); this.A = createDOMFunc("a");
/** @id MochiKit.DOM.OL */ /** @id MochiKit.DOM.ARTICLE */
this.OL = createDOMFunc("ol"); this.ARTICLE = createDOMFunc("article");
/** @id MochiKit.DOM.LI */ /** @id MochiKit.DOM.ASIDE */
this.LI = createDOMFunc("li"); 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 */ /** @id MochiKit.DOM.DL */
this.DL = createDOMFunc("dl"); this.DL = createDOMFunc("dl");
/** @id MochiKit.DOM.DT */ /** @id MochiKit.DOM.DT */
this.DT = createDOMFunc("dt"); this.DT = createDOMFunc("dt");
/** @id MochiKit.DOM.DD */ /** @id MochiKit.DOM.FIELDSET */
this.DD = createDOMFunc("dd"); this.FIELDSET = createDOMFunc("fieldset");
/** @id MochiKit.DOM.TD */ /** @id MochiKit.DOM.FIGURE */
this.TD = createDOMFunc("td"); this.FIGURE = createDOMFunc("figure");
/** @id MochiKit.DOM.TR */ /** @id MochiKit.DOM.FIGCAPTION */
this.TR = createDOMFunc("tr"); this.FIGCAPTION = createDOMFunc("figcaption");
/** @id MochiKit.DOM.TBODY */ /** @id MochiKit.DOM.FOOTER */
this.TBODY = createDOMFunc("tbody"); this.FOOTER = createDOMFunc("footer");
/** @id MochiKit.DOM.THEAD */ /** @id MochiKit.DOM.FORM */
this.THEAD = createDOMFunc("thead"); this.FORM = createDOMFunc("form");
/** @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.H1 */ /** @id MochiKit.DOM.H1 */
this.H1 = createDOMFunc("h1"); this.H1 = createDOMFunc("h1");
/** @id MochiKit.DOM.H2 */ /** @id MochiKit.DOM.H2 */
@ -1095,38 +1086,82 @@ MochiKit.Base.update(MochiKit.DOM, {
this.H5 = createDOMFunc("h5"); this.H5 = createDOMFunc("h5");
/** @id MochiKit.DOM.H6 */ /** @id MochiKit.DOM.H6 */
this.H6 = createDOMFunc("h6"); this.H6 = createDOMFunc("h6");
/** @id MochiKit.DOM.BR */ /** @id MochiKit.DOM.HEADER */
this.BR = createDOMFunc("br"); this.HEADER = createDOMFunc("header");
/** @id MochiKit.DOM.HGROUP */
this.HGROUP = createDOMFunc("hgroup");
/** @id MochiKit.DOM.HR */ /** @id MochiKit.DOM.HR */
this.HR = createDOMFunc("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 */ /** @id MochiKit.DOM.LABEL */
this.LABEL = createDOMFunc("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 */ /** @id MochiKit.DOM.LEGEND */
this.LEGEND = createDOMFunc("legend"); this.LEGEND = createDOMFunc("legend");
/** @id MochiKit.DOM.FIELDSET */ /** @id MochiKit.DOM.LI */
this.FIELDSET = createDOMFunc("fieldset"); 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 */ /** @id MochiKit.DOM.STRONG */
this.STRONG = createDOMFunc("strong"); this.STRONG = createDOMFunc("strong");
/** @id MochiKit.DOM.CANVAS */ /** @id MochiKit.DOM.STYLE */
this.CANVAS = createDOMFunc("canvas"); 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.$ */ /** @id MochiKit.DOM.$ */
this.$ = this.getElement; this.$ = this.getElement;
m.nameFunctions(this); m.nameFunctions(this);
} }
}); });

View File

@ -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 */ /** @id MochiKit.DateTime.isoDate */
MochiKit.DateTime.isoDate = function (str) { MochiKit.DateTime.isoDate = function (str) {
@ -20,7 +20,7 @@ MochiKit.DateTime.isoDate = function (str) {
if (iso.length === 0) { if (iso.length === 0) {
return null; return null;
} }
var date = new Date(iso[0], iso[1] - 1, iso[2]); var date = new Date(parseInt(iso[0], 10), parseInt(iso[1], 10) - 1, parseInt(iso[2], 10));
date.setFullYear(iso[0]); date.setFullYear(iso[0]);
date.setMonth(iso[1] - 1); date.setMonth(iso[1] - 1);
date.setDate(iso[2]); date.setDate(iso[2]);
@ -80,15 +80,17 @@ MochiKit.DateTime.toISOTime = function (date, realISO/* = false */) {
if (typeof(date) == "undefined" || date === null) { if (typeof(date) == "undefined" || date === null) {
return null; return null;
} }
var hh = date.getHours(); var _padTwo = MochiKit.DateTime._padTwo;
var mm = date.getMinutes(); if (realISO) {
var ss = date.getSeconds(); // adjust date for UTC timezone
date = new Date(date.getTime() + (date.getTimezoneOffset() * 60000));
}
var lst = [ var lst = [
((realISO && (hh < 10)) ? "0" + hh : hh), (realISO ? _padTwo(date.getHours()) : date.getHours()),
((mm < 10) ? "0" + mm : mm), _padTwo(date.getMinutes()),
((ss < 10) ? "0" + ss : ss) _padTwo(date.getSeconds())
]; ];
return lst.join(":"); return lst.join(":") + (realISO ? "Z" : "");
}; };
/** @id MochiKit.DateTime.toISOTimeStamp */ /** @id MochiKit.DateTime.toISOTimeStamp */
@ -96,12 +98,13 @@ MochiKit.DateTime.toISOTimestamp = function (date, realISO/* = false*/) {
if (typeof(date) == "undefined" || date === null) { if (typeof(date) == "undefined" || date === null) {
return null; return null;
} }
var time = MochiKit.DateTime.toISOTime(date, realISO);
var sep = realISO ? "T" : " "; var sep = realISO ? "T" : " ";
var foot = realISO ? "Z" : "";
if (realISO) { if (realISO) {
// adjust date for UTC timezone
date = new Date(date.getTime() + (date.getTimezoneOffset() * 60000)); 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 */ /** @id MochiKit.DateTime.toISODate */

View File

@ -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 = { MochiKit.DragAndDrop.Droppables = {
/*** /***
@ -306,8 +306,9 @@ MochiKit.DragAndDrop.Draggables = {
var pointer = event.mouse(); var pointer = event.mouse();
// Mozilla-based browsers fire successive mousemove events with // Mozilla-based browsers fire successive mousemove events with
// the same coordinates, prevent needless redrawing (moz bug?) // the same coordinates, prevent needless redrawing (moz bug?)
if (this._lastPointer && (MochiKit.Base.repr(this._lastPointer.page) == if (this._lastPointer &&
MochiKit.Base.repr(pointer.page))) { this._lastPointer.page.x == pointer.page.x &&
this._lastPointer.page.y == pointer.page.y) {
return; return;
} }
this._lastPointer = pointer; this._lastPointer = pointer;
@ -442,8 +443,8 @@ MochiKit.DragAndDrop.Draggable.prototype = {
currentDelta: function () { currentDelta: function () {
var s = MochiKit.Style.getStyle; var s = MochiKit.Style.getStyle;
return [ return [
parseInt(s(this.element, 'left') || '0'), parseInt(s(this.element, 'left') || '0', 10),
parseInt(s(this.element, 'top') || '0')]; parseInt(s(this.element, 'top') || '0', 10)];
}, },
/** @id MochiKit.DragAndDrop.initDrag */ /** @id MochiKit.DragAndDrop.initDrag */
@ -481,8 +482,7 @@ MochiKit.DragAndDrop.Draggable.prototype = {
this.options.selectclass); this.options.selectclass);
} }
if (this.options.zindex) { if (this.options.zindex) {
this.originalZ = parseInt(MochiKit.Style.getStyle(this.element, this.originalZ = MochiKit.Style.getStyle(this.element, 'z-index');
'z-index') || '0');
this.element.style.zIndex = this.options.zindex; this.element.style.zIndex = this.options.zindex;
} }

View File

@ -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) { MochiKit.Format._numberFormatter = function (placeholder, header, footer, locale, isPercent, precision, leadingZeros, separatorAt, trailingZeros) {
return function (num) { return function (num) {
@ -104,7 +104,7 @@ MochiKit.Format.numberFormatter = function (pattern, placeholder/* = "" */, loca
return [ return [
self.NAME, self.NAME,
"(", "(",
map(m.repr, args).join(", "), m.map(m.repr, args).join(", "),
")" ")"
].join(""); ].join("");
}; };
@ -142,7 +142,7 @@ MochiKit.Format.twoDigitAverage = function (numerator, denominator) {
/** @id MochiKit.Format.twoDigitFloat */ /** @id MochiKit.Format.twoDigitFloat */
MochiKit.Format.twoDigitFloat = function (aNumber) { MochiKit.Format.twoDigitFloat = function (aNumber) {
var res = roundToFixed(aNumber, 2); var res = MochiKit.Format.roundToFixed(aNumber, 2);
if (res.indexOf(".00") > 0) { if (res.indexOf(".00") > 0) {
return res.substring(0, res.length - 3); return res.substring(0, res.length - 3);
} else if (res.charAt(res.length - 1) == "0") { } else if (res.charAt(res.length - 1) == "0") {
@ -193,7 +193,7 @@ MochiKit.Format.truncToFixed = function (aNumber, precision) {
fixed = MochiKit.Format._shiftNumber(fixed, 0); fixed = MochiKit.Format._shiftNumber(fixed, 0);
} }
return fixed; return fixed;
} };
/** @id MochiKit.Format.roundToFixed */ /** @id MochiKit.Format.roundToFixed */
MochiKit.Format.roundToFixed = function (aNumber, precision) { MochiKit.Format.roundToFixed = function (aNumber, precision) {
@ -205,7 +205,7 @@ MochiKit.Format.roundToFixed = function (aNumber, precision) {
fixed = MochiKit.Format._shiftNumber(str, -precision); fixed = MochiKit.Format._shiftNumber(str, -precision);
} }
return fixed; return fixed;
} };
/** /**
* Converts a number to a fixed format string. This function handles * 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) { MochiKit.Format._numberToFixed = function (aNumber, precision) {
var str = aNumber.toString(); var str = aNumber.toString();
var parts = str.split(/[eE]/); 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); var fixed = MochiKit.Format._shiftNumber(parts[0], exp);
parts = fixed.split(/\./); parts = fixed.split(/\./);
var whole = parts[0]; var whole = parts[0];
@ -234,7 +234,7 @@ MochiKit.Format._numberToFixed = function (aNumber, precision) {
} else { } else {
return whole; return whole;
} }
} };
/** /**
* Shifts the decimal dot location in a fixed format number string. * 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); num = "-" + num.substring(2);
} }
return num; return num;
} };
/** @id MochiKit.Format.percentFormat */ /** @id MochiKit.Format.percentFormat */
MochiKit.Format.percentFormat = function (aNumber) { MochiKit.Format.percentFormat = function (aNumber) {

View File

@ -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, { MochiKit.Base.update(MochiKit.Iter, {
/** @id MochiKit.Iter.registerIteratorFactory */ /** @id MochiKit.Iter.registerIteratorFactory */
@ -222,14 +222,15 @@ MochiKit.Base.update(MochiKit.Iter, {
}, },
toString: m.forwardCall("repr"), toString: m.forwardCall("repr"),
next: function () { next: function () {
if (start >= stop) {
throw self.StopIteration;
}
var rval; var rval;
while (i < start) { while (i < start) {
rval = seq.next(); rval = seq.next();
i++; i++;
} }
if (start >= stop) {
throw self.StopIteration;
}
start += step; start += step;
return rval; return rval;
} }
@ -280,15 +281,12 @@ MochiKit.Base.update(MochiKit.Iter, {
next: function () { next: function () {
while (argiter.length > 1) { while (argiter.length > 1) {
try { try {
var result = argiter[0].next(); return argiter[0].next();
return result;
} catch (e) { } catch (e) {
if (e != self.StopIteration) { if (e != self.StopIteration) {
throw e; throw e;
} }
argiter.shift(); argiter.shift();
var result = argiter[0].next();
return result;
} }
} }
if (argiter.length == 1) { if (argiter.length == 1) {
@ -413,7 +411,7 @@ MochiKit.Base.update(MochiKit.Iter, {
var self = MochiKit.Iter; var self = MochiKit.Iter;
iterable = self.iter(iterable); iterable = self.iter(iterable);
var rval = []; rval = [];
var a_val; var a_val;
try { try {
while (true) { while (true) {

View File

@ -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 */ /** @id MochiKit.Logging.LogMessage */
MochiKit.Logging.LogMessage = function (num, level, info) { MochiKit.Logging.LogMessage = function (num, level, info) {
@ -187,7 +187,7 @@ MochiKit.Logging.Logger.prototype = {
} }
var messages = this.getMessages(howMany); var messages = this.getMessages(howMany);
if (messages.length) { if (messages.length) {
var lst = map(function (m) { var lst = MochiKit.Base.map(function (m) {
return '\n [' + m.num + '] ' + m.level + ': ' + m.info.join(' '); return '\n [' + m.num + '] ' + m.level + ': ' + m.info.join(' ');
}, messages); }, messages);
lst.unshift('LAST ' + messages.length + ' MESSAGES:'); lst.unshift('LAST ' + messages.length + ' MESSAGES:');

View File

@ -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 */ /** @id MochiKit.LoggingPane.createLoggingPane */
MochiKit.LoggingPane.createLoggingPane = function (inline/* = false */) { MochiKit.LoggingPane.createLoggingPane = function (inline/* = false */) {
@ -24,7 +24,10 @@ MochiKit.LoggingPane.createLoggingPane = function (inline/* = false */) {
return m._loggingPane; return m._loggingPane;
}; };
/** @id MochiKit.LoggingPane.LoggingPane */ /**
* @id MochiKit.LoggingPane.LoggingPane
* @constructor
*/
MochiKit.LoggingPane.LoggingPane = function (inline/* = false */, logger/* = MochiKit.Logging.logger */) { MochiKit.LoggingPane.LoggingPane = function (inline/* = false */, logger/* = MochiKit.Logging.logger */) {
/* Use a div if inline, pop up a window if not */ /* 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); infore = new RegExp(infoFilterField.value);
} catch(e) { } catch(e) {
/* If there was an error with the regexes, do no filtering */ /* 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; return null;
} }
@ -184,7 +187,7 @@ MochiKit.LoggingPane.LoggingPane = function (inline/* = false */, logger/* = Moc
try { try {
try { try {
debugPane.loggingPane = null; debugPane.loggingPane = null;
} catch(e) { logFatal("Bookmarklet was closed incorrectly."); } } catch(e) { MochiKit.Logging.logFatal("Bookmarklet was closed incorrectly."); }
if (inline) { if (inline) {
debugPane.parentNode.removeChild(debugPane); debugPane.parentNode.removeChild(debugPane);
} else { } else {
@ -224,7 +227,7 @@ MochiKit.LoggingPane.LoggingPane = function (inline/* = false */, logger/* = Moc
/** @id MochiKit.LoggingPane.filterOnEnter */ /** @id MochiKit.LoggingPane.filterOnEnter */
var filterOnEnter = bind(function (event) { var filterOnEnter = bind(function (event) {
event = event || window.event; event = event || window.event;
key = event.which || event.keyCode; var key = event.which || event.keyCode;
if (key == 13) { if (key == 13) {
this.buildAndApplyFilter(); this.buildAndApplyFilter();
} }

View File

@ -8,17 +8,14 @@ See <http://mochikit.com/> for documentation, downloads, license, etc.
***/ ***/
if (typeof(MochiKit) == 'undefined') { var MochiKit = MochiKit || {};
MochiKit = {};
}
if (typeof(MochiKit.MochiKit) == 'undefined') { /** @id MochiKit.MochiKit */
/** @id MochiKit.MochiKit */ MochiKit.MochiKit = MochiKit.MochiKit || {};
MochiKit.MochiKit = {};
}
MochiKit.MochiKit.NAME = "MochiKit.MochiKit"; MochiKit.MochiKit.NAME = "MochiKit.MochiKit";
MochiKit.MochiKit.VERSION = "1.5"; MochiKit.MochiKit.VERSION = "1.5";
MochiKit.MochiKit.__export__ = false;
MochiKit.MochiKit.__repr__ = function () { MochiKit.MochiKit.__repr__ = function () {
return "[" + this.NAME + " " + this.VERSION + "]"; return "[" + this.NAME + " " + this.VERSION + "]";
}; };

View File

@ -8,16 +8,13 @@ See <http://mochikit.com/> for documentation, downloads, license, etc.
***/ ***/
if (typeof(MochiKit) == "undefined") { var MochiKit = MochiKit || {};
MochiKit = {};
}
if (typeof(MochiKit.MockDOM) == "undefined") { MochiKit.MockDOM = MochiKit.MockDOM || {};
MochiKit.MockDOM = {};
}
MochiKit.MockDOM.NAME = "MochiKit.MockDOM"; MochiKit.MockDOM.NAME = "MochiKit.MockDOM";
MochiKit.MockDOM.VERSION = "1.5"; MochiKit.MockDOM.VERSION = "1.5";
MochiKit.MockDOM.__export__ = false;
MochiKit.MockDOM.__repr__ = function () { MochiKit.MockDOM.__repr__ = function () {
return "[" + this.NAME + " " + this.VERSION + "]"; return "[" + this.NAME + " " + this.VERSION + "]";

View File

@ -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, { MochiKit.Base.update(MochiKit.Position, {
// Don't export from this module // Don't export from this module

View File

@ -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) { MochiKit.Selector.Selector = function (expression) {
this.params = {classNames: [], pseudoClassNames: []}; this.params = {classNames: [], pseudoClassNames: []};
@ -127,8 +127,8 @@ MochiKit.Selector.Selector.prototype = {
a = 2; a = 2;
b = 0; b = 0;
} else { } else {
a = match[2] && parseInt(match) || null; a = match[2] && parseInt(match, 10) || null;
b = parseInt(match[3]); b = parseInt(match[3], 10);
} }
conditions.push('this.nthChild(element,' + a + ',' + b conditions.push('this.nthChild(element,' + a + ',' + b
+ ',' + !!pseudoClass.match('^nth-last') // Reverse + ',' + !!pseudoClass.match('^nth-last') // Reverse
@ -167,7 +167,7 @@ MochiKit.Selector.Selector.prototype = {
break; break;
case 'not': case 'not':
var subselector = new MochiKit.Selector.Selector(pseudoClassArgument); var subselector = new MochiKit.Selector.Selector(pseudoClassArgument);
conditions.push('!( ' + subselector.buildMatchExpression() + ')') conditions.push('!( ' + subselector.buildMatchExpression() + ')');
break; break;
} }
} }
@ -177,7 +177,7 @@ MochiKit.Selector.Selector.prototype = {
var value = 'MochiKit.DOM.getNodeAttribute(element, ' + repr(attribute.name) + ')'; var value = 'MochiKit.DOM.getNodeAttribute(element, ' + repr(attribute.name) + ')';
var splitValueBy = function (delimiter) { var splitValueBy = function (delimiter) {
return value + '.split(' + repr(delimiter) + ')'; return value + '.split(' + repr(delimiter) + ')';
} };
conditions.push(value + ' != null'); conditions.push(value + ' != null');
switch (attribute.operator) { switch (attribute.operator) {
case '=': case '=':
@ -352,6 +352,12 @@ MochiKit.Base.update(MochiKit.Selector, {
return res; return res;
}; };
return MochiKit.Base.flattenArray(MochiKit.Base.map(function (expression) { 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 nextScope = "";
var reducer = function (results, expr) { var reducer = function (results, expr) {
var match = expr.match(/^[>+~]$/); var match = expr.match(/^[>+~]$/);

View File

@ -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 = []; MochiKit.Signal._observers = [];
@ -266,16 +266,17 @@ MochiKit.Base.update(MochiKit.Signal.Event.prototype, {
if (this.type() && ( if (this.type() && (
this.type().indexOf('mouse') === 0 || this.type().indexOf('mouse') === 0 ||
this.type().indexOf('drag') === 0 ||
this.type().indexOf('click') != -1 || this.type().indexOf('click') != -1 ||
this.type() == 'contextmenu')) { this.type() == 'contextmenu')) {
m.client = new MochiKit.Style.Coordinates(0, 0); m.client = { x: 0, y: 0 };
if (e.clientX || e.clientY) { if (e.clientX || e.clientY) {
m.client.x = (!e.clientX || e.clientX < 0) ? 0 : e.clientX; m.client.x = (!e.clientX || e.clientX < 0) ? 0 : e.clientX;
m.client.y = (!e.clientY || e.clientY < 0) ? 0 : e.clientY; 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) { if (e.pageX || e.pageY) {
m.page.x = (!e.pageX || e.pageX < 0) ? 0 : e.pageX; m.page.x = (!e.pageX || e.pageX < 0) ? 0 : e.pageX;
m.page.y = (!e.pageY || e.pageY < 0) ? 0 : e.pageY; 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') { if (this.type() == 'mousewheel') {
m.wheel = new MochiKit.Style.Coordinates(0, 0); m.wheel = { x: 0, y: 0 };
if (e.wheelDeltaX || e.wheelDeltaY) { if (e.wheelDeltaX || e.wheelDeltaY) {
m.wheel.x = e.wheelDeltaX / -40 || 0; m.wheel.x = e.wheelDeltaX / -40 || 0;
m.wheel.y = e.wheelDeltaY / -40 || 0; m.wheel.y = e.wheelDeltaY / -40 || 0;
@ -672,6 +673,18 @@ MochiKit.Base.update(MochiKit.Signal, {
return ident; 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) { _disconnect: function (ident) {
// already disconnected // already disconnected
if (!ident.connected) { if (!ident.connected) {
@ -715,7 +728,7 @@ MochiKit.Base.update(MochiKit.Signal, {
var o = observers[i]; var o = observers[i];
if (o.source === src && o.signal === sig && o.objOrFunc === obj && o.funcOrStr === func) { if (o.source === src && o.signal === sig && o.objOrFunc === obj && o.funcOrStr === func) {
self._disconnect(o); self._disconnect(o);
if (!self._lock) { if (self._lock === 0) {
observers.splice(i, 1); observers.splice(i, 1);
} else { } else {
self._dirty = true; self._dirty = true;
@ -727,7 +740,7 @@ MochiKit.Base.update(MochiKit.Signal, {
var idx = m.findIdentical(observers, ident); var idx = m.findIdentical(observers, ident);
if (idx >= 0) { if (idx >= 0) {
self._disconnect(ident); self._disconnect(ident);
if (!self._lock) { if (self._lock === 0) {
observers.splice(idx, 1); observers.splice(idx, 1);
} else { } else {
self._dirty = true; self._dirty = true;
@ -743,7 +756,7 @@ MochiKit.Base.update(MochiKit.Signal, {
var self = MochiKit.Signal; var self = MochiKit.Signal;
var observers = self._observers; var observers = self._observers;
var disconnect = self._disconnect; var disconnect = self._disconnect;
var locked = self._lock; var lock = self._lock;
var dirty = self._dirty; var dirty = self._dirty;
if (typeof(funcOrStr) === 'undefined') { if (typeof(funcOrStr) === 'undefined') {
funcOrStr = null; funcOrStr = null;
@ -753,10 +766,10 @@ MochiKit.Base.update(MochiKit.Signal, {
if (ident.objOrFunc === objOrFunc && if (ident.objOrFunc === objOrFunc &&
(funcOrStr === null || ident.funcOrStr === funcOrStr)) { (funcOrStr === null || ident.funcOrStr === funcOrStr)) {
disconnect(ident); disconnect(ident);
if (locked) { if (lock === 0) {
dirty = true;
} else {
observers.splice(i, 1); observers.splice(i, 1);
} else {
dirty = true;
} }
} }
} }
@ -774,7 +787,7 @@ MochiKit.Base.update(MochiKit.Signal, {
var disconnect = self._disconnect; var disconnect = self._disconnect;
var observers = self._observers; var observers = self._observers;
var i, ident; var i, ident;
var locked = self._lock; var lock = self._lock;
var dirty = self._dirty; var dirty = self._dirty;
if (signals.length === 0) { if (signals.length === 0) {
// disconnect all // disconnect all
@ -782,7 +795,7 @@ MochiKit.Base.update(MochiKit.Signal, {
ident = observers[i]; ident = observers[i];
if (ident.source === src) { if (ident.source === src) {
disconnect(ident); disconnect(ident);
if (!locked) { if (lock === 0) {
observers.splice(i, 1); observers.splice(i, 1);
} else { } else {
dirty = true; dirty = true;
@ -798,7 +811,7 @@ MochiKit.Base.update(MochiKit.Signal, {
ident = observers[i]; ident = observers[i];
if (ident.source === src && ident.signal in sigs) { if (ident.source === src && ident.signal in sigs) {
disconnect(ident); disconnect(ident);
if (!locked) { if (lock === 0) {
observers.splice(i, 1); observers.splice(i, 1);
} else { } else {
dirty = true; dirty = true;
@ -818,7 +831,7 @@ MochiKit.Base.update(MochiKit.Signal, {
} }
var args = MochiKit.Base.extend(null, arguments, 2); var args = MochiKit.Base.extend(null, arguments, 2);
var errors = []; var errors = [];
self._lock = true; self._lock++;
for (var i = 0; i < observers.length; i++) { for (var i = 0; i < observers.length; i++) {
var ident = observers[i]; var ident = observers[i];
if (ident.source === src && ident.signal === sig && if (ident.source === src && ident.signal === sig &&
@ -837,8 +850,8 @@ MochiKit.Base.update(MochiKit.Signal, {
} }
} }
} }
self._lock = false; self._lock--;
if (self._dirty) { if (self._lock === 0 && self._dirty) {
self._dirty = false; self._dirty = false;
for (var i = observers.length - 1; i >= 0; i--) { for (var i = observers.length - 1; i >= 0; i--) {
if (!observers[i].connected) { if (!observers[i].connected) {
@ -861,7 +874,7 @@ MochiKit.Signal.__new__ = function (win) {
var m = MochiKit.Base; var m = MochiKit.Base;
this._document = document; this._document = document;
this._window = win; this._window = win;
this._lock = false; this._lock = 0;
this._dirty = false; this._dirty = false;
try { try {

View File

@ -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, { MochiKit.Base.update(MochiKit.Sortable, {
__export__: false, __export__: false,
@ -179,7 +179,7 @@ MochiKit.Base.update(MochiKit.Sortable, {
onhover: self.onHover, onhover: self.onHover,
tree: options.tree, tree: options.tree,
accept: options.accept accept: options.accept
} };
var options_for_tree = { var options_for_tree = {
onhover: self.onEmptyHover, onhover: self.onEmptyHover,
@ -187,7 +187,7 @@ MochiKit.Base.update(MochiKit.Sortable, {
containment: options.containment, containment: options.containment,
hoverclass: options.hoverclass, hoverclass: options.hoverclass,
accept: options.accept accept: options.accept
} };
// fix for gecko engine // fix for gecko engine
MochiKit.DOM.removeEmptyTextNodes(element); MochiKit.DOM.removeEmptyTextNodes(element);
@ -430,11 +430,11 @@ MochiKit.Base.update(MochiKit.Sortable, {
children: [], children: [],
position: parent.children.length, position: parent.children.length,
container: self._findChildrenElement(children[i], options.treeTag.toUpperCase()) container: self._findChildrenElement(children[i], options.treeTag.toUpperCase())
} };
/* Get the element containing the children and recurse over it */ /* Get the element containing the children and recurse over it */
if (child.container) { if (child.container) {
self._tree(child.container, options, child) self._tree(child.container, options, child);
} }
parent.children.push (child); parent.children.push (child);
@ -475,7 +475,7 @@ MochiKit.Base.update(MochiKit.Sortable, {
children: new Array, children: new Array,
container: element, container: element,
position: 0 position: 0
} };
return MochiKit.Sortable._tree(element, options, root); return MochiKit.Sortable._tree(element, options, root);
}, },

View File

@ -6,9 +6,12 @@ See <http://mochikit.com/> for documentation, downloads, license, etc.
(c) 2005-2006 Bob Ippolito, Beau Hartshorne. All rights Reserved. (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 */ /** @id MochiKit.Style.Dimensions */
@ -179,7 +182,7 @@ MochiKit.Base.update(MochiKit.Style, {
o.nodeType == null && o.nodeType == null &&
typeof(o.x) == "number" && typeof(o.x) == "number" &&
typeof(o.y) == "number"; typeof(o.y) == "number";
} };
if (typeof(elem) == "string") { if (typeof(elem) == "string") {
elem = dom.getElement(elem); elem = dom.getElement(elem);
@ -197,7 +200,7 @@ MochiKit.Base.update(MochiKit.Style, {
var de = d.documentElement; var de = d.documentElement;
var b = d.body; var b = d.body;
if (!elem.parentNode && elem.x && elem.y) { if (isCoordinates(elem)) {
/* it's just a MochiKit.Style.Coordinates object */ /* it's just a MochiKit.Style.Coordinates object */
c.x += elem.x || 0; c.x += elem.x || 0;
c.y += elem.y || 0; c.y += elem.y || 0;
@ -228,8 +231,8 @@ MochiKit.Base.update(MochiKit.Style, {
if (parent != elem) { if (parent != elem) {
while (parent) { while (parent) {
c.x += parseInt(parent.style.borderLeftWidth) || 0; c.x += parseInt(parent.style.borderLeftWidth, 10) || 0;
c.y += parseInt(parent.style.borderTopWidth) || 0; c.y += parseInt(parent.style.borderTopWidth, 10) || 0;
c.x += parent.offsetLeft; c.x += parent.offsetLeft;
c.y += parent.offsetTop; c.y += parent.offsetTop;
parent = parent.offsetParent; parent = parent.offsetParent;
@ -390,7 +393,7 @@ MochiKit.Base.update(MochiKit.Style, {
if (contentSize) { if (contentSize) {
var tableCell = 'colSpan' in elem && 'rowSpan' in elem; var tableCell = 'colSpan' in elem && 'rowSpan' in elem;
var collapse = (tableCell && elem.parentNode && self.getStyle( var collapse = (tableCell && elem.parentNode && self.getStyle(
elem.parentNode, 'borderCollapse') == 'collapse') elem.parentNode, 'borderCollapse') == 'collapse');
if (collapse) { if (collapse) {
if (/MSIE/.test(navigator.userAgent)) { if (/MSIE/.test(navigator.userAgent)) {
var borderLeftQuota = elem.previousSibling? 0.5 : 1; var borderLeftQuota = elem.previousSibling? 0.5 : 1;
@ -543,8 +546,8 @@ MochiKit.Base.update(MochiKit.Style, {
} }
// Backwards compatibility aliases // Backwards compatibility aliases
m._deprecated(this, 'elementPosition', 'MochiKit.Style.getElementPosition', '1.3'); m._deprecated(this, 'elementPosition', 'MochiKit.Style.getElementPosition', '1.3', true);
m._deprecated(this, 'elementDimensions', 'MochiKit.Style.getElementDimensions', '1.3'); m._deprecated(this, 'elementDimensions', 'MochiKit.Style.getElementDimensions', '1.3', true);
this.hideElement = m.partial(this.setDisplayForElement, 'none'); this.hideElement = m.partial(this.setDisplayForElement, 'none');
// TODO: showElement could be improved by using getDefaultDisplay. // TODO: showElement could be improved by using getDefaultDisplay.

View File

@ -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) { MochiKit.Test.runTests = function (obj) {
if (typeof(obj) == "string") { if (typeof(obj) == "string") {

View File

@ -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 * 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) { MochiKit.Text.startsWith = function (substr, str) {
return str != null && substr != null && str.indexOf(substr) == 0; return str != null && substr != null && str.indexOf(substr) == 0;
} };
/** /**
* Checks if a text string ends with the specified substring. If * 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) { MochiKit.Text.endsWith = function (substr, str) {
return str != null && substr != null && return str != null && substr != null &&
str.lastIndexOf(substr) == Math.max(str.length - substr.length, 0); str.lastIndexOf(substr) == Math.max(str.length - substr.length, 0);
} };
/** /**
* Checks if a text string contains the specified substring. If * 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) { MochiKit.Text.contains = function (substr, str) {
return str != null && substr != null && str.indexOf(substr) >= 0; return str != null && substr != null && str.indexOf(substr) >= 0;
} };
/** /**
* Adds a character to the left-hand side of a string until it * 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; str = fillChar + str;
} }
return str; return str;
} };
/** /**
* Adds a character to the right-hand side of a string until it * 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; str += fillChar;
} }
return str; return str;
} };
/** /**
* Returns a truncated copy of a string. If the string is shorter * Returns a truncated copy of a string. If the string is shorter
@ -119,29 +119,55 @@ MochiKit.Text.truncate = function (str, maxLength, tail) {
} else { } else {
return str.slice(0, maxLength); return str.slice(0, maxLength);
} }
} };
/** /**
* Splits a text string, applies a function and joins the results * Splits a text string using separator as the split point
* back together again. This is a convenience function for calling * If max is given, at most max splits are done, giving at most
* split(), map() and join() separately. It can be used to easily * max + 1 elements in the returned list.
* trim each line in a text string (using the strip function), or to
* translate a text word-by-word.
* *
* @param {Function} func the function to apply
* @param {String} str the string to split * @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 * defaults to newline
* * @param {Number} [max] the maximum number of parts to return
* @return {String} a string with the joined up results * @return {Array} an array of parts of the string
*/ */
MochiKit.Text.splitJoin = function (func, str, separator) { MochiKit.Text.split = function (str, separator, max) {
if (str == null || str.length == 0) { if (str == null) {
return str; return str;
} }
separator = separator || '\n' separator = separator || '\n';
return MochiKit.Base.map(func, str.split(separator)).join(separator); 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 * 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 * @throws FormatPatternError if the format pattern was invalid
*/ */
MochiKit.Text.formatter = function (pattern, locale) { MochiKit.Text.formatter = function (pattern, locale) {
if (typeof(locale) == "undefined") { if (locale == null) {
locale = MochiKit.Format.formatLocale(); locale = MochiKit.Format.formatLocale();
} else if (typeof(locale) == "string") { } else if (typeof(locale) == "string") {
locale = MochiKit.Format.formatLocale(locale); locale = MochiKit.Format.formatLocale(locale);
@ -175,8 +201,8 @@ MochiKit.Text.formatter = function (pattern, locale) {
} }
} }
return res.join(""); return res.join("");
} };
} };
/** /**
* Formats the specified arguments according to a formatter pattern. * Formats the specified arguments according to a formatter pattern.
@ -193,7 +219,7 @@ MochiKit.Text.formatter = function (pattern, locale) {
MochiKit.Text.format = function (pattern/*, ...*/) { MochiKit.Text.format = function (pattern/*, ...*/) {
var func = MochiKit.Text.formatter(pattern); var func = MochiKit.Text.formatter(pattern);
return func.apply(this, MochiKit.Base.extend([], arguments, 1)); return func.apply(this, MochiKit.Base.extend([], arguments, 1));
} };
/** /**
* Format a value with the specified format specifier. * Format a value with the specified format specifier.
@ -205,24 +231,29 @@ MochiKit.Text.format = function (pattern/*, ...*/) {
* LOCALE.en_US * LOCALE.en_US
* *
* @return {String} the formatted output string * @return {String} the formatted output string
*
* @throws FormatPatternError if the format specifier was invalid
*/ */
MochiKit.Text.formatValue = function (spec, value, locale) { MochiKit.Text.formatValue = function (spec, value, locale) {
var self = MochiKit.Text; var self = MochiKit.Text;
if (typeof(spec) === "string") { 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++) { for (var i = 0; spec.path != null && i < spec.path.length; i++) {
if (value != null) { if (value != null) {
value = value[spec.path[i]]; value = value[spec.path[i]];
} }
} }
if (typeof(locale) == "undefined") { if (locale == null) {
locale = MochiKit.Format.formatLocale(); locale = MochiKit.Format.formatLocale();
} else if (typeof(locale) == "string") { } else if (typeof(locale) == "string") {
locale = MochiKit.Format.formatLocale(locale); locale = MochiKit.Format.formatLocale(locale);
} }
var str = ""; var str = "";
if (spec.numeric) { if (spec.type == "number") {
if (value instanceof Number) {
value = value.valueOf();
}
if (typeof(value) != "number" || isNaN(value)) { if (typeof(value) != "number" || isNaN(value)) {
str = ""; str = "";
} else if (value === Number.POSITIVE_INFINITY) { } else if (value === Number.POSITIVE_INFINITY) {
@ -230,8 +261,7 @@ MochiKit.Text.formatValue = function (spec, value, locale) {
} else if (value === Number.NEGATIVE_INFINITY) { } else if (value === Number.NEGATIVE_INFINITY) {
str = "-\u221e"; str = "-\u221e";
} else { } else {
var sign = (spec.sign === "-") ? "" : spec.sign; var sign = (value < 0) ? "-" : spec.sign;
sign = (value < 0) ? "-" : sign;
value = Math.abs(value); value = Math.abs(value);
if (spec.format === "%") { if (spec.format === "%") {
str = self._truncToPercent(value, spec.precision); str = self._truncToPercent(value, spec.precision);
@ -254,7 +284,7 @@ MochiKit.Text.formatValue = function (spec, value, locale) {
} else if (spec.padding == "0") { } else if (spec.padding == "0") {
str = self.padLeft(str, spec.width - sign.length, "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; str = sign + str;
} }
if (str !== "" && spec.format === "%") { if (str !== "" && spec.format === "%") {
@ -264,7 +294,7 @@ MochiKit.Text.formatValue = function (spec, value, locale) {
if (spec.format == "r") { if (spec.format == "r") {
str = MochiKit.Base.repr(value); str = MochiKit.Base.repr(value);
} else { } else {
str = (value == null) ? "null" : value.toString(); str = (value == null) ? "" : value.toString();
} }
str = self.truncate(str, spec.precision); str = self.truncate(str, spec.precision);
} }
@ -274,7 +304,7 @@ MochiKit.Text.formatValue = function (spec, value, locale) {
str = self.padLeft(str, spec.width); str = self.padLeft(str, spec.width);
} }
return str; return str;
} };
/** /**
* Adjust an already formatted numeric string for locale-specific * 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 {String} num the formatted number string
* @param {Object} locale the formatting locale to use * @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 * @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 parts = num.split(/\./);
var whole = parts[0]; var whole = parts[0];
var frac = (parts.length == 1) ? "" : parts[1]; var frac = (parts.length == 1) ? "" : parts[1];
var res = (frac.length > 0) ? locale.decimal : ""; 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; res = res + frac.substring(0, 3) + locale.separator;
frac = frac.substring(3); frac = frac.substring(3);
if (whole.charAt(0) == "0") { if (whole.charAt(0) == "0") {
@ -301,15 +331,15 @@ MochiKit.Text._localizeNumber = function (num, locale, grouping) {
} }
} }
if (frac.length > 0) { if (frac.length > 0) {
res += frac; res = res + frac;
} }
while (grouping && whole.length > 3) { while (group && whole.length > 3) {
var pos = whole.length - 3; var pos = whole.length - 3;
res = locale.separator + whole.substring(pos) + res; res = locale.separator + whole.substring(pos) + res;
whole = whole.substring((whole.charAt(0) == "0") ? 1 : 0, pos); whole = whole.substring((whole.charAt(0) == "0") ? 1 : 0, pos);
} }
return whole + res; return whole + res;
} };
/** /**
* Parses a format pattern and returns an array of constant strings * 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) { MochiKit.Text._parsePattern = function (pattern) {
var self = MochiKit.Text; var self = MochiKit.Text;
var parts = []; var parts = [];
var start = 0; var re = /{[^{}]*}|{{?|}}?/g;
var pos = 0; var lastPos = re.lastIndex = 0;
for (pos = 0; pos < pattern.length; pos++) { var m;
if (pattern.charAt(pos) == "{") { while ((m = re.exec(pattern)) != null) {
if (pos + 1 >= pattern.length) { 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 {{"; var msg = "unescaped { char, should be escaped as {{";
throw new self.FormatPatternError(pattern, pos, msg); throw new self.FormatPatternError(pattern, m.index, msg);
} else if (pattern.charAt(pos + 1) == "{") { } else if (self.startsWith("}", str)) {
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 }}"; var msg = "unescaped } char, should be escaped as }}";
throw new self.FormatPatternError(pattern, pos, msg); throw new self.FormatPatternError(pattern, m.index, msg);
}
parts.push(pattern.substring(start, pos + 1));
start = pos + 2;
pos++;
} }
} }
if (start < pos) { if (lastPos < pattern.length) {
parts.push(pattern.substring(start, pos)); parts.push(pattern.substring(lastPos));
} }
return parts; return parts;
} };
/** /**
* Parses a format instruction and returns a format info object. * 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) { MochiKit.Text._parseFormat = function (pattern, startPos, endPos) {
var self = MochiKit.Text; var self = MochiKit.Text;
var text = pattern.substring(startPos, endPos); var text = pattern.substring(startPos, endPos);
var info; var parts = self.split(text, ":", 1);
var pos = text.indexOf(":"); var path = parts[0];
if (pos == 0) { var flagsPos = startPos + path.length + ((parts.length == 1) ? 0 : 1);
info = self._parseFormatFlags(pattern, startPos + 1, endPos); var info = self._parseFormatFlags(pattern, flagsPos, endPos);
info.path = [0]; info.path = (path == "") ? [] : path.split(".");
} 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+$/;
for (var i = 0; i < info.path.length; i++) { for (var i = 0; i < info.path.length; i++) {
var e = info.path[i]; var v = info.path[i];
if (typeof(e) == "string") {
// TODO: replace with MochiKit.Format.strip? // TODO: replace with MochiKit.Format.strip?
e = e.replace(/^\s+/, "").replace(/\s+$/, ""); v = v.replace(/^\s+/, "").replace(/\s+$/, "");
if (e == "" && info.path.length == 1) { if (v == "" && info.path.length == 1) {
e = 0; v = 0;
} else if (e == "") { } else if (v == "") {
var msg = "format value path contains blanks"; var msg = "format value path contains blanks";
throw new self.FormatPatternError(pattern, startPos, msg); throw new self.FormatPatternError(pattern, startPos, msg);
} else if (DIGITS.test(e)) { } else if (/^\d+$/.test(v)) {
e = parseInt(e); v = parseInt(v, 10);
} }
info.path[i] = v;
} }
info.path[i] = e; if (info.path.length <= 0 || typeof(info.path[0]) != "number") {
}
if (info.path.length < 0 || typeof(info.path[0]) != "number") {
info.path.unshift(0); info.path.unshift(0);
} }
return info; return info;
} };
/** /**
* Parses a string with format flags and returns a format info object. * 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 * @throws FormatPatternError if the format pattern was invalid
*/ */
MochiKit.Text._parseFormatFlags = function (pattern, startPos, endPos) { MochiKit.Text._parseFormatFlags = function (pattern, startPos, endPos) {
var self = MochiKit.Text; var update = MochiKit.Base.update;
var info = { numeric: false, format: "s", width: 0, precision: -1, var info = { type: "string", format: "s", width: 0, precision: -1,
align: ">", sign: "-", padding: " ", grouping: false }; align: ">", sign: "", padding: " ", group: false };
// TODO: replace with MochiKit.Format.rstrip? // TODO: replace with MochiKit.Format.rstrip?
var flags = pattern.substring(startPos, endPos).replace(/\s+$/, ""); var text = pattern.substring(startPos, endPos).replace(/\s+$/, "");
while (flags.length > 0) { var m = /^([<>+ 0,-]+)?(\d+)?(\.\d*)?([srbdoxXf%])?(.*)$/.exec(text);
switch (flags.charAt(0)) { var flags = m[1];
case ">": var width = m[2];
case "<": var precision = m[3];
info.align = flags.charAt(0); var type = m[4];
flags = flags.substring(1); var unmatched = m[5];
break; for (var i = 0; flags && i < flags.length; i++) {
case "+": var chr = flags.charAt(i);
case "-": if (chr == "<" || chr == ">") {
case " ": info.align = chr;
info.sign = flags.charAt(0); } else if (chr == "+" || chr == "-" || chr == " ") {
flags = flags.substring(1); info.sign = (chr == "-") ? "" : chr;
break; } else if (chr == "0") {
case ",": info.padding = chr;
info.grouping = true; } else if (chr == ",") {
flags = flags.substring(1); info.group = true;
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);
} }
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; return info;
} };
/** /**
* Formats a value as a percentage. This method avoids multiplication * 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 * @param {Number} precision the number of precision digits
*/ */
MochiKit.Text._truncToPercent = function (value, precision) { MochiKit.Text._truncToPercent = function (value, precision) {
// TODO: This can be simplified by using the same helper function // TODO: This can be simplified by using MochiKit.Format._shiftNumber
// as roundToFixed now does. // as roundToFixed does.
var str; var str;
if (precision >= 0) { if (precision >= 0) {
str = MochiKit.Format.roundToFixed(value, precision + 2); str = MochiKit.Format.roundToFixed(value, precision + 2);
} else { } else {
str = (value == null) ? "0" : value.toString(); str = (value == null) ? "0" : value.toString();
} }
var fracPos = str.indexOf("."); var arr = MochiKit.Text.split(str, ".", 2);
if (fracPos < 0) { var frac = MochiKit.Text.padRight(arr[1], 2, "0");
str = str + "00"; var whole = arr[0] + frac.substring(0, 2);
} else if (fracPos + 3 >= str.length) { frac = frac.substring(2);
var fraction = str.substring(fracPos + 1); while (/^0[0-9]/.test(whole)) {
while (fraction.length < 2) { whole = whole.substring(1);
fraction = fraction + "0";
} }
str = str.substring(0, fracPos) + fraction; return (frac.length <= 0) ? whole : whole + "." + frac;
} else { };
var fraction = str.substring(fracPos + 1);
str = str.substring(0, fracPos) + fraction.substring(0, 2) +
"." + fraction.substring(2);
}
while (str.length > 1 && str.charAt(0) == "0" && str.charAt(1) != ".") {
str = str.substring(1);
}
return str;
}
/** /**
* Creates a new format pattern error. * Creates a new format pattern error.
@ -558,13 +527,13 @@ MochiKit.Text.FormatPatternError = function (pattern, pos, message) {
this.pattern = pattern; this.pattern = pattern;
this.pos = pos; this.pos = pos;
this.message = message; 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__) { if (MochiKit.__export__) {
formatter = MochiKit.Text.formatter; formatter = MochiKit.Text.formatter;

View File

@ -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) { MochiKit.Visual._RoundCorners = function (e, options) {
e = MochiKit.DOM.getElement(e); e = MochiKit.DOM.getElement(e);
@ -469,6 +469,11 @@ MochiKit.Visual.Transitions.parabolic = function (pos) {
return pos * 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 */ /** @id MochiKit.Visual.Transitions.none */
MochiKit.Visual.Transitions.none = function (pos) { MochiKit.Visual.Transitions.none = function (pos) {
return 0; return 0;
@ -534,6 +539,11 @@ MochiKit.Base.update(MochiKit.Visual.ScopedQueue.prototype, {
e.finalize(); e.finalize();
}, this.effects); }, this.effects);
break; break;
case 'replace':
ma(function (e) {
e.cancel();
}, this.effects);
break;
} }
effect.startOn += timestamp; effect.startOn += timestamp;
@ -662,8 +672,12 @@ MochiKit.Visual.Base.prototype = {
this.event('afterSetup'); this.event('afterSetup');
} }
if (this.state == 'running') { if (this.state == 'running') {
if (this.options.transition) { var trans = this.options.transition;
pos = this.options.transition(pos); 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.to - this.options.from);
pos += this.options.from; pos += this.options.from;
@ -1686,8 +1700,8 @@ MochiKit.Visual.squish = function (element, /* optional */ options) {
var elemClip; var elemClip;
options = b.update({ options = b.update({
restoreAfterFinish: true, restoreAfterFinish: true,
scaleMode: {originalHeight: elementDimensions.w, scaleMode: {originalHeight: elementDimensions.h,
originalWidth: elementDimensions.h}, originalWidth: elementDimensions.w},
beforeSetupInternal: function (effect) { beforeSetupInternal: function (effect) {
elemClip = s.makeClipping(effect.element); elemClip = s.makeClipping(effect.element);
}, },
@ -1958,18 +1972,5 @@ MochiKit.Visual.fold = function (element, /* optional */ options) {
}; };
/* end of Rico adaptation */ MochiKit.Base.nameFunctions(MochiKit.Visual);
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._exportSymbols(this, MochiKit.Visual); MochiKit.Base._exportSymbols(this, MochiKit.Visual);

View File

@ -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.*");

View File

@ -81,11 +81,11 @@ function run() {
Clipperz.PM.RunTime.mainController.run(shouldShowRegistrationForm); Clipperz.PM.RunTime.mainController.run(shouldShowRegistrationForm);
//Clipperz.log("HASH: " + window.location.hash); //Clipperz.log("HASH: " + window.location.hash);
if (window.location.hash != "") { // if (window.location.hash != "") {
window.location.hash = "" // window.location.hash = ""
} // }
//Clipperz.log("HASH cleaned"); // Clipperz.log("HASH cleaned");
// #credentials=base64encoded({username:'joe', passphrase:'clipperz'}) // #credentials=base64encoded({username:'joe', passphrase:'clipperz'})
// MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', {username:'joe', passphrase:'clipperz'}); // MochiKit.Signal.signal(Clipperz.Signal.NotificationCenter, 'doLogin', {username:'joe', passphrase:'clipperz'});
} }

View File

@ -1,8 +1,11 @@
{ {
"copyright.values": { "copyright.values": {
"mochikit.repository": "http://svn.mochikit.com/mochikit/trunk/", "mochikit.repository": "https://github.com/mochi/mochikit.git",
"mochikit.version": "1506" "mochikit.version": "fe8d17bb9ac0a4e5ad4a8d5c2c94a6fac1c92d75"
}, },
"html.template": "index_template.html",
"js": [ "js": [
"MochiKit/Base.js", "MochiKit/Base.js",
"MochiKit/Iter.js", "MochiKit/Iter.js",

View File

@ -28,7 +28,6 @@ refer to http://www.clipperz.com.
<title>Clipperz.Crypto.AES_v3 - TEST</title> <title>Clipperz.Crypto.AES_v3 - TEST</title>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -32,7 +32,6 @@ refer to http://www.clipperz.com.
</script> </script>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -26,7 +26,6 @@ refer to http://www.clipperz.com.
<html> <html>
<head> <head>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -26,7 +26,6 @@ refer to http://www.clipperz.com.
<html> <html>
<head> <head>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -26,7 +26,6 @@ refer to http://www.clipperz.com.
<html> <html>
<head> <head>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -26,7 +26,6 @@ refer to http://www.clipperz.com.
<html> <html>
<head> <head>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -26,7 +26,6 @@ refer to http://www.clipperz.com.
<html> <html>
<head> <head>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -28,7 +28,6 @@ refer to http://www.clipperz.com.
<script> jslog_config_enabled = true; </script> <script> jslog_config_enabled = true; </script>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -26,7 +26,6 @@ refer to http://www.clipperz.com.
<html> <html>
<head> <head>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -63,7 +63,6 @@ refer to http://www.clipperz.com.
</script> </script>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -26,7 +26,6 @@ refer to http://www.clipperz.com.
<html> <html>
<head> <head>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -28,7 +28,6 @@ refer to http://www.clipperz.com.
<title>Clipperz.Crypto.Usage - TEST</title> <title>Clipperz.Crypto.Usage - TEST</title>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -28,7 +28,6 @@ refer to http://www.clipperz.com.
<title>Clipperz.PM.Date - test</title> <title>Clipperz.PM.Date - test</title>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -28,7 +28,6 @@ refer to http://www.clipperz.com.
<title>Clipperz.PM.Proxy - TEST</title> <title>Clipperz.PM.Proxy - TEST</title>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -28,7 +28,6 @@ refer to http://www.clipperz.com.
<title>Clipperz.PM.Toll - test</title> <title>Clipperz.PM.Toll - test</title>
<script type="text/javascript" src="../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../SimpleTest/test.css">

View File

@ -28,7 +28,6 @@ refer to http://www.clipperz.com.
<title>Clipperz.PM.UI.Web.MainController - test</title> <title>Clipperz.PM.UI.Web.MainController - test</title>
<script type="text/javascript" src="../../../../../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../../../../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../../../../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../../../../../SimpleTest/test.css">

View File

@ -26,7 +26,6 @@ refer to http://www.clipperz.com.
<html> <html>
<head> <head>
<script type="text/javascript" src="../../../js/MochiKit/MochiKit.js"></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> <script type="text/javascript" src="../../SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css"> <link rel="stylesheet" type="text/css" href="../../SimpleTest/test.css">

View File

@ -101,9 +101,7 @@ refer to http://www.clipperz.com.
Clipperz_IEisBroken = true; Clipperz_IEisBroken = true;
</script><![endif]--> </script><![endif]-->
<link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" /> <link rel="stylesheet" type="text/css" href="../../../../css/web.css" />
<link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" />
<link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" />
</head> </head>
<body> <body>

View File

@ -99,9 +99,7 @@ refer to http://www.clipperz.com.
Clipperz_IEisBroken = true; Clipperz_IEisBroken = true;
</script><![endif]--> </script><![endif]-->
<link rel="stylesheet" type="text/css" href="../../../../css/clipperz/clipperz.css" /> <link rel="stylesheet" type="text/css" href="../../../../css/web.css" />
<link rel="stylesheet" type="text/css" href="../../../../css/clipperz/compact.css" />
<link rel="stylesheet" type="text/css" href="../../../../css/clipperz/ytheme-clipperz.css" />
<style> <style>