/*
 * Shaohui Zheng
 * 2007-2-11 12:31
 */

/*
 * switch to specified language
 * make sure that it jump to the same page's differnet version
 */
  
function switch_language(base_url)
{
	start = window.location.href.lastIndexOf("/");
	page_name = window.location.href.substr(start+1);
	window.location.href = base_url + page_name;
}	


function getXMLHTTPRequest(){
	var xRequest=null;
	if (window.XMLHttpRequest){
		xRequest = new XMLHttpRequest();
	}
	else if(typeof window.ActiveXObject != "undefined" ){
		xRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xRequest;
}

//params in "param1=xxx&param2=xxx" format
function sendAjaxQuery(onReadyFunc,url,params,req){
	try {
		req.onreadystatechange = onReadyFunc;
		req.open("GET",url + "?" + params,true);
		req.send(null);
	}catch( e ) {
		alert( e )};
}

function post_comment(){
	//debugger;
	if (/^\s*$/.test($("guest_nick").value))
	{
		alert("You need to input your Nick Nmae");
		return 0;
	}

	if (/^\s*$/.test($("comment_content").value))
	{
		alert("You need to input your comment.");
		return 0;
	}

	page_id = $("page_id").value;
	if (/^\s*$/.test(page_id))
	{
		alert("page_ID can not be null");
		return 0;
	}

	var params = "guest_nick=" + $("guest_nick").value;
	params += "&page_id=" + page_id;
	params += "&languages_id=" + $("languages_id").value;
	params += "&guest_email=" + $("guest_email").value;
	params += "&guest_url=" + $("guest_url").value;
	params += "&languages_id=" + $("languages_id").value;
	params += "&comment_content=" + $("comment_content").value;
	params += "&post_code=" + $("post_code").value;
	params += "&command=post_comment";

	var req = getXMLHTTPRequest()
	sendAjaxQuery(function(){
		if(req.readyState == 1){
			$("message").innerHTML = '<span class=\"message\">Posting your comment...</span>'
			window.setTimeout(function(){$('message').innerHTML=""},3000)
		}
		else if(req.readyState == 4)//READY_STATE_COMPLETE
		{
			if(req.status == 200)
			{
				xmlDoc = req.responseXML;
				var ret_val = Number(xmlDoc.getElementsByTagName("ret_val")[0].firstChild.data);
				var ret_msg = xmlDoc.getElementsByTagName("ret_msg")[0].firstChild.data;
				
				if ( ret_val == 0 )
				{
					alert(ret_msg);
				}
				else
				{
					$("commentlist").innerHTML += "<li class='alt'>"  
												+  "<strong>" + htmlentities($("guest_nick").value) + "said:</strong>"
												+  "<small class='commentmetadata'><a href='' title=''>August 2nd, 2008 at 12:26 am</a> </small>" 
												+  "<div> " + htmlentities($("comment_content").value) + "</div>"
												+  "</li>";

					$("comment_content").value = "";
					fetch_user_info();
				}
				$("message").innerHTML = '<span class=\"message\">' + ret_msg + '</span>'

				//alert(temp);
			}
		}
	},'post_comment.php',params,req);
}


// fetch the user information if the user have post the comments before.
// and help to fill the form.

function fetch_user_info()
{
	var params = "command=fetch_info";

	var req = getXMLHTTPRequest()
	sendAjaxQuery(function(){
		if(req.readyState == 4)//READY_STATE_COMPLETE
		{
			if(req.status == 200)
			{
				xmlDoc = req.responseXML;
				
				var guest_nick = "", guest_email = "", guest_url = "", post_code = "";
				try {
					guest_nick = xmlDoc.getElementsByTagName("guest_nick")[0].firstChild.data;
				} catch (e){};
				try {
					guest_email = xmlDoc.getElementsByTagName("guest_email")[0].firstChild.data;
				} catch (e){};
				try {
					guest_url = xmlDoc.getElementsByTagName("guest_url")[0].firstChild.data;
				} catch (e){};

				post_code = xmlDoc.getElementsByTagName("post_code")[0].firstChild.data;

				if ($("guest_nick"))
				{
					$("guest_nick").value = guest_nick;
					$("guest_email").value = guest_email;
					$("guest_url").value = guest_url;
					$("post_code").value = post_code;
				}
			}
		}
	},'post_comment.php',params,req);
}

function htmlentities(str)
{
	str = str.replace(/</g,"&lt;");
	str = str.replace(/>/g,"&gt;");
	return str;
}


