// (C) 2007-2012 Qualtrics, Inc.

window.CSBar=Class.create();window.CSBar.suspendRounding=false;window.CSBar.prototype={initialize:function(minValue,maxValue,gridLines,QID,type)
{this.type=type||'bar'
this.QID;this.minValue=0;this.barMaxWidth=500;this.maxValue=100;this.totalMax=0;this.sliders=new Object();this.gridLines=5;this.labelWidth=undefined;this.gridLinePosition=0;this.decimals=0;var realQuestionId=QID;if(realQuestionId.indexOf('_')!=-1)
{realQuestionId=realQuestionId.substring(realQuestionId.indexOf('_')+1,realQuestionId.length);}
if(!$(realQuestionId).offsetWidth)
{this.loaded=false;return false;}
if(maxValue!==undefined){this.maxValue=Number(maxValue);}
if(minValue!==undefined){this.minValue=Number(minValue);}
if(gridLines!==undefined){this.gridLines=gridLines;}
if(QID){this.QID=QID;}
if($(this.QID+'~totalMax')){this.totalMax=$(this.QID+'~totalMax').value;this.totalMax=parseInt(this.totalMax);}
this.animation=false;this.resizeObserver=new Event.observe(window,'resize',this.calculateMaxWidth.bind(this));this.loaded=true;},calculateMaxWidth:function()
{for(var sliderTag in this.sliders)
{var barContainer=$(sliderTag+'~barTd');if(barContainer)
{var barOuter=barContainer.parentNode;var rightTd=$(sliderTag+'~RightBorder');this.barMaxWidth=rightTd.offsetLeft-barOuter.offsetLeft;$(this.sliders[sliderTag].track).setStyle({width:this.barMaxWidth+'px'});this.sliders[sliderTag].trackLength=this.barMaxWidth;if(this.sliders[sliderTag].value)
{this.suspend=true;this.sliders[sliderTag].setValue(this.sliders[sliderTag].value);this.suspend=false;}}}},makeSlider:function(barTag,preset)
{var barContainer=$(barTag+'~barTd');if(!barContainer)
{return}
try
{var barOuter=barContainer.parentNode;var rightTd=$(barTag+'~RightBorder');this.barMaxWidth=rightTd.offsetLeft-barOuter.offsetLeft;var track=QBuilder('div',{id:barTag+'~track',className:'track'},[QBuilder('div',{id:barTag+'~handle',className:'handle'})]);$(track).setStyle({width:this.barMaxWidth+'px'});var tmpBar=QBuilder('div',{id:barTag+'~holder',className:'trackHolderRel'},[track,QBuilder('div',{id:barTag+'~bar',className:'bar'})]);if(barContainer)
barContainer.appendChild(tmpBar);var barMaxWidth=this.barMaxWidth;var this_=this;this.sliders[barTag]=new Control.Slider(barTag+'~handle',barTag+'~track',{onSlide:this_.onSlide.bind(this_,barTag),onChange:this_.onSliderChange.bind(this_,barTag)});this.sliders[barTag]['choiceId']=barTag.substring(barTag.indexOf('~')+1);if($(barTag+'~result')){if($(barTag+'~result').value){var value=this.valueToBar($(barTag+'~result').value);this.sliders[barTag].setValue(value);}else{if(preset!=undefined){this.sliders[barTag].setValue(preset);}}}
if($(barTag+'~result')){$(barTag+'~result').onchange=this.onValueEnter.bindAsEventListener(this_,barTag);}
if($(barTag+'~NA'))
{$(barTag+'~NA').onclick=this_.notApplicableHandler.bindAsEventListener(this_,barTag);}
return this.sliders[barTag];}
catch(e)
{alert(e);}},onSlide:function(barTag,v,sliderObj){if(this.totalMax){var max=this.getSliderMax(barTag);if(v>max){v=(max);this.sliders[barTag].setValue(max);}
if(max<0){v=0;this.sliders[barTag].setValue(0);}}
var percent=v*this.barMaxWidth;var bar=$(barTag+'~bar');this.updateBar(bar,percent,false);if(this.suspend)
{return false;}
if($(barTag+'~result')!=undefined){$(barTag+'~result').value=this.barToValue(v);if(this.totalMax){var max=this.getSliderMax(barTag);}}else{console.error("no input for "+barTag);}
if(this.sliders[barTag]&&!this.sliders[barTag].activated)
{this.activateBar(barTag);}},onSliderChange:function(barTag,v,sliderObj)
{this.onSlide(barTag,v,sliderObj);if(this.suspend)
{return false;}
if(this.totalMax){var max=this.getSliderMax(barTag);}
if(this.onChange)
{this.onChange(this.sliders[barTag]);}},getSliderMax:function(currentbarTag){var maxTotal=this.totalMax;var othersTotal=0;var total=0;var currentSliderMax=0;var remaining=0;for(var slider in this.sliders){var val=Number($(slider+'~result').value);if(isNaN(val)){val=0;}
total=total+val;if(slider!=currentbarTag){othersTotal+=(val);}}
currentSliderMax=maxTotal-othersTotal;remaining=currentSliderMax-this.barToValue(this.sliders[currentbarTag].value);$(this.QID+'~total').value=this.roundNumber(total,this.decimals);return this.valueToBar(currentSliderMax);},updateBar:function(bar,v,smooth){if(bar)
{bar.style.width=((v))+'px';}},notApplicableHandler:function(evt,barTag)
{var input=Event.element(evt);if(!input.checked)
{var sliderObj=this.sliders[barTag];var val=sliderObj.values.length>1?sliderObj.values:sliderObj.value;this.onSliderChange(barTag,val);this.onSlide(barTag,val);}
else
{this.deactivateBar(barTag);}},activateBar:function(barTag,setDefaultValue)
{this.sliders[barTag].activated=true;var bar=$(barTag+'~bar');$(bar.parentNode).addClassName('activated');if($(barTag+'~NA'))
{$(barTag+'~NA').checked=false;$(barTag+'~result~NA').value='';}
if(setDefaultValue)
{this.sliders[barTag].setValue(this.sliders[barTag].value);}},deactivateBar:function(barTag)
{this.sliders[barTag].activated=false;var bar=$(barTag+'~bar');var input=$(barTag+'~result');var NABox=$(barTag+'~result~NA');if(bar)
{$(bar.parentNode).removeClassName('activated');}
if(input)
{input.value='';}
if(NABox)
{NABox.value='1';}},barToValue:function(v)
{var raw=(v*(this.maxValue-this.minValue))+this.minValue;if(window.CSBar.suspendRounding)
{return raw;}
return this.roundNumber(raw,this.decimals);},valueToBar:function(v)
{var barValue=(v-this.minValue)/(this.maxValue-this.minValue);if(barValue<0)
{barValue=0;}
if(barValue>1)
{barValue=1;}
if(!isNaN(barValue)){return barValue;}else{return this.minValue;}},setDecimals:function(v)
{this.decimals=v;},roundNumber:function(num,dec){var result=Math.round(Math.round(num*Math.pow(10,dec+1))/Math.pow(10,1))/Math.pow(10,dec);return result;},onValueEnter:function(evt,barTag)
{var value=Event.element(evt).value;if(value==='')
{this.deactivateBar(barTag);}
else
{value=this.roundNumber(value,this.decimals);window.CSBar.suspend=true;var v=this.valueToBar(value);this.sliders[barTag].setValue(v);window.CSBar.suspend=false;}},setStartPositionsArray:function(list)
{var orderedSliders=$H(this.sliders).values();this.suspend=true;for(var i=0,len=list.length;i<len;++i)
{if(orderedSliders[i]&&!orderedSliders[i].value)
{orderedSliders[i].setValue(list[i]);}}
this.suspend=false;},setStartPositions:function(json)
{if(Object.isArray(json))
{return this.setStartPositionsArray(json);}
var orderedSliders=$H(this.sliders).values();this.suspend=true;for(var i in json)
{var barTag=this.QID+'~'+i
if(typeof json[i]=='function')continue;if(this.sliders[barTag]&&!this.sliders[barTag].value&&!this.sliders[barTag].activated)
{this.sliders[barTag].setValue(json[i]);}}
this.suspend=false;}}
function getStyle(el,styleProp)
{var x=document.getElementById(el);if(x.currentStyle)
var y=x.currentStyle[styleProp];else if(window.getComputedStyle)
var y=document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);return y;}
