/[cvs]/nfo/js/com.cross-browser.cbe/cbe_slide2.js
ViewVC logotype

Contents of /nfo/js/com.cross-browser.cbe/cbe_slide2.js

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations)
Fri Apr 18 16:14:42 2003 UTC (21 years, 2 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
File MIME type: application/javascript
rest of main cbe include files (currently not required)

1 /* cbe_slide2.js $Revision: 0.11 $
2 * CBE v4.19, Cross-Browser DHTML API from Cross-Browser.com
3 * Copyright (c) 2002 Michael Foster (mike@cross-browser.com)
4 * Distributed under the terms of the GNU LGPL from gnu.org
5 */
6 CrossBrowserElement.prototype.slideCornerBy = function(corner, dX, dY, totalTime, endListener) {
7 var targetX, targetY;
8 dX = parseInt(dX);
9 dY = parseInt(dY);
10 switch(corner.toLowerCase()) {
11 case 'nw': targetX = this.left() + dX; targetY = this.top() + dY; break;
12 case 'sw': targetX = this.left() + dX; targetY = this.top() + this.height() + dY; break;
13 case 'ne': targetX = this.left() + this.width() + dX; targetY = this.top() + dY; break;
14 case 'se': targetX = this.left() + this.width() + dX; targetY = this.top() + this.height() + dY; break;
15 default: alert("CBE: Invalid corner"); return;
16 }
17 this.slideCornerTo(corner, targetX, targetY, totalTime, endListener)
18 }
19 CrossBrowserElement.prototype.slideCornerTo = function(corner, targetX, targetY, totalTime, endListener) {
20 if (this.onslidestart) cbeEval(this.onslidestart, this);
21 this.xTarget = parseInt(targetX);
22 this.yTarget = parseInt(targetY);
23 this.slideTime = parseInt(totalTime);
24 this.corner = corner.toLowerCase();
25 if (endListener) {
26 this.autoRemoveListener = true;
27 this.addEventListener('slideend', endListener);
28 }
29 this.stop = false;
30 switch(this.corner) {
31 case 'nw': this.xA = this.xTarget - this.left(); this.yA = this.yTarget - this.top(); this.xD = this.left(); this.yD = this.top(); break;
32 case 'sw': this.xA = this.xTarget - this.left(); this.yA = this.yTarget - (this.top() + this.height()); this.xD = this.left(); this.yD = this.top() + this.height(); break;
33 case 'ne': this.xA = this.xTarget - (this.left() + this.width()); this.yA = this.yTarget - this.top(); this.xD = this.left() + this.width(); this.yD = this.top(); break;
34 case 'se': this.xA = this.xTarget - (this.left() + this.width()); this.yA = this.yTarget - (this.top() + this.height()); this.xD = this.left() + this.width(); this.yD = this.top() + this.height(); break;
35 default: alert("CBE: Invalid corner"); return;
36 }
37 this.B = Math.PI / ( 2 * this.slideTime );
38 var d = new Date( )
39 this.C = d.getTime();
40 if (!this.moving) this.slideCorner();
41 }
42 CrossBrowserElement.prototype.slideCorner = function() {
43 var now, seX, seY;
44 now = new Date();
45 t = now.getTime() - this.C;
46 if (this.stop) { this.moving = false; this.stop = false; return; }
47 else if (t < this.slideTime) {
48 setTimeout("window.cbeAll["+this.index+"].slideCorner()", this.timeout);
49 s = Math.sin( this.B * t );
50 newX = Math.round(this.xA * s + this.xD);
51 newY = Math.round(this.yA * s + this.yD);
52 if (this.onslide) cbeEval(this.onslide, this, newX, newY, t);
53 }
54 else { newX = this.xTarget; newY = this.yTarget; }
55 seX = this.left() + this.width();
56 seY = this.top() + this.height();
57 switch(this.corner) {
58 case 'nw': this.moveTo(newX, newY); this.sizeTo(seX - this.left(), seY - this.top()); break;
59 case 'sw': if (this.xTarget != this.left()) { this.left(newX); this.width(seX - this.left()); } this.height(newY - this.top()); break;
60 case 'ne': this.width(newX - this.left()); if (this.yTarget != this.top()) { this.top(newY); this.height(seY - this.top()); } break;
61 case 'se': this.width(newX - this.left()); this.height(newY - this.top()); break;
62 default: this.stop = true;
63 }
64 this.clip('auto');
65 this.moving = true;
66 if (t >= this.slideTime) {
67 this.moving = false;
68 if (this.onslideend) {
69 var tmp = this.onslideend;
70 if (this.autoRemoveListener) {
71 this.autoRemoveListener = false;
72 this.removeEventListener('slideend');
73 }
74 cbeEval(tmp, this);
75 }
76 }
77 }
78 CrossBrowserElement.prototype.parametricEquation = function(exprX, exprY, totalTime, endListener) {
79 if (this.onslidestart) cbeEval(this.onslidestart, this);
80 this.t = 0;
81 this.stop = false;
82 this.exprX = exprX;
83 this.exprY = exprY;
84 if (endListener && window.cbeEventJsLoaded) {
85 this.autoRemoveListener = true;
86 this.addEventListener('slideend', endListener);
87 }
88 this.slideTime = parseInt(totalTime);
89 var d = new Date( )
90 this.C = d.getTime();
91 if (!this.moving) this.parametricEquation1();
92 }
93 CrossBrowserElement.prototype.parametricEquation1 = function() {
94 var now = new Date();
95 var et = now.getTime() - this.C;
96 this.t += this.tStep;
97 t = this.t;
98 if (this.stop) { this.moving = false; }
99 else if (!this.slideTime || et < this.slideTime) {
100 setTimeout("window.cbeAll["+this.index+"].parametricEquation1()", this.timeout);
101 var centerX = (this.parentNode.width()/2)-(this.width()/2);
102 var centerY = (this.parentNode.height()/2)-(this.height()/2);
103 this.xTarget = Math.round((eval(this.exprX) * centerX) + centerX) + this.parentNode.scrollLeft();
104 this.yTarget = Math.round((eval(this.exprY) * centerY) + centerY) + this.parentNode.scrollTop();
105 if (this.onslide) cbeEval(this.onslide, this, this.xTarget, this.yTarget, et);
106 this.moveTo(this.xTarget, this.yTarget);
107 this.moving = true;
108 }
109 else {
110 this.moving = false;
111 if (this.onslideend) {
112 var tmp = this.onslideend;
113 if (this.autoRemoveListener && window.cbeEventJsLoaded) {
114 this.autoRemoveListener = false;
115 this.removeEventListener('slideend');
116 }
117 cbeEval(tmp, this);
118 }
119 }
120 }
121 var cbeSlideRateLinear=0, cbeSlideRateSine=1, cbeSlideRateCosine=2;
122 CrossBrowserElement.prototype.slideRate = cbeSlideRateSine;
123 CrossBrowserElement.prototype.tStep = .008;
124 CrossBrowserElement.prototype.exprX = "";
125 CrossBrowserElement.prototype.exprY = "";
126 CrossBrowserElement.prototype.corner = "";
127 CrossBrowserElement.prototype.xTarget = 0;
128 CrossBrowserElement.prototype.yTarget = 0;
129 CrossBrowserElement.prototype.slideTime = 1000;
130 CrossBrowserElement.prototype.xA = 0;
131 CrossBrowserElement.prototype.yA = 0;
132 CrossBrowserElement.prototype.xD = 0;
133 CrossBrowserElement.prototype.yD = 0;
134 CrossBrowserElement.prototype.B = 0;
135 CrossBrowserElement.prototype.C = 0;
136 CrossBrowserElement.prototype.moving = false;
137 CrossBrowserElement.prototype.stop = true;
138 CrossBrowserElement.prototype.timeout = 35;
139 CrossBrowserElement.prototype.autoRemoveListener = false;
140 CrossBrowserElement.prototype.onslidestart = null;
141 CrossBrowserElement.prototype.onslide = null;
142 CrossBrowserElement.prototype.onslideend = null;
143 var cbeSlide2JsLoaded = true;
144 // End cbe_slide2.js

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed