// Focus item script
function startfocus(elementId)
{
	var focusItem = document.getElementById(elementId);
	if (focusItem)
		focusItem.focus();
}

// Cancel any open edits
function closeitemforms()
{
	var oldCancel = document.getElementById('selCancel');
	if (oldCancel)
		oldCancel.click();
	var moveCancel = document.getElementById('cmibutton');
	if (moveCancel)
		moveCancel.click();
}

// Header search bar scripts
function searchfocus()
{
	var jQueryRow = $("input#navsearch");
	if (jQueryRow.val() == "Search")
		jQueryRow.val("");
}
function searchblur()
{
	var jQueryRow = $("input#navsearch");
	if (jQueryRow.val() == "")
		jQueryRow.val("Search");
}

// Common functions for adding link controls
function getItemControls(itemName)
{
	var ctrlStr = '<a class="controls" id="eilink" href=# onclick="edititem(' + "'" + itemName + "'" + ');return false;">[Edit]</a> ';
	if (itemName != 'Item0')
	{
		ctrlStr += '<a class="controls" id="dilink" href=# ';
		ctrlStr += 'onclick="deleteitem(' + "'" + itemName + "'" + ');return false;">[Delete]</a> ';
		ctrlStr += '<a class="controls" id="milink" href=# onclick="moveitem(' + "'" + itemName + "'" + ');return false;">[Move]</a>';
	}
	return ctrlStr;
}

function getBoxControls()
{
	var boxDetailString = $("div#boxdetails").html();
	var ctrlStr = '<span id="boxcontrols"><a class="controls" href=# onclick="renamebox();return false;">[Rename]</a> ';
	ctrlStr += '<a class="controls" href=# onclick="deletebox();return false;">[Delete]</a> ';
	ctrlStr += '<a class="controls" href=# onclick="movebox();return false;">[Move]</a> ';
	ctrlStr += '<a class="controls" href="labels.php">[Print Label]</a> ';
	if (boxDetailString.length)
		ctrlStr += '<a class="controls" href=# onclick="editboxdesc();return false;">[Edit Details]</a>';
	else
		ctrlStr += '<a class="controls" href=# onclick="editboxdesc();return false;">[Add Details]</a>';
	ctrlStr += '</span>';
	return ctrlStr;	
}

function removeGroupControls()
{
	jQuery('a#deletegrouplink').remove();
	jQuery('a#renamegrouplink').remove();
	jQuery('a#newgrouplink').remove();	
}

// Boxes scripts
var itemStateArray = Array();
var wasImageClick = false;

function imageclick()
{
	wasImageClick = true;
}

function itemhandler(thisItem, description)
{
	var jQueryRow = $(thisItem);
	var itemName = jQueryRow.attr("id");
	if (!jQueryRow.find("input").length && !wasImageClick)
	{
		if (itemName != "Item0" && itemStateArray[itemName])
			collapseitem(itemName);
		else
			expanditem(itemName, description);
		itemStateArray[itemName] = !itemStateArray[itemName];
	}
	wasImageClick = false;
}

function deleteitem(itemName)
{
	if (itemName != 'Item0')
	{
		// Cancel any open edits
		closeitemforms();
		
		var jQueryRow = $("tr#" + itemName);
		var itemId = itemName.substr(4);
		jQueryRow.after('<input type="hidden" name="itemiddelete" value="' + itemId + '">');
		jQuery('form#itemform').submit();
		jQueryRow.remove();
	}
}

function canceledit(itemName)
{
	document.itemform.reset();
	var jQueryRow = $("tr#" + itemName);
	var itemTextName = $("input#itemname").val();
	var itemQuantity = (itemName != 'Item0') ? $("input#itemquantity").val() : "";
	var itemValue = (itemName != 'Item0') ? $("input#itemvalue").val() : "";
	var itemDesc = jQueryRow.find('textarea').html();
	var nameColumn = jQueryRow.find("td:nth-child(1)");
	var quantityColumn = jQueryRow.find("td:nth-child(3)");
	var valueColumn = jQueryRow.find("td:nth-child(4)");
	var trueItemName = (itemName != 'Item0') ? itemTextName : '<img src="images/add_item_ico.png"/> <b>Add Item</b>';
	itemDesc.replace("/\r\n|\n|\r/", "<br>");
	
	nameColumn.html(trueItemName + "<br>" + itemDesc + "<br>" + getItemControls(itemName));
	quantityColumn.html(itemQuantity);
	valueColumn.html(itemValue);
	
	jQueryRow.addClass("itemrowglow");
	
	nameColumn.attr("align", "");
	nameColumn.attr("valign", "");
	quantityColumn.attr("align", "");
	quantityColumn.attr("valign", "");
	valueColumn.attr("align", "");
	valueColumn.attr("valign", "");
	
	if (itemName == 'Item0')
		collapseitem(itemName);
	if (typeof(event) != "undefined")
		event.cancelBubble = true;
}

function expanditem(itemName, descript)
{
	if (itemName != 'Item0')
	{
		var jQueryRow = $("tr#" + itemName);
		var nameColumn = jQueryRow.find("td:nth-child(1)");
		var nameColumnHtml = nameColumn.html() + "<br>" + descript + "<br>" + getItemControls(itemName);
		nameColumn.html(nameColumnHtml);
		
		var imgColumn = jQueryRow.find("td:nth-child(2)");
		var imageItem = imgColumn.find("img");
		imageItem.width(imageItem.width()*2);
	}
	else
	{
		edititem(itemName);
	}
}

function collapseitem(itemName)
{
	var jQueryRow = $("tr#" + itemName);
	var nameColumn = jQueryRow.find("td:nth-child(1)");
	var splitName = nameColumn.html().split("<br>");	
	if (splitName.length <= 1)
		splitName = nameColumn.html().split("<BR>");
	nameColumn.html(splitName[0]);
	
	var imgColumn = jQueryRow.find("td:nth-child(2)");
	var imageItem = imgColumn.find("img");
	imageItem.width(imageItem.width()/2);
}

function edititem(itemName)
{
	// Cancel any open edits
	closeitemforms();

	// Create the new row for the form, and remove the existing row
	var itemId = itemName.substr(4);
	var jQueryRow = $("tr#" + itemName);
	var nameColumn = jQueryRow.find("td:nth-child(1)");
	var quantityColumn = jQueryRow.find("td:nth-child(3)");
	var valueColumn = jQueryRow.find("td:nth-child(4)");
	
	// Parse out the discription name
	nameColumn.find("a").remove();
	var splitName = nameColumn.html().split("<br>");
	if (splitName.length <= 1)
		splitName = nameColumn.html().split("<BR>");
	
	// The values to stick into the form
	var itemField = (itemName != 'Item0') ? "updateitemname" : "newitemname";
	var itemVal = (itemName != 'Item0') ? splitName[0] : "";
	var buttonName = (itemName != 'Item0') ? "Save" : "Add Item";
	var itemDescript = (itemName != 'Item0') ? splitName[1] : "";
	if (itemName != 'Item0')
		for (var i = 2; i < splitName.length - 1; i++)
			itemDescript += "\n" + splitName[i];
	
	// Create the first form column
	var nameHtml = '<label for="itemname"><b>Item Name</b></label><br>';
	nameHtml += '<input id="itemname" maxlength=32 tabindex=1 name="' + itemField + '" type="text" value="' + itemVal + '"/><br>';
	nameHtml += '<label for="imagefile"><b>Image</b></label><br>';
	nameHtml += '<input id="imagefile" name="itempicture" type="file"><br>';
	nameHtml += '<label for="description"><b>Description</b></label><br>';
	nameHtml += '<textarea name="itemdesc" cols="33" rows="5" tabindex=4 id="itemdesc">' + itemDescript + '</textarea><br>';
	if (itemName != 'Item0')
		nameHtml += '<input type="hidden" name="itemidupdate" value="' + itemId + '">';
	nameHtml += '<input type="submit" name="submititemfields" tabindex=5 value="' + buttonName + '"/>';
	nameHtml += '<input type="button" id="selCancel" tabindex=6 value="Cancel" ';
	nameHtml += 'onclick="canceledit(' + "'" + itemName + "'" + ')"/>';
	nameColumn.attr("align", "left");
	nameColumn.attr("valign", "top");
	nameColumn.html(nameHtml);
	
	// Create the second form column
	var quantityVal = (itemName != 'Item0') ? quantityColumn.html() : "1";
	var quantityHtml = '<label for="itemquantity"><b>Quantity</b></label><br>';
	quantityHtml += '<input name="itemquantity" type="text" tabindex=2 maxlength=6 id="itemquantity" ';
	quantityHtml += 'size="3" value="' + quantityVal + '"/>';
	quantityColumn.attr("align", "left");
	quantityColumn.attr("valign", "top");
	quantityColumn.html(quantityHtml);
	
	// Create the third form column
	var valueVal = (itemName != 'Item0') ? valueColumn.html() : "$0.00";
	var valueHtml = '<label for="itemvalue"><b>Value</b></label><br>';
	valueHtml += '<input name="itemvalue" type="text" tabindex=3 id="itemvalue" maxlength=17 '
	valueHtml += 'size="3" value="' + valueVal + '"/>';
	valueColumn.attr("align", "left");
	valueColumn.attr("valign", "top");
	valueColumn.html(valueHtml);
	
	// Take away the clickable nature of the background, interferes with buttons
	jQueryRow.removeClass("itemrowglow");
	
	// Set the name as the field to start the mouse in
	startfocus('itemname');
}

function skiptutorial()
{
	var formStr = '<form id="skiptutorialform" action="boxes_process.php" method="post">';
	formStr += '<input name="skiptutorial" type="hidden" value="1"/>';
	formStr += '</form>';
	jQuery('div#tutorial').after(formStr);
	jQuery('form#skiptutorialform').submit();
}

function selbox(boxName)
{
	var boxId = boxName.substr(3);
	var formStr = '<form id="boxselectform" action="boxes_process.php" method="post">';
	formStr += '<input name="boxid" type="hidden" value="' + boxId + '"/>';
	formStr += '</form>';
	jQuery('div#leftcolumn').after(formStr);
	jQuery('form#boxselectform').submit();
}

function canceladdbox()
{
	var listItem = jQuery('li#addboxli');
	listItem.html('<img src="images/add_item_ico.png"/> <b>Add Box</b>');
	listItem.addClass("boxLIglow");
	if (typeof(event) != "undefined")
		event.cancelBubble = true;
}

function addbox()
{
	var listItem = jQuery('li#addboxli');
	if (!listItem.find("input").length)
	{
		var formStr = '<input id="leftboxcreate" name="newboxname" maxlength="32" type="text"/>';
		formStr += '<input type="submit" name="submitnewbox" value="Add Box"/>';
		formStr += '<input type="button" name="cancelnewbox" value="Cancel" onclick="canceladdbox()"/>';
		listItem.html(formStr);
		listItem.removeClass("boxLIglow");
		startfocus('boxrename');
	}
}

function canceldeletegroup()
{
	jQuery('select#movedeletedgroup').remove();
	jQuery('input#cdgbutton').remove();
	jQuery('input#cdgsubmit').remove();
	jQuery('span#groupdesctext').remove();
	
	var selectGroup = jQuery('select#groupid');
	var linkStr = ' <a id="renamegrouplink" class="controls" href=# onclick="renamegroup();return false;">[Rename]</a> ';
	linkStr += '<a id="deletegrouplink" class="controls" href=# onclick="deletegroup();return false;">[Delete]</a> ';
	linkStr += '<a id="newgrouplink" class="controls" href=# onclick="newgroup();return false;">[New]</a>';
	selectGroup.attr("disabled", "");
	selectGroup.after(linkStr);	
}

function deletegroup()
{
	var selectGroup = jQuery('select#groupid');
	var selectedOption = selectGroup.find("option:selected");
	if (selectedOption.val() != 0)
	{
		var clonedGroup = selectGroup.clone();
		clonedGroup.attr("name", "movedeletedgroup");
		clonedGroup.attr("id", "movedeletedgroup");
		clonedGroup.attr("onchange", "");
		clonedGroup.find("option:selected").remove();
		
		var defaultAction = clonedGroup.find("option:nth-child(1)");
		defaultAction.html("Delete All");
		defaultAction.attr("selected", "selected");
		
		selectGroup.after('<input id="cdgbutton" type="button" value="Cancel" onclick="canceldeletegroup()"/>');
		selectGroup.after('<input id="cdgsubmit" name="confirmdeletegroup" type="submit" value="Delete"/> ');
		selectGroup.after(clonedGroup);
		selectGroup.after('<span id="groupdesctext">Move Boxes Into<br></span>');
		selectGroup.attr("disabled", "disabled");
		
		removeGroupControls();
	}
}

function cancelrenamegroup()
{
	jQuery('input#grouprename').remove();
	jQuery('input#rgbutton').remove();
	jQuery('input#rgsubmit').remove();
	jQuery('span#groupdesctext').remove();
	
	var selectGroup = jQuery('select#groupid');
	var linkStr = ' <a id="renamegrouplink" class="controls" href=# onclick="renamegroup();return false;">[Rename]</a> ';
	linkStr += '<a id="deletegrouplink" class="controls" href=# onclick="deletegroup();return false;">[Delete]</a> ';
	linkStr += '<a id="newgrouplink" class="controls" href=# onclick="newgroup();return false;">[New]</a>';
	selectGroup.attr("disabled", "");
	selectGroup.after(linkStr);	
}

function renamegroup()
{
	var selectGroup = jQuery('select#groupid');
	var selectedOption = selectGroup.find("option:selected");
	if (selectedOption.val() != 0)
	{
		var nameStr = selectedOption.html();
		var formStr = '<input id="grouprename" name="grouprename" type="text" maxlength="32" value="' + nameStr + '"/>';
		formStr += '<input id="rgsubmit" type="submit" value="Save"/>';
		formStr += '<input id="rgbutton" type="button" value="Cancel" onclick="cancelrenamegroup()"/> ';
		selectGroup.after(formStr);
		selectGroup.after('<span id="groupdesctext">Rename To<br></span>');
		selectGroup.attr("disabled", "disabled");
		removeGroupControls();
		startfocus('grouprename');
	}
}

function cancelnewgroup()
{
	jQuery('input#newgroupname').remove();
	jQuery('input#ngbutton').remove();
	jQuery('input#ngsubmit').remove();
	jQuery('span#groupdesctext').remove();
	
	var selectGroup = jQuery('select#groupid');
	var linkStr = ' <a id="renamegrouplink" class="controls" href=# onclick="renamegroup();return false;">[Rename]</a> ';
	linkStr += '<a id="deletegrouplink" class="controls" href=# onclick="deletegroup();return false;">[Delete]</a> ';
	linkStr += '<a id="newgrouplink" class="controls" href=# onclick="newgroup();return false;">[New]</a>';
	selectGroup.attr("disabled", "");
	selectGroup.after(linkStr);
}

function newgroup()
{
	var selectGroup = jQuery('select#groupid');
	var formStr = '<input id="newgroupname" name="newgroupname" type="text" maxlength="32" value=""/>';
	formStr += '<input id="ngsubmit" type="submit" value="Save"/>';
	formStr += '<input id="ngbutton" type="button" value="Cancel" onclick="cancelnewgroup()"/> ';
	selectGroup.after(formStr);
	selectGroup.after('<span id="groupdesctext">Create New<br></span>');
	selectGroup.attr("disabled", "disabled");
	removeGroupControls();
	startfocus('newgroupname');
}

function cancelmoveitem(itemName)
{
	var addLoc = jQuery('span#moveitemdesc');
	addLoc.after(getItemControls(itemName));
	
	jQuery('select#moveitembox').remove();
	jQuery('input#cmibutton').remove();
	jQuery('input#cmisubmit').remove();
	jQuery('input#miihidden').remove();
	jQuery('span#moveitemdesc').remove();
	
	if (typeof(event) != "undefined")
		event.cancelBubble = true;
}

function moveitem(itemName)
{
	// Cancel any open edits
	closeitemforms();
	
	var itemId = itemName.substr(4);
	var boxElement = jQuery('li.boxLI');
	var elementCount = boxElement.length;
	var selectHtml = '<select name="moveitembox" id="moveitembox" class="text" type="text">';
	for (var i = 1; i < elementCount; i++)
	{
		boxElement = boxElement.next();
		var idStr = boxElement.attr("id");
		var boxId = idStr.substr(3);
		var nameStr = boxElement.html();
		selectHtml += '<option value="' + boxId + '">' + nameStr + '</option>';
	}
	selectHtml += '</select>';
	
	var addLoc = jQuery('tr#' + itemName + ' a#milink');
	addLoc.after(' <input id="cmibutton" type="button" value="Cancel" onclick="cancelmoveitem(' + "'" + itemName + "'" + ')"/>');
	addLoc.after(' <input id="cmisubmit" name="confirmmoveitem" type="submit" value="Move"/>');
	addLoc.after(' <input id="miihidden" name="moveitemid" type="hidden" value="' + itemId + '"/>');
	addLoc.after(selectHtml);
	addLoc.after('<span id="moveitemdesc">Move Into </span>');
	
	jQuery('tr#' + itemName + ' a#milink').remove();
	jQuery('tr#' + itemName + ' a#eilink').remove();
	jQuery('tr#' + itemName + ' a#dilink').remove();
	
	if (typeof(event) != "undefined")
		event.cancelBubble = true;
}

function canceldeletebox()
{
	jQuery('span#boxformsection').remove();
	var boxName = jQuery('b#boxname');
	boxName.after(getBoxControls());
}

function deletebox()
{
	var boxElement = jQuery('li.boxLI');
	var elementCount = boxElement.length;
	var selectHtml = '<select name="movedeletedbox" id="movedeletedbox" class="text" type="text">';
	selectHtml += '<option value="0">Delete All</option>';
	for (var i = 1; i < elementCount; i++)
	{
		boxElement = boxElement.next();
		var idStr = boxElement.attr("id");
		var boxId = idStr.substr(3);
		var nameStr = boxElement.html();
		selectHtml += '<option value="' + boxId + '">' + nameStr + '</option>';
	}
	selectHtml += '</select>';
	
	var boxName = jQuery('b#boxname');
	var formStr = '<span id="boxformsection"><br>Move Items Into<br>' + selectHtml;
	formStr += '<br><input name="confirmdeletebox" type="submit" value="Delete"/>';
	formStr += '<input type="button" value="Cancel" onclick="canceldeletebox()"/></span>';
	boxName.after(formStr);
	
	$("span#boxcontrols").remove();
}

function cancelmovebox()
{
	jQuery('span#boxmovedetails').remove();
	jQuery('span#boxformsection').remove();
	jQuery('select#moveboxgroup').remove();
	var boxName = jQuery('b#boxname');
	boxName.after(getBoxControls());
}

function movebox()
{
	var selectGroup = jQuery('select#groupid').clone();
	selectGroup.attr("name", "moveboxgroup");
	selectGroup.attr("id", "moveboxgroup");
	selectGroup.attr("onchange", "");
	selectGroup.attr("disabled", "");
	selectGroup.find("option:nth-child(1)").remove();
	selectGroup.find("option:selected").remove();

	var boxName = jQuery('b#boxname');
	var formStr = '<span id="boxformsection"><br><input name="confirmmovebox" type="submit" value="Move"/>';
	formStr += '<input type="button" value="Cancel" onclick="cancelmovebox()"/></span>';
	boxName.after(formStr);
	boxName.after(selectGroup);
	boxName.after('<span id="boxmovedetails"><br>Move Into<br></span>');
	
	$("span#boxcontrols").remove();
}

function cancelrenamebox()
{
	jQuery('span#boxformsection').remove();
	var boxName = jQuery('b#boxname');
	boxName.after(getBoxControls());
}

function renamebox()
{
	var boxName = jQuery('b#boxname');
	var formStr = '<span id="boxformsection"><br>Rename To<br>';
	formStr += '<input name="boxrename" type="text" maxlength="32" value="' + boxName.html() + '"/><br>';
	formStr += '<input type="submit" value="Save"/>';
	formStr += '<input type="button" onclick="cancelrenamebox()" value="Cancel"/>';
	formStr += '</span>';
	boxName.after(formStr);
	startfocus('boxrename');	
	$("span#boxcontrols").remove();
}

function canceleditboxdesc()
{
	document.boxform.reset();
	var detailStr = jQuery('input#boxdetailsinput').val();
	jQuery('span#boxformsection').remove();
	jQuery('div#boxdetails').html(detailStr);
	var boxName = jQuery('b#boxname');
	boxName.after(getBoxControls());	
}

function editboxdesc()
{
	var boxDetails = jQuery('div#boxdetails');
	var formStr = '<span id="boxformsection">';
	formStr += '<input id="boxdetailsinput" name="boxdetails" type="text" maxlength="255" value="' + boxDetails.html() + '"/><br>';
	formStr += '<input type="submit" value="Save"/>';
	formStr += '<input type="button" onclick="canceleditboxdesc()" value="Cancel"/>';
	formStr += '</span>';
	boxDetails.html(formStr);
	startfocus('boxdetails');
	$("span#boxcontrols").remove();
}