/**
 * Класс для отображения индикатора загрузки
 */
var Loading = (function() {

	//Предзагрузка картинки индикатора
	$(function(){
		var img = new Image();
		var indicator = $('<div class="popup-loading"><div></div></div>');
		img.src = $('div', indicator).css('background-image').replace('url("', '').replace('")', '');
	});

	/**
	 * Конструктор
	 */
	var Obj = function() {
		this.loadingFrame = 1;
		this.$indicator = null;
		this.interval = null;
	};

	/**
	 * Создаём и показываем индикатор
	 *
	 * @param wrapDiv куда показывать индикатор
	 */
	Obj.prototype.show = function(wrapDiv) {
		var $wrapDiv = $(wrapDiv);
		if (!$wrapDiv.length) {
			return;
		}
		var position = $wrapDiv.offset();
		var wrapDivH = + position.top + $wrapDiv.height()/2;
		var wrapDivW = + position.left + $wrapDiv.width()/2;

		this.$indicator = $('<div class="popup-loading"><div></div></div>');
		this.$indicator.css({
			'position': 'absolute',
			'top': wrapDivH,
			'left': wrapDivW
		}).show();
		$('body').append(this.$indicator);

		var t = this;
		var animate = function() {
			$('div', t.$indicator).css('top', (t.loadingFrame * -40) + 'px');
			t.loadingFrame = (t.loadingFrame + 1) % 12;
		};
		this.interval = setInterval(animate, 66);
	};

	/**
	 * Удаление индикатора и таймера таймер
	 */
	Obj.prototype.hide = function() {
		if (this.interval) {
			clearInterval(this.interval);
			this.interval = null;
		}
		this.$indicator.remove();
	};
	return Obj;
})();
