// CyberStudio Javascript Library // ‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹ // Global Functions // ‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹ CSAg = window.navigator.userAgent; CSBVers = parseInt(CSAg.charAt(CSAg.indexOf("/")+1),10); function IsIE() { return CSAg.indexOf("MSIE") > 0;} function CSIEStyl(s) { return document.all.tags("div")[s].style; } function CSNSStyl(s) { return CSFindElement(s,0); } function CSFindElement(n,ly) { if (CSBVers < 4) return document[n]; var curDoc = ly ? ly.document : document; var elem = curDoc[n]; if (!elem) { for (var i=0;i" ) res = (CSStateArray[action[1]] > action[2]); else if(op == ">=") res = (CSStateArray[action[1]] >= action[2]); else if(op == "<" ) res = (CSStateArray[action[1]] < action[2]); else if(op == "<=") res = (CSStateArray[action[1]] <= action[2]); return res; } function CSScriptInit() { if(typeof(skipPage) != "undefined") { if(skipPage) return; } idxArray = new Array; for(var i=0;i= 0) && (bAgent.indexOf("Mozilla/3") >= 0) && (bAgent.indexOf("Mac") >= 0)) return true; // dont follow link else return false; // dont follow link } function CSButtonReturn () { var bAgent = window.navigator.userAgent; var bAppName = window.navigator.appName; if ((bAppName.indexOf("Explorer") >= 0) && (bAgent.indexOf("Mozilla/3") >= 0) && (bAgent.indexOf("Mac") >= 0)) return false; // follow link else return true; // follow link } function CSBrowserSwitch(action) { var bAgent = window.navigator.userAgent; var bAppName = window.navigator.appName; var isNS = (bAppName.indexOf("Netscape") >= 0); var isIE = (bAppName.indexOf("Explorer") >= 0); var isWin = (bAgent.indexOf("Win") >= 0); var isMac = (bAgent.indexOf("Mac") >= 0); var vers = 0; var versIdx = (bAgent.indexOf("Mozilla/")); if(versIdx >= 0) { var sstr = bAgent.substring(versIdx + 8, versIdx + 9); vers = parseInt(sstr) - 2; } var url = action[1]; var platform = action[2]; var versVec; if(platform) { if(isNS && isMac) versVec = action[3]; if(isIE && isMac) versVec = action[5]; if(isNS && isWin) versVec = action[4]; if(isIE && isWin) versVec = action[6]; } else { if(isNS) versVec = action[3]; if(isIE) versVec = action[4]; } if(vers > (versVec.length-1)) vers = versVec.length-1; if(versVec[vers] == 0) { location = url; CSStopExecution = true; } } function CSURLPopupShow(formName, popupName, target) { var form = CSFindElement(formName); var popup = form.elements[popupName]; window.open(popup.options[popup.selectedIndex].value, target); popup.selectedIndex = 0; } function CSSetStyleDepth(style,depth) { if (IsIE()) CSIEStyl(style).zIndex = depth; else CSNSStyl(style).zIndex = depth;} function CSGetStyleDepth(style) { if (IsIE()) return (CSIEStyl(style).zIndex); else return (CSNSStyl(style).zIndex); } CSSeqArray = new Array; function CSSeqActionFct(seq,loopCount,continueLoop) { if ((seq.loop < 2) || ((loopCount % 2) != 0)) { for (var i=0;i 1) && (seq.actions[3*i + 1] < seq.start)) continue; if (seq.actions[3*i + 2] < loopCount) { seq.actions[3*i + 2] = loopCount; CSLoopIsRunning = true; CSAction(new Array(seq.actions[3*i + 0])); continueLoop = true; } } else { continueLoop = true; break; } } } else { for (var i=seq.actionCount-1;i>=0;i--) { if (seq.actions[3*i + 1] > seq.frame) { if (seq.actions[3*i + 1] > seq.end) continue; if (seq.actions[3*i + 2] < loopCount) { seq.actions[3*i + 2] = loopCount; CSLoopIsRunning = true; CSAction(new Array(seq.actions[3*i + 0])); continueLoop = true; } } else { continueLoop = true; break; } } } return continueLoop; } function CSSeqFunction(fctInfo) { var seq = fctInfo.data; var oldFrame = seq.frame; var newTicks = (new Date()).getTime(); seq.frame = Math.round((seq.fps * (newTicks - seq.startTicks)/1000.0) - 0.5); var continueLoop = false; var loopCount = 1; if (seq.loop > 0) { continueLoop = true; if (seq.loop == 1) { var iv = (seq.end - seq.start); var f = Math.round(((seq.frame - seq.start) / iv) - 0.5); if (f < 0) f = 0; loopCount = f+1; seq.frame = seq.start + ((seq.frame - seq.start) % (seq.end - seq.start)); } else { var iv = (seq.end - seq.start); var f = Math.round(((seq.frame - seq.start) / iv) - 0.5); if (f < 0) f = 0; loopCount = f+1; f = (seq.frame - seq.start) % (2 * iv); if (f > iv) f = 2*iv - f; seq.frame = seq.start + f; } } continueLoop = CSSeqActionFct(seq,loopCount,continueLoop); for (var i=0;i seq.frame) { partIdx = k; partCount = seq.frame - lastCount; break; } lastCount = frameCount; } if (partIdx < track.parts.ticks.length) { var type=track.parts.moveType[partIdx]; if(type==1) CSSetLinearPos (track, partIdx, partCount); else if(type==2) CSSetCurvePos (track, partIdx, partCount); else if(type==3) if (oldFrame != seq.frame) CSSetRandomPos (track, partIdx, partCount); else { x = CSGetStylePos(track.layer,0); y = CSGetStylePos(track.layer,1); } CSSetStyleVis(track.layer,track.parts.visibilities[partIdx]); CSSetStyleDepth(track.layer,track.parts.depths[partIdx]); continueLoop = true; } else { var partIdx = track.parts.moveType.length-1; var posArray = track.parts.positions; var x = posArray[partIdx * 6 + 0]; var y = posArray[partIdx * 6 + 1]; CSSetStylePos(track.layer,0,x); CSSetStylePos(track.layer,1,y); CSSetStyleVis(track.layer,track.parts.visibilities[partIdx]); CSSetStyleDepth(track.layer,track.parts.depths[partIdx]); } } return continueLoop; } function CSSetLinearPos (track, partIdx, partCount) { var curTicks = track.parts.ticks[partIdx]; var pIdx1 = partIdx * 6; var pIdx2 = (partIdx+1) * 6; var posArray = track.parts.positions; var x = posArray[pIdx1 + 0]; var y = posArray[pIdx1 + 1]; var x1,x2,y1,y2; var factor = partCount/curTicks; x1 = x; y1 = y; x2 = posArray[pIdx2 + 0]; y2 = posArray[pIdx2 + 1]; x = x1 * (1-factor) + x2 * factor; y = y1 * (1-factor) + y2 * factor; CSSetStylePos(track.layer,0,x); CSSetStylePos(track.layer,1,y); } function CSSetCurvePos (track, partIdx, partCount) { var curTicks = track.parts.ticks[partIdx]; var pIdx1 = partIdx * 6; var pIdx2 = (partIdx+1) * 6; var posArray = track.parts.positions; var x = posArray[pIdx1 + 0]; var y = posArray[pIdx1 + 1]; var x1,x2,x3,x4,y1,y2,y3,y4; var factor = partCount/curTicks; var t = factor; var u = t * t; var v = u * t; var val1 = 3*(u-t) - v + 1; var val2 = 3*(v+t - 2*u); var val3 = 3*(u-v); var val4 = v; x1 = x; y1 = y; x2 = posArray[pIdx1 + 2]; y2 = posArray[pIdx1 + 3]; x3 = posArray[pIdx1 + 4]; y3 = posArray[pIdx1 + 5]; x4 = posArray[pIdx2 + 0]; y4 = posArray[pIdx2 + 1]; x = x1 * val1 + x2 * val2 + x3 * val3 + x4 * val4; y = y1 * val1 + y2 * val2 + y3 * val3 + y4 * val4; CSSetStylePos(track.layer,0,x); CSSetStylePos(track.layer,1,y); } function CSSetRandomPos (track, partIdx, partCount) { var curTicks = track.parts.ticks[partIdx]; var pIdx1 = partIdx * 6; var pIdx2 = (partIdx+1) * 6; var posArray = track.parts.positions; var x = posArray[pIdx1 + 0]; var y = posArray[pIdx1 + 1]; var x1,x2,y1,y2; var factor = partCount/curTicks; x1 = x; y1 = y; x2 = posArray[pIdx2 + 0]; y2 = posArray[pIdx2 + 1]; var factorx = Math.random(); var factory = Math.random(); x = x1 * (1-factorx) + x2 * factorx; y = y1 * (1-factory) + y2 * factory; CSSetStylePos(track.layer,0,x); CSSetStylePos(track.layer,1,y); } function CSStartSeq(name) { var seq = CSGetScene(name); var date = new Date() seq.startTicks = date.getTime() for (var i=0;i 0) eval ('document.' + CSLastSound + '.run()'); else eval ('document.' + CSLastSound + '.play(true)'); } else { alert ("The current Plug-In can not be controled by JavaScript. Please try using LiveAudio or a compatible Plug-In!"); } } function CSShowHide(action) { if (action[1] == '') return; var type=action[2]; if(type==0) CSSetStyleVis(action[1],0); else if(type==1) CSSetStyleVis(action[1],1); else if(type==2) { if (CSGetStyleVis(action[1]) == 0) CSSetStyleVis(action[1],1); else CSSetStyleVis(action[1],0); } } function CSStopAll(action) { CSStopComplete (); } function CSStopScene(action) { CSStopFunction (action[1]); } function CSStopSound (action) { if (eval('document.'+action[1])!=null) { eval ('document.' + action[1] + '.stop()');}} function CSStartWipe (action) { var el=CSCreateTransElement (action[1], action[2]); if (el==null) return; var dir=action[3]; if (dir=="_inLeft") {el.steps=el.clipRect.width/el.maxValue; el.modus="in";} else if (dir=="_inRight") {el.steps=el.clipRect.width/el.maxValue; el.modus="in";} else if (dir=="_outLeft") {el.steps=el.clipRect.width/el.maxValue; el.modus="out";} else if (dir=="_outRight") {el.steps=el.clipRect.width/el.maxValue; el.modus="out";} else if (dir=="_inTop") {el.steps=el.clipRect.height/el.maxValue; el.modus="in";} else if (dir=="_inBottom") {el.steps=el.clipRect.height/el.maxValue; el.modus="in";} else if (dir=="_outTop") {el.steps=el.clipRect.height/el.maxValue; el.modus="out";} else if (dir=="_outBottom") {el.steps=el.clipRect.height/el.maxValue; el.modus="out";} else if (dir=="_inCenter") {el.HSteps=el.clipRect.width/el.maxValue; el.VSteps=el.clipRect.height/el.maxValue; el.modus="in";} else if (dir=="_outCenter") {el.HSteps=el.clipRect.width/el.maxValue; el.VSteps=el.clipRect.height/el.maxValue; el.modus="out";} if (el.modus=="") return; el.currentValue=0; el.glDir=action[3]; CSStartFunction(CSDoWipe,el); } function CSDoWipe (info) { var el = info.data; if (el==null) return false; if (el.currentValue==el.maxValue) { CSFinishWipe(el); return false; } var r = new CSRect(el.clipRect.left,el.clipRect.top,el.clipRect.width,el.clipRect.height); var dir=el.glDir; if (dir=="_inLeft") {r.left=r.width-el.currentValue*el.steps;} else if (dir=="_inTop") {r.top=r.height-el.currentValue*el.steps;} else if (dir=="_inRight") {r.width=el.currentValue*el.steps;} else if (dir=="_inBottom") {r.height=el.currentValue*el.steps;} else if (dir=="_outLeft") {r.width=r.width-el.currentValue*el.steps;} else if (dir=="_outTop") {r.height=r.height-el.currentValue*el.steps;} else if (dir=="_outRight") {r.left=el.currentValue*el.steps;} else if (dir=="_outBottom") {r.top=el.currentValue*el.steps;} else if (dir=="_inCenter") {r=CSCenterRectIn(el,r);} else if (dir=="_outCenter") {r=CSCenterRectOut(el,r);} CSSetLayerClip(el,r); el.currentValue+=1; return true; } function CSFinishWipe (el) { if (el.modus=="in") CSSetLayerClip(el,el.clipRect); else { el.clipRect=new CSRect(0,0,el.width,el.height); CSSetLayerClip(el,el.clipRect); CSSetStyleVis(el.layer,0); } CSDisposeTransElement(el); } function CSCenterRectIn(el,r) { var hValue= el.currentValue*el.HSteps/2; var vValue= el.currentValue*el.VSteps/2; r.left=Math.round(r.left+r.width/2-hValue); r.top=Math.round(r.top+r.height/2-vValue); r.width=Math.round(hValue*2); r.height=Math.round(vValue*2); return r; } function CSCenterRectOut(el,r) { var hValue= el.currentValue*el.HSteps/2; var vValue= el.currentValue*el.VSteps/2; r.left+=Math.round(hValue); r.top+=Math.round(vValue); r.width-=Math.round(hValue*2); r.height-=Math.round(vValue*2); return r; } function CSFixFct() { var d = document; var w = window; if (d.cs.csFix.w != w.innerWidth || d.cs.csFix.h != w.innerHeight) { d.location = d.location; } } function CSNSFix(action) { var d = document; var w = window; if ((navigator.appName == 'Netscape') && (parseInt(navigator.appVersion) == 4)) { if (typeof d.cs == 'undefined') { d.cs = new Object; d.cs.csFix = new Object; } else if (CSIsFrame (w) == true) CSFixFct(); d.cs.csFix.w = w.innerWidth; d.cs.csFix.h = w.innerHeight; window.onresize = CSFixFct; } } function CSIsFrame (window) { var rootWindow = window.parent; if (rootWindow == 'undefined') return false; for (i = 0; i < rootWindow.frames.length; i++) if (window == rootWindow.frames[i]) return true; return false; } function CSResizeWindow(action) { if(navigator.appVersion.charAt(0) >=4) { window.resizeTo (action[1],action[2]) } } function CSScrollDown(action){ if(navigator.appVersion.charAt(0) >=4) { var container = 0 if (action[2] > 0) { while (container < action[1]) { window.scrollBy(0,action[2]); container = container + action[2]; } } } } function CSScrollLeft(action){ if(navigator.appVersion.charAt(0) >=4) { var container = 0 if (action[2] > 0) { while (container < action[1]) { window.scrollBy(-action[2],0); container = container + action[2]; } } } } function CSScrollRight(action){ if(navigator.appVersion.charAt(0) >=4) { var container = 0 if (action[2] > 0) { while (container < action[1]) { window.scrollBy(action[2],0); container = container + action[2]; } } } } function CSScrollUp(action){ if(navigator.appVersion.charAt(0) >=4) { var container = 0 if (action[2] > 0) { while (container < action[1]) { window.scrollBy(0,-action[2]); container = container + action[2]; } } } } function CSSetBackColor(action) { document.bgColor = action[1]; } function CSActionGroup (action) { for(var i=1;i l2 ? l1 : l2) var h = (b1 < b2 ? b1 : b2) - (t1 > t2 ? t1 : t2) return ((w >= 0) && (h >= 0)); } CSCurrentPressedKey = -1; function CSKeyPress(ev) { var code; if(IsIE()) CSCurrentPressedKey = event.keyCode; else CSCurrentPressedKey = ev.which; } document.onkeypress = CSKeyPress; function CSKeyCompare(condition) { var eq = (condition[1] == CSCurrentPressedKey); if(eq) CSCurrentPressedKey = -1; return eq; } function CSTimeout (condition) { var result = false; if (typeof (gCurrentIdleObject) == "undefined") return result; if (gCurrentIdleObject.lastTime) { var t=new Date(); if (t.getTime() >= gCurrentIdleObject.lastTime) { if (t.getTime() >= gCurrentIdleObject.nextTime) { gCurrentIdleObject.lastTime = t.getTime() + condition[1]*1000; gCurrentIdleObject.nextTime = gCurrentIdleObject.lastTime + condition[1]*1000; return false; } return true; } } else { var t=new Date(); gCurrentIdleObject.lastTime = t.getTime() + condition[1]*1000; gCurrentIdleObject.nextTime = gCurrentIdleObject.lastTime + condition[1]*1000; } return result; } // EOF CyberStudio Javascript Library