/**************************************************************
 * @author mpoisson
 * Dropdown object 
 **************************************************************/
function Dropdown(id_element, currentValue) {
	this.id_element = id_element;
	this.onChangeFunction = '';
	this.currentItem = currentValue;
}

Dropdown.prototype.clear = function() {
	var cbo = $(this.id_element);
	while (cbo.childNodes.length) {
		cbo.removeChild(cbo.childNodes[0]);
	}
};

Dropdown.prototype.setOnChange = function(fc) {
	var cbo = $(this.id_element);
	cbo.onchange = function () { eval(fc + '(this.value)'); };
};

Dropdown.prototype.addItem = function (value, description, isSelected) {
	var cbo = $(this.id_element);
	var count = 0;
	
	if (cbo.options) {
		count = cbo.options.length;
	}

	var option = new Option(description,value);
	if (isSelected) { option.selected = true;}
	cbo.options[count] = option;
	
	/**
	var textNode = document.createTextNode(description);
	var option = document.createElement("option");
	option.setAttribute('value', value);
	option.appendChild(textNode);
	if (isSelected) { option.selected = true; }
	cbo.appendChild(option);
	*/

};

Dropdown.prototype.selectItemByKey = function (key) {
	var cbo = $(this.id_element);
	for (i=0; i< cbo.childNodes.length; i++) {
		var option = cbo.childNodes[i];
		if (option.value == key) { option.selected = true; }
		else { option.selected = false; }
	}
};

Dropdown.prototype.loadFromTableSync = function (table) {
	var connector = new AjaxConnector();
	var s = new Service("B0-001", oEnviroment.getServicePath() + oEnviroment.getServletName(), oEnviroment.getUser().getSID());
	s.setCacheable(true);
	s.addParameter("language", oEnviroment.getLanguage().getID());
	s.addParameter("table", table);
	s.addParameter("start", 0);
	s.addParameter("number", 0);
	
	s = connector.syncRun(s);
	if (s !==null) {
		if (!s.getResult().hasErrors()) {
			this.clear();
			this._handleLoadService(s);
		}
	}
};

Dropdown.prototype.loadFromServiceSync = function (service) {
	var connector = new AjaxConnector();
	service = connector.syncRun(service);
	if (service !==null) {
		if (!service.getResult().hasErrors()) {
			this.clear();
			this._handleLoadService(service);
		}
	}
};

Dropdown.prototype._handleLoadService = function (service) {
	this.clear();
	while (service.getResult().hasNext()) {
		var serviceRow = service.getResult().getCurrentRow().split("|!|");
		var defaultValue = parseInt('0' + serviceRow[2], 10);
		this.addItem(serviceRow[0], serviceRow[1], (defaultValue == 1));
		service.getResult().moveNext();
	}
};

Dropdown.prototype.loadFromTableAsync = function (table) {
	var connector = new AjaxConnector();
	var s = new Service("B0-001", oEnviroment.getServicePath() + oEnviroment.getServletName(), oEnviroment.getUser().getSID());
	s.addParameter("language", oEnviroment.getLanguage().getID());
	s.addParameter("table", table);
	s.addParameter("start", 0);
	s.addParameter("number", 0);
	
	s.setOnServiceComplete(this, '_handleLoadService');
	connector.asyncRun(s);			
};
