<%
/******************************************************************************
 * Copyright (c) 2000-2011 E-DEAL
 *
 * E-DEAL S.A.
 * 41, rue Périer
 * 92120 Montrouge
 * France
 *
 * T: +33 (0)1 73 03 29 80
 * F: +33 (0)1 73 01 69 77
 * http://www.e-deal.com
 * 
 * La diffusion de ce code source sous quelque forme que ce soit sans
 * l'autorisation de E-DEAL est interdite.
 *
 * Vous êtes autorisés à modifier ce code source uniquement pour votre usage
 * propre et sous réserve que les mentions de copyright demeurent intactes.
 *
 * Ce code est fourni en l'état. Aucune garantie d'aucune sorte, explicite ou
 * implicite n'est donnée. En aucun cas E-DEAL ne pourra être tenu pour
 * responsable des dommages pouvant résulter de l'utilisation de ce code
 * source.
 ******************************************************************************/
%><%@ page language="java" session="true"%>
<%@ page import="com.edeal.frontline.navigation.FlRequest" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="com.edeal.frontline.Utils" %>
<%@ page import="com.edeal.frontline.*" %>
<%@ page import="java.util.Hashtable" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Vector" %>
<%@ page import="com.edeal.frontline.ListBean" %>
<%@ page import="com.edeal.frontline.ListBean.SearchZone" %>
<%@ page import="com.edeal.frontline.DataDictionary" %>
<%@ page import="com.edeal.frontline.FlContext" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.lang.reflect.*" %>
<%@ page import="com.edeal.frontline.navigation.WebUtils" %>
<%@ page import="com.edeal.frontline.controller.actions.SelectAction" %>
<%@ page import="com.edeal.frontline.FlDataSource" %>
<%@ page import="java.util.Date" %>
<%@ page import="com.edeal.frontline.helper.custom.ListHelper" %>
<%@ page import="com.edeal.frontline.ListBean.MandatoryGroup" %>
<%@page import="com.edeal.frontline.navigation.EdealBigTabsNavigation"%>
<%@page import="com.edeal.frontline.navigation.EdealBigTabsNavigation.BigTabsParams"%>
<%@page import="org.apache.commons.lang.StringUtils"%>
<%@taglib uri="http://www.e-deal.com/taglib/fl" prefix="fl"%>
<jsp:useBean id="List" class="com.edeal.frontline.ListBean" scope="request"/>
<jsp:useBean class="com.edeal.frontline.TrashReportBean" id="trashReport" scope="request"/>
<%@ include file="/common/list/list_variables.jsp" %>
<%
flRequest.setAttribute("trashreport", trashReport);
FlContext context = flRequest.getContext();
DataDictionary dico = context.getDataDictionary();
EdealBigTabsNavigation ebtn = new EdealBigTabsNavigation(request);

Vector pagination = (Vector)flRequest.getAttribute("Pagination");
boolean hasPagination = pagination != null ? pagination.size() > 1 : false;
ListBean.SearchZone searchZone = null;
ListBean.ResultZone resultZone=null;
try {
	searchZone = List.getSearchZone();
	resultZone = List.getResultZone();
} catch (Exception e) {
}
String includedListScript=null;
if (resultZone!=null) {
	includedListScript=ListHelper.processXmlListScriptExtension(context, session, resultZone.getScript());
}

String SfwID = flRequest.getRequestParameterOrAttribute("SfwID");

//AjaxUrl the default value is /list_ajax.fl
String au = flRequest.getRequestParameterOrAttribute("au");

// Is this our first time in here? (ie, we're not navigating back from an object)
boolean isFirstTimeIn = !ebtn.isDoList(); 

Map searchCriteria = new Hashtable();
if (sc != null) {
	searchCriteria = WebUtils.parseQueryString(sc);
}

String gridName=Utils.formatToWeb(lc, true);

EdealBigTabsNavigation bTabNav = new EdealBigTabsNavigation(request);	
bTabNav.setBigTabsParameterValue(BigTabsParams.NameSearchGridJs, "_grid__" + gridName + "_js_");

String pageIndex=flRequest.getSearchCriteria("$$idx",gridName,false);
pageIndex=StringUtils.isEmpty(pageIndex)?"1":pageIndex;

String pagePagination=flRequest.getSearchCriteria("$$nb",gridName,false);
pagePagination=StringUtils.isEmpty(pagePagination)?(String)pagination.firstElement():pagePagination;

String pPreview = flRequest.getSearchCriteria("$$preview");
boolean fHasPreview="true".equals(pPreview);
//mandatory groups
HashMap<String, ListBean.MandatoryGroup> mdGps = null;
boolean fHasMandatoryGroups = false;
if (searchZone != null) {
	mdGps = searchZone.getMandatoryGroups();
}
fHasMandatoryGroups = ((mdGps != null) && (mdGps.size() > 0));

%>
<%-- Le Javascript ci-dessous doit etre inclus en page, car le JSP a besoin du request --%>
<script language="javascript">
	<%= (includedListScript==null)?"":includedListScript %>
	<%@include file="/common/list/list_criteria_js.jsp"%>
	var mandatoryGroups = <%= (searchZone != null) ? searchZone.getMandatoryGroupsAsJson() : "\"\"" %>;
</script>
<script type="text/javascript" src="<fl:link url="/js/focusFirstElement.js"/>"></script>
<script language="javascript">
/*
var chkBoxes = $("#grid-data :checkbox");
chkBoxes.change(function(){
		$("#action_1").click(function(event){
			alert("click ok");
			return true;	
		});
	});	 
*/
$(document).ready(function(){
	$("#lblTrlTrpID").hide();
	});
</script>
<div class="BigTab">
	<%@include file="/common/tabs.jsp" %></td>
	<div class="BTBody BTBodyL"><div class="BTBody BTBodyR">

	<div id="criteriaTableRow"> 
		<table class="container" cellpadding="0">
			<tr>
				<td class="column2">
				<table class="container" cellpadding="0">
					<fl:fieldRead name="trashReport" disp="/read_diexecution.fl" href="true" property="TrpDieID" bean="true" alt="n/a"/>
					<fl:fieldRead name="trashReport" property="TrpObjID" bean="true" alt="n/a"/>
				</table>
				</td>

				<td class="separation"><div class="separation"></div></td>
				<td class="column2">
					<table class="container" cellpadding="0">
						<fl:fieldRead name="trashReport" property="TrpFileName" bean="true" alt="n/a"/>
						<fl:fieldRead name="trashReport" property="TrpImportDate" format="dd/MM/yyyy hh:mm" alt="n/a"/>
					</table>
				</td>
			</tr>

		<tr class="ligne_separation">
			<td colspan="5">&nbsp;</td>
		</tr>
	</table>	
			<form method="get" onsubmit="return false;">
			
<%= ebtn.getBigTabsInput(BigTabsParams.CodeLC) %>
<%= ebtn.getBigTabsInput(BigTabsParams.SearchCriteria) %>
<%= ebtn.getBigTabsInput(BigTabsParams.ObjectURI) %>
<%= ebtn.getBigTabsInput(BigTabsParams.ObjectTitle) %>
<%= ebtn.getBigTabsInput(BigTabsParams.CriteriaListTitle) %>
<% if (isFirstTimeIn) { %>
	<%= ebtn.getBigTabsInput(BigTabsParams.DoList, "1") %>
	<%= ebtn.getBigTabsInput(BigTabsParams.CriteriaListURI, "/list_criteria.fl") %>
	<%= ebtn.getBigTabsInput(BigTabsParams.SelectedTab, "1") %>
<% } %>
<% if (SfwID != null) { %>
			<%= ebtn.getBigTabsInput(BigTabsParams.SoftwareModule) %>
<% } %>
			<table class="container" cellpadding="0">
				<tr valign="top">
					<td>
						<div id="criteriaTableDiv" class="criteriaTableDiv">
<%
	if(searchZone != null) {
		int nTabIndex = 1;
		for(int i = 0; i < searchZone.getNbLines(); i++) {
			for(int j = 0; j < searchZone.getNbFields(i); j++) {
				if (j >= 4) {
					// Four is our limit for right now, hard-coded
					break;
				}
				
				ListBean.Field fld = searchZone.getField(i, j);		
				String fldinputname=fld.getInputName();
				fldinputname=fldinputname.replace("$",":"); // in the sc param, the fields are with : where we expect with $ 
				Vector fieldValues = (Vector)searchCriteria.get(fldinputname);				
			
				if(fld.getChoiceType() == ListBean.CHOICE_NONE) {
					String strDisp = null;
					String value = null;
					if (fieldValues != null && fieldValues.size() > 0) {
						value = (String) fieldValues.firstElement();
					} 
					if(fld.isDate() || fld.isTime() || fld.isBoolean() || fld.isDecimal() || fld.isInteger()) {
						strDisp = fld.getDisplay(session);
					} else {
						strDisp = "<" + fld.getDisplay(session) + ">";
					}

					if(fld.getFldFobSql() != null) {
						String lblValue = null;
						String initVal = flRequest.getRequestParameterOrAttribute("init"+fld.getInputName());
				
						if (value != null) {
							Vector lblValues = (Vector)searchCriteria.get("lbl" + fldinputname);
							if (lblValues != null && lblValues.size() > 0) {
								lblValue = (String)lblValues.firstElement();
							}
						} else {
							HashMap<String, String> vectDefaultVals;
							if (initVal != null) {
								FieldBean fldBean = dico.getFieldByName(fld.getName());
								ObjectsBean obj = dico.getTable("id", fldBean.getFldFobID());
								lblValue = obj.toString(session, initVal);
								value=initVal;
							} else if (sc == null && (vectDefaultVals = fld.getStrDefaultValsList(session)) != null) {
								if (vectDefaultVals.size() > 0) {
									FieldBean fldBean = dico.getFieldByName(fld.getName());
									ObjectsBean obj = dico.getTable("id", fldBean.getFldFobID());
									value = vectDefaultVals.get(ListBean.Field.DISPLAY);
									lblValue = obj.toString(session, value);
								}
							}
						}

						boolean doAjax = fld.getObjAjaxSearch() != null;
						String fldNameWeb = Utils.formatToWeb(fldinputname, true);
						String emptyLabelDisplay = lblValue != null ? Utils.formatToWeb(lblValue, true) : Utils.formatToWeb(strDisp, true);
						String emptyLabelDisplayJS = lblValue != null ? Utils.formatToJavascript(lblValue) : Utils.formatToJavascript(strDisp);
%>
						<script language="javascript"> 
							function do<%=fldNameWeb%>Change(){
								var f = window.document.forms[0];
								$(f.lbl<%=fldNameWeb%>).change();
							}
						</script>
						
						<input id="<%=fldNameWeb%>" name="<%=fldNameWeb%>" type="hidden" value="<%=Utils.formatToWeb(value, true)%>" >
						<input title="<%= strDisp %>" id="lbl<%=fldNameWeb%>" name="lbl<%=fldNameWeb%>" class="criteriaField<%=(j > 0 ? " leftMargin10" : "")%><%=ListHelper.getFldClasses(fld)%>" type="text" value="<%=emptyLabelDisplay%>"<%=doAjax ? " autocomplete=\"off\" onfocus=\"displayOnFocus(this);\"" : " readonly onfocus=\"this.blur();\""%>>
						<%if (!fldNameWeb.equals("TrlTrpID")) { %><a href="javascript:var win = window.open('<fl:webapp/>/select.fl?type=<%=flRequest.urlEncode(fld.getFldFobSql())%>&field=<%=flRequest.urlEncode(fld.getInputName())%>', 'Select<%=fld.getFldFobSql()%>', 'menubar=no,status=no,toolbar=no,scrollbars=yes,resizable=yes,width=<%=SelectAction.SELECT_WINDOW_WIDTH%>,height=500')" tabindex="<%=nTabIndex++%>"><img src="<fl:webapp/>/icons/ico/rechercher.gif" class="icon"></a>
						<a href="javascript:var f = window.document.forms[0]; 
								f.<%=fldNameWeb%>.value = ''; 
								f.lbl<%=fldNameWeb%>.value = '<%=Utils.formatToJavascript(strDisp)%>'; 
								<%= doAjax ? "acLastCompleteValues['lbl" + fldNameWeb + "'] = '" + emptyLabelDisplayJS + "'; acLastCompleteValues['" + fldNameWeb + "'] = ''; " : "" %>
								$(f.lbl<%=fldNameWeb%>).change();
								void('')"
							tabindex="<%= nTabIndex++ %>">	
							<img src="<fl:webapp/>/icons/ico/supprimer.gif" class="icon">
						</a>
						<%} if (doAjax) { %>
							<script language="javascript">$(document).ready(function () {
								runOnTime('installFobAC(document.forms[0].lbl<%= fldNameWeb %>);', 1000);})
							</script>
						<% } %>
<%
	} else if (fld.isFldRef()) {
%>						
									<select title="<%= strDisp %>" name="<%=Utils.formatToWeb(fld.getInputName(), true)%>" class="criteriaField<%=(j > 0 ? " leftMargin10" : "")%><%=ListHelper.getFldClasses(fld)%>" tabindex="<%=nTabIndex++%>">
										<option value=""><%=Utils.formatToWeb(strDisp, false)%></option>
<%
						Vector vectRef = dico.getRefList(session, fld.getName());
						String initVal = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName());

						String idInitVal = null;
						if (value != null) {
							idInitVal = value;
						} else {
							if (initVal != null) {
								try {
									idInitVal = dico.getRefIdByCode(fld.getInputName(), initVal);
									if(idInitVal==null){
										idInitVal = initVal;
									}
								} catch (FrontlineException e) {
									logger.error(e);
								}
							}

							if (sc == null) {
								HashMap<String, String> vectDefaultVals = fld.getStrDefaultValsList(session);
								if (idInitVal == null && vectDefaultVals != null && vectDefaultVals.size() > 0) {
									try {
										
										String lastFldName=lastFldName=(fldinputname.indexOf(":")>-1)?fldinputname.substring(fldinputname.lastIndexOf(":")+1):fldinputname;
										//idInitVal = dico.getRefIdByCode(lastFldName, vectDefaultVals.get(ListBean.Field.DISPLAY));
										idInitVal = vectDefaultVals.get(ListBean.Field.DISPLAY);
										
									} catch (Exception e) {
										logger.error("can't get ref for field"+e);
									}
								}
							}
						}

						if (idInitVal == null) {
							idInitVal = "";
						}
						
						for (int r = 0; r < vectRef.size(); r++) {
							Vector vect = (Vector) vectRef.elementAt(r);
							boolean selected = vect.elementAt(0).equals(idInitVal);
%>										<option value="<%=Utils.formatToWeb((String) vect.elementAt(0), true)%>"<%=(selected ? " selected=\"selected\"" : "")%>><%=Utils.formatToWeb(vect.elementAt(1), true)%></option>
<%
	}
%>									</select>
<%
	} else if (fld.isString()) {
						// voir si une valeur par défaut est pré-renseignée dans l'URL
						String initVal = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName());
						if("".equals(initVal))
							initVal = null;
						if (sc == null) {
							HashMap<String, String> vectDefaultVals = fld.getStrDefaultValsList(session);
							if (initVal == null) {
								// voir si une valeur est pré-renseignée dans l'XML
								if (vectDefaultVals != null)
									if (vectDefaultVals.size() > 0)
										initVal = vectDefaultVals.get(ListBean.Field.DISPLAY);
							}
						}
%>								<input title="<%= strDisp %>" name="<%=Utils.formatToWeb(fld.getInputName(), true)%>" class="criteriaField<%=(j > 0 ? " leftMargin10" : "")%><%=ListHelper.getFldClasses(fld)%>" type="text" value="<%=Utils.formatToWeb(value != null ? value : (initVal != null ? initVal : strDisp), true)%>" onfocus="this.select()" onblur="if(this.value == '') this.value = '<%=Utils.formatToJavascript(strDisp)%>';" tabindex="<%=nTabIndex++%>">
<%
	} else if (fld.isInteger()) {
						String fromValue = null;
						String toValue = null;
						Vector intValues = (Vector) searchCriteria.get(fldinputname + "$From");
						if (intValues != null && intValues.size() > 0) {
							fromValue = (String) intValues.firstElement();
						}
						intValues = (Vector) searchCriteria.get(fldinputname + "$To");
						if (intValues != null && intValues.size() > 0) {
							toValue = (String) intValues.firstElement();
						}

						String initValMin = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Min");
						String initValMax = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Max");
						Vector vectDefaultVals = fld.getDefaultValsList();

						if (initValMin != null) {
							if (fromValue == null)
								fromValue = initValMin;
						}
						if (initValMax != null) {
							if (toValue == null)
								toValue = initValMax;
						}
						if (vectDefaultVals != null) {
							if (vectDefaultVals.size() > 0) {
								if (fromValue == null) {
									if (fld.getDefaultValsList().elementAt(0) != null) {
										fromValue = ((Hashtable) fld.getDefaultValsList().elementAt(0)).get(ListBean.Field.DISPLAY_MIN).toString();
									}
								}
								if (toValue == null) {
									if (fld.getDefaultValsList().elementAt(1) != null)
										toValue = ((Hashtable) fld.getDefaultValsList().elementAt(1)).get(ListBean.Field.DISPLAY_MAX).toString();
								}
							}
						}
%>
								<span class="criteriaLabel"><%=Utils.formatToWeb(strDisp, false)%>&nbsp;<fl:getMessage code="M60CA" alt="entre"/>&nbsp;</span>
								<input name="<%=Utils.formatToWeb(fld.getInputName(), true)%>$From" class="criteriaFieldNumber<%=ListHelper.getFldClasses(fld)%>" type="text" value="<%=Utils.formatToWeb(fromValue, true)%>" onfocus="this.select();" onblur="ctrlNumField(this, 'Integer', '<fl:getMessage code="M302E" alt="Format incorrect. Veuillez corriger" js="true"/>');" tabindex="<%=nTabIndex++%>">
								<span class="criteriaLabel">&nbsp;<fl:getMessage code="L604B" alt="et"/>&nbsp;</span>		
								<input name="<%=Utils.formatToWeb(fld.getInputName(), true)%>$To" class="criteriaFieldNumber<%=ListHelper.getFldClasses(fld)%>" type="text" value="<%=Utils.formatToWeb(toValue, true)%>" onfocus="this.select();" onblur="ctrlNumField(this, 'Integer', '<fl:getMessage code="M302E" alt="Format incorrect. Veuillez corriger" js="true"/>');" tabindex="<%=nTabIndex++%>">													
								<input  type="hidden" name="$$numericFields" value="<%=Utils.formatToWeb(fld.getInputName(), true)%>">
<%
	} else if (fld.isDecimal()) {
						String fromValue = null;
						String toValue = null;
						Vector decValues = (Vector) searchCriteria.get(fldinputname + "$From");
						if (decValues != null && decValues.size() > 0) {
							fromValue = (String) decValues.firstElement();
						}
						decValues = (Vector) searchCriteria.get(fldinputname + "$To");
						if (decValues != null && decValues.size() > 0) {
							toValue = (String) decValues.firstElement();
						}

						String initValMin = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Min");
						String initValMax = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Max");
						HashMap<String, String> vectDefaultVals = fld.getStrDefaultValsList(session);

						if (initValMin != null) {
							if (fromValue == null)
								fromValue = initValMin;
						}
						if (initValMax != null) {
							if (toValue == null)
								toValue = initValMax;
						}
						if (vectDefaultVals != null) {
							if (vectDefaultVals.size() > 0) {
								if (sc == null && fromValue == null) {
									fromValue = vectDefaultVals.get(ListBean.Field.DISPLAY_MIN);
								}
								if (sc == null && toValue == null) {
									toValue = vectDefaultVals.get(ListBean.Field.DISPLAY_MAX);
								}
							}
						}
%>
								<span class="criteriaLabel"><%=Utils.formatToWeb(strDisp, false)%>&nbsp;<fl:getMessage code="M60CA" alt="entre"/>&nbsp;</span>
								<input  name="<%=Utils.formatToWeb(fld.getInputName(), true)%>$From" class="criteriaFieldNumber<%=ListHelper.getFldClasses(fld)%>" type="text" value="<%=Utils.formatToWeb(fromValue, true)%>" onfocus="this.select();" onblur="ctrlNumField(this, 'float', '<fl:getMessage code="M302E" alt="Format incorrect. Veuillez corriger" js="true"/>');" tabindex="<%=nTabIndex++%>">
								<span class="criteriaLabel">&nbsp;<fl:getMessage code="L604B" alt="et"/>&nbsp;</span>		
								<input  name="<%=Utils.formatToWeb(fld.getInputName(), true)%>$To" class="criteriaFieldNumber<%=ListHelper.getFldClasses(fld)%>" type="text" value="<%=Utils.formatToWeb(toValue, true)%>" onfocus="this.select();" onblur="ctrlNumField(this, 'float', '<fl:getMessage code="M302E" alt="Format incorrect. Veuillez corriger" js="true"/>');" tabindex="<%=nTabIndex++%>">					
								<input type="hidden" name="$$numericFields" value="<%=Utils.formatToWeb(fld.getInputName(), true)%>">
<%
	} else if (fld.isDate()) {
						String fromValue = null;
						String toValue = null;
						String fldNameWeb = Utils.formatToWeb(fld.getFullName(), true);
						Vector dateValues = (Vector) searchCriteria.get(fldinputname + "$From");
						if (dateValues != null && dateValues.size() > 0) {
							fromValue = (String) dateValues.firstElement();
						}
						dateValues = (Vector) searchCriteria.get(fldinputname + "$To");
						if (dateValues != null && dateValues.size() > 0) {
							toValue = (String) dateValues.firstElement();
						}
						String initValMin = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Min");
						String initValMax = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Max");
						if (initValMin != null) {
							if (fromValue == null)
								fromValue = initValMin;

						}
						if (initValMax != null) {
							if (toValue == null)
								toValue = initValMax;
						}
						if (sc == null) {
							HashMap<String, String> vectDefaultVals = fld.getStrDefaultValsList(session);
							if (vectDefaultVals != null) {
								if (vectDefaultVals.size() > 0) {
									if (fromValue == null) {
										if (vectDefaultVals.containsKey(ListBean.Field.DISPLAY_MIN))
											fromValue = vectDefaultVals.get(ListBean.Field.DISPLAY_MIN);
									}
									if (toValue == null) {
										if (vectDefaultVals.containsKey(ListBean.Field.DISPLAY_MAX))
											toValue = vectDefaultVals.get(ListBean.Field.DISPLAY_MAX);
									}

								}
							}
						}
		%>						<script language="javascript"> 
									function do<%=fldNameWeb%>$FromChange(){
										$("#<%=fldNameWeb%>From").change();
									}
									function do<%=fldNameWeb%>$ToChange(){
										$("#<%=fldNameWeb%>To").change();
									}
								</script>
								<span class="criteriaLabel<%=(j > 0 ? " leftMargin10" : "")%>"><%=Utils.formatToWeb(strDisp, false)%>&nbsp;<fl:getMessage code="M60CA" alt="entre"/>&nbsp;</span>
								<input  name="<%=Utils.formatToWeb(fld.getInputName(), true)%>$From" id="<%=Utils.formatToWeb(fld.getInputName(), true)%>From" class="criteriaFieldDate<%=ListHelper.getFldClasses(fld)%>" type="text" value="<%=Utils.formatToWeb(fromValue, true)%>" onfocus="this.select();" onblur="ctrlDateField(this, '<fl:getMessage code="M302E" alt="Format incorrect. Veuillez corriger" js="true"/>');" tabindex="<%=nTabIndex++%>" size="10" maxlength="10">
								<a href="javascript:openCalendar(document.forms[0].<%=Utils.formatToWeb(fld.getInputName(), true)%>$From)" onmouseover="window.status = 'Afficher le calendrier';" onmouseout="window.status = '';"><img src="<fl:webapp/>/icons/ico/clock_neutre.gif" class="icon"></a>
								<span class="criteriaLabel">&nbsp;<fl:getMessage code="L604B" alt="et"/>&nbsp;</span>
								<input  name="<%=Utils.formatToWeb(fld.getInputName(), true)%>$To" id="<%=Utils.formatToWeb(fld.getInputName(), true)%>To" class="criteriaFieldDate<%=ListHelper.getFldClasses(fld)%>" type="text" value="<%=Utils.formatToWeb(toValue, true)%>" onfocus="this.select();" onblur="ctrlDateField(this, '<fl:getMessage code="M302E" alt="Format incorrect. Veuillez corriger" js="true"/>');" tabindex="<%=nTabIndex++%>" size="10" maxlength="10">
								<a href="javascript:openCalendar(document.forms[0].<%=Utils.formatToWeb(fld.getInputName(), true)%>$To)" onmouseover="window.status = 'Afficher le calendrier';" onmouseout="window.status = '';"><img src="<fl:webapp/>/icons/ico/clock_neutre.gif" class="icon"></a>
<%
	} else if (fld.isTime()) {
						String fromValue = null;
						String toValue = null;
						Vector dateValues = (Vector) searchCriteria.get(fldinputname + "$From");
						if (dateValues != null && dateValues.size() > 0) {
							fromValue = (String) dateValues.firstElement();
						}
						dateValues = (Vector) searchCriteria.get(fldinputname + "$To");
						if (dateValues != null && dateValues.size() > 0) {
							toValue = (String) dateValues.firstElement();
						}
						String initValMin = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Min");
						String initValMax = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName() + "Max");
						HashMap<String, String> vectDefaultVals = fld.getStrDefaultValsList(session);

						if (initValMin != null) {
							if (fromValue == null)
								fromValue = initValMin;
						}
						if (initValMax != null) {
							if (toValue == null)
								toValue = initValMax;
						}
						if (sc == null && vectDefaultVals != null) {
							if (vectDefaultVals.size() > 0) {
								if (fromValue == null) {
									if (vectDefaultVals.containsKey(ListBean.Field.DISPLAY_MIN))
										fromValue = vectDefaultVals.get(ListBean.Field.DISPLAY_MIN);
								}
								if (toValue == null) {
									if (vectDefaultVals.containsKey(ListBean.Field.DISPLAY_MAX))
										toValue = vectDefaultVals.get(ListBean.Field.DISPLAY_MAX);
								}
							}
						}
%>
								<span class="criteriaLabel<%=(j > 0 ? " leftMargin10" : "")%>"><%=Utils.formatToWeb(strDisp, false)%>&nbsp;</span><fl:getMessage code="M60CA" alt="entre"/>&nbsp;
								<input  title="<%= strDisp %>" name="<%=Utils.formatToWeb(fld.getInputName(), true)%>$From" class="criteriaField<%=ListHelper.getFldClasses(fld)%>" type="text" value="<%=Utils.formatToWeb(fromValue, true)%>" onfocus="this.select();" onblur="ctrlHourField(this, '<fl:getMessage code="M302E" alt="Format incorrect. Veuillez corriger" js="true"/>');" tabindex="<%=nTabIndex++%>" size="5" maxlength="5"><span class="criteriaLabel">&nbsp;<fl:getMessage code="L604B" alt="et"/>&nbsp;</span><input name="<%=Utils.formatToWeb(fld.getInputName(), true)%>$To" class="criteriaField" type="text" value="<%=Utils.formatToWeb(toValue, true)%>" onfocus="this.select();" onblur="ctrlHourField(this, '<fl:getMessage code="M302E" alt="Format incorrect. Veuillez corriger" js="true"/>');" tabindex="<%=nTabIndex++%>" size="5" maxlength="5">
<%
	} else if (fld.isBoolean()) {
						String initVal = flRequest.getRequestParameterOrAttribute("init" + fld.getInputName());
						if (sc == null) {
							HashMap<String, String> vectDefaultVals = fld.getStrDefaultValsList(session);
							if (initVal == null) {
								// voir si une valeur est pré-renseignée dans l'XML
								if (vectDefaultVals != null)
									if (vectDefaultVals.size() > 0)
										initVal = vectDefaultVals.get(ListBean.Field.DISPLAY);
							}
						}
						boolean isChecked = "1".equals(initVal) || "true".equalsIgnoreCase(initVal);
%>								
							<span class="<%=ListHelper.getFldClasses(fld)%>" style="diplay:inligne">
								<input class="<%=(j > 0 ? "leftMargin10 " : " ")%><%=ListHelper.getFldClasses(fld)%>" name="<%=Utils.formatToWeb(fld.getInputName(), true)%>" id="<%=Utils.formatToWeb(fld.getInputName(), true)%>" type="checkbox" value="1" tabindex="<%=nTabIndex++%>" <%=isChecked ? "checked" : ""%> >
								<label for="<%=Utils.formatToWeb(fld.getInputName(), true)%>" style="margin-right:5px" class="criteriaLabel<%=ListHelper.getFldClasses(fld)%>"> <%=Utils.formatToWeb(strDisp, false)%> </label>
							</span>
<%
	}
				} else {
					String strDisp = null;

					String strType = null;
					Vector values = (Vector) searchCriteria.get(fld.getFullName());
					if (values == null) {
						values = new Vector();
					}
					Vector vectChoices = fld.getChoiceList();
					switch (fld.getChoiceType()) {
					case ListBean.CHOICE_SELECT :
					case ListBean.CHOICE_SELECT_MULTIPLE :
						strDisp = "<" + fld.getDisplay(session) + ">";
%>
									<select title="<%= strDisp %>" name="<%= Utils.formatToWeb(fld.getFullName(), true) %>" class="criteriaField<%= (j > 0 ? " leftMargin10" : "")  %>"<%= fld.getChoiceType() == ListBean.CHOICE_SELECT ? "" : " multiple" %> tabindex="<%= nTabIndex++ %>">
										<option value=""><%= Utils.formatToWeb(strDisp, false) %></option>
<%
							for(int c = 0; c < vectChoices.size(); c++) {
								boolean isSelected = values.contains(Integer.toString(c));
								Hashtable row = (Hashtable)vectChoices.elementAt(c);

%>										<option value="<%= c %>" <%= isSelected ? "selected" : "" %> ><%= Utils.formatToWeb(row.get("Display"), false) %></option>
<%
							}

%>									</select>
<%
							break;
						case ListBean.CHOICE_RADIO:
							strType = "radio";
						case ListBean.CHOICE_CHECKBOX:
							strDisp = fld.getDisplay(session);
							if(strType == null) strType = "checkbox";
%>
									<%= Utils.formatToWeb(strDisp, false) %> :
<%
							for(int c = 0; c < vectChoices.size(); c++) {
								boolean isSelected = values.contains(Integer.toString(c));
								Hashtable row = (Hashtable)vectChoices.elementAt(c);

%>									<input <%= (j > 0 ? "class=\"leftMargin10\" " : " ")  %>name="<%= Utils.formatToWeb(fld.getFullName(), true) %>" type="<%= strType %>" value="<%= c %>" tabindex="<%= nTabIndex++ %>" <%= isSelected ? "checked" : "" %> >&nbsp;<%= Utils.replace(Utils.formatToWeb(row.get("Display"), false), " ", "&nbsp;") %>
<%
							}
%>
<%
							break;
					}
				}
			}
%><%= (i < (searchZone.getNbLines() - 1) ? "<br><br>" : "") %><%
		}
%>
						</div>
					</td>
					<td class="separation"><div class="separation"></div></td>
                    <td valign="top" style="width: 15%;">
	                    <table class="container" cellpadding="0">
							<% if (hasPagination) { %>
								<tr>
									<td colspan="2" style="text-align: left;">
										<select name="$$nb" class="criteriaField pagination auto">
											<% for (Iterator iter = pagination.iterator(); iter.hasNext();) {
													String value = (String)iter.next();
													boolean isAll = "all".equalsIgnoreCase(value);
													
											%>
												<option value="<%= Utils.formatToWeb(value, true) %>"<%= value.equals(nb) ? "selected" : "" %>><%= isAll ? Utils.getMessage(session, "M60CB", false, true, "Tout") : Utils.formatToWeb(value + " / " + Utils.getMessage(session, "M60CC", false, true, "page"), false) %></option>
											<% } 
												String previewAttribute=fHasPreview?"checked=\"true\"":"";
											%>
										</select><br/><%if (fHasPreview){ %>
										<label><input type="checkbox" name="$$preview" id="$$preview" <%= previewAttribute %>/><fl:getMessage code="L70B6" alt="aperçu"/></label><%} %>
									</td>
								</tr>
	                            <tr class="ligne_separation"><td></td></tr>
							<% } 
								String iconRunSearch=StringUtils.isEmpty(searchZone.getIconUrl())?"/icons/ico/valid_green2_long.gif":searchZone.getIconUrl();
								String iconRunSearchWithPreview="/icons/ico/valid2_long.gif";
								
							%>
							<tr>
								<td>
									<a id="valid-button" class="search-button inactive" title="<fl:getMessage code="A2009" alt="Rechercher"/>" href="javascript:executeSearch(); void('')"><img src="<fl:webapp/>/<%= iconRunSearch %>"/></a>
								</td>	
							</tr>		
							
	                    </table>
	                    <div id="zone-mandatory-message">
	                    <%  	                    
	                    	if (fHasMandatoryGroups) {  %>
							<a href="javascript:gGridCriteria.displayHelp('<%= gridName %>')"><img src="<fl:link url="/icons/ico/aide.gif" menu="false" list="false"/>"/></a>
	                    <%	} %>
	                    </div>
	                </td>
				</tr>
<%
	}
%>
			</table>
			</form>
		</div>
			<div id="infoTab" class="helpMsg upTab" style="display:none;">
				<div class="body">
				</div>
			</div>
		<div id="searchResult">
			<h2 <%= (isFirstTimeIn ? "" : "style=\"margin-top: 0px;\"")  %>>
				<span><fl:getMessage code="L200C" alt="Résultat"/> <a id="bShowHideCriteria" href="#" onclick="gGridCriteria.show(this)" class="bHideCriteria" title="<fl:getMessage code="M808D" alt="Cacher/Montrer les critères de recherche"/>">&nbsp;&nbsp;&nbsp;&nbsp;</a></span>
			</h2>
			<fl:grid allowUpdate="true" name="<%= lc %>" ajaxUrl="<%=(Utils.isEmpty(au))? \"/list_ajax.fl\" : au %>"/>
		</div>
	</div></div>	
	<div id="BTFoot" class="BTFoot">
		<div class="BTFootL"></div>
		<div class="BTFootMiddle">&nbsp;</div>
		<div class="BTFootR"></div>
	</div>
</div>
</body>