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