var VotingSlider = function(nid, type, tag, rating) {
	if (rating == null)
		rating = 1;
	var nofillID = "slider_" + nid + '_' + tag;
	var fillID = "bg_" + nid + '_' + tag;
	var thumbID = "thumb_" + nid + '_' + tag;
	var ratingID = "rating_" + nid + '_' + tag;
	var width = 216;
	var ppc = 21;
	var slider;
	var has_changed = false;
	
	var status;
	var overlay;
	var content;
	
	var callback = {
		failure: function(o) {
			YAHOO.util.Dom.setStyle(status, 'opacity', 0);
			status.innerHTML = '<div class="success">Your vote was recorded.</div>';
			var anim = new YAHOO.util.Anim('votable_status_' + nid, {opacity: {from: 0, to: 1}}, 1);
			anim.animate();
		},
		success: function(o) {
			YAHOO.util.Dom.setStyle(status, 'opacity', 0);
			status.innerHTML = '<div class="success">Your vote was recorded.</div>';
			var anim = new YAHOO.util.Anim('votable_status_' + nid, {opacity: {from: 0, to: 1}}, 1);
			anim.animate();
		}
	}
	
	function init() { 
		overlay = document.getElementById('votable_overlay_' + nid);
		content = document.getElementById('votable_content_' + nid);
		status = document.getElementById('votable_status_' + nid);

		if (overlay)
			overlay.style.display = 'none';
		
		if (content)
			content.style.display = 'block';
		
		slider = YAHOO.widget.Slider.getHorizSlider(nofillID, thumbID, 0, width, ppc);
		slider.setValue(getOffsetFromRating(rating));
		slider.subscribe('change', onChange);
		slider.subscribe('slideEnd', onEnd);
	}
	
	function getRatingFromOffset(offset) {
		return offset/ppc;
	}
	
	function getOffsetFromRating(rating) {
		return rating*ppc;
	}
		
	function onChange(offset) {
		var el = document.getElementById(fillID);
		el.style.width = offset + 'px';
		//var img = '/themes/spi_common/imgs/slide/handle_' + getRatingFromOffset(offset) + '.gif';
		//document.getElementById(thumbID).style.background = "url(" + img + ") no-repeat top";
	}
	
	function onEnd() {
		domain = document.URL.match( /:\/\/(www\.)?([^\/:]+)/ );
		domain = domain[2]?domain[2]:'';

		if (has_changed) {
			status.innerHTML = '<div class="waiting">&nbsp;</div>';
			YAHOO.util.Connect.asyncRequest('POST', 'http://'+domain+'/votable/vote', callback, postParams());
		} else if (rating != getRatingFromOffset(slider.getValue())) {
			status.innerHTML = '<div class="waiting">&nbsp;</div>';
			has_changed = true;
			YAHOO.util.Connect.asyncRequest('POST', 'http://'+domain+'/votable/vote', callback, postParams());
		}
	}
	function postParams() {
		return 'nid=' + nid + '&type=' + type + '&tag=' + tag + '&rating=' + getRatingFromOffset(slider.getValue());
	}
    init();	
//	YAHOO.util.Event.on(window, "load", init);
}

