/* -------------------------------------------------------------
THE AJAX comment
Written by Sean Fannan

If you would like to use this comment, please
leave these comments here.  If you need to contact me
for any reason, my email address is sfannan@gmail.com.  Enjoy
---------------------------------------------------------------*/
/* ------------------------------------------------------
Name:		comment.js
Description:	functions for ajax commenting, adapted from Sean Fannan
Author:		Grita Fuerte - JP
Author URI:	http://www.gritafuerte.com
Date:			2007-11-26

Last Edit		Who	Description
-----------		---	---------------
2007-12-13              JP      Modified verify_new function for email validation
2007-12-14              JP      Added condition at prepare_entries function
2007-12-19		JP 	Added process_tab function for tab ajax
2007-12-21		JP	Removed Process_tab function

------------------------------------------------------
*/


/* CONSTANTS */
var phpFileName = template_url()+'/tv/functions_comment.php';

// Key function to send Ajax packet to php file.
function sendPacket(fileName, strQuery, functionName) {
		var myConn = new XHConn();
		if (!myConn) 
			alert("XMLHTTP not available. Try a newer/better browser.");
		myConn.connect(fileName, "POST", strQuery, functionName);
}
// toggles the message form from visible to hidden
function showPost(linkElement, swap) {
	var formElement = document.getElementById('postMessage');
	if (swap) {
		linkElement.innerHTML = 'Grita';
		linkElement.onclick = function () { showPost(this, 0); };
		formElement.style.display = 'none';
	}
	else {
		linkElement.innerHTML = 'Oculta Grito';
		linkElement.onclick = function () { showPost(this, 1); };
		formElement.style.display = 'block';
		
	}
}
/* Verifies the form has no missing fields */
function verify_new() {
var comment = document.getElementById('comment');
var name = document.getElementById('name');
var email = document.getElementById('email');
var postid = document.getElementById('postid');
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (comment.value.length == 0 || name.value.length == 0 || email.value.length == 0)
	alert("There are empty fields");
else if (!filter.test(email.value)) 
	alert("Please provide a valid email address");
else
	prepare_new(comment, name, postid, email);
}
// Clears the form
function clear_new() {
var comment = document.getElementById('comment');
var name = document.getElementById('name');
var email = document.getElementById('email');
comment.value = '';
//name.value = '';
//email.value = '';
}

/* PREPARE FUNCTIONS */
// sends the request for all the entries on a given page
function prepare_entries() {
	document.getElementById('commentblock').innerHTML = '<img src="'+template_url()+'/images/loading.gif" border="0">';
	var page = document.getElementById('page');
	var postid = document.getElementById('postid');
	if ( null != postid ) {
		strQuery = 'type=1&page='+page.value+'&postid='+postid.value;
		var functionName = function(oXML) { process_entries(oXML); };
		sendPacket(phpFileName, strQuery, functionName);
	}
}
// sends a request for inserting an entry into the database
function prepare_new(comment, name, postid, email) {
	strQuery = 'type=2&message='+comment.value+"&author="+name.value+'&postid='+postid.value+'&email='+email.value;
	var functionName = function(oXML) { process_new(oXML); };
	sendPacket(phpFileName, strQuery, functionName);
	//showPost(document.getElementById('postLink'), 0);
	clear_new();
	process_page(1);
}
/* PROCESS FUNCTIONS */
// processes the incoming entries from a given page
function process_entries(oXML) {
	var response = oXML.responseText.split("||");
	var entries = new Array();
	var count = response[0];
	var pageHTML = response[1];
	var comments_number;

	if (count==0) {
		comments_number = 'Sin comentarios';
	} else if (count==1) {
		comments_number = '1 comentario';
	} else {
		comments_number = count+' comentarios';
	}
	document.getElementById('comments').innerHTML = comments_number;
	
	var htmlText = '';
	var commentblock = document.getElementById('commentblock');
	var ctr;
	var oddcomment;
	
	htmlText = '<ol class=\"commentlist\">';
	for (i = 2; i < response.length-1; i++) {
		ctr = i + 1;
		if((ctr%2)==0) oddcomment = '';
		else oddcomment = 'alt';

		entries = response[i].split("~");
		if (entries[0] != '') {		// lazy code, loops through all ENTRIESPERPAGE
			htmlText += '<li class=\"'+oddcomment+'\" id=\"comment-'+entries[4]+'\">';
			htmlText += entries[1];		//author name
			htmlText += ' de <img src=\"http://img.gritafuerte.com/flags/flag_'+entries[2]+'.gif\" />';
			htmlText += ' en '+entries[3];
			htmlText += '<div class=\"commenttext\"><p>'+entries[0]+'</p></div></li>';
		}
	}
	htmlText += '</ol>';
	
	document.getElementById('pageInfo').innerHTML = pageHTML;
	commentblock.innerHTML = htmlText;	// update the div
	
}

// processes a new entry, and eventually calls prepare_entries()
function process_new(oXML) {
	var response = oXML.responseText;
	if (response=='1') prepare_entries();
	else alert(response);
}
// retrieve entries for a new page
function process_page(page) {
	document.getElementById('page').value = page;
	prepare_entries();
}