﻿/**
 * Контрол для показа частоты на главной странице
 * (Использует паттерн MS Ajax Component. Будет доступен через $find)
 */
function FrequencyControl()
{
	//Стандартный интерфейс для компонента
	FrequencyControl.initializeBase(this);
	//ID элемента, в котором находится данный контрол
	this._containerElementID = null;
	//Значения на концах шкалы
	this._startX = 49.9;
	this._endX = 50.1;
	//Смещение ползунка от левого края, когда его значение равно startX
	this.leftPxOffset = -28;
	//Расстояние в пикселах между endX и startX
	this.scalePxLength = 200;
};
FrequencyControl.prototype =
{
    get_containerElementID: function()
    {
        return this._containerElementID;
    },
    set_containerElementID: function(value)
    {
        this._containerElementID = value;
    },
    /**
    * Устанавливает значение частоты
    * @param {Object} complexValue  Значение частоты Содержит значения:
    * value - Собственно значение
    * startX - Нижняя граница
    * endX - Верхняя граница
    */
    set_value: function(complexValue)
    {

        var startX = complexValue.startX;
        var endX = complexValue.endX;
        var centerValue = (endX + startX) / 2;

        var container = $("#" + this._containerElementID);
        $("#startX", container).text(startX.toFixed(1));
        $("#endX", container).text(endX.toFixed(1));
        $("#centerX", container).text(centerValue.toFixed(1));

        var valueOffset = 0;

        var value = complexValue.value;
        if (value != null)
        {
            if (value < startX)
                value = startX;
            if (value > endX)
                value = endX;

            valueOffset = value - startX;
            //Устанавливаем значения
            $("#value", container).text(value.toFixed(3) + " Гц");
        }
        else
        {
            $("#value", container).text("");
        }
        //Устанавливаем положение ползунка
        var valueLeftPxOffset = this.leftPxOffset;
        if (endX > startX)
        {
            valueLeftPxOffset = valueOffset / (endX - startX) * this.scalePxLength + this.leftPxOffset;
        }
        $("#value", container).css("left", valueLeftPxOffset + "px");
    },
    get_value: function()
    {
        //Сделано специально, чтобы value было свойством (тогда его можно инициализировать через Asp.net ajax)
        return null;
    },
    /**
    * Показывает элемент
    */
    show: function()
    {
        var container = $("#" + this._containerElementID);
        container.show();
    }
};

// JSON object that describes all properties, events, and methods of this component that should
// be addressable through the Sys.TypeDescriptor methods, and addressable via xml-script.
FrequencyControl.descriptor = {
properties: [{ name: 'containerElementID', type: String }, { name: 'value', type: Object}]
};
FrequencyControl.registerClass('FrequencyControl', Sys.Component);

// Since this script is not loaded by System.Web.Handlers.ScriptResourceHandler
// invoke Sys.Application.notifyScriptLoaded to notify ScriptManager 
// that this is the end of the script.
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();

