Code:
/*
Document Wipes effect- By Dynamic Web Coding (www.dyn-web.com)
Copyright 2002 by Sharon Paine
Visit http://www.dynamicdrive.com for this script
Idea and math for time-based animation from:
Aaron Boodman at www.youngpup.net
and Mike Foster at www.cross-browser.com
*/
dom = (document.getElementById) ? true : false;
ns5 = ((navigator.userAgent.indexOf("Gecko")>-1) && dom) ? true: false;
ie5 = ((navigator.userAgent.indexOf("MSIE")>-1) && dom) ? true : false;
ns4 = (document.layers && !dom) ? true : false;
ie4 = (document.all && !dom) ? true : false;
nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;
var origWidth, origHeight;
if (ns4) {
origWidth = window.innerWidth;
origHeight = window.innerHeight;
}
// reload or reposition on resize
function reDo() {
if (ns4) {
if (window.innerWidth != origWidth || window.innerHeight != origHeight)
window.location.reload();
} else setTimeout("rePosition()",200);
}
window.onresize = reDo;
function rePosition() {
positionBotmRt('skipDiv');
if (typeof wipeLyr1!="undefined") wipeLyr1.centerIn(window);
//if (typeof wipeLyr2!="undefined") wipeLyr2.centerIn(window);
}
// for positioning "skip intro" link-layer
function positionBotmRt(lyr) {
var lyrcss = (ns4)? document.layers[lyr]: (ie4)? document.all[lyr].style: (ie5|ns5)? document.getElementById(lyr).style: null;
var winWd=(ie4||ie5)? document.body.clientWidth: window.innerWidth;
var winHt=(ie4||ie5)? document.body.clientHeight: window.innerHeight;
var x=winWd-getWidth(lyrcss,'skipLnk')-16;
var y=winHt-getHeight(lyrcss,'skipLnk')-16;
lyrcss.left=(ns4)? x: x+"px";
lyrcss.top=(ns4)? y: y+"px";
lyrcss.visibility = "visible";
}
var wipe_count=0; // to keep track
function doWipes() {
if (wipe_count<wipe_array.length) {
/////////////////////////////////////////////////////////////////////
// This is set up for text on 1 line.
// It wraps wipe layer content in table
// so you can get rendered width/height.
// NOTE: uses nowrap minimized attribute.
// If you want to be xhtml valid, you could remove that
// and use non-breaking spaces between words instead.
var cntnt = '<table id="w1" border="0" cellpadding="0" cellspacing="0"><tr><td class="wipe" nowrap>'+ wipe_array[wipe_count] +'</td></tr></table>';
with (wipeLyr1) {
hide();
// restore, for ns4, or new content is visible...
clipTo(0,wipeLyr1.width,wipeLyr1.height,0);
writeLyr(cntnt);
width=getWidth(wipeLyr1.el,'w1');
height=getHeight(wipeLyr1.el,'w1');
centerIn(window);
}
// args: which wipe, delay, wipeTime, what next
wipeLyr1.wipe("in right", wipe_in_delay,wipe_array[wipe_count+1],"wipeOuts()");
} else {
// wipes in image, then sends to destination url
//wipeLyr2.wipe("in center", wipe_in_logo_delay,wipe_in_logo,"setTimeout('setDest()',dest_delay)");
setTimeout('setDest()',dest_delay);
}
}
function wipeOuts() {
wipeLyr1.wipe("out middle", wipe_out_delay,wipe_array[wipe_count+1]/wipe_out_dv,"doWipes()");
wipe_count+=2;
}
// end of wipe-splash code
/////////////////////////////////////////////////////////////////////
// beginning of wipes.js proper
// constructor
function dynObj(obj) {
this.el = (ns4)? getLyrRef(obj,document): (ie4)? document.all[obj]: (ie5||ns5)? document.getElementById(obj): null;
this.css = (ns4)? this.el: (ie4||ie5||ns5)? this.el.style: null;
this.doc = (ns4)? this.el.document: this.el;
this.x = (ns4)? this.css.left: parseInt(this.css.left);
this.y = (ns4)? this.css.top: parseInt(this.css.top);
this.width = (ns4)? this.el.clip.width: (this.css.width)? parseInt(this.css.width): this.el.offsetWidth;
this.height = (ns4)? this.el.clip.height: (this.css.height)? parseInt(this.css.height): this.el.offsetHeight;
this.obj = obj + "dynObj"; eval(this.obj + "=this");
}
// args: which wipe, delay, wipeTime, what next (fn)
dynObj.prototype.wipe=function(which,delay,wipeTime,fn) {
this.wipeTime=wipeTime; this.fn=fn;
switch (which) {
// wipe into view by expanding to the right
case "in right" :
this.clipTo(0,0,this.height,0);
this.show();
setTimeout(this.obj+".wipe_in_rt()",delay);
break;
// wipe into view by expanding from the center out
case "in center" :
this.vCenter = Math.ceil(this.height/2);
this.hCenter = Math.ceil(this.width/2);
this.clipTo(this.vCenter, this.hCenter,this.vCenter,this.hCenter);
this.show();
setTimeout(this.obj+".wipe_in_center()",delay);
break;
// wipe into view from upper left corner to lower right
case "in corner" :
this.clipTo(0,0,0,0);
this.show();
setTimeout(this.obj+".wipe_in_corner()",delay);
break;
// wipe out of view by contracting to the center
case "out center" :
this.vCenter = Math.ceil(this.height/2);
this.hCenter = Math.ceil(this.width/2);
setTimeout(this.obj+".wipe_out_center()",delay);
break;
// wipe out of view by contracting to the left
case "out left" :
setTimeout(this.obj+".wipe_out_left()",delay);
break;
// wipe out of view by contracting to the right
case "out right" :
setTimeout(this.obj+".wipe_out_right()",delay);
break;
// wipe out of view by contracting from left and right
case "out middle" :
this.dest=Math.ceil(this.width/2);
setTimeout(this.obj+".wipe_out_mid()",delay);
break;
// wipe out of view from the upper left to lower right
case "out corner" :
setTimeout(this.obj+".wipe_out_corner()",delay);
break;
default:
alert("Oops! Check choices again.");
}
this.wipeStart = new Date().getTime()+delay;
this.per = Math.PI/(2*this.wipeTime);
}
// wipe into view by expanding to the right
dynObj.prototype.wipe_in_rt=function() {
var clipVal = this.getClipValues();
var elapsed = (new Date().getTime())-this.wipeStart;
if (elapsed<this.wipeTime) {
// wipes could potentially be steady, accelerate, or decelerate
// idea and math from Mike Foster at www.cross-browser.com
// var inc = this.width*Math.sin(this.per*elapsed);
// var inc = -this.width*Math.cos(this.per*elapsed)+this.width;
var inc = this.width*((1/this.wipeTime)*elapsed);
this.clipTo(0,inc,this.height,0);
setTimeout(this.obj+".wipe_in_rt()",35);
} else {
this.clipTo(0,this.width,this.height,0);
if (this.fn) eval(this.fn);
}
}
// wipe into view by expanding from the center out
dynObj.prototype.wipe_in_center=function() {
var clipVal = this.getClipValues();
var elapsed = (new Date().getTime())-this.wipeStart;
if (elapsed<this.wipeTime) {
var vinc = this.vCenter*((1/this.wipeTime)*elapsed);
var hinc = this.hCenter*((1/this.wipeTime)*elapsed);
this.clipTo(this.vCenter-vinc,this.hCenter+hinc,this.vCenter+vinc,this.hCenter-hinc);
setTimeout(this.obj+".wipe_in_center()",35);
} else {
this.clipTo(0,this.width,this.height,0);
if (this.fn) eval(this.fn);
}
}
// wipe into view from upper left corner to lower right
dynObj.prototype.wipe_in_corner=function() {
var clipVal = this.getClipValues();
var elapsed = (new Date().getTime())-this.wipeStart;
if (elapsed<this.wipeTime) {
var vinc = this.height*((1/this.wipeTime)*elapsed);
var hinc = this.width*((1/this.wipeTime)*elapsed);
this.clipTo(0,hinc,vinc,0);
setTimeout(this.obj+".wipe_in_corner()",35);
} else {
this.clipTo(0,this.width,this.height,0);
if (this.fn) eval(this.fn);
}
}
// wipe out of view by contracting to the center
dynObj.prototype.wipe_out_center=function() {
var clipVal = this.getClipValues();
var elapsed = (new Date().getTime())-this.wipeStart;
if (elapsed<this.wipeTime) {
var vinc = this.vCenter*((1/this.wipeTime)*elapsed);
var hinc = this.hCenter*((1/this.wipeTime)*elapsed);
this.clipTo(vinc,this.width-hinc,this.height-vinc,hinc);
setTimeout(this.obj+".wipe_out_center()",35);
} else {
this.clipTo(this.vCenter, this.hCenter,this.vCenter,this.hCenter);
if (this.fn) eval(this.fn);
}
Bookmarks