var Palette = function( filedName, availableNode, selectedNode, availableValues, selectedValues )
{
	this.fieldName = filedName;
	this.availableNode = availableNode;
	this.selectedNode = selectedNode;
	
	var o = this;
	
	var strAvailableOptions ='';

	for(var i=0; i<availableValues.length; i++ ){
		strAvailableOptions += '<option value="'+availableValues[i][0]+'" >'+availableValues[i][1]+'</option>';
	}
	
	$(availableNode).append(strAvailableOptions);
	
	var strSelectedOptions = '';
	
	for(var i=0; i<selectedValues.length; i++)
	{
		strSelectedOptions += '<option value="'+selectedValues[i][0]+'" >'+selectedValues[i][1]+'</option>';	
	}
	$(selectedNode).append(strSelectedOptions);	

	this.update = function()
	{
		var value = '';
		$('option', this.selectedNode ).each(function(){
			value += this.value + "|";
		});
		value = (value == '')?'none':value;
		$('input#'+this.fieldName+'_val').attr("value", value);
	}
	
	this.move2selected = function()
	{
		$("option[selected]", this.availableNode).each(function(){
			$(o.selectedNode).append($(this).attr('selected', '').remove());
		});
		this.update();
	}
	
	this.move2available = function()
	{
		$("option[selected]", this.selectedNode).each(function(){
			$(o.availableNode).append($(this).attr('selected', '').remove());
		});
		this.update();
	}
		
	this.selectedNodeDeselect = function()
	{
		if($('option[selected]', 'select.selected_values').size()>0)
			$('option[selected]', 'select.selected_values').attr('selected','');
	};
	
	this.availableNodeDeselect = function()
	{
		if($('option[selected]', 'select.admissible_values').size()>0)
			$('option[selected]', 'select.admissible_values').attr('selected','');
	};
	this.selectedNodeDeselect();
	this.availableNodeDeselect();	
}

