1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
/*
* $Id: instant.js,v 1.8.2.4 2010/04/06 16:46:12 source Exp $
*
* This file is part of the OpenLink Software Ajax Toolkit (OAT) project.
*
* Copyright (C) 2005-2010 OpenLink Software
*
* See LICENSE file for details.
*/
/*
var i = new OAT.Instant(element,callback)
i.show()
i.hide()
i.createHandle(handleID)
i.removeHandle(handleID)
*/
OAT.Instant = function(element, optObj) {
var self = this;
this.options = {
showCallback:false,
hideCallback:false
}
for (var p in optObj) { self.options[p] = optObj[p]; }
this.state = 1;
this.elm = $(element);
this.handles = [];
this.hide = function() {
self.state = 0;
OAT.Dom.hide(self.elm);
}
this.show = function() {
if (self.options.showCallback) { self.options.showCallback(); }
OAT.Dom.show(self.elm);
self.state = 1;
}
this.check = function(event) {
/* element shown, checking where user clicked */
if (!self.state) { return; }
var node = OAT.Event.source(event);
if (node == self.elm || OAT.Dom.isChild(node,self.elm)) { return; } /* clicked in element -> not hiding */
if (self.options.hideCallback) { self.options.hideCallback(); }
self.hide();
}
this.createHandle = function(elm) {
var e = $(elm);
self.handles.push(e);
OAT.Event.attach(e,"mousedown",function(event) {
if (self.handles.find(e) == -1) { return; }
if (!self.state) {
OAT.Event.cancel(event);
self.show();
}
});
}
this.removeHandle = function(elm) {
var e = $(elm);
var i = self.handles.find(e);
if (i != -1) { self.handles.splice(i,1); }
}
self.elm._Instant_show = self.show;
self.elm._Instant_hide = self.hide;
self.hide();
OAT.Event.attach(document,"mousedown",self.check);
}
OAT.Instant.assign = function(something, callback) { /* backward compatibility */
var obj = new OAT.Instant(something, {hideCallback:callback});
}
|