
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 loader = "<div id='loader'><img src='images/loader.gif'></div>";

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)
{
  myDiv = document.getElementById("MainTopic");
  myDiv.innerHTML = $message;

}

function displayError($message)
{
  display("Error retrieving the news message! Will retry in " +  errorRetryInterval + " seconds." +  (debugMode ? "<br/>" + $message : ""));
}


function read(id)
{
  if (xmlHttp)
  {
    try
    {
      display(loader)
      xmlHttp.open("GET", "read.php?id=" + id, true);
      xmlHttp.onreadystatechange = handleGettingContents;
      xmlHttp.send(null);
    }
    catch(e)
    {
      displayError(e.toString());
    }
  }
}

function handleGettingContents() 
{
  if (xmlHttp.readyState == 4) 
  {
    if (xmlHttp.status == 200) 
    {
      try
      {
        getContents();
      }
      catch(e)
      {
        displayError(e.toString());
      }
    } 
    else
    {
      displayError(xmlHttp.statusText);   
    }
  }
}

function getContents()
{
  var response = xmlHttp.responseText;
  if (response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0  || response.length == 0)
    throw(response.length == 0 ? "Server error." : response);
  display(response);
}

function readcat(id)
{
  if (xmlHttp)
  {
    try
    {
      display(loader)
      xmlHttp.open("GET", "readcat.php?id=" + id, true);
      xmlHttp.onreadystatechange = handleGettingCats;
      xmlHttp.send(null);
    }
    catch(e)
    {
      displayError(e.toString());
    }
  }
}

function handleGettingCats() 
{
  if (xmlHttp.readyState == 4) 
  {
    if (xmlHttp.status == 200) 
    {
      try
      {
        getCats();
      }
      catch(e)
      {
        displayError(e.toString());
      }
    } 
    else
    {
      displayError(xmlHttp.statusText);   
    }
  }
}

function getCats()
{
  var response = xmlHttp.responseText;
  if (response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0  || response.length == 0)
    throw(response.length == 0 ? "Server error." : response);
  display(response);
}

function readEvent(act, date)
{
  if (xmlHttp)
  {
    try
    {
      displayEvents(loader);

      xmlHttp.open("GET", "calendario.php?act=" + act + "&data=" + date, true);
      xmlHttp.onreadystatechange = handleGettingEvents;
      xmlHttp.send(null);
    }
    catch(e)
    {
      displayError(e.toString());
    }
  }
}

function handleGettingEvents() 
{
  if (xmlHttp.readyState == 4) 
  {
    if (xmlHttp.status == 200) 
    {
      try
      {
        getEvents();
      }
      catch(e)
      {
        displayError(e.toString());
      }
    } 
    else
    {
      displayError(xmlHttp.statusText);   
    }
  }
}

function getEvents()
{
  var response = xmlHttp.responseText;
  if (response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0  || response.length == 0)
    throw(response.length == 0 ? "Server error." : response);
  displayEvents(response);
}

function displayEvents($message)
{
  myDiv = document.getElementById("left2");
  myDiv.innerHTML = $message;

}

// interactive tasks

function readInteracting(action, id)
{
  if (xmlHttp)
  {
    try
    {
      display(loader)
      xmlHttp.open("GET", "readInteracting.php?act=" + action + "&id=" + id, true);
      xmlHttp.onreadystatechange = handleGettingInteracting;
      xmlHttp.send(null);
    }
    catch(e)
    {
      displayError(e.toString());
    }
  }
}

function handleGettingInteracting() 
{
  if (xmlHttp.readyState == 4) 
  {
    if (xmlHttp.status == 200) 
    {
      try
      {
        getInteracting();
      }
      catch(e)
      {
        displayError(e.toString());
      }
    } 
    else
    {
      displayError(xmlHttp.statusText);   
    }
  }
}

function getInteracting()
{
  var response = xmlHttp.responseText;
  if (response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0  || response.length == 0)
    throw(response.length == 0 ? "Server error." : response);
  display(response);
}

// popola i task di un contenuto interattivo

function get_task(id)
{
  if (xmlHttp)
  {
    try
    { 	 
      xmlHttp.open("GET", "admin/gettask.php?id=" + id, true);
      xmlHttp.onreadystatechange = handleGettingTask;
      xmlHttp.send(null);
    }
    catch(e)
    {
      displayError(e.toString());
    }
  }
}

function handleGettingTask() 
{
  if (xmlHttp.readyState == 4) 
  {
    if (xmlHttp.status == 200) 
    {
      try
      {
        getTasks();
      }
      catch(e)
      {
        displayError(e.toString());
      }
    } 
    else
    {
      displayError(xmlHttp.statusText);   
    }
  }
}

function getTasks()
{
  var xmlResponse = xmlHttp.responseXML;
  if (!xmlResponse || !xmlResponse.documentElement) throw("Invalid XML structure:\n" + xmlHttp.responseText);
  var rootNodeName = xmlResponse.documentElement.nodeName;
  if (rootNodeName == "parsererror") throw("Invalid XML structure");

  xmlRoot = xmlResponse.documentElement;  
  idArray = xmlRoot.getElementsByTagName("taskId");
  nameArray = xmlRoot.getElementsByTagName("taskName");		

  var e = document.forms[0].elements[1];

  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 , "" + idArray.item(i).firstChild.data);

}


function siteMap()
{
  if (xmlHttp)
  {
    try
    {
      display(loader)
      xmlHttp.open("GET", "sitemap.php", true);
      xmlHttp.onreadystatechange = handleSiteMap;
      xmlHttp.send(null);
    }
    catch(e)
    {
      displayError(e.toString());
    }
  }
}

function handleSiteMap() 
{
  if (xmlHttp.readyState == 4) 
  {
    if (xmlHttp.status == 200) 
    {
      try
      {
        getSiteMap();
      }
      catch(e)
      {
        displayError(e.toString());
      }
    } 
    else
    {
      displayError(xmlHttp.statusText);   
    }
  }
}

function getSiteMap()
{
  var response = xmlHttp.responseText;
  if (response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0  || response.length == 0)
    throw(response.length == 0 ? "Server error." : response);
  display(response);
}



function search(act, f)
{
  if (xmlHttp)
  {
    try
    { 
      display(loader)
      if (act == 'form')
      {
     	 	xmlHttp.open("GET", "search.php?act=" + act, true);
     	 	xmlHttp.onreadystatechange = handleSearch;
      	xmlHttp.send(null);
	}
      else if (act == 'as') 
	{
		if (f)
    		{     
			var serverAddress = f.action;
			var params = '';
 			for (var i = 0; i < f.length; i++) 
			{
				var e = f.elements[i];
    				params += (params.length > 0)? "&" : "";
				params += encodeURIComponent(e.name) + "=" + encodeURIComponent(e.value); 
     			}
		 	xmlHttp.open("POST", serverAddress, true);
        		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        		xmlHttp.onreadystatechange = handleSearch;
        		xmlHttp.send(params);
       	}
	}
      else if (act == 'fp') 
 	{
     	 	xmlHttp.open("GET", "search.php?act=" + f, true);
     	 	xmlHttp.onreadystatechange = handleSearch;
      	xmlHttp.send(null);
	}
    }
    catch(e)
    {
      displayError(e.toString());
    }
  }
}

function handleSearch() 
{
  if (xmlHttp.readyState == 4) 
  {
    if (xmlHttp.status == 200) 
    {
      try
      {
        getSearchData();
      }
      catch(e)
      {
        displayError(e.toString());
      }
    } 
    else
    {
      displayError(xmlHttp.statusText);   
    }
  }
}

function getSearchData()
{
  var response = xmlHttp.responseText;
  if (response.indexOf("ERRNO") >= 0 || response.indexOf("error") >= 0  || response.length == 0)
    throw(response.length == 0 ? "Server error." : response);
  display(response);
}

