function AjaxObject()
{
	this.activePage = ""; 
	this.wordPopupOpen = false; 
	
	
	
	function convertParams(JSParams)
	{
		var params = [];
		
		var allParams = JSParams.split("|");
		for (var i = 0; i < allParams.length; i ++)
		{
			var split = allParams[i].split(">");
			if (split[1] != undefined) {
				params[split[0]] = split[1];
				//alert ("set " + split[0] + " = " + split[1]);
			}
		}
		
		return params;
	}
	
	
	
	/*-------------------------------
		methodes
	-------------------------------*/
	
	function initAjaxRequest()
	{
		var xmlHttp = null;
		try
  		{
  			// Firefox, Opera 8.0+, Safari
  			xmlHttp = new XMLHttpRequest();
  		}
		catch (e)
  		{
	  		// Internet Explorer
	  		try
 	  	 	{
 	 	  		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    		}
  			catch (e)
    		{
    			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    		}
  		}
  		return xmlHttp;
	}
	
	function pageLoad()
	{	
		var contentDiv = document.getElementById("container");
		
		d = document.getElementsByTagName("BODY")[0];
		
		coverDiv = document.getElementById('coverDiv');
		if (!coverDiv)
		{
			coverDiv = document.createElement("DIV");
		}
		
		xPos = contentDiv.offsetLeft;
		yPos = contentDiv.offsetTop;
		
		oWidth = contentDiv.offsetWidth;
		oHeight = contentDiv.offsetHeight;
		coverDiv.style.width = oWidth + "px";
		coverDiv.style.height = oHeight + "px";
		coverDiv.id = "coverDiv";	
		d.appendChild(coverDiv);			
	}
	
	
	
	function stopPageLoad()
	{		
		coverDiv = document.getElementById('coverDiv');
		if (coverDiv)
		{
			coverDiv.parentNode.removeChild(coverDiv);
		}
	}
	
	
	
	function requestPage(file, page, initPage, JSParams) 
	{
		var params = [];
		if (JSParams) params = convertParams(JSParams);
		
		pageLoad();
		if (this.activePage == "") this.activePage = initPage;
		var activePageById = document.getElementById("nav_" + this.activePage)
		if (activePageById) activePageById.className = "";
		var pageById = document.getElementById("nav_" + page);
		if (pageById) pageById.className = "active";
		
		
		this.activePage = page;
		
		if (!params['method'] || params['method'] == "GET")
		{
			params['method'] = "GET";
			params['postData'] = null;
		}
		else if (params['method'] == "POST")
		{
			
			if (!params['postData'] || params['postData'] == "")
			{
				params['postData'] = null;
			
			}
			
			if (params['formID'])
			{
					
				var addPost = getFormAsPost(params['formID']);
				if (params['postData'] == null)
				{
					
					params['postData'] = addPost;
				}
				else
				{
					params['postData'] = params['postData'] + "&" + addPost;
				}
			}
		}
	
		
		xmlHttp = initAjaxRequest();
		xmlHttp.onreadystatechange = responsePage;
		xmlHttp.open(params['method'], file, true);
		if (params['method'] == "POST")
		{
			xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		}
		xmlHttp.send(params['postData']);
		
	}
	
	function responsePage()
	{
		if (xmlHttp.readyState == 4)
		{			
			var pageObject = eval('(' + xmlHttp.responseText + ')');
			document.getElementById('pageCSS').href = pageObject.cssFile; 
			document.getElementById("content_container").innerHTML = pageObject.content;
			document.getElementById("taskbar").innerHTML = pageObject.taskbar;
			document.getElementById("player").innerHTML = pageObject.player;
			onResizeHandler(document.getElementsByTagName("BODY"));
			stopPageLoad();
			
			
		}
	}
	
	function request(file, callback, JSParams) 
	{
		var params = [];
		if (JSParams) params = convertParams(JSParams);
		
		if (!params['method'] || params['method'] == "GET")
		{
			params['method'] = "GET";
			params['postData'] = null;
		}
		else if (params['method'] == "POST")
		{
			
			if (!params['postData'] || params['postData'] == "")
			{
				params['postData'] = null;
			}
			
			if (params['formID'])
			{
				var addPost = getFormAsPost(params['formID']);
				if (params['postData'] == null)
				{
					
					params['postData'] = addPost;
				}
				else
				{
					params['postData'] = params['postData'] + "&" + addPost;
				}
			}
		}
		
		if (callback != '') 
		{
			var callbackArray = callback.split("|");
			
			myDiv = callbackArray;
			
			for (var i = 0 ; i < myDiv.length; i++)
			{
				var loadContent = "...";
				if (params['loadText']) loadContent = params['loadText'];
				document.getElementById(myDiv[i]).innerHTML = loadContent;
			}
		}
		
		xmlHttp = initAjaxRequest();
		xmlHttp.onreadystatechange = response;
		xmlHttp.open(params['method'], file, true);
		if (params['method'] == "POST")
		{
			xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		}
		xmlHttp.send(params['postData']);
	}
	
	
	
	function response()
	{
		if (xmlHttp.readyState == 4)
		{			
			var returnObject = eval('(' + xmlHttp.responseText + ')');
			
			if (myDiv.length == 1) {
				document.getElementById(myDiv[0]).innerHTML = returnObject.content;
			}
			else
			{
				for (var i = 0 ; i < myDiv.length; i++)
				{
					document.getElementById(myDiv[i]).innerHTML = returnObject["content"][i]["content"];
				}
			}
			
		}
	}
	
	function checkChilds(obj,times)
	{
		
		
		var postData = "";
		
	
	//	for (j = 0; j < obj.childNodes.length; j ++)
	//	{
			
			
			postData += checkChildAsForm(obj.childNodes[times]);
			
			if (obj.childNodes[times].childNodes.length > 0) postData += checkChilds(obj.childNodes[times],0);
			
	//	}
		times++;
		if (obj.childNodes.length > times) postData += checkChilds(obj,times);
		return postData;
	}
	
	function getFormAsPost(objName)
	{
		var postData = "";
		
		obj = document.getElementById(objName);
		//postData += checkChild(obj, "den beginne");
		postData += checkChilds(obj,0);

      	return postData;
   }
	
	
	function checkChild(node)
	{
		var rtrn = "";
				
		for (i = 0; i < node.childNodes.length; i ++)
		{
			var tag = node.childNodes[i].tagName;
			document.getElementById("traceDiv").innerHTML += "gevonden: " + tag + "<br />";
			document.getElementById("traceDiv").style.display = "block";
				
			if (tag == "INPUT" || tag == "SELECT" || tag == "TEXTAREA") {
				rtrn += checkChildAsForm(node.childNodes[i], node.tagName);
			} else if (tag == "DIV" || tag == "TABLE" || tag == "TR" || tag == "TD" || tag == "TBODY") {
				rtrn += checkChild(node.childNodes[i], node.tagName);
			} else if (tag == undefined) {
				rtrn += "";
			}
		}
		
	
		return rtrn;
	}
   
  
  
  
	function checkChildAsForm(node, par)
	{
		var rtrn = "";
				
		if (node.tagName == "INPUT")
		{
			if (node.type == "text") {
				rtrn += node.name + "=" + node.value + "&";
			}
			
			if (node.type == "hidden") {
				rtrn += node.name + "=" + node.value + "&";
			}
			
			if (node.type == "checkbox") {
				if (node.checked) {
					rtrn += node.name + "=" + node.value + "&";
				}
			}
			
			if (node.type == "radio") {
				if (node.checked) {
					rtrn += node.name + "=" + node.value + "&";
				}
			}
		}
		
		if (node.tagName == "SELECT") {
			if (node.multiple == true)
			{
				var selectString = '';
				for (var j = 0; j < node.options.length; j ++) {
					if (node.options[j].selected) {
						selectString +=  node.options[j].value + "|";
					}
				}
				if (selectString != '') rtrn += node.name + "=" + selectString + "&";
			}
			else
			{
				rtrn += node.name + "=" + node.options[node.selectedIndex].value + "&";
			}
		}
			
		if (node.tagName == "TEXTAREA") {
			rtrn += node.name + "=" + node.value + "&";
		}

		return rtrn;
	}

	function StringtoXML(text){
		if (window.ActiveXObject){
			var doc=new ActiveXObject('Microsoft.XMLDOM');
			doc.async='false';
			doc.loadXML(text);
		} else {
			var parser=new DOMParser();
			var doc=parser.parseFromString(text,'text/xml');
		}
		return doc;
	}

	function showPopup(divID)
	{
		div = document.getElementById(divID);
		
		if (!div)
		{
			d = document.getElementsByTagName("BODY")[0];
			div = document.createElement("DIV");
			div.id = divID;
			div.style.position = "absolute";
			d.appendChild(div);		
		}
		else
		{
			div.style.display = "block";
		}	
		return div;
	}
	
	function hidePopup($divID)
	{
		div = document.getElementById($divID);
		if (div)
		{
			div.style.display = "none";
		}
	}
	
	function giveTranslation(translation, ele)
	{	
		if (this.wordPopupOpen == false)
		{
			div = showPopup("translationDiv");
			
			div.innerHTML = '<div class="translationContent">'+translation+'</div>';
			
			var divLeftPX = ele.clientX +5;
			if ( ( divLeftPX + div.offsetWidth ) > window.outerWidth) divLeftPX -= ( (divLeftPX + div.offsetWidth + 20) - window.outerWidth );
			var divTopPX = ele.clientY - (div.offsetHeight + 20) ;
			
			div.style.left = divLeftPX + "px";
			div.style.top = divTopPX + "px";
		}
	}
	
	function giveWordPopup()
	{	
		this.wordPopupOpen = true;
		startDrag("translationDiv");
		
	}
	
	function givePopup(ele, popupDiv, skipDrag )
	{
		div = showPopup(popupDiv);
		div.innerHTML = '';

		var divLeftPX = ele.clientX +5;
		if ( ( divLeftPX + div.offsetWidth ) > window.outerWidth) divLeftPX -= ( (divLeftPX + div.offsetWidth + 20) - window.outerWidth );

		var divTopPX = ele.clientY - (div.offsetHeight + 20) ;
		if ( ( divTopPX + div.offsetHeight ) > window.outerHeight) divTopPX -= ( (divTopPX + div.offsetHeight + 20) - window.outerHeight );

		div.style.left = divLeftPX + "px";
		div.style.top = divTopPX + "px";
		if (skipDrag != true )startDrag(popupDiv);
		
	}
	
	function closePopup(popupDiv)
	{
		hidePopup(popupDiv);
	}
	
	function giveMemoWordPopup(ele)
	{
		div = showPopup("translationDiv");
		div.innerHTML = '';
		var divLeftPX = ele.clientX +5;
		if ( ( divLeftPX + div.offsetWidth ) > window.outerWidth) divLeftPX -= ( (divLeftPX + div.offsetWidth + 20) - window.outerWidth );
		var divTopPX = ele.clientY - (div.offsetHeight + 20) ;
		
		div.style.left = divLeftPX + "px";
		div.style.top = divTopPX + "px";
		
		this.wordPopupOpen = true;	
	}
	
	function closeWordPopup()
	{
		if (this.wordPopupOpen == true)
		{
			this.wordPopupOpen = false;
			hidePopup("translationDiv");
		}
	}
	
	function removeTranslation()
	{
		if (this.wordPopupOpen == false)
		{
			hidePopup("translationDiv");
		}
	}
	function playAudio(surl, target)
	{
		document.getElementById(target).innerHTML="<embed src='"+surl+"' hidden=true autostart=true loop=false>";
	}
	
	function startDrag(targetDiv)
	{
		$(function() {
			$("#"+targetDiv).draggable();
		});

	}
	
	function startFlash(width,height,flashMovie,quality,align,play,loop,scale,wmode,devicefont,menu,allowFullScreen,salign,flashvars)
	{
		if (AC_FL_RunContent == 0) 
		{
			alert("This page requires AC_RunActiveContent.js.");
		} 
		else 
		{
			AC_FL_RunContent(
				"codebase", "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0",
				"width", width,
				"height", height,
				"src", "include/flash/" + flashMovie,
				"quality", quality,
				"pluginspage", "http://www.macromedia.com/go/getflashplayer",
				"align", align,
				"play", play,
				"loop", loop,
				"scale", scale,
				"wmode", wmode,
				"devicefont", devicefont,
				"id", flashMovie,
				"name", flashMovie,
				"menu", menu,
				"allowFullScreen", allowFullScreen,
				"allowScriptAccess","sameDomain",
				"movie", "include/flash/" + flashMovie,
				"base", "include/flash/",
				"salign", salign,
				"flashvars", flashvars
			); //end AC code
		}
	}
	/*-------------------------------
		properties
	-------------------------------*/
	
	
	// public methodes
	this.giveTranslation = giveTranslation;
	this.removeTranslation = removeTranslation;
	this.request = request;
	this.closeWordPopup = closeWordPopup;
	this.giveWordPopup = giveWordPopup;
	this.givePopup = givePopup;
	this.closePopup = closePopup;
	this.giveMemoWordPopup = giveMemoWordPopup;
	this.requestPage = requestPage;
	this.StringtoXML = StringtoXML;
	this.playAudio = playAudio;
	this.startFlash = startFlash;
	this.pageLoad = pageLoad;
	
}

