// Copyright (c) 2006-2007, Powermand Inc. All Rights Reserved.

// JavaScript Document

function tempSliderControls(instanceId, instanceName) {
 
    this.instanceId = instanceId;
    this.minSlider = null;
    this.maxSlider = null;
    this.sliderMinHandle = null;
    this.sliderMaxHandle = null;
    this.minField = null;
    this.maxField = null;
    this.sliderLine = null;
    var instance = this;
    this.lowerThreshold = 40;
    this.upperThreshold = 120; 
    this.pixelPerDegree = 3;
    this.instanceName = instanceName;
    this.minActive = true;
    this.maxActive = true;
	//on change event fired when the slider changes
	this.onChange=new Observer();

	this.init = function(minInitPoint, maxInitPoint,withinObj) {
        this.minField = $('tempFieldMin' + this.instanceId);
        this.maxField = $('tempFieldMax' + this.instanceId);
        this.sliderMinHandle = $('tempSliderMinKnob' + this.instanceId);
        this.sliderMaxHandle = $('tempSliderMaxKnob' + this.instanceId);
        this.tempSpinnerMin = $('tempSpinnerMin' + this.instanceId);
        this.tempSpinnerMax = $('tempSpinnerMax' + this.instanceId);
        this.sliderLine = $('tempSliderTrack' + this.instanceId);
		
		
		
		
		draggable_init(withinObj); 
		this.minSlider = new Slider();					
		this.minSlider.init(this.sliderMinHandle.id,this.sliderLine.id);
		this.sliderMinHandle.control=this;
		this.sliderMinHandle.dragEvent=function(){
					this.control.minField.value=this.control.percTemp(this.control.minSlider.Percent())
					this.control.onChange.fire();	
				} 

        this.setMinActive(true);
		
		/*
		this.minSlider.subscribe("slideEnd", function(e){
			//alert('minSlider end'+parseInt(instance.minField.value)+' '+instance.maxField.value);
			if(parseInt(instance.minField.value)>=parseInt(instance.maxField.value)) 
				instance.setMin(parseInt(instance.maxField.value)-1); 
        });
		*/ 
		
		this.maxSlider = new Slider();					
		this.maxSlider.init(this.sliderMaxHandle.id,this.sliderLine.id);
		this.sliderMaxHandle.control=this;
		this.sliderMaxHandle.dragEvent=function(){
					this.control.maxField.value=this.control.percTemp(this.control.maxSlider.Percent())
					this.control.onChange.fire();
				}

        this.setMaxActive(true);
		/* 
		this.maxSlider.subscribe("slideEnd", function(e) { 
			//alert('maxSlider end'+instance.minField.value+' '+parseInt(instance.maxField.value));
			if(parseInt(instance.minField.value)>=parseInt(instance.maxField.value)) { 
				//instance.maxField.value=parseInt(instance.minField.value)+3;  
				alert('setting max '+parseInt(instance.minField.value)); 
				instance.setMax(parseInt(instance.minField.value)+1);
			}
        });	
		*/ 
        this.setMinMax(minInitPoint, maxInitPoint); 
    };
	//calculates temperature from a percentage of the slider
	this.percTemp=function(percent){
		return parseInt(((this.upperThreshold - this.lowerThreshold)*(percent/100))+this.lowerThreshold);
	};

    this.setMinMax = function(minTemp, maxTemp) {
        this.setMin(minTemp);
        this.setMax(maxTemp);
    };

    this.setMin = function(minTemp) {
		if(this.lowerThreshold>minTemp)
			minTemp=this.lowerThreshold;
		if(this.upperThreshold<minTemp)
			minTemp=this.upperThreshold;
        this.minField.value = minTemp;	
        this.setSliderMin(minTemp);
    };

    this.setMax = function(maxTemp) {
		if(this.upperThreshold<maxTemp)
			maxTemp=this.upperThreshold; 
		if(this.lowerThreshold>maxTemp)
			maxTemp=this.lowerThreshold;			
        this.maxField.value = maxTemp;
        this.setSliderMax(maxTemp);
    };

    this.setSliderMax = function(maxTemp){
		percent=((parseInt(maxTemp)-this.lowerThreshold)/(this.upperThreshold - this.lowerThreshold))*100; 
		this.maxSlider.setPos(percent);
    };

    this.setSliderMin = function(minTemp) { 
		percent=(minTemp-this.lowerThreshold)/(this.upperThreshold - this.lowerThreshold)*100;
		this.minSlider.setPos(percent); 
    };

    this.adjustTemp = function(isMax, mode, element) {
        el = $(element);
        if (el.disabled) return false;
        v = el.value;
        //add to spinner up to upper threshold
        if (mode == '+' && el.value < this.upperThreshold) {
            el.value = ++v;
        }
        //add to spinner down to lower threshold
        if (mode == '-' && el.value > this.lowerThreshold) { 
            el.value = --v;
        }
        if (isMax == true) {
            this.setSliderMax(v);
        } else {
            this.setSliderMin(v);
        }
        //events.fire(this.instanceName); 
    };
	
    this.setMinActive = function(state) {
        this.minActive = state;
        if (state) {
            this.sliderMinHandle.style.opacity = 10;
            this.sliderMinHandle.style.filter = "alpha(opacity=100)";
            this.tempSpinnerMin.style.opacity = 10;
            this.tempSpinnerMin.style.filter = "alpha(opacity=100)";
            this.minField.disabled = false;
           // this.minSlider.unlock();
        } else {
            this.sliderMinHandle.style.opacity = 0.50;
            this.sliderMinHandle.style.filter = "alpha(opacity=50)";
            this.tempSpinnerMin.style.opacity = 0.50;
            this.tempSpinnerMin.style.filter = "alpha(opacity=50)";
            this.minField.disabled = true;
          //  this.minSlider.lock(); 
        }
    };

    this.setMaxActive = function(state) {
        this.maxActive = state;
        if (state) {
            this.sliderMaxHandle.style.opacity = 10;
            this.sliderMaxHandle.style.filter = "alpha(opacity=100)";
            this.tempSpinnerMax.style.opacity = 10;
            this.tempSpinnerMax.style.filter = "alpha(opacity=100)";
            this.maxField.disabled = false;
            //this.maxSlider.unlock();
        } else {
            this.sliderMaxHandle.style.opacity = 0.50;
            this.sliderMaxHandle.style.filter = "alpha(opacity=50)";
            this.tempSpinnerMax.style.opacity = 0.50;
            this.tempSpinnerMax.style.filter = "alpha(opacity=50)";
            this.maxField.disabled = true;
            // this.maxSlider.lock();
        }
    };
}
