function ajax_create(el,onload,noloading){
	if(!el)
		return;
	
	try{
		ajax = new XMLHttpRequest();
	}
	catch(e){
		try{
			ajax = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e){
			try{
				ajax = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e){
				alert("Your browser does not support AJAX!");
				return;
			}
		}
	}
	
	ajax.onreadystatechange = function(){
		if(ajax.readyState==1 && !noloading)
			ajax_loading(el);
		if(ajax.readyState == 4){
			if(ajax.status == 200 || ajax.status == 0){
				ajax_success(el,ajax.responseText);
				if(typeof onload=="function")
					onload();
			}
			else
				ajax_error(el,ajax.status);
		}
	}
	return ajax;
}

function ajax_loading(e){
	e.innerHTML = '<table style="width:100%;height:100%;vertical-align:middle;text-align:center;"><tr><td><img src="/i/ajax_loading.gif" alt="Loading..."/></td></tr></table>';
}

function ajax_success(e,response){
	//e.innerHTML = ajax_stripslashes(response);
	e.innerHTML = response;
	var tmp = document.createElement('div');
	tmp.innerHTML = response;	
	var sc = tmp.getElementsByTagName("script");
	for(var i=0; i<sc.length; i++){
		if(sc[i].text!=null)
			eval(sc[i].text);
	}
}

function ajax_error(e,nr){
	e.innerHTML = "Wystąpił błąd podczas przetwarzania pliku o numerze " + nr + '.';
}


function ajax_get(url,e,onload,noloading){
	if(typeof e == 'string')
		e = document.getElementById(e);
	var ajax = ajax_create(e,onload,noloading);
	if(!ajax)
		return;
		
	ajax.open('GET',url,true);
	ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	ajax.send();
}

function ajax_post(url,e,values,onload,noloading){
	if(typeof e == 'string')
		e = document.getElementById(e);
	var ajax = ajax_create(e,onload,noloading);
	if(!ajax)
		return;

	ajax.open('POST',url,true);
	ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	var prm='';
	for(var i in values){
		if(i != 0) prm += "&";
		prm += encodeURIComponent(i)+"="+encodeURIComponent(values[i]);
	}
	ajax.send(prm);    
}

function ajax_stripslashes(str){
	str=str.replace(/\\'/g,'\'');
	str=str.replace(/\\"/g,'"');
	str=str.replace(/\\\\/g,'\\');
	str=str.replace(/\\0/g,'\0');
	return str;
}

function ajax_submit(f,a,e){
	e = document.getElementById(e);
	f = document.forms[f];
	if(!f || !e)
		return;

	var method = f.getAttribute('method').toLowerCase();
	var ret = new Array();
	var els = f.elements;
	for(i=0;i<els.length;i++){
		if(els[i].disabled)
			continue;
		var tag = els[i].nodeName.toLowerCase();
		switch(tag){
			case 'input': 
				var t = els[i].type.toLowerCase();
				if(!t)
					t = 'text';
				switch(t){
					case 'text':
					case 'file':
					case 'hidden':
					case 'password':
						ret[els[i].name] = els[i].value;
						break;
					
					case 'checkbox':
						var chk_family = new Array();
						for(j=0;j<els.length;j++){
							if(els[j].name == els[i].name)
								chk_family[chk_family.length] = els[i]; 
						}

						if(chk_family.length>1){
							ret[els[i].name] = new Array();
							for(j=0;j<chk_family.length;j++){
								if(chk_family[j].checked)
									ret[els[i].name][ret[els[i].name].length] = chk_family[j].value;
							}								
						}
						else if(els[i].checked)
							ret[els[i].name] = els[i].value;
						break;	
					
					case 'radio':
						if(els[i].checked)
							ret[els[i].name] = els[i].value;
						break;		
					
				}	
				break;	
			
			case 'select':
				var string = '';			
				var mult = els[i].getAttribute('multiple');
				if(mult || mult===''){
					ret[els[i].name] = new Array();
					for(var j=0;j<els[i].options.length;j++){
						if(els[i].options[j].selected)
							ret[els[i].name][ret[els[i].name].length] = els[i].options[j].value;	
					}
				}
				else
					ret[els[i].name] = els[i].options.length>0 ? els[i].options[els[i].selectedIndex].value : '';
				break;
					
			case 'textarea':
				ret[els[i].name] = els[i].value;
				break;					
		}			
	}
	ret['form']=1;
	if(method=='post')
		ajax_post(a,e,ret);		
}
