Centrica.Implementation.StarControl = {
	starControl_mouseOut: function(o) {
		setTimeout("if (Centrica.Implementation.StarControl.starControlClear) Centrica.Implementation.StarControl.starControlClear(\""+o.id+"\")",150);
	},
	starControlElement_mouseOut: function(o) {

		var starControl = o.parentNode.parentNode.parentNode;

		starControl.elementsActive=false;
	},
	starControlElement_mouseOver: function(o) {

		var starControl = o.parentNode.parentNode.parentNode;

		Centrica.Implementation.StarControl.starControlUpdate(starControl.id, o.className.substring(4,o.className.length));

		starControl.elementsActive=true;
	},
	starControlElement_click: function(o) { 

		var starControl = o.parentNode.parentNode.parentNode;
		var linkedElement = document.getElementById(o.linkedElementId);

		if (starControl.elementsSelected) {
			var elements = Centrica.Common.getElementsByTagNameClass(starControl, "img", null);

			for (i=0; i<elements.length; i++) {
				elements[i].active=false;
			}
		}

		linkedElement.checked = true;
		o.active = true;
		starControl.elementsSelected = true;
		
		if (o.src.indexOf("-hover") != -1) {
			Centrica.Implementation.StarControl.rewriteStarControlElementSrc(o, "-hover", "-active.gif");
		}
		else if (o.src.indexOf("-active") == -1) {
			Centrica.Implementation.StarControl.rewriteStarControlElementSrc(o, ".gif", "-active.gif");
		}
	},
	loadStarControls: function() {
		var potentialControls = Centrica.Common.getElementsByTagNameClass(document, "div", "starControl");

		for (i=0; i<potentialControls.length; i++) {
			if (potentialControls[i].init == null || potentialControls[i].init == "false") {
				Centrica.Implementation.StarControl.buildStarControl(potentialControls[i]);
			}
		}
	},
	buildStarControl: function(o) {

		var elements = o.getElementsByTagName("input");
		var elementsLabels = o.getElementsByTagName("label");

		if ((elements.length > 0) && (elements.length == elementsLabels.length)) {
			o.onmouseout = function() {
				Centrica.Implementation.StarControl.starControl_mouseOut(this);
			}

			var _star_temp_ul = document.createElement("ul");

			for (e=0; e<elements.length; e++) {
				elements[e].style.display = "none";
				elementsLabels[e].style.display = "none";

				var _star_temp_li = document.createElement("li");
				_star_temp_ul.appendChild(_star_temp_li);
				var _star_temp_img = document.createElement("img");
				_star_temp_li.appendChild(_star_temp_img);
				
				if (!elements[e].disabled) {
					_star_temp_img.className = ("star" + (e+1));
					_star_temp_img.alt = ((e+1) + " star" + ((e+1) > 1 ? "s" : ""));
					if (elements[e].checked) {
						_star_temp_img.src = "/Resources/img/content/star-active.gif";
						_star_temp_img.active = true;
						o.elementsSelected = true;
						
						if (e != 0) {
							for (es=0; es<e; es++) {
								_star_temp_ul.childNodes[es].childNodes[0].src = "/Resources/img/content/star-active.gif";
							}
						}
					}
					else {
						_star_temp_img.src = "/Resources/img/content/star.gif";
					}
					_star_temp_img.linkedElementId = elements[e].id;
					_star_temp_img.onmouseout = function() {
						Centrica.Implementation.StarControl.starControlElement_mouseOut(this);
					}
					_star_temp_img.onmouseover = function() {
						Centrica.Implementation.StarControl.starControlElement_mouseOver(this);
					}
					_star_temp_img.onclick = function() {
						Centrica.Implementation.StarControl.starControlElement_click(this);
					}
				}
				else {
					_star_temp_img.className = ("teaser" + (e+1));
					_star_temp_img.alt = ((e+1) + " star" + ((e+1) > 1 ? "s" : ""));
					_star_temp_img.src = "/Resources/img/content/star-disabled.gif";
					_star_temp_img.relatedInfoBox = "fiveStarInfo";
				}
			}
			
			var elementLocations = o.getElementsByTagName("input");
			if (elementLocations.length > 0) {
				//Centrica.Common.insertAfter(_star_temp_ul, elementLocations[0]);
				o.insertBefore(_star_temp_ul, elementLocations[0]);
			}
		}
		
		var _errors = Centrica.Common.getElementsByTagNameClass(o, "p", "starControlError");
		if ((_errors != null) && (_errors.length == 1)) {
			var _hint = Centrica.Common.getElementsByTagNameClass(o, "div", "starControlHint");
			if ((_hint != null) && (_hint.length == 1)) {
				_hint[0].insertBefore(_errors[0], _hint[0].getElementsByTagName("p")[0]);
			}
		}
		
		return true;
	},
	starControlUpdate: function(starControlId, elNumber) {
		var starControl = document.getElementById(starControlId);

		var elements = Centrica.Common.getElementsByTagNameClass(starControl, "img", null);

		for (i=0; i<elements.length; i++) {
			if (Centrica.Implementation.StarControl.classContains(elements[i], "star")) {
				if (elements[i].className.substring(4,elements[i].className.length) == elNumber) {
					if (elements[i].src.indexOf("-active") != -1) {
						Centrica.Implementation.StarControl.rewriteStarControlElementSrc(elements[i], "-active", "-hover.gif");
					}
					else if (elements[i].src.indexOf("-hover") == -1) {
						Centrica.Implementation.StarControl.rewriteStarControlElementSrc(elements[i], ".gif", "-hover.gif");
					}
				}
				else if (elements[i].className.substring(4,elements[i].className.length) < elNumber) {
					if (elements[i].src.indexOf("-hover") != -1) {
						Centrica.Implementation.StarControl.rewriteStarControlElementSrc(elements[i], "-hover", "-active.gif");
					}
					else if (elements[i].src.indexOf("-active") == -1) {
						Centrica.Implementation.StarControl.rewriteStarControlElementSrc(elements[i], ".gif", "-active.gif");
					}
				}
				else if (elements[i].className.substring(4,elements[i].className.length) > elNumber) {
					if (elements[i].src.indexOf("-hover") != -1) {
						Centrica.Implementation.StarControl.rewriteStarControlElementSrc(elements[i], "-hover", ".gif");
					}
					else if (elements[i].src.indexOf("-active") != -1) {
						Centrica.Implementation.StarControl.rewriteStarControlElementSrc(elements[i], "-active", ".gif");
					}
				}
			}
		}

		elements = null;
	},
	starControlClear: function(starControlId) {
		var starControl = document.getElementById(starControlId);

		if (!starControl.elementsActive) {
			var elements = Centrica.Common.getElementsByTagNameClass(starControl, "img", null);

			if (!starControl.elementsSelected) {
				for (i=0; i<elements.length; i++) {
					if (Centrica.Implementation.StarControl.classContains(elements[i], "star")) {
						if (elements[i].src.indexOf("-active") != -1) {
							Centrica.Implementation.StarControl.rewriteStarControlElementSrc(elements[i], "-active", ".gif");
						}
						else if (elements[i].src.indexOf("-hover") != -1) {
							Centrica.Implementation.StarControl.rewriteStarControlElementSrc(elements[i], "-hover", ".gif");
						}
					}
				}
			}
			else {
				var activeElementNumber = null;

				for (i=0; i<elements.length; i++) {
					if (elements[i].active) {
						activeElementNumber = elements[i].className.substring(4,elements[i].className.length);
						break;
					}
				}
				for (i=0; i<elements.length; i++) {
					if (Centrica.Implementation.StarControl.classContains(elements[i], "star")) {
						if (elements[i].className.substring(4,elements[i].className.length) <= activeElementNumber) {
							if (elements[i].src.indexOf("-hover") != -1) {
								Centrica.Implementation.StarControl.rewriteStarControlElementSrc(elements[i], "-hover", "-active.gif");
							}
							else if (elements[i].src.indexOf("-active") == -1) {
								Centrica.Implementation.StarControl.rewriteStarControlElementSrc(elements[i], ".gif", "-active.gif");
							}
						}
						else if (elements[i].className.substring(4,elements[i].className.length) > activeElementNumber) {
							if (elements[i].src.indexOf("-hover") != -1) {
								Centrica.Implementation.StarControl.rewriteStarControlElementSrc(elements[i], "-hover", ".gif");
							}
							else if (elements[i].src.indexOf("-active") != -1) {
								Centrica.Implementation.StarControl.rewriteStarControlElementSrc(elements[i], "-active", ".gif");
							}
						}
					}
				}
			}

			elements = null;
		}
	},
	extendStarControl: function(o) {

		o.elementsActive = false;
		o.elementsSelected = false;
	},
	extendStarControlElement: function(o) {

		o.active = false;
	},
	rewriteStarControlElementSrc: function(o, anchorPoint, newSrc) {
		o.src = (o.src.substring(0,o.src.indexOf(anchorPoint)) + newSrc);
	},
	classContains: function (o, classSegment) {
		return ((o.className != null) && (o.className.indexOf(classSegment) != -1))
	}
}