﻿/**
 * @project Praias de Alcobaça
 * @filename management.js
 * @version 2.0 (15/02/2010)
 * @creationdate 15/02/2010
 * @author 1001 Acessos - Telecomunicacoes e Informatica, Lda
 * @description Main functions file.
 */

 /**
  * 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.loadPageTitle();
	main.loadMainMenu();
	main.loadFooter();
	main.loadHeaderBanner();
	main.loadHowToAdvertiseBanner();
	main.loadPublicityBanners();
	utils.fixPng();
	main.configuration.hs();
 });


 /**
  * Main class.
  */
 main = new function() {

	/**
	 * Main menu items information array.
	 */
	this.menuItems = new Array();

	/**
	 * Footer link items information array.
	 */
	this.footerItems = new Array();

	/**
	 * Active language.
	 */
	this.activeLang = application.LANG_PT;

	/**
	 * Main menu loading functions object.
	 */
	this.menu = new Object();
	
	/**
	 * Subjects' details loading functions object.
	 */
	this.details = new Object();

	/**
	 * Forms' loading functions object.
	 */
	this.forms = new Object();

	/**
	 * Main configuration loading functions object.
	 */
	this.configuration = new Object();
 
 

	//*******************************************************
	//** Menu object
	//*******************************************************
	
	/**
	 * Method responsible for loading the contacts form.
	 */ 
	this.menu.loadContactForm = function() {
		var el = Ext.get('contentsDiv');
		switch (main.activeLang) {
			case application.LANG_PT: el.dom.innerHTML = main.forms.getContactForm(application.PT_CONTACT_FORM_CONTACT_US, application.PT_CONTACT_FORM_CONTACT_MESSAGE); break;
			case application.LANG_EN: el.dom.innerHTML = main.forms.getContactForm(application.EN_CONTACT_FORM_CONTACT_US, application.EN_CONTACT_FORM_CONTACT_MESSAGE); break;
			case application.LANG_ES: el.dom.innerHTML = main.forms.getContactForm(application.ES_CONTACT_FORM_CONTACT_US, application.ES_CONTACT_FORM_CONTACT_MESSAGE); break;
			case application.LANG_FR: el.dom.innerHTML = main.forms.getContactForm(application.FR_CONTACT_FORM_CONTACT_US, application.FR_CONTACT_FORM_CONTACT_MESSAGE); break;
			case application.LANG_DE: el.dom.innerHTML = main.forms.getContactForm(application.DE_CONTACT_FORM_CONTACT_US, application.DE_CONTACT_FORM_CONTACT_MESSAGE); break;
		}
		main.highlightMainMenuItem(application.MAX_MENU_ITEMS + 1);
	}

	/**
	 * Method responsible for loading the gallery listing to the contents div.
	 * @param {integer} start The value indicating in which record to start.
	 * @param {integer} currentPage The value idicating how much records to retrieve.
	 */
	this.menu.loadGalleries = function(start, currentPage) {

		if (!start) start = 0;
		if (!currentPage) currentPage = 1;

		var title = application.PT_GALLERY;
		var bookmark = application.PT_GALLERY_ADD_TO_BOOKMARKS;
		switch (main.activeLang) {
			case application.LANG_EN: title = application.EN_GALLERY; bookmark = application.EN_GALLERY_ADD_TO_BOOKMARKS; break;
			case application.LANG_ES: title = application.ES_GALLERY; bookmark = application.ES_GALLERY_ADD_TO_BOOKMARKS; break;
			case application.LANG_FR: title = application.FR_GALLERY; bookmark = application.FR_GALLERY_ADD_TO_BOOKMARKS; break;
			case application.LANG_DE: title = application.DE_GALLERY; bookmark = application.DE_GALLERY_ADD_TO_BOOKMARKS; break;
		}

		var containerEl = Ext.get('contentsDiv');
		containerEl.dom.innerHTML = "<table border='0' cellpadding='0' cellspacing='0' width='100%' height='390'>" +
									"	<tr><td colspan='3' valign='top' align='left' height='25'>" + 
									"		<div id='headerDiv' class='titleText'/>" + 
									"	</td></tr>" + 
									"	<tr><td colspan='3' valign='top' align='right' height='25'>" + 
									"		<div id='pagingHeaderDiv' class='titleText'/>" + 
									"	</td></tr>" + 
									"	<tr><td colspan='3' valign='top'>" + 
									"		<div id='galleriesDiv' />" + 
									"	</td></tr>" + 
									"	<tr><td colspan='3' valign='top' align='right' height='25'>" + 
									"		<div id='pagingFooterDiv' class='titleText'/>" + 
									"	</td></tr>" + 
									"	<tr><td colspan='3' valign='top' align='left' height='25'>" + 
									"		<br/><span id='permalinkTitle' class='galleryHeader'><b>" + bookmark + "</b></span>" + 
									"	</td></tr>" + 
									"	<tr><td valign='middle' align='center'>" + 
									"		<div id='permalinkInput'><input type='text' class='permalinkTextfield' readonly='true' value='http://" + 
									location.host + location.pathname + "?sec=1&pag=" + currentPage + "' onclick='this.focus(); this.select();'/></div></td>" + 
									"	<td align='right' height='40'><div id='permalinkImg' /></td>" + 
									"	<td align='right' height='40'><div id='sendToFriendImg' /></td></tr>" + 
									"</table><br/>";
		
		//Load Galleries
		var headerEl = Ext.get('headerDiv');
		var permalinkTitleEl = Ext.get('permalinkTitle');
		var permalinkInputEl = Ext.get('permalinkInput');
		var permalinkImgEl = Ext.get('permalinkImg');
		var sendToFriendImgEl = Ext.get('sendToFriendImg');
		var galleriesEl = Ext.get('galleriesDiv');
		main.configuration.hs();

		var fieldsObj = new Object();
		fieldsObj['table'] = 'galleries'; 
		fieldsObj['queryname'] = 'galleries';
		fieldsObj['language'] = main.activeLang;
		fieldsObj['start'] = start; 
		fieldsObj['limit'] = application.PAGE_SIZE;

		var result = utils.getJsonStore({
			url: 'src/servlets/queryServlet.php',
			root: 'galleries',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'id', 			type: 'int'},
				{name: 'name', 			type: 'string'},
				{name: 'thumbnail', 	type: 'string'},
				{name: 'description', 	type: 'string'}, 
				{name: 'numfotos', 		type: 'int'}
			]
		});

		result.on('load', function() {
			if (result.data.length > 0) {
				var fotos = application.PT_GALLERY_PHOTOS;
				var bookmarkTitle = application.PT_GALLERY_ADD_TO_BOOKMARKS;
				var sendToFriendTitle = application.PT_SENDTOFRIEND_WINDOW_TITLE;
				headerEl.dom.innerHTML = "<span class='galleryHeader'><b>" + application.PT_GALLERY + "</b></span>"; 
				
				switch (main.activeLang) {
					case application.LANG_EN: 
						fotos = application.EN_GALLERY_PHOTOS; 
						bookmarkTitle = application.EN_GALLERY_ADD_TO_BOOKMARKS; 
						sendToFriendTitle = application.EN_SENDTOFRIEND_WINDOW_TITLE; 
						headerEl.dom.innerHTML += "<span class='galleryHeader'><b>" + application.EN_GALLERY + "</b></span>"; 
					break;
					case application.LANG_ES:
						fotos = application.ES_GALLERY_PHOTOS; 
						bookmarkTitle = application.ES_GALLERY_ADD_TO_BOOKMARKS; 
						sendToFriendTitle = application.ES_SENDTOFRIEND_WINDOW_TITLE; 
						headerEl.dom.innerHTML += "<span class='galleryHeader'><b>" + application.ES_GALLERY + "</b></span>"; 
					break;
					case application.LANG_FR:
						fotos = application.FR_GALLERY_PHOTOS; 
						bookmarkTitle = application.FR_GALLERY_ADD_TO_BOOKMARKS; 
						sendToFriendTitle = application.FR_SENDTOFRIEND_WINDOW_TITLE; 
						headerEl.dom.innerHTML += "<span class='galleryHeader'><b>" + application.FR_GALLERY + "</b></span>"; 
					break;
					case application.LANG_DE:
						fotos = application.DE_GALLERY_PHOTOS; 
						bookmarkTitle = application.DE_GALLERY_ADD_TO_BOOKMARKS; 
						sendToFriendTitle = application.DE_SENDTOFRIEND_WINDOW_TITLE; 
						headerEl.dom.innerHTML += "<span class='galleryHeader'><b>" + application.DE_GALLERY + "</b></span>"; 
					break;
				}	
				galleriesEl.dom.innerHTML = "";
				
				permalinkImgEl.dom.innerHTML = "<span onClick='main.addToBookmarks(\"http://" + location.host + location.pathname + "?sec=1&pag=" + currentPage + "\", \"" + 
												title + " (pag. " + currentPage + ")\");'><img class='link' src='src/images/headerFavBtn.png' width='40' height='40' " +
												"alt='" + bookmarkTitle + "' title='" + bookmarkTitle + "' /></span>";
				sendToFriendImgEl.dom.innerHTML = "<span onClick='main.forms.loadSendToFriendWindow(\"" + title + " (pag. " + currentPage + 
												")\", \"http://" + location.host + location.pathname + "?sec=1&pag=" + currentPage + "\");'>" + 
												"<img class='link' src='src/images/headerEmailBtn.png' width='40' height='40' " + 
												"alt='" + sendToFriendTitle + "' title='" + sendToFriendTitle + "' /></span>";

				for (var i = 0; i < result.data.length; i++) {
					galleriesEl.dom.innerHTML  += "<table border='0' cellpadding='5' cellspacing='0' width='100%'>" +
						"<tr>" + 
						 "<td valign='top' width='100'><div class='imageOuterBorder'><a href='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + 
						   "' class='highslide' onclick='return hs.expand(this);'> " +
						   "<img src='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' width='100' /></a>" +
						   "<div class='highslide-caption'>" + result.data.items[i].data['description'] + "</div></div>"+
						 "</td>" + 
						 "<td valign='top'>" + 
						   "<div class='galleryHeader link' onclick='main.details.loadGallery(" + result.data.items[i].data['id'] +
						   ", 0, 1);'>" + result.data.items[i].data['name'] + 
						   " (" + result.data.items[i].data['numfotos'] + " " + fotos + ")</div><hr color='#EEEEEE'/>" + 
						   "<div class='galleryText link' onclick='main.details.loadGallery(" + result.data.items[i].data['id'] +
						   ", 0, 1);'><p align='justify'>" + result.data.items[i].data['description'] + "</p></div>" + 
						 "</td>" + 
						"</tr></table>";
				}
				//Load Paging Header and Footer
				var pagingHeaderEl = Ext.get('pagingHeaderDiv');
				var pagingFooterEl = Ext.get('pagingFooterDiv');
				
				var pages = Math.ceil(result.totalLength / application.PAGE_SIZE);
				
				for (var j = 1; j <= pages; j++) {
					
					//First element of the footer
					if (j == 1) {
						pagingHeaderEl.dom.innerHTML = "<span class='menuDivHighlight link' onClick='main.menu.loadGalleries(0, 1);'>«</span>";
						pagingFooterEl.dom.innerHTML = "<span class='menuDivHighlight link' onClick='main.menu.loadGalleries(0, 1);'>«</span>";
					}
					
					//Any other item in the middle
					if (j <= pages) {
						var pageStart = (application.PAGE_SIZE * (j-1));
						if (j == currentPage) {
							pagingHeaderEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadGalleries(" + pageStart + ", " + j + ");'>(" + j + ")</span>";
							pagingFooterEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadGalleries(" + pageStart + ", " + j + ");'>(" + j + ")</span>";
						}
						else {
							pagingHeaderEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadGalleries(" + pageStart + ", " + j + ");'>" + j + "</span>";
							pagingFooterEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadGalleries(" + pageStart + ", " + j + ");'>" + j + "</span>";
						}
					}
					
					//Last element of the footer
					if (j == pages) {
						var lastStart = Math.floor(result.totalLength / application.PAGE_SIZE) * application.PAGE_SIZE;
						pagingHeaderEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadGalleries(" + lastStart + ", " + j + ");'>»</span>";
						pagingFooterEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadGalleries(" + lastStart + ", " + j + ");'>»</span>";
					}
				}
			} else {
				switch (main.activeLang) {
					case application.LANG_PT: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_GALLERIES + "</font>"; break;
					case application.LANG_EN: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_NO_GALLERIES + "</font>"; break;
					case application.LANG_ES: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_NO_GALLERIES + "</font>"; break;
					case application.LANG_FR: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_NO_GALLERIES + "</font>"; break;
					case application.LANG_DE: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_NO_GALLERIES + "</font>"; break;
					default: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_GALLERIES + "</font>"; break;
				}
				permalinkTitleEl.dom.innerHTML = "";
				permalinkInputEl.dom.innerHTML = "";
				permalinkImgEl.dom.innerHTML = "";
				sendToFriendImgEl.dom.innerHTML = "";
			}
		});
			
		switch (main.activeLang) {
			case application.LANG_PT: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_GALLERY + "</font>"; break;
			case application.LANG_EN: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_LOADING_GALLERY + "</font>"; break;
			case application.LANG_ES: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_LOADING_GALLERY + "</font>"; break;
			case application.LANG_FR: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_LOADING_GALLERY + "</font>"; break;
			case application.LANG_DE: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_LOADING_GALLERY + "</font>"; break;
			default: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_GALLERY + "</font>"; break;
		}
	}

	/**
	 * Method responsible for loading the hostage listing to the contents div.
	 * @param {integer} start The value indicating in which record to start.
	 * @param {integer} currentPage The value idicating how much records to retrieve.
	 */
	this.menu.loadHostages = function(start, currentPage) {

		if (!start) start = 0;
		if (!currentPage) currentPage = 1;

		var title = application.PT_HOSTAGE;
		var bookmark = application.PT_HOSTAGE_ADD_TO_BOOKMARKS;
		switch (main.activeLang) {
			case application.LANG_EN: title = application.EN_HOSTAGE; bookmark = application.EN_HOSTAGE_ADD_TO_BOOKMARKS; break;
			case application.LANG_ES: title = application.ES_HOSTAGE; bookmark = application.ES_HOSTAGE_ADD_TO_BOOKMARKS; break;
			case application.LANG_FR: title = application.FR_HOSTAGE; bookmark = application.FR_HOSTAGE_ADD_TO_BOOKMARKS; break;
			case application.LANG_DE: title = application.DE_HOSTAGE; bookmark = application.DE_HOSTAGE_ADD_TO_BOOKMARKS; break;
		}

		var containerEl = Ext.get('contentsDiv');
		containerEl.dom.innerHTML = "<table border='0' cellpadding='0' cellspacing='0' width='100%' height='390'>" +
									"	<tr><td colspan='3' valign='top' align='left' height='25'>" + 
									"		<div id='headerDiv' class='titleText'/>" + 
									"	</td></tr>" + 
									"	<tr><td colspan='3' valign='top' align='right' height='25'>" + 
									"		<div id='pagingHeaderDiv' class='titleText'/>" + 
									"	</td></tr>" + 
									"	<tr><td colspan='3' valign='top'>" + 
									"		<div id='hostagesDiv' />" + 
									"	</td></tr>" + 
									"	<tr><td colspan='3' valign='top' align='right' height='25'>" + 
									"		<div id='pagingFooterDiv' class='titleText'/>" + 
									"	</td></tr>" +
									"	<tr><td colspan='3' valign='top' align='left' height='25'>" + 
									"		<br/><span id='permalinkTitle' class='galleryHeader'><b>" + bookmark + "</b></span>" + 
									"	</td></tr>" + 
									"	<tr><td valign='middle' align='center'>" + 
									"		<div id='permalinkInput'><input type='text' class='permalinkTextfield' readonly='true' value='http://" + 
									location.host + location.pathname + "?sec=2&pag=" + currentPage + "' onclick='this.focus(); this.select();'/></div></td>" + 
									"	<td align='right' height='40'><div id='permalinkImg' /></td>" + 
									"	<td align='right' height='40'><div id='sendToFriendImg' /></td></tr>" +
									"</table><br/>";
		
		//Load Hostages
		var headerEl = Ext.get('headerDiv');
		var permalinkTitleEl = Ext.get('permalinkTitle');
		var permalinkInputEl = Ext.get('permalinkInput');
		var permalinkImgEl = Ext.get('permalinkImg');
		var sendToFriendImgEl = Ext.get('sendToFriendImg');
		var hostagesEl = Ext.get('hostagesDiv');
		main.configuration.hs();

		var fieldsObj = new Object();
		fieldsObj['table'] = 'thostage';
		fieldsObj['start'] = start; 
		fieldsObj['limit'] = application.PAGE_SIZE;
		fieldsObj['sort'] = 'name' + main.activeLang; 
		fieldsObj['dir'] = 'asc'; 
		fieldsObj['deletedField'] = 'estado'; 

		var result = utils.getJsonStore({
			url: 'src/servlets/genericServlet.php',
			root: 'thostage',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'id', 			type: 'int',	mapping:'id'},
				{name: 'name', 			type: 'string',	mapping:'name' + main.activeLang},
				{name: 'thumbnail', 	type: 'string',	mapping:'thumbnail'},
				{name: 'address', 		type: 'string',	mapping:'address'}, 
				{name: 'phone', 		type: 'string',	mapping:'phone'}, 
				{name: 'fax', 			type: 'string',	mapping:'fax'}, 
				{name: 'email', 		type: 'string',	mapping:'email'}, 
				{name: 'description', 	type: 'string',	mapping:'description' + main.activeLang}, 
				{name: 'comments', 		type: 'string',	mapping:'comments' + main.activeLang}
			]
		});

		result.on('load', function() {
			var bookmarkTitle = application.PT_HOSTAGE_ADD_TO_BOOKMARKS;
			var sendToFriendTitle = application.PT_SENDTOFRIEND_WINDOW_TITLE;
			headerEl.dom.innerHTML = "<table class='galleryHeader' border='0' cellpadding='0' cellspacing='0' width='100%'>" + 
				"<tr><td><b>" + application.PT_HOSTAGE + "</b></td>" +
				"<td align='right'><span class='linkText link' onClick='main.menu.howToAdvertise();'>" + 
				application.PT_HOSTAGE_REGISTER + "</span></td></tr></table>";
			switch (main.activeLang) {
				case application.LANG_EN: 
					headerEl.dom.innerHTML = "<table class='galleryHeader' border='0' cellpadding='0' cellspacing='0' width='100%'>" + 
						"<tr><td><b>" + application.EN_HOSTAGE + "</b></td>" +
						"<td align='right'><span class='linkText link' onClick='main.menu.howToAdvertise();'>" + 
						application.EN_HOSTAGE_REGISTER + "</span></td></tr></table>";
						bookmarkTitle = application.EN_HOSTAGE_ADD_TO_BOOKMARKS;
						sendToFriendTitle = application.EN_SENDTOFRIEND_WINDOW_TITLE;
					break;
				case application.LANG_ES: 
					headerEl.dom.innerHTML = "<table class='galleryHeader' border='0' cellpadding='0' cellspacing='0' width='100%'>" + 
						"<tr><td><b>" + application.ES_HOSTAGE + "</b></td>" +
						"<td align='right'><span class='linkText link' onClick='main.menu.howToAdvertise();'>" + 
						application.ES_HOSTAGE_REGISTER + "</span></td></tr></table>";
						bookmarkTitle = application.ES_HOSTAGE_ADD_TO_BOOKMARKS;
						sendToFriendTitle = application.ES_SENDTOFRIEND_WINDOW_TITLE;
					break;
				case application.LANG_FR: 
					headerEl.dom.innerHTML = "<table class='galleryHeader' border='0' cellpadding='0' cellspacing='0' width='100%'>" + 
						"<tr><td><b>" + application.FR_HOSTAGE + "</b></td>" +
						"<td align='right'><span class='linkText link' onClick='main.menu.howToAdvertise();'>" + 
						application.FR_HOSTAGE_REGISTER + "</span></td></tr></table>";
						bookmarkTitle = application.FR_HOSTAGE_ADD_TO_BOOKMARKS;
						sendToFriendTitle = application.FR_SENDTOFRIEND_WINDOW_TITLE;
					break;
				case application.LANG_DE: 
					headerEl.dom.innerHTML = "<table class='galleryHeader' border='0' cellpadding='0' cellspacing='0' width='100%'>" + 
						"<tr><td><b>" + application.DE_HOSTAGE + "</b></td>" +
						"<td align='right'><span class='linkText link' onClick='main.menu.howToAdvertise();'>" + 
						application.DE_HOSTAGE_REGISTER + "</span></td></tr></table>";
						bookmarkTitle = application.DE_HOSTAGE_ADD_TO_BOOKMARKS;
						sendToFriendTitle = application.DE_SENDTOFRIEND_WINDOW_TITLE;
					break;
			}			
			if (result.data.length > 0) {
				hostagesEl.dom.innerHTML = "";
				
				permalinkImgEl.dom.innerHTML = "<span onClick='main.addToBookmarks(\"http://" + location.host + location.pathname + "?sec=2&pag=" + currentPage + "\", \"" + 
												title + " (pag. " + currentPage + ")\");'><img id='bookmarksImg' class='link' src='src/images/headerFavBtn.png' width='40' height='40' " + 
												"alt='" + bookmarkTitle + "' title='" + bookmarkTitle + "' /></span>";
				sendToFriendImgEl.dom.innerHTML = "<span onClick='main.forms.loadSendToFriendWindow(\"" + title + " (pag. " + currentPage + 
												")\", \"http://" + location.host + location.pathname + "?sec=2&pag=" + currentPage + "\");'>" + 
												"<img class='link' src='src/images/headerEmailBtn.png' width='40' height='40' " + 
												"alt='" + sendToFriendTitle + "' title='" + sendToFriendTitle + "' /></span>";

				for (var i = 0; i < result.data.length; i++) {
					var desc = result.data.items[i].data['description'];
					if (desc.length > 120) desc = desc.substring(0, 120) + ' ...';
					hostagesEl.dom.innerHTML  += "<table border='0' cellpadding='5' cellspacing='0' width='100%'>" +
						"<tr><td valign='top' width='100'><div class='imageOuterBorder'><a href='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + 
						"' class='highslide' onclick='return hs.expand(this)'> " +
						"<img src='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' width='100' /></a>" +
						"<div class='highslide-caption'>" + result.data.items[i].data['address'] + "</div></div></td><td valign='top'>" + 
						"<div class='galleryHeader link' onclick='main.details.loadHostage(" + result.data.items[i].data['id'] +
						");'>" + result.data.items[i].data['name'] + "</div><hr color='#EEEEEE'/>" + 
						"<div class='galleryText link' onclick='main.details.loadHostage(" + result.data.items[i].data['id'] +
						");'><p align='justify'>" + desc + "</p></div></td></tr></table>";
				}
				//Load Paging Header and Footer
				var pagingHeaderEl = Ext.get('pagingHeaderDiv');
				var pagingFooterEl = Ext.get('pagingFooterDiv');
				
				var pages = Math.ceil(result.totalLength / application.PAGE_SIZE);
				
				for (var j = 1; j <= pages; j++) {
					
					//First element of the footer
					if (j == 1) {
						pagingHeaderEl.dom.innerHTML = "<span class='menuDivHighlight link' onClick='main.menu.loadHostages(0, 1);'>«</span>";
						pagingFooterEl.dom.innerHTML = "<span class='menuDivHighlight link' onClick='main.menu.loadHostages(0, 1);'>«</span>";
					}
					
					//Any other item in the middle
					if (j <= pages) {
						var pageStart = (application.PAGE_SIZE * (j-1));
						if (j == currentPage) {
							pagingHeaderEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadHostages(" + pageStart + ", " + j + ");'>(" + j + ")</span>";
							pagingFooterEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadHostages(" + pageStart + ", " + j + ");'>(" + j + ")</span>";
						}
						else {
							pagingHeaderEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadHostages(" + pageStart + ", " + j + ");'>" + j + "</span>";
							pagingFooterEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadHostages(" + pageStart + ", " + j + ");'>" + j + "</span>";
						}
					}
					
					//Last element of the footer
					if (j == pages) {
						var lastStart = Math.floor(result.totalLength / application.PAGE_SIZE) * application.PAGE_SIZE;
						pagingHeaderEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadHostages(" + lastStart + ", " + j + ");'>»</span>";
						pagingFooterEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadHostages(" + lastStart + ", " + j + ");'>»</span>";
					}
				}
			} else {
				switch (main.activeLang) {
					case application.LANG_PT: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_HOSTAGES + "</font>"; break;
					case application.LANG_EN: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_NO_HOSTAGES + "</font>"; break;
					case application.LANG_ES: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_NO_HOSTAGES + "</font>"; break;
					case application.LANG_FR: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_NO_HOSTAGES + "</font>"; break;
					case application.LANG_DE: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_NO_HOSTAGES + "</font>"; break;
					default: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_HOSTAGES + "</font>"; break;
				}
				permalinkTitleEl.dom.innerHTML = "";
				permalinkInputEl.dom.innerHTML = "";
				permalinkImgEl.dom.innerHTML = "";
				sendToFriendImgEl.dom.innerHTML = "";
			}
		});
			
		switch (main.activeLang) {
			case application.LANG_PT: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_HOSTAGES + "</font>"; break;
			case application.LANG_EN: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_LOADING_HOSTAGES + "</font>"; break;
			case application.LANG_ES: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_LOADING_HOSTAGES + "</font>"; break;
			case application.LANG_FR: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_LOADING_HOSTAGES + "</font>"; break;
			case application.LANG_DE: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_LOADING_HOSTAGES + "</font>"; break;
			default: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_HOSTAGES + "</font>"; break;
		}
	}

	/**
	 * Method responsible for loading the restaurant listing to the contents div.
	 * @param {integer} start The value indicating in which record to start.
	 * @param {integer} currentPage The value idicating how much records to retrieve.
	 */
	this.menu.loadRestaurants = function(start, currentPage) {

		if (!start) start = 0;
		if (!currentPage) currentPage = 1;

		var title = application.PT_RESTAURANTS;
		var bookmark = application.PT_RESTAURANTS_ADD_TO_BOOKMARKS;
		switch (main.activeLang) {
			case application.LANG_EN: title = application.EN_RESTAURANTS; bookmark = application.EN_RESTAURANTS_ADD_TO_BOOKMARKS; break;
			case application.LANG_ES: title = application.ES_RESTAURANTS; bookmark = application.ES_RESTAURANTS_ADD_TO_BOOKMARKS; break;
			case application.LANG_FR: title = application.FR_RESTAURANTS; bookmark = application.FR_RESTAURANTS_ADD_TO_BOOKMARKS; break;
			case application.LANG_DE: title = application.DE_RESTAURANTS; bookmark = application.DE_RESTAURANTS_ADD_TO_BOOKMARKS; break;
		}

		var containerEl = Ext.get('contentsDiv');
		containerEl.dom.innerHTML = "<table border='0' cellpadding='0' cellspacing='0' width='100%' height='390'>" +
									"	<tr><td colspan='3' valign='top' align='left' height='25'>" + 
									"		<div id='headerDiv' class='titleText'/>" + 
									"	</td></tr>" + 
									"	<tr><td colspan='3' valign='top' align='right' height='25'>" + 
									"		<div id='pagingHeaderDiv' class='titleText'/>" + 
									"	</td></tr>" + 
									"	<tr><td colspan='3' valign='top'>" + 
									"		<div id='restaurantsDiv' />" + 
									"	</td></tr>" + 
									"	<tr><td colspan='3' valign='top' align='right' height='25'>" + 
									"		<div id='pagingFooterDiv' class='titleText'/>" + 
									"	</td></tr>" + 
									"	<tr><td colspan='3' valign='top' align='left' height='25'>" + 
									"		<br/><span id='permalinkTitle' class='galleryHeader'><b>" + bookmark + "</b></span>" + 
									"	</td></tr>" + 
									"	<tr><td valign='middle' align='center'>" + 
									"		<div id='permalinkInput'><input type='text' class='permalinkTextfield' readonly='true' value='http://" + 
									location.host + location.pathname + "?sec=3&pag=" + currentPage + "' onclick='this.focus(); this.select();'/></div></td>" + 
									"	<td align='right' height='40'><div id='permalinkImg' /></td>" + 
									"	<td align='right' height='40'><div id='sendToFriendImg' /></td></tr>" +
									"</table><br/>";
		
		//Load Restaurants
		var headerEl = Ext.get('headerDiv');
		var permalinkTitleEl = Ext.get('permalinkTitle');
		var permalinkInputEl = Ext.get('permalinkInput');
		var permalinkImgEl = Ext.get('permalinkImg');
		var sendToFriendImgEl = Ext.get('sendToFriendImg');
		var restaurantsEl = Ext.get('restaurantsDiv');
		main.configuration.hs();

		var fieldsObj = new Object();
		fieldsObj['table'] = 'trestaurant';
		fieldsObj['start'] = start; 
		fieldsObj['limit'] = application.PAGE_SIZE;
		fieldsObj['sort'] = 'name' + main.activeLang; 
		fieldsObj['dir'] = 'asc'; 
		fieldsObj['deletedField'] = 'estado'; 

		var result = utils.getJsonStore({
			url: 'src/servlets/genericServlet.php',
			root: 'trestaurant',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'id', 			type: 'int',	mapping:'id'},
				{name: 'name', 			type: 'string',	mapping:'name' + main.activeLang},
				{name: 'thumbnail', 	type: 'string',	mapping:'thumbnail'},
				{name: 'address', 		type: 'string',	mapping:'address'}, 
				{name: 'phone', 		type: 'string',	mapping:'phone'}, 
				{name: 'fax', 			type: 'string',	mapping:'fax'}, 
				{name: 'email', 		type: 'string',	mapping:'email'}, 
				{name: 'description', 	type: 'string',	mapping:'description' + main.activeLang}, 
				{name: 'comments', 		type: 'string',	mapping:'comments' + main.activeLang}
			]
		});

		result.on('load', function() {
			var bookmarkTitle = application.PT_RESTAURANTS_ADD_TO_BOOKMARKS;
			var sendToFriendTitle = application.PT_SENDTOFRIEND_WINDOW_TITLE;
			headerEl.dom.innerHTML = "<table class='galleryHeader' border='0' cellpadding='10' cellspacing='0' width='100%'>" + 
				"<tr><td><b>" + application.PT_RESTAURANTS + "</b></td>" +
				"<td align='right'><span class='linkText link' onClick='main.menu.howToAdvertise();'>" + 
				application.PT_RESTAURANTS_REGISTER + "</span></td></tr></table>";
			switch (main.activeLang) {
				case application.LANG_EN: 
					headerEl.dom.innerHTML = "<table class='galleryHeader' border='0' cellpadding='10' cellspacing='0' width='100%'>" + 
						"<tr><td><b>" + application.EN_RESTAURANTS + "</b></td>" +
						"<td align='right'><span class='linkText link' onClick='main.menu.howToAdvertise();'>" + 
						application.EN_RESTAURANTS_REGISTER + "</span></td></tr></table>";
						bookmarkTitle = application.EN_RESTAURANTS_ADD_TO_BOOKMARKS;
						sendToFriendTitle = application.EN_SENDTOFRIEND_WINDOW_TITLE;
					break;
				case application.LANG_ES: 
					headerEl.dom.innerHTML = "<table class='galleryHeader' border='0' cellpadding='10' cellspacing='0' width='100%'>" + 
						"<tr><td><b>" + application.ES_RESTAURANTS + "</b></td>" +
						"<td align='right'><span class='linkText link' onClick='main.menu.howToAdvertise();'>" + 
						application.ES_RESTAURANTS_REGISTER + "</span></td></tr></table>";
						bookmarkTitle = application.ES_RESTAURANTS_ADD_TO_BOOKMARKS;
						sendToFriendTitle = application.ES_SENDTOFRIEND_WINDOW_TITLE;
					break;
				case application.LANG_FR: 
					headerEl.dom.innerHTML = "<table class='galleryHeader' border='0' cellpadding='10' cellspacing='0' width='100%'>" + 
						"<tr><td><b>" + application.FR_RESTAURANTS + "</b></td>" +
						"<td align='right'><span class='linkText link' onClick='main.menu.howToAdvertise();'>" + 
						application.FR_RESTAURANTS_REGISTER + "</span></td></tr></table>";
						bookmarkTitle = application.FR_RESTAURANTS_ADD_TO_BOOKMARKS;
						sendToFriendTitle = application.FR_SENDTOFRIEND_WINDOW_TITLE;
					break;
				case application.LANG_DE: 
					headerEl.dom.innerHTML = "<table class='galleryHeader' border='0' cellpadding='10' cellspacing='0' width='100%'>" + 
						"<tr><td><b>" + application.DE_RESTAURANTS + "</b></td>" +
						"<td align='right'><span class='linkText link' onClick='main.menu.howToAdvertise();'>" + 
						application.DE_RESTAURANTS_REGISTER + "</span></td></tr></table>";
						bookmarkTitle = application.DE_RESTAURANTS_ADD_TO_BOOKMARKS;
						sendToFriendTitle = application.DE_SENDTOFRIEND_WINDOW_TITLE;
					break;
			}			
			if (result.data.length > 0) {
				restaurantsEl.dom.innerHTML = "";
				
				permalinkImgEl.dom.innerHTML = "<span onClick='main.addToBookmarks(\"http://" + location.host + location.pathname + "?sec=3&pag=" + currentPage + "\", \"" + 
												title + " (pag. " + currentPage + ")\");'><img id='bookmarksImg' class='link' src='src/images/headerFavBtn.png' width='40' height='40' " + 
												"alt='" + bookmarkTitle + "' title='" + bookmarkTitle + "' /></span>";
				sendToFriendImgEl.dom.innerHTML = "<span onClick='main.forms.loadSendToFriendWindow(\"" + title + " (pag. " + currentPage + 
												")\", \"http://" + location.host + location.pathname + "?sec=3&pag=" + currentPage + "\");'>" + 
												"<img class='link' src='src/images/headerEmailBtn.png' width='40' height='40' " + 
												"alt='" + sendToFriendTitle + "' title='" + sendToFriendTitle + "' /></span>";

				for (var i = 0; i < result.data.length; i++) {
					var desc = result.data.items[i].data['description'];
					if (desc.length > 120) desc = desc.substring(0, 120) + ' ...';
					restaurantsEl.dom.innerHTML  += "<table border='0' cellpadding='5' cellspacing='0' width='100%'>" +
						"<tr><td valign='top' width='100'><div class='imageOuterBorder'><a href='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + 
						"' class='highslide' onclick='return hs.expand(this)'> " +
						"<img src='" + application.IMAGE_ROOT_FOLDER + result.data.items[i].data['thumbnail'] + "' width='100' /></a>" +
						"<div class='highslide-caption'>" + result.data.items[i].data['address'] + "</div></div></td><td valign='top'>" + 
						"<div class='galleryHeader link' onclick='main.details.loadRestaurant(" + result.data.items[i].data['id'] +
						");'>" + result.data.items[i].data['name'] + "</div><hr color='#EEEEEE'/>" + 
						"<div class='galleryText link' onclick='main.details.loadRestaurant(" + result.data.items[i].data['id'] +
						");'><p align='justify'>" + desc + "</p></div></td></tr></table>";
				}
				//Load Paging Header and Footer
				var pagingHeaderEl = Ext.get('pagingHeaderDiv');
				var pagingFooterEl = Ext.get('pagingFooterDiv');
				
				var pages = Math.ceil(result.totalLength / application.PAGE_SIZE);
				
				for (var j = 1; j <= pages; j++) {
					
					//First element of the footer
					if (j == 1) {
						pagingHeaderEl.dom.innerHTML = "<span class='menuDivHighlight link' onClick='main.menu.loadRestaurants(0, 1);'>«</span>";
						pagingFooterEl.dom.innerHTML = "<span class='menuDivHighlight link' onClick='main.menu.loadRestaurants(0, 1);'>«</span>";
					}
					
					//Any other item in the middle
					if (j <= pages) {
						var pageStart = (application.PAGE_SIZE * (j-1));
						if (j == currentPage) {
							pagingHeaderEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadRestaurants(" + pageStart + ", " + j + ");'>(" + j + ")</span>";
							pagingFooterEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadRestaurants(" + pageStart + ", " + j + ");'>(" + j + ")</span>";
						}
						else {
							pagingHeaderEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadRestaurants(" + pageStart + ", " + j + ");'>" + j + "</span>";
							pagingFooterEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadRestaurants(" + pageStart + ", " + j + ");'>" + j + "</span>";
						}
					}
					
					//Last element of the footer
					if (j == pages) {
						var lastStart = Math.floor(result.totalLength / application.PAGE_SIZE) * application.PAGE_SIZE;
						pagingHeaderEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadRestaurants(" + lastStart + ", " + j + ");'>»</span>";
						pagingFooterEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.menu.loadRestaurants(" + lastStart + ", " + j + ");'>»</span>";
					}
				}
			} else {
				switch (main.activeLang) {
					case application.LANG_PT: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_RESTAURANTS + "</font>"; break;
					case application.LANG_EN: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_NO_RESTAURANTS + "</font>"; break;
					case application.LANG_ES: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_NO_RESTAURANTS + "</font>"; break;
					case application.LANG_FR: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_NO_RESTAURANTS + "</font>"; break;
					case application.LANG_DE: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_NO_RESTAURANTS + "</font>"; break;
					default: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_RESTAURANTS + "</font>"; break;
				}
				permalinkTitleEl.dom.innerHTML = "";
				permalinkInputEl.dom.innerHTML = "";
				permalinkImgEl.dom.innerHTML = "";
				sendToFriendImgEl.dom.innerHTML = "";
			}
		});
			
		switch (main.activeLang) {
			case application.LANG_PT: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_RESTAURANTS + "</font>"; break;
			case application.LANG_EN: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_LOADING_RESTAURANTS + "</font>"; break;
			case application.LANG_ES: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_LOADING_RESTAURANTS + "</font>"; break;
			case application.LANG_FR: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_LOADING_RESTAURANTS + "</font>"; break;
			case application.LANG_DE: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_LOADING_RESTAURANTS + "</font>"; break;
			default: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_RESTAURANTS + "</font>"; break;
		}
	}

	/**
	 * Method responsible for loading the contents div element with the "How To Advertise" information.
	 */ 
	this.menu.howToAdvertise = function() {
		var el = Ext.get('contentsDiv');
		switch (main.activeLang) {
			case application.LANG_PT: el.dom.innerHTML = main.forms.getContactForm(application.PT_CONTACT_FORM_ADVERTISE, application.PT_CONTACT_FORM_ADVERTISE_MESSAGE); break;
			case application.LANG_EN: el.dom.innerHTML = main.forms.getContactForm(application.EN_CONTACT_FORM_ADVERTISE, application.EN_CONTACT_FORM_ADVERTISE_MESSAGE); break;
			case application.LANG_ES: el.dom.innerHTML = main.forms.getContactForm(application.ES_CONTACT_FORM_ADVERTISE, application.ES_CONTACT_FORM_ADVERTISE_MESSAGE); break;
			case application.LANG_FR: el.dom.innerHTML = main.forms.getContactForm(application.FR_CONTACT_FORM_ADVERTISE, application.FR_CONTACT_FORM_ADVERTISE_MESSAGE); break;
			case application.LANG_DE: el.dom.innerHTML = main.forms.getContactForm(application.DE_CONTACT_FORM_ADVERTISE, application.DE_CONTACT_FORM_ADVERTISE_MESSAGE); break;
		}
		main.highlightMainMenuItem(application.MAX_MENU_ITEMS + 1);
	}

	
	
	//*******************************************************
	//** Details object
	//*******************************************************

	/**
	 * Method responsible for loading the contents div.
	 * @param {integer} position The menu item position.
	 */
	this.details.loadDetails = function(position) {
		var el = Ext.get('contentsDiv');
		el.dom.innerHTML  = main.menuItems[position].html;
	}
 
	/**
	 * Method responsible for loading the contents div.
	 * @param {integer} position The footer item position.
	 * @param {integer} menuPosition The menuitem position.
	 */
	this.details.loadFooterDetails = function(position, menuPosition) {
		var el = Ext.get('contentsDiv');

		//Synchronize the main menu item highlight with the item clicked in the footer
		if (menuPosition > 0)
			main.highlightMainMenuItem(menuPosition - 1);
		else
			main.highlightMainMenuItem(-1);

		el.dom.innerHTML  = main.footerItems[position].html;
	}

	/**
	 * Method responsible for loading a gallery into the contents div.
	 * @param {integer} galleryId The gallery id.
	 * @param {string} galleryName The gallery name.
	 * @param {integer} start The value indicating in which record to start.
	 * @param {integer} currentPage The value idicating how much records to retrieve.
	 */
	this.details.loadGallery = function(galleryId, start, currentPage) {

		var bookmark = application.PT_GALLERY_ADD_TO_BOOKMARKS;
		switch (main.activeLang) {
			case application.LANG_EN: bookmark = application.EN_GALLERY_ADD_TO_BOOKMARKS; break;
			case application.LANG_ES: bookmark = application.ES_GALLERY_ADD_TO_BOOKMARKS; break;
			case application.LANG_FR: bookmark = application.FR_GALLERY_ADD_TO_BOOKMARKS; break;
			case application.LANG_DE: bookmark = application.DE_GALLERY_ADD_TO_BOOKMARKS; break;
		}
		
		var containerEl = Ext.get('contentsDiv');
		containerEl.dom.innerHTML = "<table border='0' cellpadding='0' cellspacing='0' width='100%' height='390'>" +
									"	<tr><td colspan='3' valign='top' align='left' height='25'>" + 
									"		<div id='headerDiv' class='titleText'/>" + 
									"	</td>" + 
									"	<tr><td colspan='3' valign='top' align='right' height='25'>" + 
									"		<div id='pagingHeaderDiv' class='titleText'/>" + 
									"	</td>" + 
									"	<tr><td colspan='3' valign='top'>" + 
									"		<div id='galleryDiv' />" + 
									"	</td>" + 
									"	<tr><td colspan='3' valign='top' align='right' height='25'>" + 
									"		<div id='pagingFooterDiv' class='titleText'/>" + 
									"	</td>" + 
									"	<tr><td colspan='3' valign='top' align='left' height='25'>" + 
									"		<br/><span id='permalinkTitle' class='galleryHeader'><b>" + bookmark + "</b></span>" + 
									"	</td></tr>" + 
									"	<tr><td valign='middle' align='center'>" + 
									"		<div id='permalinkInput'><input type='text' class='permalinkTextfield' readonly='true' value='http://" + 
									location.host + location.pathname + "?sec=1&pag=" + currentPage + "&id=" + galleryId + "' onclick='this.focus(); this.select();'/></div></td>" + 
									"	<td align='right' height='40'><div id='permalinkImg' /></td>" + 
									"	<td align='right' height='40'><div id='sendToFriendImg' /></td></tr>" + 
									"</table><br/>";
		
		//Load Galleries
		var headerEl = Ext.get('headerDiv');
		var permalinkTitleEl = Ext.get('permalinkTitle');
		var permalinkInputEl = Ext.get('permalinkInput');
		var permalinkImgEl = Ext.get('permalinkImg');
		var sendToFriendImgEl = Ext.get('sendToFriendImg');
		var galleryEl = Ext.get('galleryDiv');
		main.configuration.hswg();

		var fieldsObj = new Object();
		fieldsObj['table'] = 'images'; 
		fieldsObj['queryname'] = 'images';
		fieldsObj['language'] = main.activeLang;
		fieldsObj['parent'] = galleryId;
		fieldsObj['start'] = start; 
		fieldsObj['limit'] = application.GALLERY_PAGE_SIZE;

		var result = utils.getJsonStore({
			url: 'src/servlets/queryServlet.php',
			root: 'images',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'galleryName', 	type: 'string', mapping: 'galleryName'},
				{name: 'name', 			type: 'string', mapping: 'name'},
				{name: 'description', 	type: 'string', mapping: 'description'}
			]
		});

		result.on('load', function() {
			if (result.data.length > 0) {
			
				var bookmarkTitle = application.PT_GALLERY_ADD_TO_BOOKMARKS;
				var sendToFriendTitle = application.PT_SENDTOFRIEND_WINDOW_TITLE;
				var headerHTML = "<span class='galleryHeader'><b>" + application.PT_PHOTOS;
				switch (main.activeLang) {
					case application.LANG_EN:
						headerHTML = "<span class='galleryHeader'><b>" + application.EN_PHOTOS; 
						bookmarkTitle = application.EN_GALLERY_ADD_TO_BOOKMARKS;
						sendToFriendTitle = application.EN_SENDTOFRIEND_WINDOW_TITLE;
					break;
					case application.LANG_ES:
						headerHTML = "<span class='galleryHeader'><b>" + application.ES_PHOTOS;
						bookmarkTitle = application.ES_GALLERY_ADD_TO_BOOKMARKS;
						sendToFriendTitle = application.ES_SENDTOFRIEND_WINDOW_TITLE;
					break;
					case application.LANG_FR:
						headerHTML = "<span class='galleryHeader'><b>" + application.FR_PHOTOS;
						bookmarkTitle = application.FR_GALLERY_ADD_TO_BOOKMARKS;
						sendToFriendTitle = application.FR_SENDTOFRIEND_WINDOW_TITLE;
					break;
					case application.LANG_DE:
						headerHTML = "<span class='galleryHeader'><b>" + application.DE_PHOTOS;
						bookmarkTitle = application.DE_GALLERY_ADD_TO_BOOKMARKS;
						sendToFriendTitle = application.DE_SENDTOFRIEND_WINDOW_TITLE;
					break;
				}
				headerHTML += "&nbsp;'" + result.data.items[0].data['galleryName'] + "'</b></span><br /><br /> ";
				headerEl.dom.innerHTML = headerHTML;
				
				permalinkImgEl.dom.innerHTML = "<span onClick='main.addToBookmarks(\"http://" + location.host + location.pathname + "?sec=1&pag=" + currentPage + "&id=" + galleryId + "\", \"" + 
					result.data.items[0].data['galleryName'] + " (pag. " + currentPage + ")\");'><img id='bookmarksImg' class='link' src='src/images/headerFavBtn.png' width='40' height='40' " + 
												"alt='" + bookmarkTitle + "' title='" + bookmarkTitle + "' /></span>";
				sendToFriendImgEl.dom.innerHTML = "<span onClick='main.forms.loadSendToFriendWindow(\"" + result.data.items[0].data['galleryName'] + " (pag. " + currentPage + 
												")\", \"http://" + location.host + location.pathname + "?sec=1&pag=" + currentPage + "&id=" + galleryId + "\");'>" + 
												"<img class='link' src='src/images/headerEmailBtn.png' width='40' height='40' " + 
												"alt='" + sendToFriendTitle + "' title='" + sendToFriendTitle + "' /></span>";
				var tableWidth = 390;
				if (result.data.length == 1) tableWidth = 130;
				if (result.data.length == 2) tableWidth = 260;						
				var HTML = "<div class='highslide-gallery'><table border='0' cellpadding='5' cellspacing='0' width='" + tableWidth + "'>";
				for (var i = 0; i < result.data.length; i++) {
					var mod = i % 3;
					if (mod == 0) HTML += "<tr><td align='center' valign='top' width='100'><div class='imageOuterBorder'><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='120' /></a>" + 
						"<div class='highslide-caption'>" + result.data.items[i].data['description'] + "</div></div></td>";
						
					if (mod == 1) HTML += "<td align='center' valign='top' width='100'><div class='imageOuterBorder'><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='120' /></a>" +
						"<div class='highslide-caption'>" + result.data.items[i].data['description'] + "</div></div></td>";
						
					if (mod == 2) HTML  += "<td align='center' valign='top' width='100'><div class='imageOuterBorder'><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='120' /></a>" + 
						"<div class='highslide-caption'>" + result.data.items[i].data['description'] + "</div></div></td></tr>";
						
				}
				HTML += "</table></div>";			
				galleryEl.dom.innerHTML = HTML;
				
				//Load Paging Header and Footer
				var pagingHeaderEl = Ext.get('pagingHeaderDiv');
				var pagingFooterEl = Ext.get('pagingFooterDiv');
				
				var pages = Math.ceil(result.totalLength / application.GALLERY_PAGE_SIZE);
				
				for (var j = 1; j <= pages; j++) {
					
					//First element of the footer
					if (j == 1) {
						pagingHeaderEl.dom.innerHTML = "<span class='menuDivHighlight link' onClick='main.details.loadGallery(" + galleryId + ", 0, 1);'>«</span>";
						pagingFooterEl.dom.innerHTML = "<span class='menuDivHighlight link' onClick='main.details.loadGallery(" + galleryId + ", 0, 1);'>«</span>";
					}
					
					//Any other item in the middle
					if (j <= pages) {
						var pageStart = (application.GALLERY_PAGE_SIZE * (j-1));
						if (j == currentPage) {
							pagingHeaderEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.details.loadGallery(" + galleryId + ", " + pageStart + ", " + j + ");'>(" + j + ")</span>";
							pagingFooterEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.details.loadGallery(" + galleryId + ", " + pageStart + ", " + j + ");'>(" + j + ")</span>";
						}
						else {
							pagingHeaderEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.details.loadGallery(" + galleryId + ", " + pageStart + ", " + j + ");'>" + j + "</span>";
							pagingFooterEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.details.loadGallery(" + galleryId + ", " + pageStart + ", " + j + ");'>" + j + "</span>";
						}
					}
					
					//Last element of the footer
					if (j == pages) {
						var lastStart = Math.floor(result.totalLength / application.GALLERY_PAGE_SIZE) * application.GALLERY_PAGE_SIZE;
						pagingHeaderEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.details.loadGallery(" + galleryId + ", " + lastStart + ", " + j + ");'>»</span>";
						pagingFooterEl.dom.innerHTML += " <span class='menuDivHighlight link' onClick='main.details.loadGallery(" + galleryId + ", " + lastStart + ", " + j + ");'>»</span>";
					}
				}
			} else {
				switch (main.activeLang) {
					case application.LANG_PT: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_PHOTOS + "</font>"; break;
					case application.LANG_EN: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_NO_PHOTOS + "</font>"; break;
					case application.LANG_ES: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_NO_PHOTOS + "</font>"; break;
					case application.LANG_FR: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_NO_PHOTOS + "</font>"; break;
					case application.LANG_DE: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_NO_PHOTOS + "</font>"; break;
					default: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_PHOTOS + "</font>"; break;
				}
				permalinkTitleEl.dom.innerHTML = "";
				permalinkInputEl.dom.innerHTML = "";
				permalinkImgEl.dom.innerHTML = "";
				sendToFriendImgEl.dom.innerHTML = "";
			}
		});
			
		switch (main.activeLang) {
			case application.LANG_PT: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_PHOTOS + "</font>"; break;
			case application.LANG_EN: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_LOADING_PHOTOS + "</font>"; break;
			case application.LANG_ES: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_LOADING_PHOTOS + "</font>"; break;
			case application.LANG_FR: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_LOADING_PHOTOS + "</font>"; break;
			case application.LANG_DE: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_LOADING_PHOTOS + "</font>"; break;
			default: headerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_PHOTOS + "</font>"; break;
		}
	}

	/**
	 * Method responsible for loading a hostage into the contents div.
	 * @param {integer} hostageId The hostage id.
	 */
	this.details.loadHostage = function(hostageId) {

		var bookmark = application.PT_HOSTAGE_ADD_TO_BOOKMARKS;
		var address = application.PT_HOSTAGE_ADDRESS;
		var phone = application.PT_HOSTAGE_PHONE;
		var email = application.PT_HOSTAGE_EMAIL;
		var fax = application.PT_HOSTAGE_FAX;
		var description = application.PT_HOSTAGE_DESCRIPTION;
		var comments = application.PT_HOSTAGE_COMMENTS;
		var sendToFriendTitle = application.PT_SENDTOFRIEND_WINDOW_TITLE;
		switch (main.activeLang) {
			case application.LANG_EN: 
				bookmark = application.EN_HOSTAGE_ADD_TO_BOOKMARKS;
				address = application.EN_HOSTAGE_ADDRESS;
				phone = application.EN_HOSTAGE_PHONE;
				email = application.EN_HOSTAGE_EMAIL;
				fax = application.EN_HOSTAGE_FAX;
				description = application.EN_HOSTAGE_DESCRIPTION;
				comments = application.EN_HOSTAGE_COMMENTS;
				sendToFriendTitle = application.EN_SENDTOFRIEND_WINDOW_TITLE;
			break;
			case application.LANG_ES:
				bookmark = application.ES_HOSTAGE_ADD_TO_BOOKMARKS;
				address = application.ES_HOSTAGE_ADDRESS;
				phone = application.ES_HOSTAGE_PHONE;
				email = application.ES_HOSTAGE_EMAIL;
				fax = application.ES_HOSTAGE_FAX;
				description = application.ES_HOSTAGE_DESCRIPTION;
				comments = application.ES_HOSTAGE_COMMENTS;
				sendToFriendTitle = application.ES_SENDTOFRIEND_WINDOW_TITLE;
			break;
			case application.LANG_FR:
				bookmark = application.FR_HOSTAGE_ADD_TO_BOOKMARKS;
				address = application.FR_HOSTAGE_ADDRESS;
				phone = application.FR_HOSTAGE_PHONE;
				email = application.FR_HOSTAGE_EMAIL;
				fax = application.FR_HOSTAGE_FAX;
				description = application.FR_HOSTAGE_DESCRIPTION;
				comments = application.FR_HOSTAGE_COMMENTS;
				sendToFriendTitle = application.FR_SENDTOFRIEND_WINDOW_TITLE;
			break;
			case application.LANG_DE:
				bookmark = application.DE_HOSTAGE_ADD_TO_BOOKMARKS;
				address = application.DE_HOSTAGE_ADDRESS;
				phone = application.DE_HOSTAGE_PHONE;
				email = application.DE_HOSTAGE_EMAIL;
				fax = application.DE_HOSTAGE_FAX;
				description = application.DE_HOSTAGE_DESCRIPTION;
				comments = application.DE_HOSTAGE_COMMENTS;
				sendToFriendTitle = application.DE_SENDTOFRIEND_WINDOW_TITLE;
			break;
		}
		
		var containerEl = Ext.get('contentsDiv');
		main.configuration.hswg();

		var fieldsObj = new Object();
		fieldsObj['table'] = 'thostage';
		fieldsObj['fields[0][field]'] = 'id';
		fieldsObj['fields[0][type]'] = 'int';
		fieldsObj['filter'] = hostageId; 
		fieldsObj['start'] = 0; 
		fieldsObj['limit'] = 1;
		fieldsObj['deletedField'] = 'estado'; 

		var result = utils.getJsonStore({
			url: 'src/servlets/genericServlet.php',
			root: 'thostage',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'id', 			type: 'int',	mapping:'id'},
				{name: 'name', 			type: 'string',	mapping:'name' + main.activeLang},
				{name: 'thumbnail', 	type: 'string',	mapping:'thumbnail'},
				{name: 'address', 		type: 'string',	mapping:'address'}, 
				{name: 'phone', 		type: 'string',	mapping:'phone'}, 
				{name: 'fax', 			type: 'string',	mapping:'fax'}, 
				{name: 'email', 		type: 'string',	mapping:'email'}, 
				{name: 'description', 	type: 'string',	mapping:'description' + main.activeLang}, 
				{name: 'comments', 		type: 'string',	mapping:'comments' + main.activeLang}
			]
		});
		
		result.on('load', function() {
			if (result.data.length > 0) {
				containerEl.dom.innerHTML = "<table class='galleryHeader' border='0' cellpadding='0' cellspacing='5' width='390'><tr><td>" + result.data.items[0].data['name'] + "</td></tr></table>" +
											"<table class='galleryText' border='0' cellpadding='0' cellspacing='10' width='390'>" + 
											"	<tr>" + 
											"		<td colspan='2' align='center' valign='top'><div class='imageOuterBorder'><img src='" + 
											application.IMAGE_ROOT_FOLDER + result.data.items[0].data['thumbnail'] + "' width='390' /></div>" + 
											"		</td>" + 
											"	</tr>" + 
											"	<tr>" + 
											"		<td width='50%' valign='top'><span class='galleryHeader'><b>" + address + ":</b></span> " + result.data.items[0].data['address'] +
											"		</td>" + 
											"		<td width='50%' valign='top'><span class='galleryHeader'><b>" + phone + ":</b></span> " + result.data.items[0].data['phone'] + 
											"		</td>" + 
											"	</tr>" + 
											"	<tr>" + 
											"		<td width='50%' valign='top'><span class='galleryHeader'><b>" + email + ":</b></span> " + result.data.items[0].data['email'] +
											"		</td>" + 
											"		<td width='50%' valign='top'><span class='galleryHeader'><b>" + fax + ":</b></span> " + result.data.items[0].data['fax'] +  
											"		</td>" + 
											"	</tr>" + 
											"	<tr>" + 
											"		<td colspan='2' valign='top'><span class='galleryHeader'><b>" + description + ":</b></span> " +
											"		</td>" + 
											"	</tr>" + 
											"	<tr>" + 
											"		<td colspan='2' valign='top'>" + result.data.items[0].data['description'] + "<br/>" +
											"		</td>" + 
											"	</tr>" + 
											"	<tr>" + 
											"		<td colspan='2' valign='top'><div id='hostageImages' /></td>" + 
											"	</tr>" + 
											"	<tr>" + 
											"		<td colspan='2' valign='top'><span class='galleryHeader'><b>" + comments + ":</b></span> " +
											"		</td>" + 
											"	</tr>" + 
											"	<tr>" + 
											"		<td colspan='2' valign='top'>" + result.data.items[0].data['comments'] + 
											"		</td>" + 
											"	</tr>" + 
											"</table>" + 
											"<table border='0' cellpadding='0' cellspacing='10' width='390'>" + 
											"	<tr><td colspan='3' valign='top' align='left' height='25'>" + 
											"		<br/><span class='galleryHeader'><b>" + bookmark + "</b></span>" + 
											"	</td></tr>" + 
											"	<tr><td valign='middle' align='center'>" + 
											"		<input type='text' class='permalinkSmallTextfield' readonly='true' value='http://" + 
											location.host + location.pathname + "?sec=2&pag=1&id=" + hostageId + "' onclick='this.focus(); this.select();'/></td>" + 
											
											"	<td align='right' height='40'><span onClick='main.addToBookmarks(\"http://" + 
											location.host + location.pathname + "?sec=2&pag=1&id=" + hostageId + "\", \"" + 
											result.data.items[0].data['name'] + "\");'><img id='bookmarksImg' class='link' src='src/images/headerFavBtn.png' width='40' height='40' " +
											"alt='" + bookmark + "' title='" + bookmark + "' /></span></td>" + 
											
											"	<td align='right' height='40'><span onClick='main.forms.loadSendToFriendWindow(\"" + result.data.items[0].data['name'] + "\", \"http://" + 
											location.host + location.pathname + "?sec=2&pag=1&id=" + hostageId + "\");'>" + 
											"<img id='bookmarksImg' class='link' src='src/images/headerEmailBtn.png' width='40' height='40' " + 
											"alt='" + sendToFriendTitle + "' title='" + sendToFriendTitle + "' /></span></td></tr>" + 
											"</table><br/>";
									
				//** Carregar as fotos do alojamento - Begin
				var fieldsObj = {};
				fieldsObj['table'] = 'thostageimage'; 
				fieldsObj['start'] = 0; 
				fieldsObj['limit'] = application.MAX_RECORDS; 
				fieldsObj['fields[0][field]'] = 'idHostage'; 
				fieldsObj['fields[0][type]'] = 'int'; 
				fieldsObj['filter'] = hostageId;
				fieldsObj['deletedField'] = 'estado'; 
				
				var imageResult = utils.getJsonStore({
					url: 'src/servlets/genericServlet.php',
					root: 'thostageimage',
					baseParams: fieldsObj,
					totalProperty: 'totalCount',
					fields: [
						{name: 'id', 			type: 'int', 	mapping:'id'},
						{name: 'name', 			type: 'string',	mapping:'name'},
						{name: 'description', 	type: 'string', mapping:'description' + main.activeLang}
					]
				});

				imageResult.on('load', function() {
					var containerEl = Ext.get('hostageImages');
					if (imageResult.data.length > 0) {
						var HTML = "<span class='galleryHeader'><b>" + application.PT_HOSTAGEPHOTOS + "</b></span>"; 
						switch (main.activeLang) {
							case application.LANG_EN: HTML = "<span class='galleryHeader'><b>" + application.EN_HOSTAGEPHOTOS + "</b></span>"; break;
							case application.LANG_ES: HTML = "<span class='galleryHeader'><b>" + application.ES_HOSTAGEPHOTOS + "</b></span>"; break;
							case application.LANG_FR: HTML = "<span class='galleryHeader'><b>" + application.FR_HOSTAGEPHOTOS + "</b></span>"; break;
							case application.LANG_DE: HTML = "<span class='galleryHeader'><b>" + application.DE_HOSTAGEPHOTOS + "</b></span>"; break;
						}
						var tableWidth = 390;
						if (imageResult.data.length == 1) tableWidth = 130;
						if (imageResult.data.length == 2) tableWidth = 260;						
						HTML += "<table border='0' cellpadding='5' cellspacing='0' width='" + tableWidth + "'><div class='highslide-gallery'>";
						for (var i = 0; i < imageResult.data.length; i++) {
							var mod = i % 3;
							if (mod == 0) HTML += "<tr><td align='center' valign='top' width='95'><div class='imageOuterBorder'><a href='" + application.IMAGE_ROOT_FOLDER + imageResult.data.items[i].data['name'] + 
								"' class='highslide' onclick='return hs.expand(this)'> " +
								"<img src='" + application.IMAGE_ROOT_FOLDER + imageResult.data.items[i].data['name'] + "' width='109' /></a>" + 
								"<div class='highslide-caption'>" + imageResult.data.items[i].data['description'] + "</div></div></td>";
								
							if (mod == 1) HTML += "<td align='center' valign='top' width='95'><div class='imageOuterBorder'><a href='" + application.IMAGE_ROOT_FOLDER + imageResult.data.items[i].data['name'] + 
								"' class='highslide' onclick='return hs.expand(this)'> " +
								"<img src='" + application.IMAGE_ROOT_FOLDER + imageResult.data.items[i].data['name'] + "' width='109' /></a>" +
								"<div class='highslide-caption'>" + imageResult.data.items[i].data['description'] + "</div></div></td>";
								
							if (mod == 2) HTML  += "<td align='center' valign='top' width='95'><div class='imageOuterBorder'><a href='" + application.IMAGE_ROOT_FOLDER + imageResult.data.items[i].data['name'] + 
								"' class='highslide' onclick='return hs.expand(this)'> " +
								"<img src='" + application.IMAGE_ROOT_FOLDER + imageResult.data.items[i].data['name'] + "' width='109' /></a>" + 
								"<div class='highslide-caption'>" + imageResult.data.items[i].data['description'] + "</div></div></td></tr>";
								
						}
						HTML += "</div></table>";			
						containerEl.dom.innerHTML = HTML;
					} else {
						switch (main.activeLang) {
							case application.LANG_PT: containerEl.dom.innerHTML = "<span class='galleryHeader'><b>" + application.PT_HOSTAGEPHOTOS + "</b></span><br/><br/><font class='galleryText'>" + application.PT_NO_HOSTAGEPHOTOS + "</font>"; break;
							case application.LANG_EN: containerEl.dom.innerHTML = "<span class='galleryHeader'><b>" + application.EN_HOSTAGEPHOTOS + "</b></span><br/><br/><font class='galleryText'>" + application.EN_NO_HOSTAGEPHOTOS + "</font>"; break;
							case application.LANG_ES: containerEl.dom.innerHTML = "<span class='galleryHeader'><b>" + application.ES_HOSTAGEPHOTOS + "</b></span><br/><br/><font class='galleryText'>" + application.ES_NO_HOSTAGEPHOTOS + "</font>"; break;
							case application.LANG_FR: containerEl.dom.innerHTML = "<span class='galleryHeader'><b>" + application.FR_HOSTAGEPHOTOS + "</b></span><br/><br/><font class='galleryText'>" + application.FR_NO_HOSTAGEPHOTOS + "</font>"; break;
							case application.LANG_DE: containerEl.dom.innerHTML = "<span class='galleryHeader'><b>" + application.DE_HOSTAGEPHOTOS + "</b></span><br/><br/><font class='galleryText'>" + application.FR_NO_HOSTAGEPHOTOS + "</font>"; break;
							default: containerEl.dom.innerHTML = "<span class='galleryHeader'><b>" + application.PT_HOSTAGEPHOTOS + "</b></span><br/><br/><font class='galleryText'>" + application.PT_NO_HOSTAGEPHOTOS + "</font>"; break;
						}
					}
				});
				//** Carregar as fotos do alojamento - End
				
			} else {
				switch (main.activeLang) {
					case application.LANG_PT: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_HOSTAGE + "</font>"; break;
					case application.LANG_EN: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_NO_HOSTAGE + "</font>"; break;
					case application.LANG_ES: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_NO_HOSTAGE + "</font>"; break;
					case application.LANG_FR: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_NO_HOSTAGE + "</font>"; break;
					case application.LANG_DE: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_NO_HOSTAGE + "</font>"; break;
					default: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_HOSTAGE + "</font>"; break;
				}
			}
		});
		
		switch (main.activeLang) {
			case application.LANG_PT: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_HOSTAGES + "</font>"; break;
			case application.LANG_EN: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_LOADING_HOSTAGES + "</font>"; break;
			case application.LANG_ES: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_LOADING_HOSTAGES + "</font>"; break;
			case application.LANG_FR: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_LOADING_HOSTAGES + "</font>"; break;
			case application.LANG_DE: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_LOADING_HOSTAGES + "</font>"; break;
			default: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_HOSTAGES + "</font>"; break;
		}
	}

	/**
	 * Method responsible for loading a restaurant into the contents div.
	 * @param {integer} restaurantId The restaurant id.
	 */
	this.details.loadRestaurant = function(restaurantId) {

		var bookmark = application.PT_RESTAURANTS_ADD_TO_BOOKMARKS;
		var address = application.PT_RESTAURANTS_ADDRESS;
		var phone = application.PT_RESTAURANTS_PHONE;
		var email = application.PT_RESTAURANTS_EMAIL;
		var fax = application.PT_RESTAURANTS_FAX;
		var description = application.PT_RESTAURANTS_DESCRIPTION;
		var comments = application.PT_RESTAURANTS_COMMENTS;
		var sendToFriendTitle = application.PT_SENDTOFRIEND_WINDOW_TITLE;
		switch (main.activeLang) {
			case application.LANG_EN: 
				bookmark = application.EN_RESTAURANTS_ADD_TO_BOOKMARKS;
				address = application.EN_RESTAURANTS_ADDRESS;
				phone = application.EN_RESTAURANTS_PHONE;
				email = application.EN_RESTAURANTS_EMAIL;
				fax = application.EN_RESTAURANTS_FAX;
				description = application.EN_RESTAURANTS_DESCRIPTION;
				comments = application.EN_RESTAURANTS_COMMENTS;
				sendToFriendTitle = application.EN_SENDTOFRIEND_WINDOW_TITLE;
			break;
			case application.LANG_ES:
				bookmark = application.ES_RESTAURANTS_ADD_TO_BOOKMARKS;
				address = application.ES_RESTAURANTS_ADDRESS;
				phone = application.ES_RESTAURANTS_PHONE;
				email = application.ES_RESTAURANTS_EMAIL;
				fax = application.ES_RESTAURANTS_FAX;
				description = application.ES_RESTAURANTS_DESCRIPTION;
				comments = application.ES_RESTAURANTS_COMMENTS;
				sendToFriendTitle = application.ES_SENDTOFRIEND_WINDOW_TITLE;
			break;
			case application.LANG_FR:
				bookmark = application.FR_RESTAURANTS_ADD_TO_BOOKMARKS;
				address = application.FR_RESTAURANTS_ADDRESS;
				phone = application.FR_RESTAURANTS_PHONE;
				email = application.FR_RESTAURANTS_EMAIL;
				fax = application.FR_RESTAURANTS_FAX;
				description = application.FR_RESTAURANTS_DESCRIPTION;
				comments = application.FR_RESTAURANTS_COMMENTS;
				sendToFriendTitle = application.FR_SENDTOFRIEND_WINDOW_TITLE;
			break;
			case application.LANG_DE:
				bookmark = application.DE_RESTAURANTS_ADD_TO_BOOKMARKS;
				address = application.DE_RESTAURANTS_ADDRESS;
				phone = application.DE_RESTAURANTS_PHONE;
				email = application.DE_RESTAURANTS_EMAIL;
				fax = application.DE_RESTAURANTS_FAX;
				description = application.DE_RESTAURANTS_DESCRIPTION;
				comments = application.DE_RESTAURANTS_COMMENTS;
				sendToFriendTitle = application.DE_SENDTOFRIEND_WINDOW_TITLE;
			break;
		}
		
		var containerEl = Ext.get('contentsDiv');
		main.configuration.hswg();

		var fieldsObj = new Object();
		fieldsObj['table'] = 'trestaurant';
		fieldsObj['fields[0][field]'] = 'id';
		fieldsObj['fields[0][type]'] = 'int';
		fieldsObj['filter'] = restaurantId; 
		fieldsObj['start'] = 0; 
		fieldsObj['limit'] = 1;
		fieldsObj['deletedField'] = 'estado'; 

		var result = utils.getJsonStore({
			url: 'src/servlets/genericServlet.php',
			root: 'trestaurant',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'id', 			type: 'int',	mapping:'id'},
				{name: 'name', 			type: 'string',	mapping:'name' + main.activeLang},
				{name: 'thumbnail', 	type: 'string',	mapping:'thumbnail'},
				{name: 'address', 		type: 'string',	mapping:'address'}, 
				{name: 'phone', 		type: 'string',	mapping:'phone'}, 
				{name: 'fax', 			type: 'string',	mapping:'fax'}, 
				{name: 'email', 		type: 'string',	mapping:'email'}, 
				{name: 'description', 	type: 'string',	mapping:'description' + main.activeLang}, 
				{name: 'comments', 		type: 'string',	mapping:'comments' + main.activeLang}
			]
		});
		
		result.on('load', function() {
			if (result.data.length > 0) {
				containerEl.dom.innerHTML = "<table class='galleryHeader' border='0' cellpadding='0' cellspacing='5' width='390'><tr><td>" + result.data.items[0].data['name'] + "</td></tr></table>" +
											"<table class='galleryText' border='0' cellpadding='0' cellspacing='10' width='390'>" + 
											"	<tr>" + 
											"		<td colspan='2' align='center' valign='top'><div class='imageOuterBorder'><img src='" + 
											application.IMAGE_ROOT_FOLDER + result.data.items[0].data['thumbnail'] + "' width='390' /></div>" + 
											"		</td>" + 
											"	</tr>" + 
											"	<tr>" + 
											"		<td width='50%' valign='top'><span class='galleryHeader'><b>" + address + ":</b></span> " + result.data.items[0].data['address'] +
											"		</td>" + 
											"		<td width='50%' valign='top'><span class='galleryHeader'><b>" + phone + ":</b></span> " + result.data.items[0].data['phone'] + 
											"		</td>" + 
											"	</tr>" + 
											"	<tr>" + 
											"		<td width='50%' valign='top'><span class='galleryHeader'><b>" + email + ":</b></span> " + result.data.items[0].data['email'] +
											"		</td>" + 
											"		<td width='50%' valign='top'><span class='galleryHeader'><b>" + fax + ":</b></span> " + result.data.items[0].data['fax'] +  
											"		</td>" + 
											"	</tr>" + 
											"	<tr>" + 
											"		<td colspan='2' valign='top'><span class='galleryHeader'><b>" + description + ":</b></span> " +
											"		</td>" + 
											"	</tr>" + 
											"	<tr>" + 
											"		<td colspan='2' valign='top'>" + result.data.items[0].data['description'] + "<br/>" +
											"		</td>" + 
											"	</tr>" + 
											"	<tr>" + 
											"		<td colspan='2' valign='top'><div id='restaurantImages' /></td>" + 
											"	</tr>" + 
											"	<tr>" + 
											"		<td colspan='2' valign='top'><span class='galleryHeader'><b>" + comments + ":</b></span> " +
											"		</td>" + 
											"	</tr>" + 
											"	<tr>" + 
											"		<td colspan='2' valign='top'>" + result.data.items[0].data['comments'] + 
											"		</td>" + 
											"	</tr>" + 
											"</table>" + 
											"<table border='0' cellpadding='0' cellspacing='10' width='390'>" + 
											"	<tr><td colspan='2' valign='top' align='left' height='25'>" + 
											"		<br/><span class='galleryHeader'><b>" + bookmark + "</b></span>" + 
											"	</td></tr>" + 
											"	<tr><td valign='middle' align='center'>" + 
											"		<input type='text' class='permalinkSmallTextfield' readonly='true' value='http://" + 
											location.host + location.pathname + "?sec=3&pag=1&id=" + restaurantId + "' onclick='this.focus(); this.select();'/></td>" + 
											
											"	<td align='right' height='40'><span onClick='main.addToBookmarks(\"http://" + 
											location.host + location.pathname + "?sec=3&pag=1&id=" + restaurantId + "\", \"" + 
											result.data.items[0].data['name'] + "\");'><img id='bookmarksImg' class='link' src='src/images/headerFavBtn.png' width='40' height='40' " + 
											"alt='" + bookmark + "' title='" + bookmark + "' /></span></td>" + 
											
											"	<td align='right' height='40'><span onClick='main.forms.loadSendToFriendWindow(\"" + result.data.items[0].data['name'] + "\", \"http://" + 
											location.host + location.pathname + "?sec=3&pag=1&id=" + restaurantId + "\");'>" + 
											"<img id='bookmarksImg' class='link' src='src/images/headerEmailBtn.png' width='40' height='40' " + 
											"alt='" + sendToFriendTitle + "' title='" + sendToFriendTitle + "' /></span></td></tr>" + 
											"</table><br/>";

				//** Carregar as fotos do restaurante - Begin
				var fieldsObj = {};
				fieldsObj['table'] = 'trestaurantimage'; 
				fieldsObj['start'] = 0; 
				fieldsObj['limit'] = application.MAX_RECORDS; 
				fieldsObj['fields[0][field]'] = 'idRestaurant'; 
				fieldsObj['fields[0][type]'] = 'int'; 
				fieldsObj['filter'] = restaurantId;
				fieldsObj['deletedField'] = 'estado'; 
				
				var imageResult = utils.getJsonStore({
					url: 'src/servlets/genericServlet.php',
					root: 'trestaurantimage',
					baseParams: fieldsObj,
					totalProperty: 'totalCount',
					fields: [
						{name: 'id', 			type: 'int', 	mapping:'id'},
						{name: 'name', 			type: 'string',	mapping:'name'},
						{name: 'description', 	type: 'string', mapping:'description' + main.activeLang}
					]
				});

				imageResult.on('load', function() {
					var containerEl = Ext.get('restaurantImages');
					if (imageResult.data.length > 0) {
						var HTML = "<span class='galleryHeader'><b>" + application.PT_RESTAURANTPHOTOS + "</b></span>"; 
						switch (main.activeLang) {
							case application.LANG_EN: HTML = "<span class='galleryHeader'><b>" + application.EN_RESTAURANTPHOTOS + "</b></span>"; break;
							case application.LANG_ES: HTML = "<span class='galleryHeader'><b>" + application.ES_RESTAURANTPHOTOS + "</b></span>"; break;
							case application.LANG_FR: HTML = "<span class='galleryHeader'><b>" + application.FR_RESTAURANTPHOTOS + "</b></span>"; break;
							case application.LANG_DE: HTML = "<span class='galleryHeader'><b>" + application.FR_RESTAURANTPHOTOS + "</b></span>"; break;
						}			
						var tableWidth = 390;
						if (imageResult.data.length == 1) tableWidth = 130;
						if (imageResult.data.length == 2) tableWidth = 260;						
						HTML += "<table border='0' cellpadding='5' cellspacing='0' width='" + tableWidth + "'><div class='highslide-gallery'>";
						for (var i = 0; i < imageResult.data.length; i++) {
							var mod = i % 3;
							if (mod == 0) HTML += "<tr><td align='center' valign='top' width='95'><div class='imageOuterBorder'><a href='" + application.IMAGE_ROOT_FOLDER + imageResult.data.items[i].data['name'] + 
								"' class='highslide' onclick='return hs.expand(this)'> " +
								"<img src='" + application.IMAGE_ROOT_FOLDER + imageResult.data.items[i].data['name'] + "' width='109' /></a>" + 
								"<div class='highslide-caption'>" + imageResult.data.items[i].data['description'] + "</div></div></td>";
								
							if (mod == 1) HTML += "<td align='center' valign='top' width='95'><div class='imageOuterBorder'><a href='" + application.IMAGE_ROOT_FOLDER + imageResult.data.items[i].data['name'] + 
								"' class='highslide' onclick='return hs.expand(this)'> " +
								"<img src='" + application.IMAGE_ROOT_FOLDER + imageResult.data.items[i].data['name'] + "' width='109' /></a>" +
								"<div class='highslide-caption'>" + imageResult.data.items[i].data['description'] + "</div></div></td>";
								
							if (mod == 2) HTML  += "<td align='center' valign='top' width='95'><div class='imageOuterBorder'><a href='" + application.IMAGE_ROOT_FOLDER + imageResult.data.items[i].data['name'] + 
								"' class='highslide' onclick='return hs.expand(this)'> " +
								"<img src='" + application.IMAGE_ROOT_FOLDER + imageResult.data.items[i].data['name'] + "' width='109' /></a>" + 
								"<div class='highslide-caption'>" + imageResult.data.items[i].data['description'] + "</div></div></td></tr>";
								
						}
						HTML += "</div></table>";			
						containerEl.dom.innerHTML = HTML;
					} else {
						switch (main.activeLang) {
							case application.LANG_PT: containerEl.dom.innerHTML = "<span class='galleryHeader'><b>" + application.PT_RESTAURANTPHOTOS + "</b></span><br/><br/><font class='galleryText'>" + application.PT_NO_HOSTAGEPHOTOS + "</font>"; break;
							case application.LANG_EN: containerEl.dom.innerHTML = "<span class='galleryHeader'><b>" + application.EN_RESTAURANTPHOTOS + "</b></span><br/><br/><font class='galleryText'>" + application.EN_NO_HOSTAGEPHOTOS + "</font>"; break;
							case application.LANG_ES: containerEl.dom.innerHTML = "<span class='galleryHeader'><b>" + application.ES_RESTAURANTPHOTOS + "</b></span><br/><br/><font class='galleryText'>" + application.ES_NO_HOSTAGEPHOTOS + "</font>"; break;
							case application.LANG_FR: containerEl.dom.innerHTML = "<span class='galleryHeader'><b>" + application.FR_RESTAURANTPHOTOS + "</b></span><br/><br/><font class='galleryText'>" + application.FR_NO_HOSTAGEPHOTOS + "</font>"; break;
							case application.LANG_DE: containerEl.dom.innerHTML = "<span class='galleryHeader'><b>" + application.FR_RESTAURANTPHOTOS + "</b></span><br/><br/><font class='galleryText'>" + application.FR_NO_HOSTAGEPHOTOS + "</font>"; break;
							default: containerEl.dom.innerHTML = "<span class='galleryHeader'><b>" + application.PT_RESTAURANTPHOTOS + "</b></span><br/><br/><font class='galleryText'>" + application.PT_NO_HOSTAGEPHOTOS + "</font>"; break;
						}
					}
				});
				//** Carregar as fotos do restaurante - End
				
			} else {
				switch (main.activeLang) {
					case application.LANG_PT: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_RESTAURANT + "</font>"; break;
					case application.LANG_EN: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_NO_RESTAURANT + "</font>"; break;
					case application.LANG_ES: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_NO_RESTAURANT + "</font>"; break;
					case application.LANG_FR: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_NO_RESTAURANT + "</font>"; break;
					case application.LANG_DE: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_NO_RESTAURANT + "</font>"; break;
					default: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_RESTAURANT + "</font>"; break;
				}
			}
		});
		
		switch (main.activeLang) {
			case application.LANG_PT: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_RESTAURANTS + "</font>"; break;
			case application.LANG_EN: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_LOADING_RESTAURANTS + "</font>"; break;
			case application.LANG_ES: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_LOADING_RESTAURANTS + "</font>"; break;
			case application.LANG_FR: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_LOADING_RESTAURANTS + "</font>"; break;
			case application.LANG_DE: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_LOADING_RESTAURANTS + "</font>"; break;
			default: containerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_RESTAURANTS + "</font>"; break;
		}
	}

	
	
	//*******************************************************
	//** Forms object
	//*******************************************************

	/**
	 * Function responsible for generating the contact form HTML markup.
	 * @param {String} contactTitle The contact title.
	 * @param {String} contactMessage The contact message.
	 */ 
	this.forms.getContactForm = function(contactTitle, contactMessage) {
		
		var formTitle = application.PT_CONTACT_FORM_TITLE;
		var formMandatoryFields = application.PT_CONTACT_FORM_MANDATORY_FIELDS;
		var formName = application.PT_CONTACT_FORM_NAME;
		var formCompany = application.PT_CONTACT_FORM_COMPANY;
		var formWebsite = application.PT_CONTACT_FORM_WEBSITE;
		var formAddress = application.PT_CONTACT_FORM_ADDRESS;
		var formZipcode = application.PT_CONTACT_FORM_ZIPCODE;
		var formArea = application.PT_CONTACT_FORM_AREA;
		var formPhone = application.PT_CONTACT_FORM_PHONE;
		var formFax = application.PT_CONTACT_FORM_FAX;
		var formEmail = application.PT_CONTACT_FORM_EMAIL;
		var formMessage = application.PT_CONTACT_FORM_MESSAGE;
		var formSubmitBtn = application.PT_CONTACT_FORM_SUBMIT_BTN;
		
		switch (main.activeLang) {
			case application.LANG_EN: 
				formTitle = application.EN_CONTACT_FORM_TITLE;
				formMandatoryFields = application.EN_CONTACT_FORM_MANDATORY_FIELDS;
				formName = application.EN_CONTACT_FORM_NAME;
				formCompany = application.EN_CONTACT_FORM_COMPANY;
				formWebsite = application.EN_CONTACT_FORM_WEBSITE;
				formAddress = application.EN_CONTACT_FORM_ADDRESS;
				formZipcode = application.EN_CONTACT_FORM_ZIPCODE;
				formArea = application.EN_CONTACT_FORM_AREA;
				formPhone = application.EN_CONTACT_FORM_PHONE;
				formFax = application.EN_CONTACT_FORM_FAX;
				formEmail = application.EN_CONTACT_FORM_EMAIL;
				formMessage = application.EN_CONTACT_FORM_MESSAGE;
				formSubmitBtn = application.EN_CONTACT_FORM_SUBMIT_BTN;
			break;
			case application.LANG_ES:
				formTitle = application.ES_CONTACT_FORM_TITLE;
				formMandatoryFields = application.ES_CONTACT_FORM_MANDATORY_FIELDS;
				formName = application.ES_CONTACT_FORM_NAME;
				formCompany = application.ES_CONTACT_FORM_COMPANY;
				formWebsite = application.ES_CONTACT_FORM_WEBSITE;
				formAddress = application.ES_CONTACT_FORM_ADDRESS;
				formZipcode = application.ES_CONTACT_FORM_ZIPCODE;
				formArea = application.ES_CONTACT_FORM_AREA;
				formPhone = application.ES_CONTACT_FORM_PHONE;
				formFax = application.ES_CONTACT_FORM_FAX;
				formEmail = application.ES_CONTACT_FORM_EMAIL;
				formMessage = application.ES_CONTACT_FORM_MESSAGE;
				formSubmitBtn = application.ES_CONTACT_FORM_SUBMIT_BTN;
			break;
			case application.LANG_FR:
				formTitle = application.FR_CONTACT_FORM_TITLE;
				formMandatoryFields = application.FR_CONTACT_FORM_MANDATORY_FIELDS;
				formName = application.FR_CONTACT_FORM_NAME;
				formCompany = application.FR_CONTACT_FORM_COMPANY;
				formWebsite = application.FR_CONTACT_FORM_WEBSITE;
				formAddress = application.FR_CONTACT_FORM_ADDRESS;
				formZipcode = application.FR_CONTACT_FORM_ZIPCODE;
				formArea = application.FR_CONTACT_FORM_AREA;
				formPhone = application.FR_CONTACT_FORM_PHONE;
				formFax = application.FR_CONTACT_FORM_FAX;
				formEmail = application.FR_CONTACT_FORM_EMAIL;
				formMessage = application.FR_CONTACT_FORM_MESSAGE;
				formSubmitBtn = application.FR_CONTACT_FORM_SUBMIT_BTN;
			break;
			case application.LANG_DE:
				formTitle = application.DE_CONTACT_FORM_TITLE;
				formMandatoryFields = application.DE_CONTACT_FORM_MANDATORY_FIELDS;
				formName = application.DE_CONTACT_FORM_NAME;
				formCompany = application.DE_CONTACT_FORM_COMPANY;
				formWebsite = application.DE_CONTACT_FORM_WEBSITE;
				formAddress = application.DE_CONTACT_FORM_ADDRESS;
				formZipcode = application.DE_CONTACT_FORM_ZIPCODE;
				formArea = application.DE_CONTACT_FORM_AREA;
				formPhone = application.DE_CONTACT_FORM_PHONE;
				formFax = application.DE_CONTACT_FORM_FAX;
				formEmail = application.DE_CONTACT_FORM_EMAIL;
				formMessage = application.DE_CONTACT_FORM_MESSAGE;
				formSubmitBtn = application.DE_CONTACT_FORM_SUBMIT_BTN;
			break;
		}

		
		return "<span class='contentsTitle'><b>" + contactTitle + "</b></span><br /><br />" +
			"<p align='justify'>" + contactMessage + "</p><br />" +
			"<span class='contentsTitle'><b>" + formTitle + "</b></span><br />" +
			"<form name='contact' action='src/servlets/sendmail.php' method='post' onsubmit='return main.forms.validateContactForm()' target='_blank'>" +
			"	<table border='0' cellpadding='5' cellspacing='0' width='100%' class='contentsText'>" +
			"		<tr><td align='left' valign='top' colspan='2' class='menuDivSimple'>* " + formMandatoryFields + ".<br/></td></tr>" +
			"		<tr><td align='left' valign='top'>* " + formName + ":</td><td align='right' valign='top' width='70%'><input type='text' name='name' class='formTextfield'/></td></tr>" +
			"		<tr><td align='left' valign='top'>" + formCompany + ":</td><td align='right' valign='top' width='70%'><input type='text' name='company' class='formTextfield'/></td></tr>" +
			"		<tr><td align='left' valign='top'>" + formWebsite + ":</td><td align='right' valign='top' width='70%'><input type='text' name='website' class='formTextfield' value='http://' /></td></tr>" +
			"		<tr><td align='left' valign='top'>* " + formAddress + ":</td><td align='right' valign='top' width='70%'><input type='text' name='address' class='formTextfield'/></td></tr>" +
			"		<tr><td align='left' valign='top'>" + formZipcode + ":</td><td align='right' valign='top' width='70%'><input type='text' name='zipcode' class='formTextfield'/></td></tr>" +
			"		<tr><td align='left' valign='top'>" + formArea + ":</td><td align='right' valign='top' width='70%'><input type='text' name='area' class='formTextfield'/></td></tr>" +
			"		<tr><td align='left' valign='top'>* " + formPhone + ":</td><td align='right' valign='top' width='70%'><input type='text' name='phone' class='formTextfield'/></td></tr>" +
			"		<tr><td align='left' valign='top'>" + formFax + ":</td><td align='right' valign='top' width='70%'><input type='text' name='fax' class='formTextfield'/></td></tr>" +
			"		<tr><td align='left' valign='top'>* " + formEmail + ":</td><td align='right' valign='top' width='70%'><input type='text' name='email' class='formTextfield'/></td></tr>" +
			"		<tr><td align='left' valign='top'>" + formMessage + ":</td><td align='right' valign='top' width='70%'><textarea name='message' rows='5' class='formTextfield'></textarea></td></tr>" +
			"		<tr><td align='right' valign='top' colspan='2'><input type='submit' value='" + formSubmitBtn + "' /></td></tr>" +
			"	</table>" +
			"	<input type='hidden' name='sendto' value='" + application.PAGE_EMAIL_ADDRESS + "' />" +
			"	<input type='hidden' name='subject' value='" + application.PAGE_EMAIL_SUBJECT + "'/>" +
			"	<input type='hidden' name='language' value='" + main.activeLang + "'/>" +
			"</form>";
	}

	/**
	 * Function responsible for validating the contact form.
	 */ 
	this.forms.validateContactForm = function() {
		var phone = /^(\+\d)?[0-9]+$/;
		var email = /^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/;

		if (document.forms['contact'].name.value == "") { document.forms['contact'].name.focus(); document.forms['contact'].name.select(); return false; }
		if (document.forms['contact'].address.value == "") { document.forms['contact'].address.focus(); document.forms['contact'].address.select(); return false; }
		if (phone.test(document.forms['contact'].phone.value) == false) { document.forms['contact'].phone.focus(); document.forms['contact'].phone.select(); return false; }
		if (email.test(document.forms['contact'].email.value) == false) { document.forms['contact'].email.focus(); document.forms['contact'].email.select(); return false; }
		var lateFn = setInterval(function(){
			document.forms['contact'].name.value = ""; 
			document.forms['contact'].company.value = ""; 
			document.forms['contact'].website.value = "http://"; 
			document.forms['contact'].address.value = ""; 
			document.forms['contact'].zipcode.value = ""; 
			document.forms['contact'].area.value = ""; 
			document.forms['contact'].phone.value = ""; 
			document.forms['contact'].fax.value = ""; 
			document.forms['contact'].email.value = ""; 
			document.forms['contact'].message.value = ""; 
			clearInterval(lateFn);
		}, 5000);
		return true;
	}

	/**
	 * Method responsible for loading a new window with the "Send to a friend" form.
	 * @param {String} pageName The page title.
	 * @param {String} url The page url.
	 */	
	this.forms.loadSendToFriendWindow = function(pageName, url) {
	
		var pageTitle = application.PT_SENDTOFRIEND_WINDOW_TITLE;
		var closeWin = application.PT_SENDTOFRIEND_WINDOW_CLOSE;
		var from = application.PT_SENDTOFRIEND_FROM;
		var to = application.PT_SENDTOFRIEND_TO;
		var sentBy = application.PT_SENDTOFRIEND_SENT_BY;
		var send = application.PT_CONTACT_FORM_SUBMIT_BTN;
		switch (main.activeLang) {
			case application.LANG_EN:
				pageTitle = application.EN_SENDTOFRIEND_WINDOW_TITLE;
				closeWin = application.EN_SENDTOFRIEND_WINDOW_CLOSE;
				from = application.EN_SENDTOFRIEND_FROM;
				to = application.EN_SENDTOFRIEND_TO;
				sentBy = application.EN_SENDTOFRIEND_SENT_BY;
				send = application.EN_CONTACT_FORM_SUBMIT_BTN;
			break;
			case application.LANG_ES:
				pageTitle = application.ES_SENDTOFRIEND_WINDOW_TITLE;
				closeWin = application.ES_SENDTOFRIEND_WINDOW_CLOSE;
				from = application.ES_SENDTOFRIEND_FROM;
				to = application.ES_SENDTOFRIEND_TO;
				sentBy = application.ES_SENDTOFRIEND_SENT_BY;
				send = application.ES_CONTACT_FORM_SUBMIT_BTN;
			break;
			case application.LANG_FR:
				pageTitle = application.FR_SENDTOFRIEND_WINDOW_TITLE;
				closeWin = application.FR_SENDTOFRIEND_WINDOW_CLOSE;
				from = application.FR_SENDTOFRIEND_FROM;
				to = application.FR_SENDTOFRIEND_TO;
				sentBy = application.FR_SENDTOFRIEND_SENT_BY;
				send = application.FR_CONTACT_FORM_SUBMIT_BTN;
			break;
			case application.LANG_DE:
				pageTitle = application.DE_SENDTOFRIEND_WINDOW_TITLE;
				closeWin = application.DE_SENDTOFRIEND_WINDOW_CLOSE;
				from = application.DE_SENDTOFRIEND_FROM;
				to = application.DE_SENDTOFRIEND_TO;
				sentBy = application.DE_SENDTOFRIEND_SENT_BY;
				send = application.DE_CONTACT_FORM_SUBMIT_BTN;
			break;
		}

		// open the window
		var width = 315;
		var height = 280;
		var left = (screen.width/2) - (width/2);
		var top = (screen.height/2) - (height/2);
		var win = window.open('', '', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + 
							width + ', height=' + height + ', top=' + top + ', left=' + left);

		var html = "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'>" +
			"<html>" + 
			"	<head>" + 
			"		<meta http-equiv='content-type' content='text/html; charset=utf-8' />" + 
			"		<link rel='stylesheet' type='text/css' href='http://" + location.host + location.pathname + "src/css/praia.css' />" + 
			"		<title>" + pageTitle + "</title> \r\n" +
			"		<script language='javascript' type='text/javascript'> \r\n" + 
			"			function validateForm() {  \r\n" + 
			"				var email = /^([\\w]+)(.[\\w]+)*@([\\w-]+\\.){1,5}([A-Za-z]){2,4}$/;  \r\n" + 
			"				if (document.forms['sendtofriend'].sendto.value == '') { document.forms['sendtofriend'].sendto.focus(); document.forms['sendtofriend'].sendto.select(); return false; }  \r\n" + 
			"				if (document.forms['sendtofriend'].name.value == '') { document.forms['sendtofriend'].name.focus(); document.forms['sendtofriend'].name.select(); return false; }  \r\n" + 
			"				if (document.forms['sendtofriend'].from.value == '') { document.forms['sendtofriend'].from.focus(); document.forms['sendtofriend'].from.select(); return false; }  \r\n" + 
			"				if (email.test(document.forms['sendtofriend'].sendto.value) == false) { document.forms['sendtofriend'].sendto.focus(); document.forms['sendtofriend'].sendto.select(); return false; }  \r\n" + 
			"				if (email.test(document.forms['sendtofriend'].from.value) == false) { document.forms['sendtofriend'].from.focus(); document.forms['sendtofriend'].from.select(); return false; }  \r\n" + 
			"				return true;  \r\n" + 
			"			}  \r\n" + 
			"		</script>  \r\n" + 
			"	</head>" + 
			"	<body style='background-image: none !important;'>" + 
			"		<form name='sendtofriend' method='post' action='http://" + location.host + location.pathname + "src/servlets/sendtofriend.php' onsubmit='return validateForm();'>" + 
			"			<table border='0' cellpadding='5' cellspacing='0' width='100%' class='contentsText'>" +
			"				<tr><td align='right'>" +
			"					<a href='javascript:self.close();'>" + closeWin + 
			"						<img src='http://" + location.host + location.pathname + application.IMAGE_ROOT_FOLDER + "close-x.png' border='0' alt='' title='' />" + 
			"					</a>" + 
			"				</td></tr>" + 
			"				<tr><td>" + pageTitle + "</td></tr>" + 
			"				<tr><td class='contentsTitle'>" + pageName + "</td></tr>" + 
			"				<tr><td>" +
			"					" + to + ":<br />" + 
			"					<input type='text' name='sendto' class='formTextfield' value=''/>" + 
			"				</td></tr>" + 
			"				<tr><td>" +
			"					" + sentBy + ":<br />" + 
			"					<input type='text' name='name' class='formTextfield' value=''/>" + 
			"				</td></tr>" + 
			"				<tr><td>" +
			"					" + from + ":<br />" + 
			"					<input type='text' name='email' class='formTextfield' value=''/>" + 
			"				</td></tr>" + 
			"				<tr><td align='right'>" +
			"					<input type='submit' value='" + send + "'/>" + 
			"				</td></tr>" + 
			"			</table>" + 
			"			<input type='hidden' name='subject' value='" + pageName + "'/>" +
			"			<input type='hidden' name='referer' value='http://" + location.host + location.pathname + "'/>" +
			"			<input type='hidden' name='url' value='" + url + "'/>" +
			"			<input type='hidden' name='language' value='" + main.activeLang + "'/>" +
			"		</form>" + 
			"	</body>" + 
			"</html>";
		win.document.writeln(html);
		win.document.close();
	}



	//*******************************************************
	//** Configuration object
	//*******************************************************

	/**
	 * Method responsible for configuring the Highslide component.
	 */
	this.configuration.hs = function() {
		//Highslide configuration
		hs.graphicsDir = 'src/js/components/highslide/graphics/';
		hs.transitions = ['expand', 'crossfade'];
		hs.outlineType = 'rounded-white';
		hs.fadeInOut = true;

		// Reset the slideshows
		hs.slideshows = new Array();
		
		//I18n
		switch (main.activeLang) {
			case application.LANG_PT: 
				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.'
				};
			break;
			case application.LANG_EN: 
				hs.lang = {
					cssDirection: 'ltr',
					loadingText : 'Loading...',
					loadingTitle : 'Click to cancel',
					focusTitle : 'Click to bring to front',
					fullExpandTitle : 'Expand to actual size (f)',
					creditsText : 'Powered by <i class="acessosLink">1001 Acessos&reg;</i>',
					creditsTitle : 'Go to the 1001 Acessos homepage',
					restoreTitle : 'Click to close image, click and drag to move.'
				};
			break;
			case application.LANG_ES: 
				hs.lang = {
					cssDirection: 'ltr',
					loadingText : 'Cargando...',
					loadingTitle : 'Pulsar para cancelar',
					focusTitle : 'Pulsar para traer para delante',
					fullExpandTitle : 'Expandir para el tamaño actual (f)',
					creditsText : 'Powered by <i class="acessosLink">1001 Acessos&reg;</i>',
					creditsTitle : 'Ir a la web de 1001 Acessos',
					restoreTitle : 'Pulsar para cerrar el imagen, o para arrastrar.'
				};
			break;
			case application.LANG_FR: 
				hs.lang = {
					cssDirection: 'ltr',
					loadingText : 'Chargement...',
					loadingTitle : 'Cliquez ici pour annuler',
					focusTitle : 'Cliquez ici pour placer au premier plan',
					fullExpandTitle : 'Développer à la taille réelle (f)',
					creditsText : 'Powered by <i class="acessosLink">1001 Acessos&reg;</i>',
					creditsTitle : 'Aller à la page de 1001 Acessos',
					restoreTitle : 'Cliquez pour fermer l\'image, cliquez et faites glisser pour déplacer.'
				};
			break;
			case application.LANG_DE: 
				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.'
				};
			break;
			default: 
				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.'
				};
			break;
		}			
	}
 
	/**
	 * 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;

		// Reset the slideshows
		hs.slideshows = new Array();
		// Add the controlbar
		hs.addSlideshow({
			//slideshowGroup: 'group1',
			interval: 5000,
			repeat: false,
			useControls: true,
			fixedControls: 'fit',
			overlayOptions: {
				opacity: .75,
				position: 'bottom center',
				hideOnMouseOut: true
			}
		});
		
		//I18n
		switch (main.activeLang) {
			case application.LANG_PT: 
				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.'
				};
			break;
			case application.LANG_EN: 
				hs.lang = {
					cssDirection: 'ltr',
					loadingText : 'Loading...',
					loadingTitle : 'Click to cancel',
					focusTitle : 'Click to bring to front',
					fullExpandTitle : 'Expand to actual size (f)',
					creditsText : 'Powered by <i class="acessosLink">1001 Acessos&reg;</i>',
					creditsTitle : 'Go to the 1001 Acessos homepage',
					restoreTitle : 'Click to close image, click and drag to move.'
				};
			break;
			case application.LANG_ES: 
				hs.lang = {
					cssDirection: 'ltr',
					loadingText : 'Cargando...',
					loadingTitle : 'Pulsar para cancelar',
					focusTitle : 'Pulsar para traer para delante',
					fullExpandTitle : 'Expandir para el tamaño actual (f)',
					creditsText : 'Powered by <i class="acessosLink">1001 Acessos&reg;</i>',
					creditsTitle : 'Ir a la web de 1001 Acessos',
					restoreTitle : 'Pulsar para cerrar el imagen, o para arrastrar.'
				};
			break;
			case application.LANG_FR: 
				hs.lang = {
					cssDirection: 'ltr',
					loadingText : 'Chargement...',
					loadingTitle : 'Cliquez ici pour annuler',
					focusTitle : 'Cliquez ici pour placer au premier plan',
					fullExpandTitle : 'Développer à la taille réelle (f)',
					creditsText : 'Powered by <i class="acessosLink">1001 Acessos&reg;</i>',
					creditsTitle : 'Aller à la page de 1001 Acessos',
					restoreTitle : 'Cliquez pour fermer l\'image, cliquez et faites glisser pour déplacer.'
				};
			break;
			case application.LANG_DE: 
				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.'
				};
			break;
			default: 
				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.'
				};
			break;
		}			
	}		



	//*******************************************************
	//** Main object
	//*******************************************************

	/**
	 * Method responsible for highlighting the given language label.
	 * @param {string} idLang The language label div element id.
	 */
	this.loadLanguage = function(idLang) {
		Ext.get('ptLang').dom.className = 'langLabel link';
		Ext.get('enLang').dom.className = 'langLabel link';
		Ext.get('esLang').dom.className = 'langLabel link';
		Ext.get('frLang').dom.className = 'langLabel link';
		Ext.get('deLang').dom.className = 'langLabel link';

		Ext.get(idLang).dom.className = 'langLabelHighlight link';

		switch(idLang) {
			case 'ptLang':
				//Portuguese language load
				main.activeLang = application.LANG_PT;
				break;
			case 'enLang':
				//English language load
				main.activeLang = application.LANG_EN;
				break;
			case 'esLang':
				//Spanish language load
				main.activeLang = application.LANG_ES;
				break;
			case 'frLang':
				//French language load
				main.activeLang = application.LANG_FR;
				break;
			case 'deLang':
				//French language load
				main.activeLang = application.LANG_DE;
				break;
			default:
				//Portuguese language load by default
				main.activeLang = application.LANG_PT;
		}

		main.loadPageTitle();
		main.loadMainMenu();
		main.loadFooter();
		main.loadHeaderBanner();
		main.loadHowToAdvertiseBanner();
		main.loadPublicityBanners();
		main.configuration.hs();
	}
  
	/**
	 * Method responsible for loading the main menu.
	 */
	this.loadMainMenu = function() { 

		var el = Ext.get('menuDiv');
		var scope = main;

		var fieldsObj = new Object();
		fieldsObj['table'] = 'tmenu';
		fieldsObj['start'] = 0; 
		fieldsObj['limit'] = application.MAX_MENU_ITEMS;
		fieldsObj['sort'] = 'order'; 
		fieldsObj['dir'] = 'asc'; 
		fieldsObj['deletedField'] = 'order'; //The items with zero value (0) in the DB are not shown.

		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' + main.activeLang},
				{name: 'action', 		type: 'string',	mapping: 'action'},			
				{name: 'contentsHTML', 	type: 'string',	mapping: 'contentsHTML' + main.activeLang}			
			]
		});

		result.on('load', function() {
			el.dom.innerHTML  = "<br />";
			scope.menuItems = new Array();
			
			for (var i = 0; i < result.data.length; i++) {
				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[i] = obj;

				if (i == 0) {
					//Highlight of the first item
					el.dom.innerHTML += "<div><a href='#' onClick='main.highlightMainMenuItem(" + i +
										"); main.details.loadDetails(" + i + ");" + result.data.items[i].data['action'] + 
										"'><font class='menuDivHighlight'>&gt;&nbsp;" + result.data.items[i].data['name'] + "</font></a></div>";
					//Load of the first item contents
					main.details.loadDetails(0);
				}
				else
					el.dom.innerHTML += "<div><a href='#' onClick='main.highlightMainMenuItem(" + i +
										"); main.details.loadDetails(" + i + ");" + result.data.items[i].data['action'] + 
										"'><font class='menuDivSimple'>" + result.data.items[i].data['name'] + "</font></a></div>";
			}
			//Load of a section by URL, if applicable
			main.loadSectionByUrl();
		});

		switch(main.activeLang) {
			case application.LANG_PT: el.dom.innerHTML = "<br/><font class='menuDivHighlight'>" + application.PT_LOADING_MENU + "</font>"; break;
			case application.LANG_EN: el.dom.innerHTML = "<br/><font class='menuDivHighlight'>" + application.EN_LOADING_MENU + "</font>"; break;
			case application.LANG_ES: el.dom.innerHTML = "<br/><font class='menuDivHighlight'>" + application.ES_LOADING_MENU + "</font>"; break;
			case application.LANG_FR: el.dom.innerHTML = "<br/><font class='menuDivHighlight'>" + application.FR_LOADING_MENU + "</font>"; break;
			case application.LANG_DE: el.dom.innerHTML = "<br/><font class='menuDivHighlight'>" + application.DE_LOADING_MENU + "</font>"; break;
			default: el.dom.innerHTML = "<br/><font class='menuDivHighlight'>" + application.PT_LOADING_MENU + "</font>"; break;
		}
	}

	/**
	 * Method responsible for loading the page title.
	 */
	this.loadPageTitle = function() {
		switch(main.activeLang) {
			case application.LANG_PT: 
				document.title = application.PAGE_TITLE_PT; 
				Ext.get('homeImg').dom.alt = application.HOME_PT;
				Ext.get('homeImg').dom.title = application.HOME_PT;
				Ext.get('contactsImg').dom.alt = application.CONTACT_US_PT;
				Ext.get('contactsImg').dom.title = application.CONTACT_US_PT;
				Ext.get('bookmarksImg').dom.alt = application.BOOKMARKS_PT;
				Ext.get('bookmarksImg').dom.title = application.BOOKMARKS_PT;
				break;
			case application.LANG_EN: 
				document.title = application.PAGE_TITLE_EN;
				Ext.get('homeImg').dom.alt = application.HOME_EN;
				Ext.get('homeImg').dom.title = application.HOME_EN;
				Ext.get('contactsImg').dom.alt = application.CONTACT_US_EN;
				Ext.get('contactsImg').dom.title = application.CONTACT_US_EN;
				Ext.get('bookmarksImg').dom.alt = application.BOOKMARKS_EN;
				Ext.get('bookmarksImg').dom.title = application.BOOKMARKS_EN;
				break;
			case application.LANG_ES: 
				document.title = application.PAGE_TITLE_ES;
				Ext.get('homeImg').dom.alt = application.HOME_ES;
				Ext.get('homeImg').dom.title = application.HOME_ES;
				Ext.get('contactsImg').dom.alt = application.CONTACT_US_ES;
				Ext.get('contactsImg').dom.title = application.CONTACT_US_ES;
				Ext.get('bookmarksImg').dom.alt = application.BOOKMARKS_ES;
				Ext.get('bookmarksImg').dom.title = application.BOOKMARKS_ES;
				break;
			case application.LANG_FR: 
				document.title = application.PAGE_TITLE_FR;
				Ext.get('homeImg').dom.alt = application.HOME_FR;
				Ext.get('homeImg').dom.title = application.HOME_FR;
				Ext.get('contactsImg').dom.alt = application.CONTACT_US_FR;
				Ext.get('contactsImg').dom.title = application.CONTACT_US_FR;
				Ext.get('bookmarksImg').dom.alt = application.BOOKMARKS_FR;
				Ext.get('bookmarksImg').dom.title = application.BOOKMARKS_FR;
				break;
			case application.LANG_DE: 
				document.title = application.PAGE_TITLE_DE;
				Ext.get('homeImg').dom.alt = application.HOME_DE;
				Ext.get('homeImg').dom.title = application.HOME_DE;
				Ext.get('contactsImg').dom.alt = application.CONTACT_US_DE;
				Ext.get('contactsImg').dom.title = application.CONTACT_US_DE;
				Ext.get('bookmarksImg').dom.alt = application.BOOKMARKS_DE;
				Ext.get('bookmarksImg').dom.title = application.BOOKMARKS_DE;
				break;
			default: 
				document.title = application.PAGE_TITLE_PT;
				Ext.get('homeImg').dom.alt = application.HOME_PT;
				Ext.get('homeImg').dom.title = application.HOME_PT;
				Ext.get('contactsImg').dom.alt = application.CONTACT_US_PT;
				Ext.get('contactsImg').dom.title = application.CONTACT_US_PT;
				Ext.get('bookmarksImg').dom.alt = application.BOOKMARKS_PT;
				Ext.get('bookmarksImg').dom.title = application.BOOKMARKS_PT;
				break;
		}
	}
	
	/**
	 * Method responsible for addind the page to the browser's bookmarks.
	 */
	this.addToBookmarks = function(url, title) {
	
		switch(main.activeLang) {
			case application.LANG_PT: utils.addToBookmarks(application.PAGE_TITLE_PT + " - " + ((typeof(title) != "undefined") ? title : ""), ((typeof(url) != "undefined") ? url : application.PAGE_URL)); break;
			case application.LANG_EN: utils.addToBookmarks(application.PAGE_TITLE_EN + " - " + ((typeof(title) != "undefined") ? title : ""), ((typeof(url) != "undefined") ? url : application.PAGE_URL)); break;
			case application.LANG_ES: utils.addToBookmarks(application.PAGE_TITLE_ES + " - " + ((typeof(title) != "undefined") ? title : ""), ((typeof(url) != "undefined") ? url : application.PAGE_URL)); break;
			case application.LANG_FR: utils.addToBookmarks(application.PAGE_TITLE_FR + " - " + ((typeof(title) != "undefined") ? title : ""), ((typeof(url) != "undefined") ? url : application.PAGE_URL)); break;
			case application.LANG_DE: utils.addToBookmarks(application.PAGE_TITLE_DE + " - " + ((typeof(title) != "undefined") ? title : ""), ((typeof(url) != "undefined") ? url : application.PAGE_URL)); break;
			default: utils.addToBookmarks(application.PAGE_TITLE_PT + " - " + ((typeof(title) != "undefined") ? title : ""), ((typeof(url) != "undefined") ? url : application.PAGE_URL)); break;
		}		
	}
	
	/**
	 * Method responsible for highlighting a menu item.
	 * @param {integer} position The menu item position to highlight.
	 */
	this.highlightMainMenuItem = function(position) {

		var el = Ext.get('menuDiv');
		el.dom.innerHTML  = "<br />";

		for (var i = 0; i < main.menuItems.length; i++) {
			if (i == position)
				el.dom.innerHTML += "<div><a href='#' onClick='main.highlightMainMenuItem(" + i +
									"); main.details.loadDetails(" + i + ");" + main.menuItems[i].action + 
									"'><font class='menuDivHighlight'>&gt;&nbsp;" + main.menuItems[i].name + "</font></a></div>";
			else
				el.dom.innerHTML += "<div><a href='#' onClick='main.highlightMainMenuItem(" + i +
									"); main.details.loadDetails(" + i + ");" + main.menuItems[i].action + 
									"'><font class='menuDivSimple'>" + main.menuItems[i].name + "</font></a></div>";
		}

	}
  
	/**
	 * Method responsible for loading the main menu.
	 */ 
	this.loadFooter = function() {
		
		var el = Ext.get('footerDiv');
		var scope = main;

		var fieldsObj = new Object();
		fieldsObj['table'] = 'tmenu'; 
		fieldsObj['start'] = 0; 
		fieldsObj['limit'] = application.MAX_MENU_ITEMS;
		fieldsObj['sort'] = 'orderFooter'; 
		fieldsObj['dir'] = 'asc'; 
		fieldsObj['deletedField'] = 'orderFooter'; //The items with zero value (0) in the DB are not shown.

		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' + main.activeLang},
				{name: 'action', 		type: 'string',	mapping: 'action'},			
				{name: 'order', 		type: 'int',	mapping: 'order'},			
				{name: 'contentsHTML', 	type: 'string',	mapping: 'contentsHTML' + main.activeLang}
			]
		});

		result.on('load', function() {
			el.dom.innerHTML  = "";
			scope.footerItems = new Array();
			
			for (var i = 0; i < result.data.length; i++) {
				var obj = {
					name: result.data.items[i].data['name'],
					action: result.data.items[i].data['action'],
					html: result.data.items[i].data['contentsHTML']
				}
				scope.footerItems[i] = obj;
				el.dom.innerHTML += "<a href='#' onClick='main.details.loadFooterDetails(" + i + ", " + 
									result.data.items[i].data['order'] + ");" + result.data.items[i].data['action'] + 
									"'>" + result.data.items[i].data['name'] + "</a>";
				if (i < result.data.length - 1)
					el.dom.innerHTML += "&nbsp;<font class='splitter'>|</font>&nbsp;";
			}
		});
			
		switch(main.activeLang) {
			case application.LANG_PT: el.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_FOOTER + "</font>"; break;
			case application.LANG_EN: el.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_LOADING_FOOTER + "</font>"; break;
			case application.LANG_ES: el.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_LOADING_FOOTER + "</font>"; break;
			case application.LANG_FR: el.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_LOADING_FOOTER + "</font>"; break;
			case application.LANG_DE: el.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_LOADING_FOOTER + "</font>"; break;
			default: el.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_FOOTER + "</font>"; break;
		}
	}
 
	/**
	 * Method responsible for navigating to the first item of the menu.
	 */
	this.goHome = function() {
		main.highlightMainMenuItem(0);
		main.details.loadDetails(0);
	}

	/**
	 * Method responsible for loading the "how to advertise" banners container div.
	 */
	this.loadHeaderBanner = function() {
		var headerEl = Ext.get('headerFlash');
		headerEl.dom.innerHTML  = "";
		var markup = "";

		switch(main.activeLang) {
			case application.LANG_PT:
				markup = "<embed height='" + application.HEADER_BANNER_HEIGHT + "' align='middle' width='" + application.HEADER_BANNER_WIDTH + 
				"' type='application/x-shockwave-flash' salign='' allowscriptaccess='sameDomain' " + 
				"allowfullscreen='false' menu='true' name='" + application.HEADER_BANNER_PT + "' devicefont='false' " + 
				"wmode='transparent' scale='showall' loop='true' play='true' pluginspage='http://www.adobe.com/go/getflashplayer' quality='high' " +
				"src='" + application.FLASH_ROOT_FOLDER + application.HEADER_BANNER_PT + "'/>";
				break;
			case application.LANG_EN:
				markup = "<embed height='" + application.HEADER_BANNER_HEIGHT + "' align='middle' width='" + application.HEADER_BANNER_WIDTH + 
				"' type='application/x-shockwave-flash' salign='' allowscriptaccess='sameDomain' " + 
				"allowfullscreen='false' menu='true' name='" + application.HEADER_BANNER_EN + "' devicefont='false' " + 
				"wmode='transparent' scale='showall' loop='true' play='true' pluginspage='http://www.adobe.com/go/getflashplayer' quality='high' " +
				"src='" + application.FLASH_ROOT_FOLDER + application.HEADER_BANNER_EN + "'/>";
				break;
			case application.LANG_ES:
				markup = "<embed height='" + application.HEADER_BANNER_HEIGHT + "' align='middle' width='" + application.HEADER_BANNER_WIDTH + 
				"' type='application/x-shockwave-flash' salign='' allowscriptaccess='sameDomain' " + 
				"allowfullscreen='false' menu='true' name='" + application.HEADER_BANNER_ES + "' devicefont='false' " + 
				"wmode='transparent' scale='showall' loop='true' play='true' pluginspage='http://www.adobe.com/go/getflashplayer' quality='high' " +
				"src='" + application.FLASH_ROOT_FOLDER + application.HEADER_BANNER_ES + "'/>";
				break;
			case application.LANG_FR:
				markup = "<embed height='" + application.HEADER_BANNER_HEIGHT + "' align='middle' width='" + application.HEADER_BANNER_WIDTH + 
				"' type='application/x-shockwave-flash' salign='' allowscriptaccess='sameDomain' " + 
				"allowfullscreen='false' menu='true' name='" + application.HEADER_BANNER_FR + "' devicefont='false' " + 
				"wmode='transparent' scale='showall' loop='true' play='true' pluginspage='http://www.adobe.com/go/getflashplayer' quality='high' " +
				"src='" + application.FLASH_ROOT_FOLDER + application.HEADER_BANNER_FR + "'/>";
				break;
			case application.LANG_DE:
				markup = "<embed height='" + application.HEADER_BANNER_HEIGHT + "' align='middle' width='" + application.HEADER_BANNER_WIDTH + 
				"' type='application/x-shockwave-flash' salign='' allowscriptaccess='sameDomain' " + 
				"allowfullscreen='false' menu='true' name='" + application.HEADER_BANNER_DE + "' devicefont='false' " + 
				"wmode='transparent' scale='showall' loop='true' play='true' pluginspage='http://www.adobe.com/go/getflashplayer' quality='high' " +
				"src='" + application.FLASH_ROOT_FOLDER + application.HEADER_BANNER_DE + "'/>";
				break;
			default:
				markup = "<embed height='" + application.HEADER_BANNER_HEIGHT + "' align='middle' width='" + application.HEADER_BANNER_WIDTH + 
				"' type='application/x-shockwave-flash' salign='' allowscriptaccess='sameDomain' " + 
				"allowfullscreen='false' menu='true' name='" + application.HEADER_BANNER_PT + "' devicefont='false' " + 
				"wmode='transparent' scale='showall' loop='true' play='true' pluginspage='http://www.adobe.com/go/getflashplayer' quality='high' " +
				"src='" + application.FLASH_ROOT_FOLDER + application.HEADER_BANNER_PT + "'/>";
				break;
		}

		headerEl.dom.innerHTML  = markup;
	}

	/**
	 * Method responsible for loading the "how to advertise" banners container div.
	 */
	this.loadHowToAdvertiseBanner = function() {
		var comoPublicitarEl = Ext.get('comoPublicitarFlash');
		comoPublicitarEl.dom.innerHTML  = "";

		switch(main.activeLang) {
			case application.LANG_PT:
				comoPublicitarEl.dom.innerHTML = main.getPublicityBannerMarkup(application.ADVERTISE_BANNER_PT, application.ADVERTISE_BANNER_WIDTH, application.ADVERTISE_BANNER_HEIGHT);
				break;
			case application.LANG_EN:
				comoPublicitarEl.dom.innerHTML = main.getPublicityBannerMarkup(application.ADVERTISE_BANNER_EN, application.ADVERTISE_BANNER_WIDTH, application.ADVERTISE_BANNER_HEIGHT);
				break;
			case application.LANG_ES:
				comoPublicitarEl.dom.innerHTML = main.getPublicityBannerMarkup(application.ADVERTISE_BANNER_ES, application.ADVERTISE_BANNER_WIDTH, application.ADVERTISE_BANNER_HEIGHT);
				break;
			case application.LANG_FR:
				comoPublicitarEl.dom.innerHTML = main.getPublicityBannerMarkup(application.ADVERTISE_BANNER_FR, application.ADVERTISE_BANNER_WIDTH, application.ADVERTISE_BANNER_HEIGHT);
				break;
			case application.LANG_DE:
				comoPublicitarEl.dom.innerHTML = main.getPublicityBannerMarkup(application.ADVERTISE_BANNER_DE, application.ADVERTISE_BANNER_WIDTH, application.ADVERTISE_BANNER_HEIGHT);
				break;
			default:
				comoPublicitarEl.dom.innerHTML = main.getPublicityBannerMarkup(application.ADVERTISE_BANNER_PT, application.ADVERTISE_BANNER_WIDTH, application.ADVERTISE_BANNER_HEIGHT);
				break;
		}
	}

	/**
	 * 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 + "' 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><div><img src='" + application.IMAGE_ROOT_FOLDER + "s.png' /></div>";
	}

	/**
	 * Method responsible for loading the publicity banners container divs.
	 */
	this.loadPublicityBanners = function() {
		var leftContainerEl = Ext.get('leftBanners');
		var rightContainerEl = Ext.get('rightBanners');

		var fieldsObj = new Object();
		fieldsObj['table'] = 'banners'; 
		fieldsObj['queryname'] = 'banners';
		fieldsObj['language'] = main.activeLang;
		fieldsObj['start'] = 0; 
		fieldsObj['limit'] = application.MAX_RECORDS;

		var result = utils.getJsonStore({
			url: 'src/servlets/queryServlet.php',
			root: 'banners',
			baseParams: fieldsObj,
			totalProperty: 'totalCount',
			fields: [
				{name: 'name', 			type: 'string'},
				{name: 'position',		type: 'string'},
				{name: 'width', 		type: 'string'},
				{name: 'height', 		type: 'string'}
			]
		});

		result.on('load', function() {
			if (result.data.length > 0) {
				leftContainerEl.dom.innerHTML  = "";
				rightContainerEl.dom.innerHTML  = "";
				
				for (var i = 0; i < result.data.length; i++) {
					if (utils.stringStartsWith(result.data.items[i].data['position'], 'left')) 
						leftContainerEl.dom.innerHTML += main.getPublicityBannerMarkup(result.data.items[i].data['name'], result.data.items[i].data['width'], result.data.items[i].data['height']);
					if (utils.stringStartsWith(result.data.items[i].data['position'], 'right')) 
						rightContainerEl.dom.innerHTML += main.getPublicityBannerMarkup(result.data.items[i].data['name'], result.data.items[i].data['width'], result.data.items[i].data['height']);
				}
			} else {
				switch(main.activeLang) {
					case application.LANG_PT: 
						leftContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_BANNERS + "</font>"; 
						rightContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_BANNERS + "</font>"; 
						break;
					case application.LANG_EN:
						leftContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_NO_BANNERS + "</font>"; 
						rightContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_NO_BANNERS + "</font>"; 
						break;
					case application.LANG_ES:
						leftContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_NO_BANNERS + "</font>"; 
						rightContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_NO_BANNERS + "</font>"; 
						break;
					case application.LANG_FR:
						leftContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_NO_BANNERS + "</font>"; 
						rightContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_NO_BANNERS + "</font>"; 
						break;
					case application.LANG_DE:
						leftContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_NO_BANNERS + "</font>"; 
						rightContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_NO_BANNERS + "</font>"; 
						break;
					default:
						leftContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_BANNERS + "</font>"; 
						rightContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_NO_BANNERS + "</font>"; 
						break;
				}
			}
		});
			
		switch(main.activeLang) {
			case application.LANG_PT: 
				leftContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_BANNERS + "</font>"; 
				rightContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_BANNERS + "</font>"; 
				break;
			case application.LANG_EN:
				leftContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_LOADING_BANNERS + "</font>"; 
				rightContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.EN_LOADING_BANNERS + "</font>"; 
				break;
			case application.LANG_ES:
				leftContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_LOADING_BANNERS + "</font>"; 
				rightContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.ES_LOADING_BANNERS + "</font>"; 
				break;
			case application.LANG_FR:
				leftContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_LOADING_BANNERS + "</font>"; 
				rightContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.FR_LOADING_BANNERS + "</font>"; 
				break;
			case application.LANG_DE:
				leftContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_LOADING_BANNERS + "</font>"; 
				rightContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.DE_LOADING_BANNERS + "</font>"; 
				break;
			default:
				leftContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_BANNERS + "</font>"; 
				rightContainerEl.dom.innerHTML = "<font class='menuDivHighlight'>" + application.PT_LOADING_BANNERS + "</font>"; 
				break;
		}
	}
	
	/**
	 * Method responsible for loading a specific section from the query string parameters.
	 */
	this.loadSectionByUrl = function() {
	
		if (typeof(main.queryString) != "undefined") {
		
			if ((typeof(main.queryString["sec"]) != "undefined") && (main.queryString["sec"] == "1")) {
				
				/* GALLERY Section - BEGIN */
				var highlight = 0; //Try to find the right menu item to highlight
				var action = 'main.menu.loadGalleries();';
				for (var i = 0; i < main.menuItems.length; i++) { if (main.menuItems[i].action == action) highlight = i; }
				main.highlightMainMenuItem(highlight);
				
				if (typeof(main.queryString["pag"]) != "undefined") { /* Get the page parameter. */
					var currentPage = parseInt(main.queryString["pag"]);
					if (isNaN(currentPage)) { main.menu.loadGalleries(); /* Incorrect currentPage format. Open gallery section. */ }
					else {
						var start = application.PAGE_SIZE * (currentPage-1);
						if (typeof(main.queryString["id"]) != "undefined") { /* Get the id parameter, if a gallery detail is wanted. */
							var id = parseInt(main.queryString["id"]);
							var detailStart = application.GALLERY_PAGE_SIZE * (currentPage-1); 
							if (isNaN(id)) { main.menu.loadGalleries(start, currentPage); /* Incorrect id format. Open galleries section. */ }
							else { main.details.loadGallery(id, detailStart, currentPage); /* The parameters were correct. Open the chosen gallery detail. */ }
						} else { main.menu.loadGalleries(start, currentPage); /* The parameters were correct. Open the chosen gallery. */ }
					}
				} else { main.menu.loadGalleries(); /* No page parameter defined */ }
				/* GALLERY Section - END */
				
			} else if ((typeof(main.queryString["sec"]) != "undefined") && (main.queryString["sec"] == "2")) {
				
				/* HOSTAGE Section - BEGIN */
				var highlight = 0; //Try to find the right menu item to highlight
				var action = 'main.menu.loadHostages();';
				for (var i = 0; i < main.menuItems.length; i++) { if (main.menuItems[i].action == action) highlight = i; }
				main.highlightMainMenuItem(highlight);

				if (typeof(main.queryString["pag"]) != "undefined") { /* Get the page parameter. */
					var currentPage = parseInt(main.queryString["pag"]);
					if (isNaN(currentPage)) { main.menu.loadHostages(); /* Incorrect currentPage format. Open hostage section. */ }
					else {
						var start = application.PAGE_SIZE * (currentPage-1);
						if (typeof(main.queryString["id"]) != "undefined") { /* Get the id parameter, if a hostage detail is wanted. */
							var id = parseInt(main.queryString["id"]);
							if (isNaN(id)) {main.menu.loadHostages(start, currentPage); /* Incorrect id format. Open hostage section. */ }
							else {main.details.loadHostage(id); /* The parameters were correct. Open the chosen hostage detail. */ }
						} else { main.menu.loadHostages(start, currentPage); /* The hostage parameters were invalid */ }
					} 
				} else { main.menu.loadHostages(); /* No page parameter defined */ }
				/* HOSTAGE Section - END */
				
			} else if ((typeof(main.queryString["sec"]) != "undefined") && (main.queryString["sec"] == "3")) {

				/* RESTAURANT Section - BEGIN */
				var highlight = 0; //Try to find the right menu item to highlight
				var action = 'main.menu.loadRestaurants();';
				for (var i = 0; i < main.menuItems.length; i++) { if (main.menuItems[i].action == action) highlight = i; }
				main.highlightMainMenuItem(highlight);

				if (typeof(main.queryString["pag"]) != "undefined") { /* Get the page parameter. */
					var currentPage = parseInt(main.queryString["pag"]);
					if (isNaN(currentPage)) { main.menu.loadRestaurants(); /* Incorrect currentPage format. Open restaurant section. */ }
					else {
						var start = application.PAGE_SIZE * (currentPage-1);
						if (typeof(main.queryString["id"]) != "undefined") { /* Get the id parameter, if a restaurant detail is wanted. */
							var id = parseInt(main.queryString["id"]);
							if (isNaN(id)) {main.menu.loadRestaurants(start, currentPage); /* Incorrect id format. Open restaurant section. */ }
							else {main.details.loadRestaurant(id); /* The parameters were correct. Open the chosen restaurant detail. */ }
						} else { main.menu.loadRestaurants(start, currentPage); /* The restaurant parameters were invalid */ }
					} 
				} else { main.menu.loadRestaurants(); /* No page parameter defined */ }
				/* RESTAURANT Section - END */

			}
		}
		
	}
	
	//End Main Class
 }
