var fetching = false;
var site_url = '/';

function showLoader(fieldName) {
	fetchObject(fieldName).innerHTML = '<img src="http://www.hotel666.de/img/loader.gif" />';
}

function setField(fieldName) {
	ajRequest.targetField = fieldName;
}

function ajaxHandler() {
	this.http_request = false;
	this.defaultField = 'greyCont';
	this.targetField = this.defaultField;

	if(window.XMLHttpRequest) { // Mozilla, Safari,...
		this.http_request = new XMLHttpRequest();
		if(this.http_request.overrideMimeType) {
			this.http_request.overrideMimeType('text/xml');
		}
	} else if(window.ActiveXObject) { // IE
		try {
			this.http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				this.http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if(!this.http_request) {
		//alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
		return false;
	}

	this.onreadystatechange =
		function(rdy_func_name) {
			fetching = (this.http_request.readyState != 4) ? true : false;
			this.http_request.onreadystatechange = rdy_func_name;
		}

	this.send =
		function(type, url, post_vars) {
			this.http_request.open(type, url);
			this.http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
			this.http_request.setRequestHeader("Pragma", "no-cache");
			this.http_request.setRequestHeader("Cache-Control", "must-revalidate");
			this.http_request.setRequestHeader("If-Modified-Since", document.lastModified);
			this.http_request.setRequestHeader("X_EMERGE", "XMLHttpRequest");
			this.http_request.send(post_vars);
		}
}

function setFieldCont() {

	if(ajRequest) {
		if(ajRequest.http_request.readyState == 4 && ajRequest.http_request.status == 200 && ajRequest.http_request.responseText) {
			fetching = false;
			if(fetchObject(ajRequest.targetField).style != undefined) fetchObject(ajRequest.targetField).style.top = "200px";
			var splitRep = ajRequest.http_request.responseText.split(';');
			switch(splitRep[0]) { //ggf einfach 'action=blbla in der ajax.php zurückgeben und hier per doRequest verarbeitne
				case 'sendRequest':
					doRequest(splitRep[1], splitRep[2], splitRep[3], splitRep[4]);
					break;
				case 'labelAddOk':
					doRequest('ajax/ajax_label.php', 'action=jGetSelectLabel&j_sec=label&label_id='+splitRep[1], 'label_id', true);
					break;
				case 'locationAddOk':
					doRequest('ajax/ajax_location.php', 'action=jGetSelectLocation&j_sec=location&location_id='+splitRep[1], 'location_id', true);
					break;
				case 'chkUser':
					if(splitRep[1] != 'false') {
						fetchObject(ajRequest.targetField).innerHTML = splitRep[2];
						fetchObject('user_id').value = splitRep[1];
					}
					break;
				default:
						
					fetchObject(ajRequest.targetField).innerHTML = ajRequest.http_request.responseText;
					fetchObject(ajRequest.targetField).style.display = "";
					break;
			}
		}
	}
}

function initHandler() {
	ajRequest = new ajaxHandler();
	ajRequest.onreadystatechange(setFieldCont);
}

function chkBusy() {
	if(fetching) {
		alert('processing previous request');
		return true;
	}
}

function abortRequest() {
	fetching = false;
	this.http_request.abort();
}

function doRequest(postFile, postString, fieldName, tggleLightbox) {
	if(tggleLightbox) toggleLightbox();
	if(!chkBusy()) {
		initHandler();
		setField((fieldName == 'default') ? ajRequest.defaultField : fieldName);
		showLoader(ajRequest.targetField);
		var encodePostString;
		var splitString = postString.split('&');
		for(var i=0; i<splitString.length; i++) {
			var splitFurtherString = splitString[i].split('=');
			if(splitFurtherString[0] != undefined) {
				encodePostString = encodePostString+'&'+splitFurtherString[0]+'='+encodeURIComponent(splitFurtherString[1]);
			}
		}
		ajRequest.send('POST', site_url + postFile, postString);
		fetching = true;
	}
}

function sendForm(frmId) {
	frm = document.getElementById(frmId);
	var last;
	var str;
	var value;

	for(i=0; i<frm.length; i++) {
		el = frm.elements[i];
		if(el.name != last) {
			if(el.type == 'radio') {
				s_choice = document.getElementsByName(el.name);
				for(j=0; j<s_choice.length; j++) {
					if(s_choice[j].checked == true) {
						str = str+'&'+el.name+'='+s_choice[j].value;
					}
				}
			} else if(el.type == 'checkbox') {
				if(fetchObject(el.name).checked) str = str+'&'+el.name+'='+fetchObject(el.name).value;
			} else {
				str = str+'&'+el.name+'='+encodeURIComponent(fetchObject(el.name).value);
			}
			//alert(str);
			last = el.name;
		}
	}
	//alert(frm.getAttribute('action'));
	doRequest((frm.getAttribute('action').substring(0,1) == '/') ? frm.getAttribute('action').substring(1) : frm.getAttribute('action'), str, ajRequest.targetField, false);

}


