
function balloonFadeOut()
{if(HideBalloonAllowed)
{fadeTo("balloon",100,25,0);dateslider.setInformationBalloonDisplayedFalse();}}
function ZoomControl()
{var self=document.createElement("div");var zcButton=new Array();self.state=0;self.valid=false;self.className="zoomControl";self.appendChild(document.createElement("div"));self.appendChild(document.createElement("div"));self.childNodes[0].className="zoomControlButton";self.childNodes[1].className="zoomControlButton";zcButton[0]=self.childNodes[0];zcButton[1]=self.childNodes[1];self.childNodes[0].appendChild(document.createElement("div"));self.childNodes[0].childNodes[0].appendChild(document.createTextNode(" "));self.childNodes[0].appendChild(new Image());self.childNodes[0].childNodes[0].className="zoomControlButtonText";self.childNodes[0].childNodes[0].onmouseover=function(){this.style.textDecoration="underline";}
self.childNodes[0].childNodes[0].onmouseout=function(){this.style.textDecoration="none";}
self.childNodes[0].childNodes[1].className="zoomControlButtonImage";self.childNodes[0].childNodes[1].style.width="9px";self.childNodes[0].childNodes[1].style.height="9px";self.childNodes[1].appendChild(document.createElement("div"));self.childNodes[1].childNodes[0].appendChild(document.createTextNode(" "));self.childNodes[1].appendChild(new Image());self.childNodes[1].childNodes[0].className="zoomControlButtonText";self.childNodes[1].childNodes[0].onmouseover=function(){this.style.textDecoration="underline";}
self.childNodes[1].childNodes[0].onmouseout=function(){this.style.textDecoration="none";}
self.childNodes[1].childNodes[1].className="zoomControlButtonImage";self.childNodes[1].childNodes[1].style.width="9px";self.childNodes[1].childNodes[1].style.height="9px";function setButtonText(x,text)
{if(!x)
{zcButton[0].childNodes[0].childNodes[0].nodeValue=text;}
else
{zcButton[1].childNodes[0].childNodes[0].nodeValue=text;}}
self.setButtonText=setButtonText;function setButtonImage(x,source)
{if(!x)
{zcButton[0].childNodes[1].src="http://media.ft.com/FTCOM/SimpleSearch/Images/"+source;}
else
{zcButton[1].childNodes[1].src="http://media.ft.com/FTCOM/SimpleSearch/Images/"+source;}}
self.setButtonImage=setButtonImage;function setState(x)
{changeState(x);if(typeof(self.onchange)=="function")
{self.onchange(self.state);}}
self.setState=setState;function changeState(x)
{if(x<0){x=0}
if(x>3){x=3}
self.state=x;switch(x)
{case 0:zcButton[0].style.display="none";zcButton[1].style.display="none";break;case 1:zcButton[0].style.display="none";zcButton[1].style.display=(self.valid)?"":"none";break;case 2:zcButton[0].style.display="";zcButton[1].style.display=(self.valid)?"":"none";break;case 3:zcButton[0].style.display="";zcButton[1].style.display="none";break;default:}}
this.setState=changeState;function z0click()
{self.setState(self.state-1)}
zcButton[0].onclick=z0click;function z1click()
{self.setState(self.state+1)}
zcButton[1].onclick=z1click;function zValid()
{self.valid=true;changeState(self.state);}
self.zoomValid=zValid;function zInvalid()
{self.valid=false;changeState(self.state);}
self.zoomInvalid=zInvalid;self.setState(1);return self;}
function ftdsSliderObject(valuesarray,datesarray)
{var init=false;var dateslider=this;var SliderTotalWidth,SliderLeft,SliderTop,SliderHeight,RenderResults,ScrollbarTop,SCROLLBARADJUSTMENT,AllowPurging,SCROLLBARHEIGHT,INITIALBAROFFSET,DRAGHANDLEOFFSET,DraghandleMaxExtent,DraghandleMinExtent,DraghandleTop,ResetDatesInProgress,ZoomInProgress,DateOutputLeft,DateOutputTop,ResultButtonTop,ResultButtonLeft,VALIDZOOMDAYS,VALIDZOOMWEEKS,VALIDZOOMONTHS,BackgroundDrawStarted,GraphRedrawStarted,GraphResizeStarted,ViewResultsEnabled,CurtainsDrawn,AllComponentsHidden,SliderDockedState,DragInProgress,InformationBalloonDisplayed,ScrollBarInnerDiv,ScrollInProgress,BackgroundDatesDiv;DRAGHANDLEOFFSET=13;INITIALBAROFFSET=6;SCROLLBARADJUSTMENT=1;SCROLLBARHEIGHT=16;VALIDZOOMDAYS=31;VALIDZOOMWEEKS=52;VALIDZOOMONTHS=12;FLEXSCROLL_LICENSE="This script is registered for use by Tony Gurnick and The Financial Times under the following licence agreement:http://www.hesido.com/licenses.php?page=flexcrollcommercialunlimited";SliderTotalWidth=440;SliderLeft=29;SliderTop=100;SliderHeight=70;AllComponentsHidden=true;AllowPurging=true;BackgroundDrawStarted=false;CurtainsDrawn=false;DragInProgress=false;GraphRedrawStarted=false;GraphResizeStarted=false;HideBalloonAllowed=false;InformationBalloonDisplayed=false;RenderResults=true;ResetDatesInProgress=false;ScrollInProgress=false;SliderDockedState=0;ViewResultsEnabled=true;ZoomInProgress=false;var BackgroundPanes=new Array();var bookends=new Array();var curtains=new Array();var enddateResultBox=new ResultBox("To: ");var graphContainer=document.createElement("div");var handles=new Array();var highlightNote=document.createElement("div");var resdiv=document.createElement("div");var resultcountResultBox=new ResultBox("Results: ");var scrollStopper=new Array();var sliderSeat=document.createElement("div");var startdateResultBox=new ResultBox("From: ");var subbut=document.createElement("div");var subbutspan=document.createElement("span");var BarDisplayObject;var MaximumBarHeight;var MaximumBars;var CurrentRange;var CurrentHeight;var TempBarObjectHeight
var TempBarObject
var TempBackgroundObject
var CurrentZoomBarWidth;var CurrentZoom;var CurrentZoomBarDimensions;var BarHatWidth;var X;BarDisplayObject=document.createElement("div");BarDisplayObject.className="ftdsBar";BarDisplayObject.appendChild(document.createElement("div"));BarDisplayObject.appendChild(document.createElement("div"));var zoomControl1=new ZoomControl();zoomControl1.style.position="absolute";zoomControl1.style.zIndex=200;zoomControl1.onchange=changeZoom;zoomControl1.setButtonImage(0,"zoom_out.gif");zoomControl1.setButtonImage(1,"zoom_in.gif");zoomControl1.setButtonText(0,"Zoom Out");zoomControl1.setButtonText(1,"Zoom In");var scb=new Scrollbar();scb.onscroll=customScroll_scroll;scb.onmouseup=customScroll_EndScroll;scb.onmousedown=customScroll_BeginScroll;scb.onmouseout=customScroll_EndScroll;var handleOffset=DRAGHANDLEOFFSET;var graph=new GraphPane("M");function infoBallonChk()
{InformationBalloonDisplayed=false;}
this.setInformationBalloonDisplayedFalse=infoBallonChk;function graphDate(period,day,month,year)
{var todaysDate=new Date();var s,f,c;if(typeof(period)=="string")
{switch(period)
{case"Start":this.dates["Start"]=new Date(year,month,day);this.dates["Floor"]=new Date(year,month,day);this.dates["Today"]=todaysDate;this.dates["Ceiling"]=todaysDate;break;case"Floor":this.dates["Floor"]=new Date(year,month,day);break;case"Ceiling":this.dates["Ceiling"]=new Date(year,month,day);break;default:this.dates["Today"]=todaysDate;this.dates["Ceiling"]=todaysDate;}}}
GraphPane.prototype.date=graphDate;function INIT(valuearray,datearray)
{init=true;if(typeof(this.oninitialize)=="function")
{this.oninitialize();}
return true;}
GraphPane.prototype.init=INIT;function graphDisplayWindow(oleft,otop,owidth,oheight)
{if(GraphResizeStarted||!init){return;}
GraphResizeStarted=true;this.settings.top=otop;this.settings.left=oleft;this.settings.height=oheight;this.settings.width=owidth;if(!this.display.window)
{var hoverEvent=graph.onbarhover;this.display.window=document.createElement("div");this.display.window.onmousemove=hoverEvent;this.display.window.onclick=zoomInOnBarClick;this.display.window.className="ftdsDisplay";this.display.window.id="ftdsDisplay";}}
GraphPane.prototype.display=graphDisplayWindow;function reSize()
{if(!init||!this.display.window)return;var lastDisplayedBar,firstDisplayedBar,tmpBarCt,X;this.zoom.totalbars=this.ranges[this.zoom.zoomLevel].bars.length;this.display.window.style.top=parseInt(this.settings.top)+"px";this.display.window.style.height=SliderHeight+"px";this.display.window.style.width=((this.zoom.barDim*this.zoom.totalbars)<SliderTotalWidth)?SliderTotalWidth+"px":(this.zoom.barDim*this.zoom.totalbars)+"px";CurrentZoomBarWidth=this.zoom.barWidth;CurrentZoom=this.zoom.zoomLevel;BarHatWidth=(CurrentZoomBarWidth-2<0)?0+"px":(CurrentZoomBarWidth-2)+"px";BarDisplayObject.style.width=CurrentZoomBarWidth+"px";BarDisplayObject.childNodes[0].style.width=BarHatWidth;CurrentRange=this.ranges[this.zoom.zoomLevel];CurrentHeight=SliderHeight;CurrentZoomBarDimensions=this.zoom.barDim;MaximumBars=this.zoom.totalbars;MaximumBarHeight=this.ranges[this.zoom.zoomLevel].maxHeight+Math.ceil(this.ranges[this.zoom.zoomLevel].maxHeight/3);ScrollBarInnerDiv.style.width=(this.zoom.barDim*this.zoom.totalbars)+"px";while(this.display.window.childNodes[0])
{this.display.window.removeChild(this.display.window.childNodes[0]);}
for(X=0;X<Math.ceil(SliderTotalWidth/this.zoom.barDim);X++)
{TempBarObject=BarDisplayObject.cloneNode(true);graph.display.window.appendChild(TempBarObject);TempBarObject=null;}
for(X=0;X<7;X++)
{TempBackgroundObject=document.createElement("div");TempBackgroundObject.className=X%2?"monthBackgroundDateOdd":"monthBackgroundDateEven";TempBackgroundObject.style.height=SliderHeight+"px";graph.display.window.appendChild(TempBackgroundObject);BackgroundPanes[X]=TempBackgroundObject;TempBackgroundObject=null;}
firstDisplayedBar=Math.floor(this.viewport.left/this.zoom.barDim);lastDisplayedBar=Math.floor(firstDisplayedBar+(SliderTotalWidth/this.zoom.barDim));tmpBarCt=0;for(X=firstDisplayedBar;X<lastDisplayedBar;X++)
{if(CurrentRange.bars[X])
{TempBarObject=this.display.window.childNodes[tmpBarCt];if(TempBarObject)
{if(CurrentRange.bars[X].value>0)
{TempBarObject.style.width=CurrentZoomBarWidth+"px";}
else
{TempBarObject.style.height="0px";}
TempBarObject=null;}
tmpBarCt++;}}
GraphResizeStarted=false;}
GraphPane.prototype.resize=reSize;function displayBackground(barNumber)
{if(!parseInt(barNumber)<0||typeof(barNumber)!="number"){return}
var firstDate=graph.dates["Start"];var x,bgValueObject;var theyear=firstDate.getFullYear();var periodStart,offset,firstPanePixeLeft,bgText,tmpDate,outText="",qYear,qStartYear,qNumber;switch(CurrentZoom)
{case 0:classOdd="weekBackgroundDateOdd"
classEven="weekBackgroundDateEven";periodStart=Math.floor(barNumber/7)*7;if(CurrentRange)
{if(CurrentRange.bars[periodStart])
{outText="w/c "+niceDate(CurrentRange.bars[periodStart].floor);}}
break;case 1:classOdd="quarterBackgroundDateOdd";classEven="quarterBackgroundDateEven";periodStart=Math.floor(barNumber/13)*13;firstBarOfCurrentQuarter=periodStart;if(CurrentRange)
{if(CurrentRange.bars[firstBarOfCurrentQuarter])
{yearForThisQuarter=CurrentRange.bars[firstBarOfCurrentQuarter].floor;}}
niceYearForThisQuarter=yearForThisQuarter.getFullYear();yearTick=niceYearForThisQuarter-firstDate.getFullYear();canonicalQuarter=firstBarOfCurrentQuarter/13;numberOfThisQuarter=canonicalQuarter-(yearTick*4)+1;if(numberOfThisQuarter>4)
{numberOfThisQuarter=1;niceYearForThisQuarter++;}
outText="Q"+numberOfThisQuarter+" "+niceYearForThisQuarter;break;case 2:classOdd="monthBackgroundDateOdd";classEven="monthBackgroundDateEven";periodStart=0;if(CurrentRange)
{if(CurrentRange.bars[periodStart])
{tmpDate=CurrentRange.bars[periodStart].floor;}}
outText=tmpDate.getFullYear();break;}
offset=(periodStart%2)?0:1;firstPanePixeLeft=graph.barToPixel(periodStart)-2;for(x=0;x<7;x++)
{BackgroundPanes[x].className=(offset%2)?classOdd:classEven;BackgroundPanes[x].style.left=firstPanePixeLeft+x*parseInt(BackgroundPanes[x].offsetWidth)+"px";BackgroundPanes[x].innerHTML="";BackgroundPanes[x].appendChild(document.createTextNode(outText));offset++;switch(CurrentZoom)
{case 0:periodStart=periodStart+7;if(CurrentRange)
{if(CurrentRange.bars[periodStart])
{weekc=CurrentRange.bars[periodStart].floor;outText="w/c "+niceDate(weekc);}}
break;case 1:if(numberOfThisQuarter)
{numberOfThisQuarter++;if(numberOfThisQuarter>4)
{numberOfThisQuarter=1;niceYearForThisQuarter++;}
outText="Q"+numberOfThisQuarter+" "+niceYearForThisQuarter;}
break;case 2:outText++;break;}}}
function reDraw()
{if(!init||!this.display.window||GraphRedrawStarted)return;GraphRedrawStarted=true;var tmpBarCt=0,testDate,cbo,cbv;firstDisplayedBar=Math.floor(this.viewport.left/this.zoom.barDim);lastDisplayedBar=Math.floor(firstDisplayedBar+(SliderTotalWidth/this.zoom.barDim));if((firstDisplayedBar<0)||(firstDisplayedBar>this.zoom.totalbars))
{firstDisplayedBar=0;}
if((lastDisplayedBar>this.zoom.totalbars)||(lastDisplayedBar<0))
{lastDisplayedBar=this.zoom.totalbars;}
if(CurrentRange)
{for(X=firstDisplayedBar;X<=lastDisplayedBar;X++)
{if(CurrentRange.bars[X])
{cbv=CurrentRange.bars[X].value;if(cbv>0)
{if(this.display.window.childNodes[tmpBarCt])
{TempBarObjectHeight=Math.round((cbv/MaximumBarHeight)*CurrentHeight);cbo=CurrentRange.bars[X].offset;this.display.window.childNodes[tmpBarCt].style.left=INITIALBAROFFSET+(X*this.zoom.barDim)+"px";this.display.window.childNodes[tmpBarCt].style.height=TempBarObjectHeight+3+"px";this.display.window.childNodes[tmpBarCt].style.top=(CurrentHeight-TempBarObjectHeight)-3+"px";if(this.display.window.childNodes[tmpBarCt].childNodes[0])
{this.display.window.childNodes[tmpBarCt].childNodes[0].className=(cbo)?"ftdsBarOddHat":"ftdsBarEvenHat";}else{}
if(this.display.window.childNodes[tmpBarCt].childNodes[1])
{this.display.window.childNodes[tmpBarCt].childNodes[1].className=(cbo)?"ftdsBarOddHead":"ftdsBarEvenHead";this.display.window.childNodes[tmpBarCt].childNodes[1].style.height=(TempBarObjectHeight-1<0)?"0px":(TempBarObjectHeight+2)+"px";}else{}}}
tmpBarCt++;}}
cbo=null;}
if(CurrentRange){displayBackground(firstDisplayedBar)};GraphRedrawStarted=false;}
GraphPane.prototype.redraw=reDraw;function dateToBar(indate,returnAsFloor)
{if(typeof(indate)=="undefined"){return false};var barNumber,sw,difference_ms,tmpdif,startDayInMs,endDayInMs,remainder;var bd=this.dates["Start"],ONE_DAY=1000*60*60*24;if(this.zoom.zoomLevel==1)
{sw=getBOW(bd);startDayInMs=Date.UTC(sw.getFullYear(),sw.getMonth(),sw.getDate(),sw.getHours(),sw.getMinutes(),sw.getSeconds());}
else
{startDayInMs=Date.UTC(bd.getFullYear(),bd.getMonth(),bd.getDate(),bd.getHours(),bd.getMinutes(),bd.getSeconds());}
endDayInMs=Date.UTC(indate.getFullYear(),indate.getMonth(),indate.getDate(),indate.getHours(),indate.getMinutes(),indate.getSeconds());switch(this.zoom.zoomLevel)
{case 0:barNumber=(endDayInMs-startDayInMs)/ONE_DAY;break;case 1:barNumber=Math.floor((endDayInMs-startDayInMs)/(ONE_DAY*7));break;case 2:var startYear=bd.getYear();var selectedYear=indate.getYear();var differenceOfyears=(selectedYear-startYear);switch(differenceOfyears)
{case 0:barNumber=(indate.getMonth()+1)-(bd.getMonth()+1);break;case 1:barNumber=((12-(bd.getMonth()+1))+(indate.getMonth()+1));break;default:barNumber=((differenceOfyears-1)*12)+(12-(bd.getMonth()+1))+(indate.getMonth()+1);}
break;default:}
return(barNumber<0)?0:barNumber;}
GraphPane.prototype.dateToBar=dateToBar;function barToPixel(barNumber)
{var pxReturn=(barNumber*graph.zoom.barDim)+INITIALBAROFFSET;if(pxReturn<0)
{pxReturn=0;}
return pxReturn;}
GraphPane.prototype.barToPixel=barToPixel;function pixelToBar(pixelx)
{var barNumber;if(!isNaN(pixelx)&&pixelx>0)
{barNumber=Math.floor((parseInt(pixelx)-INITIALBAROFFSET)/graph.zoom.barDim);}
if(barNumber<0||typeof(barNumber)!="number")
{barNumber=0;}
return barNumber;}
GraphPane.prototype.pixelToBar=pixelToBar;function setViewPort(l,t,w,h)
{this.viewport.left=l;this.viewport.top=t;this.viewport.height=h-10;this.viewport.width=w-20;var vpl=this.viewport.left;return vpl;}
GraphPane.prototype.setViewPort=setViewPort;function setCeiling(newceil)
{this.dates["Ceiling"]=newceil;}
GraphPane.prototype.setCeiling=setCeiling;function setFloor(newfloor)
{this.dates["Floor"]=newfloor;}
GraphPane.prototype.setFloor=setFloor;function defineScrollStoppers()
{scrollStopper[0].className="leftStopper";scrollStopper[1].className="rightStopper";scrollStopper[0].style.position="absolute";scrollStopper[1].style.position="absolute";}
function positionScrollStoppers()
{scrollStopper[0].style.top=SliderTop+SliderHeight+SCROLLBARADJUSTMENT+"px";scrollStopper[0].style.left=SliderLeft+"px";scrollStopper[0].style.width="4"+"px";scrollStopper[0].style.height="11"+"px";scrollStopper[0].style.zIndex=3001;scrollStopper[1].style.top=SliderTop+SliderHeight+SCROLLBARADJUSTMENT+"px";scrollStopper[1].style.left=SliderLeft+SliderTotalWidth+"px";scrollStopper[1].style.width="4px";scrollStopper[1].style.height="11px";scrollStopper[1].style.zIndex=3001;}
function defineHightlightNote()
{highlightNote.className="HighlightNote";highlightNote.id="balloon";highlightNote.style.top=SliderTop-40+"px";setOpacity(highlightNote,0);}
function defineBookEnds()
{bookends[0].className="leftBookEnd";bookends[1].className="rightBookEnd";bookends[0].style.position="absolute";bookends[1].style.position="absolute";positionBookEnds();bookends[0].style.zIndex=3002;bookends[1].style.zIndex=3002;}
function positionBookEnds()
{bookends[0].style.left=SliderLeft-4+"px";bookends[0].style.top=SliderTop+1+"px";bookends[0].style.height=80+"px";bookends[0].style.width=9+"px";bookends[1].style.top=SliderTop+1+"px";bookends[1].style.height=80+"px";bookends[1].style.left=SliderLeft+SliderTotalWidth-8+"px";bookends[1].style.left=SliderLeft+SliderTotalWidth+"px";bookends[1].style.width=9+"px";}
function defineCurtains()
{curtains[0].id="CurtainLeft";curtains[1].id="CurtainRight";curtains[0].className="Curtain";curtains[1].className="Curtain";positionCurtains();curtains[0].style.position="absolute";curtains[1].style.position="absolute";curtains[0].onclick=zoomInOnBarClick;curtains[1].onclick=zoomInOnBarClick;curtains[0].onmousemove=showBalloonByPixel;curtains[1].onmousemove=showBalloonByPixel;curtains[0].style.zIndex=101;curtains[1].style.zIndex=101;}
function positionCurtains()
{curtains[0].style.left=SliderLeft+"px";curtains[0].style.top=SliderTop+"px";curtains[0].style.height=SliderHeight+"px";curtains[1].style.top=SliderTop+"px";curtains[1].style.height=SliderHeight+"px";}
function defineMainContainer()
{graphContainer.id="graphContainer";graphContainer.className="graphContainer";graphContainer.style.position="absolute";graphContainer.style.overflow="hidden";}
function defineScrollbar()
{scb.id="ftdsScrollBar";scb.style.position="absolute";scb.style.zIndex=2000;positionScrollBar();}
function definesliderSeat()
{sliderSeat.className="ftdsSeat";}
function positionsliderSeat()
{sliderSeat.style.position="absolute";sliderSeat.style.top=SliderTop+SliderHeight+SCROLLBARADJUSTMENT+"px";sliderSeat.style.width=SliderTotalWidth+"px";sliderSeat.style.left=SliderLeft+"px";sliderSeat.style.zIndex="3000";}
function positionScrollBar(curtainStateOpen)
{scb.style.left=SliderLeft+4+"px";scb.style.top=SliderTop+SliderHeight+SCROLLBARADJUSTMENT-4+"px";scb.style.width=SliderTotalWidth+6+"px";scb.style.height=SCROLLBARHEIGHT+"px";}
function defineSubmitButton()
{subbutspan.className="resultsButtonText";subbut.className="resultsButton";subbut.title="Click this button to view selected results.";subbut.onclick=submitResultsToPage;positionSubmitButton();subbut.appendChild(subbutspan);subbutspan.appendChild(document.createTextNode("View Results"));}
function positionSubmitButton()
{subbut.style.left=ResultButtonLeft+"px";subbut.style.top=ResultButtonTop+"px";}
function defineResultBox()
{resdiv.className="resultsContainer";resdiv.style.position="absolute";resdiv.style.zIndex=5000;positionResultBox();resdiv.appendChild(startdateResultBox);resdiv.appendChild(enddateResultBox);resdiv.appendChild(resultcountResultBox);}
function positionResultBox()
{resdiv.style.left=DateOutputLeft+"px";resdiv.style.top=DateOutputTop+"px";}
function defineHandles()
{handles[0].ondrag=refreshLeftCurtainAndDatesOnDrag;handles[1].ondrag=refreshRightCurtainAndDatesOnDrag;handles[0].onDragEnd=leftHandleDragEnd;handles[1].onDragEnd=rightHandleDragEnd;handles[0].onDragStart=leftHandleDragStart;handles[1].onDragStart=rightHandleDragStart;handles[0].style.zIndex=3003;handles[1].style.zIndex=3003;handles[0].className="leftDragHandle";handles[0].title="Drag the handles to select a date range.";handles[1].className="rightDragHandle";handles[1].title="Drag the handles to select a date range.";positionHandles();}
function positionHandles()
{var tf=graph.dates["Floor"];var ts=graph.dates["Start"];var tc=graph.dates["Ceiling"];var tt=graph.dates["Today"];if(tf.valueOf()==ts.valueOf())
{handles[0].style.top=DraghandleTop+"px";setLeftCurtainPixelX(SliderLeft-(DRAGHANDLEOFFSET/2));}
if(tc.valueOf()==tt.valueOf())
{handles[1].style.top=DraghandleTop+"px";setRightCurtainPixelX((SliderLeft+SliderTotalWidth)-(DRAGHANDLEOFFSET/2));}}
function appendToDocument()
{var db=document.getElementById("IEbugFixDateslider");with(db)
{db.appendChild(graphContainer);db.appendChild(zoomControl1);db.appendChild(curtains[0]);db.appendChild(curtains[1]);db.appendChild(bookends[0]);db.appendChild(bookends[1]);db.appendChild(scrollStopper[0]);db.appendChild(scrollStopper[1]);db.appendChild(highlightNote);db.appendChild(scb);db.appendChild(subbut);db.appendChild(resdiv);db.appendChild(sliderSeat);}}
function ResultBox(title)
{var rbCont=document.createElement("div");var tbox=document.createElement("span");var rbox=document.createElement("span");tbox.appendChild(document.createTextNode(title));rbCont.appendChild(tbox);rbCont.appendChild(rbox);tbox.className="resultBoxTitle";rbox.className="resultBoxResult";rbCont.className="resultBox";function setRbTitle(title)
{tbox.innerHTML="";tbox.appendChild(document.createTextNode(title));}
function setRbDate(result)
{rbox.innerHTML="";result=niceDate(result);rbox.appendChild(document.createTextNode(result));}
function setRbValue(result)
{rbox.innerHTML="";rbox.appendChild(document.createTextNode(result));}
rbCont.setTitle=setRbTitle;rbCont.setDate=setRbDate;rbCont.setValue=setRbValue;return rbCont;}
function Scrollbar()
{var inner=document.createElement("div");var outer=document.createElement("div");outer.style.visibility="hidden";outer.style.position="absolute";outer.style.overflow="auto";outer.id="ScrollbarOuterDiv";outer.appendChild(inner);inner.id="ScrollbarInnerDiv";var sbh=(parseInt(outer.offsetHeight)-parseInt(outer.clientHeight));var sbx=(parseInt(outer.offsetHeight)-parseInt(outer.style.height));inner.style.height="1px";outer.style.visibility="";return outer;}
function GraphRange(Interval,valuearray,datearray)
{var bar,maxval=0,lastval=0,x,ofs=0,tmpdate,arrl,f,c;var tmpmax=0,globalDate;var barcollection=new Array();var validInterval=(Interval=="D"||Interval=="W"||Interval=="M")?true:false;if(validInterval&&valuearray&&datearray)
{arrl=valuearray.length;for(x=0;x<arrl;x++)
{barcollection[x]=new Object();barcollection[x].value=valuearray[x];barcollection[x].offset=x%2;tmpmax=(barcollection[x].value>tmpmax)?barcollection[x].value:tmpmax;tmpdate=parseYYYYMMDD(datearray[x].toString());globalDate=new Date(tmpdate.year,tmpdate.month,tmpdate.day);switch(Interval)
{case"D":barcollection[x].floor=globalDate;barcollection[x].ceiling=globalDate;break;case"W":barcollection[x].floor=globalDate;barcollection[x].ceiling=new Date(tmpdate.year,tmpdate.month,(tmpdate.day*1)+(7-globalDate.getDay()));break;case"M":barcollection[x].floor=new Date(tmpdate.year,tmpdate.month,1);barcollection[x].ceiling=new Date(tmpdate.year,tmpdate.month,32-new Date(tmpdate.year,tmpdate.month,32).getDate());break;default:}}
this.interval=Interval;this.maxHeight=tmpmax;this.bars=barcollection;}
return this;}
function toStringGraphRange(){var barString="length="+this.bars.length;var string="GraphRange"+"\ninterval="+this.interval+"\nmaxHeight="+this.maxHeight+"\nbars="+barString;return string;}
GraphRange.prototype.toString=toStringGraphRange;function GraphSettings()
{this.top=0;this.left=0;this.height=70;this.width=150;this.interval="D";}
function GraphViewport()
{this.width=1024;this.height=600;this.top=0;this.left=1;}
function GraphZoom()
{this.barWidth=3;this.spaceWidth=3;this.barDim=6;this.zoomLevel=0;this.totalbars=150;var rd=new Array();this.rangeDataSize=rd;function maxFunc()
{this.zoom(this.zoomLevel);}
function zoomFunc(level)
{switch(level)
{case 0:this.barWidth=10;this.spaceWidth=3;break;case 1:this.barWidth=5;this.spaceWidth=3;break;case 2:this.barWidth=3;this.spaceWidth=3;break;}
this.totalbars=this.rangeDataSize[level];this.barDim=this.barWidth+this.spaceWidth;this.totalScrollWidth=this.barDim*this.totalbars;this.zoomLevel=level;if(typeof(this.onzoom)=="function"){this.onzoom(level);}}
this.maximise=maxFunc;this.zoom=zoomFunc;}
function toStringGraphZoom(){var string="GraphZoom"+"\nbarWidth="+this.barWidth+"\nspaceWidth="+this.spaceWidth+"\nbarDim="+this.barDim+"\nzoomLevel="+this.zoomLevel+"\ntotalbars="+this.totalbars+"\nrangeDataSize="+this.rangeDataSize;return string;}
GraphZoom.prototype.toString=toStringGraphZoom;function GraphPane(i)
{var z=new GraphZoom();var s=new GraphSettings();var v=new GraphViewport();var d=new Array();var r=new Object();this.zoom=z;this.settings=s;this.viewport=v;this.dates=d;this.ranges=r;if(typeof(i)=="string")
{switch(i.toUpperCase())
{case"D":this.settings.interval="D";break;case"W":this.settings.interval="W";break;case"M":this.settings.interval="M";break;default:this.settings.interval="D";}}
var today=new Date();this.dates["Today"]=today;return this;}
function setGlobals()
{DateOutputLeft=SliderLeft+SliderTotalWidth+25;DateOutputTop=SliderTop+1;ResultButtonTop=SliderTop+59;ResultButtonLeft=SliderLeft+SliderTotalWidth+25;ScrollbarTop=SliderTop+SliderHeight;DraghandleTop=SliderTop+15;DraghandleMaxExtent=(SliderLeft+SliderTotalWidth);DraghandleMinExtent=SliderLeft-Math.floor(DRAGHANDLEOFFSET/2)+1;}
function setupDragHandles()
{handles[0].minX=DraghandleMinExtent;handles[1].minX=DraghandleMinExtent;handles[0].maxX=DraghandleMaxExtent;handles[1].maxX=DraghandleMaxExtent;handles[0].minY=DraghandleTop;handles[1].minY=DraghandleTop;handles[0].maxY=DraghandleTop;handles[1].maxY=DraghandleTop;handles[0].style.top=DraghandleTop+"px";handles[1].style.top=DraghandleTop+"px";}
this.init=function()
{setGlobals();curtains[0]=document.createElement("div");curtains[1]=document.createElement("div");scrollStopper[0]=document.createElement("div");scrollStopper[1]=document.createElement("div");curtains[0].appendChild(document.createElement("div"));curtains[1].appendChild(document.createElement("div"));bookends[0]=document.createElement("div");bookends[1]=document.createElement("div");var dragHandle1=new Draghandle(DraghandleMinExtent,DraghandleMaxExtent,DraghandleTop,DraghandleTop);var dragHandle2=new Draghandle(DraghandleMinExtent,DraghandleMaxExtent,DraghandleTop,DraghandleTop);handles[0]=dragHandle1;handles[1]=dragHandle2;handles[0].style.top=DraghandleTop+"px";handles[1].style.top=DraghandleTop+"px";appendToDocument();initializeGraph();defineMainContainer();defineHightlightNote();defineCurtains();defineHandles();defineBookEnds();defineScrollbar();defineScrollStoppers();defineSubmitButton();defineResultBox();definesliderSeat();hideComponents();CSBfleXcroll('ftdsScrollBar');setVisible();}
function initializeGraph()
{with(graph)
{var tmp=datesarray[0];var firstdate=parseYYYYMMDD(tmp[0]);graph.date("Start",firstdate.day,firstdate.month,firstdate.year);startdateResultBox.setDate(graph.dates["Start"]);enddateResultBox.setDate(graph.dates["Today"]);graph.ranges[0]=new GraphRange("D",valuesarray[0],datesarray[0]);graph.ranges[1]=new GraphRange("W",valuesarray[1],datesarray[1]);graph.ranges[2]=new GraphRange("M",valuesarray[2],datesarray[2]);graph.zoom.rangeDataSize[0]=graph.ranges[0].bars.length;graph.zoom.rangeDataSize[1]=graph.ranges[1].bars.length;graph.zoom.rangeDataSize[2]=graph.ranges[2].bars.length;graphInit=graph.init();if(graphInit)
{with(graph)
{graph.onbarhover=showBalloonByPixel;graph.zoom.onzoom=setSliderZoomLevel;graph.zoom.zoomLevel=2;graph.display(0,0,0,SliderHeight);graphContainer.appendChild(graph.display.window)
ScrollBarInnerDiv=document.getElementById("ScrollbarInnerDiv");ScrollBarInnerDiv.style.height="1px";ScrollBarInnerDiv.style.border="none";ScrollBarInnerDiv.style.overflow="hidden";}}}}
this.maximise=function(l,t,w,h)
{SliderStateMaximised=false;SliderTotalWidth=w;SliderLeft=l;SliderTop=t;SliderHeight=h;this.show();setGlobals();setupDragHandles();showComponents();graph.zoom.maximise();adjustCurtainDimensions();detectAndShowZoomControl();centerZoomControl();resize();SliderStateMaximised=true;}
this.setDates=function(floordate,ceilingdate,zoom)
{var fd=floordate.split("/");var cd=ceilingdate.split("/");graph.date("Floor",fd[0],fd[1]-1,fd[2]);graph.date("Ceiling",cd[0],cd[1]-1,cd[2]);setSavedZoom(zoom)
startdateResultBox.setDate(graph.dates["Floor"]);enddateResultBox.setDate(graph.dates["Ceiling"]);}
this.setSavedZoom=setSavedZoom;function setSavedZoom(zoom)
{if(parseInt(zoom)>=0)
{switch(parseInt(zoom))
{case 2:zoomControl1.setState(1);break;case 1:zoomControl1.setState(2);break;case 0:zoomControl1.setState(3);break;}}}
this.minimise=function(l,t,w,h)
{this.hide();}
function showComponents()
{AllComponentsHidden=true;zoomControl1.style.display="";handles[0].style.display="";handles[1].style.display="";sliderSeat.style.display="";scb.style.display="";subbut.style.display="";resdiv.style.display="";curtains[0].style.display="";curtains[1].style.display="";setCurtainStateToDockedOrUndocked();detectAndShowZoomControl();AllComponentsHidden=false;}
function hideComponents()
{AllComponentsHidden=false;zoomControl1.style.display="none";bookends[0].style.display="none";bookends[1].style.display="none";curtains[0].style.display="none";curtains[1].style.display="none";handles[0].style.display="none";handles[1].style.display="none";sliderSeat.style.display="none";scb.style.display="";subbut.style.display="none";resdiv.style.display="none";highlightNote.style.display="none";scrollStopper[0].style.display="none";scrollStopper[1].style.display="none";AllComponentsHidden=true;}
function updateDates(floordate,ceilingdate)
{var firstBar,lastbar;startdateResultBox.setDate(floordate);enddateResultBox.setDate(ceilingdate);firstBar=graph.dateToBar(floordate);lastBar=graph.dateToBar(ceilingdate,false);renderResults(firstBar,lastBar);}
function setDatesOnScrollAndDrag()
{if(ZoomInProgress){return;}
if(ResetDatesInProgress){return;}
ResetDatesInProgress=true;var tmpfloor,tmpceiling;if(curtainsDocked())
{tmpfloor=0;tmpceiling=graph.ranges[graph.zoom.zoomLevel].bars.length;}
else
{tmpfloor=captureFloor();tmpceiling=captureCeiling();}
if(typeof(tmpfloor)=="number"&&typeof(tmpceiling=="number"))
{renderResults(tmpfloor,tmpceiling);}
ResetDatesInProgress=false;}
function renderResults(firstBar,lastBar)
{if(!RenderResults){return}
RenderResults=false;var nicedate;var x,resultCount=0,tempResultCount=0,realBar;for(x=firstBar;x<=lastBar;x++)
{if(x<graph.ranges[graph.zoom.zoomLevel].bars.length)
{realBar=graph.ranges[graph.zoom.zoomLevel].bars[x];if(parseInt(realBar.value)>0)
{tempResultCount=parseInt(realBar.value);resultCount=resultCount+tempResultCount;}}}
ViewResultsEnabled=(parseInt(resultCount)>0);renderButton();if(graph.ranges[graph.zoom.zoomLevel].bars[firstBar])
{startdateResultBox.setDate(graph.ranges[graph.zoom.zoomLevel].bars[firstBar].floor);nicedate=niceDate(graph.dates["Floor"]);handles[0].title=nicedate;}
if(realBar)
{enddateResultBox.setDate(realBar.ceiling);nicedate=niceDate(graph.dates["Ceiling"]);handles[1].title=nicedate;}
resultcountResultBox.setValue(resultCount);RenderResults=true;return}
function renderButton()
{if(ViewResultsEnabled)
{subbut.className="resultsButton";subbut.disabled=false;}
else
{subbut.className="resultsButtonGrey";subbut.disabled=true;}}
function captureCeiling()
{var ceilingBar=graph.pixelToBar(getRightCurtainPixelX())
if(ceilingBar>=graph.zoom.totalbars)
{ceilingBar=graph.zoom.totalbars-1;}
if(graph.ranges[graph.zoom.zoomLevel].bars[ceilingBar])
{graph.setCeiling(graph.ranges[graph.zoom.zoomLevel].bars[ceilingBar].ceiling);}
return ceilingBar;}
function captureFloor()
{var floorBar=graph.pixelToBar(getLeftCurtainPixelX());if(floorBar>=graph.zoom.totalbars)
{floorBar=graph.zoom.totalbars-1;}
if(graph.ranges[graph.zoom.zoomLevel].bars[floorBar])
{graph.setFloor(graph.ranges[graph.zoom.zoomLevel].bars[floorBar].floor);}
return floorBar;}
function updateOutput()
{if(typeof(dateslider.onupdate)=="function")
{dateslider.onupdate(graph.dates["Floor"],graph.dates["Ceiling"],graph.zoom.zoomLevel);}}
function submitResultsToPage()
{if(ViewResultsEnabled)
{updateOutput();if(typeof(dateslider.onsubmit)=="function")
{dateslider.onsubmit();}}}
function showBalloonByPixel(e)
{if(DragInProgress||ScrollInProgress){return;}
if(!e)var e=window.event;var posx,currentScroll,barNumber;if(e.pageX)
{posx=e.pageX;}
else
{if(e.clientX)
{posx=e.clientX+document.body.scrollLeft;}}
currentScroll=getScrollX();if(currentScroll==0)
{barNumber=graph.pixelToBar(posx-SliderLeft);}
else
{var currentx=(posx-SliderLeft);barNumber=graph.pixelToBar(currentx+currentScroll);}
showBalloon(barNumber,posx);}
this.balloonCleanup=detectHideBallonCondition;function detectHideBallonCondition(targetBar)
{if(InformationBalloonDisplayed)
{if(!targetBar)
{HideBalloonAllowed=true;window.setTimeout("balloonFadeOut()",1500);}
else
{if(parseInt(targetBar.value)<=0)
{HideBalloonAllowed=true;window.setTimeout("balloonFadeOut()",1500);}}}}
function showBalloon(bar,posx)
{if(DragInProgress||ScrollInProgress){return;}
var balloonDateText,balloonResultText,currentScroll,targetBar;targetBar=graph.ranges[graph.zoom.zoomLevel].bars[bar];if(typeof(curtains[0].style.cursor)!="undefined")
{curtains[0].style.cursor="default";curtains[1].style.cursor="default";graph.display.window.style.cursor="default";}
detectHideBallonCondition(targetBar);if(!targetBar||targetBar.value<=0){return;}
try
{if(typeof(curtains[0].style.cursor)!="undefined")
{graph.display.window.style.cursor="pointer";curtains[0].style.cursor="pointer";curtains[1].style.cursor="pointer";}}
catch(eOldIEVersion)
{if(typeof(curtains[0].style.cursor)!="undefined")
{graph.display.window.style.cursor="hand";curtains[0].style.cursor="hand";curtains[1].style.cursor="hand";}}
switch(graph.zoom.zoomLevel)
{case 2:ballonDateText=formatMMMYY(targetBar.floor);break;case 1:ballonDateText="w/c "+formatWEEK(targetBar.floor);break;case 0:ballonDateText=niceDate(targetBar.floor);break;}
balloonResultText="Results:"+targetBar.value;balloonTextContainer=document.createElement("div")
balloonTextContainer.className="balloonDate";balloonTextContainer.appendChild(document.createTextNode(ballonDateText));balloonResultContainer=document.createElement("div");balloonResultContainer.className="balloonResults";balloonResultContainer.appendChild(document.createTextNode(balloonResultText));highlightNote.innerHTML="";highlightNote.appendChild(balloonTextContainer);highlightNote.appendChild(balloonResultContainer);if((parseInt(highlightNote.offsetLeft)>parseInt(zoomControl1.offsetLeft)-14)&&(parseInt(highlightNote.offsetLeft)<(parseInt(zoomControl1.offsetLeft)+parseInt(zoomControl1.offsetWidth)-14)))
{highlightNote.style.top=SliderTop-60+"px";}
else
{highlightNote.style.top=SliderTop-50+"px";}
highlightNote.style.left=posx-14+"px";if(!InformationBalloonDisplayed)
{fadeTo("balloon",0,25,1);InformationBalloonDisplayed=true;HideBalloonAllowed=false;}}
function zoomInOnBarClick(e)
{if(!e)var e=window.event;var posx;if(e.pageX)
{posx=e.pageX;}
else
{if(e.clientX)
{posx=e.clientX+document.body.scrollLeft;}}
clicked=(posx-SliderLeft);scrollx=getScrollX();thebar=graph.pixelToBar(getScrollX()+(posx-SliderLeft));targetBar=graph.ranges[graph.zoom.zoomLevel].bars[thebar];if(!targetBar||targetBar.value<=0){return;}
graph.setFloor(targetBar.floor);graph.setCeiling(targetBar.ceiling);switch(graph.zoom.zoomLevel)
{case 2:zoomControl1.setState(2);break;case 1:zoomControl1.setState(3);break;case 0:zoomControl1.setState(3);break;}}
function add_days(adate,days){return new Date(adate.getTime()+(days*86400000));}
function format_2digitDate(adate){var mth=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var tmpyear=y2k(adate.getYear())+"";return"w/c "+adate.getDate()+' '+(mth[adate.getMonth()])+' '+tmpyear.substr(2,2);}
function formatMMMYY(adate){var mth=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var tmpyear=y2k(adate.getYear())+"";return mth[adate.getMonth()]+' '+tmpyear.substr(2,2);}
function formatWEEK(adate){var mth=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];var tmpyear=y2k(adate.getYear())+"";return adate.getDate()+' '+(mth[adate.getMonth()])+' '+tmpyear.substr(2,2);}
function niceDate(indate){var d=new Date(indate);var mth=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",];var curr_date=d.getDate();var curr_month=d.getMonth();var curr_year=d.getFullYear();return(curr_date+" "+mth[curr_month]+" "+curr_year);}
function y2k(number){return(number<1000)?number+1900:number;}
function daysElapsed(date1,date2){var difference=Date.UTC(y2k(date1.getYear()),date1.getMonth(),date1.getDate(),0,0,0)-Date.UTC(y2k(date2.getYear()),date2.getMonth(),date2.getDate(),0,0,0);return(difference/1000/60/60/24);}
function weeksElapsed(date1,date2){var difference=Date.UTC(y2k(date1.getYear()),date1.getMonth(),date1.getDate(),0,0,0)-Date.UTC(y2k(date2.getYear()),date2.getMonth(),date2.getDate(),0,0,0);var res=(difference/1000/60/60/24/7);return res}
function parseYYYYMMDD(s){var tmp=new Object();var stringDate=s+"";tmp.day=stringDate.substring(6,8);tmp.month=(stringDate.substring(4,6)*1)-1;if(tmp.month<0){tmp.month=0;}if(tmp.month>11){tmp.month=11;}tmp.year=stringDate.substring(0,4);return tmp;}
function getEOM(endDate)
{var year=endDate.getFullYear();var month=endDate.getMonth();var lastDay=32-new Date(year,month,32).getDate();return(new Date(year,month,lastDay));}
function getBOM(beginDate)
{var theYear=beginDate.getFullYear();var theMonth=beginDate.getMonth();return(new Date(theYear,theMonth,1));}
function getBOW(cdate)
{var today=cdate;var offset=today.getDay();if(offset==0)
{offset=7;}
offset=offset-1;return(new Date(cdate.getFullYear(),cdate.getMonth(),cdate.getDate()-offset));}
function getEOW(cdate)
{var weekBegin=getBOW(cdate);var eow=new Date(weekBegin.getFullYear(),weekBegin.getMonth(),weekBegin.getDate()+6);return eow;}
function confirmSafeZoom()
{var safe;if((typeof(graph.dates["Floor"])!="undefined")&&(typeof(graph.dates["Ceiling"])!="undefined"))
{safe=true;}
else
{safe=false;}
return safe;}
function setZoomState()
{var floorx,ceilingx,adjustedFloor,adjustedCeiling,tmpdate;var currentScroll,floorBar,ceilBar,barDimensions,selectedRegion,remainingSpace,spad,curtainLeft,curtainRight;if(confirmSafeZoom())
{switch(graph.zoom.zoomLevel)
{case 0:adjustedFloor=graph.dates["Floor"];adjustedCeiling=graph.dates["Ceiling"];break;case 1:adjustedFloor=getBOW(graph.dates["Floor"]);adjustedCeiling=getEOW(graph.dates["Ceiling"]);graph.dates["Floor"]=adjustedFloor;graph.dates["Ceiling"]=adjustedCeiling;break;case 2:adjustedFloor=getBOM(graph.dates["Floor"]);adjustedCeiling=getEOM(graph.dates["Ceiling"]);graph.dates["Floor"]=adjustedFloor;graph.dates["Ceiling"]=adjustedCeiling;}
floorBar=graph.dateToBar(adjustedFloor);floorx=graph.barToPixel(floorBar);ceilBar=graph.dateToBar(adjustedCeiling);ceilingx=graph.barToPixel(ceilBar);var spaceAdjustment=(ceilingx-floorx)+(DRAGHANDLEOFFSET+1)+(graph.zoom.barWidth+1);var maximumPossibleScrollLeft=(graph.zoom.totalScrollWidth-SliderTotalWidth);var curtainLeftPadding=Math.floor(SliderTotalWidth-spaceAdjustment)/2;if(floorx<=SliderTotalWidth)
{scrollx=0;curtainLeftPadding=0;}
else
{if(floorx>=maximumPossibleScrollLeft)
{scrollx=maximumPossibleScrollLeft;curtainLeftPadding=0;}
else
{scrollx=floorx-curtainLeftPadding;}}
scrollCurrent=setScrollX(scrollx);curtainLeft=SliderLeft+(floorx-scrollCurrent)-DRAGHANDLEOFFSET-1;curtainRight=curtainLeft+spaceAdjustment;if((curtainRight-SliderLeft)>SliderTotalWidth)
{curtainRight=SliderLeft+SliderTotalWidth;}
setSliderZoomAspect(curtainLeft,curtainRight);}}
function getLeftCurtainPixelX()
{return((parseInt(handles[0].offsetLeft)+DRAGHANDLEOFFSET+1)-SliderLeft)+getScrollX();}
function getRightCurtainPixelX()
{return(parseInt(handles[1].offsetLeft)-SliderLeft)+getScrollX();}
function setLeftCurtainPixelX(x)
{handles[0].style.left=x+"px";}
function setRightCurtainPixelX(x)
{handles[1].style.left=x+"px";}
function setSliderZoomAspect(curtainLeft,curtainRight)
{setSliderLeftHandleOnZoomAspect(curtainLeft);setSliderRightHandleOnZoomAspect(curtainRight);refreshScrollbar();}
function setSliderLeftHandleOnZoomAspect(curtainLeft)
{setLeftCurtainPixelX(curtainLeft);refreshLeftCurtainAndDatesOnDrag(curtainLeft,false);}
function setSliderRightHandleOnZoomAspect(curtainRight)
{setRightCurtainPixelX(curtainRight);refreshRightCurtainAndDatesOnDrag(curtainRight,false);}
function validateDHPositions()
{if(parseInt(handles[0].offsetLeft)<handles[0].minX)
{setLeftCurtainPixelX(handles[0].minX-Math.floor(DRAGHANDLEOFFSET/3));}
if(parseInt(handles[1].offsetLeft)>handles[1].maxX)
{setRightCurtainPixelX(handles[1].maxX);}
if(parseInt(handles[0].offsetLeft)>(parseInt(handles[1].offsetLeft)-DRAGHANDLEOFFSET))
{}
if(parseInt(handles[1].offsetLeft)<parseInt(handles[0].offsetLeft))
{setRightCurtainPixelX(parseInt(handles[0].offsetLeft));}}
function adjustCurtainDimensions()
{setLeftCurtain();setRightCurtain();}
function setLeftCurtain()
{var curtainLeftX,newCurtainLeftWidth;curtainLeftX=parseInt(handles[0].offsetLeft);newCurtainLeftWidth=Math.floor(curtainLeftX+(DRAGHANDLEOFFSET/2)+1)-SliderLeft;curtains[0].style.width=(newCurtainLeftWidth<0)?"0px":newCurtainLeftWidth+"px";}
function setRightCurtain()
{var curtainRightX,newCurtainRightWidth;curtainRightX=parseInt(handles[1].offsetLeft);newCurtainRightWidth=(SliderLeft+SliderTotalWidth)-curtainRightX-2;curtains[1].style.left=(curtainRightX<0)?"0px":curtainRightX+"px";curtains[1].style.width=(newCurtainRightWidth<0)?"0px":newCurtainRightWidth+"px";}
function refreshLeftCurtainAndDatesOnDrag(x,y)
{handles[1].minX=x+DRAGHANDLEOFFSET;dragHandleUpdate();}
function refreshRightCurtainAndDatesOnDrag(x,y)
{handles[0].maxX=(x-DRAGHANDLEOFFSET);dragHandleUpdate();}
function dragHandleUpdate()
{if(!SliderStateMaximised){return}
if(!ZoomInProgress){validateDHPositions()};adjustCurtainDimensions();setDatesOnScrollAndDrag();centerZoomControl();setCurtainStateToDockedOrUndocked();detectAndShowZoomControl();}
function leftHandleDragStart()
{DragInProgress=true;}
function rightHandleDragStart()
{DragInProgress=true;}
function leftHandleDragEnd()
{DragInProgress=false;updateOutput();}
function rightHandleDragEnd()
{DragInProgress=false;updateOutput();}
function undockCurtains()
{undockFloor();undockCeiling();sliderSeat.className="ftdsSeatOpen";SliderDockedState=1;}
function dockCurtains()
{dockFloor();dockCeiling();sliderSeat.className="ftdsSeat";SliderDockedState=0;}
function dockCeiling()
{bookends[1].style.display="";curtains[1].style.display="none";curtains[1].style.borderRight="none";scrollStopper[1].style.display="none";}
function dockFloor()
{bookends[0].style.display="";curtains[0].style.display="none";curtains[0].style.borderLeft="none";scrollStopper[0].style.display="none";}
function undockFloor()
{bookends[0].style.display="none";curtains[0].style.borderLeft="1px solid #cacaca";curtains[0].style.display="";scrollStopper[0].style.display="";}
function undockCeiling()
{bookends[1].style.display="none";curtains[1].style.borderRight="1px solid #cacaca";curtains[1].style.display="";scrollStopper[1].style.display="";}
function curtainsDocked()
{var status=false,lhd=false,rhd=false;;var lhx=parseInt(handles[0].offsetLeft)
var rhx=parseInt(handles[1].offsetLeft);var lhm=handles[0].minX+1;var rhm=handles[1].maxX-1;if(lhx>=lhm){lhd=false;}else{lhd=true;}
if(rhx<=rhm){rhd=false;}else{rhd=true;}
if(lhd&&rhd)
{status=true;}
return status;}
function setCurtainStateToDockedOrUndocked()
{if(curtainsDocked())
{if(CurtainsDrawn==true)
{if(graph.zoom.zoomLevel==2)
{sliderSeat.style.display="";}
else
{sliderSeat.style.display="none";}
scrollStopper[0].style.display="none";scrollStopper[1].style.display="none";dockCurtains();CurtainsDrawn=false;}}
else
{if(CurtainsDrawn==false)
{if(graph.zoom.zoomLevel==2)
{sliderSeat.style.display="";}
else
{sliderSeat.style.display="none";}
positionScrollStoppers();scrollStopper[0].style.display="";scrollStopper[1].style.display="";undockCurtains();CurtainsDrawn=true;}}}
function refreshScrollbar()
{if(graph.zoom.zoomLevel==2)
{sliderSeat.style.display="";}
else
{sliderSeat.style.display="none";}
scrollStopper[0].style.display="";scrollStopper[1].style.display="";}
function setScrollX(x)
{var rv;var scrollDiv=document.getElementById('ftdsScrollBar');if(graph.zoom.zoomLevel==2||x<0)
{x=0;}
if(scrollDiv)
{var retValue=scrollDiv.contentScroll(x,"0",false);if(scrollDiv.scrollUpdate)
{scrollDiv.scrollUpdate();}}
if(graph.zoom.zoomLevel==2)
{scrollContent(0);rv=0;}
else
{scrollContent(-scb.scrollPos[2]);rv=-scb.scrollPos[2];}
return rv;}
function getScrollX()
{var returnX=(-scb.scrollPos[2])
if(typeof(returnX)!="number"||graph.zoom.zoomLevel==2)
{returnX=0;}
else
{if(returnX>(graph.zoom.totalScrollWidth-SliderTotalWidth))
{returnX=(graph.zoom.totalScrollWidth-SliderTotalWidth)}}
return returnX;}
function scrollContent(x)
{graph.display.window.style.left=-x+"px";graph.setViewPort(x,SliderTop,SliderTotalWidth,SliderHeight);graph.redraw();}
function customScroll_BeginScroll()
{ScrollInProgress=true;}
function customScroll_EndScroll()
{if(!curtainsDocked())
{setDatesOnScrollAndDrag();}
ScrollInProgress=false;}
function customScroll_scroll()
{if(ZoomInProgress){return;}
scrollContent(-scb.scrollPos[2]);}
function resize()
{if(!SliderStateMaximised)
{graphContainer.style.zIndex=100;graphContainer.style.left=SliderLeft+"px";graphContainer.style.top=SliderTop+"px";graphContainer.style.width=SliderTotalWidth+"px";graphContainer.style.height=SliderHeight+"px";positionBookEnds();positionSubmitButton();positionResultBox();positionScrollBar();positionHandles();positionCurtains();positionsliderSeat();if(!curtainsDocked())
{positionScrollStoppers();}}
graph.resize();}
function redraw()
{graph.redraw();}
function displayZoomControl()
{zoomControl1.style.display="";if(graph.settings.validzoomrange==true&&!AllComponentsHidden)
{if(ViewResultsEnabled)
{zoomControl1.zoomValid();}
else
{zoomControl1.zoomInvalid();}}
else
{zoomControl1.zoomInvalid();}}
function changeZoom(newZoomLevel)
{switch(newZoomLevel)
{case 3:graph.zoom.zoom(0);break;case 2:graph.zoom.zoom(1);break;case 1:graph.zoom.zoom(2);break;}}
function detectValidZoomDateRange(date1,date2,period)
{graph.settings.validzoomrange=false;if(typeof(date1)!="undefined"&&typeof(date2)!="undefined"&&typeof(period)!="undefined")
{switch(period)
{case 0:graph.settings.validzoomrange=true;break;case 1:var vzd=daysElapsed(date1,date2);vzd=(vzd<0)?vzd=vzd*-1:vzd=vzd*1;if(vzd<=VALIDZOOMDAYS)
{graph.settings.validzoomrange=true;}
break;case 2:var vzw=weeksElapsed(date1,date2);vzw=(vzw<0)?vzw=vzw*-1:vzw=vzw*1;if(vzw<=VALIDZOOMWEEKS)
{graph.settings.validzoomrange=true;}
break;}}
return graph.settings.validzoomrange;}
function detectAndShowZoomControl()
{detectValidZoomDateRange(graph.dates["Floor"],graph.dates["Ceiling"],graph.zoom.zoomLevel);displayZoomControl();}
function centerZoomControl()
{if(SliderDockedState)
{var pos1=SliderLeft+parseInt(curtains[0].offsetWidth);var pos2=parseInt(curtains[1].offsetLeft);var pos3=(pos2-pos1)/2;var pos4=parseInt(zoomControl1.offsetWidth)/2;if((((pos1+pos3)-pos4)>SliderLeft)&&((((pos1+pos3)-pos4)+parseInt(zoomControl1.offsetWidth))<(SliderLeft+SliderTotalWidth)-25))
{zoomControl1.style.left=(pos1+pos3)-pos4+"px";}
zoomControl1.style.top=SliderTop-15+"px";zoomControl1.style.height="20px";}}
function setSliderZoomLevel(newZoomLevel)
{ZoomInProgress=true;var scrollDiv=document.getElementById('ftdsScrollBar');if(newZoomLevel==2)
{graph.settings.interval="M";}
else
{switch(newZoomLevel)
{case 0:graph.settings.interval="D";break;case 1:graph.settings.interval="W";break;default:}}
graph.resize();if(scrollDiv.scrollUpdate)
{scrollDiv.scrollUpdate();}
setZoomState();setCurtainStateToDockedOrUndocked();updateDates(graph.dates["Floor"],graph.dates["Ceiling"]);ZoomInProgress=false;}
this.cleanup=cleanup;function cleanup()
{try
{var tmp=document.getElementById("IEbugFixDateslider");if(tmp)
{purge(tmp);tmp=null;}
if(ResultBox)
{purge(ResultBox);ResultBox=null;}
if(graph)
{if(graph.ranges[0])
{purge(graph.ranges[0]);graph.ranges[0]=null;}
if(graph.ranges[1])
{purge(graph.ranges[1]);graph.ranges[1]=null;}
if(graph.ranges[2])
{purge(graph.ranges[2]);graph.ranges[2]=null;}
if(graph.display.window)
{purge(graph.display.window);graph.display.window=null;}
if(graph.zoom)
{purge(graph.zoom);graph.zoom=null;}
purge(graph);graph=null;}
if(scb)
{purge(scb)
scb=null;}
if(zoomControl1)
{purge(zoomControl1)
zoomControl1=null;}
if(dateslider)
{purge(dateslider);dateslider=null;}}
catch(e)
{}}}
function hide()
{var db=document.getElementById("IEbugFixDateslider");db.style.display="none";setHidden();}
function setHidden()
{dateslider.visible=false;}
function setVisible()
{dateslider.visible=true;}
function show()
{var db=document.getElementById("IEbugFixDateslider");db.style.display="";setVisible();}
ftdsSliderObject.prototype.hide=hide;ftdsSliderObject.prototype.show=show;
