
function highlight_rating(e){
    if(!e) e=window.event;
    if(e.target){ targ=e.target; }else{ targ=e.srcElement; }
    update_ratings(targ.parentNode.id,targ.value);
}

function unhighlight_rating(e){
    if(!e) e=window.event;
    if(e.target){ targ=e.target; }else{ targ=e.srcElement; }
    update_ratings(targ.parentNode.id,targ.parentNode.value);
}

function update_ratings(id,rating){
    var el=document.getElementById(id); 
    var imgs=el.getElementsByTagName("img"); 
    for(var i=0;i<imgs.length;i++){
        if(imgs[i].value <= rating){
            imgs[i].src="/media/images/full_star.gif";  
        }else{
            imgs[i].src="/media/images/empty_star.gif";
        }
    }
}

var submitRatingSuccess = function(o){
    if(o.responseText){
        setup_ratings(o.argument.id,o.argument.object_id,o.responseText,false);
        var el=document.createElement("div");
        el.className="rating_message";
        el.appendChild(document.createTextNode("Your rating has been submitted."));
        var r=document.getElementById(o.argument.id);
        r.appendChild(el);
    }
}

var submitRatingFailure = function(o){
    if(o.responseText !== undefined){
        //alert(o.responseText);
        var r=document.getElementById(o.argument.id);
        var el=document.createElement("div");
        el.className="rating_message";
        el.appendChild(document.createTextElement("Sorry, there was an error submitting your rating, please try again later."));
        r.appendChild(el);
    }
}

function submit_rating(e){
    if(!e) e=window.event;
    if(e.target){ targ=e.target; }else{ targ=e.srcElement; }
    var arg={id:targ.parentNode.id,object_id:targ.parentNode.object_id};
    var callback ={ success:submitRatingSuccess,failure: submitRatingFailure,argument:arg };
    var request = YAHOO.util.Connect.asyncRequest('GET', "/items/rate/"+targ.parentNode.object_id+"/?r="+targ.value, callback);
}

function setup_ratings(id,object_id,rating,allow_submit){
    var el=document.getElementById(id); 
    clearChildren(el);
    el.value=rating; 
    el.object_id=object_id;
    for(var i=1;i<=5;i++){
        var img=document.createElement("img");  
        if(i<=rating){
            img.src="/media/images/full_star.gif";
        }else{
            img.src="/media/images/empty_star.gif";
        }
        img.value=i;
        if(allow_submit){
            img.onmouseover=highlight_rating;
            img.onmouseout=unhighlight_rating;
            img.onclick=submit_rating;
        }
        el.appendChild(img);
    }
}

function clearChildren(el){
    while(el.childNodes.length){
        el.removeChild(el.firstChild);
    } 
}
