/**
 * Code Copyright Lightmaker Tunbridge Wells Ltd 2008
 * created 25/02/2008
 * @version 0.1, 25/02/2008
 * @author ronak.patel (ronak.patel@lightmaker.com)
 */
 
 
var myRequest;
var PageID = "";

function rateHover(stars, onImg, offImg, halfImg, PageID)
{
	var ratable = eval ("rated_"+PageID) == false;
	
	if ( PageID=='tab' ){
		ratable = tabs[selectedTab].rated == false;
	}
	
	if ( ratable ){
		drawStars(stars, onImg, offImg, halfImg, PageID);
	}
}

function drawStars(stars, onImg, offImg, halfImg, PID)
{
	for ( var i=1 ; i<=5 ; i++ ){
		var img  = offImg;
		if ( stars >= i-0.75 ) img = halfImg;
		if ( stars >= i-0.25  ) img = onImg;
		
		
		document.getElementById(PID+"_star"+i).src = img ;
	}
}

function drawStarsForTab(siteRoot, tabOnStar, tabOffStar, tabHalfStar, tabname, rateable)
{
	if (! rateable ){
		if ( document.getElementById("overlay_rate") != null ) 
			document.getElementById("overlay_rate").style.display = "none";
		if ( document.getElementById("overlay_rate_requesting") != null ) 
			document.getElementById("overlay_rate_requesting").style.display = "none";
	}
	else{
		getRatingOverlay(siteRoot, tabOnStar, tabOffStar, tabHalfStar);
	}
}


// ** functions to rate a page ** //
function rate(siteRoot, PageID, pageUID, stars, onImg, offImg, halfImg, pageURL)
{
	var overlaytxt = "/overlay_replacement/?url=";
	var ajax;
	var ratable = eval ("rated_"+pageUID) == false;
	var newPageID = PageID;
	var newPageURL = pageURL;
	
	if ( PageID=='tab' ){
		newPageID = tabs[selectedTab].tabname;
		newPageURL = tabs[selectedTab].iframeloc;
		ratable = tabs[selectedTab].rated == false;
		
	}
	
	if (newPageURL.indexOf(overlaytxt)>=0){
		newPageURL = newPageURL.substring(newPageURL.indexOf(overlaytxt)+overlaytxt.length);
	}
	
	if ( ratable ){
		if ( PageID=='tab' ){
			ajax = new Ajax(siteRoot+"/rate/ajax.aspx", 
										{
											data:'pageURL='+newPageURL+'&pageID='+newPageID+'&pageUID='+pageUID+'&stars='+stars+'&onImg='+onImg+'&offImg='+offImg+'&halfImg='+halfImg,
											method: 'post', 
											evalScripts: true, 
											onComplete: rateSuccessTab, 
											onFailure: rateFail
										}
							);
		}
		else{
			ajax = new Ajax(siteRoot+"/rate/ajax.aspx", 
										{
											data:'pageURL='+newPageURL+'&pageID='+newPageID+'&pageUID='+pageUID+'&stars='+stars+'&onImg='+onImg+'&offImg='+offImg+'&halfImg='+halfImg,
											method: 'post', 
											evalScripts: true, 
											onComplete: rateSuccess, 
											onFailure: rateFail
										}
							);
		}
		
		for ( var i=1 ; i<=5 ; i++ ) {
			document.getElementById(pageUID+"_star"+i).style.cursor = "default";
		}
		
		response = ajax.request();
		
		if ( PageID=='tab' ){
		}
		else {
			document.getElementById("rate_"+pageUID+"_description").innerHTML  = "<br/>**Rating!**<br/>";
		}
	}
}

function rateSuccess(text, xml)
{
	var rt = xml.getElementsByTagName("stat")[0];
		
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		stat = lvl1.nodeValue;
	}
		
	if ( stat != "ok" ){
		rateFail();
		return;
	}
	
	rt = xml.getElementsByTagName("userRating")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		userRating = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("pageID")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		pageID = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("pageUID")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		pageUID = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("avgRating")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		avgRating = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("ratingsCount")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		ratingCount = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("onImg")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		onImg = lvl1.nodeValue;
	}

	rt = xml.getElementsByTagName("offImg")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		offImg = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("halfImg")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		halfImg = lvl1.nodeValue;
	}
	
	eval ("rated_"+pageUID+" = true");
	t = "drawStars("+avgRating+", '"+onImg+"', '"+offImg+"', '"+halfImg+"', '"+pageUID+"', true)";
	eval (t);
	
	document.getElementById("rate_"+pageUID+"_description").innerHTML = "";
	if ( typeof(avgRating) != "undefined" ){
		document.getElementById("rate_"+pageUID+"_description").innerHTML += "Average Rating: "+avgRating+"<br/>";
	}
	if ( typeof(ratingCount) != "undefined" ){
		document.getElementById("rate_"+pageUID+"_description").innerHTML += ratingCount+" rating";
		if ( ratingCount!=1 ) document.getElementById("rate_"+pageUID+"_description").innerHTML += "s";
	}
	document.getElementById("rate_"+pageUID+"_description").innerHTML  += "<br/>Thanks for rating!<br/>";
}

function rateSuccessTab(text, xml)
{
	var rt = xml.getElementsByTagName("stat")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		stat = lvl1.nodeValue;
	}
	
	if ( stat != "ok" ){
		rateFail();
		return;
	}
	
	rt = xml.getElementsByTagName("userRating")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		userRating = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("pageID")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		pageID = lvl1.nodeValue;
	}

	rt = xml.getElementsByTagName("pageUID")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		pageUID = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("avgRatingWhole")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		avgRatingWhole = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("avgRating")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		avgRating = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("ratingsCount")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		ratingCount = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("onImg")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		onImg = lvl1.nodeValue;
	}

	rt = xml.getElementsByTagName("offImg")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		offImg = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("halfImg")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		halfImg = lvl1.nodeValue;
	}

	t = "drawStars("+avgRating+", '"+onImg+"', '"+offImg+"', '"+halfImg+"', 'tab', true)";
	eval (t);
	
	s = ratingCount==1 ? "" : "s";
	document.getElementById("rate_tab_description").innerHTML = avgRatingWhole+"/5("+ratingCount+" vote"+s+")";
	
	tabs[selectedTab].rated = true;	
	
}

function rateFail(inst)
{
	if ( PageID != "" ){
		document.getElementById("rate_"+PageID+"_description").innerHTML  = "Could not rate, please try later.<br/>";
	}
}

// ** functions to get the rating of a page for the overlay ** //

function getRatingOverlay(siteRoot, onImg, offImg, halfImg)
{
	var overlaytxt = "/overlay_replacement/?url=";
	var ajax;
	var pageURL = tabs[selectedTab].iframeloc;
	
	if (pageURL.indexOf(overlaytxt)>=0){
		pageURL = pageURL.substring(pageURL.indexOf(overlaytxt)+overlaytxt.length);
	}
	
	document.getElementById("overlay_rate").style.display = "none";
	document.getElementById("overlay_rate_requesting").style.display = "block";
	
	if ( true ){
		if ( selectedTab<=tabs.length ){
			ajax = new Ajax(siteRoot+"/rate/ajaxgetrating.aspx", 
								{
									data:'pageURL='+pageURL+'&pageID='+tabs[selectedTab].tabname+'&onImg='+onImg+'&offImg='+offImg+'&halfImg='+halfImg,
									method: 'post', 
									evalScripts: true, 
									onComplete: ratingSuccess, 
									onFailure: ratingFail
								}
							);
							
			var response = ajax.request();
		}
	}
}

function ratingSuccess(text, xml)
{
	var stat = "";
	var userRating = "";
	var pageID = "";
	var pageUID = "";
	var avgRating = "";
	var avgRatingWhole = "";
	var ratingCount = "";
	var onImg = "";
	var offImg = "";
	var halfImg = "";
	var lvl1;
	
	var rt = xml.getElementsByTagName("stat")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		stat = lvl1.nodeValue;
	}
	
	// alert(text+'\n\n'+stat);
	if ( stat != "ok" ){
		rateFail();
		return;
	}
	
	rt = xml.getElementsByTagName("userRating")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		userRating = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("pageID")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		pageID = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("avgRating")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		avgRating = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("avgRatingWhole")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		avgRatingWhole = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("ratingsCount")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		ratingCount = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("onImg")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		onImg = lvl1.nodeValue;
	}

	rt = xml.getElementsByTagName("offImg")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		offImg = lvl1.nodeValue;
	}
	
	rt = xml.getElementsByTagName("halfImg")[0];
	if ( rt != null ) {
		lvl1 = rt.childNodes[0];
		halfImg = lvl1.nodeValue;
	}
	
	drawStars(avgRating, onImg, offImg, halfImg, 'tab');
	
	// alert(stat+"\n:"+userRating+"\n:"+pageID+"\n:"+pageUID+"\n:"+avgRating+"\n:"+ratingCount+"\n:"+onImg+"\n:"+offImg+"\n:"+halfImg);

	tabCurrentRating = avgRating;
	document.getElementById("rate_tab_description").innerHTML  = avgRatingWhole+"/5";
	document.getElementById("rate_tab_description").innerHTML += "("+ratingCount+" vote"+(ratingCount==1 ? "" : "s")+")";
	document.getElementById("overlay_rate_requesting").style.display = "none";
	document.getElementById("overlay_rate").style.display = "block";
	
}

function ratingFail(inst)
{
	document.getElementById("overlay_rate_requesting").innerHTML  = "Could not rate, please try later.<br/>";
}
