/* Get element by id */
function getElement(id) {
	if(document.getElementById) {
		//alert("getElement() byId:"+id);
		return document.getElementById(id);
	}
	else if(document.all) {
		//alert("getElement() all:"+id);
		return document.all[id];
	}
	else {
		//alert("getElement() null:"+id);
	}
}
/* AJAX */
var AJAX = function() {
	this.xhr = null;
	this.xml = null;
	this.target = null;
	
	this.platformMoz = (document.implementation && document.implementation.createDocument);
    this.platformIE6 = (!this.platformMoz && document.getElementById && window.ActiveXObject);
    
	try {
		this.xhr = new XMLHttpRequest();
	}
	catch(e) {
		var msXmlVersion = new Array('Microsoft.XMLHttp','MSXML2.XMLHttp.6.0','MSXML2.XMLHttp.5.0','MSXML2.XMLHttp.4.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp.2.0');
		for(var i = 0; i <= msXmlVersion.length; i++) {
			try {
				this.xhr = new ActiveXObject(msXmlVersion[i]);
				break;
			}
			catch(e) { }
		}
	}

	if(!this.xhr) alert("Sorry, this doesn't work in your browser");

	/**
	 * Get
	 * method, url
	 */
	this.get = function(method, url, params, replace) {
		//alert("AJAX get:\r\nmethod: "+method+"\r\nurl: "+url+"\r\nparams: "+params+" ("+params.length+")");
		var self = this;
		
		url = url.replace(/&amp;/g, '&');
		if(url[0] != '/') { url = '/'+url; }
		
		this.xhr.open(method, url);
		if(params.length != 0) {
			this.xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			this.xhr.setRequestHeader("X-Requested-With", "AJAXHttpRequest");
			this.xhr.setRequestHeader("Content-length", params.length);
			this.xhr.setRequestHeader("Connection", "close");
		}
		this.xhr.onreadystatechange = function() {
			if(replace && self.xhr.readyState == 4) {
				if(self.xhr.status == 200) {
					self.xml = self.xhr.responseText;			
					//alert(self.xhr.responseText);
					addToHTML(self.target, self.xhr.responseText);
				}
				/*else {
					alert("Vami definovany prostredek nelze nalezt!");
				}*/
			}
		}
		
		this.xhr.send(params);		
	}
}

/* Send Form */
AJAX.prototype.SendForm = function(module, form) {
	var root = getElement(form+"Form"); // vezme se section name a jeho form...
	//alert("SendForm: "+root);
	
	var inputs = root.getElementsByTagName("input");
	var selects = root.getElementsByTagName("select");
	var params = '';

	for(var i = 0; i < inputs.length; i++)  {
		var n = inputs[i].name;
		if(n.toString() != 'undefined' && n.toString() != '') {
			params += n+"="+inputs[i].value+"&";
		}
	}
	for (var i = 0; i < selects.length; i++)  {
		var n = selects[i].name;
		if(n.toString() != 'undefined' && n.toString() != '') {
			params += n+"="+selects[i].value+"&";
		}
	}
	this.target = form;
	var x = this.get('post', module, params, true);
}

AJAX.prototype.Save = function(module, params, target) {
	this.target = target;
	this.get('post', '/'+module, params);
}

AJAX.prototype.Delete = function(module, id, target) {
	this.target = target;
	this.get('post', module+'/delete', 'id='+id, true);
}
AJAX.prototype.JQDelete = function(module, id) {
	this.get('post', module, 'delete=' + id, false);
}

AJAX.prototype.Get = function(url, id) {
	this.target = 'content';
	this.get('post', url, "id="+id, true);
}

var ajax = new AJAX();


function addToHTML(target, xml) {
	if(ajax.platformMoz) {
		document.getElementById(target).innerHTML = xml;
	}
	/*	
	else if (ajax.platformIE6)
	{
		target.innerHTML = xml;
	}
	*/
	else {
		var e = getElement(target);
		e.innerHTML = xml;
	}
}

