JSSponsors = new Class({

	tempoBanner: 0,
	fadeFx: null,
	nomeSponsor: null,

	// ----------------------------------------------------------------------------------------------------
	initialize: function(tempoBanner) {

		this.tempoBanner = tempoBanner;

	},

	// ----------------------------------------------------------------------------------------------------
	startTimer: function() {

		this.getBanner.delay(this.tempoBanner, this);

	},

	// ----------------------------------------------------------------------------------------------------
	getBanner: function() {

		new Fx.Tween(
			'div_banner',
			{
				duration: 'normal',
				onComplete: function() {
					$('div_banner').empty();
					new Request.JSON(
						{
							url: 'modulos/sponsors/get_banner.ajax.php',
							onComplete: function(info) {
								// Extrair info
								sponsors.nomeSponsor = info.nome;
								pageTracker._trackPageview('/Sponsor shown ' + info.nome);
								var ext = info.src.substr(info.src.lastIndexOf('.') + 1);
								if(ext == 'swf') {
									new Swiff(
										info.src,
										{
											id: 'swiff_sponsor',
											width: info.width,
											height: info.height,
											params: {
												scale: 'noscale',
												wMode: 'window'
											},
											container: $('div_banner'),
										}
									);
								} else {
									var sponsorA = new Element(
										'a',
										{
											id: 'a_sponsor',
											href: info.link
										}
									);
									var sponsorImg = new Element(
										'img',
										{
											id: 'img_sponsor',
											src: info.src,
											width: info.width,
											height: info.height
										}
									);
									// A a agarra a img; a div agarra a a
									sponsorA.grab(sponsorImg);
									$('div_banner').grab(sponsorA);
								}
								new Fx.Tween(
									'div_banner',
									{
										duration: 'normal',
										onComplete: function() {
											sponsors.startTimer();
										}
									}
								).start('opacity', 1);
							}
						}
					).get();
				}
			}
		).start('opacity', 0);

	},

	// ----------------------------------------------------------------------------------------------------
	statSponsor: function() {

		if(this.nomeSponsor == null) return;
		pageTracker._trackPageview('/Sponsor clicked ' + this.nomeSponsor);

	},

	// ----------------------------------------------------------------------------------------------------
	alteraSlot: function(idSlot, idOriginal, idNovo) {

		if(idOriginal == -1) {
			new Request.HTML(
				{
					url: 'modulos/sponsors/ocupa_slot.ajax.php',
					onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
						document.location.href = '?p=sponsors';
					}
				}
			).get({id_slot:idSlot, id_sponsor: idNovo});
		} else if(idNovo == -1) {
			msgr.show({
				tipo: 'confirm',
				html: 'Desocupar este slot?',
				onComplete: function(ok) {
					if(!ok) {
						$('select_slot_' + idSlot).getChildren().each(function(item, idex) {
							if(item.value == idOriginal) item.selected = true;
						});
						return;
					}
					// Enviar por AJAX
					new Request.HTML(
						{
							url: 'modulos/sponsors/desocupa_slot.ajax.php',
							onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
								document.location.href = '?p=sponsors';
							}
						}
					).get({id: idSlot});
				}
			});
		} else {
			var nomeNovo;
			$('select_slot_' + idSlot).getChildren().each(function(item, idex) {
				if(item.value == idNovo) nomeNovo = item.innerHTML;
			});
			msgr.show({
				tipo: 'confirm',
				html: 'Alterar o sponsor deste slot para ' + nomeNovo + '?',
				onComplete: function(ok) {
					if(!ok) {
						$('select_slot_' + idSlot).getChildren().each(function(item, idex) {
							if(item.value == idOriginal) item.selected = true;
						});
						return;
					}
					new Request.HTML(
						{
							url: 'modulos/sponsors/ocupa_slot.ajax.php',
							onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
								document.location.href = '?p=sponsors';
							}
						}
					).get({id_slot:idSlot, id_sponsor: idNovo});
				}
			});
		}

	},

	// ----------------------------------------------------------------------------------------------------
	makeDrag: function(numSlots, slotsOcupadosArray, bannerArray) {

		var droppables = new Array();
		var droppable;
		for(n = 0; n < numSlots; n++) {
			droppable = $('slot_drop_' + n);
			droppable.idSlot = n;
			droppable.hasBanner = slotsOcupadosArray.contains(n);
			droppables.push(droppable);
		}

		bannerArray.each(function(id, index) {
			var item = $('sponsor_' + id);
			item.idSponsor = id;
			var handle = $('banner_' + id);
			new Drag.Move(
				item,
				{
					handle: handle,
					droppables: droppables,
					snap: 3,
					onStart: function(element) {
						element.setStyle('zIndex', '65535');
					},
					onEnter: function(element, droppable) {
						droppable.setStyle('border', '1px solid #FECD08');
					},
					onLeave: function(element, droppable) {
						droppable.setStyle('border', '1px dashed #1C1818');
					},
					onDrop: function(element, droppable, event) {
						new Fx.Morph(element, {duration: 'normal'}).start({
							left: 0,
							top: 0
						});
						if(!droppable) return;
						droppable.setStyles({
							background: '#D4D3C8',
							border: '1px dashed #1C1818'
						});
						if(droppable.hasBanner) {
							msgr.show({
								largura: 354,
								tipo: 'confirm',
								html: 'Substituir o sponsor deste slot?',
								onComplete: function(ok) {
									if(!ok) return;
									droppable.hasBanner = true;
									new Request.HTML(
										{
											url: 'modulos/sponsors/ocupa_slot.ajax.php',
											onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
												droppable.innerHTML = responseHTML;
											}
										}
									).get({id_slot:droppable.idSlot, id_sponsor: element.idSponsor});
								}
							});
						} else {
							droppable.hasBanner = true;
							// Enviar por AJAX
							new Request.HTML(
								{
									url: 'modulos/sponsors/ocupa_slot.ajax.php',
									onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
										droppable.innerHTML = responseHTML;
									}
								}
							).get({id_slot:droppable.idSlot, id_sponsor: element.idSponsor});
						}
					}
				}
			);
		});

	},

	// ----------------------------------------------------------------------------------------------------
	clearSlot: function(id) {

		new Request.HTML(
			{
				url: 'modulos/sponsors/get_slot_div.ajax.php',
				onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
					msgr.show({
						largura: 354,
						tipo: 'confirm',
						html: 'Desocupar este slot?<br /><br />' + responseHTML,
						onComplete: function(ok) {
							if(!ok) return;
							$('slot_drop_' + id).hasBanner = false;
							$('slot_drop_' + id).setStyle('background', 'none');
							$('slot_drop_' + id).innerHTML = '<strong>&nbsp;</strong><br />&nbsp;<br /><label>&nbsp;</label><br /><img src="imagens/spacer.png" width="234" height="60" />';
							// Enviar por AJAX
							new Request.HTML(
								{
									url: 'modulos/sponsors/desocupa_slot.ajax.php',
									onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
										$('slot_drop_' + id).innerHTML = responseHTML;
									}
								}
							).get({id: id});
						}
					});
				}
			}
		).get({id: id});

	},

	// ----------------------------------------------------------------------------------------------------
	verifica: function(form) {

		var errorArray = new Array();

		// Nome
		var nome = $('nome').value = $('nome').value.clean();
		if(nome == '') errorArray.push('N&atilde;o escreveu um nome<br /><span class="nota">Escreva um nome com um caractere ou mais</span>');

		// Banner
		var banner = $('banner').value;
		if(form == $('form_editar')) {
			if(banner != '') {
				var extArray = ['jpg', 'jpeg', 'gif', 'png', 'swf'];
				var ext = banner.substr(banner.lastIndexOf('.') + 1);
				if(!extArray.contains(ext)) errorArray.push('O banner n&atilde;o est&aacute; no formato correcto<br /><span class="nota">Forne&ccedil;a um banner no formato .jpg, .jpeg, .gif, .png ou .swf com 230px de largura e no m&aacute;ximo 100px de altura</span>');
			}
		} else {
			if(banner == '') errorArray.push('N&atilde;o forneceu um banner<br /><span class="nota">Forne&ccedil;a um banner no formato .jpg, .jpeg, .gif, .png ou .swf com 230px de largura e no m&aacute;ximo 100px de altura</span>');
			else {
				var extArray = ['jpg', 'jpeg', 'gif', 'png', 'swf'];
				var ext = banner.substr(banner.lastIndexOf('.') + 1);
				if(!extArray.contains(ext)) errorArray.push('O banner n&atilde;o est&aacute; no formato correcto<br /><span class="nota">Forne&ccedil;a um banner no formato .jpg, .jpeg, .gif, .png ou .swf com 230px de largura e no m&aacute;ximo 100px de altura</span>');
			}
		}

		// Se houver erros mostra-los, caso contrario enviar o formulario
		if(errorArray.length) utils.mostraErrorArray(errorArray, '	');
		else form.submit();

	},

	// ----------------------------------------------------------------------------------------------------
	deleteSponsor: function(id) {

		new Request.HTML(
			{
				url: 'modulos/sponsors/get_sponsor_div.ajax.php',
				onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
					msgr.show({
						largura: 354,
						tipo: 'confirm',
						html: 'Apagar este sponsor?<br /><br />' + responseHTML,
						onComplete: function(ok) {
							if(!ok) return;
							document.location.href = '?p=sponsors&a=apagar&id=' + id;
						}
					});
				}
			}
		).get({id: id});

	},

	// ----------------------------------------------------------------------------------------------------
	changeBannerTime: function() {

		var errorArray = new Array();

		var tempoBanner = $('tempo_banner').value = $('tempo_banner').value.trim();
		if(isNaN(tempoBanner) || tempoBanner < 1) errorArray.push('O tempo n&atilde;o &eacute; v&aacute;lido<br /><span class="nota">Forne&ccedil;a um n&uacute;mero inteiro >= 1</span>')
		else {
			var tempoBannerArredondado = Math.round(tempoBanner);
			if(tempoBannerArredondado != tempoBanner) {
				msgr.show({
					tipo: 'confirm',
					html: 'Tem que fornecer um n&uacute;mero inteiro.<br />Aceita o arredondamento para ' + tempoBannerArredondado + ' segundos?',
					onComplete: function(ok) {
						if(!ok) return;
						new Request.HTML({url: 'modulos/sponsors/actualiza_tempo_banner.ajax.php'}).get({tempo_banner: tempoBannerArredondado});
					}
				});
				return;
			}
		}

		// Se houver erros mostra-los, caso contrario enviar por AJAX
		if(errorArray.length) utils.mostraErrorArray(errorArray);
		else new Request.HTML({url: 'modulos/sponsors/actualiza_tempo_banner.ajax.php'}).get({tempo_banner: tempoBanner});

	}

});
