﻿
var numStars = 5;
var ratingTexts = ["poor", "fair", "good", "very good", "excellent"];

function starRating_MouseMove(e, canRate) {
    if (!canRate) return;

    var imageElement = e.target ? e.target : e.srcElement;
    var relativeX = e.clientX - $(imageElement).offset().left;
    
    if (e.offsetX == 0) relativeX = 0;

    var starIndex = parseInt(relativeX * numStars / imageElement.offsetWidth);

    if (starIndex < 0) starIndex = 0;
    if (starIndex > numStars) starIndex = numStars - 1;
    var rating = starIndex + 1;

//    if (imageElement.rating == rating) {
//        return;
//    }
    
    if (!imageElement.staticSrc) {
        imageElement.staticSrc = imageElement.src;
    }

    imageElement.rating = rating;
    var imageSrc = "/images/stars/greenstar_" + rating + ".gif";
    imageElement.src = imageSrc;
    var ratingText = ratingTexts[starIndex];
    imageElement.setAttribute("alt", ratingText);
    imageElement.setAttribute("title", ratingText);
}

function starRating_MouseOut(e) {
    var imageElement = e.target ? e.target : e.srcElement;

    if (imageElement.staticSrc) {
        imageElement.src = imageElement.staticSrc;
    }
}


function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++)
{
var pair = vars[i].split("=");
if (pair[0] == variable)
{
return pair[1];
}
}
} 

function starRating_MouseClick(e, url, canRate, contentId) {
    var imageElement = e.target ? e.target : e.srcElement;
    if (contentId == 0 || contentId == undefined) {
        contentId = getQueryVariable("id");
        }

    //Do something
    if (canRate && imageElement.rating) {
        //Store rating
        imageElement.staticSrc = imageElement.src;
        //Set all corresponding stars to the same src
        $(".starRating_" + contentId).attr("src", imageElement.staticSrc);
        //Call server if needed
        sendRating(contentId, imageElement.rating);
    }
    else if (url) {    
        document.location.href = url;
    }

}

function sendRating(contentId, rating) {
    var decimalRating = rating * 2;
    var url = '/RateContent.ashx?rating=' + decimalRating + '&id=' + contentId;
    //Set the hidden for postback
    $(".starRating_hidden_" + contentId).attr("value", decimalRating);
    loadXMLRatingDoc(url);
}

var req;
function loadXMLRatingDoc(url) {
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processRatingReqChange;
        req.open("GET", url, true);
        req.send(null);
        // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processRatingReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}

function processRatingReqChange() {
    // only if req shows "complete"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            //alert(req.responseXML);
            // ...processing statements go here...
            // following line throws a javascript error.  set response to text instead
            //response = req.responseXML.documentElement;
            response = req.responseText;
            //method = response.getElementsByTagName('method')[0].firstChild.data;
            //Do nothing for now
            //eval(method + '(\'\', result, key);');
        } else {
            alert("There was a problem retrieving the XML data:\n" + req.statusText);
        }
    }
}
