var bnoasyncwrite = false;

function writegadgets() {
if (bnoasyncwrite) return;
bnoasyncwrite = true;
var gadgets = document.getElementsByName("gadgets")[0];
gadgets.value = "";
if (window["gadget"] == null) { bnoasyncwrite = false; return; }

    for (var i = 0; i < window["gadget"].length; i++) {
      if (window["gadget"][i] != null) {
       var obj = window["gadget"][i];
       var mtarget = obj.split("\n")[0];
       var mpage = obj.split("\n")[1];
       var mid = obj.split("\n")[2];
       var withrefresh = obj.split("\n")[3];
       var ival = obj.split("\n")[4];
       var mtitle = obj.split("\n")[5];
       var evalscript = obj.split("\n",7)[6];
       var instance = document.getElementById(mtarget);
       if (instance != null) {
         if (instance.getAttribute("noreload") != "true") {
           var posinst = document.getElementById(mtarget + "_content");
           if (posinst != undefined && posinst != null)
           gadgets.value += "\t" + mtarget + "\t" + mpage + "\t" + mid + "\t" + withrefresh + "\t" + ival + "\t" + mtitle + "\t" + instance.style.top + "\t" + instance.style.left + "\t" + instance.style.marginTop + "\t" + instance.style.marginLeft + "\t" + instance.style.width + "\t" + instance.style.height + "\t" + posinst.style.width + "\t" + posinst.style.height + "\t" + instance.getAttribute("initialWidth") + "\t" + evalscript;
         }
       }
      }
    }
bnoasyncwrite = false;
}

function unloadgadget(page, target)
{
if (window["gadget"] == null) return;

    for (var i = 0; i < window["gadget"].length; i++) {
      if (window["gadget"][i] != null) {
       var obj = window["gadget"][i];
       var mtarget = obj.split("\n")[0];
       var mpage = obj.split("\n")[1];
       var mid = obj.split("\n")[2];
       if (mtarget == target && mpage == page) {
         clearInterval(mid);
         window["gadget"][i] = null;
       }
      }
    }
}

function unloadgadgetonlytarget(target)
{
if (window["gadget"] == null) return;

    for (var i = 0; i < window["gadget"].length; i++) {
      if (window["gadget"][i] != null) {
       var obj = window["gadget"][i];
       var mtarget = obj.split("\n")[0];
       var mpage = obj.split("\n")[1];
       var mid = obj.split("\n")[2];
       if (mtarget == target) {
         clearInterval(mid);
         window["gadget"][i] = null;
       }
      }
    }
}


function unloadgadgets()
{
if (window["gadget"] == null) return;

    for (var i = 0; i < window["gadget"].length; i++) {
      if (window["gadget"][i] != null) {
       var obj = window["gadget"][i];
       var mtarget = obj.split("\n")[0];
       var mpage = obj.split("\n")[1];
       var mid = obj.split("\n")[2];
         clearInterval(mid);
         window["gadget"][i] = null;
      }
    }
}



function resetZIndex() {
	debug("resetzindex");
var x = null;
if (window["myframes"] == undefined || window["myframes"] == null) {
	x = new Array();
	window["myframes"] = x;
}

    for (var i = 0; i < window["myframes"].length; i++) {
      if (window["myframes"][i] != null) {
         var instance = window["myframes"][i];
         if (instance.getAttribute("ontop") == "yes") {
           	instance.style.zIndex = "150";
         } else {
        	 var zd = instance.getAttribute("nozindex");
        	 if (zd != "true")
        		 instance.style.zIndex = "90";
        	 else instance.style.zIndex = "2";
         }
      }
    }
}

function AddWindowFrame(obj) {
    if (window["myframes"] == null || window["myframes"] == undefined) window["myframes"] = new Array();
    for (var i = 0; i < window["myframes"].length; i++) {
      if (window["myframes"][i] == obj) return;
    }
    window["myframes"].push(obj);  
}

function reloadgadgets() {
  unloadgadgets();
  var gadgets = document.getElementsByName("gadgets")[0];
  if (gadgets == null) return;
  if (gadgets.value == "") return;
  var arr = gadgets.value.split("\t");
  for (var i = 1; i < arr.length; i = i + 16) {
    loadgadget(arr[i+1],arr[i],arr[i+3],arr[i+4],"nein",arr[i+5],arr[i+15]);
    var instance = document.getElementById(arr[i]);
    instance.setAttribute("isreload","true");
    instance.setAttribute("nocenter","true");
    if (arr[i+14] != undefined && arr[i+14] != null)
    instance.setAttribute("initialWidth",arr[i+14]);
    instance.style.marginTop = arr[i+8].toString().replace("px","").replace("pt","");
    instance.style.marginLeft = arr[i+9].toString().replace("px","").replace("pt","");
    instance.style.width = arr[i+10].toString().replace("px","").replace("pt","");
    instance.style.height = arr[i+11].toString().replace("px","").replace("pt","");
    var posinst = document.getElementById(arr[i] + "_content");
    if (posinst != null && posinst != undefined) {
    if (arr[i+12] != undefined && arr[i+12] != null)
    posinst.style.width = arr[i+12].toString().replace("px","").replace("pt","");
    if (arr[i+13] != undefined && arr[i+13] != null)
    posinst.style.height = arr[i+13].toString().replace("px","").replace("pt","");
    }
    instance.style.top = arr[i+6].toString().replace("px","").replace("pt","");
    instance.style.left = arr[i+7].toString().replace("px","").replace("pt","");
  }
}

function resizeframe(e) {
isResizing = true;
dx = e.offsetLeft;
}


function html_entity_decode(str){
	/*Firefox (and IE if the string contains no elements surrounded by angle brackets )*/
	try{
	var ta=document.createElement("textarea");
	ta.innerHTML=str;
	return ta.value;
	}catch(e){};
	/*Internet Explorer*/
	try{
	var d=document.createElement("div");
	d.innerHTML=str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
	if(typeof d.innerText!="undefined")return d.innerText;
	}catch(e){}
	}

function getgadgetscript(targetname) {
    if (targetname == null || targetname == undefined || targetname == "null") return null;
    var hs = document.getElementById('scriptpart_' + targetname);
    
    var ms = "";
    
    if (hs == null || hs == undefined) ms = ""; else ms = html_entity_decode(hs.innerHTML); 
      
    if (window["gadget"] != null && window["gadget"] != undefined) {  
    for (var i = 0; i < window["gadget"].length; i++) {
      if (window["gadget"][i] != null) {
       var obj = window["gadget"][i];
       var mtarget = obj.split("\n")[0];
       if (mtarget == targetname) {
          var mscript = obj.split("\n",7)[6];
          if (mscript == "undefined" || mscript == "null") if (ms != "") return ms; 
          return ms + html_entity_decode(mscript);
       }
       }
    }  
    } else {
    }
      if (ms == "") return null; else return ms;
}

var isloading = false;

function loadgadget(page, target, withrefresh, interval, dounload, title, evalscript) {
  if (isloading) {
	  setTimeout('loadgadget("' + page + '","'+target+'","'+withrefresh+'",'+interval+',"'+dounload+'","'+title+'","'+evalscript+'");',200);
	  return;
  }
  
  debug('loadgadget("' + page + '","'+target+'","'+withrefresh+'",'+interval+',"'+dounload+'","'+title+'","'+evalscript+'");');
  
  isloading = true;
  
  var wait = document.getElementById('waiting');
  if (wait != null && wait != undefined) {
	   wait.style.zIndex = "900";
	   wait.style.visibility='visible';
  }
  
  if (target=="null" || target == "undefined") {
    ajax_requesttarget(null,page,"");
  }
  
  var oo = document.getElementById(target);
  if (oo == null || oo == undefined) {
    openframe(target,"");
    //AddWindowFrame(document.getElementById(target));
  }
  
  var titleobject =document.getElementById(target+"_title");
  if (titleobject != null && titleobject != undefined) titleobject.innerHTML = html_entity_decode(title);
  
  var realtarget = target;
  
  //if (document.getElementById(target+"_content") != null)  
  //target = target + "_content";
  
  var params = "";
  if (page.indexOf("?") > -1) {
    var mpage = page;
    page = page.split("?")[0];
    params = mpage.substring(page.length + 1);
  }


  
    if (window["gadget"] == null) {
      window["gadget"] = new Array();
    }
  if (withrefresh == "ja") {
    for (var i = 0; i < window["gadget"].length; i++) {
      if (window["gadget"][i] != null) {
       var obj = window["gadget"][i];
       var mtarget = obj.split("\n")[0];
       var mpage = obj.split("\n")[1];
       var mid = obj.split("\n")[2];
       if (mtarget == target) {  // && mpage == page
         clearInterval(mid);
         window["gadget"][i] = null;
       }
      }
      var tinst = getcontainer(document.getElementById(target));
      tinst.setAttribute("nocenter","true");
    }

    var id = setInterval('ajax_requesttarget("' + target + '","' + page + '","'+params+'");',interval);
    
    
//    window["gadget"].push(target+"\n"+page+"\n"+id+"\n"+withrefresh+"\n"+interval);
  } else ajax_requesttarget(target,page,params);

  isloading = false;

    if (dounload=="nein") {
      var dontadd = false;
      
      for (var i = 0; i < window["gadget"].length; i++) {
        if (window["gadget"][i] != null) {
          var p = window["gadget"][i].split("\n");
          if (p[0] == realtarget) { window["gadget"][i] = null; break; } // && p[1] == page
        }
      }
      
      if (!dontadd) {
        window["gadget"].push(realtarget+"\n"+page+"\n"+id+"\n"+withrefresh+"\n"+interval+"\n"+title+"\n"+evalscript);
      }
    }
  
    
}


function getcontainer(obj) {
  var x = window["myframes"];
  if (x == undefined || x == null)  return;
  for (var i = 0; i < x.length; i++) {
     if (issubcontainer(x[i],obj)) {
       return x[i];
     }
  }
  return null;
}

function issubcontainer(parent, child) {
  var x = child.parentNode;
  while (x != null && x != undefined) {
    if (x == parent) {
      return true;
    }
    x = x.parentNode;
  }
  return false;
}

function openframe(idname, title) {
if (document.getElementById('shadowframe') == null) return;	
var ret = copy("shadowframe",idname);
var mtitle = document.getElementById(idname+"_title");
if (mtitle != null && mtitle != undefined) mtitle.innerHTML = title;
//document.getElementById(idname).style.visibility = "visible";
var elem = document.getElementById(idname);
if (elem == null || elem == undefined) return;
   if (elem.getAttribute("noresize") == "true") {
     var mb = document.getElementById(idname+"_maxbox");
     if (mb != null && mb != undefined) mb.visibility = "hidden";
   }
   elem.style.top = "0px";
   elem.style.left = "0px";
   elem.style.marginTop = "0px";
   elem.style.marginLeft = "0px";
   elem.style.visibility='hidden';
   
   debug("openframe (" + idname + ", " + title + ");");
   
   
   
AddWindowFrame(elem);
 
var zd = elem.getAttribute("nozindex");
if (zd != "true") {
	resetZIndex();
	elem.style.zIndex = "100";
}


}

function closeframe(obj) {

  var myframe = getcontainer(obj);
  
  for (var i = 0; i < window["gadget"].length; i++) {
    if (window["gadget"][i] != null) {
    var p = window["gadget"][i].split("\n");
    if (p[0] == myframe.id) {
      //handelt es sich bei dem gadget um dieses frame?
         clearInterval(p[2]);
         window["gadget"][i] = null;
    }
    }
  }
  
  debug("closeframe ("+myframe.id+");");
  myframe.style.visibility='hidden';
  myframe.parentNode.removeChild(myframe);
  writegadgets();
    
}


//ZIndex Table
/*

resetZIndex:  ontop = 150  normal = 0  
openframe:   actual framewindow = 100
messagebox:  200



*/

