
var WaterMeter = function()
{
	return {
		init: function()
		{
			var NUMBER_HEIGHT = 19;
			
			$("#contentarea h2, #relatedcontent h2").each(function()
				{
					var h2 = $(this);
					
					if (h2.text().match(/Water Savings/))
					{
						var waterMeter = $('<div id="waterMeter"></div>');
						waterMeter.insertBefore(h2);
						
						var paragraph1 = h2.next();
						paragraph1.addClass("interimDate");
						var paragraph2 = paragraph1.next();
						paragraph2.addClass("rate");
						var paragraph3 = paragraph2.next();
						paragraph3.addClass("date");
						
						h2.appendTo(waterMeter);
						paragraph1.appendTo(waterMeter);
						paragraph2.appendTo(waterMeter);
						paragraph3.appendTo(waterMeter);
					}
				}
			);
			
			var waterMeter = $("#waterMeter");
			
			if (waterMeter.length > 0)
			{
				for (var i = 0; i < 11; i++)
				{
					waterMeter.append('<div id="waterMeterCount' + (i + 1) + '" class="waterMeterCount"><div class="waterMeterNum"></div></div>');
				}
				
				animate();
			}
			
			function animate()
			{
				var stringDate = $(".interimDate", waterMeter).text().match(/\S+L at ([^ ]+)/, "")[1];
				var splitDate = stringDate.split("/");
				var currDate = new Date();
				var startDate = new Date(splitDate[1] + "/" + splitDate[0] + "/" + splitDate[2]);
				var waterRate = $(".rate", waterMeter).text().match(/(\S+)L/)[1];
				var dayDifference = (currDate.getTime() - startDate.getTime()) / 86400000;
				var startAmount = parseInt($(".interimDate", waterMeter).text().match(/\S+L/, "")[0]);
				var waterSaved = startAmount + Math.round(dayDifference * waterRate);
				var waterSavedString = waterSaved + "";
				
				for (var i = 0; i < waterSavedString.length; i++)
				{
					var number = $("#waterMeterCount" + (i + 1) + " .waterMeterNum");
					var moveTo = waterSavedString.substring(waterSavedString.length - 1 - i, waterSavedString.length - i);
					var counterMove = -Math.round(moveTo * NUMBER_HEIGHT);

					if (i < 2 && waterRate / Math.pow(10, i) > 86400)
					{
						number.css("top", counterMove + "px");
					}
					else if (typeof number[0].position == "undefined" || number[0].position != moveTo)
					{
						number.animate({top: counterMove + "px"}, 1000);
						number[0].position = moveTo;
					}
				}
				
				setTimeout(animate, 50);
			};
		}	
	}
}();

$("html").addClass("js");

$(WaterMeter.init);