﻿var STARBAR_STARS_PER_BAR = 5;
// Special ratings values, must be < 0
var STARBAR_NI_VALUE = -1;
var STARBAR_NOP_VALUE = -2;
var STARBAR_CLEAR_VALUE = -3;
//
var STARBAR_TYPE_EMPTY = 0;
var STARBAR_TYPE_PREDICT = 1;
var STARBAR_TYPE_RATE = 2;
var STARBAR_TYPE_STATIC = 3;
var STARBAR_TYPE_AVG = 4;
var STARBAR_TYPE_MAX = 13;
var STARBAR_TYPE_COMMUNITY = 13;
//
var STARBAR_HEIGHT = 15;
var STARBAR_STAR_WIDTH = 16;
var STARBAR_GAP_WIDTH = 3;
var STARBAR_WIDTH = STARBAR_STARS_PER_BAR*STARBAR_STAR_WIDTH + (STARBAR_STARS_PER_BAR-1)*STARBAR_GAP_WIDTH;
// STARBAR_WIDTH = 5 * 16 + 4 * 3 = 80 + 12 = 92
var STARBAR_ROW_PADDING = 3;
//
var STARBAR_NI_MINI_BUTTON_WIDTH = 19;
var STARBAR_NI_MINI_BUTTON_HEIGHT = 15;
var STARBAR_NI_BUTTON_HEIGHT = 16;
var STARBAR_NI_BUTTON_WIDTH = 92;
var STARBAR_CLEAR_BUTTON_HEIGHT = 16;
var STARBAR_CLEAR_BUTTON_WIDTH = 92;
var STARBAR_NOP_BUTTON_HEIGHT = 16;
var STARBAR_NOP_BUTTON_WIDTH = 92;

//
// Storing and preloading of starbar images
//
var StarbarImages;
function StarbarImageName(starType, n) {
    return "../images/rating2/stars_" + starType + "_" + n + ".gif";
}
function StarbarImage(starType, numStars) {
    // If already fetched and cached, use it.
    // Otherwise cache it now for future use.
    var n;
    if (numStars > 5) {
        n = 50;
    } else if (numStars < 0) {
        n = 0;
    } else {		
        n = Math.round(numStars * 10);        
    }
    if (! StarbarImages[starType][n]) {
        StarbarImages[starType][n] = new Image(STARBAR_WIDTH, STARBAR_HEIGHT);
        StarbarImages[starType][n].src = StarbarImageName(starType, n);
    }
    return StarbarImages[starType][n].src;
}
function StarbarNoOpinionImage(selected) {
    return STARBAR_IMG_ROOT
        + (selected ? "nop_selected.gif" : "nop_low.gif");
}
function IsClearImageAvailable(imgNum) {
    return (StarbarTypes[imgNum] == STARBAR_TYPE_RATE) || ((StarbarSpecialValues[imgNum] != 0) && (StarbarSpecialValues[imgNum] != STARBAR_NOP_VALUE));
}
function StarbarClearImage(imgNum, selected) {
    return STARBAR_IMG_ROOT 
		+ ((IsClearImageAvailable(imgNum) ? "clear_low.gif" : "clear_unavailable.gif"));
}
function StarbarNotInterestedImage(selected) {
    return STARBAR_IMG_ROOT
        + (selected ? "ni_selected.gif" : "ni_low.gif");
}
function StarbarNotInterestedMiniImage(selected) {
    return STARBAR_IMG_ROOT
        + (selected ? "ni_slim_bar_high.gif" : "ni_slim_bar_low.gif");
}
function StarbarPreload() {
    // Preload the images that are used for tracking mouse movement.
    // Note that this is only called if there is a starbar on the page,
    // so it is safe to include this on every page.
    if (! StarbarImages) {
        StarbarImages = new Array();
        for (var j = 0; j <= STARBAR_TYPE_MAX; j++) {
            StarbarImages[j] = new Array();
        }
        for (var j = STARBAR_TYPE_RATE; j <= STARBAR_TYPE_RATE; j++) {
        //for (j = 0; j <= STARBAR_TYPE_MAX; j++) {
            for (var i = 1; i <= STARBAR_STARS_PER_BAR; i++) {
                StarbarImages[j][i] = new Image(STARBAR_WIDTH, STARBAR_HEIGHT);
                StarbarImages[j][i].src = StarbarImageName(j, 10*i);                
            }
        }       
        StarbarEnabled = true;
    }
}
var StarbarTooltip = new Array();
StarbarTooltip[STARBAR_CLEAR_VALUE] = 'Puanlamanizi silmek için tiklayin';
StarbarTooltip[STARBAR_NOP_VALUE] = 'Bu film hakkinda "Bir Fikrim Yok"';
StarbarTooltip[STARBAR_NI_VALUE] = 'Bu film beni "Ilgilendirmiyor"';
StarbarTooltip[1] = 'Bu filmden "Nefret Ettim"';
StarbarTooltip[2] = 'Bu filmi "Hiç Sevmedim"';
StarbarTooltip[3] = 'Bu filmi "Sevdim"';
StarbarTooltip[4] = 'Bu filmi "Çok Sevdim"';
StarbarTooltip[5] = 'Bu filme "Bayildim"';
//
// Place to store state about all the starbars on the page
//
var StarbarCount = 0;
var StarbarItemIds = new Array();
var StarbarTypes = new Array();
var StarbarNumStars = new Array();
var StarbarRefresh = new Array();
var StarbarTimers = new Array();
var StarbarPredictions = new Array();
var StarbarSpecialValues = new Array();
var StarbarLastEntered = -1;
//
// Interaction functions
//
var StarbarEnabled = false;
//
function StarbarMouseOver(imgNum, whichStar) {
	inMouseover = true;	
    // Cancel any background request to restore this image.
    if (StarbarTimers[imgNum] != 0) {
        window.clearTimeout(StarbarTimers[imgNum]);
        StarbarTimers[imgNum] = 0;
    }
    // If we left an image, restore it right now.
    if (StarbarLastEntered >= 0 && StarbarLastEntered != imgNum) {
        StarbarRestore(StarbarLastEntered);
    }
    // If we're now over one of the special buttons,
    // and we were previously on some othe part of this widget,
    // make sure we restore the stars.
    if (StarbarLastEntered >= 0
            && StarbarLastEntered == imgNum
            && whichStar < 0) {
        StarbarRestore(StarbarLastEntered);
    }
    StarbarLastEntered = imgNum;
    // Make the starbar show appropriate feedback.
    if (whichStar > 0) {
        document.images["starbar"+imgNum].src = StarbarImage(STARBAR_TYPE_RATE, whichStar);
    } else if (whichStar == STARBAR_NI_VALUE) {		
        document.images["starbar"+imgNum].src = StarbarImage(STARBAR_TYPE_EMPTY, 0);
    } else if (whichStar == STARBAR_NOP_VALUE) {
        document.images["starbar"+imgNum].src = StarbarImage(STARBAR_TYPE_PREDICT, StarbarPredictions[imgNum]);
    } else if (whichStar == STARBAR_CLEAR_VALUE && IsClearImageAvailable(imgNum)) {
        document.images["starbar"+imgNum].src = StarbarImage(STARBAR_TYPE_PREDICT, StarbarPredictions[imgNum]);
        document.images["starbar_clear"+imgNum].src = StarbarClearImage(imgNum, true);
    } else {
        //
    }
    if (document.images["starbar_nop"+imgNum]) {
        document.images["starbar_nop"+imgNum].src = StarbarNoOpinionImage((whichStar == STARBAR_NOP_VALUE));
    }
    if (document.images["starbar_ni"+imgNum]) {
        document.images["starbar_ni"+imgNum].src = StarbarNotInterestedImage((whichStar == STARBAR_NI_VALUE));
    }
    if (document.images["starbar_ni_mini"+imgNum]) {
        document.images["starbar_ni_mini"+imgNum].src = StarbarNotInterestedMiniImage((whichStar == STARBAR_NI_VALUE));
    }
    // Overwrite the ugly link text in the status region.
    window.status = StarbarTooltip[whichStar];

	inMouseover = false;
    return false;
}
function StarbarRestore(imgNum) {
    // Restore the starbar state.
    if (StarbarSpecialValues[imgNum] == STARBAR_NI_VALUE) {
        StarbarTypes[imgNum] = STARBAR_TYPE_EMPTY;
    }
	if (document.images["starbar"+imgNum])
    	document.images["starbar"+imgNum].src = StarbarImage(StarbarTypes[imgNum], StarbarNumStars[imgNum]);

	if (document.images["starbar_clear"+imgNum]) {
        document.images["starbar_clear"+imgNum].src = StarbarClearImage(imgNum, false);
    }
    if (document.images["starbar_nop"+imgNum]) {
        document.images["starbar_nop"+imgNum].src = StarbarNoOpinionImage((StarbarSpecialValues[imgNum] == STARBAR_NOP_VALUE));
    }
    if (document.images["starbar_ni"+imgNum]) {
        document.images["starbar_ni"+imgNum].src = StarbarNotInterestedImage((StarbarSpecialValues[imgNum] == STARBAR_NI_VALUE));
    }
    if (document.images["starbar_ni_mini"+imgNum]) {
        document.images["starbar_ni_mini"+imgNum].src = StarbarNotInterestedMiniImage((StarbarSpecialValues[imgNum] == STARBAR_NI_VALUE));
    }
    StarbarTimers[imgNum] = 0;
    if (StarbarLastEntered == imgNum) {
        StarbarLastEntered = -1;
    }
    window.status = "";
}
function StarbarMouseOut(whichStar) {
    // Restore the image to the saved state, once a little time has elapsed.
    var imgNum = StarbarLastEntered;
    if (imgNum < 0) {
        return void(0);
    }
    if (! StarbarTimers[imgNum]) {
        StarbarTimers[imgNum] = window.setTimeout("StarbarRestore("+imgNum+")", 100);
    }
    window.status = "";
}
function delay () {}

function revertInnerHTML(tempHTML, imgNum) {	
	if (document.getElementById("sbLoc"+imgNum)){
		document.getElementById("sbLoc"+imgNum).innerHTML = decodeURI(tempHTML);		
	}

	saveRating = false;

}

function StarbarClick(whichStar) {	
	saveRating = true;
    var itemId;
    var rateHref;
    var rateWindow;
    var imgNum = StarbarLastEntered;
    if (! StarbarEnabled || imgNum < 0) {
        return void(0);
    }
    StarbarEnabled = false;
    itemId = StarbarItemIds[imgNum];
    // Update the saved state of the starbar and the display
    if (whichStar == STARBAR_NI_VALUE) {
        rateHref = "?titleId="+itemId+"&rateWeight=0";
        StarbarTypes[imgNum] = STARBAR_TYPE_EMPTY;
        StarbarNumStars[imgNum] = StarbarPredictions[imgNum];
        StarbarSpecialValues[imgNum] = whichStar;
    } else if (whichStar == STARBAR_NOP_VALUE) {
        rateHref = "?titleId="+itemId+"&rateWeight="+"noseen";
        StarbarTypes[imgNum] = STARBAR_TYPE_PREDICT;
        StarbarNumStars[imgNum] = StarbarPredictions[imgNum];
        StarbarSpecialValues[imgNum] = whichStar;
    } else if (whichStar == STARBAR_CLEAR_VALUE) {
        if ((StarbarTypes[imgNum] != STARBAR_TYPE_RATE)
             && (StarbarSpecialValues[imgNum] == 0)) {
            StarbarEnabled = true;
            return void(0);
        }
        rateHref = "?titleId="+itemId+"&rateWeight="+"clear";
        StarbarTypes[imgNum] = STARBAR_TYPE_PREDICT;
        StarbarNumStars[imgNum] = StarbarPredictions[imgNum];
        StarbarSpecialValues[imgNum] = 0;
    } else {	
		window.location.href = STARBAR_SET_PAGE;	
        rateHref = "?titleId="+itemId+"&rateWeight="+whichStar*10;
        StarbarTypes[imgNum] = STARBAR_TYPE_RATE;
        StarbarNumStars[imgNum] = whichStar;
        StarbarSpecialValues[imgNum] = 0;
    }
    
	rateHref = STARBAR_SET_PAGE + rateHref +"&url=" + escape(window.location.href);
	
	
	var browserApp = navigator.userAgent.toLowerCase();
	if(browserApp.indexOf("safari") == -1){
		var tempHTML = encodeURI(document.getElementById("sbLoc"+imgNum).innerHTML);
		document.getElementById("sbLoc"+imgNum).innerHTML = "<table cellpadding=0 cellspacing=0 border=0 width=92><tr><td class=text-warning>Yazılıyor&nbsp;...</td></tr></table>";
		window.setTimeout(  eval("\"revertInnerHTML(\'" + tempHTML + "\'," + imgNum + ")\"")  , 400);		
   	}
	 
	window.setTimeout("StarbarRestore("+imgNum+")", 10);
	
	
	StarbarRestore(imgNum);
    // Display any popups	
	
    if (doRatingsPopup == "true") {  
        showRatingsPop(itemId);
        doRatingsPopup = "false";
    }
    
    // Add rating to page form       
    trackRating(itemId, whichStar);  
    
    // Save the rating.        
    if (StarbarRefresh[imgNum]) {
        // Must refresh this page
        RatingSubmitImage = new Image(0, 0);
		RatingSubmitImage.src = rateHref;
		
        window.location.href = rateHref;
        StarbarEnabled = true;
		
        return void(0);
    }
    // Try to use a 204 No Content response.
    if (1) {
        //window.location.href = rateHref
         //                      + "&ncok=true";
          RatingSubmitImage = new Image(0, 0);
		RatingSubmitImage.src = rateHref;		
        StarbarEnabled = true;
		
        return void(0);
    }
    // Try to use an IFRAME.
    if (window.callback_iframe) {
        window.callback_iframe.location.href = rateHref+"&iframe=t";
        // Return special value to leave this window alone
        StarbarEnabled = true;
		
        return void(0);
    }
    // If that failed, try using a pop-up window.
    rateWindow =
        window.open("",
                    "nf_gauge_set",
                    "resizable=no,dependent=yes,width=1,height=1,screenX="
                    +window.screenX+",screenY="+window.screenY
                    +",top="+window.screenX+",left="+window.screenY);
    if (rateWindow && ! rateWindow.closed) {
        //rateWindow.blur();
        rateWindow.location.href = rateHref+"&js=t";
        //self.focus();
        StarbarEnabled = true;
		
        return void(0);
    }
    // If that failed, run in this window.   
    window.location.href = rateHref;
    StarbarEnabled = true;
	
	
    return void(0);

}
//
// Starbar creation
//
function StarbarHTML1(imgNum, itemId, starType, numStars) {
    // Emit the HTML
    if (itemId < 0) {
        // No real itemID, so just a non-interactive image
        return "<img src='"
            + StarbarImage(starType, numStars)
            + "' alt='"
            + numStars
            + "-star' width=92 height=15 border=0>";
    } else {
        // Only integral input allowed.
        // Associate the gap between stars with the star just to the left of the gap.
        return "<map name='starbar"
            + imgNum
            + "'><area href=\"javascript:StarbarClick(1);\" alt=\"Bu filmden nefret ettim\" onMouseOver=\"StarbarMouseOver("
            + imgNum
            + ",1);\" onMouseOut=\"StarbarMouseOut(1);\" shape=\"rect\" coords=\"0,0,18,14\"><area href=\"javascript:StarbarClick(2);\" alt=\"Bu filmi hiç sevmedim\" onMouseOver=\"StarbarMouseOver("
            + imgNum
            + ",2);\" onMouseOut=\"StarbarMouseOut(2);\" shape=\"rect\" coords=\"19,0,37,14\"><area href=\"javascript:StarbarClick(3);\" alt=\"Bu filmi sevdim\" onMouseOver=\"StarbarMouseOver("
            + imgNum
            + ",3);\" onMouseOut=\"StarbarMouseOut(3);\" shape=\"rect\" coords=\"38,0,56,14\"><area href=\"javascript:StarbarClick(4);\" alt=\"Bu filmi çok sevdim\" onMouseOver=\"StarbarMouseOver("
            + imgNum
            + ",4);\" onMouseOut=\"StarbarMouseOut(4);\" shape=\"rect\" coords=\"57,0,75,14\"><area href=\"javascript:StarbarClick(5);\" alt=\"Bu filme bayildim\" onMouseOver=\"StarbarMouseOver("
            + imgNum
            + ",5);\" onMouseOut=\"StarbarMouseOut(5);\" shape=\"rect\" coords=\"76,0,94,14\"></map><img name=\"starbar"
            + imgNum
            + "\" usemap=\"#starbar"
            + imgNum
            + "\" src=\""
            + StarbarImage(starType, numStars)
            + "\" alt=\""
            + numStars
            + "-star\" width=92 height=15 border=0>";
    }
}
function StarbarHTML(imgNum,
                     itemId, starType,
                     numStars, predictedRating,
                     isNotInterested, isNoOpinion,
                     showNI, showNiMini, showClear, showNoOpinion,
                     refreshWhenChanged) {                    
    if (itemId >= 0) {
        // Remember the true state of the starbar.
        StarbarItemIds[imgNum] = itemId;
        StarbarTypes[imgNum] = starType;
        StarbarNumStars[imgNum] = numStars;
        StarbarRefresh[imgNum] = refreshWhenChanged;
        StarbarTimers[imgNum] = 0;
        if (isNotInterested) {
            StarbarSpecialValues[imgNum] = STARBAR_NI_VALUE;
        } else if (isNoOpinion) {
            StarbarSpecialValues[imgNum] = STARBAR_NOP_VALUE;
        } else {
            StarbarSpecialValues[imgNum] = 0;
        }
        StarbarPredictions[imgNum] = predictedRating;
    }
    var html = StarbarHTML1(imgNum, itemId, (isNotInterested ? STARBAR_TYPE_EMPTY : starType), numStars);
    if (showNI || showNiMini || showClear || showNoOpinion) {
        if (showNiMini) {
            html = "<table cellpadding=0 cellspacing=0 cellborder=0 width=111><tr><td align=right><nobr><a href=\"javascript:StarbarClick(-1);\" onMouseOver=\"StarbarMouseOver("
                         + imgNum
                         + ",-1)\" onMouseOut=\"StarbarMouseOut(-1)\"><img src=\""
                         + StarbarNotInterestedMiniImage(isNotInterested)
                         + "\" width=19 height=15 border=0 alt=\"Click to rate the movie Not Interested\" name=\"starbar_ni_mini"
                         + imgNum
                         + "\"></a></nobr></td><td align=left><nobr>"
                   + html;
        } else {
            html = "<table cellpadding=0 cellspacing=0 cellborder=0 width=92><tr><td align=left><nobr>"
                   + html;
        }
        html += "</nobr></td></tr>";
        if (showNI) {
            html += "<tr><td height=19 align=center><nobr><a href=\"javascript:StarbarClick(-1);\" onMouseOver=\"StarbarMouseOver("
                           + imgNum
                           + ",-1)\" onMouseOut=\"StarbarMouseOut(-1)\"><img src=\""
                           + StarbarNotInterestedImage(isNotInterested)
                           + "\" width=92 height=16 border=0 alt=\"Click to rate the movie Not Interested\" name=\"starbar_ni"
                           + imgNum
                           + "\"></a></nobr></td></tr>";
        }
        if (showClear) {
            html += "<tr><td height=19 align=center><nobr><a href=\"javascript:StarbarClick(-3);\" onMouseOver=\"StarbarMouseOver("
                           + imgNum
                           + ",-3)\" onMouseOut=\"StarbarMouseOut(-3)\"><img src=\""
                           + StarbarClearImage(imgNum, false)
                           + "\" width=92 height=16 border=0 alt=\"Click to forget your rating\" name=\"starbar_clear"
                           + imgNum
                           + "\"></a></nobr></td></tr>";
        }
        if (showNoOpinion) {
            html += "<tr><td height=19 align=center><nobr><a href=\"javascript:StarbarClick(-2);\" onMouseOver=\"StarbarMouseOver("
                           + imgNum
                           + ",-2)\" onMouseOut=\"StarbarMouseOut(-2)\"><img src=\""
                           + StarbarNoOpinionImage(isNoOpinion)
                           + "\" width=92 height=16 border=0 alt=\"Click to rate the movie No Opinion\" name=\"starbar_nop"
                           + imgNum
                           + "\"></a></nobr></td></tr>";
        }
        html += "</table>";
    }
    return html;
}
var StarbarCallData = new Array();
function StarbarFillInAll() {
    //    window.alert("About to fill in starbars");
    for (var i = 0; i < StarbarCallData.length; i++) {   
        var sbData = StarbarCallData[i];
        document.getElementById("sbLoc"+i).innerHTML = StarbarHTML(i,
                                                                   sbData[0],
                                                                   sbData[1],
                                                                   sbData[2],
                                                                   sbData[3],
                                                                   sbData[4],
                                                                   sbData[5],
                                                                   sbData[6],
                                                                   sbData[7],
                                                                   sbData[8],
                                                                   sbData[9],
                                                                   sbData[10]);
    }
    return false;
}

function StarbarInsert(itemId, starType, numStars,
                       predictedRating, isNotInterested, isNoOpinion,
                       showNI, showNiMini, showClear, showNoOpinion,
                       refreshWhenChanged) {
     var imgNum = StarbarCount++;
    numStars = numStars/10;
    predictedRating = predictedRating/10;
    var style = "border:0; height:";
    if (showNiMini) {
        style = "border:0; height:";
    }
    var height = 15;
    var align = "left";
    if (showNI) {
        height += 19;
        align = "center"; 
    }
    if (showClear) {
        height += 19;
    }
    if (showNoOpinion) {
        height += 19;
    }
    style += height;   
    
	document.write("<table cellpadding=0 cellspacing=0 width=100%><tr><td align='" + align + "'><div style='" + style + "' id=sbLoc"+ imgNum + "></div></td></tr></table>");
    StarbarCallData[imgNum] = new Array(itemId, starType, numStars,
                                        predictedRating, isNotInterested, isNoOpinion,
                                        showNI, showNiMini, showClear, showNoOpinion,
                                        refreshWhenChanged);	
                                   
}

function StarbarInsert1(itemId, starType, numStars,
                       predictedRating, isNotInterested, isNoOpinion,
                       showNI, showNiMini, showClear, showNoOpinion,
                       refreshWhenChanged) {
    
     var imgNum = StarbarCount++;
    numStars = numStars/10;
    predictedRating = predictedRating/10;
    var style = "border:0; height:";
    if (showNiMini) {
        style = "border:0; height:";
    }
    var height = 15;
    var align = "center";
    if (showNI) {
        height += 19;
        align = "center"; 
    }
    if (showClear) {
        height += 19;
    }
    if (showNoOpinion) {
        height += 19;
    }
    style += height;   
    
	document.write("<table cellpadding=0 cellspacing=0 width=100%><tr><td align='" + align + "'><div style='" + style + "' id=sbLoc"+ imgNum + "></div></td></tr></table>");
    StarbarCallData[imgNum] = new Array(itemId, starType, numStars,
                                        predictedRating, isNotInterested, isNoOpinion,
                                        showNI, showNiMini, showClear, showNoOpinion,
                                        refreshWhenChanged);	
                                   
}

//
function StarBarLikeYou() {	
    window.open(STARBAR_MLY_PAGE, 'MLYPoppage',
        'toolbars=0,scrollbars=0,location=0,statusbars=0,menubars=0,resizable=0,width=435,height=300');
    return false;
}
StarbarPreload();

