
var qurl = new Array();
var qshowin = new Array();
var qloader = new Array();
var qpoststring = new Array();
var qwaiting = new Array();
var counter = 0;
var target = '';
var lastcounter = new Object();

function Timeout() {
window.setTimeout("Timedeamon()", 5000);
}

function Timedeamon() {
Timeout();
}

function refreshPage() {
    actcounter = lastcounter["MENU_LIST"];
    if (actcounter != undefined)
    	{
	    queueRequest(qurl[actcounter], qshowin[actcounter], false, '', qpoststring[actcounter]);
	    }

    actcounter = lastcounter["QINFO"];
    if (actcounter != undefined)
    	{
	    queueRequest(qurl[actcounter], qshowin[actcounter], false, '', qpoststring[actcounter]);
	    }

    actcounter = lastcounter["MAIN"];
    if (actcounter != undefined)
    	{
	    queueRequest(qurl[actcounter], qshowin[actcounter], false, '', qpoststring[actcounter]);
	    }

    actcounter = lastcounter["MAIN2"];
    if (actcounter != undefined)
    	{
	    queueRequest(qurl[actcounter], qshowin[actcounter], false, '', qpoststring[actcounter]);
	    }
}

function queueRequest(url, target, loader, Form, Post) {
	prev = counter - 1;
    qwaiting[counter] = true;
    qurl[counter] = url;
    qshowin[counter] = target;
    qloader[counter] = loader;
    lastcounter[target] = counter;
    if (Form == '')
        {
        qpoststring[counter] = Post;
        }
    else
        {
        qpoststring[counter] = convertFormData(Form) +"&"+ Post;
        }
	//Jetzt erst den Loader, da er die Daten erst aus dem Form ziehen muss!
    if (loader)
        {
        document.getElementById(target).innerHTML = "Request queued as #"+counter+", please wait!";
        }
    //Jetzt den ersten Request triggern
    if (counter == 0)
    	{
    	doRequest(qurl[counter], qshowin[counter], qloader[counter], qpoststring[counter]);
    	}
    else
    	{
    	if (qwaiting[prev] == false)
    	   {
           doRequest(qurl[counter], qshowin[counter], qloader[counter], qpoststring[counter]);
    	   }
    	}
	counter++;
    qwaiting[counter] = false; //Die nächste wartet noch nicht!
}

function doRequest(url, target, loader, Post) {
    if (loader)
        {
        document.getElementById(target).innerHTML = "Loading, please stand by...";
        }

    http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
            // zu dieser Zeile siehe weiter unten
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    if (!http_request) {
        alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
        return false;
    }
    http_request.onreadystatechange = displayContent;
    http_request.open('GET', url, true);
    http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    http_request.send(Post);
}

function displayContent() {
    if (http_request.readyState == 4 && http_request.status == 200)
        {
        //Jetzt die richtige Queue suchen
        search = true;
        i = 0;
        while (search)
            {
            if (qwaiting[i])
                {
                search=false;
                }
            else
                {
                i++;
                }
            }
            //Jetzt den Scheiss ausgeben!
            document.getElementById(qshowin[i]).innerHTML = (http_request.responseText);
            d = self.document.getElementById(qshowin[i]);
            d.scrollTop=0;
            qwaiting[i] = false;
            next = i+1;
            if (qwaiting[next])
            	{
	            doRequest(qurl[next], qshowin[next], qloader[next], qpoststring[next]);
	            }
        }
}

function convertFormData(Form) {
var content = '';
first = 'true';
anzahl = document.forms[Form].length;
for (var i = 0; i <= (anzahl-1); i++)
    {
    switch (document.forms[Form].elements[i].type)
        {
        case "text":
        if (first == 'true')
            {
            first = 'false';
            }
        else
            {
            content = content+"&";
            }
        content = content + document.forms[Form].elements[i].name + "=" + document.forms[Form].elements[i].value;
        break;

        case "textarea":
        if (first == 'true')
            {
            first = 'false';
            }
        else
            {
            content = content+"&";
            }
        content = content + document.forms[Form].elements[i].name + "=" + document.forms[Form].elements[i].value;
        break;

        case "select-one":
        if (first == 'true')
            {
            first = 'false';
            }
        else
            {
            content = content+"&";
            }
        content = content + document.forms[Form].elements[i].name + "=" + document.forms[Form].elements[i].value;
        break;

        case "hidden":
        if (first == 'true')
            {
            first = 'false';
            }
        else
            {
            content = content+"&";
            }
        content = content + document.forms[Form].elements[i].name + "=" + document.forms[Form].elements[i].value;
        break;
        }
    }
mesg = content;
//alert(mesg);
return mesg;
}

var x,y;
var tx, ty;
var ObjName = 'None';
var isDrag = false;

var firefox=document.getElementById&&!document.all;

document.onmousemove=mouseMove;
document.onmousedown=selectMouse;
document.onmouseup=function(){
	//Looking if we have to save
    var Typo = ObjName.slice(0,4);
	if (Typo == "Move")
		{
		var box=document.getElementById(ObjName);
        var Number = ObjName.slice(4);
		//alert(Number);
		var postdata = "Action=Savesyspos&S_Id="+Number+"&S_Top="+box.style.top+"&S_Left="+box.style.left;
		//alert(postdata);
        //queueRequest('engine.php', 'System', true, '', postdata);
		}
	isDrag=false;
	ObjName = 'None';
}

function selectMouse(e)
{
	if (firefox){
		//verify that user clicked the 'titlebar' element
		var p=e.target;
		if (p.attributes['id'] && ObjName == 'None'){
            ObjName = p.attributes['id'].value;
            var Typo = ObjName.slice(0,4);
            //alert(Typo);
            if (Typo == "Move" || Typo == "DATA" || Typo == "MENU" || Typo == "QUIC" || Typo == "TOOL")
            	{
                isDrag=true;
                x=e.clientX;
                y=e.clientY;
                //get the widget coordinates from the root, 'widget1' element
                tx=parseInt(document.getElementById(ObjName).style.left);
                ty=parseInt(document.getElementById(ObjName).style.top);
                }
		}
	}
    else{       //IE
            //verify that user clicked the 'titlebar' element
            var p=event.srcElement;
            //alert(ObjName);
            if (p.attributes['id'] && ObjName == "None")
            	{
                ObjName = p.attributes['id'].value;
                var Typo = ObjName.slice(0,4);
	            if (Typo == "Move" || Typo == "DATA" || Typo == "MENU" || Typo == "QUIC" || Typo == "TOOL")
                    {
                    isDrag=true;
                    x=event.clientX;
                    y=event.clientY;
                    //get the widget coordinates from the root, 'widget1' element
                    tx=parseInt(document.getElementById(ObjName).style.left);
                    ty=parseInt(document.getElementById(ObjName).style.top);
                    }
            }
        }
}

function mouseMove(e)
{
  if (isDrag)	//only move the box if the user is dragging it
  {
	var box=document.getElementById(ObjName);
	if (firefox){
		newleft = Math.round((e.clientX + (tx - x)) / 4) * 4;
		newtop = Math.round((e.clientY + (ty - y)) / 4) * 4;
		//box.style.left = e.clientX + (tx - x);
		box.style.left = newleft + "px";
		box.style.top  = newtop + "px";
	}
	else{	//IE
		newleft = Math.round((event.clientX + (tx - x)) / 4) * 4;
		newtop = Math.round((event.clientY + (ty - y)) / 4) * 4;
		//box.style.left = event.clientX + (tx - x);
		//box.style.top  = event.clientY + (ty - y);
		box.style.left = newleft;
		box.style.top  = newtop;
	}
  }
}

var myTimeout;
function scrollPage(dir, target) {
  if (dir == 'down')
  	{
  	d = self.document.getElementById(target);
    y=d.scrollTop;
    y=y+5;
    d.scrollTop=y;
  	}
  if (dir == 'up')
  	{
  	d = self.document.getElementById(target);
    y=d.scrollTop;
    y=y-5;
    d.scrollTop=y;
  	}
  myTimeout = setTimeout("scrollPage('" + dir + "', '"+ target +"')", 50);
}

function swapclass(div)
{
	Classname = document.getElementById(div).className;
	Hoverstring = Classname.substr(Classname.length-6);
	if(Hoverstring == "_hover")
	{
	Newclass = Classname.substr(0, Classname.length-6);
	//alert(Newclass);
	}
	else
	{
	Newclass = Classname + "_hover";
	//alert(Newclass);
	}
	document.getElementById(div).className = Newclass;
}

