
var TOP_COUNT_MAX = 10;

function updateUserRankedList(list) {
						
	// make sure items jump to above blank items
	children = list.childNodes;
	tmpArr = [];
	for (i=0;i<children.length;i++) {
		if (children[i].id.substring(0,6) == 'blank_') {
			tmpArr.push(children[i]);
		}
	}
	for (i=0;i<tmpArr.length;i++) {
		$('userRankedListItems').removeChild(tmpArr[i]);
		$('userRankedListItems').appendChild(tmpArr[i]);
	}
	
	
	// only remove last item if over TOP_COUNT_MAX
	if (getChildCount(list) > TOP_COUNT_MAX) {
		element = $(getLastChild(list));
		
		$('userRankedListItems').removeChild(element);
		var options = Sortable.options('userRankedListItems');
		options.draggables.pop(element);
		d = options.droppables.pop(element);
		Droppables.remove(d);
		
		// only append if not blank
		if (element.id.substring(0,6) != 'blank_') {
			addItemToAvailableItems(element, 'extrasListItems')
		}
	}
	
	//alert(Sortable.sequence('top10ListItems'));
}

function addItemToAvailableItems(element, sortableId) {
	$(sortableId).appendChild(element);
	var options = Sortable.options(sortableId);
	
	// build options for the draggables
	var options_for_draggable = {
	  revert:      true,
	  scroll:      options.scroll,
	  scrollSpeed: options.scrollSpeed,
	  scrollSensitivity: options.scrollSensitivity,
	  delay:       options.delay,
	  ghosting:    options.ghosting,
	  constraint:  options.constraint,
	  handle:      options.handle,
	  
	  starteffect: function(element) {
					//Element.addClassName(element, 'itemMoving');
					element.setStyle({background:'#FBB',border:'1px solid #A26'});
				},
	  endeffect: function(element) {
					//Element.removeClassName(element, 'itemMoving');
					element.setStyle({background:'#FFF',border:'1px solid #ABB'});
				}};
	
	var handle = options.handle ? $(element).down('.'+options.handle,0) : element;    
	options.draggables.push(
		new Draggable(element, Object.extend(options_for_draggable, { handle: handle })));
	
	// build options for the droppables  
	var options_for_droppable = {
	  overlap:     options.overlap,
	  containment: options.containment,
	  tree:        options.tree,
	  hoverclass:  options.hoverclass,
	  onHover:     Sortable.onHover
	}
	
	Droppables.add(element,options_for_droppable);
	options.droppables.push(element); 
}


function getChildCount(obj) {
	CN = obj.childNodes; // get nodes

	return CN.length;
}

function getLastChild(obj) {
	CN = obj.childNodes; // get nodes

	return CN[CN.length-1].id;
}




function saveListOrder(frm) {
	frm.elements['sequence'].value = Sortable.sequence('userRankedListItems');
	
	//alert(Sortable.sequence('userRankedListItems'));
	
	return true;
}



function addNewItem(frm) {
	if (frm.elements['name'].value != '') {
		//alert(frm.elements['name'].value);
		
		var url = '/actions/addItem.php?item_type_id=' + encodeURIComponent(frm.elements['item_type_id'].value) +'&name=' + encodeURIComponent(frm.elements['name'].value);
		
		new Ajax.Request(url, {
			method: 'get',
			onSuccess: function(transport) {
					//alert(transport.responseText);
					
					tmpStr = transport.responseText;
					tmpArr = tmpStr.split("||");
					
					if ($('item_'+ tmpArr[1]) && $('item_'+ tmpArr[1]).descendantOf('extrasListItems')) {
						element = $('item_'+ tmpArr[1]);
						
						$('extrasListItems').removeChild(element);
						var options = Sortable.options('extrasListItems');
						options.draggables.pop(element);
						d = options.droppables.pop(element);
						Droppables.remove(d);
						
					} else {
						element = document.createElement('li');
						element.id = 'item_'+ tmpArr[1];
						element.appendChild(document.createTextNode(tmpArr[0])); 
					}
					
					addItemToAvailableItems(element, 'addedListItems');
				}
			});

		
		frm.elements['name'].value = '';
	}
	
	return false;
}


function swapExistingItem(text, li) {
	//alert (li.id +': '+ text);
	
	if ($('item_'+ li.id) && $('item_'+ li.id).descendantOf('extrasListItems')) {
		element = $('item_'+ li.id);
		
		$('extrasListItems').removeChild(element);
		var options = Sortable.options('extrasListItems');
		options.draggables.pop(element);
		d = options.droppables.pop(element);
		Droppables.remove(d);
		
		addItemToAvailableItems(element, 'addedListItems');
	
	
		document.forms['frmAddNewItem'].elements['name'].value = '';
	}
}
