<%--
 * Copyright by Intland Software
 *
 * All rights reserved.
 *
 * This software is the confidential and proprietary information
 * of Intland Software. ("Confidential Information"). You
 * shall not disclose such Confidential Information and shall use
 * it only in accordance with the terms of the license agreement
 * you entered into with Intland.
 *
 * $Revision$ $Date$
--%>

<%@ taglib uri="jstl-c" prefix="c" %>
<%@ taglib uri="jstl-fn" prefix="fn" %>
<%@ taglib uri="jstl-fmt" prefix="fmt" %>

<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<%@ taglib uri="http://ditchnet.org/jsp-tabs-taglib" prefix="tab" %>

<%@ taglib uri="taglib" prefix="tag" %>
<%@ taglib uri="acltaglib" prefix="acl" %>
<%@ taglib uri="uitaglib" prefix="ui" %>

<%--
	JSP fragment renders search results.
	Parameters, etc:
	param.showAssoc=true 	- when included on association page
	param.selectionAllowed=true/false	- if the selection of the results are allowed, so checkbox/radio button is shown before each hit
	param.multipleSelection=true/false	- if single (radiobuttons) or multi-selection (checkboxes) are used
	param.showFooter=true/false	- whether to show the search footer (total results and search time)

	requestScope.searchResults	- The SearchResult object contains the hits.
	requestScope.selectedItems	- Collection for the values of selected items: it contaings "<grouptype>-<id>" strings.
--%>

<%@ page import="com.intland.codebeamer.remoting.GroupType"%>
<%@ page import="java.util.Collection"%>
<%@ page import="java.util.ArrayList"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>
<%@ page import="java.util.Iterator"%>

<c:set var="USER_ACCOUNT" value="<%=new Integer(GroupType.USER_ACCOUNT)%>" />
<c:set var="USER_ACCOUNT" value="<%=new Integer(GroupType.USER_ACCOUNT)%>" />
<c:set var="TRACKER_ITEM" value="<%=new Integer(GroupType.TRACKER_ITEM)%>" />
<c:set var="ARTIFACT" value="<%=new Integer(GroupType.ARTIFACT)%>" />
<c:set var="FORUM_POST" value="<%=new Integer(GroupType.FORUM_POST)%>" />
<c:set var="PROJECT" value="<%=new Integer(GroupType.PROJECT)%>" />
<c:set var="BUILD" value="<%=new Integer(GroupType.BUILD)%>" />
<c:set var="SOURCE" value="<%=new Integer(GroupType.SOURCE)%>" />

<c:set var="isExport" value="false" />
<c:set var="pageSize" value="20" />
<c:set var="pageSizeList" value="20" />

<c:set var="bannerPosition" value="bottom" />
<c:set var="bannerPositionList" value="bottom" />
<c:set var="bannerOnePage" value="" />
<c:set var="bannerOneItem" value="" />
<c:set var="bannerAllItems" value="" />
<c:set var="bannerSomeItems" value="" />
<c:set var="bannerGroupSize" value="5" />

<acl:isUserInRole var="canViewCompany" value="${applicationScope.PERMISSION_ACCOUNT_COMPANY_VIEW}" />
<acl:isUserInRole var="canViewEmail" value="${applicationScope.PERMISSION_ACCOUNT_EMAIL_VIEW}" />
<acl:isUserInRole var="canViewPhone" value="${applicationScope.PERMISSION_ACCOUNT_PHONE_VIEW}" />
<acl:isUserInRole var="canViewSkills" value="${applicationScope.PERMISSION_ACCOUNT_SKILLS_VIEW}" />

<tab:tabConfig />

<c:set var="requestURI" value="" />

<%-- if the selection is allowed --%>
<c:set var="selectionAllowed" value="${param.selectionAllowed}" />

<%-- if in show association mode --%>
<c:choose>
	<c:when test="${param.showAssoc}">
		<c:set var="from_assoc" value="true" />
		<c:set var="selectionAllowed" value="true" />
	</c:when>
	<c:otherwise>
		<c:set var="from_assoc" value="false" />
	</c:otherwise>
</c:choose>

<%-- single or multi selection?, defined by the parameter: multipleSelection,
	 put the checkbox or radio to check-all/clear-all into header --%>
<c:choose>
	<c:when test="${param.multipleSelection || from_assoc}">
		<c:set var="selectInputType" value="checkbox" />
		<c:set var="selectColumnTitle">
			<input TYPE="CHECKBOX" TITLE="Select/Clear All" id="selectColumnTitle"
				NAME="SELECT_ALL" VALUE="on"
				ONCLICK="setAllStatesFrom(this, 'searchItem', new InSameTableClosure(this))">
			</input>
		</c:set>
	</c:when>
	<c:otherwise>
		<c:set var="selectInputType" value="radio" />
		<c:set var="selectColumnTitle" >
			<input type="radio" name='searchItem' title="Clear selection" value="" id="selectColumnTitle" />
		</c:set>
	</c:otherwise>
</c:choose>

<c:set var="showFooter" value="${empty param.showFooter or param.showFooter}"/>

<%
	// selected-items may arrive in "selectedItems" request parameter
	Collection selectedItems = (Collection) request.getAttribute("selectedItems");
	if (selectedItems == null) {
		selectedItems = new ArrayList();
	}

	// convert to map, so jstl can use it with [] operator
	Map selectedItemsMap = new HashMap();
	for (Iterator iItems = selectedItems.iterator(); iItems.hasNext();) {
		Object selectedItem = iItems.next();
		selectedItemsMap.put(selectedItem, selectedItem);
	}

	pageContext.setAttribute("selectedItems", selectedItemsMap);
%>

<c:set var="showProject" value="true" />

<c:set var="searchResults" value="${requestScope.searchResults}" />

<c:set var="users" value="${searchResults.users}" />
<c:set var="trackerItems" value="${searchResults.trackerItems}" />
<c:set var="documents" value="${searchResults.documents}" />
<c:set var="forumPosts" value="${searchResults.forumPosts}" />
<c:set var="projects" value="${searchResults.projects}" />
<c:set var="builds" value="${searchResults.builds}" />
<c:set var="files" value="${searchResults.files}" />
<c:set var="symbols" value="${searchResults.symbols}" />
<c:set var="commits" value="${searchResults.sourceCommits}" />
<c:set var="labels" value="${searchResults.labels}" />
<c:set var="matches" value="${searchResults.matches}" />
<c:set var="hits" value="${searchResults.allHits}"/>

<c:choose>
<c:when test="${matches gt 0}">
<tab:tabContainer id="search-result" skin="cb-box" >

<!-- All hits -->
<c:if test="${not from_assoc}">
<tab:tabPane id="search-all" tabTitle="All (${matches})">
	<div style="overflow:auto;">
	<c:if test="${!empty hits}">
		<display:table id="searchAll" name="${hits}" requestURI="${requestURI}" cellpadding="0" export="false" pagesize="${pageSizeList}" >
			<display:setProperty name="paging.banner.placement" value="${bannerPositionList}"/>
			<display:setProperty name="paging.banner.onepage" value="${bannerOnePage}" />
			<display:setProperty name="paging.banner.one_item_found" value="${bannerOneItem}" />
			<display:setProperty name="paging.banner.all_items_found" value="${bannerAllItems}" />
			<display:setProperty name="paging.banner.some_items_found" value="${bannerSomeItems}" />
			<display:setProperty name="paging.banner.group_size" value="${bannerGroupSize}" />
			<display:setProperty name="css.tr.even" value="search_item" />
			<display:setProperty name="css.tr.odd" value="search_item" />
			<display:setProperty name="css.table" value="search_item_table" />

			<display:column class="search_item" style="search_item" sortable="false" >
				<tag:searchResultItem resultDto="${searchAll}" itemClass="search_item" useDivForItemBlockTag="true" searchQuery="${searchResults.searchQuery}"/>
			</display:column>
		</display:table>
	</c:if>
	</div>
</tab:tabPane>
</c:if>

<%-- Users --%>
<c:if test="${!empty users}">
<tab:tabPane id="search-labels" tabTitle="Accounts (${searchResults.userCount})">
	<c:set var="htmlClass" value="menubar_workspace" />
	<div style="overflow:auto;">
	<display:table id="searchUser" name="${users}" requestURI="${requestURI}" cellpadding="0" export="${isExport}" pagesize="${pageSize}" class="search_table ${htmlClass}"
		decorator="com.intland.codebeamer.ui.view.table.search.UserSearchDecorator" >

		<display:setProperty name="paging.banner.placement" value="${bannerPosition}"/>
		<display:setProperty name="paging.banner.onepage" value="${bannerOnePage}" />
		<display:setProperty name="paging.banner.one_item_found" value="${bannerOneItem}" />
		<display:setProperty name="paging.banner.all_items_found" value="${bannerAllItems}" />
		<display:setProperty name="paging.banner.some_items_found" value="${bannerSomeItems}" />
		<display:setProperty name="paging.banner.group_size" value="${bannerGroupSize}" />

		<c:if test="${selectionAllowed}">
			<display:column title="${selectColumnTitle}" headerClass="checkbox-column-minwidth">
				<c:set var="selectionValue" value="${USER_ACCOUNT}-${searchUser.id}" />
				<input type="${selectInputType}" name="searchItem" value="${selectionValue}"
					<c:if test="${! empty selectedItems[selectionValue]}">checked="checked"</c:if>
				/>
				<input type="hidden" name="visibleItem" value="${selectionValue}" />
			</display:column>
		</c:if>

		<display:column title="Account" property="name" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Real Name" property="realName" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Email" property="email" headerClass="textData" class="textData"
			comparator="com.intland.codebeamer.ui.view.table.EmailComparator" sortable="true" />

		<c:if test="${canViewCompany}">
			<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

			<display:column title="Company" property="company" headerClass="textData" class="textDataWrap" sortable="true" />
		</c:if>

		<c:if test="${canViewPhone}">
			<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

			<display:column title="Phone" property="phone" headerClass="textData" class="textData" sortable="true" />

			<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

			<display:column title="Mobile/IP Voice" property="mobile" headerClass="textData" class="textData" sortable="true" />
		</c:if>

		<c:if test="${canViewSkills}">
			<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

			<display:column title="Skills" property="skills" headerClass="textData" class="textDataWrap" sortable="true" />
		</c:if>
	</display:table>
	</div>
</tab:tabPane>
</c:if>

<%-- Tags --%>
<c:if test="${!empty labels}">
<tab:tabPane id="search-labels" tabTitle="Tags (${searchResults.labelCount})">
	<c:set var="htmlClass" value="menubar_wikispace" />
	<div style="overflow:auto;">
	<display:table id="searchLabelItem" name="${labels}" requestURI="${requestURI}" cellpadding="0" export="${isExport}" pagesize="${pageSize}" class="search_table ${htmlClass}"
		decorator="com.intland.codebeamer.ui.view.table.search.LabelSearchDecorator" >

		<display:setProperty name="paging.banner.placement" value="${bannerPosition}"/>
		<display:setProperty name="paging.banner.onepage" value="${bannerOnePage}" />
		<display:setProperty name="paging.banner.one_item_found" value="${bannerOneItem}" />
		<display:setProperty name="paging.banner.all_items_found" value="${bannerAllItems}" />
		<display:setProperty name="paging.banner.some_items_found" value="${bannerSomeItems}" />
		<display:setProperty name="paging.banner.group_size" value="${bannerGroupSize}" />

		<display:column title="Label" property="name" sortProperty="displayName" sortable="true" headerClass="textData" class="textData" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Related Entities" property="entities" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Creator" sortProperty="createdBy.name" sortable="true" headerClass="textData" class="textData">
			<tag:userLink user_id="${searchLabelItem.createdBy.id}" />
		</display:column>

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Created" sortProperty="createdAt" sortable="true" headerClass="dateData" class="dateData">
			<tag:formatDate value="${searchLabelItem.createdAt}" />
		</display:column>

	</display:table>
	</div>
</tab:tabPane>
</c:if>

<%-- Tracker Items --%>
<c:if test="${!empty trackerItems}">
<tab:tabPane id="search-issues" tabTitle="Issues (${searchResults.trackerItemCount})">
	<c:set var="htmlClass" value="menubar_tracker" />
	<div style="overflow:auto;">
	<display:table id="searchTrackerItem" name="${trackerItems}" requestURI="${requestURI}" cellpadding="0" export="${isExport}" pagesize="${pageSize}" class="search_table ${htmlClass}"
		decorator="com.intland.codebeamer.ui.view.table.search.TrackerSearchDecorator" >

		<display:setProperty name="paging.banner.placement" value="${bannerPosition}"/>
		<display:setProperty name="paging.banner.onepage" value="${bannerOnePage}" />
		<display:setProperty name="paging.banner.one_item_found" value="${bannerOneItem}" />
		<display:setProperty name="paging.banner.all_items_found" value="${bannerAllItems}" />
		<display:setProperty name="paging.banner.some_items_found" value="${bannerSomeItems}" />
		<display:setProperty name="paging.banner.group_size" value="${bannerGroupSize}" />

		<c:if test="${selectionAllowed}">
			<display:column title="${selectColumnTitle}" headerClass="checkbox-column-minwidth">
				<c:set var="selectionValue" value="${TRACKER_ITEM}-${searchTrackerItem.id}" />
				<input type="${selectInputType}" name="searchItem" value="${selectionValue}"
					<c:if test="${! empty selectedItems[selectionValue]}">checked="checked"</c:if>
				/>
				<input type="hidden" name="visibleItem" value="${selectionValue}" />
			</display:column>
		</c:if>

		<display:column title="Wiki Link" property="wikiLink" sortProperty="id" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Summary" property="summary" headerClass="textData" class="textSummaryData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Modified" property="modifiedAt" headerClass="dateData" class="dateData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Submitted by" property="submitter" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Assigned to" property="assignedTo" headerClass="textData" class="textDataWrap" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Status" property="status" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Category" property="trackerName" sortProperty="sortTrackerName" headerClass="textData" class="textData" sortable="true" />

		<c:if test="${showProject}">
			<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

			<display:column title="Project" property="project" sortProperty="projectName" headerClass="textData" class="textDataWrap" sortable="true" />
		</c:if>
	</display:table>
	</div>
</tab:tabPane>
</c:if>

<%-- Documents --%>
<c:if test="${!empty documents}">
<tab:tabPane id="search-documents" tabTitle="Documents (${searchResults.documentCount})">
	<c:set var="htmlClass" value="menubar_docs" />
	<div style="overflow:auto;">
	<display:table id="searchDocumentItem" name="${documents}" requestURI="${requestURI}" cellpadding="0" export="${isExport}" pagesize="${pageSize}" class="search_table ${htmlClass}"
		decorator="com.intland.codebeamer.ui.view.table.search.DocumentSearchDecorator" >

		<ui:actionGenerator builder="artifactListContextActionMenuBuilder" subject="${searchDocumentItem}" actionListName="actions"
			deniedKeys="Lock, Unlock, Delete..., Undelete, New Version"
		>

		<display:setProperty name="paging.banner.placement" value="${bannerPosition}"/>
		<display:setProperty name="paging.banner.onepage" value="${bannerOnePage}" />
		<display:setProperty name="paging.banner.one_item_found" value="${bannerOneItem}" />
		<display:setProperty name="paging.banner.all_items_found" value="${bannerAllItems}" />
		<display:setProperty name="paging.banner.some_items_found" value="${bannerSomeItems}" />
		<display:setProperty name="paging.banner.group_size" value="${bannerGroupSize}" />

		<c:if test="${selectionAllowed}">
			<display:column title="${selectColumnTitle}" headerClass="checkbox-column-minwidth">
				<c:set var="selectionValue" value="${ARTIFACT}-${searchDocumentItem.id}" />
				<input type="${selectInputType}" name="searchItem" value="${selectionValue}"
					<c:if test="${! empty selectedItems[selectionValue]}">checked="checked"</c:if>
				/>
				<input type="hidden" name="visibleItem" value="${selectionValue}" />
			</display:column>
		</c:if>

		<display:column title="Wiki Link" property="wikiLink" sortProperty="id" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Document" property="name" headerClass="textData" class="textData" sortable="true" />

		<display:column title="" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" media="html" class="action-column-minwidth">
			<ui:actionMenu actions="${actions}" />
		</display:column>

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Modified" property="lastModifiedAt" headerClass="dateData" class="dateData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Status" property="status" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Directory" property="directory" headerClass="textData" class="textData" sortable="true" />

		<c:if test="${showProject}">
			<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

			<display:column title="Project" property="project" sortProperty="projectName" headerClass="textData" class="textDataWrap" sortable="true" />
		</c:if>

		</ui:actionGenerator>
	</display:table>
	</div>
</tab:tabPane>
</c:if>

<%-- forumPosts --%>
<c:if test="${!empty forumPosts}">
<tab:tabPane id="search-forumposts" tabTitle="Forum posts (${searchResults.forumPostCount})">
	<c:set var="htmlClass" value="menubar_forum" />
	<div style="overflow:auto;">
	<display:table id="searchForumItem" name="${forumPosts}" requestURI="${requestURI}" cellpadding="0" export="${isExport}" pagesize="${pageSize}" class="search_table ${htmlClass}"
		decorator="com.intland.codebeamer.ui.view.table.search.ForumSearchDecorator" >

		<display:setProperty name="paging.banner.placement" value="${bannerPosition}"/>
		<display:setProperty name="paging.banner.onepage" value="${bannerOnePage}" />
		<display:setProperty name="paging.banner.one_item_found" value="${bannerOneItem}" />
		<display:setProperty name="paging.banner.all_items_found" value="${bannerAllItems}" />
		<display:setProperty name="paging.banner.some_items_found" value="${bannerSomeItems}" />
		<display:setProperty name="paging.banner.group_size" value="${bannerGroupSize}" />

		<c:if test="${selectionAllowed}">
			<display:column title="${selectColumnTitle}" headerClass="checkbox-column-minwidth">
				<c:set var="selectionValue" value="${FORUM_POST}-${searchForumItem.id}" />
				<input type="${selectInputType}" name="searchItem" value="${selectionValue}"
					<c:if test="${! empty selectedItems[selectionValue]}">checked="checked"</c:if>
				/>
				<input type="hidden" name="visibleItem" value="${selectionValue}" />
			</display:column>
		</c:if>

		<display:column title="Wiki Link" property="wikiLink" sortProperty="id" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Topic" property="topic" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Submitted at" property="submittedAt" headerClass="dateData" class="dateData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Submitted by" property="submitter" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Forum" property="forum" headerClass="textData" class="textData" sortable="true" />

		<c:if test="${showProject}">
			<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

			<display:column title="Project" property="project" sortProperty="projectName" headerClass="textData" class="textData" sortable="true" />
		</c:if>
	</display:table>
	</div>
</tab:tabPane>
</c:if>

<%-- Projects --%>
<c:if test="${!empty projects}">
<tab:tabPane id="search-projects" tabTitle="Projects (${searchResults.projectCount})">
	<c:set var="htmlClass" value="menubar_summary" />
	<div style="overflow:auto;">
	<display:table id="searchProjectItem" name="${projects}" requestURI="${requestURI}" cellpadding="0" export="${isExport}" pagesize="${pageSize}" class="search_table ${htmlClass}"
		decorator="com.intland.codebeamer.ui.view.table.search.ProjectSearchDecorator" >

		<display:setProperty name="paging.banner.placement" value="${bannerPosition}"/>
		<display:setProperty name="paging.banner.onepage" value="${bannerOnePage}" />
		<display:setProperty name="paging.banner.one_item_found" value="${bannerOneItem}" />
		<display:setProperty name="paging.banner.all_items_found" value="${bannerAllItems}" />
		<display:setProperty name="paging.banner.some_items_found" value="${bannerSomeItems}" />
		<display:setProperty name="paging.banner.group_size" value="${bannerGroupSize}" />

		<c:if test="${selectionAllowed}">
			<display:column title="${selectColumnTitle}" headerClass="checkbox-column-minwidth">
				<c:set var="selectionValue" value="${PROJECT}-${searchProjectItem.id}" />
				<input type="${selectInputType}" name="searchItem" value="${selectionValue}"
					<c:if test="${! empty selectedItems[selectionValue]}">checked="checked"</c:if>
				/>
				<input type="hidden" name="visibleItem" value="${selectionValue}" />
			</display:column>
		</c:if>

		<display:column title="Wiki Link" property="wikiLink" sortProperty="id" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Project" property="name" sortName="projectName" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Description" property="description" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Category" property="category" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Status" property="status" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Created" property="createdAt" headerClass="dateData" class="dateData" sortable="true" />
	</display:table>
	</div>
</tab:tabPane>
</c:if>

<%-- Builds --%>
<c:if test="${!empty builds}">
<tab:tabPane id="search-builds" tabTitle="Builds (${searchResults.buildCount})">
	<c:set var="htmlClass" value="menubar_build" />
	<div style="overflow:auto;">
	<display:table id="searchBuildItem" name="${builds}" requestURI="${requestURI}" cellpadding="0" export="${isExport}" pagesize="${pageSize}" class="search_table ${htmlClass}"
		decorator="com.intland.codebeamer.ui.view.table.search.BuildSearchDecorator" >

		<ui:actionGenerator builder="buildsListContextPageActionMenuBuilder" actionListName="buildActions" subject="${searchBuildItem}">

		<display:setProperty name="paging.banner.placement" value="${bannerPosition}"/>
		<display:setProperty name="paging.banner.onepage" value="${bannerOnePage}" />
		<display:setProperty name="paging.banner.one_item_found" value="${bannerOneItem}" />
		<display:setProperty name="paging.banner.all_items_found" value="${bannerAllItems}" />
		<display:setProperty name="paging.banner.some_items_found" value="${bannerSomeItems}" />
		<display:setProperty name="paging.banner.group_size" value="${bannerGroupSize}" />

		<c:if test="${selectionAllowed}">
			<display:column title="${selectColumnTitle}" headerClass="checkbox-column-minwidth">
				<c:set var="selectionValue" value="${BUILD}-${searchBuildItem.id}" />
				<input type="${selectInputType}" name="searchItem" value="${selectionValue}"
					<c:if test="${! empty selectedItems[selectionValue]}">checked="checked"</c:if>
				/>
				<input type="hidden" name="visibleItem" value="${selectionValue}" />
			</display:column>
		</c:if>

		<display:column title="Build" property="name" headerClass="textData" class="textData" sortable="true" />

		<c:if test="${showProject}">
			<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

			<display:column title="Project" property="project" sortProperty="projectName" headerClass="textData" class="textData" sortable="true" />
		</c:if>

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Build Logs" media="html" headerClass="textData" class="textData">
			<ui:actionLink actions="${buildActions}" keys="logs"/>
		</display:column>

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Created" property="createdAt" headerClass="dateData" class="dateData" sortable="true" />

		</ui:actionGenerator>
	</display:table>
	</div>
</tab:tabPane>
</c:if>

<%-- Symbols --%>
<c:if test="${!empty symbols}">
<tab:tabPane id="search-symbols" tabTitle="Symbols (${searchResults.symbolCount})">
	<c:set var="htmlClass" value="menubar_sources" />
	<div style="overflow:auto;">
	<display:table id="searchSymbolItem" name="${symbols}" requestURI="${requestURI}" cellpadding="0" export="${isExport}" pagesize="${pageSize}" class="search_table ${htmlClass}"
		decorator="com.intland.codebeamer.ui.view.table.search.SymbolSearchDecorator" >

		<display:setProperty name="paging.banner.placement" value="${bannerPosition}"/>
		<display:setProperty name="paging.banner.onepage" value="${bannerOnePage}" />
		<display:setProperty name="paging.banner.one_item_found" value="${bannerOneItem}" />
		<display:setProperty name="paging.banner.all_items_found" value="${bannerAllItems}" />
		<display:setProperty name="paging.banner.some_items_found" value="${bannerSomeItems}" />
		<display:setProperty name="paging.banner.group_size" value="${bannerGroupSize}" />

		<display:column title="Type" property="type" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Name" property="name" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Class Name" property="className" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="File" property="fileName" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Directory" property="directory" headerClass="textData" class="textData" sortable="true" />

		<c:if test="${showProject}">
			<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

			<display:column title="Project" property="project" sortProperty="projectName" headerClass="textData" class="textData" sortable="true" />
		</c:if>
	</display:table>
	</div>
</tab:tabPane>
</c:if>

<%-- Files --%>
<c:if test="${!empty files}">
<tab:tabPane id="search-files" tabTitle="Source files (${searchResults.sourceFileCount})">
	<c:set var="htmlClass" value="menubar_sources" />
	<div style="overflow:auto;">
	<display:table id="searchFileItem" name="${files}" requestURI="${requestURI}" cellpadding="0" export="${isExport}" pagesize="${pageSize}" class="search_table ${htmlClass}"
		decorator="com.intland.codebeamer.ui.view.table.search.FileSearchDecorator" >

		<display:setProperty name="paging.banner.placement" value="${bannerPosition}"/>
		<display:setProperty name="paging.banner.onepage" value="${bannerOnePage}" />
		<display:setProperty name="paging.banner.one_item_found" value="${bannerOneItem}" />
		<display:setProperty name="paging.banner.all_items_found" value="${bannerAllItems}" />
		<display:setProperty name="paging.banner.some_items_found" value="${bannerSomeItems}" />
		<display:setProperty name="paging.banner.group_size" value="${bannerGroupSize}" />

		<c:if test="${selectionAllowed}">
			<display:column title="${selectColumnTitle}" headerClass="checkbox-column-minwidth">
				<c:set var="selectionValue" value="${SOURCE}-${searchFileItem.id}" />
				<input type="${selectInputType}" name="searchItem" value="${selectionValue}"
					<c:if test="${! empty selectedItems[selectionValue]}">checked="checked"</c:if>
				/>
				<input type="hidden" name="visibleItem" value="${selectionValue}" />
			</display:column>
		</c:if>

		<display:column title="File" property="name" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Directory" property="directory" headerClass="textData" class="textData" sortable="true" />

		<c:if test="${showProject}">
			<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

			<display:column title="Project" property="project" sortProperty="projectName" headerClass="textData" class="textData" sortable="true" />
		</c:if>
	</display:table>
	</div>
</tab:tabPane>
</c:if>

<%-- Commits --%>
<c:if test="${!empty commits}">
<tab:tabPane id="search-commits" tabTitle="SCM commits (${searchResults.sourceCommitCount})">
	<c:set var="htmlClass" value="menubar_sources" />
	<div style="overflow:auto;">
	<display:table id="searchCommitItem" name="${commits}" requestURI="${requestURI}" cellpadding="0" export="${isExport}" pagesize="${pageSize}" class="search_table ${htmlClass}"
		decorator="com.intland.codebeamer.ui.view.table.search.CommitSearchDecorator" >

		<display:setProperty name="paging.banner.placement" value="${bannerPosition}"/>
		<display:setProperty name="paging.banner.onepage" value="${bannerOnePage}" />
		<display:setProperty name="paging.banner.one_item_found" value="${bannerOneItem}" />
		<display:setProperty name="paging.banner.all_items_found" value="${bannerAllItems}" />
		<display:setProperty name="paging.banner.some_items_found" value="${bannerSomeItems}" />
		<display:setProperty name="paging.banner.group_size" value="${bannerGroupSize}" />

		<display:column title="Commit Comment" property="comment" headerClass="textData" class="textData" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Date" property="date" headerClass="dateData" class="dateData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Tasks" property="tasks" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="File" property="file" headerClass="textData" class="textData" sortable="false" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<display:column title="Author" property="author" headerClass="textData" class="textData" sortable="true" />

		<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

		<c:if test="${showProject}">
			<display:column class="${COLUMN_SEPARATOR}" media="html" decorator="com.intland.codebeamer.ui.view.table.TrimmedColumnDecorator" />

			<display:column title="Project" property="project" sortProperty="projectName" headerClass="textData" class="textData" sortable="true" />
		</c:if>
	</display:table>
	</div>
</tab:tabPane>
</c:if>
</tab:tabContainer>
<script type="text/javascript" language="JavaScript">
<!--
	try {
		document.getElementById("search-all").focus();
	} catch (e) {
	}
// -->
</script>
</c:when>
<c:otherwise>
<c:if test="${matches eq 0}">
	<STRONG>No matching found</STRONG>
</c:if>
<script type="text/javascript" language="JavaScript">
<!--
	try {

		document.getElementById("searchFilterPattern").focus();
	} catch (e) {
	}
// -->
</script>
</c:otherwise>
</c:choose>