/*
 * Package
 */
var stratos = (function (base) {
	return base;
})( stratos || {} );


/*
 * textGenerator closure
 */
stratos.fontSizeDetector = (function ($) {
	
	/**
	 * Public interface (methods will be added below)
	 */
	var publicInterface = {};
	publicInterface.FONT_SIZE_CHANGE = "fontSizeChange";
	
	/**
	 * Private variables
	 */
	var detectorId = "fontSizeDetector";
	var detectorCreated = false;
	var currentSize = -1;
	var timer;
	
	function createElement() {
		$("body").append("<span id='fontSizeDetector' style='position: absolute; left: -1000px;'>&nbsp;</span>");
		detectorCreated = true;
		checkSize();
	}
	
	function startTimer() {
		timer = setInterval(checkSize, 500);
	}
	
	function stopTimer() {
		if (timer !== undefined) {
			clearInterval(timer);
			timer = undefined;
		}
	}
	
	function checkSize() {
		var newSize = $("#"+detectorId).height();
		if (newSize!==currentSize) {
			currentSize = newSize;
			$("#"+detectorId).trigger(publicInterface.FONT_SIZE_CHANGE, [currentSize]);
		}
	}
	
	
	/**
	 * Public method:
	 * Get a number of paragraphs with an average of averageWords per paragraph
	 */
	
	publicInterface.start = function () {
		if (!detectorCreated) createElement();
		if (timer===undefined) startTimer();
	};
	
	publicInterface.stop = function () {
		if (timer!==undefined) stopTimer();
	};
	
	publicInterface.getDetector = function () {
		return detectorCreated ? $("#"+detectorId) : undefined;
	};
	
	return publicInterface;
	
})(jQuery);

