--- ../../racktables-prod/inc/interface.php	2013-07-17 13:29:48.021322333 +0200
+++ ./interface.php	2013-08-01 08:19:32.433190996 +0200
@@ -912,14 +912,18 @@
 		highlightObject ($rackData, $hl_obj_id);
 	$prev_id = getPrevIDforRack ($rackData['row_id'], $rack_id);
 	$next_id = getNextIDforRack ($rackData['row_id'], $rack_id);
-	echo "<center><table border=0><tr valign=middle>";
-	echo '<td><h2>' . mkA ($rackData['row_name'], 'row', $rackData['row_id']) . ' :</h2></td>';
+	echo "<center>";
+	$trail = getLocationTrail($rackData['location_id']);
+	if(!empty($trail))
+		echo "<h2>" . $trail   . " :</h2>";
+	echo "<h2>" .  mkA ($rackData['row_name'], 'row', $rackData['row_id']) . " :</h2><h2>";
 	if ($prev_id != NULL)
-		echo '<td>' . mkA (getImageHREF ('prev', 'previous rack'), 'rack', $prev_id) . '</td>';
-	echo '<td><h2>' . mkA ($rackData['name'], 'rack', $rackData['id']) . '</h2></td>';
+		echo mkA (getImageHREF ('prev', 'previous rack'), 'rack', $prev_id);
+	echo mkA ($rackData['name'], 'rack', $rackData['id']);
 	if ($next_id != NULL)
-		echo '<td>' . mkA (getImageHREF ('next', 'next rack'), 'rack', $next_id) . '</td>';
-	echo "</h2></td></tr></table>\n";
+		echo mkA (getImageHREF ('next', 'next rack'), 'rack', $next_id);
+	echo "</h2>";
+	
 	echo "<table class=rack border=0 cellspacing=0 cellpadding=1>\n";
 	echo "<tr><th width='10%'>&nbsp;</th><th width='20%'>Front</th>";
 	echo "<th width='50%'>Interior</th><th width='20%'>Back</th></tr>\n";
@@ -1592,30 +1596,15 @@
 function renderRackMultiSelect ($sname, $racks, $selected)
 {
 
-	$loc_tree = listCells('location');
-	$loc_name_tbl = array();
-	$loc_parents = array();
-	foreach($loc_tree as $loc)
-	{
-		$loc_parents[$loc['id']] = $loc['parent_id'];
-		$loc_name_tbl[$loc['id']] = $loc['name'];
-	}
-	
-
-
 	// Transform the given flat list into a list of groups, each representing a rack row.
 	$rdata = array();
 	foreach ($racks as $rack)
 	{
-		$name = "";
-		$id=$rack['location_id'];
-		while(isset($id))
-		{
-			$name = $loc_name_tbl[$id] . " / " . $name;
-			$id = $loc_parents[$id];
-		}
-
-		$row_name = $name . $rack['row_name'];
+		$trail = getLocationTrail($rack['location_id'],false);
+		if(!empty($trail))
+			$row_name = $trail . " : "  . $rack['row_name'];
+		else
+			$row_name =  $rack['row_name'];
 		$rdata[$row_name][$rack['id']] = $rack['name'];
 	}
 	echo "<select name=${sname} multiple size=" . getConfigVar ('MAXSELSIZE') . " onchange='getElementsByName(\"updateObjectAllocation\")[0].submit()'>\n";
@@ -6269,6 +6264,22 @@
 		$item .= $ancor_tail;
 		$item .= "'>" . $title['name'] . "</a>";
 		$items[] = $item;
+
+		//location bread crumbs insert for Rows and Racks
+		if($no == "row")
+		{
+			//print_r($title);
+			$trail = getLocationTrail($title['params']['location_id']);
+			if(!empty($trail))
+				$items[] = $trail;
+		}
+		
+		if($no == "location")
+		{
+			//we overwrite the bread crumb for current location with whole path
+			$items[count($items)-1] = getLocationTrail($title['params']['location_id']);
+		}
+
 	}
 	// Search form.
 	echo "<div class='searchbox' style='float:right'>";
@@ -6399,14 +6410,14 @@
 			return array
 			(
 				'name' => $rack['row_name'],
-				'params' => array ('row_id' => $rack['row_id'])
+				'params' => array ('row_id' => $rack['row_id'], 'location_id' => $rack['location_id'])
 			);
 		case 'row':
 			$row_info = getRowInfo (assertUIntArg ('row_id'));
 			return array
 			(
 				'name' => $row_info['name'],
-				'params' => array ('row_id' => $row_info['id'])
+				'params' => array ('row_id' => $row_info['id'], 'location_id' => $row_info['location_id'])
 			);
 		default:
 			break;
