var my_rating = 0;
var video_id = 0;


var registered_events = Array();
var register_event = function(obj, ev, func){
  if(obj.addEventListener){
    obj.addEventListener(ev, func, false);
  }else if(obj.attachEvent){
    obj.attachEvent('on'+ev, func);
  }
  registered_events.push({obj: obj, ev: ev, func: func})
}
register_event(window, 'unload', function(e){
  for(var i=0;i<registered_events.length;i++){
    var ev = registered_events[i];
    if(ev.obj){
      if(ev.obj.removeEventListener){
        ev.obj.removeEventListener(ev.ev, ev.func, false);
      }else if(ev.obj.detachEvent){
        ev.obj.detachEvent('on'+ev.ev, ev.func);
      }
    }
  }
});

/*******************/

var posX = function (obj){
	var curleft = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x){
		curleft += obj.x;
  }
	return curleft;
}

var posY = function(obj){
	var curtop = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y){
		curtop += obj.y;
  }
	return curtop;
}

register_event(window, 'load', function(e){
  var node = document.getElementById('vote');
  var img = Array();

  var current_vote = my_rating;
  
  for(var i=0;i<=5;i++){
    img[i] = new Image();
    if(String(i)=="1") {
    	img[i].src = "/images/vote-1.gif";
    } else {    
    	img[i].src = "/images/" + String(i) + "stars.gif";
    }
    if(i!=my_rating) img[i].style.display = 'none';
    else img[i].style.display = 'block';
    img[i].style.border = '0';
    node.appendChild(img[i]);
  }
  
  var update_bars = function(bars){
    if(bars > 5) bars = 5;
    else if(bars < 1) bars = my_rating;
    if(bars != current_vote){
      img[current_vote].style.display = 'none';
      img[bars].style.display = 'block';
      current_vote = bars;
    }
  }
  
  var update_px = function(e){
    var x = posX(node);
    var y = posY(node) ;
    if(
      ((e.clientX + window.scrollX - x - 2) < 1) ||
      ((e.clientX + window.scrollX - x - 2) > 44) ||
      ((e.clientY + window.scrollY - y) < 2) ||
      ((e.clientY + window.scrollY - y) > 19)){
      var bars = 0;
    }else{
      var bars = parseInt((e.clientX - x - 2)/9+1);
    }
    update_bars(bars);
  }
  
  register_event(node, 'mousemove', update_px);
  register_event(node, 'mouseout', update_px);
  
  register_event(node, 'click', function(e){
  	my_rating = current_vote;
    new Ajax.Updater('overallrating', ('/rate-ajax/' + String(video_id) + '/' + String(current_vote)), {
      asynchronous: true
      });
    e.preventDefault();
  });
  
});