// Disable the mouseWheel operations for all sliders...
//fdSliderController.disableMouseWheel();

// Preloading the images used for the slider handle
var imgList = ["/sitewide/slider/slider-disabled.png", "/sitewide/slider/slider-disabled-1.png", "/sitewide/slider/slider.png", "/sitewide/slider/slider-1.png"];
var preloadImg = []
    for(var i = 0, imgSrc; imgSrc = imgList[i]; i++) {
        preloadImg[i] = new Image();
        preloadImg[i].src = imgSrc;
    };

// Remember folks, none of this JavaScript is actually necessary, it's just there to show you
// how to extend the slider functionality with callback functions/Object.methods

// The tooltip object
var TT = {
    tooltip:null,
    tooltipInner:null,
    handle:null,
    init:function(cbObj) {

        // Grab a reference to the slider handle
        var handle = document.getElementById("fd-slider-handle-" + cbObj.elem.id);

        // If something has gone wrong then bail out...
        if(!handle) { return; };

        // Create the tooltip if needs be...
        if(!document.getElementById('tooltip')) {
            var tt = document.createElement("div");
            tt.className = "tooltip";

            var TTinner1 = document.createElement("div");
            TTinner1.className = "tooltipInner1";

            var TTinner2 = document.createElement("div");
            TTinner2.className = "tooltipInner2";

            TTinner1.appendChild(TTinner2);
            tt.appendChild(TTinner1);

            document.getElementsByTagName('body')[0].appendChild(tt);

            // Cache a reference to the tooltip and tooltip inner
            TT.tooltip      = tt;
            TT.tooltipInner = TTinner2;
        };

        // Show the tooltip when the slider is focused
        fdSliderController.addEvent(handle, "focus", TT.show);

        // Hide the tooltip when the slider is blurred
        fdSliderController.addEvent(handle, "blur",  TT.hide);

        // Internet Explorer fills the input's value attribute after the
        // onload event fires so we need to set a timeout of 200ms in order
        // to be able to read this "delayed" value and correctly reset
        // the toolTip position.
        TT.tooltip.style.display = "block";
        TT.tooltip.style.visibility = "hidden";
        /*@cc_on
          /*@if(@_win32)
                setTimeout(function() { TT.update(cbObj); TT.tooltip.style.display = "none"; TT.tooltip.style.visibility = "hidden"; }, 800);
                @else @*/
        TT.update(cbObj);
        TT.tooltip.style.display = "none";
        TT.tooltip.style.visibility = "hidden";
        /*@end
          @*/

    },
    // A function that positions the tooltip and updates it's value
    // This is also used as the callback function for the slider
    update:function(cbObj) {
        var curleft = 0,
        curtop  = 0,
        obj     = document.getElementById("fd-slider-handle-" + cbObj.elem.id),
        osw     = obj.offsetWidth;

        // Try catch for IE's benefit
        try {
            while (obj.offsetParent) {
                curleft += obj.offsetLeft;
                curtop  += obj.offsetTop;
                obj      = obj.offsetParent;
            };
        } catch(err) { };

        while(TT.tooltipInner.firstChild) { TT.tooltipInner.removeChild(TT.tooltipInner.firstChild); };

        var txt = cbObj.elem.tagName.toLowerCase() == "select" ? cbObj.elem.options[cbObj.elem.selectedIndex].text : cbObj.elem.value;
        TT.tooltipInner.appendChild(document.createTextNode(txt));

        TT.tooltip.style.left = Math.round((curleft - ((TT.tooltip.offsetWidth - osw) / 2))) + "px";
        TT.tooltip.style.top = (curtop - TT.tooltip.offsetHeight)  + "px";
    },
    show:function(e) {
        e = e || window.event;
        if(e && e.type && e.type != "focus") return;
        TT.tooltip.style.display = "block";
        TT.tooltip.style.visibility = "visible";
        TT.update({"elem":document.getElementById(this.id.replace("fd-slider-handle-", ""))});
    },
    hide:function(e) {
        e = e || window.event;
        if(e && e.type && e.type != "blur") return;
        TT.tooltip.style.display = "none";
        TT.tooltip.style.visibility = "hidden";
    }
};

