/* -- Adobe GoLive JavaScript Library */



CSAg = window.navigator.userAgent; CSBVers = parseInt(CSAg.charAt(CSAg.indexOf("/")+1),10);

CSIsW3CDOM = ((document.getElementById) && !(IsIE()&&CSBVers<6)) ? true : false;

function IsIE() { return CSAg.indexOf("MSIE") > 0;}

function CSIEStyl(s) { return document.all.tags("div")[s].style; }

function CSNSStyl(s) { if (CSIsW3CDOM) return document.getElementById(s).style; else return CSFindElement(s,0);  }

CSIImg=false;

function CSInitImgID() {if (!CSIImg && document.images) { for (var i=0; i<document.images.length; i++) { if (!document.images[i].id) document.images[i].id=document.images[i].name; } CSIImg = true;}}

function CSFindElement(n,ly) { if (CSBVers<4) return document[n];

	if (CSIsW3CDOM) {CSInitImgID();return(document.getElementById(n));}

	var curDoc = ly?ly.document:document; var elem = curDoc[n];

	if (!elem) {for (var i=0;i<curDoc.layers.length;i++) {elem=CSFindElement(n,curDoc.layers[i]); if (elem) return elem; }}

	return elem;

}

function CSGetImage(n) {if(document.images) {return ((!IsIE()&&CSBVers<5)?CSFindElement(n,0):document.images[n]);} else {return null;}}

CSDInit=false;

function CSIDOM() { if (CSDInit)return; CSDInit=true; if(document.getElementsByTagName) {var n = document.getElementsByTagName('DIV'); for (var i=0;i<n.length;i++) {CSICSS2Prop(n[i].id);}}}

function CSICSS2Prop(id) { var n = document.getElementsByTagName('STYLE');for (var i=0;i<n.length;i++) { var cn = n[i].childNodes; for (var j=0;j<cn.length;j++) { CSSetCSS2Props(CSFetchStyle(cn[j].data, id),id); }}}

function CSFetchStyle(sc, id) {

	var s=sc; while(s.indexOf("#")!=-1) { s=s.substring(s.indexOf("#")+1,sc.length); if (s.substring(0,s.indexOf("{")).toUpperCase().indexOf(id.toUpperCase())!=-1) return(s.substring(s.indexOf("{")+1,s.indexOf("}")));}

	return "";

}

function CSGetStyleAttrValue (si, id) {

	var s=si.toUpperCase();

	var myID=id.toUpperCase()+":";

	var id1=s.indexOf(myID);

	if (id1==-1) return "";

	s=s.substring(id1+myID.length+1,si.length);

	var id2=s.indexOf(";");

	return ((id2==-1)?s:s.substring(0,id2));

}

function CSSetCSS2Props(si, id) {

	var el=document.getElementById(id);

	if (el==null) return;

	var style=document.getElementById(id).style;

	if (style) {

		if (style.left=="") style.left=CSGetStyleAttrValue(si,"left");

		if (style.top=="") style.top=CSGetStyleAttrValue(si,"top");

		if (style.width=="") style.width=CSGetStyleAttrValue(si,"width");

		if (style.height=="") style.height=CSGetStyleAttrValue(si,"height");

		if (style.visibility=="") style.visibility=CSGetStyleAttrValue(si,"visibility");

		if (style.zIndex=="") style.zIndex=CSGetStyleAttrValue(si,"z-index");

	}

}

function CSSetStylePos(s,d,p) {

	if (CSIsW3CDOM)d==0?document.getElementById(s).style.left=p+"px":document.getElementById(s).style.top=p+"px";

	else if(IsIE())(d==0)?CSIEStyl(s).posLeft=p:CSIEStyl(s).posTop=p;

	else (d==0)?CSNSStyl(s).left=p:CSNSStyl(s).top=p;

}

function CSGetStylePos(s,d) {

	if (CSIsW3CDOM){CSIDOM();return parseInt((d==0)?document.getElementById(s).style.left:document.getElementById(s).style.top);}

	else if (IsIE()) {CSIEWinInit();return(d==0)?CSIEStyl(s).posLeft:CSIEStyl(s).posTop;}

	else {return (d==0)?CSNSStyl(s).left:CSNSStyl(s).top;}

}

CSIEWInit=false;

function CSIEWinInit() { if(CSIEWInit==true) return; else CSIEWInit=true; if (IsIE()&&(CSAg.indexOf("Win")!=-1)&&CSBVers==4) { var i=0; var lyr=document.all.tags("div")[i++]; while(lyr) {lyr.style.posLeft=lyr.offsetLeft; lyr.style.posTop=lyr.offsetTop; lyr=document.all.tags("div")[i++];}}}

CSInit = new Array;

function CSScriptInit() {

if(typeof(skipPage) != "undefined") { if(skipPage) return; }

idxArray = new Array;

for(var i=0;i<CSInit.length;i++)

	idxArray[i] = i;

CSAction2(CSInit, idxArray);}

CSStopExecution=false;

function CSAction(array) {return CSAction2(CSAct, array);}

function CSAction2(fct, array) { 

	var result;

	for (var i=0;i<array.length;i++) {

		if(CSStopExecution) return false; 

		var aa = fct[array[i]];

		if (aa == null) return false;

		var ta = new Array;

		for(var j=1;j<aa.length;j++) {

			if((aa[j]!=null)&&(typeof(aa[j])=="object")&&(aa[j].length==2)){

				if(aa[j][0]=="VAR"){ta[j]=CSStateArray[aa[j][1]];}

				else{if(aa[j][0]=="ACT"){ta[j]=CSAction(new Array(new String(aa[j][1])));}

				else ta[j]=aa[j];}

			} else ta[j]=aa[j];

		}			

		result=aa[0](ta);

	}

	return result;

}

CSAct = new Object;



function newImage(arg) {

	if (document.images) {

		rslt = new Image();

		rslt.src = arg;

		return rslt;

	}

}





userAgent = window.navigator.userAgent;

browserVers = parseInt(userAgent.charAt(userAgent.indexOf("/")+1),10);

mustInitImg = true;

function initImgID() {var di = document.images; if (mustInitImg && di) { for (var i=0; i<di.length; i++) { if (!di[i].id) di[i].id=di[i].name; } mustInitImg = false;}}



function findElement(n,ly) {

	var d = document;

	if (browserVers < 4)		return d[n];

	if ((browserVers >= 6) && (d.getElementById)) {initImgID; return(d.getElementById(n))}; 

	var cd = ly ? ly.document : d;

	var elem = cd[n];

	if (!elem) {

		for (var i=0;i<cd.layers.length;i++) {

			elem = findElement(n,cd.layers[i]);

			if (elem) return elem;

		}

	}

	return elem;

}



function changeImagesArray(array) {

	if (preloadFlag == true) {

		var d = document; var img;

		for (i=0;i<array.length;i+=2) {

			img = null; var n = array[i];

			if (d.images) {

				if (d.layers) {img = findElement(n,0);}

				else {img = d.images[n];}

			}

			if (!img && d.getElementById) {img = d.getElementById(n);}

			if (!img && d.getElementsByName) {

				var elms = d.getElementsByName(n);

				if (elms) {

					for (j=0;j<elms.length;j++) {

						if (elms[j].src) {img = elms[j]; break;}

					}

				}

			}

			if (img) {img.src = array[i+1];}

		}

	}

}





function changeImages() {

	changeImagesArray(changeImages.arguments);

}





function toggleImages() {

	for (var i=0; i<toggleImages.arguments.length; i+=2) {

		if (selected == toggleImages.arguments[i])

			changeImagesArray(toggleImages.arguments[i+1]);

	}

}



function CSClickReturn () {

	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 true; /* dont follow link */

	else return false; /* dont follow link */

}

CSLoopIsRunning = false; CSFctArray = new Array; CSTimeoutID = null;

function CSLoop() {	

	CSLoopIsRunning = false;

	for (i=0;i<CSFctArray.length;i++) {

		var curFct = CSFctArray[i];

		if (curFct)	{

			if (curFct.DoFunction(curFct)) { CSLoopIsRunning = true; curFct.counter++; }

			else CSFctArray[i] = 0;

		}

	}

	if (CSLoopIsRunning) CSTimeoutID = setTimeout("CSLoop()", 1);

}

function CSStartFunction(fct,data) {

	if (!CSLoopIsRunning) { CSFctArray = 0; CSFctArray = new Array; }

	var fctInfo = new Object;

	fctInfo.DoFunction = fct; fctInfo.counter = 0; fctInfo.data = data;

	CSFctArray[CSFctArray.length] = fctInfo; 

	if (!CSLoopIsRunning) CSLoop();

}

function CSStopFunction(sceneName) {

	var i;

	for (i=0;i<CSFctArray.length;i++) {

		var curFct = CSFctArray[i];

		if (curFct){ if (curFct.data.name == sceneName){ CSFctArray[i] = 0; return; } }

	}

}

function CSStopComplete() {

	if (CSTimeoutID == null) return;

	clearTimeout (CSTimeoutID); CSLoopIsRunning = false; CSTimeoutID = null;

}

function CSSetStyleVis(s,v) {

	if (CSIsW3CDOM){CSIDOM();document.getElementById(s).style.visibility=(v==0)?"hidden":"visible";}

	else if(IsIE())CSIEStyl(s).visibility=(v==0)?"hidden":"visible";

	else CSNSStyl(s).visibility=(v==0)?'hide':'show';

}

function CSGetStyleVis(s) {

	if (CSIsW3CDOM) {CSIDOM();return(document.getElementById(s).style.visibility=="hidden")?0:1;}

	else if(IsIE())return(CSIEStyl(s).visibility=="hidden")?0:1;

	else return(CSNSStyl(s).visibility=='hide')?0:1;

}

function CSSetStyleDepth(s,depth) {

	if (CSIsW3CDOM)document.getElementById(s).style.zIndex=depth;

	else if (IsIE())CSIEStyl(s).zIndex=depth;

	else CSNSStyl(s).zIndex=depth;

}

function CSGetStyleDepth(s) {

	if (CSIsW3CDOM){CSIDOM();return document.getElementById(s).style.zIndex;}

	else if (IsIE())return (CSIEStyl(s).zIndex);

	else return (CSNSStyl(s).zIndex);

}

CSSeqArray = new Array;

function CSSeqActionFct(seq,loopCount,continueLoop) {

	if ((seq.loop < 2) || ((loopCount % 2) != 0)) {

		for (var i=0;i<seq.actionCount;i++) {

			if (seq.actions[3*i + 1] <= seq.frame) {

				if ((loopCount > 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.tracks.length;i++) {

		var track = seq.tracks[i]; var frameCount = 0; var lastCount = 0; var partCount = 0;

		var partIdx = track.parts.ticks.length;

		for (var k=0;k<track.parts.ticks.length;k++) {

			frameCount += track.parts.ticks[k];

			if (frameCount > 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<seq.actionCount;i++) seq.actions[3*i+2] = 0;

	CSStartFunction(CSSeqFunction,seq);

}

function CSSceneObj (name,fps,loop,start,end,frame,sTicks,numAct,acts,tracks) {

	this.name=name;this.fps=fps;this.loop=loop;this.start=start;this.end=end;

	this.frame=frame;this.startTicks=sTicks;this.actionCount=numAct;

	this.actions=acts;this.tracks=tracks;

}

function CSTrackObj (name,partIdx,partCount,parts) {

	this.layer=name;this.partIdx=partIdx;this.partCount=partCount;this.parts=parts;

}

function CSPartObj (ticks,pos,depths,vis,moveType) {

	this.ticks=ticks;this.positions=pos;this.depths=depths;this.visibilities=vis;

	this.moveType=moveType;

}

function CSGetScene (name) {

	for (i=0;i<CSSeqArray.length;i++) { var seq = CSSeqArray[i]; if (seq.name==name) return seq; }

	return 0;

}



function CSAutoStartScene(action) { CSStartSeq (action[1]); }





function CSGetFormElementValue(action) { 

	var form = action[1];

	var elem = action[2];

	return document.forms[form].elements[elem].value;

}






