/* setzt den Inhalt eines HTML Tags bzw. liest ihn aus
   Da dies Browser spezifisch ist (IE => innerText, Firefox => textContent)
   werden stattdessen diese Funktionen verwendet.
   Parameter: Element ID
   Aufruf:    a=getPosition('element ID');
   Rückgabe:  a.x => x-Position  
              a.y => y-Position
*/

function getTagContent(p_element_id)
{
var v_item, v_content;
v_item = document.getElementById(p_element_id);
v_content = v_item.innerText;

if (!v_content)
	v_content = v_item.textContent;
return v_content;
}

function setTagContent(p_element_id, p_content)
{
var v_item, v_content;
v_item = document.getElementById(p_element_id);
v_content = v_item.innerText;
if (!v_content)
	v_item.textContent=p_content;
else
	v_item.innerText=p_content;
}

// ##########################################

function RowSelection(p_object, p_deselect)
// markiert ein Objekt oder hebt die marlierung auf, in dem es den Hintergrund ändert
// Beispiel für TR: <tr onmouseover="row_selection(this);" onmouseout="row_selection(this,'x');">
{
if (p_deselect)
	{//p_object.style.backgroundColor='#404040';
	//p_object.style.color='#ffd42a';
	p_object.className='';	
	}
else
	{//p_object.style.backgroundColor='#505050';
	//p_object.style.backgroundColor='#fbb117';
	//p_object.style.color='#000000';
	p_object.className='rowselect';
	}
}


// ##########################################

function getPosition(p_element_id)
{
/* der Aufruf dieser Funktion ermittelt die absoluten Koordinaten des Objekts element 
   Parameter: Element ID
   Aufruf:    a=getPosition('element ID');
   Rückgabe:  a.x => x-Position  
              a.y => y-Position
*/
var elem,tagname="",x=0,y=0;
v_elem=document.getElementById(p_element_id);
  
/* solange v_elem ein Objekt ist und die Eigenschaft offsetTop enthaelt
wird diese Schleife fuer das Element und all seine Offset-Eltern ausgefuehrt */

if(!v_elem) 
	{alert('JS Error: Tag ' + p_element_id+ ' not found');
	x=0;
	y=0;
	}
else
	{while ((typeof(v_elem)=="object")&&(typeof(v_elem.tagName)!="undefined"))
		{y+=v_elem.offsetTop;     /* Offset des jeweiligen Elements addieren */
		x+=v_elem.offsetLeft;    /* Offset des jeweiligen Elements addieren */
		tagname=v_elem.tagName.toUpperCase(); /* tag-Name ermitteln, Grossbuchstaben */
		
		/* wenn beim Body-tag angekommen v_elem fuer Abbruch auf 0 setzen */
		if (tagname=="BODY")
			v_elem=0;
	
		/* wenn elem ein Objekt ist und offsetParent enthaelt
		Offset-Elternelement ermitteln */
		if (typeof(v_elem)=="object")
			if (typeof(v_elem.offsetParent)=="object")
				v_elem=v_elem.offsetParent;
		}
	}	

/* Objekt mit x und y zurueckgeben */
position=new Object();
position.x=x;
position.y=y;
return position;
}

// ##########################################

function alertPosition(p_element_id)
/* gibt eine Meldung mit x und y des zu elementId gehoerenden Elements aus */
{
a=getPosition(p_element_id);
window.alert("Position "+p_element_id+": ("+a.x+","+a.y+")");
}

// ##########################################

function showPreview(p_source, p_dest) 
/* Zeigt eine Vorschau mit HTML Tags des Feldes p_source (textarea) im tag mit der ID p_dest (div oder span) */
{
var v_source = document.getElementById(p_source).value;
v_dest = v_source.split(/\n/).join("<br />");
var commentObj = document.getElementById(p_dest);
commentObj.innerHTML = v_dest;
}