// AJAX functions definition

var xmlHttp;
var containerName = "moduleContent"; // name of element where ajax result will go to

function GetXMLHttpObject() {

	var xmlHttp;
	
	try {
		// for firefox, opera and safari
		xmlHttp = new XMLHttpRequest();
	
	} catch (e) {
	
		// for IE
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
		        alert("Your browser does not support AJAX!");
    		    return false;
			}
		}
	}
	
	return xmlHttp;
}

function stateChanged() {
//		 alert(xmlHttp.readyState);
	if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
		 document.getElementById(containerName).innerHTML = xmlHttp.responseText;
	}
}

function processGetXMLRequest(areaName, url) {
	
	containerName = areaName;
	// get XMLHttp Object	
	xmlHttp = GetXMLHttpObject();
	
	if (xmlHttp == null) {
		// ajax not supported, print corresponding message
		alert("AJAX not supported!");
	}
	
	xmlHttp.onreadystatechange = stateChanged;
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);	
}

/* function which submits form with post method using ajax */
function processPostXMLRequest(areaName, url, parameters) {

  containerName = areaName;

	// get XMLHttp Object	
	xmlHttp = GetXMLHttpObject();
	
	if (xmlHttp == null) {
		// ajax not supported, print corresponding message
		alert("AJAX not supported!");
	}

  xmlHttp.onreadystatechange = stateChanged;
  xmlHttp.open("POST", url, true);
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", parameters.length);
  xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(parameters);
}

/* function for creating post parameters for ajax */
function createPostParameters(formName) {

  var form     = document.getElementById(formName);
  var fields   = form.elements;
  var elCount  = form.elements.length;
  var params   = "";  // resulting parameters
   
  /* cycle throuht form elements */
  for (var i = 0; i < elCount; i++) {
  
    /* a little hack for checkbox inputs 
       it doesn't work if you want to pass checkbox value and checked state,
       so idea is to put 'on' 'off' into checkbox value separated by _, -, or 
       something else
    
    */
    if (fields[i].getAttribute('type') == 'checkbox') {
    
      if (fields[i].checked)
        fields[i].value += "_on";
      else
        fields[i].value += "_off";
    
    }

    params += fields[i].name + "=" + fields[i].value;
    if (i != elCount-1)
      params += "&";
 
  }

  return params;
}

/* function which removes all data in container */
function clearContainer(areaName) {

  document.getElementById(areaName).innerHTML = "";
}
