
var cpanel = {
	replace: function(id,doc) {
			var obj = document.getElementById(id);
			obj.innerHTML=doc;
		},
	xmltoarray: function(doc) {
			var arr = new Array;
			doc = doc.documentElement;
			for (var i=0;i<doc.childNodes.length;i++) {
				arr[doc.childNodes[i].nodeName]=Sarissa.getText(doc.childNodes[i]);
			}
			return arr;
		},
	/*popup: function(id,doc) {
			var popup = document.getElementById('popup');
			if (popup) popup.parentNode.removeChild(popup);
			popup = document.createElement('DIV');
			popup.id='popup';
			
		},*/
	ask: function(id,doc) {
			var res;
			var params='';
			var arr = cpanel.xmltoarray(doc);
			for (var a in arr)
				params+=',"'+a+'","'+arr[a]+'"';
			if (res=prompt(arr.title,arr.value))
				eval('remote.subsys(arr.subsys,"data",res'+params+');');
				//remote.subsys(arr.subsys,'data',res);
		},
	gather: function(root) {
			try {
				tinyMCE.triggerSave();
			}	catch (e) { // Workaround
			}
			root = document.getElementById(root);
			var data = '';
			if (root) {
				var els = root.getElementsByTagName('INPUT');
				for (var i=0;i<els.length;i++)
					if (els[i].type!='checkbox' || els[i].checked)
						data += '&'+els[i].name+'='+encodeURIComponent(els[i].value);
				els = root.getElementsByTagName('TEXTAREA');
				for (var i=0;i<els.length;i++)
					data += '&'+els[i].name+'='+encodeURIComponent(els[i].value);
				els = root.getElementsByTagName('SELECT');
				for (var i=0;i<els.length;i++)
					data += '&'+els[i].name+'='+encodeURIComponent(els[i].value);
			}	else
				alert(root+' niet gevonden');
			return data;
		},
	checkall: function(root,truefalse) {
			root = document.getElementById(root);
			var els = root.getElementsByTagName('INPUT');
			for (var i=0;i<els.length;i++)
				if (els[i].type=='checkbox')
					els[i].checked=truefalse;
			return false;
		},
	tiny_done: function(id,doc) {
			tinyMCE.execCommand("mceRemoveControl",true,id);
		},
	tiny: function(id,doc) {
			tinyMCE.init({
				plugins: "inlinepopups,esmartimage,table",
				external_link_list_url : "links.js",
				theme: "advanced",
				mode: "exact",
				theme_advanced_buttons3_add: "tablecontrols",
				extended_valid_elements: "iframe[src|width|height|name|align|style]",
				language: "nl",
				elements: id
				});
		},
	findpos: function(obj) {
			var curleft = curtop = 0;
			if (obj.offsetParent) {
				do {
					curleft += obj.offsetLeft;
					curtop += obj.offsetTop;
				} while (obj = obj.offsetParent);
			}
			return [curleft,curtop];
		},
	imgover: function(obj,sum) {
			var div = document.getElementById('imgoverdiv');
			if (div) {
				if (div.nextSibling==obj) return;
				if (div.parentNode)
					div.parentNode.removeChild(div);
			}
			div = document.createElement('DIV');
			div.id='imgoverdiv';
			div.style.position='absolute';
			div.style.background='red';
			var pos = cpanel.findpos(obj);
			var overpos = cpanel.findpos(obj.parentNode);
			var y = pos[1]-obj.parentNode.scrollTop;
			y = (y<overpos[1] ? overpos[1] : y);
			div.style.left=(pos[0]+4)+'px';
			div.style.top=(y+4)+'px';
			//var m = obj.src.match(/([^/]+\.[a-z]+)$/);
			div.innerHTML='<button onclick="return cpanel.imgdelete(\''+sum+'\');">X</button>';
			obj.parentNode.insertBefore(div,obj);
			return false;
		},
	imgdelete: function(fn) {
			if (confirm('Wissen?')) {
				remote.subsys('image_delete','fn',fn);
			}
			return false;
		},
	imgout: function(obj) {
			return false;
		},
	alert: function(id,doc) {
			alert(doc);
		}
};

var remote = {
	baseurl: undefined,
	x: undefined,
	init: function(baseurl) {
		remote.baseurl=baseurl;
		},
	/**
		Subsystem call
	*/
	subsys: function(subsys) {
			var data = "subsys="+subsys;
			for (var i=1;i<arguments.length;)
				data += '&' + arguments[i++] + '=' + arguments[i++];
			var x = remote.post(remote.baseurl,data);
			if (x && x.documentElement) {
				var doc = x.documentElement;
				/**
					Kijk of er een 'actions' elementen inzitten, verwerk ze vervolgens een voor een
				*/
				remote.processactions(doc);
			}
			return false;
		},
	asyncsubsys: function() {
		},
	processactions: function(actions) {
			for (var i=0;i<actions.childNodes.length;i++) {
				if (actions.childNodes[i].nodeName=='action') {
					var tmp = actions.childNodes[i].getAttribute('call');
					var id = actions.childNodes[i].getAttribute('id');
					var param = undefined;
					if (actions.childNodes[i].getAttribute('type')=='xml')
						param = (new DOMParser()).parseFromString(Sarissa.getText(actions.childNodes[i],true),"text/xml");
					else
						param = Sarissa.getText(actions.childNodes[i],true);
					eval(tmp+"(id,param);");
				}
			}
		},
	replace: function(obj,url,data) {
			var x=undefined;
			if (data) {
				x = remote.post(url,data);
			}	else {
				x = remote.get(url);
			}
			if (x) {
				obj.innerHTML=x.responseText;
			}
		},
	posthandler: function() {
			if (remote.x.readyState==4 && remote.x.status==200) {
				//alert(remote.x.responseText);
				if (remote.x.responseXML && remote.x.responseXML.documentElement) remote.processactions(remote.x.responseXML.documentElement);
				else alert('Fout bij laden xml-antwoord:\n'+remote.x.responseText);
			}
		},
	post: function(url,data) {
		var x = new XMLHttpRequest();
		remote.x = x;
		x.onreadystatechange=remote.posthandler;
		x.open("POST",url,true);
		x.setRequestHeader('content-type','application/x-www-form-urlencoded');
		//alert(data);
		x.send(data);
		//alert(x.responseText);
		/*if (!x.responseXML.documentElement)
			alert('response: '+x.getAllResponseHeaders());
		return x.responseXML;*/
		return false;
		},
	get: function(url) {
		var x = new XMLHttpRequest();
		x.open("GET",url,false);
		x.send("");
		return x;
		}
};


