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});

	}

});

