/*
	Rate, by Hassan El Forkani
*/
var StarTrigger = false;

var StarRate = {
	init: function(options){
		this.options = Object.extend({
			setUrl: '/Interact/setvote.php',
			getUrl: '/Interact/getvote.php',
			onSrc: '/Images/fourchettrouge2-trans.png',
			offSrc: '/Images/fourchettgris2-trans.png'
		}, options || {});

		if (StarTrigger) return;
		if(window.ie6){
			this.options.onSrc = '/Images/rouge-small.gif';
			this.options.offSrc = '/Images/gris-small.gif';
		}
		this.onImage = new Image();
		this.onImage.src = this.options.onSrc;
		this.onImage.border = 0;

		this.offImage = new Image();
		this.offImage.src = this.options.offSrc;
		this.offImage.border = 0;

		$each($$('.StarRatingBox'), function(el){
			this.getRating(el.id, this);
		}, this);
		StarTrigger = true;

	},

	getRating: function(blockId){

		if (!this.onImage) this.init();

		var validReg = new RegExp("^Asset|News[-][0-9]{1,*}$", "gi");
		//if (!blockId.match(validReg)) alert(blockId);
		//get rating through an ajax call
		var data = blockId.split('-');
		var type = data[0];
		var itemEl = data[1];
		var block = $(blockId);
		var onImage = new Element('img').setProperties({src:this.onImage.src, border:0});
		var offImage = new Element('img').setProperties({src:this.offImage.src, border:0});
		var message = $(blockId+'Message');
		var stars = $(blockId+'Stars');
		//message.setOpacity(1);
		message.setHTML(votelabels['loading']);
		//stars.setOpacity(0.5);
		new Ajax(this.options.getUrl, {method: 'post', postBody: 'Type='+type+'&Item='+itemEl, onComplete: function(response){
				eval (response);
				if (!vote.average) average = 0;
				//first let's empty the element
				stars.setHTML('');
				var i = 1;
				for (i=1;i<=5;i++)
				{
					if (i<=vote.average){
						linkClass = 'starRatingOn';
						linkImage = onImage.clone();
					}
					else{
						linkClass = 'starRatingOff';
						linkImage = offImage.clone();
					}
					star = new Element('a').setProperties({href:'javascript:void(0);', id:blockId+'-'+i}).setStyles({width:'24px', height:'20px'}).addClass(linkClass).addEvent('click', function(){StarRate.setRating(blockId,this.id)}).addEvent('mouseover', function(){StarRate.over(this.id)}).addEvent('mouseout', function(){StarRate.out(this.id)});
					linkImage.setProperty('alt', i).injectInside(star);
					star.injectInside(stars);
					if (!vote.total) vote.total = '0';
					message.setHTML(vote.total+votelabels['votes']);

				}
				//stars.setOpacity(1);
				}
			}).request();
	},

	setRating: function(blockId, starId){
		validReg = /^(Asset|News)-(\\d+%?)$/;
		//if (!blockId.match(validReg)) return false;
		//get rating through an ajax call
		points = starId.split('-');
		points = points[2];
		data = blockId.split('-');
		type = data[0];
		itemEl = data[1];
		var message = $(blockId+'Message');
		var currentblockId = blockId;
		message.setHTML(votelabels['loading']);
		var stars = $(blockId+'Stars');
		//stars.setOpacity(0.5);
		new Ajax(this.options.setUrl, {method: 'post', postBody: 'Type='+type+'&Item='+itemEl+'&Points='+points, onComplete: function(response){
				eval (response);
				if (!vote.message) alert('no response');
				label = vote.message;
				message.setHTML(votelabels[label]);
				//stars.setOpacity(1);
				StarRate.getRating.bind(StarRate).pass(currentblockId).delay(1500);
			}
			}).request();

	},
	
	over: function(starId){
		points = starId.split('-');
		//deal with message change to alt figure
		message = $(points[0]+'-'+points[1]+'Message');
		if (votelabels['loading'] != message.innerHTML)
		{
			message.old = message.innerHTML;
			message.setHTML(points[2]+' fourchettes');
		}
		//previous stars
		for(j = points[2]; j>=1; j--){
			previousId = points[0]+'-'+points[1]+'-'+j;
			$(previousId).getFirst().rel = $(previousId).getFirst().src;
			$(previousId).getFirst().src = this.options.onSrc;
		}
		//post stars
		j=points[2].toInt()+1;
		for(j;j<=5; j++){
			postId = points[0]+'-'+points[1]+'-'+j;
			$(postId).getFirst().rel = $(postId).getFirst().src;
			$(postId).getFirst().src = this.options.offSrc;
		}

	},
	out: function(starId){
		points = starId.split('-');
		//deal with message change to alt figure
		if (votelabels['loading'] != message.innerHTML)
		{
			message = $(points[0]+'-'+points[1]+'Message');
			message.setHTML(message.old);
		}
		//previous
		for(j = points[2]; j>=1; j--){
			previousId = points[0]+'-'+points[1]+'-'+j;
			$(previousId).getFirst().src = $(previousId).getFirst().rel;
		}
		//post
		j=points[2].toInt()+1;
		for(j; j<=5; j++){
			postId = points[0]+'-'+points[1]+'-'+j;
			$(postId).getFirst().src = $(postId).getFirst().rel;
		}


	}



};

window.addEvent('load', StarRate.init.bind(StarRate));
