﻿// JScript File

/****************************** cookie code ***********************************************/

function ed_setCookie(c_name,value,expireminutes)
{
    var exdate=new Date();
    exdate.setMinutes(exdate.getMinutes() + expireminutes);
    document.cookie=c_name+ "=" +escape(value)+ ((expireminutes==null) ? "" : ";expires="+exdate.toGMTString());
} 

function ed_getCookie(c_name)
{
    if (document.cookie.length>0)
    {
        c_start=document.cookie.indexOf(c_name + "=");
        if (c_start!=-1)
        { 
            c_start=c_start + c_name.length+1; 
            c_end=document.cookie.indexOf(";",c_start);
            if (c_end==-1) {
                c_end=document.cookie.length;
            }
            return unescape(document.cookie.substring(c_start,c_end));
        } 
    }
    return "";
} 

var articleRatingIDs = new Array();
function AddArticleRatingID(id) 
{
	articleRatingIDs[articleRatingIDs.length] = id;
}

function GetArticleRatings(contextObj) 
{
	AjaxServices.GetArticleRatings(contextObj.artID, GetArticlesRatings_Success, ArticleRatings_Failure, contextObj);
}

function GetArticlesRatings(contextObj) 
{
	var idStr = articleRatingIDs.join(";");
	AjaxServices.GetArticleRatings(idStr, GetArticlesRatings_Success, ArticleRatings_Failure, contextObj);
}

function GetArticlesRatings_Success(result, contextObj) 
{
	if (result == null) {
		return;
	}
	
	for (var i=0; i<result.length; i++) {
	    var div = $get(contextObj.baseDivID + result[i].contentID);
		
		//TODO: set the proper innerHTML of the div
		var html = "";
		for (var j = 0; j < 5; j++) {
		    var img;
		    var r = j+1;
		    if (j < result[i].averageRating) {
                img = contextObj.imgPath + 'star.gif';
		    } else {
                img = contextObj.imgPath + 'star_right.gif';
		    }
		    var onClick = 'AddArticleRating({ baseDivID: \'' + contextObj.baseDivID + '\', imgPath: \'' + contextObj.imgPath + '\', rating: ' + r + '},' + result[i].contentID + ');';
		    var onMouseOut = 'this.src = \'' + img + '\'';
		    var onMouseOver = 'this.src = \'' + contextObj.imgPath + 'star_selected.gif\'';
		    
		    html += '<a href="#">';
		    html += '<img onclick="'+onClick+'" onMouseOut="'+onMouseOut+'" onmouseover="'+onMouseOver+'" src="' + img + '" style="border:none;vertical-align:middle"/>';
		    html += '</a>';
		}
		
		div.innerHTML = '<b>Rate:</b> ' + html + '&nbsp;(' + result[i].ratingCount + ' ratings)';
	}
	
}

function ArticleRatings_Failure() {
	//do nothing here.
}

var ARTICLE_RATED_COOKIE = 'articleRated';

function AddArticleRating(contextObj, articleID) 
{   
    var hasVoted = ed_getCookie(ARTICLE_RATED_COOKIE + articleID);
    if (hasVoted == '') {
	    AjaxServices.AddArticleRating(articleID, contextObj.rating, AddArticleRating_Success, ArticleRatings_Failure, contextObj);
	} else {
	    alert('You have already voted for this article.');
	}
}

function AddArticleRating_Success(result, contextObj)
{
	if (result == null) {
		return;
	}
	
	ed_setCookie(ARTICLE_RATED_COOKIE + result.contentID, 'rated', null);
	
	var div = $get(contextObj.baseDivID + result.contentID);
	
	var html = "";
	var r = contextObj.rating - 1;
	
	for (var i = 0; i < 5; i++) {
	    var img;
	    if (i == r) 
	    {
	        img = contextObj.imgPath + 'star_selected.gif';
	    }
	    else if (i < result.averageRating) 
	    {
            img = contextObj.imgPath + 'star.gif';
        } 
        else 
        {
            img = contextObj.imgPath + 'star_right.gif';
	    }
	    
	    html += '<img src="' + img +'"/>';
	}
	div.innerHTML = '<b>Rate:</b> ' + html + '&nbsp;(' + result.ratingCount + ' ratings)';
}
