window.onload = init;

var objXHR;

function init()
{
	var objInterval, objUpdate;

	if (!document.getElementById ||
		!document.createTextNode ||
		(typeof XMLHttpRequest == 'undefined' && !ActiveXObject))
	{
		return;
	}

	objUpdate = document.getElementById('updateweather');
	if (objUpdate)
	{
		objUpdate.parentNode.removeChild(objUpdate);
	}
	objInterval = setTimeout(updateWeather, 2000);
}

function updateWeather()
{
	// Create an instance of the XMLHttpRequest object
	objXHR = window.XMLHttpRequest ?
	  new XMLHttpRequest() : 
	  new ActiveXObject("MSXML2.XMLHTTP.3.0");

	if (objXHR)
	{
		// Setup the request object
		objXHR.onreadystatechange = processResult;
		objXHR.open('GET', 'generatedata.php', true);
		objXHR.send(null);
	}
}

function processResult()
{
	var objResult, objCurrent, objReplacement, objInterval, iCity, iTemperature;

	if (objXHR.readyState == 4)
	{
		if (objXHR.status == 200)
		{
			// Get the response
			objResult = objXHR.responseXML.documentElement;
			iCity = objResult.getElementsByTagName('condition')[0].getAttribute('id');
			iTemperature = objResult.getElementsByTagName('condition')[0].getAttribute('temp');

			objCurrent = document.getElementById('city' + iCity);

			objReplacement = document.createElement('span');
			objReplacement.setAttribute('id', 'city' + iCity);
			objReplacement.appendChild(document.createTextNode(iTemperature));
			objCurrent.parentNode.replaceChild(objReplacement, objCurrent);
			drawAttention(objReplacement.parentNode.parentNode, 0);
			objInterval = setTimeout(updateWeather, parseInt(14000 * Math.random(), 10) + 500);
		}
	}
}

function drawAttention(objRow, iIntensity)
{
	objRow.style.backgroundColor = 'rgb(255, 255, ' + iIntensity + ')';

	if (iIntensity < 256)
	{
		iIntensity += 16;
		setTimeout(function() {drawAttention(objRow, iIntensity);}, 150);
	}
}

