var sliderComp = function()
{
 	this.initialize.apply(this, arguments);
}
sliderComp.prototype = {
	initialize: function()
	{
		// Identify the sliding comparison charts
		this.slideCharts = this.getElementsByClassName(document,"div","qm_SlideComparison");
		
		// Setup the charts for display
		// array of charts, chartType
		this.setupCharts(this.slideCharts);
	},
	setupCharts: function (charts)
	{
		var self = this;
		for(i=0;i<charts.length;i++)
		{
			var rankMarker = self.getElementsByClassName(charts[i],"div","qm_RankMarker");
			var rankFill = self.getElementsByClassName(charts[i],"div","qm_compChartFill");
			var startRange = self.getElementsByClassName(charts[i],"span","start");
			var endRange = self.getElementsByClassName(charts[i],"span","end");
			var Ranked = self.getElementsByClassName(charts[i],"div","qm_IndustryRank");
			
			// The raw digit for rank
			Ranked = Ranked[0].childNodes[1].innerHTML;
			
			// Digit to start
			startRange = startRange[0].innerHTML;
			endRange = endRange[0].innerHTML;
			
			
			//Position our marker
			this.posMarker(rankMarker,rankFill,startRange,endRange,Ranked);
						
		}
	},
	posMarker: function(markerElem,fillElem,start,end,rank)
	{
		//alert("Marker Element : " + markerElem + " starts at " + start + " and ends at " + end + " and is ranked " + rank);
		var count = 1;
		for(i=start;i<end;i++)	{ count++; }
		if(count)
		
		// Our percentage for background position of the marker and width of the fill
		percentage = Math.round(((rank / count) * 100));
		percentage = (percentage>100) ? 100:percentage;
		
		// Create the fill.
		fillElem[0].style.width = percentage + '%';
		
        // Get the fills actual pixel width
        var fillWidth=fillElem[0].offsetWidth;
        
		// Position marker to fills actual pixel width
        markerElem[0].style.backgroundPosition = (fillWidth-2) + 'px top';
	},
	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 sliderComp();