

var ajax_debug_mode = true;
var ajax_response = "";

function _haveajax(){
	if (typeof GetObject != 'undefined' || typeof XMLHttpRequest != 'undefined') {
		return true;
	} else {
		if(_debug)alert("your browser is not officially supported by ajax.");
		return false;
	}
}

function ajax_debug(s){
	if(ajax_debug_mode) alert("[ADI]" + s);
}

function ajax_init(){
	if(!_haveajax()){
		alert("Your browser is not officially supported by etang hompy.");
		return null;
	}
	var _r = null;
	if(typeof ActiveXObject!="undefined"){
		try {
			_r=new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try {
				_r=new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {
				_r=null;
			}
		}
	}
	if(!_r && typeof XMLHttpRequest  != "undefined"){
		_r = new XMLHttpRequest();
		if(!_r){
			ajax_debug("could not create connection object.");
			return null;
		}
	}
	return _r;
}

function ajax_call(){
	var a = ajax_call.arguments;
	var url	= a[0];
	var args = a[1];
	var request_type = a[2];
	var async = false;
	if(a.length > 3){
		ajax_call_base(url,args,request_type,false,a[3]);
	}else{
		return ajax_call_base(url,args,request_type,false);
	}
}

function ajax_call_xml(){
        var a = ajax_call.arguments;
        var url = a[0];
        var args = a[1];
        var request_type = a[2];
        var async = false;
        if(a.length > 3){
                ajax_call_base(url,args,request_type,true,a[3]);
        }else{
                return ajax_call_base(url,args,request_type,true);
        }
}

function ajax_call_base(){
	//get parameters
	var a = ajax_call_base.arguments;
	var url	= a[0];
	var args = a[1];
	var request_type = a[2];
	var xml = a[3];
	var async = false;
	if(a.length>4)async=true;
	
	var i,pd,r;

	if (request_type == "GET") {
		if (url.indexOf("?") == -1){
			url = url + "?";
		}else{
			url = url + "&";
		}
		url = url + "refresh=" + new Date().getTime();
		if(args != null){
			for (i = 0; i < args.length; i++){
				//url = url + "&"+escape(args[i][0])+"=" + escape(args[i][1]);
				url = url + "&"+args[i][0]+"=" + args[i][1];
			}
		}
		pd = null;
	} else {
		pd = "refresh=" + new Date().getTime();
		if(args != null){
			for (i = 0; i < args.length; i++){
				//pd = pd + "&"+args[i][0]+"=" + escape(args[i][1]);
				pd = pd + "&"+args[i][0]+"=" + args[i][1];
			}
		}
	}

	r = ajax_init();
	r.open(request_type, url, async);
	if (request_type == "POST") {
		r.setRequestHeader("Method", "POST " + url + " HTTP/1.1");
		r.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	}else{
		r.setRequestHeader("Content-Type", "text/html; charset=UTF-8");
	}
	r.onreadystatechange = function(){
		if (r.readyState==4 && r.status == 200) {
			if(xml){
				ajax_response = r.responseXML;
			}else{
				ajax_response = r.responseText;
			}
			if(a.length>4){
				a[4](ajax_response);
			}			
		}
	}
	//alert(url);
	r.send(pd);
	if(a.length<=4){
		delete r;
		return ajax_response;
	}
}


function ajax_args(s,formname){
	var a = new Array();
	var i,j,b;
	var s1 = s.split(",");
	var _obj,_objType,_value="";
	for(j=0;j<s1.length;j++){
		b = new Array();
		//alert(s1[j]);
		if(formname != null && formname != ""){
			eval("_obj = document.forms[\""+ formname +"\"]."+ s1[j]);
		}else{
			_obj = document.getElementById(s1[j]);
		}
		//form elements:textarea,text,select-one,select-multiple,checkbox,radio
		
		if(_obj.type == "select-one"){
			_value = _obj.options[_obj.selectedIndex].value;
		}else{
			if(_obj.type == "select-multiple"){
				var k,l=0;
				_value = "";
				for(k=0;k<_obj.length;k++){
					if(_obj[k].selected == true){
						if(l>0){
							_value += "," + _obj[k].value;
						}else{
							_value += _obj[k].value;
						}
						l++;
					}
				}
			}else{
				if(formname != null && formname != "" && typeof _obj[0] != "undefined" && typeof _obj[0].type != "undefined" && ( _obj[0].type == "checkbox" || _obj[0].type == "radio")){
					var k,l=0;
					_value = "";
					for(k=0;k<_obj.length;k++){
						if(_obj[k].checked == true){
							if(l>0){
								_value += "," + _obj[k].value;
							}else{
								_value += _obj[k].value;
							}
							l++;
						}
					}
				}else{
					_value = _obj.value;
				}
			}
		}
		b.push(s1[j]);		
		b.push(_value);
		a.push(b);
	}
	return a;
}

function ajax_parse_array(a){
		for (var i = 0; i < a.length; i++){
			eval("var " + a[i][0] + "=\"" + a[i][1] + "\";");
		}
}

