// ----------------------------------------------------------------
//
// %W% %G% %U% %P%
//
// siCommon.js
// -----------
// Author: Walter Rothlin
//
// Abstract: Contains common JavaScript functions
//
// History:
// 08/10/99    V1.0    Initial Version
// 08/31/99    V1.1    Combine the two Browser recognitions in one
// 09/20/99    V1.2    New ThreadHandler function
// 09/21/99    V1.3    Add statusTicker code
// 12/07/99    V1.4    Accept >NS4.0 (old was 4.5)
//
// ----------------------------------------------------------------

function showOnStatus(msg) {
  window.status = msg;
}

function loadURLinNewWindow(newURL,windowName) {
    aNewWindow = window.open(newURL,windowName,"toolbar=yes,location=no,directories=no,menubar=no,status=yes,scrollbars=yes,resizable=yes");
    aNewWindow.focus();
}

function MakeArray(n) {
   this.length = n
   for (var i = 0; i<n; i++) {
       this[i] = new Image()
   }
   return this
}


// functions for implementing a animation
// --------------------------------------
//
// user has to implement e.g.:
//		function runAnimation(userParam,delay,aniHandlerNo) {
//          if (aniHandlerNo == 0) {
//		       showLayer('item2',true);
//			   moveLayer('item2',x,y);
//			   x += userParam;
//			   y += 1;
//			} else {
//  			   showLayer('item1',true);
//			   moveLayer('item1',x1,y1);
//			   x1 += 1;
//			   y1 += userParam;
//			}
//			submit(userParam,delay,aniHandlerNo);
//		}
// and call
//     animationHandler     = new Array();
//	 animationHandler[0]  = -1;
//	 animationHandler[1]  = -1;
//
//  startAnimation(5,100,0);    // 5=userParam  100=timeInterval  0=treadHandler
//  stopAnimation(0)
function startAnimation(userParam,delay,aniHandlerNo) {    // obsolet! use startThread
  var callStr = "runAnimation("+userParam+","+delay+","+aniHandlerNo+")";
  if (animationHandler[aniHandlerNo] < 0) {
     animationHandler[aniHandlerNo] = setTimeout(callStr,delay);
  }
}

function startThread(userParam,delay,aniHandlerNo,threadHandlerName) {
  if ((threadHandlerName == null) || (threadHandlerName == "")) {
      threadHandlerName = "runAnimation";
  }
  var callStr = threadHandlerName + "("+userParam+","+delay+","+aniHandlerNo+")";
  if (animationHandler[aniHandlerNo] < 0) {
     animationHandler[aniHandlerNo] = setTimeout(callStr,delay);
  }
}


function stopAnimation(aniHandlerNo) {
   if (animationHandler[aniHandlerNo] > -1) {
	   clearTimeout(animationHandler[aniHandlerNo]);
  }
  animationHandler[aniHandlerNo] = -1;
}

function submitThread(userParam,delay,aniHandlerNo,threadHandlerName) {
    if ((threadHandlerName == null) || (threadHandlerName == "")) {
       threadHandlerName = "runAnimation";
    }
	var callStr = threadHandlerName + "("+userParam+","+delay+","+aniHandlerNo+")";
	animationHandler[aniHandlerNo] = setTimeout(callStr,delay);
}

function submit(userParam,delay,aniHandlerNo) {    // obsolet! use submitThread
	var callStr = "runAnimation("+userParam+","+delay+","+aniHandlerNo+")";
	animationHandler[aniHandlerNo] = setTimeout(callStr,delay);
}

// function for Browser recognition
// --------------------------------
function isNewBrowser() {
	layerpath = "document.all";
	styleswitch = "style.";
	if (document.layers) {
		layerpath = "document.layers";
		styleswitch = "";
	}
	name    = navigator.appName;
	version = navigator.appVersion;
	noCSS   = !(document.layers || document.all);
	oldns   = (name.indexOf("etscape")  > -1 && version<"4.0");
	oldie   = (name.indexOf("icrosoft") > -1 && version<"4.0");

    NS4     = (document.layers);
    IE4     = (document.all);
    ver4    = (NS4 || IE4);
    isMac   = (navigator.appVersion.indexOf("Mac") != -1);
    isMenu  = (NS4 || (IE4 && !isMac));

	return (!(noCSS || oldns || oldie));

}

// functions for layer manipulation
// --------------------------------
function showLayer(layerName,showit) {
	if (showit) modus = "visible"; else modus = "hidden";
	eval(layerpath + "['"+layerName+"']."+styleswitch+"visibility = '"+modus+"'");
}

function moveLayer(layerName,x,y) {
	eval(layerpath + "['"+layerName+"']."+styleswitch+"left = '"+x+"'");
	eval(layerpath + "['"+layerName+"']."+styleswitch+"top  = '"+y+"'");
}

// function for error handling
window.onError = showError;

function showError(errmsg,errurl,errline) {
	msg = "Fehler : "+errmsg+"\n"+"Skript : "+errurl+"\n"+"Zeile : "+errline;
	alert("Nun ist's passiert. Mein Skript hat einen Fehler (tia, niemand ist perfekt). Ich wäre froh, wenn Du mir die folgenden Parameter via eMail mitteilen könntest. Vielen Dank im Voraus.\n\n"+msg);
}


// function for status ticker
// --------------------------
function startStatusLineTicker(msg) {
       var cmd  = "scrollit_r2l(100,'" + msg + "')";
	   timerONE=window.setTimeout(cmd,1);
}


function scrollit_r2l(seed,msg) {
   var out = " ";
   var c   = 1;
   
   if (seed > 100) {
       seed--;
       var cmd  = "scrollit_r2l(" + seed + ",'" + msg + "')";
       timerTwo = window.setTimeout(cmd,100);
   } else if (seed <= 100 && seed > 0) {
       for (c=0 ; c < seed ; c++) {
         out+=" ";
       }
       out += msg;
       seed--;
       var cmd = "scrollit_r2l(" + seed + ",'" + msg + "')";
       window.status = out;
       timerTwo = window.setTimeout(cmd,100);
   } else if (seed <= 0) {
       if (-seed < msg.length) {
           out += msg.substring(-seed,msg.length);
           seed--;
           var cmd = "scrollit_r2l(" + seed + ",'" + msg + "')";
           window.status = out;
           timerTwo = window.setTimeout(cmd,100);
       } else {
           window.status = " ";
           var cmd  = "scrollit_r2l(" + seed + ",'" + msg + "')";
           timerTwo = window.setTimeout(cmd,75);
       }
   }
}

