Update of /cvsroot/easystruts/easystruts-website/lib/x-cbe/x3151_cbe4191_z4/cross-browser.com/cbe
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv435/lib/x-cbe/x3151_cbe4191_z4/cross-browser.com/cbe
Added Files:
cbe_core.js cbe_clip.js cbe_util.js cbe_slide.js
cbe_debug.html cbe_slide2.js cbe_event.js cbe_debug.js
Log Message:
Added new web site sources and data
--- NEW FILE: cbe_core.js ---
/* cbe_core.js $Revision: 0.22 $
* CBE v4.19, Cross-Browser DHTML API from Cross-Browser.com
* Copyright (c) 2002 Michael Foster (mi...@cr...)
* Distributed under the terms of the GNU LGPL from gnu.org
*/
var cbeVersion="4.19", cbeDocumentId='idDocument', cbeWindowId='idWindow', cbeAll=new Array();
window.onload=function(){cbeInitialize("DIV", "SPAN"); if (window.windowOnload) window.windowOnload();}
window.onunload=function(){if(window.windowOnunload){window.windowOnunload();}if(window.cbeDebugObj){window.cbeDebugObj=null;}for(var i=0; i<cbeAll.length; i++){if(cbeAll[i]){if(cbeAll[i].ele){if(cbeAll[i].ele.cbe){cbeAll[i].ele.cbe=null;}cbeAll[i].ele=null;}cbeAll[i]=null;}}}
function CrossBrowserNode(){this.parentNode=null; this.childNodes=0; this.firstChild=null; this.lastChild=null; this.previousSibling=null; this.nextSibling=null;}
CrossBrowserNode.prototype.appendNode=function(cbeChild){if (cbeChild){if (!this.firstChild){this.firstChild=cbeChild;} else{cbeChild.previousSibling=this.lastChild; this.lastChild.nextSibling=cbeChild;}cbeChild.parentNode=this; this.lastChild=cbeChild; ++this.childNodes;}return cbeChild;}
CrossBrowserElement.prototype=new CrossBrowserNode;
function CrossBrowserElement(){
this.contains=this.left=this.top=this.offsetLeft=this.offsetTop=this.pageX=this.pageY=this.zIndex=_retZero;
this.show=this.hide=this.moveTo=this.moveBy=this.sizeTo=this.sizeBy=this.resizeTo=this.resizeBy=_retVoid;
this.visibility=this.color=this.background=this.clip=this.innerHtml=_retEStr;
if (cbeAll.length < 2){this.width=cbeInnerWidth; this.height=cbeInnerHeight; this.scrollLeft=cbePageXOffset; this.scrollTop=cbePageYOffset;}
else{this.width=this.height=this.scrollLeft=this.scrollTop=_retZero;}
this.id=""; this.index=cbeAll.length; cbeAll[this.index]=this; this.w=this.h=0; this.x=this.y=0;
if (window.cbeEventJsLoaded) this.listeners=new Array();
}
function cbeBindElement(cbe, ele){
if (!cbe || !ele) return;
cbe.ele=ele; cbe.ele.cbe=cbe; cbe.parentElement=cbeGetParentElement(ele);
if (ele==window){cbe.id=ele.id=cbeWindowId; return;} else if (ele==document){cbe.id=ele.id=cbeDocumentId; return;} else{cbe.id=ele.id;}
if (_def(ele.clip)){cbe.w=ele.clip.width; cbe.h=ele.clip.height;}
var css=_def(ele.style);
// left, top
cbe.moveTo=_cbeMoveTo; cbe.moveBy=_cbeMoveBy; if (css && _def(ele.style.left, ele.style.top) && typeof(ele.style.left)=="string"){cbe.left=_domLeft; cbe.top=_domTop;}else if (css && _def(ele.style.pixelLeft, ele.style.pixelTop)){cbe.left=_ieLeft; cbe.top=_ieTop;}else if (_def(ele.left, ele.top)){cbe.left=_nnLeft; cbe.top=_nnTop;}else{_sup(false,"left","top","moveTo","moveBy");}
// width, height
cbe.sizeTo=_cbeSizeTo; cbe.sizeBy=_cbeSizeBy; cbe.resizeTo=_cbeResizeTo; cbe.resizeBy=_cbeResizeBy; if (css && _def(ele.style.width, ele.style.height, ele.offsetWidth, ele.offsetHeight) && typeof(ele.style.width)=="string"){cbe.width=_domWidth; cbe.height=_domHeight;}else if (css && _def(ele.style.pixelWidth, ele.style.pixelHeight)){cbe.width=_ieWidth; cbe.height=_ieHeight;}else if (_def(ele.clip) && _def(ele.clip.width, ele.clip.height)){cbe.width=_nnWidth; cbe.height=_nnHeight;}else{_sup(false, "width","height","sizeTo","sizeBy","resizeTo","resizeBy");}
// zIndex
if (css && _def(ele.style.zIndex)){cbe.zIndex=_domZIndex;} else if (_def(ele.zIndex)){cbe.zIndex=_nnZIndex;} else{_sup(false,"zIndex");}
// visibility
cbe.show=_cbeShow; cbe.hide=_cbeHide; if (css && _def(ele.style.visibility)){cbe.visibility=_domVisibility;} else if (_def(ele.visibility)){cbe.visibility=_nnVisibility;} else{_sup(false,"visibility","show","hide");}
// background
if (css && _def(ele.style.backgroundColor, ele.style.backgroundImage)){cbe.background=_domBackground;} else if (_def(ele.bgColor, ele.background)){cbe.background=_nnBackground;} else{_sup(false,"background");}
// color
if (css && _def(ele.style.color)){cbe.color=_domColor;} else{_sup(false,"color");}
// clip
if (css && _def(ele.style.clip)){cbe.clip=_domClip;} else if (_def(ele.clip)){cbe.clip=_nnClip;} else{_sup(false,"clip");}
// offsetLeft, offsetTop
if (_def(ele.offsetLeft, ele.offsetTop, ele.offsetParent)){cbe.offsetLeft=_ieOffsetLeft; cbe.offsetTop=_ieOffsetTop;}else if (_def(ele.pageX, ele.pageY)){cbe.offsetLeft=_nnOffsetLeft; cbe.offsetTop=_nnOffsetTop;}else{_sup(false,"offsetLeft","offsetTop");}
// pageX, pageY
cbe.contains=_cbeContains; if (_def(ele.pageX, ele.pageY)){cbe.pageX=_nnPageX; cbe.pageY=_nnPageY;}else if (document.cbe.isSupported("offsetLeft")){cbe.pageX=_cbePageX; cbe.pageY=_cbePageY;}else{_sup(false,"pageX","pageY","contains");}
// innerHtml
if (_def(ele.innerHTML)){cbe.innerHtml=_ieInnerHtml;} else if (_def(ele.document) && _def(ele.document.write)){cbe.innerHtml=_nnInnerHtml;} else{_sup(false,"innerHtml");}
// scrollLeft, scrollTop
if (_def(ele.scrollLeft, ele.scrollTop)){cbe.scrollLeft=_cbeScrollLeft; cbe.scrollTop=_cbeScrollTop;}else{_sup(false,"scrollLeft","scrollTop");}
// createElement, appendChild, removeChild (these need more work)
if (!_def(document.createElement) && !document.layers){_sup(false,"createElement","appendChild","removeChild");}else{if (!_def(ele.appendChild)){_sup(false,"appendChild");} if (!_def(ele.removeChild)){_sup(false,"removeChild");}}
}
function cbeInitialize(sTagNames){
var t,i,ele,eleList,cbe;
cbe=new CrossBrowserElement(window);
cbeBindElement(cbe, window);
cbe=new CrossBrowserElement(document);
cbeBindElement(cbe, document);
if (!document.getElementById) document.getElementById=cbeGetElementById;
if (document.createElement || document.layers) document.cbe.createElement=_cbeCreateElement;
document.cbe.isSupported=_cbeIsSupported;
document.cbe.supported=new Array();
_sup(true,"left","top","width","height","zIndex","show","hide","visibility","background","color","clip","offsetLeft","offsetTop","pageX","pageY","innerHtml","scrollLeft","scrollTop","createElement","appendChild","removeChild","moveTo","moveBy","sizeTo","sizeBy","resizeTo","resizeBy","contains");
for (t=0; t < arguments.length; ++t){
eleList=cbeGetElementsByTagName(arguments[t]);
for (i=0; i < eleList.length; ++i){
ele=eleList[i];
if ( ele.id && ele.id !=""){
cbe=new CrossBrowserElement();
cbeBindElement(cbe, ele);
}
}
if (document.layers) break;
}
_cbeCreateTree();
if (window.cbeEventJsLoaded && (document.layers || is.opera5or6)){window.cbe.addEventListener("resize", cbeDefaultResizeListener);}
}
function _cbeIsSupported(sMethods){var i; for (i=0; i<arguments.length; ++i){if (!document.cbe.supported[arguments[i]]) return false;}return true;}
function _sup(bValue, sMethods){var i; for (i=1; i<arguments.length; ++i) document.cbe.supported[arguments[i]]=bValue;}
function _cbeCreateTree(){var parent; for (var i=1; i < cbeAll.length; ++i){parent=cbeAll[i].parentElement; if (!parent.cbe){while (parent && !parent.cbe){parent=cbeGetParentElement(parent);}if (!parent) parent=document;}parent.cbe.appendNode(cbeAll[i]);}}
function cbeGetElementById(sId){var ele=null; if (sId==window.cbeWindowId) ele=window; else if (sId==window.cbeDocumentId) ele=document; else if (is.dom1getbyid) ele=document.getElementById(sId); else if (document.all) ele=document.all[sId]; else if (document.layers) ele=nnGetElementById(sId); if (!ele && window.cbeUtilJsLoaded){ele=cbeGetImageByName(sId); if (!ele){ele=cbeGetFormByName(sId);}} return ele;}
function nnGetElementById(sId){for (var i=0; i < cbeAll.length; i++){if ( cbeAll[i].id==sId ) return cbeAll[i].ele;}return null;}
function cbeGetElementsByTagName(sTagName){
var eleList;
if (document.getElementsByTagName) eleList=document.getElementsByTagName(sTagName); // standard
else if (document.body && document.body.getElementsByTagName) eleList=document.body.getElementsByTagName(sTagName); // opera5or6
else if (document.all && document.all.tags) eleList=document.all.tags(sTagName); // ie4
else if (document.layers){eleList=new Array(); nnGetAllLayers(window, eleList, 0);}// nn4
return eleList;
}
function nnGetAllLayers(parent, layerArray, nextIndex){
var i, layer;
for (i=0; i < parent.document.layers.length; i++){
layer=parent.document.layers[i]; layerArray[nextIndex++]=layer;
if (layer.document.layers.length) nextIndex=nnGetAllLayers(layer, layerArray, nextIndex);
}
return nextIndex;
}
function cbeGetParentElement(child){
var parent=document;
if (child==window) parent=null;
else if (child==document) parent=window;
else if (child.parentLayer){if (child.parentLayer !=window) parent=child.parentLayer;}
else{
if (child.parentNode) parent=child.parentNode;
else if (child.offsetParent) parent=child.offsetParent;
else if (child.parentElement) parent=child.parentElement;
}
return parent;
}
function _def(){var i; for (i=0; i<arguments.length; ++i){if (typeof(arguments[i])=="" || typeof(arguments[i])=="undefined") return false;}return true;}
function _retZero(){return 0;}
function _retNull(){return null;}
function _retEStr(){return "";}
function _retVoid(){}
////// when optimizing, don't remove anything above this comment //////
function _cbeCreateElement(sEleType){// returns an Element object
var ele=null;
if (document.createElement && sEleType.length){
ele=document.createElement(sEleType);
if (ele && ele.style){ele.style.position="absolute";}
}
else if (document.layers){
ele=new Object();
}
return ele;
}
CrossBrowserNode.prototype.appendChild=function(eleChild){// returns the appended Element object on success
var cbe, ele, rv=null;
if (document.layers){
var thisEle;
if (this.index < 2) thisEle=window;
else thisEle=this.ele;
ele=new Layer(this.width(), thisEle);
if (ele){
if (eleChild.id) ele.id=ele.name=eleChild.id;
cbe=new CrossBrowserElement();
cbeBindElement(cbe, ele);
this.appendNode(ele.cbe);
eleChild.cbe=cbe;
++this.childNodes;
rv=ele;
}
}
else{
if (this.index < 2) ele=document.body;
else ele=this.ele;
if (ele.appendChild){
ele.appendChild(eleChild);
cbe=new CrossBrowserElement();
cbeBindElement(cbe, eleChild);
this.appendNode(eleChild.cbe);
++this.childNodes;
rv=eleChild;
}
}
return rv;
}
CrossBrowserNode.prototype.removeChild=function(eleChild){
var ele, rv=null;
if (this.index < 2) ele=document.body;
else ele=this.ele;
if (ele.removeChild || document.layers){
--this.childNodes;
var prevSib=eleChild.cbe.previousSibling;
var nextSib=eleChild.cbe.nextSibling;
with (eleChild.cbe){
parentNode=null;
previousSibling=null;
nextSibling=null;
}
if (prevSib) prevSib.nextSibling=nextSib;
else this.firstChild=nextSib;
if (nextSib) nextSib.previousSibling=prevSib;
else this.lastChild=prevSib;
if (document.layers){
//// working on it
}
else{
ele.removeChild(eleChild);
}
rv=eleChild;
}
return rv;
}
function _cbeContains(iLeft, iTop, iClipTop, iClipRight, iClipBottom, iClipLeft){if (arguments.length==2){iClipTop=iClipRight=iClipBottom=iClipLeft=0;} else if (arguments.length==3){iClipRight=iClipBottom=iClipLeft=iClipTop;} else if (arguments.length==4){iClipLeft=iClipRight; iClipBottom=iClipTop;} var thisX=this.pageX(), thisY=this.pageY(); return ( iLeft >=thisX + iClipLeft && iLeft <=thisX + this.width() - iClipRight && iTop >=thisY + iClipTop && iTop <=thisY + this.height() - iClipBottom );}
function _cbeMoveTo(x_cr, y_mar, outside, xEndL){if (isFinite(x_cr)){this.left(x_cr); this.top(y_mar);}else{this.cardinalPosition(x_cr, y_mar, outside); this.left(this.x); this.top(this.y);}if (xEndL) cbeEval(xEndL, this);}
function _cbeMoveBy(uDX, uDY, xEndL){if (uDX){this.left(this.left() + uDX);} if (uDY){this.top(this.top() + uDY);} if (xEndL){cbeEval(xEndL, this);}}
function _domLeft(iX){if (arguments.length){this.ele.style.left=iX + "px";} else{iX=parseInt(this.ele.style.left); if (isNaN(iX)) iX=0;}return iX;}
function _ieLeft(iX){if (arguments.length){this.ele.style.pixelLeft=iX;} else{iX=this.ele.style.pixelLeft;} return iX;}
function _nnLeft(iX){if (arguments.length){this.ele.left=iX;} else{iX=this.ele.left;} return iX;}
function _domTop(iY){if (arguments.length){this.ele.style.top=iY + "px";} else{iY=parseInt(this.ele.style.top); if (isNaN(iY)) iY=0;}return iY;}
function _ieTop(iY){if (arguments.length){this.ele.style.pixelTop=iY;} else{iY=this.ele.style.pixelTop;} return iY;}
function _nnTop(iY){if (arguments.length){this.ele.top=iY;} else{iY=this.ele.top;} return iY;}
function _nnOffsetLeft(){var ol=this.ele.pageX - this.parentElement.pageX; if (isNaN(ol)){ol=this.ele.pageX;} return ol;}
function _nnOffsetTop(){var ot=this.ele.pageY - this.parentElement.pageY; if (isNaN(ot)){ot=this.ele.pageY;} return ot;}
function _ieOffsetLeft(){var x=this.ele.offsetLeft, parent=this.ele.offsetParent; while(parent && !parent.cbe){x +=parent.offsetLeft; parent=parent.offsetParent;}return x;}
function _ieOffsetTop(){var y=this.ele.offsetTop, parent=this.ele.offsetParent; while(parent && !parent.cbe){y +=parent.offsetTop; parent=parent.offsetParent;}return y;}
function _nnPageX(){return this.ele.pageX;}
function _nnPageY(){return this.ele.pageY;}
function _cbePageX(){var x=this.offsetLeft(), parent=this.parentNode; if (parent){while(parent.index > 1){x +=parent.offsetLeft(); parent=parent.parentNode;}} return x;}
function _cbePageY(){var y=this.offsetTop(), parent=this.parentNode; if (parent){while(parent.index > 1){y +=parent.offsetTop(); parent=parent.parentNode;}} return y;}
function _cbeSizeTo(uW, uH){this.width(uW); this.height(uH);}
function _cbeSizeBy(iDW, iDH){this.width(this.width() + iDW); this.height(this.height() + iDH);}
function _cbeResizeTo(uW, uH, xEndListener){this.sizeTo(uW, uH); this.clip('auto'); cbeEval(xEndListener, this);}
function _cbeResizeBy(iDW, iDH, xEndListener){this.sizeBy(iDW, iDH); this.clip('auto'); cbeEval(xEndListener, this);}
function _domWidth(uW){if (arguments.length){uW=Math.round(uW); _domSetWidth(this.ele, uW);}return this.ele.offsetWidth;}
function _ieWidth(uW){if (arguments.length){uW=Math.round(uW); this.ele.style.pixelWidth=uW;}return this.ele.style.pixelWidth;}
function _nnWidth(uW){if (arguments.length){this.w=Math.round(uW); this.ele.clip.right=this.w;}return this.w;}
function _domHeight(uH){if (arguments.length){uH=Math.round(uH); _domSetHeight(this.ele, uH);}return this.ele.offsetHeight;}
function _ieHeight(uH){if (arguments.length){uH=Math.round(uH); this.ele.style.pixelHeight=uH;}return this.ele.style.pixelHeight;}
function _nnHeight(uH){if (arguments.length){this.h=Math.round(uH); this.ele.clip.bottom=this.h;}return this.h;}
function _domSetWidth(ele,uW){
if (uW < 0) return;
var pl=0,pr=0,bl=0,br=0;
if (_def(document.defaultView) && _def(document.defaultView.getComputedStyle)){// gecko and standard
pl=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("padding-left"));
pr=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("padding-right"));
bl=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("border-left-width"));
br=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("border-right-width"));
}
else if (_def(ele.currentStyle, document.compatMode)){
if (document.compatMode=="CSS1Compat"){// ie6up in css1compat mode
pl=parseInt(ele.currentStyle.paddingLeft);
pr=parseInt(ele.currentStyle.paddingRight);
bl=parseInt(ele.currentStyle.borderLeftWidth);
br=parseInt(ele.currentStyle.borderRightWidth);
}
}
if (isNaN(pl)) pl=0; if (isNaN(pr)) pr=0; if (isNaN(bl)) bl=0; if (isNaN(br)) br=0;
var cssW=uW-(pl+pr+bl+br);
if (isNaN(cssW) || cssW < 0) return;
ele.style.width=cssW + "px";
}
function _domSetHeight(ele,uH){
if (uH < 0) return;
var pt=0,pb=0,bt=0,bb=0;
if (_def(document.defaultView) && _def(document.defaultView.getComputedStyle)){
pt=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("padding-top"));
pb=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("padding-bottom"));
bt=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("border-top-width"));
bb=parseInt(document.defaultView.getComputedStyle(ele, "").getPropertyValue("border-bottom-width"));
}
else if (_def(ele.currentStyle, document.compatMode)){
if (document.compatMode=="CSS1Compat"){
pt=parseInt(ele.currentStyle.paddingTop);
pb=parseInt(ele.currentStyle.paddingBottom);
bt=parseInt(ele.currentStyle.borderTopWidth);
bb=parseInt(ele.currentStyle.borderBottomWidth);
}
}
if (isNaN(pt)) pt=0; if (isNaN(pb)) pb=0; if (isNaN(bt)) bt=0; if (isNaN(bb)) bb=0;
var cssH=uH-(pt+pb+bt+bb);
if (isNaN(cssH) || cssH < 0) return;
ele.style.height=cssH + "px";
}
function _cbeScrollLeft(){return this.ele.scrollLeft;}
function _cbeScrollTop(){return this.ele.scrollTop;}
function _cbeShow(){this.visibility(1);}
function _cbeHide(){this.visibility(0);}
function _domVisibility(vis){if (arguments.length){if (vis){this.ele.style.visibility='inherit';} else{this.ele.style.visibility='hidden';}}else return (this.ele.style.visibility=='visible' || this.ele.style.visibility=='inherit' || this.ele.style.visibility=='');}
function _nnVisibility(vis){if (arguments.length){if (vis){this.ele.visibility='inherit';} else{this.ele.visibility='hide';}}else return (this.ele.visibility=='show' || this.ele.visibility=='inherit' || this.ele.visibility=='');}
function _domZIndex(uZ){if (arguments.length){this.ele.style.zIndex=uZ;} else{uZ=parseInt(this.ele.style.zIndex); if (isNaN(uZ)) uZ=0;}return uZ;}
function _nnZIndex(uZ){if (arguments.length) this.ele.zIndex=uZ; return this.ele.zIndex;}
function _domBackground(sColor, sImage){if (arguments.length){if (!sColor){sColor='transparent';} this.ele.style.backgroundColor=sColor; if (arguments.length==2){this.ele.style.backgroundImage="url(" + sImage + ")";}}else return this.ele.style.backgroundColor;}
function _nnBackground(sColor, sImage){if (arguments.length){if (sColor=='transparent'){sColor=null;} this.ele.bgColor=sColor; if (arguments.length==2){this.ele.background.src=sImage || null;}}else{var bg=this.ele.bgColor; if (window.cbeUtilJsLoaded){bg=cbeHexString(bg,6,'#');} return bg;}}
function _domColor(newColor){if (arguments.length){this.ele.style.color=newColor;}else return this.ele.style.color;}
function _domClip(iTop, iRight, iBottom, iLeft){if (arguments.length==4){var clipRect="rect(" + iTop + "px " + iRight + "px " + iBottom + "px " + iLeft + "px" + ")"; this.ele.style.clip=clipRect;}else{this.clip(0, this.ele.offsetWidth, this.ele.offsetHeight, 0);}}
function _nnClip(iTop, iRight, iBottom, iLeft){if (arguments.length==4){this.ele.clip.top=iTop; this.ele.clip.right=iRight; this.ele.clip.bottom=iBottom; this.ele.clip.left=iLeft;}else{this.clip(0, this.width(), this.height(), 0);}}
function _ieInnerHtml(sHtml){if (arguments.length){this.ele.innerHTML=sHtml;}else return this.ele.innerHTML;}
function _nnInnerHtml(sHtml){if (arguments.length){if (sHtml==""){sHtml=" ";} this.ele.document.open(); this.ele.document.write(sHtml); this.ele.document.close();}else return "";}
CrossBrowserElement.prototype.cardinalPosition=function(cp, margin, outside){
if (typeof(cp) !='string'){window.status='cardinalPosition() error: cp=' + cp + ', id=' + this.id; return;}
var x=this.left(), y=this.top(), w=this.width(), h=this.height();
var pw=this.parentNode.width(), ph=this.parentNode.height();
var sx=this.parentNode.scrollLeft(), sy=this.parentNode.scrollTop();
var right=sx + pw, bottom=sy + ph;
var cenLeft=sx + Math.floor((pw-w)/2), cenTop=sy + Math.floor((ph-h)/2);
if (!margin) margin=0;
else{
if (outside) margin=-margin;
sx +=margin; sy +=margin; right -=margin; bottom -=margin;
}
switch (cp.toLowerCase()){
case 'n': x=cenLeft; if (outside) y=sy - h; else y=sy; break;
case 'ne': if (outside){x=right; y=sy - h;}else{x=right - w; y=sy;}break;
case 'e': y=cenTop; if (outside) x=right; else x=right - w; break;
case 'se': if (outside){x=right; y=bottom;}else{x=right - w; y=bottom - h}break;
case 's': x=cenLeft; if (outside) y=sy - h; else y=bottom - h; break;
case 'sw': if (outside){x=sx - w; y=bottom;}else{x=sx; y=bottom - h;}break;
case 'w': y=cenTop; if (outside) x=sx - w; else x=sx; break;
case 'nw': if (outside){x=sx - w; y=sy - h;}else{x=sx; y=sy;}break;
case 'cen': case 'center': x=cenLeft; y=cenTop; break;
case 'cenh': x=cenLeft; break;
case 'cenv': y=cenTop; break;
}
this.x=x; this.y=y;
}
function cbeInnerWidth(){
var w=0;
if (is.opera5or6){w=window.innerWidth;}
else if (is.ie && document.documentElement && document.documentElement.clientWidth) w=document.documentElement.clientWidth; // ie6 compat mode
else if (document.body && document.body.clientWidth) w=document.body.clientWidth; // ie4up and gecko
else if (_def(window.innerWidth,window.innerHeight,document.height)){// nn4
w=window.innerWidth;
if (document.height > window.innerHeight) w -=16;
}
return w;
}
function cbeInnerHeight(){
var h=0;
if (is.opera5or6){h=window.innerHeight;}
else if (is.ie && document.documentElement && document.documentElement.clientHeight) h=document.documentElement.clientHeight;
else if (document.body && document.body.clientHeight) h=document.body.clientHeight;
else if (_def(window.innerWidth,window.innerHeight,document.width)){
h=window.innerHeight;
if (document.width > window.innerWidth) h -=16;
}
return h;
}
function cbePageXOffset(){
var offset=0;
if (_def(window.pageXOffset)) offset=window.pageXOffset; // gecko, nn4, opera
else if (document.documentElement && document.documentElement.scrollLeft) offset=document.documentElement.scrollLeft; // ie6 compat mode
else if (document.body && _def(document.body.scrollLeft)) offset=document.body.scrollLeft; // ie4up
return offset;
}
function cbePageYOffset(){
var offset=0;
if (_def(window.pageYOffset)) offset=window.pageYOffset;
else if (document.documentElement && document.documentElement.scrollTop) offset=document.documentElement.scrollTop;
else if (document.body && _def(document.body.scrollTop)) offset=document.body.scrollTop;
return offset;
}
function cbeEval(exp, arg1, arg2, arg3, arg4, arg5, arg6){
if (typeof(exp)=="function") exp(arg1, arg2, arg3, arg4, arg5, arg6);
else if (typeof(exp)=="object" && typeof(arg1)=="function") {
exp._cbeEval_ = arg1;
exp._cbeEval_(arg2, arg3, arg4, arg5, arg6);
}
else if (typeof(exp)=="string") eval(exp);
}
function ClientSnifferJr(){
this.ua=navigator.userAgent.toLowerCase();
this.major=parseInt(navigator.appVersion);
this.minor=parseFloat(navigator.appVersion);
if (document.addEventListener && document.removeEventListener) this.dom2events=true;
if (document.getElementById) this.dom1getbyid=true;
if (window.opera){
this.opera=true;
this.opera5=(this.ua.indexOf("opera 5") !=-1 || this.ua.indexOf("opera/5") !=-1);
this.opera6=(this.ua.indexOf("opera 6") !=-1 || this.ua.indexOf("opera/6") !=-1);
this.opera5or6=this.opera5 || this.opera6;
this.opera7=(this.ua.indexOf("opera 7") !=-1 || this.ua.indexOf("opera/7") !=-1);
return;
}
this.konq=this.ua.indexOf('konqueror') !=-1;
this.ie=this.ua.indexOf('msie') !=-1;
if (this.ie){
this.ie3=this.major < 4;
this.ie4=(this.major==4 && this.ua.indexOf('msie 5')==-1 && this.ua.indexOf('msie 6')==-1);
this.ie4up=this.major >=4;
this.ie5=(this.major==4 && this.ua.indexOf('msie 5.0') !=-1);
this.ie5up=!this.ie3 && !this.ie4;
this.ie6=(this.major==4 && this.ua.indexOf('msie 6.0') !=-1);
this.ie6up=(!this.ie3 && !this.ie4 && !this.ie5 && this.ua.indexOf("msie 5.5")==-1);
return;
}
this.hotjava=this.ua.indexOf('hotjava') !=-1;
this.webtv=this.ua.indexOf('webtv') !=-1;
this.aol=this.ua.indexOf('aol') !=-1;
if (this.hotjava || this.webtv || this.aol) return;
// Gecko, NN4, and NS6
this.gecko=this.ua.indexOf('gecko') !=-1;
this.nav=(this.ua.indexOf('mozilla') !=-1 && this.ua.indexOf('spoofer')==-1 && this.ua.indexOf('compatible')==-1);
if (this.nav){
this.nav4=this.major==4;
this.nav4up=this.major >=4;
this.nav5up=this.major >=5;
this.nav6=this.major==5;
this.nav6up=this.nav5up;
}
}
window.is=new ClientSnifferJr();
// End cbe_core.js
--- NEW FILE: cbe_debug.js ---
/* cbe_debug.js $Revision: 0.11 $
* CBE v4.19, Cross-Browser DHTML API from Cross-Browser.com
* Copyright (c) 2002 Michael Foster (mi...@cr...)
* Distributed under the terms of the GNU LGPL from gnu.org
*/
var cbeIDE=new Object(), cbeDebugObj=new Object(), cbeRefWin=null, cbeRefWinName='cbeRefWin', cbeDebugWin=null, cbeDebugWinName='cbeDebugWindow', cbeDebugSelected=null, cbeMMSL = false;
function cbeMouseMoveStatus() {
if (cbeMMSL) { document.cbe.removeEventListener('mouseMove', cbeMMStatusListener, false); cbeMMSL = false; }
else {
if (window.opera) window.defaultStatus="";
document.cbe.addEventListener('mouseMove', cbeMMStatusListener, false);
cbeMMSL = true;
}
}
function cbeMMStatusListener(e) {
if (e.cbeTarget) window.status = 'MOUSE:' + ' X: ' + e.pageX + ' Y: ' + e.pageY + ' OBJECT:' + ' ID: ' + e.cbeTarget.id + ' P: ' + e.cbeTarget.parentNode.id + ' L: ' + e.cbeTarget.left() + ' T: ' + e.cbeTarget.top() + ' X: ' + e.cbeTarget.pageX() + ' Y: ' + e.cbeTarget.pageY() + ' Z: ' + e.cbeTarget.zIndex() + ' W: ' + e.cbeTarget.width() + ' H: ' + e.cbeTarget.height() + ' B: ' + e.cbeTarget.background();
}
function cbeMUListener(e) { cbeDebugSetSelected(e.cbeTarget.id); }
function cbeDebugSetSelected(id) {
if (cbeDebugWin) if (cbeDebugWin.closed) cbeDebugWindow();
if (id == window.cbeWindowId) cbeDebugSelected = window.cbe;
else if (id == window.cbeDocumentId) cbeDebugSelected = document.cbe;
else cbeDebugSelected = cbeGetElementById(id).cbe;
if (!cbeDebugSelected) cbeDebugSelected = window.cbe;
}
function cbeDebugWindow(sBaseUrl) {
if (cbeDebugWin) {
cbeDebugWin.close(); cbeDebugWin = null; document.cbe.removeEventListener('mouseUp', cbeMUListener, false);
return;
}
cbeIDEInit();
if (!sBaseUrl) { sBaseUrl = window.cbeBasePath ? cbeBasePath : ""; }
cbeDebugSetSelected(window.cbeWindowId);
var features = "width="+cbeIDE.dw+",height="+cbeIDE.dh+",scrollbars=1,resizable=1";
if (document.layers) features += ",screenx="+cbeIDE.dx+",screeny="+cbeIDE.dy;
else features += ",left="+cbeIDE.dx+",top="+cbeIDE.dy;
window.cbeDebugWin = window.open(sBaseUrl + "cbe_debug.html", cbeDebugWinName, features);
cbeDebugWin.resizeTo(cbeIDE.dw, cbeIDE.dh);
cbeDebugWin.moveTo(cbeIDE.dx,cbeIDE.dy);
document.cbe.addEventListener('mouseUp', cbeMUListener, false);
cbeDebugObj.cmdLine = "";
cbeDebugUpdate();
}
function cbeRefWindow(sBaseUrl) {
if (window.cbeRefWin) { cbeRefWin.close(); cbeRefWin = null; return; }
cbeIDEInit();
if (!sBaseUrl) { sBaseUrl = window.cbeBasePath ? cbeBasePath : ""; }
var features = "width="+cbeIDE.rw+",height="+cbeIDE.rh+",scrollbars=1,resizable=1";
if (document.layers) features += ",screenx="+cbeIDE.rx+",screeny="+cbeIDE.ry;
else features += ",left="+cbeIDE.rx+",top="+cbeIDE.ry;
window.cbeRefWin = window.open(sBaseUrl + "cbe_reference.html", cbeRefWinName, features);
cbeRefWin.resizeTo(cbeIDE.rw, cbeIDE.rh);
cbeRefWin.moveTo(cbeIDE.rx, cbeIDE.ry);
}
function cbeTileWindows() { cbeIDEInit(); cbeDebugWindow(); if (!cbeDebugWin) {cbeDebugWindow();} window.resizeTo(cbeIDE.aw, cbeIDE.ah); window.moveTo(cbeIDE.ax, cbeIDE.ay); }
function cbeIDEInit() {
cbeIDE.dx = 0; cbeIDE.dy = 0; cbeIDE.dw = 200; cbeIDE.dh = screen.availHeight - 10; // Debug Window
cbeIDE.rh = Math.round(screen.availHeight / 2); cbeIDE.rw = screen.availWidth - cbeIDE.dw; cbeIDE.rx = 0; cbeIDE.ry = cbeIDE.rh - 10; // Reference Window
cbeIDE.ax = cbeIDE.dw; cbeIDE.ay = 0; cbeIDE.aw = screen.availWidth - cbeIDE.dw - 10; cbeIDE.ah = screen.availHeight - 10; // Application Window
}
function cbeDebugUpdate() {
if (cbeDebugWin) { if (!cbeDebugWin.closed) setTimeout("cbeDebugUpdate()", 750); }
if (cbeDebugObj.cmdLine.length) { var tmp = cbeDebugObj.cmdLine; cbeDebugObj.cmdLine = ""; eval(tmp); }
cbeDebugObj.id = cbeDebugSelected.id;
cbeDebugObj.left = cbeDebugSelected.left();
cbeDebugObj.top = cbeDebugSelected.top();
cbeDebugObj.zIndex = cbeDebugSelected.zIndex();
cbeDebugObj.pageX = cbeDebugSelected.pageX();
cbeDebugObj.pageY = cbeDebugSelected.pageY();
cbeDebugObj.offsetLeft = cbeDebugSelected.offsetLeft();
cbeDebugObj.offsetTop = cbeDebugSelected.offsetTop();
cbeDebugObj.scrollLeft = cbeDebugSelected.scrollLeft();
cbeDebugObj.scrollTop = cbeDebugSelected.scrollTop();
cbeDebugObj.width = cbeDebugSelected.width();
cbeDebugObj.height = cbeDebugSelected.height();
cbeDebugObj.visibility = cbeDebugSelected.visibility();
cbeDebugObj.color = cbeDebugSelected.color();
cbeDebugObj.background = cbeDebugSelected.background();
cbeDebugObj.childNodes = cbeDebugSelected.childNodes;
cbeDebugObj.firstChild = cbeDebugSelected.firstChild ? cbeDebugSelected.firstChild.id : null;
cbeDebugObj.lastChild = cbeDebugSelected.lastChild ? cbeDebugSelected.lastChild.id : null;
cbeDebugObj.parentNode = cbeDebugSelected.parentNode ? cbeDebugSelected.parentNode.id : null;
cbeDebugObj.previousSibling = cbeDebugSelected.previousSibling ? cbeDebugSelected.previousSibling.id : null;
cbeDebugObj.nextSibling = cbeDebugSelected.nextSibling ? cbeDebugSelected.nextSibling.id : null;
}
function cbeDebugMsg(sMsg) { if (cbeDebugWin) { if (!cbeDebugWin.closed) { cbeDebugWin.setMsg(sMsg); } } }
function cbeShowProps(obj, obj_name, showValues) {
var i = null, win = null, result = "", objType = "", objValue = " ";
if (!obj) { alert("obj is null"); return; }
if (!obj_name) { if (obj.nodeName) obj_name = obj.nodeName; else obj_name = "this"; }
result = "<head><title>Property Viewer</title>\n" +"</head>\n" +"<body bgcolor='#bbbbbb'>\n" +"<form>\n" +"<input type='button' value='Close' onclick='window.close()'>\n" +"</form>\n" +"<h3>" + obj_name + " Properties:</h3>\n" +"<table border='1' bgcolor='#eeeeee'><tr><th>Property</th><th>Type</th><th>Value</th></tr>\n";
for (i in obj) {
objType = typeof(obj[i]);
if (showValues) {
if (objType.indexOf('string') != -1 && obj[i] == "") objValue = " ";
else if (objType.indexOf('object') != -1) objValue = "...";
else if (objType.indexOf('function') != -1) objValue = "...";
else if (i.indexOf('HTML') != -1) objValue = "...";
else if (i.indexOf('erText') != -1) objValue = "...";
else if (i.indexOf('domain') != -1) objValue = "...";
else {objValue = obj[i];}
}
result += "<tr><td>" + obj_name + "." + i + "</td><td>" + objType + "</td><td>" + objValue + "</td></tr>\n";
}
result += "</table><br>" +"<form>\n" +"<input type='button' value='Close' onclick='window.close()'>\n" +"</form>\n" +"</body></html>";
var features = "width=600,height=440,scrollbars=1,resizable=1";
if (document.layers) features += ",screenX=0,screenY=0";
else features += ",left=0,top=0";
win = window.open("", "PropertyViewerWindow", features); win.document.write(result); win.document.close();
return false;
}
function cbeShowParentChain(child) {
var s = "", parent = child;
while (parent) {
s += "id: "
+ (parent.id || "null")
+ " tag: " + (parent.tagName || parent.nodeName || "null")
+ "\n";
parent = cbeGetParentElement(parent);
}
alert(s);
}
var cbeDebugJsLoaded = true;
// End cbe_debug.js
--- NEW FILE: cbe_slide2.js ---
/* cbe_slide2.js $Revision: 0.11 $
* CBE v4.19, Cross-Browser DHTML API from Cross-Browser.com
* Copyright (c) 2002 Michael Foster (mi...@cr...)
* Distributed under the terms of the GNU LGPL from gnu.org
*/
CrossBrowserElement.prototype.slideCornerBy = function(corner, dX, dY, totalTime, endListener) {
var targetX, targetY;
dX = parseInt(dX);
dY = parseInt(dY);
switch(corner.toLowerCase()) {
case 'nw': targetX = this.left() + dX; targetY = this.top() + dY; break;
case 'sw': targetX = this.left() + dX; targetY = this.top() + this.height() + dY; break;
case 'ne': targetX = this.left() + this.width() + dX; targetY = this.top() + dY; break;
case 'se': targetX = this.left() + this.width() + dX; targetY = this.top() + this.height() + dY; break;
default: alert("CBE: Invalid corner"); return;
}
this.slideCornerTo(corner, targetX, targetY, totalTime, endListener)
}
CrossBrowserElement.prototype.slideCornerTo = function(corner, targetX, targetY, totalTime, endListener) {
if (this.onslidestart) cbeEval(this.onslidestart, this);
this.xTarget = parseInt(targetX);
this.yTarget = parseInt(targetY);
this.slideTime = parseInt(totalTime);
this.corner = corner.toLowerCase();
if (endListener) {
this.autoRemoveListener = true;
this.addEventListener('slideend', endListener);
}
this.stop = false;
switch(this.corner) {
case 'nw': this.xA = this.xTarget - this.left(); this.yA = this.yTarget - this.top(); this.xD = this.left(); this.yD = this.top(); break;
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;
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;
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;
default: alert("CBE: Invalid corner"); return;
}
this.B = Math.PI / ( 2 * this.slideTime );
var d = new Date( )
this.C = d.getTime();
if (!this.moving) this.slideCorner();
}
CrossBrowserElement.prototype.slideCorner = function() {
var now, seX, seY;
now = new Date();
t = now.getTime() - this.C;
if (this.stop) { this.moving = false; this.stop = false; return; }
else if (t < this.slideTime) {
setTimeout("window.cbeAll["+this.index+"].slideCorner()", this.timeout);
s = Math.sin( this.B * t );
newX = Math.round(this.xA * s + this.xD);
newY = Math.round(this.yA * s + this.yD);
if (this.onslide) cbeEval(this.onslide, this, newX, newY, t);
}
else { newX = this.xTarget; newY = this.yTarget; }
seX = this.left() + this.width();
seY = this.top() + this.height();
switch(this.corner) {
case 'nw': this.moveTo(newX, newY); this.sizeTo(seX - this.left(), seY - this.top()); break;
case 'sw': if (this.xTarget != this.left()) { this.left(newX); this.width(seX - this.left()); } this.height(newY - this.top()); break;
case 'ne': this.width(newX - this.left()); if (this.yTarget != this.top()) { this.top(newY); this.height(seY - this.top()); } break;
case 'se': this.width(newX - this.left()); this.height(newY - this.top()); break;
default: this.stop = true;
}
this.clip('auto');
this.moving = true;
if (t >= this.slideTime) {
this.moving = false;
if (this.onslideend) {
var tmp = this.onslideend;
if (this.autoRemoveListener) {
this.autoRemoveListener = false;
this.removeEventListener('slideend');
}
cbeEval(tmp, this);
}
}
}
CrossBrowserElement.prototype.parametricEquation = function(exprX, exprY, totalTime, endListener) {
if (this.onslidestart) cbeEval(this.onslidestart, this);
this.t = 0;
this.stop = false;
this.exprX = exprX;
this.exprY = exprY;
if (endListener && window.cbeEventJsLoaded) {
this.autoRemoveListener = true;
this.addEventListener('slideend', endListener);
}
this.slideTime = parseInt(totalTime);
var d = new Date( )
this.C = d.getTime();
if (!this.moving) this.parametricEquation1();
}
CrossBrowserElement.prototype.parametricEquation1 = function() {
var now = new Date();
var et = now.getTime() - this.C;
this.t += this.tStep;
t = this.t;
if (this.stop) { this.moving = false; }
else if (!this.slideTime || et < this.slideTime) {
setTimeout("window.cbeAll["+this.index+"].parametricEquation1()", this.timeout);
var centerX = (this.parentNode.width()/2)-(this.width()/2);
var centerY = (this.parentNode.height()/2)-(this.height()/2);
this.xTarget = Math.round((eval(this.exprX) * centerX) + centerX) + this.parentNode.scrollLeft();
this.yTarget = Math.round((eval(this.exprY) * centerY) + centerY) + this.parentNode.scrollTop();
if (this.onslide) cbeEval(this.onslide, this, this.xTarget, this.yTarget, et);
this.moveTo(this.xTarget, this.yTarget);
this.moving = true;
}
else {
this.moving = false;
if (this.onslideend) {
var tmp = this.onslideend;
if (this.autoRemoveListener && window.cbeEventJsLoaded) {
this.autoRemoveListener = false;
this.removeEventListener('slideend');
}
cbeEval(tmp, this);
}
}
}
var cbeSlideRateLinear=0, cbeSlideRateSine=1, cbeSlideRateCosine=2;
CrossBrowserElement.prototype.slideRate = cbeSlideRateSine;
CrossBrowserElement.prototype.tStep = .008;
CrossBrowserElement.prototype.exprX = "";
CrossBrowserElement.prototype.exprY = "";
CrossBrowserElement.prototype.corner = "";
CrossBrowserElement.prototype.xTarget = 0;
CrossBrowserElement.prototype.yTarget = 0;
CrossBrowserElement.prototype.slideTime = 1000;
CrossBrowserElement.prototype.xA = 0;
CrossBrowserElement.prototype.yA = 0;
CrossBrowserElement.prototype.xD = 0;
CrossBrowserElement.prototype.yD = 0;
CrossBrowserElement.prototype.B = 0;
CrossBrowserElement.prototype.C = 0;
CrossBrowserElement.prototype.moving = false;
CrossBrowserElement.prototype.stop = true;
CrossBrowserElement.prototype.timeout = 35;
CrossBrowserElement.prototype.autoRemoveListener = false;
CrossBrowserElement.prototype.onslidestart = null;
CrossBrowserElement.prototype.onslide = null;
CrossBrowserElement.prototype.onslideend = null;
var cbeSlide2JsLoaded = true;
// End cbe_slide2.js
--- NEW FILE: cbe_event.js ---
/* cbe_event.js $Revision: 0.15 $
* CBE v4.19, Cross-Browser DHTML API from Cross-Browser.com
* Copyright (c) 2002 Michael Foster (mi...@cr...)
* Distributed under the terms of the GNU LGPL from gnu.org
*/
function cbeELReg(eventType, eventListener, eventCapture, listenerObject) { // event listener registration object constructor
this.type = eventType; this.listener = eventListener; this.capture = eventCapture; this.obj = listenerObject;
}
function CrossBrowserEvent(e) { // Object constructor
// from DOM2 Interface Event
this.type = "";
this.target = null;
this.currentTarget = null;
this.eventPhase = 0;
this.bubbles = true;
this.cancelable = true;
this.timeStamp = 0;
this.AT_TARGET = 1; this.BUBBLING_PHASE = 2; this.CAPTURING_PHASE = 3; // eventPhase masks
// from DOM2 Interface MouseEvent : UIEvent
this.screenX = 0;
this.screenY = 0;
this.clientX = 0;
this.clientY = 0;
this.ctrlKey = false;
this.shiftKey = false;
this.altKey = false;
this.metaKey = false;
this.button = 3; // 3 == undefined
this.relatedTarget = null;
this.LEFT = 0; this.MIDDLE = 1; this.RIGHT = 2; // button masks
// from IE4 Object Model
this.keyCode = 0;
this.offsetX = 0;
this.offsetY = 0;
// from NN4 Object Model
this.pageX = 0;
this.pageY = 0;
// CBE
this.stopPropagationFlag = false;
this.preventDefaultFlag = false;
this.cbeTarget = window.cbe;
this.cbeCurrentTarget = window.cbe;
if (!e) return;
if (e.type) { this.type = e.type; }
if (e.target) { this.target = e.target; }
else if (e.srcElement) { this.target = e.srcElement; }
if (e.currentTarget) { this.currentTarget = e.currentTarget; }
else if (e.toElement) { this.currentTarget = e.toElement; }
if (e.eventPhase) { this.eventPhase = e.eventPhase; }
if (e.bubbles) { this.bubbles = e.bubbles; }
if (e.cancelable) { this.cancelable = e.cancelable; }
if (e.timeStamp) { this.timeStamp = e.timeStamp; }
if (e.screenX) { this.screenX = e.screenX; }
if (e.screenY) { this.screenY = e.screenY; }
if (is.opera5or6) { this.clientX = e.clientX - document.cbe.scrollLeft(); }
else if (e.clientX) { this.clientX = e.clientX; }
else if (e.pageX) { this.clientX = e.pageX - document.cbe.scrollLeft(); }
if (is.opera5or6) { this.clientY = e.clientY - document.cbe.scrollLeft(); }
else if (e.clientY) { this.clientY = e.clientY; }
else if (e.pageY) { this.clientY = e.pageY - document.cbe.scrollLeft(); }
if (is.opera5or6) { this.ctrlKey = e.type=='mousemove' ? e.shiftKey : e.ctrlKey; }
else if (_def(e.ctrlKey)) { this.ctrlKey = e.ctrlKey; }
else if (_def(e.modifiers) && window.Event) { this.ctrlKey = (e.modifiers & window.Event.CONTROL_MASK) != 0; }
if (is.opera5or6) { this.shiftKey = e.type=='mousemove' ? e.ctrlKey : e.shiftKey; }
else if (_def(e.shiftKey)) { this.shiftKey = e.shiftKey; }
else if (_def(e.modifiers) && window.Event) { this.shiftKey = (e.modifiers & Event.SHIFT_MASK) != 0; }
if (e.altKey) { this.altKey = e.altKey; }
else if (_def(e.modifiers) && window.Event) { this.altKey = (e.modifiers & Event.ALT_MASK) != 0; }
if (e.metaKey) { this.metaKey = e.metaKey; }
// button (?)
if (is.ie) {
if (this.type.indexOf('mouse') != -1) {
if (e.button == 1) this.button = this.LEFT;
else if (e.button == 4) this.button = this.MIDDLE;
else if (e.button == 2) this.button = this.RIGHT;
}
else if (this.type == 'click') this.button = this.LEFT;
else this.button = 4; // non-mouse event
}
else if (_def(e.button)) { // standard
if (this.type.indexOf('mouse') != -1) { this.button = e.button; if (this.button < 0 || this.button > 2) {this.button = 3;} }
else if (this.type == 'click') this.button = this.LEFT;
else this.button = 4; // non-mouse event
}
else if (_def(e.which)) {
if (document.layers) { // nn4
if (this.type.indexOf('mouse') != -1) { this.button = e.which - 1; if (this.button < 0 || this.button > 2) {this.button = 3;} }
else if (this.type == 'click') this.button = this.LEFT;
else this.button = 4; // non-mouse event
}
else { // opera5or6
if ((e.type == 'click' && e.which == 0) || ((e.type == 'mousedown' || e.type == 'mouseup') && e.which == 1)) {this.button = this.LEFT;}
}
}
if (e.relatedTarget) { this.relatedTarget = e.relatedTarget; }
else if (e.fromElement) { this.relatedTarget = e.fromElement; } // ? may need to be toElement in some cases ?
if (_def(e.which)) { this.keyCode = e.which; }
else if (_def(e.keyCode)) { this.keyCode = e.keyCode; }
var calcOfs = false;
if (_def(e.layerX,e.layerY)) { this.offsetX = e.layerX; this.offsetY = e.layerY; }
else calcOfs = true; // calculate it below
if (is.opera5or6) { this.pageX = e.clientX; this.pageY = e.clientY; }
else if (_def(e.pageX,e.pageY)) { this.pageX = e.pageX; this.pageY = e.pageY; }
else {
this.pageX = this.clientX + document.cbe.scrollLeft();
this.pageY = this.clientY + document.cbe.scrollTop();
}
// Find the CBE event target
if (document.layers) {
this.cbeTarget = cbeGetNodeFromPoint(this.pageX, this.pageY);
// NN4 note: mouseout works only if mouseover and mouseout are both added to the same object
if (this.type == 'mouseover') cbeMOT = this.cbeTarget;
else if (this.type == 'mouseout') this.cbeTarget = cbeMOT || document.cbe;
}
else { var target = this.target; while (!target.cbe) {target = cbeGetParentElement(target);} this.cbeTarget = target.cbe; }
this.cbeCurrentTarget = this.cbeTarget;
if (calcOfs) { this.offsetX = this.pageX - this.cbeTarget.pageX(); this.offsetY = this.pageY - this.cbeTarget.pageY(); }
}
CrossBrowserElement.prototype.addEventListener = function(eventType, eventListener, useCapture, listenerObject) {
if (!useCapture) useCapture = false;
eventType = eventType.toLowerCase();
if (
(eventType.indexOf('mouse') != -1)
|| eventType == 'click'
|| (eventType.indexOf('key') != -1)
/* || (eventType.indexOf('resize') != -1 && !is.nav4 && !is.opera)
|| (eventType.indexOf('scroll') != -1 && !is.nav && !is.opera) */
) {
var add=true;
for (var i=0; i < this.listeners.length; ++i) { if (eventType == this.listeners[i].type) {add=false; break;} }
if (add) {
cbeNativeAddEventListener(this.ele, eventType, cbePropagateEvent, false);
}
this.listeners[this.listeners.length] = new cbeELReg(eventType, eventListener, useCapture, listenerObject);
return;
}
switch(eventType) {
case 'slidestart': this.onslidestart = eventListener; return;
case 'slide': this.onslide = eventListener; return;
case 'slideend': this.onslideend = eventListener; return;
case 'dragstart': this.ondragstart = eventListener; return;
case 'drag':
this.ondragCapture = useCapture;
this.ondrag = eventListener;
this.addEventListener('mousedown', cbeDragStartEvent, useCapture);
return;
case 'dragend': this.ondragend = eventListener; return;
case 'dragresize': if (window.cbeUtilJsLoaded) cbeAddDragResizeListener(this); return;
case 'scroll':
if (is.nav || is.opera) {
window.cbeOldScrollTop = cbePageYOffset();
window.cbeOnScrollListener = eventListener;
cbeScrollEvent();
return;
}
break;
case 'resize':
if (is.nav4 || is.opera) {
window.cbeOldWidth = cbeInnerWidth();
window.cbeOldHeight = cbeInnerHeight();
window.cbeOnResizeListener = eventListener;
cbeResizeEvent();
return;
}
break;
} // end switch
cbeNativeAddEventListener(this.ele, eventType, eventListener, useCapture);
}
function cbeNativeAddEventListener(ele, eventType, eventListener, useCapture) {
if (!useCapture) useCapture = false;
eventType = eventType.toLowerCase();
var eh = "ele.on" + eventType + "=eventListener";
if (ele.addEventListener) {
ele.addEventListener(eventType, eventListener, useCapture);
}
else if (ele.captureEvents) {
// if (useCapture || (eventType.indexOf('mousemove')!=-1)) // ???
ele.captureEvents(eval("Event." + eventType.toUpperCase()));
eval(eh);
}
else { eval(eh); }
}
function cbeNativeRemoveEventListener(ele, eventType, eventListener, useCapture) {
if (!useCapture) useCapture = false;
eventType = eventType.toLowerCase();
var eh = "ele.on" + eventType + "=null";
if (ele.removeEventListener) {
ele.removeEventListener(eventType, eventListener, useCapture);
}
else if (ele.releaseEvents) {
// if (useCapture || (eventType.indexOf('mousemove')!=-1)) // ???
ele.releaseEvents(eval("Event." + eventType.toUpperCase()));
eval(eh);
}
else { eval(eh); }
}
CrossBrowserElement.prototype.removeEventListener = function(eventType, eventListener, useCapture) {
eventType = eventType.toLowerCase();
if (!useCapture) useCapture = false;
if ((eventType.indexOf('mouse') != -1) || eventType == 'click' || (eventType.indexOf('key') != -1)) {
var i;
for (i = 0; i < this.listeners.length; ++i) {
if (this.listeners[i].type == eventType && this.listeners[i].listener == eventListener && this.listeners[i].capture == useCapture) {
if (this.listeners.splice) this.listeners.splice(i, 1);
else this.listeners[i].type = "*";
break;
}
}
var remove=true;
for (i = 0; i < this.listeners.length; ++i) { if (eventType == this.listeners[i].type) { remove = false; break; } }
if (remove) cbeNativeRemoveEventListener(this.ele, eventType, cbePropagateEvent, false);
return;
}
switch(eventType) {
case 'slidestart': this.onslidestart = null; return;
case 'slide': this.onslide = null; return;
case 'slideend': this.onslideend = null; return;
case 'dragstart': this.ondragstart = null; return;
case 'drag':
this.removeEventListener('mousedown', cbeDragStartEvent, this.ondragCapture);
this.ondrag = null;
return;
case 'dragend': this.ondragend = null; return;
case 'dragresize': if (window.cbeUtilJsLoaded) cbeRemoveDragResizeListener(this); return;
case 'scroll':
if (is.nav || is.opera) {
window.cbeOnScrollListener = null;
return;
}
break;
case 'resize':
if (is.nav4 || is.opera) {
window.cbeOnResizeListener = null;
return;
}
break;
} // end switch
cbeNativeRemoveEventListener(this.ele, eventType, eventListener, useCapture);
}
CrossBrowserEvent.prototype.stopPropagation = function() { this.stopPropagationFlag = true; }
CrossBrowserEvent.prototype.preventDefault = function() { this.preventDefaultFlag = true; }
CrossBrowserElement.prototype.dispatchEvent= function(e) {
var dispatch;
e.cbeCurrentTarget = this;
for (var i=0; i < this.listeners.length; ++i) {
dispatch = false;
if (e.type == this.listeners[i].type) {
if (e.eventPhase == e.CAPTURING_PHASE) {
if (this.listeners[i].capture) dispatch = true;
}
else if (!this.listeners[i].capture) dispatch = true;
}
if (dispatch) {
if (this.listeners[i].obj) cbeEval(this.listeners[i].obj, this.listeners[i].listener, e);
else cbeEval(this.listeners[i].listener, e);
}
}
}
function cbePropagateEvent(evt) {
var i=0, e=null, a=new Array();
if (evt) e = new CrossBrowserEvent(evt);
else if (window.event) e = new CrossBrowserEvent(window.event);
else return;
// Create an array of EventTargets, following the parent chain up (does not include cbeTarget)
var node = e.cbeTarget.parentNode;
while(node) {
a[i++] = node;
node = node.parentNode;
}
// The capturing phase
e.eventPhase = e.CAPTURING_PHASE;
for (i = a.length-1; i>=0; --i) {
a[i].dispatchEvent(e);
if (e.stopPropagationFlag) break;
}
// The at-target phase
if (!e.stopPropagationFlag) {
e.eventPhase = e.AT_TARGET;
e.cbeTarget.dispatchEvent(e);
// The bubbling phase
if (!e.stopPropagationFlag && e.bubbles) {
e.eventPhase = e.BUBBLING_PHASE;
for (i = 0; i < a.length; ++i) {
a[i].dispatchEvent(e);
if (e.stopPropagationFlag) break;
}
}
}
// Don't allow native bubbling
if (is.ie) window.event.cancelBubble = true;
else if (is.gecko) evt.stopPropagation();
// Allow listener to cancel default action
if (e.cancelable && e.preventDefaultFlag) {
if (is.gecko || is.opera) evt.preventDefault();
return false;
}
else return true;
}
function cbeGetNodeFromPoint(x, y) {
var hn /* highNode */, hz=0 /* highZ */, cn /* currentNode */, cz /* currentZ */;
hn = document.cbe;
while (hn.firstChild && hz >= 0) {
hz = -1;
cn = hn.firstChild;
while (cn) {
if (cn.contains(x, y)) {
cz = cn.zIndex();
if (cz >= hz) {
hn = cn;
hz = cz;
}
}
cn = cn.nextSibling;
}
}
return hn;
}
function cbeScrollEvent() {
if (!window.cbeOnScrollListener) { return; }
if (cbePageYOffset() != window.cbeOldScrollTop) {
cbeEval(window.cbeOnScrollListener);
window.cbeOldScrollTop = cbePageYOffset();
}
setTimeout("cbeScrollEvent()", 250);
}
function cbeResizeEvent() {
if (!window.cbeOnResizeListener) { return; }
var dw = window.cbeOldWidth - cbeInnerWidth();
var dh = window.cbeOldHeight - cbeInnerHeight();
if (dw != 0 || dh != 0) {
if (window.cbeOnResizeListener) cbeEval(window.cbeOnResizeListener, dw, dh);
window.cbeOldWidth = cbeInnerWidth();
window.cbeOldHeight = cbeInnerHeight();
}
setTimeout("cbeResizeEvent()", 250);
}
function cbeDefaultResizeListener() {
if (is.opera) location.replace(location.href);
else history.go(0);
}
var cbeDragObj, cbeDragTarget, cbeDragPhase;
function cbeDragStartEvent(e) {
if (is.opera) { var tn = e.target.tagName.toLowerCase(); if (tn == 'a') return; }
else if (is.nav4) { if (e.target.href) return; }
cbeDragObj = e.cbeCurrentTarget;
cbeDragTarget = e.cbeTarget;
if (cbeDragTarget.id == cbeDragObj.id) cbeDragPhase = e.AT_TARGET;
else if (cbeDragObj.ondragCapture) cbeDragPhase = e.CAPTURING_PHASE;
else cbeDragPhase = e.BUBBLING_PHASE;
if (cbeDragObj) {
if (cbeDragObj.ondragstart) { e.type = 'dragstart'; cbeEval(cbeDragObj.ondragstart, e); e.type = 'mousedown'; }
cbeDragObj.x = e.pageX;
cbeDragObj.y = e.pageY;
document.cbe.addEventListener('mousemove', cbeDragEvent, cbeDragObj.ondragCapture);
document.cbe.addEventListener('mouseup', cbeDragEndEvent, false);
}
e.stopPropagation();
e.preventDefault();
}
function cbeDragEndEvent(e) {
document.cbe.removeEventListener('mousemove', cbeDragEvent, cbeDragObj.ondragCapture);
document.cbe.removeEventListener('mouseup', cbeDragEndEvent, false);
if (cbeDragObj.ondragend) {
e.type = 'dragend';
e.cbeCurrentTarget = cbeDragObj;
e.cbeTarget = cbeDragTarget;
cbeEval(cbeDragObj.ondragend, e);
e.type = 'mouseup';
}
//e.stopPropagation();
e.preventDefault();
}
function cbeDragEvent(e) {
if (cbeDragObj) {
e.dx = e.pageX - cbeDragObj.x;
e.dy = e.pageY - cbeDragObj.y;
cbeDragObj.x = e.pageX;
cbeDragObj.y = e.pageY;
e.type = 'drag';
e.cbeTarget = cbeDragTarget;
e.cbeCurrentTarget = cbeDragObj;
e.eventPhase = cbeDragPhase;
if (cbeDragObj.ondrag) cbeEval(cbeDragObj.ondrag, e);
else cbeDragObj.moveBy(e.dx,e.dy);
e.type = 'mousemove';
}
//e.stopPropagation();
e.preventDefault();
}
var cbeEventPhase = new Array('', 'AT_TARGET', 'BUBBLING_PHASE', 'CAPTURING_PHASE');
var cbeButton = new Array('LEFT', 'MIDDLE', 'RIGHT', 'undefined', 'non-mouse event');
CrossBrowserElement.prototype.ondragstart = null;
CrossBrowserElement.prototype.ondrag = null;
CrossBrowserElement.prototype.ondragend = null;
var cbeEventJsLoaded = true;
// End cbe_event.js
--- NEW FILE: cbe_util.js ---
/* cbe_util.js $Revision: 0.14 $
* CBE v4.19, Cross-Browser DHTML API from Cross-Browser.com
* Copyright (c) 2002 Michael Foster (mi...@cr...)
* Distributed under the terms of the GNU LGPL from gnu.org
*/
// visit function returns: 0 == stop, 1 == continue, 2 == skip subtree
function cbeTraverseTree(order, startNode, visitFunction, data) {
cbeTraversePreOrder(startNode, 0, 0, visitFunction, data);
}
function cbeTraversePreOrder(node, level, branch, vFn, data) {
var ret = vFn(node,level,branch,data);
if (!ret) return 0;
if (ret == 1 && node.firstChild) {
var child = node.firstChild;
while (child) {
if (!level) ++branch;
if (!cbeTraversePreOrder(child,level+1,branch,vFn,data)) return 1;
child = child.nextSibling;
}
}
return 1;
}
var cbeImageCount=0;
var cbeImageObj = new Array();
var cbeImageName = new Array();
function cbeNewImage(imgName, imgUrl, imgWidth, imgHeight) {
var imgObj;
if (arguments.length == 4) imgObj = new Image(imgWidth,imgHeight);
else imgObj = new Image();
imgObj.src = imgUrl;
imgObj.id = imgObj.name = imgName;
cbeImageObj[cbeImageCount] = imgObj;
cbeImageName[cbeImageCount++] = imgName;
return imgObj;
}
function cbeSetImage(tagImg, preloadedImg) {
var t, p;
if (typeof(tagImg)=='string') t = cbeGetImageByName(tagImg);
else t = tagImg;
if (typeof(preloadedImg)=='string') p = cbeGetImageByName(preloadedImg);
else p = preloadedImg;
t.src = p.src;
}
function cbeGetImageByName(imgName) {
var i, j;
if (document.images[imgName]) return document.images[imgName];
if (is.nav4) {
for (i = 0; i < cbeAll.length; i++) {
if (cbeAll[i].ele.document) {
for (j = 0; j < cbeAll[i].ele.document.images.length; j++) {
if (imgName == cbeAll[i].ele.document.images[j].name) return cbeAll[i].ele.document.images[j];
}
}
}
}
for (i = 0; i < cbeImageName.length; i++) {
if (cbeImageName[i] == imgName) return cbeImageObj[i];
}
return null;
}
function cbeGetFormByName(frmName) {
var i, j;
if (document.forms[frmName]) return document.forms[frmName];
if (is.nav4) {
for (i = 0; i < cbeAll.length; i++) {
if (cbeAll[i].ele.document) {
for (j = 0; j < cbeAll[i].ele.document.forms.length; j++) {
if (frmName == cbeAll[i].ele.document.forms[j].name) return cbeAll[i].ele.document.forms[j];
}
}
}
}
return null;
}
// cookie implementations based on code from Netscape Javascript Guide
function cbeSetCookie(name, value, expire, path) {
document.cookie = name + "=" + escape(value) + ((!expire) ? "" : ("; expires=" + expire.toGMTString())) + "; path=/";
}
function cbeGetCookie(name) {
var value=null, search=name+"=";
if (document.cookie.length > 0) {
var offset = document.cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
var end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
value = unescape(document.cookie.substring(offset, end));
}
}
return value;
}
function cbeGetURLArguments() {
var idx = location.href.indexOf('?');
var params = new Array();
if (idx != -1) {
var pairs = location.href.substring(idx+1, location.href.length).split('&');
for (var i=0; i<pairs.length; i++) {
nameVal = pairs[i].split('=');
params[i] = nameVal[1];
params[nameVal[0]] = nameVal[1];
}
}
return params;
}
function cbePad(str, finalLen, padChar, left) {
if (left) { for (var i=str.length; i<finalLen; ++i) str = padChar + str; }
else { for (var i=str.length; i<finalLen; ++i) str += padChar; }
return str;
}
function cbeHexString(n, digits, prefix) {
var p = '', n = Math.ceil(n);
if (prefix) p = prefix;
n = n.toString(16);
for (var i=0; i < digits - n.length; ++i) {
p += '0';
}
return p + n;
}
function cbeRadians(deg) { return deg * (Math.PI / 180); }
function cbeDegrees(rad) { return rad * (180 / Math.PI); }
function cbeAddDragResizeListener(cbe) {
cbe.addEventListener('dragStart', cbeDragResizeStartListener);
cbe.addEventListener('drag', cbeDragResizeListener);
}
function cbeRemoveDragResizeListener(cbe) {
cbe.removeEventListener('dragStart', cbeDragResizeStartListener);
cbe.removeEventListener('drag', cbeDragResizeListener);
}
function cbeDragResizeStartListener(e) {
if (e.offsetX > (e.cbeCurrentTarget.width() - 20) && e.offsetY > (e.cbeCurrentTarget.height() - 20)) {
e.cbeCurrentTarget.isResizing = true;
}
else e.cbeCurrentTarget.isResizing = false;
}
function cbeDragResizeListener(e) {
if (e.cbeCurrentTarget.isResizing) e.cbeCurrentTarget.resizeBy(e.dx, e.dy);
else e.cbeCurrentTarget.moveBy(e.dx, e.dy);
}
var cbeUtilJsLoaded = true;
// End cbe_util.js
--- NEW FILE: cbe_clip.js ---
/* cbe_clip.js $Revision: 0.11 $
* CBE v4.19, Cross-Browser DHTML API from Cross-Browser.com
* Copyright (c) 2002 Michael Foster (mi...@cr...)
* Distributed under the terms of the GNU LGPL from gnu.org
*/
CrossBrowserElement.prototype.autoClip = function(cp, cmd, increment, endListener, dt, dr, db, dl) {
if (arguments.length <= 4) {
if (this.clipping) return;
else this.clipping = true;
if (increment) this.clipSpeed = increment;
else if (!this.clipSpeed) this.clipSpeed = 10;
var unclip = true, w = this.width(), h = this.height(), xcs = Math.abs(this.clipSpeed), ycs = xcs;
// Get x and y speeds that are proportional to the element's width and height
if (h > w) ycs *= (h/w);
else if(w > h) xcs *= (w/h);
// Setup clip parameters and initial clip position
if (cmd.toLowerCase() == 'clip') { xcs *= -1; ycs *= -1; unclip = false; this.clip(0, w, h, 0); }
if (endListener) this.onclipend = endListener;
switch(cp.toLowerCase()) {
case 'n': dt = -ycs; dr = 0; db = 0; dl = 0; if (unclip) {this.clip(h, w, h, 0);} break;
case 'ne': dt = -ycs; dr = xcs; db = 0; dl = 0; if (unclip) {this.clip(h, 0, h, 0);} break;
case 'e': dt = 0; dr = xcs; db = 0; dl = 0; if (unclip) {this.clip(0, 0, h, 0);} break;
case 'se': dt = 0; dr = xcs; db = ycs; dl = 0; if (unclip) {this.clip(0, 0, 0, 0);} break;
case 's': dt = 0; dr = 0; db = ycs; dl...
[truncated message content] |