
//------------------------ FSCommand ------------------------

function createFSCommandCode(strObjectMovieName, strEmbedMovieName){
	//alert("createFSCommandCode(\""+strObjectMovieName+"\", \""+strEmbedMovieName+"\")");
	if(!strEmbedMovieName){
		strEmbedMovieName = strObjectMovieName;
	}
	//
	var bolSupportFSCommand;
	try{ 
		eval("var objExistanceCheck="+strEmbedMovieName+"_DoFSCommand");
		bolCreateFSCommand = false;
	}catch(e){
		bolCreateFSCommand = true;
	}
	//
	if(bolCreateFSCommand){
		// Verarbeiten aller FSCommand-Meldungen in einem Flash-Film
		document.writeln("<script language=\"JavaScript\"\ comment=\"FSCommandForEmbedFlash\">\n");
		document.writeln("function "+strEmbedMovieName+"_DoFSCommand(command, args) {\n");
		document.writeln("executeFSCommand(command, args, \""+strEmbedMovieName+"\");\n");
		document.writeln("}\n");
		document.writeln("</script>\n");
		// Hook für Internet Explorer.
		if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) {
			document.write('<script language=\"VBScript\"\>\n');
			document.write('On Error Resume Next\n');
			document.write('Sub '+strObjectMovieName+'_FSCommand(ByVal command, ByVal args)\n');
			document.write('	Call executeFSCommand(command, args, \"'+strObjectMovieName+'\")\n');
			document.write('End Sub\n');
			document.write('</script\>\n');
		}
	}
}

var strExecuteFSCommandMovieName = null;
function executeFSCommand(strCommand, strArgument, strMovieName){
	//alert("executeFSCommand(\""+strCommand+"\", \""+strArgument+"\", \""+strMovieName+"\")")
	strExecuteFSCommandMovieName = strMovieName;
	if(strCommand.toLowerCase() == "javascript"){
		eval(strArgument);
	}
}

//------------------------ XMLHttpRequest ------------------------

var strXMLHttpRequestObjectMovieName;
var strXMLHttpRequestEmbedMovieName;
function StartXMLHttpRequestSupport(strObjectMovieName, strEmbedMovieName, bolFSCommandSupport){
	//alert("StartXMLHttpRequestSupport(\""+strObjectMovieName+"\", \""+strEmbedMovieName+"\")")
	strXMLHttpRequestObjectMovieName = strObjectMovieName;
	strXMLHttpRequestEmbedMovieName = strEmbedMovieName;
	if(bolFSCommandSupport){
		createFSCommandCode(strObjectMovieName, strEmbedMovieName);
	}
}

function XMLHttpSendAndLoad(strURL, strMethod, strRequestIdentifier, strParameter){
	//alert("XMLHttpSendAndLoad("+strURL+", "+strMethod+", "+strRequestIdentifier+", "+strParameter+")")
	var xmlHttp = null;
	if(xmlHttp == null){
		// Mozilla, Opera, Safari sowie Internet Explorer 7
		if (typeof XMLHttpRequest != 'undefined') {
			xmlHttp = new XMLHttpRequest();
		}
		if(!xmlHttp) {
			// Internet Explorer 6 und älter
			try {
				xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				try {
					xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
				} catch(e) {
					xmlHttp  = null;
				}
			}
		}
	}
	//
	var objFlashMovie = null;
	if(strExecuteFSCommandMovieName == null){
		objFlashMovie = document.getElementsByName(strXMLHttpRequestEmbedMovieName)[0];
		if(objFlashMovie == null){
			objFlashMovie = document.getElementById(strXMLHttpRequestEmbedMovieName);
		}
		if(objFlashMovie == null){
			objFlashMovie = document.getElementsByName(strXMLHttpRequestObjectMovieName)[0];
			if(objFlashMovie == null){
				objFlashMovie = document.getElementById(strXMLHttpRequestObjectMovieName);
			}
		}
	}else{
		objFlashMovie = document.getElementsByName(strExecuteFSCommandMovieName)[0];
		if(objFlashMovie == null){
			objFlashMovie = document.getElementById(strExecuteFSCommandMovieName);
		}
	}
	if(objFlashMovie == null){
		alert("Flash object not found. Unable to return response.")
	}
	//
	if(xmlHttp) {
		var strSendParameter = null;
		var strOpenUrl = strURL;
		if(strParameter && strMethod.toUpperCase() == "GET"){
			strOpenUrl = strURL+"?"+strParameter;
		}
		xmlHttp.open(strMethod, strOpenUrl, true);
		if(strParameter && strMethod.toUpperCase() == "POST"){
			xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			xmlHttp.setRequestHeader("Content-length", strParameter.length);
			xmlHttp.setRequestHeader("Connection", "close");
			strSendParameter = strParameter;
		}
		xmlHttp.onreadystatechange = function () {
			if (xmlHttp.readyState == 4) {
				objFlashMovie.SetVariable(strRequestIdentifier+"ResponseText", xmlHttp.responseText);
			}
		};
		try{
			xmlHttp.send(strSendParameter);
		}catch(e){
			if(confirm("Server request error. The URL might not be valid or your location does not have the necessary access permissions. Do you want to try again?")){
				XMLHttpSendAndLoad(strURL, strMethod, strRequestIdentifier, strParameter);
			}else{
				objFlashMovie.SetVariable(strRequestIdentifier, "xmlhttp:response:false:sending:failed");
			}
		}
	}else{
		if(confirm("Communication interface error. Your browser might not support XMLHttp functionality yet. Do you want to try again?")){
			XMLHttpSendAndLoad(strURL, strMethod, strRequestIdentifier, strParameter);
		}else{
			objFlashMovie.SetVariable(strRequestIdentifier, "xmlhttp:response:false:xmlhttp:unavailable");
		}
	}
}

function XMLHttpAICC(strCommand, strMethod, strRequestIdentifier, strArrguments){
	//alert("XMLHttpAICC(\""+strCommand+"\", \""+strMethod+"\", \""+strRequestIdentifier+"\", \""+strArrguments+"\")")
	var strUrl = unescape(String(window.location));
	var strUrlParameter = strUrl.substr(strUrl.indexOf("?")+1);
	var arrUrlParameter = strUrlParameter.split("&");
	var objUrlParameter = new Array();
	for (var i = 0; i<arrUrlParameter.length; i++) {
		var arrTempParameter = arrUrlParameter[i].split("=");
		var strVariableName = arrTempParameter[0].toLowerCase();
		if(strVariableName.indexOf("amp;") == 0){
			strVariableName = strVariableName.substr(4);
		}
		objUrlParameter[strVariableName] = arrTempParameter[1];
	}
	
	if(strCommand.toLowerCase() == "getparam"){
		var strParameter = "command=GetParam&session_id="+objUrlParameter["aicc_sid"];
		if(strArrguments){
			strParameter += "&"+strArrguments;
		}
		XMLHttpSendAndLoad(objUrlParameter["aicc_url"], strMethod, strRequestIdentifier, strParameter);
	}else if(strCommand.toLowerCase() == "putparam"){
		var strParameter = "command=PutParam&session_id="+objUrlParameter["aicc_sid"];
		if(strArrguments){
			strParameter += "&"+strArrguments;
		}
		XMLHttpSendAndLoad(objUrlParameter["aicc_url"], strMethod, strRequestIdentifier, strParameter)
	}else if(strCommand.toLowerCase() == "exitau"){
		var strParameter = "command=ExitAU&session_id="+objUrlParameter["aicc_sid"];
		if(strArrguments){
			strParameter += "&"+strArrguments;
		}
		XMLHttpSendAndLoad(objUrlParameter["aicc_url"], strMethod, strRequestIdentifier, strParameter)
	}
}
//
StartXMLHttpRequestSupport("main", "main_embed", false);
