﻿//to get mouse Position
function getMousePos(e){
	var posx = 0;
    var posy = 0;
    if (!e) e = window.event;
    if (e.pageX || e.pageY) {
		posx = e.pageX;
		posy = e.pageY;
    }
    else if (e.clientX || e.clientY) {
		posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
    }
	return posx;
}

//gets x position of main container
function getSliderPosition(){
    var container=getElementsByClassName(document,'div','centerContent')[0];
    var containerLeft=container.offsetLeft;
    return containerLeft+106;
}

//initial setting
function iniSliderSetup(){
    scrElanim=[];
    _isIdle=false;
    _isTrack=true;
    _currIndex='';
    
    var handle=getElementsByClassName(document,'div','sliderHandle');
    var trckSrcEvent=getElementsByClassName(document,'div','sliderTrack');
    var txtInputSlider=getElementsByClassName(document,'input','txtInputSlider');
    
    for(var i=0;i<handle.length;i++){
        //attachEventListener(trckSrcEvent[i],"mouseup", trackMove, false);
        scrElanim[i]=new Animator({transition:Animator.makeLinear()});
        scrElanim[i].options.duration=400;
        scrElanim[i].addSubject(new NumericalStyleSubject(handle[i], 'left', 10, 328));
        if(txtInputSlider[i].value){
            setSelectedPosition(txtInputSlider[i].value, i)
        }
    }
}

//sets idle position on page refresh
function setSelectedPosition(pos, i){
    var scaledPosition=Number(pos);
    _currIndex=Number(i);
    setValue(scaledPosition);
    var newPosition = (scaledPosition*10)/100;
    scrElanim[_currIndex].jumpTo(newPosition);
    //scrElanim[_currIndex].seekTo(newPosition);
}

//sets index of interacted slider
function setSliderIndex(srcEl){
    var elArray=getElementsByClassName(document,srcEl.nodeName,srcEl.className);
    for(var i=0;i<elArray.length;i++){
	    if(srcEl==elArray[i]){
	        var currIndex=i;
	    }
	}
	_currIndex=currIndex;
}

//sets idle position adjusted to scale
function setNewPosition(currPos){
    var exactPosition = 100*currPos/318;
    var scaledPosition=Math.round(exactPosition/10);
    setValue(scaledPosition);
    var newPosition = (scaledPosition*10)/100;
    scrElanim[_currIndex].seekTo(newPosition);
}

//sets listener for click on slider track
function iniTrackMove(srcEl){
    setSliderIndex(srcEl);
    attachEventListener(srcEl,"mouseup", trackMove, false);
}

//animates after click on slider track and gets index of slider that is interacted with
function trackMove(et){
     _isIdle=false;
	_isTrack=true;
    var containerPositionX=getSliderPosition();
    currPos=getMousePos(et)-(containerPositionX);
    setNewPosition(currPos);
}

//sets mouse listeners on idle interaction
function iniMoveIdle(srcEl){
    setSliderIndex(srcEl);
	_isIdle=true;
	_isTrack=false;
	attachEventListener(document,"mousemove", moveIdle, false);
	attachEventListener(document,"mouseup", iniStopMove, true);
}

//moves handle on mouse move
function moveIdle(et){
	if(!_isIdle) return;
	var handle=getElementsByClassName(document,'div','sliderHandle')[_currIndex];
	var track=getElementsByClassName(document,'div','sliderTrack')[_currIndex];
	var currPosition=handle.offsetLeft;
	var containerPositionX=getSliderPosition();
    var currPos=getMousePos(et)-(containerPositionX);
    var newPosition = currPos/318;
	scrElanim[_currIndex].jumpTo(newPosition);
}

//stops movement on mouse up
function iniStopMove(eventType){
    var handle=getElementsByClassName(document,'div','sliderHandle');
    var currentPosition = handle[_currIndex].offsetLeft-10;
	_isIdle=false;
    attachEventListener(document,"mouseup",moveIdle, false);
    if(!_isTrack) setNewPosition(currentPosition);
}

//sets value for hidden input
function setValue(newValue){
    var sliderTextBox=getElementsByClassName(document,'input','txtInputSlider')[_currIndex];
    if(newValue==0) newValue='';
    sliderTextBox=sliderTextBox.value=newValue;
}

//calls ini function on page load
//addLoadListener(iniSliderSetup);