﻿
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 == null || posinst == undefined || posinst == "null") posinst = instance;
           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() {
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 {
	        instance.style.zIndex = "0";
         }
      }
    }
}

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 (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 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 = 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 + mscript;
       }
       }
    }  
    } else {
    }
      if (ms == "") return null; else return ms;
}

function loadgadget(page, target, withrefresh, interval, dounload, title, evalscript) {

  if (target=="null" || target=="undefined") {
    ajax_requesttarget(null,page,"");
  }

  var oo = document.getElementById(target);
  if (oo == null) {
    openframe(target,"");
  }
  AddWindowFrame(document.getElementById(target));
  
  var tt = document.getElementById(target+"_title");
  if (tt != "null" && tt != "undefined" && tt != null) {
    tt.innerHTML = 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);
  }
  
  ajax_requesttarget(target,page,params);
  
    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);
  }
  
    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) {
        //alert("hinzufuegen:\n" + realtarget+"\n"+page+"\n"+id+"\n"+withrefresh+"\n"+interval+"\n"+title+"\n"+evalscript);
        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 obj;
  for (var i = 0; i < x.length; i++) {
     if (issubcontainer(x[i],obj)) {
       return x[i];
     }
  }
  return obj;
}

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) {
var ret = copy("shadowframe",idname);
document.getElementById(idname+"_title").innerHTML = title;
document.getElementById(idname).style.visibility = "visible";
var elem = document.getElementById(idname);
   if (elem.getAttribute("noresize") == "true") {
     var mb = document.getElementById(idname+"_maxbox");
     if (mb != "null" && mb != "undefined" && mb != null) {
       mb.visibility = "hidden"
     }
   }
   elem.style.top = "0px";
   elem.style.left = "0px";
   elem.style.marginTop = "0px";
   elem.style.marginLeft = "0px";
   
   
AddWindowFrame(elem);
 
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;
    }
    }
  }
  
  myframe.parentNode.removeChild(myframe);
  
  writegadgets();
    
}


//ZIndex Table
/*

resetZIndex:  ontop = 150  normal = 0  
openframe:   actual framewindow = 100
messagebox:  200



*/
