var subreq_req;
var subreq_obj;

function subreq_makeRequest(url,typ)
{
  subreq_req = false;
  // branch for native XMLHttpRequest object
  if(window.XMLHttpRequest)
  {
  	try{ subreq_req = new XMLHttpRequest(); }
    catch(e){ subreq_req = false; }
  }
  // branch for IE/Windows ActiveX version
  else if(window.ActiveXObject)
  {
    try{ subreq_req = new ActiveXObject("Msxml2.XMLHTTP"); }

    catch(e)
    {
      try { subreq_req = new ActiveXObject("Microsoft.XMLHTTP"); }
      catch(e){ subreq_req = false; }
		}
  }

	if(subreq_req)
  {
		if( typ == 1 )
	    { 
		  subreq_req.onreadystatechange = subreq_processRequestInsert;
		}
		else if( typ == 2 )
	    {
			subreq_req.onreadystatechange = subreq_processRequestAppend;
	    }
		else if( typ == 3 )
	    {
			subreq_req.onreadystatechange = subreq_processRequestLink;
	    }
	    else if( typ == 4 )
	    {
			subreq_req.onreadystatechange = subreq_processRequestMessage;
	    }
		else if( typ == 5 )
	    {
			subreq_req.onreadystatechange = subreq_processRequestAndMessage;
	    }
		else
	    {
			subreq_req.onreadystatechange = subreq_processRequest;
	    }
		subreq_req.open("GET", url, true);
		subreq_req.send(null);
	}
  else
  {
    alert("Failed to execute your request. Your browser does not support the functions used!");
  }
}

function subreq_processRequestCore()
{
  // only if req shows "loaded"
  if (subreq_req.readyState == 4)
  {
    // only if "OK"
    if (subreq_req.status == 200)
    {
      return subreq_req.responseText;
    }
    else
    {
      return "<p><b>Din begäran misslyckades - " + subreq_req.status + " " + subreq_req.statusText + "</b></p>";
    }
  }
}

function subreq_processRequestLink()
{
  if (subreq_req.readyState == 4)
  {
    if (subreq_req.status == 200)
    {
      if( subreq_req.responseText != '1' )
	  {
		alert("Fel på länken!\n\nDen länk du just klickat på verkar tyvärr inte fungera just nu. Problemet har rapporterats till Administratören som får undersöka om felet är permanent eller temporärt.\n\nOm du tror att felet är temporärt kan du försök igen om en liten stund!");
	  }
    }
  }
}

function subreq_processRequest()
{
  if (subreq_req.readyState == 4)
  {
    subreq_obj.innerHTML = subreq_processRequestCore();
  }
}

function subreq_processRequestInsert()
{
  if (subreq_req.readyState == 4)
  {
	var text = subreq_obj.innerHTML;
    subreq_obj.innerHTML = subreq_processRequestCore() + text;
  }
}

function subreq_processRequestAppend()
{
  if (subreq_req.readyState == 4)
  {
	var text = subreq_obj.innerHTML;
    subreq_obj.innerHTML = text + subreq_processRequestCore();
  }
}

function subreq_processRequestMessage()
{
  if (subreq_req.readyState == 4)
  {
    goodMessage(subreq_processRequestCore());
  }
}

function subreq_processRequestAndMessage()
{
  if (subreq_req.readyState == 4)
  {
    var text = subreq_processRequestCore();
    if( text.length == 1 )
    {
	noMessage();
	badMessage("Din begäran misslyckades! - Felkod: " + text);
    }
    else
    {
	  subreq_obj.innerHTML = text;
	  noMessage();
    }
  }
}
