/*
Author: Addam M. Driver
Date: 10/31/2006
*/

var sMax;    // Isthe maximum number of stars
var holder; // Is the holding pattern for clicked state
var preSet; // Is the PreSet value onces a selection has been made
var rated;

function roundNumber(num, dec) {
    var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
    return result.toFixed(dec);
}

function load_rating(me) {
    //avg = roundNumber(sum/count,0);
    sMax = 5;    // Isthe maximum number of stars
    votesCount = parseInt(document.getElementById("ratingCount").innerHTML);
    if (votesCount > 0) {
        avg = roundNumber((parseInt(document.getElementById("ratingSum").innerHTML))/(votesCount),0);
        a = 0;
        for(i=1; i<=sMax; i++){        
            if(i<=avg){
                document.getElementById("_"+i).className = "on";
                holder = a+1;
                a++;
            }else{
                document.getElementById("_"+i).className = "";
            }
        } 
        document.getElementById("rateStatus").innerHTML = roundNumber((parseInt(document.getElementById("ratingSum").innerHTML))/(parseInt(document.getElementById("ratingCount").innerHTML)),2);    
    }
}

// Rollover for image Stars //
function rating(num, iValue){

    sMax = 0;    // Isthe maximum number of stars
    for(n=0; n<num.parentNode.childNodes.length; n++){
        if(num.parentNode.childNodes[n].nodeName == "A"){
            sMax++;    
        }
    }
    
    if(!rated){
        s = num.id.replace("_", ''); // Get the selected star
        a = 0;
        for(i=1; i<=sMax; i++){        
            if(i<=s){
                document.getElementById("_"+i).className = "on";
                document.getElementById("rateStatus").innerHTML = iValue.toFixed(2); //num.title;    
                holder = a+1;
                a++;
            }else{
                document.getElementById("_"+i).className = "";
            }
        }
    }
}

// For when you roll out of the the whole thing //
function off(me){
    if(!rated){
        if(!preSet){    
            for(i=1; i<=sMax; i++){        
                document.getElementById("_"+i).className = "";
                document.getElementById("rateStatus").innerHTML = me.parentNode.title;
            }
        }else{
            rating(preSet);
            document.getElementById("rateStatus").innerHTML = document.getElementById("ratingSaved").innerHTML;
        }
        
        sMax = 0;    // Isthe maximum number of stars
        for(n=0; n<me.parentNode.childNodes.length; n++){
            if(me.parentNode.childNodes[n].nodeName == "A"){
                sMax++;    
            }
        }
        votesCount = parseInt(document.getElementById("ratingCount").innerHTML);
        if (votesCount > 0) {
            avg = roundNumber((parseInt(document.getElementById("ratingSum").innerHTML))/(votesCount),0);
            avg_2 = roundNumber((parseInt(document.getElementById("ratingSum").innerHTML))/(votesCount),2);
            a = 0;
            for(i=1; i<=sMax; i++){        
                if(i<=avg){
                    document.getElementById("_"+i).className = "on";
                    document.getElementById("rateStatus").innerHTML = me.title;    
                    holder = a+1;
                    a++;
                }else{
                    document.getElementById("_"+i).className = "";
                }
            }
            document.getElementById("rateStatus").innerHTML = avg_2;
        }
    }
}

// When you actually rate something //
function rateIt(me, iValue){
    if(!rated){
        //document.getElementById("rateStatus").innerHTML = document.getElementById("ratingSaved").innerHTML + " :: "+me.title;
        //document.getElementById("rateStatus").innerHTML = parseInt(document.getElementById("ratingSaved").innerHTML) + parseInt(me.title);
        document.getElementById("rateStatus").innerHTML = roundNumber(((parseInt(document.getElementById("ratingSum").innerHTML) + iValue))/(parseInt(document.getElementById("ratingCount").innerHTML) + 1),2);
        document.getElementById("rateTotalVotes").innerHTML = roundNumber(parseInt(document.getElementById("ratingCount").innerHTML) + 1, 0);
        //alert(parseInt(document.getElementById("ratingCount").innerHTML) + 1);
        preSet = me;
        rated=1;
        sendRate(me, iValue);
        rating(me, iValue);
    }
}

// Send the rating information somewhere using Ajax or something like that.
function sendRate(sel, iValue){
    //alert("Your rating was: "+sel.title);
    
    var poststr =   "Page=" + encodeURI( document.getElementById("Page").value ) + 
                    "&theAction=" + encodeURI( "Vote" ) +
                    "&theScore=" + encodeURI( iValue ) +
                    "&AlbumId=" + encodeURI(document.getElementById("AlbumId").value) +
                    "&ImageId=" + encodeURI(document.getElementById("ImageId").value);
    
    http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
             // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");            
            } catch (e) {}
         }
      }
  if (!http_request && typeof XMLHttpRequest!='undefined') {
    http_request = new XMLHttpRequest();
  }
  
  //http_request.onreadystatechange = alertContents;
  var url = "/index.php5?" + poststr;
  http_request.open('GET', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.send(null);
    
}
