var currBook;

function getDescription(id) {
	if (undefined != currBook && currBook.id == id)
	{
		//alert("cleaning up");
		var c1 = $('comm'+currBook.id);
		if (c1.visible())
		{
			Element.hide(c1);
			$('ac'+currBook.id).update(getCommentsLinkMsg(currBook.numComments));	
		}
	}

	var desc = $('desc'+id);
	desc.toggle();
	if (desc.visible()) {
		new Ajax.Request('/description.php', {
			method: 'get',
			parameters: {itemid: id},
			onSuccess: function(transport) {
				desc.update(transport.responseText);
			},
			onFailure: function() { alert("Unexpected problem while retrieving description."); }
			});
		$('ad'+id).update("Hide book description")
	} else {
		$('ad'+id).update("Show book description")
	}
	
}

function getCommentsLinkMsg(numComments)
{
	if (numComments == 0) msg = "Add a comment";
	else if (numComments == 1) msg = "1 comment";
	else  if (numComments > 1) msg = numComments + " comments";
	return msg;
}

function getComments(id,numComments,me) {
	//hide description
	var desc = $('desc'+id);
	if (desc != undefined && desc.visible()) {
		Element.hide(desc);
		$('ad'+id).update("Show book description");
	}

	if (undefined != currBook) {
		if (currBook.id != id) {
			var c1 = $('comm'+currBook.id);
			if (c1.visible()) {
				Element.hide(c1);
				$('ac'+currBook.id).update(getCommentsLinkMsg(currBook.numComments));	
			}
		} else {
			numComments = currBook.numComments;
		}
	}
	
	var comm = $('comm'+id);
	comm.toggle();
	if (comm.visible()) {
		var commCount = filterComments(id);
		$('karma').value = id;
		Element.show('comments-template');
		var comments = $('comments-template').remove();
		$('comm'+id).appendChild(comments);
		$('comments').update(getCommentsLinkMsg(commCount));
		$('ac'+id).update("Hide comments");
		currBook = {'id':id, 'numComments':commCount};
	} else {
		$('ac'+id).update(getCommentsLinkMsg(numComments));
		currBook = {'id':id, 'numComments':numComments};
	}
}

function filterComments(itemid) {
	var count = 0;
	var strClassName = itemid.toString();
	var oElm = $('commentlist'), strTagName = "li";
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for (var i=0; i<arrElements.length; i++) {
        oElement = arrElements[i];     
        if (!oRegExp.test(oElement.className)) {
            //oElement.invoke('hide');
            //oElement.style.display = "none";
            Element.hide(oElement);
		} else {
			//oElement.invoke('show');
			//oElement.style.display = "block";
			Element.show(oElement);
			count ++;
		}
	}
	return count;
}

function filter(tagid, user, pages) {
	if (tagid == 'b') {
		status = '';
		if ($('showall').visible()) $('showall').toggle();
	} else {
		status = 'Displaying recommendations'+((pages<2)?" ":" in current page ")+'by:<br /><b>'+user+'</b>';
		if (!$('showall').visible()) $('showall').toggle();
	}
	$('status').update(status);
	//alert("filter:" + tagid);
	var strClassName = tagid.toString();
	var oElm = $('books'), strTagName = "dl";
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for (var i=0; i<arrElements.length; i++) {
        oElement = arrElements[i];     
        if (!oRegExp.test(oElement.className)) {
            //oElement.invoke('hide');
            //oElement.style.display = "none";
            Element.hide(oElement);
		} else {
			//oElement.invoke('show');
			//oElement.style.display = "block";
			Element.show(oElement);
		}
	}
}

function sendComments(formid) {
	$(formid).request({
		method: 'get',
		parameters: { interests:'JavaScript', 'hobbies[]':['programming', 'music'] },
		onComplete: function(){ alert('Form data saved!') }
	})
}

/* STARTS RATING CODE */
var starImages = new Array(
	'http://mas.gbtopia.com/img/stars0.gif',
	'http://mas.gbtopia.com/img/stars1.gif',
	'http://mas.gbtopia.com/img/stars2.gif',
	'http://mas.gbtopia.com/img/stars3.gif',
	'http://mas.gbtopia.com/img/stars4.gif',
	'http://mas.gbtopia.com/img/stars5.gif'
);

var starMessages = new Array(
	'Unrated',
	'I hate it',
	"I don't like it",
	"It's OK",
	'I like it',
	'I love it',
	'Rate it',
	'<span style="color:#990000">Rating Saved</span>',
	'&nbsp;'
);

var starMap = new Array(
	'0,0,2,20',
	'3,0,12,20',
	'13,0,25,20',
	'26,0,37,20',
	'38,0,49,20',
	'50,0,62,20'
);

var savedRatings = new Array();
var starTwinkler = new Array();
var msgTwinkler = new Array();

var isSaved = new Array();

var delayTime = 500;

var allImages = new Array();

function preloadImages(imgArray){
	for (i=0; i < imgArray.length ;i++){
		if (imgArray[i] != undefined) {
			allImages[i] = new Image();
			allImages[i].src = imgArray[i];
		}
	}
}

preloadImages(starImages);

function sendRating(itemid, ratingValue) {
	new Ajax.Request("/rating.php", {
		method: "get",
		parameters: {itemid: itemid, rating: ratingValue},
		onSuccess: function(transport) {
			var html = transport.responseText;
			if (html.charAt(0) == '<')
				$("rat"+itemid).update(html);
			else
				$("rat"+itemid).update($("rat"+itemid).innerHTML+html);
		},
		onFailure: function() { alert('Unexpected problem while submitting rating.'); }
	});
	Element.hide('stars.'+itemid);
	swapStarMsgs(itemid, 7);
}

function swapStars(itemid, rating) {
	if (document.images['stars.'+itemid] != undefined) {
		if (rating == undefined) rating = savedRatings[itemid];
		document.images['stars.'+itemid].src = starImages[rating];
	}  
}

function swapStarMsgs(itemid, rating) {
	if (!isSaved[itemid] && document.getElementById('messages.'+itemid)) {
		if (rating == undefined) {
			$('messages.'+itemid).innerHTML = starMessages[6];
		} else {
			$('messages.'+itemid).innerHTML = starMessages[rating];
			if (rating == 7) isSaved[itemid] = 1;
		}
	}
}

function sendStars(itemid, rating) {
	savedRatings[itemid] = rating;
	try {
		if (shvl) {
			shvl.rating[itemid] = savedRatings[itemid];
		}	
	} catch(e) {}	 
	
	window.setTimeout('sendRating("'+itemid+'","'+rating+'")', delayTime);
}

function starMouseOver(itemid, rating){
	if (starTwinkler[itemid] != 0){
		window.clearTimeout(starTwinkler[itemid]);
		starTwinkler[itemid] = 0;
	}
	if (msgTwinkler[itemid] != 0){
		window.clearTimeout(msgTwinkler[itemid]);
		msgTwinkler[itemid] = 0;
	}
	swapStars(itemid, rating);
	swapStarMsgs(itemid, rating);
}

function starMouseOut(itemid){
	starTwinkler[itemid] = window.setTimeout('swapStars("'+itemid+'")', delayTime);
	msgTwinkler[itemid] = window.setTimeout('swapStarMsgs("'+itemid+'")', delayTime);
}

function showStars(itemid, rating){
	var starID = 'stars.'+itemid;

	starTwinkler[itemid] = 0;
	msgTwinkler[itemid] = 0;

	document.write('<map style="cursor:pointer;cursor:hand;" name="starmap'+itemid +'">');

	var i = 0;
	for (i = 0; i < 6; i++) {
		document.write("<area shape=\"rect\" coords=\""+starMap[i]+"\" onmouseover=\"starMouseOver('"+itemid+"',"+i+");\" onmouseout=\"starMouseOut('"+itemid+"');\" onclick=\"sendStars('"+itemid+"',"+i+");\" />");
	}
	document.write('</map>');
	document.write('<img class="rating" src="'+starImages[rating]+'" valign="bottom" border="0" usemap="#starmap'+itemid+'" id="'+starID+'" />');
}

function showMessages(itemid, defaultMsg){
	if (defaultMsg) {
		starMessages[6] = starMessages[defaultMsg];
	}
	document.write('<span id="messages.'+itemid+'" class="tiny">'+starMessages[6] +'</span>');
}
