<%@ include file="/portal/include/include_java.jsp" %>
<fmt:setBundle basename="text.jsp.analytics.report_config.defaultFilters" />

<% /* These are IDs for operators in custom filters. */ %>
<c:set var="operatorEQUAL"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.EQUAL%></c:set>
<c:set var="operatorNOT_EQUAL"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.NOT_EQUAL%></c:set>
<c:set var="operatorLESS_THAN"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.LESS_THAN%></c:set>
<c:set var="operatorLESS_THAN_OR_EQUALS"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.LESS_THAN_OR_EQUALS%></c:set>
<c:set var="operatorGREATER_THAN"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.GREATER_THAN%></c:set>
<c:set var="operatorGREATER_THAN_OR_EQUALS"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.GREATER_THAN_OR_EQUALS%></c:set>
<c:set var="operatorIN"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.IN%></c:set>
<c:set var="operatorNOT_IN"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.NOT_IN%></c:set>
<c:set var="operatorBETWEEN"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.BETWEEN%></c:set>
<c:set var="operatorNOT_BETWEEN"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.NOT_BETWEEN%></c:set>
<c:set var="operatorLIKE"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.LIKE%></c:set>
<c:set var="operatorNOT_LIKE"><%=com.appiancorp.suiteapi.process.analytics2.Comparisons.NOT_LIKE%></c:set>


<c:choose><c:when test="${!empty param.filterType}">
<div class="dialogSection configFilter"><h2><fmt:message key="configureFilter" /></h2></c:when>
<c:otherwise><div class="dialogSection defltFilters"><h2><fmt:message key="defaultFilters.title"/>
 </h2></c:otherwise></c:choose><div class="asiToolbar">
    <a onclick="dynamicFilters.addNewFilter();" title="<fmt:message key='defaultFilters.toolbar.addFilterAlt'/>"><p:img page="/components/toolbar/img/add.gif" altKey="defaultFilters.toolbar.addFilterAlt" /><fmt:message key="defaultFilters.toolbar.addFilter"/></a>
  </div>
 <c:if test="${!empty param.filterType}">
    <h4 id="filterNameField"><fmt:message key="FilterDisplayName" />  <input type="text" maxlength="30"  class="iText" style="width: 200px;" data="CurrentFilter.name" /><div id="filterNameError" style="display:block; color:red; margin-left: 125px; font-weight:normal"><fmt:message key="filterNameError" /></div></h4>
 </c:if>
  <h4  style="font-weight:normal"><fmt:message key="defaultFilters.subheader.onlyInclude"/></h4> 

<div class="subSection">
  <div class="defaultFilters" style="margin-left: 25px;" id="roStaticFilters_<c:out value="${param.filterType}" />">
<c:if test="${empty param.filterType}">
   <ui:if test="StaticFilters.runningFilter"><label><input type="checkbox" data="StaticFilters.runningFilter.apply" /></label> <fmt:message key="defaultFilters.1"/><br />
    </ui:if>
    <ui:if test="StaticFilters.completedFilter">
      <label><input type="checkbox" data="StaticFilters.completedFilter.apply" /></label> <fmt:message key="defaultFilters.2"/><br />
    </ui:if>
 </c:if>
    <ui:if test="StaticFilters.lastNCompletedFilter">
      <label><input type="checkbox" id="<c:out value="${param.filterType}" />_lastNCompletedCheckbox" data="StaticFilters.lastNCompletedFilter.apply" /></label> <fmt:message key="defaultFilters.3"> <fmt:param><label><input type="textbox" size="3" data="StaticFilters.lastNCompletedFilter.completedCount" onfocus="setCheckbox('<asi:out value='${param.filterType}' encoding='js-html'/>_lastNCompleted',true);this.select();" onblur="validatePositive('<asi:out value='${param.filterType}' encoding='js-html'/>_lastNCompleted', this, 'long');"/></label></fmt:param></fmt:message> <br />
      <span id="<c:out value="${param.filterType}" />_lastNCompletedError" class="filterError" style="display:none"> <fmt:message key="defaultFilters.3.error" /><br/></span>
    </ui:if>
    <ui:if test="StaticFilters.lastNDaysFilter">
      <label><input type="checkbox" id="<c:out value="${param.filterType}" />_lastNDaysCheckbox" data="StaticFilters.lastNDaysFilter.apply" /></label> <fmt:message key="defaultFilters.4"> <fmt:param>  <label><input type="textbox" size="3" data="StaticFilters.lastNDaysFilter.dayCount" onfocus="setCheckbox('<asi:out value='${param.filterType}' encoding='js-html'/>_lastNDays',true); this.select();" 
      onblur="validatePositive('<asi:out value='${param.filterType}' encoding='js-html'/>_lastNDays', this); "/></label>
      </fmt:param>
      </fmt:message><br />
      <span id="<c:out value="${param.filterType}" />_lastNDaysError" class="filterError" style="display:none"><fmt:message key="defaultFilters.4.error" /><br/></span>
    </ui:if>
    <ui:if test="StaticFilters.outsideNStandardDeviationsFilter">
      <label><input type="checkbox" id="<c:out value="${param.filterType}" />_outsideNStandardDeviationsCheckbox" data="StaticFilters.outsideNStandardDeviationsFilter.apply" /></label> <fmt:message key="defaultFilters.5">
        <fmt:param>
          <label><input type="textbox" size="3" data="StaticFilters.outsideNStandardDeviationsFilter.standardDeviationCount" onfocus="setCheckbox('<asi:out value='${param.filterType}' encoding='js-html'/>_outsideNStandardDeviations',true);this.select();" onblur="validatePositive('<asi:out value='${param.filterType}' encoding='js-html'/>_outsideNStandardDeviations', this);"/></label>
        </fmt:param>
     </fmt:message><br />
     <span id="<c:out value="${param.filterType}" />_outsideNStandardDeviationsError" class="filterError" style="display:none"><fmt:message key="defaultFilters.5.error" /><br /></span>
    </ui:if>
    <ui:if test="StaticFilters.aheadOfScheduleFilter">
      <label><input type="checkbox" data="StaticFilters.aheadOfScheduleFilter.apply" /></label> <fmt:message key="defaultFilters.6" /><br />
    </ui:if>
    <ui:if test="StaticFilters.behindScheduleFilter">
      <label><input type="checkbox" data="StaticFilters.behindScheduleFilter.apply" /></label> <fmt:message key="defaultFilters.7" /><br />
    </ui:if>
    <ui:if test="StaticFilters.dueTodayFilter">
      <label><input type="checkbox" data="StaticFilters.dueTodayFilter.apply" /></label> <fmt:message key="defaultFilters.8" /><br />
    </ui:if>

    <script type="text/javascript">
    function setCheckbox(id, checked){
      var checkbox = getObject(id+'Checkbox');
      getObject(id+'Checkbox').checked=checked;
      getObject(id+'Checkbox').onclick();
    }
    function validatePositive(id, input, wholeNumber){
      getObject(id+'Error').style.display='none';
      delete addFilter.errors[id];
      if(input.value === '') { 
      	setCheckbox(id, false); 
      	input.value = '0';
      	input.onchange();
      } else if(!input.value.validate('positive') || (wholeNumber && !input.value.validate(wholeNumber))){ 
        addFilter.errors[id] = $$(id+'Error').innerHTML.stripHTML();
        input.value = ''; 
        try{ input.focus(); }catch(e){};
        getObject(id+'Error').style.display='';
       }
    }
    var addFilter = {
         errors:{},
         init:function() {
           if($$('roStaticFilters_quick')){
            $$('filterNameError').style.display = 'none';
            var filterIndex = parseInt('<asi:out value="${param.qfi}" encoding="js"/>');
              if (isNaN(filterIndex)) {
                reportsSynchronizer.dataSources.CurrentFilter = addFilter.getNewFilter();
                reportsSynchronizer.dataSources.StaticFilters = reportsSynchronizer.dataSources.CurrentFilter.staticFilters;

              } else {
                reportsSynchronizer.dataSources.CurrentFilter = copyBean(reportsSynchronizer.dataSources.QuickFilter.items[filterIndex]);
                reportsSynchronizer.dataSources.StaticFilters = copyBean(reportsSynchronizer.dataSources.CurrentFilter.staticFilters);
              }
           }else reportsSynchronizer.dataSources.StaticFilters = reportsSynchronizer.dataSources.Report.data.staticFilters;

            reportsSynchronizer.synchronize('roStaticFilters_<asi:out value="${param.filterType}" encoding="js"/>');
            if($$('filterNameField')) reportsSynchronizer.synchronize('filterNameField');
         },
         getNewFilter:function() {
              return {staticFilters:{
                    outsideNStandardDeviationsFilter:{filterType:3,apply:false,standardDeviationCount:0},
                    behindScheduleFilter:{filterType:7,apply:false},
                    aheadOfScheduleFilter:{filterType:2,apply:false},
                    lastNDaysFilter:{filterType:1,apply:false,dayCount:0},
                    dueTodayFilter:{filterType:8,apply:false},
                    lastNCompletedFilter:{filterType:5,apply:false,completedCount:0}
                    },
                 dynamicFilters:[],
                 name:''
                 };
          },
      validateFilter:function(element){
        var isError = false;
        $$('filterNameError').style.display = 'none';
        if(reportsSynchronizer.dataSources.CurrentFilter.name == ''){
          $$('filterNameError').style.display = '';
          isError = true;
        }
        var error = dynamicFilters.validate();
        if(error){
          isError = true;
          asi.alert(error);
          }
        if(!isError) addFilter.saveAndClose(element);

      },
        cancel:function(element) {
          reportsSynchronizer.dataSources.StaticFilters = reportsSynchronizer.dataSources.Report.data.staticFilters;
          reportsSynchronizer.dataSources.DynamicFilters = reportsSynchronizer.dataSources.Report.data.dynamicFilters;
          DIALOG.hide(element);
          addFilter=null;
        },
        saveAndClose:function(element) {
          if (!isEmpty(addFilter.errors)) { return false; }
          var filterIndex = parseInt('<asi:out value="${param.qfi}" encoding="js"/>');
          var items = reportsSynchronizer.dataSources.QuickFilter.items;
          reportsSynchronizer.dataSources.CurrentFilter.staticFilters = reportsSynchronizer.dataSources.StaticFilters;
          reportsSynchronizer.dataSources.CurrentFilter.dynamicFilters = reportsSynchronizer.dataSources.DynamicFilters;
            if (isNaN(filterIndex)) {   
             items.push(reportsSynchronizer.dataSources.CurrentFilter);
            } else {
              items[filterIndex]=reportsSynchronizer.dataSources.CurrentFilter;
            }
          editFilterSetGrid.regenerateRows(true);
          reportsSynchronizer.synchronize('editFilterSetGrid');
          addFilter.init();
          addFilter.cancel(element);
        }
    }
    addFilter.init();
</script>

     <c:import url="/analytics/report_config/dynamicFilters.jsp" charEncoding="UTF-8" />
  </div>
 </div>
</div>
<c:if test="${empty param.filterType}">
<c:import url="/analytics/report_config/quickFiltersGrid.jsp?filterType=${param.filterType}" charEncoding="UTF-8" />
</c:if>
  <br style="clear:both" />