/*** 
 *	@projectDescription	XYLECMS - This library implements an AJAX CMS
 * 
 *	WARNING: This software program is protected by copyright law 
 *	and international treaties. Unauthorized reproduction or
 *	distribution of this program, or any portion of it, may result
 *	in severe civil and criminal penalties, and will be prosecuted
 *	to the maximum extent possible under the law.
 *
 *	@author 	Telmo Dias   telmo@xyle.pt
 *	@copyright	(C) 2007 XYLEDOT Unipessoal Lda. All Rights Reserved.
 *	@license	License to use this software can be obtained by contacting us at: info@xyle.pt
 *	@version	1.0.1
 *
***/

/* ############################################################################
 * #		Esta parte � relativa ao menu principal
 * ############################################################################ */

Array.prototype.pushUnique = function(arg){
	var found = false;
	this.each(function(s){
		if(s == arg){
			found = true;
		}
	});
	if(!found){
		this[this.length] = arg;
	}	
};

Array.prototype.sortNum = function(){
	return this.sort( function (a,b) { return a-b;});
};

Array.prototype.find = function(searchStr) {
	var returnArray = false;
	for (i=0; i<this.length; i++) {
		if (typeof(searchStr) == 'function') {
			if (searchStr.test(this[i])) {
        		if (!returnArray) { returnArray = [] }
        		returnArray.push(i);
      		}
    	} else {
      		if (this[i]===searchStr) {
        		if (!returnArray) { returnArray = [] }
        		returnArray.push(i);
      		}
    	}
  	}
  	return returnArray;
};


function addslashes(str) {
	str=str.replace(/\'/g,'\\\'');
	str=str.replace(/\"/g,'\\"');
	str=str.replace(/\\/g,'\\\\');
	str=str.replace(/\0/g,'\\0');
	return str;
}
function stripslashes(str) {
	str=str.replace(/\\'/g,'\'');
	str=str.replace(/\\"/g,'"');
	str=str.replace(/\\\\/g,'\\');
	str=str.replace(/\\0/g,'\0');
	return str;
}


var arrOpenMenus = [];
var arrAllMenus = [];
var hideMenuTimer = null;
var hideTimeout = 1000;

function menuStartTimeout() {
	hideMenuTimer = setTimeout("menuHideMenus()", hideTimeout);	
}

//Esconde todos os submenus abertos
function menuHideMenus() {
	menuResetTimeout();
	if( arrAllMenus.length>=0 ) {
		arrAllMenus.each(function(s){
			hideMenu(s);			
		});
		arrOpenMenus = [];
		arrAllMenus = [];
	}
	//$("divarr").update(arrOpenMenus.inspect());
	//$("divall").update(arrAllMenus.inspect());
}

function hideSubmenus(menuName) {
	if( arrOpenMenus.length>0 ) {
		var h = false;
		var c = 0;
		arrOpenMenus.each(function(s, index){
			if(s == menuName){
				c++;
			}else if( s.indexOf(menuName)!=-1 ) {
				hideMenu(s);
			} else {
				c++;
			}
			
		});
		arrOpenMenus.length = c;
		//$("divarr").update(arrOpenMenus.inspect());
		//$("divall").update(arrAllMenus.inspect());
	}
}

function menuResetTimeout() {
	if (hideMenuTimer) clearTimeout(hideMenuTimer);
	hideMenuTimer = null;
}

function menuMouseOver(mnuObj){
	var name = mnuObj.parentNode.parentNode.parentNode.id + '_' + mnuObj.id;
	menuResetTimeout();
	hideSubmenus(mnuObj.parentNode.parentNode.parentNode.id); //--> o problema � k este id ainda nao esta no array por iss fecha tudo
	if($(name)){
		//alert(name);
		showMenu(mnuObj);
	}
}

function menuMouseOut(){
	menuStartTimeout();
}

function showMenu(mnuObj){
	var name = mnuObj.parentNode.parentNode.parentNode.id + '_' + mnuObj.id;
	//Havia um erro de posicionamento porque a div tinha uma margin de 10px
	var divId = $(mnuObj.id).parentNode.parentNode.parentNode.id;
	var basePos = Position.cumulativeOffset($(divId));
	var yPos = Position.cumulativeOffset(mnuObj);;	
	basePos[0] += $(divId).getWidth();
	basePos[1] = yPos[1];
	$(name).setStyle({
	  position:'absolute',
	  left: basePos[0] + 'px',
	  top: basePos[1] + 'px'
	});
	
	//DEPOIS � SUPOSTO ADICIONAR AQUI MAIS EFEITOS DE ANIMA��O, FADE + MOVE
	//TER EM ATEN��O O TIMEOUT DEFINIDO

	//new Effect.Move ($(name),{ x: pos[0], y: pos[1], mode: 'absolute'});
	arrOpenMenus.pushUnique(name);
	arrAllMenus.pushUnique(name);
	
	//$("divarr").update(arrOpenMenus.inspect());
	//$("divall").update(arrAllMenus.inspect());
	
	//alert(arrOpenMenus.inspect());
	
	//Acho que tenho mesmo que usar isto sem efeito porque o delay do efeito faz com que abram muitos menus ao mm tempo
	Element.show($(name)); // --> O Appear trata disto
	
	
	//new Effect.MoveBy($(name),0,$(divId).getWidth());
	
	//new Effect.Appear($(name),{duration:0.3});
}

function hideMenu(mnuObj){
	//var name = mnuObj.parentNode.parentNode.parentNode.id + '_' + mnuObj.id;
	//new Effect.Fade($(mnuObj),{duration:0.1, queue: 'front'});
	Element.hide($(mnuObj));
}

/* ############################################################################
 * 			Fim da parte relativa ao menu principal                           #
 * ############################################################################

 * ############################################################################
 * #		MENU LANGS
 * ############################################################################ */

var hideLangsTimer = null;

function langStartTimeout() {
	hideLangsTimer = setTimeout("hideLangSub()", hideTimeout);	
}

function langsResetTimeout(){
	if (hideLangsTimer) clearTimeout(hideLangsTimer);
	hideLangsTimer = null;
}

function langMouseOut(){
	langStartTimeout();
}

function langMouseOver(){
	langsResetTimeout();
}

function showLangSub(){
	langsResetTimeout();
	var basePos = Position.cumulativeOffset($(XMainUI.langMenuId));
	basePos[1] += 18;
	$(XMainUI.langSubId).setStyle({
	  position:'absolute',
	  left: basePos[0] + 'px',
	  top: basePos[1] + 'px'
	});
	Element.show($(XMainUI.langSubId));
}

function hideLangSub(){
	langsResetTimeout();
	Element.hide($(XMainUI.langSubId));
}


/* ############################################################################
 * 			Fim da parte relativa ao MENU LANGS                               #
 * ############################################################################

 * ############################################################################
 * #		CLASS XMainUI
 * ############################################################################ */

var XMainUI = {
	mainMenuId : "",
	fastLinksId : "",
	flashContentId : "",
	stageId : "",
	arrImgs: [],
	marqueeVisible: false,
	calendar: {}
};


XMainUI.preloadImages = function(imgs){
  	var args = imgs.split("|");
	var startIx = XMainUI.arrImgs.length;
  	for(var i=0; i<args.length; i++){
		this.arrImgs[startIx + i] = new Image;
		this.arrImgs[startIx + i].src = args[i];
	}
}

/*
 * MAIN MENU
 */

XMainUI.createMenu = function(_menu){

	var strMenu="";
	var strMenuN1="";
	var strMenuN2="";
	var strMenuN3="";
	
	var mID1,mID2,mID3;
	var n1,n2,n3;
	var mi1,mi2,mi3;
	
	n1=0;
	if (_menu.menuitem)
	{
		mID1 = "m0";
		strMenuN1 += '<div class="menu1" id="' + mID1 + '" style="z-index:100">';
		mi1=_menu.menuitem;
		while(mi1[n1])
		{
			strMenuN1 += '<ul><li><a ';
			//from json
			strMenuN1 += 'id="' + mi1[n1].m_id + '" ';
			if(mi1[n1].m_href==""){
				strMenuN1 += 'href="#" onclick="return false" ';
			}else{
				strMenuN1 += 'href="' + mi1[n1].m_href + '"  ';
			}
			strMenuN1 += 'title="' + mi1[n1].m_title + '" ';
	
			//inline link proprerties
			strMenuN1 += 'onmouseover="menuMouseOver(this);" ';
			strMenuN1 += 'onmouseout="menuMouseOut();" ';
			strMenuN1 += '>&nbsp;';
	
			//from json
			strMenuN1 += mi1[n1].m_text;
			strMenuN1 += '</a></li></ul>';

			n2=0;
			if (mi1[n1].mSub1)
			{
				mID2 = mID1 + "_" + mi1[n1].m_id;
				strMenuN2 += '<div class="menu1sub" id="' + mID2 + '" style="display:none; position:absolute; top:200px; left:200px; z-index:101">';
				mi2=mi1[n1].mSub1
				while(mi2[n2])
				{
					strMenuN2 += '<ul><li><a ';
					//from json
					strMenuN2 += 'id="' + mi2[n2].m_id + '" ';
					if(mi2[n2].m_href==""){
						strMenuN2 += 'href="#" onclick="return false" ';
					}else{
						strMenuN2 += 'href="' + mi2[n2].m_href + '"  ';
					}
					strMenuN2 += 'title="' + mi2[n2].m_title + '" ';
			
					//inline link proprerties
					strMenuN2 += 'onmouseover="menuMouseOver(this);" ';
					strMenuN2 += 'onmouseout="menuMouseOut();" ';
					strMenuN2 += '>&nbsp;';
			
					//from json
					strMenuN2 += mi2[n2].m_text;
					strMenuN2 += '</a></li></ul>';

					n3=0;
					if (mi2[n2].mSub2)
					{
						mID3 = mID2 + "_" + mi2[n2].m_id;
						strMenuN3 += '<div class="menu1sub" id="' + mID3 + '" style="display:none; position:absolute; top:300px; left:300px; z-index:102">';
						mi3=mi2[n2].mSub2
						while(mi3[n3])
						{
							strMenuN3 += '<ul><li><a ';
							//from json
							strMenuN3 += 'id="' + mi3[n3].m_id + '" ';
							if(mi3[n3].m_href==""){
								strMenuN3 += 'href="#" onclick="return false" ';
							}else{
								strMenuN3 += 'href="' + mi3[n3].m_href + '" ';
							}
							strMenuN3 += 'title="' + mi3[n3].m_title + '" ';
					
							//inline link proprerties
							strMenuN3 += 'onmouseover="menuMouseOver(this);" ';
							strMenuN3 += 'onmouseout="menuMouseOut();" ';
							strMenuN3 += '>&nbsp;';
					
							//from json
							strMenuN3 += mi3[n3].m_text;
							strMenuN3 += '</a></li></ul>';
							
							n3++;
						}
						strMenuN3 += '</div>';
					}
					n2++;
				}
				strMenuN2 += '</div>';
			}
			n1++;
		}
		strMenuN1 += '</div>';
	}
	strMenu=strMenuN1+strMenuN2+strMenuN3;
	return strMenu;
};

XMainUI.getMainMenu = function(){
	var url =  "menu.php";
	var myAjax = new Ajax.Request(
					url, 
					{
						method: 'post', 
						onSuccess: XMainUI.drawMainMenu,
						onFailure: XMainUI.showAjaxError
					});
};

XMainUI.drawMainMenu = function(_originalRequest){
	eval('var jsonObj = ' + _originalRequest.responseText + ';');
	$(XMainUI.mainMenuId).update(XMainUI.createMenu(jsonObj.menu));
};

/*
 * END MAIN MENU
 */
/*
 * QUICK LINKS
 */
XMainUI.createQuickLinks = function(_menu){
	var quickLinksHTML = '<table border="0" cellpadding="0" cellspacing="0">';
	quickLinksHTML += '		<tr>';
	quickLinksHTML += '			<td><img src="_assets/themes/'+XyleCMS.theme+'/images/general/quick_links0.png" border="0"  /></td>';
	
	for(i=0;i<_menu.length;i++){
		//alert(addslashes(_menu[i].href));
		//quickLinksHTML += '			<td background="_assets/themes/'+XyleCMS.theme+'/images/general/quick_links1.png"><a href="'+_menu[i].href+'" title="'+_menu[i].title+'">'+_menu[i].html+'</a></td>';
		quickLinksHTML += '<td background="_assets/themes/'+XyleCMS.theme+'/images/general/quick_links1.png">&nbsp;&nbsp;<span style="cursor:pointer" title="'+_menu[i].title+'" onclick="'+_menu[i].href+'">'+_menu[i].html+'</span>&nbsp;&nbsp;</td>';
		quickLinksHTML += '			<td><img src="_assets/themes/'+XyleCMS.theme+'/images/general/quick_links2.png" border="0" /></td>';
	}

	quickLinksHTML += '			<td background="_assets/themes/'+XyleCMS.theme+'/images/general/quick_links1.png"><div id="langMenu" class="langmenubase"><img src="_assets/themes/'+XyleCMS.theme+'/images/lang_specific/flags/pt.png" width="16" height="11" align="absmiddle" style="padding-right:10px" />Portugu&ecirc;s</div></td>';
	quickLinksHTML += '		</tr>';
	quickLinksHTML += '</table>';
	return quickLinksHTML;
};

XMainUI.getQuickLinks = function(){
	var url =  "quicklinks.php";
	var myAjax = new Ajax.Request(
					url, 
					{
						method: 'post', 
						onSuccess: XMainUI.drawQuickLinks,
						onFailure: XMainUI.showAjaxError
					});
};

XMainUI.drawQuickLinks = function(_originalRequest){
	eval(' var jsonObj = ' + _originalRequest.responseText + ';');
	$(XMainUI.quickLinksId).update(XMainUI.createQuickLinks(jsonObj));
};

/*
 * END QUICK LINKS
 */
/*
 * LANG MENU
 */

XMainUI.createLangMenu = function(_menu){
	
	var base_str = '<div><a href="" title="'+_menu.title+'" onclick="showLangSub();return false;" onmouseout="langMouseOut()"><img src="_assets/themes/'+XyleCMS.theme+'/images/lang_specific/flags/'+_menu.abrv+'.png" width="16" height="11" align="absmiddle" style="padding-right:10px" />' + _menu.label + '</a></div>';
	var menu_str = '<div class="langmenu" id="langSub" style="display:none; position:absolute; top:300px; left:300px; z-index:100">';
						
	for(i=0;i<_menu.menu.length;i++){
		if(Number(_menu.menu[i].id_lang) == Number(XBrowser.langId)){
			menu_str += '<ul><li><a ';
			menu_str += 'id="' +_menu.menu[i].id_lang + '" ';
			menu_str += 'href="" onclick="return false;" ';
			menu_str += 'title="' + _menu.menu[i].title + '" ';
			menu_str += 'onmouseover="langMouseOver()" ';
			menu_str += 'onmouseout="langMouseOut()" ';
			menu_str += '>';
			menu_str += '<img src="_assets/themes/'+XyleCMS.theme+'/images/lang_specific/flags/'+_menu.menu[i].abrv+'.png" width="16" height="11" align="absmiddle" style="padding-right:10px" />' + _menu.menu[i].label;
			menu_str += '</a></li></ul>';
		}else{
			menu_str += '<ul><li><a ';
			menu_str += 'id="' +_menu.menu[i].id_lang + '" ';
			menu_str += 'href="index.php?lang=' + _menu.menu[i].id_lang + '" target="_top" ';
			menu_str += 'title="' + _menu.menu[i].title + '" ';
			menu_str += 'onmouseover="langMouseOver()" ';
			menu_str += 'onmouseout="langMouseOut()" ';
			menu_str += '>';
			menu_str += '<img src="_assets/themes/'+XyleCMS.theme+'/images/lang_specific/flags/'+_menu.menu[i].abrv+'.png" width="16" height="11" align="absmiddle" style="padding-right:10px" />' + _menu.menu[i].label;
			menu_str += '</a></li></ul>';
		}
	}
	
	menu_str += '</div>';
	//menu_str += '<textarea>' + menu_str +'</textarea>';
	return (base_str + menu_str);
};

XMainUI.getLangMenu = function(){
	var url =  "langmenu.php";
	var myAjax = new Ajax.Request(
					url, 
					{
						method: 'post', 
						onSuccess: XMainUI.drawLangMenu,
						onFailure: XMainUI.showAjaxError
					});
};

XMainUI.drawLangMenu = function(_originalRequest){
	eval('var jsonLangs = ' +_originalRequest.responseText+ ';');
	$(XMainUI.langMenuId).innerHTML = XMainUI.createLangMenu(jsonLangs);
	//$(XMainUI.langSubId).style.width = $(XMainUI.langMenuId).getWidth() + 'px';
};

/*
 * END LANG MENU
 */
/*
 * MARQUEE
 */

XMainUI.getMarquee = function(){
	var url =  "marquee.php";
	var myAjax = new Ajax.Request(
					url, 
					{
						method: 'post', 
						onSuccess: XMainUI.createMarquee,
						onFailure: XMainUI.showAjaxError
					});
};

XMainUI.createMarquee = function(_originalRequest){
	eval('XMainUI.arrMarquee = ' +  _originalRequest.responseText + ';');
	eval('XMainUI.arrMarquee2 = ' + _originalRequest.responseText + ';');
	XMainUI.randomMarquee();
};

XMainUI.drawMarquee = function(){
	/*
	$('marqueetxt').innerHTML = XMainUI.marqueeMessage.substring(0, XMainUI.marqueeLength); 
	if (++XMainUI.marqueeLength > XMainUI.marqueeMessage.length) { 
		XMainUI.marqueeLength = 0; 
		window.setTimeout('XMainUI.randomMarquee()', 8000); 
	} else window.setTimeout('XMainUI.drawMarquee()', 10);
	*/

	//$(XMainUI.marqueeId).setStyle({display:'none'});
	new  Effect.Fade(XMainUI.marqueeId,{
		duration:0.5,
		afterFinish: function(){
                        $(XMainUI.marqueeId).innerHTML = '<div>' + XMainUI.marqueeMessage + '</div>';
						new  Effect.Appear(XMainUI.marqueeId,{duration:0.5});
                    }});
	
	//$(XMainUI.marqueeId).setStyle({display:'block'});
	
	//new Effect.Pulsate(XMainUI.marqueeId, {pulses:3});
	//new Effect.SlideDown(XMainUI.marqueeId,{duration:0.5});
	window.setTimeout('XMainUI.randomMarquee()', 8000);
};

XMainUI.randomMarquee = function(){
	var ix = Math.round(Math.random()* (XMainUI.arrMarquee2.length-1));
	var txt = XMainUI.arrMarquee2[ix];
	XMainUI.arrMarquee2.splice(ix,1);
	if(XMainUI.arrMarquee2.length==0){
		XMainUI.arrMarquee2 = XMainUI.arrMarquee2.concat(XMainUI.arrMarquee);
	}
	XMainUI.marqueeLength = 0;
	XMainUI.marqueeMessage = txt;
	$(XMainUI.marqueeId).innerHTML = '<div id="marqueetxt"></div>';
	XMainUI.drawMarquee();
	/*
	$(XMainUI.marqueeId).setStyle({display:'none'});
	$(XMainUI.marqueeId).innerHTML = '<div>' + txt + '</div>';
	$(XMainUI.marqueeId).setStyle({display:'block'});
	new Effect.SlideDown(XMainUI.marqueeId,{duration:0.5});
	*/
};


XMainUI.showMarquee = function(){
	new Effect.SlideDown(XMainUI.marqueeId,{duration:0.5, queue:'end'});
	XMainUI.marqueeVisible = true;
};

XMainUI.hideMarquee = function(){
	new Effect.SlideUp(XMainUI.marqueeId,{duration:0.5, queue:'end'});
	XMainUI.marqueeVisible = false;
};

XMainUI.toggleMarquee = function(){
	if(XMainUI.marqueeVisible){
		XMainUI.hideMarquee();
	}else{
		XMainUI.showMarquee();
	}
};

/*
 * END MARQUEE
 */

/*
 * CALENDAR
 */
XMainUI.loadCalendar = function(_month, _year){
	if(XMainUI.calendarId!=undefined) window.clearInterval(XMainUI.calendarId);
	if(_month == undefined || _month == null || _year == undefined || _year == null){
		if(XMainUI.calendar.month == undefined || XMainUI.calendar.year == undefined){
			//XMainUI.loadTemplate('calbody','cal.php', null, null, "calloader");
			XMainUI.loadTemplate('calbody','cal.php');
		}else{
			//XMainUI.loadTemplate('calbody','cal.php','m=' + XMainUI.calendar.month + '&y=' + XMainUI.calendar.year, null, "calloader");
			XMainUI.loadTemplate('calbody','cal.php','m=' + XMainUI.calendar.month + '&y=' + XMainUI.calendar.year);
		}
	}else{
		XMainUI.calendar = {month: _month, year: _year};
		XMainUI.loadTemplate('calbody','cal.php','m=' + _month + '&y=' + _year);
	}
	XMainUI.calendarId = window.setInterval("XMainUI.loadCalendar()", 300000);
};

XMainUI.showCalLabel = function(_obj){
	$('cal_lbl_text').innerHTML = _obj.getAttribute("xtitle");
	var _coords = Position.cumulativeOffset(_obj);
	$('cal_lbl').style.left = Number(_coords[0] - 252) + "px";
	$('cal_lbl').style.top =  Number(_coords[1] - 30) + "px";
	$('cal_lbl').style.visibility = 'visible';
};
XMainUI.hideCalLabel = function(){
	$('cal_lbl_text').innerHTML = '';
	$('cal_lbl').style.visibility = 'hidden';
};
/*
 * END CALENDAR
 */
/*
 * TEMPLATES
 */
XMainUI.loadTemplate = function(_target, _file, _args, _callback, _tgtloader){
	pageTracker._trackPageview("/"+_file);
	//urchinTracker("/"+_file);
	if(XMainUI.templateTarget == undefined){
		XMainUI.templateTarget = _target;
		XMainUI.callback = _callback;
		if(_tgtloader==undefined){
			XMainUI.showLoader();
		}else{
			XMainUI.showLoader(_tgtloader);
		}
		window.setTimeout("XMainUI.makeRequest('" + _file + "','" + _args + "')", 500);
	}else{
		window.setTimeout("XMainUI.loadTemplate('" + _target + "','" + _file + "','" + _args + "'," + _callback + ")",1000);
	}
};

XMainUI.makeRequest = function(_file, _args){
	if(_args == null || _args == undefined || _args == 'undefined'){
		new Ajax.Request(
					_file, 
					{
						asynchronous: false,
						onSuccess: XMainUI.parseTemplate,
						onFailure: XMainUI.showAjaxError
					});
	}else{
		new Ajax.Request(
					_file, 
					{
						asynchronous: false,
						parameters:_args,
						onSuccess: XMainUI.parseTemplate,
						onFailure: XMainUI.showAjaxError
					});
	}
};

XMainUI.parseTemplate = function(originalRequest){
	//alert(originalRequest.responseText);
	//esta fun��o faz o parsing do documento e cria os arrays necessarios para carregamento de recursos
	
	/*
	 * 3 tipos de coisas a incluir:
	 * - css
	 * - javascripts normais
	 * - javascripts de ficheiros externos
	*/
	var baseHTML = originalRequest.responseText;
	var searchStr = originalRequest.responseText.toLowerCase();
	
	//pesquisa de elementos dentro do head do documento da template
	if(searchStr.toLowerCase().indexOf('<head>')!=-1 && searchStr.toLowerCase().indexOf('</head>')!=-1){
		var head = baseHTML.substring(searchStr.indexOf('<head>')+7, searchStr.indexOf('</head>'));
		//Inserir CSS <link> tags no documento pai
		var startIx = 0;
		var link_open = head.toLowerCase().indexOf('<link', startIx);
		while(link_open!=-1){
			var link_close = head.toLowerCase().indexOf('>', link_open+1);
			var link_att =  head.substring(link_open + 5, link_close);
			var link_href = link_att.toLowerCase().indexOf('href=');
			if(link_href!=-1){
				var search_char = link_att.substr(link_href+5,1);
				var link_href2 = link_att.indexOf(search_char, link_href+6);
				var link_url = link_att.substring(link_href+6, link_href2);
				var existing_links = document.getElementsByTagName('link');
				var link_found = false;
				for(i=0;i<existing_links.length;i++){
					//verifica css ja inseridas anteriormente
					var link_exist = existing_links[i].href.substring((existing_links[i].href.length-link_url.length),existing_links[i].href.length);
					if(link_exist == link_url) link_found = true;
				}
				if(!link_found){//apenas insere se ainda n�o tiver sido inserido
					var headID = document.getElementsByTagName("head")[0];         
					var cssNode = document.createElement('link');
					cssNode.type = 'text/css';
					cssNode.rel = 'stylesheet';
					cssNode.href = link_url;
					cssNode.media = 'screen';
					headID.appendChild(cssNode);
					//alert('fond a link: ' + link_url);
				}else{
					//alert('link not inserted had been inserted before: ' + link_url);
				}
				startIx = link_close + 1;
			}
			link_open = head.toLowerCase().indexOf('<link', startIx);
			//<link href="_assets/themes/default/css/cmfv.css" rel="stylesheet" type="text/css">
		}
		//Inserir CSS normal colocado dentro da tag <style> do head da template
		//procura por @import
		//procura por elementos
			//pesquisa por {} 
	}
	
	//Pesquisa de scripts no documento
	var startIx = 0;
	var script = searchStr.indexOf('<script', startIx);
	while(script!=-1){
		var script_close = searchStr.indexOf('>',script+1);
		var script_att = baseHTML.substring(script+7, script_close);
		var script_src = script_att.toLowerCase().indexOf('src=');
		if(script_src!=-1){
			//Inserir scripts com URL
			var search_char = script_att.substr(script_src+4,1);
			var script_src2 = script_att.indexOf(search_char, script_src+5);
			var script_url = script_att.substring(script_src+5, script_src2);
			var newscript = document.createElement("script");
			//alert("A inserir script com url:\n" + script_url);
			newscript.src = script_url;
			newscript.type="text/javascript";
			document.getElementsByTagName("head")[0].appendChild(newscript);
			var script_end = baseHTML.toLowerCase().indexOf('</script>', script_close);
			startIx = script_end + 8;
		}else{
			//Avaliar Scripts que estejam escritos no interior da template 
			var script_end = searchStr.indexOf('</script>', script_close+1);
			startIx = script_end + 8;
			var script_body = baseHTML.substring(script_close+2, script_end);
			//alert("Vou avaliar:\n" + script_body);
			eval(script_body);
		}
		script = baseHTML.toLowerCase().indexOf('<script', startIx);
	}
	//extrair o body e o m�todo definido no onload
	var body_open = searchStr.indexOf('<body');
	var body_end = searchStr.indexOf('</body>');
	if(body_open!=-1 && body_end!=-1){
		var body_close = searchStr.indexOf('>', body_open + 1);
		var body_str = baseHTML.substring(body_close+1, body_end);
		var body_att = baseHTML.substring(body_open, body_close);
		var body_onload = body_att.toLowerCase().indexOf('onload=');
		if(body_onload!=-1){
			var body_char = body_att.substr(body_onload+7,1);
			var body_onload2 = body_att.indexOf(body_char, body_onload+8);
			XMainUI.templateOnload = body_att.substring(body_onload+8, body_onload2);
		}
		XMainUI.putTemplate(body_str);
	}else{
		XMainUI.putTemplate(baseHTML);
	}
};

XMainUI.putTemplate = function(templateHTML){
	//$(XMainUI.templateTarget).update(templateHTML);
	//window.templateHTML = templateHTML;
	//window.setTimeout("document.getElementById(XMainUI.templateTarget).innerHTML = templateHTML;", 5000);
	//alert(templateHTML);
	document.getElementById(XMainUI.templateTarget).innerHTML = templateHTML;
	XMainUI.templateTarget = undefined;
	if(XMainUI.templateOnload!= undefined){
		eval(XMainUI.templateOnload);
		XMainUI.templateOnload = undefined;
	}
	if(XMainUI.callback!=undefined){
		XMainUI.callback();
		XMainUi.callback = undefined;
	}
};

/*
 * END TEMPLATES
 */


/*
function popWin(url){
	var largura=window.screen.width;
	var altura=window.screen.height;
	var largura2 = 610;
	var altura2 = 460;
	var topo= topo = ((altura/2)-((altura2+10)/2))-13;
	var esquerda = esquerda = (largura/2)-((largura2+10)/2);
	var scrolls = "no";
	var fullscrn = false;
	var definicoes = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=' + largura2 + ',height=' + altura2 + ',top='+ topo + ',left=' + esquerda;	
	var galeria = "galeria" + Math.floor(Math.random()*30);
	winpopup = window.open(url,galeria,definicoes);
}
 */

/*
 * CINEMA
 */
XMainUI.loadCinema = function(){
	if(XMainUI.cinemaId!=undefined) window.clearInterval(XMainUI.cinemaId);
	XMainUI.loadTemplate('cinemasmall', 'cinemasmall.php');
	XMainUI.cinemaId = window.setInterval("XMainUI.loadCinema()", 300000);
};
/*
 * END CINEMA
 */

/*
 * STATS
 */
XMainUI.loadStats = function(){
	if(XMainUI.statsId!=undefined) window.clearInterval(XMainUI.statsId);
	XMainUI.loadTemplate('stats','stats.php');
	XMainUI.statsId = window.setInterval("XMainUI.loadStats()", 300000);
	
}
/*
 * END STATS
 */

/*
 * DRAW MAIN UI
 */
XMainUI.drawUI = function(){
	XBrowser.updateRes();
	//So depois dos detects
	XMainUI.getMainMenu();
	XMainUI.getQuickLinks();
	XMainUI.getLangMenu();
	XMainUI.getMarquee();
	if(XBrowser.hasFlash){
		//put flash content
		//$(XMainUI.flashContentId).update(XBrowser.flashObject);
		document.getElementById(XMainUI.flashContentId).innerHTML = XBrowser.flashObject;
	}else{
		//put flash error message
		$(XMainUI.flashContentId).update(XBrowser.flashErrorMsg);
	}
	//XMainUI.hideLoader();
	XMainUI.loadTemplate(XMainUI.stageId, "home.php");
	//Widgets
	XMainUI.loadStats();
	XMainUI.loadCalendar();
	XMainUI.loadCinema();
	XMainUI.loadTemplate('login', 'login.php');
}

XMainUI.startMap1 = function(){
	if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("map"));
		map.setCenter(new GLatLng(39.6, -8.274958), 7);
		map.enableDragging();
		map.enableInfoWindow();
		map.enableDoubleClickZoom();
		map.enableContinuousZoom();
		map.enableScrollWheelZoom();
		
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());
		map.addControl(new GOverviewMapControl());
		
		var marker = new GMarker(new GLatLng(39.901922, -8.274958));

 		GEvent.addListener(marker, "click", function() {
   			marker.openInfoWindowHtml("<b>Seja Benvindo</b><br />a<br />Figueir&oacute; dos Vinhos, Leiria, Portugal");
 		});
		map.addOverlay(marker);
		marker.openInfoWindowHtml("<b>Seja Benvindo</b><br />a<br />Figueir&oacute; dos Vinhos, Leiria, Portugal");
	}
};

XMainUI.startMap2 = function(){
	if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("map"));
		map.setCenter(new GLatLng(39.6, -8.274958), 9);
		map.enableDragging();
		map.enableInfoWindow();
		map.enableDoubleClickZoom();
		map.enableContinuousZoom();
		map.enableScrollWheelZoom();
		
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());
		map.addControl(new GOverviewMapControl());
		
		var marker = new GMarker(new GLatLng(39.901922, -8.274958));
 		GEvent.addListener(marker, "click", function() {
   			marker.openInfoWindowHtml("<b>Seja Benvindo</b><br />a<br />Figueir&oacute; dos Vinhos, Leiria, Portugal");
 		});
		map.addOverlay(marker);
		marker.openInfoWindowHtml("<b>Seja Benvindo</b><br />a<br />Figueir&oacute; dos Vinhos, Leiria, Portugal");
	}
};

XMainUI.startMap3 = function(){
	if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("map"));
		map.setCenter(new GLatLng(39.6, -8.274958), 14);
		map.enableDragging();
		map.enableInfoWindow();
		map.enableDoubleClickZoom();
		map.enableContinuousZoom();
		map.enableScrollWheelZoom();
		
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());
		map.addControl(new GOverviewMapControl());
		
		var marker = new GMarker(new GLatLng(39.901922, -8.274958));
		
 		GEvent.addListener(marker, "click", function() {
   			marker.openInfoWindowHtml("<b>Seja Benvindo</b><br />a<br />Figueir&oacute; dos Vinhos, Leiria, Portugal");
 		});
		map.addOverlay(marker);
		marker.openInfoWindowHtml("<b>Seja Benvindo</b><br />a<br />Figueir&oacute; dos Vinhos, Leiria, Portugal");
	}
};

/*
 * CALL EXTERNAL INTERFACE
 */
XMainUI.callXI = function(_func, _args) {
	var flashObj = (document.all) ? window['slideshow'] : document['slideshow'];
	/*
	ExternalInterface.addCallback("sp", null, showPanel);
	ExternalInterface.addCallback("hp", null, hidePanel);
	ExternalInterface.addCallback("tp", null, togglePanel);
	ExternalInterface.addCallback("lia", null, loadImageArray);
	ExternalInterface.addCallback("li", null, loadImage); //force new image
	 */
	eval("flashObj." + _func + "('" + ((_args!=undefined)?_args:"") + "');");
};

XMainUI.loadSlideShow = function (_strPath){
	if(XBrowser.ie){
		var flashObj = window['slideshow'];
	}else{
		var flashObj = document['slideshow'];
	}
	var currStrPath = flashObj.gsp();
	if(_strPath.toLowerCase() != currStrPath.toLowerCase()){
		flashObj.lia(_strPath);
	}
};
/*
 * Handle Main Menu Calls
 */
XMainUI.gotoSection = function(_secstr){
	menuHideMenus();
	var arr_section = _secstr.toLowerCase().split("_");
	var section = arr_section[0];
	if(arr_section.length>1){
		var ssection = arr_section[1];
	}
	if(arr_section.length>2){
		var sssection = arr_section[2];
	}
	switch(section){
		case "home":
			XMainUI.loadSlideShow('home');
			XMainUI.loadTemplate(XMainUI.stageId, 'home.php');
			break;
		case "agenda21":
				window.open('http://www.cm-figueirodosvinhos.pt/agenda21local/','_blank');
				break;
		case "galeria":
			XMainUI.loadTemplate(XMainUI.stageId,'gallery.php');
			break;
		case "noticias":
			XMainUI.loadTemplate(XMainUI.stageId,'noticias.php');
			break;
		case "contactos":
			XMainUI.loadTemplate(XMainUI.stageId,'contactos.php');
			break;
		//case "eventos":
		//	XMainUI.loadTemplate(XMainUI.stageId,'eventos.php');
		//	break;
		case "termos":
			XMainUI.loadTemplate(XMainUI.stageId,'termos.php');
			break;
		case "concelho":
			XMainUI.loadSlideShow('concelho');
			switch(ssection){
				case "apresentacao":
					XMainUI.loadTemplate(XMainUI.stageId, 'concelho.php');
					break;
				case "localizacao":
					switch(sssection){
						case "nacional":
							XMainUI.loadTemplate(XMainUI.stageId, 'map01.php');
							break;
						case "regional":
							XMainUI.loadTemplate(XMainUI.stageId, 'map02.php');
							break;
						case "concelho":
							XMainUI.loadTemplate(XMainUI.stageId, 'map03.php');
							break;
						case "vila":
							XMainUI.loadTemplate(XMainUI.stageId, 'map04.php');
							break;
						case "aguda":
							XMainUI.loadTemplate(XMainUI.stageId, 'fregaguda.php');
							break;
						case "arega":
							XMainUI.loadTemplate(XMainUI.stageId, 'fregarega.php');
							break;
						case "bairradas":
							XMainUI.loadTemplate(XMainUI.stageId, 'fregbairradas.php');
							break;
						case "campelo":
							XMainUI.loadTemplate(XMainUI.stageId, 'fregcampelo.php');
							break;
						case "figueiro":
							XMainUI.loadTemplate(XMainUI.stageId, 'fregfigueiro.php');
							break;
					}
					break;
				case "actividades":
					XMainUI.loadSlideShow('concelho_aeconomicas');
					switch(sssection){
						case "apresentacao":
							XMainUI.loadTemplate(XMainUI.stageId, 'actividades.php');
							break;
						case "parques":
							XMainUI.loadTemplate(XMainUI.stageId, 'parques.php');
							break;
					}
					break;
				case "geminacoes":
					XMainUI.loadTemplate(XMainUI.stageId, 'geminacoes.php');
					break;
				case "historia":
					switch(sssection){
						case "apontamento":
							XMainUI.loadTemplate(XMainUI.stageId, 'aponthist.php');
							break;
						case "ilustres":
							XMainUI.loadTemplate(XMainUI.stageId, 'ilustres.php');
							break;
						case "patrimonio":
							XMainUI.loadTemplate(XMainUI.stageId, 'patrimonio.php');
							break;
					}
					break;
			}
			break;
		case "turismo":
			XMainUI.loadSlideShow('turismo');
			switch(ssection){
				case "pesca":
					XMainUI.loadTemplate(XMainUI.stageId, 'pescadesportiva.php');
					break;
				case "axisto":
					window.open('http://www.aldeiasdoxisto.pt/','_blank');
					break;
				case "ssimao":
					XMainUI.loadTemplate(XMainUI.stageId, 'casalssimao.php');
					break;
				case "pcampismo":
					XMainUI.loadTemplate(XMainUI.stageId, 'parquecampismo.php');
					break;
				case "natureza":
					switch(sssection){
						case "praias":
							XMainUI.loadTemplate(XMainUI.stageId, 'praiasfluviais.php');
							break;
						case "fozdalge":
							XMainUI.loadTemplate(XMainUI.stageId, 'fozdalge.php');
							break;
						case "jardim":
							XMainUI.loadTemplate(XMainUI.stageId, 'jardimparque.php');
							break;
						case "cpeao":
							XMainUI.loadTemplate(XMainUI.stageId, 'cabecopeao.php');
							break;
						case "miradouros":
							XMainUI.loadTemplate(XMainUI.stageId, 'miradouros.php');
							break;
					}
					break;
				case "percursos":
					switch(sssection){
						case "figueiro":
							XMainUI.loadTemplate(XMainUI.stageId, 'percfigueiro.php');
							break;
						case "ribeiradalge":
							XMainUI.loadTemplate(XMainUI.stageId, 'percribeiradalge.php');
							break;
						case "fozdalge":
							XMainUI.loadTemplate(XMainUI.stageId, 'percfozdalge.php');
							break;
						case "campelo":
							XMainUI.loadTemplate(XMainUI.stageId, 'perccampelo.php');
							break;
						case "ssimao1":
							XMainUI.loadTemplate(XMainUI.stageId, 'percssimao1.php');
							break;
						case "ssimao2":
							XMainUI.loadTemplate(XMainUI.stageId, 'percssimao2.php');
							break;
					}
					break;
				case "eventos":
					switch(sssection){
						case "carnaval":
							XMainUI.loadTemplate(XMainUI.stageId, 'carnaval.php');
							break;
						case "sjoao":
							XMainUI.loadTemplate(XMainUI.stageId, 'sjoao.php');
							break;
						case "spantaleao":
							XMainUI.loadTemplate(XMainUI.stageId, 'spantaleao.php');
							break;
						case "ssimao":
							XMainUI.loadTemplate(XMainUI.stageId, 'ssimao.php');
							break;
					}
					break;
				case "artesanato":
					XMainUI.loadTemplate(XMainUI.stageId, 'artesanato.php');
					break;
				case "gastronomia":
					switch(sssection){
						case "sabores":
							XMainUI.loadTemplate(XMainUI.stageId, 'sabores.php');
							break;
						case "ondecomer":
							XMainUI.loadTemplate(XMainUI.stageId, 'ondecomer.php');
							break;
					}
					break;
				case "animacaotur":
					XMainUI.loadTemplate(XMainUI.stageId, 'animacaotur.php');
					break;
				case "ondedormir":
					XMainUI.loadTemplate(XMainUI.stageId, 'ondedormir.php');
					break;
			}
			break;
		case "autarquia":
			XMainUI.loadSlideShow('autarquia');
			switch(ssection){
				case "camara":
					XMainUI.loadTemplate(XMainUI.stageId, 'camara.php');
					break;
				case "assembleia":
					XMainUI.loadTemplate(XMainUI.stageId, 'assembleia.php');
					break;
				case "juntas":
					switch(sssection){
						case "aguda":
							XMainUI.loadTemplate(XMainUI.stageId, 'juntaaguda.php');
							break;
						case "arega":
							XMainUI.loadTemplate(XMainUI.stageId, 'juntaarega.php');
							break;
						case "bairradas":
							XMainUI.loadTemplate(XMainUI.stageId, 'juntabairradas.php');
							break;
						case "campelo":
							XMainUI.loadTemplate(XMainUI.stageId, 'juntacampelo.php');
							break;
						case "figueiro":
							XMainUI.loadTemplate(XMainUI.stageId, 'juntafigueiro.php');
							break;
					}
					break;	
			}
			break;
		case "urbanismo":
			XMainUI.loadSlideShow('urbanismo');
			switch(ssection){
				case "pdm":
					switch(sssection){
						case "documento":
							XMainUI.loadTemplate(XMainUI.stageId, 'pdmdoc.php');
							break;
						case "mapas":
							XMainUI.loadTemplate(XMainUI.stageId, 'pdmmapas.php');
							break;
						case "toponimia":
							XMainUI.loadTemplate(XMainUI.stageId, 'pdmtopo.php');
							break;
					}
					break;
				case "obras":
						XMainUI.loadTemplate(XMainUI.stageId, 'obras.php');
					break;
				case "projapoio":
					switch(sssection){
						case "centrohist":
							XMainUI.loadTemplate(XMainUI.stageId, 'centrohistorico.php');
							break;
						case "urbcom":
							XMainUI.loadTemplate(XMainUI.stageId, 'urbcom.php');
							break;
					}
					break;
			}
			break;
		case "educacaojuventude":
			XMainUI.loadSlideShow('educacaojuventude');
			switch(ssection){
				case "cartaeducativa":
					XMainUI.loadTemplate(XMainUI.stageId, 'cartaeducativa.php');
					break;
				case "parqueescolar":
					switch(sssection){
						case "agrupamento":
							XMainUI.loadTemplate(XMainUI.stageId, 'agrupamento.php');
							break;
						case "secundaria":
							XMainUI.loadTemplate(XMainUI.stageId, 'secundaria.php');
							break;
						case "privado":
							XMainUI.loadTemplate(XMainUI.stageId, 'privado.php');
							break;
					}
					break;
				case "formacao":
					switch(sssection){
						case "forcet":
							XMainUI.loadTemplate(XMainUI.stageId, 'forcet.php');
							break;
						case "polo":
							XMainUI.loadTemplate(XMainUI.stageId, 'poloformacao.php');
							break;
					}
					break;
				case "cmj":
					switch(sssection){
						case "apoio":
							XMainUI.loadTemplate(XMainUI.stageId, 'cmjapoio.php');
							break;
						case "internet":
							XMainUI.loadTemplate(XMainUI.stageId, 'cmjinternet.php');
							break;
						case "actividades":
							XMainUI.loadTemplate(XMainUI.stageId, 'cmjactividades.php');
							break;
					}
					break;
				case "juventudetlivres":
					XMainUI.loadTemplate(XMainUI.stageId, 'juventudetlivres.php');
					break;
				}
			break;
		case "cultura":
			XMainUI.loadSlideShow('cultura');
			switch(ssection){
				case "clube":
					switch(sssection){
						case "apresentacao":
							XMainUI.loadTemplate(XMainUI.stageId, 'clubeapresentacao.php');
							break;
						case "programacao":
							XMainUI.loadTemplate(XMainUI.stageId, 'clubeprograma.php');
							break;
					}
					break;
				case "biblioteca":
					switch(sssection){
						case "apresentacao":
							window.open('http://www.bmfigueirodosvinhos.com.pt','_blank');
							//XMainUI.loadTemplate(XMainUI.stageId, 'biblioapresentacao.php');
							break;
						case "actividades":
							XMainUI.loadTemplate(XMainUI.stageId, 'biblioactividades.php');
							break;
					}
					
					break;
				case "publicacoes":
					XMainUI.loadTemplate(XMainUI.stageId, 'publicacoes.php');
					break;
			}
			break;
		case "desporto":
			XMainUI.loadSlideShow('desporto');
			switch(ssection){
				case "instal":
					XMainUI.loadTemplate(XMainUI.stageId, 'desportoinstal.php');
					break;
				case "gab":
					XMainUI.loadTemplate(XMainUI.stageId, 'desportogab.php');
					break;
				case "carta":
					XMainUI.loadTemplate(XMainUI.stageId, 'cartadesportiva.php');
					break;
			}
			break;
		case "accaosocial":
			XMainUI.loadSlideShow('accaosocial');
			switch(ssection){
				case "rede":
					XMainUI.loadTemplate(XMainUI.stageId, 'asrede.php');
					break;
				case "cpcj":
					XMainUI.loadTemplate(XMainUI.stageId, 'ascpcj.php');
					break;
				case "proj":
					XMainUI.loadTemplate(XMainUI.stageId, 'asproj.php');
					break;
				case "inst":
					XMainUI.loadTemplate(XMainUI.stageId, 'asinst.php');
					break;
				case "saude":
					XMainUI.loadTemplate(XMainUI.stageId, 'assaude.php');
					break;
			}
			break;
		case "apoiomunicipe":
			XMainUI.loadSlideShow('apoiomunicipe');
			//XMainUI.loadTemplate(XMainUI.stageId, 'apoio.php');
			switch(ssection){
				case "revista":
					XMainUI.loadTemplate(XMainUI.stageId, 'rim.php');
					break;
				case "registo":
					XMainUI.loadTemplate(XMainUI.stageId, 'registo.php');
					break;
				case "atendimento":
					XMainUI.loadTemplate(XMainUI.stageId, 'atendimento.php');
					break;
				case "servicos":
					switch(sssection){
						case "gabvet":
							XMainUI.loadTemplate(XMainUI.stageId, 'servgabvet.php');
							break;
					}
					break;
				case "actas":
					switch(sssection){
						case "camara":
							XMainUI.loadTemplate(XMainUI.stageId, 'actascm.php');
							break;
						case "assembleia":
							XMainUI.loadTemplate(XMainUI.stageId, 'actasam.php');
							break;
					}
					break;
				case "regulamentos":
					XMainUI.loadTemplate(XMainUI.stageId, 'regulamentos.php');
					break;
				case "eaa":
					XMainUI.loadTemplate(XMainUI.stageId, 'eaa.php');
					break;
				case "requerimentos":
					switch(sssection){
						case "atgeral":
							XMainUI.loadTemplate(XMainUI.stageId, 'reqatgeral.php');
							break;
						case "obraspart":
							XMainUI.loadTemplate(XMainUI.stageId, 'reqatobraspart.php');
							break;
						case "ambientepc":
							XMainUI.loadTemplate(XMainUI.stageId, 'reqatambientepc.php');
							break;
					}
					break;
				case "garantia":
					XMainUI.loadTemplate(XMainUI.stageId, 'garantia.php');
					break;
				case "ajustes":
					XMainUI.loadTemplate(XMainUI.stageId, 'ajustes.php');
					break;
			}
			break;
		case "ambiente":
			XMainUI.loadSlideShow('ambiente');
			switch (ssection) {
				case "intro":
					XMainUI.loadTemplate(XMainUI.stageId, 'amb_intro.php');
					break;
				case "agua":
					switch (sssection) {
						case "intro":
							XMainUI.loadTemplate(XMainUI.stageId, 'amb_agua_intro.php');
							break;
						case "detalhe":
							XMainUI.loadTemplate(XMainUI.stageId, 'amb_agua_detalhe.php');
							break;
					}
					break;
				case "desenv":
					switch (sssection) {
						case "intro":
							XMainUI.loadTemplate(XMainUI.stageId, 'amb_desenv_intro.php');
							break;
						case "detalhe":
							XMainUI.loadTemplate(XMainUI.stageId, 'amb_desenv_detalhe.php');
							break;
					}
					break;
				case "educacao":
					switch (sssection) {
						case "intro":
							XMainUI.loadTemplate(XMainUI.stageId, 'amb_educa_intro.php');
							break;
						case "detalhe":
							XMainUI.loadTemplate(XMainUI.stageId, 'amb_educa_detalhe.php');
							break;
					}
					break;
				case "gestao":
					switch (sssection) {
						case "intro":
							XMainUI.loadTemplate(XMainUI.stageId, 'amb_gestao_intro.php');
							break;
						case "detalhe":
							XMainUI.loadTemplate(XMainUI.stageId, 'amb_gestao_detalhe.php');
							break;
					}
					break;
				case "jardins":
					switch (sssection) {
						case "intro":
							XMainUI.loadTemplate(XMainUI.stageId, 'amb_jardins_intro.php');
							break;
						case "detalhe":
							XMainUI.loadTemplate(XMainUI.stageId, 'amb_jardins_detalhe.php');
							break;
					}
					break;
			}
			break;
		case "pc":
			XMainUI.loadSlideShow('proteccaocivil');
			switch (ssection) {
				case "intro":
					XMainUI.loadTemplate(XMainUI.stageId, 'pc_intro.php');
					break;
				case "objectivos":
					XMainUI.loadTemplate(XMainUI.stageId, 'pc_objectivos.php');
					break;
				case "enquadramento":
					XMainUI.loadTemplate(XMainUI.stageId, 'pc_enquadramento.php');
					break;
				case "areas":
					XMainUI.loadTemplate(XMainUI.stageId, 'pc_areas.php');
					break;
				case "cmpc":
					switch (sssection) {
						case "intro":
							XMainUI.loadTemplate(XMainUI.stageId, 'pc_cmpc_intro.php');
							break;
						case "const":
							XMainUI.loadTemplate(XMainUI.stageId, 'pc_cmpc_const.php');
							break;
					}
					break;
				case "smpc":
					switch (sssection) {
						case "intro":
							XMainUI.loadTemplate(XMainUI.stageId, 'pc_smpc_intro.php');
							break;
						case "cam":
							XMainUI.loadTemplate(XMainUI.stageId, 'pc_smpc_cam.php');
							break;
						case "ccm":
							XMainUI.loadTemplate(XMainUI.stageId, 'pc_smpc_ccm.php');
							break;
						case "cpcm":
							XMainUI.loadTemplate(XMainUI.stageId, 'pc_smpc_cpcm.php');
							break;
					}
					break;
				case "gtf":
					switch (sssection) {
						case "intro":
							XMainUI.loadTemplate(XMainUI.stageId, 'pc_gtf_intro.php');
							break;
						case "cmdfci":
							XMainUI.loadTemplate(XMainUI.stageId, 'pc_gtf_cmdfci.php');
							break;
						case "activ":
							XMainUI.loadTemplate(XMainUI.stageId, 'pc_gtf_actividades.php');
							break;
					}
					break;
				case "contactos":
					XMainUI.loadTemplate(XMainUI.stageId, 'pc_contactos.php');
					break;
			}
			break;
		case "termos":
			XMainUI.loadTemplate(XMainUI.stageId, 'termos.php');
			break;
	}
	
};



/*
 * ALERT MESSAGE
 */

XMainUI.initAlert = function(){
	var objBody = document.getElementsByTagName("body").item(0);
	
	// create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)
	var objOverlay = document.createElement("div");
	objOverlay.setAttribute('id','alertMsg');
	objOverlay.setAttribute('align','center');
	var alertHTML = '<table border="0" width="100%" height="100%"><tr><td align="center" valign="middle">';
	alertHTML +='		<table border="0" cellpadding="0" cellspacing="0" class="alertWindow" calss="alertWindow">';
	alertHTML +='			<tr><td class="alertWindowTop" colspan="2" id="alertTitle">Mensagem</td></tr>';
	alertHTML +='			<tr>';
	alertHTML +='				<td style="width:60px">&nbsp;</td>';
	alertHTML +='				<td class="alertWindowCenter"><div id="alertMessage">Isto &eacute; uma mensagem de teste, bla bla bla bla </div></td>';
	alertHTML +='			</tr>';
	alertHTML +='			<tr>';
	alertHTML +='				<td class="alertWindowBottom" colspan="2"><form><input type="button" value="&nbsp;&nbsp;&nbsp;Ok&nbsp;&nbsp;&nbsp;" onclick="$(' + "'" + 'alertMsg' + "'" + ').hide();XMainUI.alertCallback();return false;" /></form></td>';
	alertHTML +='			</tr>';
	alertHTML +='		</table>';
	alertHTML +='	</td></tr></table>';
	objOverlay.innerHTML = alertHTML;
	//Da problema pq o evento click no botao faz bubble e este tb � chamado
	//objOverlay.onclick = function () {$('alertMsg').hide();alert('this too');XMainUI.alertCallback(); return false;}
	objOverlay.style.display = 'none';
	objOverlay.style.position = 'absolute';
	objOverlay.style.top = '0px';
	objOverlay.style.left = '0px';
	objOverlay.style.width = '100%';
	objOverlay.style.height = '100%';
	objOverlay.style.zIndex = '200';
	objOverlay.style.backgroundImage = 'url(' + XyleCMS.overlayImg + ')';
	objOverlay.style.backgroundRepeat = 'repeat';
	objBody.insertBefore(objOverlay, objBody.firstChild);
};

XMainUI.alert = function(_title, _message){
	/*
	$('alertTitle').update(_title);
	$('alertMessage').update(_message);
	var arrayPageSize = getPageSize();
	Element.setWidth('alertMsg', arrayPageSize[0]);
	Element.setHeight('alertMsg', arrayPageSize[1]);
	$('alertMsg').show();
	*/
	var alertStr = _title + ":\n\n" + _message;
	alert(alertStr);
};

/*
 * SHOW AJAX ERROR
 */

XMainUI.showAjaxError = function(request){
	XMainUI.alertCallback = function(){XMainUI.gotoSection('home');};
	document.getElementById(XMainUI.templateTarget).innerHTML = '<p>&nbsp;</p>';
	XMainUI.templateTarget = undefined;
	XMainUI.alert('Erro!', XError.Ajax + "<br />Erro: " + request.status);						
};


/*
 * TEMPLATE PRELOADER
 */

XMainUI.showLoader = function(_tgtloader){
	if(_tgtloader==undefined){
		if( ($(XMainUI.templateTarget).getWidth()) > 300){
			var imgFile = '<img src="_assets/themes/'+XyleCMS.theme+'/images/general/loader_32.gif" width="32" height="32" />';
		}else{
			var imgFile = '<img src="_assets/themes/'+XyleCMS.theme+'/images/general/loader_16t.gif" width="16" height="16" />';
		}
		var loaderHTML = '<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%"><tr><td align="center" valign="middle">' + imgFile + '<br />' + XyleCMS.feedBack.loading001 + '</td></tr></table>';
		$(XMainUI.templateTarget).innerHTML = loaderHTML;
	}else{
		if( ($(_tgtloader).getWidth()) > 300){
			var imgFile = '<img src="_assets/themes/'+XyleCMS.theme+'/images/general/loader_32.gif" width="32" height="32" />';
		}else{
			var imgFile = '<img src="_assets/themes/'+XyleCMS.theme+'/images/general/loader_16t.gif" width="16" height="16" />';
		}
		var loaderHTML = '<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100%"><tr><td align="center" valign="middle">' + imgFile + '<br />' + XyleCMS.feedBack.loading001 + '</td></tr></table>';
		$(_tgtloader).innerHTML = loaderHTML;
	}
};
