var WW_initArray 	= new Array();
var WW_superInitArray 	= new Array();
var debug = false;

function WW_init(){
  // WW_debug("WW_init()");
  if (!WW_stdlib_loaded) {
    WW_debug('WW_stdlib not loaded.');
    setTimeout('WW_init()',1000);
    return false;
  }
       
	for (var i=0; i<WW_superInitArray.length; i++){
	  // WW_debug("WW_init() : super evaluating : "+WW_superInitArray[i]);
		eval(WW_superInitArray[i]);
  }
	for (i=0; i<WW_initArray.length; i++){
	  // WW_debug("WW_init() : evaluating : "+WW_initArray[i]);
    eval(WW_initArray[i]);
  }
	
	return true;
}

function WW_addInitFunction(func){
	WW_initArray[WW_initArray.length]=func;
	return true;
}

function WW_addSuperInitFunction(func){
	WW_superInitArray[WW_superInitArray.length]=func;
	return true;
}

function WW_offsetX(obj){
        if (obj==document.body) return 0;
	var result=obj.offsetLeft+WW_offsetX(obj.offsetParent);
	return result;
}

function WW_offsetY(obj){
        if (obj==document.body) return 0;
        var result=obj.offsetTop+WW_offsetY(obj.offsetParent);
        
	return result;
}

function WW_openDebugWin(){
	WW_debugWindow = window.open("","DEBUG","scrollbars=yes,resizable=yes");
	WW_debugWindow.document.open("text/plain");
}

function WW_closeDebugWin(){
	if (typeof(WW_debugWindow)!="undefined")
		WW_debugWindow.close();
}


function WW_clearDebugWin(text){
	WW_debugWindow.document.close();
	WW_debugWindow.document.open();
}


function WW_debug(text){
	if (debug) {
	if (typeof(WW_debugWindow)=="undefined" || WW_debugWindow.closed)
		WW_openDebugWin();
	WW_debugWindow.document.writeln(text);
	return true;
	}
}

function WW_killNs(str){
	if (typeof(str)!="string") return "";
	var result=str;
	do{ 
		pos = result.indexOf("\n");	
		if (pos!=-1)	
			result=result.substring(0,pos)+result.substring(pos+1);
	} while (pos!=-1);
	return result;
}

function WW_cut(str,length){
	if (typeof(str)!="string") return "";
	if (str.length>length)
		return str.substring(0,length)+"...";
	else
		return str;
}

function WW_dump(obj,depth,level){
	if (typeof(depth)=="undefined") depth=0;
	if (depth<0) return;
	if (typeof(level)=="undefined") level=0;
	var offset="";
	var line="";
	for (var j=0; j<level; j++) offset+="   "		
	var i=0;
	var cons="";
	/* if (obj.contructor){
		cons=obj.constructor;
		if (typeof(cons)!="function") 
			cons="<unknown>";
		else
			if (obj+""=="[object Navigator]") 
				cons = "you !";
			else	
				cons = WW_cut(WW_killNs(cons+""),20);
	} else	
		cons="<unknown>"; */
	var obje=obj.toString();
	obje = WW_cut(WW_killNs(obje),20);
	var dummy="| "+obje+" | type : "+typeof(obj)+" | constructor : "+cons+" |";
	for (j=0; j<dummy.length; j++) line+="=";		
	var str="\n"+offset+line+"\n"+offset+dummy+"\n"+offset+line;
	for (var o in obj){
		str+="\n"+offset+"["+i+"]"+WW_killNs(o+"")+" : "+WW_killNs(obj[o]+"");
		if (depth>0 && obj[o] && typeof(obj[o])!="string" && typeof(obj[o])!="number")
			str+=WW_dump(obj[o],depth-1,level+1);
		i++;
	}
	return str;
}

function WW_setStatus(text){
	window.status=text;
	return true;
}

function WW_clearStatus(){
	window.status="";
	return true;
}

function WW_preload(names){
	if (typeof(names)=="string") {
		result 			= new Image();
		result.src	= names;
	} else { 
		result = new Array(names.length);	
		for (var i=0; i<names.length; i++){
				result[i] 		= new Image();
				result[i].src	= names[i];
 			}
	}	
	return result;
}

function WW_setImg(name,filename){
	document.images[name].src=filename;
}

function WW_getQuery(item){
	for (var i=0; i<WW_queryArray.length; i++)
		if (WW_queryArray[i][0]==item)
			return WW_queryArray[i][1];
	return false;
}

WW_queryArray = new Array();
if (window.location.search!=""){
	WW_dummy = window.location.search.substring(1);
   	WW_dummy = WW_dummy.split("&");
   	for  (var i=0; i<WW_dummy.length; i++)
      		WW_queryArray[i] = WW_dummy[i].split("=")
}


function WW_windowWidth(){
   return NN ? window.innerWidth : document.all['body'].offsetWidth;
}

function WW_windowHeight(){
   return NN ? window.innerHeight : document.body.offsetHeight;
}

function WW_digits(number,digits){
  var result="";
  for (var i=digits-1; i>0; i--){
    if (number<Math.pow(10,i))
      result+="0"; 
  }
  result += number;
  return result;
}

function WW_makeArray(name,number){
  var copy  = name;
  var names = new Array(number);
  var insert,pos,d;
  for (var i=0; i<number; i++){
    names[i]="";
    do{ 
      pos = name.indexOf("#");
      if (pos!=-1){
        if (name.charAt(pos+1)=='#') {
          names[i] += name.substring(0,pos) + "#";
          name 			= name.substring(pos+2);
        } else {
          d = parseInt(name.charAt(pos+1));
          names[i] += name.substring(0,pos) + WW_digits(i,d);
					name      = name.substring(pos+2);
        }
      }
    } while (pos!=-1);
    names[i] += name;
    name = copy;
  }
  return names;
} 

function WW_MA(b,n){
  return WW_makeArray(b,n);
}

function WW_eval(a){
  for (i=0;i<a.length;i++){
    // WW_debug("WW_eval : evaluating now : '"+a[i]+"'");
    eval(a[i]); 
  }
}

var WW_RPCImage;

function WW_RPCImageTest(todo){
  if (WW_RPCImage.complete){
    WW_debug(WW_dump(WW_RPCImage));
    eval(todo);
  } else {
    WW_debug("WW_RPCImage.complete : "+WW_RPCImage.complete);
    setTimeout("WW_RPCImageTest(\""+todo+"\")",500); 
  }
}

function WW_RPC(text,todo){
  if (todo==null){ todo=""; }
  var source  = text+"#"+Math.floor(Math.random()*100000);
  WW_RPCImage = new Image(); 
  WW_RPCImage.src = source;
  // WW_debug(WW_dump(WW_RPCImage));
  eval( todo );
  // WW_RPCImageTest(todo);
}



