// $Id: starBar.js 3200 2009-04-07 09:57:46Z jonathan $

Event.observe(window,'load',starBarSetup);

var ajaxNoRetry = true;
function starBarSetup(){

	//first check to see if there are any "starBarInPlace" placeholders.
	// <li class="starBar" name="starBar" id="2939344"><label>Rating:</label><span name="star_rating_value">5</span></li>
		
	var starHolder = $$('div.starBarInPlace', 'form.starBarInPlace');
//	console.log('Star Bar found ' + starHolder.length + ' potential starBar_in_place placeholders');
	for(var i = 0; i < starHolder.length ; i++){

		var params = starHolder[i].id.split('-');
		
		// Sanity Checks
		if(typeof findRatingsPath == 'undefined'){
//			console.error('StarBar Failure - Need a findRatingsPath javascript variable in order to build.')
			return(0);
		}
		
		if(params.length != 3){
//			console.error('StarBar Failure - Params length was ' + params.length + '. Needs to be 3');
			return(0);
		}

		var memberId = params[1]
		var rating = params[2];
		
		if(isNaN(rating) || isNaN(memberId)){
			//don't create the starbar, something's wrong.
//			console.warn('Failed to initialise the starBar because either rating or memberId were not numbers.');
		}else{
//			console.log('Initialising a star bar');
			starHolder[i] = Object.extend(starHolder[i],starBar);
			starHolder[i].build();
			starHolder[i].rating = rating;
			starHolder[i].memberId = memberId;
			starHolder[i].clear();
			starHolder[i].highlight(rating);	
		}
	}
}

var starBar = {};
	starBar.build = function(){
		this.rating = 0;
		this.memberId = undefined;
		this.starBit = Array();
		this.innerHTML='';
		for (var i = 0; i<=10; i++){
			this.starBit[i] = document.createElement('span');
			this.starBit[i].key = i;
			this.starBit[i].id='starbit_'+this.id+'_'+i;
			if(i>0){
				if(i % 2){
					this.starBit[i].className = 'ratingStar ratingStar_l';	
					this.starBit[i].offClassName = 'ratingStar ratingStar_l';	
					this.starBit[i].overClassName =  'ratingStar ratingStar_l_over';
				}else{
					this.starBit[i].className = 'ratingStar ratingStar_r';	
					this.starBit[i].offClassName = 'ratingStar ratingStar_r';	
					this.starBit[i].overClassName =  'ratingStar ratingStar_r_over';
				}
			}else{
				this.starBit[i].className = 'ratingStar ratingStar_0';	
			}

			this.appendChild(this.starBit[i]);
			this.starBit[i].onmouseover = this.mouseOver;
			this.starBit[i].onclick = this.click;
		}
	}

	starBar.onmouseout = function(){
		this.clear();
		this.highlight(this.rating);
	}

	starBar.mouseOver = function(){
		this.parentNode.clear();
		this.parentNode.highlight(this.key);
	}

	starBar.click = function(){
		this.parentNode.rating = this.key;
		ajaxRequest(findRatingsPath + '?m=' + this.parentNode.memberId + '&f=v&a=add','starRatingValue=' + this.key);
	}

	starBar.clear = function(){
		for(var a=1 ; a<=10 ; a++){
			this.starBit[a].className = this.starBit[a].offClassName;
		}
	}

	starBar.highlight = function(num){
		for(var b=1 ; b <= num ; b++){	
			this.starBit[b].className = this.starBit[b].overClassName;
		}	
	}

