﻿/**
 * AJAX f�ggv�nyh�v�sok
 * 
 * Fejes D�vid
 * fejesd@gmail.com
 */

/**
 * F�jln�v meghat�roz�sa
 */
var ajaxFileName =location.pathname.substring(location.pathname.lastIndexOf('/')+1);

/**
 * Hova t�lts�k be az eredm�nyt?
 */
var valaszhelye='';

UTF8 = {
	encode: function(s){
		for(var c, i = -1, l = (s = s.split("")).length, o = String.fromCharCode; ++i < l;
			s[i] = (c = s[i].charCodeAt(0)) >= 127 ? o(0xc0 | (c >>> 6)) + o(0x80 | (c & 0x3f)) : s[i]
		);
		return s.join("");
	},
	decode: function(s){
		for(var a, b, i = -1, l = (s = s.split("")).length, o = String.fromCharCode, c = "charCodeAt"; ++i < l;
			((a = s[i][c](0)) & 0x80) &&
			(s[i] = (a & 0xfc) == 0xc0 && ((b = s[i + 1][c](0)) & 0xc0) == 0x80 ?
			o(((a & 0x03) << 6) + (b & 0x3f)) : o(128), s[++i] = "")
		);
		return s.join("");
	}
};

/**
 * & jel cser�je 
 */
function escapel(str)
{
  str=UTF8.encode(str);
  str=str.replace(/&/g,':::andsig:::');
  return (str);
}

/**
 * Egy form �rt�keinek kinyer�se, az eredm�nyek stringbe f�z�se
 */
function getFormValues(fobj) 
{ 
   var str = ""; 
   var valueArr = null; 
   var val = ""; 
   var cmd = ""; 
   for(var i = 0;i < fobj.elements.length;i++) 
   { 
       switch(fobj.elements[i].type) 
       { 
           case "text": 
                str += fobj.elements[i].name + "=" + escapel(fobj.elements[i].value) + "&"; 
                break; 
           case "radio": 
                if(fobj.elements[i].checked) str += fobj.elements[i].name + "=" + escapel(fobj.elements[i].value) + "&"; 
                break; 
           case "hidden": 
                str += fobj.elements[i].name + "=" + escapel(fobj.elements[i].value) + "&"; 
                break; 
           case "select-one": 
                str += fobj.elements[i].name + "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&"; 
                break; 
          case "checkbox":
                 if (fobj.elements[i].checked) str+=fobj.elements[i].name + "=1&";
                 if (!(fobj.elements[i].checked)) str+=fobj.elements[i].name + "=0&";                 
                break; 
          case "textarea":
  				str += fobj.elements[i].name + "=" + escapel(fobj.elements[i].value) + "&"; 
                break;        
         		} 
   } 
   str = str.substr(0,(str.length - 1)); 
   return str; 
}

/**
 * B�ng�sz�f�gg� AJAX agent l�trehoz�sa
 */
function createRequestObject(){
	var request_o;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		request_o = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		request_o = new XMLHttpRequest();
	}
	return request_o;
}

var http = createRequestObject(); 
var tfvn;
var isbusy=false;

/**
 * AJAX k�r�s ind�t�sa, str DIV-be bet�lti a fvneve fv. kimenet�t, POST-al k�ld
 */
function startAjax(mclass,fvneve,str,extra){
	if (isbusy) {
		var browser = navigator.appName;
		if(browser == "Microsoft Internet Explorer"){
			http.abort();
		} else {
			return;
		}
	}
    http.open('POST',ajaxFileName+'?ajaxmodule='+mclass+'&ajaxcall='+fvneve+'&'+extra,true);
	http.onreadystatechange = handleResponse; 
	http.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"); 
	http.send(str);
	tfvn=fvneve;
	isbusy=true;
}

/**
 * AJAX k�r�s ind�t�sa, str DIV-be bet�lti a fvneve fv. kimenet�t, GET-el k�ld
 */
function startAjaxLink(mclass,fvneve,hova,extra){
	if (isbusy) {
		var browser = navigator.appName;
		if(browser == "Microsoft Internet Explorer"){
			http.abort();
		} else {
			return;
		}
	}
    valaszhelye=hova;
    http.open('GET',ajaxFileName+'?ajaxmodule='+mclass+'&ajaxcall='+fvneve+'&'+extra,true);
	http.onreadystatechange = handleResponse; 
	http.send(null);
	tfvn=fvneve;
	isbusy=true;
}

function handleResponse(){	
	if(http.readyState == 4){ 
		var response = http.responseText;
		document.getElementById(valaszhelye).innerHTML = response;
		isbusy=false;
		try {			
			eval(tfvn+'_init()');		
		} catch (err) {}
	}
}

function sub(formneve,mclass,fvneve,celneve,extra){
  valaszhelye=celneve;
  var str = getFormValues(formneve);       
  startAjax(mclass,fvneve,str,extra)
}
	