/*LibSick php 0.2beta
Author: HtS
Site: http://www.netsick.org
------------------------------------
Some functions use libsick php & js
This script is licensed following GPL v3 license.*/

//Xml Request
function GetXmlHttp(){
  var xmlHttp=null
  // Firefox, Opera 8.0+, Safari
  try{xmlHttp=new XMLHttpRequest()}
  catch (e){
    function GetXmlHttpObject(){
      var xmlHttp=null
      // Firefox, Opera 8.0+, Safari
      try{xmlHttp=new XMLHttpRequest()}
      catch (e){
        // Internet Explorer
        try{xmlHttp=new ActiveXObject("Msxml2.XMLHTTP")}
        catch (e){xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")}
      }
      return xmlHttp
    }
    // Internet Explorer
    try{xmlHttp=new ActiveXObject("Msxml2.XMLHTTP")}
    catch (e){xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")}
  }
  return xmlHttp
}
var loading_items = new Array();
//Ajax Request
function ajax(url,target,options) {
	/*options' syntax
	* -----------------------------------------
	* loader:id,loader_target:,animation:kind,*/
	if (!target) {alert("Ajax: request error")}
	if (!options) {}
	else{
		optarr = options.split(",")
		for (var opti in optarr) {
			opt=optarr[opti].split(":")
			switch (opt[0]) {
				case "loading_target":
					var opt_load_target = true;
					var optLoadTarget = opt[1];
				break;
				default:
					var optLoadTarget = false;
			}
		}
	}
	method = "get";
	if (opt_load_target) {
		getobjecttype(optLoadTarget).innerHTML="loading!!";
		loading_items.push("item");
	}
	else {
		//getobjecttype(target).innerHTML="caricamento in corso...";
	}
	var ajaxObj = false;
	function update(){
		if (ajaxObj.readyState==4 || ajaxObj.readyState=="complete") {
			if (opt_load_target) {
				loading_items.splice(0,1);
				if (loading_items.length == 0) {getobjecttype(optLoadTarget).innerHTML="";}
			}
        getobjecttype(target).innerHTML=ajaxObj.responseText
        var re = /<script\b[\s\S]*?>([\s\S]*?)<\/script>?/ig; // assumes HTML well formed
		var match;
		while (match = re.exec(ajaxObj.responseText)) {
			eval(match[1]);
		}
		//if(loader=='2'){document.getElementById('hidden_loader').innerHTML=""}
        //else if(loader=='3'){document.getElementById('loading_not_top').innerHTML=""}
      }
      //else { alert('There was a problem with the request.'); }
    }
    //avoid IE caching problem
    var randz=randomnumber=Math.floor(Math.random()*101)
    var ajaxObj=GetXmlHttp()
    //ajaxLoader(loader,target)
	var question = '';
    if(url.search(/\?/i) != -1){}
    else {question='?';}
    url=""+url+question+"&rand="+randz
    url=encodeURI(url)
    //GET method headers
    if(method=="get"){
      ajaxObj.open("GET",url,true)
      ajaxObj.setRequestHeader("Content-type", "text/html; charset=UTF-8")
      ajaxObj.onreadystatechange=update
      ajaxObj.send(null)
    }
    //POST method headers along with params
    else if(method=="post"){
      var params= ""
      if (spec_form != "") { var form = document.forms[spec_form] }
      else { var form = document.forms[0] }
      var elementNum = form.elements.length;
      for(var i = 0; i < elementNum; i++){
        if(form.elements[i].type=='checkbox' && form.elements[i].checked==true){
          elem = form.elements[i].value
          elem = encodeURIComponent(elem)
          if(i < elementNum-1){params += form.elements[i].name+"="+elem+"&"}
          else{params += form.elements[i].name+"="+elem}
        }
        else if(form.elements[i].type!='checkbox'){
          elem = form.elements[i].value
          elem = asciiReplace(elem)
          elem = encodeURIComponent(elem)
          if(i < elementNum-1){params += form.elements[i].name+"="+elem+"&"}
          else{params += form.elements[i].name+"="+elem}
        }
      }
      ajaxObj.open("POST", url, true)
      ajaxObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8")
      ajaxObj.setRequestHeader("Content-length", params.length)
      ajaxObj.setRequestHeader("Connection", "close")
      ajaxObj.onreadystatechange=update
      ajaxObj.send(params)      
    }
}

