var xmlHttp;
var myid =0;

var root="/Modules/xpGallery/";
var thanksVoteMessage = "Thanks for your vote";
var starImages = new Array(
	root + "js/rating/stars0.gif",
	root + "js/rating/stars1.gif",
	root + "js/rating/stars2.gif",
	root + "js/rating/stars3.gif",
	root + "js/rating/stars4.gif",
	root + "js/rating/stars5.gif");
	var nullStarMessage = "Rate this item"
	var starMap = new Array(
        '0,0,2,12',
        '2,0,12,12',
        '12,0,24,12',
        '24,0,36,12',
        '36,0,48,12',
        '48,0,60,12');
	var starMessages = new Array(
	"Rate this item",
	"It's ok",
	"I like it",
	"I love it",
	"It's really great",
	"It's amazing",
	"Saving...");

function preloadImages()
{
	for (i=0; i < preloadImages.length ;i++)
	{
	 	allImages[i] = new Image();
		allImages[i].src = preloadImages.arguments[i];
	}
}
preloadImages(starImages);

function createXMLHttpRequest() 
{
    if (window.ActiveXObject) 
    {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    else if (window.XMLHttpRequest) 
    {
        xmlHttp = new XMLHttpRequest();
    }
}

var savedRatings = new Array();
var changedRatings = new Array();
var starTwinkler = new Array();
var msgTwinkler = new Array();
var isRatingsBarChanged = false;
var delayTime = 500;
var allImages = new Array();

function SaveRatingAjax(id, ratingType, ratingValue, uid)
{
	rating = ratingValue;
	var submitURL = root 
	+ 'Rating.aspx?'
	+ 'id=' + id
	+ '&Rating=' + ratingValue
	+ '&User=' + uid;
	
	myid = id;
	isRatingsBarChanged = true;
	createXMLHttpRequest();
	xmlHttp.onreadystatechange = handleStateChange;
	xmlHttp.open("GET", submitURL, true);
	xmlHttp.send(null);
}

function handleStateChange() 
{

    if(xmlHttp.readyState == 4) 
    {
        if(xmlHttp.status == 200) 
        {
        var myVotes = document.getElementById("litVotes").innerHTML;
        myVotes = eval(parseInt(myVotes,10) + parseInt(1,10));
        
		document.getElementById("ltlstars" + myid).innerHTML  = "<IMG src=" + starImages[ rating] + " border=0>";
		document.getElementById("ltlMsg" + myid).innerHTML  = thanksVoteMessage;
		document.getElementById("litVotes").innerHTML = myVotes;
	    }
        else
        {
        alert("Error in AJAX");
        }
    }
}
function SwapStars(id, rating)
{
	if (rating == undefined)
	{
		rating = 0;
	}
	document.images["stars." + id].src = starImages[rating];
}
function SwapStarMsg(id, rating)
{
    var message = document.getElementById("messages." + id);
	if (rating == undefined)
	{
		if ( changedRatings[id] ) 
		{
		
			message.innerHTML = starMessages[6];
		} 
		else 
		{
		
			message.innerHTML  = nullStarMessage;
		}
	} 
	else 
	{
		message.innerHTML  = starMessages[rating];
	}
}
function SaveStarsAjax(id, uid, rating)
{
 
  
	if ((rating==1)||(rating==2)||(rating==3)||(rating==4)||(rating==5))
	{
	savedRatings[id] = rating;
	changedRatings[id] = 1;
	SaveRatingAjax(id, 'onetofive', rating, uid);
	SwapStarMsg(id, 6);
	}
	else
	{
	alert("Rating Value out of the bound, Values can only be 1/2/3/4/5. Current rating value: " + rating);
	}
}

function StarMouseOver(id, rating)
{
//alert("StarMouseOver:" + id + ":" + rating);

	if (starTwinkler[id] != 0)
	{
	window.clearTimeout(starTwinkler[id]);
	starTwinkler[id] = 0;
	}
	if (msgTwinkler[id] != 0)
	{
	window.clearTimeout(msgTwinkler[id]);
	msgTwinkler[id] = 0;
	}
  SwapStars(id, rating);
  SwapStarMsg(id, rating); 
}
function StarMouseOut(id)
{
//alert("StarMouseOut:" + id);

	starTwinkler[id] = window.setTimeout("SwapStars('"+id+"')", delayTime);
	msgTwinkler[id] = window.setTimeout("SwapStarMsg('"+id+"')", delayTime);
}
function DisplayStarsAjax (id, rating, uid)
{
//alert("DisplayStarsAjax:" + id);

	var starID = "stars." + id;
	starTwinkler[id] = 0;
	msgTwinkler[id] = 0;
	document.write("<map name='starmap" + id +"'>");
	var i = 0;
	for (i = 1; i < 6; i++) 
	{
	document.write("<area shape=rect " + 
	"coords='" + starMap[i] + "' " +
	"onMouseOver=\"StarMouseOver('" + id + "'," + i  + ");\" " +
	"onMouseOut=\"StarMouseOut('" + id + "');\" " +
	"onClick=\"SaveStarsAjax('" + id + "','" + uid + "'," + i + ");" +
	"\" >");
	}
	
	document.write("</map>");
	document.write("<img vspace=2 title = 'Rate Picture' src='" + starImages[rating] + "'");
	document.write(" border=0 usemap='#starmap" + id);
	document.write("' id='" + starID + "'>");
}
function DisplayMsgAjax (id, rating)
{
//alert("DisplayMsgAjax:" + id);
	var msgID = "messages." + id;
	document.write("<span id='" + msgID + "' class='title'>");
	if ( rating == undefined ) 
	{
		document.write( nullStarMessage );
	}
	else 
	{
	document.write( starMessages[rating] ); 
	}
	document.write("</span>");
}

