/*
# $Id$
*/

/*
# @namespace GCms.ManagedList
*/
GCms.ManagedList = function( dataElement, infoElement , objectLink ){
	
	/*
	# @variable GCms.ManagedList.values
	# Holds array of items
	*/
	this.values = new Array;
	
	/*
	# @variable GCms.ManagedList.objectLink
	# link on which an items remove/move links are based
	*/
	this.objectLink = objectLink;
	
	/*
	# @variable GCms.ManagedList.dataElement
	# data element
	*/
	this.dataElement = dataElement;
	
	/*
	# @variable GCms.ManagedList.infoElement
	# info element
	*/
	this.infoElement = infoElement;
	
	this.init();
}


/*
# @function void init()
#
# initialize the list manager
*/
GCms.ManagedList.prototype.init = function(){
	
	var data = this.getCsvData($(this.dataElement).value);
	
	for(count=0;data.length>count;count++){
		if(data[count]!=null && data[count]!='')
		this.values.push(data[count]);
	}
	this.buildGui();	
}
	
/*
# @function void getCsvData()
#
# get data from csv string
*/
GCms.ManagedList.prototype.getCsvData = function(csv){
	if(csv==null)return false;
	return csv.split(",");
}
	
/*
# @function void addItem()
#
# add list item
*/
GCms.ManagedList.prototype.addItem = function(strEntry){
	if(strEntry!=null && strEntry!=''){
		var arrEntry = strEntry.split(",");
		arrEntry = arrEntry.push?arrEntry:[strEntry];
		
		for(c=0;arrEntry.length>c;c++){
			this.values.push(arrEntry[c]);
		}
		
		this.buildData();
		this.buildGui();
	}
}

/*
# @function void buildData()
#
# rebuild values array
*/
GCms.ManagedList.prototype.buildData = function(){
	$(this.dataElement).value = this.values.join(',');
}

/*
# @function void deleteItem()
#
# add list item
*/
GCms.ManagedList.prototype.deleteItem = function(arrIndex){
	this.values.splice(arrIndex,1);
	this.buildData();
	this.buildGui();
}

/*
# @function void moveItem()
#
# add list item
*/
GCms.ManagedList.prototype.moveItem = function(){
	
}

/*
# @function void makeGui()
#
# 
*/
GCms.ManagedList.prototype.buildGui = function(){
	
	this.clearGui();
	
	var ul = document.createElement("ul");
	ul.className = "managedList";
	
	// add individual list items
	for(count=0;this.values.length>count;count++){
		var li = document.createElement("li");
		
		li.innerHTML = '<a href="#" onclick="'+this.objectLink+'.deleteItem('+count+');return false;" >remove</a> | '
		if(this.values[count].length>97){
			li.innerHTML += this.values[count].substring(0,97)+'...';
		}else{
			li.innerHTML += this.values[count];
		}
		ul.appendChild(li);
	}
	
	// add to info element
	$(this.infoElement).appendChild(ul);
}

/*
# @function void clearGui()
#
# 
*/
GCms.ManagedList.prototype.clearGui = function(){
	while($(this.infoElement).firstChild) {
		$(this.infoElement).removeChild($(this.infoElement).childNodes[0]);
	}
}

/*
# @function void onBeforeSave()
#
# 
*/
GCms.ManagedList.prototype.onBeforeSave = function(){
	
}
