/**
 * dogma Library - Global function collection
 * 
 * Diese Bibliothek beinhaltet alle globalen statischen Funktionen der
 * dogma Library.
 *
 * @author Steffen Müller
 * @version 0.1
 */

// Globale Variablen //////////////////////////////////////////////////////////
dUseIE = false;
var dDebugActive = false;
var dDebugWindow;

// Startup ////////////////////////////////////////////////////////////////////
function dStartUp ()
{
    // Browserweiche
    if (navigator.appName.match(/^microsoft/i))
        dUseIE = true;
    else
        dUseIE = false;
        
    if (dDebugActive)
    {
	   	// Debugfenster erzeugen
	   	var dw = document.createElement("div");
	   	dw.style["position"] = "absolute";
	   	dw.style["right"] = "0px";
	   	dw.style["top"] = "0px";
	   	dw.style["width"] = "300px";
	   	dw.style["height"] = "300px";
	   	dw.style["border"] = "1px solid #000";
	   	dw.style["overflow"] = "scroll";
		document.getElementsByTagName("body")[0].appendChild(dw);
	   	dDebugWindow = dw;
	}
}

// Error Handling /////////////////////////////////////////////////////////////
function dError (msg)
{
	alert ("An error occured:\n\n"+msg);
}

function dDebug (msg)
{
	if (!dDebugActive) return;
	
	dDebugWindow.innerHTML = msg+"<br>"+dDebugWindow.innerHTML;
}

// Common Functions ///////////////////////////////////////////////////////////
function dGetNumericStyle (element, propname)
{
    ret = element.style[propname];
    if (!ret) return 0;
    ret = parseInt(ret);
    if (isNaN(ret))
        ret = element.currentStyle[propname];
    return ret;
}

function dGetPosY (obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function dGetPosX (obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function dGetEvent (event)
{
	if (!event) event = window.event;
	return event;
}

function dGetTarget (event)
{
	event = dGetEvent(event);

    // Zielobjekt bestimmen
	target = null;
	if (!dUseIE) target = event.target;
	else target = event.srcElement;
	return target;
}

function dPlaySound (soundname)
{
	var sound = document.getElementById(soundname);
	if (!sound) return;
	
	try
	{
		sound.Stop();
		sound.Rewind();
	}
	catch (e) {}
	try
	{
		sound.DoPlay();
	}
	catch (e)
	{
		try
		{
			sound.Play();
		}
		catch (e) {}
	}
}
