﻿var _timerInterval_ER = 90*1000;
var _timerId_ER=0;
var url;

function initEmergencyReport(urlToProxy)
{	
	try {
    // debugger;
	  url = urlToProxy;
		postAJAX();
		startEmergencyReportTimer();
	}
	catch (e) {}
}

function startEmergencyReportTimer() 
{ 
	try {
    // debugger;
		stopTimer_ER();
		_timerId_ER=window.setTimeout("tmrTimer_ER()", _timerInterval_ER);
	} catch (e) {}			
}

function tmrTimer_ER()
{
	try {
    // debugger;
		stopTimer_ER();
    postAJAX();
    startEmergencyReportTimer();
  } 
  catch (e) 
  {
		try {
      // debugger;
			startEmergencyReportTimer ();
    } catch (e) {}
  }
}

function stopTimer_ER()
{
	try {
    // debugger;
		window.clearTimeout (_timerId_ER);
  } catch (e) {}			
}

function postAJAX() {
  // debugger;
  
  // Gammal och felaktig filter-sträng
  // För riktig akutinformation - filter="countyno=2"
  // var query = '<ORIONML version="1.0">' + 
  //      				'<REQUEST plugin="TrissData2" version="">' +
  //	  					'<PLUGINML table="Deviations" filter="countyno=\'0\' and active=true and Deleted &lt;&gt; true" />' +
  // 			  			'</REQUEST>' +
  //				  		'</ORIONML>';


  // Nytt filter från Thomas Karlsson - det var en gammal version incheckad i VV:s TFS. 
  //filter = "MessageType like \'akut trafikläge\' and active=true and (deleted is null or deleted &lt;&gt; true)"
  
  
  // Uppdaterat filter - använd denna för hämtning av akut trafikinformation - ska användas i produktion!
  var query = '<ORIONML version="1.0">' +
              '<REQUEST plugin="TrissData2" version="">' +
  						'<PLUGINML table="Deviations" filter="MessageType like \'akut trafikläge\' and active=true and (deleted is null or deleted &lt;&gt; true)" />' +
  						'</REQUEST>' +
  						'</ORIONML>';
  
  
  // Uppdaterat filter - använd denna för hämtning av "testdata", dvs aktuella trafikmeddelanden i TRISS/Orion
  // som det i princip alltid finns förekomster av.
//  var query = '<ORIONML version="1.0">' +
//						  '<REQUEST plugin="TrissData2" version="">' +
//						  '<PLUGINML table="Deviations" filter="MessageType like \'trafikmeddelande\' and active=true and (deleted is null or deleted &lt;&gt; true)" />' +
//						  '</REQUEST>' +
//						  '</ORIONML>';
								
  var status = false;
  var contentType = "text/xml";
  var request;

  // Native XMLHttpRequest object
  if (window.XMLHttpRequest) {		
      request = new XMLHttpRequest();
      request.onreadystatechange = function(){ onSuccessEmergencyReport(request); };
      request.open("post", url, true);
      request.setRequestHeader("Content-Type", contentType);
      request.send(query);        
      status = true;        

  // ActiveX XMLHttpRequest object
  } else if (window.ActiveXObject) {				
      request = new ActiveXObject("Microsoft.XMLHTTP");        
      if (request) {						
				  request.onreadystatechange = function(){ onSuccessEmergencyReport(request); };						
          request.open("post", url, true);            
          request.setRequestHeader("Content-Type", contentType);
          request.send(query);
          status = true;                        
      }
  }

  return status;
}

function onSuccessEmergencyReport (request) {
  try {
    // debugger;
        
		if (request.readyState == 4)
		{
		  var xmlDoc;
			
			if (window.ActiveXObject)
			{
				xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
				xmlDoc.async=false;
				xmlDoc.loadXML(request.responseText);
			}
			else if (document.implementation && document.implementation.createDocument)
			{						
				xmlDoc= document.implementation.createDocument("","doc",null);
				parser=new DOMParser();
				xmlDoc = parser.parseFromString(request.responseText, "application/xml");
		  }
							
			showEmergencyMessage(xmlDoc);					
		}
	} catch (e) {} 
}

function showEmergencyMessage(xmlDoc) {
  // debugger;
    
	var deviations = xmlDoc.childNodes[0].getElementsByTagName("Deviations");
  var childNodesCount = deviations[0].childNodes.length;
	var deviationMessage = "";

	if (childNodesCount > 0)
	{
	  itm = xmlDoc.childNodes[0];
       
    // Ny formatering på meddelandena
	  deviationMessage = deviationMessage + "<div class=\"NewsItem OddRow\"><h2><span>";
    
    // Ny formatering: Om meddelandet är längre och behöver popup, lägg länk på rubriken.
	  if (itm.getElementsByTagName("Message")[0].childNodes[0].nodeValue.length > 170) 
	  {
	    deviationMessage = deviationMessage + "<a href=\"#\" onclick=\"moreInfo(itm)\">" + itm.getElementsByTagName("Header")[0].childNodes[0].nodeValue + "</a>";
	  }
	  else
	  {
	    deviationMessage = deviationMessage + itm.getElementsByTagName("Header")[0].childNodes[0].nodeValue;
	  }
    
    deviationMessage = deviationMessage + "</span></h2>";
    deviationMessage = deviationMessage + "<span class=\"Date\">" + getFormatedDate(itm.getElementsByTagName("VersionTime")[0].childNodes[0].nodeValue) + "</span>";

	  if (itm.getElementsByTagName("Message")[0].childNodes[0].nodeValue.length > 170) 
	  {
	    // Ny formatering
	    deviationMessage = deviationMessage + "<p>" + itm.getElementsByTagName("Message")[0].childNodes[0].nodeValue.substr(0, 169) + "...</p></div>";
	  }
	  else 
	  {   
	    // Ny formatering
	    deviationMessage = deviationMessage + "<p>" + itm.getElementsByTagName("Message")[0].childNodes[0].nodeValue + "</p></div>";
	  }		
		//if (itm.getElementsByTagName("Teaser")[0].childNodes[0].nodeValue != itm.getElementsByTagName("Message")[0].childNodes[0].nodeValue)

		document.getElementById("emergencyReport").innerHTML = deviationMessage;
		document.getElementById("emergencyReportDiv").style.display = 'block';
		document.getElementById("emergencyContainer").style.display = 'block';
		
		if (document.getElementById("trafficInfoImage") != undefined)
		{
			document.getElementById("trafficInfoImage").style.display = 'none';
		}
		
		if (document.getElementById("noEmergencyReport") != undefined)
		{
			document.getElementById("noEmergencyReport").style.display = 'none';
		}
	}
	else {
	  if (document.getElementById("trafficInfoImage") != undefined)
		{
		  document.getElementById("trafficInfoImage").style.display = 'block';
		}
		
		if (document.getElementById("noEmergencyReport") != undefined)
		{
		  document.getElementById("noEmergencyReport").style.display = 'block';
		}

		document.getElementById("emergencyReportDiv").style.display = 'none';
		document.getElementById("emergencyContainer").style.display = 'none';
	}
}

function getFormatedDate(date) {
  // debugger;
  return date.substring(0, 10) + " " + date.substring(11, 16);
}

//function moreInfo(item)
//{
//	var emergencyWin = window.open("", "Viktig", "", "");
//	emergencyWin.document.write("<html><head><title>Viktig information</title></head>");
//	emergencyWin.document.write("<body>");
//	emergencyWin.document.write("<h2>Viktig information</h2>");
//	emergencyWin.document.write("<p>" + item.getElementsByTagName("Header")[0].childNodes[0].nodeValue);
//	emergencyWin.document.write(" (" + getFormatedDate(item.getElementsByTagName("StartTime")[0].childNodes[0].nodeValue) + ")<br />");
//	emergencyWin.document.write("<p>" + item.getElementsByTagName("Message")[0].childNodes[0].nodeValue + "</p>");
//	emergencyWin.document.write("</body>");
//}

function moreInfo(item) {
  // debugger;
	var emergencyWin = window.open("", "Viktig", "menubar=0,status=0,scrollbars=1,width=500,height=400,left=50,top=50", "");
	emergencyWin.document.write("<html><head><title>Viktig information</title><style>body{font-family:verdana;font-size:0.9em;} h1{font-size:1.3em;color:#f00;}</style></head>");
	emergencyWin.document.write("<body><div style=\"float:left;\"><img src=\"/Trafikverket/Templates/Images/trafikverket-logo.gif\" /></div><div style=\"float:right;\"><a href=\"javascript:window.close()\" style=\"color:#000;text-decoration:none\">Stäng fönstret</a></div><div style=\"clear:both;\">");
	emergencyWin.document.write("<h1>Viktig information</h1>");
	emergencyWin.document.write("<p><strong>" + item.getElementsByTagName("Header")[0].childNodes[0].nodeValue);
	emergencyWin.document.write("</strong> (" + getFormatedDate(item.getElementsByTagName("VersionTime")[0].childNodes[0].nodeValue) + ")<br />");
	emergencyWin.document.write("<p>" + item.getElementsByTagName("Message")[0].childNodes[0].nodeValue + "</p>");
	emergencyWin.document.write("</body>");
}