/* (C) 2008 by e-Consultance                                     	*/
/* Verwendung nur mit Link auf meine Homepage von der Startseite 	*/
/* windows.js enthält die wesentlichen Routinen für die           */
/* Aufbereitung der Boxen und die Ansteuerung                     */

var isInit=false;
var windowContainer;
var windowName;
var element=false;
var namelinka=false;
var name=false;
var elementa=false;
var element2=false;
var namelinkx=false;
var elementx=false;
var lastboxlink=false;
var lastbox=false;
var lasttitle=false;
var isatside=false;

var mouseDownWindow=false;
var mouseDownWindow2=false;
var mouseUp=false;
var mousePosIsSet=false;
var mousePosX;
var mousePosY;
var mousePosIsSet2=false;
var indexcount;
var debugOut="";
var debug=false;
var debugcount=1;
var toggle=1;
var infotext = new Array(100);    // enthält die Texte und weitere Infos
var infoclosed=0;
var cr="<br /><br />";  				// Eine Leerzeile erzwingen
                                		// ein a href einleiten und dann mit $e das Ende der Adresse definieren!
var ahref="<a title=\'Link aufrufen\' target=\'blank\' href=\'";
var e="\'>";                    		// Ende eines Tags
var a="</a>";               			// einen a-Link-Ende Tag setzen </a>
var spana="<span style=\'";     		// Span öffnen Anfang
var spane="</span>";             	// Span beenden Ende

function initinfo(number){
    infotext[number]=new Object();
	 infotext[number]["Title"]="Infobox: "+number;
	 infotext[number]["Content"]="undefiniert";
	 infotext[number]["SizeX"]=250;
	 infotext[number]["SizeY"]=1;
	 infotext[number]["PosX"]=50;
	 infotext[number]["PosY"]=50;
	 infotext[number]["oPosX"]=0;
	 infotext[number]["oPosY"]=0;
	 infotext[number]["oSizeX"]=0;
	 infotext[number]["oSizeY"]=0;
	 infotext[number]["Linked"]=false;
	 infotext[number]["visible"]=false;
 }

function checkinfo(number){
    if (infotext[number]["Content"]=="undefiniert")
	 { document.write("<span class=\"undefbox\">");
	   document.write(" Infobox "+number+" ist undefiniert! </span>");
	 }
	 namelinka = "Window"+number+"Refa";
	 name = "Window"+number+"Ref";
    //document.forms["JAVATRACE"].ausgabe.value = "NLA="+ namelinka+" !";
    elementa=getElement("id",namelinka);
	 infotext[number]["oPosX"]=elementa.offsetLeft;
	 infotext[number]["oPosY"]=elementa.offsetTop;
	 infotext[number]["Linked"]=true;

 }

function windowInit(){
  if(!isInit){
	 isInit=true;
    //element = getElement("tagname","body",0);
    //document.forms["JAVATRACE"].ausgabe.value = element.innerHTML;
    //element.innerHTML += '<div id="window_container"></div>'; 		// Dieser Befehl verursacht, dass die TagCloud verschwindet, jetzt einfach in die Navigation gesetzt
    //element=false
    windowContainer = getElement("id","window_container");
	 indexcount=5;
  }
  return true;
}


function windowAddNr(name,number){
	windowAdd(name,infotext[number]["Title"],
						infotext[number]["Content"],
						infotext[number]["SizeX"],
						infotext[number]["SizeY"],
						infotext[number]["PosX"],
						infotext[number]["PosY"],false)
						if (infotext[number]["visible"]) {infotext[number]["visible"]=false;}else{infotext[number]["visible"]=true;}

	//return true;
}

function windowAdd(name,titel,content,sizeX,sizeY,posX,posY,notiz){
  var windowSource="";
  var a;
  var xelement;
  var showit;
  	showit=true;
  	if (!isInit) {windowInit();}
	if(isInit && name && titel)
	{	deactivate();
   	if(getElement("id",name))
	 	{ windowName=name;
		   xelement=getElement("id",windowName);
		   //document.formular.ausgabe.value = "Display="+ xelement.style.display;
	      if (xelement.style.display != "none")
	      {  deactivate();
				xelement.style.display = "none";
				showit=false;
			}
		}
		if (showit)
		{	//document.formular.ausgabe.value = "Showit="+ showit;

			if(!titel){ titel="&nbsp;"; }
	    	if(!content){ content=""; }
	    	if(!sizeX || !sizeY){ sizeX=250; sizeY=120;}
	    	if(!posX || !posY){posX=0; posY=0;  }
	    	/* Element-Objekt zur ID ermitteln */
		 	if (!notiz)
	    	{	if(getElement("id",name+'a'))
			 	{  xelement=document.getElementById(name+'a');
				  	/* Position bestimmen und berücksichtigen */
			 	 	a=getPosition(xelement);
			    	posX += a.x;
			    	posY += a.y;
				 }
			 }
			if(!getElement("id",name)){
			windowSource+='<div class="window" style="position: absolute; left:'+posX+'px; top:'+posY+'px; width: '+(sizeX+9)+'px;';
			windowSource+='" id="'+name+'">';
			windowSource+='<div class="window_title" id="'+name+'t" title="Infobox mit Maus verschieben" onmousedown="windowMouseDown(\''+name+'\')">';
	    	windowSource+='<div class="window_title_right">';
			windowSource+='<a href="JavaScript: windowOff(\''+name+'\')" class="closeit" title="Close">&nbsp;</a>';
			windowSource+='<a href="JavaScript: windowMin(\''+name+'\')" id="'+name+'min" class="minimize" title="Minimize">&nbsp;</a>';
		  	windowSource+='</div>';
			windowSource+='<div class="window_title_left">';
		 	//windowSource+='<a href="JavaScript: windowstd(\''+name+'\')" class="closeit2" title="Box auf Standardgr&ouml;&szlig;e">&#10063;</a>';
			//windowSource+='&nbsp;';
		  	//windowSource+='<a href="JavaScript: windowflacher(\''+name+'\')" class="closeit2" title="Box flacher">-</a>';
			//windowSource+='<a href="JavaScript: windowhoeher(\''+name+'\')" class="closeit2" title="Box h&ouml;her">+</a>';
			//windowSource+='&nbsp;';
			//windowSource+='<a href="JavaScript: windowschmaler(\''+name+'\')" class="closeit2" title="Box schm&auml;ler">&laquo;</a>';
			//windowSource+='<a href="JavaScript: windowbreiter(\''+name+'\')" class="closeit2" title="Box breiter">&raquo;</a>';
			windowSource+='<a href="JavaScript: windowMulti(\''+name+'\')" id="'+name+'multi" class="multi" title="Weitere Funktionen">&nbsp;</a>';
			windowSource+='<a href="JavaScript: windowAllOn(\''+name+'\')" id="'+name+'allon" class="allon" title="Alle anzeigen">&nbsp;</a>';
			windowSource+='<a href="JavaScript: windowAllOff(\''+name+'\')" id="'+name+'alloff" class="alloff" title="Alle schließen">&nbsp;</a>';
			windowSource+='<a href="JavaScript: windowAllSide(\''+name+'\')" id="'+name+'allside" class="allside" title="Alle an den Rand">&nbsp;</a>';
			windowSource+='<a href="JavaScript: windowAllMin(\''+name+'\')" id="'+name+'allmin" class="allmin" title="Alle minimieren">&nbsp;</a>';
			
			windowSource+='</div>';
			windowSource+=''+titel+'<div style="clear:both;"></div></div>';
	    	windowSource+='<div class="window_content" id="'+name+'c" ';
	    	if (sizeY!=1)
			 {	windowSource+='style="height: '+sizeY+'px;width: '+(sizeX)+'px;"'; }
			 else
			 {	windowSource+='style="width: '+(sizeX)+'px;"'; }
			windowSource+=' ><div class="window_innercontent">'+content;
  			windowSource+='</div></div><div id="'+name+'d" class="window_title2">';
			windowSource+='<div class="window_title2_right" title="mit Maus clicken und dann gedr&uuml;ckt bewegen"';
			windowSource+='onmousedown="windowMouseDown2(\''+name+'\')">&nbsp;</div><a href=\'http://www.e-consultance.de\' title=\'&copy; 2009 e-Consultance\'>&copy; 2009 e-Consultance</a>';
			windowSource+='</div>';

		 	 windowContainer.innerHTML += windowSource;
			}
		 	windowName=name;
	    	element=getElement("id",windowName);
			element.style.display = "block";
	    	element.style.zIndex = indexcount;
	    	indexcount +=1;
	    	activate(name);
	    }
  	}
}

function deactivate(){
if (lastboxlink!= false){
	lastboxlink.className = "boxlink";
	lastbox.style.color = "#000000";
	lasttitle.className="window_title";
	}
}
function activate(name){
	lastbox=getElement("id",name);
	lasttitle=getElement("id",name+"t");
	lastboxlink=getElement("id",name+"a");
if (lastboxlink!= false){
	lastboxlink.className = "boxlink2";
	lastbox.style.color = "#FFFFFF";
	lasttitle.className="window_title_red";
	}
}
// Rechte Funktionsleiste _________________________________________________
function windowOff(name){  									// _______________________CLOSE
  if(isInit){
    deactivate();
    windowName=name;
    element=getElement("id",windowName);
    element.style.display = "none";
  }
}

function windowMin(name){ 										// _______________________Minimze and Restore
var infoelem=false;
var nr1;
var nr2;
var nr;
  if(isInit){
  	 //document.forms["JAVATRACE"].ausgabeb.value = "Name="+ name+" !";
	 nr1 = name.substring(7,6);
    nr2 = name.substring(8,7);
    if (nr2!="R") {nr=parseInt(nr1)*10+parseInt(nr2);}else {nr=parseInt(nr1);}
    //document.forms["JAVATRACE"].ausgabe.value = "NR="+ nr*5+" !";
	 deactivate();
    windowName=name;
    infoelem=getElement("id",windowName);
    element=getElement("id",windowName+"c");
    if (element.style.display!= "none")
    {
      infotext[nr]["oSizeY"]=infoelem.offsetHeight
	 	infotext[nr]["oSizeX"]=infoelem.offsetWidth
	 	infotext[nr]["oPosX"]=infoelem.offsetLeft
	 	infotext[nr]["oPosY"]=infoelem.offsetTop
	 	infoelem.style.top = 10+infoclosed*18+"px";
      infoelem.style.left =10+"px";
      infoelem.style.height = 18+"px";
	 	infoelem.style.width= 200+"px";
	 	element.style.display = "none";
  	 	element=getElement("id",name+"min");
 		element.className="resize"; 					// Rechte Leiste, resize Style setzen
 		element.title="Box einblenden";
 		
		// alle linken FUnktionen deaktivieren
		element=getElement("id",name+"allon");
		element.style.display = "none";
		element=getElement("id",name+"alloff");
	   element.style.display = "none";
		element=getElement("id",name+"allside");
	   element.style.display = "none";
		element=getElement("id",name+"allmin");
	   element.style.display = "none";
	   element=getElement("id",name+"multi");
	   element.style.display = "none";

	 	infoclosed+=1;
	 }
    else
    { //infoelem.style.height 	=infotext[nr]["oSizeY"]+"px";
      infoelem.style.width 	=infotext[nr]["oSizeX"]+"px";
      infoelem.style.top 		=infotext[nr]["oPosY"]+"px";
      infoelem.style.left 		=infotext[nr]["oPosX"]+"px";
      infoelem.style.width		= infotext[nr]["oSizeX"]+"px";
	 	infoelem.style.height = "";        		 	// Höhe wieder dynamisch
	 	infoelem.style.display 	= "block";  		// sichtbar
	 	element.style.display 	= "block";  		// Inhalt sichbar
	 	element=getElement("id",name+"min"); 		// Rechte Leiste, minize Style setzen
 		element.className="minimize";
		element.title="Box minmieren";
		
		 // linke Box Multifunktion einblenden
   	element=getElement("id",name+"multi");
    	element.className = "multi";
    	element.style.display = "block";
    	element.title = "Weitere Funktionen";


	 }
    element=getElement("id",windowName+"d");
    if (element.style.display!= "none")
    { element.style.display = "none";}
    else
    {element.style.display = "block";}
	 activate(name);
  }
}

function windowAllOn(name){                        // __________________ Alle einschalten
var i;
   windowMulti(name);
   for (i=1;i<100;i++)
   { if ((infotext[i]["visible"]==false) && (infotext[i]["Linked"]==true))
   		{
			//document.forms["JAVATRACE"].ausgabeb.value += i+" ";
			windowAddNr('Window'+i+'Ref',i);
			}
	  		
	}
}

function windowAllOff(name){                       // ___________________ Alle schließen
var i;
   //document.forms["JAVATRACE"].ausgabeb.value = "FUnktion Alloff aufgrufen="+ name+" !";
   windowMulti(name);
   for (i=1;i<100;i++)
   { if (infotext[i]["visible"]==true)
   		{
			//document.forms["JAVATRACE"].ausgabeb.value += i+" ";
			windowAddNr('Window'+i+'Ref',i);
			}

	}
}

function windowAllSide(name){                      // ____________________ Alle an die Seite
var nr; var i;
   //document.forms["JAVATRACE"].ausgabeb.value = "FUnktion AllSide aufgrufen="+ name+" !";
   windowMulti(name);
   if (isatside)
   { isatside = false;
    
     for (i=1;i<100;i++)
     { if ((infotext[i]["visible"]==true) && (infotext[i]["Linked"]==true))
   		{ //document.forms["JAVATRACE"].ausgabe.value = "at side " + i;
			windowName='Window'+i+'Ref';
    		infoelem=getElement("id",windowName);
			nr=i;
   		infoelem.style.left = infotext[nr]["oPosX"]+"px";
	 		}
		}
   	isatside = false;
	}
	else
   { isatside = true;
     for (i=1;i<100;i++)
     { if ((infotext[i]["visible"]==true) && (infotext[i]["Linked"]==true))
   		{
			windowName='Window'+i+'Ref';
    		infoelem=getElement("id",windowName);
			nr=i;
   		infotext[nr]["oSizeY"]=infoelem.offsetHeight
	 		infotext[nr]["oSizeX"]=infoelem.offsetWidth
	 		infotext[nr]["oPosX"]=infoelem.offsetLeft
	 		infotext[nr]["oPosY"]=infoelem.offsetTop
	 		//document.forms["JAVATRACE"].ausgabeb.value = infotext[nr]["oPosX"] + " "+infotext[nr]["oSizeX"] +" "+ window.outerWidth;
			if ((infotext[nr]["oPosX"] + infotext[nr]["oSizeX"]/2 )< (window.outerWidth/2))
			 { infoelem.style.left=0+"px";}
			 else
			 { infoelem.style.left=window.outerWidth - infoelem.offsetWidth-10+"px";}
			}
    	}
	}
}
function windowAllMin(name){                       // ____________________ Alle minimieren
var windowName;
   //document.forms["JAVATRACE"].ausgabeb.value = "FUnktion AllMin aufgrufen="+ name+" !";
   windowMulti(name);
   for (i=1;i<100;i++)
   { if (infotext[i]["visible"]==true)
   		{
			//document.forms["JAVATRACE"].ausgabeb.value += i+" ";
			windowName = 'Window'+i+'Ref';
			element=getElement("id",windowName+"c");
         if (element.style.display!= "none")
         { windowMin(windowName);}
			}

	}
}
function windowX(name){
   //document.forms["JAVATRACE"].ausgabeb.value = "FUnktion X aufgrufen="+ name+" !";
}

function windowMulti(name){
var xname;
	 element=getElement("id",name+"allon");
	 if (element.style.display!="block")
	 { element.style.display = "block";
	   element=false;
	   xname= name+"alloff";
	 	//document.forms["JAVATRACE"].ausgabeb.value = "FUnktion Multi aufgrufen="+ xname+" !";
    	element=getElement("id",name+"alloff");
	 	element.style.display = "block";
	 	element=getElement("id",name+"allside");
    	element.style.display = "block";
	 	element=getElement("id",name+"allmin");
    	element.style.display = "block";
    	element=getElement("id",name+"multi");
    	element.className = "multigrey";
    	element.title = "Weitere Funktionen ausblenden";
	}
	else
	 { element.style.display = "none";
	   element.style.display = "none";
		element=getElement("id",name+"alloff");
    	element.style.display = "none";
	 	element=getElement("id",name+"allside");
    	element.style.display = "none";
	 	element=getElement("id",name+"allmin");
    	element.style.display = "none";
    	element=getElement("id",name+"multi");
    	element.className = "multi";
    	element.title = "Weitere Funktionen";
	}
   //document.forms["JAVATRACE"].ausgabeb.value = "FUnktion X aufgrufen="+ name+" !";
}


// __________________________ MOUSE MOVE _______________________________________________________

function windowMouseDown(name){

 if(isInit) {
    deactivate();
    windowName=name;
    element=getElement("id",name+"a");
    lastboxlink=element;
	 element.className = "boxlink2";
	 element=getElement("id",windowName);
    element2=getElement("id",windowName+'c');
    element.style.zIndex = indexcount;
    indexcount +=1;
    mouseDownWindow=true;
    mouseDownWindow2=false;
    mouseUp=false;
    activate(name);
  }
}

function windowMouseDown2(name){

 if(isInit) {
    deactivate();
	 windowName=name;
    element=getElement("id",name+"a");
    lastboxlink=element;
	 element.className = "boxlink2";
    element=getElement("id",windowName);
    element2=getElement("id",windowName+'c');
    element.style.zIndex = indexcount;
    indexcount +=1;
	 mouseDownWindow=false;
	 mouseDownWindow2=true;
	 mouseUp=false;
    activate(name);
  }
}

function windowMouseUp(){
  if(isInit){
    if(element){
      element.style.zIndex = "0";
      element.style.zIndex = indexcount;
      //alert("index "+indexcount);
      indexcount +=1;
      element=false;
      mouseDownWindow=false;
      mouseDownWindow2=false;
      mouseUp=true;
	 }
    }
    windowName="";
    mouseDownWindow=false;
    mouseDownWindow2=false;
    mousePosIsSet=false;
    //elementa=getElement("id",namelinka);
	 //elementa.className = "boxlink";

}

// ______________________________________________ MOVE Calculation ___________________________________________________________
function windowMouseMove(ev){
var e, oh, ow, xoh, xow, row, felement, anytext;
  //toggle = toggle+1;
  if(isInit){
    if(!ev){
      ev=window.event;
       }

    if(mouseDownWindow){

      if(!mousePosIsSet){
 
        mousePosX=(ev.pageX)?(ev.pageX):(ev.clientX);
        mousePosY=(ev.pageY)?(ev.pageY):(ev.clientY);
        //mousePosX2=0;
        //mousePosY2=0;
        mousePosIsSet=true;
      }
		
      newMousePosX=(ev.pageX)?(ev.pageX):(ev.clientX);
      newMousePosY=(ev.pageY)?(ev.pageY):(ev.clientY);
      //document.forms["JAVATRACE"].ausgabe.value = "MPX="+ mousePosX+" MPY="+mousePosY+" NMPX="+newMousePosX+" NMPY="+ newMousePosY+" !";
		//document.forms["JAVATRACE"].ausgabeb.value = "MPX2="+ mousePosX2+" MPY2="+mousePosY2+" !";

   	if((element.offsetTop-(mousePosY-newMousePosY))>=0){
      	//document.forms["JAVATRACE"].ausgabeb.value = " hier !";
		  element.style.top  = (element.offsetTop-(mousePosY-newMousePosY))+"px";
      }else{
        element.style.top = "0px";
        //document.forms["JAVATRACE"].ausgabeb.value = " zwei !";
      }


      element.style.left = (element.offsetLeft-(mousePosX-newMousePosX))+"px";
      //document.forms["JAVATRACE"].ausgabeb.value = " zwei !";
      if (element.offsetLeft<0)
      {element.style.left =0; }


      mousePosX=(ev.pageX)?(ev.pageX):(ev.clientX);
      mousePosY=(ev.pageY)?(ev.pageY):(ev.clientY);
    }
		
    if(mouseDownWindow2){
   	if (ev.pageX || ev.pageY) 	{
			posX = ev.pageX;
			posY = ev.pageY;
		}
		else if (ev.clientX || ev.clientY) 	{
			posX = ev.clientX + document.body.scrollLeft
				+ document.documentElement.scrollLeft;
			posY = ev.clientY + document.body.scrollTop
				+ document.documentElement.scrollTop;
		}
		
      anytext = element.style.left.split("p");
		ow= (posX-anytext[0]+5);
		if (ow > 200)
	   {  xow= ow+"px";}
	   else  { xow = "200px"; }
	   
	   element.style.width  = xow;
	   element2.style.width  = (element.offsetWidth-10)+"px";
	   
	   anytext = element.style.top.split("p");
	   oh = (posY - anytext[0]);
	   if (oh > 50+34)
	   { 	xoh = (oh-34)+"px"; }
	 	else	{	xoh = "50px"; }
		element2.style.height = xoh;
    }
  }
 }

function error(strerror){
  getElement("id","error").innerHTML=strerror;
}



function getPosition(element)
/* der Aufruf dieser Funktion ermittelt die absoluten Koordinaten
   des Objekts element */
{
  var elem=element,tagname="",x=0,y=0;

 /* solange elem ein Objekt ist und die Eigenschaft offsetTop enthaelt
   wird diese Schleife fuer das Element und all seine Offset-Eltern ausgefuehrt */
  while ((typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined"))
  {
    
    y+=elem.offsetTop;     /* Offset des jeweiligen Elements addieren */
    x+=elem.offsetLeft;    /* Offset des jeweiligen Elements addieren */
    tagname=elem.tagName.toUpperCase(); /* tag-Name ermitteln, Grossbuchstaben */

/* wenn beim Body-tag angekommen elem fuer Abbruch auf 0 setzen */
    if ((tagname=="BODY") || (tagname=="HTML"))
    {  elem=0;}

/* wenn elem ein Objekt ist und offsetParent enthaelt
   Offset-Elternelement ermitteln */
    if (typeof(elem)=="object")
      if (typeof(elem.offsetParent)=="object")
      {  elem=elem.offsetParent;
      }
  }

/* Objekt mit x und y zurueckgeben */
  position=new Object();
  position.x=x;
  position.y=y;
  return position;
}

function alertPosition(elementId)
/* gibt eine Meldung mit x und y des zu elementId gehoerenden Elements aus */
{
  var a,element;

/* Element-Objekt zur ID ermitteln */
  element=document.getElementById(elementId);

/* Position bestimmen und melden */
  a=getPosition(element);
  window.alert("Position "+elementId+": ("+a.x+","+a.y+")");
}


document.onmousemove = windowMouseMove;
document.onmouseup   = windowMouseUp;

/* zum Verkleinern des Fensters, Breite muss explizit gesetzt werden
.window_content{display:none;}
.window_title2{display:none;}
a.closeit2{display:none;}

*/
var x;
for (x=1;x<100;x=x+1){initinfo(x);}

// ______________________________ Alte Routinen ________________________________________

function windowbreiter(name){
  if(isInit){
  	 deactivate();
    windowName=name;
    element=getElement("id",windowName);
//    element2=getElement("id",windowName+"c");
    element.style.width  = (element.offsetWidth+20)+"px";
  //  element2.style.width  = (element.offsetWidth-10)+"px";
	 activate();
  }
}
function windowschmaler(name){
  if(isInit){
    deactivate();
    windowName=name;
    element=getElement("id",windowName);
    element.style.width  = (element.offsetWidth-20)+"px";
    activate(name);
  }
}
function windowflacher(name){
  if(isInit){
  deactivate();
    windowName=name;
    element=getElement("id",windowName+"c");
    element.style.height  = (element.offsetHeight-40)+"px";
	 activate(name);
  }
}
function windowhoeher(name){
  if(isInit){
	 deactivate();
    windowName=name;
    element=getElement("id",windowName+"c");
    element.style.height  = (element.offsetHeight+40)+"px";
    activate(name);
  }
}
function windowstd(name){
  if(isInit){
   deactivate();
    windowName=name;
     element=getElement("id",windowName);
//     element2=getElement("id",windowName+"c");
     element.style.width  = 250+"px";
 //    element2.style.width  = 240+"px";
 //    element2.style.height  = 200+"px";
    activate(name);
  }
}
