<!--
/*
Funciones para manipular información de mensajes y tablones de mensajes con ajax.
*/

function sendMessages (msgboard, newCommentTemplate, formWaitingTemplate, buttonWaitingTemplate, successMsgTemplate, errorMsgTemplate, srcElemId, targetElemId ) {
	var nombre = $F('nombre');
	var email = $F('email');
	var comentario = $F('comentario');
	
	comentario = encodeURIComponent(comentario);
	nombre = encodeURIComponent(nombre);
	
	if (nombre=='' || nombre=='Tu nombre...') {
		alert('Ingrese su nombre por favor.');
		$('nombre').focus;
		return;
	}

	if (comentario=='' || comentario=='Escribe tu mensaje...') {
		alert('Ingrese un mensaje valido por favor.');
		$('comentario').focus;
		return;
	}
	
	var oldTargetData = $(targetElemId).innerHTML;
	var oldSrcData = $(srcElemId).innerHTML;
	$(srcElemId).href = "#"+targetElemId;
	$(srcElemId).onclick = "";
	$(srcElemId).innerHTML = $(buttonWaitingTemplate).innerHTML;
	$(targetElemId).innerHTML = $(formWaitingTemplate).innerHTML;
	
	var url = '/app/application';
	var pars = 	"action=msgBoard"+
				"&mensaje="+comentario+
				"&nombreAutor="+nombre+
				"&msgboard="+msgboard+
				"&email="+email;
	
	new Ajax.Request(url,{	
		method:'POST',
		parameters: pars,
		encoding: 'ISO-8859-1',
		requestHeaders: {Accept: 'application/json'},
		onSuccess : function(resp) {
			$(targetElemId).innerHTML = oldTargetData;
			$(srcElemId).innerHTML = oldSrcData;
			
			var data = resp.responseText.evalJSON(true);
			
			if(data.autor != undefined && data.autor != null){
				var author = data.autor;
			} else {
				var author = "";
			}
			if(data.comentario != undefined && data.comentario != null){
				var comment = data.comentario;
			} else {
				var comment = "";
			}
			if(data.email != undefined && data.email != null){
				var mail = data.email;
			} else {
				var mail = "";
			}
			if(data.date != undefined && data.date != null){
				var date = data.date;
			} else {
				var date = "";
			}
			
			var error = data.bError;
			if (data.errorMensaje != undefined && data.errorMensaje != null) {
				var errorMsg = data.errorMensaje;
			} else {
				var errorMsg = "";
			}
			if(data.mensajeRespuesta != undefined && data.mensajeRespuesta != null){
				var msg = data.mensajeRespuesta;
			} else {
				var msg = "";
			}
			if ($(newCommentTemplate).innerHTML != "") {
				var templComment = new Template($(newCommentTemplate).innerHTML);
			}
			if ($(errorMsgTemplate).innerHTML != "") {
				var templErrorMsg = new Template($(errorMsgTemplate).innerHTML);
			}
			if ($(successMsgTemplate).innerHTML != "") {
				var templSuccessMsg = $(successMsgTemplate).innerHTML;
			}
			var commentData = {author: author, mail: mail, message: comment, date: date};
			var errorData = {errorMsg: errorMsg};
			
			if (error == -1) {
				if ($(newCommentTemplate).innerHTML != "") {
					$(targetElemId).innerHTML = templComment.evaluate(commentData);
				}
				if ($(successMsgTemplate).innerHTML != "") {
					$(srcElemId).innerHTML = templSuccessMsg;
				}
			}else{
				if ($(errorMsgTemplate).innerHTML != "") {
					$(srcElemId).innerHTML = templErrorMsg.evaluate(errorData);
				}
			}
			
			reloadMessages();
		},
	onFailure: function(){
			$(targetElemId).innerHTML = oldTargetData;
			$(srcElemId).innerHTML = oldSrcData;
			if ($(errorMsgTemplate).innerHTML != "") {
				var templErrorMsg = new Template($(errorMsgTemplate).innerHTML);
				var errorData = {errorMsg: "Ha ocurrido un problema con el comentario, intente luego."};
				if ($(errorMsgTemplate).innerHTML != "") {
					$(srcElemId).innerHTML = templErrorMsg.evaluate(errorData);
				}
			}
		}
	});
}

function getMessages(msgboardId, quantity, itemsByPage, hours, pageTempl, commentTempl, targetElemId, paginationTempl, pageNumbersTempl, targetPaginationElemId){
	if (msgboardId == '' || msgboardId == null) {
		alert('ID del grupo de mensajes incorrecto.');
		return;
	}

	if (quantity < 0) {
		alert('Cantidad de mensajes incorrecta.');
		return;
	}
	
	if (hours < 0) {
		alert('Horas de mensajes incorrecta.');
		return;
	}
	
	var postTemplate = new Template($(commentTempl).innerHTML);
	var pageTemplate = new Template($(pageTempl).innerHTML);
	var paginationTemplate = new Template($(paginationTempl).innerHTML);
	var pageNumbersTemplate = new Template($(pageNumbersTempl).innerHTML);
	/*
	Ejemplo de como setear correctamente el valor de un template desde el html:
	var templateRow = new Template($("templateRow").innerHTML.replace(/#%7B([a-zA-Z0-9_-]+)%7D/gi, "#{$1}"));
	*/
	
	//alert($(pageTempl).innerHTML);
	var url = '/app/application';
	var pars = 	"action=getMessages"+
				"&msgboardId="+msgboardId+
				"&quantity="+quantity+
				"&hours="+hours;
	
	new Ajax.Request(url,{	
		method:'POST',
		parameters: pars,
		encoding: 'ISO-8859-1',
		requestHeaders: {Accept: 'application/json'},
		onSuccess: function(resp){
			var respData = resp.responseText.evalJSON(true);
			var msg = respData.msg;
			var data = respData.data;
			var error = respData.error;
			var outStr = "";
			var outPaginationStr = "";
			var tempPaginationStr = "";
			var pagesQuantity = (respData.numberOfData / itemsByPage).ceil();
			var pagesContents = new Array(pagesQuantity); 
			var pagesNumbersContents = new Array(pagesQuantity); 
			if (error == 0) {
				
				for (var i = 0 ; i < pagesQuantity ; i++){
					var tempStr = "";
					for (var j = (i*itemsByPage) ; j < ((i*itemsByPage) + itemsByPage) && j < data.length ; j++) {
						tempStr += postTemplate.evaluate($H(data[j]));
					}
					
					if (i == 0){ 
						var dispStyle = "style=\"display: block;\""; 
					} else { 
						var dispStyle = "style=\"display: none;\""; 
					}
					
					var templValues = {pageNum: (i+1), styleDisplay: dispStyle, commentTemplate: tempStr};
					
					pagesContents[i] = pageTemplate.evaluate(templValues);
					tempPaginationStr += pageNumbersTemplate.evaluate(templValues);
				}
				
				pagesContents.each( function(item) {
					outStr += item;
				});
				
				$(targetElemId).innerHTML = outStr;
				
				var templValues = {pageNumbersTemplate: tempPaginationStr};
				outPaginationStr = paginationTemplate.evaluate(templValues);
				
				if (pagesQuantity > 0){
					$(targetPaginationElemId).innerHTML = outPaginationStr;
				}
			} else {
				$(targetElemId).innerHTML = "<div>"+respData.errorMsg+"</div>";
			}
			getMessagesCompleted(respData);
		},
		onFailure: function(){
			$(targetElemId).innerHTML = "<div>Ha ocurrido un problema para listar los comentarios, intente luego.</div>";
		}
	});
}

function reportAbuse (msgboardId, msgId, quantity, hours, maxAbusive) {
	var url = '/app/application';
	var pars = 	"action=reportAbuse"+
				"&msgboardId="+msgboardId+
				"&msgId="+msgId+
				"&quantity="+quantity+
				"&hours="+hours+
				"&maxAbusive="+maxAbusive;
	
	new Ajax.Request(url,{	
		method:'POST',
		parameters: pars,
		encoding: 'ISO-8859-1',
		requestHeaders: {Accept: 'application/json'},
		onSuccess: function(resp){
			var respData = resp.responseText.evalJSON(true);
			var msg = respData.msg;
			var abuseNum = respData.abuseNumbers;
			var error = respData.error;
			var errorMsg = respData.errorMsg;
			if (error == 0) {
				//alert(msg+"  num: "+abuseNum);
				$('abuse'+msgId).innerHTML = "Abuso reportado";
			} else {
				alert(errorMsg);
				$('abuse'+msgId).innerHTML = "Abuso reportado";
			}
		},
		onFailure: function(){
			alert("Ha ocurrido un problema para reportar abuso, intente luego.");
		}

	});
}

//-->