﻿var ajax = null;

function voteInput(itemType, itemId, userId, votePoints, bigStars) {
    var url = '/rating/rate-item.aspx?rateType=' + itemType + '&userId=' + userId + '&itemId=' + itemId + '&ratingValue=' + votePoints;
    ajax = GetXmlHttpObject(url, true);
    if(bigStars){
        ajax.onreadystatechange = voteInputDataBigStars;
    }
    else{
        ajax.onreadystatechange = voteInputData;
    }
    ajax.send(null);
}

function voteInputData(){
     if(ajax.readyState != 4){	    	    	    
		return;
	}
	try{
	    var dom = ajax.responseXML.selectNodes('dom')[0];
	    var rating = dom.getElementsByTagName('rating')[0];
	    var itemId = rating.getAttribute('itemId');
	    var numVotes = rating.getAttribute('numVotes');
	    var avgRating = rating.getAttribute('avgRating');
	    
        var raterDiv = document.getElementById('star-rating-device-' + itemId);
	    raterDiv.className = 'star-rating-done';
	    
	    var votedSpan = document.getElementById('star-vote-text-' + itemId);
	    votedSpan.className = 'star-voted-text';
	    
	    var starFillSpan = document.getElementById('rate-star-fill-' + itemId);
	    starFillSpan.style.width = (100 - (avgRating*10)) + '%';
	    
	    if(numVotes == 1){
	        votedSpan.innerHTML = numVotes + ' Vote!';
	    }
	    else{
	        votedSpan.innerHTML = numVotes + ' Voted!';
	    }
	}
	catch(e){
	    alert(e.message);
    }
}

function voteInputDataBigStars(){
     if(ajax.readyState != 4){	    	    	    
		return;
	}
	try{
	    var dom = ajax.responseXML.selectNodes('dom')[0];
	    var rating = dom.getElementsByTagName('rating')[0];
	    var itemId = rating.getAttribute('itemId');
	    var numVotes = rating.getAttribute('numVotes');
	    var avgRating = rating.getAttribute('avgRating');
	    
        var raterDiv = document.getElementById('star-rating-device-' + itemId);
	    raterDiv.className = 'rate-stars-big big-stars-voted';
	    
	    var votedDiv = document.createElement('div');
	    votedDiv.className = "big-stars-voted-fill"
	    votedDiv.style.width = (100 - (avgRating*10)) + '%';

	    raterDiv.appendChild(votedDiv);
	    
	    var votedSpan = document.getElementById('numVotes');
	    if(numVotes == 1){
	        votedSpan.innerHTML = numVotes + ' Vote!';
	    }
	    else{
	        votedSpan.innerHTML = numVotes + ' Voted!';
	    }
	}
	catch(e){
	    alert(e.message);
    }
}
 
function buildRater(itemType, itemId, userId, userVoted, avgVote, numVotes){
    var raterDiv = document.getElementById('star-rating-device-' + itemId);
    
    var voteSpan = document.createElement('span');
    voteSpan.id = 'star-vote-text-' + itemId;
    
    if(userVoted == 'True'){
        raterDiv.className = 'star-rating-done';
        voteSpan.className = 'star-voted-text';
        if(numVotes == 1){
	        voteSpan.appendChild(document.createTextNode(numVotes + ' Vote!'));
	    }
	    else{
	        voteSpan.appendChild(document.createTextNode(numVotes + ' Voted!'));
	    }
    }
    else {
        voteSpan.className = 'star-vote-text';
        voteSpan.appendChild(document.createTextNode('« vote!'));
    }
    
    
    var starFillSpan = document.createElement('span');
    starFillSpan.id = 'rate-star-fill-' + itemId;
    starFillSpan.className = 'rate-star-fill';
    starFillSpan.style.width = (100 - (avgVote*10)) + '%';
    
    var startVoteDiv = document.createElement('div');
    startVoteDiv.id = 'rating-stars-' + itemId;
    startVoteDiv.className = 'start-vote';
    
    for(var i = 5; i > 0; i--){
        var link = document.createElement('a');
        link.className = "star-hover-" + i;
		link.href = "javascript:voteInput(" + itemType + ", " + itemId + ", " + userId + ", " + i + ", false)";
        startVoteDiv.appendChild(link);
    }
    
    raterDiv.appendChild(voteSpan);
    raterDiv.appendChild(starFillSpan);
    raterDiv.appendChild(startVoteDiv);
}

function buildBigStarRater(itemType, itemId, userId, userVoted, avgVote, numVotes) {
    var raterDiv = document.getElementById('star-rating-device-' + itemId);
    raterDiv.className = "rate-stars-big";

    if (userVoted == 'True') {
        raterDiv.className = raterDiv.className + " big-stars-voted";
        var votedDiv = document.createElement('div');
        votedDiv.className = "big-stars-voted-fill";
        votedDiv.style.width = (100 - (avgVote * 10)) + '%';

        for (var i = 5; i > 0; i--) {
            var link = document.createElement('a');
            link.id = "stars-" + i;
            link.href = "#";
            raterDiv.appendChild(link);
        }

        raterDiv.appendChild(votedDiv);
    }
    else {
        for (var i = 5; i > 0; i--) {
            var link = document.createElement('a');
            link.id = "stars-" + i;
            link.href = "javascript:voteInput(" + itemType + ", " + itemId + ", " + userId + ", " + i + ", true)";
            raterDiv.appendChild(link);
        }
    }
}