/*
 * UNIWERSALNE FUNKCJE DO AJAX ----==== POCZATEK ====----
 */
function createXMLHttp()
{
    if (typeof XMLHttpRequest != "undefined")
    {
        return new XMLHttpRequest();    
    }
    else
    {
        var aVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp" ];
        for (var i = 0; i <aVersions.length; i++)
        {
            try
            {
                var oXmlHttp = new ActiveXObject(aVersions[i]);
                return oXmlHttp;
            }
            catch (oError)
            {
			   // celowo puste 
			}
        }
    }
    throw new Error("Nie można utworzyć obiektu XMLHttp.");
}

function getRequestBody(oForm)
{
    var aParms = new Array();
    for (var i=0; i<oForm.length; i++)
    {
	    if (oForm.elements[i].type == 'checkbox')
		{
			if (oForm.elements[i].checked == true)
			{
				var sParm = encodeURIComponent(oForm.elements[i].name);
				sParm += "=";
				sParm += encodeURIComponent(oForm.elements[i].value);
				aParms.push(sParm);
			}
		}
		else if (oForm.elements[i].type == 'select-multiple')
		{
			for(j=0; j<oForm.elements[i].length; j++)
			{
				if (oForm.elements[i][j].selected == true)
				{
					var sParm = encodeURIComponent(oForm.elements[i].name);
					sParm += "=";
					sParm += encodeURIComponent(oForm.elements[i][j].value);
					aParms.push(sParm);
				}
			}
		}
		else if (oForm.elements[i].type == 'radio')
		{
			var sParm = encodeURIComponent(oForm.elements[i].name);
			sParm += "=";
			sParm += encodeURIComponent(getRadioValue(oForm[oForm.elements[i].name]));
			aParms.push(sParm);
			var name_tmp = oForm.elements[i].name;
			while(name_tmp == oForm.elements[i++].name); // dosc glupie ominiecie problemu... ale przewaznie dziala
			i-=2; 
		}
		else
		{
			var sParm = encodeURIComponent(oForm.elements[i].name);
			sParm += "=";
			sParm += encodeURIComponent(oForm.elements[i].value);
			aParms.push(sParm);
		}
    }
    return aParms.join("&"); 
}

function getRadioValue(radioObj)
{
	if (radioObj.checked)
		return radioObj.value; 
	for(var i=0; i<radioObj.length; i++) 
		if(radioObj[i].checked) 
			return radioObj[i].value;
	return null;
}

function ajaxGet(divShowAnswerName, action)
{
    var divShowAnswer = document.getElementById(divShowAnswerName);
    divShowAnswer.innerHTML = 'Proszę czekać...';
		
	var oXmlHttp = createXMLHttp();
	oXmlHttp.open("get", action, true);

	oXmlHttp.onreadystatechange = function()
	{
	    if (oXmlHttp.readyState == 4)
	    {
	    	if (oXmlHttp.status==200)
	    	{
	    		divShowAnswer.innerHTML = oXmlHttp.responseText;
	    	}
	    	else
	    	{
	        	divShowAnswer.innerHTML = 'Wystąpił błąd: ' + oXmlHttp.statusText;
	        }
	    }
	}
	oXmlHttp.send(null);
}

function ajaxPost(divShowAnswerName, action, sBody)
{
    var divShowAnswer = document.getElementById(divShowAnswerName);
	divShowAnswer.innerHTML='<div align="center">Proszę czekać...</div>';
    
	var oXmlHttp = createXMLHttp();
    oXmlHttp.open("post", action, true);
    oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    oXmlHttp.onreadystatechange = function()
    {
        if(oXmlHttp.readyState == 4)
        {
            if (oXmlHttp.status == 200)
            {
                divShowAnswer.innerHTML = oXmlHttp.responseText;
            }
            else
            {
                divShowAnswer.innerHTML = "Wystąpił błąd: "+oXmlHttp.statusText;    
            }
        }
    }
	oXmlHttp.send(sBody);
}

function createXMLfromString(string)
{
	try //Internet Explorer
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.loadXML(string);
		return xmlDoc;
	}
	catch(e)
	{
	 	try //Firefox, Mozilla, Opera, etc.
		{
			var parser=new DOMParser();
			return parser.parseFromString(string,"text/xml");
		}
		catch(e) 
		{
			alert(e.message)
		}
	}
}
/*
 * UNIWERSALNE FUNKCJE DO AJAX ----==== KONIEC ====----
 */

function stopEvent(e)
{
	e.cancelBubble = true;
	e.returnValue = false;

	if (e.stopPropagation) 
	{
		e.stopPropagation();
		e.preventDefault();
	}
}
