function createXMLHttpRequest()
{
  var ua; 

  if(window.XMLHttpRequest)
  { 
    try
    { 
      ua = new XMLHttpRequest();
    }
    catch(e)
    {
      ua = false;
    } 
  }
  else if(window.ActiveXObject)
  {
    try
    {
      ua = new ActiveXObject('Microsoft.XMLHTTP'); 
    }
    catch(e)
    {
      ua = false;
    }
  } 
  return ua; 
}
 
var AjaxReq;
var target;
var currentScrollPosition = 0;

function sendFeedback(url)
{
	AjaxReq = createXMLHttpRequest();

	if (AjaxReq == null)
	{
		return;
	}
	
	AjaxReq.open("Get", url, true);

	AjaxReq.send(null);
}

function sendRequest(url,targetID)
{
	AjaxReq = createXMLHttpRequest();

	if (AjaxReq == null)
	{
		return;
	}
	AjaxReq.onreadystatechange = requestStatusChange;
	target=targetID;
	
	AjaxReq.open("Get", url, true);

	AjaxReq.send(null);

}

function requestStatusChange() 
{ 
	switch(AjaxReq.readyState) 
	{ 
		case 0: 
		case 1: 
		case 2: 
		case 3: return; 
		case 4: break; 
	} 
	if(AjaxReq.status == 200)
	{
		if(AjaxReq.responseText!="0" && AjaxReq.responseText!="")
		{
			var code = "<script language=\"JavaScript\">" + AjaxReq.responseText + "<\/script>";
			var code2 = code.replace("document.getElementById('Button')", "//document.getElementById('Button')")
			code2 = code2.replace("document.getElementById('Button').innerHTML += \"<a", "//document.getElementById('Button').innerHTML += \"<a")
			document.getElementById('Button').innerHTML = code2;
			evalScript(code);
			
			//Check for IE6
			if (((navigator.appName.search("Microsoft Internet Explorer") != -1) && (navigator.appVersion.search("MSIE 6.") != -1)))
			{
				document.getElementById("ChatControl").style.position = "absolute";
				currentScrollPosition = getScrollY();
			}
				
			FlyIn();
			init();
		}
	}
}

function evalScript(scripts)
{
	try
	{
		if(scripts != '')	
		{
			var script = "";
			/*
			 * <script[^>]*> sucht alle <script ...> Tags
			 * ([\s\S]*?) liefert alles was zwichen den Tags steht zurück
			 * 
			 */ 
			scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
			//Dies ist wie eine Art Schleife je nachdem wie oft Script Tags mit Code vorkommen daher wird es in der Variable "script" abgelegt
				if (scripts !== null) 
					script += arguments[1] + '\n'; //Packt den Code an der Variable 
				return '';
			});
				//Hier wird der String der nur noch Code enthalten sollte ausgeführt
				
			if(script) (window.execScript) ? window.execScript(script) : window.setTimeout(script, 0);
		}
		return false;
	}
	catch(e)
	{
	}
}

function getScrollY() {
	var scrOfY = 0;

	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
	}
	return scrOfY;
}

function ShowChatControl()
{
	sendRequest(serverRootPath + "/licensing/ChatStatus.aspx?id=" + Math.random(),"Button");

	
}

function FlyIn()
{
	if (objDrag != null)
		return;
		
	try
	{
		var height;
		var sH=document.getElementById("ChatControl").style.top;
		document.getElementById("ChatControl").style.display="inline";
		sH = sH.replace(/[^0-9,-]/g, "");
		height = sH*1;
	
		var targetPosition = ((getWindowHeight() - document.getElementById('ChatControl').offsetHeight) / 2) + currentScrollPosition;
	
		if(height < targetPosition)
		{
			document.getElementById("ChatControl").style.top=(height+5)+"px";
			setTimeout("FlyIn()",1);
		}
	}
	catch(e){}
}

function Close()
{
	document.getElementById("ChatControl").style.display="none";
	sendFeedback(serverRootPath + "/licensing/ChatStatus.aspx?cmd=close&id=" + Math.random());
}

function Success()
{
	eval("javascript:" + document.getElementById("Button").innerHTML.match("startChat_[0-9,a-z,A-Z]*") + "('0');");
	document.getElementById("ChatControl").style.display="none";
	sendFeedback(serverRootPath + "/licensing/ChatStatus.aspx?cmd=success&id=" + Math.random());
}

function getWindowHeight() {    
	if (window.innerHeight) {    
		return window.innerHeight;    
	}    
	else {    
		if (window.document.documentElement &&    
			window.document.documentElement.clientHeight) {    
			return window.document.documentElement.clientHeight;    
		}    
		return window.document.body.offsetHeight;    
	}    
} 

// Drag
var objDrag = null;     // Element, über dem Maus bewegt wurde

var mouseX   = 0;       // X-Koordinate der Maus
var mouseY   = 0;       // Y-Koordinate der Maus

var offX = 0;           // X-Offset der Maus zur linken oberen Ecke des Elements
var offY = 0;           // Y-Offset der Maus zur linken oberen Ecke des Elements

// Browserweiche
IE = document.all&&!window.opera;
DOM = document.getElementById&&!IE;

// Initialisierungs-Funktion
function init(){
	// Initialisierung der Überwachung der Events
	//26.05.2011 DragDrop deaktiviert, weil sonst die Tooltips nicht richtig funktionieren
	//document.onmousemove = doDrag;  // Bei Mausbewegung die Fkt. doDrag aufrufen
	//document.onmouseup = stopDrag;  // Bei Loslassen der Maustaste die Fkt. stopDrag aufrufen
}

// Wird aufgerufen, wenn die Maus über einer Box gedrückt wird
function startDrag(objElem) {
	// Objekt der globalen Variabel zuweisen -> hierdurch wird Bewegung möglich
	objDrag = objElem;

	// Offsets im zu bewegenden Element ermitteln
	offX = mouseX - objDrag.offsetLeft;
	offY = mouseY - objDrag.offsetTop;
}

// Wird ausgeführt, wenn die Maus bewegt wird
function doDrag(ereignis) {
	// Aktuelle Mauskoordinaten bei Mausbewegung ermitteln
	mouseX = (IE) ? window.event.clientX : ereignis.pageX;
	mouseY = (IE) ? window.event.clientY : ereignis.pageY;

	// Wurde die Maus über einem Element gedrück, erfolgt eine Bewegung
	if (objDrag != null) {
		// Element neue Koordinaten zuweisen
		objDrag.style.left = (mouseX - offX) + "px";
		objDrag.style.top = (mouseY - offY) + "px";
	}
}

// Wird ausgeführt, wenn die Maustaste losgelassen wird
function stopDrag(ereignis) {
	// Objekt löschen -> beim Bewegen der Maus wird Element nicht mehr verschoben
	objDrag = null;
}
