//Make something draggable
function MakeDraggable(request)
{
	var arr=document.getElementsByTagName('div');
	
	for(i=0;i<arr.length;i++)
	{
		var dv=arr[i];
		try
		{
			if(dv.id.indexOf('choco_')!=-1)
			{
				var u = new Draggable(dv.id,
					{
						ghosting:true,
						scroll:window,
						handle:dv.id,
						revert:true
					}
				);
			}
		}
		catch(e)
		{
			alert(e.message);
		}
		Element.hide('indicator');
	}
}

//Update Chocolates
function UpdateChocolate()
{
	var u = new Ajax.Updater('chocolate', _chocolate,
		{
			onLoading:function(request)
			{
				Element.show('indicator');
			},
			onComplete: MakeDraggable
		}
	);

	return false;
}

//Update sort
function UpdateSort(key, val)
{
  
	var u = new Ajax.Updater('sort_choco', _chocolate_sort + "?key=" + key + "&val=" + val,
		{
			onLoading:function(request)
			{
				Element.show('indicator');
			},
			onComplete: function()
			{
				UpdateChocolate();
			}
		}
	);
	
	return false;
}

function SortSelect(sel, key)
{
	var val=sel.options[sel.selectedIndex].value;
	
	return UpdateSort(key, val);
}

//Update Capacity
function UpdateBoxCapacity()
{
	var u = new Ajax.Updater('box_capacity', _chocolate_box_capacity,
		{
		}
	);
}

//Update item list
function UpdateItems()
{
	
	UpdateBoxCapacity();
	
	var u = new Ajax.Updater('selected_items', _chocolate_box_items,
		{
			onComplete:function(request)
			{
				Element.hide('indicator');
			}
		}
	);
	
	return true;
	
}

//Chocolate Dropped...
function ItemDropped(element)
{
	var id = element.id;
	
	var u = new Ajax.Updater('box', _chocolate_box + "?act=drop&id=" + id.substring(6),
		{
			onLoading:function(request)
			{
				Element.show('indicator');
			},
			onComplete:function()
			{
				UpdateItems();
			}
		}
	);
	
	return false;
}

//Remove item from box
function RemoveItem(id)
{
	var u = new Ajax.Updater('box', _chocolate_box + "?act=remove&id=" + id,
		{
			onLoading:function(request)
			{
				Element.show('indicator');
			},
			onComplete: UpdateItems
		}
	);
	
	return false; 
}

//Update Box
function UpdateBox()
{
	var u = new Ajax.Updater('box', _chocolate_box,
	  	{
		  	onComplete: MakeDraggable		
		}
	);
}

//Upgrade to 40 pieces
function IncreaseBox()
{
	var u = new Ajax.Updater('box', _chocolate_box + "?act=upgrade",
		{
			onLoading:function(request)
			{
				Element.show('indicator');
				document.getElementById('boxPriceDiv').innerHTML = '$75.00';
			},
			onComplete: UpdateItems
		}
	);
}

//Downgrade to 20 pieces
function DecreaseBox()
{
	var u = new Ajax.Updater('box', _chocolate_box + "?act=downgrade",
		{
			onLoading:function(request)
			{
				Element.show('indicator');
				document.getElementById('boxPriceDiv').innerHTML = '$40.00';
			},
			onComplete: UpdateItems
		}
	);
}

function Redirect(act)
{
	var elem=document.getElementById('prod_name');
	
	if(elem.value.length===0)
	{
		alert('Please give your custom box a name');
		return false;
	}
	
	var name=escape(elem.value);
	
	var u = new Ajax.Request("/build_box/finish.php?act=" + act + "&name=" + name,
		{
			onLoading:function(request)
			{
				Element.show('indicator');
			},
			onFail: function(request)
			{
				alert("AJAX ERROR: COULD NOT CONTINUE, PLEASE TRY AGAIN!");
			},
			onSuccess: function(request)
			{
				if(request.responseText != "NO")
				{
					Element.show('indicator');
					document.location.href = request.responseText;
				}
			}
		}
	);
	return true;
}

function UpdateDetails(e, id, prod)
{
	var IE5=(document.all && document.all.item);
	var elem=document.getElementById('toolTip');
	
	if(elem.style.left>0)
	{
		return false;
	}
		
	if (IE5)
	{
		mouseX=55+e.clientX-event.offsetX+document.documentElement.scrollLeft;
		mouseY=e.clientY-event.offsetY+document.documentElement.scrollTop;
	}
	else
	{
		mouseX=e.pageX+55-e.layerX;
		mouseY=e.pageY-e.layerY;
	}
	
	elem.style.left=mouseX+"px";
	elem.style.top=mouseY+"px";
	
	var u = new Ajax.Updater('toolTip', _chocolate_details + "?id=" + id,
		{
			onLoading:function(request)
			{
				elem.innerHTML = "Loading...";
				Element.hide("toolTip");
			},
			onComplete:function(request)
			{
				Element.show("toolTip");
			}
		}
	);
	
	return false;
}

function HideDetails(elem)
{
	Element.hide(elem);
	return false;
}

