var XMLHttpRequest
var AJAXOBJ_Exists = false;

function createAjaxObj(){
	AJAXOBJ_Exists = false;
	if (window.XMLHttpRequest) { 
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType("text/xml");
		}
		AJAXOBJ_Exists = true;
	} else if (window.ActiveXObject) { 
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
			AJAXOBJ_Exists = true;
			} catch (e) {
				try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
				AJAXOBJ_Exists = true;
			} catch (e) {;}
			}
	}
}

function getDataFromAjax(getUrl){
	createAjaxObj();
	if (AJAXOBJ_Exists) {
		//prompt("Url do pobrania:","http://dev.autotrader.pl/"+getUrl)
		http_request.onreadystatechange = function() { retrieveAjaxData(http_request); };
		http_request.open('GET', getUrl, true);
		http_request.send(null);
	}else{alert("Nie można utworzyć obiektu komunikacji AJAX")};
}

function postDataFromAjax(getUrl,postParams){
	createAjaxObj();
	if (AJAXOBJ_Exists) {
		//prompt("Url do pobrania:",getUrl);
		http_request.onreadystatechange = function() { retrieveAjaxDataPost(http_request); };
		http_request.open('GET', getUrl, true);
		http_request.send(postParams);
	}else{alert("Nie można utworzyć obiektu komunikacji AJAX")};
}

function postDataFromAjaxFlex(getUrl,postParams,retrFunction){
	createAjaxObj();
	if (AJAXOBJ_Exists) {
		//prompt("Url do pobrania:","http://dev.tabor24.pl/"+getUrl)
		http_request.onreadystatechange = function() { retrFunction(http_request); };
		var method = "GET";
		if (postParams!=null)
		{
			if (postParams.length>0)
			{
				method = "POST"
			}
		}
		http_request.open(method, getUrl, true);
		if (method == "POST")
		{
			http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			http_request.setRequestHeader("Content-length", postParams.length);
			http_request.setRequestHeader("Connection", "close");
		}
		http_request.send(postParams);
	}else{alert("Nie można utworzyć obiektu komunikacji AJAX")};
}


function retrieveAjaxData(http_request){
	if (http_request.readyState <= 3) {
	}
	if (http_request.readyState == 4) {
      		if (http_request.status == 200) {
			var ajaxRetData = http_request.responseText;
			try {
				//alert(ajaxRetData);
				ajaxParsData(ajaxRetData);
				AJAXOBJ_Exists = false;
			}catch(e){
				alert(e+"\nnajprawdopodobniej nie zdefiniowano funkcji odbierającej dane AJAX!\nwg. deklaracji: function ajaxParsData(recData){...}")
			};
		}else{
			alert("Nie można przetworzyć zapytania AJAX")
		}
	}
	
}

function retrieveAjaxDataPost(http_request){
	if (http_request.readyState <= 3) {
	}
	if (http_request.readyState == 4) {
      	if (http_request.status == 200) {
			var ajaxRetData = http_request.responseText;
			try {
				ajaxParsPostData(ajaxRetData);
				AJAXOBJ_Exists = false;
			}catch(e){
				alert(e+"\nnajprawdopodobniej nie zdefiniowano funkcji odbierającej dane AJAX!\nwg. deklaracji: function ajaxParsPostData(recData){...}")
			}
		}else{
			alert("Nie można przetworzyć zapytania AJAX")
		}
	}
}


function ajaxCapchaData(recData)
{
	if (http_request.readyState == 4) {
      		if (http_request.status == 200) {
			var ajaxRetData = http_request.responseText;
			try {
				document.getElementById("capchadata").innerHTML=(recData.responseText);
				document.getElementById("capchalabel").style.display = "block";
				
				AJAXOBJ_Exists = false;
			}catch(e){
				alert(e+"\nnajprawdopodobniej nie zdefiniowano funkcji odbierającej dane AJAX!\nwg. deklaracji: function ajaxParsData(recData){...}")
			};
		}else{
			alert("Nie można przetworzyć zapytania AJAX")
		}
	}				
}

function ajaxCapchaValidate(recData)
{
	if (http_request.readyState == 4) {
      		if (http_request.status == 200) {
			var ajaxRetData = http_request.responseText;
			try {
				onValidateCapcha(recData.responseText);
				AJAXOBJ_Exists = false;
			}catch(e){
				alert(e+"\nnajprawdopodobniej nie zdefiniowano funkcji odbierającej dane AJAX!\nwg. deklaracji: function ajaxParsData(recData){...}")
			};
		}else{
			alert("Nie można przetworzyć zapytania AJAX")
		}
	}				
}

function getCapchaDataViaAjax(userinput,UniqueId)
{
	postDataFromAjaxFlex("/include/getCapchaInput.asp?action=form&ui="+Math.random(),null,ajaxCapchaData);
}

function getCapchaValidateViaAjax(userinput,UniqueId)
{
	postDataFromAjaxFlex("/include/getCapchaInput.asp?capchatext="+userinput+"&CapchaUniqueId="+UniqueId+"&action=validate&ui="+Math.random(),null,ajaxCapchaValidate);
}

function postFormViaAjax(formToPost, urlToPost,responseAnalyseFunction)
{
	if (formToPost)
	{
		var postdata = "";
		var elem;
		var addtopostdata;
		for (i = 0 ; i<formToPost.elements.length ; i++)
		{
			addtopostdata = false
			elem = formToPost.elements[i];
			if ((elem.type.toLowerCase()!="checkbox") && (elem.type.toLowerCase()!="radio"))
			{
				addtopostdata = true;
			}else{
				if (elem.checked) addtopostdata = true;
			}
			if (addtopostdata)
			{
				if (elem.name.length >0){
					if (postdata.length > 0 ) postdata+="&";
					postdata+=urlEncodeChar(elem.name)+"="+(elem.value);
				}
			}
		}
		if (postdata.length > 0)
		{
			postDataFromAjaxFlex(urlToPost,postdata,responseAnalyseFunction);
		}
	}
}
