function URLEncode(plaintext) 
{
    plaintext=""+plaintext;
    var CharOk="0123456789" +
	      "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
	      "abcdefghijklmnopqrstuvwxyz" +
	      "-_.!~*'()";
    var HexDigit="0123456789ABCDEF";
    var encoded = "";
    for (var i=0; i<plaintext.length; i++) 
    {
	var ch=plaintext.charAt(i);
	if (ch==" ") 
	{  
	  encoded+="+";  // Potrebbe essere anche "%20".
	} 
	else if (CharOk.indexOf(ch)!=-1) 
	{
	  encoded+=ch;
	} 
	else 
	{
	  var charCode=ch.charCodeAt(0);
	  if (charCode>255) 
	  {
	      // Carattere unicode non supportato!
	      encoded+="+";
	  } 
	  else 
	  {
	      encoded+="%";
	      encoded+=HexDigit.charAt((charCode>>4)&0xF);
	      encoded+=HexDigit.charAt(charCode&0xF);
	  }
	}
  }
  return encoded;
}


function PackParameters(param_array) {
  var num=0;
  string="";
  for (var i in param_array) {
    string=string+(num ? "&" : "")+i+"="+URLEncode(param_array[i]);
    num++;
  }
  return string;
}
function loadJS(url) {
  var script=document.createElement('script');
  script.type='text/javascript';
  script.src=url;
  document.getElementsByTagName('head')[0].appendChild(script);
}
function getJSName(filename,suffisso) 
{
  parti=new Array();
  parti=filename.split("?");
  if (parti[0]!=undefined)
    filename=parti[0];
  parti=filename.split(".");
  idx=1;
  idx=parti.length;
  if (parti.length>1) idx--;
  ext="js";
  if (suffisso!=undefined && suffisso!='') ext=suffisso+'_'+ext;
  parti[idx]=ext;
  newfilename=parti.join(".");
  delete parti;
  return newfilename;
}


function SynchHTTPRequest() {
  var Req;

  function getReqObj() {
    if (window.XMLHttpRequest) {
      /* Native XMLHttpRequest object. */
      Req = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
      /* IE/Windows ActiveX version. */
      Req = new ActiveXObject("Microsoft.XMLHTTP");
      if (!Req) return false;
    }
    return true;
  }

function POST_RequestS(url, param_string) 
{
    if (!getReqObj()) return;
    Busy();
    Req.open("POST", url, false);
    Req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    Req.send(param_string);
    UNBusy();
		if (Req.readyState!=4) return "Errore interno #1";
    if (Req.status!=200) return "Errore del server "+Req.status;
    return Req.responseText; 
  }
  this.POST_RequestS = POST_RequestS;

	function POST_RequestAll(url, param_string,target) 
	{
		if (!getReqObj()) return;
		Busy();
		Req.open("POST", url, false);
		Req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		Req.send(param_string);
		UNBusy();
			if (Req.readyState!=4) return "Errore interno #1";
		if (Req.status!=200) return "Errore del server "+Req.status;
			  /* Target unico. */
		var obj=document.getElementById(target);
		if (obj) 
		  obj.innerHTML=Req.responseText;
		
		loadJS(getJSName(url,''));
		return 0; 
	}
  this.POST_RequestAll = POST_RequestAll;
  

  
  function POST_RequestA(url, param_array) {
    return POST_RequestS(url,PackParameters(param_array));
  }
  this.POST_RequestA = POST_RequestA;
}


function SynchPOSTRequestS(url, param_string) {
  param_string=utf8_encode(param_string);	
  var pr = new SynchHTTPRequest();
  ret=pr.POST_RequestS(url,param_string);
  delete pr;
  return ret;
}
function SynchPOSTRequestAll(url, param_string,target) 
{
  
  param_string=utf8_encode(param_string); 
  var pr = new SynchHTTPRequest();
  ret=pr.POST_RequestAll(url,param_string,target); 
  delete pr;
  return ret;
}
function SynchPOSTRequestA(url, param_array) 
{
 //qui mi becco sigla e filiale dall'input hidden.
  if (param_array && param_array!=undefined && is_array(param_array))
  {
    var sig=document.getElementById("siglahidden");
    var fil=document.getElementById("filialehidden");
    if (sig && sig!=undefined && sig!="" && sig!="null")
    {
      if (sig.value.length==3)
      param_array["sigla"]=sig.value;
    }
    if (fil && fil!=undefined && fil!="" && fil!="null")
    {
      if (fil.value.length==3 || fil.value.length==4)
      param_array["filiale"]=fil.value;
    }
    delete fil;
    delete sig;
  }
  document.body.style.cursor = "wait";
  if (param_array && param_array!=undefined && is_array(param_array))
    param_array=utf8Array(param_array);
  var pr = new SynchHTTPRequest();
  ret=pr.POST_RequestA(url,param_array);
  delete pr;
  document.body.style.cursor = "default";	
  return ret;
}

function ChiamaPostRequest(url, param_array) 
{
//qui mi becco sigla e filiale dall'input hidden.
   if (param_array && param_array!=undefined)
  {
    var sig=document.getElementById("siglahidden");
    var fil=document.getElementById("filialehidden");
    if (sig && sig!=undefined && sig!="" && sig!="null")
    {
      if (sig.value.length==3)
      param_array["sigla"]=sig.value;
    }
    if (fil && fil!=undefined && fil!="" && fil!="null")
    {
      if (fil.value.length==3 || fil.value.length==4)
      param_array["filiale"]=fil.value;
    }
    delete fil;
    delete sig;
  }
  ret=SynchPOSTRequestA(url, param_array); 	
  return ret;
}

function getHiddenVar(nome) {
  elem=document.getElementById(nome);
  if (!elem) return '';
  return html_entity_decode(elem.value);
}


function getIvHiddenVar(nome) {
  return getHiddenVar('iv_'+nome);
}


function makeRequest(request, param) {
  param['iv_request']=request;
  elem=document.getElementById('ivshared_serialized');
  if (elem)
    param['ivshared_serialized']=elem.value;
	res=SynchPOSTRequestA("requestserver.php",param);
	document.getElementById('vardiv').innerHTML=res;
}



function setHTML(object, value) {
  elem=document.getElementById(object);
  if (!elem) return;
  elem.innerHTML=value;
}


function html_entity_decode(str) {
  var ta=document.createElement("textarea");
  ta.innerHTML=str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
  return ta.value;
}

