
if (typeof window.addEventListener != 'undefined') {
	//.. gecko, safari, konqueror and standard
	window.addEventListener('load', ZMPT_Init, false);
}
else if (typeof document.addEventListener != 'undefined') {
	//.. opera 7
	document.addEventListener('load', ZMPT_Init, false);
}
else if (typeof window.attachEvent != 'undefined') {
	//.. win/ie
	window.attachEvent('onload', ZMPT_Init);
}

var msgtimeout = null;

function ZMPT_Init() {
	msgtimeout = setTimeout("ZMPT_ActualizaMensagens()", actualiza*1000);
	
	if (anonimo && !permite_anonimo) return;
	if (ipbloqueado) return;
	
	if (tempoesperaip > 0) {
		ZMPT_BotaoIPEspera();
		setTimeout(botaoaviso?"ZMPT_BotaoAviso()":"ZMPT_Inputs()", tempoesperaip*1000);
	}
	else if (botaoaviso) ZMPT_BotaoAviso(); else ZMPT_Inputs();
} // ZMPT_Init()


function ZMPT_BotaoAviso() {
	var botao = "<a class='zmptshout_botao' onclick='ZMPT_Inputs()'>"+(msgaviso!=""?"<b>"+msgaviso+"</b>":"")+"Clique aqui para escrever uma nova mensagem</a>";
	
	document.getElementById("zmptshout_inputs").innerHTML = botao;
} // ZMPT_BotaoAviso()

function ZMPT_BotaoIPEspera() {
	var botao = "<a class='zmptshout_botao'>"+(msgaviso!=""?"<b>"+msgaviso+"</b>":"")+"Tem de esperar uns segundos para poder voltar a escrever uma mensagem</a>";
	
	document.getElementById("zmptshout_inputs").innerHTML = botao;
} // ZMPT_BotaoIPEspera()

function ZMPT_BotaoEspere() {
	var botao = "<a class='zmptshout_botao'>Espere por favor...</a>";
	
	document.getElementById("zmptshout_inputs").innerHTML = botao;
} // ZMPT_BotaoIPEspera()

function ZMPT_Inputs() {
	var texto = "<label>Nome:</label>";
	texto += "<input name='zmtpshout_utilizadorid' type='hidden' value='"+utilizadorid+"'>";
	texto += "<input name='zmtpshout_nome' type='text' value='"+nome+"' "+(anonimo?"":"disabled")+">";
	texto += "<label>Mensagem:</label>";
	texto += "<textarea name='zmtpshout_texto'></textarea>";
	texto += "<a class='zmptshout_botao' onclick='ZMPT_EnviaPorAjax()'>Enviar</a>";
	
	document.getElementById("zmptshout_inputs").innerHTML = texto;
} // ZMPT_Inputs()

function ZMPT_ActualizaMensagens() {
	parametros = new Array();
	parametros['zmtpshout_operacao'] = "mostramensagens";
	
	new Ajax.Request("index.php", {
			method: "post",
			parameters: parametros,
			onSuccess: function() { ZMPT_MostraMensagens(xmlhttp.responseText); msgtimeout = setTimeout("ZMPT_ActualizaMensagens()",actualiza*1000); }
		});
} // ZMPT_ActualizaMensagens()

function ZMPT_EnviaPorAjax() {
	parametros = new Array();
	parametros['zmtpshout_operacao'] = "novamensagem";
	parametros['zmtpshout_utilizadorid'] = document.getElementsByName("zmtpshout_utilizadorid")[0].value;
	parametros['zmtpshout_nome'] = document.getElementsByName("zmtpshout_nome")[0].value;
	parametros['zmtpshout_texto'] = document.getElementsByName("zmtpshout_texto")[0].value;
	if (parametros['zmtpshout_texto'] == "") {
		alert("Tem de escrever algo no texto da mensagem");
		return false;
	}
	
	ZMPT_BotaoEspere();
	clearTimeout(msgtimeout);
	
	new Ajax.Request("index.php", {
			method: "post",
			parameters: parametros,
			onSuccess: function() { ZMPT_MostraMensagens(xmlhttp.responseText); msgtimeout = setTimeout("ZMPT_ActualizaMensagens()", actualiza*1000); if (esperaip > 0) { ZMPT_BotaoIPEspera(); setTimeout(botaoaviso?"ZMPT_BotaoAviso()":"ZMPT_Inputs()", esperaip*1000); } else ZMPT_Inputs(); },
			onFailure: function() { alert("Ocorreu um erro, tente colocar a mensagem mais tarde."); ZMPT_Inputs(); }
		});
} // ZMPT_EnviaPorAjax()

function ZMPT_MostraMensagens(lista) {
	if (lista.substr(0,4) == "ERRO") alert(lista);
	else document.getElementById("zmptshout_caixa").innerHTML = lista;
} // ZMPT_MostraMensagens()


var Ajax = function() {
	
	var _privado = {
		xmlhttp: null,
		
		stripScripts: function(texto) {
			return texto.replace(new RegExp("<script[^>]*>([\\S\\s]*?)<\/script>", 'img'), '');
		},

		extractScripts: function(texto) {
			texto = texto.match(new RegExp("(<script[^>]*>).*?(<\/script>)", "img"));
			if (texto == null) return texto;
			
			for(i=0; i<texto.length; i++) {
				texto[i] = texto[i].replace(new RegExp("<script[^>]*>(.*?)<\/script>", "img"), "$1");
			}
			return texto;
		},
		
		Init_xmlhttp: function(url, parametros) {
			var xmlhttp;
			if (window.XMLHttpRequest) {
				// IE7+, Firefox, Chrome, Opera, Safari
				xmlhttp = new XMLHttpRequest();
			}
			else if (window.ActiveXObject) {
				// IE6, IE5
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			else parametros.onFailure();
			
			xmlhttp.onreadystatechange = function()
			{
				switch(xmlhttp.readyState) {
					case 4:
						eval(parametros.onSuccess(xmlhttp));
						break;
				}
			}
			var p = "";
			if (parametros.parameters) {
				for (i in parametros.parameters) {
					p += (p == "" ? (parametros.method == "get" ? "?" : "") : "&") + i + "=" + parametros.parameters[i];
				}
			}
			
			xmlhttp.open(parametros.method, url+(parametros.method=="get"?p:""), true);
			if (parametros.method == "post") {
				xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				xmlhttp.setRequestHeader("Content-length", parametros.parameters?parametros.parameters.length:0);
				xmlhttp.setRequestHeader("Connection", "close");
			}
			xmlhttp.send(parametros.method=="get"?null:p);
			
			return xmlhttp;
		} // Init_xmlhttp()
	};
	
	var _publico = {
		Updater: function(div, url, parametros) {
			if (($(div) == null) || (url == "")) return false;
			
			p = { method: parametros.method?parametros.method.toLowerCase():"post",
				  parameters: parametros.parameters,
				  onSuccess: function(xmlhttp) {
				  					var codigo = xmlhttp.responseText;
									var scripts = _privado.extractScripts(codigo);
									codigo = _privado.stripScripts(codigo);
				  					$(div).innerHTML = codigo;
									if ((parametros.evalScripts) && scripts) {
										for(s=0; s<scripts.length; s++) {
											eval(scripts[s]);
										}
									};
									if (parametros.onSuccess) { parametros.onSuccess() };
								},
				  onFailure: function() {
				  					if (parametros.onFailure) { parametros.onFailure() };
								}
				}
				
			if (!(xmlhttp = _privado.Init_xmlhttp(url, p))) return false;
			
			return true;
		},
		
		Request: function(url, parametros) {
			p = { method: parametros.method?parametros.method.toLowerCase():"post",
				  parameters: parametros.parameters,
				  onSuccess: function(xmlhttp) {
				  					var codigo = xmlhttp.responseText;
									if (parametros.onSuccess) { parametros.onSuccess() };
								},
				  onFailure: function() {
				  					if (parametros.onFailure) { parametros.onFailure() };
								}
				}
				
			if (!(xmlhttp = _privado.Init_xmlhttp(url, p))) return false;
			
			return true;
		}
	};
	
	return _publico;
}();

function JanelaTxTy() {
	var tx = 0, ty = 0;
	if (typeof(window.innerWidth) == 'number') {
		//Non-IE
		tx = window.innerWidth;
		ty = window.innerHeight;
	} else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
		//IE 6+ in 'standards compliant mode'
		tx = document.documentElement.clientWidth;
		ty = document.documentElement.clientHeight;
	} else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	return [tx, ty];
} // JanelaTxTy()

function getScrollXY() {
	var scrOfX = 0, scrOfY = 0;
	if (typeof(window.pageYOffset) == 'number') {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [scrOfX, scrOfY];
} // getScrollXY()

