﻿/**
 * project CoCaPa - Comissão de Carnaval de Pataias
 * description Main functions file.
 * version 1.0 (14/01/2010)
 * creationdate 14/01/2010
 * author 1001 Acessos - Telecomunicacoes e Informatica, Lda
 */

 /**
  * Main page namespace.
  */
 utils.setNs('main','MAIN');
 
 //Ext.onReady event handler. 
 Ext.onReady(function() {
	Ext.BLANK_IMAGE_URL = "src/js/components/ext/resources/images/default/s.gif";
	main.loadMainMenu('menu');
	utils.fixPng();
 });

 /**
  * Main class.
  */
 main = new function() {
  
	/**
	 * Main menu items information array
	 */
	this.menuItems = new Array();

	/**
	 * Main menu loading functions object.
	 */
	this.menu = new Object;
	
	/**
	 * Subjects' details loading functions object.
	 */
	this.details = new Object;

	/**
	 * Main configuration loading functions object.
	 */
	this.configuration = new Object;

	
	
	//*******************************************************
	//** Menu object
	//*******************************************************
	
	/**
	 * Method responsible for loading the "Início" menu item.
	 */	
	this.menu.loadStartPage = function() {
		
		var scope = main;
		
		//Load Calendar Widget
		var el = Ext.get('schedule');
		el.dom.innerHTML = '';
		
		var datePicker = new Ext.DatePicker({
			id: 'scheduleDatePicker',
			renderTo: 'schedule',
			minDate: new Date(2010,0,1),
			maxDate: new Date(2010,2,31)
		});
		//utils.log(datePicker);
		//Little tweak to give the calendar the right looks ;)
		datePicker.getEl().setWidth(190);
		datePicker.eventEl.setWidth(190);
		datePicker.mbtn.disabledClass = "";
		datePicker.mbtn.disable();
		datePicker.todayBtn.container.dom.className = "";
		datePicker.todayBtn.container.dom.innerHTML = "";
		
		if (Ext.isIE) {
			datePicker.getEl().dom.children[0].children[0].children[0].children[0].children[0].attachEvent("onclick", function() {
				main.menu.loadEvents(datePicker.activeDate.getFullYear() + "-" + (datePicker.activeDate.getMonth() + 1) + "-" + datePicker.activeDate.getDate());
			}, false);
			
			datePicker.getEl().dom.children[0].children[0].children[0].children[2].children[0].attachEvent("onclick", function() {
				main.menu.loadEvents(datePicker.activeDate.getFullYear() + "-" + (datePicker.activeDate.getMonth() + 1) + "-" + datePicker.activeDate.getDate());
			}, false);
		} else {
			datePicker.getEl().dom.children[0].children[0].children[0].children[0].children[0].addEventListener("click", function() {
				main.menu.loadEvents(datePicker.activeDate.getFullYear() + "-" + (datePicker.activeDate.getMonth() + 1) + "-" + datePicker.activeDate.getDate());
			}, false);
			
			datePicker.getEl().dom.children[0].children[0].children[0].children[2].children[0].addEventListener("click", function() {
				main.menu.loadEvents(datePicker.activeDate.getFullYear() + "-" + (datePicker.activeDate.getMonth() + 1) + "-" + datePicker.activeDate.getDate());
			}, false);
		}
		
		datePicker.on("select", function(picker, date) {
			main.menu.loadEvents(datePicker.activeDate.getFullYear() + "-" + (datePicker.activeDate.getMonth() + 1) + "-" + datePicker.activeDate.getDate());		
		});
		
		//Load next events on page load
		var eventsEl = Ext.get('events');
		var currentDate = datePicker.activeDate.getFullYear() + "-" + (datePicker.activeDate.getMonth() + 1) + "-" + datePicker.activeDate.getDate();
		
		fieldsObj = {};
		fieldsObj['queryname'] = 'nextevents';
		fieldsObj['limit'] = 6;
		fieldsObj['date'] = currentDate;
		
		var eventsResult = utils.getJsonStore({
			url: 'src/servlets/queryServlet.php',
			root: 'events',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'id', 			type: 'int', 	mapping: 'id'},
				{name: 'name', 			type: 'string', mapping: 'name'},
				{name: 'thumbnail', 	type: 'string', mapping: 'thumbnail'},
				{name: 'contentsHTML', 	type: 'string', mapping: 'contentsHTML'},		
				{name: 'startDate', 	type: 'string', mapping: 'startDate'},
				{name: 'endDate', 		type: 'string', mapping: 'endDate'},
				{name: 'time', 			type: 'string', mapping: 'time'},
				{name: 'organization', 	type: 'string', mapping: 'organization'},
				{name: 'place', 		type: 'string', mapping: 'place'},
				{name: 'address', 		type: 'string', mapping: 'address'}
			]
		});

		eventsResult.on('load', function() {
			eventsEl.dom.innerHTML = "";
			if (eventsResult.data.length == 0) eventsEl.dom.innerHTML = "<br /><center><div class='no-items-text'>Não existem eventos neste dia.</div></center><br/>";
			for (var i = 0; i < eventsResult.data.length; i++) {
				eventsEl.dom.innerHTML += "<table class='event-table' border='0' cellpadding='0' cellspacing='0' width='189' height='65'>" + 
										"<tr><td valign='top'>" +
										" <div class='link event-content' onClick='main.details.loadEvent(" + eventsResult.data.items[i].data.id + ");'>" + 
										"  <font class='events-title-text'>" + eventsResult.data.items[i].data.time + " - " + eventsResult.data.items[i].data.name + "</font><br/>" + 
										"  <font class='events-text'>Local: " + eventsResult.data.items[i].data.place + "</font><br/>" + 
										" </div>" + 
										"</td></tr>" +
										"<tr><td>" +
										"<img src='" + application.IMAGE_ROOT_FOLDER + "eventBottom.jpg'>"+
										"</td></tr>" +
										"</table>" + 
										"<table border='0' cellpadding='0' cellspacing='0' width='189' height='5'>" + 
										"<tr><td></td></tr>" +
										"</table>";
			}
		});
		
		//Load last editions on page load
		var lastEditionsEl = Ext.get('lastEditions');
		
		//Configure the Highslide component for the galleries screen.
		scope.configuration.hs();

		fieldsObj = {};
		fieldsObj['table'] = 'tgallery'; 
		fieldsObj['start'] = 0; 
		fieldsObj['limit'] = 4;
		fieldsObj['deletedField'] = 'estado'; 
		fieldsObj['sort'] = 'year';
		fieldsObj['dir'] = 'desc';
		
		var result = utils.getJsonStore({
			url: 'src/servlets/genericServlet.php',
			root: 'tgallery',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'id', 			type: 'int'},
				{name: 'year', 			type: 'string'},
				{name: 'thumbnail', 	type: 'string'},
				{name: 'description', 	type: 'string'}
			]
		});

		result.on('load', function() {
			if (result.data.length > 0) {
				lastEditionsEl.dom.innerHTML = "";
				for (var i = 0; i < result.data.length; i++) {
					lastEditionsEl.dom.innerHTML = "";
					var html = "<table border='0' cellpadding='0' cellspacing='0' width='470'>";
					for (var i = 0; i < result.data.length; i++) {
						var mod = i % 4;
						if (mod == 0) html += "<tr><td valign='top' align='left'>" + 
									"<table class='gallery-thumb-table' border='0' cellpadding='0' cellspacing='0' width='110' height='125'>" + 
									"<tr><td align='left' valign='absmiddle' height='23'>" + 
									"<div class='link gallery-title-text' onClick='main.details.loadGallery(" + result.data.items[i].data['id'] + ", \"" + result.data.items[i].data['description'] + "\");' >&nbsp;" + 
									result.data.items[i].data['year'] + "</div>" + 
									"</td></tr>" + 
									"<tr><td align='left' valign='top' height='77'>" + 
									"<a href='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' class='highslide' onclick='return hs.expand(this)'> " +	
									"<img style='margin-left: 5px; margin-top: 6px;' src='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' width='83' height='50'></a>" + 
									"<div class='highslide-caption'>" + result.data.items[i].data['description'] + "</div>" + 
									"</td></tr>" + 
									"<tr><td align='left' valign='top' height='30'>" + 
									"<div class='link' onclick='main.details.loadGallery(" + result.data.items[i].data['id'] + ", \"" + result.data.items[i].data['description'] + "\");' > " +	
									"<img src='" + application.IMAGE_ROOT_FOLDER + "gallery.jpg' width='110' height='25'></div>" + 
									"</td></tr></table>" +
									"</td>";
							
						if ((mod == 1) || (mod == 2)) html += "<td valign='top' align='center'>" + 
									"<table class='gallery-thumb-table' border='0' cellpadding='0' cellspacing='0' width='110' height='125'>" + 
									"<tr><td align='left' valign='absmiddle' height='23'>" + 
									"<div class='link gallery-title-text' onClick='main.details.loadGallery(" + result.data.items[i].data['id'] + ", \"" + result.data.items[i].data['description'] + "\");' >&nbsp;" + 
									result.data.items[i].data['year'] + "</div>" + 
									"</td></tr>" + 
									"<tr><td align='left' valign='top' height='77'>" + 
									"<a href='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' class='highslide' onclick='return hs.expand(this)'> " +	
									"<img style='margin-left: 5px; margin-top: 6px;' src='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' width='83' height='50'></a>" + 
									"<div class='highslide-caption'>" + result.data.items[i].data['description'] + "</div>" + 
									"</td></tr>" + 
									"<tr><td align='left' valign='top' height='30'>" + 
									"<div class='link' onclick='main.details.loadGallery(" + result.data.items[i].data['id'] + ", \"" + result.data.items[i].data['description'] + "\");' > " +	
									"<img src='" + application.IMAGE_ROOT_FOLDER + "gallery.jpg' width='110' height='25'></div>" + 
									"</td></tr></table>" +
									"</td>";
							
						if (mod == 3) html  += "<td valign='top' align='right'>" + 
									"<table class='gallery-thumb-table' border='0' cellpadding='0' cellspacing='0' width='110' height='125'>" + 
									"<tr><td align='left' valign='absmiddle' height='23'>" + 
									"<div class='link gallery-title-text' onClick='main.details.loadGallery(" + result.data.items[i].data['id'] + ", \"" + result.data.items[i].data['description'] + "\");' >&nbsp;" + 
									result.data.items[i].data['year'] + "</div>" + 
									"</td></tr>" + 
									"<tr><td align='left' valign='top' height='77'>" + 
									"<a href='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' class='highslide' onclick='return hs.expand(this)'> " +	
									"<img style='margin-left: 5px; margin-top: 6px;' src='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' width='83' height='50'></a>" + 
									"<div class='highslide-caption'>" + result.data.items[i].data['description'] + "</div>" + 
									"</td></tr>" + 
									"<tr><td align='left' valign='top' height='30'>" + 
									"<div class='link' onclick='main.details.loadGallery(" + result.data.items[i].data['id'] + ", \"" + result.data.items[i].data['description'] + "\");' > " +	
									"<img src='" + application.IMAGE_ROOT_FOLDER + "gallery.jpg' width='110' height='25'></div>" + 
									"</td></tr></table>" +
									"</td></tr>";
							
					}
					html += "</table><br/>";			
					lastEditionsEl.dom.innerHTML += html;
				}
			} else {
				lastEditionsEl.dom.innerHTML = "<br /><div class='no-items-text'>Não existem galerias para mostrar.</div><br/>";		
			}
		});

		lastEditionsEl.dom.innerHTML = "<br /><div class='no-items-text'>A carregar galerias ...</div><br/>";
		
		main.showLastEditions();

		//Load endorsments on page load
		var endorsementEl = Ext.get('endorsement');
		
		fieldsObj = {};
		fieldsObj['table'] = 'tmenu'; 
		fieldsObj['start'] = 0; 
		fieldsObj['limit'] = application.MAX_RECORDS;
		fieldsObj['fields[0][type]'] = 'int';
		fieldsObj['fields[0][field]'] = 'isBanner';		
		fieldsObj['filter'] = 1; 
		fieldsObj['deletedField'] = 'estado'; 
		fieldsObj['sort'] = 'order'; 
		
		var endorsementResult = utils.getJsonStore({
			url: 'src/servlets/genericServlet.php',
			root: 'tmenu',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'id', 			type: 'int', 	mapping: 'id'},
				{name: 'name', 			type: 'string', mapping: 'name'},
				{name: 'action', 		type: 'string', mapping: 'action'},			
				{name: 'order', 		type: 'int', 	mapping: 'order'},			
				{name: 'contentsHTML', 	type: 'string', mapping: 'contentsHTML'},
				{name: 'isBanner', 		type: 'int', 	mapping: 'isBanner'}
			]
		});

		endorsementResult.on('load', function() {
			endorsementEl.dom.innerHTML = "";
			for (var i = 0; i < endorsementResult.data.length; i++) {
				endorsementEl.dom.innerHTML += endorsementResult.data.items[i].data['contentsHTML'];
			}
		});
		
		endorsementEl.dom.innerHTML = "<div class='no-items-text'>A carregar o apoios...</div>";
	};
	
	/**
	 * Method responsible for loading the "Eventos" menu item.
	 * @param {String} date The current date wich will be used to show the month's events.
	 */	
	this.menu.loadEvents = function(date) {
		
		var scope = main;

		//Load Events
		var eventsEl = Ext.get('events');
		
		fieldsObj = {};
		fieldsObj['queryname'] = 'events';
		fieldsObj['limit'] = 5;
		fieldsObj['date'] = date;
		
		var eventsResult = utils.getJsonStore({
			url: 'src/servlets/queryServlet.php',
			root: 'events',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'id', 			type: 'int', 	mapping: 'id'},
				{name: 'name', 			type: 'string', mapping: 'name'},
				{name: 'thumbnail', 	type: 'string', mapping: 'thumbnail'},
				{name: 'contentsHTML', 	type: 'string', mapping: 'contentsHTML'},		
				{name: 'startDate', 	type: 'string', mapping: 'startDate'},
				{name: 'endDate', 		type: 'string', mapping: 'endDate'},
				{name: 'time', 			type: 'string', mapping: 'time'},
				{name: 'organization', 	type: 'string', mapping: 'organization'},
				{name: 'place', 		type: 'string', mapping: 'place'},
				{name: 'address', 		type: 'string', mapping: 'address'}
			]
		});

		eventsResult.on('load', function() {
			eventsEl.dom.innerHTML = "";
			if (eventsResult.data.length == 0) eventsEl.dom.innerHTML = "<br /><center><div class='no-events-text'>&gt; Não existem eventos neste dia &lt;&nbsp;&nbsp;&nbsp;</div></center><br/>";
			for (var i = 0; i < eventsResult.data.length; i++) {
				eventsEl.dom.innerHTML += "<table class='event-table' border='0' cellpadding='0' cellspacing='0' width='189' height='65'>" + 
										"<tr><td valign='top'>" +
										" <div class='link event-content' onClick='main.details.loadEvent(" + eventsResult.data.items[i].data.id + ");'>" + 
										"  <font class='events-title-text'>" + eventsResult.data.items[i].data.time + " - " + eventsResult.data.items[i].data.name + "</font><br/>" + 
										"  <font class='events-text'>Local: " + eventsResult.data.items[i].data.place + "</font><br/>" + 
										" </div>" + 
										"</td></tr>" +
										"<tr><td>" +
										"<img src='" + application.IMAGE_ROOT_FOLDER + "eventBottom.jpg'>"+
										"</td></tr>" +
										"</table>" + 
										"<table border='0' cellpadding='0' cellspacing='0' width='189' height='5'>" + 
										"<tr><td></td></tr>" +
										"</table>";
			}
		});
		
	};
	
	/**
	 * Method responsible for loading the "Galeria" menu item.
	 */	
	this.menu.loadGalleries = function() {
		
		var scope = main;

		//Configure the Highslide component for the galleries screen.
		scope.configuration.hs();
		
		var containerEl = Ext.get('contents');

		fieldsObj = {};
		fieldsObj['table'] = 'tgallery'; 
		fieldsObj['start'] = 0; 
		fieldsObj['limit'] = application.MAX_RECORDS;
		fieldsObj['deletedField'] = 'estado'; 
		fieldsObj['sort'] = 'year'; 
		
		var result = utils.getJsonStore({
			url: 'src/servlets/genericServlet.php',
			root: 'tgallery',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'id', 			type: 'int'},
				{name: 'year', 			type: 'string'},
				{name: 'thumbnail', 	type: 'string'},
				{name: 'description', 	type: 'string'}
			]
		});

		result.on('load', function() {
			if (result.data.length > 0) {
				containerEl.dom.innerHTML = "";
				for (var i = 0; i < result.data.length; i++) {
					containerEl.dom.innerHTML = "";
					var html = "<table border='0' cellpadding='0' cellspacing='0' width='100%'>";
					for (var i = 0; i < result.data.length; i++) {
						var mod = i % 4;
						if (mod == 0) html += "<tr><td valign='top' align='left'>" + 
									"<table class='gallery-thumb-table' border='0' cellpadding='0' cellspacing='0' width='110' height='125'>" + 
									"<tr><td align='left' valign='absmiddle' height='23'>" + 
									"<div class='link gallery-title-text' onClick='main.details.loadGallery(" + result.data.items[i].data['id'] + ", \"" + result.data.items[i].data['description'] + "\");' >&nbsp;" + 
									result.data.items[i].data['year'] + "</div>" + 
									"</td></tr>" + 
									"<tr><td align='left' valign='top' height='77'>" + 
									"<a href='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' class='highslide' onclick='return hs.expand(this)'> " +	
									"<img style='margin-left: 5px; margin-top: 6px;' src='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' width='83' height='50'></a>" + 
									"<div class='highslide-caption'>" + result.data.items[i].data['description'] + "</div>" + 
									"</td></tr>" + 
									"<tr><td align='left' valign='top' height='30'>" + 
									"<div class='link' onclick='main.details.loadGallery(" + result.data.items[i].data['id'] + ", \"" + result.data.items[i].data['description'] + "\");' > " +	
									"<img src='" + application.IMAGE_ROOT_FOLDER + "gallery.jpg' width='110' height='25'></div>" + 
									"</td></tr></table>" +
									"</td>";
							
						if ((mod == 1) || (mod == 2)) html += "<td valign='top' align='left'>" + 
									"<table class='gallery-thumb-table' border='0' cellpadding='0' cellspacing='0' width='110' height='125'>" + 
									"<tr><td align='left' valign='absmiddle' height='23'>" + 
									"<div class='link gallery-title-text' onClick='main.details.loadGallery(" + result.data.items[i].data['id'] + ", \"" + result.data.items[i].data['description'] + "\");' >&nbsp;" + 
									result.data.items[i].data['year'] + "</div>" + 
									"</td></tr>" + 
									"<tr><td align='left' valign='top' height='77'>" + 
									"<a href='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' class='highslide' onclick='return hs.expand(this)'> " +	
									"<img style='margin-left: 5px; margin-top: 6px;' src='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' width='83' height='50'></a>" + 
									"<div class='highslide-caption'>" + result.data.items[i].data['description'] + "</div>" + 
									"</td></tr>" + 
									"<tr><td align='left' valign='top' height='30'>" + 
									"<div class='link' onclick='main.details.loadGallery(" + result.data.items[i].data['id'] + ", \"" + result.data.items[i].data['description'] + "\");' > " +	
									"<img src='" + application.IMAGE_ROOT_FOLDER + "gallery.jpg' width='110' height='25'></div>" + 
									"</td></tr></table>" +
									"</td>";
							
						if (mod == 3) html  += "<td valign='top' align='left'>" + 
									"<table class='gallery-thumb-table' border='0' cellpadding='0' cellspacing='0' width='110' height='125'>" + 
									"<tr><td align='left' valign='absmiddle' height='23'>" + 
									"<div class='link gallery-title-text' onClick='main.details.loadGallery(" + result.data.items[i].data['id'] + ", \"" + result.data.items[i].data['description'] + "\");' >&nbsp;" + 
									result.data.items[i].data['year'] + "</div>" + 
									"</td></tr>" + 
									"<tr><td align='left' valign='top' height='77'>" + 
									"<a href='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' class='highslide' onclick='return hs.expand(this)'> " +	
									"<img style='margin-left: 5px; margin-top: 6px;' src='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' width='83' height='50'></a>" + 
									"<div class='highslide-caption'>" + result.data.items[i].data['description'] + "</div>" + 
									"</td></tr>" + 
									"<tr><td align='left' valign='top' height='30'>" + 
									"<div class='link' onclick='main.details.loadGallery(" + result.data.items[i].data['id'] + ", \"" + result.data.items[i].data['description'] + "\");' > " +	
									"<img src='" + application.IMAGE_ROOT_FOLDER + "gallery.jpg' width='110' height='25'></div>" + 
									"</td></tr></table>" +
									"</td></tr>";
							
					}
					html += "</table>";			
					containerEl.dom.innerHTML += html;
				}
			} else {
				containerEl.dom.innerHTML = "<br /><div class='no-items-text'>Não existem galerias para mostrar.</div><br/>";		
			}
		});

		containerEl.dom.innerHTML = "<br /><div class='no-items-text'>A carregar galerias ...</div><br/>";
	};

	/**
	 * Method responsible for loading the "Downloads" menu item.
	 */	
	this.menu.loadDownloads = function() {
		
		var scope = main;
		var containerEl = Ext.get('contents');
		var categories = new Array();
		
		fieldsObj = {};
		fieldsObj['table'] = 'tcategory'; 
		fieldsObj['start'] = 0; 
		fieldsObj['limit'] = application.MAX_RECORDS;
		fieldsObj['deletedField'] = 'estado';
		fieldsObj['sort'] = 'name';
		
		var result = utils.getJsonStore({
			url: 'src/servlets/genericServlet.php',
			root: 'tcategory',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'id', 			type: 'int'},
				{name: 'name', 			type: 'string'}
			]
		});

		result.on('load', function() {
			containerEl.dom.innerHTML = "";
			if (result.data.length == 0) containerEl.dom.innerHTML = "<br /><div class='no-items-text'>Não existem downloads disponíveis.</div><br/>";
			for (var i = 0; i < result.data.length; i++) {
				var obj = {
					id: result.data.items[i].data.id,
					name: result.data.items[i].data.name + "_" + i
				};
				categories[i] =  obj;
				containerEl.dom.innerHTML += "<table border='0' cellpadding='0' cellspacing='0' width='100%'>" + 
										"<tr><td><font class='downloads-title-text'>" + result.data.items[i].data.name + "</font><br/><br/></td></tr>" + 
										"<tr><td>" +
										"<div id='" + result.data.items[i].data.name + "_" + i + "' class='downloads-text'>A carregar ficheiros...</div>" + 
										"</td></tr>" +
										"<tr><td colspan='2'>&nbsp;</td></tr>" + 
										"</table>";
			};
			
			//File loading function
			var loadFiles = function(id, el) {
				fieldsObj = {};
				fieldsObj['table'] = 'tdownload'; 
				fieldsObj['start'] = 0; 
				fieldsObj['limit'] = application.MAX_RECORDS;
				fieldsObj['foreignkeys[0][name]'] = 'idCategory';
				fieldsObj['foreignkeys[0][value]'] = id;
				fieldsObj['deletedField'] = 'estado';
				fieldsObj['sort'] = 'name';
				
				var filesResult = utils.getJsonStore({
					url: 'src/servlets/genericServlet.php',
					root: 'tdownload',
					baseParams: fieldsObj,
					totalProperty: 'totalCount',
					fields: [
						{name: 'id', 		type: 'int'},
						{name: 'name', 		type: 'string'},
						{name: 'file', 		type: 'string'},
						{name: 'details', 	type: 'string'}
					]
				});
				
				filesResult.on('load', function() {
					if (filesResult.data.length == 0) el.dom.innerHTML = "<br /><div class='no-items-text'>Não existem downloads disponíveis nesta categoria.</div><br/>";
					else el.dom.innerHTML = "";
					for (var k = 0; k < filesResult.data.length; k++) {
						el.dom.innerHTML += "<li><a href='" + application.DOWNLOAD_ROOT_FOLDER + filesResult.data.items[k].data['file'] + "' target='_blank'>" + 
											"<font class='downloads-text'>" + filesResult.data.items[k].data['name'] + "</font></a><br/><br/>";
					};
				});
			};
			
			//Load the files for the different categories
			for (var j = 0; j < categories.length; j++) {
				var el = Ext.get(categories[j].name);
				loadFiles(categories[j].id, el);
			};
			
		});

		containerEl.dom.innerHTML = "<br /><div class='no-items-text'>A carregar downloads ...</div><br/>";		

	}
	
	/**
	 * Method responsible for loading the "Imprensa" menu item.
	 */	
	this.menu.loadPress = function() {
		
		var scope = main;
		var containerEl = Ext.get('contents');
		
		fieldsObj = {};
		fieldsObj['table'] = 'tpress'; 
		fieldsObj['start'] = 0; 
		fieldsObj['limit'] = application.MAX_RECORDS;
		fieldsObj['deletedField'] = 'estado';
		fieldsObj['sort'] = 'name';
		
		var result = utils.getJsonStore({
			url: 'src/servlets/genericServlet.php',
			root: 'tpress',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'id', 			type: 'int'},
				{name: 'name', 			type: 'string'},
				{name: 'file', 			type: 'string'},
				{name: 'details', 		type: 'string'}
			]
		});

		result.on('load', function() {
			var html = "";
			containerEl.dom.innerHTML = "";
			
			if (result.data.length == 0) html = "<br /><div class='no-items-text'>Não existem documentos para download.</div><br/>";
			else {
				html = "<table border='0' cellpadding='0' cellspacing='0' width='100%'>" + 
						"<tr><td><font class='press-title-text'>Press Releases</font><br/><br/></td></tr>" + 
						"<tr><td>" + 
						"<div class='press-text'>";
				for (var i = 0; i < result.data.length; i++) {
					html += "<li><a href='" + application.DOWNLOAD_ROOT_FOLDER + result.data.items[i].data['file'] + "' target='_blank'>" + 
							"<font class='press-text'>" + result.data.items[i].data['name'] + "</font></a><br/><br/>";				
				};
				html += "</div>" + 
						"</td></tr>" +
						"<tr><td colspan='2'>&nbsp;</td></tr>" + 
						"</table>";
			}
			containerEl.dom.innerHTML = html;
		});

		containerEl.dom.innerHTML = "<br /><div class='no-items-text'>A carregar documentos ...</div><br/>";		

	}
		
	/**
	 * Method responsible for loading the "Contactos" menu item.
	 */	
	this.menu.loadContacts = function() {
	
		var containerEl = Ext.get('contents');
		containerEl.dom.innerHTML += "<br/><form name='contact' action='src/servlets/sendmail.php' method='post' onsubmit='return main.validateContactForm()' target='_blank'>" +
			" <table class='contacts-text' border='0' cellpadding='0' cellspacing='0' width='470'>" +
			"  <tr><td align='left' valign='top' height='30' colspan='2'><b>Formulário de Contacto</b></td></tr>" +
			"  <tr><td align='right' valign='top' height='30' colspan='2'><font class='contacts-small-text'>* Campos de preenchimento obrigatório.</font></td></tr>" +
			"  <tr><td align='left' valign='top' width='50%' height='30'>* Nome:</td><td valign='top'><input class='contacts-textfield' type='text' name='name'/></td></tr>" +
			"  <tr><td align='left' valign='top' width='50%' height='30'>Empresa:</td><td valign='top'><input class='contacts-textfield' type='text' name='company'/></td></tr>" +
			"  <tr><td align='left' valign='top' width='50%' height='30'>Website:</td><td valign='top'><input class='contacts-textfield' type='text' name='website' value='http://'/></td></tr>" +
			"  <tr><td align='left' valign='top' width='50%' height='30'>Morada:</td><td valign='top'><input class='contacts-textfield' type='text' name='address'/></td></tr>" +
			"  <tr><td align='left' valign='top' width='50%' height='30'>Cód.Postal:</td><td valign='top'><input class='contacts-textfield' type='text' name='zipcode'/></td></tr>" +
			"  <tr><td align='left' valign='top' width='50%' height='30'>Localidade:</td><td valign='top'><input class='contacts-textfield' type='text' name='area'/></td></tr>" +
			"  <tr><td align='left' valign='top' width='50%' height='30'>Telefone:</td><td valign='top'><input class='contacts-textfield' type='text' name='phone'/></td></tr>" +
			"  <tr><td align='left' valign='top' width='50%' height='30'>Fax:</td><td valign='top'><input class='contacts-textfield' type='text' name='fax'/></td></tr>" +
			"  <tr><td align='left' valign='top' width='50%' height='30'>* Email:</td><td valign='top'><input class='contacts-textfield' type='text' name='email'/></td></tr>" +
			"  <tr><td align='left' valign='top' width='50%'>* Mensagem:</td><td valign='top'><textarea class='contacts-textfield' name='message' rows='5'></textarea></td></tr>" +
			"  <tr><td align='left' valign='top' width='50%' height='40'>&nbsp;</td><td align='right' valign='middle'><input type='submit' value='Enviar'/></td></tr>" +
			" </table>" +
			" <input type='hidden' name='sendto' value='" + application.EMAIL_ADDRESS + "' />" +
			" <input type='hidden' name='subject' value='" + application.EMAIL_CONTACT_SUBJECT + "'/>" +
			" <input type='hidden' name='language' value='PT'/>" +
			"</form>";
	};
	
	
	
	//*******************************************************
	//** Details object
	//*******************************************************

	/**
	 * Method responsible for loading any menu item contents into the page central area.
	 * @param {int} menuItem The index of the menu item being activated.
	 */
	this.details.loadDetails = function(menuItem) {
		var scope = main;
		
		var headerEl = Ext.get('centerHeader');
		var contentsEl = Ext.get('contents');
		
		//Header content loading
		var startHeader = "<img src='" + application.IMAGE_ROOT_FOLDER +"iconCartaz.jpg' align='absmiddle'>&nbsp;CARTAZ";
		if (main.menuItems[menuItem].name.toLowerCase() == 'início') headerEl.dom.innerHTML = startHeader;
		else headerEl.dom.innerHTML = main.menuItems[menuItem].name;
		
		//Content loading
		contentsEl.dom.innerHTML = main.menuItems[menuItem].html;

		//Hide the last editions
		main.hideLastEditions();
	};
	
	/**
	 * Method responsible for loading an event's details.
	 * @param {String} id The container div id.
	 */	
	this.details.loadEvent = function(id) {

		var scope = main;
		
		var headerEl = Ext.get('centerHeader');
		var containerEl = Ext.get('contents');
		main.highlightMainMenuItem('menu', -1);
		
		fieldsObj = {};
		fieldsObj['table'] = 'tevent'; 
		fieldsObj['start'] = 0; 
		fieldsObj['limit'] = 1;
		fieldsObj['foreignkeys[0][name]'] = 'id';
		fieldsObj['foreignkeys[0][value]'] = id;
		fieldsObj['deletedField'] = 'estado'; 
 
		var result = utils.getJsonStore({
			url: 'src/servlets/genericServlet.php',
			root: 'tevent',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'id', 			type: 'int', 	mapping: 'id'},
				{name: 'name', 			type: 'string', mapping: 'name'},
				{name: 'thumbnail', 	type: 'string', mapping: 'thumbnail'},
				{name: 'contentsHTML', 	type: 'string', mapping: 'contentsHTML'},		
				{name: 'startDate', 	type: 'string', mapping: 'startDate'},
				{name: 'endDate', 		type: 'string', mapping: 'endDate'},
				{name: 'time', 			type: 'string', mapping: 'time'},
				{name: 'organization', 	type: 'string', mapping: 'organization'},
				{name: 'place', 		type: 'string', mapping: 'place'},
				{name: 'address', 		type: 'string', mapping: 'address'}
			]
		});

		result.on('load', function() {
			if (result.data.length > 0) {
				headerEl.dom.innerHTML = result.data.items[0].data['name'];
				containerEl.dom.innerHTML = "<table class='events-details-text' border='0' cellpadding='0' cellspacing='0' width='100%'>" + 
					"	<tr>" + 
					"		<td valign='top' width='200px' rowspan='5'>" + 
					"			<img src='" + application.IMAGE_ROOT_FOLDER + result.data.items[0].data['thumbnail'] + "' width='200px' />" + 
					"		</td>" +
					"		<td valign='top' width='15px' rowspan='5'>&nbsp;</td>" + 
					"		<td valign='top'><b>Data:</b> De <b>" + result.data.items[0].data['startDate'] + "</b> até <b>" + result.data.items[0].data['endDate'] + "</b>" + 
					"		</td>" + 
					"	</tr>" + 
					"	<tr>" + 
					"		<td valign='top'><b>Hora:</b> " + result.data.items[0].data['time'] + 
					"		</td>" + 
					"	</tr>" + 
					"	<tr>" + 
					"		<td valign='top'><b>Organização:</b> " + result.data.items[0].data['organization'] + 
					"		</td>" + 
					"	</tr>" + 
					"	<tr>" + 
					"		<td valign='top'><b>Local:</b> " + result.data.items[0].data['place'] +
					"		</td>" + 
					"	</tr>" + 
					"	<tr>" + 
					"		<td valign='top'><b>Morada:</b> " + result.data.items[0].data['address'] +
					"		</td>" + 
					"	</tr>" + 
					"	<tr>" + 
					"		<td valign='top' colspan='3'>&nbsp;" + 
					"		</td>" + 
					"	</tr>" + 
					"	<tr>" + 
					"		<td valign='top' colspan='3'><p class='paragraph-text'>" + result.data.items[0].data['contentsHTML'] + "</p><br/>" +
					"		</td>" + 
					"	</tr>" + 
					"</table>";
			} else {
				containerEl.dom.innerHTML = "<br /><div class='no-items-text'>Não existem detalhes para mostrar.</div><br/>";		
			}
		});

		containerEl.dom.innerHTML = "<br /><div class='no-items-text'>A carregar detalhes do evento ...</div><br/>";

		//Hide the last editions
		main.hideLastEditions();
	};

	/**
	 * Method responsible for loading a gallery into the contents div.
	 * @param {integer} id The gallery id.
	 */
	this.details.loadGallery = function(id, title) {

		var scope = main;
		var headerEl = Ext.get('centerHeader');
		headerEl.dom.innerHTML = title;
		var containerEl = Ext.get('contents');
		main.highlightMainMenuItem('menu', -1);

		//Configure the Highslide component for the images screen.
		scope.configuration.hswg();

		fieldsObj = {};
		fieldsObj['table'] = 'timage'; 
		fieldsObj['start'] = 0; 
		fieldsObj['limit'] = application.MAX_RECORDS;
		fieldsObj['foreignkeys[0][name]'] = 'idGallery';
		fieldsObj['foreignkeys[0][value]'] = id;
		fieldsObj['deletedField'] = 'estado'; 

		var result = utils.getJsonStore({
			url: 'src/servlets/genericServlet.php',
			root: 'timage',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'name', 			type: 'string'},
				{name: 'description', 	type: 'string'}
			]
		});

		result.on('load', function() {
			if (result.data.length > 0) {
				var html = "<table border='0' cellpadding='0' cellspacing='0' width='100%'><div class='highslide-gallery'>";
				for (var i = 0; i < result.data.length; i++) {
					var mod = i % 4;
					if (mod == 0) html += "<tr><td align='left' valign='top' width='115' height='85'><a href='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['name'] + 
						"' class='highslide' onclick='return hs.expand(this)'> " +
						"<img src='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['name'] + "' width='110' height='75' /></a>" + 
						"<div class='highslide-caption'>" + result.data.items[i].data['description'] + "</div></td>";
						
					if ((mod == 1) || (mod == 2)) html += "<td align='left' valign='top' width='115' height='85'><a href='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['name'] + 
						"' class='highslide' onclick='return hs.expand(this)'> " +
						"<img src='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['name'] + "' width='110' height='75' /></a>" +
						"<div class='highslide-caption'>" + result.data.items[i].data['description'] + "</div></td>";
						
					if (mod == 3) html  += "<td align='left' valign='top' width='115' height='85'><a href='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['name'] + 
						"' class='highslide' onclick='return hs.expand(this)'> " +
						"<img src='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['name'] + "' width='110' height='75' /></a>" + 
						"<div class='highslide-caption'>" + result.data.items[i].data['description'] + "</div></td></tr>";
						
				}
				html += "</div></table>";			
				containerEl.dom.innerHTML = html;
			} else {
				containerEl.dom.innerHTML = "<br /><div class='no-items-text'>Não existem fotos para mostrar.</div><br/>";		
			}
		});
			
		containerEl.dom.innerHTML = "<br /><div class='no-items-text'>A carregar fotos ...</div><br/>";
		
		//Show the last editions
		main.showLastEditions();
	}
	
	
	
	//*******************************************************
	//** Configuration object
	//*******************************************************

	/**
	 * Method responsible for loading the Highslide component simple configuration.
	 */
	this.configuration.hs = function() {
		//Highslide configuration
		hs.graphicsDir = 'src/js/components/highslide/graphics/';
		hs.outlineType = 'rounded-white';
		hs.transitions = ['expand', 'crossfade'];
		hs.fadeInOut = true;

		// Reset the slideshows
		hs.slideshows = [];
		
		//I18n
		hs.lang = {
			cssDirection: 'ltr',
			loadingText : 'A carregar...',
			loadingTitle : 'Clique para cancelar',
			focusTitle : 'Clique para trazer para a frente',
			fullExpandTitle : 'Expandir para o tamanho actual (f)',
			creditsText : 'Powered by <i class="acessosLink">1001 Acessos&reg;</i>',
			creditsTitle : 'Ir para a página da 1001 Acessos',
			restoreTitle : 'Clique para fechar a imagem, ou para arrastar.'
		};
	};
	
	/**
	 * Method responsible for loading the Highslide component gallery configuration.
	 */
	this.configuration.hswg = function() {
		//Highslide configuration
		hs.graphicsDir = 'src/js/components/highslide/graphics/';
		hs.align = 'center';
		hs.transitions = ['expand', 'crossfade'];
		hs.outlineType = 'rounded-white';
		hs.fadeInOut = true;

		// Add the controlbar
		hs.addSlideshow({
			//slideshowGroup: 'group1',
			interval: 5000,
			repeat: false,
			useControls: true,
			fixedControls: 'fit',
			overlayOptions: {
				opacity: .75,
				position: 'bottom center',
				hideOnMouseOut: true
			}
		});
		//I18n
		hs.lang = {
			cssDirection: 'ltr',
			loadingText : 'A carregar...',
			loadingTitle : 'Clique para cancelar',
			focusTitle : 'Clique para trazer para a frente',
			fullExpandTitle : 'Expandir para o tamanho actual (f)',
			creditsText : 'Powered by <i class="acessosLink">1001 Acessos&reg;</i>',
			creditsTitle : 'Ir para a página da 1001 Acessos',
			restoreTitle : 'Clique para fechar a imagem, ou para arrastar.'
		};
	};
	
	

	//*******************************************************
	//** Main object
	//*******************************************************
	
	/**
	 * Method responsible for loading the main menu.
	 * @param {String} id The menu div element id.
	 */
	this.loadMainMenu = function(id) { 

		var scope = main;
		var el = Ext.get(id);
		
		fieldsObj = {};
		fieldsObj['table'] = 'tmenu'; 
		fieldsObj['start'] = 0; 
		fieldsObj['limit'] = application.MAX_RECORDS;
		fieldsObj['deletedField'] = 'estado'; 
		fieldsObj['sort'] = 'order'; 
		
		var result = utils.getJsonStore({
			url: 'src/servlets/genericServlet.php',
			root: 'tmenu',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'id', 			type: 'int', 	mapping: 'id'},
				{name: 'name', 			type: 'string', mapping: 'name'},
				{name: 'action', 		type: 'string', mapping: 'action'},			
				{name: 'order', 		type: 'int', 	mapping: 'order'},			
				{name: 'contentsHTML', 	type: 'string', mapping: 'contentsHTML'},
				{name: 'isBanner', 		type: 'int', 	mapping: 'isBanner'}
			]
		});

		result.on('load', function() {
			el.dom.innerHTML = "";
			scope.menuItems = new Array();
			var highlight = 0;
			var highlighted = 0;
			var index = 0;
			
			for (var i = 0; i < result.data.length; i++) {
				//Exclude the banner aimed items
				if (result.data.items[i].data['isBanner'] != 1) {
					var obj = {
						name: result.data.items[i].data['name'],
						action: result.data.items[i].data['action'],
						html: result.data.items[i].data['contentsHTML']
					}
					scope.menuItems[index] = obj;
					
					if (i == highlight) {
						//Highlight of the first item
						el.dom.innerHTML += "<div class='menuItemHighlight link' onClick='main.highlightMainMenuItem(\"" + id + "\", " + index +
											"); main.details.loadDetails(" + index + ");" + result.data.items[i].data['action'] + "'>" + 
											"<img src='" + application.IMAGE_ROOT_FOLDER + "iconStarHighlight.jpg' align='absmiddle'>&nbsp;" + 
											result.data.items[i].data['name'] + "</div>";
						main.menu.loadStartPage();
						highlighted = highlight;
					} else  {
						el.dom.innerHTML += "<div class='menuItem link' onClick='main.highlightMainMenuItem(\"" + id + "\", " + index +
											"); main.details.loadDetails(" + index + ");" + result.data.items[i].data['action'] + "'>" + 
											"<img src='" + application.IMAGE_ROOT_FOLDER + "iconStar.jpg' align='absmiddle'>&nbsp;" + 
											result.data.items[i].data['name'] + "</div>";
					}
					index++;
				} else {
					highlight++;
				}
			}
			main.details.loadDetails(highlighted);
			main.showLastEditions();
		});
		
		el.dom.innerHTML = "<div class='no-items-text'>A carregar o menu...</div>";
	};	
	
	/**
	 * Method responsible for showing the last editions element.
	 */
	this.showLastEditions = function() {
		var centerSeparatorEl = Ext.get('centerSeparator');
		centerSeparatorEl.setHeight(20);
		centerSeparatorEl.dom.style.lineHeight = 1;
		centerSeparatorEl.setVisible(true);
		
		var lastEditionsHeaderEl = Ext.get('lastEditionsHeader');
		lastEditionsHeaderEl.setHeight(40);
		lastEditionsHeaderEl.dom.style.lineHeight = 1;
		lastEditionsHeaderEl.setVisible(true);

		var lastEditionsEl = Ext.get('lastEditions');
		if (typeof(main.lastEditionsHeight) != "undefined") lastEditionsEl.setHeight(150);
		lastEditionsEl.dom.style.lineHeight = 1;
		lastEditionsEl.setVisible(true);
	}
	
	/**
	 * Method responsible for hiding the last editions element.
	 */
	this.hideLastEditions = function() {
		var centerSeparatorEl = Ext.get('centerSeparator');
		main.centerSeparatorHeight = centerSeparatorEl.getHeight();
		centerSeparatorEl.dom.style.lineHeight = 0;
		centerSeparatorEl.setHeight(0);
		centerSeparatorEl.setVisible(false);

		var lastEditionsHeaderEl = Ext.get('lastEditionsHeader');
		main.lastEditionsHeaderHeight = lastEditionsHeaderEl.getHeight();
		lastEditionsHeaderEl.dom.style.lineHeight = 0;
		lastEditionsHeaderEl.setHeight(0);
		lastEditionsHeaderEl.setVisible(false);

		var lastEditionsEl = Ext.get('lastEditions');
		main.lastEditionsHeight = lastEditionsEl.getHeight();
		lastEditionsEl.dom.style.lineHeight = 0;
		lastEditionsEl.setHeight(0);
		lastEditionsEl.setVisible(false);
	}
	
	/**
	 * Method responsible for highlighting a menu item.
	 * @param {string} id The menu div element id.
	 * @param {integer} position The menu div element position.
	 */
	this.highlightMainMenuItem = function(id, position) {
		
		var el = Ext.get(id);
		el.dom.innerHTML = "";
		
		for (var i = 0; i < main.menuItems.length; i++) {
			if (i == position)
				//Highlighted item
				el.dom.innerHTML += "<div class='menuItemHighlight link' onClick='main.highlightMainMenuItem(\"" + id + "\", " + i +
									"); main.details.loadDetails(" + i + ");" + main.menuItems[i].action + "'>" + 
									"<img src='" + application.IMAGE_ROOT_FOLDER + "iconStarHighlight.jpg' align='absmiddle'>&nbsp;" + 
									main.menuItems[i].name + "</div>";
			else
				//Normal item
				el.dom.innerHTML += "<div class='menuItem link' onClick='main.highlightMainMenuItem(\"" + id + "\", " + i +
									"); main.details.loadDetails(" + i + ");" + main.menuItems[i].action + "'>" + 
									"<img src='" + application.IMAGE_ROOT_FOLDER + "iconStar.jpg' align='absmiddle'>&nbsp;" + 
									main.menuItems[i].name + "</div>";
		}
		
	};
	
	/**
	 * Function responsible for getting the markup for a flash banner.
	 * @param {String} name The movie name, without the extension (.swf).
	 * @param {integer} width The movie width.
	 * @param {integer} height The movie height.
	 * @return {String} the markup for the flash banner.
	 */ 
	this.getPublicityBannerMarkup = function(name, width, height) {
		return "<div><embed height='" + height + "' align='middle' width='" + width + "' type='application/x-shockwave-flash' salign='' allowscriptaccess='sameDomain' " + 
		"allowfullscreen='false' menu='true' name='" + name + "' bgcolor='#ffffff' devicefont='false' " + 
		"wmode='transparent' scale='showall' loop='true' play='true' pluginspage='http://www.adobe.com/go/getflashplayer' quality='high' " +
		"src='" + application.FLASH_ROOT_FOLDER + name + "'/></div>";
	}

	/**
	 * Function responsible for validating the contact form.
	 */ 
	this.validateContactForm = function() {

		var email = /^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/;
		var phone = /^(\+\d)?[0-9]+$/;

		if (document.forms['contact'].name.value == '') { document.forms['contact'].name.focus(); document.forms['contact'].name.select(); return false; }
		if (email.test(document.forms['contact'].email.value) == false) { document.forms['contact'].email.focus(); document.forms['contact'].email.select(); return false; }
		if (document.forms['contact'].message.value == '') { document.forms['contact'].message.focus(); document.forms['contact'].message.select(); return false; }
		return true;
	}

	/**
	 * Method responsible for sending an email with the email address to add to the newsletter distribution list.
	 */	
	this.sendNewsletter = function() {
		var email = /^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/;
		var txtNewsletter = document.getElementById("txtNewsletter");
		var msgEl = Ext.get("newsletterMsg");
		if (email.test(txtNewsletter.value) == false) {
			msgEl.dom.innerHTML = "Endereço de email inválido!";
			txtNewsletter.focus(); 
			txtNewsletter.select(); 
		} else {
			paramsObj = {};
			paramsObj['name'] = 'Carnavaldepataias.com'; 
			paramsObj['company'] = '-'; 
			paramsObj['website'] = '-'; 
			paramsObj['address'] = '-'; 
			paramsObj['zipcode'] = '-'; 
			paramsObj['area'] = '-'; 
			paramsObj['phone'] = '-'; 
			paramsObj['fax'] = '-'; 
			paramsObj['email'] = txtNewsletter.value; 
			paramsObj['message'] = 'Adicionar o endereço "' + txtNewsletter.value + '" à lista de distribuição da newsletter.';
			paramsObj['language'] = 'PT';
			paramsObj['sendto'] = application.EMAIL_ADDRESS;
			paramsObj['subject'] = application.EMAIL_REGISTER_SUBJECT;

			Ext.Ajax.request({
				url: 'src/servlets/sendmail.php',
				callback: function(options, success, response) {
					msgEl.dom.innerHTML = response.responseText;
					msgEl.dom.style.lineHeight = 1;
					if (success == true) txtNewsletter.value = '';
				},
				params: paramsObj
			});
		}
	}

	/**
	 * Method responsible for loading the Sapo map.
	 */	
	this.loadSapoMap = function() {
		// Create and open the window
		var width = 1000;
		var height = 700;
		var left = (screen.width/2) - (width/2);
		var top = (screen.height/2) - (height/2);
		var win = window.open("http://mapas.sapo.pt/?ll=39.671453,-8.994022&z=18&t=h&mks=-8.993984845243,39.670903844289,1,Carnaval%2520de%2520Pataias,&l=shopping-traditionalProducts", 
		"win", "toolbar=no, location=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=" + width + ", height=" + height + ", top=" + top + ", left=" + left);
	}
	
	//End Main Class
  }
