﻿var tagListStatus = false;
//Added 14 Aug 2007 by Gary
var tagArray = new Array();
var topPicksXml = "/ae/xml/top-picks/top-picks-index.xml";
var resultPageUrl = "/ae/jsp/tags/top-picks-result.jsp";
var tagCount = 0;
var currentTopPickPage = 1;
var recordPerPage = 25;


function toggleTagList()
{
	new Effect.toggle("taglist", "slide", {duration: 0.5, afterFinish: onToggleTagList});
	return false;
}

function onToggleTagList()
{
	var toggleTxt = document.getElementById("toggleTxt");
	tagListStatus = !tagListStatus;
	if (!tagListStatus)
	{
		toggleTxt.innerHTML = "المزيد +&nbsp;";
	}
	else
	{
		toggleTxt.innerHTML = "المزيد -&nbsp;";
	}
}

//Added 14 Aug 2007 by Gary, to submit the tag user selected
function submitTag(tag)
{
	var f = document.tagForm;
	//alert("f = "+f);
	if (tag!="")
	{
		f.tag.value = tag;
		//f.action.value = "/ae/jsp/submit-tag.jsp";
		f.submit();
	}
}

//Added 14 Aug 2007 by Gary, Generate Related Tag Content for the Top Picks result page
function setTags(str)
{
	//alert("@setTag str="+str);
	tagArray = str.split(",");
}

function generateTags()
{

	var container = document.getElementById("relatedTagContainer");
	var str = "";
	var extra = "";
	var tagArrayLength = tagArray.length;
	tagCount = 0;

	//alert("generateTags tagArray = "+tagArray);
	//alert("container = "+container);
	//alert("tagArrayLength = "+tagArrayLength);

	//If more than 5 tags, then create the hidden div for all tags
	if (tagArrayLength > 5)
	{
		extra +=
		"<div id=\"taglist\" style=\"z-index: 1; position:absolute; display: none;\">\n"+
		"<div style=\"width: 440px; padding-bottom: 10px; padding-left: 10px; background-color: #eee\">\n";

		for (var i=0; i<tagArrayLength; i++)
		{
			extra += "<span class=\"relatedTag\"><a href=\"#\">" + decode(tagArray[i])+ "</a></span>\n";
		}
			
		extra += "</div>\n</div>\n";
	}

	//If tagArray is not empty, then show its content
	if (tagArrayLength > 0)
	{
		str +=
			"<form name=\"tagForm\" id=\"tagForm\" method=\"post\" action=\"\">\n"+
			"<input type=\"hidden\" name=\"tag\" value=\"\"/>\n"+
			"</form>";

		str +=
			"<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"507\" class=\"relatedTagTable\">\n"+
			"<tr>\n"+
			"<td class=\"relatedTag\" align=\"right\" style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis; overflow-y: hidden;\">";

		for (var j=0; j<tagArrayLength; j++)
		{
			if (tagCount < 5) {
				str += "<span class=\"relatedTag\"><a href=\"#\">" +decode(tagArray[j])+ "</a></span>\n";
			}
			tagCount++;
		}

		str +=
			"</td>\n"+
			"<td width=\"80\" class=\"relatedTag\" style=\"font-weight: bold; font-size: 9pt;\" align=\"left\">\n";

		
		if (tagArrayLength > 5)
		{
			str += "<a href=\"javascript:;\" onclick=\"toggleTagList()\"><div id=\"toggleTxt\" style=\"font-weight: bold; display: inline; margin: 0;\">المزيد +&nbsp;</div></a>";
		}

		str += "</td></tr></table>";
		

		container.innerHTML = extra + str;
		//container.innerHTML = extra + UTF8.decode(UTF8.encode(str));
	}
}

function encode(string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
}

function decode(utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
}


UTF8 = {
	encode: function(s){
		for(var c, i = -1, l = (s = s.split("")).length, o = String.fromCharCode; ++i < l;
			s[i] = (c = s[i].charCodeAt(0)) >= 127 ? o(0xc0 | (c >>> 6)) + o(0x80 | (c & 0x3f)) : s[i]
		);
		return s.join("");
	},
	decode: function(s){
		for(var a, b, i = -1, l = (s = s.split("")).length, o = String.fromCharCode, c = "charCodeAt"; ++i < l;
			((a = s[i][c](0)) & 0x80) &&
			(s[i] = (a & 0xfc) == 0xc0 && ((b = s[i + 1][c](0)) & 0xc0) == 0x80 ?
			o(((a & 0x03) << 6) + (b & 0x3f)) : o(128), s[++i] = "")
		);
		return s.join("");
	}
};


//Added 14 Aug 2007 by Gary, read Top Picks index page XML (ranking)
//and build result table
function getTopPicks(page, containerName)
{		
	if ( (!page)||(page<1) )
	{
		page = 1;
	}
	currentTopPickPage = page;

	containerName = (!containerName) ? "topPicksIndexTable" : containerName;
	var container = document.getElementById(containerName);
	//XXXalert("@getTopPicks, container = "+container);
	
	var myAjax = new Ajax.Request(
		topPicksXml,
		{ 
			method: 'get',
			//postBody: paras, 
			//parameters: paras, 
			onSuccess: delegate(this, showTopPicks, page, container),
			onFailure: function(){ /*alert('@getTopPicks AJAX went wrong ...')/**/ }
		}
	);
}

function showTopPicks(req, obj, page, container)
{
	var xmlDoc = req.responseXML.documentElement;
	var result = "";
	//XXXalert("@showTopPicks req = "+req.responseText);
	//XXXalert("@showTopPicks page = "+page);
	//XXXalert("@showTopPicks container = "+container);

	if (req.responseText.indexOf("<tag>")>-1)
	{	
		var tagNode = xmlDoc.getElementsByTagName("tag");
		var tagCount = tagNode.length;
		//XXX	alert("@showTopPicks, tagCount = "+tagCount);
		
		var tagnameNode = xmlDoc.getElementsByTagName("tagName");
		var pageviewchangeNode = xmlDoc.getElementsByTagName("pageViewChange");
		var currentrankNode = xmlDoc.getElementsByTagName("currentRank");
		var prevrankNode = xmlDoc.getElementsByTagName("prevRank");

		result += 
		"<table width=\"505\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">"+
		"<form action=\""+resultPageUrl+"\" name=\"tagResultForm\" id=\"tagResultForm\" method=\"POST\">"+
			"<input type=\"hidden\" name=\"tag\" value=\"\"/>\n"+
		"</form>";

		result += 
		"<tr>"+
			"<td colspan=\"9\">"+
				"<img src=\"/ae/images/spacer.gif\" alt=\"\" height=\"8\" width=\"505\"/>"+
			"</td>"+
		"</tr>";

		var recordCnt = 0;
		var fromTag = (page-1)*recordPerPage;
		var toTag = fromTag + recordPerPage;
		for (var i=fromTag; i<toTag; i++)
		{
			var tagName = tagnameNode[i].childNodes[0]==null?"--":tagnameNode[i].childNodes[0].nodeValue;
			var pageViewChange = pageviewchangeNode[i].childNodes[0]==null?"--":pageviewchangeNode[i].childNodes[0].nodeValue;
			var currentRank = currentrankNode[i].childNodes[0]==null?"--":currentrankNode[i].childNodes[0].nodeValue;
			var prevRank = prevrankNode[i].childNodes[0]==null?"--":prevrankNode[i].childNodes[0].nodeValue;

			result +=
			"<tr>"+
				"<td colspan=\"9\"><img src=\"/ae/images/spacer.gif\" alt=\"\" height=\"5\" width=\"505\"/></td>"+
			"</tr>"+
			"<tr>"+
				"<td><img src=\"/ae/images/spacer.gif\" alt=\"\" height=\"15\" width=\"9\"/></td>"+
				"<td id=\"topPicksInfoTitle\" style=\"color:#000\" width=\"68\">"+currentRank+"</td>"+
				"<td><img src=\"/ae/images/spacer.gif\" alt=\"\" height=\"15\" width=\"11\"/></td>"+
				"<td id=\"topPicksContentDetails\" width=\"197\"><a href=\"javascript:showTagResult('"+tagName+"')\">"+tagName+"</a></td>"+
				"<td><img src=\"/ae/images/spacer.gif\" alt=\"\" height=\"15\" width=\"11\"/></td>"+
				"<td id=\"topPicksContentDetails\" width=\"76\">"+pageViewChange+"%</td>"+
				"<td><img src=\"/ae/images/spacer.gif\" alt=\"\" height=\"15\" width=\"59\"/></td>"+
				"<td id=\"topPicksContentDetails\" width=\"66\">"+prevRank+"</td>"+
				"<td><img src=\"/ae/images/spacer.gif\" alt=\"\" height=\"15\" width=\"8\"/></td>"+
			"</tr>"+
			"<tr>"+
				"<td colspan=\"9\"><img src=\"/ae/images/spacer.gif\" alt=\"\" height=\"5\" width=\"505\"/></td>"+
			"</tr>";

			recordCnt++;
			if (recordCnt % 5 == 0)
			{
				result += "<tr><td id=\"dottedLineHorizontal\" colspan=\"9\"></td></tr>";
			}
		}//End for

		
		result +=
		//"<tr><td id=\"dottedLineHorizontal\" colspan=\"9\"></td></tr>"+
		"<tr>"+
			"<td colspan=\"9\"><img src=\"/ae/images/spacer.gif\" alt=\"\" height=\"11\" width=\"505\"/></td>"+
		"</tr>"+
		"<tr>"+
			"<td align=\"left\" height=\"11\" width=\"505\" colspan=\"9\">";

		if (page == 2)
		{
			result += "<a href=\"javascript:getTopPicks("+(page-1)+")\">السابق</a>";
		}
		if (page == 1)
		{
			result += "<a href=\"javascript:getTopPicks("+(page+1)+")\">التالي</a>";
		}

		result += "</td></tr></table>";
		//XXXalert("result = "+result);

		$(container).innerHTML = result;
	}
	else
	{
		//XXXalert('tag index error');
	}
}

function showTagResult(tag)
{
	var f = document.tagResultForm;
	if (tag!="")
	{
		f.tag.value = tag;
		f.submit();
	}
}

function toResultPage(page)
{
	var f = document.tagResultForm;
	f.pageNo.value = page;
	f.submit();
}
