function getParams() {
    var formobj=eval(arguments[0]);
    var i;
    var params_s=new String();
    for (i=0; i<formobj.elements.length-1; i++) {
	var tmp;
	if ( formobj.elements[i].type == "checkbox" && formobj.elements[i].checked==false )
	    continue;
	tmp=Url.encode(formobj.elements[i].value);
	if ( tmp.length == 0 ) tmp='n0ll';
	params_s+='&' + formobj.elements[i].name + '=' + tmp;
    }
    return params_s;
}

function postform() {
    var params_s=new String();
    var sid=arguments[0];
    var formobj=arguments[1];
    var url=arguments[2];
    var xmlHttp=ajaxchk();

    if ( sid == undefined || formobj == undefined || url == undefined )
	throw(new Error("1) postform(): Usage: postform(sid,formid,url)"));
    
    // setstatus('&#369;rlap feldolgoz&aacute;sa folyamatban...');
    
    // osszepakoljuk elkuldheto verziora
    params_s='&sid=NINCSSID';
    params_s+=getParams(formobj);
    // alert(params_s);
    if (xmlHttp==null)
	throw(new Error("2) postform(): Ez a bongeszo nem tamogatja az AJAX alapu oldalakat!"));

    xmlHttp.onreadystatechange=function() {
	try {
	    if ( xmlHttp.readyState==4 ) {
		if ( xmlHttp.status != 200 ) {
		    ret=xmlHttp.status;
		    throw(new Error("3) postform(): Status: " + xmlHttp.status));
		} else {
		    if ( typeof(eval(xmlHttp.responseText)) == "number" ) {
			switch(xmlHttp.responseText) {
			    default:
				document.getElementById('elkuld').innerHTML='<center>K&ouml;sz&ouml;nj&uuml;k megrendel&eacute;s&eacute;s&eacute;t!<br>Hamarosan kap egy visszaigazol&oacute; e-mailt!</center>';
			    break;
			    
			    case 1:
				document.getElementById('elkuld').innerHTML='<center>Sajnos technikai okok miatt nem tudtuk a megrendel&eacute;s&eacute;t &eacute;les&iacute;teni!</center>';
			    break;
			}
		    } else {
			throw(new Error("5. Nem szamot kaptunk vissza!"));
		    }
		}
	    }
	} catch(e) {
	    throw(new Error("4) postform(): " + e.name + " => " + e.message));
	}
    }

    xmlHttp.open("POST",url,true);
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    xmlHttp.send(params_s);
}


function ajaxchk() {
	var xmlHttp=null;
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	} catch (e) {
		// Internet Explorer
		try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

var Url = {

	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},

	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},

	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while ( i < utftext.length ) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}
}
