Initial OpenECOMP policy/engine commit
[policy/engine.git] / ecomp-sdk-app / src / main / webapp / WEB-INF / fusion / raptor / wizard_schedule_formfield_include.jsp
1 <%--
2   ================================================================================
3   eCOMP Portal SDK
4   ================================================================================
5   Copyright (C) 2017 AT&T Intellectual Property
6   ================================================================================
7   Licensed under the Apache License, Version 2.0 (the "License");
8   you may not use this file except in compliance with the License.
9   You may obtain a copy of the License at
10   
11        http://www.apache.org/licenses/LICENSE-2.0
12   
13   Unless required by applicable law or agreed to in writing, software
14   distributed under the License is distributed on an "AS IS" BASIS,
15   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   See the License for the specific language governing permissions and
17   limitations under the License.
18   ================================================================================
19   --%>
20 <%--
21  Name: wizard_schedule_formfield_include.jsp
22  Use : Shows formfield of the report in the schedule page. 
23  
24  Change Log
25  ==========
26  
27  28-Aug-2009 : Version 8.5.1 (Sundar); Checkbox and Radio button are also handled. 
28  18-Aug-2009 : Version 8.5.1 (Sundar); 
29                                 
30                                 a) ajax.js is loaded in startup for AJAX functionality.
31                                 b) showArgPopupNew is modified as per report_form.jsp
32                                 c) Ajax function is added very similiar to report_form.jsp
33                                 d) "auto" bug is resolved.
34
35 14-Jul-2009 : Version 8.4 (Sundar); 
36                                 
37                                 <UL> 
38                                 <LI> Shows the form field of the first Dashboard report in schedule page if the report is dashboard.</LI>
39                                 </UL>
40 --%>
41 <%@ page import="java.io.*" %>
42 <%@ page import="java.util.*" %>
43 <%@ page import="java.text.*" %>
44 <%@ page import="org.openecomp.portalsdk.analytics.model.runtime.*" %>
45 <%@ page import="org.openecomp.portalsdk.analytics.system.*" %>
46 <%@ page import="org.openecomp.portalsdk.analytics.util.*" %>
47 <%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportDefinition" %>
48 <%@ page import="org.openecomp.portalsdk.analytics.model.ReportHandler" %>
49 <%@ page import="org.openecomp.portalsdk.analytics.xmlobj.JavascriptItemType"%>
50 <%@ page import="java.util.regex.*"%>
51 <%@ page import="javax.servlet.http.*"%>
52 <%@ page import="org.openecomp.portalsdk.analytics.model.definition.ReportSchedule" %>
53
54
55 <%      
56     ReportDefinition rdef = (ReportDefinition) request.getAttribute(AppConstants.SI_REPORT_DEFINITION);
57     ReportHandler rh = new ReportHandler();
58     ReportRuntime rr = rh.loadReportRuntime(request, rdef.getReportID());
59     request.getSession().setAttribute(AppConstants.SI_REPORT_RUNTIME, rr);
60     boolean isDashboard =  rr.isDashboardType();
61     ReportFormFields rff = rr.getReportFormFields();
62         ReportFormFields rff1 = (ReportFormFields) rff.clone();
63         ReportFormFields rff2 = (ReportFormFields) rff.clone();
64         ReportFormFields rff5 = (ReportFormFields) rff.clone();
65         boolean isFirstTime = nvl(request.getParameter("refresh")).toUpperCase().startsWith("Y");
66         ReportSchedule reportSchedule = (ReportSchedule) request.getSession().getAttribute(AppConstants.SI_REPORT_SCHEDULE);
67
68     int dashboardFlag = 0;
69         ReportRuntime rr1 = null;
70         java.text.SimpleDateFormat sdf = null;
71
72 %>
73
74 <script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/raptor.js"></script>
75 <script language="JavaScript" src="<%= AppUtils.getBaseFolderURL() %>js/ajax.js"></script>
76 <%--=(rr.getJavascriptElement()!=null && rr.getJavascriptElement().length()>0)?rr.getJavascriptElement().replaceAll("formd","forma"):""--%>
77 <script language="JavaScript">
78 <!--
79 function showArgPopup(fieldName, jsTargetField) {
80         var url = "<%= AppUtils.getRaptorActionURL() %>report.popup.field&<%= AppConstants.RI_FIELD_NAME %>="
81                                                 + fieldName+ "&<%= AppConstants.RI_JS_TARGET_FIELD %>="+jsTargetField;
82         var w = window.open(url, "formLookup", "width=440,height=400,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
83         w.focus();
84         w.opener = this;
85 }   // showArgPopup
86
87 function showArgPopupNew(fld, targetField) {
88         var newElementCreated = true;
89
90         var oldTarget = null;
91         var oldRAction = null;
92         var frm = document.forma;
93         var w = window.open("<%= AppUtils.getBaseFolderURL() %>loading.jsp", "formLookup", "width=440,height=400,location=no,menubar=no,toolbar=no,status=no,resizable=yes,scrollbars=yes");
94         
95         oldTarget = frm.target ;
96         oldRAction = frm.r_action.value ;
97         frm.target = "formLookup";
98         frm.r_action.value = "report.popup.field";
99         if(document.getElementById("<%= AppConstants.RI_FIELD_NAME %>")) {
100                 frm.removeChild(document.getElementById("<%= AppConstants.RI_FIELD_NAME %>"));
101                 frm.removeChild(document.getElementById("<%= AppConstants.RI_JS_TARGET_FIELD %>"));
102         }
103         var fld1 = document.createElement("input");
104         fld1.setAttribute("type", "hidden");
105         fld1.setAttribute("name", "<%= AppConstants.RI_FIELD_NAME %>");
106         fld1.setAttribute("id", "<%= AppConstants.RI_FIELD_NAME %>");
107         fld1.setAttribute("value", fld);
108
109         var fld2 = document.createElement("input");
110         fld2.setAttribute("type", "hidden");
111         fld2.setAttribute("name", "<%= AppConstants.RI_JS_TARGET_FIELD %>");
112         fld2.setAttribute("id", "<%= AppConstants.RI_JS_TARGET_FIELD %>");
113         fld2.setAttribute("value", targetField);
114         
115         frm.appendChild(fld1);  
116         frm.appendChild(fld2);  
117         frm.submit();
118         w.focus();
119         w.opener = this;
120         
121         frm.target = oldTarget ;
122         frm.r_action.value = oldRAction ;
123         
124         
125 }   // showArgPopupNew
126
127 function validateForm() {
128    //if(document.getElementById("schedEnabled").checked && document.getElementById("schedEnabled").value == 'Y') {
129         <%for(rff.resetNext(); rff.hasNext(); ) { %>
130                 <%= rff.getNext().getValidateJavaScript().replaceAll("formd","forma") %>
131         <%}%>
132         
133         var formfields_value="";
134         
135         for(i=0; i<document.forma.elements.length;i++) {        
136                 if((document.forma.elements[i].name).substring(0,2)=='ff') {
137                         //alert("i-" + i+ " "+ document.forma.elements[i].name + " " + document.forma.elements[i].type + " " + document.forma.elements[i].value);
138                         var obj = document.forma.elements[i];
139                         if ((document.forma.elements[i].tagName == "SELECT") /*&& !(obj.name.match('_Hr') || obj.name.match('_Min') || obj.name.match('_Sec'))*/ ){
140                                 var selString = "";
141                                         for (var intLoop=0; intLoop < obj.length; intLoop++) {
142                                                  if (obj[intLoop].selected) {
143                                                     formfields_value += "&"+document.forma.elements[i].name+"=" + escape(obj[intLoop].value);
144                                             
145                                          }
146                                 }
147                         }
148                         else{
149                                 if(escape(document.forma.elements[i].value).charAt(0) == '[' ) {
150                                         var nameObj = document.forma.elements[i].name;
151                                         if(nameObj.indexOf("_")!=-1 && (nameObj.match('_Hr') || nameObj.match('_Min') || nameObj.match('_Sec')) ) {
152                                         } else {
153                         formfields_value += "&"+document.forma.elements[i].name+"="+escape(document.forma.elements[i].value);
154         }
155                                 } else {
156                                         var opt = document.forma.elements[i].name;
157                                         var optValue = "";
158                                         //alert('not in select' + opt);
159                                         var auto_incr = '<%=Boolean.toString(Globals.isScheduleDateParamAutoIncr())%>';
160                                         //alert(auto_incr);
161                                         //alert(document.getElementById(opt+"_auto") + " " + (opt+"_auto"));
162                                         if(document.getElementById(opt+"_auto")/* || opt.lastIndexOf("_auto")>= 0 */) {
163                                                         for(k=0; k<document.forma.elements.length;k++) {        
164                                                                 if(document.forma.elements[k].name == opt) {
165                                                                         optValue = document.forma.elements[k].value;
166                                                                 }
167                                                         }
168                                                         //alert('opt info  ' +opt + " "+ optValue);
169                                                         
170                                                          if(auto_incr == 'true') {
171                                                                  formfields_value += "&"+document.forma.elements[i].name+"_auto="+escape(optValue);
172                                                          } else if (document.getElementById(opt).checked) {
173                                                                 formfields_value += "&"+document.forma.elements[i].name+"_auto="+escape(optValue);
174                                                          } /*else 
175                                                                  formfields_value += "&"+document.forma.elements[i].name+"="+escape(document.forma.elements[i].value);*/
176                                         } else if (opt.lastIndexOf("_auto") < 0){
177                         if(document.forma.elements[i].type == 'checkbox' || document.forma.elements[i].type == 'radio') {
178                                 if (document.forma.elements[i].checked)
179                                                                 formfields_value += "&"+document.forma.elements[i].name+"="+escape(document.forma.elements[i].value);
180                         } else {
181                                                         formfields_value += "&"+document.forma.elements[i].name+"="+escape(document.forma.elements[i].value);
182                         }
183                                         }
184                                 }
185                 }
186                     }
187         }
188         <% 
189            String  sessionParams[] = Globals.getSessionParamsForScheduling().split(",");
190            String formfields = "";
191            for (int i=0; i<sessionParams.length; i++) {
192                    if(sessionParams[i].equals("login_id"))
193                                    formfields += "&"+java.net.URLEncoder.encode("login_id","UTF-8")+"="+ java.net.URLEncoder.encode(AppUtils.getUserBackdoorLoginId(request),"UTF-8");
194                    else {
195                         if(session.getAttribute(sessionParams[i])!=null)
196                                                 formfields += "&"+ java.net.URLEncoder.encode(sessionParams[i], "UTF-8") + "="+ java.net.URLEncoder.encode((String)session.getAttribute(sessionParams[i]),"UTF-8");
197                    }
198            }
199         %>
200         formfields_value += '&<%= AppConstants.RI_NEXT_PAGE %>=-1';
201         formfields_value += '<%=formfields%>';
202         //alert(formfields_value);
203         document.getElementById("formFields").value = formfields_value;
204            var javascriptText = "<%=getCallableJavascriptForSubmit(rr)%>";
205             javascriptText = javascriptText.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
206             if(javascriptText.length > 0) {
207                           if(<%=(getCallableJavascriptForSubmit(rr).trim().length())>0?getCallableJavascriptForSubmit(rr).replaceAll("formd","forma"):"false"%>)
208                   return true;
209                           else
210                                   return false;
211                   } 
212      // }       
213         return true;
214 }       // validateForm
215 function systemDateTime() {
216   <%
217   sdf = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss z");
218   sdf.setTimeZone(TimeZone.getTimeZone(Globals.getTimeZone()));
219   String sysDateTime = sdf.format(new java.util.Date());
220   %>
221   var sysdate = "<%=sysDateTime%>";
222   return sysdate;
223 }
224
225 function systemDate() {
226   <%
227   sdf = new java.text.SimpleDateFormat("MM/dd/yyyy");
228   sdf.setTimeZone(TimeZone.getTimeZone(Globals.getTimeZone()));
229   String sysDate = sdf.format(new java.util.Date());
230   %>
231   var sysdate = "<%=sysDate%>";
232   return sysdate;
233 }
234 //-->
235 </script>
236         <%
237   if(rr.getReportType().equals(AppConstants.RT_DASHBOARD)) {
238           dashboardFlag = 1;
239       String strHTML = rr.getDashboardLayoutHTML(); //getdashboardLayoutHTML();
240       String rep_id = parseAndGetFirstReportID(strHTML);
241       ReportHandler rh1 = new ReportHandler();
242           rr1 = null;
243           int requestFlag = 1;
244           try {
245                         rr1 = rh1.loadReportRuntime(request, rep_id, true, requestFlag);
246           } catch(Exception e) {
247       }
248           rff = rr1.getReportFormFields();
249   }
250   %>    
251         <%if((dashboardFlag == 0 && rr.needFormInput()) || (dashboardFlag == 1 && rr1.needFormInput())) { %>
252         <tr>
253                 
254                 <td class=rbg3 align="center" width="50%" valign="middle" colspan=2><font class=rtabletext>
255                         Please input values into the Form Fields for email attachment. Note those fields user must provide value can not leave as blank.
256                         </font>
257                         <table width="94%" border="0" cellspacing="1" cellpadding="3" align=center>
258                                 <%
259                                 int colidx = 0;
260                                 java.util.HashMap paramsMap = Globals.getRequestParamtersMap(request, false);
261                                 java.util.HashMap getScheduleMap = getFormFieldsHashMap (request, reportSchedule.getFormFields());
262                                 java.util.HashMap paramsScheduleMap = Globals.getRequestParametersMap(request, getScheduleMap); 
263                                 for (int i = 0; i < rff.size(); i ++){
264                                         FormField ff = (FormField) rff.get(i);
265                                         ff.setDbInfo(rr.getDbInfo());
266                                         ff.setUserId(AppUtils.getUserID(request));                                      
267                                         if(ff.getFieldType().equals(FormField.FFT_HIDDEN)) {
268                                                 %>
269                                                                         <%
270                                                                           if(nvl(reportSchedule.getFormFields()).length() <= 0)
271                                                                                 out.println(ff.getHtml(rr.getParamValue(ff.getFieldName()), paramsMap, rr, true));
272                                                                           else
273                                                                                 out.println(ff.getHtml(getParameterString(request, ff.getFieldName(), getScheduleMap), paramsScheduleMap, rr, true).replaceAll("formd","forma"));  
274                                                                                 
275                                                                           
276                                                                         %>
277                                                 <%              }                                       
278                                         if(!ff.getFieldType().equals(FormField.FFT_HIDDEN) && ff.isVisible()) {
279
280                                 %>
281                                 <%if (colidx == 0){%><tr><%}%>
282                                         <td class=rbg3 width="10%" align="right" nowrap='yes'>
283                                                 <font class=rtabletext>
284                                                         <%if (!ff.getFieldType().equals(FormField.FFT_BLANK)){%> 
285                                                                 <%= ff.getDisplayNameHtml() %>:
286                                                         <%}%>
287                                                 </font>
288                                         </td> 
289                                         <td class=rbg3 width="15%" align="left" nowrap='yes'>
290                                                 <%-- ff.getHtml(rr.getParamValue(ff.getFieldName()), paramsMap,rr, true).replaceAll("formd","forma") --%>
291                                                 <%
292                                                                           if(nvl(reportSchedule.getFormFields()).length() <= 0)
293                                                                                 out.println(ff.getHtml(rr.getParamValue(ff.getFieldName()), paramsMap, rr, true).replaceAll("formd","forma"));
294                                                                           else
295                                                                                 out.println(ff.getHtml(getParameterString(request, ff.getFieldName(), getScheduleMap), paramsScheduleMap, rr, true).replaceAll("formd","forma"));  
296                                                 %>
297                                         </td>
298                                         <td ></td>
299                                         <%colidx++;%>
300                                 <%if (colidx == rr.getNumFormColsAsInt()){%></tr><%colidx=0;}%>
301                         <%    } 
302                                 }   //for  %>
303                         </table>
304                 </td>
305         </tr>           
306 <%      } //if(rr.needFormInput()) %>
307
308 <input type='hidden' name='formFields' value=''/>
309
310 <script>
311 <% if(!isDashboard) {  %>
312 var map = new Object();
313 var defaultValues = new Object();
314 <% rff = rr.getReportFormFields();
315 int idx = 0;
316 int row = 0;
317         
318 java.util.Map fNameMap = new java.util.HashMap();
319 for(rff.resetNext(); rff.hasNext(); idx++) { 
320         FormField ff = rff.getNext();
321         fNameMap.put(ff.getFieldName(), ff.getFieldDisplayName());
322 }
323
324
325 idx = 0;
326 row = 0;
327
328 for(rff.resetNext(); rff.hasNext(); idx++) { 
329         FormField ff = rff.getNext();
330         if(!(ff.getFieldType().equals(FormField.FFT_BLANK)) 
331                         && ff.isVisible() && !(ff.getFieldType().equals(FormField.FFT_TEXT_W_POPUP))) {
332         %>
333         
334         
335          <%
336         
337           if( ff.getDependsOn() != null && ff.getDependsOn().trim().length()>0 ) {
338                 %> // <%=ff.getFieldName()%>    <%=ff.getDependsOn()%>
339              if(document.forma.<%=ff.getFieldName()%>) {
340                                 document.forma.<%=ff.getFieldName()%>.onchange = updateDropDown;
341                  }
342                         map['<%=ff.getDependsOn()%>'] = '<%=ff.getFieldName()%>';
343                         // Made double quotes as it conflicts with query.
344                         defaultValues['<%=ff.getFieldName()%>'] = "<%=rr.getParamValue(ff.getFieldName())%>" ;
345                 <%
346           }
347      }
348 }
349 %>
350
351 var oldTarget = null;
352 var oldr_action = null;
353         var ajax = new Array();
354
355         function getOpts(oSelect) {
356                 var opt, i = 0, selVals = new Array();
357                 //alert(oSelect.length + " " + oSelect.options);
358                 if(oSelect && oSelect.options) { 
359                 while (opt = oSelect[i++]) { 
360                         if (opt.selected) {
361                           selVals[selVals.length] = encodeURIComponent(opt.value);
362                           //alert(opt.value)
363                 }
364                 }
365                 //return selVals;
366                 } else {
367                         if(oSelect && oSelect.value)
368                                 selVals[0] = encodeURIComponent(oSelect.value);
369                         //return selVals;
370                 }
371                 return selVals;
372         }
373
374         function trim(str) {
375                 return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
376         }
377                 
378         function updateDropDown(srcElem_) {
379
380                 var srcElem = null;
381                 if(srcElem_ == null) { 
382                         if (event != null)  
383                                 srcElem = event.srcElement; 
384                 } else {
385                         srcElem = srcElem_; 
386                 }
387                 //alert(srcElem.name);
388                 //var parentFormField = srcElem.options[srcElem.selectedIndex].value;
389                 if(srcElem !=null) {
390                 var parentFormField = getOpts(srcElem);
391                 var parentFieldName = srcElem.name;
392                 
393                 //alert(parentFormField);
394                 var parentFieldValue = "";
395                 for (i=0;i<=parentFormField.length-1;i++) {
396                         if(parentFormField[i] != 'undefined')
397                         parentFieldValue = parentFieldValue+srcElem.name+'='+parentFormField[i];
398                         if(i<parentFormField.length-1)
399                                 parentFieldValue = parentFieldValue + "&";
400                 }
401                 //alert("ParentFieldValue " +  parentFieldValue + " srcElem.name " + srcElem.name); 
402                 
403         if(srcElem != null && srcElem.name!=null) {
404         <%
405                 FormField ff =  null;
406                 String javaScriptText = "";
407                 String javaScriptAfterChainingText = "";
408         %> 
409         <%              
410                 for(rff5.resetNext(); rff5.hasNext();idx++) { 
411                         ff = rff5.getNext();
412         %>              
413                     if(srcElem && srcElem.name && srcElem.name == "<%=ff.getFieldName()%>") {
414                          <% javaScriptText = nvl(ff.getCallableOnChangeJavascript(ff.getFieldName(), rr)); 
415                     javaScriptAfterChainingText = nvl(ff.getCallableAfterChainingJavascript(ff.getFieldName(), rr)); 
416                             if(javaScriptText.length() > 0 ) { %>
417                                                 <%=javaScriptText+";"%>
418                                                 //document.forma.<%--=ff.getFieldName()--%>//.onchange = 
419                              <% } %>
420                     }                                               
421          <%     } %>
422          <%     for(rff5.resetNext(); rff5.hasNext();idx++) { 
423         %> 
424         <%              
425                         ff = rff5.getNext();
426                 %>
427                     //alert (" In For " + "<%=ff.getFieldName()%> <%=rff.hasNext()%>");
428                 <%      
429                         if(!(ff.getFieldType().equals(FormField.FFT_BLANK))) { 
430                                 /*&& ff.isVisible()*/ /*&& !(ff.getFieldType().equals(FormField.FFT_TEXT_W_POPUP))*/
431         %>
432                                 <% if( ff.getDependsOn() != null && !ff.getDependsOn().equals("") ) { 
433                                      if(!(ff.getFieldType().equals(FormField.FFT_TEXT_W_POPUP))) { %>
434                                         <% if(!ff.getFieldType().equals(FormField.FFT_HIDDEN)) { %>
435                                         if(srcElem && srcElem.name && srcElem.name == "<%=ff.getFieldName()%>") {
436                                                 parentFieldValue = parentFieldValue + '&parentFieldName=<%=ff.getFieldName()%>';                                         
437                                                 //if(document.forma.<%=ff.getFieldName()%> && document.forma.<%=ff.getFieldName()%>.style) document.forma.<%=ff.getFieldName()%>.style.display='none';
438                                          //if(document.forma.<%=ff.getFieldName()%> && document.forma.<%=ff.getFieldName()%>.style) document.forma.<%=ff.getFieldName()%>.style.display='none';
439                                                  if(document.getElementById("<%=ff.getFieldName()%>_content") && document.getElementById("<%=ff.getFieldName()%>_content").style ) document.getElementById('<%=ff.getFieldName()+"_content"%>').style.display='block';
440                                         }
441                                                 
442                                     <% } %>
443                                     <% } %>
444                                 var otherFieldValue = "";
445
446                 <%
447                             for(rff1.resetNext(); rff1.hasNext();) {
448                                 FormField ff1 = rff1.getNext(); 
449                                                 if( ff1.getDependsOn() != null && !ff1.getDependsOn().equals("") ) { %> 
450                                             //alert (srcElem.name + " <%=ff1.getFieldName()%>");  
451                                             if(srcElem && srcElem.name && srcElem.name != '<%=ff1.getFieldName()%>') {
452                                                     var otherFormFields = getOpts(document.forma.<%=ff1.getFieldName()%>);
453                                                         for (i=0;i<=otherFormFields.length-1;i++) {
454                                                                 if(otherFormFields[i] != 'undefined')
455                                                                 otherFieldValue = otherFieldValue+'<%=ff1.getFieldName()%>'+'='+escape(otherFormFields[i])+'&';
456                                                                 if(i<otherFormFields.length-1)
457                                                                         otherFieldValue = otherFieldValue + "&";
458                                                         }
459                                                      
460                                             }
461                                             <% } 
462                                     }
463       %>                        
464                  //alert("IF OPTIONS 0 AFTER <%=ff.getFieldName()%>" + parentFormField);
465                 
466                                 //if(parentFormField.length>0) {
467                                 //if(srcElem.name == "<%=ff.getFieldName()%>") {
468                                         if(document.forma.<%=ff.getFieldName()%> && document.forma.<%=ff.getFieldName()%>.options) 
469                                                 document.forma.<%=ff.getFieldName()%>.options.length = 0;
470                                   try { 
471                                         var index = ajax.length;
472                                         ajax[index] = new sack("raptor.htm");
473                                         //alert("P" + parentFieldValue);
474                                         //alert("O" + otherFieldValue);
475                                         ajax[index].method='POST';
476                                         //alert('raptor.htm?action=raptor&r_action=report.childDropDown&parentFieldName='+srcElem.name+'&fieldName=<%=ff.getFieldName()%>&'+parentFieldValue+'&'+otherFieldValue);
477                                                 ajax[index].setVar("action","raptor");
478                                                 ajax[index].setVar("r_action","report.childDropDown");
479                                                 ajax[index].setVar("fieldName","<%=ff.getFieldName()%>");
480                                                 ajax[index].setVar("inSchedule","Y");
481                                                 //alert("parentFieldValue " + parentFieldValue);
482                                                 var parentFieldTokens = parentFieldValue.split( "&" );
483                                                 var parentNameValuePair = "";
484                                                 var nameValuePairTokens;
485                                                 for (var i = 0; i < parentFieldTokens.length; i++) {
486                                                         parentNameValuePair = parentFieldTokens[i];
487                                                         parentNameValuePairTokens = parentNameValuePair.split("=");
488                                                         if (parentNameValuePairTokens.length>0) {
489                                                                 //alert("ParentNameValuePairTokens " + parentNameValuePairTokens[0]+ " " + decodeURIComponent(parentNameValuePairTokens[1]));
490                                                                 ajax[index].setVar(parentNameValuePairTokens[0], decodeURIComponent(parentNameValuePairTokens[1]), i);
491                                                         }
492                                                 }
493                                                 //alert("otherFieldValue " + otherFieldValue + " " );
494                                                 if(otherFieldValue && otherFieldValue.length>0) {
495                                                         if (otherFieldValue.substr(otherFieldValue.length-1) == '&')
496                                                                 otherFieldValue = otherFieldValue.substr(0,otherFieldValue.length-1); 
497                                                 }
498                                                 //alert("otherFieldValue1 " + otherFieldValue + " " );
499                                                 
500                                                 var otherFieldTokens = otherFieldValue.split( "&" );
501                                                 var otherNameValuePair = "";
502                                                 var otherNameValuePairTokens;
503                                                 for (var k = 0; k < otherFieldTokens.length; k++) {
504                                                         otherNameValuePair = otherFieldTokens[k];
505                                                         otherNameValuePairTokens = otherNameValuePair.split("=");
506                                                         if (otherNameValuePairTokens.length>0) {
507                                                                 //alert("otherNameValuePairTokens " + otherNameValuePairTokens[0]+ " " + decodeURIComponent(otherNameValuePairTokens[1]));
508                                                                 ajax[index].setVar(otherNameValuePairTokens[0], decodeURIComponent(otherNameValuePairTokens[1]), k);
509                                                         }
510                                                 }
511                                                 //ajax[index].requestFile = 'raptor.htm?action=raptor&r_action=report.childDropDown&fieldName=<%=ff.getFieldName()%>&'+parentFieldValue+'&'+otherFieldValue;    // Specifying which file to get
512                                         ajax[index].onCompletion = function(){ createChildFormField(index, document.forma.<%=ff.getFieldName()%>) };    // Specify function that will be executed after file has been found
513                                         ajax[index].onError     = function() {bringBacktoNormal(index, document.forma.<%=ff.getFieldName()%>);}
514                                         ajax[index].onFail              = function() {bringBacktoNormal(index, document.forma.<%=ff.getFieldName()%>);}
515                                         //ajax[index].onCompletion = function(){ var obj = null; obj = document.forma.<%=ff.getFieldName()%>;eval(ajax[index].response);document.getElementById(obj.name+"_content").style.display='none';obj.style.display='block';  };        // Specify function that will be executed after file has been found
516                                         ajax[index].runAJAX(null,false,100);            // Execute AJAX function
517                                         //alert(ajax[index].readyState);
518                                         //while (ajax[index].xmlhttp.readyState == 4 || ajax[index].xmlhttp.readyState == "complete" ) {
519                                         //}
520                                         //while(ajax[index].xmlhttp.readyState ==4){
521                                         //       alert("ready State " + ajax[index].xmlhttp.readyState);
522                                         //}
523                                         //setTimeout("Func1()", 5000);
524                                     } catch (err) {
525                                         if(err=="session_exp") {
526                                                 document.write("session has been expired.");
527                                         }
528                                     }                                   
529                                         
530                                 //} else {
531                                         <% if(!ff.getFieldType().equals(FormField.FFT_HIDDEN)) { %>
532                                                 if(document.getElementById("<%=ff.getFieldName()%>_content") && document.getElementById("<%=ff.getFieldName()%>_content").style ) document.getElementById("<%=ff.getFieldName()%>_content").style.display='none';
533                                                 //if(document.forma.<%=ff.getFieldName()%> && document.forma.<%=ff.getFieldName()%>.style) document.forma.<%=ff.getFieldName()%>.style.display='block';
534                                         <% } else  {%>  
535                                                 if(document.getElementById("<%=ff.getFieldName()%>_content") && document.getElementById("<%=ff.getFieldName()%>_content").style ) document.getElementById("<%=ff.getFieldName()%>_content").style.display='none';
536                                                 //if(document.forma.<%=ff.getFieldName()%> && document.forma.<%=ff.getFieldName()%>.style) document.forma.<%=ff.getFieldName()%>.style.display='none';
537                                         <% } %> 
538                                 //}
539                 //} // if src.Elem
540                                 <% } %>
541            <% } %>
542                            
543         <% } %> 
544                  <%
545                         for(rff.resetNext(); rff.hasNext();idx++) { 
546                                 ff = rff.getNext();
547                                 %>
548                             if(srcElem && srcElem.name && srcElem.name == "<%=ff.getFieldName()%>") {
549                                 <%    
550                    javaScriptAfterChainingText = nvl(ff.getCallableAfterChainingJavascript(ff.getFieldName(), rr));
551                                 %>
552                                 <%
553                    if(javaScriptAfterChainingText.length()>0 && javaScriptAfterChainingText.trim().startsWith("afterchaining")) {
554                            javaScriptAfterChainingText = Utils.replaceInString(javaScriptAfterChainingText,"afterchaining","");
555                            javaScriptAfterChainingText = Utils.replaceInString(javaScriptAfterChainingText,"\"","");
556                            javaScriptAfterChainingText = Utils.replaceInString(javaScriptAfterChainingText,"=","");
557                          %>
558                         <%   
559                   %>
560                       <%=javaScriptAfterChainingText%>
561                   <%       
562                    }
563                  %>
564                             }                                               
565         <% } %> 
566                  
567                       
568       }  
569       }  
570    }
571
572         function dummyFunction(){
573                 //alert("Server operation timed out");
574         }
575         
576         function bringBacktoNormal(index, obj) {
577                 if(obj) {
578                         //alert('bringing to normal');
579                         var field_name = obj.name;
580                         //alert("'"+field_name+"_content"+"'");
581                         if(document.getElementById(field_name+"_content") && document.getElementById(field_name+"_content").style ) document.getElementById(field_name+"_content").style.display='none';
582                         //if(obj.style) obj.style.display='block';
583                 }
584         }
585         function createChildFormField(index, obj) {
586             //alert('create Cities');
587                 //var obj = document.getElementById('dhtmlgoodies_city');
588                 var obj = obj;
589                 var resp = trim(ajax[index].response);
590             //alert(index + " " + ajax[index]);
591             //alert('response ' + ajax[index].response);
592             if(resp.length > 0 && resp.indexOf("<script type=")!=-1) {
593                     document.write(resp);
594                         if(obj) {
595                                 //alert('obj.name ' + obj.name);
596                                 var field_name = obj.name;
597                                 //alert("'"+field_name+"_content"+"'");
598                                 if(document.getElementById(field_name+"_content") && document.getElementById(field_name+"_content").style ) document.getElementById(field_name+"_content").style.display='none';
599                                 //if(obj.style) obj.style.display='block';
600                         }
601                     throw "session_exp";
602             }
603                 if(obj) {
604                 if(resp.length > 0)
605                                 eval(resp);     // Executing the response from Ajax as Javascript code
606                         //alert('obj.name ' + obj.name);
607                         var field_name = obj.name;
608                         //alert("'"+field_name+"_content"+"'");
609                         if(document.getElementById(field_name+"_content") && document.getElementById(field_name+"_content").style ) document.getElementById(field_name+"_content").style.display='none';
610                         //if(obj.style) obj.style.display='block';
611                 }
612         }
613 function changeCombo(data){
614         var list = data;
615         for (var i = 0; i < list.length; i ++){
616                 var fieldName = list[i].substr(0, list[i].indexOf(":"));
617                 var selectVal = list[i].substr(list[i].indexOf(":") + 1, list[i].length);
618                 
619                 var elem = document.getElementsByName(fieldName);
620                 var j = 0;
621                 while (elem[j].tagName == 'INPUT' && elem[j].type=='hidden'){
622                         j ++;
623                 }
624                 
625                 var oldVal = elem[j].value
626                 elem[j].parentNode.innerHTML = selectVal;
627                 elem[j].value=oldVal;
628                 elem[j].onchange = updateDropDown;
629         }       
630         document.getElementById('childFieldpopup').style.display='none';
631         
632
633
634         
635 }
636 <% } %>
637 /*
638         
639         <input type="hidden" name="action" value="raptor">
640         <input type="hidden" name="source_page" value="report_run">
641         <input type="hidden" name="r_action" value="report.download.pdf">
642
643 */
644 </script>
645 <% /* if(request.getAttribute(AppConstants.RI_REPORT_DATA) == null){  */ %>
646 <script>
647  if(<%=isFirstTime%>) {
648          
649                 <%
650                 if(!isDashboard) {
651                 outFor:
652             for(rff2.resetNext(); rff2.hasNext();) {
653                 FormField ff1 = rff2.getNext(); 
654                                 if( ff1.getDependsOn() != null && !ff1.getDependsOn().equals("") ) { %>
655                                 <% if (!ff1.getFieldType().equals(FormField.FFT_HIDDEN))  { %>
656                                 //alert("in First Time <%=ff1.getFieldName()%>");
657                                         if(document.forma.<%=ff1.getFieldName()%>)
658                                                 updateDropDown(document.forma.<%=ff1.getFieldName()%>);
659                 <% } %>
660                                 <% break outFor;
661                                 } 
662                         } 
663                 }
664                         %>               
665   }
666 </script>
667
668 <%!     private String nvl(String s)                  { return (s==null)?"":s; }
669         private String nvl(String s, String sDefault) { return nvl(s).equals("")?sDefault:s; } 
670         private String getCallableJavascriptForSubmit(ReportRuntime rr) {
671                 JavascriptItemType javascriptItemType = null;
672                 StringBuffer callJavascriptText = new StringBuffer("");
673                 if(rr.getJavascriptList()!=null) {
674                         for (Iterator iter = rr.getJavascriptList().getJavascriptItem().iterator(); iter.hasNext();) {
675                                 javascriptItemType  = (JavascriptItemType)iter.next();
676                                 if(javascriptItemType.getFieldId().equals("os1")) {
677                                         callJavascriptText.append(" "+javascriptItemType.getCallText());
678                                         break;
679                                 }
680                         }
681                 }
682                 return callJavascriptText.toString();
683         }    
684
685         private HashMap getFormFieldsHashMap (HttpServletRequest request, String formFieldsString) {
686                 String splitName[] = null;
687                 ArrayList keyValue = new ArrayList();
688                 HashMap keyValueMap = new HashMap();
689         String newValue = "";
690         //System.out.println("Request Str "+ formFieldsString);
691         StringTokenizer st = null;
692         StringTokenizer st2 = null;
693         String key1 = "";
694         String value = "";
695         
696                 if(formFieldsString.length() > 0) {
697                         st = new StringTokenizer(formFieldsString, "&");
698                         while (st.hasMoreTokens()) {
699                                 keyValue.add(st.nextToken());
700                         }
701                         if(keyValue.size() > 0) {
702                                 
703                                 for (int num = 0; num < keyValue.size(); num++) {
704                                         st2 = new StringTokenizer((String) keyValue.get(num), "=");
705                                         while(st2.hasMoreTokens()) {
706                                                 key1 = ""; value = "";
707                                                 key1 = st2.nextToken();
708                                                 key1 = Utils.replaceInString(key1, "_auto", "");
709                                                 try {
710                                                         value = st2.nextToken();
711                                                 }catch (NoSuchElementException ex) { value  = "";}
712                                                         if(!keyValueMap.containsKey(key1)) 
713                                                                 keyValueMap.put(key1,value);
714                                                         else {
715                                                                 String value1 = (String) keyValueMap.get(key1);
716                                                                 value = value+"|"+value1;
717                                                                 keyValueMap.put(key1,value);
718                                                         }
719                                         }
720                                 }
721                 
722                 }
723                 }
724                 return keyValueMap;
725         }
726         
727         private String getParameterString (HttpServletRequest request, String key, HashMap keyValueMap) {
728         String newValue = "";
729                                 if(keyValueMap.containsKey(key)) {
730                                         //System.out.println("VALUE IN MAP IS " +key+ " "+ (String) keyValueMap.get(key));
731                                         newValue = XSSFilter.filterRequestOnlyScript((String) keyValueMap.get(key));
732                                         if(nvl(newValue).length()<=0) {
733                                                 newValue = XSSFilter.filterRequestOnlyScript((String) keyValueMap.get(key+"_auto"));
734                                         }
735                                 }
736                 return newValue;
737         }
738         private String parseAndGetFirstReportID(String strHTML) {
739                   String sourcestring = strHTML;
740                   //System.out.println("String HTML1 " + strHTML);
741                   Pattern re = Pattern.compile("\\[(.*?)\\]");   //\\[(.*?)\\]
742                   Matcher m = re.matcher(sourcestring);
743                   int mIdx = 0;
744                     while (m.find()){
745                       for( int groupIdx = 0; groupIdx < m.groupCount(); groupIdx++ ){
746                         String str = m.group(groupIdx);
747                         //System.out.println("REP ID1 " + str.substring(str.indexOf("#")+1, str.length()-1)) ;
748               return str.substring(str.indexOf("#")+1, str.length()-1);
749                       }
750                       mIdx++;
751                       
752                     }return "";
753         }       
754 %>