var list = Class.create(CElement,{
  initialize: function( parent, id, params ) {
	
		
	this.type	    = "list";
	this.index      = id ;
	this.parent     = parent;
	
	this.label      = params.label;
	this.required   = params.required;
	this.elements   = params.elements;
	this.multi      = params.multi;
	this.x	        = params.x;
	this.y 	        = params.y;
	this.w	        = params.w;
	this.h	        = params.h;
	
	
	this.htmlLabel = document.createElement("label");
	this.htmlLabel.innerHTML = this.label;
	this.htmlLabel.htmlFor = "input_" + this.type + this.index;
 
	this.htmlInput  = document.createElement("select");
	this.htmlInput.name      = "input_" + this.type + this.index;
	this.htmlInput.id        = "input_" + this.type + this.index;
		
	
	var e = null;
	if(this.elements.length == 0)
		e = new Array();
	else
		e = this.elements.split("\n");
	
	this.htmlInput.options.length = 0;
	for(i=0;i<e.length;i++)
		this.htmlInput.options[i]  = new Option(e[i], i);
	
	var br = document.createElement("br");
	br.clear = 'all';
	
	this.htmlContainer = document.createElement("li");
	this.htmlContainer.id  = parent.id + "_" +  this.type +  this.index;
		
	var ix = this.index;
	
	this.htmlContainer.onmousedown =  function() { var h = new Function("selectEntry('"+ix+"')"); h();}
	
	this.htmlContainer.appendChild( this.htmlLabel );
	this.htmlContainer.appendChild( this.htmlInput );
	this.htmlContainer.appendChild( br );
	
	this.htmlULMenu    = createContextMenu( this.htmlContainer, new Array("Delete","deleteEntry("+this.index+")"));
	this.parent.appendChild(this.htmlContainer);
	
	new Draggable(this.htmlContainer, {snap:10});
	
	this.htmlContainer.style.left = this.x + "px";
	this.htmlContainer.style.top  = this.y + "px";

	
  },
  onUpdate : function(){
	
	this.htmlLabel.innerHTML = this.label;	
	
	var e = this.elements.split("\n");
	this.htmlInput.options.length = 0;
	for(i=0;i<e.length;i++)
		this.htmlInput.options[i]  = new Option(e[i], i);
	this.htmlInput.multiple = this.multi;
  },
 onDelete : function(){
	
	var c = this.parent.id;
	var e = this.htmlContainer.id;
	Effect.Fade(this.htmlContainer,{afterFinish: function(){$(c).removeChild($(e))}});
	
 }
  
});
