var sliderRatings = function()
{
	this.initialize.apply(this, arguments);
}
sliderRatings.prototype = {
	initialize: function()
	{
		// Identify the sliding charts
		this.slideCharts = this.getElementsByClassName(document,"div","qm_SlideRatings");
		// Setup the charts for display
		// array of charts, chartType
		this.setupCharts(this.slideCharts,'slider');
	},
	setupCharts: function (charts)
	{
		var self = this;
				for(i=0;i<charts.length;i++)
				{
						var thisWeekMarker = self.getElementsByClassName(charts[i],"div","qm_ThisWeekMarker");
						var lastWeekMarker = self.getElementsByClassName(charts[i],"div","qm_LastWeekMarker");
						var thisWeekRating = self.getElementsByClassName(charts[i],"div","qm_RatingsThisWeek");
						var lastWeekRating = self.getElementsByClassName(charts[i],"div","qm_RatingsLastWeek");
						
						// These number will be used to calculate the marker's left-margin;
						thisWeekRating = thisWeekRating[0].childNodes[1].innerHTML;
						lastWeekRating = lastWeekRating[0].childNodes[1].innerHTML;
					
						// Prep it's position.. lots of logic and math funness.
						thisWeekRating = this.prepPosition(thisWeekMarker[0],thisWeekRating);
						thisWeekMarker[0].style.backgroundPosition = thisWeekRating + 'px 0';
						
						lastWeekRating = this.prepPosition(lastWeekMarker[0],lastWeekRating);
						lastWeekMarker[0].style.backgroundPosition = lastWeekRating + 'px 0';
						
				}
	},
	prepPosition: function(markerElem,Rating)
	{
		if (Rating<1.6 && Rating>0.9) {
			Rating = Math.round(((Rating - 1) * 28));
		}
		else if (Rating>1.5 && Rating<2.6) {
			markerElem.style.marginLeft='14px';
			Rating = Math.round(((Rating - 1) * 13)-6);
		}
		else if (Rating>2.5 && Rating<3.6) {
			markerElem.style.marginLeft='14px';
			Rating = Math.round(((Rating - 1) * 14)-6);
		}
		else if (Rating>3.5 && Rating<4.6) {
			markerElem.style.marginLeft='14px';
			Rating = Math.round(((Rating - 1) * 15)-7);
		}
		else if (Rating>4.5 && Rating<5.1) {
				Rating = Math.round(((Rating - 1) * 27)-35);
		} else {
			Rating = -100;
		}
		return Rating;
	},
	getElementsByClassName: function (oElm, strTagName, oClassNames) {
	    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	    var arrReturnElements = new Array();
	    var arrRegExpClassNames = new Array();
	    if(typeof oClassNames == "object"){
	        for(var i=0; i<oClassNames.length; i++){
	            arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
	        }
	    }
	    else{
	        arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
	    }
	    var oElement;
	    var bMatchesAll;
	    for(var j=0; j<arrElements.length; j++){
	        oElement = arrElements[j];
	        bMatchesAll = true;
	        for(var k=0; k<arrRegExpClassNames.length; k++){
	            if(!arrRegExpClassNames[k].test(oElement.className)){
	                bMatchesAll = false;
	                break;                      
	            }
	        }
	        if(bMatchesAll){
	            arrReturnElements.push(oElement);
	        }
	    }
	    return (arrReturnElements)
	}
};
new sliderRatings();