ListBox = function() { /* Обязательное присутствие первого аргумента: Имени контрола */ if(arguments.length==0) { self.status="ListBox invalid - no name argument"; } /* Первый параметр конструктора - имя контрола */ this.name = arguments[0]; /* Выбираем в качестве родителя или элемент из конструктора или body */ this.parent = arguments[1]||document.body /* Определяем постоянные величины */ this.constBaseDivSuffix = "_base"; this.constHiddenSuffix = "_hidden"; /**/ this.clearItems(); /**/ this.selectedItems = new Array(); /**/ this.onChangeSelected = null; /* Создаем базовый слой */ this.view = this.createBase(); /* Добавляем отображаемый текст в дерево документа */ this.parent.appendChild(this.view); this.parent.appendChild(this.createHidden()); // элемент br (line break) будет добавлен для всех браузеров кроме Internet Explorer var br = ListBox.is_ie ? "" : "
"; // Ссылка "Очистить" var linkClear = $("" + br + "Очистить")[0]; this.parent.appendChild(linkClear); /* Имя элемента, который хранит выбранное значение соответствует имени контрола */ this.valcon = this.getControl(this.constHiddenSuffix); } /// detect a special case of "web browser" ListBox.is_ie = ( /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent) ); ListBox.is_ie5 = ( ListBox.is_ie && /msie 5\.0/i.test(navigator.userAgent) ); /// detect Opera browser ListBox.is_opera = /opera/i.test(navigator.userAgent); /// detect KHTML-based browsers ListBox.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent); /// detect Firefox browser ListBox.is_firefox = /Firefox/i.test(navigator.userAgent); /* */ ListBox.prototype.getControlName = function(suffix) { return this.name + suffix; } /* */ ListBox.prototype.getControl = function(suffix) { return document.getElementById(this.getControlName(suffix)); } ListBox.prototype.createHidden = function() { var span; span = document.createElement("SPAN"); span.innerHTML = "" return span; } ListBox.prototype.createBase = function() { var div; div = document.createElement("DIV"); div.name = this.name + this.constBaseDivSuffix; div.id = this.name + this.constBaseDivSuffix; div.className = "e-listbox"; return div; } ListBox.prototype.getValue = function(index) { if (typeof(this.options[index].value) != 'undefined') {return this.options[index].value;} else {return this.options[index].text;} } ListBox.prototype.isSelected = function(value) { for (i=0;i' + this.options[i].text + ''; } buildString = buildString + items.join("") + ''; if (this.view != null) {this.view.innerHTML = buildString;} } ListBoxItem = function(text,value) { this.text = text; this.value = value; } ListBox.prototype.clearItems = function() { this.options = new Array(); } ListBox.prototype.add = function() { var i,arglen; arglen=arguments.length; for(i=0;i