/*
 * Box de Fotos
 */
function Vdibrasil_boxfotos(container) {
	this.container = container;
	this.time = 4500;
	this.efeitotime = 10;
	this.atual = 0;
	this.proximo = 1;
	this.timeout;
	this.paused = false;
	this.paused_time = 0;
	this.slideThumbs_animation = false;
	this.id = Vdibrasil_boxfotos.instances.length;
	this.thumbsArea = 3;
	this.limit_esquerda = 0;
	this.limit_direita = 0;
	Vdibrasil_boxfotos.instances[this.id] = this;
	
	this.getTableLeft = function() {
		var left = this.table.css('left');
		left = parseInt(left, 10);
		if (isNaN(left)) {
			left = 0;
		}
		return left;
	};
}

Vdibrasil_boxfotos.instances = [];
Vdibrasil_boxfotos.prototype.init = function() {
	thumbs = $('table.thumbs td', this.container);
	x = thumbs.eq(0);
	var thumb_vazio = '<img src="/_default/img/px.gif" style="background-color:#efefef" />';
	if (thumbs.length < this.thumbsArea) {
		last = thumbs.eq(thumbs.length - 1);
		for (var i = 0; i < Math.floor((this.thumbsArea - thumbs.length) / 2); i++) {
			x.clone(true).insertBefore(x).addClass('disabled').html(thumb_vazio);
		}
		for (var i = 0; i < Math.ceil((this.thumbsArea - thumbs.length) / 2); i++) {
			last.clone(true).insertAfter(last).addClass('disabled').html(thumb_vazio);
		}
		var slotsDisponiveis = thumbs.length;
	} else {
		var slotsDisponiveis = this.thumbsArea;
	}
	for (var i = 1; i <= Math.floor(slotsDisponiveis / 2); i++) {
		x = thumbs.eq(thumbs.length - i).insertBefore(x);
		this.limit_esquerda = thumbs.length - i;
	}
	this.limit_direita = this.limit_esquerda - 1;
	this.table = $('table.thumbs', this.container);
	this.thumb_width = thumbs.eq(0).width();
	this.thumbs_i = thumbs.length;
	this.timer(0);
}
	
Vdibrasil_boxfotos.prototype.action = function(acao) {
	if (acao == this.atual || this.slideThumbs_animation || this.thumbs_i < 2) {
		return;
	}
	clearTimeout(this.timeout);
	
	switch (acao) {
		case 'pause':
			if (this.paused) {
				this.paused = false;
				this.timer(this.paused_time);
			} else {
				this.paused = true;
			}
			return;
		case 'back':
			this.slideThumbs_animation = true;
			this.proximo = this.atual - 1;
			break;
		default:
			this.slideThumbs_animation = true;
			if (isNaN(acao)) {
				this.proximo = this.atual + 1;
			} else {
				this.proximo = acao;
			}
	}
	var images = $('ul.images li', this.container);
	var thumbs = $('ul.thumbs img', this.container);
	
	if (this.proximo >= images.length) {
		this.proximo = 0;
	} else if (this.proximo < 0) {
		this.proximo = images.length - 1;
	}
		
	//alert(this.atual +'-'+ proximo)
	thumbs.eq(this.atual).removeClass('on');
	thumbs.eq(this.proximo).addClass('on');
	images.eq(this.atual).css('z-index', 1);
	images.eq(this.proximo).css('z-index', 0);
	images.eq(this.proximo).show();
	//images.eq(this.atual)[0].boxfotos = this;
	
	this.fadeOutCallback = function() {
		this.anterior = this.atual;
		this.atual = this.proximo;
		if (!this.paused) {
			this.timer(0);
		}
		this.slideThumbs(this.atual, true, 5000);
	};
	
	images.eq(this.atual)[0].obj = this;
	images.eq(this.atual).fadeOut('slow', function() {
		this.obj.fadeOutCallback();
	});
}

Vdibrasil_boxfotos.prototype.timer = function(time) {
	if (time <= this.time) {
		this.paused_time = time;
		$('#home-mediabox-counter-ok').width((time / this.time) * 100 + '%');
		this.timeout = setTimeout('Vdibrasil_boxfotos.instances['+this.id+'].timer(' + (time + 100) + ')', 100);
	} else {
		this.action();
	}
}

Vdibrasil_boxfotos.prototype.slideThumbs = function(dir, slide, time) {
	if (slide) {
		dif_1 = this.atual - this.anterior;
	} else {
		if (!this.slideThumbs_animation) {
			dif_1 = (dir == 'back') ? -1 : 1;
			this.action(this.atual + dif_1);
		}
		return false;
	}
	
	if (dif_1 < 0) {
		dif_1 = this.thumbs_i + dif_1;
	}
	if (dif_1 > this.thumbs_i / 2) {
		dif_1 = dif_1 - this.thumbs_i;
	}
	
	// Necessário quando quantidade é menor
	if (this.thumbs_i < this.thumbsArea) {
		if (this.anterior == this.limit_esquerda && this.atual == this.limit_direita && this.atual > 0) {
			dif_1 += this.thumbs_i;
		} else if (this.anterior == this.limit_direita && this.atual == this.limit_esquerda) {
			dif_1 -= this.thumbs_i;
		}
	}	
	
	this.animationCallback = function() {
		this.slideThumbs_animation = false;
		for (var i = 0; i < this.clonecells.length; i++) {
			if (dif_1 < 0) {
				thumbs.eq(thumbs.length - (i + 1)).remove();
			} else {
				thumbs.eq(i).remove();
			}
		}
		this.table.css('left', 0)
	}
	
	thumbs = $('table.thumbs td');
	this.clonecells = new Array();
	
	var new_left;
	
	if (dif_1 < 0) {
		for (var i = 0; i < (dif_1 * -1); i++) {
			this.clonecells[i] = thumbs.eq(thumbs.length-(1 + i)).clone(true).insertBefore(thumbs.eq(0));
			thumbs = $('table.thumbs td');
			this.table.css('left', this.getTableLeft() - this.thumb_width)
		}
		new_left = 0
	} else {
		for (var i = 0; i < dif_1; i++) {
			this.clonecells[i] = thumbs.eq(i).clone(true).insertAfter(thumbs.eq(thumbs.length-1));
			thumbs = $('table.thumbs td');
		}
		new_left = (this.getTableLeft() + (this.thumb_width * -1)) * dif_1;
	}
	
	this.table[0].obj = this;
	
	$('table.thumbs', this.container).animate(
		{left: new_left + 'px'},
		function() {
			this.obj.animationCallback()
		}
	);
}