/**
 * Собственно отрисовка селекта, обновление и т.д.
 *
 * @param {String} id id элемента
 * @param {object} options  данные селекта в формате {"1":"Значение1"}
 * @param {String} emptyText выводится при блокировке селекта
 */
function  Select(id, options, emptyText){

    /**
     * Значения селекта
     */
    this.options = options;

    /**
     * Id элемента
     */
    this.id  =  id;

    /**
     * Jquery объект для работы с данным селектом
     *
     * @type {JQuery}
     */
    this.element = $('#'+id);

    /**
     * Текст для пустого селекта(выводится если нет данных для вывода)
     *
     * @type {String}
     */
    this.emptyText  =  emptyText;


    /**
     * Вставляем Option'ы в селект
     */
    this.drowOptions  =  function(){
        for(var value in this.options){
            $('<option>')
            .attr('value', value)
            .text(this.options[value]).appendTo(this.element);
        }
    }

    /**
     * Обновляем option'ы
     */
    this.updateOptions  =  function(options){

        this.options  =  options;
        $('#'+this.id+' option').remove();
        this.drowOptions();
        $(this.element).removeAttr('disabled');

        // На случай, если с ним связаны другие Select'ы
        $(this.element).change();
    }


    /**
     * "Выключаем" селект
     */
    this.disable  =  function(){
        $('#'+this.id+' option').remove();
        $(this.element).attr('disabled', 'disabled');

        $('<option>')
        .attr('value', '')
        .text(this.emptyText).appendTo(this.element);

        // На случай, если с ним связаны другие Select'ы
        $(this.element).change();
    }
}