From 6cf964d0dc008621fb30fd2da28e2c44f29c6364 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 27 Jan 2005 10:21:18 +0000 Subject: DHTML progress bar for glacial rate adding and editing, closes: Bug#1100 --- httemplate/elements/qlib/box.js | 29 +++ httemplate/elements/qlib/boxctrl.js | 48 +++++ httemplate/elements/qlib/boxres.js | 42 +++++ httemplate/elements/qlib/button.js | 74 ++++++++ httemplate/elements/qlib/buttonres.js | 23 +++ httemplate/elements/qlib/control.js | 51 ++++++ httemplate/elements/qlib/counter.js | 81 +++++++++ httemplate/elements/qlib/imagelist.js | 25 +++ httemplate/elements/qlib/label.js | 72 ++++++++ httemplate/elements/qlib/messagebox.js | 57 ++++++ httemplate/elements/qlib/progress.js | 73 ++++++++ httemplate/elements/qlib/sound.js | 47 +++++ httemplate/elements/qlib/sprite.js | 125 +++++++++++++ httemplate/elements/qlib/window.js | 25 +++ httemplate/elements/qlib/wndctrl.js | 322 +++++++++++++++++++++++++++++++++ 15 files changed, 1094 insertions(+) create mode 100644 httemplate/elements/qlib/box.js create mode 100644 httemplate/elements/qlib/boxctrl.js create mode 100644 httemplate/elements/qlib/boxres.js create mode 100644 httemplate/elements/qlib/button.js create mode 100644 httemplate/elements/qlib/buttonres.js create mode 100644 httemplate/elements/qlib/control.js create mode 100644 httemplate/elements/qlib/counter.js create mode 100644 httemplate/elements/qlib/imagelist.js create mode 100644 httemplate/elements/qlib/label.js create mode 100644 httemplate/elements/qlib/messagebox.js create mode 100644 httemplate/elements/qlib/progress.js create mode 100644 httemplate/elements/qlib/sound.js create mode 100644 httemplate/elements/qlib/sprite.js create mode 100644 httemplate/elements/qlib/window.js create mode 100644 httemplate/elements/qlib/wndctrl.js (limited to 'httemplate/elements/qlib') diff --git a/httemplate/elements/qlib/box.js b/httemplate/elements/qlib/box.js new file mode 100644 index 000000000..537aac4c8 --- /dev/null +++ b/httemplate/elements/qlib/box.js @@ -0,0 +1,29 @@ +/** + * QLIB 1.0 Box Control + * Copyright (C) 2002 2003, Quazzle.com Serge Dolgov + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * http://qlib.quazzle.com + */ + +function QBox(parent, name, res, x, y, width, height, body, visible, effects, opacity, zindex) { + this.init(parent, name); + if (this.res = res) { + this.x = x - 0; + this.y = y - 0; + this.width = width - 0; + this.height = (typeof(height) == "number") ? height : null; + this.body = body || " "; + var j = QBox.arguments.length; + this.visible = (j > 8) ? visible : true; + this.effects = (j > 9) ? effects : (res.effects || 0); + this.opacity = (j > 10) ? opacity : (res.opacity != null ? res.opacity : 100); + this.zindex = (j > 11) ? zindex : null; + this.create(); + } else { + this.document.write("invalid resource"); + } +} +QBox.prototype = new QBoxCtrl(); diff --git a/httemplate/elements/qlib/boxctrl.js b/httemplate/elements/qlib/boxctrl.js new file mode 100644 index 000000000..417b204e4 --- /dev/null +++ b/httemplate/elements/qlib/boxctrl.js @@ -0,0 +1,48 @@ +/** + * QLIB 1.0 Box Abstraction + * Copyright (C) 2002 2003, Quazzle.com Serge Dolgov + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * http://qlib.quazzle.com + */ + +function QBoxCtrl_content() { + with (this) { + if (res) { + this.cwidth = width - res.L - res.R - 8; + this.cheight = height && (height - res.T - res.B - 8); + var ec = '">
'; + document.write('
'); + if (typeof(body) == "function") { + this.body(); + } else { + document.write(body); + } + document.write('

'); + } + } +} + +function QBoxCtrl() { + this.res = false; + this.body = " "; + this.cwidth = this.cheight = 0; + this.content = QBoxCtrl_content; +} +QBoxCtrl.prototype = new QWndCtrl(); diff --git a/httemplate/elements/qlib/boxres.js b/httemplate/elements/qlib/boxres.js new file mode 100644 index 000000000..087817211 --- /dev/null +++ b/httemplate/elements/qlib/boxres.js @@ -0,0 +1,42 @@ +/** + * QLIB 1.0 Box Resource + * Copyright (C) 2002 2003, Quazzle.com Serge Dolgov + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * http://qlib.quazzle.com + */ + +function QBoxRes(t, r, b, l, tc, tr, mr, br, bc, bl, ml, tl, bgcolor, bgtile, effects, opacity) { + var args = QBoxRes.arguments.length; + this.T = t; + this.R = r; + this.B = b; + this.L = l; + this.TC = new Image(); + this.TC.src = tc; + this.TR = new Image(r, t); + this.TR.src = tr; + this.MR = new Image(); + this.MR.src = mr; + this.BR = new Image(r, b); + this.BR.src = br; + this.BC = new Image(); + this.BC.src = bc; + this.BL = new Image(l, b); + this.BL.src = bl; + this.ML = new Image(); + this.ML.src = ml; + this.TL = new Image(l, t); + this.TL.src = tl; + this.bgcolor = bgcolor || "#FFFFFF"; + if (bgtile) { + this.bgtile = new Image(); + this.bgtile.src = bgtile; + } else { + this.bgtile = false; + } + this.effects = (args > 13) ? effects : null; + this.opacity = (args > 14) ? opacity : null; +} diff --git a/httemplate/elements/qlib/button.js b/httemplate/elements/qlib/button.js new file mode 100644 index 000000000..05247d5f8 --- /dev/null +++ b/httemplate/elements/qlib/button.js @@ -0,0 +1,74 @@ +/** + * QLIB 1.0 Button Control + * Copyright (C) 2002 2003, Quazzle.com Serge Dolgov + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * http://qlib.quazzle.com + */ + +function QButton_update() { + with (this) { + image.src = ((!enabled && res.imgD) || (value ? res.imgP : res.imgN)).src; + } +} + +function QButton_doEvent() { + with (this) { + if (enabled) { + if (res.style == 1) { + this.value = value ? 0 : 1; + update(); + } + onClick(value, tag); + } + } + return false; +} + +function QButton_enable(state) { + this.enabled = state; + this.update(); +} + +function QButton_set(value) { + if (this.enabled) { + this.value = value ? 1 : 0; + this.update(); + } + return true; +} + +function QButton(parent, name, res, tooltip) { + this.init(parent, name); + if (res) { + this.res = res; + this.tip = tooltip || ""; + this.enabled = true; + this.value = 0; + this.set = QButton_set; + this.enable = QButton_enable; + this.update = QButton_update; + this.doEvent = QButton_doEvent; + this.onClick = QControl.event; + with (this) { + document.write(''); + this.image = document.images[id] || new Image(1, 1); + } + } else { + this.document.write("invalid resource"); + } +} +QButton.prototype = new QControl(); +QButton.NORMAL = 0; +QButton.CHECKBOX = 1; +QButton.WEB = 2; +QButton.SIGNAL = 3; diff --git a/httemplate/elements/qlib/buttonres.js b/httemplate/elements/qlib/buttonres.js new file mode 100644 index 000000000..97f6dfccc --- /dev/null +++ b/httemplate/elements/qlib/buttonres.js @@ -0,0 +1,23 @@ +/** + * QLIB 1.0 Button Resource + * Copyright (C) 2002 2003, Quazzle.com Serge Dolgov + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * http://qlib.quazzle.com + */ + +function QButtonRes(style, width, height, normal, pressed, disabled) { + this.style = style; + this.width = width; + this.height = height; + this.imgN = new Image(width, height); + this.imgN.src = normal; + this.imgP = new Image(width, height); + this.imgP.src = pressed; + if (disabled) { + this.imgD = new Image(width, height); + this.imgD.src = disabled; + } +} diff --git a/httemplate/elements/qlib/control.js b/httemplate/elements/qlib/control.js new file mode 100644 index 000000000..f50206e27 --- /dev/null +++ b/httemplate/elements/qlib/control.js @@ -0,0 +1,51 @@ +/** + * QLIB 1.0 Base Abstract Control + * Copyright (C) 2002 2003, Quazzle.com Serge Dolgov + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * http://qlib.quazzle.com + */ + +function QControl_init(parent, name) { + this.parent = parent || self; + this.window = (parent && parent.window) || self; + this.document = (parent && parent.document) || self.document; + this.name = (parent && parent.name) ? (parent.name + "." + name) : ("self." + name); + this.id = "Q"; + var h = this.hash(this.name); + for (var j=0; j<8; j++) { + this.id += QControl.HEXTABLE.charAt(h & 15); + h >>>= 4; + } +} + +function QControl_hash(str) { + var h = 0; + if (str) { + for (var j=str.length-1; j>=0; j--) { + h ^= QControl.ANTABLE.indexOf(str.charAt(j)) + 1; + for (var i=0; i<3; i++) { + var m = (h = h<<7 | h>>>25) & 150994944; + h ^= m ? (m == 150994944 ? 1 : 0) : 1; + } + } + } + return h; +} + +function QControl_nop() { +} + +function QControl() { + this.init = QControl_init; + this.hash = QControl_hash; + this.window = self; + this.document = self.document; + this.tag = null; +} +QControl.ANTABLE = "w5Q2KkFts3deLIPg8Nynu_JAUBZ9YxmH1XW47oDpa6lcjMRfi0CrhbGSOTvqzEV"; +QControl.HEXTABLE = "0123456789ABCDEF"; +QControl.nop = QControl_nop; +QControl.event = QControl_nop; diff --git a/httemplate/elements/qlib/counter.js b/httemplate/elements/qlib/counter.js new file mode 100644 index 000000000..72aeddbdb --- /dev/null +++ b/httemplate/elements/qlib/counter.js @@ -0,0 +1,81 @@ +/** + * QLIB 1.0 Animated Digital Counter + * Copyright (C) 2002 2003, Quazzle.com Serge Dolgov + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * http://qlib.quazzle.com + */ + +function QCounter_update() { + with (this) { + var v = Math.max(value, 0); + var mod; + for (var j=0; j= 1) || (!j) ? res.list[mod].src : res.list[10].src; + v /= 10; + } + } +} + +function QCounter_count(value, step) { + this._cntt = false; + this.value += step; + if ((step * (this.value - value)) >= 0) { + this.value = value - 0; // convert to number + } else { + this._cntt = setTimeout(this.name + ".count(" + value + "," + step + ")", 50); + } + this.update(); +} + +function QCounter_set(value) { + this.setval = value; + if (value != this.value) { + if (this._cntt) { + clearTimeout(this._cntt); + this._cntt = false; + } + var dv = value - this.value; + if (this.effect == 2) { + dv = dv / Math.min(10, Math.abs(dv)); + } else if (this.effect == 3) { + dv = dv / Math.abs(dv); + } + this.count(value, dv); + } +} + +function QCounter(parent, name, res, size, effect) { + this.init(parent, name); + if (res) { + this.res = res; + this.setval = this.value = 0; + this.size = size || 4; + this.effect = effect || 2; + this._cntt = false; + this.images = new Array(this.size); + this.set = QCounter_set; + this.update = QCounter_update; + this.count = QCounter_count; + with (this) { + document.write(''); + for (var j=(size - 1); j>=0; j--) { + document.write(''); + images[j] = document.images[id + j] || new Image(1, 1); + } + document.write('
'); + } + } else { + this.document.write("invalid resource"); + } +} +QCounter.prototype = new QControl(); +QCounter.INSTANT = 1; +QCounter.FAST = 2; +QCounter.SLOW = 3; diff --git a/httemplate/elements/qlib/imagelist.js b/httemplate/elements/qlib/imagelist.js new file mode 100644 index 000000000..9f12de053 --- /dev/null +++ b/httemplate/elements/qlib/imagelist.js @@ -0,0 +1,25 @@ +/** + * QLIB 1.0 ImageList Resource + * Copyright (C) 2002 2003, Quazzle.com Serge Dolgov + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * http://qlib.quazzle.com + */ + +function QImageList(width, height) { + var len = QImageList.arguments.length - 2; + if (len > 0) { + this.list = new Array(len); + this.length = len; + this.width = width; + this.height = height; + var im; + for (var j=0; j' + (clickable ? '' + value + '' : value) + ''); + document.close(); + } +} + +function QLabel_doEvent() { + this.onClick(this.value, this.tag); + return false; +} + +function QLabel(parent, name, value, clickable, tooltip) { + this.init(parent, name); + this.value = value || ""; + this.clickable = clickable || false; + this.tooltip = tooltip || ""; + this.doEvent = QLabel_doEvent; + this.onClick = QControl.event; + with (this) { + if (document.getElementById || document.all) { + document.write(clickable ? '' : '
' + + (value || ' ') + '
'); + this.label = document.getElementById ? document.getElementById(id) : + (document.all.item ? document.all.item(id) : document.all[id]); + this.set = (label && (label.innerText ? QLabel_set_ie : + (label.replaceChild && QLabel_set_dom2))) || QControl.nop; + } else if (document.layers) { + var suffix = ""; + for (var j=value.length; j
' + + (clickable ? '' + value + suffix + '' : + value + suffix) + '
'); + this.label = (this.label = document.layers["i" + id]) && label.document.layers[id]; + this.document = label && label.document; + this.set = (label && document) ? QLabel_set_ns4 : QControl.nop; + } else { + document.write("Object is not supported"); + } + } +} +QLabel.prototype = new QControl(); +QLabel.TEXTQUOTA = 50; diff --git a/httemplate/elements/qlib/messagebox.js b/httemplate/elements/qlib/messagebox.js new file mode 100644 index 000000000..2e458393d --- /dev/null +++ b/httemplate/elements/qlib/messagebox.js @@ -0,0 +1,57 @@ +/** + * QLIB 1.0 Message Box Control + * Copyright (C) 2002 2003, Quazzle.com Serge Dolgov + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * http://qlib.quazzle.com + */ + +function QMessageBox_alert(msg) { + if (typeof(msg) == "string") { + this.label.set(this.value = msg); + } + this.center(); + this.focus(); + this.show(true); +} + +function QMessageBox_close() { + with (this.parent) { + if (!onClose(tag)) show(false); + } +} + +function QMessageBox_body() { + with (this) { + document.write('
'); + this.label = new QLabel(this, "label", value); + document.write('
'); + this.button = new QButton(this, "button", bres, "Close"); + document.write('
'); + button.onClick = QMessageBox_close; + } +} + +function QMessageBox(parent, name, box, btn, msg, effects, opacity) { + this.init(parent, name); + if ((this.res = box) && (this.bres = btn)) { + this.value = typeof(msg) == "string" ? msg : ""; + this.width = Math.max(200, Math.floor(Math.sqrt(555 * this.value.length))); + this.height = null; + this.x = this.y = 0; + this.visible = false; + this.zindex = null; + this.body = QMessageBox_body; + var j = QMessageBox.arguments.length; + this.effects = j > 5 ? effects : (box.effects != null ? box.effects : 0); + this.opacity = j > 6 ? opacity : (box.opacity != null ? box.opacity : 100); + this.create(); + this.alert = QMessageBox_alert; + this.onClose = QControl.event; + } else { + this.document.write("invalid resource"); + } +} +QMessageBox.prototype = new QBoxCtrl(); diff --git a/httemplate/elements/qlib/progress.js b/httemplate/elements/qlib/progress.js new file mode 100644 index 000000000..2de077eac --- /dev/null +++ b/httemplate/elements/qlib/progress.js @@ -0,0 +1,73 @@ +/** + * QLIB 1.0 Progress Control + * Copyright (C) 2002 2003, Quazzle.com Serge Dolgov + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * http://qlib.quazzle.com + */ + +function QProgress_update() { + with (this) { + var i = low; + for (var j=0; j' : 'width="' + res.width + + '" height="' + (size * res.height) + '">')); + for (var j=0; j') + '' + (hor ? '' : '')); + } + document.write((hor ? '' : '') + ''); + for (var j=0; j'); + if (document.all && document.all.item) { + this._out = document.all.item(id); + if (_out && (typeof _out.src != "undefined") && (_out.volume === volume)) { + document.write(''); + this._buf = document.all.item("b" + id); + if (_buf) { + this.play = QSound_play; + this.stop = QSound_stop; + this.setVolume = QSound_setVolume; + + _out.onreadystatechange = new Function("alert(0)"); + } + } + } + } +} +QSound.prototype = new QControl(); diff --git a/httemplate/elements/qlib/sprite.js b/httemplate/elements/qlib/sprite.js new file mode 100644 index 000000000..72a68fb7c --- /dev/null +++ b/httemplate/elements/qlib/sprite.js @@ -0,0 +1,125 @@ +/** + * QLIB 1.0 Sprite Object + * Copyright (C) 2002 2003, Quazzle.com Serge Dolgov + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * http://qlib.quazzle.com + */ + +function QSprite_load(src) { + if (src) { + this.face = new Image(this.cwidth, this.cheight); + this.face.src = src; + this.valid = false; + } +} + +function QSprite_show(show) { + if (show && !this.valid && this.face.complete) { + this._img.src = this.face.src; + this.valid = true; + } + this._show(show); +} + +function QSprite_moveTo(x, y) { + this.stop(); + this._move(x, y); +} + +function QSprite_slideTo(x, y) { + this.stop(); + if (this.visible) { + this.doSlide(++this._spro, x, y); + } else { + this.moveTo(x, y); + } +} + +function QSprite_shake() { + this.stop(); + if (this.visible) { + this.doShake(++this._spro, 0, this.x, this.y); + } +} + +function QSprite_stop() { + this._spro++; + if (this._sprt) { + clearTimeout(this._sprt); + this._sprt = false; + } +} + +function QSprite_doSlide(id, x, y) { + if (this._spro == id) { + this._sprt = false; + var dx = Math.round(x - this.x); + var dy = Math.round(y - this.y); + if (dx || dy) { + if (dx) dx = dx > 0 ? Math.ceil(dx/4) : Math.floor(dx/4); + if (dy) dy = dy > 0 ? Math.ceil(dy/4) : Math.floor(dy/4); + this._move(this.x + dx, this.y + dy); + this._sprt = setTimeout(this.name + ".doSlide(" + id + "," + x + "," + y + ")", 30); + } else { + this._move(x, y); + } + } +} + +function QSprite_doShake(id, phase, x, y) { + if (this._spro == id) { + this._sprt = false; + if (phase < 20) { + var m = 3 * Math.sin(.16 * phase); + this._move(x + m * Math.sin(phase), y + m * Math.cos(phase)); + this._sprt = setTimeout(this.name + ".doShake(" + id + "," + (++phase) + "," + x + "," + y + ")", 20); + } else { + this._move(x, y); + } + } +} + +function QSprite_doClick() { + if (!this._sprt) { + this.onClick(this.tag); + } + return false; +} + +function QSprite(parent, name, x, y, width, height, src, visible, effects, opacity, zindex) { + this.init(parent, name); + this.x = x - 0; + this.y = y - 0; + this.width = (this.cwidth = width - 0) + 8; + this.height = (this.cheight = height - 0) + 8; + var j = QSprite.arguments.length; + this.visible = (j > 7) ? visible : true; + this.effects = (j > 8) ? effects : 0; + this.opacity = (j > 9) ? opacity : 100; + this.zindex = (j > 10) ? zindex : null; + this.valid = !!src; + this.content = ''; + this.doClick = QSprite_doClick; + this.doSlide = QSprite_doSlide; + this.doShake = QSprite_doShake; + this.onClick = QControl.event; + this.create(); + this.face = this._img = this.document.images[this.id] || new Image(1, 1); + this._spro = 0; + this._sprt = false; + this._show = this.show; + this._move = this.moveTo; + this.load = QSprite_load; + this.show = QSprite_show; + this.moveTo = QSprite_moveTo; + this.slideTo = QSprite_slideTo; + this.shake = QSprite_shake; + this.stop = QSprite_stop; +} +QSprite.prototype = new QWndCtrl(); diff --git a/httemplate/elements/qlib/window.js b/httemplate/elements/qlib/window.js new file mode 100644 index 000000000..6056fda9b --- /dev/null +++ b/httemplate/elements/qlib/window.js @@ -0,0 +1,25 @@ +/** + * QLIB 1.0 Window Control + * Copyright (C) 2002 2003, Quazzle.com Serge Dolgov + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * http://qlib.quazzle.com + */ + +function QWindow(parent, name, x, y, width, height, content, visible, effects, opacity, zindex) { + this.init(parent, name); + this.x = x - 0; + this.y = y - 0; + this.width = width - 0; + this.height = (typeof(height) == "number") ? height : null; + this.content = content; + var j = QWindow.arguments.length; + this.visible = (j > 7) ? visible : true; + this.effects = (j > 8) ? effects : 0; + this.opacity = (j > 9) ? opacity : 100; + this.zindex = (j > 10) ? zindex : null; + this.create(); +} +QWindow.prototype = new QWndCtrl(); diff --git a/httemplate/elements/qlib/wndctrl.js b/httemplate/elements/qlib/wndctrl.js new file mode 100644 index 000000000..b3bde4e92 --- /dev/null +++ b/httemplate/elements/qlib/wndctrl.js @@ -0,0 +1,322 @@ +/** + * QLIB 1.0 Window Abstraction + * Copyright (C) 2002 2003, Quazzle.com Serge Dolgov + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * http://qlib.quazzle.com + */ + +function QWndCtrl_center_ie4() { + var b = this.document.body; + this.moveTo(b.scrollLeft + Math.max(0, Math.floor((b.clientWidth - + this.width) / 2)), b.scrollTop + 100); +} + +function QWndCtrl_center_moz() { + this.moveTo(self.pageXOffset + Math.max(0, Math.floor((self.innerWidth - + this.width) / 2)), self.pageYOffset + 100); +} + +function QWndCtrl_setEffects_ie4(fx) { + this.effects = fx; + with (this.wnd) { + filters[0].enabled = (fx & 256) != 0; + filters[1].enabled = (fx & 512) != 0; + filters[2].enabled = (fx & 1024) != 0; + filters[4].enabled = (fx & 2048) != 0; + } +} + +function QWndCtrl_setEffects_moz(fx) { + this.effects = fx; +} + +function QWndCtrl_setOpacity_ie4(op) { + this.opacity = Math.max(0, Math.min(100, Math.floor(op - 0))); + this.wnd.filters[3].opacity = this.opacity; + this.wnd.filters[3].enabled = (this.opacity < 100); +} + +function QWndCtrl_setOpacity_moz(op) { + this.opacity = Math.max(0, Math.min(100, Math.floor(op - 0))); + this.wnd.style.MozOpacity = this.opacity + "%"; +} + +function QWndCtrl_setSize_css(w, h) { + this.wnd.style.width = (this.width = Math.floor(w - 0)) + "px"; + this.wnd.style.height = typeof(h) == "number" ? (this.height = Math.floor(h)) + "px" : "auto"; +} + +function QWndCtrl_setSize_ns4(w, h) { + this.wnd.clip.width = this.width = Math.floor(w - 0); + if (typeof(h) == "number") { + this.wnd.clip.height = this.height = Math.floor(h); + } +} + +function QWndCtrl_focus() { + this.setZIndex(QWndCtrl.TOPZINDEX++); +} + +function QWndCtrl_setZIndex_css(z) { + this.wnd.style.zIndex = this.zindex = z || 0; +} + +function QWndCtrl_setZIndex_ns4(z) { + this.wnd.zIndex = this.zindex = z || 0; +} + +function QWndCtrl_moveTo_css(x, y) { + this.wnd.style.left = (this.x = Math.floor(x - 0)) + "px"; + this.wnd.style.top = (this.y = Math.floor(y - 0)) + "px"; +} + +function QWndCtrl_moveTo_ns4(x, y) { + this.wnd.moveTo(this.x = Math.floor(x - 0), this.y = Math.floor(y - 0)); +} + +function QWndCtrl_fxhandler() { + this.fxhandler = QControl.nop; + this.onShow(this.visible, this.tag); +} + +function QWndCtrl_show_ie4(show) { + if (this.visible != show) { + var fx = false; + switch (show ? this.effects & 15 : (this.effects & 240) >>> 4) { + case 1: + fx = this.wnd.filters[5]; + break; + case 2: + (fx = this.wnd.filters[6]).transition = show ? 1 : 0; + break; + case 3: + (fx = this.wnd.filters[6]).transition = show ? 3 : 2; + break; + case 4: + (fx = this.wnd.filters[6]).transition = show ? 5 : 4; + break; + case 5: + (fx = this.wnd.filters[6]).transition = show ? 14 : 13; + break; + case 6: + (fx = this.wnd.filters[6]).transition = show ? 16 : 15; + break; + case 7: + (fx = this.wnd.filters[6]).transition = 12; + break; + case 8: + (fx = this.wnd.filters[6]).transition = 8; + break; + case 9: + (fx = this.wnd.filters[6]).transition = 9; + } + if (fx) { + fx.apply(); + this.wnd.style.visibility = (this.visible = show) ? "visible" : "hidden"; + this.fxhandler = QWndCtrl_fxhandler; + fx.play(0.3); + } else { + this.wnd.style.visibility = (this.visible = show) ? "visible" : "hidden"; + this.onShow(show, this.tag); + } + } +} + +function QWndCtrl_fade_moz(op, step) { + this._wndt = false; + if (step) { + op += step; + if ((op > 0) && (op < this.opacity)) { + this.wnd.style.MozOpacity = op + "%"; + this._wndt = setTimeout(this.name + ".fade(" + op + "," + step + ")", 50); + } else { + if (op <= 0) { + this.wnd.style.visibility = "hidden"; + this.visible = false; + } + this.wnd.style.MozOpacity = this.opacity + "%"; + this.onShow(this.visible, this.tag); + } + } +} + +function QWndCtrl_show_moz(show) { + if (this.visible != show) { + if (this._wndt) { + clearTimeout(this._wndt); + this._wndt = false; + } + var step = show ? ((this.effects & 15) == 1) && Math.floor(this.opacity / 5) : + ((this.effects & 240) == 16) && -Math.floor(this.opacity / 5); + if (step) { + if (this.visible) { + this.fade(this.opacity - 0, step); + } else { + this.wnd.style.MozOpacity = "0%"; + this.wnd.style.visibility = "visible"; + this.visible = true; + this.fade(0, step); + } + } else { + this.wnd.style.visibility = (this.visible = show) ? "visible" : "hidden"; + this.onShow(show, this.tag); + } + } +} + +function QWndCtrl_show_css(show) { + if (this.visible != show) { + this.wnd.style.visibility = (this.visible = show) ? "visible" : "hidden"; + this.onShow(show, this.tag); + } +} + +function QWndCtrl_show_ns4(show) { + if (this.visible != show) { + this.wnd.visibility = (this.visible = show) ? "show" : "hidden"; + this.onShow(show, this.tag); + } +} + +function QWndCtrl_create_dom2() { + with (this) { + this.fxhandler = QControl.nop; + var ie4 = document.body && document.body.filters; + var moz = document.body && document.body.style && + typeof(document.body.style.MozOpacity) == "string"; + document.write('
'); + if (typeof(content) == "function") { + this.content(); + } else { + document.write(content); + } + document.write('
'); + if (this.wnd = document.getElementById ? document.getElementById(id) : + (document.all.item ? document.all.item(id) : document.all[id])) { + if (wnd.style) { + ie4 = ie4 && wnd.filters; + moz = moz && typeof(wnd.style.MozOpacity) == "string"; + this.moveTo = QWndCtrl_moveTo_css; + this.setZIndex = QWndCtrl_setZIndex_css; + this.focus = QWndCtrl_focus; + this.setSize = QWndCtrl_setSize_css; + this.show = ie4 ? QWndCtrl_show_ie4 : (moz ? QWndCtrl_show_moz : QWndCtrl_show_css); + this.fade = moz ? QWndCtrl_fade_moz : QControl.nop; + this.setOpacity = ie4 ? QWndCtrl_setOpacity_ie4 : (moz ? QWndCtrl_setOpacity_moz : QControl.nop); + this.setEffects = ie4 ? QWndCtrl_setEffects_ie4 : (moz ? QWndCtrl_setEffects_moz : QControl.nop); + this.center = self.innerWidth ? QWndCtrl_center_moz : + (document.body && document.body.clientWidth ? QWndCtrl_center_ie4 : QControl.nop); + } + } + } +} + +function QWndCtrl_create_ns4(finalize) { + with (this) { + if (finalize) { + if (_wnde) { + parent.window.onload = _wnde; + parent.window.onload(); + } + document.open(); + document.write('
'); + this.content(); + document.write('
'); + document.close(); + } else { + document.write('
' + content + '
' : '"> ')); + if (this.window = this.wnd = document.layers[id]) { + if (this.document = wnd.document) { + this.show = QWndCtrl_show_ns4; + this.moveTo = QWndCtrl_moveTo_ns4; + this.setZIndex = QWndCtrl_setZIndex_ns4; + this.focus = QWndCtrl_focus; + this.center = QWndCtrl_center_moz; + this.setSize = QWndCtrl_setSize_ns4; + if (typeof(content) == "function") { + this._wnde = parent.window.onload; + parent.window.onload = new Function(name + ".create(true)"); + } + } + } + } + } +} + +function QWndCtrl_create_na() { + this.document.write('Object is not supported.'); + this.wnd = null; +} + +function QWndCtrl_create() { + with (this) { + this.create = (document.getElementById || document.all) ? QWndCtrl_create_dom2 : + (document.layers ? QWndCtrl_create_ns4 : QWndCtrl_create_na); + create(); + } +} + +function QWndCtrl() { + this.x = this.y = 0; + this.width = this.height = 0; + this.content = ""; + this.visible = true; + this.effects = 0; + this.opacity = 100; + this.zindex = null; + this._wndt = this._wnde = false; + this.create = QWndCtrl_create; + this.show = QControl.nop; + this.focus = QControl.nop; + this.center = QControl.nop; + this.moveTo = QControl.nop; + this.setSize = QControl.nop; + this.setOpacity = QControl.nop; + this.setEffects = QControl.nop; + this.setZIndex = QControl.nop; + this.onShow = QControl.event; +} +QWndCtrl.prototype = new QControl(); +QWndCtrl.TOPZINDEX = 1000; +QWndCtrl.GRAY = 256; +QWndCtrl.XRAY = 512; +QWndCtrl.INVERT = 1024; +QWndCtrl.SHADOW = 2048; +QWndCtrl.FADEIN = 1; +QWndCtrl.FADEOUT = 16; +QWndCtrl.BOXIN = 2; +QWndCtrl.BOXOUT = 32; +QWndCtrl.CIRCLEIN = 3; +QWndCtrl.CIRCLEOUT = 48; +QWndCtrl.WIPEIN = 4; +QWndCtrl.WIPEOUT = 64; +QWndCtrl.HBARNIN = 5; +QWndCtrl.HBARNOUT = 80; +QWndCtrl.VBARNIN = 6; +QWndCtrl.VBARNOUT = 96; +QWndCtrl.DISSOLVEIN = 7; +QWndCtrl.DISSOLVEOUT = 112; +QWndCtrl.HBLINDSIN = 8; +QWndCtrl.HBLINDSOUT = 128; +QWndCtrl.VBLINDSIN = 9; +QWndCtrl.VBLINDSOUT = 144; -- cgit v1.2.1