// Javascript Object Definition
// Panel
var Panel = Class.create(AjaxPlugin, {
	//Methods
	initialize: function($super, panelName, containerElem) {
		//superclass constructor
		$super();
		//Register Events
		this.register_event_names(['onSubmit']);
		//Properties
		this.containerElem = containerElem;
		this.name = panelName;
		this.lists = Array();
	},
	add_list: function(listName, headerTitle, submitButtonText, hideQty) {
		var newDivID = 'listpanel_div_list_' + listName;
		var newDiv = new Element('div', { id: newDivID, 'class': 'listDiv', style: 'display: none;width:215px;' });
		$(this.containerElem).appendChild(newDiv);
		var newList = new ProductList(this.name, listName, newDivID, headerTitle, submitButtonText, hideQty);
		this.lists.push(newList);
		var newListIndex = (this.lists.length - 1);
		eval('this.' + listName + ' = this.lists[' + newListIndex + '];');
	},
	show_list: function(listName) {
		var elemIndex;
		for(var a = 0; a < this.lists.length; a++) {
			$(this.lists[a].containerElem).style.display = "none";
			if(this.lists[a].name == listName) {
				elemIndex = a;
			}
		}
		$(this.lists[elemIndex].containerElem).style.display = "inline";	
	},
	submit: function() {
		this.raise_event('onSubmit', { });
	},
	list_by_name: function(listName) {
		var list = false;
		for(var a = 0; a < this.lists.length; a++) {
			if(this.lists[a].name == listName) {
				list = this.lists[a];
				break;
			}
		}
		return list;
	},
	list_count: function() {
	  return this.lists.size();
	},
	// method to make each list save itself to session:
	persist_and_call_back: function(callback) {
	  var num_lists = this.list_count();
	  this.lists.each(function(list) {
	    list._add_list_to_session();
	    list._persist_contents(function() {
           if ((num_lists -=1) == 0) {
             callback(); // after the last list is persisted, callback
           }
	    });
	  });
	}
});