/**
 * starts a new post ajax request [..] by http://www.easy-coding.de
 * depending on the callback type this function will fill a target container 
 * 	by addressing it from its string ID, from reference or by usage of
 *	a custom callback function
 *
 * @param url				string							url to post the request
 * @param postData		string							data in GET format
 * @param callback 		string|object|function	how to address the target container
 * @return					boolean						everytime false
 */
function ajaxPost(url, postData, callback) {
	var req;
 	try {
		req = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP"); 
	} catch (e) {
		// browser does not have ajax support
	}
	req.open('POST', url, true);
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	req.send(postData);
	req.onreadystatechange = typeof callback == 'function' ? callback : function() {
		if (req.readyState == 4 && req.status == 200) {
			if(typeof callback == 'string') callback = document.getElementById("content");
			if(callback) callback.innerHTML = req.responseText;
		}
	};
	return false;
	
}
/**
 * returns data from html formular [..] by http://www.easy-coding.de
 * 
 * @param form		object		reference to form element (e.g. <form onsubmit="getFormData(this)" [..]>)
 * @param asArray 	boolean		default is false, set true to return as array, set false to return GET string
 * @return 		string|object	returns the formdata as specified in parameter 'asArray'
 */
function getFormData(form, asArray) {
	var ret;

	var add = function(n, v) {
		if(asArray) {
			if(ret == null) ret = new Array();
			ret[n] = escape(v);
		} else {
			ret = (ret == null ? '' : ret+'&') + n +'='+ escape(v);
		}
	};



	for(var i=0; i<form.elements.length; i++) {
		var el = form.elements[i];

		var type = (el.type || '');


		if(type.match(/^(text|hidden|textarea)$/i) || (type.match(/^(radio|checkbox)$/i) && el.checked)) {
			add(el.name, el.value);

		} else if(el.nodeName.match(/^select$/i)) {

			for(var j=0; j<el.options.length; j++) {

				if(el.options[j].selected) {

					add(el.name, el.options[j].value);

				}
			}

		} else if(el.nodeName.match(/^textarea$/i)) {
			add(el.name, el.value);
		}

	}

	return ret != null ? ret : (asArray ? new Array() : '');

}

