// JavaScript Document
// holds an instance of XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();

// creates an XMLHttpRequest instance
function createXmlHttpRequestObject() {
  	// will store the reference to the XMLHttpRequest object
  	var xmlHttp;
  	// this should work for all browsers except IE6 and older
  	try {
    	// try to create XMLHttpRequest object
    	xmlHttp = new XMLHttpRequest();
  	} catch(e) {
    	// assume IE6 or older
    	var XmlHttpVersions = new Array("MSXML2.XMLHTTP.8.0",
	 											"MSXML2.XMLHTTP.7.0",
	 											"MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");
    	// try every prog id until one works
    	for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) {
      	try { 
        		// try to create XMLHttpRequest object
        		xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      	} catch (e) {}
    	}
  	}
  	// return the created object or display an error message
  	if (!xmlHttp)
    	alert("Error creating the XMLHttpRequest object.");
  	else 
    	return xmlHttp;
}

/***
* funkce obsluhující AJAX přenosy
*/
function sendAjax (callback, method, url, parameters) {
	try {
      var result = true;
		xmlHttp.open(method, url, true);
      xmlHttp.onreadystatechange = function() {
			// when readyState is 4, we also read the server response
			if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
		    	// continue only if HTTP status is "OK"
		    	if (xmlHttp.status == 200) {
		      	try {
		        		result = callback(xmlHttp);
		      	} catch(e) {
		        		// display error message
		        		alert("Error reading the response: " + e.toString());
		      	}
		    	} else {
		      	// display status message
		      	alert("There was a problem retrieving the data:\n" + xmlHttp.status + ": " + xmlHttp.statusText);
		    	}
		  	} else {
				return false;  
			}
		}
      xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
    	xmlHttp.send(parameters);
		return result;
		
   // display the error in case of failure
   } catch (e) {
      alert("Can't connect to server:\n" + e.toString());
   }
}

/*Synchronous Java And XML*/
function sendSjax(callback, method, url, parameters) {
   var result = true;
   if (!xmlHttp) {
         alert('Giving up :( Cannot create an XMLHTTP instance');
         return false;
   }
   xmlHttp.open(method, url, false);
   xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
   xmlHttp.send(parameters);
 
   if(xmlHttp.status == 200) {
        result = callback(xmlHttp);
   }
   return result;   
}
