function show(id)
{
	//document.getElementById(id).className = "equipment fullopacity onmouseover";
	//document.getElementById("d" + id).className = "detaillink detailonmouseover";
}

function hide(id)
{
	if (document.getElementById(id).parentNode == document.getElementById("equipment_selected")) {
		//document.getElementById(id).className = "equipment fullopacity onmouseout";
	} else {
		//document.getElementById(id).className = "equipment halfopacity onmouseout";
	}
	//document.getElementById("d" + id).className = "detaillink detailonmouseout";
}

function showDetailLink(id)
{
	//show(id);
	//document.getElementById(id).className = "equipment fullopacity onmouseover equipmentdetailshow";
	//document.getElementById("d" + id).className = "detaillink detailonmouseout detailshow";
}

/**
 * RemoveItem with given id from the configuration:
 *
 * If item is present:
 * - Remove it
 * - Remove dependent items
 * - Remove items in the same set
 */
function removeItem(id, bike)
{
	var elem = document.getElementById(id);

	if (elem) {
		if (elem.parentNode == document.getElementById("equipment_selected")) {
			if (items_right < items_limit) {
				document.getElementById("optional2").appendChild(elem.cloneNode(true));
				items_right = items_right + 1;
			}
			else {
				document.getElementById("optional").appendChild(elem.cloneNode(true));
				items_left = items_left + 1;
			}
			document.getElementById("equipment_selected").removeChild(elem);
			displayServer.removeImage("/_abb/jango/images/"+bike+"/"+id+".png");

			if (document.getElementById("t"+id)) {
				document.getElementById("t"+id).style.display="none";
			}

			if (id == 131) {
				removeItem(132, bike); // requirement
			}
			else if (id == 134) {
				removeItem(269, bike); // requirement
			}
			else if (id == 135) {
				removeItem(303, bike); // requirement
			}
			else if (id == 137) {
				removeItem(138, bike); // requirement
				removeItem(267, bike); // requirement
				removeItem(268, bike); // requirement
			}
			else if (id == 138) {
				removeItem(269, bike); // requirement
			}
			else if (id == 143) {
				removeItem(268, bike); // requirement
			}
			else if (id == 140) {
				removeItem(141, bike); // set (140, 141)
			}
			else if (id == 141) {
				removeItem(140, bike); // set (140, 141)
			}

			else if (id == 130) {
				removeItem(150, bike); // set (130, 150, 151, 152, 301, 302)
				removeItem(151, bike); // set (130, 150, 151, 152, 301, 302)
				removeItem(152, bike); // set (130, 150, 151, 152, 301, 302)
			}
			else if (id == 150) {
				removeItem(130, bike); // set (130, 150, 151, 152, 301, 302)
				removeItem(151, bike); // set (130, 150, 151, 152, 301, 302)
				removeItem(152, bike); // set (130, 150, 151, 152, 301, 302)
			}
			else if (id == 151) {
				removeItem(130, bike); // set (130, 150, 151, 152, 301, 302)
				removeItem(150, bike); // set (130, 150, 151, 152, 301, 302)
				removeItem(152, bike); // set (130, 150, 151, 152, 301, 302)
			}
			else if (id == 152) {
				removeItem(130, bike); // set (130, 150, 151, 152, 301, 302)
				removeItem(151, bike); // set (130, 150, 151, 152, 301, 302)
				removeItem(150, bike); // set (130, 150, 151, 152, 301, 302)
			}
		}
	}
}

/**
 * AddItem with given id to the configuration:
 *
 * If item exists (on the left side):
 * - Add it
 * - Remove incompatible items
 */
function addItem(id, bike, depth)
{
	var elem = document.getElementById(id);

	if (elem) {
		if (document.getElementById(id).parentNode != document.getElementById("equipment_selected")) {

			document.getElementById("equipment_selected").appendChild(document.getElementById(id).cloneNode(true));
			if (elem.parentNode == document.getElementById("optional")) {
				document.getElementById("optional").removeChild(elem);
				items_left = items_left - 1;
			}
			else {
				document.getElementById("optional2").removeChild(elem);
				items_right = items_right - 1;
			}

			if (document.getElementById("t"+id)) {
				document.getElementById("t"+id).style.display="none";
			}

			displayServer.addImageAtDepth("/_abb/jango/images/"+bike+"/"+id+".png", depth, "/_abb/jango/thumbs/"+id+".png");

			if (document.getElementById("t"+id)) {
				document.getElementById("t"+id).style.display="none";
			}

			if (id == 122) {
				removeItem(138, bike); // same port (back-light)
				removeItem(148, bike); // same port (back-light)
			}
			else if (id == 124) {
				removeItem(265, bike);
			}
			else if (id == 126) {
				removeItem(130, bike); // same port (back-light)
				removeItem(266, bike); // same port
			}
			else if (id == 127) {
				removeItem(131, bike); // same port (front-light)
				removeItem(142, bike); // same port?
				removeItem(135, bike); // same port?
			}
			else if (id == 130) {
				removeItem(126, bike); // same port (back-light)
				removeItem(136, bike); // same port (back-light)
				removeItem(143, bike); // same port (back-light)
				removeItem(148, bike); // same port (back-light)
			}
			else if (id == 131) {
				removeItem(127, bike); // same port (front-light)
				removeItem(265, bike);
			}
			else if (id == 132) {
				removeItem(264, bike);
			}
			else if (id == 134) {
				removeItem(135, bike); // same port (front-rack)
				removeItem(265, bike);
			}
			else if (id == 135) {
				removeItem(127, bike); // same port?
				removeItem(134, bike); // same port (front-rack)
				removeItem(142, bike); // same port ?
			}
			else if (id == 136) {
				removeItem(130, bike); // same port (back-light)
				removeItem(137, bike); // same port (rear-rack)
				removeItem(138, bike); // similar port (rear-fender) ?
				removeItem(143, bike); // similar port (rear-fender) ?
				removeItem(148, bike); // same port (rear-rack)
			}
			else if (id == 137) {
				removeItem(136, bike); // same port (rear-rack)
				removeItem(148, bike); // same port (rear-rack)
				removeItem(143, bike); // similar port (rear-fender) ?
			//	removeItem(267, bike); // similar port
				removeItem(269, bike); // similar port
			}
			else if (id == 138) {
				removeItem(122, bike); // same port (back-light)
				removeItem(148, bike); // same port (rear-bag)
//				removeItem(136, bike); // ->follows from 137
//				removeItem(143, bike); // ->follows from 137
//				removeItem(148, bike); // ->follows from 137
			}
			else if (id == 140) {
				removeItem(142, bike); // same port (front-fender)
			}
			else if (id == 141) {
				removeItem(143, bike); // same port (rear-fender)
			}
			else if (id == 142) {
				removeItem(127, bike); // same port ?
				removeItem(135, bike); // same port ?
				removeItem(140, bike); // same port (front-fender)
			}
			else if (id == 143) {
				removeItem(130, bike); // same port ?
				removeItem(136, bike); // similar port (rear-rack) ?
				removeItem(137, bike); // similar port (rear-rack) ?
				removeItem(141, bike); // same port (rear-fender)
				//removeItem(138, bike);
				//removeItem(140, bike);
				removeItem(148, bike); // similar port (rear-rack) ?
				removeItem(267, bike); // similar port (rear-bag) ?
			}
			else if (id == 146) {
				removeItem(147, bike); // same port (pumps)
			}
			else if (id == 147) {
				removeItem(146, bike); // same port (pumps)
			}
			else if (id == 148) {
				removeItem(122, bike); // same port (back-light)
				removeItem(130, bike); // same port (back-light)
				removeItem(136, bike); // same port (rear-rack)
				removeItem(137, bike); // same port (rear-rack)
				removeItem(138, bike); // same port (rear-rack)
				removeItem(141, bike); // similar port (rear-fender) ?
				removeItem(143, bike); // similar port (rear-fender) ?
				removeItem(267, bike); // same port (rear-bag)
				removeItem(268, bike); // same port (rear-bag)
			}
			else if (id == 264) {
				removeItem(132, bike);
			}
			else if (id == 265) {
				removeItem(124, bike);
				removeItem(131, bike);
				removeItem(132, bike);
			}
			else if (id == 266) {
				removeItem(126, bike);
			}
			else if (id == 267) {
				removeItem(143, bike);
				removeItem(148, bike); // same port (rear-bag)
				removeItem(268, bike); // same port (rear-bag
			}
			else if (id == 268) {
				removeItem(148, bike); // same port (rear-bag)
	 			removeItem(267, bike); // same port (rear-bag)
			}
			else if (id == 269) {
				removeItem(137, bike); // similar port
			}
		}
	}
}

function aender(id, bike, depth)
{
	var elem = document.getElementById(id);
	if (elem) {

		document.getElementById('configdesc').innerHTML = 'Custom';

		if (document.getElementById(id).parentNode == document.getElementById("equipment_selected")) {

			// Remove item
			removeItem(id, bike);

		} else {

			// add Item, its requirements and set items
			addItem(id, bike, depth);

 			if (id == 138) {
				addItem(137, bike, 137); // requirement
			}
 			else if (id == 132) {
				addItem(131, bike, 131); // requirement
			}
 			else if (id == 267) {
				addItem(137, bike, 137); // requirement
			}
 			else if (id == 268) {
				addItem(137, bike, 137); // requirement
			}
 			else if (id == 269) {
				addItem(134, bike, 134); // requirement
			}
 			else if (id == 303) {
				addItem(135, bike, 135); // requirement
			}
			else if (id == 140) {
				addItem(141, bike, 141); // set (140, 141)
			}
			else if (id == 141) {
				addItem(140, bike, 140); // set (140, 141)
			}
			else if (id == 130) {
			/*
				addItem(150, bike, 150); // set (130, 150, 151, 152, 301, 302)
				addItem(151, bike, 151); // set (130, 150, 151, 152, 301, 302)
				addItem(152, bike, 152); // set (130, 150, 151, 152, 301, 302)
			*/
			}
			else if (id == 150) {
				addItem(151, bike, 151); // set (130, 150, 151, 152, 301, 302)
				addItem(152, bike, 152); // set (130, 150, 151, 152, 301, 302)
				//addItem(130, bike, 130); // set (130, 150, 151, 152, 301, 302)
			}
			else if (id == 151) {
				addItem(150, bike, 150); // set (130, 150, 151, 152, 301, 302)
				addItem(152, bike, 152); // set (130, 150, 151, 152, 301, 302)
				//addItem(130, bike, 130); // set (130, 150, 151, 152, 301, 302)
			}
			else if (id == 152) {
				addItem(150, bike, 150); // set (130, 150, 151, 152, 301, 302)
				addItem(151, bike, 151); // set (130, 150, 151, 152, 301, 302)
				//addItem(130, bike, 130); // set (130, 150, 151, 152, 301, 302)
			}
		}

		if (document.getElementById("e"+id)) {
			document.getElementById("e"+id).style.display="none";
		}
	}

	hide(id);
	balanceItems();
}

function balanceItems()
{
	var myitems = new Array();

	var pleft = document.getElementById("optional");
	var pright = document.getElementById("optional2");

	var i = 0;

	for (var j = 0; j < pleft.childNodes.length; j++) {
		elemsub = pleft.childNodes[j];
		if (elemsub.className == 'config') {
			myitems[i] = elemsub;
			i++;
			pleft.removeChild(elemsub);
		}
	}

	for (var j = 0; j < pright.childNodes.length; j++) {
		elemsub = pright.childNodes[j];
		if (elemsub.className == 'config') {
			myitems[i] = elemsub;
			i++;
			pright.removeChild(elemsub);
		}
	}

	//myitems.sort();

	for (var j = 0; j < myitems.length; j++) {
		if (j < (myitems.length / 2)) {
			pleft.appendChild(myitems[j]);
		}
		else {
			pright.appendChild(myitems[j]);
		}
	}

}