var raterCount = 0;

var average = new Array();
var diningID = new Array();
var currentRating = new Array();
var totalVotes = new Array();
var voteLock = new Array();
var relPath = '';

function CreateDiningRater(path, dID, votes, avg) {
	relPath = path;
	average[raterCount] = strReplace(avg,'.','_');
	diningID[raterCount] = dID;
	totalVotes[raterCount] = votes;
	currentRating[raterCount] = 0;
	voteLock[raterCount] = 0;
	
	document.write("<div align=\"left\"><div id=\"starrater"+raterCount+"\">"+
	"<a onmouseover=\"javascript: mouseoverRater("+raterCount+", 1);\" onmouseout=\"javascript: mouseoutRater("+raterCount+");\" onclick=\"javascript: setRating("+raterCount+",1);\">&nbsp;</a>"+
	"<a onmouseover=\"javascript: mouseoverRater("+raterCount+", 2);\" onmouseout=\"javascript: mouseoutRater("+raterCount+");\" onclick=\"javascript: setRating("+raterCount+",2);\">&nbsp;</a>"+
	"<a onmouseover=\"javascript: mouseoverRater("+raterCount+", 3);\" onmouseout=\"javascript: mouseoutRater("+raterCount+");\" onclick=\"javascript: setRating("+raterCount+",3);\">&nbsp;</a>"+
	"<a onmouseover=\"javascript: mouseoverRater("+raterCount+", 4);\" onmouseout=\"javascript: mouseoutRater("+raterCount+");\" onclick=\"javascript: setRating("+raterCount+",4);\">&nbsp;</a>"+
	"<a onmouseover=\"javascript: mouseoverRater("+raterCount+", 5);\" onmouseout=\"javascript: mouseoutRater("+raterCount+");\" onclick=\"javascript: setRating("+raterCount+",5);\">&nbsp;</a></div>");
	document.write("<div id=\"ratercaption"+raterCount+"\">"+votes+" Votes</div></div>");
	initializeRater(raterCount, dID);
	raterCount++;
}

function initializeRater(raterID, dID) {
	var rater = document.getElementById('starrater'+raterID);
	rater.className = "stars"+average[raterID];

	if(readCookie('diningratings')) { // Load user ratings
		var userRating = readCookie('diningratings').split(',');
		for(var i=0; i<userRating.length-1; i++) {
			var settings = userRating[i].split(':');
			if(dID == settings[0]) { // User already voted.  Lock Dining entry
				//document.getElementById('starrater'+raterID).className = "selstars"+settings[1];
				voteLock[raterID] = 1;
				//currentRating[raterID] = settings[1]
				break;
			}
		}
	}
}

function mouseoverRater(raterID, star) {
	if(voteLock[raterID] != 1) {
		var rater = document.getElementById('starrater'+raterID);
		rater.className = "stars"+star;
		
		document.getElementById('ratercaption'+raterID).innerHTML = 'Rate It!';
	}
	else {
		// User has voted already
		document.getElementById('ratercaption'+raterID).innerHTML = 'Already Voted';
	}
}

function mouseoutRater(raterID) {
	var rater = document.getElementById('starrater'+raterID);
	if(currentRating[raterID] == 0) {
		rater.className = "stars"+average[raterID];
	}
	else {
		rater.className = "selstars"+currentRating[raterID];
	}
	document.getElementById('ratercaption'+raterID).innerHTML = totalVotes[raterID]+' Votes';
}

function setRating(raterID, rating) {
	if(voteLock[raterID] != 1) {
		currentRating[raterID] = rating;
		totalVotes[raterID] = totalVotes[raterID] + 1;
		document.getElementById('starrater'+raterID).className = "selstars"+currentRating[raterID];
		
		// update dining entry
		strPost = "&diningID="+diningID[raterID]+
				  "&rating="+currentRating[raterID];
		xmlHttpPost(relPath+'ratings/save.rating.php', strPost, '', 0);
		
		// Update cookie
		if(readCookie('diningratings') == null) {
			createCookie('diningratings',diningID[raterID]+':'+currentRating[raterID]+',', 30);	
		}
		else {
			var userRating = readCookie('diningratings').split(',');
			var strSettings = '';
			for(var i=0; i<userRating.length-1; i++) {
				var settings = userRating[i].split(':');
				if(raterID != settings[0])
					strSettings += settings[0]+':'+settings[1]+',';
			}
			createCookie('diningratings',strSettings+diningID[raterID]+':'+currentRating[raterID]+',', 30);
		}
		voteLock[raterID] = 1;
	}
}


// ===========================================================
// 						xmlhttpPost
// ===========================================================
function xmlHttpPost(strURL, strSubmit, strResultFunc, debug) {

    var xmlHttpReq = false;
        
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
    	xmlHttpReq = new XMLHttpRequest();
        xmlHttpReq.overrideMimeType('text/xml');
    }
    // IE
    else if (window.ActiveXObject) {
         xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlHttpReq.open('POST', strURL, true);
    xmlHttpReq.setRequestHeader('Content-Type', 
		'application/x-www-form-urlencoded');
    xmlHttpReq.onreadystatechange = function() {
        if (xmlHttpReq.readyState == 4) {
        	if(strResultFunc != "")
        		eval(strResultFunc + 'xmlHttpReq.responseText);');
        	if(debug == 1) alert(xmlHttpReq.responseText);
        }
    }
	xmlHttpReq.send(strSubmit);
}

//
// Cookie functions
//

function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name)
{
	createCookie(name,"",-1);
}

function strReplace(s, r, w){
     return s.split(r).join(w);
}
