var content_doc = null;
var content_url = '';

function loadContentXML ()
{
  if (window.XMLHttpRequest)
    {
      // code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
    }
  else
    {
      // code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  xmlhttp.open("GET",content_url,false);
  xmlhttp.send(null);
  content_doc = xmlhttp.responseXML;
  return content_doc;
}


var Klasse = function (id)
{
  this.id = id;
  var _type = 'klasse'; 
  var long_desc = null;
  var that = this;

  this.getLongDesc = function ()
  {
    if (long_desc != null)
      {
	return long_desc;
      }
    else
      {
	long_desc = parseLongDesc (_type, id);
      }
    return long_desc;
  };
}

var Text = function (id)
{
  this.id = id;
  var _type = 'text'; 
  var long_desc = null;
  var that = this;

  this.getLongDesc = function ()
  {
    if (long_desc != null)
      {
	return long_desc;
      }
    else
      {
	long_desc = parseLongDesc (_type, id);
      }
    return long_desc;
  };
}


function parseLongDesc (_type, id)
{
  long_desc = new Array();

  // load xml-file if not already done
  if (content_doc == null)
    {
      content_doc = loadContentXML();
    }
  
  // parse for klasse-element with right id-attribute
  var klassen = content_doc.getElementsByTagName(_type);
  for (i in klassen)
    {
      if (klassen[i].getAttribute('id') == id)
	{
	  childs = klassen[i].childNodes;
	  
	  // first get all child nodes from short-element
	  for (j in childs)
	    {
	      if (childs[j].nodeName == 'short')
		{
		  childss = childs[j].childNodes;
		  for (k in childss)
		    {
		      if ((childss[k].nodeType == 1) ||
			  (childss[k].nodeType == 3))
			{
			  long_desc.push(childss[k].cloneNode(true));
			}
		    }
		}
	    }
	  
	  // then get all child nodes from long-element
	  for (j in childs)
	    {
	      if (childs[j].nodeName == 'long')
		{
		  childss = childs[j].childNodes;
		  for (k in childss)
		    {
		      if ((childss[k].nodeType == 1) ||
			  (childss[k].nodeType == 3))
			{
			  long_desc.push(childss[k].cloneNode(true));
			}
		    }
		}
	    }
	  
	  // we found the right klasse-element, so we can break the loop
	  break;
	}
    }
  
  // return the array of nodes
  return long_desc;
}


