
var xmlHttp = createXmlHttpRequestObject();

var updateInterval = 5; // how many seconds to wait to get new message

var errorRetryInterval = 30; // seconds to wait after server error

var debugMode = true;

var fieldID; // per l'aggiornamento dell'area

function createXmlHttpRequestObject() 
{
  var xmlHttp;
  try
  {
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");
    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
    {
      try 
      { 
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      } 
      catch (e) {}
    }
  }
  if (!xmlHttp)
    alert("Error creating the XMLHttpRequest object.");
  else 
    return xmlHttp;
}

function display($message)
{
  myField = document.getElementById("myDiv");
  myField.innerHTML = $message;

}

function displayError($message)
{
  display("Error retrieving the news message! Will retry in " +  errorRetryInterval + " seconds." +  (debugMode ? "<br/>" + $message : ""));
}

function SpecialChars(_flag) 
   { 
   _flag = arguments.length? _flag :1; 
   var _CharsArray= [ 
	["&","&amp;"], 
	["á","&aacute;"], 
	["à","&agrave;"],
      ["À","&Aacute;"], 
      ["è","&egrave;"], 
      ["È","&Egrave;"], 
      ["é","&eacute;"], 
      ["ì","&igrave;"], 
	["í","iacute;"],
      ["ò","&ograve;"], 
      ["ù","&ugrave;"],
      ['"',"&quot;"],
      ["€","&euro;"] 
      ]; 

   var _SpecialChars = this.toString(); 
      for (i in _CharsArray) 
         _SpecialChars = _SpecialChars.replace(new RegExp(_CharsArray[i][_flag],"g"),_CharsArray[i][1-_flag]); 
   return _SpecialChars; 
   } 

String.prototype.SpecialChars = SpecialChars; 



function get_content(idcat, idcont)
{
  if (xmlHttp)
  {
    try
    { 	 
      xmlHttp.open("GET", "getcontent.php?idcat=" + idcat + "&idcont=" + idcont, true);
      xmlHttp.onreadystatechange = handleGettingContent;
      xmlHttp.send(null);
    }
    catch(e)
    {
      displayError(e.toString());
    }
  }
}

function handleGettingContent() 
{
  if (xmlHttp.readyState == 4) 
  {
    if (xmlHttp.status == 200) 
    {
      try
      {
        getContent();
      }
      catch(e)
      {
        displayError(e.toString());
      }
    } 
    else
    {
      displayError(xmlHttp.statusText);   
    }
  }
}

function getContent()
{
    var response = xmlHttp.responseText;
    if (response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0  || response.length == 0)
    throw(response.length == 0 ? "Server error." : response);
    myField = document.getElementById("myDiv");
    myField.innerHTML = response;

}


function get_area(type, row)
{
  if (!type) return;

  fieldID = row;
  if (xmlHttp)
  {
    try
    { 	 
      xmlHttp.open("GET", "getarea.php?type=" + type, true);
      xmlHttp.onreadystatechange = handleGettingArea;
      xmlHttp.send(null);
    }
    catch(e)
    {
      displayError(e.toString());
    }
  }
}

function handleGettingArea() 
{
  if (xmlHttp.readyState == 4) 
  {
    if (xmlHttp.status == 200) 
    {
      try
      {
        getArea();
      }
      catch(e)
      {
        displayError(e.toString());
      }
    } 
    else
    {
      displayError(xmlHttp.statusText);   
    }
  }
}

function get_Area()
{
    var response = xmlHttp.responseText;

    if (response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0  || response.length == 0)
    {
		throw(response.length == 0 ? "Server error." : response);
		displayError(response);  
		return;
	}

    divID = "myDiv" + fieldID;
    myField = document.getElementById(divID);
    myField.innerHTML = response;

}

function getArea()
{
  var xmlResponse = xmlHttp.responseXML;
  if (!xmlResponse) throw("Invalid XML structure 1:\n" + xmlHttp.responseText);
  if (!xmlResponse.documentElement) throw("Invalid XML structure 2:\n" + xmlHttp.responseText);



  var rootNodeName = xmlResponse.documentElement.nodeName;
  if (rootNodeName == "parsererror") throw("Invalid XML structure");

  xmlRoot = xmlResponse.documentElement;  
  idArray = xmlRoot.getElementsByTagName("fieldId");
  nameArray = xmlRoot.getElementsByTagName("fieldName");		

  divID = fieldID * 3;

  var e = document.permform.elements[divID];

  var o = e.options;

  while ( o.length != 0 ){
	e.remove(0);
  }

  for (var i = 0; i < idArray.length; i++)
	e.options[i] = new Option("" + nameArray.item(i).firstChild.data.SpecialChars(1), "" + idArray.item(i).firstChild.data);

}



