//----- logging -------------------------------
var logwindow;
//var logDoc;
function log_init() {
  //logwindow = window.open("","logwindow","top=0,left=650,width=350,height=700,toolbar=no,directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no");
  //logDoc = logwindow.document;
  window.onerror=errlog;
}
function log() {
  var result = "";
  if (logwindow) {
    if (typeof(arguments[0]) == "object" && typeof(arguments[1]) == "string") {
      var level = 0;
      if (typeof(arguments[2]) == "number") {
				level = arguments[2];
			}
      result += viewObject(arguments[0],arguments[1],"",level);
    }
    else {
	 		for (var i=0; i<arguments.length; i++) {
      	if ( typeof(arguments[i]) == "object") {
        	result += viewObject(arguments[i],arguments[i],"",0);
      	}
      	else {	
	  			result += arguments[i] + "  ";
	  		}
			}
    }
    logwindow.document.writeln(result + "<br>");
  }
  return result;
}

function viewObject(obj, objName, tabStr, level) {
  //**/logwindow.document.writeln("" + level + " " + tabStr + " " + objName + " " + obj + " " + typeof(obj) + " len " + obj.length + " " + "<br>");
  var outputStr = "";
  if (obj+"" == "undefined" || obj === null) {	
  	return null;
  }
  if (objName+"" == "undefined" || objName === null) {
   objName = obj+"";
   }
  if (tabStr === "") {
  	logwindow.document.writeln(objName + " '" + obj + "->" + obj.prototype + "' [" + typeof(obj) + "]");
	}
  tabStr += "&nbsp&nbsp&nbsp&nbsp";
  if (typeof(obj) == "object" ) {
    try {
      for (prop in obj) {
        var propName = prop + "";
        var propValue = obj[prop];
        var nameStr = "\n<br>" + tabStr + objName + "." + propName;
        var valueStr = "";
        var typeStr = typeof(propValue);
        var strStr = (typeStr == "string")?"\"":"";
        //**/logwindow.document.writeln("prop[] " + level + " " + propName + " " + propValue + " " + typeof(propValue) + "<br>");
        if ( typeStr == "object") {
          valueStr = " = " + "    [" + typeStr + "]";
          if (level > 0 ) {
		  valueStr += viewObject(propValue, propName, tabStr /*+ objName+"."*/, level-1);
		  }
        }
        else if (typeof(propValue) == "function") {
		valueStr = "    [" + typeStr + "]";
		}
        else {
		valueStr = " = " + strStr + propValue + strStr + "    [" + typeStr + "]";
		}
        outputStr += nameStr + valueStr/**/ ;
      }
    }
    catch(e) { /**/logwindow.document.writeln("cought error: " + e + "<br>");
    }
  }
  return outputStr;
}

function errlog(msg,file,line) {
  log("error!: ",msg," in ",file," at ",line);
}
//----- utilities -----------------------------
// Subroutine to get the size of the window
function getWindowSize() {
 var winWidth;
 var winHeight;
 var winNs = false;
 if(typeof(window.innerWidth) == 'number') {        //Non-IE
  //var scroller =  0;//(window.scrollbars.visible == true)? 20:0 ;
  winNs = true;
  winWidth = window.innerWidth;//-scroller;
  winHeight = window.innerHeight;
 }
 else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
  winWidth = document.documentElement.clientWidth;  //IE 6+ in 'standards compliant mode'
  winHeight = document.documentElement.clientHeight;
 }
 else if(document.body && (document.body.clientWidth || document.body.clientHeight)) {
  winWidth = document.body.clientWidth;             //IE 4 compatible
  winHeight = document.body.clientHeight;
 }
 this.width = winWidth;
 this.height = winHeight;
 this.ns = winNs;
 return this;
}
	//-- include -------------
	var included_files = new Array();
	function include(script_filename) {
		if (!in_array(script_filename, included_files)) {
			included_files[included_files.length] = script_filename;
			include_dom(script_filename);
		}
	}
	function include_dom(script_filename) {
		var file;
		var html_doc = document.getElementsByTagName('head').item(0);
		t=script_filename.substring(script_filename.lastIndexOf('.')+1);
		if (t=='js'){
			file = document.createElement('script');
			file.setAttribute('language','javascript');
			file.setAttribute('type','text/javascript');
			file.setAttribute('src',script_filename);
		}else if (t=='css'){ 
			file = document.createElement('link');
			file.setAttribute('rel','stylesheet');
			file.setAttribute('type','text/css');
			file.setAttribute('href',script_filename);
		}
		html_doc.appendChild(file);
		return false;
	}

	function in_array(needle, haystack) {
		for (var i = 0; i < haystack.length; i++) {
			if (haystack[i] == needle) {
				return true;
			}
		}
		return false;
	}
// DHTML library ---------------------------------------------
var DHTML = 0, DOM = 0, MS = 0, NS = 0, OP = 0, VERSION = 0;
function DHTML_init() {
  if (window.opera) {
    OP = 1;
  }
  if(document.getElementById) {
    DHTML = 1;
    DOM = 1;
  }
  if(document.all && !OP) {
    DHTML = 1;
    MS = 1;
  }
  if (window.netscape && window.screen && !DOM && !OP) {
    DHTML = 1;
    NS = 1;
  }
  VERSION = navigator.appVersion.substring(0,1);
  //log("DHTML ",DHTML," DOM ",DOM," MS ",MS," NS ",NS," OP ",OP," VERSION ",VERSION);
  //log(navigator.appName)
}
// get an object, id = "id","name","tag",
function getElem(id,name,index) {
if (id == "tagname") {log("replace identigier 'tagname' with 'tag'");}
 var elem;
 if(DOM) {
   if(id.toLowerCase()=="id") {
     if (typeof document.getElementById(name) == "object") {
	 	elem = document.getElementById(name);
		}
     else {
	 	elem = null;//void(0);
	 }
     return(elem);
   }
   else if(id.toLowerCase()=="name") {
     if (typeof document.getElementsByName(name) == "object") {
     elem = document.getElementsByName(name)[index];
	 }
     else {
	 	elem = null;//void(0);
	 }
     return(elem);
   }
   else if(id.toLowerCase()=="tag") {
     if (typeof document.getElementsByTagName(name) == "object" || (OP && typeof document.getElementsByTagName(name) == "function")){
     	elem = document.getElementsByTagName(name)[index];
	 }
     else {
	 	elem = null;//void(0);
	 }
     return(elem);
   }
   else {
   	return null;//void(0);
   }
 }
 else if(MS) {
   if(id.toLowerCase()=="id") {
     if (typeof document.all[name] == "object"){
	 	     elem = document.all[name];
	 }
     else {
	 	elem = null;//void(0);
	 }
     return(elem);
   }
   else if(id.toLowerCase()=="tag") {
     if (typeof document.all.tags(name) == "object"){
     elem = document.all.tags(name)[index];
	 }
     else {
	 	elem = null;//void(0);
	 }
     return(elem);
   }
   else if(id.toLowerCase()=="name") {
     if (typeof document[name] == "object"){
     elem = document[name];
	 }
     else {
	 	elem = null;//void(0);
	 }
     return(elem);
   }
   else {
   	return null;//void(0);
   }
 }
 else if(NS) {
   if (id.toLowerCase()=="id" || id.toLowerCase()=="name") {
   if (typeof document[name] == "object"){
     elem = document[name];
	 }
     else {
	 	elem = null;//void(0);
     }
     return(elem);
   }
   else if(id.toLowerCase()=="name") {
    if (typeof document.layers[name] == "object"){
     elem = document.layers[name];
	 }
    else {
		elem = null;//void(0);
		}
     return(elem);
   }
   else {
   	return null;//void(0);
   }
 }
}
// get text content of an element
function getCont(id,name,index) {
   var cont;
   if(DOM && getElem(id,name,index) && getElem(id,name,index).firstChild) {
     if(getElem(id,name,index).firstChild.nodeType == 3){
       cont = getElem(id,name,index).firstChild.nodeValue;
	   }
     else {
       cont = "";
	   }
     return(cont);
   }
   else if(MS && getElem(id,name,index)) {
     cont = getElem(id,name,index).innerText;
     return(cont);
   }
   else {
   	return null;//void(0);
   }
}
// get attribute content (attrib = "height","id","name","href",""
function getAttr(id,name,index,attrib) {
   var attr;
   if((DOM || MS) && getElem(id,name,index)) {
     attr = getElem(id,name,index).getAttribute(attrib);
     return(attr);
   }
   else if (NS && getElem(id,name)) {
       if (typeof getElem(id,name)[index] == "object"){
        attr=getElem(id,name)[index][attrib];
		}
       else {
        attr=getElem(id,name)[attrib];
		 }
         return attr;
       }
   else {
   	return null;//void(0);
   }
}
// set text content of an element
function setCont(id,name,index,text) {
   if(DOM && getElem(id,name,index) && getElem(id,name,index).firstChild){
     getElem(id,name,index).firstChild.nodeValue = text;
	 }
   else if(MS && getElem(id,name,index)){
     getElem(id,name,index).innerText = text;
	 }
   else if(NS && getElem(id,name,index)) {
     getElem(id,name,index).document.open();
     getElem(id,name,index).document.write(text);
     getElem(id,name,index).document.close();
   }
}

function DOMevent(event) {
	if (MS) {
	  event.pageX = event.x;
	  event.pageY = event.y;
	  //event.screenX = event.clientX;
	  //event.screenY = event.clientY;
 }
 return event;
}

function show(id) {
  getElem("id",id,null).style.visibility = "visible";
}

function hide(id) {
  getElem("id",id,null).style.visibility = "hidden";
}
log_init();
DHTML_init();
//----- utilities -----------------------------
//-- KUIT specific ---------------------------
var divleft = 120;
var maxWidth = 900;

function getSize(maxScreenWidth) {
	var win = getWindowSize();
	if (maxScreenWidth != null) {
		win.width = (win.width > maxScreenWidth)? maxScreenWidth : win.width;
	}
 	return win;      
}

var timer = 20;
function setTimer(val) {
  //logOldie("set:"+val+" "+timer);
  timer = val;
}
function getTimer() {
  //logOldie(""+timer);
  return timer;
}

//---------------------------------------------

