// copyright berloth.net 2007
// based on a script from http://www.sitepoint.com/article/take-command-ajax

function url2div(url, div, values) { // heette eerst html2div
//	var spinner = new getObj('spinner');
	if ($('spinner')) {
	
	} else {
	//	body = document.getElementsByTagName('body')[0];

		var spinnerdiv = document.createElement('div');
		spinnerdiv.setAttribute('id', 'spinner');
		document.body.appendChild(spinnerdiv);

		$('spinner').setStyle({ 
			display: 'block',
			zIndex: '20000',
			position: 'fixed',
			top: '200px',
			_position: 'absolute',
			_top: 'expression(eval(200 + document.body.scrollTop))',
			width: '100%',
			textAlign: 'center'
		});		
		
		var spinnerimg = document.createElement('img');
		spinnerimg.setAttribute('src', 'http://berloth.net/images/berloth-spinnner.gif');
		spinnerdiv.appendChild(spinnerimg);
		
		//spinner = new getObj('spinner');
		//spinner.obj.style.display = 'block';

		
	}
	//spinner = new getObj('spinner');
	//spinner.obj.style.display = 'block';
	Effect.Appear('spinner');

	//var x = new getObj(div);
	//x.obj.style.cursor = 'wait';
	//document.body.style.cursor = 'wait';
	makeHttpRequest(url, 'html2div', div, values, false);
}

function makeHttpRequest(url, callback_function, options, values, return_xml)
{
	var http_request = false;

	if (values) {
		method = 'POST';
	} else {
		method = 'GET';
	}
	
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
	   http_request = new XMLHttpRequest();
	   if (http_request.overrideMimeType) {
		   http_request.overrideMimeType('text/xml');
	   }
	} else if (window.ActiveXObject) { // IE
	   try {
		   http_request = new ActiveXObject("Msxml2.XMLHTTP");
	   } catch (e) {
		   try {
			   http_request = new ActiveXObject("Microsoft.XMLHTTP");
		   } catch (e) {}
	   }
	}
	
	if (!http_request) {
	   alert('Unfortunatelly you browser doesn\'t support this feature.');
	   return false;
	}
	http_request.onreadystatechange = function() {
	   if (http_request.readyState == 4) {
		   if (http_request.status == 200) {
			   if (return_xml) {
				   eval(callback_function + '(http_request.responseXML)');
			   } else {
				   eval(callback_function + '(http_request.responseText, options)');
			   }
		   } else {
			   alert('There was a problem with the request.(Code: ' + http_request.status + ')');
		   }
	   }
	}
	http_request.open(method, url, true);
	if (method == 'GET') {
		http_request.send(null);
	} else {
		//POST
  		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  		//http_request.send("command=ajax_formsubmit&form=wachtwoord&id=1&user=andre&password=simone");		
  		http_request.send(values);
	}
}

function html2div (html, div) { // heette eerst send2div
	document.getElementById(div).innerHTML = html;
	var d = document.getElementById(div).getElementsByTagName("script");
	var t = d.length;
	for (var x=0;x<t;x++){
		var newScript = document.createElement('script');
		newScript.type = "text/javascript";
		newScript.text = d[x].text;
		document.getElementById(div).appendChild (newScript);
	}
	//var x = new getObj(div);
	$(div).style.cursor='default';
	document.body.style.cursor = 'default';
	//eval('alert(\'henk\');')
	Behaviour.apply();
	
	
//	var spinner = new getObj('spinner'); 
	
	
	if ($('spinner')) $('spinner').style.display = 'none';
}

function ajax_move(url) {
	if (fdTableSort.lastSort == 'volgorde' && fdTableSort.lastDire == 'forward') {
		fdTableSort.addClass(document.getElementsByTagName('body')[0], "sort-active");
		makeHttpRequest(url, 'volgorde_wissel', '', false);
	} else {
		javascript: Dialog.alert("Please sort on <b>order</b> first.<br><br>(descending, arrow must point down)", {className: 'alphacube', width:540, okLabel: 'Close'});
	}
}


function ajax_formsubmit(caller, action, destination) {
	var theFormId = myFormId(caller);
	var theForm = document.getElementById(theFormId);
	var values = 'command=ajax_formsubmit&form_id=' + theForm.id + '&' + theForm.serialize(); //Form.serializeElements(theForm.elements);
	url2div(action, destination, values); 
}

function volgorde_wissel (json) {
	//document.getElementById(div).innerHTML = html;
	var jsonvalues = eval('(' + json + ')');
	if (jsonvalues.primkeyvalue_a > 0) document.getElementById('volgorde_value_' + jsonvalues.primkeyvalue_a).innerHTML = jsonvalues.neworder_a;
	if (jsonvalues.primkeyvalue_b > 0) document.getElementById('volgorde_value_' + jsonvalues.primkeyvalue_b).innerHTML = jsonvalues.neworder_b;

	if(fdTableSort.thNode == null) {
		if (fdTableSort.lastSort != 'volgorde') {
			alert('was ' + fdTableSort.lastSort);
			var theTable = document.getElementById('theTable');
			for( var x = 0; x < theTable.tHead.rows[0].cells.length; x++ ) {
				if (theTable.tHead.rows[0].cells[x].id == 'volgorde') targ = theTable.tHead.rows[0].cells[x];
			}
			fdTableSort.thNode = targ;
			fdTableSort.addSortActiveClass();
			fdTableSort.initSort();
		} else {
			//alert('is ' + fdTableSort.lastSort);
		
		}
	};
	fdTableSort.init('theTable');
}

// copyright berloth.net 2007
// based on a script from typo3

var div;

//main function to call out of html
/*
function html2div(_url, _div) {
	div = _div;
	tx_mhajaxsearch_request(_url);
}
*/

//check return of the request
function tx_mhajaxsearch_return() {
	if (http_request.readyState == 4) {
		if(http_request.status == 200) {
			tx_mhajaxsearch_output(http_request.responseText);
		}
	}
}

//output something to the user
function tx_mhajaxsearch_output(_data) {
	//output the whole thing
	document.getElementById(div).innerHTML = _data;
	//document.getElementById(div).style.display = 'block'; // da's niet handig. Zet hem zelf maar aan. Anderen willen niet dat hij aangezet wordt!
}

//the request in an extra function
function tx_mhajaxsearch_recopen(_url) {
	//open requester
	http_request.open('GET', _url, true);
	
	//no caching please
	http_request.setRequestHeader('If-Modified-Since', 'Wed, 15 Nov 1995 00:00:00 GMT');
	http_request.setRequestHeader('Cache-Control', 'no-cache');
	
	//what to do on return
	http_request.onreadystatechange = tx_mhajaxsearch_return;
	
	//needed but what for?
	http_request.send(null);
}

//do the request
function tx_mhajaxsearch_request(_url) {
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP.4.0");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }
    }

    if (!http_request) {
        alert('Aborted :( Cannot generate XMLHTTP-Instance');
        return false;
    }
    
	try {
		tx_mhajaxsearch_recopen(_url);
	} catch(e) {
		try {
			//no rights? lets try it that way ...
			netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
			tx_mhajaxsearch_recopen(_url);
		} catch (e) {
			alert(e);
		}
	}
}


function myFormId(item) {
	//alert(item.tagName + ';' + item.id) ;
	if (item.tagName == 'FORM') {
		return item.id;
	} else {
		return myFormId(item.parentNode);
	}
}

