var xmlHttp;
var region = 0;
var trunner = null;
var lastdate = "";
var totalrefresh = true;
var aySound = new Array();

function maininit(r,limits,bd,ed)
{
	updateCurrentTime();
	checkUpdate(r,limits,bd,ed);
}

function checkUpdate(r,limits,bd,ed)
{
	if ( r > 0 ) region = r;

	if ( xmlHttp != null )
	{
		xmlHttp.abort();
		xmlHttp = null;
	}
	if ( trunner != null )
	{
		self.clearTimeout( trunner );
		trunner = null;
	}

	xmlHttp = GetXmlHttpObject();
	if ( xmlHttp == null )
	{
		alert( "Browser does not support HTTP request" );
		return;
	}

	var url = "last.php";
	url = url + "?ld=" + lastdate;
	url = url + "&r=" + region;
	url = url + "&l=" + limits;
	url = url + "&bd=" + bd;
	url = url + "&ed=" + ed;
	url = url + "&sid=" + Math.random();
	xmlHttp.onreadystatechange = stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function timercheckUpdate()
{
	reclassmeldingen();
	if ( trunner != null ) { self.clearTimeout(trunner); trunner = null; }
	checkUpdate( region )
}

function stateChanged()
{
	var bodytxt;
	var newbodytxt;
	var bodylen;

	if ( xmlHttp.readyState == 4 || xmlHttp.readyState == "complete" )
	{
		var curdate = new Date();
		var cd_h = curdate.getHours();
		var cd_m = curdate.getMinutes();
		var cd_s = curdate.getSeconds();
		cd_m = addLeadingZero(cd_m);
		cd_s = addLeadingZero(cd_s);
		document.getElementById('lastupdate').innerHTML = 'Last update: ' + cd_h + ':' + cd_m + '.' + cd_s;

		bodylen = xmlHttp.responseText.length;
		if ( bodylen > 0 )
		{
			// fetch new date from header
			newlastdate = xmlHttp.responseText.substr(0,14);

			if ( newlastdate != lastdate )
			{
				// set new lastdate
				lastdate = newlastdate;
				// remove md5 from rest
				bodytxt = xmlHttp.responseText.substr(14);

				if ( totalrefresh )
				{
					// total refresh also shows table etc, so just replace entire body
					document.getElementById('alarmbox').innerHTML = bodytxt;
					totalrefresh = false;
				} else {
					if ( bodytxt.length > 4 )
					{
						// prepend current body with new alarms.  do this by extracting the
						// table statements, putting the body in it and putting it all back

						newbodytxt = document.getElementById('alarmbox').innerHTML;
						var bodyheader = newbodytxt.substr(0,newbodytxt.indexOf("\n"));
						var bodyfooter = newbodytxt.substr(newbodytxt.indexOf("\n"));

						newbodytxt = bodyheader + '\n' + bodytxt + bodyfooter;
						document.getElementById("alarmbox").innerHTML = newbodytxt;
					}
	
					// play sound
					//sendEvent('playpause');
				}
			}
		}


		// clear timer if already set
		if ( trunner != null ) { self.clearTimeout( trunner ); }
		// xmlHttp request done, clear it	
		xmlHttp = null;
		// set new timer
		trunner = self.setTimeout("timercheckUpdate()", 1000);
	}

	
	return true;
}

function GetXmlHttpObject()
{
	var objXMLHttp=null;

	if (window.XMLHttpRequest)
  	{
		objXMLHttp=new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}

	return objXMLHttp;
}

function changeRegion( regionnr )
{
	// set region
	region = regionnr;
	// clear last date because we want to refresh all
	lastdate = "";
	totalrefresh = true;

	// and check for updates
	checkUpdate( region );
}

function regiolinkon(myobj)
{
	// we use a div, so fake the link cursor
	myobj.className = 'regiolinkcursor';
}

function regiolinkoff(myobj)
{
	myobj.className = 'regiolink';
}

function reclassmeldingen()
{
	var meldingtimeout = 900;	// 15 minutes
	var nextchange = false;		// change next melding flag

	// easy var
	var d = document.getElementById("alarmbox").getElementsByTagName('td');

	// loop thru all <td> tags
	for(i=0;i<d.length;i++){
		// check the date/time, calculate it into seconds since jan 1st 1970
		if(d[i].className == 'datumtijd') {
			// dd-mm-yyyy - hh:mm.ss
			var ih = d[i].innerHTML;

			var dday = ih.substr(0,2);	// day
			var dmon = ih.substr(3,2) - 1;	// month (0=jan,1=feb, ...)
			var dyear = ih.substr(6,4);	// year

			var dhour = ih.substr(13,2);	// hour
			var dmin = ih.substr(16,2);	// minutes
			var dsec = ih.substr(19,2);	// seconds

			// use date class to do the calculations
			var meldingdate = new Date( dyear, dmon, dday, dhour, dmin, dsec );
			var curdate = new Date();
			
			// all is done in milliseconds so get milliseconds since 1st jan 1970 and make seconds of them
			var meldingtime = meldingdate.getTime() / 1000;
			var timeouttime = (curdate.getTime() / 1000) - meldingtimeout;

			// is meldingtime longer ago than we want?  if so: set flag to change next melding back to normal
			if ( meldingtime < timeouttime )
			{
				// set flag
				nextchange = true;
			}
		}

		// if already reset, clear flag
		if (d[i].className == 'melding') { nextchange = false; }

		// is too old?  set class to normal
		if (d[i].className == 'meldingnew')
		{
			if ( nextchange ) { d[i].className = 'melding'; }
			nextchange = false;
		}
	}
}

function IEblinkinterval() {
	document.getElementById('blink').style.visibility = (document.getElementById('blink').style.visibility == "hidden") ? "visible" : "hidden";
}
function IEblink(){
	
	setInterval('IEblinkinterval()',1000);
}

function addLeadingZero(i)
{
	if ( i < 10 ) { i = '0' + i; }
	return i;
}

function updateCurrentTime()
{
	var curdate = new Date();
	var cd_h = curdate.getHours();
	var cd_m = curdate.getMinutes();
	var cd_s = curdate.getSeconds();
	cd_m = addLeadingZero(cd_m);
	cd_s = addLeadingZero(cd_s);
	document.getElementById('currenttime').innerHTML = 'Current time: ' + cd_h + ':' + cd_m + '.' + cd_s;

	self.setTimeout("updateCurrentTime()", 1000)
}

function gmapshow(trl)
{
	var melding = trl.getElementsByTagName('td')[2].innerHTML;
	document.getElementById('frmap').src = "gmap.php?melding=" + melding;
}

function gmappop(trl,e)
{
        var melding = trl.getElementsByTagName('td')[2].innerHTML;

	// ********
	window.open( 'gmap.php?melding=' + melding, 'Google maps', 'width=600,height=600' );
	// ********
	return;

	var gmap = document.getElementById('googlemap');
        document.getElementById('frmap').src = "gmap.php?melding=" + melding;

	var newy = e.clientY - (600/2); if ( newy < 0 ) newy = 0;
	var newx = e.clientX - (600/2); if ( newx < 0 ) newx = 0;
	gmap.style.top = newy;
	gmap.style.left = newx;
	gmap.style.display = 'block';
}

function gmapclose()
{
	var gmap = document.getElementById('googlemap');
	gmap.style.display = 'none';
}
