var XMLHTTPObject;

function ajax_init() {
	XMLHTTPObject = ajax_gethttphandler();
}

function ajax_gethttphandler() {
  var handler;
  try {
	// Proper browsers (Firefox, Opera 8.0+, Safari, Konqueror?)
	handler = new XMLHttpRequest();
  } catch (e) {
	// Evil browsers: Internet Explorer
	try {
		handler = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			handler = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (e) {
			alert("Your browser does not support AJAX! We suggest an upgrade to the latest Firefox!");
			return false;
		}
	}
  }
  return handler;
}

function ajax_getformdata(form) {
	e = document.getElementById(form);
	if (e != null) {
		var getstr = "";
		for (i=0; i<e.childNodes.length; i++) {
			var tagname = new String(e.childNodes[i].tagName);
			tagname = tagname.toLowerCase();
		        if (tagname == "input") {
			        if ((e.childNodes[i].type == "text") || (e.childNodes[i].type == "textarea") || (e.childNodes[i].type == "hidden"))  {
				        getstr += e.childNodes[i].name + "=" + encodeURI(e.childNodes[i].value) + "&";
			        } else if (e.childNodes[i].type == "checkbox") {
				        if (e.childNodes[i].checked) {
				                getstr += e.childNodes[i].name + "=" + encodeURI(e.childNodes[i].value) + "&";
				        } else {
				                getstr += e.childNodes[i].name + "=&";
				        }
			        } else if (e.childNodes[i].type == "radio") {
				        if (e.childNodes[i].checked) {
				                getstr += e.childNodes[i].name + "=" + encodeURI(e.childNodes[i].value) + "&";
				        }
			        }
		        } else if (tagname == "select") {
			        var sel = e.childNodes[i];
			        getstr += sel.name + "=" + encodeURI(sel.options[sel.selectedIndex].value) + "&";
		        }		        
		}
		return getstr;
	}
	return false;
}

var temp_target = ''; //has to be global for ajax_statechange, used as temporary storage

function ajax_submit_get(ajaxid, target, data, mod) {
	data += '&mod=' + mod;
	XMLHTTPObject.open('GET', baseurl + '/index.php?'+data, true);
	temp_styleurl = styleurl;
	temp_target = target;
	XMLHTTPObject.onreadystatechange = ajax_statechange;
	XMLHTTPObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
	XMLHTTPObject.setRequestHeader("Connection", "close");
	XMLHTTPObject.send(null);

}

function ajax_submit_post(ajaxid,  target,form, mod) {
	var data = ajax_getformdata(form);
	if (data == false) alert('AJAX Error: No such form: ' + form);
	data += '&mod=' + mod;
	XMLHTTPObject.open('POST', baseurl + '/index.php', true); //var baseurl is set globally by CosMoS
	temp_styleurl = styleurl;
	temp_target = target;
	XMLHTTPObject.onreadystatechange = ajax_statechange;
	XMLHTTPObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
	XMLHTTPObject.setRequestHeader("Content-length", data.length);
	XMLHTTPObject.setRequestHeader("Connection", "close");
	XMLHTTPObject.send(data);
}

function ajax_statechange() {
      e = document.getElementById(temp_target);
      if (e == null) alert("AJAX Error: No such target: " + temp_target);
      if (XMLHTTPObject.readyState == 1) {
            e.innerHTML = '<div class="ajax_loader"><img src="'+styleurl+'/ajax-loader.gif" alt="Loading, please wait..." /></div>'; //var styleurl is set globally by CosMoS
      } else if (XMLHTTPObject.readyState == 4) {
         if (XMLHTTPObject.status == 200) {
            result = XMLHTTPObject.responseText;
            e.innerHTML = result;            
         } else {
	    e.innerHTML = '<font color="red"><b>AJAX Error:</b> There was a problem with the XML-HTTP subrequest</font>';
         }
      }
}

onload_functions.push(ajax_init);
