﻿// JScript File
// Requires Global.js File
var _slider_SliderMarker            = null;
var _slider_SliderMarkerMax         = null;

var _slider_StartValue               = 0;

var _slider_MinStep                 = 0;
var _slider_MaxStep                 = 0;

var _slider_stepGraphicWidth        = 0;
var _slider_stepValueWidth          = 0;

var _slider_CallWhenSliderMove      = null;

function _slider_getStepFromMousePos()
{
    return Math.round( (_global_MousePos[0] - _global_InitialOffset[0]) / _slider_stepGraphicWidth);
}

function _slider_plotMarker(marker,step,ValueControlID,infiniteMarker)
{
    marker.style.left = (step * _slider_stepGraphicWidth) - (21 / 2) + 'px';
        
    var value = step * _slider_stepValueWidth;
    
    value += _slider_StartValue;
    
    if (step > 20)
    {
        value = (20 * _slider_stepValueWidth) + ((step - 20) * (_slider_stepValueWidth * 2));
    }
    
    if (value >= infiniteMarker)
    {
        value = 'Any';
    }
    
    value = value + '';
    var output = '';
    var i = 3;
    
    while (i < value.length)
    {
        output =  ',' + value.substring(value.length - i,value.length - i + 3) + output;
        i += 3;
    }
    
    if ( (3 + value.length - i) > 0)
    {
         output = value.substring(0,3 + value.length - i) + output;
    }
    
    value = output;
    
    if (_slider_SliderMarkerMax != null && ValueControlID != '')
        document.getElementById(ValueControlID).innerHTML = value;
    else if (ValueControlID != '')        
    {
        if (value == 0)
            document.getElementById(ValueControlID).innerHTML = "Studio";
        else            
            document.getElementById(ValueControlID).innerHTML = value;
    }
}

//_______________________________________________________________________________________
function _slider_slide(mode,NumSteps,textboxID,infiniteMarker,MinValueID,MaxValueID)
{
    if (mode == 'max')
    {
        _slider_MaxStep = _slider_getStepFromMousePos();
    
        if (_slider_MaxStep <= _slider_MinStep)
            _slider_MaxStep = _slider_MinStep + 1;
            
        if ( _slider_MaxStep < 0)
            _slider_MaxStep = 0;
        else if (_slider_MaxStep >= NumSteps)
            _slider_MaxStep = NumSteps - 1;
    }
    else
    {
        _slider_MinStep = _slider_getStepFromMousePos();
        
      //  document.getElementById('output').value = (_global_MousePos[0] - _global_InitialOffset[0]) + ' 11 ';
        
        if (_slider_SliderMarkerMax != null &&  _slider_MinStep >= _slider_MaxStep)
            _slider_MinStep = _slider_MaxStep - 1;
            
        if ( _slider_MinStep < 0)
            _slider_MinStep = 0;
        else if (_slider_MinStep >= NumSteps)
            _slider_MinStep = NumSteps - 1;
    }
    
    _slider_plotMarker(_slider_SliderMarker,_slider_MinStep,MinValueID,infiniteMarker);
    
    if (_slider_SliderMarkerMax != null)
        _slider_plotMarker(_slider_SliderMarkerMax,_slider_MaxStep,MaxValueID,infiniteMarker);
    
    var _slider_inputBox = document.getElementById(textboxID);
    
    if (_slider_inputBox != null && _slider_inputBox != 'undefined')
    {
        var valueToWrite = _slider_MinStep * _slider_stepValueWidth;
        valueToWrite += _slider_StartValue;
        
        if (valueToWrite >= infiniteMarker)
            _slider_inputBox.value = '';
        else 
            _slider_inputBox.value = valueToWrite;
        
        if (_slider_SliderMarkerMax != null)
        {
            valueToWrite = _slider_MaxStep * _slider_stepValueWidth;
            
            valueToWrite += _slider_StartValue;
            
            if (valueToWrite >= infiniteMarker)
                _slider_inputBox.value += '-';
            else 
                _slider_inputBox.value += '-' + _slider_MaxStep * _slider_stepValueWidth;
        }
    }
    
    if (_slider_CallWhenSliderMove)
        _slider_CallWhenSliderMove();
}

function slider_startSliding(firstMarkerID,secondMarkerID,startRange,endRange,steps,textboxID,mode,infiniteMarker,MinValueID,MaxValueID,ActualValue)
{
    _slider_SliderMarker        = document.getElementById(firstMarkerID);
    _slider_stepGraphicWidth    = _slider_SliderMarker.parentNode.offsetWidth / steps;
    _slider_stepValueWidth      =  ActualValue; //(endRange - startRange) / (steps - 1);
    
    _slider_MinStep = 0;
    _slider_MaxStep = steps - 1;
    
    _slider_StartValue = startRange;
    
    if (textboxID != '')
    {
        var values = document.getElementById(textboxID).value.split('-');
        
        if (values.length >= 1)
        {
            if (values[0] != '')
                _slider_MinStep = (Math.round(parseInt(values[0]) - _slider_StartValue) / _slider_stepValueWidth) ;
        }
        
        if (values.length >= 2)
        {
            if (values[1] != '')
                _slider_MaxStep = Math.round(parseInt(values[1]) / _slider_stepValueWidth);
        }
    }
    
    _slider_plotMarker(_slider_SliderMarker,_slider_MinStep,MinValueID,infiniteMarker);
    
    if (secondMarkerID == '')
    {
        _slider_SliderMarkerMax = null;
    }
    else
    {
        _slider_SliderMarkerMax = document.getElementById(secondMarkerID);
        _slider_plotMarker(_slider_SliderMarkerMax,_slider_MaxStep,MaxValueID,infiniteMarker);
    }
    
    CalculateInitialOffset(_slider_SliderMarker.parentNode);
    _global_onMouseMove = function() {_slider_slide(mode,steps,textboxID,infiniteMarker,MinValueID,MaxValueID);};
}

function slider_PotInitalPosition(firstMarkerID,secondMarkerID,startRange,endRange,steps,textboxID,MinValueID,MaxValueID,infiniteMarker,ActualValue)
{
    _slider_SliderMarker        = document.getElementById(firstMarkerID);
    _slider_stepGraphicWidth    = _slider_SliderMarker.parentNode.offsetWidth / steps;
    _slider_stepValueWidth      = ActualValue; //(endRange - startRange) / (steps - 1);
    
    var _local_rawValue   = 0;

    _slider_StartValue = startRange;
    
    if (document.getElementById(textboxID) != null)
    {
        _local_rawValue = document.getElementById(textboxID).value;            
    }
    
    _slider_MinStep = 0;
    _slider_MaxStep = steps - 1;

    if (_local_rawValue != '')
    {
        var values = _local_rawValue.split('-');
        
        if (values.length >= 1)
        {
            if (values[0] != '')
                _slider_MinStep = (Math.round(parseInt(values[0]) - startRange) / _slider_stepValueWidth) ;
        }
        
        if (values.length >= 2)
        {
            if (values[1] != '')
                _slider_MaxStep = Math.round(parseInt(values[1]) / _slider_stepValueWidth);
        }
    }
    
    if (secondMarkerID != '')
    {
        _slider_SliderMarkerMax = document.getElementById(secondMarkerID);
        _slider_plotMarker(_slider_SliderMarkerMax,_slider_MaxStep,MaxValueID,infiniteMarker);
    }
    else
    {
        _slider_SliderMarkerMax = null;
    }
    
    _slider_plotMarker(_slider_SliderMarker,_slider_MinStep,MinValueID,infiniteMarker);
    
}

function activateSlider(controlToActivateID,startRange,endRange,steps,infiniteMarker,MinValueID,MaxValueID,ActualValue)
{
    var childNode = document.getElementById(controlToActivateID).firstChild;
    var firstMarker_id  = '';
    var secondMarker_id = '';
    var textboxID = '';
    
    while(childNode != null)
    {

        if (childNode.tagName == 'INPUT')
        {
            childNode.style.display='none';
            textboxID = childNode.id;
        }
        else if (childNode.tagName == 'DIV')
        {
            if (firstMarker_id == '')
                firstMarker_id = childNode.id;
            else if (secondMarker_id == '')
                secondMarker_id = childNode.id;                
        }
    
        childNode = childNode.nextSibling;
    }
    
    slider_PotInitalPosition(firstMarker_id,secondMarker_id,startRange,endRange,steps,textboxID,MinValueID,MaxValueID,infiniteMarker,ActualValue);
    
    if (firstMarker_id != '' && secondMarker_id == '')
    {
        document.getElementById(firstMarker_id).onmousedown = function(){slider_startSliding(firstMarker_id,'',startRange,endRange,steps,textboxID,'',infiniteMarker,MinValueID,MaxValueID,ActualValue)};
    }
    
    if (secondMarker_id != '' && secondMarker_id != '')
    {
        document.getElementById(firstMarker_id).onmousedown  = function(){slider_startSliding(firstMarker_id,secondMarker_id,startRange,endRange,steps,textboxID,'min',infiniteMarker,MinValueID,MaxValueID,ActualValue)};
        document.getElementById(secondMarker_id).onmousedown = function(){slider_startSliding(firstMarker_id,secondMarker_id,startRange,endRange,steps,textboxID,'max',infiniteMarker,MinValueID,MaxValueID,ActualValue)};
    }
}