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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide 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 joko 1.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