var relatedLinksWithSummary = {
	init:function(){
		if(!$("extra-content")) return;
		var relatedLinksModules = bbcjs.dom.getElementsByClassName("related-links-with-summary", "ul");
		if(relatedLinksModules.length==0) return;
		for (var i=0; relatedLinksModules[i]; i++){
			var imgs = relatedLinksModules[i].getElementsByTagName("img");
			for (var c=0; imgs[c]; c++){
				imgs[c].onclick = function(){
					relatedLinksWithSummary.showHideText(this);
					return false;
				};
			}
		}
	},
	showHideText:function(img){
		var p = bbcjs.dom.next( img, "p" );
		var parentLi = bbcjs.dom.parent( img, "li" );
		p = bbcjs.dom.next( p, "p" );
		if(bbcjs.dom.hasClassName( p, "offscreen" )){
			if((bbcjs.dom.getStyle( p, "left" )) == "-3000px"){
				bbcjs.dom.setStyle( p, { left: "0", position: "relative" } );
				bbcjs.dom.setStyle( parentLi, { backgroundColor:"#fff" } );
				bbcjs.dom.attr( img, "src", "/bloom/css/1/f/minus-icon.gif" );
			} else {
				bbcjs.dom.setStyle( p, { left: "-3000px", position: "absolute" } );
				bbcjs.dom.setStyle( parentLi, { backgroundColor:"#d5ebeb" } );
				bbcjs.dom.attr( img, "src", "/bloom/css/1/f/plus-icon.gif" );
			}
		}
	}
}


var references = {
	init:function(){
		if(!$("references")) return;
		if(!$("reference-list")) return;
		if(!$("reference-img")) return;
		var references = $("references");
		var referencelist = $("reference-list");
		var referenceimg = $("reference-img");
		bbcjs.dom.setStyle( referencelist, { display:"none"} );
		references.onclick = function(){		
			if((bbcjs.dom.getStyle( referencelist, "display" )) == "none"){
				bbcjs.dom.setStyle( referencelist, { display:"block"} );
				bbcjs.dom.attr( referenceimg, "src", "/bloom/css/1/f/minus-icon.gif" );
			} else {
				bbcjs.dom.setStyle( referencelist, { display:"none"} );
				bbcjs.dom.attr( referenceimg, "src", "/bloom/css/1/f/plus-icon.gif" );
			}
			return false;
		};
	}
}


var pubfact = {
	facts:[],
	factsTotal:null,
	currentFact:0,
	factElement:null,
	init:function(){
		if(!$("pub-fact")) return;

		/* get facts and store in an array*/
		var factElemets = $("pub-fact").getElementsByTagName("li");
		pubfact.factsTotal = factElemets.length;
		if(pubfact.factsTotal > 1){
			/* if more than one pub fact add 'another' link to page */
			pubfact.addLink();
		}
		for (var i = 0; i < pubfact.factsTotal; i++){
			pubfact.facts[i] = factElemets[i].innerHTML;
		}
		/* save reference to element that gets updated with facts */
		pubfact.factElement = factElemets[0];
	},
	addLink:function() {
		bbcjs.dom.append( $('pub-fact'), '<p id="pub-fact-another"><a href="#" onclick="pubfact.showNextFact();return false;">Another?</a></p>' );
	},
	showNextFact:function() {
		if(pubfact.currentFact + 1 < pubfact.factsTotal){
			pubfact.currentFact++;
			
		} else {
			pubfact.currentFact = 0;
		}
		pubfact.factElement.innerHTML = pubfact.facts[pubfact.currentFact];
	}
}


var jsrate = 
{
	currentAction:null,
	averageRating:null,
	userRating:null,
	hasRated:false,
	hasRatedThisVisit:false,
	ratingAgain:false,
	totalRatings:null,
	postRatingText:'Thanks for rating',
	ratingText:['Very hard', 'Hard', 'Easy', 'Really easy', 'No brainer'],
	ratingsRecord:{},
	htmlLoggedIn:'<img src="/bloom/images/easiness.gif" width="87" height="32" alt="Easiness">' +
			'<div class="jsrate">' +
				'<a href="#" onmouseout="jsrate.clearAll()" onmouseover="jsrate.highlight(1)" onclick="return jsrate.submit(1)" onfocus="jsrate.highlight(1)" id="rate1"><span class="offscreen">1</span></a>' +
				' <a href="#" onmouseout="jsrate.clearAll()" onmouseover="jsrate.highlight(2)" onclick="return jsrate.submit(2)" onfocus="jsrate.highlight(2)" id="rate2"><span class="offscreen">2</span></a>' +
				' <a href="#" onmouseout="jsrate.clearAll()" onmouseover="jsrate.highlight(3)" onclick="return jsrate.submit(3)" onfocus="jsrate.highlight(3)" id="rate3"><span class="offscreen">3</span></a>' +
				' <a href="#" onmouseout="jsrate.clearAll()" onmouseover="jsrate.highlight(4)" onclick="return jsrate.submit(4)" onfocus="jsrate.highlight(4)" id="rate4"><span class="offscreen">4</span></a>' +
				' <a href="#" onmouseout="jsrate.clearAll()" onmouseover="jsrate.highlight(5)" onclick="return jsrate.submit(5)" onfocus="jsrate.highlight(5)" id="rate5"><span class="offscreen">5</span></a>' +
			'</div>' +
			'<p id="ratingText"></p>',
	htmlNotLoggedIn:'<img src="/bloom/images/easiness.gif" width="87" height="32" alt="Easiness">' +
			'<div class="jsrate" onmouseover="jsrate.showLoginText()">' +
				'<span class="rateSpan" id="rate1"></span>' +
				'<span class="rateSpan" id="rate2"></span>' +
				'<span class="rateSpan" id="rate3"></span>' +
				'<span class="rateSpan" id="rate4"></span>' + 
				'<span class="rateSpan" id="rate5"></span>' +
			'</div>' +
			'<p id="ratingText">Log in to rate</p>',			
	init:function(){
		this.averageRating = currentAction.averageRating;
		this.totalRatings = currentAction.totalRatings;
		this.userRating =  currentAction.userRating;
		this.highlight(this.averageRating);
		this.displayRatingText();
	},
	displayRatingText:function(){
		if(this.hasRatedThisVisit){
			$("ratingText").innerHTML = this.postRatingText; 
		}
		else if(this.userRating){
			$("ratingText").innerHTML = 'You rated this ' + this.userRating + ' out of 5'; 
		} else {
			$("ratingText").innerHTML = jsrate.totalRatings + ' ratings'; 
		}
		
	},
	highlight:function(rateNumber){
		for(var i = rateNumber; i > 0; i--){
			var rateID = "rate"+i;
			//$(rateID).className = "rateSpan highlighted";
			bbcjs.dom.attr( $(rateID), "class", "rateSpan highlighted" );
		}
		for(var i = (rateNumber+1); i <= 5; i++){
			var rateID = "rate"+i;
			//$(rateID).className = "rateSpan";
			bbcjs.dom.attr( $(rateID), "class", "rateSpan" );
		}
		
		$("ratingText").innerHTML = this.ratingText[rateNumber - 1];
	},
	clearAll:function(){
		if(jsrate.hasRatedThisVisit) {
			for(var i = this.userRating; i > 0; i--){
				var rateID = "rate"+i;
				//$(rateID).className = "rateSpan selected";
				bbcjs.dom.attr( $(rateID), "class", "rateSpan selected" );
			}
			for(var i = (this.userRating+1); i <= 5; i++){
				var rateID = "rate"+i;
				//$(rateID).className = "rateSpan";
				bbcjs.dom.attr( $(rateID), "class", "rateSpan" );
			}
		} else {
			//reset stars
			this.highlight(this.averageRating);
		}
		this.displayRatingText();
	},
	submit:function(rateNumber){
		for(var i = rateNumber; i > 0; i--){
			var rateID = "rate"+i;
			//$(rateID).className = "rateSpan selected";
			bbcjs.dom.attr( $(rateID), "class", "rateSpan selected" );
		}
		for(var i = (rateNumber+1); i <= 5; i++){
			var rateID = "rate"+i;
			//$(rateID).className = "rateSpan";
			bbcjs.dom.attr( $(rateID), "class", "rateSpan" );
		}
		
		//send rating to idstore		
		bbcjs.http.get('/bloom/ajax?action_easiness_' + currentAction.actionId + '=' + rateNumber, {onLoad:this.ratingSuccessHandler, onError:this.ratingErrorHandler});
		
		// add rating details to ratingsRecord	
		this.ratingsRecord[currentAction.actionId] = rateNumber;
		this.userRating = rateNumber;
		this.hasRated = true;
		this.hasRatedThisVisit = true;
		
		return false;
	},
	ratingSuccessHandler:function(){
		$("ratingText").innerHTML = jsrate.postRatingText;

		// if in the iframe then tell flash that a user has voted
		var parentUrl = String(parent.location);
		// check for urlFlashTest for testing only. please remove after
		if ((parentUrl.indexOf(bloom.urlFlash) != -1) || (parentUrl.indexOf(bloom.urlFlashTest) != -1)){
			parent.FlashControl.flashMovie().fl_easiness_rated(currentAction.actionId,jsrate.userRating);
		}
	},
	ratingErrorHandler:function(){
		//alert("log2results error");
	},
	showLoginText:function(){
		$("ratingText").innerHTML = 'Log in to rate';
	}
}

if (document.documentElement && document.getElementById)
{
	bbcjs.addOnLoadItem(bloom.articleInit);
}