Add the birt files and reportengine

git-svn-id: https://svn.apache.org/repos/asf/ofbiz/branches/addBirt@825391 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/base/config/ofbiz-containers.xml b/framework/base/config/ofbiz-containers.xml
index 42b87b0..d2dac3f 100644
--- a/framework/base/config/ofbiz-containers.xml
+++ b/framework/base/config/ofbiz-containers.xml
@@ -263,4 +263,12 @@
         <property name="telnet-port" value="9990"/>
         <property name="app-name" value="OFBiz"/>
     </container>
+    
+    <!-- load the BIRT container -->
+    <container name="birt-container" class="org.ofbiz.birt.container.BirtContainer">
+        <!-- the port below and port-1 will be opened by beanshell -->
+        <property name="delegator-name" value="default"/>
+        <property name="dispatcher-name" value="birt-dispatcher"/>
+        <property name="delegator-group-helper-name" value="org.ofbiz"/>
+    </container>
 </ofbiz-containers>
diff --git a/framework/webapp/lib/axis-ant.jar b/framework/webapp/lib/axis-ant.jar
new file mode 100755
index 0000000..17527ff
--- /dev/null
+++ b/framework/webapp/lib/axis-ant.jar
Binary files differ
diff --git a/framework/webapp/lib/axis.jar b/framework/webapp/lib/axis.jar
new file mode 100755
index 0000000..20b09a5
--- /dev/null
+++ b/framework/webapp/lib/axis.jar
Binary files differ
diff --git a/framework/webapp/lib/chartengineapi.jar b/framework/webapp/lib/chartengineapi.jar
new file mode 100755
index 0000000..0c08833
--- /dev/null
+++ b/framework/webapp/lib/chartengineapi.jar
Binary files differ
diff --git a/framework/webapp/lib/chartitemapi.jar b/framework/webapp/lib/chartitemapi.jar
new file mode 100755
index 0000000..e180a25
--- /dev/null
+++ b/framework/webapp/lib/chartitemapi.jar
Binary files differ
diff --git a/framework/webapp/lib/com.ibm.icu_4.0.1.v20090822.jar b/framework/webapp/lib/com.ibm.icu_4.0.1.v20090822.jar
new file mode 100755
index 0000000..cdaa79c
--- /dev/null
+++ b/framework/webapp/lib/com.ibm.icu_4.0.1.v20090822.jar
Binary files differ
diff --git a/framework/webapp/lib/commons-cli-1.0.jar b/framework/webapp/lib/commons-cli-1.0.jar
new file mode 100755
index 0000000..22a004e
--- /dev/null
+++ b/framework/webapp/lib/commons-cli-1.0.jar
Binary files differ
diff --git a/framework/webapp/lib/commons-discovery-0.2.jar b/framework/webapp/lib/commons-discovery-0.2.jar
new file mode 100755
index 0000000..b885548
--- /dev/null
+++ b/framework/webapp/lib/commons-discovery-0.2.jar
Binary files differ
diff --git a/framework/webapp/lib/coreapi.jar b/framework/webapp/lib/coreapi.jar
new file mode 100755
index 0000000..d6d6966
--- /dev/null
+++ b/framework/webapp/lib/coreapi.jar
Binary files differ
diff --git a/framework/webapp/lib/crosstabcoreapi.jar b/framework/webapp/lib/crosstabcoreapi.jar
new file mode 100755
index 0000000..b758bea
--- /dev/null
+++ b/framework/webapp/lib/crosstabcoreapi.jar
Binary files differ
diff --git a/framework/webapp/lib/dataadapterapi.jar b/framework/webapp/lib/dataadapterapi.jar
new file mode 100755
index 0000000..a73ae37
--- /dev/null
+++ b/framework/webapp/lib/dataadapterapi.jar
Binary files differ
diff --git a/framework/webapp/lib/dataaggregationapi.jar b/framework/webapp/lib/dataaggregationapi.jar
new file mode 100755
index 0000000..0cbe664
--- /dev/null
+++ b/framework/webapp/lib/dataaggregationapi.jar
Binary files differ
diff --git a/framework/webapp/lib/dataextraction.jar b/framework/webapp/lib/dataextraction.jar
new file mode 100755
index 0000000..cd056b9
--- /dev/null
+++ b/framework/webapp/lib/dataextraction.jar
Binary files differ
diff --git a/framework/webapp/lib/dteapi.jar b/framework/webapp/lib/dteapi.jar
new file mode 100755
index 0000000..326d13e
--- /dev/null
+++ b/framework/webapp/lib/dteapi.jar
Binary files differ
diff --git a/framework/webapp/lib/emitterconfig.jar b/framework/webapp/lib/emitterconfig.jar
new file mode 100755
index 0000000..22aa0e7
--- /dev/null
+++ b/framework/webapp/lib/emitterconfig.jar
Binary files differ
diff --git a/framework/webapp/lib/engineapi.jar b/framework/webapp/lib/engineapi.jar
new file mode 100755
index 0000000..41fc6fc
--- /dev/null
+++ b/framework/webapp/lib/engineapi.jar
Binary files differ
diff --git a/framework/webapp/lib/flute.jar b/framework/webapp/lib/flute.jar
new file mode 100755
index 0000000..39a55d4
--- /dev/null
+++ b/framework/webapp/lib/flute.jar
Binary files differ
diff --git a/framework/webapp/lib/javax.wsdl_1.5.1.v200806030408.jar b/framework/webapp/lib/javax.wsdl_1.5.1.v200806030408.jar
new file mode 100755
index 0000000..b4ae7ad
--- /dev/null
+++ b/framework/webapp/lib/javax.wsdl_1.5.1.v200806030408.jar
Binary files differ
diff --git a/framework/webapp/lib/jaxrpc.jar b/framework/webapp/lib/jaxrpc.jar
new file mode 100755
index 0000000..a2c13d9
--- /dev/null
+++ b/framework/webapp/lib/jaxrpc.jar
Binary files differ
diff --git a/framework/webapp/lib/js.jar b/framework/webapp/lib/js.jar
new file mode 100755
index 0000000..c081d16
--- /dev/null
+++ b/framework/webapp/lib/js.jar
Binary files differ
diff --git a/framework/webapp/lib/modelapi.jar b/framework/webapp/lib/modelapi.jar
new file mode 100755
index 0000000..55a7af6
--- /dev/null
+++ b/framework/webapp/lib/modelapi.jar
Binary files differ
diff --git a/framework/webapp/lib/modelodaapi.jar b/framework/webapp/lib/modelodaapi.jar
new file mode 100755
index 0000000..a2e1053
--- /dev/null
+++ b/framework/webapp/lib/modelodaapi.jar
Binary files differ
diff --git a/framework/webapp/lib/odadesignapi.jar b/framework/webapp/lib/odadesignapi.jar
new file mode 100755
index 0000000..4858159
--- /dev/null
+++ b/framework/webapp/lib/odadesignapi.jar
Binary files differ
diff --git a/framework/webapp/lib/org.apache.commons.codec_1.3.0.v20080530-1600.jar b/framework/webapp/lib/org.apache.commons.codec_1.3.0.v20080530-1600.jar
new file mode 100755
index 0000000..9452320
--- /dev/null
+++ b/framework/webapp/lib/org.apache.commons.codec_1.3.0.v20080530-1600.jar
Binary files differ
diff --git a/framework/webapp/lib/org.eclipse.emf.common_2.5.0.v200906151043.jar b/framework/webapp/lib/org.eclipse.emf.common_2.5.0.v200906151043.jar
new file mode 100755
index 0000000..345ad58
--- /dev/null
+++ b/framework/webapp/lib/org.eclipse.emf.common_2.5.0.v200906151043.jar
Binary files differ
diff --git a/framework/webapp/lib/org.eclipse.emf.ecore.xmi_2.5.0.v200906151043.jar b/framework/webapp/lib/org.eclipse.emf.ecore.xmi_2.5.0.v200906151043.jar
new file mode 100755
index 0000000..255e177
--- /dev/null
+++ b/framework/webapp/lib/org.eclipse.emf.ecore.xmi_2.5.0.v200906151043.jar
Binary files differ
diff --git a/framework/webapp/lib/org.eclipse.emf.ecore_2.5.0.v200906151043.jar b/framework/webapp/lib/org.eclipse.emf.ecore_2.5.0.v200906151043.jar
new file mode 100755
index 0000000..917485f
--- /dev/null
+++ b/framework/webapp/lib/org.eclipse.emf.ecore_2.5.0.v200906151043.jar
Binary files differ
diff --git a/framework/webapp/lib/org.w3c.css.sac_1.3.0.v200805290154.jar b/framework/webapp/lib/org.w3c.css.sac_1.3.0.v200805290154.jar
new file mode 100755
index 0000000..e5e9236
--- /dev/null
+++ b/framework/webapp/lib/org.w3c.css.sac_1.3.0.v200805290154.jar
Binary files differ
diff --git a/framework/webapp/lib/saaj.jar b/framework/webapp/lib/saaj.jar
new file mode 100755
index 0000000..4ea696e
--- /dev/null
+++ b/framework/webapp/lib/saaj.jar
Binary files differ
diff --git a/framework/webapp/lib/scriptapi.jar b/framework/webapp/lib/scriptapi.jar
new file mode 100755
index 0000000..86364bf
--- /dev/null
+++ b/framework/webapp/lib/scriptapi.jar
Binary files differ
diff --git a/framework/webapp/lib/viewservlets.jar b/framework/webapp/lib/viewservlets.jar
new file mode 100755
index 0000000..0139ab1
--- /dev/null
+++ b/framework/webapp/lib/viewservlets.jar
Binary files differ
diff --git a/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java b/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
index cc6222c..a6158d1 100644
--- a/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
+++ b/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
@@ -48,6 +48,9 @@
 import org.ofbiz.webapp.stats.ServerHitBin;
 import org.ofbiz.webapp.stats.VisitHandler;
 
+import freemarker.ext.beans.BeansWrapper;
+import freemarker.ext.servlet.ServletContextHashModel;
+
 /**
  * ControlServlet.java - Master servlet for the web application.
  */
@@ -191,6 +194,9 @@
         request.setAttribute("security", security);
 
         request.setAttribute("_REQUEST_HANDLER_", requestHandler);
+        
+        ServletContextHashModel ftlServletContext = new ServletContextHashModel(this, BeansWrapper.getDefaultInstance());
+        request.setAttribute("ftlServletContext", ftlServletContext);
 
         // setup some things that should always be there
         UtilHttp.setInitialRequestInfo(request);
diff --git a/framework/webtools/build.xml b/framework/webtools/build.xml
index af627b4..802966d 100644
--- a/framework/webtools/build.xml
+++ b/framework/webtools/build.xml
@@ -45,6 +45,7 @@
         <fileset dir="../webapp/lib" includes="*.jar"/>
         <fileset dir="../webapp/build/lib" includes="*.jar"/>
         <fileset dir="../widget/build/lib" includes="*.jar"/>
+    	<fileset dir="../common/build/lib" includes="*.jar"/>
     </path>
 
     <!-- ================================================================== -->
diff --git a/framework/webtools/config/BirtUiLabels.xml b/framework/webtools/config/BirtUiLabels.xml
new file mode 100644
index 0000000..8ebd651
--- /dev/null
+++ b/framework/webtools/config/BirtUiLabels.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <property key="BirtViewer">
+        <value xml:lang="en">Viewer</value>
+        <value xml:lang="th">Viewer</value>
+    </property>
+    <property key="BirtReport">
+        <value xml:lang="en">Report</value>
+        <value xml:lang="th">Report</value>
+    </property>
+    <property key="BirtMail">
+        <value xml:lang="en">Mail</value>
+        <value xml:lang="th">Mail</value>
+    </property>
+    <property key="BirtViewHandler">
+        <value xml:lang="en">View Handler</value>
+        <value xml:lang="th">View Handler</value>
+    </property>
+</resource>
diff --git a/framework/webtools/config/birt.properties b/framework/webtools/config/birt.properties
new file mode 100644
index 0000000..b74760e
--- /dev/null
+++ b/framework/webtools/config/birt.properties
@@ -0,0 +1,24 @@
+###############################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+# http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+###############################################################################
+
+# -- array of OSGi's arguments separate with comma ","
+birt.osgi.arguments=
+
+# -- html image directory
+birt.html.image.directory=/images
\ No newline at end of file
diff --git a/framework/webtools/data/helpdata/BirtHelpData.xml b/framework/webtools/data/helpdata/BirtHelpData.xml
new file mode 100644
index 0000000..b37f357
--- /dev/null
+++ b/framework/webtools/data/helpdata/BirtHelpData.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<entity-engine-xml>
+    <DataResource dataResourceId="HELP_BIRT" localeString="en" dataResourceTypeId="OFBIZ_FILE" 
+        objectInfo="framework/webtools/data/helpdata/HELP_BIRT.xml" dataTemplateTypeId="NONE" statusId="CTNT_IN_PROGRESS"
+        dataResourceName="BIRT Overview" mimeTypeId="text/xml" isPublic="Y" />
+    <Content contentId="HELP_BIRT" contentTypeId="DOCUMENT" contentName="BIRT Overview" templateDataResourceId="HELP_TEMPL" 
+        dataResourceId="HELP_BIRT" statusId="CTNT_IN_PROGRESS" mimeTypeId="text/html"/>/>
+    <ContentAssoc contentId="HELP_ROOT" contentIdTo="HELP_BIRT" contentAssocTypeId="TREE_CHILD" fromDate="2006-01-12 01:01:01" sequenceNum="000"/>
+    
+    <DataResource dataResourceId="BIRT_reports" localeString="en" dataResourceTypeId="OFBIZ_FILE" 
+        objectInfo="framework/webtools/data/helpdata/HELP_BIRT_reports.xml" dataTemplateTypeId="NONE" statusId="CTNT_IN_PROGRESS" dataResourceName="BIRT Reports" mimeTypeId="text/xml" isPublic="Y" />
+    <Content contentId="BIRT_reports" contentTypeId="DOCUMENT" contentName="Reports" templateDataResourceId="HELP_TEMPL" dataResourceId="BIRT_reports" statusId="CTNT_IN_PROGRESS" mimeTypeId="text/html"/>
+    <ContentAssoc contentId="HELP_BIRT" contentIdTo="BIRT_reports" contentAssocTypeId="TREE_CHILD" fromDate="2006-01-12 01:01:01" sequenceNum="000"/>
+</entity-engine-xml>
\ No newline at end of file
diff --git a/framework/webtools/data/helpdata/HELP_BIRT.xml b/framework/webtools/data/helpdata/HELP_BIRT.xml
new file mode 100644
index 0000000..ed9f58a
--- /dev/null
+++ b/framework/webtools/data/helpdata/HELP_BIRT.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+   
+http://www.apache.org/licenses/LICENSE-2.0
+   
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<section xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5.0" 
+    xmlns:xl="http://www.w3.org/1999/xlink" 
+    xmlns:xi="http://www.w3.org/2001/XInclude"
+    xsi:schemaLocation="http://docbook.org/ns/docbook ../../../content/dtd/docbook.xsd"
+    xmlns="http://docbook.org/ns/docbook">
+    
+    <title>BIRT Overview</title>
+    <para>
+        BIRT is an Eclipse-based open source reporting system for web applications,
+        especially those based on Java and J2EE. BIRT has two main components: a report designer based on Eclipse,
+        and a runtime component that you can add to your app server.
+        BIRT also offers a charting engine that lets you add charts to your own application. 
+    </para>
+    <section>
+        <title>With BIRT, you can add a rich variety of reports to your application.</title>
+        <para>Lists - The simplest reports are lists of data. As the lists get longer,
+            you can add grouping to organize related data together (orders grouped by customer,
+            products grouped by supplier). If your data is numeric, you can easily add totals, averages and other summaries.</para>
+        <para>Charts - Numeric data is much easier to understand when presented as a chart.
+            BIRT provides pie charts, line &amp; bar charts and many more.
+            BIRT charts can be rendered in SVG and support events to allow user interaction.</para>
+        <para>Crosstabs - Crosstabs (also called a cross-tabulation or matrix) shows data in two dimensions: sales per quarter or hits per web page.</para>
+        <para>Letters &amp; Documents - Notices, form letters, and other textual documents are easy to create with BIRT.
+            Documents can include text, formatting, lists, charts and more.</para>
+        <para>Compound Reports - Many reports need to combine the above into a single document.
+            For example, a customer statement may list the information for the customer,
+            provide text about current promotions, and provide side-by-side lists of payments and charges. A financial report may include disclaimers,
+            charts, tables all with extensive formatting that matches corporate color schemes.</para>
+    </section>
+</section>
\ No newline at end of file
diff --git a/framework/webtools/data/helpdata/HELP_BIRT_reports.xml b/framework/webtools/data/helpdata/HELP_BIRT_reports.xml
new file mode 100644
index 0000000..9fb5947
--- /dev/null
+++ b/framework/webtools/data/helpdata/HELP_BIRT_reports.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+   
+http://www.apache.org/licenses/LICENSE-2.0
+   
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<section xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="5.0" 
+    xmlns:xl="http://www.w3.org/1999/xlink" 
+    xmlns:xi="http://www.w3.org/2001/XInclude"
+    xsi:schemaLocation="http://docbook.org/ns/docbook ../../../content/dtd/docbook.xsd"
+    xmlns="http://docbook.org/ns/docbook">
+    
+    <section>
+        <title>How do I create BIRT report in OFBiz.</title>
+        <para>Create new report</para>
+        <para>Create Scripted Data Source</para>
+        <para>Create Data Set that use Scripted Data Source</para>
+        <para>Add output columns</para>
+        <para>Add script to Data Set</para>
+        <para>Bind report's element to Data Set</para>
+    </section>
+    <section>
+        <title>How do I add script code to report.</title>
+        <para>Report can use delegator, dispatcher and security object in script.</para>
+        <para>Report can use same classpath with ofbiz.</para>
+    </section>
+    <section>
+        <title>How do I send parameter to report.</title>
+        <para>If report be rendered through view map, you can send parameter through attribute of request object, attribute's name "birtParameters" that is map.</para>
+        <para>If report be rendered through e-mail, you can send parameter through service's parameter name is birtParameters.</para>
+    </section>
+    <section>
+        <title>How do I send report through e-mail.</title>
+        <para>Report can sent through email by using sendBirtMail service.</para>
+    </section>
+    <section>
+        <title>How do I embed report to screen.</title>
+        <para>Report can embeded in screen by using jsp tag, viewer and report tag, that can use in ftl file.</para>
+    </section>
+    <section>
+        <title>What content's type that report supported.</title>
+        <para>text/html</para>
+        <para>application/pdf</para>
+        <para>application/vnd.ms-excel</para>
+        <para>application/vnd.ms-word</para>
+        <para>application/vnd.ms-powerpoint</para>
+    </section>
+    <section>
+        <title>How do I change report content's type</title>
+        <para>If report be rendered through view map, can set content's type at content-type attribute of view map.</para>
+        <para>If report be rendered through e-mail, can set content's type at service's parameter name is birtContentType.</para>
+    </section>
+</section>
\ No newline at end of file
diff --git a/framework/webtools/ofbiz-component.xml b/framework/webtools/ofbiz-component.xml
index a5daf85..288cf8e 100644
--- a/framework/webtools/ofbiz-component.xml
+++ b/framework/webtools/ofbiz-component.xml
@@ -33,4 +33,11 @@
         location="webapp/webtools"
         base-permission="OFBTOOLS,WEBTOOLS"
         mount-point="/webtools"/>
+    <webapp name="birt"
+        title="Birt"
+        menu-name="secondary"
+        server="default-server"
+        location="webapp/birt"
+        base-permission="OFBTOOLS,WEBTOOLS"
+        mount-point="/birt"/>
 </ofbiz-component>
diff --git a/framework/webtools/servicedef/services.xml b/framework/webtools/servicedef/services.xml
index bcedcd2..132b473 100644
--- a/framework/webtools/servicedef/services.xml
+++ b/framework/webtools/servicedef/services.xml
@@ -137,4 +137,20 @@
         <attribute name="localeValues" type="List" mode="IN" optional="true"/>
         <attribute name="localeComments" type="List" mode="IN" optional="true"/>
     </service>
+    
+    <!-- Birt Email Services -->
+    <service name="sendBirtMail" engine="java" location="org.ofbiz.birt.email.BirtEmailServices" invoke="sendBirtMail">
+        <description>Birt Email Service</description>
+        <implements service="sendMailInterface"/>
+        <attribute name="bodyText" type="String" mode="IN" optional="true"/>
+        <attribute name="bodyScreenUri" type="String" mode="IN" optional="true"/>
+        <attribute name="birtReportLocation" type="String" mode="IN" optional="false"/>
+        <attribute name="attachmentName" type="String" mode="IN" optional="false"/>
+        <attribute name="bodyParameters" type="Map" mode="IN" optional="true"/>
+        <attribute name="birtParameters" type="Map" mode="IN" optional="true"/>
+        <attribute name="birtLocale" type="Locale" mode="IN" optional="true"/>
+        <attribute name="birtContentType" type="String" mode="IN" optional="true"></attribute>
+        <attribute name="webSiteId" type="String" mode="IN" optional="true"/>
+        <attribute name="body" type="String" mode="OUT" optional="false"/>
+    </service>
 </services>
diff --git a/framework/webtools/src/org/ofbiz/birt/BirtWorker.java b/framework/webtools/src/org/ofbiz/birt/BirtWorker.java
new file mode 100644
index 0000000..5c3a299
--- /dev/null
+++ b/framework/webtools/src/org/ofbiz/birt/BirtWorker.java
@@ -0,0 +1,122 @@
+package org.ofbiz.birt;
+
+import java.io.OutputStream;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Locale;
+import java.util.Map;
+
+import org.eclipse.birt.report.engine.api.EXCELRenderOption;
+import org.eclipse.birt.report.engine.api.EngineException;
+import org.eclipse.birt.report.engine.api.HTMLRenderOption;
+import org.eclipse.birt.report.engine.api.HTMLServerImageHandler;
+import org.eclipse.birt.report.engine.api.IPDFRenderOption;
+import org.eclipse.birt.report.engine.api.IReportEngine;
+import org.eclipse.birt.report.engine.api.IReportRunnable;
+import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
+import org.eclipse.birt.report.engine.api.PDFRenderOption;
+import org.eclipse.birt.report.engine.api.RenderOption;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.GeneralException;
+import org.ofbiz.birt.container.BirtContainer;
+import org.ofbiz.entity.Delegator;
+import org.ofbiz.entity.jdbc.ConnectionFactory;
+
+public class BirtWorker {
+    
+    public final static String module = BirtWorker.class.getName();
+    
+    public final static String BIRT_PARAMETERS = "birtParameters";
+    public final static String REPORT_ENGINE = "reportEngine";
+    public final static String BIRT_LOCALE = "birtLocale";
+    public final static String BIRT_IMAGE_DIRECTORY = "birtImageDirectory";
+    public final static String BIRT_CONTENT_TYPE = "birtContentType";
+    
+    private static HTMLServerImageHandler imageHandler = new HTMLServerImageHandler();
+    
+    /**
+     * export report
+     * @param design
+     * @param context
+     * @param contentType
+     * @param output
+     * @throws EngineException
+     * @throws GeneralException
+     * @throws SQLException
+     */
+    public static void exportReport(IReportRunnable design, Map context, String contentType, OutputStream output)
+        throws EngineException, GeneralException, SQLException {
+    
+        Locale birtLocale = (Locale)context.get(BIRT_LOCALE);
+        String birtImageDirectory = (String)context.get(BIRT_IMAGE_DIRECTORY);
+
+        if (contentType == null) {
+            contentType = "text/html";
+        }
+        if (birtImageDirectory == null) {
+             birtImageDirectory = "/";
+        }
+        Debug.logInfo("Get report engine", module);
+        IReportEngine engine = BirtContainer.getReportEngine();
+    
+        // set the jdbc connection
+        String delegatorGroupHelperName = BirtContainer.getDelegatorGroupHelperName();
+        Delegator delegator = BirtContainer.getDelegator();
+        Debug.logInfo("Get the JDBC connection from group helper's name:" + delegatorGroupHelperName, module);
+        String helperName = delegator.getGroupHelperName(delegatorGroupHelperName);    // gets the helper (localderby, localmysql, localpostgres, etc.) for your entity group org.ofbiz
+        Connection connection = ConnectionFactory.getConnection(helperName); 
+        engine.getConfig().getAppContext().put("OdaJDBCDriverPassInConnection", connection);
+        
+        IRunAndRenderTask task = engine.createRunAndRenderTask(design);
+        if (birtLocale != null) {
+            Debug.logInfo("Set birt locale:" + birtLocale, module);
+            task.setLocale(birtLocale);
+        }
+        
+        // set parameters if exists
+        Map parameters = (Map)context.get(BirtWorker.BIRT_PARAMETERS);
+        if (parameters != null) {
+            Debug.logInfo("Set birt parameters:" + parameters, module);
+            task.setParameterValues(parameters);
+        }
+         
+        // set output options
+        RenderOption options = new RenderOption();
+        if ("text/html".equalsIgnoreCase(contentType)) {
+            options.setOutputFormat(RenderOption.OUTPUT_FORMAT_HTML);
+        } else if ("application/pdf".equalsIgnoreCase(contentType)) {
+            options.setOutputFormat(RenderOption.OUTPUT_FORMAT_PDF);
+        } else if ("application/vnd.ms-word".equalsIgnoreCase(contentType)) {
+            options.setOutputFormat("doc");
+        }  else if ("application/vnd.ms-excel".equalsIgnoreCase(contentType)) {
+            options.setOutputFormat("xls");
+        } else if ("application/vnd.ms-powerpoint".equalsIgnoreCase(contentType)) {
+            options.setOutputFormat("ppt");
+        } else {
+            throw new GeneralException("Unknown content type : " + contentType);
+        }
+        
+        if (options.getOutputFormat().equalsIgnoreCase(RenderOption.OUTPUT_FORMAT_HTML)) {
+            // set html render options
+            HTMLRenderOption htmlOptions = new HTMLRenderOption(options);
+            htmlOptions.setImageDirectory(birtImageDirectory);
+            htmlOptions.setBaseImageURL(birtImageDirectory);
+            options.setImageHandler(imageHandler);
+        } else if (options.getOutputFormat().equalsIgnoreCase(RenderOption.OUTPUT_FORMAT_PDF)) {
+            // set pdf render options
+            PDFRenderOption pdfOptions = new PDFRenderOption(options);
+            pdfOptions.setOption(IPDFRenderOption.PAGE_OVERFLOW, new Boolean(true) );
+        } else if (options.getOutputFormat().equalsIgnoreCase("xls")) {
+            // set excel render options
+            EXCELRenderOption excelOptions = new EXCELRenderOption(options);
+        } 
+        options.setOutputStream(output);
+        task.setRenderOption(options);
+        
+        // run report
+        Debug.logInfo("Birt's locale is: " + task.getLocale(), module);
+        Debug.logInfo("Run report's task", module);
+        task.run();
+        task.close();
+    }
+}
diff --git a/framework/webtools/src/org/ofbiz/birt/container/BirtContainer.java b/framework/webtools/src/org/ofbiz/birt/container/BirtContainer.java
new file mode 100644
index 0000000..eb7ad9b
--- /dev/null
+++ b/framework/webtools/src/org/ofbiz/birt/container/BirtContainer.java
@@ -0,0 +1,195 @@
+package org.ofbiz.birt.container;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.logging.Level;
+
+import org.eclipse.birt.core.exception.BirtException;
+import org.eclipse.birt.core.framework.Platform;
+import org.eclipse.birt.core.framework.PlatformFileContext;
+import org.eclipse.birt.report.engine.api.EngineConfig;
+import org.eclipse.birt.report.engine.api.EngineConstants;
+import org.eclipse.birt.report.engine.api.IReportEngine;
+import org.eclipse.birt.report.engine.api.IReportEngineFactory;
+import org.ofbiz.base.container.Container;
+import org.ofbiz.base.container.ContainerConfig;
+import org.ofbiz.base.container.ContainerException;
+import org.ofbiz.base.location.FlexibleLocation;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilObject;
+import org.ofbiz.base.util.UtilProperties;
+import org.ofbiz.entity.Delegator;
+import org.ofbiz.entity.DelegatorFactory;
+import org.ofbiz.entity.GenericEntityException;
+import org.ofbiz.service.GenericDispatcher;
+import org.ofbiz.service.LocalDispatcher;
+import org.ofbiz.widget.screen.ScreenFactory;
+
+public class BirtContainer implements Container {
+    
+    public static final String module = BirtContainer.class.getName();
+    
+    public final static String CONFIG_FILE = "birt.properties";
+    
+    protected EngineConfig config;
+    protected String configFile;
+    
+    private static IReportEngine engine;
+    private static String delegatorGroupHelperName;
+    private static String delegatorName;
+    private static String dispatcherName;
+    private static Delegator delegator;
+    private static LocalDispatcher dispatcher;
+
+    public void init(String[] args, String configFile)
+            throws ContainerException {
+        // TODO Auto-generated method stub
+        this.configFile = configFile;
+    }
+
+    /**
+     * start container
+     */
+    public boolean start() throws ContainerException {
+        // TODO Auto-generated method stub
+        
+        Debug.logInfo("Start birt container", module);
+        
+        // make sure the subclass sets the config name
+        if (this.getContainerConfigName() == null) {
+            throw new ContainerException("Unknown container config name");
+        }
+        // get the container config
+        ContainerConfig.Container cc = ContainerConfig.getContainer(this.getContainerConfigName(), configFile);
+        if (cc == null) {
+            throw new ContainerException("No " + this.getContainerConfigName() + " configuration found in container config!");
+        }
+        
+        config = new EngineConfig();
+        HashMap context = config.getAppContext();
+        
+        // set delegator, dispatcher and security objects to report
+        
+        // get the delegator
+        delegatorName = ContainerConfig.getPropertyValue(cc, "delegator-name", "default");
+        try {
+              delegator = UtilObject.getObjectFromFactory(DelegatorFactory.class, delegatorName);
+        } catch (ClassNotFoundException e) {
+            Debug.logError(e, module);
+        }
+        
+        // get the dispatcher
+        dispatcherName = ContainerConfig.getPropertyValue(cc, "dispatcher-name", "birt-dispatcher");
+        dispatcher = GenericDispatcher.getLocalDispatcher(dispatcherName, delegator);
+        
+        context.put("delegator", delegator);
+        context.put("dispatcher", dispatcher);
+        
+        delegatorGroupHelperName = ContainerConfig.getPropertyValue(cc, "delegator-group-helper-name", "org.ofbiz");
+        
+        // set classloader for engine
+        context.put(EngineConstants.APPCONTEXT_CLASSLOADER_KEY, BirtContainer.class.getClassLoader());
+        context.put(EngineConstants.WEBAPP_CLASSPATH_KEY, BirtContainer.class.getClassLoader());
+        
+        // set log config to show all level in console
+        config.setLogConfig(null, Level.ALL);
+        
+        // get report engine home
+        URL reportEngineDirUrl = null;
+        String reportEngineResourceName = "component://webtools/webapp/birt/WEB-INF/ReportEngine";
+        synchronized (BirtContainer.class) {
+            long startTime = System.currentTimeMillis();
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            if (loader == null) {
+                loader = ScreenFactory.class.getClassLoader();
+            }
+            reportEngineDirUrl = null;
+            try {
+                reportEngineDirUrl = FlexibleLocation.resolveLocation(reportEngineResourceName, loader);
+            } catch (MalformedURLException e) {
+                throw new ContainerException(e);
+            }
+            if (reportEngineDirUrl == null) {
+                throw new IllegalArgumentException("Could not resolve location to URL: " + reportEngineResourceName);
+            }
+        }
+        
+        // set engine home
+        if (reportEngineDirUrl != null) {
+            config.setEngineHome(reportEngineDirUrl.getPath());
+            config.setBIRTHome(reportEngineDirUrl.getPath());
+        }
+        
+        // set OSGi arguments specific in properties
+        String argumentsString = UtilProperties.getPropertyValue(BirtContainer.CONFIG_FILE, "birt.osgi.arguments");
+        config.setOSGiArguments(argumentsString.split(","));
+
+        // set platform file context
+        config.setPlatformContext(new PlatformFileContext(config));
+        config.setAppContext(context);
+        
+        // startup platform
+        try {
+            Debug.logInfo("Startup birt platform", module);
+            Platform.startup( config );
+        } catch ( BirtException e ) {
+            throw new ContainerException(e);
+        }
+
+        // create report engine
+        Debug.logInfo("Create factory object", module);
+        IReportEngineFactory factory = (IReportEngineFactory) Platform
+              .createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
+        if (factory == null) {
+            throw new ContainerException("can not create birt engine factory");
+        }
+        Debug.logInfo("Create report engine", module);
+        engine = factory.createReportEngine( config );
+        String[] supportedFormats = engine.getSupportedFormats();
+        String formatList = null;
+        for (String supportedFormat : supportedFormats) {
+            if (formatList != null) {
+                formatList += ", " + supportedFormat;
+            } else {
+                formatList = supportedFormat;
+            }
+        }
+        Debug.logInfo("BIRT supported formats: " + formatList, module);
+        return false;
+    }
+    
+    public void stop() throws ContainerException {
+        // TODO Auto-generated method stub
+        
+    }
+    
+    public String getContainerConfigName() {
+        return "birt-container";
+    }
+    
+    public static IReportEngine getReportEngine() throws GenericEntityException, SQLException {
+        return engine;
+    }
+    
+    public static String getDelegatorGroupHelperName() {
+        return delegatorGroupHelperName;
+    }
+    
+    public static String getDelegatorName() {
+        return delegatorName;
+    }
+    
+    public static String getDispatcherName() {
+        return dispatcherName;
+    }
+
+    public static Delegator getDelegator() {
+        return delegator;
+    }
+    
+    public static LocalDispatcher getDispatcher() {
+        return dispatcher;
+    }
+}
diff --git a/framework/webtools/src/org/ofbiz/birt/email/BirtEmailServices.java b/framework/webtools/src/org/ofbiz/birt/email/BirtEmailServices.java
new file mode 100644
index 0000000..80708d6
--- /dev/null
+++ b/framework/webtools/src/org/ofbiz/birt/email/BirtEmailServices.java
@@ -0,0 +1,226 @@
+package org.ofbiz.birt.email;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import javolution.util.FastList;
+import javolution.util.FastMap;
+
+import org.apache.fop.apps.FOPException;
+import org.eclipse.birt.report.engine.api.EngineException;
+import org.eclipse.birt.report.engine.api.IReportEngine;
+import org.eclipse.birt.report.engine.api.IReportRunnable;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.GeneralException;
+import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.base.util.collections.MapStack;
+import org.ofbiz.base.util.string.FlexibleStringExpander;
+import org.ofbiz.birt.BirtWorker;
+import org.ofbiz.birt.container.BirtContainer;
+import org.ofbiz.common.email.NotificationServices;
+import org.ofbiz.service.DispatchContext;
+import org.ofbiz.service.LocalDispatcher;
+import org.ofbiz.service.ServiceUtil;
+import org.ofbiz.widget.birt.BirtFactory;
+import org.ofbiz.widget.html.HtmlScreenRenderer;
+import org.ofbiz.widget.screen.ScreenRenderer;
+import org.xml.sax.SAXException;
+
+public class BirtEmailServices {
+    
+    public static final String module = BirtEmailServices.class.getName();
+    
+    protected static final HtmlScreenRenderer htmlScreenRenderer = new HtmlScreenRenderer();
+    
+    /**
+     * send birt mail
+     * 
+     * @param ctx
+     * @param context
+     * @return
+     */
+    public static Map<String, Object> sendBirtMail(DispatchContext ctx, Map<String, ? extends Object> context) {
+        Map<String, Object> serviceContext = UtilMisc.makeMapWritable(context);
+        LocalDispatcher dispatcher = ctx.getDispatcher();
+        String webSiteId = (String) serviceContext.remove("webSiteId");
+        String bodyText = (String) serviceContext.remove("bodyText");
+        String bodyScreenUri = (String) serviceContext.remove("bodyScreenUri");
+        String birtReportLocation = (String) serviceContext.remove("birtReportLocation");
+        String attachmentName = (String) serviceContext.remove("attachmentName");
+        Locale locale = (Locale) serviceContext.get("locale");
+        Map bodyParameters = (Map) serviceContext.remove("bodyParameters");
+        Locale birtLocale = (Locale) serviceContext.remove(BirtWorker.BIRT_LOCALE);
+        Map birtParameters = (Map) serviceContext.remove(BirtWorker.BIRT_PARAMETERS);
+        String birtImageDirectory = (String) serviceContext.remove(BirtWorker.BIRT_IMAGE_DIRECTORY);
+        String birtContentType = (String) serviceContext.remove(BirtWorker.BIRT_CONTENT_TYPE);
+        if (bodyParameters == null) {
+            bodyParameters = MapStack.create();
+        }
+        if (!bodyParameters.containsKey("locale")) {
+            bodyParameters.put("locale", locale);
+        } else {
+            locale = (Locale) bodyParameters.get("locale");
+        }
+        String partyId = (String) bodyParameters.get("partyId");
+        if (UtilValidate.isNotEmpty(webSiteId)) {
+            NotificationServices.setBaseUrl(ctx.getDelegator(), webSiteId, bodyParameters);
+        }
+        String contentType = (String) serviceContext.remove("contentType");
+
+        if (UtilValidate.isEmpty(attachmentName)) {
+            attachmentName = "Details.pdf";
+        }
+        StringWriter bodyWriter = new StringWriter();
+
+        MapStack screenContext = MapStack.create();
+        screenContext.put("locale", locale);
+        ScreenRenderer screens = new ScreenRenderer(bodyWriter, screenContext, htmlScreenRenderer);
+        screens.populateContextForService(ctx, bodyParameters);
+        screenContext.putAll(bodyParameters);
+
+        if (bodyScreenUri != null) {
+            try {
+                screens.render(bodyScreenUri);
+            } catch (GeneralException e) {
+                String errMsg = "Error rendering screen for email: " + e.toString();
+                Debug.logError(e, errMsg, module);
+                return ServiceUtil.returnError(errMsg);
+            } catch (IOException e) {
+                String errMsg = "Error I/O rendering screen for email: " + e.toString();
+                Debug.logError(e, errMsg, module);
+                return ServiceUtil.returnError(errMsg);
+            } catch (SAXException e) {
+                String errMsg = "Error SAX rendering screen for email: " + e.toString();
+                Debug.logError(e, errMsg, module);
+                return ServiceUtil.returnError(errMsg);
+            } catch (ParserConfigurationException e) {
+                String errMsg = "Error parser config rendering screen for email: " + e.toString();
+                Debug.logError(e, errMsg, module);
+                return ServiceUtil.returnError(errMsg);
+            }
+        }
+        
+        boolean isMultiPart = false;
+        
+        // check if attachment screen location passed in
+        if (UtilValidate.isNotEmpty(birtReportLocation)) {
+            isMultiPart = true;
+            // start processing fo pdf attachment
+            try {
+                // create the output stream for the generation
+                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                
+                Map birtContext = FastMap.newInstance();
+                if (birtLocale == null) {
+                    birtLocale = locale;
+                }
+                birtContext.put(BirtWorker.BIRT_LOCALE, birtLocale);
+                if (birtParameters != null) {
+                    birtContext.put(BirtWorker.BIRT_PARAMETERS, birtParameters);
+                }
+                if (birtImageDirectory != null) {
+                    birtContext.put(BirtWorker.BIRT_IMAGE_DIRECTORY, birtImageDirectory);
+                }
+                if (birtContentType == null) {
+                    birtContentType = "application/pdf";
+                }
+                IReportEngine engine = BirtContainer.getReportEngine();
+                InputStream reportInputStream = BirtFactory.getReportInputStreamFromLocation(birtReportLocation);
+                IReportRunnable design = engine.openReportDesign(reportInputStream);
+                     Debug.logInfo("Export report as content type:" + birtContentType, module);
+                     BirtWorker.exportReport(design, context, birtContentType, baos);
+                // and generate the PDF
+                baos.flush();
+                baos.close();
+
+                // store in the list of maps for sendmail....
+                List bodyParts = FastList.newInstance();
+                if (bodyText != null) {
+                    bodyText = FlexibleStringExpander.expandString(bodyText, screenContext,  locale);
+                    bodyParts.add(UtilMisc.toMap("content", bodyText, "type", "text/html"));
+                } else {
+                    bodyParts.add(UtilMisc.toMap("content", bodyWriter.toString(), "type", "text/html"));
+                }
+                bodyParts.add(UtilMisc.toMap("content", baos.toByteArray(), "type", "application/pdf", "filename", attachmentName));
+                serviceContext.put("bodyParts", bodyParts);
+            } catch (GeneralException ge) {
+                String errMsg = "Error rendering " + birtContentType + " attachment for email: " + ge.toString();
+                Debug.logError(ge, errMsg, module);
+                return ServiceUtil.returnError(errMsg);
+            } catch (IOException ie) {
+                String errMsg = "Error I/O rendering " + birtContentType + " attachment for email: " + ie.toString();
+                Debug.logError(ie, errMsg, module);
+                return ServiceUtil.returnError(errMsg);
+            } catch (FOPException fe) {
+                String errMsg = "Error FOP rendering " + birtContentType + " attachment for email: " + fe.toString();
+                Debug.logError(fe, errMsg, module);
+                return ServiceUtil.returnError(errMsg);
+            } catch (SAXException se) {
+                String errMsg = "Error SAX rendering " + birtContentType + " attachment for email: " + se.toString();
+                Debug.logError(se, errMsg, module);
+                return ServiceUtil.returnError(errMsg);
+            } catch (ParserConfigurationException pe) {
+                String errMsg = "Error parser rendering " + birtContentType + " attachment for email: " + pe.toString();
+                Debug.logError(pe, errMsg, module);
+                return ServiceUtil.returnError(errMsg);
+            } catch (EngineException ee) {
+                String errMsg = "Error rendering " + birtContentType + " attachment for email: " + ee.toString();
+                Debug.logError(ee, errMsg, module);
+                return ServiceUtil.returnError(errMsg);
+            } catch (SQLException se) {
+                String errMsg = "Error SQL rendering " + birtContentType + " attachment for email: " + se.toString();
+                Debug.logError(se, errMsg, module);
+                return ServiceUtil.returnError(errMsg);
+            }
+        } else {
+            isMultiPart = false;
+            // store body and type for single part message in the context.
+            if (bodyText != null) {
+                bodyText = FlexibleStringExpander.expandString(bodyText, screenContext,  locale);
+                serviceContext.put("body", bodyText);
+            } else {
+                serviceContext.put("body", bodyWriter.toString());
+            }
+
+            // Only override the default contentType in case of plaintext, since other contentTypes may be multipart
+            //    and would require specific handling.
+            if (contentType != null && contentType.equalsIgnoreCase("text/plain")) {
+                serviceContext.put("contentType", "text/plain");
+            } else {
+                serviceContext.put("contentType", "text/html");
+            }
+        }
+        
+        // also expand the subject at this point, just in case it has the FlexibleStringExpander syntax in it...
+        String subject = (String) serviceContext.remove("subject");
+        subject = FlexibleStringExpander.expandString(subject, screenContext, locale);
+        serviceContext.put("subject", subject);
+        serviceContext.put("partyId", partyId);
+
+        if (Debug.verboseOn()) Debug.logVerbose("sendMailFromScreen sendMail context: " + serviceContext, module);
+
+        Map result = ServiceUtil.returnSuccess();
+        try {
+            if (isMultiPart) {
+                dispatcher.runSync("sendMailMultiPart", serviceContext);
+            } else {
+                dispatcher.runSync("sendMail", serviceContext);
+            }
+        } catch (Exception e) {
+            String errMsg = "Error send email :" + e.toString();
+            Debug.logError(e, errMsg, module);
+            return ServiceUtil.returnError(errMsg);
+        } 
+        result.put("body", bodyWriter.toString());
+        return result;
+    }
+}
diff --git a/framework/webtools/src/org/ofbiz/birt/report/context/BirtViewerAttributeBean.java b/framework/webtools/src/org/ofbiz/birt/report/context/BirtViewerAttributeBean.java
new file mode 100644
index 0000000..c98678a
--- /dev/null
+++ b/framework/webtools/src/org/ofbiz/birt/report/context/BirtViewerAttributeBean.java
@@ -0,0 +1,171 @@
+package org.ofbiz.birt.report.context;
+
+import java.net.URL;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.eclipse.birt.report.IBirtConstants;
+import org.eclipse.birt.report.context.ViewerAttributeBean;
+import org.eclipse.birt.report.exception.ViewerException;
+import org.eclipse.birt.report.resource.BirtResources;
+import org.eclipse.birt.report.resource.ResourceConstants;
+import org.eclipse.birt.report.utility.BirtUtility;
+import org.eclipse.birt.report.utility.DataUtil;
+import org.eclipse.birt.report.utility.ParameterAccessor;
+import org.ofbiz.base.location.FlexibleLocation;
+
+public class BirtViewerAttributeBean extends ViewerAttributeBean {
+    
+    public final static String module = BirtViewerAttributeBean.class.getName();
+    
+    /**
+     * Module Options
+     */
+    private Map moduleOptions = null;
+    
+    /**
+     * Request Type
+     */
+    private String requestType;
+    
+    private Boolean reportRtl;
+
+    public BirtViewerAttributeBean(HttpServletRequest arg0) {
+        super(arg0);
+        // TODO Auto-generated constructor stub
+    }
+    
+    /**
+     * Init the bean.
+     * 
+     * @param request
+     * @throws Exception
+     */
+    @Override
+    protected void __init( HttpServletRequest request ) throws Exception
+    {
+        // If GetImage operate, return directly.
+        if ( ParameterAccessor.isGetImageOperator( request )
+                && ( IBirtConstants.SERVLET_PATH_FRAMESET
+                        .equalsIgnoreCase( request.getServletPath( ) )
+                        || IBirtConstants.SERVLET_PATH_OUTPUT
+                                .equalsIgnoreCase( request.getServletPath( ) )
+                        || IBirtConstants.SERVLET_PATH_RUN
+                                .equalsIgnoreCase( request.getServletPath( ) ) || IBirtConstants.SERVLET_PATH_PREVIEW
+                        .equalsIgnoreCase( request.getServletPath( ) ) ) )
+        {
+            return;
+        }
+
+        this.category = "BIRT"; //$NON-NLS-1$
+        this.masterPageContent = ParameterAccessor
+                .isMasterPageContent( request );
+        this.isDesigner = ParameterAccessor.isDesigner( );
+        
+        if ( !ParameterAccessor.isBookmarkReportlet( request ) )
+        {
+            this.bookmark = ParameterAccessor.getBookmark( request );
+        }
+        else
+        {
+            this.bookmark = null;
+        }        
+        
+        this.isToc = ParameterAccessor.isToc( request );
+        this.reportPage = ParameterAccessor.getPage( request );
+        this.reportPageRange = ParameterAccessor.getPageRange( request );
+        this.action = ParameterAccessor.getAction( request );
+
+        // If use frameset/output/download/extract servlet pattern, generate
+        // document
+        // from design file
+        if ( IBirtConstants.SERVLET_PATH_FRAMESET.equalsIgnoreCase( request
+                .getServletPath( ) )
+                || IBirtConstants.SERVLET_PATH_OUTPUT.equalsIgnoreCase( request
+                        .getServletPath( ) )
+                || IBirtConstants.SERVLET_PATH_DOWNLOAD
+                        .equalsIgnoreCase( request.getServletPath( ) )
+                || IBirtConstants.SERVLET_PATH_EXTRACT
+                        .equalsIgnoreCase( request.getServletPath( ) ) )
+        {
+            this.reportDocumentName = ParameterAccessor.getReportDocument(
+                    request, null, true );
+        }
+        else
+        {
+            this.reportDocumentName = ParameterAccessor.getReportDocument(
+                    request, null, false );
+        }
+
+        String reportParam = DataUtil.trimString( ParameterAccessor.getParameter( request, ParameterAccessor.PARAM_REPORT ));
+        if (reportParam.startsWith("component://")) {
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            if (loader == null) {
+                loader = BirtViewerAttributeBean.class.getClassLoader();
+            }
+            URL reportFileUrl = null;
+            reportFileUrl = FlexibleLocation.resolveLocation(reportParam, loader);
+            if (reportFileUrl == null) {
+                throw new IllegalArgumentException("Could not resolve location to URL: " + reportParam);
+            }
+            this.reportDesignName = reportFileUrl.getPath();
+        } else {
+            this.reportDesignName = ParameterAccessor.getReport( request, null );
+        }
+
+        this.emitterId = ParameterAccessor.getEmitterId( request );
+        
+        // If print action, force to use postscript format
+        this.format = ParameterAccessor.getFormat( request );
+        if ( IBirtConstants.ACTION_PRINT.equalsIgnoreCase( action ) )
+        {
+            // Check whether turn on this funtion
+            if ( ParameterAccessor.isSupportedPrintOnServer )
+            {
+                this.format = IBirtConstants.POSTSCRIPT_RENDER_FORMAT;
+                this.emitterId = null;
+            }
+            else
+            {
+                this.action = null;
+            }
+        }
+
+        // Set locale information
+        BirtResources.setLocale( ParameterAccessor.getLocale( request ) );
+
+        // Set the request type
+        this.requestType = request
+                .getHeader( ParameterAccessor.HEADER_REQUEST_TYPE );
+
+        // Determine the report design and doc 's timestamp
+        processReport( request );
+
+        // Report title.
+        this.reportTitle = ParameterAccessor.getTitle( request );
+
+        // Set whether show the report title
+        this.isShowTitle = ParameterAccessor.isShowTitle( request );
+
+        // Set whether show the toolbar
+        this.isShowToolbar = ParameterAccessor.isShowToolbar( request );
+
+        // Set whether show the navigation bar
+        this.isShowNavigationbar = ParameterAccessor
+                .isShowNavigationbar( request );
+
+        // get some module options
+        this.moduleOptions = BirtUtility.getModuleOptions( request );
+
+        this.reportDesignHandle = getDesignHandle( request );
+        if ( this.reportDesignHandle == null )
+            throw new ViewerException(
+                    ResourceConstants.GENERAL_EXCEPTION_NO_REPORT_DESIGN );
+
+        this.reportRtl = null;
+        
+        // Initialize report parameters.
+        __initParameters( request );
+    }
+}
diff --git a/framework/webtools/src/org/ofbiz/birt/report/context/OFBizBirtContext.java b/framework/webtools/src/org/ofbiz/birt/report/context/OFBizBirtContext.java
new file mode 100644
index 0000000..e38ca1c
--- /dev/null
+++ b/framework/webtools/src/org/ofbiz/birt/report/context/OFBizBirtContext.java
@@ -0,0 +1,29 @@
+package org.ofbiz.birt.report.context;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.birt.report.IBirtConstants;
+import org.eclipse.birt.report.context.BirtContext;
+import org.eclipse.birt.report.context.ViewerAttributeBean;
+
+public class OFBizBirtContext extends BirtContext {
+
+    public OFBizBirtContext(HttpServletRequest request,
+            HttpServletResponse response) {
+        super(request, response);
+        // TODO Auto-generated constructor stub
+    }
+
+    @Override
+    protected void __init() {
+        // TODO Auto-generated method stub
+        this.bean = (ViewerAttributeBean) request
+                .getAttribute( IBirtConstants.ATTRIBUTE_BEAN );
+        if ( bean == null )
+        {
+            bean = new BirtViewerAttributeBean( request );
+        }
+        request.setAttribute( IBirtConstants.ATTRIBUTE_BEAN, bean );
+    }
+}
diff --git a/framework/webtools/src/org/ofbiz/birt/report/service/OFBizBirtViewerReportService.java b/framework/webtools/src/org/ofbiz/birt/report/service/OFBizBirtViewerReportService.java
new file mode 100644
index 0000000..329ed9c
--- /dev/null
+++ b/framework/webtools/src/org/ofbiz/birt/report/service/OFBizBirtViewerReportService.java
@@ -0,0 +1,336 @@
+package org.ofbiz.birt.report.service;
+
+import java.io.File;
+import java.io.OutputStream;
+import java.rmi.RemoteException;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TimeZone;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+
+import org.eclipse.birt.core.exception.BirtException;
+import org.eclipse.birt.report.IBirtConstants;
+import org.eclipse.birt.report.context.ViewerAttributeBean;
+import org.eclipse.birt.report.engine.api.IReportRunnable;
+import org.eclipse.birt.report.engine.api.IRunTask;
+import org.eclipse.birt.report.resource.BirtResources;
+import org.eclipse.birt.report.resource.ResourceConstants;
+import org.eclipse.birt.report.service.BirtViewerReportService;
+import org.eclipse.birt.report.service.ReportEngineService;
+import org.eclipse.birt.report.service.ReportEngineService.DummyRemoteException;
+import org.eclipse.birt.report.service.api.IViewerReportDesignHandle;
+import org.eclipse.birt.report.service.api.InputOptions;
+import org.eclipse.birt.report.service.api.ReportServiceException;
+import org.eclipse.birt.report.utility.BirtUtility;
+import org.eclipse.birt.report.utility.DataUtil;
+import org.eclipse.birt.report.utility.ParameterAccessor;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.birt.container.BirtContainer;
+import org.ofbiz.entity.Delegator;
+import org.ofbiz.entity.GenericEntityException;
+import org.ofbiz.entity.jdbc.ConnectionFactory;
+
+public class OFBizBirtViewerReportService extends BirtViewerReportService {
+    
+    public final static String module = OFBizBirtViewerReportService.class.getName();
+
+    public OFBizBirtViewerReportService(ServletContext servletContext) {
+        super(servletContext);
+        // TODO Auto-generated constructor stub
+    }
+    
+    @Override
+    public String runReport(IViewerReportDesignHandle design,
+            String outputDocName, InputOptions runOptions, Map parameters,
+            Map displayTexts, List<Exception> errorList) throws ReportServiceException {
+        // TODO Auto-generated method stub
+        
+        if ( design == null || design.getDesignObject( ) == null )
+            throw new ReportServiceException( BirtResources.getMessage( ResourceConstants.GENERAL_EXCEPTION_NO_REPORT_DESIGN ) );
+
+        IReportRunnable runnable;
+        HttpServletRequest request = (HttpServletRequest) runOptions.getOption( InputOptions.OPT_REQUEST );
+        Locale locale = (Locale) runOptions.getOption( InputOptions.OPT_LOCALE );
+        TimeZone timeZone = (TimeZone) runOptions.getOption( InputOptions.OPT_TIMEZONE );
+
+        ViewerAttributeBean attrBean = (ViewerAttributeBean) request.getAttribute( IBirtConstants.ATTRIBUTE_BEAN );
+        // Set parameters
+        Map parsedParams = attrBean.getParameters( );
+        if ( parameters != null )
+        {
+            parsedParams.putAll( parameters );
+        }
+        // Set display Text of select parameters
+        Map displayTextMap = attrBean.getDisplayTexts( );
+        if ( displayTexts != null )
+        {
+            displayTextMap.putAll( displayTexts );
+        }
+
+        runnable = (IReportRunnable) design.getDesignObject( );
+        try
+        {
+            // get maxRows
+            Integer maxRows = null;
+            if ( ParameterAccessor.isReportParameterExist( request,
+                    ParameterAccessor.PARAM_MAXROWS ) )
+                maxRows = Integer.valueOf( ParameterAccessor.getMaxRows( request ) );
+            
+            try {
+                // put all app context from Birt Container to Report Engine Service
+                ReportEngineService.getInstance().getEngineConfig().getAppContext().putAll(
+                        BirtContainer.getReportEngine().getConfig().getAppContext());
+                Connection connection = getConnection();
+                BirtContainer.getReportEngine().getConfig().getAppContext().put("OdaJDBCDriverPassInConnection", connection);
+            } catch (Exception e) {
+                Debug.logError(e, module);
+            }
+            List<Exception> errors = this.runReport( request,
+                            runnable,
+                            outputDocName,
+                            locale,
+                            timeZone,
+                            parsedParams,
+                            displayTextMap,
+                            maxRows );
+            if ( errors != null && !errors.isEmpty( ) )
+            {
+                errorList.addAll( errors );
+            }
+        }
+        catch ( RemoteException e )
+        {
+            if ( e.getCause( ) instanceof ReportServiceException )
+            {
+                throw (ReportServiceException) e.getCause( );
+            }
+            else
+            {
+                throw new ReportServiceException( e.getLocalizedMessage( ),
+                        e.getCause( ) );
+            }
+        }
+        return outputDocName;
+    }
+    
+    /**
+     * Run report.
+     * 
+     * @param request
+     * 
+     * @param runnable
+     * @param archive
+     * @param documentName
+     * @param locale
+     * @param parameters
+     * @param displayTexts
+     * @param maxRows
+     * @return list of exceptions which occured during the run or null
+     * @throws RemoteException
+     */
+    public List<Exception> runReport( HttpServletRequest request,
+            IReportRunnable runnable, String documentName, Locale locale,
+            TimeZone timeZone, Map parameters, Map displayTexts, Integer maxRows )
+            throws RemoteException
+    {
+        assert runnable != null;
+
+        // Preapre the run report task.
+        IRunTask runTask = null;
+        try {
+            runTask = BirtContainer.getReportEngine().createRunTask( runnable );
+        } catch (Exception e) {
+            throwDummyException(e);
+        }
+        runTask.setLocale( locale );
+        
+        com.ibm.icu.util.TimeZone tz = BirtUtility.toICUTimeZone( timeZone );
+        if ( tz != null )
+        {
+            runTask.setTimeZone( tz );
+        }
+
+        runTask.setParameterValues( parameters );
+
+        // set MaxRows settings
+        if ( maxRows != null )
+            runTask.setMaxRowsPerQuery( maxRows.intValue( ) );
+
+        // add task into session
+        BirtUtility.addTask( request, runTask );
+
+        // Set display Text for select parameters
+        if ( displayTexts != null )
+        {
+            Iterator keys = displayTexts.keySet( ).iterator( );
+            while ( keys.hasNext( ) )
+            {
+                String paramName = DataUtil.getString( keys.next( ) );
+                String displayText = DataUtil.getString( displayTexts
+                        .get( paramName ) );
+                runTask.setParameterDisplayText( paramName, displayText );
+            }
+        }
+
+        // set app context
+        Map context = BirtUtility.getAppContext( request );
+        runTask.setAppContext( context );
+
+        // Run report.
+        try
+        {
+            runTask.run( documentName );
+        }
+        catch ( BirtException e )
+        {
+            // clear document file
+            File doc = new File( documentName );
+            if ( doc != null )
+                doc.delete( );
+
+            throwDummyException( e );
+        }
+        finally
+        {
+            // Remove task from http session
+            BirtUtility.removeTask( request );
+
+            // Append errors
+            if ( ParameterAccessor.isDesigner( ) )
+                BirtUtility.error( request, runTask.getErrors( ) );
+
+            runTask.close( );
+
+            // check for non-fatal errors
+            List<Exception> errors = (List<Exception>) runTask.getErrors( );
+            if ( !errors.isEmpty( ) )
+            {
+                return errors;
+            }
+        }
+        return null;
+    }
+    
+    /**
+     * @see org.eclipse.birt.report.service.api.IViewerReportService#runAndRenderReport(org.eclipse.birt.report.service.api.IViewerReportDesignHandle,
+     *      java.lang.String, org.eclipse.birt.report.service.api.InputOptions,
+     *      java.util.Map, java.io.OutputStream, java.util.List, java.util.Map)
+     */
+    public void runAndRenderReport( IViewerReportDesignHandle design,
+            String outputDocName, InputOptions options, Map parameters,
+            OutputStream out, List activeIds, Map displayTexts )
+            throws ReportServiceException
+    {
+        if ( design == null || design.getDesignObject( ) == null )
+            throw new ReportServiceException( BirtResources.getMessage( ResourceConstants.GENERAL_EXCEPTION_NO_REPORT_DESIGN ) );
+
+        HttpServletRequest request = (HttpServletRequest) options.getOption( InputOptions.OPT_REQUEST );
+
+        try
+        {
+            ViewerAttributeBean attrBean = (ViewerAttributeBean) request.getAttribute( IBirtConstants.ATTRIBUTE_BEAN );
+            String reportTitle = ParameterAccessor.htmlDecode( attrBean.getReportTitle( ) );
+            IReportRunnable runnable = (IReportRunnable) design.getDesignObject( );
+
+            // get maxRows
+            Integer maxRows = null;
+            if ( ParameterAccessor.isReportParameterExist( request,
+                    ParameterAccessor.PARAM_MAXROWS ) )
+                maxRows = Integer.valueOf( ParameterAccessor.getMaxRows( request ) );
+
+            try {
+                // put all app context from Birt Container to Report Engine Service
+                ReportEngineService.getInstance().getEngineConfig().getAppContext().putAll(
+                        BirtContainer.getReportEngine().getConfig().getAppContext());
+                Connection connection = getConnection();
+                ReportEngineService.getInstance( ).getEngineConfig().getAppContext().put("OdaJDBCDriverPassInConnection", connection);
+            } catch (Exception e) {
+                Debug.logError(e, module);
+            }
+            ReportEngineService.getInstance( ).runAndRenderReport( runnable,
+                    out,
+                    options,
+                    parameters,
+                    null,
+                    null,
+                    null,
+                    displayTexts,
+                    reportTitle,
+                    maxRows );
+        }
+        catch ( RemoteException e )
+        {
+            throwReportServiceException( e );
+        }
+    }
+    
+    /**
+     * get connection
+     */
+    private Connection getConnection() {
+        Connection connection = null;
+        try {
+            String delegatorGroupHelperName = BirtContainer.getDelegatorGroupHelperName();
+            Delegator delegator = BirtContainer.getDelegator();
+            Debug.logInfo("Get the JDBC connection from group helper's name:" + delegatorGroupHelperName, module);
+            String helperName = delegator.getGroupHelperName(delegatorGroupHelperName);    // gets the helper (localderby, localmysql, localpostgres, etc.) for your entity group org.ofbiz
+            connection = ConnectionFactory.getConnection(helperName);
+        } catch (GenericEntityException e) {
+            Debug.logError(e, module);
+        } catch (SQLException e) {
+            Debug.logError(e, module);
+        }
+        return connection;
+    }
+    
+    /**
+     * @param e
+     * @throws DummyRemoteException
+     */
+    private void throwDummyException( Exception e )
+            throws DummyRemoteException
+    {
+        if ( e instanceof ReportServiceException )
+        {
+            throw new DummyRemoteException(e);
+        }
+        else
+        {
+            throw new DummyRemoteException( new ReportServiceException( e
+                .getLocalizedMessage( ), e ) );
+        }
+    }
+    
+    /**
+     * Temporary method for extracting the exception from the
+     * DummyRemoteException and throwing it.
+     */
+    private void throwReportServiceException( RemoteException e )
+            throws ReportServiceException
+    {
+        Throwable wrappedException = e;
+        if ( e instanceof ReportEngineService.DummyRemoteException )
+        {
+            wrappedException = e.getCause( );
+        }
+        if ( wrappedException instanceof ReportServiceException )
+        {
+            throw (ReportServiceException) wrappedException;
+        }
+        else if ( wrappedException != null )
+        {
+            throw new ReportServiceException( wrappedException.getLocalizedMessage( ),
+                    wrappedException );
+        }
+        else
+        {
+            throw new ReportServiceException( e.getLocalizedMessage( ), e );
+        }
+    }
+}
diff --git a/framework/webtools/src/org/ofbiz/birt/report/servlet/BirtEngineServlet.java b/framework/webtools/src/org/ofbiz/birt/report/servlet/BirtEngineServlet.java
new file mode 100644
index 0000000..5e645d1
--- /dev/null
+++ b/framework/webtools/src/org/ofbiz/birt/report/servlet/BirtEngineServlet.java
@@ -0,0 +1,126 @@
+package org.ofbiz.birt.report.servlet;
+
+import java.io.IOException;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.birt.core.exception.BirtException;
+import org.eclipse.birt.report.IBirtConstants;
+import org.eclipse.birt.report.context.IContext;
+import org.eclipse.birt.report.context.ViewerAttributeBean;
+import org.eclipse.birt.report.presentation.aggregation.layout.EngineFragment;
+import org.eclipse.birt.report.presentation.aggregation.layout.RequesterFragment;
+import org.eclipse.birt.report.service.BirtReportServiceFactory;
+import org.eclipse.birt.report.servlet.BaseReportEngineServlet;
+import org.eclipse.birt.report.utility.BirtUtility;
+import org.ofbiz.birt.report.context.OFBizBirtContext;
+import org.ofbiz.birt.report.service.OFBizBirtViewerReportService;
+
+public class BirtEngineServlet extends BaseReportEngineServlet {
+    /**
+     * TODO: what's this?
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * Local initialization.
+     * 
+     * @return
+     */
+    protected void __init( ServletConfig config )
+    {
+        BirtReportServiceFactory.init( new OFBizBirtViewerReportService( config
+                .getServletContext( ) ) );
+
+        engine = new EngineFragment( );
+
+        requester = new RequesterFragment( );
+        requester.buildComposite( );
+        requester.setJSPRootPath( "/webcontent/birt" ); //$NON-NLS-1$
+    }
+
+    /**
+     * Init context.
+     * 
+     * @param request
+     *            incoming http request
+     * @param response
+     *            http response
+     * @exception BirtException
+     * @return IContext
+     */
+    protected IContext __getContext( HttpServletRequest request,
+            HttpServletResponse response ) throws BirtException
+    {
+        BirtReportServiceFactory.getReportService( ).setContext(
+                getServletContext( ), null );
+        return new OFBizBirtContext( request, response );
+    }
+
+    /**
+     * Local authentication.
+     * 
+     * @param request
+     *            incoming http request
+     * @param response
+     *            http response
+     * @return
+     */
+    protected boolean __authenticate( HttpServletRequest request,
+            HttpServletResponse response )
+    {
+        return true;
+    }
+
+    /**
+     * Local do get.
+     */
+    protected void __doGet( IContext context ) throws ServletException,
+            IOException, BirtException
+    {
+        ViewerAttributeBean bean = (ViewerAttributeBean) context.getBean( );
+        assert bean != null;
+
+        if ( ( IBirtConstants.SERVLET_PATH_PREVIEW.equalsIgnoreCase( context
+                .getRequest( ).getServletPath( ) )
+                || IBirtConstants.SERVLET_PATH_DOCUMENT
+                        .equalsIgnoreCase( context.getRequest( )
+                                .getServletPath( ) ) || IBirtConstants.SERVLET_PATH_OUTPUT
+                .equalsIgnoreCase( context.getRequest( ).getServletPath( ) ) )
+                && bean.isShowParameterPage( ) )
+        {
+            requester.service( context.getRequest( ), context.getResponse( ) );
+        }
+        else if ( IBirtConstants.SERVLET_PATH_PARAMETER
+                .equalsIgnoreCase( context.getRequest( ).getServletPath( ) ) )
+        {
+            requester.service( context.getRequest( ), context.getResponse( ) );
+        }
+        else
+        {
+            engine.service( context.getRequest( ), context.getResponse( ) );
+        }
+    }
+
+    /**
+     * Process exception for non soap request.
+     * 
+     * @param request
+     *            incoming http request
+     * @param response
+     *            http response
+     * @param exception
+     * @throws ServletException
+     * @throws IOException
+     */
+    protected void __handleNonSoapException( HttpServletRequest request,
+            HttpServletResponse response, Exception exception )
+            throws ServletException, IOException
+    {
+        exception.printStackTrace( );
+        BirtUtility.appendErrorMessage( response.getOutputStream( ), exception );
+    }
+}
diff --git a/framework/webtools/src/org/ofbiz/birt/report/servlet/BirtViewerServlet.java b/framework/webtools/src/org/ofbiz/birt/report/servlet/BirtViewerServlet.java
new file mode 100644
index 0000000..ae712b0
--- /dev/null
+++ b/framework/webtools/src/org/ofbiz/birt/report/servlet/BirtViewerServlet.java
@@ -0,0 +1,143 @@
+package org.ofbiz.birt.report.servlet;
+
+import java.io.IOException;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.birt.core.exception.BirtException;
+import org.eclipse.birt.report.IBirtConstants;
+import org.eclipse.birt.report.context.IContext;
+import org.eclipse.birt.report.presentation.aggregation.IFragment;
+import org.eclipse.birt.report.presentation.aggregation.layout.FramesetFragment;
+import org.eclipse.birt.report.presentation.aggregation.layout.RunFragment;
+import org.eclipse.birt.report.service.BirtReportServiceFactory;
+import org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet;
+import org.eclipse.birt.report.utility.BirtUtility;
+import org.ofbiz.birt.report.context.OFBizBirtContext;
+import org.ofbiz.birt.report.service.OFBizBirtViewerReportService;
+
+public class BirtViewerServlet extends BirtSoapMessageDispatcherServlet {
+    
+    public final static String module = BirtViewerServlet.class.getName();
+    
+    @Override
+    protected void __init(ServletConfig config) {
+        // TODO Auto-generated method stub
+        BirtReportServiceFactory.init( new OFBizBirtViewerReportService( config
+                .getServletContext( ) ) );
+        
+        // handle 'frameset' pattern
+        viewer = new FramesetFragment( );
+        viewer.buildComposite( );
+        viewer.setJSPRootPath( "/webcontent/birt" ); //$NON-NLS-1$
+
+        // handle 'run' pattern
+        run = new RunFragment( );
+        run.buildComposite( );
+        run.setJSPRootPath( "/webcontent/birt" ); //$NON-NLS-1$            
+    }
+    
+    /**
+     * Init context.
+     * 
+     * @param request
+     *            incoming http request
+     * @param response
+     *            http response
+     * @exception BirtException
+     * @return IContext
+     */
+    protected IContext __getContext( HttpServletRequest request,
+            HttpServletResponse response ) throws BirtException
+    {
+        BirtReportServiceFactory.getReportService( ).setContext(
+                getServletContext( ), null );
+        return new OFBizBirtContext( request, response );
+    }
+    
+    /**
+     * Local process http request with GET method.
+     * 
+     * @param request
+     *            incoming http request
+     * @param response
+     *            http response
+     * @exception ServletException
+     * @exception IOException
+     * @return
+     */
+    protected void __doGet( IContext context ) throws ServletException,
+            IOException, BirtException
+    {
+        IFragment activeFragment = null;
+        String servletPath = context.getRequest( ).getServletPath( );
+        if ( IBirtConstants.SERVLET_PATH_FRAMESET
+                .equalsIgnoreCase( servletPath ) )
+        {
+            activeFragment = viewer;
+        }
+        else if ( IBirtConstants.SERVLET_PATH_RUN
+                .equalsIgnoreCase( servletPath ) )
+        {
+            activeFragment = run;
+        }
+
+        if ( activeFragment != null )
+            activeFragment.service( context.getRequest( ), context
+                    .getResponse( ) );
+    }
+    
+    /**
+     * Locale process http request with POST method. Four different servlet
+     * paths are expected: "/frameset", "/navigation", "/toolbar", and "/run".
+     * 
+     * @param request
+     *            incoming http request
+     * @param response
+     *            http response
+     * @exception ServletException
+     * @exception IOException
+     * @return
+     */
+    protected void __doPost( IContext context ) throws ServletException,
+            IOException, BirtException
+    {
+    }
+    
+    /**
+     * Local authentication. Alwasy returns true.
+     * 
+     * @param request
+     *            incoming http request
+     * @param response
+     *            http response
+     * @return
+     */
+    protected boolean __authenticate( HttpServletRequest request,
+            HttpServletResponse response )
+    {
+        return true;
+    }
+    
+    /**
+     * Process exception for non soap request.
+     * 
+     * @param request
+     *            incoming http request
+     * @param response
+     *            http response
+     * @param exception
+     * @throws ServletException
+     * @throws IOException
+     */
+    protected void __handleNonSoapException( HttpServletRequest request,
+            HttpServletResponse response, Exception exception )
+            throws ServletException, IOException
+    {
+        exception.printStackTrace( );
+        BirtUtility.appendErrorMessage( response.getOutputStream( ), exception );
+    }
+}
diff --git a/framework/webtools/src/org/ofbiz/birt/webapp/view/BirtViewHandler.java b/framework/webtools/src/org/ofbiz/birt/webapp/view/BirtViewHandler.java
new file mode 100644
index 0000000..e4e4b7c
--- /dev/null
+++ b/framework/webtools/src/org/ofbiz/birt/webapp/view/BirtViewHandler.java
@@ -0,0 +1,102 @@
+package org.ofbiz.webapp.view;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.sql.SQLException;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.xml.parsers.ParserConfigurationException;
+
+import javolution.util.FastMap;
+
+import org.eclipse.birt.core.exception.BirtException;
+import org.eclipse.birt.report.engine.api.IReportEngine;
+import org.eclipse.birt.report.engine.api.IReportRunnable;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.GeneralException;
+import org.ofbiz.base.util.UtilHttp;
+import org.ofbiz.base.util.UtilProperties;
+import org.ofbiz.birt.BirtWorker;
+import org.ofbiz.birt.container.BirtContainer;
+import org.ofbiz.entity.GenericEntityException;
+import org.ofbiz.widget.birt.BirtFactory;
+import org.xml.sax.SAXException;
+
+public class BirtViewHandler implements ViewHandler {
+    
+    public static final String module = BirtViewHandler.class.getName();
+
+    protected ServletContext servletContext = null;
+
+    private String name = "birt";
+    
+    public void init(ServletContext context) throws ViewHandlerException {
+        // TODO Auto-generated method stub
+        this.servletContext = context;
+    }
+
+    public String getName() {
+        // TODO Auto-generated method stub
+        return name;
+    }
+
+    public void setName(String name) {
+        // TODO Auto-generated method stub
+        this.name = name;
+    }
+
+    public void render(String name, String page, String info,
+            String contentType, String encoding, HttpServletRequest request,
+            HttpServletResponse response) throws ViewHandlerException {
+        // TODO Auto-generated method stub
+        try {
+            IReportEngine engine = BirtContainer.getReportEngine();
+            // open report design
+            IReportRunnable design = null;
+            if (page.startsWith("component://")) {
+                InputStream reportInputStream = BirtFactory.getReportInputStreamFromLocation(page);
+                design = engine.openReportDesign(reportInputStream);
+            } else {
+                design = engine.openReportDesign(servletContext.getRealPath(page));
+            }
+            
+             Map context = FastMap.newInstance();
+            // set parameters from request
+             Map parameters = (Map)request.getAttribute(BirtWorker.BIRT_PARAMETERS);
+                if (parameters != null) {
+                    context.put(BirtWorker.BIRT_PARAMETERS, parameters);
+                }
+                // set locale from request
+                Locale locale = (Locale)request.getAttribute(BirtWorker.BIRT_LOCALE);
+                if (locale == null) {
+                    locale = UtilHttp.getLocale(request);
+                }
+                context.put(BirtWorker.BIRT_LOCALE, locale);
+                String birtImageDirectory = UtilProperties.getPropertyValue("birt", "birt.html.image.directory");
+                context.put(BirtWorker.BIRT_IMAGE_DIRECTORY, birtImageDirectory);
+             BirtWorker.exportReport(design, context, contentType, response.getOutputStream());
+        } catch (BirtException e) {
+            throw new ViewHandlerException("Birt Error create engine: " + e.toString(), e);
+        } catch (IOException e) {
+            throw new ViewHandlerException("Error in the response writer/output stream: " + e.toString(), e);
+        } catch (SQLException e) {
+            throw new ViewHandlerException("get connection error: " + e.toString(), e);
+        } catch (GenericEntityException e) {
+            throw new ViewHandlerException("generic entity error: " + e.toString(), e);
+        } catch (GeneralException e) {
+            throw new ViewHandlerException("general error: " + e.toString(), e);
+        } catch (SAXException se) {
+            String errMsg = "Error SAX rendering " + page + " view handler: " + se.toString();
+            Debug.logError(se, errMsg, module);
+            throw new ViewHandlerException(errMsg, se);
+        } catch (ParserConfigurationException pe) {
+            String errMsg = "Error parser rendering " + page + " view handler: " + pe.toString();
+            Debug.logError(pe, errMsg, module);
+            throw new ViewHandlerException(errMsg, pe);
+        }
+    }
+}
diff --git a/framework/webtools/src/org/ofbiz/birt/widget/BirtFactory.java b/framework/webtools/src/org/ofbiz/birt/widget/BirtFactory.java
new file mode 100644
index 0000000..9486185
--- /dev/null
+++ b/framework/webtools/src/org/ofbiz/birt/widget/BirtFactory.java
@@ -0,0 +1,51 @@
+package org.ofbiz.widget.birt;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.ofbiz.base.location.FlexibleLocation;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.widget.screen.ScreenFactory;
+import org.xml.sax.SAXException;
+
+public class BirtFactory {
+    
+    public static final String module = BirtFactory.class.getName();
+    
+    /**
+     * get report inport stream from location
+     * @param resourceName
+     * @return
+     * @throws IOException
+     * @throws SAXException
+     * @throws ParserConfigurationException
+     */
+    public static InputStream getReportInputStreamFromLocation(String resourceName)
+        throws IOException, SAXException, ParserConfigurationException{
+        
+        InputStream reportInputStream = null;
+        synchronized (BirtFactory.class) {
+            long startTime = System.currentTimeMillis();
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            if (loader == null) {
+                loader = ScreenFactory.class.getClassLoader();
+            }
+            URL reportFileUrl = null;
+            reportFileUrl = FlexibleLocation.resolveLocation(resourceName, loader);
+            if (reportFileUrl == null) {
+                throw new IllegalArgumentException("Could not resolve location to URL: " + resourceName);
+            }
+            reportInputStream = reportFileUrl.openStream();
+            double totalSeconds = (System.currentTimeMillis() - startTime)/1000.0;
+            Debug.logInfo("Got report in " + totalSeconds + "s from: " + reportFileUrl.toExternalForm(), module);
+        }
+        
+        if (reportInputStream == null) {
+            throw new IllegalArgumentException("Could not find report file with location [" + resourceName + "]");
+        }
+        return reportInputStream;
+    }
+}
diff --git a/framework/webtools/webapp/birt/CancelTask.jsp b/framework/webtools/webapp/birt/CancelTask.jsp
new file mode 100644
index 0000000..23ea014
--- /dev/null
+++ b/framework/webtools/webapp/birt/CancelTask.jsp
@@ -0,0 +1,49 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.utility.BirtUtility,
+				 org.eclipse.birt.report.IBirtConstants,	
+				 org.eclipse.birt.report.resource.BirtResources" %>
+
+<%-----------------------------------------------------------------------------
+	Cancel Task
+-----------------------------------------------------------------------------%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+	<HEAD>
+		<TITLE>
+			<%= BirtResources.getMessage( "birt.viewer.title.message" )%>
+		</TITLE>
+		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+		<LINK REL="stylesheet" HREF="<%= request.getContextPath( ) + "/webcontent/birt/styles/style.css" %>" TYPE="text/css">
+	</HEAD>
+	<%
+		String taskid = request.getParameter( IBirtConstants.OPRAND_TASKID );
+		try
+		{
+			BirtUtility.cancelTask( request, taskid );
+		}
+		catch( Exception e )
+		{
+			e.printStackTrace( );
+		}
+	%>
+	<BODY>
+		<TABLE CLASS="BirtViewer_Highlight_Label">
+			<TR>
+				<TD NOWRAP>
+					<%= BirtResources.getMessage( "birt.viewer.message.taskcanceled" )%>
+				</TD>
+			</TR>
+		</TABLE>
+	</BODY>
+</HTML>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/config.ini b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/config.ini
new file mode 100755
index 0000000..be141be
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/config.ini
@@ -0,0 +1,5 @@
+#Product Runtime Configuration File
+eclipse.product=org.eclipse.birt.report.engine.ReportEngineSDK
+osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@3:start, org.eclipse.birt.core@start
+osgi.framework.extensions=org.eclipse.birt.api
+osgi.bundles.defaultStartLevel=4
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.core.runtime/.manager/.fileTableLock b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.core.runtime/.manager/.fileTableLock
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.core.runtime/.manager/.fileTableLock
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.equinox.app/.manager/.fileTableLock b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.equinox.app/.manager/.fileTableLock
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.equinox.app/.manager/.fileTableLock
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.equinox.app/.manager/.tmp6547585616898249644.instance b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.equinox.app/.manager/.tmp6547585616898249644.instance
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.equinox.app/.manager/.tmp6547585616898249644.instance
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.bundledata.1 b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.bundledata.1
new file mode 100755
index 0000000..4abf5ed
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.bundledata.1
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.lazy.1 b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.lazy.1
new file mode 100755
index 0000000..4bfcbd3
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.lazy.1
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.manager/.fileTable.4 b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.manager/.fileTable.4
new file mode 100755
index 0000000..ab53d24
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.manager/.fileTable.4
@@ -0,0 +1,6 @@
+#safe table
+#Mon Oct 12 17:13:06 ICT 2009
+.bundledata=1
+.state=0
+.lazy=0
+.crc3548b291.v1
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.manager/.fileTable.5 b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.manager/.fileTable.5
new file mode 100755
index 0000000..79b9023
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.manager/.fileTable.5
@@ -0,0 +1,6 @@
+#safe table
+#Mon Oct 12 17:13:06 ICT 2009
+.bundledata=1
+.state=1
+.lazy=1
+.crcc391e8ee.v1
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.manager/.fileTableLock b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.manager/.fileTableLock
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.manager/.fileTableLock
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.manager/.tmp4010540039369615635.instance b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.manager/.tmp4010540039369615635.instance
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.manager/.tmp4010540039369615635.instance
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.state.1 b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.state.1
new file mode 100755
index 0000000..ae76e3c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/.state.1
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/bundles/63/1/.cp/lib/Tidy.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/bundles/63/1/.cp/lib/Tidy.jar
new file mode 100755
index 0000000..0f621cc
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/bundles/63/1/.cp/lib/Tidy.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/bundles/63/1/.cp/lib/commons-cli-1.0.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/bundles/63/1/.cp/lib/commons-cli-1.0.jar
new file mode 100755
index 0000000..22a004e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.osgi/bundles/63/1/.cp/lib/commons-cli-1.0.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.update/history/1255342354000.xml b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.update/history/1255342354000.xml
new file mode 100755
index 0000000..118ae39
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.update/history/1255342354000.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<config date="1255342355826" transient="false" version="3.0">
+<site enabled="true" policy="USER-EXCLUDE" updateable="true" url="platform:/base/">
+</site>
+</config>
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.update/last.config.stamp b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.update/last.config.stamp
new file mode 100755
index 0000000..a825493
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.update/last.config.stamp
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.update/platform.xml b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.update/platform.xml
new file mode 100644
index 0000000..54e9ced
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/configuration/org.eclipse.update/platform.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<config date="1255576526435" transient="false" version="3.0">
+<site enabled="true" policy="USER-EXCLUDE" updateable="true" url="platform:/base/">
+</site>
+</config>
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/genReport.bat b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/genReport.bat
new file mode 100755
index 0000000..f4ed5eb
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/genReport.bat
@@ -0,0 +1,81 @@
+ECHO off

+

+REM org.eclipse.birt.report.engine.impl.ReportRunner Usage:

+REM --mode/-m [ run | render | runrender] the default is runrender

+REM for runrender mode:

+REM      we should add it in the end <design file>

+REM      --format/-f [ HTML \| PDF ]

+REM      --output/-o <target file>

+REM      --htmlType/-t < HTML \| ReportletNoCSS >

+REM      --locale /-l <locale>

+REM      --parameter/-p <"parameterName=parameterValue">

+REM      --file/-F <parameter file>

+REM      --encoding/-e <target encoding>

+REM

+REM Locale: default is english

+REM parameters in command line will overide parameters in parameter file

+REM parameter name cant include characters such as \ ', '=', ':'

+REM

+REM For RUN mode:

+REM      we should add it in the end<design file>

+REM      --output/-o <target file>

+REM      --locale /-l <locale>

+REM      --parameter/-p <parameterName=parameterValue>

+REM      --file/-F <parameter file>

+REM

+REM Locale: default is english

+REM parameters in command line will overide parameters in parameter file 

+REM parameter name cant include characters such as \ ', '=', ':' 

+REM

+REM For RENDER mode:

+REM     we should add it in the end<design file>

+REM     --output/-o <target file>

+REM     --page/-p <pageNumber>

+REM     --locale /-l <locale>

+REM

+REM Locale: default is english

+IF not "%BIRT_HOME%" == "" GOTO runBirt

+ECHO "Please set BIRT_HOME first."

+GOTO end

+:runBirt

+

+

+REM set the birt class path.

+SET BIRTCLASSPATH=%BIRT_HOME%\ReportEngine\lib\chartengineapi.jar;%BIRT_HOME%\ReportEngine\lib\chartitemapi.jar;%BIRT_HOME%\ReportEngine\lib\com.ibm.icu_4.0.1.v20090822.jar;%BIRT_HOME%\ReportEngine\lib\commons-cli-1.0.jar;%BIRT_HOME%\ReportEngine\lib\coreapi.jar;%BIRT_HOME%\ReportEngine\lib\crosstabcoreapi.jar;%BIRT_HOME%\ReportEngine\lib\dataadapterapi.jar;%BIRT_HOME%\ReportEngine\lib\dataaggregationapi.jar;%BIRT_HOME%\ReportEngine\lib\dataextraction.jar;%BIRT_HOME%\ReportEngine\lib\dteapi.jar;%BIRT_HOME%\ReportEngine\lib\emitterconfig.jar;%BIRT_HOME%\ReportEngine\lib\engineapi.jar;%BIRT_HOME%\ReportEngine\lib\flute.jar;%BIRT_HOME%\ReportEngine\lib\js.jar;%BIRT_HOME%\ReportEngine\lib\modelapi.jar;%BIRT_HOME%\ReportEngine\lib\modelodaapi.jar;%BIRT_HOME%\ReportEngine\lib\odadesignapi.jar;%BIRT_HOME%\ReportEngine\lib\org.apache.commons.codec_1.3.0.v20080530-1600.jar;%BIRT_HOME%\ReportEngine\lib\org.eclipse.emf.common_2.5.0.v200906151043.jar;%BIRT_HOME%\ReportEngine\lib\org.eclipse.emf.ecore.xmi_2.5.0.v200906151043.jar;%BIRT_HOME%\ReportEngine\lib\org.eclipse.emf.ecore_2.5.0.v200906151043.jar;%BIRT_HOME%\ReportEngine\lib\org.w3c.css.sac_1.3.0.v200805290154.jar;%BIRT_HOME%\ReportEngine\lib\scriptapi.jar;

+

+

+REM set command

+SET JAVACMD=java

+set p1=%1

+set p2=%2

+set p3=%3

+set p4=%4

+set p5=%5

+set p6=%6

+set p7=%7

+set p8=%8

+set p9=%9

+shift

+set p10=%9

+shift

+set p11=%9

+shift

+set p12=%9

+shift

+set p13=%9

+shift

+set p14=%9

+shift

+set p15=%9

+shift

+set p16=%9

+shift

+set p17=%9

+shift

+set p18=%9

+shift

+set p19=%9

+

+%JAVACMD% -cp "%BIRTCLASSPATH%" -DBIRT_HOME="%BIRT_HOME%\ReportEngine" org.eclipse.birt.report.engine.api.ReportRunner %p1% %p2% %p3% %p4% %p5% %p6% %p7% %p8% %p9% %p10% %p11% %p12% %p13% %p14% %p15% %p16% %p17% %p18% %p19%

+

+:end

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/genReport.sh b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/genReport.sh
new file mode 100755
index 0000000..5014979
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/genReport.sh
@@ -0,0 +1,48 @@
+################USAGE OF REPORTRUNNER#########################
+# echo "org.eclipse.birt.report.engine.impl.ReportRunner Usage:";
+# echo "--mode/-m [ run | render | runrender] the default is runrender "
+# echo "for runrender mode: "
+# echo "" "we should add it in the end <design file> "
+# echo "" "--format/-f [ HTML | PDF ] "
+# echo "" "--output/-o <target file>"
+# echo "" "--htmlType/-t < HTML | ReportletNoCSS >"
+# echo "" "--locale /-l<locale>"
+# echo "" "--parameter/-p <"parameterName=parameterValue">"
+# echo "" "--file/-F <parameter file>"
+# echo "" "--encoding/-e <target encoding>"
+# echo " "
+# echo "Locale: default is english"
+# echo "parameters in command line will overide parameters in parameter file"
+# echo "parameter name cant include characters such as \ ', '=', ':'"
+# echo " "
+# echo "For RUN mode:"
+# echo "we should add it in the end<design file>"
+# echo "" "--output/-o <target file>"
+# echo "" "--locale /-l<locale>"
+# echo "" "--parameter/-p <parameterName=parameterValue>"
+# echo "" "--file/-F <parameter file>"
+# echo " "
+# echo "Locale: default is english"
+# echo "parameters in command line will overide parameters in parameter file"
+# echo "parameter name cant include characters such as \ ', '=', ':'"
+# echo " "
+# echo "For RENDER mode:"
+# echo "" "we should add it in the end<design file>"
+# echo "" "--output/-o <target file>"
+# echo "" "--page/-p <pageNumber>"
+# echo "" "--locale /-l<locale>"
+# echo " "
+# echo "Locale: default is english"
+################END OF USAGE #########################
+if [ "$BIRT_HOME" = "" ];
+
+then
+echo " The BIRT_HOME need be set before BirtRunner can run.";
+else
+
+export BIRTCLASSPATH="$BIRT_HOME/ReportEngine/lib/chartengineapi.jar:$BIRT_HOME/ReportEngine/lib/chartitemapi.jar:$BIRT_HOME/ReportEngine/lib/com.ibm.icu_4.0.1.v20090822.jar:$BIRT_HOME/ReportEngine/lib/commons-cli-1.0.jar:$BIRT_HOME/ReportEngine/lib/coreapi.jar:$BIRT_HOME/ReportEngine/lib/crosstabcoreapi.jar:$BIRT_HOME/ReportEngine/lib/dataadapterapi.jar:$BIRT_HOME/ReportEngine/lib/dataaggregationapi.jar:$BIRT_HOME/ReportEngine/lib/dataextraction.jar:$BIRT_HOME/ReportEngine/lib/dteapi.jar:$BIRT_HOME/ReportEngine/lib/emitterconfig.jar:$BIRT_HOME/ReportEngine/lib/engineapi.jar:$BIRT_HOME/ReportEngine/lib/flute.jar:$BIRT_HOME/ReportEngine/lib/js.jar:$BIRT_HOME/ReportEngine/lib/modelapi.jar:$BIRT_HOME/ReportEngine/lib/modelodaapi.jar:$BIRT_HOME/ReportEngine/lib/odadesignapi.jar:$BIRT_HOME/ReportEngine/lib/org.apache.commons.codec_1.3.0.v20080530-1600.jar:$BIRT_HOME/ReportEngine/lib/org.eclipse.emf.common_2.5.0.v200906151043.jar:$BIRT_HOME/ReportEngine/lib/org.eclipse.emf.ecore.xmi_2.5.0.v200906151043.jar:$BIRT_HOME/ReportEngine/lib/org.eclipse.emf.ecore_2.5.0.v200906151043.jar:$BIRT_HOME/ReportEngine/lib/org.w3c.css.sac_1.3.0.v200805290154.jar:$BIRT_HOME/ReportEngine/lib/scriptapi.jar"
+
+JAVACMD='java';
+$JAVACMD -cp "$BIRTCLASSPATH" -DBIRT_HOME="$BIRT_HOME/ReportEngine" org.eclipse.birt.report.engine.api.ReportRunner ${1+"$@"}
+
+fi
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/chartengineapi.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/chartengineapi.jar
new file mode 100755
index 0000000..0c08833
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/chartengineapi.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/chartitemapi.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/chartitemapi.jar
new file mode 100755
index 0000000..e180a25
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/chartitemapi.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/com.ibm.icu_4.0.1.v20090822.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/com.ibm.icu_4.0.1.v20090822.jar
new file mode 100755
index 0000000..cdaa79c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/com.ibm.icu_4.0.1.v20090822.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/commons-cli-1.0.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/commons-cli-1.0.jar
new file mode 100755
index 0000000..22a004e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/commons-cli-1.0.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/coreapi.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/coreapi.jar
new file mode 100755
index 0000000..d6d6966
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/coreapi.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/crosstabcoreapi.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/crosstabcoreapi.jar
new file mode 100755
index 0000000..b758bea
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/crosstabcoreapi.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/dataadapterapi.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/dataadapterapi.jar
new file mode 100755
index 0000000..a73ae37
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/dataadapterapi.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/dataaggregationapi.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/dataaggregationapi.jar
new file mode 100755
index 0000000..0cbe664
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/dataaggregationapi.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/dataextraction.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/dataextraction.jar
new file mode 100755
index 0000000..cd056b9
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/dataextraction.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/dteapi.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/dteapi.jar
new file mode 100755
index 0000000..326d13e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/dteapi.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/emitterconfig.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/emitterconfig.jar
new file mode 100755
index 0000000..22aa0e7
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/emitterconfig.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/engineapi.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/engineapi.jar
new file mode 100755
index 0000000..41fc6fc
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/engineapi.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/flute.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/flute.jar
new file mode 100755
index 0000000..39a55d4
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/flute.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/js.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/js.jar
new file mode 100755
index 0000000..c081d16
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/js.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/modelapi.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/modelapi.jar
new file mode 100755
index 0000000..55a7af6
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/modelapi.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/modelodaapi.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/modelodaapi.jar
new file mode 100755
index 0000000..a2e1053
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/modelodaapi.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/odadesignapi.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/odadesignapi.jar
new file mode 100755
index 0000000..4858159
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/odadesignapi.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.apache.commons.codec_1.3.0.v20080530-1600.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.apache.commons.codec_1.3.0.v20080530-1600.jar
new file mode 100755
index 0000000..9452320
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.apache.commons.codec_1.3.0.v20080530-1600.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.eclipse.emf.common_2.5.0.v200906151043.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.eclipse.emf.common_2.5.0.v200906151043.jar
new file mode 100755
index 0000000..345ad58
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.eclipse.emf.common_2.5.0.v200906151043.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.eclipse.emf.ecore.xmi_2.5.0.v200906151043.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.eclipse.emf.ecore.xmi_2.5.0.v200906151043.jar
new file mode 100755
index 0000000..255e177
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.eclipse.emf.ecore.xmi_2.5.0.v200906151043.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.eclipse.emf.ecore_2.5.0.v200906151043.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.eclipse.emf.ecore_2.5.0.v200906151043.jar
new file mode 100755
index 0000000..917485f
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.eclipse.emf.ecore_2.5.0.v200906151043.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.w3c.css.sac_1.3.0.v200805290154.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.w3c.css.sac_1.3.0.v200805290154.jar
new file mode 100755
index 0000000..e5e9236
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/org.w3c.css.sac_1.3.0.v200805290154.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/scriptapi.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/scriptapi.jar
new file mode 100755
index 0000000..86364bf
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/lib/scriptapi.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.ibm.icu_4.0.1.v20090822.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.ibm.icu_4.0.1.v20090822.jar
new file mode 100755
index 0000000..cdaa79c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.ibm.icu_4.0.1.v20090822.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/META-INF/ECLIPSEF.RSA b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/META-INF/ECLIPSEF.RSA
new file mode 100755
index 0000000..e43b610
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/META-INF/ECLIPSEF.RSA
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/META-INF/ECLIPSEF.SF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/META-INF/ECLIPSEF.SF
new file mode 100755
index 0000000..4147c51
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/META-INF/ECLIPSEF.SF
@@ -0,0 +1,50 @@
+Signature-Version: 1.0

+SHA1-Digest-Manifest: CV56Rir/IOTu7nd3HkVw8kO33Vg=

+Created-By: 1.6.0 (IBM Corporation)

+SHA1-Digest-Manifest-Main-Attributes: pccmIMPkaRpr84AsMr4BJxnQ9mw=

+

+Name: about_files/NOTICE-commons-lang.txt

+SHA1-Digest: Dcmk5XHoZTnZ/1XZa9bByHyjhL8=

+

+Name: eclipse32.png

+SHA1-Digest: Yg2IAx+o7H2tbLyk4cwOAV+K+R4=

+

+Name: about_files/bouncycastle_license.txt

+SHA1-Digest: 2PU7V/eCst00nEPIkJILLPdE3f4=

+

+Name: about.ini

+SHA1-Digest: INNEGu5sbk4YgQndV+vTc61w/Bk=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: SAqY+5ITAL0mkdYeijlSRhyIaZk=

+

+Name: about.mappings

+SHA1-Digest: NpOqGmwrfWeloOYEZ4bIGujex88=

+

+Name: about_files/MPL-1.1.txt

+SHA1-Digest: R7vjJduoLOplud0HRjSwvqhRUck=

+

+Name: about_files/LICENSE-asl-20.txt

+SHA1-Digest: AS8blcGMNj4ID0EVE7SDKY6GgG8=

+

+Name: about.html

+SHA1-Digest: iPXWZT36PZ8hxm39O8cR7wM13oQ=

+

+Name: lib/itextasian-1.5.2.jar

+SHA1-Digest: d+vWDcqMH+XJHYujyovdrDfY5vI=

+

+Name: about.properties

+SHA1-Digest: XWGNdC+dDP7dEpdNUGlnwHkKkO0=

+

+Name: about_files/UNICODE-notice.txt

+SHA1-Digest: CoRcDqKTIbOkRJLQVFwGG40G2MY=

+

+Name: lib/itext_1.5.4.jar

+SHA1-Digest: Ll9ZRrsGFGISuYjylWTQ4cmx9tk=

+

+Name: about_files/NOTICE-xerces.txt

+SHA1-Digest: VACO3ykBiD4jq5Urp7AquIjYfS8=

+

+Name: about_files/JAI-notice.txt

+SHA1-Digest: JEnaZwZhCpknfNLCNpU1qBxIINI=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/META-INF/MANIFEST.MF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..d54e4fc
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/META-INF/MANIFEST.MF
@@ -0,0 +1,68 @@
+Manifest-Version: 1.0

+Bundle-ClassPath: lib/itextasian-1.5.2.jar,library.jar,lib/itext_1.5.4

+ .jar

+Bundle-Vendor: Eclipse.org

+Bundle-Localization: plugin

+Bundle-RequiredExecutionEnvironment: J2SE-1.4

+Bundle-Name: Lowagie Itext

+Bundle-SymbolicName: com.lowagie.itext

+Eclipse-ExtensibleAPI: true

+Bundle-Version: 1.5.4.v20090305

+Export-Package: com.lowagie.bc.asn1,com.lowagie.text,com.lowagie.text.

+ html,com.lowagie.text.html.simpleparser,com.lowagie.text.markup,com.l

+ owagie.text.pdf,com.lowagie.text.pdf.codec,com.lowagie.text.pdf.codec

+ .wmf,com.lowagie.text.pdf.crypto,com.lowagie.text.pdf.events,com.lowa

+ gie.text.pdf.fonts,com.lowagie.text.pdf.hyphenation,com.lowagie.text.

+ rtf,com.lowagie.text.rtf.direct,com.lowagie.text.rtf.document,com.low

+ agie.text.rtf.document.output,com.lowagie.text.rtf.field,com.lowagie.

+ text.rtf.graphic,com.lowagie.text.rtf.headerfooter,com.lowagie.text.r

+ tf.list,com.lowagie.text.rtf.style,com.lowagie.text.rtf.table,com.low

+ agie.text.rtf.text,com.lowagie.text.xml,com.lowagie.text.xml.xmp,com.

+ lowagie.tools

+Bundle-ManifestVersion: 2

+

+Name: about_files/NOTICE-commons-lang.txt

+SHA1-Digest: yxqsyHYuXWcGuS5lTBUlpd4qNQw=

+

+Name: eclipse32.png

+SHA1-Digest: eCk/A3/COXL3S6qAVDOSrlsqmLw=

+

+Name: about_files/bouncycastle_license.txt

+SHA1-Digest: c2+FXGr4NqQecSfu0fWsHRAHfmg=

+

+Name: about.ini

+SHA1-Digest: 2w8BfdBzQbbWHJNbazxzu9YMYwo=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: KyT9FF7C7t86NoBoa2kZT3ZJBfw=

+

+Name: about.mappings

+SHA1-Digest: 4fkRPbakxJw/l7UVJfFDuPncInU=

+

+Name: about_files/MPL-1.1.txt

+SHA1-Digest: q6jXbQr2fVfaPDwyHKpZ89JCOGs=

+

+Name: about_files/LICENSE-asl-20.txt

+SHA1-Digest: K4uBUimqimHkg/tLoFiLi2xJGJA=

+

+Name: about.html

+SHA1-Digest: G9uakmojrdxY0X9pbQ4J9IXi7zM=

+

+Name: lib/itextasian-1.5.2.jar

+SHA1-Digest: l6c5otF0wiM2nyT2cnw7zvAFD94=

+

+Name: about.properties

+SHA1-Digest: mk9sY8umsVweO7IpyhT0OAxj/wQ=

+

+Name: about_files/UNICODE-notice.txt

+SHA1-Digest: kqfRHLL5ywDiFndNWSu195E8W/M=

+

+Name: lib/itext_1.5.4.jar

+SHA1-Digest: lClTRUmniPS9GkLwqrNCn6ON2EQ=

+

+Name: about_files/NOTICE-xerces.txt

+SHA1-Digest: rg63D4ZieDMyEchu20aOfye4/mo=

+

+Name: about_files/JAI-notice.txt

+SHA1-Digest: jbHA0tpkkS58HITw2Z0lKWyVTNk=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/META-INF/eclipse.inf b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/META-INF/eclipse.inf
new file mode 100755
index 0000000..7864d3c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/META-INF/eclipse.inf
@@ -0,0 +1,3 @@
+#Processed using Jarprocessor
+pack200.args = -E4
+pack200.conditioned = true
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about.html b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about.html
new file mode 100755
index 0000000..47aef68
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about.html
@@ -0,0 +1,231 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>Jan 29, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+<h3>Third Party Content</h3>
+
+<p>The Content includes items that have been sourced from third parties as set out below. If you 
+did not receive this Content directly from the Eclipse Foundation, the following is provided 
+for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
+terms and conditions of use.</p>
+
+<h4>iText 1.5.4</h4>
+
+<p>The plug-in is accompanied by software developed by the iText project led by 
+Bruno Lowagie and Paulo Soares at <a href="http://www.lowagie.com/iText/">
+http://www.lowagie.com/iText/</a>.
+The binary code of iText 1.5.4 (&quot;iText&quot;) is included with the plug-in without modification in lib/itext-1.5.4.jar.
+Your use of iText is subject to the terms and conditions of the Mozilla Public License, Version 1.1 (&quot;MPL&quot;).
+A copy of the Mozilla Public License can be found in <a href="about_files/MPL-1.1.txt">about_files/MPL-1.1.txt</a>
+and is also available at <a href="http://www.lowagie.com/iText/MPL-1.1.txt">http://www.lowagie.com/iText/MPL-1.1.txt</a>.
+The source code for iText is available at <a href="http://sourceforge.net/projects/itext/">http://sourceforge.net/projects/itext/</a>.</p>
+
+<h4>iText Asian 1.5.2 </h4>
+
+<p>The plug-in is accompanied by software developed by the iText project led by 
+Bruno Lowagie and Paulo Soares at <a href="http://www.lowagie.com/iText/">
+http://www.lowagie.com/iText/</a>.
+The binary code of iText Asian (&quot;iTextAsian&quot;) is included with the plug-in without modification in lib/iTextAsian.jar.
+Your use of iText Asian is subject to the terms and conditions of the Mozilla Public License, Version 1.1 (&quot;MPL&quot;).
+A copy of the MPL can be found in <a href="about_files/MPL-1.1.txt">about_files/MPL-1.1.txt</a>
+and is also available at <a href="http://www.lowagie.com/iText/MPL-1.1.txt">http://www.lowagie.com/iText/MPL-1.1.txt</a>.
+The source code for iText Asian is available at <a href="http://sourceforge.net/projects/itext/">http://sourceforge.net/projects/itext/</a>.</p>
+
+<h4>The Bouncy Castle Crypto Package (SUBSET)</h4>
+
+<p>The plug-in is accompanied by software developed by The Legion of the Bouncy Castle project at <a href="http://www.bouncycastle.org">
+http://www.bouncycastle.org</a>.
+The binary code for the Bouncy Castle Crypto package is included included in the plug-in without modification in lib/itext-1.5.4.jar.
+Your use of the Bouncy Castle Crypto code is subject to the terms and conditions of The Legion of the Bouncy Castle license.
+A copy of the license can be found in <a href="about_files/bouncycastle_license.txt">about_files/bouncycastle_license.txt</a>
+and is also available at <a href="http://www.bouncycastle.org/licence.html">http://www.bouncycastle.org/licence.html</a>.
+The source code for The Bouncy Castle Crypto package is available at <a href="http://www.bouncycastle.org/">http://www.bouncycastle.org/</a>.</p>
+
+<h4>Apache FOP (Subset)</h4>
+
+<p>The plug-in is accompanied by software developed by Apache FOP project at <a href="http://xmlgraphics.apache.org/fop/">
+http://xmlgraphics.apache.org/fop/</a>.
+The binary code for the Apache FOP code is included included in the plug-in without modification in lib/itext-1.5.4.jar.
+Your use of the Apache FOP code is subject to the terms and conditions of the Apache Software License 2.0.
+A copy of the license can be found in <a href="about_files/LICENSE-asl-20.txt">about_files/LICENSE-asl-20.txt</a>
+and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>.
+The source code for Apache FOP is available at <a href="http://xmlgraphics.apache.org/fop/download.html">http://xmlgraphics.apache.org/fop/download.html</a>. </p>
+
+<h4>Apache Commons Lang (Derivative work)</h4>
+
+<p>The plug-in is accompanied by software developed by Apache Commons Lang project at <a href="http://jakarta.apache.org/commons/lang/">
+http://jakarta.apache.org/commons/lang/</a>.
+The binary code for the Commons Lang code is included included in the plug-in with modifications in lib/itext-1.5.4.jar.
+Use of the Commons Lang code is subject to the terms and conditions of the Apache Software License 2.0.
+A copy of the license can be found in <a href="about_files/LICENSE-asl-20.txt">about_files/LICENSE-asl-20.txt</a>
+and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>.
+The source code for Commons Lang is available at <a href="http://jakarta.apache.org/site/downloads/downloads_commons-lang.cgi">http://jakarta.apache.org/site/downloads/downloads_commons-lang.cgi</a>. The source code for the modifications made to the Commons Lang code is available in the source code for iText at <a href="http://sourceforge.net/projects/itext/">http://sourceforge.net/projects/itext/</a>. </p>
+<p>The Apache attribution <a href="about_files/NOTICE-commons-lang.txt" target="_blank">NOTICE</a> file for Commons Lang is included with the Content in accordance with 4d of the Apache License, Version 2.0.</p>
+<h4>Apache XercesJ (Derivative work)</h4>
+
+<p>The plug-in is accompanied by software developed by Apache XercesJ project at <a href="http://xerces.apache.org/xerces-j/">
+http://xerces.apache.org/xerces-j/</a>.  The binary code for the XercesJ code is included included in the plug-in without modification in lib/itext-1.5.4.jar.
+Your use of the XercesJ code is subject to the terms and conditions of the Apache Software License 2.0.
+A copy of the license can be found in <a href="about_files/LICENSE-asl-20.txt">about_files/LICENSE-asl-20.txt</a>
+and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>.
+The source code for XercesJ is available at <a href="http://archive.apache.org/dist/xml/xerces-j/">http://archive.apache.org/dist/xml/xerces-j/</a>.  The source code for the modifications made to the XercesJ code is available in the source code for iText at <a href="http://sourceforge.net/projects/itext/">http://sourceforge.net/projects/itext/</a>. </p>
+<p>The Apache attribution <a href="about_files/NOTICE-xerces.txt" target="_blank">NOTICE</a> file for XercesJ is included with the Content in accordance with 4d of the Apache License, Version 2.0.</p>
+<h4>JAI codec </h4>
+The following classes contain Java Advanced Imaging (JAI) codec code, which are image encoder/decoder (codec) classes: 
+<ul><li>com/lowagie/text/pdf/LZWDecoder.java</li>
+  <li>com/lowagie/text/pdf/codec/BmpImage.java</li>
+  <li>      com/lowagie/text/pdf/codec/PngImage.java</li>
+  <li>      com/lowagie/text/pdf/codec/TIFFConstants.java</li>
+  <li>      com/lowagie/text/pdf/codec/TIFFDirectory.java</li>
+  <li>      com/lowagie/text/pdf/codec/TIFFFaxDecoder.java</li>
+  <li>      com/lowagie/text/pdf/codec/TIFFField.java</li>
+    <li>
+      com/lowagie/text/pdf/codec/TIFFLZWDecoder.java
+  </li>
+</ul>
+<p>The code was obtained under the following <a href="about_files/JAI-notice.txt">license</a>:</p>
+<p>  Copyright (c) 2001 Sun Microsystems, Inc. All Rights Reserved.<br />
+  <br />
+  Redistribution and use in source and binary forms, with or without<br />
+  modification, are permitted provided that the following conditions are met:<br />
+  <br />
+  -Redistributions of source code must retain the above copyright notice, this<br />
+  list of conditions and the following disclaimer.<br />
+  <br />
+  -Redistribution in binary form must reproduct the above copyright notice,<br />
+  this list of conditions and the following disclaimer in the documentation<br />
+  and/or other materials provided with the distribution.<br />
+  <br />
+  Neither the name of Sun Microsystems, Inc. or the names of contributors may<br />
+  be used to endorse or promote products derived from this software without<br />
+  specific prior written permission.<br />
+  <br />
+  This software is provided &quot;AS IS,&quot; without a warranty of any kind. ALL<br />
+  EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY<br />
+  IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR<br />
+  NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE<br />
+  LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING<br />
+  OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS<br />
+  LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,<br />
+  INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER<br />
+  CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF<br />
+  OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE<br />
+  POSSIBILITY OF SUCH DAMAGES.<br />
+  <br />
+  You acknowledge that Software is not designed or intended for use in<br />
+  the design, construction, operation or maintenance of any nuclear facility.<br />
+</p>
+<h4>Reference implementation of the Unicode 3.0 Bidi algorithm</h4>
+<p>There is code in the com/lowagie/text/pdf/BidiOrder class that is a reference implementation of the Unicode 3.0 Bidi algorithm. The code is (C) Copyright IBM Corp. 1999, All Rights Reserved and was obtained under the following <a href="about_files/UNICODE-notice.txt">Unicode Inc. license agreement</a>:</p>
+<p>  EXHIBIT 1<br />
+  UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE<br />
+  <br />
+  Unicode Data Files include all data files under the directories<br />
+  http://www.unicode.org/Public/, http://www.unicode.org/reports/,<br />
+  and http://www.unicode.org/cldr/data/ .<br />
+  Unicode Software includes any source code published in the Unicode Standard<br />
+  or under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/,<br />
+  and http://www.unicode.org/cldr/data/.<br />
+  <br />
+  NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING,<br />
+  INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES (&quot;DATA FILES&quot;),<br />
+  AND/OR SOFTWARE (&quot;SOFTWARE&quot;), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY,<br />
+  ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT<br />
+  DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.<br />
+  <br />
+  COPYRIGHT AND PERMISSION NOTICE<br />
+  Copyright &copy; 1991-2007 Unicode, Inc. All rights reserved. Distributed under<br />
+  the Terms of Use in http://www.unicode.org/copyright.html.<br />
+  <br />
+  Permission is hereby granted, free of charge, to any person obtaining a copy<br />
+  of the Unicode data files and any associated documentation (the &quot;Data Files&quot;)<br />
+  or Unicode software and any associated documentation (the &quot;Software&quot;) to deal<br />
+  in the Data Files or Software without restriction, including without limitation<br />
+  the rights to use, copy, modify, merge, publish, distribute, and/or sell copies<br />
+  of the Data Files or Software, and to permit persons to whom the Data Files<br />
+  or Software are furnished to do so, provided that (a) the above copyright<br />
+  notice(s) and this permission notice appear with all copies of the Data Files<br />
+  or Software, (b) both the above copyright notice(s) and this permission notice<br />
+  appear in associated documentation, and (c) there is clear notice in each<br />
+  modified Data File or in the Software as well as in the documentation associated<br />
+  with the Data File(s) or Software that the data or software has been modified.<br />
+  <br />
+  THE DATA FILES AND SOFTWARE ARE PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,<br />
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,<br />
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.<br />
+  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE<br />
+  LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY<br />
+  DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN<br />
+  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN<br />
+  CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.<br />
+  <br />
+  Except as contained in this notice, the name of a copyright holder shall not<br />
+  be used in advertising or otherwise to promote the sale, use or other dealings<br />
+  in these Data Files or Software without prior written authorization of the<br />
+  copyright holder.<br />
+</p>
+
+<h4>LibTIFF</h4> 
+
+The class /com/lowagie/text/pdf/codec/TIFFConstants contains code taken from LibTIFF.  Use of this code is subject to the following terms and conditions:<br>
+<br>
+
+Copyright (c) 1988-1997 Sam Leffler <br>
+Copyright (c) 1991-1997 Silicon Graphics, Inc. 
+
+<p>Permission to use, copy, modify, distribute, and sell this software and 
+ its documentation for any purpose is hereby granted without fee, provided that (i) the above copyright notices and this permission notice appear in all copies of the software and related documentation, and (ii) the names of Sam Leffler and Silicon Graphics may not be used in any advertising or publicity relating to the software without the specific, prior written permission of Sam Leffler and Silicon Graphics. 
+  
+ </p>
+<p>THE
+
+ SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+ EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+ WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   
+  
+ IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR 
+ ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, 
+ OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 
+ WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 
+</snip> 
+
+</p>
+
+<h3>Cryptography</h3>
+<h4>Export Control</h4>
+<p>The plug-in contains encryption software. The country in which you are  currently may have restrictions on the import, possession,  and use, and/or re-export to another country, of encryption software.  BEFORE using any encryption software, please check the country's  laws, regulations and policies concerning the import, possession, or  use, and re-export of encryption software, to see if this  is permitted.</p>
+<h4>Encryption Items</h4>
+<p>Details of the encryption software in this plug-in are provided to  assist in obtaining relevant export control classification and  approval.  Cryptography in this plug-in has been deemed eligible by the U.S.  Government Department of Commerce for export under License Exception  Technology Software Unrestricted (TSU) for both object code and source  code.</p>
+<p>The plug-in includes the implementation of AES and ARCFOUR algorithms for the purpose of encrypting PDF files. </p>
+<p>The following classes contain encryption items (the plug-in may contain both binary and source code):</p>
+<ul>
+  <li>com.lowagie.text.pdf.crypto.AESCipher.java</li>
+  <li>com.lowagie.text.pdf.crypto.AESFastEngine.java</li>
+  <li>com.lowagie.text.pdf.crypto.ARCFOUREncryption.java</li>
+</ul>
+
+<small>Java and all Java-based trademarks and logos are trademarks or  registered trademarks of Sun Microsystems, Inc. in the United States  and other countries.</small> 
+</body>
+</html>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about.ini b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about.ini
new file mode 100755
index 0000000..fd7187e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about.ini
@@ -0,0 +1,29 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%aboutText
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=eclipse32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+# optional
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
+
+
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about.mappings b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about.mappings
new file mode 100755
index 0000000..172adbd
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=v20090922-0630
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about.properties b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about.properties
new file mode 100755
index 0000000..d5a7a32
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about.properties
@@ -0,0 +1,16 @@
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+#
+# Do not translate any values surrounded by {}
+
+aboutText=Lowagie iText\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+(c) Copyright Bruno Lowagie and Paulo Soares 2002, 2007.  All rights reserved.\n\
+Visit http://www.eclipse.org/birt
+
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/JAI-notice.txt b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/JAI-notice.txt
new file mode 100755
index 0000000..4ecd399
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/JAI-notice.txt
@@ -0,0 +1,30 @@
+  Copyright (c) 2001 Sun Microsystems, Inc. All Rights Reserved.
+ 
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+ 
+  -Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+ 
+  -Redistribution in binary form must reproduct the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+ 
+  Neither the name of Sun Microsystems, Inc. or the names of contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+ 
+  This software is provided "AS IS," without a warranty of any kind. ALL
+  EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
+  IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
+  NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
+  LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
+  OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
+  LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
+  INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
+  CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
+  OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGES.
+ 
+  You acknowledge that Software is not designed or intended for use in
+  the design, construction, operation or maintenance of any nuclear facility.
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/LICENSE-asl-20.txt b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/LICENSE-asl-20.txt
new file mode 100755
index 0000000..d645695
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/LICENSE-asl-20.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/MPL-1.1.txt b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/MPL-1.1.txt
new file mode 100755
index 0000000..7714141
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/MPL-1.1.txt
@@ -0,0 +1,470 @@
+                          MOZILLA PUBLIC LICENSE
+                                Version 1.1
+
+                              ---------------
+
+1. Definitions.
+
+     1.0.1. "Commercial Use" means distribution or otherwise making the
+     Covered Code available to a third party.
+
+     1.1. "Contributor" means each entity that creates or contributes to
+     the creation of Modifications.
+
+     1.2. "Contributor Version" means the combination of the Original
+     Code, prior Modifications used by a Contributor, and the Modifications
+     made by that particular Contributor.
+
+     1.3. "Covered Code" means the Original Code or Modifications or the
+     combination of the Original Code and Modifications, in each case
+     including portions thereof.
+
+     1.4. "Electronic Distribution Mechanism" means a mechanism generally
+     accepted in the software development community for the electronic
+     transfer of data.
+
+     1.5. "Executable" means Covered Code in any form other than Source
+     Code.
+
+     1.6. "Initial Developer" means the individual or entity identified
+     as the Initial Developer in the Source Code notice required by Exhibit
+     A.
+
+     1.7. "Larger Work" means a work which combines Covered Code or
+     portions thereof with code not governed by the terms of this License.
+
+     1.8. "License" means this document.
+
+     1.8.1. "Licensable" means having the right to grant, to the maximum
+     extent possible, whether at the time of the initial grant or
+     subsequently acquired, any and all of the rights conveyed herein.
+
+     1.9. "Modifications" means any addition to or deletion from the
+     substance or structure of either the Original Code or any previous
+     Modifications. When Covered Code is released as a series of files, a
+     Modification is:
+          A. Any addition to or deletion from the contents of a file
+          containing Original Code or previous Modifications.
+
+          B. Any new file that contains any part of the Original Code or
+          previous Modifications.
+
+     1.10. "Original Code" means Source Code of computer software code
+     which is described in the Source Code notice required by Exhibit A as
+     Original Code, and which, at the time of its release under this
+     License is not already Covered Code governed by this License.
+
+     1.10.1. "Patent Claims" means any patent claim(s), now owned or
+     hereafter acquired, including without limitation,  method, process,
+     and apparatus claims, in any patent Licensable by grantor.
+
+     1.11. "Source Code" means the preferred form of the Covered Code for
+     making modifications to it, including all modules it contains, plus
+     any associated interface definition files, scripts used to control
+     compilation and installation of an Executable, or source code
+     differential comparisons against either the Original Code or another
+     well known, available Covered Code of the Contributor's choice. The
+     Source Code can be in a compressed or archival form, provided the
+     appropriate decompression or de-archiving software is widely available
+     for no charge.
+
+     1.12. "You" (or "Your")  means an individual or a legal entity
+     exercising rights under, and complying with all of the terms of, this
+     License or a future version of this License issued under Section 6.1.
+     For legal entities, "You" includes any entity which controls, is
+     controlled by, or is under common control with You. For purposes of
+     this definition, "control" means (a) the power, direct or indirect,
+     to cause the direction or management of such entity, whether by
+     contract or otherwise, or (b) ownership of more than fifty percent
+     (50%) of the outstanding shares or beneficial ownership of such
+     entity.
+
+2. Source Code License.
+
+     2.1. The Initial Developer Grant.
+     The Initial Developer hereby grants You a world-wide, royalty-free,
+     non-exclusive license, subject to third party intellectual property
+     claims:
+          (a)  under intellectual property rights (other than patent or
+          trademark) Licensable by Initial Developer to use, reproduce,
+          modify, display, perform, sublicense and distribute the Original
+          Code (or portions thereof) with or without Modifications, and/or
+          as part of a Larger Work; and
+
+          (b) under Patents Claims infringed by the making, using or
+          selling of Original Code, to make, have made, use, practice,
+          sell, and offer for sale, and/or otherwise dispose of the
+          Original Code (or portions thereof).
+
+          (c) the licenses granted in this Section 2.1(a) and (b) are
+          effective on the date Initial Developer first distributes
+          Original Code under the terms of this License.
+
+          (d) Notwithstanding Section 2.1(b) above, no patent license is
+          granted: 1) for code that You delete from the Original Code; 2)
+          separate from the Original Code;  or 3) for infringements caused
+          by: i) the modification of the Original Code or ii) the
+          combination of the Original Code with other software or devices.
+
+     2.2. Contributor Grant.
+     Subject to third party intellectual property claims, each Contributor
+     hereby grants You a world-wide, royalty-free, non-exclusive license
+
+          (a)  under intellectual property rights (other than patent or
+          trademark) Licensable by Contributor, to use, reproduce, modify,
+          display, perform, sublicense and distribute the Modifications
+          created by such Contributor (or portions thereof) either on an
+          unmodified basis, with other Modifications, as Covered Code
+          and/or as part of a Larger Work; and
+
+          (b) under Patent Claims infringed by the making, using, or
+          selling of  Modifications made by that Contributor either alone
+          and/or in combination with its Contributor Version (or portions
+          of such combination), to make, use, sell, offer for sale, have
+          made, and/or otherwise dispose of: 1) Modifications made by that
+          Contributor (or portions thereof); and 2) the combination of
+          Modifications made by that Contributor with its Contributor
+          Version (or portions of such combination).
+
+          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+          effective on the date Contributor first makes Commercial Use of
+          the Covered Code.
+
+          (d)    Notwithstanding Section 2.2(b) above, no patent license is
+          granted: 1) for any code that Contributor has deleted from the
+          Contributor Version; 2)  separate from the Contributor Version;
+          3)  for infringements caused by: i) third party modifications of
+          Contributor Version or ii)  the combination of Modifications made
+          by that Contributor with other software  (except as part of the
+          Contributor Version) or other devices; or 4) under Patent Claims
+          infringed by Covered Code in the absence of Modifications made by
+          that Contributor.
+
+3. Distribution Obligations.
+
+     3.1. Application of License.
+     The Modifications which You create or to which You contribute are
+     governed by the terms of this License, including without limitation
+     Section 2.2. The Source Code version of Covered Code may be
+     distributed only under the terms of this License or a future version
+     of this License released under Section 6.1, and You must include a
+     copy of this License with every copy of the Source Code You
+     distribute. You may not offer or impose any terms on any Source Code
+     version that alters or restricts the applicable version of this
+     License or the recipients' rights hereunder. However, You may include
+     an additional document offering the additional rights described in
+     Section 3.5.
+
+     3.2. Availability of Source Code.
+     Any Modification which You create or to which You contribute must be
+     made available in Source Code form under the terms of this License
+     either on the same media as an Executable version or via an accepted
+     Electronic Distribution Mechanism to anyone to whom you made an
+     Executable version available; and if made available via Electronic
+     Distribution Mechanism, must remain available for at least twelve (12)
+     months after the date it initially became available, or at least six
+     (6) months after a subsequent version of that particular Modification
+     has been made available to such recipients. You are responsible for
+     ensuring that the Source Code version remains available even if the
+     Electronic Distribution Mechanism is maintained by a third party.
+
+     3.3. Description of Modifications.
+     You must cause all Covered Code to which You contribute to contain a
+     file documenting the changes You made to create that Covered Code and
+     the date of any change. You must include a prominent statement that
+     the Modification is derived, directly or indirectly, from Original
+     Code provided by the Initial Developer and including the name of the
+     Initial Developer in (a) the Source Code, and (b) in any notice in an
+     Executable version or related documentation in which You describe the
+     origin or ownership of the Covered Code.
+
+     3.4. Intellectual Property Matters
+          (a) Third Party Claims.
+          If Contributor has knowledge that a license under a third party's
+          intellectual property rights is required to exercise the rights
+          granted by such Contributor under Sections 2.1 or 2.2,
+          Contributor must include a text file with the Source Code
+          distribution titled "LEGAL" which describes the claim and the
+          party making the claim in sufficient detail that a recipient will
+          know whom to contact. If Contributor obtains such knowledge after
+          the Modification is made available as described in Section 3.2,
+          Contributor shall promptly modify the LEGAL file in all copies
+          Contributor makes available thereafter and shall take other steps
+          (such as notifying appropriate mailing lists or newsgroups)
+          reasonably calculated to inform those who received the Covered
+          Code that new knowledge has been obtained.
+
+          (b) Contributor APIs.
+          If Contributor's Modifications include an application programming
+          interface and Contributor has knowledge of patent licenses which
+          are reasonably necessary to implement that API, Contributor must
+          also include this information in the LEGAL file.
+
+               (c)    Representations.
+          Contributor represents that, except as disclosed pursuant to
+          Section 3.4(a) above, Contributor believes that Contributor's
+          Modifications are Contributor's original creation(s) and/or
+          Contributor has sufficient rights to grant the rights conveyed by
+          this License.
+
+     3.5. Required Notices.
+     You must duplicate the notice in Exhibit A in each file of the Source
+     Code.  If it is not possible to put such notice in a particular Source
+     Code file due to its structure, then You must include such notice in a
+     location (such as a relevant directory) where a user would be likely
+     to look for such a notice.  If You created one or more Modification(s)
+     You may add your name as a Contributor to the notice described in
+     Exhibit A.  You must also duplicate this License in any documentation
+     for the Source Code where You describe recipients' rights or ownership
+     rights relating to Covered Code.  You may choose to offer, and to
+     charge a fee for, warranty, support, indemnity or liability
+     obligations to one or more recipients of Covered Code. However, You
+     may do so only on Your own behalf, and not on behalf of the Initial
+     Developer or any Contributor. You must make it absolutely clear than
+     any such warranty, support, indemnity or liability obligation is
+     offered by You alone, and You hereby agree to indemnify the Initial
+     Developer and every Contributor for any liability incurred by the
+     Initial Developer or such Contributor as a result of warranty,
+     support, indemnity or liability terms You offer.
+
+     3.6. Distribution of Executable Versions.
+     You may distribute Covered Code in Executable form only if the
+     requirements of Section 3.1-3.5 have been met for that Covered Code,
+     and if You include a notice stating that the Source Code version of
+     the Covered Code is available under the terms of this License,
+     including a description of how and where You have fulfilled the
+     obligations of Section 3.2. The notice must be conspicuously included
+     in any notice in an Executable version, related documentation or
+     collateral in which You describe recipients' rights relating to the
+     Covered Code. You may distribute the Executable version of Covered
+     Code or ownership rights under a license of Your choice, which may
+     contain terms different from this License, provided that You are in
+     compliance with the terms of this License and that the license for the
+     Executable version does not attempt to limit or alter the recipient's
+     rights in the Source Code version from the rights set forth in this
+     License. If You distribute the Executable version under a different
+     license You must make it absolutely clear that any terms which differ
+     from this License are offered by You alone, not by the Initial
+     Developer or any Contributor. You hereby agree to indemnify the
+     Initial Developer and every Contributor for any liability incurred by
+     the Initial Developer or such Contributor as a result of any such
+     terms You offer.
+
+     3.7. Larger Works.
+     You may create a Larger Work by combining Covered Code with other code
+     not governed by the terms of this License and distribute the Larger
+     Work as a single product. In such a case, You must make sure the
+     requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+     If it is impossible for You to comply with any of the terms of this
+     License with respect to some or all of the Covered Code due to
+     statute, judicial order, or regulation then You must: (a) comply with
+     the terms of this License to the maximum extent possible; and (b)
+     describe the limitations and the code they affect. Such description
+     must be included in the LEGAL file described in Section 3.4 and must
+     be included with all distributions of the Source Code. Except to the
+     extent prohibited by statute or regulation, such description must be
+     sufficiently detailed for a recipient of ordinary skill to be able to
+     understand it.
+
+5. Application of this License.
+
+     This License applies to code to which the Initial Developer has
+     attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+     6.1. New Versions.
+     Netscape Communications Corporation ("Netscape") may publish revised
+     and/or new versions of the License from time to time. Each version
+     will be given a distinguishing version number.
+
+     6.2. Effect of New Versions.
+     Once Covered Code has been published under a particular version of the
+     License, You may always continue to use it under the terms of that
+     version. You may also choose to use such Covered Code under the terms
+     of any subsequent version of the License published by Netscape. No one
+     other than Netscape has the right to modify the terms applicable to
+     Covered Code created under this License.
+
+     6.3. Derivative Works.
+     If You create or use a modified version of this License (which you may
+     only do in order to apply it to code which is not already Covered Code
+     governed by this License), You must (a) rename Your license so that
+     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
+     "MPL", "NPL" or any confusingly similar phrase do not appear in your
+     license (except to note that your license differs from this License)
+     and (b) otherwise make it clear that Your version of the license
+     contains terms which differ from the Mozilla Public License and
+     Netscape Public License. (Filling in the name of the Initial
+     Developer, Original Code or Contributor in the notice described in
+     Exhibit A shall not of themselves be deemed to be modifications of
+     this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
+     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
+     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
+     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
+     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
+     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+     8.1.  This License and the rights granted hereunder will terminate
+     automatically if You fail to comply with terms herein and fail to cure
+     such breach within 30 days of becoming aware of the breach. All
+     sublicenses to the Covered Code which are properly granted shall
+     survive any termination of this License. Provisions which, by their
+     nature, must remain in effect beyond the termination of this License
+     shall survive.
+
+     8.2.  If You initiate litigation by asserting a patent infringement
+     claim (excluding declatory judgment actions) against Initial Developer
+     or a Contributor (the Initial Developer or Contributor against whom
+     You file such action is referred to as "Participant")  alleging that:
+
+     (a)  such Participant's Contributor Version directly or indirectly
+     infringes any patent, then any and all rights granted by such
+     Participant to You under Sections 2.1 and/or 2.2 of this License
+     shall, upon 60 days notice from Participant terminate prospectively,
+     unless if within 60 days after receipt of notice You either: (i)
+     agree in writing to pay Participant a mutually agreeable reasonable
+     royalty for Your past and future use of Modifications made by such
+     Participant, or (ii) withdraw Your litigation claim with respect to
+     the Contributor Version against such Participant.  If within 60 days
+     of notice, a reasonable royalty and payment arrangement are not
+     mutually agreed upon in writing by the parties or the litigation claim
+     is not withdrawn, the rights granted by Participant to You under
+     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
+     the 60 day notice period specified above.
+
+     (b)  any software, hardware, or device, other than such Participant's
+     Contributor Version, directly or indirectly infringes any patent, then
+     any rights granted to You by such Participant under Sections 2.1(b)
+     and 2.2(b) are revoked effective as of the date You first made, used,
+     sold, distributed, or had made, Modifications made by that
+     Participant.
+
+     8.3.  If You assert a patent infringement claim against Participant
+     alleging that such Participant's Contributor Version directly or
+     indirectly infringes any patent where such claim is resolved (such as
+     by license or settlement) prior to the initiation of patent
+     infringement litigation, then the reasonable value of the licenses
+     granted by such Participant under Sections 2.1 or 2.2 shall be taken
+     into account in determining the amount or value of any payment or
+     license.
+
+     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
+     all end user license agreements (excluding distributors and resellers)
+     which have been validly granted by You or any distributor hereunder
+     prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
+     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
+     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
+     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
+     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+     The Covered Code is a "commercial item," as that term is defined in
+     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+     software" and "commercial computer software documentation," as such
+     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
+     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
+     all U.S. Government End Users acquire Covered Code with only those
+     rights set forth herein.
+
+11. MISCELLANEOUS.
+
+     This License represents the complete agreement concerning subject
+     matter hereof. If any provision of this License is held to be
+     unenforceable, such provision shall be reformed only to the extent
+     necessary to make it enforceable. This License shall be governed by
+     California law provisions (except to the extent applicable law, if
+     any, provides otherwise), excluding its conflict-of-law provisions.
+     With respect to disputes in which at least one party is a citizen of,
+     or an entity chartered or registered to do business in the United
+     States of America, any litigation relating to this License shall be
+     subject to the jurisdiction of the Federal Courts of the Northern
+     District of California, with venue lying in Santa Clara County,
+     California, with the losing party responsible for costs, including
+     without limitation, court costs and reasonable attorneys' fees and
+     expenses. The application of the United Nations Convention on
+     Contracts for the International Sale of Goods is expressly excluded.
+     Any law or regulation which provides that the language of a contract
+     shall be construed against the drafter shall not apply to this
+     License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+     As between Initial Developer and the Contributors, each party is
+     responsible for claims and damages arising, directly or indirectly,
+     out of its utilization of rights under this License and You agree to
+     work with Initial Developer and Contributors to distribute such
+     responsibility on an equitable basis. Nothing herein is intended or
+     shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+     Initial Developer may designate portions of the Covered Code as
+     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
+     Developer permits you to utilize portions of the Covered Code under
+     Your choice of the NPL or the alternative licenses, if any, specified
+     by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A -Mozilla Public License.
+
+     ``The contents of this file are subject to the Mozilla Public License
+     Version 1.1 (the "License"); you may not use this file except in
+     compliance with the License. You may obtain a copy of the License at
+     http://www.mozilla.org/MPL/
+
+     Software distributed under the License is distributed on an "AS IS"
+     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+     License for the specific language governing rights and limitations
+     under the License.
+
+     The Original Code is ______________________________________.
+
+     The Initial Developer of the Original Code is ________________________.
+     Portions created by ______________________ are Copyright (C) ______
+     _______________________. All Rights Reserved.
+
+     Contributor(s): ______________________________________.
+
+     Alternatively, the contents of this file may be used under the terms
+     of the _____ license (the  "[___] License"), in which case the
+     provisions of [______] License are applicable instead of those
+     above.  If you wish to allow use of your version of this file only
+     under the terms of the [____] License and not to allow others to use
+     your version of this file under the MPL, indicate your decision by
+     deleting  the provisions above and replace  them with the notice and
+     other provisions required by the [___] License.  If you do not delete
+     the provisions above, a recipient may use your version of this file
+     under either the MPL or the [___] License."
+
+     [NOTE: The text of this Exhibit A may differ slightly from the text of
+     the notices in the Source Code files of the Original Code. You should
+     use the text of this Exhibit A rather than the text found in the
+     Original Code Source Code for Your Modifications.]
+
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/NOTICE-commons-lang.txt b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/NOTICE-commons-lang.txt
new file mode 100755
index 0000000..c02268f
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/NOTICE-commons-lang.txt
@@ -0,0 +1,5 @@
+Apache Jakarta Commons Lang
+Copyright 2001-2007 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/NOTICE-xerces.txt b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/NOTICE-xerces.txt
new file mode 100755
index 0000000..77dc14c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/NOTICE-xerces.txt
@@ -0,0 +1,14 @@
+   =========================================================================
+   ==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
+   ==  Version 2.0, in this case for the Apache Xerces distribution.      ==
+   =========================================================================
+
+   This product includes software developed by
+   The Apache Software Foundation (http://www.apache.org/).
+
+   Portions of this software were originally based on the following:
+     - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
+     - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
+     - voluntary contributions made by Paul Eng on behalf of the 
+       Apache Software Foundation that were originally developed at iClick, Inc.,
+       software copyright (c) 1999.
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/UNICODE-notice.txt b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/UNICODE-notice.txt
new file mode 100755
index 0000000..a48b366
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/UNICODE-notice.txt
@@ -0,0 +1,47 @@
+  EXHIBIT 1
+  UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+  
+  Unicode Data Files include all data files under the directories
+  http://www.unicode.org/Public/, http://www.unicode.org/reports/,
+  and http://www.unicode.org/cldr/data/ .
+  Unicode Software includes any source code published in the Unicode Standard
+  or under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/,
+  and http://www.unicode.org/cldr/data/.
+  
+  NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING,
+  INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"),
+  AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY,
+  ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+  DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+  
+  COPYRIGHT AND PERMISSION NOTICE
+  Copyright © 1991-2007 Unicode, Inc. All rights reserved. Distributed under
+  the Terms of Use in http://www.unicode.org/copyright.html.
+  
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of the Unicode data files and any associated documentation (the "Data Files")
+  or Unicode software and any associated documentation (the "Software") to deal
+  in the Data Files or Software without restriction, including without limitation
+  the rights to use, copy, modify, merge, publish, distribute, and/or sell copies
+  of the Data Files or Software, and to permit persons to whom the Data Files
+  or Software are furnished to do so, provided that (a) the above copyright
+  notice(s) and this permission notice appear with all copies of the Data Files
+  or Software, (b) both the above copyright notice(s) and this permission notice
+  appear in associated documentation, and (c) there is clear notice in each
+  modified Data File or in the Software as well as in the documentation associated
+  with the Data File(s) or Software that the data or software has been modified.
+  
+  THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE
+  LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY
+  DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+  CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+  
+  Except as contained in this notice, the name of a copyright holder shall not
+  be used in advertising or otherwise to promote the sale, use or other dealings
+  in these Data Files or Software without prior written authorization of the
+  copyright holder.
+ 
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/bouncycastle_license.txt b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/bouncycastle_license.txt
new file mode 100755
index 0000000..dd9ebfc
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/about_files/bouncycastle_license.txt
@@ -0,0 +1,20 @@
+The package com.lowagie.bc.asn1 was integrated into iText by Paulo Soares in November 2004.
+This package is an adaptation of package org.bouncycastle.asn1 by The Legion of the Bouncy Castle.
+This is the license of the org.bouncycastle.asn1 package:
+
+License
+Copyright (c) 2000 - 2006 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+and associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies
+or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/eclipse32.png b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/eclipse32.png
new file mode 100755
index 0000000..568fac1
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/eclipse32.png
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/lib/itext_1.5.4.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/lib/itext_1.5.4.jar
new file mode 100755
index 0000000..fa3f10b
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/lib/itext_1.5.4.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/lib/itextasian-1.5.2.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/lib/itextasian-1.5.2.jar
new file mode 100755
index 0000000..181f4ee
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/com.lowagie.itext_1.5.4.v20090305/lib/itextasian-1.5.2.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/javax.wsdl_1.5.1.v200806030408.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/javax.wsdl_1.5.1.v200806030408.jar
new file mode 100755
index 0000000..b4ae7ad
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/javax.wsdl_1.5.1.v200806030408.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/javax.xml_1.3.4.v200902170245.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/javax.xml_1.3.4.v200902170245.jar
new file mode 100755
index 0000000..23a84bd
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/javax.xml_1.3.4.v200902170245.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.bridge_1.6.0.v200805290154.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.bridge_1.6.0.v200805290154.jar
new file mode 100755
index 0000000..bd0fec4
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.bridge_1.6.0.v200805290154.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.css_1.6.0.v200805290154.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.css_1.6.0.v200805290154.jar
new file mode 100755
index 0000000..d081a77
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.css_1.6.0.v200805290154.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.dom.svg_1.6.0.v200805290154.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.dom.svg_1.6.0.v200805290154.jar
new file mode 100755
index 0000000..bced51f
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.dom.svg_1.6.0.v200805290154.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.dom_1.6.0.v200805290154.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.dom_1.6.0.v200805290154.jar
new file mode 100755
index 0000000..1507a9f
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.dom_1.6.0.v200805290154.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.ext.awt_1.6.0.v200805290154.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.ext.awt_1.6.0.v200805290154.jar
new file mode 100755
index 0000000..afee1fe
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.ext.awt_1.6.0.v200805290154.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.parser_1.6.0.v200805290154.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.parser_1.6.0.v200805290154.jar
new file mode 100755
index 0000000..ffa0794
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.parser_1.6.0.v200805290154.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.pdf_1.6.0.v200806031500.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.pdf_1.6.0.v200806031500.jar
new file mode 100755
index 0000000..f1ce9f8
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.pdf_1.6.0.v200806031500.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.svggen_1.6.0.v200805290154.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.svggen_1.6.0.v200805290154.jar
new file mode 100755
index 0000000..a3c8a49
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.svggen_1.6.0.v200805290154.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.transcoder_1.6.0.v200805290154.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.transcoder_1.6.0.v200805290154.jar
new file mode 100755
index 0000000..b101ec6
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.transcoder_1.6.0.v200805290154.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.util.gui_1.6.0.v200805290154.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.util.gui_1.6.0.v200805290154.jar
new file mode 100755
index 0000000..06d4750
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.util.gui_1.6.0.v200805290154.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.util_1.6.0.v200805290154.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.util_1.6.0.v200805290154.jar
new file mode 100755
index 0000000..445cc85
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.util_1.6.0.v200805290154.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.xml_1.6.0.v200805290154.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.xml_1.6.0.v200805290154.jar
new file mode 100755
index 0000000..622352f
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.batik.xml_1.6.0.v200805290154.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.commons.codec_1.3.0.v20080530-1600.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.commons.codec_1.3.0.v20080530-1600.jar
new file mode 100755
index 0000000..9452320
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.commons.codec_1.3.0.v20080530-1600.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/META-INF/ECLIPSEF.RSA b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/META-INF/ECLIPSEF.RSA
new file mode 100755
index 0000000..497def6
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/META-INF/ECLIPSEF.RSA
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/META-INF/ECLIPSEF.SF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/META-INF/ECLIPSEF.SF
new file mode 100755
index 0000000..eb3064e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/META-INF/ECLIPSEF.SF
@@ -0,0 +1,26 @@
+Signature-Version: 1.0

+SHA1-Digest-Manifest: DbLxwn0w2TgHYpFw9MdYjFOUf4g=

+Created-By: 1.6.0 (IBM Corporation)

+SHA1-Digest-Manifest-Main-Attributes: kIhMfGwTfwbDztxA7yjphUnAs30=

+

+Name: about_files/LICENSE-2.0.txt

+SHA1-Digest: DMnZPrY7w/ZEOj0YI/l8KoozuvM=

+

+Name: about_files/NOTICE

+SHA1-Digest: hXkw1bxF3cKIX0f3C1RI0TCtEJ8=

+

+Name: asl-v20.txt

+SHA1-Digest: f16Q6xxWp4CWPk9xW6xYHqbOlpk=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: SAqY+5ITAL0mkdYeijlSRhyIaZk=

+

+Name: derby.jar

+SHA1-Digest: V/h2N8c9Su/KCn5/xOVHdrvqYz4=

+

+Name: about.html

+SHA1-Digest: INq4BUpTNbrGP6lmiRn52DBwan8=

+

+Name: plugin.xml

+SHA1-Digest: PoIIqS/ogt9AkK1QcFoGBc2z1pY=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/META-INF/MANIFEST.MF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..1b54f7c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/META-INF/MANIFEST.MF
@@ -0,0 +1,33 @@
+Manifest-Version: 1.0

+Bundle-ClassPath: derby.jar

+Bundle-Vendor: Eclipse.org

+Bundle-Localization: plugin

+Bundle-RequiredExecutionEnvironment: J2SE-1.4

+Bundle-Name: Apache Derby Core Plug-in for Eclipse

+Eclipse-LazyStart: true

+Bundle-SymbolicName: org.apache.derby.core; singleton:=true

+Bundle-Version: 10.3.1.4

+Export-Package: org.apache.derby.jdbc

+Bundle-ManifestVersion: 2

+

+Name: about_files/LICENSE-2.0.txt

+SHA1-Digest: K4uBUimqimHkg/tLoFiLi2xJGJA=

+

+Name: about_files/NOTICE

+SHA1-Digest: 7vMEQzHidETwp2KNlXNazQCw9SI=

+

+Name: asl-v20.txt

+SHA1-Digest: K4uBUimqimHkg/tLoFiLi2xJGJA=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: KyT9FF7C7t86NoBoa2kZT3ZJBfw=

+

+Name: derby.jar

+SHA1-Digest: SlvO2qSEq/kaFzlkLqcWMEe//Tk=

+

+Name: plugin.xml

+SHA1-Digest: jKDgf3xTSsALMBO7axMrqhc0Kgo=

+

+Name: about.html

+SHA1-Digest: J0nSX4G1ZCqwf+3qnW8k5t7K8rU=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/META-INF/eclipse.inf b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/META-INF/eclipse.inf
new file mode 100755
index 0000000..7864d3c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/META-INF/eclipse.inf
@@ -0,0 +1,3 @@
+#Processed using Jarprocessor
+pack200.args = -E4
+pack200.conditioned = true
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/about.html b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/about.html
new file mode 100755
index 0000000..6851e30
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/about.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>March 16, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+<h3>Third Party Content</h3>
+
+<p>The Content includes items that have been sourced from third parties as set out below. If you 
+did not receive this Content directly from the Eclipse Foundation, the following is provided 
+for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
+terms and conditions of use.</p>
+
+<h4>Apache Derby 10.3.1.4</h4>
+
+<p>The plug-in is accompanied by software developed by the Apache Software Foundation.
+The binary code of Apache Derby 10.3.1.4 (&quot;Derby&quot;) is included without modification in the following files:</p>
+
+<ul>
+	<li>derby.jar</li>
+</ul>
+
+<p>Your use of Derby is subject to the terms and conditions of the Apache License, Version 2.0 (&quot;Apache License&quot;).
+A copy of the Apache License can be found in <a href="about_files/LICENSE-2.0.txt">about_files/LICENSE-2.0.txt</a>
+and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>.</p>
+
+<p>The Apache attribution <a href="about_files/NOTICE" target="_blank">NOTICE</a> file is included with the Content in accordance with 4d of the Apache License, Version 2.0.</p>
+
+<p>Source code for Derby is available at <a href="http://db.apache.org/derby/">http://db.apache.org/derby/</a>.</p>
+
+
+</body>
+</html>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/about_files/LICENSE-2.0.txt b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/about_files/LICENSE-2.0.txt
new file mode 100755
index 0000000..d645695
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/about_files/LICENSE-2.0.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/about_files/NOTICE b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/about_files/NOTICE
new file mode 100755
index 0000000..5bba89a
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/about_files/NOTICE
@@ -0,0 +1,21 @@
+=========================================================================
+==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
+==  Version 2.0, in this case for the Apache Derby distribution.       ==
+=========================================================================
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+
+Portions of Derby were orginally developed by
+International Business Machines Corporation and are
+licensed to the Apache Software Foundation under the
+"Software Grant and Corporate Contribution License Agreement",
+informally known as the "Derby CLA".
+
+The portion of the functionTests under 'nist' was originally 
+developed by the National Institute of Standards and Technology (NIST), 
+an agency of the United States Department of Commerce, and adapted by
+International Business Machines Corporation in accordance with the NIST
+Software Acknowledgment and Redistribution document at
+http://www.itl.nist.gov/div897/ctg/sql_form.htm
+
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/asl-v20.txt b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/asl-v20.txt
new file mode 100755
index 0000000..d645695
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/asl-v20.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/derby.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/derby.jar
new file mode 100755
index 0000000..52915e3
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/derby.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/plugin.xml b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/plugin.xml
new file mode 100755
index 0000000..f2202f1
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.derby.core_10.3.1.4/plugin.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?> 
+<plugin>
+</plugin>
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.xerces_2.9.0.v200909240008.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.xerces_2.9.0.v200909240008.jar
new file mode 100755
index 0000000..e70fa82
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.xerces_2.9.0.v200909240008.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.xml.resolver_1.2.0.v200902170519.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.xml.resolver_1.2.0.v200902170519.jar
new file mode 100755
index 0000000..14a3631
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.xml.resolver_1.2.0.v200902170519.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.xml.serializer_2.7.1.v200902170519.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.xml.serializer_2.7.1.v200902170519.jar
new file mode 100755
index 0000000..8f3fb0e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.apache.xml.serializer_2.7.1.v200902170519.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.api_1.0.0.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.api_1.0.0.jar
new file mode 100755
index 0000000..f387498
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.api_1.0.0.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.device.extension_2.5.1.v20090902.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.device.extension_2.5.1.v20090902.jar
new file mode 100755
index 0000000..4c99692
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.device.extension_2.5.1.v20090902.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.device.svg_2.5.1.v20090902.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.device.svg_2.5.1.v20090902.jar
new file mode 100755
index 0000000..1889651
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.device.svg_2.5.1.v20090902.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.engine.extension_2.5.1.v20090826.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.engine.extension_2.5.1.v20090826.jar
new file mode 100755
index 0000000..0c7afe1
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.engine.extension_2.5.1.v20090826.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.engine_2.5.1.v20090902.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.engine_2.5.1.v20090902.jar
new file mode 100755
index 0000000..0c08833
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.engine_2.5.1.v20090902.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.reportitem_2.5.1.v20090902a.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.reportitem_2.5.1.v20090902a.jar
new file mode 100755
index 0000000..aa23582
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.chart.reportitem_2.5.1.v20090902a.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.core.script.function_2.5.1.v20090917.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.core.script.function_2.5.1.v20090917.jar
new file mode 100755
index 0000000..489d497
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.core.script.function_2.5.1.v20090917.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.core_2.5.1.v20090903.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.core_2.5.1.v20090903.jar
new file mode 100755
index 0000000..da4b00a
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.core_2.5.1.v20090903.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.data.aggregation_2.5.1.v20090821.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.data.aggregation_2.5.1.v20090821.jar
new file mode 100755
index 0000000..a452727
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.data.aggregation_2.5.1.v20090821.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.data_2.5.1.v20090826.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.data_2.5.1.v20090826.jar
new file mode 100755
index 0000000..12c29fa
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.data_2.5.1.v20090826.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.adapter_2.5.1.v20090903.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.adapter_2.5.1.v20090903.jar
new file mode 100755
index 0000000..8f4c21b
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.adapter_2.5.1.v20090903.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.bidi.utils_2.5.1.v20090917.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.bidi.utils_2.5.1.v20090917.jar
new file mode 100755
index 0000000..cf386e4
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.bidi.utils_2.5.1.v20090917.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb_2.5.1.v20090821.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb_2.5.1.v20090821.jar
new file mode 100755
index 0000000..567b27a
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile.sampledb_2.5.1.v20090821.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile_2.5.1.v20090821.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile_2.5.1.v20090821.jar
new file mode 100755
index 0000000..bc489fa
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc.dbprofile_2.5.1.v20090821.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/.options b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/.options
new file mode 100755
index 0000000..9917427
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/.options
@@ -0,0 +1,9 @@
+org.eclipse.birt.report.data.oda.jdbc/debug = false
+org.eclipse.birt.report.data.oda.jdbc/traceLogging/logLevel = WARNING
+org.eclipse.birt.report.data.oda.jdbc/traceLogging/logFormatterClass = 
+org.eclipse.birt.report.data.oda.jdbc/traceLogging/logFileNamePrefix = 
+org.eclipse.birt.report.data.oda.jdbc/traceLogging/logDirectory = 
+org.eclipse.birt.report.data.oda.jdbc/JDBCDriverManager=true
+org.eclipse.birt.report.data.oda.jdbc/OdaJdbcDriver=true
+org.eclipse.birt.report.data.oda.jdbc/Connection=true
+org.eclipse.birt.report.data.oda.jdbc/Statement=true
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/META-INF/ECLIPSEF.RSA b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/META-INF/ECLIPSEF.RSA
new file mode 100755
index 0000000..f5fa68c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/META-INF/ECLIPSEF.RSA
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/META-INF/ECLIPSEF.SF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/META-INF/ECLIPSEF.SF
new file mode 100755
index 0000000..0eab19d
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/META-INF/ECLIPSEF.SF
@@ -0,0 +1,29 @@
+Signature-Version: 1.0

+SHA1-Digest-Manifest: mzJPwdgxmWZVCceB6lm+mUapaEM=

+Created-By: 1.6.0 (IBM Corporation)

+SHA1-Digest-Manifest-Main-Attributes: eR9DFl8rkd/kdvWeV8Z/e8t1R+c=

+

+Name: .options

+SHA1-Digest: G1XbJ/CbyIRpRCWJUaHayqNB9/g=

+

+Name: drivers/readme.txt

+SHA1-Digest: Ad8TLpXkErunayuXVW2UR0Ekcc8=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: SAqY+5ITAL0mkdYeijlSRhyIaZk=

+

+Name: oda-jdbc.jar

+SHA1-Digest: jqjcb/iYXuO+Aiurq7nwUd5tngk=

+

+Name: about.html

+SHA1-Digest: sp+MJJREp1IOiZdau8mgdyqxZuo=

+

+Name: plugin.xml

+SHA1-Digest: 67BWdhZU5Y9fLi0xvxj2ZvEFQw8=

+

+Name: plugin.properties

+SHA1-Digest: FAakK0K0nRkVozhT2ZsYNAXmoa0=

+

+Name: schema/driverinfo.exsd

+SHA1-Digest: 4Zfys/ywoCfPvGsph/m4thYLxtI=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/META-INF/MANIFEST.MF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..92e3cbe
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/META-INF/MANIFEST.MF
@@ -0,0 +1,50 @@
+Manifest-Version: 1.0

+Bundle-Localization: plugin

+Bundle-RequiredExecutionEnvironment: J2SE-1.5

+Bundle-SymbolicName: org.eclipse.birt.report.data.oda.jdbc;singleton:=

+ true

+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)

+ ",org.eclipse.datatools.connectivity.oda;bundle-version="[3.2.0,4.0.0

+ )",org.junit;bundle-version="[3.8.1,4.0.0)";resolution:=optional,org.

+ apache.derby.core;bundle-version="[10.1.2,11.0.0)";resolution:=option

+ al,org.eclipse.datatools.connectivity.oda.profile;bundle-version="[3.

+ 0.7,4.0.0)";resolution:=optional,org.apache.xerces;bundle-version="[2

+ .9.0,3.0.0)",org.eclipse.birt.report.data.bidi.utils;bundle-version="

+ [2.5.1,3.0.0)",org.eclipse.birt.core;bundle-version="[2.3.0,3.0.0)"

+Bundle-Activator: org.eclipse.birt.report.data.oda.plugin.OdaJdbcPlugi

+ n

+Export-Package: org.eclipse.birt.report.data.oda.i18n;x-friends:="org.

+ eclipse.birt.report.data.oda.jdbc.tests",org.eclipse.birt.report.data

+ .oda.jdbc,org.eclipse.birt.report.data.oda.jdbc.utils,org.eclipse.bir

+ t.report.data.oda.plugin

+Bundle-Version: 2.5.1.v20090821

+Bundle-ClassPath: oda-jdbc.jar,derby.jar

+Bundle-ActivationPolicy: lazy

+Bundle-Vendor: Eclipse.org

+Bundle-Name: BIRT ODA-JDBC Bridge Driver

+Bundle-ManifestVersion: 2

+

+Name: .options

+SHA1-Digest: kJDRbjkLrF+gXnry3h6Yw8XJHko=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: KyT9FF7C7t86NoBoa2kZT3ZJBfw=

+

+Name: drivers/readme.txt

+SHA1-Digest: 2YWd8F4fkVGg2ZAKCFe0DYmE25s=

+

+Name: oda-jdbc.jar

+SHA1-Digest: mMcArvgqMgC+ND+wRIYBFx1qGmw=

+

+Name: plugin.xml

+SHA1-Digest: ZKVRqwdQGpYg7st/moP3pOjVwjo=

+

+Name: about.html

+SHA1-Digest: ObsP47Fq6CSfBimdpGOcNnxQyPA=

+

+Name: schema/driverinfo.exsd

+SHA1-Digest: vx9H3SlZR+iGj+sHncfYUC/PkbQ=

+

+Name: plugin.properties

+SHA1-Digest: HE+cQZq7bKEACKQZqgIO2zI9YnU=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/META-INF/eclipse.inf b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/META-INF/eclipse.inf
new file mode 100755
index 0000000..7864d3c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/META-INF/eclipse.inf
@@ -0,0 +1,3 @@
+#Processed using Jarprocessor
+pack200.args = -E4
+pack200.conditioned = true
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/about.html b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/about.html
new file mode 100755
index 0000000..8728d9a
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 28, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/drivers/readme.txt b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/drivers/readme.txt
new file mode 100755
index 0000000..b1cb02f
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/drivers/readme.txt
@@ -0,0 +1 @@
+Place JDBC drivers' JAR files in this directory to make them available to BIRT.
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/oda-jdbc.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/oda-jdbc.jar
new file mode 100755
index 0000000..899204e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/oda-jdbc.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/plugin.properties b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/plugin.properties
new file mode 100755
index 0000000..10a38e4
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/plugin.properties
@@ -0,0 +1,46 @@
+###############################################################################
+# Copyright (c) 2004, 2007 Actuate Corporation.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#  Actuate Corporation - initial API and implementation
+#
+###############################################################################
+# Plug-in Configuration
+#
+oda.data.source.id=org.eclipse.birt.report.data.oda.jdbc
+oda.parent.category.id=org.eclipse.datatools.connectivity.oda.profileCategory
+#
+###############################################################################
+# NLS String
+###############################################################################
+datasource.name=JDBC Data Source
+oda.data.source.name=JDBC Data Source
+connection.profile.name=BIRT JDBC Data Source Connection Profile
+
+datasource.property.odaDriverClass=JDBC Driver &Class
+datasource.property.odaURL=JDBC Driver U&RL
+datasource.property.odaDataSource=Data Source
+datasource.property.odaUser=User &Name
+datasource.property.odaPassword=Pass&word
+datasource.property.odaJndiURL=&JNDI URL
+datasource.property.autocommit= &Auto Commit
+datasource.property.isolationmode=&Isolation Mode
+dataset.query.sqltype=SQL Select Query
+dataset.query.sptype=SQL Stored Procedure Query
+dataset.property.queryTimeOut=&Query Time Out (in seconds)
+dataset.property.rowFetchSize=&Row Fetch Size
+dataset.connection.autocommit.false=false
+dataset.connection.autocommit.true=true
+dataset.connection.isolationmode.read-uncommitted=read-uncommitted
+dataset.connection.isolationmode.read-committed=read-committed
+dataset.connection.isolationmode.repeatable-read=repeatable-read
+dataset.connection.isolationmode.serializable=serializable
+               
+#
+#  Below NLS messages apply to all ODA data sources; should be re-factored
+#
+oda.connection.factory.name=ODA Connection Factory
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/plugin.xml b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/plugin.xml
new file mode 100755
index 0000000..26969ff
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/plugin.xml
@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+     <extension-point id="driverinfo" name="JDBC Driver Information Extension" 
+   			schema="schema/driverinfo.exsd"/>
+   			
+   <extension
+         point="org.eclipse.datatools.connectivity.oda.dataSource">
+      <dataSource
+            odaVersion="3.1"
+            driverClass="org.eclipse.birt.report.data.oda.jdbc.OdaJdbcDriver"
+            defaultDisplayName="%datasource.name"
+            setThreadContextClassLoader="false"
+            id="%oda.data.source.id">
+         <properties>
+            <propertyGroup
+                  defaultDisplayName="Connection Properties"
+                  name="connectionProperties">
+               <property
+                  type="string"
+                  defaultDisplayName="%datasource.property.odaDriverClass"
+                  canInherit="true"
+                  name="odaDriverClass"/>
+               <property
+                  type="string"
+                  defaultDisplayName="%datasource.property.odaURL"
+                  canInherit="true"
+                  name="odaURL"/>
+               <property
+                  type="string"
+                  defaultDisplayName="%datasource.property.odaDataSource"
+                  canInherit="true"
+                  name="odaDataSource"/>
+               <property
+                  type="string"
+                  defaultDisplayName="%datasource.property.odaUser"
+                  canInherit="true"
+                  name="odaUser"/>
+               <property
+                  type="choice"
+                  defaultDisplayName="%datasource.property.autocommit"
+                  canInherit="true"
+                  name="odaAutoCommit">
+         			<choice name="false" value="false" defaultDisplayName="%dataset.connection.autocommit.false"/>
+               		<choice name="true" value="true" defaultDisplayName="%dataset.connection.autocommit.true"/>
+               	</property>
+               <property
+                  type="choice"
+                  defaultDisplayName="%datasource.property.isolationmode"
+                  canInherit="true"
+                  name="odaIsolationMode">
+					<choice name="read-uncommitted" value="1" defaultDisplayName="%dataset.connection.isolationmode.read-uncommitted"/>
+               		<choice name="read-committed" value="2" defaultDisplayName="%dataset.connection.isolationmode.read-committed"/>
+               		<choice name="repeatable-read" value="4" defaultDisplayName="%dataset.connection.isolationmode.repeatable-read"/>
+               		<choice name="serializable" value="8" defaultDisplayName="%dataset.connection.isolationmode.serializable"/>
+                 </property>
+               <property
+                     isEncryptable="true"
+                     type="string"
+                     canInherit="true"
+                     defaultDisplayName="%datasource.property.odaPassword"
+                     name="odaPassword"/>
+               <property
+                     canInherit="true"
+                     defaultDisplayName="%datasource.property.odaJndiURL"
+                     name="odaJndiName"
+                     type="string"/>
+            </propertyGroup>
+            <propertyVisibility name="odaDataSource" visibility="hide"/>
+         </properties>
+      </dataSource>
+      <dataSet
+            defaultDisplayName="%dataset.query.sqltype"
+            id="org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet">
+         <dataTypeMapping
+               nativeDataType="BIT"
+               nativeDataTypeCode="-7"
+               odaScalarDataType="Integer"/>
+         <dataTypeMapping
+               nativeDataType="TINYINT"
+               nativeDataTypeCode="-6"
+               odaScalarDataType="Integer"/>
+         <dataTypeMapping
+               nativeDataType="SMALLINT"
+               nativeDataTypeCode="5"
+               odaScalarDataType="Integer"/>
+         <dataTypeMapping
+               nativeDataType="INTEGER"
+               nativeDataTypeCode="4"
+               odaScalarDataType="Integer"/>
+         <dataTypeMapping
+               nativeDataType="BIGINT"
+               nativeDataTypeCode="-5"
+               odaScalarDataType="Decimal"/>
+         <dataTypeMapping
+               nativeDataType="FLOAT"
+               nativeDataTypeCode="6"
+               odaScalarDataType="Double"/>
+         <dataTypeMapping
+               nativeDataType="REAL"
+               nativeDataTypeCode="7"
+               odaScalarDataType="Double"/>
+         <dataTypeMapping
+               nativeDataType="DOUBLE"
+               nativeDataTypeCode="8"
+               odaScalarDataType="Double"/>
+         <dataTypeMapping
+               nativeDataType="NUMERIC"
+               nativeDataTypeCode="2"
+               odaScalarDataType="Decimal"/>
+         <dataTypeMapping
+               nativeDataType="DECIMAL"
+               nativeDataTypeCode="3"
+               odaScalarDataType="Decimal"/>
+         <dataTypeMapping
+               nativeDataType="CHAR"
+               nativeDataTypeCode="1"
+               odaScalarDataType="String"/>
+         <dataTypeMapping
+               nativeDataType="VARCHAR"
+               nativeDataTypeCode="12"
+               odaScalarDataType="String"/>
+         <dataTypeMapping
+               nativeDataType="LONGVARCHAR"
+               nativeDataTypeCode="-1"
+               odaScalarDataType="String"/>
+         <dataTypeMapping
+               nativeDataType="DATE"
+               nativeDataTypeCode="91"
+               odaScalarDataType="Date"/>
+         <dataTypeMapping
+               nativeDataType="TIME"
+               nativeDataTypeCode="92"
+               odaScalarDataType="Time"/>
+         <dataTypeMapping
+               nativeDataType="TIMESTAMP"
+               nativeDataTypeCode="93"
+               odaScalarDataType="Timestamp"/>
+               
+         <!--For Oracle TIMESTAMPTZ type -->
+         <dataTypeMapping
+               nativeDataType="TIMESTAMPTZ"
+               nativeDataTypeCode="-101"
+               odaScalarDataType="Timestamp"/>
+         <dataTypeMapping
+               nativeDataType="BOOLEAN"
+               nativeDataTypeCode="16"
+               odaScalarDataType="Boolean"/>
+         <dataTypeMapping
+               nativeDataType="BINARY"
+               nativeDataTypeCode="-2"
+               odaScalarDataType="Blob"/>
+         <dataTypeMapping
+               nativeDataType="VARBINARY"
+               nativeDataTypeCode="-3"
+               odaScalarDataType="Blob"/>
+         <dataTypeMapping
+               nativeDataType="LONGVARBINARY"
+               nativeDataTypeCode="-4"
+               odaScalarDataType="Blob"/>
+         <dataTypeMapping
+               nativeDataType="BLOB"
+               nativeDataTypeCode="2004"
+               odaScalarDataType="Blob"/>
+         <dataTypeMapping
+               nativeDataType="CLOB"
+               nativeDataTypeCode="2005"
+               odaScalarDataType="Clob"/>
+         <properties>
+            <propertyGroup
+                  defaultDisplayName="Query Properties"
+                  name="queryProperties">
+               <property
+                     type="string"
+                     defaultDisplayName="%dataset.property.queryTimeOut"
+                     canInherit="true"
+                     name="queryTimeOut"/>
+               <property
+                     type="string"
+                     defaultDisplayName="%dataset.property.rowFetchSize"
+                     canInherit="false"
+                     name="rowFetchSize"/>
+            </propertyGroup>
+         </properties>
+      </dataSet>
+      <dataSet
+            defaultDisplayName="%dataset.query.sptype"
+            id="org.eclipse.birt.report.data.oda.jdbc.SPSelectDataSet">
+         <dataTypeMapping
+               nativeDataType="BIT"
+               nativeDataTypeCode="-7"
+               odaScalarDataType="Integer"/>
+         <dataTypeMapping
+               nativeDataType="TINYINT"
+               nativeDataTypeCode="-6"
+               odaScalarDataType="Integer"/>
+         <dataTypeMapping
+               nativeDataType="SMALLINT"
+               nativeDataTypeCode="5"
+               odaScalarDataType="Integer"/>
+         <dataTypeMapping
+               nativeDataType="INTEGER"
+               nativeDataTypeCode="4"
+               odaScalarDataType="Integer"/>
+         <dataTypeMapping
+               nativeDataType="BIGINT"
+               nativeDataTypeCode="-5"
+               odaScalarDataType="Decimal"/>
+         <dataTypeMapping
+               nativeDataType="FLOAT"
+               nativeDataTypeCode="6"
+               odaScalarDataType="Double"/>
+         <dataTypeMapping
+               nativeDataType="REAL"
+               nativeDataTypeCode="7"
+               odaScalarDataType="Double"/>
+         <dataTypeMapping
+               nativeDataType="DOUBLE"
+               nativeDataTypeCode="8"
+               odaScalarDataType="Double"/>
+         <dataTypeMapping
+               nativeDataType="NUMERIC"
+               nativeDataTypeCode="2"
+               odaScalarDataType="Decimal"/>
+         <dataTypeMapping
+               nativeDataType="DECIMAL"
+               nativeDataTypeCode="3"
+               odaScalarDataType="Decimal"/>
+         <dataTypeMapping
+               nativeDataType="CHAR"
+               nativeDataTypeCode="1"
+               odaScalarDataType="String"/>
+         <dataTypeMapping
+               nativeDataType="VARCHAR"
+               nativeDataTypeCode="12"
+               odaScalarDataType="String"/>
+         <dataTypeMapping
+               nativeDataType="LONGVARCHAR"
+               nativeDataTypeCode="-1"
+               odaScalarDataType="String"/>
+         <dataTypeMapping
+               nativeDataType="DATE"
+               nativeDataTypeCode="91"
+               odaScalarDataType="Date"/>
+         <dataTypeMapping
+               nativeDataType="TIME"
+               nativeDataTypeCode="92"
+               odaScalarDataType="Time"/>
+         <dataTypeMapping
+               nativeDataType="TIMESTAMP"
+               nativeDataTypeCode="93"
+               odaScalarDataType="Timestamp"/>
+         <!--For Oracle TIMESTAMPTZ type -->
+         <dataTypeMapping
+               nativeDataType="TIMESTAMPTZ"
+               nativeDataTypeCode="-101"
+               odaScalarDataType="Timestamp"/>
+         <dataTypeMapping
+               nativeDataType="BOOLEAN"
+               nativeDataTypeCode="16"
+               odaScalarDataType="Boolean"/>
+         <dataTypeMapping
+               nativeDataType="BINARY"
+               nativeDataTypeCode="-2"
+               odaScalarDataType="Blob"/>
+         <dataTypeMapping
+               nativeDataType="VARBINARY"
+               nativeDataTypeCode="-3"
+               odaScalarDataType="Blob"/>
+         <dataTypeMapping
+               nativeDataType="LONGVARBINARY"
+               nativeDataTypeCode="-4"
+               odaScalarDataType="Blob"/>
+         <dataTypeMapping
+               nativeDataType="BLOB"
+               nativeDataTypeCode="2004"
+               odaScalarDataType="Blob"/>
+         <dataTypeMapping
+               nativeDataType="CLOB"
+               nativeDataTypeCode="2005"
+               odaScalarDataType="Clob"/>
+         <dataTypeMapping
+               nativeDataType="REF CURSOR"
+               nativeDataTypeCode="-10"
+               odaScalarDataType="String"/>
+         <properties>
+            <propertyGroup
+                  defaultDisplayName="Query Properties"
+                  name="queryProperties">
+               <property
+                     type="string"
+                     defaultDisplayName="%dataset.property.queryTimeOut"
+                     canInherit="true"
+                     name="queryTimeOut"/>
+                <property
+                     type="string"
+                     defaultDisplayName="%dataset.property.rowFetchSize"
+                     canInherit="true"
+                     name="rowFetchSize"/>
+            </propertyGroup>
+         </properties>
+      </dataSet>
+
+   </extension>
+        <extension
+         point="org.eclipse.datatools.connectivity.connectionProfile">
+      <category
+            id="%oda.data.source.id"
+            name="%oda.data.source.name"
+            parentCategory="%oda.parent.category.id"/>
+      <connectionProfile
+            category="%oda.data.source.id"
+            id="%oda.data.source.id"
+            name="%connection.profile.name"
+            pingFactory="org.eclipse.datatools.connectivity.oda.profile.OdaConnectionFactory"/>
+      <connectionFactory
+            id="org.eclipse.datatools.connectivity.oda.IConnection"
+            name="%oda.connection.factory.name"
+            class="org.eclipse.datatools.connectivity.oda.profile.OdaConnectionFactory"
+            profile="%oda.data.source.id"/>
+   </extension>
+   
+   <extension
+         point="org.eclipse.birt.report.data.oda.jdbc.driverinfo">
+      <jdbcDriver
+            driverClass="org.apache.derby.jdbc.EmbeddedDriver"
+            urlTemplate="jdbc:derby:[subsubprotocol:]DATABASE[;ATTRIBUTE=VALUE]*"
+            name="Apache Derby Embedded Driver"/>
+   </extension>
+</plugin>
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/schema/driverinfo.exsd b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/schema/driverinfo.exsd
new file mode 100755
index 0000000..1fd456e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.jdbc_2.5.1.v20090821/schema/driverinfo.exsd
@@ -0,0 +1,143 @@
+<?xml version='1.0' encoding='UTF-8'?>

+<!-- Schema file written by PDE -->

+<schema targetNamespace="org.eclipse.birt.report.data.oda.jdbc">

+<annotation>

+      <appInfo>

+         <meta.schema plugin="org.eclipse.birt.report.data.oda.jdbc" id="driverinfo" name="JDBC Driver Information Extension"/>

+      </appInfo>

+      <documentation>

+         An extension to supply additional information about a JDBC driver available to the JDBC-ODA Bridge. The information provided for a JDBC driver by this extension include: Driver class name (which uniquely identifies the driver in the BIRT environment), a display-friendly driver name and a URL template to help report desinger compose a data source connection URL.

+      </documentation>

+   </annotation>

+

+   <element name="extension">

+      <complexType>

+         <sequence>

+            <element ref="jdbcDriver" minOccurs="0" maxOccurs="unbounded"/>

+         </sequence>

+         <attribute name="point" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="id" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="name" type="string">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+      </complexType>

+   </element>

+

+   <element name="jdbcDriver">

+      <annotation>

+         <documentation>

+            Provides information about a JDBC driver available to the JDBC-ODA bridge.

+         </documentation>

+      </annotation>

+      <complexType>

+         <sequence>

+         </sequence>

+         <attribute name="name" type="string">

+            <annotation>

+               <documentation>

+                  Displayable name of the JDBD driver. Can be translatable.

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="driverClass" type="string" use="required">

+            <annotation>

+               <documentation>

+                  Name of the JDBD driver&apos;s class implementing java.sql.Driver. For example, &quot;sun.jdbc.odbc.JdbcOdbcDriver&quot;.

+               </documentation>

+               <appInfo>

+                  <meta.attribute kind="java" basedOn="java.sql.Driver"/>

+               </appInfo>

+            </annotation>

+         </attribute>

+         <attribute name="urlTemplate" type="string">

+            <annotation>

+               <documentation>

+                  A template string to help the user compose a proper URL accepted by the JDBD driver. For example: &quot;jdbc:odbc:&lt;odbc-data-source-name&gt;[;&lt;attribute-name&gt;=&lt;attribute-value&gt;]*&quot;

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="connectionFactory" type="string">

+            <annotation>

+               <documentation>

+                  Defines an extension class which provides connections using this JDBC driver. If defined, an instance of this class will be used instead of java.sql.DriverManager to obtain connections for the given driverClass.
+The extension class must implement interface org.eclipse.birt.report.data.oda.jdbc.IConnectionFactory.

+               </documentation>

+               <appInfo>

+                  <meta.attribute kind="java" basedOn="org.eclipse.birt.report.data.oda.jdbc.IConnectionFactory"/>

+               </appInfo>

+            </annotation>

+         </attribute>

+      </complexType>

+   </element>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="since"/>

+      </appInfo>

+      <documentation>

+         1.0

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="examples"/>

+      </appInfo>

+      <documentation>

+         This is a sample extension which defines the embedded Derby JDBC driver. It is an excerpt from the jdbc-oda driver&apos;s plugin manifest.
+      &lt;extension
+          point=&quot;org.eclipse.birt.report.data.oda.jdbc.driverinfo&quot;&gt;
+      &lt;jdbcDriver
+            driverClass=&quot;org.apache.derby.jdbc.EmbeddedDriver&quot;
+            urlTemplate=&quot;jdbc:derby:[subsubprotocol:][databasename][;attributes]&quot;
+            name=&quot;Apache Derby Embedded Driver&quot;&gt;
+      &lt;/jdbcDriver&gt;
+      &lt;/extension&gt;

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="apiInfo"/>

+      </appInfo>

+      <documentation>

+         

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="implementation"/>

+      </appInfo>

+      <documentation>

+         

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="copyright"/>

+      </appInfo>

+      <documentation>

+         Copyright (c) 2004-2005 Actuate Corporation.
+All rights reserved. This program and the accompanying materials are made available under the  terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html

+      </documentation>

+   </annotation>

+

+</schema>

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/.options b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/.options
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/.options
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/META-INF/ECLIPSEF.RSA b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/META-INF/ECLIPSEF.RSA
new file mode 100755
index 0000000..f33c845
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/META-INF/ECLIPSEF.RSA
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/META-INF/ECLIPSEF.SF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/META-INF/ECLIPSEF.SF
new file mode 100755
index 0000000..5833b84
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/META-INF/ECLIPSEF.SF
@@ -0,0 +1,26 @@
+Signature-Version: 1.0

+SHA1-Digest-Manifest: 7yU65a0FEaFnawanbFF/veVyj8c=

+Created-By: 1.6.0 (IBM Corporation)

+SHA1-Digest-Manifest-Main-Attributes: CG/he9WZ9r4Q8d7j8puP4p6og1Y=

+

+Name: .options

+SHA1-Digest: Gq+oBeoe3MY44KwtI8t6DhX72XU=

+

+Name: db/BirtSample.jar

+SHA1-Digest: 3Wk3KlssoQl7Rx0UTEXZu2i7uqE=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: aM8odIt7KSTgo2Ap3NjnGa3gOAA=

+

+Name: sampledb.jar

+SHA1-Digest: zq1kvfddCZAIOcvqDEcy/FpB7LI=

+

+Name: about.html

+SHA1-Digest: sp+MJJREp1IOiZdau8mgdyqxZuo=

+

+Name: plugin.xml

+SHA1-Digest: T4IjbvsaBHcfR2LxvsamX0dY9IM=

+

+Name: plugin.properties

+SHA1-Digest: 1FBjfFyNDW+UiMawwcLmaWXheW0=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/META-INF/MANIFEST.MF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..6a1becf
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/META-INF/MANIFEST.MF
@@ -0,0 +1,43 @@
+Manifest-Version: 1.0

+Bundle-Localization: plugin

+Bundle-RequiredExecutionEnvironment: J2SE-1.5

+Bundle-SymbolicName: org.eclipse.birt.report.data.oda.sampledb;singlet

+ on:=true

+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)

+ ",org.eclipse.datatools.connectivity.oda;bundle-version="[3.1.0,4.0.0

+ )",org.eclipse.birt.report.data.oda.jdbc;bundle-version="[2.2.0,3.0.0

+ )",org.eclipse.birt.core;bundle-version="[2.1.0,3.0.0)",org.apache.de

+ rby.core;bundle-version="[10.1.2,11.0.0)",org.eclipse.datatools.conne

+ ctivity.oda.profile;bundle-version="[3.0.4,4.0.0)";resolution:=option

+ al

+Bundle-Activator: org.eclipse.birt.report.data.oda.sampledb.SampledbPl

+ ugin

+Export-Package: org.eclipse.birt.report.data.oda.sampledb

+Bundle-Version: 2.5.1.v20090821

+Bundle-ClassPath: sampledb.jar

+Bundle-ActivationPolicy: lazy

+Bundle-Vendor: Eclipse.org

+Bundle-Name: BIRT Sample Database

+Bundle-ManifestVersion: 2

+

+Name: .options

+SHA1-Digest: 2jmj7l5rSw0yVb/vlWAYkK/YBwk=

+

+Name: db/BirtSample.jar

+SHA1-Digest: GbXa3b3P1QEXFV4JUkJ/nkjf+Ro=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: M1yh6ypEH7aiF3JiaBs2vAuNi54=

+

+Name: sampledb.jar

+SHA1-Digest: AFnDPQ6uiRgo/WP1HCftOgSOWg4=

+

+Name: plugin.xml

+SHA1-Digest: Nmw9MemQsEm3/EOFZw5LFvgwC64=

+

+Name: about.html

+SHA1-Digest: ObsP47Fq6CSfBimdpGOcNnxQyPA=

+

+Name: plugin.properties

+SHA1-Digest: Q1/ei6eXX9Cw0yRjj6Up+BieAAY=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/META-INF/eclipse.inf b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/META-INF/eclipse.inf
new file mode 100755
index 0000000..6c1d31a
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/META-INF/eclipse.inf
@@ -0,0 +1,4 @@
+#Processed using Jarprocessor
+jarprocessor.exclude.children = true
+pack200.args = -E4
+pack200.conditioned = true
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/about.html b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/about.html
new file mode 100755
index 0000000..8728d9a
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 28, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/db/BirtSample.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/db/BirtSample.jar
new file mode 100755
index 0000000..f4e7a4e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/db/BirtSample.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/plugin.properties b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/plugin.properties
new file mode 100755
index 0000000..0a7e4f6
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/plugin.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Plug-in Configuration
+oda.data.source.id=org.eclipse.birt.report.data.oda.sampledb
+oda.parent.category.id=org.eclipse.datatools.connectivity.oda.profileCategory
+#
+###############################################################################
+# NLS String
+dataset.editor.page.query=Query
+datasource.name=Classic Models Inc. Sample Database
+select.dataset.name=SQL Select Query
+jdbc.driver.name=Classic Models Inc. SampleDB Driver
+dataset.property.queryTimeOut=&Query Time Out (in seconds)
+#
+oda.data.source.name=Classic Models Inc. Sample Database
+connection.profile.name=BIRT Sample DB Data Source Connection Profile
+#
+#  Below NLS messages apply to all ODA data sources; should be re-factored
+#
+oda.connection.factory.name=ODA Connection Factory
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/plugin.xml b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/plugin.xml
new file mode 100755
index 0000000..bb0ad39
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/plugin.xml
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+     <extension
+         point="org.eclipse.datatools.connectivity.oda.dataSource">
+      <dataSource
+            odaVersion="3.1"
+            driverClass="org.eclipse.birt.report.data.oda.sampledb.SampleDBDriver"
+            defaultDisplayName="%datasource.name"
+            setThreadContextClassLoader="false"
+            id="%oda.data.source.id">
+            <properties>
+            <propertyGroup
+                  defaultDisplayName="Connection Properties"
+                  name="connectionProperties">
+               <property
+                  type="string"
+                  defaultDisplayName="JDBC Driver Class"
+                  canInherit="true"
+                  name="odaDriverClass"/>
+               <property
+                  type="string"
+                  defaultDisplayName="JDBC Driver URL"
+                  canInherit="true"
+                  name="odaURL"/>
+               <property
+                  type="string"
+                  defaultDisplayName="Data Source"
+                  canInherit="true"
+                  name="odaDataSource"/>
+               <property
+                  type="string"
+                  defaultDisplayName="User Name"
+                  canInherit="true"
+                  name="odaUser"/>
+               <property
+                     isEncryptable="true"
+                     type="string"
+                     canInherit="true"
+                     defaultDisplayName="Password"
+                     name="odaPassword"/>
+            </propertyGroup>
+            <propertyVisibility name="odaDataSource" visibility="hide"/>
+         </properties>
+      </dataSource>   
+      <dataSet
+            defaultDisplayName="%select.dataset.name"
+            id="org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet">
+            <dataTypeMapping
+                  nativeDataType="BIT"
+                  nativeDataTypeCode="-7"
+                  odaScalarDataType="Integer"/>
+            <dataTypeMapping
+                  nativeDataType="TINYINT"
+                  nativeDataTypeCode="-6"
+                  odaScalarDataType="Integer"/>
+            <dataTypeMapping
+                  nativeDataType="SMALLINT"
+                  nativeDataTypeCode="5"
+                  odaScalarDataType="Integer"/>
+            <dataTypeMapping
+                  nativeDataType="INTEGER"
+                  nativeDataTypeCode="4"
+                  odaScalarDataType="Integer"/>
+            <dataTypeMapping
+                  nativeDataType="BIGINT"
+                  nativeDataTypeCode="-5"
+                  odaScalarDataType="Decimal"/>
+            <dataTypeMapping
+                  nativeDataType="FLOAT"
+                  nativeDataTypeCode="6"
+                  odaScalarDataType="Double"/>
+            <dataTypeMapping
+                  nativeDataType="REAL"
+                  nativeDataTypeCode="7"
+                  odaScalarDataType="Double"/>
+            <dataTypeMapping
+                  nativeDataType="DOUBLE"
+                  nativeDataTypeCode="8"
+                  odaScalarDataType="Double"/>
+            <dataTypeMapping
+                  nativeDataType="NUMERIC"
+                  nativeDataTypeCode="2"
+                  odaScalarDataType="Decimal"/>
+            <dataTypeMapping
+                  nativeDataType="DECIMAL"
+                  nativeDataTypeCode="3"
+                  odaScalarDataType="Decimal"/>
+            <dataTypeMapping
+                  nativeDataType="CHAR"
+                  nativeDataTypeCode="1"
+                  odaScalarDataType="String"/>
+            <dataTypeMapping
+                  nativeDataType="VARCHAR"
+                  nativeDataTypeCode="12"
+                  odaScalarDataType="String"/>
+            <dataTypeMapping
+                  nativeDataType="LONGVARCHAR"
+                  nativeDataTypeCode="-1"
+                  odaScalarDataType="String"/>
+            <dataTypeMapping
+                  nativeDataType="DATE"
+                  nativeDataTypeCode="91"
+                  odaScalarDataType="Date"/>
+            <dataTypeMapping
+                  nativeDataType="TIME"
+                  nativeDataTypeCode="92"
+                  odaScalarDataType="Time"/>
+            <dataTypeMapping
+                  nativeDataType="TIMESTAMP"
+                  nativeDataTypeCode="93"
+                  odaScalarDataType="Timestamp"/>
+            <dataTypeMapping
+                  nativeDataType="BOOLEAN"
+                  nativeDataTypeCode="16"
+                  odaScalarDataType="Boolean"/>
+            <dataTypeMapping
+                  nativeDataType="BINARY"
+                  nativeDataTypeCode="-2"
+                  odaScalarDataType="String"/><!--Blob"/>-->
+            <dataTypeMapping
+                  nativeDataType="VARBINARY"
+                  nativeDataTypeCode="-3"
+                  odaScalarDataType="String"/><!--Blob"/>-->
+            <dataTypeMapping
+                  nativeDataType="LONGVARBINARY"
+                  nativeDataTypeCode="-4"
+                  odaScalarDataType="String"/><!--Blob"/>-->
+            <properties>
+            	<propertyGroup
+                	  defaultDisplayName="Query Properties"
+                  	name="queryProperties">
+               		<property
+                    	 type="string"
+                    	 defaultDisplayName="%dataset.property.queryTimeOut"
+                     	canInherit="true"
+                     	name="queryTimeOut"/>
+           		 </propertyGroup>
+         	</properties>
+      </dataSet>
+
+   </extension>
+        <extension
+         point="org.eclipse.datatools.connectivity.connectionProfile">
+      <category
+            id="%oda.data.source.id"
+            name="%oda.data.source.name"
+            parentCategory="%oda.parent.category.id"/>
+      <connectionProfile
+            category="%oda.data.source.id"
+            id="%oda.data.source.id"
+            name="%connection.profile.name"
+            pingFactory="org.eclipse.datatools.connectivity.oda.profile.OdaConnectionFactory"/>
+      <connectionFactory
+            id="org.eclipse.datatools.connectivity.oda.IConnection"
+            name="%oda.connection.factory.name"
+            class="org.eclipse.datatools.connectivity.oda.profile.OdaConnectionFactory"
+            profile="%oda.data.source.id"/>
+   </extension>
+   
+   <extension
+         point="org.eclipse.birt.report.data.oda.jdbc.driverinfo">
+      <jdbcDriver
+            connectionFactory="org.eclipse.birt.report.data.oda.sampledb.SampleDBJDBCConnectionFactory"
+            driverClass="org.eclipse.birt.report.data.oda.sampledb.Driver"
+            name="%jdbc.driver.name"
+            urlTemplate="jdbc:classicmodels:sampledb"/>
+   </extension>
+
+</plugin>
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/sampledb.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/sampledb.jar
new file mode 100755
index 0000000..58be19d
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.sampledb_2.5.1.v20090821/sampledb.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.xml_2.5.1.v20090821.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.xml_2.5.1.v20090821.jar
new file mode 100755
index 0000000..e70b215
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.data.oda.xml_2.5.1.v20090821.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.dataextraction.csv_2.5.1.v20090806.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.dataextraction.csv_2.5.1.v20090806.jar
new file mode 100755
index 0000000..d87f6e4
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.dataextraction.csv_2.5.1.v20090806.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.dataextraction_2.5.1.v20090917.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.dataextraction_2.5.1.v20090917.jar
new file mode 100755
index 0000000..03077bc
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.dataextraction_2.5.1.v20090917.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.config_2.5.1.v20090821.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.config_2.5.1.v20090821.jar
new file mode 100755
index 0000000..b857db4
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.config_2.5.1.v20090821.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.excel.config_2.5.1.v20090917.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.excel.config_2.5.1.v20090917.jar
new file mode 100755
index 0000000..3d10ee7
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.excel.config_2.5.1.v20090917.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.html.config_2.5.1.v20090917.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.html.config_2.5.1.v20090917.jar
new file mode 100755
index 0000000..2116ff7
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.html.config_2.5.1.v20090917.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.html_2.5.1.v20090903.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.html_2.5.1.v20090903.jar
new file mode 100755
index 0000000..c94c22c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.html_2.5.1.v20090903.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.pdf.config_2.5.1.v20090917.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.pdf.config_2.5.1.v20090917.jar
new file mode 100755
index 0000000..41a36fe
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.pdf.config_2.5.1.v20090917.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.pdf_2.5.1.v20090821.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.pdf_2.5.1.v20090821.jar
new file mode 100755
index 0000000..220e0e4
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.pdf_2.5.1.v20090821.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.postscript.config_2.5.1.v20090917.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.postscript.config_2.5.1.v20090917.jar
new file mode 100755
index 0000000..40feff1
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.postscript.config_2.5.1.v20090917.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.postscript_2.5.1.v20090821.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.postscript_2.5.1.v20090821.jar
new file mode 100755
index 0000000..decaf21
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.postscript_2.5.1.v20090821.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.ppt.config_2.5.1.v20090917.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.ppt.config_2.5.1.v20090917.jar
new file mode 100755
index 0000000..b169aeb
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.ppt.config_2.5.1.v20090917.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.ppt_2.5.1.v20090821.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.ppt_2.5.1.v20090821.jar
new file mode 100755
index 0000000..f455666
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.ppt_2.5.1.v20090821.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.prototype.excel_2.5.1.v20090914.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.prototype.excel_2.5.1.v20090914.jar
new file mode 100755
index 0000000..83f6510
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.prototype.excel_2.5.1.v20090914.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.wpml.config_2.5.1.v20090917.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.wpml.config_2.5.1.v20090917.jar
new file mode 100755
index 0000000..01c4b35
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.wpml.config_2.5.1.v20090917.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.wpml_2.5.1.v20090821.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.wpml_2.5.1.v20090821.jar
new file mode 100755
index 0000000..1a34c55
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.emitter.wpml_2.5.1.v20090821.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/META-INF/ECLIPSEF.RSA b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/META-INF/ECLIPSEF.RSA
new file mode 100755
index 0000000..547efe5
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/META-INF/ECLIPSEF.RSA
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/META-INF/ECLIPSEF.SF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/META-INF/ECLIPSEF.SF
new file mode 100755
index 0000000..9138baf
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/META-INF/ECLIPSEF.SF
@@ -0,0 +1,23 @@
+Signature-Version: 1.0

+SHA1-Digest-Manifest: 11BUg+ixdRsR2VPu1WPuCUjdw/8=

+Created-By: 1.6.0 (IBM Corporation)

+SHA1-Digest-Manifest-Main-Attributes: 39JjPPBGtXD9dN6XGSN71hdOtDU=

+

+Name: fontsConfig_pdf.xml

+SHA1-Digest: ln7gzAi+hfqPm/4R90V16i+3PZQ=

+

+Name: fontsConfig_linux.xml

+SHA1-Digest: 0lYVezIpwnvSG3MbzPnTain77k8=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: SAqY+5ITAL0mkdYeijlSRhyIaZk=

+

+Name: fontsConfig_win32.xml

+SHA1-Digest: bvEts6nv9298qfCt+zXvk1T83Xs=

+

+Name: about.html

+SHA1-Digest: sp+MJJREp1IOiZdau8mgdyqxZuo=

+

+Name: fontsConfig.xml

+SHA1-Digest: 9etOb3s7UmPoC311MyLxr+ic+vQ=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/META-INF/MANIFEST.MF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..adebdb9
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0

+Bundle-Vendor: Eclipse.org

+Bundle-Localization: plugin

+Bundle-Name: BIRT Engine fonts

+Bundle-SymbolicName: org.eclipse.birt.report.engine.fonts

+Bundle-Version: 2.5.1.v20090821

+Bundle-ManifestVersion: 2

+

+Name: fontsConfig_pdf.xml

+SHA1-Digest: EFzcJWtuslgUc9F/TivwMoSiqRo=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: KyT9FF7C7t86NoBoa2kZT3ZJBfw=

+

+Name: fontsConfig_linux.xml

+SHA1-Digest: 5R6DbAlGmBwdhNafYCuoAaHYhto=

+

+Name: fontsConfig_win32.xml

+SHA1-Digest: agxkhDfsgdgJTNNfDO9gTEDyNko=

+

+Name: about.html

+SHA1-Digest: ObsP47Fq6CSfBimdpGOcNnxQyPA=

+

+Name: fontsConfig.xml

+SHA1-Digest: oUHd/Cixo1WEkKva49EuoHeVcD4=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/META-INF/eclipse.inf b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/META-INF/eclipse.inf
new file mode 100755
index 0000000..7864d3c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/META-INF/eclipse.inf
@@ -0,0 +1,3 @@
+#Processed using Jarprocessor
+pack200.args = -E4
+pack200.conditioned = true
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/about.html b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/about.html
new file mode 100755
index 0000000..8728d9a
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 28, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/fontsConfig.xml b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/fontsConfig.xml
new file mode 100755
index 0000000..917d2ec
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/fontsConfig.xml
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+<!--
+	The priority of fonts configuration file is as following:
+	Two major levels of configuration files:
+	1. Configuration files without format in name are divided into three sub-levels:
+		a. default configuration file: fontsConfig.xml
+		b. configuration files specified for special platform: fontsConfig_Windows_XP.xml or fontsConfig_win32.xml.
+		c. configuration files specified for special platform and special locale: fontsConfig_win32_zh.xml/fontsConfig_win32_zh_CN.xml
+	2. Configuration files with format in name are also divided into 3 sub-levels:
+		d. default configuration files for a format: fontsConfig_pdf.xml
+		e. configuration files for a format under special platform: fontsConfig_pdf_win32.xml
+		f. configuration files for a format under special platform: fontsConfig_pdf_win32_zh.xml
+	From level a to level f, the priority of configuration files increase.
+	
+	The logic how a single configuration is loaded and used is described below:
+	1. 	PDF layout engine loads the font files from the fonts folder of the plug-in 
+	"org.eclipse.birt.report.engine.fonts". and then the system defined font
+	folder. If the section <font-paths> is set in fontsConfig.xml, the system 
+	defined font folder will be ignored, and the font files specified in section 
+	<font-paths> will be loaded instead.
+	
+	2. 	PDF layout engine tries to use the font specified in design-time to render the pdf/postscript/ppt. 
+	If the font is a generic family, it will be mapped to a PDF embedded type1 font. 	
+	"serif" to "Times-Roman" 
+	"fantasy" to "Times-Roman" 
+	"sans-serif" to "Helvetica"
+	"monospace" to "Courier"
+	"cursive" to "Times-Roman"
+	If the font can not be built, it will go to the UNICODE block of that character,
+	and try the font defined in that block.
+	If this also fails, the character will be replaced with '?' using the default font, 
+	currently "Times-Roman", to denote a place of missing character. 
+-->
+<font>
+<!--
+	In <font-aliases> section, you can:
+	a. Define a mapping from a generic family to a font family.
+		for example: the following defines a mapping from generic family "serif" to a Type1 font
+		family "Times-Roman".
+			<mapping name="serif" font-family="Times-Roman"/>
+			
+	b. Define a mapping from a font family to another font family.
+		This is useful if you want to use a font for PDF rendering which differs from the font used
+	in design-time. 
+		for example: the following defines to replace "simsun" with "Arial Unicode MS".
+			<mapping name="simsun" font-family="Arial Unicode MS"/>
+			
+	In previous version, name "font-mapping" is used for "font-aliases". Currently, "font-mapping" entry
+	also works in the same way as "font-aliases" entry does. When "font-mapping" and "font-aliases" are
+	both available, the different mappings are merged, for the same entries in the both, those in
+	"font-aliases" will override those in "font-mapping".
+-->
+	<font-aliases>
+		<mapping name="serif" font-family="Times-Roman" />
+		<mapping name="sans-serif" font-family="Helvetica" />
+		<mapping name="monospace" font-family="Courier" />
+		<mapping name="cursive" font-family="Times-Roman" />
+		<mapping name="fantasy" font-family="Times-Roman" />
+	</font-aliases>
+	<search-sequences>
+		<sequence locale="zh">
+			<catalog name="Western" />
+			<catalog name="Chinese" />
+			<catalog name="Japanese" />
+			<catalog name="Korean" />
+		</sequence>
+		<sequence locale="ja">
+			<catalog name="Western" />
+			<catalog name="Japanese" />
+			<catalog name="Chinese" />
+			<catalog name="Korean" />
+		</sequence>
+		<sequence locale="ko">
+			<catalog name="Western" />
+			<catalog name="Korean" />
+			<catalog name="Chinese" />
+			<catalog name="Japanese" />
+		</sequence>
+	</search-sequences>
+<!--
+	<composite-font> section is used to define a composite font, which is a font consists of many physical
+	fonts used for different characters. The component fonts are defined by <block> entries. Each <block>
+	entry defines a mapping from a UNICODE range to a font family name, which means the font family will 
+	be applied for the characters with UNICODE in the range.
+	
+	Characters in one block may need different fonts. One example is, in block "Currency Symbols",
+	characters are currency symbols in different language, the fonts specified for which should be fonts
+	for the corresponding languages. For these characters, special fonts can be specified for characters
+	one by one using <character> entry:
+	<composite-font>
+	    ......
+		<character value="฿" font-family="Angsana New"/>
+		<character value="\u0068" font-family="Time Roman"/>
+	    ......
+	</composite-font>
+	Note that characters are represented by attribute "value", which can be of two forms, the character
+	itself or its UNICODE.
+	
+	A composite font named "all-fonts" will be applied as default font, that is, when a character is not 
+	defined in desired font, the font defined in "all-fonts" will be used.
+-->
+	<composite-font name="all-fonts" font-family="Times-Roman">
+	</composite-font>
+
+<!--
+	In this section, you can set the font path you want PDF layout engine to read, ranging from one font
+	file to a whole font folder.
+		for example: 
+		add a font folder
+		<path path="c:/windows/fonts"/>
+		add a font file
+		<path path="/usr/X11R6/lib/X11/fonts/TTF/arial.ttf"/>
+
+	But please NOTE:
+ 		If this section is set, PDF layout engine will ONLY load the font files in these paths and ignore
+	the system defined font folder. If you want to use the system font folder as well, please include
+	it in this section. 
+ 	
+ 	On some systems, BIRT PDF layout engine may not recognize the system defined font folder. If you encounter
+	this issue, please add the font path to this section.
+-->
+	<font-paths>
+		<path path="C:/windows/fonts" />
+		<path path="d:/windows/fonts" />
+		<path path="e:/windows/fonts" />
+		<path path="f:/windows/fonts" />
+		<path path="g:/windows/fonts" />
+		<path path="C:/WINNT/fonts" />
+		<path path="d:/WINNT/fonts" />
+		<path path="e:/WINNT/fonts" />
+		<path path="f:/WINNT/fonts" />
+		<path path="g:/WINNT/fonts" />
+		<path path="/usr/X/lib/X11/fonts/TrueType" />
+		<path path="/usr/share/fonts/default/TrueType" />
+		<path path="/usr/openwin/lib/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/euro_fonts/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/iso_8859_2/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/iso_8859_5/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/iso_8859_7/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/iso_8859_8/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/iso_8859_9/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/iso_8859_13/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/iso_8859_15/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/ar/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/hi_IN.UTF-8/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/ja/X11/fonts/TT" />
+		<path path="/usr/openwin/lib/locale/ko/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/ko.UTF-8/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/KOI8-R/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/ru.ansi-1251/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/th_TH/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/zh_TW/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/zh_TW.BIG5/X11/fonts/TT" />
+		<path path="/usr/openwin/lib/locale/zh_HK.BIG5HK/X11/fonts/TT" />
+		<path path="/usr/openwin/lib/locale/zh_CN.GB18030/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/zh/X11/fonts/TrueType" />
+		<path path="/usr/openwin/lib/locale/zh.GBK/X11/fonts/TrueType" />
+		<path path="/usr/X11R6/lib/X11/fonts/TrueType" />
+		<path path="/usr/X11R6/lib/X11/fonts/truetype" />
+		<path path="/usr/X11R6/lib/X11/fonts/tt" />
+		<path path="/usr/X11R6/lib/X11/fonts/TTF" />
+		<path path="/usr/X11R6/lib/X11/fonts/OTF" />
+		<path path="/usr/share/fonts/ja/TrueType" />
+		<path path="/usr/share/fonts/truetype" />
+		<path path="/usr/share/fonts/ko/TrueType" />
+		<path path="/usr/share/fonts/zh_CN/TrueType" />
+		<path path="/usr/share/fonts/zh_TW/TrueType" />
+		<path path="/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" />
+	</font-paths>
+<!--
+	For <font-encodings> section,
+	In most cases, you need not use this section, unless you are trying to use a non true-type font for
+	PDF rendering.
+-->
+	<font-encodings>
+		<encoding font-family="Times-Roman" encoding="Cp1252" />
+		<encoding font-family="Helvetica" encoding="Cp1252" />
+		<encoding font-family="Courier" encoding="Cp1252" />
+		<encoding font-family="Zapfdingbats" encoding="Cp1252" />
+		<encoding font-family="Symbol" encoding="Cp1252" />
+		<encoding font-family="STSong-Light" encoding="UniGB-UCS2-H" />
+		<encoding font-family="STSongStd-Light" encoding="UniGB-UCS2-H" />
+		<encoding font-family="MHei-Medium" encoding="UniCNS-UCS2-H" />
+		<encoding font-family="MSung-Light" encoding="UniCNS-UCS2-H" />
+		<encoding font-family="MSungStd-Light" encoding="UniCNS-UCS2-H" />
+		<encoding font-family="HeiseiMin-W3" encoding="UniJIS-UCS2-H" />
+		<encoding font-family="HeiseiKakuGo-W5" encoding="UniJIS-UCS2-H" />
+		<encoding font-family="KozMinPro-Regular" encoding="UniJIS-UCS2-H" />
+		<encoding font-family="HYGoThic-Medium" encoding="UniKS-UCS2-H" />
+		<encoding font-family="HYSMyeongJo-Medium" encoding="UniKS-UCS2-H" />
+		<encoding font-family="HYSMyeongJoStd" encoding="UniKS-UCS2-H" />
+	</font-encodings>
+</font>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/fontsConfig_linux.xml b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/fontsConfig_linux.xml
new file mode 100755
index 0000000..0e45e9f
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/fontsConfig_linux.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<font>
+	<font-aliases>
+		<mapping name="serif" font-family="Lucida Bright" />
+		<mapping name="sans serif" font-family="Lucida Sans" />
+		<mapping name="monospace" font-family="Lucida Sans Typewriter" />
+		<mapping name="cursive" font-family="Lucida Sans Typewriter" />
+		<mapping name="fantasy" font-family="Lucida Sans Typewriter" />
+	</font-aliases>
+	<composite-font name="all-fonts" default="Lucida Sans Typewriter">
+		<font font-family="Lucida Sans Typewriter" catalog="Western" />
+		<font font-family="ZYSong18030" catalog="Chinese" />
+		<font font-family="Baekmuk Batang" catalog="Korean" />
+		<font font-family="Kochi Mincho" catalog="Japanese" />
+	</composite-font>
+</font>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/fontsConfig_pdf.xml b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/fontsConfig_pdf.xml
new file mode 100755
index 0000000..93bd6ae
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/fontsConfig_pdf.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<font>
+	<font-aliases>
+		<mapping name="serif" font-family="Times-Roman" />
+		<mapping name="sans-serif" font-family="Helvetica" />
+		<mapping name="monospace" font-family="Courier" />
+	</font-aliases>
+	<font-encodings>
+		<encoding font-family="Times-Roman" encoding="Cp1252" />
+		<encoding font-family="Helvetica" encoding="Cp1252" />
+		<encoding font-family="Courier" encoding="Cp1252" />
+		<encoding font-family="Zapfdingbats" encoding="Cp1252" />
+		<encoding font-family="Symbol" encoding="Cp1252" />
+		<encoding font-family="STSong-Light" encoding="UniGB-UCS2-H" />
+		<encoding font-family="STSongStd-Light" encoding="UniGB-UCS2-H" />
+		<encoding font-family="MHei-Medium" encoding="UniCNS-UCS2-H" />
+		<encoding font-family="MSung-Light" encoding="UniCNS-UCS2-H" />
+		<encoding font-family="MSungStd-Light" encoding="UniCNS-UCS2-H" />
+		<encoding font-family="HeiseiMin-W3" encoding="UniJIS-UCS2-H" />
+		<encoding font-family="HeiseiKakuGo-W5" encoding="UniJIS-UCS2-H" />
+		<encoding font-family="KozMinPro-Regular" encoding="UniJIS-UCS2-H" />
+		<encoding font-family="HYGoThic-Medium" encoding="UniKS-UCS2-H" />
+		<encoding font-family="HYSMyeongJo-Medium" encoding="UniKS-UCS2-H" />
+		<encoding font-family="HYSMyeongJoStd" encoding="UniKS-UCS2-H" />
+	</font-encodings>
+	<composite-font name="all-fonts">
+		<font font-family="Times-Roman" catalog="Western" />
+		<font font-family="MSung-Light" catalog="Chinese" />
+		<font font-family="HeiseiKakuGo-W5" catalog="Japanese" />
+		<font font-family="HYGoThic-Medium" catalog="Korean" />
+	</composite-font>
+</font>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/fontsConfig_win32.xml b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/fontsConfig_win32.xml
new file mode 100755
index 0000000..e318397
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.fonts_2.5.1.v20090821/fontsConfig_win32.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<font>
+	<font-aliases>
+		<mapping name="serif" font-family="Times New Roman" />
+		<mapping name="sans serif" font-family="Arial" />
+		<mapping name="monospace" font-family="Courier New" />
+		<mapping name="cursive" font-family="Comic Sans MS" />
+		<mapping name="fantasy" font-family="Blackadder ITC" />
+	</font-aliases>
+	<composite-font name="all-fonts" default="Arial Unicode MS">
+		<font font-family="Times New Roman" catalog="Western" />
+		<font font-family="SimSun" catalog="Chinese" />
+		<font font-family="Batang" catalog="Korean" />
+		<font font-family="MS PMincho" catalog="Japanese" />
+		<font font-family="Tahoma" />
+	</composite-font>
+</font>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.script.javascript_2.5.1.v20090917.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.script.javascript_2.5.1.v20090917.jar
new file mode 100755
index 0000000..635dbe4
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine.script.javascript_2.5.1.v20090917.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine_2.5.1.v20090916.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine_2.5.1.v20090916.jar
new file mode 100755
index 0000000..4fd84af
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.engine_2.5.1.v20090916.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.item.crosstab.core_2.5.1.v20090821.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.item.crosstab.core_2.5.1.v20090821.jar
new file mode 100755
index 0000000..c7ef5e3
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.item.crosstab.core_2.5.1.v20090821.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.model.adapter.oda_2.5.1.v20090904.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.model.adapter.oda_2.5.1.v20090904.jar
new file mode 100755
index 0000000..783e925
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.model.adapter.oda_2.5.1.v20090904.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.model_2.5.1.v20090904.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.model_2.5.1.v20090904.jar
new file mode 100755
index 0000000..fe91c37
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.birt.report.model_2.5.1.v20090904.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.contenttype_3.4.1.R35x_v20090826-0451.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.contenttype_3.4.1.R35x_v20090826-0451.jar
new file mode 100755
index 0000000..ee26508
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.contenttype_3.4.1.R35x_v20090826-0451.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.expressions_3.4.100.v20090429-1800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.expressions_3.4.100.v20090429-1800.jar
new file mode 100755
index 0000000..41b5cf9
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.expressions_3.4.100.v20090429-1800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.filesystem_1.2.0.v20090507.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.filesystem_1.2.0.v20090507.jar
new file mode 100755
index 0000000..c99495f
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.filesystem_1.2.0.v20090507.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.jobs_3.4.100.v20090429-1800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.jobs_3.4.100.v20090429-1800.jar
new file mode 100755
index 0000000..2928c77
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.jobs_3.4.100.v20090429-1800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.resources_3.5.1.R35x_v20090826-0451.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.resources_3.5.1.R35x_v20090826-0451.jar
new file mode 100755
index 0000000..3ed4d4c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.resources_3.5.1.R35x_v20090826-0451.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.auth_3.2.100.v20090413.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.auth_3.2.100.v20090413.jar
new file mode 100755
index 0000000..480a44c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.auth_3.2.100.v20090413.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/.api_description b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/.api_description
new file mode 100755
index 0000000..40af819
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/.api_description
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<component name="org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800" version="1.2">
+    <plugin id="org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800"/>
+</component>
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/ECLIPSEF.RSA b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/ECLIPSEF.RSA
new file mode 100755
index 0000000..961e91d
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/ECLIPSEF.RSA
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/ECLIPSEF.SF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/ECLIPSEF.SF
new file mode 100755
index 0000000..3409f7e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/ECLIPSEF.SF
@@ -0,0 +1,20 @@
+Signature-Version: 1.0

+SHA1-Digest-Manifest: B2cFnJgXALK7VE8opMVV5KBIjQo=

+Created-By: 1.6.0 (IBM Corporation)

+SHA1-Digest-Manifest-Main-Attributes: oA6wuJhZmJO1Z2O148xyZhtrhq4=

+

+Name: fragment.properties

+SHA1-Digest: Gi/SEQV8Vl9A/8928AtuhnVkrKQ=

+

+Name: runtime_registry_compatibility.jar

+SHA1-Digest: NbIUt3l9hEm6pOVFZY50ychs75M=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: SAqY+5ITAL0mkdYeijlSRhyIaZk=

+

+Name: .api_description

+SHA1-Digest: gQl6PmXuMz9woKLyEhNwY9KRzI8=

+

+Name: about.html

+SHA1-Digest: M+fykt9heyWoEv1LNiIEeBhi/2Q=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/MANIFEST.MF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..5c7572b
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/MANIFEST.MF
@@ -0,0 +1,28 @@
+Manifest-Version: 1.0

+Bundle-ClassPath: runtime_registry_compatibility.jar

+Eclipse-PatchFragment: true

+Bundle-Vendor: %providerName

+Bundle-Localization: fragment

+Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,J2SE-1.3

+Fragment-Host: org.eclipse.equinox.registry;bundle-version="[3.3.0,3.5

+ .0)"

+Bundle-Name: %fragmentName

+Bundle-SymbolicName: org.eclipse.core.runtime.compatibility.registry

+Bundle-Version: 3.2.200.v20090429-1800

+Bundle-ManifestVersion: 2

+

+Name: fragment.properties

+SHA1-Digest: 4yjHkU5Z/6ej6ZFYT+PE9sMOJPY=

+

+Name: runtime_registry_compatibility.jar

+SHA1-Digest: MxFbl3pNRF2h3WYJqb3FFQ160/U=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: KyT9FF7C7t86NoBoa2kZT3ZJBfw=

+

+Name: .api_description

+SHA1-Digest: gTYjL5jCOd2rosX2xQ3ihmTV464=

+

+Name: about.html

+SHA1-Digest: ejOZra0kypGLQQ2bJtGTX+LI8tU=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/eclipse.inf b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/eclipse.inf
new file mode 100755
index 0000000..7864d3c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/META-INF/eclipse.inf
@@ -0,0 +1,3 @@
+#Processed using Jarprocessor
+pack200.args = -E4
+pack200.conditioned = true
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/about.html b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/about.html
new file mode 100755
index 0000000..4602330
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 2, 2006</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/fragment.properties b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/fragment.properties
new file mode 100755
index 0000000..e60dbf5c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/fragment.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2006 IBM Corporation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+providerName=Eclipse.org
+fragmentName=Eclipse Registry Compatibility Fragment
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/runtime_registry_compatibility.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/runtime_registry_compatibility.jar
new file mode 100755
index 0000000..39f72e9
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20090429-1800/runtime_registry_compatibility.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility_3.2.0.v20090413.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility_3.2.0.v20090413.jar
new file mode 100755
index 0000000..0b107a0
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime.compatibility_3.2.0.v20090413.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime_3.5.0.v20090525.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime_3.5.0.v20090525.jar
new file mode 100755
index 0000000..4bd2988
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.core.runtime_3.5.0.v20090525.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition_1.0.2.v200906161815.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition_1.0.2.v200906161815.jar
new file mode 100755
index 0000000..ea17f28
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition_1.0.2.v200906161815.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.apache.derby_1.0.100.v200906020900.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.apache.derby_1.0.100.v200906020900.jar
new file mode 100755
index 0000000..0665140
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.apache.derby_1.0.100.v200906020900.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.console.profile_1.0.0.v200906020553.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.console.profile_1.0.0.v200906020553.jar
new file mode 100755
index 0000000..16d0c74
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.console.profile_1.0.0.v200906020553.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.db.generic_1.0.1.v200908130547.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.db.generic_1.0.1.v200908130547.jar
new file mode 100755
index 0000000..f885050
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.db.generic_1.0.1.v200908130547.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.dbdefinition.genericJDBC_1.0.1.v200906161815.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.dbdefinition.genericJDBC_1.0.1.v200906161815.jar
new file mode 100755
index 0000000..1d18751
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.dbdefinition.genericJDBC_1.0.1.v200906161815.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda.consumer_3.2.1.v200908281118.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda.consumer_3.2.1.v200908281118.jar
new file mode 100755
index 0000000..922983d
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda.consumer_3.2.1.v200908281118.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda.design_3.2.1.v200909020856.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda.design_3.2.1.v200909020856.jar
new file mode 100755
index 0000000..eff3756
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda.design_3.2.1.v200909020856.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda.flatfile_3.1.0.v200907061455.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda.flatfile_3.1.0.v200907061455.jar
new file mode 100755
index 0000000..8b0d0c1
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda.flatfile_3.1.0.v200907061455.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda.profile_3.2.0.v200906020553.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda.profile_3.2.0.v200906020553.jar
new file mode 100755
index 0000000..6426f09
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda.profile_3.2.0.v200906020553.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda_3.2.1.v200909031448.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda_3.2.1.v200909031448.jar
new file mode 100755
index 0000000..33a78e3
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.oda_3.2.1.v200909031448.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.sqm.core_1.1.0.v200906020553.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.sqm.core_1.1.0.v200906020553.jar
new file mode 100755
index 0000000..97459fc
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity.sqm.core_1.1.0.v200906020553.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity_1.1.2.v200908180040.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity_1.1.2.v200908180040.jar
new file mode 100755
index 0000000..ef63d58
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.connectivity_1.1.2.v200908180040.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.hsqldb.dbdefinition_1.0.0.v200906161800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.hsqldb.dbdefinition_1.0.0.v200906161800.jar
new file mode 100755
index 0000000..0a128be
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.hsqldb.dbdefinition_1.0.0.v200906161800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.hsqldb_1.0.0.v200906020900.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.hsqldb_1.0.0.v200906020900.jar
new file mode 100755
index 0000000..30749ab
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.hsqldb_1.0.0.v200906020900.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition_1.0.3.v200906161800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition_1.0.3.v200906161800.jar
new file mode 100755
index 0000000..0df1765
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition_1.0.3.v200906161800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.iseries_1.0.1.v200906020900.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.iseries_1.0.1.v200906020900.jar
new file mode 100755
index 0000000..217f190
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.iseries_1.0.1.v200906020900.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition_1.0.3.v200906161800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition_1.0.3.v200906161800.jar
new file mode 100755
index 0000000..8c83aa2
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition_1.0.3.v200906161800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.luw_1.0.1.v200906020900.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.luw_1.0.1.v200906020900.jar
new file mode 100755
index 0000000..0962244
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.luw_1.0.1.v200906020900.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition_1.0.3.v200906161800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition_1.0.3.v200906161800.jar
new file mode 100755
index 0000000..b577211
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition_1.0.3.v200906161800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.zseries_1.0.1.v200906020900.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.zseries_1.0.1.v200906020900.jar
new file mode 100755
index 0000000..04e803d
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.db2.zseries_1.0.1.v200906020900.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.informix.dbdefinition_1.0.3.v200906161800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.informix.dbdefinition_1.0.3.v200906161800.jar
new file mode 100755
index 0000000..236af6e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.informix.dbdefinition_1.0.3.v200906161800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.informix_1.0.0.v200906020900.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.informix_1.0.0.v200906020900.jar
new file mode 100755
index 0000000..52bc822
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.ibm.informix_1.0.0.v200906020900.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition_1.0.0.v200906161800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition_1.0.0.v200906161800.jar
new file mode 100755
index 0000000..f467244
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition_1.0.0.v200906161800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.msft.sqlserver_1.0.1.v200906020900.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.msft.sqlserver_1.0.1.v200906020900.jar
new file mode 100755
index 0000000..96d1d37
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.msft.sqlserver_1.0.1.v200906020900.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.mysql.dbdefinition_1.0.4.v200906161800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.mysql.dbdefinition_1.0.4.v200906161800.jar
new file mode 100755
index 0000000..1bded0d
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.mysql.dbdefinition_1.0.4.v200906161800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.mysql_1.0.2.v200906020900.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.mysql_1.0.2.v200906020900.jar
new file mode 100755
index 0000000..7dbc6a7
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.mysql_1.0.2.v200906020900.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.oda.ws_1.2.1.v200907300941.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.oda.ws_1.2.1.v200907300941.jar
new file mode 100755
index 0000000..d21f81d
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.oda.ws_1.2.1.v200907300941.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.oda.xml_1.2.0.v200907061455.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.oda.xml_1.2.0.v200907061455.jar
new file mode 100755
index 0000000..775364f
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.oda.xml_1.2.0.v200907061455.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.oracle.dbdefinition_1.0.100.v200906161800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.oracle.dbdefinition_1.0.100.v200906161800.jar
new file mode 100755
index 0000000..72df67f
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.oracle.dbdefinition_1.0.100.v200906161800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.oracle_1.0.0.v200908130544.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.oracle_1.0.0.v200908130544.jar
new file mode 100755
index 0000000..146e3d3
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.oracle_1.0.0.v200908130544.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.postgresql.dbdefinition_1.0.1.v200906161800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.postgresql.dbdefinition_1.0.1.v200906161800.jar
new file mode 100755
index 0000000..6f9641d
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.postgresql.dbdefinition_1.0.1.v200906161800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.postgresql_1.0.1.v200906020900.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.postgresql_1.0.1.v200906020900.jar
new file mode 100755
index 0000000..e9a7c05
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.postgresql_1.0.1.v200906020900.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.sap.maxdb.dbdefinition_1.0.0.v200906161800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.sap.maxdb.dbdefinition_1.0.0.v200906161800.jar
new file mode 100755
index 0000000..de152d8
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.sap.maxdb.dbdefinition_1.0.0.v200906161800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.sap.maxdb_1.0.0.v200906020900.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.sap.maxdb_1.0.0.v200906020900.jar
new file mode 100755
index 0000000..daa25ac
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.enablement.sap.maxdb_1.0.0.v200906020900.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.modelbase.dbdefinition_1.0.1.v200906022249.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.modelbase.dbdefinition_1.0.1.v200906022249.jar
new file mode 100755
index 0000000..2a7e7ef
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.modelbase.dbdefinition_1.0.1.v200906022249.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.modelbase.derby_1.0.0.v200906020900.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.modelbase.derby_1.0.0.v200906020900.jar
new file mode 100755
index 0000000..8741e16
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.modelbase.derby_1.0.0.v200906020900.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.modelbase.sql_1.0.2.v200906022249.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.modelbase.sql_1.0.2.v200906022249.jar
new file mode 100755
index 0000000..4b517e7
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.datatools.modelbase.sql_1.0.2.v200906022249.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf.common_2.5.0.v200906151043.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf.common_2.5.0.v200906151043.jar
new file mode 100755
index 0000000..345ad58
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf.common_2.5.0.v200906151043.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf.ecore.change_2.5.0.v200906151043.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf.ecore.change_2.5.0.v200906151043.jar
new file mode 100755
index 0000000..910d3e6
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf.ecore.change_2.5.0.v200906151043.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf.ecore.xmi_2.5.0.v200906151043.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf.ecore.xmi_2.5.0.v200906151043.jar
new file mode 100755
index 0000000..255e177
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf.ecore.xmi_2.5.0.v200906151043.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf.ecore_2.5.0.v200906151043.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf.ecore_2.5.0.v200906151043.jar
new file mode 100755
index 0000000..917485f
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf.ecore_2.5.0.v200906151043.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf_2.5.0.v200906151043.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf_2.5.0.v200906151043.jar
new file mode 100755
index 0000000..e4efd9b
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.emf_2.5.0.v200906151043.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.equinox.app_1.2.0.v20090520-1800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.equinox.app_1.2.0.v20090520-1800.jar
new file mode 100755
index 0000000..cb71fd8
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.equinox.app_1.2.0.v20090520-1800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.equinox.common_3.5.1.R35x_v20090807-1100.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.equinox.common_3.5.1.R35x_v20090807-1100.jar
new file mode 100755
index 0000000..1874077
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.equinox.common_3.5.1.R35x_v20090807-1100.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.equinox.preferences_3.2.300.v20090520-1800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.equinox.preferences_3.2.300.v20090520-1800.jar
new file mode 100755
index 0000000..b414b7a
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.equinox.preferences_3.2.300.v20090520-1800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.equinox.registry_3.4.100.v20090520-1800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.equinox.registry_3.4.100.v20090520-1800.jar
new file mode 100755
index 0000000..6d08354
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.equinox.registry_3.4.100.v20090520-1800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.osgi.services_3.2.0.v20090520-1800.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.osgi.services_3.2.0.v20090520-1800.jar
new file mode 100755
index 0000000..6643d8a
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.osgi.services_3.2.0.v20090520-1800.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.osgi_3.5.1.R35x_v20090827.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.osgi_3.5.1.R35x_v20090827.jar
new file mode 100755
index 0000000..7aa269a
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.osgi_3.5.1.R35x_v20090827.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.update.configurator_3.3.0.v20090312.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.update.configurator_3.3.0.v20090312.jar
new file mode 100755
index 0000000..77629dd
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.eclipse.update.configurator_3.3.0.v20090312.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/META-INF/ECLIPSEF.RSA b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/META-INF/ECLIPSEF.RSA
new file mode 100755
index 0000000..7840b5d
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/META-INF/ECLIPSEF.RSA
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/META-INF/ECLIPSEF.SF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/META-INF/ECLIPSEF.SF
new file mode 100755
index 0000000..634c77d
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/META-INF/ECLIPSEF.SF
@@ -0,0 +1,32 @@
+Signature-Version: 1.0

+SHA1-Digest-Manifest: jhT6F13jb6I92raR+HnKiNH6ZPQ=

+Created-By: 1.6.0 (IBM Corporation)

+SHA1-Digest-Manifest-Main-Attributes: hU4G/xGODZhIXfJJjBHBQ0uCCH8=

+

+Name: lib/js.jar

+SHA1-Digest: qGAW6noxWX9w2xLKXxg+9FElSeM=

+

+Name: eclipse32.png

+SHA1-Digest: Yg2IAx+o7H2tbLyk4cwOAV+K+R4=

+

+Name: about_files/NPL-1.1.html

+SHA1-Digest: v94PjHViXOnYFuTh3pOOURoDXJk=

+

+Name: about.ini

+SHA1-Digest: INNEGu5sbk4YgQndV+vTc61w/Bk=

+

+Name: about.properties

+SHA1-Digest: +n73aygs+CbnQi/yTha1Hn01l9U=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: SAqY+5ITAL0mkdYeijlSRhyIaZk=

+

+Name: about.mappings

+SHA1-Digest: NpOqGmwrfWeloOYEZ4bIGujex88=

+

+Name: about_files/MPL-1.1.txt

+SHA1-Digest: R7vjJduoLOplud0HRjSwvqhRUck=

+

+Name: about.html

+SHA1-Digest: sMhV37yvQyztsqGtB67om3lN7wo=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/META-INF/MANIFEST.MF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..6606e5e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/META-INF/MANIFEST.MF
@@ -0,0 +1,38 @@
+Manifest-Version: 1.0

+Bundle-ClassPath: lib/js.jar

+Bundle-Vendor: Eclipse.org

+Bundle-Localization: plugin

+Bundle-RequiredExecutionEnvironment: J2SE-1.4

+Bundle-Name: Mozilla Rhino

+Bundle-SymbolicName: org.mozilla.rhino

+Bundle-Version: 1.7.1.v20090521

+Export-Package: org.mozilla.javascript,org.mozilla.javascript.debug

+Bundle-ManifestVersion: 2

+

+Name: lib/js.jar

+SHA1-Digest: 6AgbU+wsEtffzWUFnlMVrDFB/0A=

+

+Name: eclipse32.png

+SHA1-Digest: eCk/A3/COXL3S6qAVDOSrlsqmLw=

+

+Name: about_files/NPL-1.1.html

+SHA1-Digest: Rowm9287ix5MWF+pzBLeopDLGtI=

+

+Name: about.ini

+SHA1-Digest: 2w8BfdBzQbbWHJNbazxzu9YMYwo=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: KyT9FF7C7t86NoBoa2kZT3ZJBfw=

+

+Name: about.properties

+SHA1-Digest: 5pjlj+GVJmM0lzSVHh9PIVbKH6A=

+

+Name: about.mappings

+SHA1-Digest: 4fkRPbakxJw/l7UVJfFDuPncInU=

+

+Name: about_files/MPL-1.1.txt

+SHA1-Digest: q6jXbQr2fVfaPDwyHKpZ89JCOGs=

+

+Name: about.html

+SHA1-Digest: mjyIyqtILChRk8+Yq6uuQHDoeFY=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/META-INF/eclipse.inf b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/META-INF/eclipse.inf
new file mode 100755
index 0000000..7864d3c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/META-INF/eclipse.inf
@@ -0,0 +1,3 @@
+#Processed using Jarprocessor
+pack200.args = -E4
+pack200.conditioned = true
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about.html b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about.html
new file mode 100755
index 0000000..a718e30
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>May 21, 2009</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+<h3>Third Party Content</h3>
+
+<p>The Content includes items that have been sourced from third parties as set out below. If you 
+did not receive this Content directly from the Eclipse Foundation, the following is provided 
+for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
+terms and conditions of use.</p>
+
+<h4>Rhino 1.7R1</h4>
+
+<p>The plug-in is accompanied by software developed by the Mozilla Foundation.
+The binary code of Rhino 1.7R1 (&quot;Rhino&quot;) is included with the plug-in without modification in lib/js.jar.
+Your use of Rhino is subject to the terms and conditions of the Mozilla Public License Version 1.1 (&quot;MPL&quot;).
+A copy of the MPL can be found in <a href="about_files/MPL-1.1.txt">about_files/MPL-1.1.txt</a> and is also available
+at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>.
+Source code for Rhino is available at  at <a href="http://www.mozilla.org/rhino/">http://www.mozilla.org/rhino</a>.</p>
+
+</body>
+</html>
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about.ini b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about.ini
new file mode 100755
index 0000000..fd7187e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about.ini
@@ -0,0 +1,29 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%aboutText
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=eclipse32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+# optional
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
+
+
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about.mappings b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about.mappings
new file mode 100755
index 0000000..172adbd
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=v20090922-0630
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about.properties b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about.properties
new file mode 100755
index 0000000..cf2895b
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about.properties
@@ -0,0 +1,17 @@
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+#
+# Do not translate any values surrounded by {}
+
+
+aboutText=Mozilla Rhino\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+(c) Copyright Mozilla Software Foundation 2002, 2007.  All rights reserved.\n\
+Visit http://www.eclipse.org/birt
+
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about_files/MPL-1.1.txt b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about_files/MPL-1.1.txt
new file mode 100755
index 0000000..7714141
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about_files/MPL-1.1.txt
@@ -0,0 +1,470 @@
+                          MOZILLA PUBLIC LICENSE
+                                Version 1.1
+
+                              ---------------
+
+1. Definitions.
+
+     1.0.1. "Commercial Use" means distribution or otherwise making the
+     Covered Code available to a third party.
+
+     1.1. "Contributor" means each entity that creates or contributes to
+     the creation of Modifications.
+
+     1.2. "Contributor Version" means the combination of the Original
+     Code, prior Modifications used by a Contributor, and the Modifications
+     made by that particular Contributor.
+
+     1.3. "Covered Code" means the Original Code or Modifications or the
+     combination of the Original Code and Modifications, in each case
+     including portions thereof.
+
+     1.4. "Electronic Distribution Mechanism" means a mechanism generally
+     accepted in the software development community for the electronic
+     transfer of data.
+
+     1.5. "Executable" means Covered Code in any form other than Source
+     Code.
+
+     1.6. "Initial Developer" means the individual or entity identified
+     as the Initial Developer in the Source Code notice required by Exhibit
+     A.
+
+     1.7. "Larger Work" means a work which combines Covered Code or
+     portions thereof with code not governed by the terms of this License.
+
+     1.8. "License" means this document.
+
+     1.8.1. "Licensable" means having the right to grant, to the maximum
+     extent possible, whether at the time of the initial grant or
+     subsequently acquired, any and all of the rights conveyed herein.
+
+     1.9. "Modifications" means any addition to or deletion from the
+     substance or structure of either the Original Code or any previous
+     Modifications. When Covered Code is released as a series of files, a
+     Modification is:
+          A. Any addition to or deletion from the contents of a file
+          containing Original Code or previous Modifications.
+
+          B. Any new file that contains any part of the Original Code or
+          previous Modifications.
+
+     1.10. "Original Code" means Source Code of computer software code
+     which is described in the Source Code notice required by Exhibit A as
+     Original Code, and which, at the time of its release under this
+     License is not already Covered Code governed by this License.
+
+     1.10.1. "Patent Claims" means any patent claim(s), now owned or
+     hereafter acquired, including without limitation,  method, process,
+     and apparatus claims, in any patent Licensable by grantor.
+
+     1.11. "Source Code" means the preferred form of the Covered Code for
+     making modifications to it, including all modules it contains, plus
+     any associated interface definition files, scripts used to control
+     compilation and installation of an Executable, or source code
+     differential comparisons against either the Original Code or another
+     well known, available Covered Code of the Contributor's choice. The
+     Source Code can be in a compressed or archival form, provided the
+     appropriate decompression or de-archiving software is widely available
+     for no charge.
+
+     1.12. "You" (or "Your")  means an individual or a legal entity
+     exercising rights under, and complying with all of the terms of, this
+     License or a future version of this License issued under Section 6.1.
+     For legal entities, "You" includes any entity which controls, is
+     controlled by, or is under common control with You. For purposes of
+     this definition, "control" means (a) the power, direct or indirect,
+     to cause the direction or management of such entity, whether by
+     contract or otherwise, or (b) ownership of more than fifty percent
+     (50%) of the outstanding shares or beneficial ownership of such
+     entity.
+
+2. Source Code License.
+
+     2.1. The Initial Developer Grant.
+     The Initial Developer hereby grants You a world-wide, royalty-free,
+     non-exclusive license, subject to third party intellectual property
+     claims:
+          (a)  under intellectual property rights (other than patent or
+          trademark) Licensable by Initial Developer to use, reproduce,
+          modify, display, perform, sublicense and distribute the Original
+          Code (or portions thereof) with or without Modifications, and/or
+          as part of a Larger Work; and
+
+          (b) under Patents Claims infringed by the making, using or
+          selling of Original Code, to make, have made, use, practice,
+          sell, and offer for sale, and/or otherwise dispose of the
+          Original Code (or portions thereof).
+
+          (c) the licenses granted in this Section 2.1(a) and (b) are
+          effective on the date Initial Developer first distributes
+          Original Code under the terms of this License.
+
+          (d) Notwithstanding Section 2.1(b) above, no patent license is
+          granted: 1) for code that You delete from the Original Code; 2)
+          separate from the Original Code;  or 3) for infringements caused
+          by: i) the modification of the Original Code or ii) the
+          combination of the Original Code with other software or devices.
+
+     2.2. Contributor Grant.
+     Subject to third party intellectual property claims, each Contributor
+     hereby grants You a world-wide, royalty-free, non-exclusive license
+
+          (a)  under intellectual property rights (other than patent or
+          trademark) Licensable by Contributor, to use, reproduce, modify,
+          display, perform, sublicense and distribute the Modifications
+          created by such Contributor (or portions thereof) either on an
+          unmodified basis, with other Modifications, as Covered Code
+          and/or as part of a Larger Work; and
+
+          (b) under Patent Claims infringed by the making, using, or
+          selling of  Modifications made by that Contributor either alone
+          and/or in combination with its Contributor Version (or portions
+          of such combination), to make, use, sell, offer for sale, have
+          made, and/or otherwise dispose of: 1) Modifications made by that
+          Contributor (or portions thereof); and 2) the combination of
+          Modifications made by that Contributor with its Contributor
+          Version (or portions of such combination).
+
+          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+          effective on the date Contributor first makes Commercial Use of
+          the Covered Code.
+
+          (d)    Notwithstanding Section 2.2(b) above, no patent license is
+          granted: 1) for any code that Contributor has deleted from the
+          Contributor Version; 2)  separate from the Contributor Version;
+          3)  for infringements caused by: i) third party modifications of
+          Contributor Version or ii)  the combination of Modifications made
+          by that Contributor with other software  (except as part of the
+          Contributor Version) or other devices; or 4) under Patent Claims
+          infringed by Covered Code in the absence of Modifications made by
+          that Contributor.
+
+3. Distribution Obligations.
+
+     3.1. Application of License.
+     The Modifications which You create or to which You contribute are
+     governed by the terms of this License, including without limitation
+     Section 2.2. The Source Code version of Covered Code may be
+     distributed only under the terms of this License or a future version
+     of this License released under Section 6.1, and You must include a
+     copy of this License with every copy of the Source Code You
+     distribute. You may not offer or impose any terms on any Source Code
+     version that alters or restricts the applicable version of this
+     License or the recipients' rights hereunder. However, You may include
+     an additional document offering the additional rights described in
+     Section 3.5.
+
+     3.2. Availability of Source Code.
+     Any Modification which You create or to which You contribute must be
+     made available in Source Code form under the terms of this License
+     either on the same media as an Executable version or via an accepted
+     Electronic Distribution Mechanism to anyone to whom you made an
+     Executable version available; and if made available via Electronic
+     Distribution Mechanism, must remain available for at least twelve (12)
+     months after the date it initially became available, or at least six
+     (6) months after a subsequent version of that particular Modification
+     has been made available to such recipients. You are responsible for
+     ensuring that the Source Code version remains available even if the
+     Electronic Distribution Mechanism is maintained by a third party.
+
+     3.3. Description of Modifications.
+     You must cause all Covered Code to which You contribute to contain a
+     file documenting the changes You made to create that Covered Code and
+     the date of any change. You must include a prominent statement that
+     the Modification is derived, directly or indirectly, from Original
+     Code provided by the Initial Developer and including the name of the
+     Initial Developer in (a) the Source Code, and (b) in any notice in an
+     Executable version or related documentation in which You describe the
+     origin or ownership of the Covered Code.
+
+     3.4. Intellectual Property Matters
+          (a) Third Party Claims.
+          If Contributor has knowledge that a license under a third party's
+          intellectual property rights is required to exercise the rights
+          granted by such Contributor under Sections 2.1 or 2.2,
+          Contributor must include a text file with the Source Code
+          distribution titled "LEGAL" which describes the claim and the
+          party making the claim in sufficient detail that a recipient will
+          know whom to contact. If Contributor obtains such knowledge after
+          the Modification is made available as described in Section 3.2,
+          Contributor shall promptly modify the LEGAL file in all copies
+          Contributor makes available thereafter and shall take other steps
+          (such as notifying appropriate mailing lists or newsgroups)
+          reasonably calculated to inform those who received the Covered
+          Code that new knowledge has been obtained.
+
+          (b) Contributor APIs.
+          If Contributor's Modifications include an application programming
+          interface and Contributor has knowledge of patent licenses which
+          are reasonably necessary to implement that API, Contributor must
+          also include this information in the LEGAL file.
+
+               (c)    Representations.
+          Contributor represents that, except as disclosed pursuant to
+          Section 3.4(a) above, Contributor believes that Contributor's
+          Modifications are Contributor's original creation(s) and/or
+          Contributor has sufficient rights to grant the rights conveyed by
+          this License.
+
+     3.5. Required Notices.
+     You must duplicate the notice in Exhibit A in each file of the Source
+     Code.  If it is not possible to put such notice in a particular Source
+     Code file due to its structure, then You must include such notice in a
+     location (such as a relevant directory) where a user would be likely
+     to look for such a notice.  If You created one or more Modification(s)
+     You may add your name as a Contributor to the notice described in
+     Exhibit A.  You must also duplicate this License in any documentation
+     for the Source Code where You describe recipients' rights or ownership
+     rights relating to Covered Code.  You may choose to offer, and to
+     charge a fee for, warranty, support, indemnity or liability
+     obligations to one or more recipients of Covered Code. However, You
+     may do so only on Your own behalf, and not on behalf of the Initial
+     Developer or any Contributor. You must make it absolutely clear than
+     any such warranty, support, indemnity or liability obligation is
+     offered by You alone, and You hereby agree to indemnify the Initial
+     Developer and every Contributor for any liability incurred by the
+     Initial Developer or such Contributor as a result of warranty,
+     support, indemnity or liability terms You offer.
+
+     3.6. Distribution of Executable Versions.
+     You may distribute Covered Code in Executable form only if the
+     requirements of Section 3.1-3.5 have been met for that Covered Code,
+     and if You include a notice stating that the Source Code version of
+     the Covered Code is available under the terms of this License,
+     including a description of how and where You have fulfilled the
+     obligations of Section 3.2. The notice must be conspicuously included
+     in any notice in an Executable version, related documentation or
+     collateral in which You describe recipients' rights relating to the
+     Covered Code. You may distribute the Executable version of Covered
+     Code or ownership rights under a license of Your choice, which may
+     contain terms different from this License, provided that You are in
+     compliance with the terms of this License and that the license for the
+     Executable version does not attempt to limit or alter the recipient's
+     rights in the Source Code version from the rights set forth in this
+     License. If You distribute the Executable version under a different
+     license You must make it absolutely clear that any terms which differ
+     from this License are offered by You alone, not by the Initial
+     Developer or any Contributor. You hereby agree to indemnify the
+     Initial Developer and every Contributor for any liability incurred by
+     the Initial Developer or such Contributor as a result of any such
+     terms You offer.
+
+     3.7. Larger Works.
+     You may create a Larger Work by combining Covered Code with other code
+     not governed by the terms of this License and distribute the Larger
+     Work as a single product. In such a case, You must make sure the
+     requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+     If it is impossible for You to comply with any of the terms of this
+     License with respect to some or all of the Covered Code due to
+     statute, judicial order, or regulation then You must: (a) comply with
+     the terms of this License to the maximum extent possible; and (b)
+     describe the limitations and the code they affect. Such description
+     must be included in the LEGAL file described in Section 3.4 and must
+     be included with all distributions of the Source Code. Except to the
+     extent prohibited by statute or regulation, such description must be
+     sufficiently detailed for a recipient of ordinary skill to be able to
+     understand it.
+
+5. Application of this License.
+
+     This License applies to code to which the Initial Developer has
+     attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+     6.1. New Versions.
+     Netscape Communications Corporation ("Netscape") may publish revised
+     and/or new versions of the License from time to time. Each version
+     will be given a distinguishing version number.
+
+     6.2. Effect of New Versions.
+     Once Covered Code has been published under a particular version of the
+     License, You may always continue to use it under the terms of that
+     version. You may also choose to use such Covered Code under the terms
+     of any subsequent version of the License published by Netscape. No one
+     other than Netscape has the right to modify the terms applicable to
+     Covered Code created under this License.
+
+     6.3. Derivative Works.
+     If You create or use a modified version of this License (which you may
+     only do in order to apply it to code which is not already Covered Code
+     governed by this License), You must (a) rename Your license so that
+     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
+     "MPL", "NPL" or any confusingly similar phrase do not appear in your
+     license (except to note that your license differs from this License)
+     and (b) otherwise make it clear that Your version of the license
+     contains terms which differ from the Mozilla Public License and
+     Netscape Public License. (Filling in the name of the Initial
+     Developer, Original Code or Contributor in the notice described in
+     Exhibit A shall not of themselves be deemed to be modifications of
+     this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
+     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
+     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
+     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
+     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
+     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+     8.1.  This License and the rights granted hereunder will terminate
+     automatically if You fail to comply with terms herein and fail to cure
+     such breach within 30 days of becoming aware of the breach. All
+     sublicenses to the Covered Code which are properly granted shall
+     survive any termination of this License. Provisions which, by their
+     nature, must remain in effect beyond the termination of this License
+     shall survive.
+
+     8.2.  If You initiate litigation by asserting a patent infringement
+     claim (excluding declatory judgment actions) against Initial Developer
+     or a Contributor (the Initial Developer or Contributor against whom
+     You file such action is referred to as "Participant")  alleging that:
+
+     (a)  such Participant's Contributor Version directly or indirectly
+     infringes any patent, then any and all rights granted by such
+     Participant to You under Sections 2.1 and/or 2.2 of this License
+     shall, upon 60 days notice from Participant terminate prospectively,
+     unless if within 60 days after receipt of notice You either: (i)
+     agree in writing to pay Participant a mutually agreeable reasonable
+     royalty for Your past and future use of Modifications made by such
+     Participant, or (ii) withdraw Your litigation claim with respect to
+     the Contributor Version against such Participant.  If within 60 days
+     of notice, a reasonable royalty and payment arrangement are not
+     mutually agreed upon in writing by the parties or the litigation claim
+     is not withdrawn, the rights granted by Participant to You under
+     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
+     the 60 day notice period specified above.
+
+     (b)  any software, hardware, or device, other than such Participant's
+     Contributor Version, directly or indirectly infringes any patent, then
+     any rights granted to You by such Participant under Sections 2.1(b)
+     and 2.2(b) are revoked effective as of the date You first made, used,
+     sold, distributed, or had made, Modifications made by that
+     Participant.
+
+     8.3.  If You assert a patent infringement claim against Participant
+     alleging that such Participant's Contributor Version directly or
+     indirectly infringes any patent where such claim is resolved (such as
+     by license or settlement) prior to the initiation of patent
+     infringement litigation, then the reasonable value of the licenses
+     granted by such Participant under Sections 2.1 or 2.2 shall be taken
+     into account in determining the amount or value of any payment or
+     license.
+
+     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
+     all end user license agreements (excluding distributors and resellers)
+     which have been validly granted by You or any distributor hereunder
+     prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
+     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
+     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
+     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
+     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+     The Covered Code is a "commercial item," as that term is defined in
+     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+     software" and "commercial computer software documentation," as such
+     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
+     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
+     all U.S. Government End Users acquire Covered Code with only those
+     rights set forth herein.
+
+11. MISCELLANEOUS.
+
+     This License represents the complete agreement concerning subject
+     matter hereof. If any provision of this License is held to be
+     unenforceable, such provision shall be reformed only to the extent
+     necessary to make it enforceable. This License shall be governed by
+     California law provisions (except to the extent applicable law, if
+     any, provides otherwise), excluding its conflict-of-law provisions.
+     With respect to disputes in which at least one party is a citizen of,
+     or an entity chartered or registered to do business in the United
+     States of America, any litigation relating to this License shall be
+     subject to the jurisdiction of the Federal Courts of the Northern
+     District of California, with venue lying in Santa Clara County,
+     California, with the losing party responsible for costs, including
+     without limitation, court costs and reasonable attorneys' fees and
+     expenses. The application of the United Nations Convention on
+     Contracts for the International Sale of Goods is expressly excluded.
+     Any law or regulation which provides that the language of a contract
+     shall be construed against the drafter shall not apply to this
+     License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+     As between Initial Developer and the Contributors, each party is
+     responsible for claims and damages arising, directly or indirectly,
+     out of its utilization of rights under this License and You agree to
+     work with Initial Developer and Contributors to distribute such
+     responsibility on an equitable basis. Nothing herein is intended or
+     shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+     Initial Developer may designate portions of the Covered Code as
+     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
+     Developer permits you to utilize portions of the Covered Code under
+     Your choice of the NPL or the alternative licenses, if any, specified
+     by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A -Mozilla Public License.
+
+     ``The contents of this file are subject to the Mozilla Public License
+     Version 1.1 (the "License"); you may not use this file except in
+     compliance with the License. You may obtain a copy of the License at
+     http://www.mozilla.org/MPL/
+
+     Software distributed under the License is distributed on an "AS IS"
+     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+     License for the specific language governing rights and limitations
+     under the License.
+
+     The Original Code is ______________________________________.
+
+     The Initial Developer of the Original Code is ________________________.
+     Portions created by ______________________ are Copyright (C) ______
+     _______________________. All Rights Reserved.
+
+     Contributor(s): ______________________________________.
+
+     Alternatively, the contents of this file may be used under the terms
+     of the _____ license (the  "[___] License"), in which case the
+     provisions of [______] License are applicable instead of those
+     above.  If you wish to allow use of your version of this file only
+     under the terms of the [____] License and not to allow others to use
+     your version of this file under the MPL, indicate your decision by
+     deleting  the provisions above and replace  them with the notice and
+     other provisions required by the [___] License.  If you do not delete
+     the provisions above, a recipient may use your version of this file
+     under either the MPL or the [___] License."
+
+     [NOTE: The text of this Exhibit A may differ slightly from the text of
+     the notices in the Source Code files of the Original Code. You should
+     use the text of this Exhibit A rather than the text found in the
+     Original Code Source Code for Your Modifications.]
+
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about_files/NPL-1.1.html b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about_files/NPL-1.1.html
new file mode 100755
index 0000000..fcf0e3b
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/about_files/NPL-1.1.html
@@ -0,0 +1,943 @@
+<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html><head>
+
+
+
+
+
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+
+   <meta name="GENERATOR" content="Mozilla/4.5 [en]C-NSCP  (Win95; U) [Netscape]"><title>Netscape Public License version 1.1</title></head><body alink="#ff0000" bgcolor="#ffffff" link="#0000ee" text="#000000" vlink="#551a8b">
+
+<br><b>AMENDMENTS</b>
+
+<p><b>The Netscape Public License Version 1.1 ("NPL") consists of the Mozilla
+
+Public License Version 1.1 with the following Amendments, including Exhibit
+
+A-Netscape Public License.&nbsp; Files identified with "Exhibit A-Netscape
+
+Public License" are governed by the Netscape Public License Version 1.1.</b>
+
+</p><p><b>Additional Terms applicable to the Netscape Public License.</b>
+
+</p><ul><b>I. Effect.</b>
+
+<br>These additional terms described in this Netscape Public <nobr>License
+
+--</nobr> Amendments shall apply to the Mozilla Communicator client code
+
+and to all Covered Code under this License.
+
+<p><b>II. </b>''<b>Netscape's Branded Code''</b> means Covered Code that
+
+Netscape distributes and/or permits others to distribute under one or more
+
+trademark(s) which are controlled by Netscape but which are not licensed
+
+for use under this License.
+
+</p><p><b>III. Netscape and logo.</b>
+
+<br>This License does not grant any rights to use the trademarks "Netscape'',
+
+the "Netscape N and horizon'' logo or the "Netscape lighthouse" logo, "Netcenter",
+
+"Gecko", "Java" or "JavaScript", "Smart Browsing" even if such marks are
+
+included in the Original Code or Modifications.
+
+</p><p><b>IV. Inability to Comply Due to Contractual Obligation.</b>
+
+<br>Prior to licensing the Original Code under this License, Netscape has
+
+licensed third party code for use in Netscape's Branded Code. To the extent
+
+that Netscape is limited contractually from making such third party code
+
+available under this License, Netscape may choose to reintegrate such code
+
+into Covered Code without being required to distribute such code in Source
+
+Code form, even if such code would otherwise be considered ''Modifications''
+
+under this License.
+
+</p><p><b>V. Use of Modifications and Covered Code by Initial Developer.</b>
+
+</p><ul><b>V.1. In General.</b>
+
+<br>The obligations of Section <b>3</b> apply to Netscape, except to the
+
+extent specified in this Amendment, Section <b>V.2</b> and <b>V.3</b>.
+
+<p><b>V.2. Other Products.</b>
+
+<br>Netscape may include Covered Code in products other than the Netscape's
+
+Branded Code which are released by Netscape during the two (2) years following
+
+the release date of the Original Code, without such additional products
+
+becoming subject to the terms of this License, and may license such additional
+
+products on different terms from those contained in this License.
+
+</p><p><b>V.3. Alternative Licensing.</b>
+
+<br>Netscape may license the Source Code of Netscape's Branded Code, including
+
+Modifications incorporated therein, without such Netscape Branded Code
+
+becoming subject to the terms of this License, and may license such Netscape
+
+Branded Code on different terms from those contained in this License.
+
+<br>&nbsp;</p></ul>
+
+<b>VI. Litigation.</b>
+
+<br>Notwithstanding the limitations of Section 11 above, the provisions
+
+regarding litigation in Section 11(a), (b) and (c) of the License shall
+
+apply to all disputes relating to this License.</ul>
+
+
+
+<p><br><b>EXHIBIT A-Netscape Public License.</b>
+
+</p><ul>&nbsp;
+
+<br>''The contents of this file are subject to the Netscape Public License
+
+Version 1.1 (the "License"); you may not use this file except in compliance
+
+with the License. You may obtain a copy of the License at http://www.mozilla.org/NPL/
+
+<p>Software distributed under the License is distributed on an "AS IS"
+
+basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+
+License for the specific language governing rights and limitations under
+
+the License.
+
+</p><p>The Original Code is Mozilla Communicator client code, released March
+
+31, 1998.
+
+</p><p>The Initial Developer of the Original Code is Netscape Communications
+
+Corporation. Portions created by Netscape are Copyright (C) 1998-1999 Netscape
+
+Communications Corporation. All Rights Reserved.
+
+</p><p>Contributor(s): ______________________________________.</p></ul>
+
+
+
+<ul>&nbsp;
+
+<br>Alternatively, the contents of this file may be used under the terms
+
+of the _____ license (the&nbsp; &#8220;[___] License&#8221;), in which case the provisions
+
+of [______] License are applicable&nbsp; instead of those above.&nbsp;
+
+If you wish to allow use of your version of this file only under the terms
+
+of the [____] License and not to allow others to use your version of this
+
+file under the NPL, indicate your decision by deleting&nbsp; the provisions
+
+above and replace&nbsp; them with the notice and other provisions required
+
+by the [___] License.&nbsp; If you do not delete the provisions above,
+
+a recipient may use your version of this file under either the NPL or the
+
+[___] License."</ul>
+
+
+
+<hr width="100%">
+
+<center><b><font size="+2">MOZILLA PUBLIC LICENSE</font></b>
+
+<br><b>Version 1.1</b>
+
+<p>
+
+</p><hr width="20%"></center>
+
+
+
+<p><b>1. Definitions.</b>
+
+</p><ul><b>1.0.1. "Commercial Use" </b>means distribution or otherwise making
+
+the Covered Code available to a third party.
+
+<p><b>1.1. ''Contributor''</b> means each entity that creates or contributes
+
+to the creation of Modifications.
+
+</p><p><b>1.2. ''Contributor Version''</b> means the combination of the Original
+
+Code, prior Modifications used by a Contributor, and the Modifications
+
+made by that particular Contributor.
+
+</p><p><b>1.3. ''Covered Code''</b> means the Original Code or Modifications
+
+or the combination of the Original Code and Modifications, in each case
+
+including portions thereof<b>.</b>
+
+</p><p><b>1.4. ''Electronic Distribution Mechanism''</b> means a mechanism
+
+generally accepted in the software development community for the electronic
+
+transfer of data.
+
+</p><p><b>1.5. ''Executable''</b> means Covered Code in any form other than
+
+Source Code.
+
+</p><p><b>1.6. ''Initial Developer''</b> means the individual or entity identified
+
+as the Initial Developer in the Source Code notice required by <b>Exhibit
+
+A</b>.
+
+</p><p><b>1.7. ''Larger Work''</b> means a work which combines Covered Code
+
+or portions thereof with code not governed by the terms of this License.
+
+</p><p><b>1.8. ''License''</b> means this document.
+
+</p><p><b>1.8.1. "Licensable"</b> means having the right to grant, to the maximum
+
+extent possible, whether at the time of the initial grant or subsequently
+
+acquired, any and all of the rights conveyed herein.
+
+</p><p><b>1.9. ''Modifications''</b> means any addition to or deletion from
+
+the substance or structure of either the Original Code or any previous
+
+Modifications. When Covered Code is released as a series of files, a Modification
+
+is:
+
+</p><ul><b>A.</b> Any addition to or deletion from the contents of a file containing
+
+Original Code or previous Modifications.
+
+<p><b>B.</b> Any new file that contains any part of the Original Code or
+
+previous Modifications.
+
+<br>&nbsp;</p></ul>
+
+<b>1.10. ''Original Code''</b> means Source Code of computer software code
+
+which is described in the Source Code notice required by <b>Exhibit A</b>
+
+as Original Code, and which, at the time of its release under this License
+
+is not already Covered Code governed by this License.
+
+<p><b>1.10.1. "Patent Claims"</b> means any patent claim(s), now owned
+
+or hereafter acquired, including without limitation,&nbsp; method, process,
+
+and apparatus claims, in any patent Licensable by grantor.
+
+</p><p><b>1.11. ''Source Code''</b> means the preferred form of the Covered
+
+Code for making modifications to it, including all modules it contains,
+
+plus any associated interface definition files, scripts used to control
+
+compilation and installation of an Executable, or source code differential
+
+comparisons against either the Original Code or another well known, available
+
+Covered Code of the Contributor's choice. The Source Code can be in a compressed
+
+or archival form, provided the appropriate decompression or de-archiving
+
+software is widely available for no charge.
+
+</p><p><b>1.12. "You'' (or "Your")&nbsp;</b> means an individual or a legal
+
+entity exercising rights under, and complying with all of the terms of,
+
+this License or a future version of this License issued under Section 6.1.
+
+For legal entities, "You'' includes any entity which controls, is controlled
+
+by, or is under common control with You. For purposes of this definition,
+
+"control'' means (a) the power, direct or indirect, to cause the direction
+
+or management of such entity, whether by contract or otherwise, or (b)
+
+ownership of more than fifty percent (50%) of the outstanding shares or
+
+beneficial ownership of such entity.</p></ul>
+
+<b>2. Source Code License.</b>
+
+<ul><b>2.1. The Initial Developer Grant.</b>
+
+<br>The Initial Developer hereby grants You a world-wide, royalty-free,
+
+non-exclusive license, subject to third party intellectual property claims:
+
+<ul><b>(a)</b>&nbsp;<b> </b>under intellectual property rights (other than
+
+patent or trademark) Licensable by Initial Developer to use, reproduce,
+
+modify, display, perform, sublicense and distribute the Original Code (or
+
+portions thereof) with or without Modifications, and/or as part of a Larger
+
+Work; and
+
+<p><b>(b)</b> under Patents Claims infringed by the making, using or selling
+
+of Original Code, to make, have made, use, practice, sell, and offer for
+
+sale, and/or otherwise dispose of the Original Code (or portions thereof).
+
+</p><ul>
+
+<ul>&nbsp;</ul>
+
+</ul>
+
+<b>(c) </b>the licenses granted in this Section 2.1(a) and (b) are effective
+
+on the date Initial Developer first distributes Original Code under the
+
+terms of this License.
+
+<p><b>(d) </b>Notwithstanding Section 2.1(b) above, no patent license is
+
+granted: 1) for code that You delete from the Original Code; 2) separate
+
+from the Original Code;&nbsp; or 3) for infringements caused by: i) the
+
+modification of the Original Code or ii) the combination of the Original
+
+Code with other software or devices.
+
+<br>&nbsp;</p></ul>
+
+<b>2.2. Contributor Grant.</b>
+
+<br>Subject to third party intellectual property claims, each Contributor
+
+hereby grants You a world-wide, royalty-free, non-exclusive license
+
+<ul>&nbsp;
+
+<br><b>(a)</b>&nbsp;<b> </b>under intellectual property rights (other than
+
+patent or trademark) Licensable by Contributor, to use, reproduce, modify,
+
+display, perform, sublicense and distribute the Modifications created by
+
+such Contributor (or portions thereof) either on an unmodified basis, with
+
+other Modifications, as Covered Code and/or as part of a Larger Work; and
+
+<p><b>(b)</b> under Patent Claims infringed by the making, using, or selling
+
+of&nbsp; Modifications made by that Contributor either alone and/or in<font color="#000000">
+
+combination with its Contributor Version (or portions of such combination),
+
+to make, use, sell, offer for sale, have made, and/or otherwise dispose
+
+of: 1) Modifications made by that Contributor (or portions thereof); and
+
+2) the combination of&nbsp; Modifications made by that Contributor with
+
+its Contributor Version (or portions of such combination).</font>
+
+</p><p><b>(c) </b>the licenses granted in Sections 2.2(a) and 2.2(b) are effective
+
+on the date Contributor first makes Commercial Use of the Covered Code.
+
+</p><p><b>(d)&nbsp;</b>&nbsp;&nbsp; Notwithstanding Section 2.2(b) above, no
+
+patent license is granted: 1) for any code that Contributor has deleted
+
+from the Contributor Version; 2)&nbsp; separate from the Contributor Version;&nbsp;
+
+3)&nbsp; for infringements caused by: i) third party modifications of Contributor
+
+Version or ii)&nbsp; the combination of Modifications made by that Contributor
+
+with other software&nbsp; (except as part of the Contributor Version) or
+
+other devices; or 4) under Patent Claims infringed by Covered Code in the
+
+absence of Modifications made by that Contributor.</p></ul>
+
+</ul>
+
+
+
+<p><br><b>3. Distribution Obligations.</b>
+
+</p><ul><b>3.1. Application of License.</b>
+
+<br>The Modifications which You create or to which You contribute are governed
+
+by the terms of this License, including without limitation Section <b>2.2</b>.
+
+The Source Code version of Covered Code may be distributed only under the
+
+terms of this License or a future version of this License released under
+
+Section <b>6.1</b>, and You must include a copy of this License with every
+
+copy of the Source Code You distribute. You may not offer or impose any
+
+terms on any Source Code version that alters or restricts the applicable
+
+version of this License or the recipients' rights hereunder. However, You
+
+may include an additional document offering the additional rights described
+
+in Section <b>3.5</b>.
+
+<p><b>3.2. Availability of Source Code.</b>
+
+<br>Any Modification which You create or to which You contribute must be
+
+made available in Source Code form under the terms of this License either
+
+on the same media as an Executable version or via an accepted Electronic
+
+Distribution Mechanism to anyone to whom you made an Executable version
+
+available; and if made available via Electronic Distribution Mechanism,
+
+must remain available for at least twelve (12) months after the date it
+
+initially became available, or at least six (6) months after a subsequent
+
+version of that particular Modification has been made available to such
+
+recipients. You are responsible for ensuring that the Source Code version
+
+remains available even if the Electronic Distribution Mechanism is maintained
+
+by a third party.
+
+</p><p><b>3.3. Description of Modifications.</b>
+
+<br>You must cause all Covered Code to which You contribute to contain
+
+a file documenting the changes You made to create that Covered Code and
+
+the date of any change. You must include a prominent statement that the
+
+Modification is derived, directly or indirectly, from Original Code provided
+
+by the Initial Developer and including the name of the Initial Developer
+
+in (a) the Source Code, and (b) in any notice in an Executable version
+
+or related documentation in which You describe the origin or ownership
+
+of the Covered Code.
+
+</p><p><b>3.4. Intellectual Property Matters</b>
+
+</p><ul><b>(a) Third Party Claims</b>.
+
+<br>If Contributor has knowledge that a license under a third party's intellectual
+
+property rights is required to exercise the rights granted by such Contributor
+
+under Sections 2.1 or 2.2, Contributor must include a text file with the
+
+Source Code distribution titled "LEGAL'' which describes the claim and
+
+the party making the claim in sufficient detail that a recipient will know
+
+whom to contact. If Contributor obtains such knowledge after the Modification
+
+is made available as described in Section 3.2, Contributor shall promptly
+
+modify the LEGAL file in all copies Contributor makes available thereafter
+
+and shall take other steps (such as notifying appropriate mailing lists
+
+or newsgroups) reasonably calculated to inform those who received the Covered
+
+Code that new knowledge has been obtained.
+
+<p><b>(b) Contributor APIs</b>.
+
+<br>If Contributor's Modifications include an application programming interface
+
+and Contributor has knowledge of patent licenses which are reasonably necessary
+
+to implement that API, Contributor must also include this information in
+
+the LEGAL file.
+
+<br>&nbsp;</p></ul>
+
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>(c)&nbsp;&nbsp;&nbsp;
+
+Representations.</b>
+
+<ul>Contributor represents that, except as disclosed pursuant to Section
+
+3.4(a) above, Contributor believes that Contributor's Modifications are
+
+Contributor's original creation(s) and/or Contributor has sufficient rights
+
+to grant the rights conveyed by this License.</ul>
+
+
+
+<p><br><b>3.5. Required Notices.</b>
+
+<br>You must duplicate the notice in <b>Exhibit A</b> in each file of the
+
+Source Code.&nbsp; If it is not possible to put such notice in a particular
+
+Source Code file due to its structure, then You must include such notice
+
+in a location (such as a relevant directory) where a user would be likely
+
+to look for such a notice.&nbsp; If You created one or more Modification(s)
+
+You may add your name as a Contributor to the notice described in <b>Exhibit
+
+A</b>.&nbsp; You must also duplicate this License in any documentation
+
+for the Source Code where You describe recipients' rights or ownership
+
+rights relating to Covered Code.&nbsp; You may choose to offer, and to
+
+charge a fee for, warranty, support, indemnity or liability obligations
+
+to one or more recipients of Covered Code. However, You may do so only
+
+on Your own behalf, and not on behalf of the Initial Developer or any Contributor.
+
+You must make it absolutely clear than any such warranty, support, indemnity
+
+or liability obligation is offered by You alone, and You hereby agree to
+
+indemnify the Initial Developer and every Contributor for any liability
+
+incurred by the Initial Developer or such Contributor as a result of warranty,
+
+support, indemnity or liability terms You offer.
+
+</p><p><b>3.6. Distribution of Executable Versions.</b>
+
+<br>You may distribute Covered Code in Executable form only if the requirements
+
+of Section <b>3.1-3.5</b> have been met for that Covered Code, and if You
+
+include a notice stating that the Source Code version of the Covered Code
+
+is available under the terms of this License, including a description of
+
+how and where You have fulfilled the obligations of Section <b>3.2</b>.
+
+The notice must be conspicuously included in any notice in an Executable
+
+version, related documentation or collateral in which You describe recipients'
+
+rights relating to the Covered Code. You may distribute the Executable
+
+version of Covered Code or ownership rights under a license of Your choice,
+
+which may contain terms different from this License, provided that You
+
+are in compliance with the terms of this License and that the license for
+
+the Executable version does not attempt to limit or alter the recipient's
+
+rights in the Source Code version from the rights set forth in this License.
+
+If You distribute the Executable version under a different license You
+
+must make it absolutely clear that any terms which differ from this License
+
+are offered by You alone, not by the Initial Developer or any Contributor.
+
+You hereby agree to indemnify the Initial Developer and every Contributor
+
+for any liability incurred by the Initial Developer or such Contributor
+
+as a result of any such terms You offer.
+
+</p><p><b>3.7. Larger Works.</b>
+
+<br>You may create a Larger Work by combining Covered Code with other code
+
+not governed by the terms of this License and distribute the Larger Work
+
+as a single product. In such a case, You must make sure the requirements
+
+of this License are fulfilled for the Covered Code.</p></ul>
+
+<b>4. Inability to Comply Due to Statute or Regulation.</b>
+
+<ul>If it is impossible for You to comply with any of the terms of this
+
+License with respect to some or all of the Covered Code due to statute,
+
+judicial order, or regulation then You must: (a) comply with the terms
+
+of this License to the maximum extent possible; and (b) describe the limitations
+
+and the code they affect. Such description must be included in the LEGAL
+
+file described in Section <b>3.4</b> and must be included with all distributions
+
+of the Source Code. Except to the extent prohibited by statute or regulation,
+
+such description must be sufficiently detailed for a recipient of ordinary
+
+skill to be able to understand it.</ul>
+
+<b>5. Application of this License.</b>
+
+<ul>This License applies to code to which the Initial Developer has attached
+
+the notice in <b>Exhibit A</b> and to related Covered Code.</ul>
+
+<b>6. Versions of the License.</b>
+
+<ul><b>6.1. New Versions</b>.
+
+<br>Netscape Communications Corporation (''Netscape'') may publish revised
+
+and/or new versions of the License from time to time. Each version will
+
+be given a distinguishing version number.
+
+<p><b>6.2. Effect of New Versions</b>.
+
+<br>Once Covered Code has been published under a particular version of
+
+the License, You may always continue to use it under the terms of that
+
+version. You may also choose to use such Covered Code under the terms of
+
+any subsequent version of the License published by Netscape. No one other
+
+than Netscape has the right to modify the terms applicable to Covered Code
+
+created under this License.
+
+</p><p><b>6.3. Derivative Works</b>.
+
+<br>If You create or use a modified version of this License (which you
+
+may only do in order to apply it to code which is not already Covered Code
+
+governed by this License), You must (a) rename Your license so that the
+
+phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'', ''Netscape'', "MPL", ''NPL''
+
+or any confusingly similar phrase do not appear in your license (except
+
+to note that your license differs from this License) and (b) otherwise
+
+make it clear that Your version of the license contains terms which differ
+
+from the Mozilla Public License and Netscape Public License. (Filling in
+
+the name of the Initial Developer, Original Code or Contributor in the
+
+notice described in <b>Exhibit A</b> shall not of themselves be deemed
+
+to be modifications of this License.)</p></ul>
+
+<b>7. DISCLAIMER OF WARRANTY.</b>
+
+<ul>COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, WITHOUT
+
+WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION,
+
+WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT
+
+FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY
+
+AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE
+
+PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER
+
+CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.
+
+NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.</ul>
+
+<b>8. TERMINATION.</b>
+
+<ul><b>8.1.&nbsp; </b>This License and the rights granted hereunder will
+
+terminate automatically if You fail to comply with terms herein and fail
+
+to cure such breach within 30 days of becoming aware of the breach. All
+
+sublicenses to the Covered Code which are properly granted shall survive
+
+any termination of this License. Provisions which, by their nature, must
+
+remain in effect beyond the termination of this License shall survive.
+
+<p><b>8.2.&nbsp; </b>If You initiate litigation by asserting a patent infringement
+
+claim (excluding declatory judgment actions) against Initial Developer
+
+or a Contributor (the Initial Developer or Contributor against whom You
+
+file such action is referred to as "Participant")&nbsp; alleging that:
+
+</p><p><b>(a)&nbsp; </b>such Participant's Contributor Version directly or
+
+indirectly infringes any patent, then any and all rights granted by such
+
+Participant to You under Sections 2.1 and/or 2.2 of this License shall,
+
+upon 60 days notice from Participant terminate prospectively, unless if
+
+within 60 days after receipt of notice You either: (i)&nbsp; agree in writing
+
+to pay Participant a mutually agreeable reasonable royalty for Your past
+
+and future use of Modifications made by such Participant, or (ii) withdraw
+
+Your litigation claim with respect to the Contributor Version against such
+
+Participant.&nbsp; If within 60 days of notice, a reasonable royalty and
+
+payment arrangement are not mutually agreed upon in writing by the parties
+
+or the litigation claim is not withdrawn, the rights granted by Participant
+
+to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration
+
+of the 60 day notice period specified above.
+
+</p><p><b>(b)</b>&nbsp; any software, hardware, or device, other than such
+
+Participant's Contributor Version, directly or indirectly infringes any
+
+patent, then any rights granted to You by such Participant under Sections
+
+2.1(b) and 2.2(b) are revoked effective as of the date You first made,
+
+used, sold, distributed, or had made, Modifications made by that Participant.
+
+</p><p><b>8.3.&nbsp; </b>If You assert a patent infringement claim against
+
+Participant alleging that such Participant's Contributor Version directly
+
+or indirectly infringes any patent where such claim is resolved (such as
+
+by license or settlement) prior to the initiation of patent infringement
+
+litigation, then the reasonable value of the licenses granted by such Participant
+
+under Sections 2.1 or 2.2 shall be taken into account in determining the
+
+amount or value of any payment or license.
+
+</p><p><b>8.4.</b>&nbsp; In the event of termination under Sections 8.1 or
+
+8.2 above,&nbsp; all end user license agreements (excluding distributors
+
+and resellers) which have been validly granted by You or any distributor
+
+hereunder prior to termination shall survive termination.</p></ul>
+
+<b>9. LIMITATION OF LIABILITY.</b>
+
+<ul>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING
+
+NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER,
+
+ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER
+
+OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL,
+
+INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+
+LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE
+
+OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN
+
+IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR
+
+PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE
+
+LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
+
+OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION
+
+AND LIMITATION MAY NOT APPLY TO YOU.</ul>
+
+<b>10. U.S. GOVERNMENT END USERS.</b>
+
+<ul>The Covered Code is a ''commercial item,'' as that term is defined
+
+in 48 C.F.R. 2.101 (Oct. 1995), consisting of ''commercial computer software''
+
+and ''commercial computer software documentation,'' as such terms are used
+
+in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and
+
+48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government
+
+End Users acquire Covered Code with only those rights set forth herein.</ul>
+
+<b>11. MISCELLANEOUS.</b>
+
+<ul>This License represents the complete agreement concerning subject matter
+
+hereof. If any provision of this License is held to be unenforceable, such
+
+provision shall be reformed only to the extent necessary to make it enforceable.
+
+This License shall be governed by California law provisions (except to
+
+the extent applicable law, if any, provides otherwise), excluding its conflict-of-law
+
+provisions. With respect to disputes in which at least one party is a citizen
+
+of, or an entity chartered or registered to do business in the United States
+
+of America, any litigation relating to this License shall be subject to
+
+the jurisdiction of the Federal Courts of the Northern District of California,
+
+with venue lying in Santa Clara County, California, with the losing party
+
+responsible for costs, including without limitation, court costs and reasonable
+
+attorneys' fees and expenses. The application of the United Nations Convention
+
+on Contracts for the International Sale of Goods is expressly excluded.
+
+Any law or regulation which provides that the language of a contract shall
+
+be construed against the drafter shall not apply to this License.</ul>
+
+<b>12. RESPONSIBILITY FOR CLAIMS.</b>
+
+<ul>As between Initial Developer and the Contributors, each party is responsible
+
+for claims and damages arising, directly or indirectly, out of its utilization
+
+of rights under this License and You agree to work with Initial Developer
+
+and Contributors to distribute such responsibility on an equitable basis.
+
+Nothing herein is intended or shall be deemed to constitute any admission
+
+of liability.</ul>
+
+<b>13. MULTIPLE-LICENSED CODE.</b>
+
+<ul>Initial Developer may designate portions of the Covered Code as &#8220;Multiple-Licensed&#8221;.&nbsp;
+
+&#8220;Multiple-Licensed&#8221; means that the Initial Developer permits you to utilize
+
+portions of the Covered Code under Your choice of the NPL or the alternative
+
+licenses, if any, specified by the Initial Developer in the file described
+
+in Exhibit A.</ul>
+
+
+
+<p><br><b>EXHIBIT A -Mozilla Public License.</b>
+
+</p><ul>``The contents of this file are subject to the Mozilla Public License
+
+Version 1.1 (the "License"); you may not use this file except in compliance
+
+with the License. You may obtain a copy of the License at
+
+<br>http://www.mozilla.org/MPL/
+
+<p>Software distributed under the License is distributed on an "AS IS"
+
+basis, WITHOUT WARRANTY OF
+
+<br>ANY KIND, either express or implied. See the License for the specific
+
+language governing rights and
+
+<br>limitations under the License.
+
+</p><p>The Original Code is ______________________________________.
+
+</p><p>The Initial Developer of the Original Code is ________________________.
+
+Portions created by
+
+<br>&nbsp;______________________ are Copyright (C) ______ _______________________.
+
+All Rights
+
+<br>Reserved.
+
+</p><p>Contributor(s): ______________________________________.
+
+</p><p>Alternatively, the contents of this file may be used under the terms
+
+of the _____ license (the&nbsp; &#8220;[___] License&#8221;), in which case the provisions
+
+of [______] License are applicable&nbsp; instead of those above.&nbsp;
+
+If you wish to allow use of your version of this file only under the terms
+
+of the [____] License and not to allow others to use your version of this
+
+file under the MPL, indicate your decision by deleting&nbsp; the provisions
+
+above and replace&nbsp; them with the notice and other provisions required
+
+by the [___] License.&nbsp; If you do not delete the provisions above,
+
+a recipient may use your version of this file under either the MPL or the
+
+[___] License."
+
+</p><p>[NOTE: The text of this Exhibit A may differ slightly from the text
+
+of the notices in the Source Code files of the Original Code. You should
+
+use the text of this Exhibit A rather than the text found in the Original
+
+Code Source Code for Your Modifications.]
+
+</p><p>
+
+
+
+
+</p></ul></body></html>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/eclipse32.png b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/eclipse32.png
new file mode 100755
index 0000000..568fac1
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/eclipse32.png
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/lib/js.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/lib/js.jar
new file mode 100755
index 0000000..14772d2
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.mozilla.rhino_1.7.1.v20090521/lib/js.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.css.sac_1.3.0.v200805290154.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.css.sac_1.3.0.v200805290154.jar
new file mode 100755
index 0000000..e5e9236
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.css.sac_1.3.0.v200805290154.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.dom.smil_1.0.0.v200806040011.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.dom.smil_1.0.0.v200806040011.jar
new file mode 100755
index 0000000..b73b4a5
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.dom.smil_1.0.0.v200806040011.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.dom.svg_1.1.0.v200806040011.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.dom.svg_1.1.0.v200806040011.jar
new file mode 100755
index 0000000..81859c8
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.dom.svg_1.1.0.v200806040011.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/META-INF/ECLIPSEF.RSA b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/META-INF/ECLIPSEF.RSA
new file mode 100755
index 0000000..3d4445b
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/META-INF/ECLIPSEF.RSA
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/META-INF/ECLIPSEF.SF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/META-INF/ECLIPSEF.SF
new file mode 100755
index 0000000..5a5864c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/META-INF/ECLIPSEF.SF
@@ -0,0 +1,32 @@
+Signature-Version: 1.0

+SHA1-Digest-Manifest: z9XoobLO5lnBEDo4N5jleAmcqDQ=

+Created-By: 1.6.0 (IBM Corporation)

+SHA1-Digest-Manifest-Main-Attributes: Or17dfw5soOiyXxXXTX3ilhPpVk=

+

+Name: eclipse32.png

+SHA1-Digest: Yg2IAx+o7H2tbLyk4cwOAV+K+R4=

+

+Name: about.ini

+SHA1-Digest: INNEGu5sbk4YgQndV+vTc61w/Bk=

+

+Name: lib/flute.jar

+SHA1-Digest: qqLi322F+Dc2gG9RZQPGC+6IuII=

+

+Name: about.properties

+SHA1-Digest: kiJRkBBScbAmTxPlEGpdV9oDssI=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: SAqY+5ITAL0mkdYeijlSRhyIaZk=

+

+Name: about.mappings

+SHA1-Digest: NpOqGmwrfWeloOYEZ4bIGujex88=

+

+Name: about_files/copyright-software-20021231.htm

+SHA1-Digest: xWvYPY1SbGex3E6FQ/sBycaIETg=

+

+Name: about_files/copyright-software-20021231_files/base.css

+SHA1-Digest: 7VRP0G/l6xLPTCiKntE3CIPIFp8=

+

+Name: about.html

+SHA1-Digest: ECRw6FX4NEBb9fKKMci7sbprQKM=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/META-INF/MANIFEST.MF b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..78764de
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/META-INF/MANIFEST.MF
@@ -0,0 +1,40 @@
+Manifest-Version: 1.0

+Bundle-ClassPath: lib/flute.jar

+Bundle-Vendor: Eclipse.org

+Bundle-Localization: plugin

+Bundle-RequiredExecutionEnvironment: J2SE-1.4

+Bundle-Name: W3C Sac

+Bundle-SymbolicName: org.w3c.sac

+Require-Bundle: org.w3c.css.sac;bundle-version="[1.3.0,2.0.0)"

+Bundle-Version: 1.3.0.v20070710

+Export-Package: org.w3c.flute.parser,org.w3c.flute.parser.selectors,or

+ g.w3c.flute.util

+Bundle-ManifestVersion: 2

+

+Name: eclipse32.png

+SHA1-Digest: eCk/A3/COXL3S6qAVDOSrlsqmLw=

+

+Name: lib/flute.jar

+SHA1-Digest: /ZinnWydALYm9x/yrZ13izUwvjE=

+

+Name: about.ini

+SHA1-Digest: 2w8BfdBzQbbWHJNbazxzu9YMYwo=

+

+Name: META-INF/eclipse.inf

+SHA1-Digest: KyT9FF7C7t86NoBoa2kZT3ZJBfw=

+

+Name: about.properties

+SHA1-Digest: b9o9hf3/JNJGJ6WjGuGWHR/pBvY=

+

+Name: about.mappings

+SHA1-Digest: 4fkRPbakxJw/l7UVJfFDuPncInU=

+

+Name: about_files/copyright-software-20021231_files/base.css

+SHA1-Digest: Ku5eFn8rDgc1RsAHfYVI3aLl8Ao=

+

+Name: about_files/copyright-software-20021231.htm

+SHA1-Digest: FHUquFwe8TInXZXB0NBtwibDhAk=

+

+Name: about.html

+SHA1-Digest: v230ZZWP0nNv6WRdcVcQGfMp3I0=

+

diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/META-INF/eclipse.inf b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/META-INF/eclipse.inf
new file mode 100755
index 0000000..7864d3c
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/META-INF/eclipse.inf
@@ -0,0 +1,3 @@
+#Processed using Jarprocessor
+pack200.args = -E4
+pack200.conditioned = true
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about.html b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about.html
new file mode 100755
index 0000000..98aac39
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 28, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+<h3>Third Party Content</h3>
+
+<p>The Content includes items that have been sourced from third parties as set out below. If you 
+did not receive this Content directly from the Eclipse Foundation, the following is provided 
+for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
+terms and conditions of use.</p>
+
+<h4>Flute 1.3</h4>
+
+<p>The plug-in is accompanied by software developed by W3C at <a href="http://www.w3.org/Style/CSS/SAC/">http://www.w3.org/Style/CSS/SAC/</a>.
+Flute 1.3 (&quot;Flute&quot;) is included with the plug-in without modification in lib/flute.jar.
+Your use of Flute is subject to the terms and conditions of the W3C Software License (&quot;W3CSL&quot;).
+A copy of the W3CSL can be found in <a href="about_files/copyright-software-20021231.htm">about_files/copyright-software-20021231.htm</a>
+and is also available at <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231</a>.
+Source code for Flute is available at <a href="http://www.w3.org/Style/CSS/SAC/">http://www.w3.org/Style/CSS/SAC/</a>.</p>
+
+</body>
+</html>
+
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about.ini b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about.ini
new file mode 100755
index 0000000..fd7187e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about.ini
@@ -0,0 +1,29 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%aboutText
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=eclipse32.png
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+# optional
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
+
+
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about.mappings b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about.mappings
new file mode 100755
index 0000000..172adbd
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=v20090922-0630
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about.properties b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about.properties
new file mode 100755
index 0000000..a14209d
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about.properties
@@ -0,0 +1,17 @@
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+#
+# Do not translate any values surrounded by {}
+
+
+aboutText=W3C Sac\n\
+\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+(c) Copyright W3C 2000, 2007.  All rights reserved.\n\
+Visit http://www.eclipse.org/birt
+
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about_files/copyright-software-20021231.htm b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about_files/copyright-software-20021231.htm
new file mode 100755
index 0000000..67d43c4
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about_files/copyright-software-20021231.htm
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><title>W3C Software License</title>
+
+
+
+  
+  <link rel="stylesheet" type="text/css" href="copyright-software-20021231_files/base.css">
+  <style type="text/css">
+ <!--
+h3#version { margin-top: -0.8em;}  
+-->
+
+
+
+
+
+
+
+
+
+  </style></head><body bgcolor="#ffffff" text="#000000">
+<h1>W3C<sup>®</sup> SOFTWARE NOTICE AND LICENSE</h1>
+
+<h3 id="version"><a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231</a></h3>
+
+<p>This work (and included software, documentation such as READMEs, or other
+related items) is being provided by the copyright holders under the following
+license. By obtaining, using and/or copying this work, you (the licensee)
+agree that you have read, understood, and will comply with the following
+terms and conditions.</p>
+
+<p>Permission to copy, modify, and distribute this software and its
+documentation, with or without modification,&nbsp;for any purpose and without
+fee or royalty is hereby granted, provided that you include the following on
+ALL copies of the software and documentation or portions thereof, including
+modifications:</p>
+<ol>
+  <li>The full text of this NOTICE in a location viewable to users of the
+    redistributed or derivative work.</li>
+  <li>Any pre-existing intellectual property disclaimers, notices, or terms
+    and conditions. If none exist, the <a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231.html">W3C Software Short
+    Notice</a> should be included (hypertext is preferred, text is permitted)
+    within the body of any redistributed or derivative code.</li>
+  <li>Notice of any changes or modifications to the files, including the date
+    changes were made. (We recommend you provide URIs to the location from
+    which the code is derived.)</li>
+</ol>
+
+<p>THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
+MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
+PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE
+ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.</p>
+
+<p>COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
+DOCUMENTATION.</p>
+
+<p>The name and trademarks of copyright holders may NOT be used in
+advertising or publicity pertaining to the software without specific, written
+prior permission. Title to copyright in this software and any associated
+documentation will at all times remain with copyright holders.</p>
+
+<p></p>
+
+<p>____________________________________</p>
+
+<p>This formulation of W3C's notice and license became active on December 31
+2002. This version removes the copyright ownership notice such that this
+license can be used with materials other than those owned by the W3C,
+reflects that ERCIM is now a host of the W3C, includes references to this
+specific dated version of the license, and removes the ambiguous grant of
+"use". Otherwise, this version is the same as the <a href="http://www.w3.org/Consortium/Legal/copyright-software-19980720">previous
+version</a> and is written so as to preserve the <a href="http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses">Free
+Software Foundation's assessment of GPL compatibility</a> and <a href="http://www.opensource.org/licenses/W3C.php">OSI's certification</a>
+under the <a href="http://www.opensource.org/docs/definition.php">Open Source
+Definition</a>. Please see our <a href="http://www.w3.org/Consortium/Legal/IPR-FAQ">Copyright FAQ</a> for
+common questions about using materials from our site, including specific
+terms and conditions for packages like libwww, Amaya, and Jigsaw. Other
+questions about this notice can be directed to <a href="mailto:site-policy@w3.org">site-policy@w3.org</a>.<br>
+&nbsp;</p>
+<address>
+  Joseph Reagle &lt;<a href="mailto:site-policy@w3.org">site-policy@w3.org&gt;</a>
+</address>
+
+<p>Last revised $Id: copyright-software-20021231.htm,v 1.2 2006/06/28 04:09:57 xgu Exp $</p>
+</body></html>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about_files/copyright-software-20021231_files/base.css b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about_files/copyright-software-20021231_files/base.css
new file mode 100755
index 0000000..0421f1f
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/about_files/copyright-software-20021231_files/base.css
@@ -0,0 +1,69 @@
+/* Copyright 1997-2003 W3C (MIT, ERCIM, Keio). All Rights Reserved.
+   The following software licensing rules apply:
+   http://www.w3.org/Consortium/Legal/copyright-software */
+
+/* $Id: base.css,v 1.1 2006/03/21 07:29:44 slee Exp $ */
+
+/* this style sheet defines the basic style for all W3C pages */
+/* you can point to this by adding:
+
+     <LINK rel="Stylesheet" href="/StyleSheets/base">
+
+
+   in the HEAD of your HTML document */
+
+body {
+  font-family: sans-serif;
+  color: black;
+  background: white;
+}
+
+a:link, a:active {
+  color: #00e;
+  background: transparent;
+}
+
+a:visited {
+  color: #529;
+  background: transparent;
+}
+
+div.intro {
+  margin-left: 5%;
+  margin-right: 5%;
+  font-style: italic
+}
+
+pre {
+  font-family: monospace
+}
+
+a:link img, a:visited img {
+   border-style: none
+}
+
+a img { color: white; }        /* hide the border in Netscape 4 */
+@media all {                   /* hide from Netscape 4 */
+  a img { color: inherit; }    /* undo the rule above */
+}
+
+ul.toc {
+  list-style: disc;
+  list-style: none;
+}
+
+div.issue {
+  padding: 0.5em;
+  border: none;
+  margin-right: 5%;
+}
+
+.hideme { display: none }
+
+@media print {
+
+  table {
+    page-break-inside: avoid
+  }
+
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/eclipse32.png b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/eclipse32.png
new file mode 100755
index 0000000..568fac1
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/eclipse32.png
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/lib/flute.jar b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/lib/flute.jar
new file mode 100755
index 0000000..94869c3
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/plugins/org.w3c.sac_1.3.0.v20070710/lib/flute.jar
Binary files differ
diff --git a/framework/webtools/webapp/birt/WEB-INF/ReportEngine/samples/hello_world.rptdesign b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/samples/hello_world.rptdesign
new file mode 100755
index 0000000..9b0c02f
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/ReportEngine/samples/hello_world.rptdesign
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Written by Eclipse BIRT 1.0 -->
+<report xmlns=" http://www.eclipse.org/birt/2005/design" version="1">
+    <property name="createdBy">Eclipse BIRT Designer Version 1.0.0 Build &lt;20050405-1230></property>
+    <property name="units">in</property>
+    <styles>
+        <style name="report"/>
+        <style name="label"/>
+        <style name="text"/>
+        <style name="data"/>
+        <style name="table"/>
+        <style name="grid"/>
+        <style name="list"/>
+        <style name="image"/>
+    </styles>
+    <page-setup>
+        <simple-master-page name="Simple MasterPage">
+            <page-header>
+                <grid>
+                    <property name="width">100%</property>
+                    <column/>
+                    <row>
+                        <cell>
+                            <property name="fontSize">xx-large</property>
+                            <property name="fontWeight">bold</property>
+                            <property name="textAlign">center</property>
+                            <text>
+                                <text-property name="content"><![CDATA[Title]]></text-property>
+                            </text>
+                        </cell>
+                    </row>
+                </grid>
+            </page-header>
+            <page-footer>
+                <grid>
+                    <property name="width">100%</property>
+                    <column/>
+                    <column/>
+                    <row>
+                        <cell>
+                            <text>
+                                <property name="contentType">html</property>
+                                <text-property name="content"><![CDATA[<value-of>new Date()</value-of>]]></text-property>
+                            </text>
+                        </cell>
+                        <cell>
+                            <property name="textAlign">right</property>
+                            <text>
+                                <text-property name="content"><![CDATA[Page:]]></text-property>
+                            </text>
+                        </cell>
+                    </row>
+                </grid>
+            </page-footer>
+        </simple-master-page>
+    </page-setup>
+    <body>
+        <label>
+            <text-property name="text">Congratulations, the BIRT Runtime has been installed successfully. </text-property>
+        </label>
+        <label>
+            <text-property name="text">Thank you for choosing BIRT.</text-property>
+        </label>
+    </body>
+</report>
diff --git a/framework/webtools/webapp/birt/WEB-INF/birt.tld b/framework/webtools/webapp/birt/WEB-INF/birt.tld
new file mode 100644
index 0000000..1893d6b
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/birt.tld
@@ -0,0 +1,1157 @@
+<?xml version='1.0' encoding='ISO-8859-1' ?>
+<!DOCTYPE taglib
+    PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
+    "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+<taglib>
+	<tlib-version>1.0</tlib-version>
+	<jsp-version>1.2</jsp-version>
+	<short-name>BIRT Tag Library</short-name>
+	<uri>http://www.eclipse.org/birt/taglibs/birt.tld</uri>
+	<description>
+		This Tag Library makes user develope JSP with BIRT Viewer component easily.
+	</description>
+	
+    <!--**********************************************-->
+    <!--             Viewer Tag                       -->
+    <!--**********************************************-->
+	<tag>
+		<name>viewer</name>
+		<tag-class>org.eclipse.birt.report.taglib.ViewerTag</tag-class>
+		<body-content>JSP</body-content>
+		<description>
+			The viewer tag is to specify how to import and control BIRT Report Viewer into JSP page.
+			This tag will use Ajax framework to retrieve report content.
+		</description>
+
+		<attribute>
+			<name>id</name>
+			<required>true</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the current viewer id. It should be unique.
+				It can contain number,letter or underline.
+			</description>			
+		</attribute>	
+
+        <attribute>
+            <name>pattern</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies which servlet pattern to be used to preview report.
+            	Default value is frameset.
+            	( frameset or run )
+            </description>
+        </attribute>
+        		        
+        <attribute>
+            <name>baseURL</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies base URL of BIRT viewer.
+            	Default to the current context.
+            </description>
+        </attribute>
+        
+        <attribute>
+            <name>title</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report title displayed at the top.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>isHostPage</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies whether the viewer occupies the whole page.
+            	Default to false.
+            </description>
+        </attribute>
+
+       <attribute>
+            <name>scrolling </name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the IFrame style "scrolling ".
+            	If isHostPage is true, ignore this attribute.
+            	( auto | yes | no )
+            </description>
+        </attribute>
+
+       <attribute>
+            <name>position</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the style "position" of report container.
+            	If isHostPage is true, ignore this attribute.
+            	( static | absolute | fixed | relative )
+            </description>
+        </attribute>
+
+       <attribute>
+            <name>style</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the style of report container.
+            	If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+                        
+        <attribute>
+            <name>height</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the height of report container in pixels.
+            	If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>width</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+	            Sets the width of report container in pixels.
+	            If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>top</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the top of report container in pixels.
+            	If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>left</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+ 				Sets the left of report container in pixels.
+ 				If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>frameborder</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+ 				Specifies whether displays the iframe border.
+				Default to no. 
+				If isHostPage is true, ignore this attribute.
+				( Yes | No )
+            </description>
+        </attribute>
+                        
+		<attribute>
+			<name>reportDesign</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the report design file name.
+				( Absolute path, relative path or URL )
+			</description>	
+		</attribute>		
+
+		<attribute>
+			<name>reportDocument</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the report document file name. 
+				Noted: only support "file:" URL format.
+				( Absolute path, relative path or URL ) 
+			</description>	
+		</attribute>		
+
+		<attribute>
+			<name>reportletId</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the instance id of reportlet.
+				The "reportDocument" attribute should be required.
+				Noted: frameset pattern doesn't support reportlet.
+			</description>	
+		</attribute>
+				
+		<attribute>
+			<name>bookmark</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the targeted bookmark name.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>locale</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the Locale information.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>timeZone</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies a time zone id. For example: "America/Los_Angeles" or "GMT+1" or "GMT+01:00".
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>svg</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether supports the SVG output format or not.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>format</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the output format of report.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>emitterId</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the emitter id for the report output.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>pageOverflow</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the page overflow setting for the PDF format.
+				One of the following values:
+				0 for "auto", 1 for "actual size", 2 for "fit to page". 
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>rtl</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether supports rtl page or not.
+			</description>			
+		</attribute>
+				
+		<attribute>
+			<name>pageNum</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies output page number when render document file.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>pageRange</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies page range when render document file.
+			</description>			
+		</attribute>
+								
+		<attribute>
+			<name>resourceFolder</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the referenced resource folder.
+				Default value is defined in web.xml.
+			</description>			
+		</attribute>
+											
+		<attribute>
+			<name>forceOverwriteDocument</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether forces to overwrite the generated document.
+				If allowPageBreak is false,ignore this attribute.
+				Default value is defined in web.xml.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>showTitle</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether shows the report title.
+				Default to true.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>showToolBar</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether shows the toolbar.
+				Default to true.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>showNavigationBar</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether shows the Navigation Bar.
+				If allowPageBreak is false,ignore this attribute.
+				Default to true.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>showParameterPage</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether show the parameter dialog or not.
+				Default to true.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>isReportlet</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether render reportlet by bookmark.
+				Default to false.
+			</description>			
+		</attribute>
+		
+	</tag>
+
+ 	<!--**********************************************-->
+    <!--             Report Tag                       -->
+    <!--**********************************************-->
+    <tag>
+        <name>report</name>
+        <tag-class>org.eclipse.birt.report.taglib.ReportTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+        	The report tag can provide fast report preview without Ajax framework. 
+			The report content can be output to web browser directly.
+        </description>
+
+		<attribute>
+			<name>id</name>
+			<required>true</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the current viewer id. It should be unique.
+				It can contain number,letter or underline.
+			</description>			
+		</attribute>	
+		        
+        <attribute>
+            <name>baseURL</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies base URL of BIRT viewer.
+            	Default to the current context.
+				If report container is DIV, ignore this attribute.
+            </description>
+        </attribute>
+        
+        <attribute>
+            <name>isHostPage</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies whether the viewer occupies the whole page.
+            	Default to false.
+            </description>
+        </attribute>
+
+       <attribute>
+            <name>scrolling </name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the DIV/IFrame style "scrolling ".
+            	If isHostPage is true, ignore this attribute.
+            	( auto | yes | no )
+            </description>
+        </attribute>
+
+       <attribute>
+            <name>position</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the style "position" of report container.
+            	If isHostPage is true, ignore this attribute.
+            	( static | absolute | fixed | relative )
+            </description>
+        </attribute>
+
+       <attribute>
+            <name>style</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the style of report container.
+            	If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+                        
+        <attribute>
+            <name>height</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the height of report container in pixels.
+            	If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>width</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+	            Sets the width of report container in pixels.
+	            If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>top</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the top of report container in pixels.
+            	If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>left</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+ 				Sets the left of report container in pixels.
+ 				If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>frameborder</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+ 				Specifies whether displays the iframe border.
+ 				Available when user IFrame.
+				Default to no.
+				( Yes | No )
+            </description>
+        </attribute>
+
+		<attribute>
+			<name>reportDesign</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the report design file name.
+				( Absolute path, relative path or URL )
+			</description>	
+		</attribute>		
+
+		<attribute>
+			<name>reportDocument</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the report document file name. 
+				Noted: only support "file:" URL format.
+				( Absolute path, relative path or URL ) 
+			</description>	
+		</attribute>
+
+		<attribute>
+			<name>reportletId</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the instance id of reportlet.
+				The "reportDocument" attribute should be required.
+			</description>	
+		</attribute>
+                        	
+		<attribute>
+			<name>bookmark</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the targeted bookmark name.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>locale</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the Locale information.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>timeZone</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies a time zone id. For example: "America/Los_Angeles" or "GMT+1" or "GMT+01:00".
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>svg</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether supports the SVG output format or not.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>format</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the output format of report.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>emitterId</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the emitter id for the report output.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>pageOverflow</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the page overflow setting for the PDF format.
+				One of the following values:
+				0 for "auto", 1 for "actual size", 2 for "fit to page". 
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>rtl</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether supports rtl page or not.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>showParameterPage</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether show the parameter dialog or not.
+				Default to true.
+				If report container is DIV, ignore this attribute.
+			</description>			
+		</attribute>
+												
+		<attribute>
+			<name>resourceFolder</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the referenced resource folder.
+				Default value is defined in web.xml.
+			</description>			
+		</attribute>			
+									
+		<attribute>
+			<name>reportContainer</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies iframe or div as report container.
+				Default to iframe.
+				( iframe | div )
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>pageNum</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies output page number when render document file.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>pageRange</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies page range when render document file.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>isReportlet</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether render reportlet by bookmark.
+				Default to false.
+			</description>			
+		</attribute>
+		        
+    </tag>	
+    
+    <!--**********************************************-->
+    <!--             Report Parameter Tag             -->
+    <!--**********************************************-->
+     <tag>
+        <name>param</name>
+        <tag-class>org.eclipse.birt.report.taglib.ParamTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+        	The param tag specifies the parameters defined in report design file.
+        </description>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter name.
+            </description>
+        </attribute>
+        <attribute>
+            <name>pattern</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter pattern format.
+            </description>
+        </attribute>     
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter value. If doesn't set, value is null.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayText</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter display text.
+            </description>
+        </attribute>
+        <attribute>
+            <name>delim</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the delimiter for multiple values.
+            	Defaults to pipe "|".
+            </description>
+        </attribute>
+        <attribute>
+            <name>isLocale</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies whether the report parameter value is a locale/format related string.
+            </description>
+        </attribute>
+     </tag>   
+
+    <!--**********************************************-->
+    <!--             Report Parameter Value Tag       -->
+    <!--**********************************************-->
+     <tag>
+        <name>value</name>
+        <tag-class>org.eclipse.birt.report.taglib.ParamValueTag</tag-class>        
+        <body-content>JSP</body-content>
+        <description>
+        	The param value tag specifies multiple values for a given param tag.
+        </description>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter value. If doesn't set, value is null.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayText</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter display text.
+            </description>
+        </attribute>
+     </tag>   
+     
+    <!--**********************************************-->
+    <!--             ParameterPage Tag                -->
+    <!--**********************************************-->
+    <tag>
+        <name>parameterPage</name>
+        <tag-class>org.eclipse.birt.report.taglib.RequesterTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+        	The parameterPage tag can help developers to display BIRT parameter page or create a user-defined parameter page.
+			This tag can collect these parameters and submit to BIRT servlet to handle request.
+        </description>
+        
+        <attribute>
+			<name>id</name>
+			<required>true</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the parameter page id.It should be unique.
+				It can contain number,letter or underline.				
+			</description>			
+		</attribute>	
+        
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the parameter page name. 
+            	If attribute 'isCustom' is true, this name should be required and unique.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>isCustom</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies whether uses the user-defined parameter page.
+            	If false, use the BIRT parameter dialog.
+            	Default to false.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>title</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report title displayed at the top.
+            </description>
+        </attribute>
+                        
+      	<attribute>
+            <name>baseURL</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies base URL of BIRT viewer. 
+            	Default to the current context.
+            </description>
+        </attribute>
+		
+		<attribute>
+            <name>scrolling </name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the DIV/IFrame style "scrolling ".
+            	( auto | yes | no )
+            </description>
+        </attribute>
+        
+       <attribute>
+            <name>position</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the style "position" of parameter page.
+            	( static | absolute | fixed | relative )
+            </description>
+        </attribute>
+
+       <attribute>
+            <name>style</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the style of parameter page.
+            </description>
+        </attribute>
+                        
+        <attribute>
+            <name>height</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the height of parameter page in pixels.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>width</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+	            Sets the width of parameter page in pixels.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>top</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the top of parameter page in pixels.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>left</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+ 				Sets the left of parameter page in pixels.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>frameborder</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+ 				Specifies whether displays the iframe border.
+				Default to no.
+				If set "isCustom" to true, ignore this attribute.
+				( Yes | No )
+            </description>
+        </attribute>
+                        
+		<attribute>
+			<name>reportDesign</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the report design file name.
+				( Absolute path, relative path or URL )
+			</description>	
+		</attribute>		
+
+		<attribute>
+			<name>reportDocument</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the report document file name. 
+				Noted: only support "file:" URL format.
+				( Absolute path, relative path or URL ) 
+			</description>	
+		</attribute>		
+
+		<attribute>
+			<name>reportletId</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the instance id of reportlet.
+				The "reportDocument" attribute should be required.
+				Noted: frameset pattern doesn't support reportlet.
+			</description>	
+		</attribute>
+
+		<attribute>
+			<name>pattern</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the servlet pattern for request submit. 
+				BIRT supports three patterns: frameset, run and preview. 
+				Can refer to the user-defined servlet pattern.
+				Default to frameset.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>target</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the target window for request submit.
+			</description>			
+		</attribute>
+						
+		<attribute>
+			<name>bookmark</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the targeted bookmark name.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>locale</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the Locale information.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>timeZone</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies a time zone id. For example: "America/Los_Angeles" or "GMT+1" or "GMT+01:00".
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>svg</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether supports the SVG output format or not.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>format</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the output format of report.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>emitterId</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the emitter id for the report output.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>pageOverflow</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the page overflow setting for the PDF format.
+				One of the following values:
+				0 for "auto", 1 for "actual size", 2 for "fit to page". 
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>rtl</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether supports rtl page or not.
+			</description>			
+		</attribute>
+							
+		<attribute>
+			<name>resourceFolder</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the referenced resource folder.
+				Default value is defined in web.xml.
+			</description>			
+		</attribute>			
+								
+		<attribute>
+			<name>forceOverwriteDocument</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether forces to overwrite the generated document.
+				If allowPageBreak is false,ignore this attribute.
+				Default value is defined in web.xml.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>showTitle</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether shows the report title.
+				Default to true.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>showToolBar</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether shows the toolbar.
+				Default to true.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>showNavigationBar</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether shows the Navigation Bar.
+				If allowPageBreak is false,ignore this attribute.
+				Default to true.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>isReportlet</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether render reportlet by bookmark.
+				Default to false.
+			</description>			
+		</attribute>
+				        
+    </tag>
+
+    <!--**********************************************-->
+    <!--      Report Parameter Definition Tag         -->
+    <!--**********************************************-->
+     <tag>
+        <name>paramDef</name>
+        <tag-class>org.eclipse.birt.report.taglib.ParamDefTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+        	The param tag is used to generate html code for defined parameter in ParameterPage tag.
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the id of parameter control.It should be unique.
+				It can contain number,letter or underline.
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter name.
+            </description>
+        </attribute>
+        <attribute>
+            <name>pattern</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter pattern format.
+            	It is used to parse defined parameter value string.
+            </description>
+        </attribute>     
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter value. If doesn't set, use default value.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayText</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter display text.
+            </description>
+        </attribute>
+        <attribute>
+            <name>isLocale</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies whether the report parameter value is a locale/format related string.
+            	It is used to parse defined parameter value string.
+            </description>
+        </attribute>
+        <attribute>
+            <name>title</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the title attribute of parameter control.
+            </description>
+        </attribute>        
+        <attribute>
+            <name>cssClass</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the css class attribute of parameter control.
+            </description>
+        </attribute>
+        <attribute>
+            <name>style</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the parameter control style.
+            </description>
+        </attribute>        
+     </tag>        		
+</taglib>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/birt/report.ftl b/framework/webtools/webapp/birt/WEB-INF/birt/report.ftl
new file mode 100644
index 0000000..930e01e
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/birt/report.ftl
@@ -0,0 +1,30 @@
+<#--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<#assign birt = JspTaglibs["/WEB-INF/birt.tld"]/>
+
+<@birt.report id="birtReport"
+    reportDesign="component://webtools/webapp/birt/report/product.rptdesign"
+    baseURL="/birt"
+    height="700"
+    width="900"
+    format="html"
+    isHostPage="false"
+    pageNum="2">
+</@birt.report>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/WEB-INF/birt/viewer.ftl b/framework/webtools/webapp/birt/WEB-INF/birt/viewer.ftl
new file mode 100644
index 0000000..ce0b361
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/birt/viewer.ftl
@@ -0,0 +1,28 @@
+<#--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<#assign birt = JspTaglibs["/WEB-INF/birt.tld"]/>
+
+<@birt.viewer id="birtViewer"
+    reportDesign="component://webtools/webapp/birt/report/product.rptdesign"
+    baseURL="/birt"
+    height="700"
+    width="900"
+    format="html">
+</@birt.viewer>
diff --git a/framework/webtools/webapp/birt/WEB-INF/controller.xml b/framework/webtools/webapp/birt/WEB-INF/controller.xml
new file mode 100644
index 0000000..b6f9d80
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/controller.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<site-conf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/site-conf.xsd">
+    <!-- The controller elements that are common to all OFBiz components
+         can be found in the following xml file. A component can override the
+         elements found in the common-controller.xml file. -->
+    <include location="component://common/webcommon/WEB-INF/common-controller.xml"/>    
+    
+    <description>Birt Component Site Configuration File</description>
+    <owner>Copyright 2001-2008 The Apache Software Foundation</owner>
+
+    <!--
+      These can be used to return the reports as views; make sure the classes are compiled and available
+        <handler name="datavision" type="view" class="org.ofbiz.webapp.view.DataVisionViewHandler"/>
+        <handler name="jasperreportspdf" type="view" class="org.ofbiz.webapp.view.JasperReportsPdfViewHandler"/>
+        <handler name="jasperreportsxml" type="view" class="org.ofbiz.webapp.view.JasperReportsXmlViewHandler"/>
+    -->
+    
+    <handler name="birt" type="view" class="org.ofbiz.webapp.view.BirtViewHandler"/>
+
+    <!-- Events to run on every request before security (chains exempt) -->
+    <!--
+    <preprocessor>
+    </preprocessor>
+    -->
+    <!-- Events to run on every request after all other processing (chains exempt) -->
+    <!--
+    <postprocessor>
+        <event type="java" path="org.ofbiz.webapp.event.TestEvent" invoke="test"/>
+    </postprocessor>
+    -->
+
+    <!-- Request Mappings -->
+    <request-map uri="birt">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="birt"/>
+    </request-map>
+    <request-map uri="BirtViewer">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="BirtViewer"/>
+    </request-map>
+    <request-map uri="BirtReport">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="BirtReport"/>
+    </request-map>
+    <request-map uri="BirtMail">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="BirtMail"/>
+    </request-map>
+    <request-map uri="sendBirtMail">
+        <security https="true" auth="true"/>
+        <event type="service" invoke="sendBirtMail"/>
+        <response name="success" type="view" value="BirtMail"/>
+        <response name="error" type="view" value="BirtMail"/>
+    </request-map>
+    <request-map uri="BirtViewHandler">
+        <security https="true" auth="true"/>
+        <response name="success" type="view" value="BirtViewHandler"/>
+    </request-map>
+
+    <!-- end of request mappings -->
+
+    <!-- View Mappings -->
+    <view-map name="birt" type="screen" page="component://webtools/widget/BirtScreens.xml#main"/>
+    <view-map name="BirtViewer" type="screen" page="component://webtools/widget/BirtScreens.xml#Viewer"/>
+    <view-map name="BirtReport" type="screen" page="component://webtools/widget/BirtScreens.xml#Report"/>
+    <view-map name="BirtMail" type="screen" page="component://webtools/widget/BirtScreens.xml#EditMail"/>
+    
+    <!-- Supported Content Types -->
+    <!--
+        text/html
+        application/pdf
+        application/vnd.ms-excel
+        application/vnd.ms-word
+        application/vnd.ms-powerpoint
+     -->
+    <view-map name="BirtViewHandler" type="birt" page="component://webtools/webapp/birt/report/product.rptdesign" content-type="application/pdf"/>
+    <!-- end of view mappings -->
+</site-conf>
diff --git a/framework/webtools/webapp/birt/WEB-INF/server-config.wsdd b/framework/webtools/webapp/birt/WEB-INF/server-config.wsdd
new file mode 100644
index 0000000..fe9a342
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/server-config.wsdd
@@ -0,0 +1,952 @@
+<!-- Use this file to deploy some handlers/chains and services      -->

+<!-- Two ways to do this:                                           -->

+<!--   java org.apache.axis.client.AdminClient deploy.wsdd          -->

+<!--      after the axis server is running                          -->

+<!-- or                                                             -->

+<!--   java org.apache.axis.utils.Admin client|server deploy.wsdd   -->

+<!--      from the same directory that the Axis engine runs         -->

+

+<deployment

+    xmlns="http://xml.apache.org/axis/wsdd/"

+    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

+

+	<globalConfiguration>

+		<parameter

+			 name="adminPassword"

+			 value="admin"/>

+		<parameter

+			 name="sendMultiRefs"

+			 value="true"/>

+		<parameter

+			 name="sendXsiTypes"

+			 value="true"/>

+		<parameter

+			 name="attachments.implementation"

+			 value="org.apache.axis.attachments.AttachmentsImpl"/>

+		<parameter

+			 name="sendXMLDeclaration"

+			 value="true"/>

+		<parameter

+			 name="axis.sendMinimizedElements"

+			 value="true"/>

+		<requestFlow>

+			<handler

+				 type="java:org.apache.axis.handlers.JWSHandler">

+				<parameter

+					 name="scope"

+					 value="session"/>

+			</handler>

+			<handler

+				 type="java:org.apache.axis.handlers.JWSHandler">

+				<parameter

+					 name="scope"

+					 value="request"/>

+				<parameter

+					 name="extension"

+					 value=".jwr"/>

+			</handler>

+		</requestFlow>

+	</globalConfiguration>

+	<handler

+		 name="LocalResponder"

+		 type="java:org.apache.axis.transport.local.LocalResponder"/>

+	<handler

+		 name="URLMapper"

+		 type="java:org.apache.axis.handlers.http.URLMapper"/>

+	<handler

+		 name="Authenticate"

+		 type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>

+

+

+  <service name="BirtSoapPort" provider="java:RPC" style="document" use="literal">

+      <parameter name="wsdlTargetNamespace" value="http://schemas.eclipse.org/birt/wsdl"/>

+      <parameter name="wsdlServiceElement" value="BirtViewerAPI"/>

+      <parameter name="schemaQualified" value="http://schemas.eclipse.org/birt"/>

+      <parameter name="wsdlServicePort" value="BirtSoapPort"/>

+      <parameter name="className" value="org.eclipse.birt.report.soapengine.endpoint.BirtSoapBindingImpl"/>

+      <parameter name="wsdlPortType" value="BirtSoapPort"/>

+      <parameter name="typeMappingVersion" value="1.2"/>

+      <operation name="getUpdatedObjects" qname="getUpdatedObjects" returnQName="retNS:GetUpdatedObjectsResponse" xmlns:retNS="http://schemas.eclipse.org/birt" returnType="rtns:GetUpdatedObjectsResponse" xmlns:rtns="http://schemas.eclipse.org/birt" >

+        <parameter qname="pns:GetUpdatedObjects" xmlns:pns="http://schemas.eclipse.org/birt" type="tns:GetUpdatedObjects" xmlns:tns="http://schemas.eclipse.org/birt"/>

+      </operation>

+      <parameter name="allowedMethods" value="getUpdatedObjects"/>

+

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ColumnProperties"

+        type="java:org.eclipse.birt.report.soapengine.api.ColumnProperties"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:DataSet"

+        type="java:org.eclipse.birt.report.soapengine.api.DataSet"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:GetUpdatedObjects"

+        type="java:org.eclipse.birt.report.soapengine.api.GetUpdatedObjects"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:File"

+        type="java:org.eclipse.birt.report.soapengine.api.File"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:TOC"

+        type="java:org.eclipse.birt.report.soapengine.api.TOC"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:IOInfoList"

+        type="java:org.eclipse.birt.report.soapengine.api.IOInfoList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:NumberCategoryChoice"

+        type="java:org.eclipse.birt.report.soapengine.api.NumberCategoryChoice"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:JoinCondition"

+        type="java:org.eclipse.birt.report.soapengine.api.JoinCondition"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ChartAppearance"

+        type="java:org.eclipse.birt.report.soapengine.api.ChartAppearance"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ReportId"

+        type="java:org.eclipse.birt.report.soapengine.api.ReportId"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:DataSource"

+        type="java:org.eclipse.birt.report.soapengine.api.DataSource"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:FormatRuleEffect"

+        type="java:org.eclipse.birt.report.soapengine.api.FormatRuleEffect"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:Data"

+        type="java:org.eclipse.birt.report.soapengine.api.Data"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:CategoryChoice"

+        type="java:org.eclipse.birt.report.soapengine.api.CategoryChoice"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:FilterList"

+        type="java:org.eclipse.birt.report.soapengine.api.FilterList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:SelectionList"

+        type="java:org.eclipse.birt.report.soapengine.api.SelectionList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:TableLayout"

+        type="java:org.eclipse.birt.report.soapengine.api.TableLayout"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:AggregateSetting"

+        type="java:org.eclipse.birt.report.soapengine.api.AggregateSetting"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:BRDExpression"

+        type="java:org.eclipse.birt.report.soapengine.api.BRDExpression"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:Alignment"

+        type="java:org.eclipse.birt.report.soapengine.api.Alignment"

+        serializer="org.apache.axis.encoding.ser.EnumSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.EnumDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:JoinDefinition"

+        type="java:org.eclipse.birt.report.soapengine.api.JoinDefinition"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:CellDefinition"

+        type="java:org.eclipse.birt.report.soapengine.api.CellDefinition"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ReportElementList"

+        type="java:org.eclipse.birt.report.soapengine.api.ReportElementList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ChartLabels"

+        type="java:org.eclipse.birt.report.soapengine.api.ChartLabels"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ColumnDefinitionGroup"

+        type="java:org.eclipse.birt.report.soapengine.api.ColumnDefinitionGroup"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:FilterExpression"

+        type="java:org.eclipse.birt.report.soapengine.api.FilterExpression"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ConditionLineList"

+        type="java:org.eclipse.birt.report.soapengine.api.ConditionLineList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:DataSetDefinition"

+        type="java:org.eclipse.birt.report.soapengine.api.DataSetDefinition"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ThemeList"

+        type="java:org.eclipse.birt.report.soapengine.api.ThemeList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:SortDefinitionList"

+        type="java:org.eclipse.birt.report.soapengine.api.SortDefinitionList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:BindingList"

+        type="java:org.eclipse.birt.report.soapengine.api.BindingList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:DataField"

+        type="java:org.eclipse.birt.report.soapengine.api.DataField"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:GroupDetail"

+        type="java:org.eclipse.birt.report.soapengine.api.GroupDetail"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:TableGroups"

+        type="java:org.eclipse.birt.report.soapengine.api.TableGroups"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:UpdateDialog"

+        type="java:org.eclipse.birt.report.soapengine.api.UpdateDialog"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:GetUpdatedObjectsResponse"

+        type="java:org.eclipse.birt.report.soapengine.api.GetUpdatedObjectsResponse"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:IOReference"

+        type="java:org.eclipse.birt.report.soapengine.api.IOReference"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:Export"

+        type="java:org.eclipse.birt.report.soapengine.api.Export"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ExportCriteria"

+        type="java:org.eclipse.birt.report.soapengine.api.ExportCriteria"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ConditionLine"

+        type="java:org.eclipse.birt.report.soapengine.api.ConditionLine"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:Font"

+        type="java:org.eclipse.birt.report.soapengine.api.Font"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:TableSectionContextMenuState"

+        type="java:org.eclipse.birt.report.soapengine.api.TableSectionContextMenuState"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ToolbarState"

+        type="java:org.eclipse.birt.report.soapengine.api.ToolbarState"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:FormatRuleSet"

+        type="java:org.eclipse.birt.report.soapengine.api.FormatRuleSet"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:Vector"

+        type="java:org.eclipse.birt.report.soapengine.api.Vector"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:FilterClause"

+        type="java:org.eclipse.birt.report.soapengine.api.FilterClause"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ResultSet"

+        type="java:org.eclipse.birt.report.soapengine.api.ResultSet"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ReportElement"

+        type="java:org.eclipse.birt.report.soapengine.api.ReportElement"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:JoinMetadata"

+        type="java:org.eclipse.birt.report.soapengine.api.JoinMetadata"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:IOList"

+        type="java:org.eclipse.birt.report.soapengine.api.IOList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:RepositoryPathSegment"

+        type="java:org.eclipse.birt.report.soapengine.api.RepositoryPathSegment"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:SortingDirection"

+        type="java:org.eclipse.birt.report.soapengine.api.SortingDirection"

+        serializer="org.apache.axis.encoding.ser.EnumSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.EnumDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:Operation"

+        type="java:org.eclipse.birt.report.soapengine.api.Operation"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ReportParameterList"

+        type="java:org.eclipse.birt.report.soapengine.api.ReportParameterList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:S_Info"

+        type="java:org.eclipse.birt.report.soapengine.api.S_Info"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:Oprand"

+        type="java:org.eclipse.birt.report.soapengine.api.Oprand"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:FormatRuleCondition"

+        type="java:org.eclipse.birt.report.soapengine.api.FormatRuleCondition"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:IOField"

+        type="java:org.eclipse.birt.report.soapengine.api.IOField"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:Filter"

+        type="java:org.eclipse.birt.report.soapengine.api.Filter"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ChartProperties"

+        type="java:org.eclipse.birt.report.soapengine.api.ChartProperties"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:TableSections"

+        type="java:org.eclipse.birt.report.soapengine.api.TableSections"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:Update"

+        type="java:org.eclipse.birt.report.soapengine.api.Update"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:Column"

+        type="java:org.eclipse.birt.report.soapengine.api.Column"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:FormatRule"

+        type="java:org.eclipse.birt.report.soapengine.api.FormatRule"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:FileSearch"

+        type="java:org.eclipse.birt.report.soapengine.api.FileSearch"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:FilterType"

+        type="java:org.eclipse.birt.report.soapengine.api.FilterType"

+        serializer="org.apache.axis.encoding.ser.EnumSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.EnumDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:FileList"

+        type="java:org.eclipse.birt.report.soapengine.api.FileList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:SortDefinition"

+        type="java:org.eclipse.birt.report.soapengine.api.SortDefinition"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:UpdateData"

+        type="java:org.eclipse.birt.report.soapengine.api.UpdateData"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:>ReportId>Type"

+        type="java:org.eclipse.birt.report.soapengine.api.ReportIdType"

+        serializer="org.apache.axis.encoding.ser.EnumSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.EnumDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:TableRowInfo"

+        type="java:org.eclipse.birt.report.soapengine.api.TableRowInfo"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:TableContextMenuState"

+        type="java:org.eclipse.birt.report.soapengine.api.TableContextMenuState"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:JoinList"

+        type="java:org.eclipse.birt.report.soapengine.api.JoinList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:TableColContextMenuState"

+        type="java:org.eclipse.birt.report.soapengine.api.TableColContextMenuState"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ChartDataBinding"

+        type="java:org.eclipse.birt.report.soapengine.api.ChartDataBinding"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:UpdateContent"

+        type="java:org.eclipse.birt.report.soapengine.api.UpdateContent"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:DataSetList"

+        type="java:org.eclipse.birt.report.soapengine.api.DataSetList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:DataFieldFolder"

+        type="java:org.eclipse.birt.report.soapengine.api.DataFieldFolder"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:G_Info"

+        type="java:org.eclipse.birt.report.soapengine.api.G_Info"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:AvailableOperation"

+        type="java:org.eclipse.birt.report.soapengine.api.AvailableOperation"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:DesignState"

+        type="java:org.eclipse.birt.report.soapengine.api.DesignState"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:RepositoryPathSegmentList"

+        type="java:org.eclipse.birt.report.soapengine.api.RepositoryPathSegmentList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:Theme"

+        type="java:org.eclipse.birt.report.soapengine.api.Theme"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:BoundDataColumn"

+        type="java:org.eclipse.birt.report.soapengine.api.BoundDataColumn"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:AggregateDefinition"

+        type="java:org.eclipse.birt.report.soapengine.api.AggregateDefinition"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:Binding"

+        type="java:org.eclipse.birt.report.soapengine.api.Binding"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:Format"

+        type="java:org.eclipse.birt.report.soapengine.api.Format"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:TableLayoutList"

+        type="java:org.eclipse.birt.report.soapengine.api.TableLayoutList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:SelectItemChoice"

+        type="java:org.eclipse.birt.report.soapengine.api.SelectItemChoice"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:NumberCategoryChoiceList"

+        type="java:org.eclipse.birt.report.soapengine.api.NumberCategoryChoiceList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ChartLocation"

+        type="java:org.eclipse.birt.report.soapengine.api.ChartLocation"

+        serializer="org.apache.axis.encoding.ser.EnumSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.EnumDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ResultSets"

+        type="java:org.eclipse.birt.report.soapengine.api.ResultSets"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:CategoryChoiceList"

+        type="java:org.eclipse.birt.report.soapengine.api.CategoryChoiceList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ReportParameter"

+        type="java:org.eclipse.birt.report.soapengine.api.ReportParameter"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:IOFieldList"

+        type="java:org.eclipse.birt.report.soapengine.api.IOFieldList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:Page"

+        type="java:org.eclipse.birt.report.soapengine.api.Page"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:AxisDataBinding"

+        type="java:org.eclipse.birt.report.soapengine.api.AxisDataBinding"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:BoundDataColumnList"

+        type="java:org.eclipse.birt.report.soapengine.api.BoundDataColumnList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ChartType"

+        type="java:org.eclipse.birt.report.soapengine.api.ChartType"

+        serializer="org.apache.axis.encoding.ser.EnumSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.EnumDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:DataSourceList"

+        type="java:org.eclipse.birt.report.soapengine.api.DataSourceList"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:FileBrowsing"

+        type="java:org.eclipse.birt.report.soapengine.api.FileBrowsing"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:CascadeParameter"

+        type="java:org.eclipse.birt.report.soapengine.api.CascadeParameter"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:ColumnDefinition"

+        type="java:org.eclipse.birt.report.soapengine.api.ColumnDefinition"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+      <typeMapping

+        xmlns:ns="http://schemas.eclipse.org/birt"

+        qname="ns:SectionDefinition"

+        type="java:org.eclipse.birt.report.soapengine.api.SectionDefinition"

+        serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

+        deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

+        encodingStyle=""

+      />

+<namespace>http://schemas.eclipse.org/birt</namespace>

+  </service>

+	

+	<service

+		 name="AdminService"

+		 provider="java:MSG">

+		<parameter

+			 name="allowedMethods"

+			 value="AdminService"/>

+		<parameter

+			 name="enableRemoteAdmin"

+			 value="false"/>

+		<parameter

+			 name="className"

+			 value="org.apache.axis.utils.Admin"/>

+		<namespace>http://xml.apache.org/axis/wsdd/</namespace>

+	</service>

+	

+	<service

+		 name="Version"

+		 provider="java:RPC">

+		<parameter

+			 name="allowedMethods"

+			 value="getVersion"/>

+		<parameter

+			 name="className"

+			 value="org.apache.axis.Version"/>

+	</service>

+	

+	<transport

+		 name="http">

+		<requestFlow>

+			<handler

+				 type="URLMapper"/>

+			<handler

+				 type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>

+		</requestFlow>

+	</transport>

+	

+	<transport

+		 name="local">

+		<responseFlow>

+			<handler

+				 type="LocalResponder"/>

+		</responseFlow>

+	</transport>

+</deployment>

diff --git a/framework/webtools/webapp/birt/WEB-INF/web.xml b/framework/webtools/webapp/birt/WEB-INF/web.xml
new file mode 100644
index 0000000..fd0a9aa
--- /dev/null
+++ b/framework/webtools/webapp/birt/WEB-INF/web.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<web-app>
+    <display-name>Open For Business - BIRT Component</display-name>
+    <description>BIRT Component of the Open For Business Project</description>
+    
+    <context-param>
+        <param-name>localDispatcherName</param-name><param-value>example</param-value>
+        <description>A unique name used to identify/recognize the local dispatcher for the Service Engine</description>
+    </context-param>    
+    <context-param>
+        <param-name>entityDelegatorName</param-name><param-value>default</param-value>
+        <description>The Name of the Entity Delegator to use, defined in entityengine.xml</description>
+    </context-param>
+    <context-param>
+        <param-name>mainDecoratorLocation</param-name>
+        <param-value>component://webtools/widget/CommonScreens.xml</param-value>
+        <description>The location of the main-decorator screen to use for this webapp; referred to as a context variable in screen def XML files.</description>
+    </context-param>
+    <context-param>
+        <param-name>widgetVerbose</param-name>
+        <param-value>false</param-value>
+        <description>Enable widget boundary comments. See org.ofbiz.widget.ModelWidget.widgetBoundaryCommentsEnabled().</description>
+    </context-param>
+    <context-param>
+        <param-name>compressHTML</param-name>
+        <param-value>false</param-value>
+        <description>Remove unnecessary whitespace from HTML output.</description>
+    </context-param>
+    
+    <filter>
+        <filter-name>ContextFilter</filter-name>
+        <display-name>ContextFilter</display-name>
+        <filter-class>org.ofbiz.webapp.control.ContextFilter</filter-class>
+        <init-param><param-name>disableContextSecurity</param-name><param-value>N</param-value></init-param>
+        <init-param>
+            <param-name>allowedPaths</param-name>
+            <param-value>/control:/select:/index.html:/index.jsp:/default.html:/default.jsp:/images:/includes/maincss.css:/frameset:/preview:/webcontent:/CancelTask.jsp</param-value>
+        </init-param>
+        <init-param><param-name>errorCode</param-name><param-value>403</param-value></init-param>
+        <init-param><param-name>redirectPath</param-name><param-value>/control/main</param-value></init-param>        
+    </filter>
+    <filter-mapping><filter-name>ContextFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping> 
+
+    <listener><listener-class>org.ofbiz.webapp.control.ControlEventListener</listener-class></listener>
+    <listener><listener-class>org.ofbiz.webapp.control.LoginEventListener</listener-class></listener>
+    <!-- NOTE: not all app servers support mounting implementations of the HttpSessionActivationListener interface -->
+    <!-- <listener><listener-class>org.ofbiz.webapp.control.ControlActivationEventListener</listener-class></listener> -->
+  
+    <servlet>
+        <servlet-name>ControlServlet</servlet-name>
+        <display-name>ControlServlet</display-name>
+        <description>Main Control Servlet</description>
+        <servlet-class>org.ofbiz.webapp.control.ControlServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+    <!-- Viewer Servlet, Supports SOAP -->
+    <servlet>
+        <servlet-name>ViewerServlet</servlet-name>
+        <servlet-class>org.ofbiz.birt.report.servlet.BirtViewerServlet</servlet-class>
+    </servlet>
+    <!-- Engine Servlet -->
+    <servlet>
+        <servlet-name>EngineServlet</servlet-name>
+        <servlet-class>org.ofbiz.birt.report.servlet.BirtEngineServlet</servlet-class>
+    </servlet>
+    <servlet-mapping><servlet-name>ControlServlet</servlet-name><url-pattern>/control/*</url-pattern></servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>ViewerServlet</servlet-name>
+        <url-pattern>/frameset</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>EngineServlet</servlet-name>
+        <url-pattern>/preview</url-pattern>
+    </servlet-mapping>
+
+    <session-config><session-timeout>60</session-timeout><!-- in minutes --></session-config>
+
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+        <welcome-file>index.html</welcome-file>
+        <welcome-file>index.htm</welcome-file>
+    </welcome-file-list>
+</web-app>
diff --git a/framework/webtools/webapp/birt/error/error.jsp b/framework/webtools/webapp/birt/error/error.jsp
new file mode 100644
index 0000000..bab526d
--- /dev/null
+++ b/framework/webtools/webapp/birt/error/error.jsp
@@ -0,0 +1,52 @@
+<%--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+--%>
+<%@ page import="org.ofbiz.base.util.*" %>
+<html>
+<head>
+<title>Open For Business Message</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</head>
+
+<% String errorMsg = (String) request.getAttribute("_ERROR_MESSAGE_"); %>
+
+<body bgcolor="#FFFFFF">
+<div align="center">
+  <br/>
+  <table width="100%" border="1" height="200">
+    <tr>
+      <td>
+        <table width="100%" border="0" height="200">
+          <tr bgcolor="#CC6666"> 
+            <td height="45"> 
+              <div align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="4" color="#FFFFFF"><b>:ERROR MESSAGE:</b></font></div>
+            </td>
+          </tr>
+          <tr> 
+            <td>
+              <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><%=UtilFormatOut.replaceString(errorMsg, "\n", "<br/>")%></font></div>
+            </td>
+          </tr>
+        </table>
+      </td>
+    </tr>
+  </table>
+</div>
+<div align="center"></div>
+</body>
+</html>
diff --git a/framework/webtools/webapp/birt/index.jsp b/framework/webtools/webapp/birt/index.jsp
new file mode 100644
index 0000000..e3c3cdf
--- /dev/null
+++ b/framework/webtools/webapp/birt/index.jsp
@@ -0,0 +1,19 @@
+<%--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+--%>
+<%response.sendRedirect("control/main");%>
diff --git a/framework/webtools/webapp/birt/logs/ReportEngine_2009_10_15_10_11_43.log b/framework/webtools/webapp/birt/logs/ReportEngine_2009_10_15_10_11_43.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/framework/webtools/webapp/birt/logs/ReportEngine_2009_10_15_10_11_43.log
diff --git a/framework/webtools/webapp/birt/logs/ReportEngine_2009_10_15_10_11_43.log.lck b/framework/webtools/webapp/birt/logs/ReportEngine_2009_10_15_10_11_43.log.lck
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/framework/webtools/webapp/birt/logs/ReportEngine_2009_10_15_10_11_43.log.lck
diff --git a/framework/webtools/webapp/birt/report/product.rptdesign b/framework/webtools/webapp/birt/report/product.rptdesign
new file mode 100644
index 0000000..672e4a9
--- /dev/null
+++ b/framework/webtools/webapp/birt/report/product.rptdesign
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.20" id="1">
+    <property name="createdBy">Eclipse BIRT Designer Version 2.5.1.v20090903 Build &lt;2.5.1.v20090917-1447></property>
+    <property name="units">in</property>
+    <method name="initialize"><![CDATA[importPackage(Packages.org.ofbiz.base.util)
+
+module = "product.rptdesign";]]></method>
+    <property name="iconFile">/templates/blank_report.gif</property>
+    <property name="bidiLayoutOrientation">ltr</property>
+    <data-sources>
+        <script-data-source name="OFBiz" id="8"/>
+    </data-sources>
+    <data-sets>
+        <script-data-set name="Product" id="9">
+            <list-property name="resultSetHints">
+                <structure>
+                    <property name="position">0</property>
+                    <property name="name">productId</property>
+                    <property name="dataType">string</property>
+                </structure>
+                <structure>
+                    <property name="position">1</property>
+                    <property name="name">productTypeId</property>
+                    <property name="dataType">string</property>
+                </structure>
+                <structure>
+                    <property name="position">2</property>
+                    <property name="name">internalName</property>
+                    <property name="dataType">string</property>
+                </structure>
+            </list-property>
+            <list-property name="columnHints">
+                <structure>
+                    <property name="columnName">productId</property>
+                    <text-property name="displayName">productId</text-property>
+                </structure>
+                <structure>
+                    <property name="columnName">productTypeId</property>
+                    <text-property name="displayName">productTypeId</text-property>
+                </structure>
+                <structure>
+                    <property name="columnName">internalName</property>
+                    <text-property name="displayName">internalName</text-property>
+                </structure>
+            </list-property>
+            <structure name="cachedMetaData">
+                <list-property name="resultSet">
+                    <structure>
+                        <property name="position">1</property>
+                        <property name="name">productId</property>
+                        <property name="dataType">string</property>
+                    </structure>
+                    <structure>
+                        <property name="position">2</property>
+                        <property name="name">productTypeId</property>
+                        <property name="dataType">string</property>
+                    </structure>
+                    <structure>
+                        <property name="position">3</property>
+                        <property name="name">internalName</property>
+                        <property name="dataType">string</property>
+                    </structure>
+                </list-property>
+            </structure>
+            <property name="dataSource">OFBiz</property>
+            <method name="open"><![CDATA[products = null;
+try {
+    products = delegator.findAll("Product");
+} catch (e) {
+    Debug.logError(e, module);
+}
+totalRow = 0;
+countOfRow = 0;
+if (products) {
+    totalRow = products.size();
+}]]></method>
+            <method name="fetch"><![CDATA[if (countOfRow == totalRow - 1) return false;
+
+product = products.get(countOfRow);
+productId = product.getString("productId");
+productTypeId = product.getString("productTypeId");
+internalName = product.getString("internalName");
+
+row["productId"] = productId;
+row["productTypeId"] = productTypeId;
+row["internalName"] = internalName;
+
+countOfRow ++;
+return true;]]></method>
+        </script-data-set>
+    </data-sets>
+    <styles>
+        <style name="report" id="4">
+            <property name="fontFamily">sans-serif</property>
+            <property name="fontSize">10pt</property>
+        </style>
+        <style name="crosstab-cell" id="5">
+            <property name="borderBottomColor">#CCCCCC</property>
+            <property name="borderBottomStyle">solid</property>
+            <property name="borderBottomWidth">1pt</property>
+            <property name="borderLeftColor">#CCCCCC</property>
+            <property name="borderLeftStyle">solid</property>
+            <property name="borderLeftWidth">1pt</property>
+            <property name="borderRightColor">#CCCCCC</property>
+            <property name="borderRightStyle">solid</property>
+            <property name="borderRightWidth">1pt</property>
+            <property name="borderTopColor">#CCCCCC</property>
+            <property name="borderTopStyle">solid</property>
+            <property name="borderTopWidth">1pt</property>
+        </style>
+        <style name="crosstab" id="6">
+            <property name="borderBottomColor">#CCCCCC</property>
+            <property name="borderBottomStyle">solid</property>
+            <property name="borderBottomWidth">1pt</property>
+            <property name="borderLeftColor">#CCCCCC</property>
+            <property name="borderLeftStyle">solid</property>
+            <property name="borderLeftWidth">1pt</property>
+            <property name="borderRightColor">#CCCCCC</property>
+            <property name="borderRightStyle">solid</property>
+            <property name="borderRightWidth">1pt</property>
+            <property name="borderTopColor">#CCCCCC</property>
+            <property name="borderTopStyle">solid</property>
+            <property name="borderTopWidth">1pt</property>
+        </style>
+    </styles>
+    <page-setup>
+        <simple-master-page name="Simple MasterPage" id="2">
+            <page-footer>
+                <text id="3">
+                    <property name="contentType">html</property>
+                    <text-property name="content"><![CDATA[<value-of>new Date()</value-of>]]></text-property>
+                </text>
+            </page-footer>
+        </simple-master-page>
+    </page-setup>
+    <body>
+        <table id="10">
+            <property name="dataSet">Product</property>
+            <list-property name="boundDataColumns">
+                <structure>
+                    <property name="name">productId</property>
+                    <text-property name="displayName">productId</text-property>
+                    <expression name="expression">dataSetRow["productId"]</expression>
+                    <property name="dataType">string</property>
+                </structure>
+                <structure>
+                    <property name="name">productTypeId</property>
+                    <text-property name="displayName">productTypeId</text-property>
+                    <expression name="expression">dataSetRow["productTypeId"]</expression>
+                    <property name="dataType">string</property>
+                </structure>
+                <structure>
+                    <property name="name">internalName</property>
+                    <text-property name="displayName">internalName</text-property>
+                    <expression name="expression">dataSetRow["internalName"]</expression>
+                    <property name="dataType">string</property>
+                </structure>
+            </list-property>
+            <column id="29"/>
+            <column id="30"/>
+            <column id="31"/>
+            <header>
+                <row id="11">
+                    <property name="backgroundColor">#BFBFBF</property>
+                    <property name="fontWeight">bold</property>
+                    <property name="textAlign">center</property>
+                    <cell id="12">
+                        <label id="13">
+                            <text-property name="text">productId</text-property>
+                        </label>
+                    </cell>
+                    <cell id="14">
+                        <label id="15">
+                            <text-property name="text">productTypeId</text-property>
+                        </label>
+                    </cell>
+                    <cell id="16">
+                        <label id="17">
+                            <text-property name="text">internalName</text-property>
+                        </label>
+                    </cell>
+                </row>
+            </header>
+            <detail>
+                <row id="18">
+                    <cell id="19">
+                        <data id="20">
+                            <property name="resultSetColumn">productId</property>
+                        </data>
+                    </cell>
+                    <cell id="21">
+                        <data id="22">
+                            <property name="resultSetColumn">productTypeId</property>
+                        </data>
+                    </cell>
+                    <cell id="23">
+                        <data id="24">
+                            <property name="resultSetColumn">internalName</property>
+                        </data>
+                    </cell>
+                </row>
+            </detail>
+            <footer>
+                <row id="25">
+                    <cell id="26"/>
+                    <cell id="27"/>
+                    <cell id="28"/>
+                </row>
+            </footer>
+        </table>
+    </body>
+</report>
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtCommunicationManager.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtCommunicationManager.js
new file mode 100644
index 0000000..c90d115
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtCommunicationManager.js
@@ -0,0 +1,121 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ *	BirtCommunicationManager
+ *	...
+ */
+BirtCommunicationManager = Class.create( );
+
+BirtCommunicationManager.prototype =
+{
+	__active : false,
+	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *
+	 *	@return, void
+	 */
+	initialize: function( )
+	{
+	},
+
+	/**
+	 *	Make xml http request.
+	 *
+	 *	return, void
+	 */
+	connect: function( )
+	{
+		var xmlDoc = birtSoapRequest.__xml_document;
+		
+		if( xmlDoc )
+		{
+			debug( birtSoapRequest.prettyPrintXML(xmlDoc), true);
+			if ( BrowserUtility.isSafari || BrowserUtility.isFirefox3 )
+			{
+				// WORKAROUND: sending the XML DOM doesn't replace the
+				// ampersands properly but the XMLSerializer does.
+				xmlDoc = (new XMLSerializer()).serializeToString(xmlDoc);
+			}
+		}		
+		
+		if ( !birtSoapRequest.getURL( ) ) return;
+
+		//activate delay message manager;
+		this.__active = true;
+		birtProgressBar.__start( );
+		
+		//workaround for Bugzilla Bug 144598. Add request header "Connection" as "keep-alive"
+		var myAjax = new Ajax.Request( birtSoapRequest.getURL( ), { method: 'post', postBody: xmlDoc,
+			onSuccess: this.responseHandler, onFailure: this.invalidResponseHandler,
+			requestHeaders: ['Content-Type', 'text/xml; charset=UTF-8', 'SOAPAction', '""', 'request-type', 'SOAP', 'Connection', 'keep-alive' ] } );
+
+		birtSoapRequest.reset( );
+	},
+	
+	/**
+	 *	Callback function triggered when reponse is ready, status is 200.
+	 *
+	 *	@request, httpXmlRequest instance
+	 *	@return, void
+	 */
+	responseHandler: function( request )
+	{
+		if ( isDebugging( ) )
+		{
+			debug(request.responseText, true);
+			debug(birtSoapRequest.prettyPrintXML(request.responseXML.documentElement), true);
+		}
+		
+		if ( request.responseXML && request.responseXML.documentElement )
+		{
+			birtSoapResponse.process( request.responseXML.documentElement );
+		}
+		
+		birtCommunicationManager.postProcess( );
+		//todo handle responseText
+	},
+	
+	/**
+	 *	Callback function triggered when reponse is ready status is not 200.
+	 *	Process any http (non-200) errors. Note this is not exception from
+	 *	server side.
+	 *
+	 *	@request, httpXmlRequest instance
+	 *	@return, void
+	 */
+	invalidResponseHandler: function( request )
+	{
+		debug("invalid response");
+		
+		if ( request.responseXML && request.responseXML.documentElement )
+		{
+			birtSoapResponse.process( request.responseXML.documentElement );
+		}
+		
+		birtCommunicationManager.postProcess( );
+	},
+
+	/**
+	 *	Post process after finish processing the response.
+	 *
+	 *	@return, void
+	 */
+	postProcess: function( )
+	{
+	    //deactivate delay message manager
+		birtProgressBar.__stop( );
+	    this.__active = false;
+	}
+}
+
+var birtCommunicationManager = new BirtCommunicationManager( );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtDndManager.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtDndManager.js
new file mode 100644
index 0000000..e9ff535
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtDndManager.js
@@ -0,0 +1,331 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+BirtDndManager = function( ) { 
+
+	//An item is dragging
+this.isDragging = false;
+
+};
+
+BirtDndManager.prototype = {
+
+	__dropTargetManager: null, //PRIVATE - extending classes must use accessor method
+	
+	__mousemoveHandlerFunction: null,
+	
+	__dropHandlerFunction: null,
+		
+	currentDropTarget: null, //Element that is the current valid drop target
+	
+	currentDragElement: null, //Element that is currently being dragged
+	
+	
+	/**
+	Extending classes should use this method to set the drop target manager if
+	custom drop behavior is desired
+	@param {DropTargetManager}
+	*/
+	setDropTargetManager: function( dTargetManager)
+	{
+		this.__dropTargetManager = dTargetManager;
+	},
+		
+	/**
+	Drop targets call this method to register as accepting "dragType" items
+	*/		
+	addAssociation: function(dragType, targetHtmlId, target)
+	{
+		if(this.__dropTargetManager == null)
+		{
+			throw new WRError("BirtDndManager", "DropTargetManager not set");
+		}
+		this.__dropTargetManager.addAssociation(dragType, targetHtmlId, target);
+	},
+	
+	/**
+	Delete an association when the corresponding html element is removed
+	@param dragType
+	@param dropTargetId id attribute of html element to remove
+	*/
+	deleteAssociation: function(dragType, htmlId)
+	{
+		if(this.__dropTargetManager == null)
+		{
+			throw new WRError("BirtDndManager", "DropTargetManager not set");
+		}
+		this.__dropTargetManager.deleteAssociation(dragType, htmlId);
+	},
+	
+	/**
+	startDrag redefines itself the first time it is called based on the desired type of drag drop behavior.<b>
+	*/ 
+	startDrag: function(element, event, dragType)
+	{
+			//If there is no drop target manager, define startDrag as default
+		if(this.__dropTargetManager == null)
+		{
+			this.startDrag = this.__getDefaultStartDrag();			
+		}
+		else
+		{
+			this.startDrag = this.__getCustomStartDrag();
+		}
+		this.startDrag(element, event, dragType);
+	},
+	
+	/**
+	Default start drag function handles elements that drag but do not have drop targets
+	@returns {function} default start drag function
+	*/
+	__getDefaultStartDrag: function()
+	{
+		return function(element, event, dragType)
+		{
+			debug("default startDrag");
+			if(!this.isDragging)
+			{
+				this.eventMouseout = this.elementMouseout.bindAsEventListener(this);
+			
+				this.__mousemoveHandlerFunction = this.__moveElement.bindAsEventListener(this);
+				this.__dropElementFunction = this.__dropElement.bindAsEventListener(this);
+			
+				var zIndex = this.__activateDragMask();
+				this.__elementSetUp(element, event, zIndex);
+				this.__startDragObservers(this.__mousemoveHandlerFunction, this.__dropElementFunction);
+			}
+			this.isDragging = true;
+		}
+	},
+	
+	/**
+	Custom start drag function handles elements that have drop targets
+	@returns {function} custome start drag function
+	*/
+	__getCustomStartDrag: function()
+	{	
+		return function(element, event, dragType)
+		{
+			debug("custom startDrag");
+			if(!this.isDragging)
+			{
+				
+				if(dragType == null) //There are no drop targets
+				{
+					this.__mousemoveHandlerFunction = this.__moveElement.bindAsEventListener(this);
+					this.__dropElementFunction = this.__dropElement.bindAsEventListener(this);
+				}
+				else
+				{
+					this.__dropTargetManager.setUpForDrag(dragType);
+					this.__mousemoveHandlerFunction = this.__moveElementWithTarget.bindAsEventListener(this);
+					this.__dropElementFunction = this.__dropElementWithTarget.bindAsEventListener(this);				
+				}		
+				this.eventMouseout = this.elementMouseout.bindAsEventListener(this);
+				
+				var zIndex = this.__activateDragMask();
+				this.__elementSetUp(element, event, zIndex);
+				this.__startDragObservers(this.__mousemoveHandlerFunction, this.__dropElementFunction);
+			}
+			this.isDragging = true;
+		}
+	},
+	
+	__activateDragMask: function()
+	{
+		return Mask.show();
+	},
+	
+	__deactivateDragMask: function()
+	{
+		Mask.hide();
+	},
+
+	/**
+	Set up an element to be dragged
+	*/
+	__elementSetUp: function(elem, event, zIndex)
+	{	
+		//TODO if removing selections is kept, move to utility funciton
+		//remove any existing selections
+		if(document.selection)
+		{
+			document.selection.empty();
+		}
+		else if(window.getSelection)
+		{
+			var selection = window.getSelection();
+			if(selection)
+			{
+				selection.removeAllRanges();
+			}
+		}
+	
+		this.currentDragElement = elem;
+		this.currentDragElement.oldZIndex = this.currentDragElement.style.zIndex;
+		this.currentDragElement.style.zIndex = zIndex;
+		this.currentDropTarget = null;
+			//Location of mouse
+		var mouseX = Event.pointerX(event);
+		var mouseY = Event.pointerY(event);
+			//Distance from the edge of the element to edge of browser
+		var offsets = Position.cumulativeOffset(elem);
+			//Distance from the edge of the element of mouse
+		elem.offsetX =  (mouseX - offsets[0]);
+		elem.offsetY =  (mouseY - offsets[1]);
+			
+			//Used for revert effect
+		elem.originalTop = parseInt(elem.style.top || '0');
+		elem.originalLeft = parseInt(elem.style.left || '0');		 
+	},
+	
+	/**
+	Start drag event observing
+	*/
+	__startDragObservers: function(mousemoveHandlerFunction, dropHandlerFunction)
+	{	
+		Event.observe(document, "mousemove", mousemoveHandlerFunction, false);
+		Event.observe(document, "mouseup", dropHandlerFunction, false);
+	},	
+	
+	/**
+	Move element
+	*/
+	__moveElement: function(event)
+	{
+		var xPos = Event.pointerX(event);
+		var yPos = Event.pointerY(event);
+		
+		this.__moveCurrentDragElement(xPos, yPos);				
+	},
+		
+	/**
+	Move element and use DropTargetManager to check if it can be dropped
+	*/
+	__moveElementWithTarget: function(event)
+	{	
+		var xPos = Event.pointerX(event);
+		var yPos = Event.pointerY(event);
+		
+		this.__moveCurrentDragElement(xPos, yPos);
+		
+		var oldDropTarget = this.currentDropTarget; //is the state changing?
+		var dropTarget = this.__dropTargetManager.getDropTarget(xPos, yPos);
+		
+			//Change indicator to drop allowed
+		if(dropTarget)
+		{
+			this.currentDropTarget = dropTarget;				
+			if(!oldDropTarget) 
+			{
+				var nodes = this.currentDragElement.childNodes;
+				this.toggleDropIndicator(true, nodes);
+			}
+		}
+		else //Change indicator to drop forbidden
+		{
+			this.currentDropTarget = null;
+			if(oldDropTarget)
+			{
+				var nodes = this.currentDragElement.childNodes;
+				this.toggleDropIndicator(false, nodes);
+			}
+		}			
+	},
+	
+	__moveCurrentDragElement: function(x, y)
+	{
+		var offsets = Position.cumulativeOffset(this.currentDragElement);
+	    	//subtract the element's current left, top coordinates from the offsets
+	    offsets[0] -= parseInt(this.currentDragElement.style.left || '0');
+	    offsets[1] -= parseInt(this.currentDragElement.style.top || '0');
+	        
+	    var style = this.currentDragElement.style;
+	     
+	    	//take current mouse position, subtract difference in drag object position, s
+	    style.left = (x - offsets[0] - this.currentDragElement.offsetX) + "px";
+	    style.top  = (y - offsets[1] - this.currentDragElement.offsetY) + "px";   
+	},
+	
+	/**
+	Check if the mouse button is no longer pressed, if not, call
+	eventDropped. (IE specific)<b>
+	*/ 
+	__mouseStillDown: function(event)
+	{
+		/**
+		Check that the mouse button is still down
+		(used to detect roll off the screen in IE)
+		*/
+		//debug("check mouse down");
+			//TODO refine this Check that element is really moving	
+		if(!event.which && event.button == "0")
+		{
+			this.eventDropped(event);
+			return true;
+		}
+		return false;
+	},
+	
+		
+	/**
+	Handle mouseout of drag element
+	*/
+	elementMouseout: function(event)
+	{
+		//debug("mouseout");
+		var target = Event.element( event );
+		if(target.tagName.toLowerCase() == "iframe")
+		{
+			Event.stop(event);
+			this.eventDropped(event);
+		}
+		
+	},
+	
+	__dropElement: function(event)
+	{
+		this.isDragging = false;
+
+	    Event.stopObserving(document, "mousemove", this.__mousemoveHandlerFunction);
+	    Event.stopObserving(document, "mouseup", this.__dropElementFunction);
+	    Event.stopObserving(document, "mouseout", this.eventMouseout);
+	    this.__deactivateDragMask();
+		this.currentDragElement.style.zIndex = this.currentDragElement.oldZIndex;
+	},
+	
+	__dropElementWithTarget: function(event)
+	{
+		this.__dropElement(event);
+	    
+	    this.__dropTargetManager.dropElementWithTarget(event, this.currentDragElement, this.currentDropTarget);
+	},
+	
+     
+     /**
+     Toggle drop indicator to show if item can be dropped
+     @param accept {boolean} Indicates if item is accepted
+     @param nodes {Array} Potential imageHolder nodes //TODO once indicator is decided on can be made more efficient
+     */
+     toggleDropIndicator: function(accept, nodes)
+     {     	
+		for(var j = 0 ; j < nodes.length ; j++)
+		{
+			if(nodes[j].imageHolder)
+			{
+				accept ? nodes[j].childNodes[0].style.display = "none" : nodes[j].childNodes[0].style.display = "block";
+				accept ? nodes[j].childNodes[1].style.display = "block" : nodes[j].childNodes[1].style.display = "none";
+				break;
+			}
+		}
+     }
+       
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtEvent.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtEvent.js
new file mode 100644
index 0000000..26b725c
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtEvent.js
@@ -0,0 +1,48 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	BirtEvent
+ */
+BirtEvent = Class.create( );
+
+BirtEvent.prototype =
+{
+	__E_WARN : '__E_WARN',
+	__E_BLUR : '__E_BLUR', // Blur current selection.
+	__E_GETPAGE : '__E_GETPAGE', // Getting pagination page.
+	__E_GETPAGE_INIT : '__E_GETPAGE_INIT', // Getting pagination page with parameters.
+	__E_PRINT : '__E_PRINT', // Print event.
+	__E_PRINT_SERVER : '__E_PRINT_SERVER', // Print event.
+	__E_QUERY_EXPORT : '__E_QUERY_EXPORT',
+	__E_TOC : '__E_TOC',
+	__E_TOC_IMAGE_CLICK : '__E_TOC_IMAGE_CLICK',
+	__E_PARAMETER : '__E_PARAMETER',
+	__E_CHANGE_PARAMETER : '__E_CHANGE_PARAMETER',  //Change parameter event.
+	__E_CACHE_PARAMETER : '__E_CACHE_PARAMETER',  //Cache parameter event.
+	__E_CASCADING_PARAMETER : '__E_CASCADING_PARAMETER',  //Cascading parameter event.
+	__E_PDF : '__E_PDF', // Create pdf event.
+	__E_CANCEL_TASK : '__E_CANCEL_TASK', // Cancel current task event.
+	__E_GETPAGE_ALL : '__E_GETPAGE_ALL', // Get all pages.
+	__E_EXPORT_REPORT : '__E_EXPORT_REPORT', // Export report
+ 	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	Define available birt events.
+	 *
+	 *	@return, void
+	 */
+	initialize: function( )
+	{
+	}
+}
+
+var birtEvent = new BirtEvent( );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtEventDispatcher.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtEventDispatcher.js
new file mode 100644
index 0000000..d342a06
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtEventDispatcher.js
@@ -0,0 +1,244 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ *	BirtEventDispatcher
+ *	...
+ */
+BirtEventDispatcher = Class.create( );
+
+BirtEventDispatcher.prototype =
+{
+	__focusId : null,
+	
+	__event_map : { },
+	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *
+	 *	@return, void
+	 */
+	initialize : function( )
+	{
+	},
+
+	/**
+	 *	Register birt event handler with global birt event dispatcher to
+	 *	handle birt events (Not native events).
+	 *
+	 *	@eventType, pre-defined birt event type
+	 *	@id, ui object id
+	 *	@handler, birt event handler
+	 *	@return, void
+	 */
+	registerEventHandler : function( eventType, id, handler )
+	{
+	    if ( !this.__event_map[eventType] )
+	    {
+			this.__event_map[eventType] = { };
+	    }
+	    
+		this.__event_map[eventType][id] = handler;
+	},
+	
+	/**
+	 *	Register birt event handler with global birt event dispatcher to
+	 *	handle birt events (Not native events).
+	 *
+	 *	@eventType, pre-defined birt event type
+	 *	@id, ui object id
+	 *	@handler, birt event handler
+	 *	@return, void
+	 */
+	unregisterEventHandler : function( eventType, id )
+	{	
+		if( this.__event_map[eventType] && this.__event_map[eventType][id] )
+		{   
+			delete this.__event_map[eventType][id]; //deletes 'id' property
+		}
+	},
+	
+	/**
+	Unregisters all handlers associated with a particular id
+	@param id ui object id
+	*/
+	unregisterEventHandlerById : function( id )
+	{	
+		debug(birtEventDispatcher.toString());
+		for( var eventType in this.__event_map)
+		{
+			if( this.__event_map[eventType][id])
+			{
+				delete this.__event_map[eventType][id]; //deletes 'id' property
+			}
+		}
+		debug(birtEventDispatcher.toString());
+	},
+	
+	/**
+	 *	Register birt event handler with global birt event dispatcher to
+	 *	handle birt events (Not native events).
+	 *	If the event has already been registered under another handler,
+	 *  replace that handler with new handler.
+	 *
+	 *	@eventType, pre-defined birt event type
+	 *	@id, ui object id
+	 *	@handler, birt event handler
+	 *	@return, void
+	 */
+	replaceEventHandler : function( eventType, id, handler )
+	{
+	    if ( !this.__event_map[eventType] )
+	    {
+			this.__event_map[eventType] = { };
+	    }
+	    else
+	    {
+			for( var eventId in this.__event_map[eventType] )
+			{
+				delete this.__event_map[eventType][eventId]; //unregister previous event handler
+			}
+	    }
+	    
+		this.__event_map[eventType][id] = handler;
+	},
+	
+	/**
+	 *	Fire birt event. Objects that is or is the child of current focused object are waken.
+	 *	Their registered event handlers are triggered.
+	 *
+	 *	@eventType, pr-defined birt events.
+	 *	@object, event parameters.
+	 *	@return, void
+	 */
+	fireEvent : function( eventType, object )
+	{
+		var handled = this.sendEvent( eventType, object, false );
+		if ( !handled )
+		{
+			this.broadcastEvent( birtEvent.__E_WARN );
+		}
+	},
+	
+	/**
+	 *	Fire birt event. Objects that is or is the child of current focused object are waken.
+	 *	Their registered event handlers are triggered.
+	 *
+	 *	@eventType, pr-defined birt events.
+	 *	@object, event parameters.
+	 *	@return, void
+	 */
+	broadcastEvent : function( eventType, object )
+	{
+		this.sendEvent( eventType, object, true );
+	},
+
+	/**
+	 *	Fire birt event. Objects that is or is the child of current focused object are waken.
+	 *	Their registered event handlers are triggered.
+	 *
+	 *	@eventType, pr-defined birt events.
+	 *	@object, event parameters.
+	 *	@return, void
+	 */
+	sendEvent : function( eventType, object, isBroadcast )
+	{
+		var processed = false;
+		var serverCall = false;
+		var focus = this.__focusId ? this.__focusId : birtReportDocument.__instance.id;
+		
+		for ( var id in this.__event_map[ eventType ] )
+		{
+			if ( !isBroadcast && focus && focus != id )
+			{
+				// TODO: need more complex scheme.
+				continue;
+			}
+			
+			var handler = this.__event_map[ eventType ][ id ];
+			if ( handler )
+			{
+				processed = true;
+			}
+			if ( handler( id, object ) )
+			{
+				serverCall = true;
+			}
+		}
+		
+		if( serverCall )
+		{
+			birtCommunicationManager.connect( );
+		}
+		
+		return processed;
+	},
+
+	/**
+	 *	@param id id of current DOM element in focus.
+	 */
+	setFocusId : function( id )
+	{
+		this.__focusId = id;
+	},
+	
+	/**
+	 *	@return id id of current DOM element in focus.
+	 */
+	getFocusId : function( )
+	{
+		return this.__focusId;
+	},
+	
+	/**
+	 *	Convenience method.
+	 *
+	 *	@param element current DOM element in focus, must have id
+	 */
+	setFocusElement : function( element )
+	{
+		this.__focusId = element.id || null;
+	},
+	
+	/**
+	 *	Convenience method.
+	 *
+	 *	@return element current DOM element in focus
+	 */
+	getFocusElement : function( )
+	{
+		return $( this.__focusId );
+	},
+	
+	
+	toString: function( )
+	{
+		var str = "";
+		str += "----start-------BirtEventDispatcher.toString------------";
+		str += "\n";
+		str += ("    focusId = " + this.__focusId);		
+		for(var i in this.__event_map)
+		{
+			str += "\n";
+			str += ("    eventType = " + i);
+			for(var k in this.__event_map[i])
+			{
+				str += "\n";
+				str += ("        id = " + k);
+			}
+		}
+		str += "\n";
+		str += "------end-------BirtEventDispatcher.toString------------";
+		return str;
+	}
+}
+
+var birtEventDispatcher = new BirtEventDispatcher( );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtSoapRequest.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtSoapRequest.js
new file mode 100644
index 0000000..ec660a7
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtSoapRequest.js
@@ -0,0 +1,356 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ *	BirtSoapRequest
+ *	...
+ */
+BirtSoapRequest = Class.create( );
+
+BirtSoapRequest.prototype =
+{
+	SOAP_NAMESPACE_URI : "http://schemas.xmlsoap.org/soap/envelope/",
+	BIRT_NAMESPACE_URI : "http://schemas.eclipse.org/birt",
+
+	__url : null,
+	__message : null,
+	__xml_document : null,
+	__operation_content : null,
+
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *
+	 *	@return, void
+	 */
+	initialize : function( )
+	{
+		/* 
+		   XML namespaces are supported by the following browsers :
+		   - Firefox 2 and 3
+		   - Safari 3
+		   - Mozilla 1.7.13
+		   Unsupported by:
+		   - IE6 nor IE7
+		*/ 
+		this.hasXmlNamespaceSupport = ( typeof( document.createElementNS ) != "undefined" );
+		
+		this.reset();
+	},
+	
+	/**
+	 *	Init the request message. There's only one request message DOM instance at any time,
+	 *	when client running.
+	 *
+	 *	@message, request message DOM
+	 *	@return, void
+	 */
+	setMessage : function( message )
+	{
+		// TODO: need to use dom contrcture the request.
+		this.__xml_document = message;
+	},
+
+	/**
+	 *	Retrieve the request message.
+	 *
+	 *	@return, request message in DOM
+	 */
+	getMessage : function( message )
+	{
+		return this.__message;
+	},
+
+	/**
+	 *	Retrieve the request message.
+	 *
+	 *	@return, request message in DOM
+	 */
+	setURL : function( url )
+	{
+		this.__url = url;
+	},
+	
+	/**
+	 *	Retrieve the request message.
+	 *
+	 *	@return, request message in DOM
+	 */
+	getURL : function( )
+	{
+		return this.__url;
+	},
+
+	/**
+	 * Clears the message body
+	 */
+	reset : function( )
+	{
+		// Soap envelope
+		this.__xml_document = this.createXMLDom( this.SOAP_NAMESPACE_URI, "soap:Envelope" );
+		
+ 		var soapEnv = this.__xml_document.documentElement;
+
+		// Soap body
+		var soapBody;
+		
+		if ( this.hasXmlNamespaceSupport )
+		{
+		 	soapBody = this.__xml_document.createElementNS( this.SOAP_NAMESPACE_URI, "Body" );
+		}
+		else
+		{
+		 	soapBody = this.__xml_document.createElement( "soap:Body" );
+		}
+		 	
+  		soapEnv.appendChild( soapBody );
+  		
+		// Get updated objects method
+		var getUpdatedObjects = this.createBirtElement( "GetUpdatedObjects" );
+		if ( !this.hasXmlNamespaceSupport )
+		{
+			// only the first element needs the xmlns attribute
+			getUpdatedObjects.setAttribute( "xmlns", this.BIRT_NAMESPACE_URI );
+		}
+		
+  		soapBody.appendChild( getUpdatedObjects );
+		
+		this.__operation_content = getUpdatedObjects;
+		
+		var str = this.prettyPrintXML( this.__xml_document.documentElement, false );
+		debug( "RESET XML : new message body is\n" + str );
+	},
+
+	/**
+	 * Utility method to create an XML element in the birt namespace.
+	 *
+	 * @param qualifiedName qualified name
+	 */
+	createBirtElement : function( qualifiedName )
+	{
+		if ( this.hasXmlNamespaceSupport )
+		{
+			return this.__xml_document.createElementNS( this.BIRT_NAMESPACE_URI, qualifiedName );
+		}
+		else
+		{
+			return this.__xml_document.createElement( qualifiedName );
+		}			
+	},
+
+	/**
+	 * Utility method creates an XML document.
+	 *
+	 * @param rootName the name of documentElement
+	 * @return xmlDocument a new XML document
+	 */
+	createXMLDom : function( namespaceUri, qualifiedName )
+	{
+		if ( document.implementation && document.implementation.createDocument )
+		{
+			// DOM Level 2 Browsers
+			var dom = document.implementation.createDocument( namespaceUri, qualifiedName, null );
+			if ( !dom.documentElement )
+			{
+				dom.appendChild( dom.createElement( qualifiedName ) );
+			}
+			
+			return dom;
+		}
+		else if ( window.ActiveXObject )
+		{
+			// Internet Explorer
+			var createdDocument = new ActiveXObject( "Microsoft.XMLDOM" );
+			var documentElement = createdDocument.createElement( qualifiedName );
+			createdDocument.appendChild( documentElement );
+
+			// check for a namespace prefix
+			var namespacePrefix = null;
+			var nameParts = qualifiedName.split(":");
+			if ( nameParts.length > 0 )
+			{
+				namespacePrefix = nameParts[0];
+				qualifiedName = nameParts[1];
+			}
+			
+			var nsAttribute = "xmlns";			
+			if ( namespacePrefix )
+			{
+				nsAttribute += ":" + namespacePrefix;
+			}
+			
+			documentElement.setAttribute( nsAttribute, namespaceUri );
+			return createdDocument;
+		}
+		else
+		{
+			throw "Unable to create new Document.";
+		}
+	},
+	
+	/**
+	 * Adds Operation type to message.
+	 *
+	 * @param id id of UIComponent
+	 * @param operator name of desired operation (from Constants.js)
+	 * @param data xmlElement type 'Data' or null if not applicable
+	 * @param (optional) argument[1] - argument[n] object  {name: "paramName1", value: "paramValue1"}
+	 */
+	addOperation : function( id, type, operator, data )
+	{
+		var optionalArgs = 4; //number of params
+	 	var operation = this.createBirtElement( "Operation" );
+	 	
+  		// Target
+  		var target = this.createBirtElement( "Target" );
+  		operation.appendChild( target );
+  		
+  		// Target id
+  		var reportId = this.createBirtElement( "Id" );
+		target.appendChild( reportId );
+  		var reportIdText = this.__xml_document.createTextNode( id || "Error-id" );
+		reportId.appendChild( reportIdText );
+		
+  		// Target type
+  		var reportType = this.createBirtElement( "Type" );
+		target.appendChild( reportType );
+  		var reportTypeText = this.__xml_document.createTextNode( type || "Error-id" );
+		reportType.appendChild( reportTypeText );
+		
+		// Operator
+		var operatorEl = this.createBirtElement( "Operator" );
+		var targetText = this.__xml_document.createTextNode( operator || "Error-operator" );
+		operatorEl.appendChild( targetText );
+		operation.appendChild( operatorEl );
+		
+		// Oprands
+		if( arguments.length > optionalArgs ) //there are optional parameters
+		{	
+	  		var operand, name, value;
+	  		for( var i = optionalArgs; i < arguments.length; i++ )
+	  		{
+				if( arguments[i].length && arguments[i].length > 0 )
+				{
+					for( var j = 0; j < arguments[i].length; j++ )
+					{
+						if ( !arguments[i][j].name )
+						{
+							continue;
+						}
+						
+						operand = this.createBirtElement( "Oprand" );
+						name = this.createBirtElement( "Name" );
+						nameText = this.__xml_document.createTextNode( arguments[i][j].name );
+						name.appendChild( nameText );
+						operand.appendChild( name );
+						value = this.createBirtElement( "Value" );
+						valueText = this.__xml_document.createTextNode( arguments[i][j].value );
+						value.appendChild( valueText );
+						operand.appendChild( value );
+						operation.appendChild( operand );
+					}
+				}
+				else
+				{
+					if ( arguments[i].name )
+					{
+						operand = this.createBirtElement( "Oprand" );
+						name = this.createBirtElement( "Name" );
+						nameText = this.__xml_document.createTextNode( arguments[i].name );
+						name.appendChild( nameText );
+						operand.appendChild( name );
+						value = this.createBirtElement( "Value" );
+						valueText = this.__xml_document.createTextNode( arguments[i].value );
+						value.appendChild( valueText );
+						operand.appendChild( value );
+						operation.appendChild( operand );
+					}
+				}
+			}
+	  	}
+	  	
+	  	// Data
+	  	if( data )
+	  	{
+	  		operation.appendChild( data.documentElement );
+	  	}
+	  	
+  		this.__operation_content.appendChild( operation );
+  		
+		var str = this.prettyPrintXML( this.__xml_document.documentElement, false );
+		debug( "ADDED OPERATION : new message body is\n" + str );
+	},
+		
+	/**
+	 * Creates string of xml, optionally prints to debug window.
+	 *
+	 * @param xmlRoot documentElement of xml Element
+	 * @param str leave empty -- used in recursive call
+	 * @param offset leave empty -- used in recursive call
+	 * @return String with indented tree of elements and text contents
+	 */
+	prettyPrintXML : function( xmlRoot, isDebug, str, offset )
+	{	
+		if( !str )
+		{
+			str = "";
+		}
+		
+		var myIndent = 6;
+		if( offset == null )
+		{
+			myIndent = 2;
+		}
+		else
+		{
+			myIndent += offset;
+		} 
+		var spacer = "";
+		for( var i = 0; i < myIndent;i++ )
+		{
+			spacer += " ";
+		}		
+		var topLevel = xmlRoot.childNodes;
+		var size = topLevel.length;
+		var temp;
+		for( var i = 0; i < size; i++ )
+		{	
+			var curNode = topLevel[i];
+			
+			//either node or a leaf
+			if( curNode.nodeType == "1" )
+			{	
+				str += 	spacer + "&lt" + curNode.nodeName + "&gt\n";			
+				if( isDebug )
+				{
+					debug( spacer + "&lt" + curNode.nodeName + "&gt" );
+				}
+				str = this.prettyPrintXML( curNode, isDebug, str, myIndent );
+				str += spacer + "&lt/" + curNode.nodeName + "&gt\n";
+				if( isDebug )
+				{
+					debug( spacer + "&lt/" + curNode.nodeName + "&gt" );
+				}
+			}
+			else
+			{
+				str += spacer + curNode.data + "\n";
+				if( isDebug )
+				{
+					debug( spacer + curNode.data );
+				}
+			}
+		}
+		
+		return str;
+	}
+}
+
+var birtSoapRequest = new BirtSoapRequest( );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtSoapResponse.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtSoapResponse.js
new file mode 100644
index 0000000..368692f
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/core/BirtSoapResponse.js
@@ -0,0 +1,82 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ *	BirtSoapResponse
+ *	...
+ */
+BirtSoapResponse = Class.create( );
+
+BirtSoapResponse.prototype =
+{
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *
+	 *	@return, void
+	 */
+	initialize: function( )
+	{
+	},
+	
+	/**
+	 *	Process the soap response, dispatcher message content to designated
+	 *	message handlers.
+	 *
+	 *	@message, incoming soap message DOM
+	 *	@return, void
+	 */
+	process: function( message )
+	{
+		// TODO: will gradually remove it since not all response are in soap now.
+		var soapBody = message.getElementsByTagName( 'soapenv:Body' )[ 0 ];
+		if ( !soapBody )
+		{
+			soapBody = message.getElementsByTagName( 'Body' )[ 0 ];
+		}
+		
+		if ( soapBody )
+		{
+			for ( var i = 0; i < soapBody.childNodes.length; i++ )
+			{
+				if ( soapBody.childNodes[i].nodeType == 1 ) // Need to use NodeType definition.
+				{
+					if ( soapBody.childNodes[i].tagName == 'soapenv:Fault' )
+					{
+						birtExceptionDialog.__cb_bind( soapBody.childNodes[i] );
+					}
+					else
+					{
+						var handler = eval( 'birt' + soapBody.childNodes[i].tagName + 'Handler' );
+						if ( handler )
+						{
+							handler.__process( soapBody.childNodes[i] );
+						}
+					}
+					
+					break;
+				}
+			}
+			
+			return;
+		}
+		
+		if ( message )
+		{
+			var handler = eval( 'birt' + message.tagName + 'ResponseHandler' );
+			if ( handler )
+			{
+				handler.__process( message );
+			}
+		}
+	}
+}
+
+var birtSoapResponse = new BirtSoapResponse( );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/core/Mask.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/core/Mask.js
new file mode 100644
index 0000000..1132970
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/core/Mask.js
@@ -0,0 +1,195 @@
+// Copyright 1994-2006, Actuate Software Corp., All rights reserved.
+
+Mask = Class.create();
+
+Mask.prototype = {
+
+	zIndexStack: [],
+	zIndexBase: 200, //Lowest zIndex for mask
+	zIndexCurrent: null,
+	opacity: 0, //Default opacity is zero
+	_baseElements : null,
+
+	initialize: function(useIframe, opacity)
+	{
+		this.zIndexCurrent = this.zIndexBase;
+		
+		if(useIframe)
+		{
+			this.__useIFrame = true;
+			this.__mask = document.createElement( 'iframe' );
+			// Workaround for IE https secure warning
+			this.__mask.src = "birt/pages/common/blank.html";
+		}
+		else
+		{
+			this.__useIFrame = false;
+			this.__mask = document.createElement( 'div' );
+		}
+
+		this.__mask.id = "Mask";
+		//default opacity to zero
+		if(opacity)
+		{
+			debug("setting opacity to : " + opacity);
+			this.opacity = opacity;
+		}
+		document.body.appendChild( this.__mask );
+		this.__mask.style.position = 'absolute';
+		this.__mask.style.top = '0px';
+		this.__mask.style.left = '0px';
+		var width = BirtPosition.viewportWidth();
+		this.__mask.style.width = width + 'px';
+		var height = BirtPosition.viewportHeight();
+		this.__mask.style.height = height + 'px';
+		this.__mask.style.zIndex = '200';
+		this.__mask.style.backgroundColor = '#0044ff';
+		this.__mask.style.filter = 'alpha( opacity=' + ( this.opacity * 100 ) + ')';
+		this.__mask.style.opacity = this.opacity;
+		this.__mask.scrolling = 'no';
+		this.__mask.marginHeight = '0px';
+		this.__mask.marginWidth = '0px';
+		this.__mask.style.display = 'none';
+		// Support low version Mozilla/NS
+		this.__mask.style.MozOpacity = 0;
+		
+		if(useIframe)
+		{
+			this.__useIFrame = true;
+			this.__progressBarMask = document.createElement( 'iframe' );
+			// Workaround for IE https secure warning
+			this.__progressBarMask.src = "birt/pages/common/blank.html";
+		}
+		else
+		{
+			this.__useIFrame = false;
+			this.__progressBarMask = document.createElement( 'div' );
+		}
+	
+		document.body.appendChild( this.__progressBarMask );
+		this.__progressBarMask.style.position = 'absolute';
+		this.__progressBarMask.style.top = '0px';
+		this.__progressBarMask.style.left = '0px';
+		var width = BirtPosition.viewportWidth();
+		this.__progressBarMask.style.width = width + 'px';
+		var height = BirtPosition.viewportHeight();
+		this.__progressBarMask.style.height = height + 'px';
+		this.__progressBarMask.style.zIndex = '200';
+		this.__progressBarMask.style.backgroundColor = '#ff0000';
+		this.__progressBarMask.style.filter = 'alpha( opacity=' + ( this.opacity * 100 ) + ')';
+		this.__progressBarMask.style.opacity = this.opacity;
+		this.__progressBarMask.scrolling = 'no';
+		this.__progressBarMask.marginHeight = '0px';
+		this.__progressBarMask.marginWidth = '0px';
+		this.__progressBarMask.style.display = 'none';
+		this.__progressBarMask.style.cursor = "move"; //cursor is set to a different value than desired so that change is trigged in IE
+		
+		this.__eh_resize_closure = this.__eh_resize.bindAsEventListener( this );
+		Event.observe( window, 'resize', this.__eh_resize_closure, false );
+	},
+	
+	/**
+	 * Sets the element DOM objects present on the main window.
+	 * They will be disabled when the mask is floating on the top
+	 * of them.
+	 * @param baseElements array of base elements
+	 */
+	setBaseElements : function( baseElements )
+	{
+		this._baseElements = baseElements;
+	},
+	
+	/*
+	If mask is not shown, shows mask, otherwise, moves mask zIndex above last returned zIndex.
+	@returns zIndex for element to place directly above mask
+	*/
+	show: function()
+	{
+		if(this.zIndexStack.length == 0)
+		{
+			this._updateElements(this._baseElements, false);
+			
+			Element.show( this.__mask );
+		}
+		this.__mask.style.zIndex = this.zIndexCurrent;
+		this.zIndexStack.push(this.zIndexCurrent);
+		this.zIndexCurrent++;
+		var dialogZIndex = this.zIndexCurrent;
+		this.zIndexCurrent++;
+		
+		return dialogZIndex;
+	},
+	
+	/*
+	Resizes masks to current screen width (not including scrollbars)
+	*/
+	__eh_resize: function()
+	{
+		var width = BirtPosition.viewportWidth();
+		var height = BirtPosition.viewportHeight();
+		
+		this.__mask.style.width = width + 'px';
+		this.__mask.style.height = height + 'px';
+		this.__progressBarMask.style.width = width + 'px';
+		this.__progressBarMask.style.height = height + 'px';
+	},
+	
+	/*
+	Shows progress bar mask above the highest regular item zIndex.
+	*/
+	showProgressBarMask: function()
+	{		
+		this.__progressBarMask.style.cursor = "wait";
+		
+		Element.show( this.__progressBarMask );
+
+		this.__progressBarMask.style.zIndex = this.zIndexCurrent;
+		
+		return (this.zIndexCurrent + 1);
+		
+	},
+	
+	hide: function()
+	{
+		if(this.zIndexStack.length == 1)
+		{
+			this._updateElements(this._baseElements, true);
+			
+			Element.hide( this.__mask );
+			this.zIndexStack.pop();
+			this.zIndexCurrent = this.zIndexBase;
+		}
+		else
+		{
+			this.zIndexCurrent = this.zIndexStack.pop();
+			this.__mask.style.zIndex = this.zIndexStack[this.zIndexStack.length -1];
+		}
+	},
+	
+	hideProgressBarMask: function()
+	{	
+		this.__progressBarMask.style.cursor = "move";
+			
+		Element.hide( this.__progressBarMask );
+	},
+	
+	isIFrame: function()
+	{
+		return this.__useIFrame;
+	},
+	
+	_updateElements : function(elements, enable)
+	{
+		if ( !elements )
+		{
+			return;
+		}
+		
+		var func = enable?birtUtility.restoreTabIndexes:birtUtility.disableTabIndexes;
+		for ( var i = 0; i < elements.length; i++ )
+		{
+			func.call(birtUtility, $(elements[i]));
+		}
+	}
+
+}
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/lib/prototype.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/lib/prototype.js
new file mode 100644
index 0000000..e9ccd3c
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/lib/prototype.js
@@ -0,0 +1,1785 @@
+/*  Prototype JavaScript framework, version 1.4.0
+ *  (c) 2005 Sam Stephenson <sam@conio.net>
+ *
+ *  THIS FILE IS AUTOMATICALLY GENERATED. When sending patches, please diff
+ *  against the source tree, available from the Prototype darcs repository.
+ *
+ *  Prototype is freely distributable under the terms of an MIT-style license.
+ *
+ *  For details, see the Prototype web site: http://prototype.conio.net/
+ *
+/*--------------------------------------------------------------------------*/
+
+var Prototype = {
+  Version: '1.4.0',
+  ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
+
+  emptyFunction: function() {},
+  K: function(x) {return x}
+}
+
+var Class = {
+  create: function() {
+    return function() {
+      this.initialize.apply(this, arguments);
+    }
+  }
+}
+
+var Abstract = new Object();
+
+Object.extend = function(destination, source) {
+  for (property in source) {
+    destination[property] = source[property];
+  }
+  return destination;
+}
+
+Object.inspect = function(object) {
+  try {
+    if (object == undefined) return 'undefined';
+    if (object == null) return 'null';
+    return object.inspect ? object.inspect() : object.toString();
+  } catch (e) {
+    if (e instanceof RangeError) return '...';
+    throw e;
+  }
+}
+
+Function.prototype.bind = function() {
+  var __method = this, args = $A(arguments), object = args.shift();
+  return function() {
+    return __method.apply(object, args.concat($A(arguments)));
+  }
+}
+
+Function.prototype.bindAsEventListener = function(object) {
+  var __method = this;
+  return function(event) {
+    return __method.call(object, event || window.event);
+  }
+}
+
+Object.extend(Number.prototype, {
+  toColorPart: function() {
+    var digits = this.toString(16);
+    if (this < 16) return '0' + digits;
+    return digits;
+  },
+
+  succ: function() {
+    return this + 1;
+  },
+
+  times: function(iterator) {
+    $R(0, this, true).each(iterator);
+    return this;
+  }
+});
+
+var Try = {
+  these: function() {
+    var returnValue;
+
+    for (var i = 0; i < arguments.length; i++) {
+      var lambda = arguments[i];
+      try {
+        returnValue = lambda();
+        break;
+      } catch (e) {}
+    }
+
+    return returnValue;
+  }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var PeriodicalExecuter = Class.create();
+PeriodicalExecuter.prototype = {
+  initialize: function(callback, frequency) {
+    this.callback = callback;
+    this.frequency = frequency;
+    this.currentlyExecuting = false;
+
+    this.registerCallback();
+  },
+
+  registerCallback: function() {
+    setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
+  },
+
+  onTimerEvent: function() {
+    if (!this.currentlyExecuting) {
+      try {
+        this.currentlyExecuting = true;
+        this.callback();
+      } finally {
+        this.currentlyExecuting = false;
+      }
+    }
+  }
+}
+
+/*--------------------------------------------------------------------------*/
+
+function $() {
+  var elements = new Array();
+
+  for (var i = 0; i < arguments.length; i++) {
+    var element = arguments[i];
+    if (typeof element == 'string')
+      element = document.getElementById(element);
+
+    if (arguments.length == 1)
+      return element;
+
+    elements.push(element);
+  }
+
+  return elements;
+}
+Object.extend(String.prototype, {
+  stripTags: function() {
+    return this.replace(/<\/?[^>]+>/gi, '');
+  },
+
+  stripScripts: function() {
+    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
+  },
+
+  extractScripts: function() {
+    var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
+    var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
+    return (this.match(matchAll) || []).map(function(scriptTag) {
+      return (scriptTag.match(matchOne) || ['', ''])[1];
+    });
+  },
+
+  evalScripts: function() {
+    return this.extractScripts().map(eval);
+  },
+
+  escapeHTML: function() {
+    var div = document.createElement('div');
+    var text = document.createTextNode(this);
+    div.appendChild(text);
+    return div.innerHTML;
+  },
+
+  unescapeHTML: function() {
+    var div = document.createElement('div');
+    div.innerHTML = this.stripTags();
+    return div.childNodes[0] ? div.childNodes[0].nodeValue : '';
+  },
+
+  toQueryParams: function() {
+    var pairs = this.match(/^\??(.*)$/)[1].split('&');
+    return pairs.inject({}, function(params, pairString) {
+      var pair = pairString.split('=');
+      params[pair[0]] = pair[1];
+      return params;
+    });
+  },
+
+  toArray: function() {
+    return this.split('');
+  },
+
+  camelize: function() {
+    var oStringList = this.split('-');
+    if (oStringList.length == 1) return oStringList[0];
+
+    var camelizedString = this.indexOf('-') == 0
+      ? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1)
+      : oStringList[0];
+
+    for (var i = 1, len = oStringList.length; i < len; i++) {
+      var s = oStringList[i];
+      camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
+    }
+
+    return camelizedString;
+  },
+
+  inspect: function() {
+    return "'" + this.replace('\\', '\\\\').replace("'", '\\\'') + "'";
+  }
+});
+
+String.prototype.parseQuery = String.prototype.toQueryParams;
+
+var $break    = new Object();
+var $continue = new Object();
+
+var Enumerable = {
+  each: function(iterator) {
+    var index = 0;
+    try {
+      this._each(function(value) {
+        try {
+          iterator(value, index++);
+        } catch (e) {
+          if (e != $continue) throw e;
+        }
+      });
+    } catch (e) {
+      if (e != $break) throw e;
+    }
+  },
+
+  all: function(iterator) {
+    var result = true;
+    this.each(function(value, index) {
+      result = result && !!(iterator || Prototype.K)(value, index);
+      if (!result) throw $break;
+    });
+    return result;
+  },
+
+  any: function(iterator) {
+    var result = true;
+    this.each(function(value, index) {
+      if (result = !!(iterator || Prototype.K)(value, index))
+        throw $break;
+    });
+    return result;
+  },
+
+  collect: function(iterator) {
+    var results = [];
+    this.each(function(value, index) {
+      results.push(iterator(value, index));
+    });
+    return results;
+  },
+
+  detect: function (iterator) {
+    var result;
+    this.each(function(value, index) {
+      if (iterator(value, index)) {
+        result = value;
+        throw $break;
+      }
+    });
+    return result;
+  },
+
+  findAll: function(iterator) {
+    var results = [];
+    this.each(function(value, index) {
+      if (iterator(value, index))
+        results.push(value);
+    });
+    return results;
+  },
+
+  grep: function(pattern, iterator) {
+    var results = [];
+    this.each(function(value, index) {
+      var stringValue = value.toString();
+      if (stringValue.match(pattern))
+        results.push((iterator || Prototype.K)(value, index));
+    })
+    return results;
+  },
+
+  include: function(object) {
+    var found = false;
+    this.each(function(value) {
+      if (value == object) {
+        found = true;
+        throw $break;
+      }
+    });
+    return found;
+  },
+
+  inject: function(memo, iterator) {
+    this.each(function(value, index) {
+      memo = iterator(memo, value, index);
+    });
+    return memo;
+  },
+
+  invoke: function(method) {
+    var args = $A(arguments).slice(1);
+    return this.collect(function(value) {
+      return value[method].apply(value, args);
+    });
+  },
+
+  max: function(iterator) {
+    var result;
+    this.each(function(value, index) {
+      value = (iterator || Prototype.K)(value, index);
+      if (value >= (result || value))
+        result = value;
+    });
+    return result;
+  },
+
+  min: function(iterator) {
+    var result;
+    this.each(function(value, index) {
+      value = (iterator || Prototype.K)(value, index);
+      if (value <= (result || value))
+        result = value;
+    });
+    return result;
+  },
+
+  partition: function(iterator) {
+    var trues = [], falses = [];
+    this.each(function(value, index) {
+      ((iterator || Prototype.K)(value, index) ?
+        trues : falses).push(value);
+    });
+    return [trues, falses];
+  },
+
+  pluck: function(property) {
+    var results = [];
+    this.each(function(value, index) {
+      results.push(value[property]);
+    });
+    return results;
+  },
+
+  reject: function(iterator) {
+    var results = [];
+    this.each(function(value, index) {
+      if (!iterator(value, index))
+        results.push(value);
+    });
+    return results;
+  },
+
+  sortBy: function(iterator) {
+    return this.collect(function(value, index) {
+      return {value: value, criteria: iterator(value, index)};
+    }).sort(function(left, right) {
+      var a = left.criteria, b = right.criteria;
+      return a < b ? -1 : a > b ? 1 : 0;
+    }).pluck('value');
+  },
+
+  toArray: function() {
+    return this.collect(Prototype.K);
+  },
+
+  zip: function() {
+    var iterator = Prototype.K, args = $A(arguments);
+    if (typeof args.last() == 'function')
+      iterator = args.pop();
+
+    var collections = [this].concat(args).map($A);
+    return this.map(function(value, index) {
+      iterator(value = collections.pluck(index));
+      return value;
+    });
+  },
+
+  inspect: function() {
+    return '#<Enumerable:' + this.toArray().inspect() + '>';
+  }
+}
+
+Object.extend(Enumerable, {
+  map:     Enumerable.collect,
+  find:    Enumerable.detect,
+  select:  Enumerable.findAll,
+  member:  Enumerable.include,
+  entries: Enumerable.toArray
+});
+var $A = Array.from = function(iterable) {
+  if (!iterable) return [];
+  if (iterable.toArray) {
+    return iterable.toArray();
+  } else {
+    var results = [];
+    for (var i = 0; i < iterable.length; i++)
+      results.push(iterable[i]);
+    return results;
+  }
+}
+
+Object.extend(Array.prototype, Enumerable);
+
+Array.prototype._reverse = Array.prototype.reverse;
+
+Object.extend(Array.prototype, {
+  _each: function(iterator) {
+    for (var i = 0; i < this.length; i++)
+      iterator(this[i]);
+  },
+
+  clear: function() {
+    this.length = 0;
+    return this;
+  },
+
+  first: function() {
+    return this[0];
+  },
+
+  last: function() {
+    return this[this.length - 1];
+  },
+
+  compact: function() {
+    return this.select(function(value) {
+      return value != undefined || value != null;
+    });
+  },
+
+  flatten: function() {
+    return this.inject([], function(array, value) {
+      return array.concat(value.constructor == Array ?
+        value.flatten() : [value]);
+    });
+  },
+
+  without: function() {
+    var values = $A(arguments);
+    return this.select(function(value) {
+      return !values.include(value);
+    });
+  },
+
+  indexOf: function(object) {
+    for (var i = 0; i < this.length; i++)
+      if (this[i] == object) return i;
+    return -1;
+  },
+
+  reverse: function(inline) {
+    return (inline !== false ? this : this.toArray())._reverse();
+  },
+
+  shift: function() {
+    var result = this[0];
+    for (var i = 0; i < this.length - 1; i++)
+      this[i] = this[i + 1];
+    this.length--;
+    return result;
+  },
+
+  inspect: function() {
+    return '[' + this.map(Object.inspect).join(', ') + ']';
+  }
+});
+var Hash = {
+  _each: function(iterator) {
+    for (key in this) {
+      var value = this[key];
+      if (typeof value == 'function') continue;
+
+      var pair = [key, value];
+      pair.key = key;
+      pair.value = value;
+      iterator(pair);
+    }
+  },
+
+  keys: function() {
+    return this.pluck('key');
+  },
+
+  values: function() {
+    return this.pluck('value');
+  },
+
+  merge: function(hash) {
+    return $H(hash).inject($H(this), function(mergedHash, pair) {
+      mergedHash[pair.key] = pair.value;
+      return mergedHash;
+    });
+  },
+
+  toQueryString: function() {
+    return this.map(function(pair) {
+      return pair.map(encodeURIComponent).join('=');
+    }).join('&');
+  },
+
+  inspect: function() {
+    return '#<Hash:{' + this.map(function(pair) {
+      return pair.map(Object.inspect).join(': ');
+    }).join(', ') + '}>';
+  }
+}
+
+function $H(object) {
+  var hash = Object.extend({}, object || {});
+  Object.extend(hash, Enumerable);
+  Object.extend(hash, Hash);
+  return hash;
+}
+ObjectRange = Class.create();
+Object.extend(ObjectRange.prototype, Enumerable);
+Object.extend(ObjectRange.prototype, {
+  initialize: function(start, end, exclusive) {
+    this.start = start;
+    this.end = end;
+    this.exclusive = exclusive;
+  },
+
+  _each: function(iterator) {
+    var value = this.start;
+    do {
+      iterator(value);
+      value = value.succ();
+    } while (this.include(value));
+  },
+
+  include: function(value) {
+    if (value < this.start)
+      return false;
+    if (this.exclusive)
+      return value < this.end;
+    return value <= this.end;
+  }
+});
+
+var $R = function(start, end, exclusive) {
+  return new ObjectRange(start, end, exclusive);
+}
+
+var Ajax = {
+  getTransport: function() {
+    return Try.these(
+      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
+      function() {return new ActiveXObject('Microsoft.XMLHTTP')},
+      function() {return new XMLHttpRequest()}
+    ) || false;
+  },
+
+  activeRequestCount: 0
+}
+
+Ajax.Responders = {
+  responders: [],
+
+  _each: function(iterator) {
+    this.responders._each(iterator);
+  },
+
+  register: function(responderToAdd) {
+    if (!this.include(responderToAdd))
+      this.responders.push(responderToAdd);
+  },
+
+  unregister: function(responderToRemove) {
+    this.responders = this.responders.without(responderToRemove);
+  },
+
+  dispatch: function(callback, request, transport, json) {
+    this.each(function(responder) {
+      if (responder[callback] && typeof responder[callback] == 'function') {
+        try {
+          responder[callback].apply(responder, [request, transport, json]);
+        } catch (e) {}
+      }
+    });
+  }
+};
+
+Object.extend(Ajax.Responders, Enumerable);
+
+Ajax.Responders.register({
+  onCreate: function() {
+    Ajax.activeRequestCount++;
+  },
+
+  onComplete: function() {
+    Ajax.activeRequestCount--;
+  }
+});
+
+Ajax.Base = function() {};
+Ajax.Base.prototype = {
+  setOptions: function(options) {
+    this.options = {
+      method:       'post',
+      asynchronous: true,
+      parameters:   ''
+    }
+    Object.extend(this.options, options || {});
+  },
+
+  responseIsSuccess: function() {
+    return this.transport.status == undefined
+        || this.transport.status == 0
+        || (this.transport.status >= 200 && this.transport.status < 300);
+  },
+
+  responseIsFailure: function() {
+    return !this.responseIsSuccess();
+  }
+}
+
+Ajax.Request = Class.create();
+Ajax.Request.Events =
+  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
+
+Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
+  initialize: function(url, options) {
+    this.transport = Ajax.getTransport();
+    this.setOptions(options);
+    this.request(url);
+  },
+
+  request: function(url) {
+    var parameters = this.options.parameters || '';
+    if (parameters.length > 0) parameters += '&_=';
+
+    try {
+      this.url = url;
+      if (this.options.method == 'get' && parameters.length > 0)
+        this.url += (this.url.match(/\?/) ? '&' : '?') + parameters;
+
+      Ajax.Responders.dispatch('onCreate', this, this.transport);
+
+      this.transport.open(this.options.method, this.url,
+        this.options.asynchronous);
+
+      if (this.options.asynchronous) {
+        this.transport.onreadystatechange = this.onStateChange.bind(this);
+        setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10);
+      }
+
+      this.setRequestHeaders();
+
+      var body = this.options.postBody ? this.options.postBody : parameters;
+      this.transport.send(this.options.method == 'post' ? body : null);
+
+    } catch (e) {
+      this.dispatchException(e);
+    }
+  },
+
+  setRequestHeaders: function() {
+    var requestHeaders =
+      ['X-Requested-With', 'XMLHttpRequest',
+       'X-Prototype-Version', Prototype.Version];
+
+    if (this.options.method == 'post') {
+      requestHeaders.push('Content-type',
+        'application/x-www-form-urlencoded');
+
+      /* Force "Connection: close" for Mozilla browsers to work around
+       * a bug where XMLHttpReqeuest sends an incorrect Content-length
+       * header. See Mozilla Bugzilla #246651.
+       */
+      if (this.transport.overrideMimeType)
+        requestHeaders.push('Connection', 'close');
+    }
+
+    if (this.options.requestHeaders)
+      requestHeaders.push.apply(requestHeaders, this.options.requestHeaders);
+
+    for (var i = 0; i < requestHeaders.length; i += 2)
+      this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]);
+  },
+
+  onStateChange: function() {
+    var readyState = this.transport.readyState;
+    if (readyState != 1)
+      this.respondToReadyState(this.transport.readyState);
+  },
+
+  header: function(name) {
+    try {
+      return this.transport.getResponseHeader(name);
+    } catch (e) {}
+  },
+
+  evalJSON: function() {
+    try {
+      return eval(this.header('X-JSON'));
+    } catch (e) {}
+  },
+
+  evalResponse: function() {
+    try {
+      return eval(this.transport.responseText);
+    } catch (e) {
+      this.dispatchException(e);
+    }
+  },
+
+  respondToReadyState: function(readyState) {
+    var event = Ajax.Request.Events[readyState];
+    var transport = this.transport, json = this.evalJSON();
+
+    if (event == 'Complete') {
+      try {
+        (this.options['on' + this.transport.status]
+         || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')]
+         || Prototype.emptyFunction)(transport, json);
+      } catch (e) {
+        this.dispatchException(e);
+      }
+
+      if ((this.header('Content-type') || '').match(/^text\/javascript/i))
+        this.evalResponse();
+    }
+
+    try {
+      (this.options['on' + event] || Prototype.emptyFunction)(transport, json);
+      Ajax.Responders.dispatch('on' + event, this, transport, json);
+    } catch (e) {
+      this.dispatchException(e);
+    }
+
+    /* Avoid memory leak in MSIE: clean up the oncomplete event handler */
+    if (event == 'Complete')
+      this.transport.onreadystatechange = Prototype.emptyFunction;
+  },
+
+  dispatchException: function(exception) {
+    (this.options.onException || Prototype.emptyFunction)(this, exception);
+    Ajax.Responders.dispatch('onException', this, exception);
+  }
+});
+
+Ajax.Updater = Class.create();
+
+Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {
+  initialize: function(container, url, options) {
+    this.containers = {
+      success: container.success ? $(container.success) : $(container),
+      failure: container.failure ? $(container.failure) :
+        (container.success ? null : $(container))
+    }
+
+    this.transport = Ajax.getTransport();
+    this.setOptions(options);
+
+    var onComplete = this.options.onComplete || Prototype.emptyFunction;
+    this.options.onComplete = (function(transport, object) {
+      this.updateContent();
+      onComplete(transport, object);
+    }).bind(this);
+
+    this.request(url);
+  },
+
+  updateContent: function() {
+    var receiver = this.responseIsSuccess() ?
+      this.containers.success : this.containers.failure;
+    var response = this.transport.responseText;
+
+    if (!this.options.evalScripts)
+      response = response.stripScripts();
+
+    if (receiver) {
+      if (this.options.insertion) {
+        new this.options.insertion(receiver, response);
+      } else {
+        Element.update(receiver, response);
+      }
+    }
+
+    if (this.responseIsSuccess()) {
+      if (this.onComplete)
+        setTimeout(this.onComplete.bind(this), 10);
+    }
+  }
+});
+
+Ajax.PeriodicalUpdater = Class.create();
+Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {
+  initialize: function(container, url, options) {
+    this.setOptions(options);
+    this.onComplete = this.options.onComplete;
+
+    this.frequency = (this.options.frequency || 2);
+    this.decay = (this.options.decay || 1);
+
+    this.updater = {};
+    this.container = container;
+    this.url = url;
+
+    this.start();
+  },
+
+  start: function() {
+    this.options.onComplete = this.updateComplete.bind(this);
+    this.onTimerEvent();
+  },
+
+  stop: function() {
+    this.updater.onComplete = undefined;
+    clearTimeout(this.timer);
+    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
+  },
+
+  updateComplete: function(request) {
+    if (this.options.decay) {
+      this.decay = (request.responseText == this.lastText ?
+        this.decay * this.options.decay : 1);
+
+      this.lastText = request.responseText;
+    }
+    this.timer = setTimeout(this.onTimerEvent.bind(this),
+      this.decay * this.frequency * 1000);
+  },
+
+  onTimerEvent: function() {
+    this.updater = new Ajax.Updater(this.container, this.url, this.options);
+  }
+});
+document.getElementsByClassName = function(className, parentElement) {
+  var children = ($(parentElement) || document.body).getElementsByTagName('*');
+  return $A(children).inject([], function(elements, child) {
+    if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
+      elements.push(child);
+    return elements;
+  });
+}
+
+/*--------------------------------------------------------------------------*/
+
+if (!window.Element) {
+  var Element = new Object();
+}
+
+Object.extend(Element, {
+  visible: function(element) {
+    return $(element).style.display != 'none';
+  },
+
+  toggle: function() {
+    for (var i = 0; i < arguments.length; i++) {
+      var element = $(arguments[i]);
+      Element[Element.visible(element) ? 'hide' : 'show'](element);
+    }
+  },
+
+  hide: function() {
+    for (var i = 0; i < arguments.length; i++) {
+      var element = $(arguments[i]);
+      element.style.display = 'none';
+    }
+  },
+
+  show: function() {
+    for (var i = 0; i < arguments.length; i++) {
+      var element = $(arguments[i]);
+      element.style.display = '';
+    }
+  },
+
+  remove: function(element) {
+    element = $(element);
+    element.parentNode.removeChild(element);
+  },
+
+  update: function(element, html) {
+    $(element).innerHTML = html.stripScripts();
+    setTimeout(function() {html.evalScripts()}, 10);
+  },
+
+  getHeight: function(element) {
+    element = $(element);
+    return element.offsetHeight;
+  },
+
+  classNames: function(element) {
+    return new Element.ClassNames(element);
+  },
+
+  hasClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    return Element.classNames(element).include(className);
+  },
+
+  addClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    return Element.classNames(element).add(className);
+  },
+
+  removeClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    return Element.classNames(element).remove(className);
+  },
+
+  // removes whitespace-only text node children
+  cleanWhitespace: function(element) {
+    element = $(element);
+    for (var i = 0; i < element.childNodes.length; i++) {
+      var node = element.childNodes[i];
+      if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
+        Element.remove(node);
+    }
+  },
+
+  empty: function(element) {
+    return $(element).innerHTML.match(/^\s*$/);
+  },
+
+  scrollTo: function(element) {
+    element = $(element);
+    var x = element.x ? element.x : element.offsetLeft,
+        y = element.y ? element.y : element.offsetTop;
+    window.scrollTo(x, y);
+  },
+
+  getStyle: function(element, style) {
+    element = $(element);
+    var value = element.style[style.camelize()];
+    if (!value) {
+      if (document.defaultView && document.defaultView.getComputedStyle) {
+        var css = document.defaultView.getComputedStyle(element, null);
+        value = css ? css.getPropertyValue(style) : null;
+      } else if (element.currentStyle) {
+        value = element.currentStyle[style.camelize()];
+      }
+    }
+
+    if (window.opera && ['left', 'top', 'right', 'bottom'].include(style))
+      if (Element.getStyle(element, 'position') == 'static') value = 'auto';
+
+    return value == 'auto' ? null : value;
+  },
+
+  setStyle: function(element, style) {
+    element = $(element);
+    for (name in style)
+      element.style[name.camelize()] = style[name];
+  },
+
+  getDimensions: function(element) {
+    element = $(element);
+    if (Element.getStyle(element, 'display') != 'none')
+      return {width: element.offsetWidth, height: element.offsetHeight};
+
+    // All *Width and *Height properties give 0 on elements with display none,
+    // so enable the element temporarily
+    var els = element.style;
+    var originalVisibility = els.visibility;
+    var originalPosition = els.position;
+    els.visibility = 'hidden';
+    els.position = 'absolute';
+    els.display = '';
+    var originalWidth = element.clientWidth;
+    var originalHeight = element.clientHeight;
+    els.display = 'none';
+    els.position = originalPosition;
+    els.visibility = originalVisibility;
+    return {width: originalWidth, height: originalHeight};
+  },
+
+  makePositioned: function(element) {
+    element = $(element);
+    var pos = Element.getStyle(element, 'position');
+    if (pos == 'static' || !pos) {
+      element._madePositioned = true;
+      element.style.position = 'relative';
+      // Opera returns the offset relative to the positioning context, when an
+      // element is position relative but top and left have not been defined
+      if (window.opera) {
+        element.style.top = 0;
+        element.style.left = 0;
+      }
+    }
+  },
+
+  undoPositioned: function(element) {
+    element = $(element);
+    if (element._madePositioned) {
+      element._madePositioned = undefined;
+      element.style.position =
+        element.style.top =
+        element.style.left =
+        element.style.bottom =
+        element.style.right = '';
+    }
+  },
+
+  makeClipping: function(element) {
+    element = $(element);
+    if (element._overflow) return;
+    element._overflow = element.style.overflow;
+    if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')
+      element.style.overflow = 'hidden';
+  },
+
+  undoClipping: function(element) {
+    element = $(element);
+    if (element._overflow) return;
+    element.style.overflow = element._overflow;
+    element._overflow = undefined;
+  }
+});
+
+var Toggle = new Object();
+Toggle.display = Element.toggle;
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.Insertion = function(adjacency) {
+  this.adjacency = adjacency;
+}
+
+Abstract.Insertion.prototype = {
+  initialize: function(element, content) {
+    this.element = $(element);
+    this.content = content.stripScripts();
+
+    if (this.adjacency && this.element.insertAdjacentHTML) {
+      try {
+        this.element.insertAdjacentHTML(this.adjacency, this.content);
+      } catch (e) {
+        if (this.element.tagName.toLowerCase() == 'tbody') {
+          this.insertContent(this.contentFromAnonymousTable());
+        } else {
+          throw e;
+        }
+      }
+    } else {
+      this.range = this.element.ownerDocument.createRange();
+      if (this.initializeRange) this.initializeRange();
+      this.insertContent([this.range.createContextualFragment(this.content)]);
+    }
+
+    setTimeout(function() {content.evalScripts()}, 10);
+  },
+
+  contentFromAnonymousTable: function() {
+    var div = document.createElement('div');
+    div.innerHTML = '<table><tbody>' + this.content + '</tbody></table>';
+    return $A(div.childNodes[0].childNodes[0].childNodes);
+  }
+}
+
+var Insertion = new Object();
+
+Insertion.Before = Class.create();
+Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), {
+  initializeRange: function() {
+    this.range.setStartBefore(this.element);
+  },
+
+  insertContent: function(fragments) {
+    fragments.each((function(fragment) {
+      this.element.parentNode.insertBefore(fragment, this.element);
+    }).bind(this));
+  }
+});
+
+Insertion.Top = Class.create();
+Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), {
+  initializeRange: function() {
+    this.range.selectNodeContents(this.element);
+    this.range.collapse(true);
+  },
+
+  insertContent: function(fragments) {
+    fragments.reverse(false).each((function(fragment) {
+      this.element.insertBefore(fragment, this.element.firstChild);
+    }).bind(this));
+  }
+});
+
+Insertion.Bottom = Class.create();
+Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {
+  initializeRange: function() {
+    this.range.selectNodeContents(this.element);
+    this.range.collapse(this.element);
+  },
+
+  insertContent: function(fragments) {
+    fragments.each((function(fragment) {
+      this.element.appendChild(fragment);
+    }).bind(this));
+  }
+});
+
+Insertion.After = Class.create();
+Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), {
+  initializeRange: function() {
+    this.range.setStartAfter(this.element);
+  },
+
+  insertContent: function(fragments) {
+    fragments.each((function(fragment) {
+      this.element.parentNode.insertBefore(fragment,
+        this.element.nextSibling);
+    }).bind(this));
+  }
+});
+
+/*--------------------------------------------------------------------------*/
+
+Element.ClassNames = Class.create();
+Element.ClassNames.prototype = {
+  initialize: function(element) {
+    this.element = $(element);
+  },
+
+  _each: function(iterator) {
+    this.element.className.split(/\s+/).select(function(name) {
+      return name.length > 0;
+    })._each(iterator);
+  },
+
+  set: function(className) {
+    this.element.className = className;
+  },
+
+  add: function(classNameToAdd) {
+    if (this.include(classNameToAdd)) return;
+    this.set(this.toArray().concat(classNameToAdd).join(' '));
+  },
+
+  remove: function(classNameToRemove) {
+    if (!this.include(classNameToRemove)) return;
+    this.set(this.select(function(className) {
+      return className != classNameToRemove;
+    }).join(' '));
+  },
+
+  toString: function() {
+    return this.toArray().join(' ');
+  }
+}
+
+Object.extend(Element.ClassNames.prototype, Enumerable);
+var Field = {
+  clear: function() {
+    for (var i = 0; i < arguments.length; i++)
+      $(arguments[i]).value = '';
+  },
+
+  focus: function(element) {
+    $(element).focus();
+  },
+
+  present: function() {
+    for (var i = 0; i < arguments.length; i++)
+      if ($(arguments[i]).value == '') return false;
+    return true;
+  },
+
+  select: function(element) {
+    $(element).select();
+  },
+
+  activate: function(element) {
+    element = $(element);
+    element.focus();
+    if (element.select)
+      element.select();
+  }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var Form = {
+  serialize: function(form) {
+    var elements = Form.getElements($(form));
+    var queryComponents = new Array();
+
+    for (var i = 0; i < elements.length; i++) {
+      var queryComponent = Form.Element.serialize(elements[i]);
+      if (queryComponent)
+        queryComponents.push(queryComponent);
+    }
+
+    return queryComponents.join('&');
+  },
+
+  getElements: function(form) {
+    form = $(form);
+    var elements = new Array();
+
+    for (tagName in Form.Element.Serializers) {
+      var tagElements = form.getElementsByTagName(tagName);
+      for (var j = 0; j < tagElements.length; j++)
+        elements.push(tagElements[j]);
+    }
+    return elements;
+  },
+
+  getInputs: function(form, typeName, name) {
+    form = $(form);
+    var inputs = form.getElementsByTagName('input');
+
+    if (!typeName && !name)
+      return inputs;
+
+    var matchingInputs = new Array();
+    for (var i = 0; i < inputs.length; i++) {
+      var input = inputs[i];
+      if ((typeName && input.type != typeName) ||
+          (name && input.name != name))
+        continue;
+      matchingInputs.push(input);
+    }
+
+    return matchingInputs;
+  },
+
+  disable: function(form) {
+    var elements = Form.getElements(form);
+    for (var i = 0; i < elements.length; i++) {
+      var element = elements[i];
+      element.blur();
+      element.disabled = 'true';
+    }
+  },
+
+  enable: function(form) {
+    var elements = Form.getElements(form);
+    for (var i = 0; i < elements.length; i++) {
+      var element = elements[i];
+      element.disabled = '';
+    }
+  },
+
+  findFirstElement: function(form) {
+    return Form.getElements(form).find(function(element) {
+      return element.type != 'hidden' && !element.disabled &&
+        ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
+    });
+  },
+
+  focusFirstElement: function(form) {
+    Field.activate(Form.findFirstElement(form));
+  },
+
+  reset: function(form) {
+    $(form).reset();
+  }
+}
+
+Form.Element = {
+  serialize: function(element) {
+    element = $(element);
+    var method = element.tagName.toLowerCase();
+    var parameter = Form.Element.Serializers[method](element);
+
+    if (parameter) {
+      var key = encodeURIComponent(parameter[0]);
+      if (key.length == 0) return;
+
+      if (parameter[1].constructor != Array)
+        parameter[1] = [parameter[1]];
+
+      return parameter[1].map(function(value) {
+        return key + '=' + encodeURIComponent(value);
+      }).join('&');
+    }
+  },
+
+  getValue: function(element) {
+    element = $(element);
+    var method = element.tagName.toLowerCase();
+    var parameter = Form.Element.Serializers[method](element);
+
+    if (parameter)
+      return parameter[1];
+  }
+}
+
+Form.Element.Serializers = {
+  input: function(element) {
+    switch (element.type.toLowerCase()) {
+      case 'submit':
+      case 'hidden':
+      case 'password':
+      case 'text':
+        return Form.Element.Serializers.textarea(element);
+      case 'checkbox':
+      case 'radio':
+        return Form.Element.Serializers.inputSelector(element);
+    }
+    return false;
+  },
+
+  inputSelector: function(element) {
+    if (element.checked)
+      return [element.name, element.value];
+  },
+
+  textarea: function(element) {
+    return [element.name, element.value];
+  },
+
+  select: function(element) {
+    return Form.Element.Serializers[element.type == 'select-one' ?
+      'selectOne' : 'selectMany'](element);
+  },
+
+  selectOne: function(element) {
+    var value = '', opt, index = element.selectedIndex;
+    if (index >= 0) {
+      opt = element.options[index];
+      value = opt.value;
+      if (!value && !('value' in opt))
+        value = opt.text;
+    }
+    return [element.name, value];
+  },
+
+  selectMany: function(element) {
+    var value = new Array();
+    for (var i = 0; i < element.length; i++) {
+      var opt = element.options[i];
+      if (opt.selected) {
+        var optValue = opt.value;
+        if (!optValue && !('value' in opt))
+          optValue = opt.text;
+        value.push(optValue);
+      }
+    }
+    return [element.name, value];
+  }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var $F = Form.Element.getValue;
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.TimedObserver = function() {}
+Abstract.TimedObserver.prototype = {
+  initialize: function(element, frequency, callback) {
+    this.frequency = frequency;
+    this.element   = $(element);
+    this.callback  = callback;
+
+    this.lastValue = this.getValue();
+    this.registerCallback();
+  },
+
+  registerCallback: function() {
+    setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
+  },
+
+  onTimerEvent: function() {
+    var value = this.getValue();
+    if (this.lastValue != value) {
+      this.callback(this.element, value);
+      this.lastValue = value;
+    }
+  }
+}
+
+Form.Element.Observer = Class.create();
+Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
+  getValue: function() {
+    return Form.Element.getValue(this.element);
+  }
+});
+
+Form.Observer = Class.create();
+Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
+  getValue: function() {
+    return Form.serialize(this.element);
+  }
+});
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.EventObserver = function() {}
+Abstract.EventObserver.prototype = {
+  initialize: function(element, callback) {
+    this.element  = $(element);
+    this.callback = callback;
+
+    this.lastValue = this.getValue();
+    if (this.element.tagName.toLowerCase() == 'form')
+      this.registerFormCallbacks();
+    else
+      this.registerCallback(this.element);
+  },
+
+  onElementEvent: function() {
+    var value = this.getValue();
+    if (this.lastValue != value) {
+      this.callback(this.element, value);
+      this.lastValue = value;
+    }
+  },
+
+  registerFormCallbacks: function() {
+    var elements = Form.getElements(this.element);
+    for (var i = 0; i < elements.length; i++)
+      this.registerCallback(elements[i]);
+  },
+
+  registerCallback: function(element) {
+    if (element.type) {
+      switch (element.type.toLowerCase()) {
+        case 'checkbox':
+        case 'radio':
+          Event.observe(element, 'click', this.onElementEvent.bind(this));
+          break;
+        case 'password':
+        case 'text':
+        case 'textarea':
+        case 'select-one':
+        case 'select-multiple':
+          Event.observe(element, 'change', this.onElementEvent.bind(this));
+          break;
+      }
+    }
+  }
+}
+
+Form.Element.EventObserver = Class.create();
+Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
+  getValue: function() {
+    return Form.Element.getValue(this.element);
+  }
+});
+
+Form.EventObserver = Class.create();
+Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
+  getValue: function() {
+    return Form.serialize(this.element);
+  }
+});
+if (!window.Event) {
+  var Event = new Object();
+}
+
+Object.extend(Event, {
+  KEY_BACKSPACE: 8,
+  KEY_TAB:       9,
+  KEY_RETURN:   13,
+  KEY_ESC:      27,
+  KEY_LEFT:     37,
+  KEY_UP:       38,
+  KEY_RIGHT:    39,
+  KEY_DOWN:     40,
+  KEY_DELETE:   46,
+
+  element: function(event) {
+    return event.target || event.srcElement;
+  },
+
+  isLeftClick: function(event) {
+    return (((event.which) && (event.which == 1)) ||
+            ((event.button) && (event.button == 1)));
+  },
+
+  pointerX: function(event) {
+    return event.pageX || (event.clientX +
+      (document.documentElement.scrollLeft || document.body.scrollLeft));
+  },
+
+  pointerY: function(event) {
+    return event.pageY || (event.clientY +
+      (document.documentElement.scrollTop || document.body.scrollTop));
+  },
+
+  stop: function(event) {
+    if (event.preventDefault) {
+      event.preventDefault();
+      event.stopPropagation();
+    } else {
+      event.returnValue = false;
+      event.cancelBubble = true;
+    }
+  },
+
+  // find the first node with the given tagName, starting from the
+  // node the event was triggered on; traverses the DOM upwards
+  findElement: function(event, tagName) {
+    var element = Event.element(event);
+    while (element.parentNode && (!element.tagName ||
+        (element.tagName.toUpperCase() != tagName.toUpperCase())))
+      element = element.parentNode;
+    return element;
+  },
+
+  observers: false,
+
+  _observeAndCache: function(element, name, observer, useCapture) {
+    if (!this.observers) this.observers = [];
+    if (element.addEventListener) {
+      this.observers.push([element, name, observer, useCapture]);
+      element.addEventListener(name, observer, useCapture);
+    } else if (element.attachEvent) {
+      this.observers.push([element, name, observer, useCapture]);
+      element.attachEvent('on' + name, observer);
+    }
+  },
+
+  unloadCache: function() {
+    if (!Event.observers) return;
+    for (var i = 0; i < Event.observers.length; i++) {
+      Event.stopObserving.apply(this, Event.observers[i]);
+      Event.observers[i][0] = null;
+    }
+    Event.observers = false;
+  },
+
+  observe: function(element, name, observer, useCapture) {
+    var element = $(element);
+    useCapture = useCapture || false;
+
+    if (name == 'keypress' &&
+        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
+        || element.attachEvent))
+      name = 'keydown';
+
+    this._observeAndCache(element, name, observer, useCapture);
+  },
+
+  stopObserving: function(element, name, observer, useCapture) {
+    var element = $(element);
+    useCapture = useCapture || false;
+
+    if (name == 'keypress' &&
+        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)
+        || element.detachEvent))
+      name = 'keydown';
+
+    if (element.removeEventListener) {
+      element.removeEventListener(name, observer, useCapture);
+    } else if (element.detachEvent) {
+      element.detachEvent('on' + name, observer);
+    }
+  }
+});
+
+/* prevent memory leaks in IE */
+Event.observe(window, 'unload', Event.unloadCache, false);
+var Position = {
+  // set to true if needed, warning: firefox performance problems
+  // NOT neeeded for page scrolling, only if draggable contained in
+  // scrollable elements
+  includeScrollOffsets: false,
+
+  // must be called before calling withinIncludingScrolloffset, every time the
+  // page is scrolled
+  prepare: function() {
+    this.deltaX =  window.pageXOffset
+                || document.documentElement.scrollLeft
+                || document.body.scrollLeft
+                || 0;
+    this.deltaY =  window.pageYOffset
+                || document.documentElement.scrollTop
+                || document.body.scrollTop
+                || 0;
+  },
+
+  realOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.scrollTop  || 0;
+      valueL += element.scrollLeft || 0;
+      element = element.parentNode;
+    } while (element);
+    return [valueL, valueT];
+  },
+
+  cumulativeOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      element = element.offsetParent;
+    } while (element);
+    return [valueL, valueT];
+  },
+
+  positionedOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      element = element.offsetParent;
+      if (element) {
+        p = Element.getStyle(element, 'position');
+        if (p == 'relative' || p == 'absolute') break;
+      }
+    } while (element);
+    return [valueL, valueT];
+  },
+
+  offsetParent: function(element) {
+    if (element.offsetParent) return element.offsetParent;
+    if (element == document.body) return element;
+
+    while ((element = element.parentNode) && element != document.body)
+      if (Element.getStyle(element, 'position') != 'static')
+        return element;
+
+    return document.body;
+  },
+
+  // caches x/y coordinate pair to use with overlap
+  within: function(element, x, y) {
+    if (this.includeScrollOffsets)
+      return this.withinIncludingScrolloffsets(element, x, y);
+    this.xcomp = x;
+    this.ycomp = y;
+    this.offset = this.cumulativeOffset(element);
+
+    return (y >= this.offset[1] &&
+            y <  this.offset[1] + element.offsetHeight &&
+            x >= this.offset[0] &&
+            x <  this.offset[0] + element.offsetWidth);
+  },
+
+  withinIncludingScrolloffsets: function(element, x, y) {
+    var offsetcache = this.realOffset(element);
+
+    this.xcomp = x + offsetcache[0] - this.deltaX;
+    this.ycomp = y + offsetcache[1] - this.deltaY;
+    this.offset = this.cumulativeOffset(element);
+
+    return (this.ycomp >= this.offset[1] &&
+            this.ycomp <  this.offset[1] + element.offsetHeight &&
+            this.xcomp >= this.offset[0] &&
+            this.xcomp <  this.offset[0] + element.offsetWidth);
+  },
+
+  // within must be called directly before
+  overlap: function(mode, element) {
+    if (!mode) return 0;
+    if (mode == 'vertical')
+      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
+        element.offsetHeight;
+    if (mode == 'horizontal')
+      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
+        element.offsetWidth;
+  },
+
+  clone: function(source, target) {
+    source = $(source);
+    target = $(target);
+    target.style.position = 'absolute';
+    var offsets = this.cumulativeOffset(source);
+    target.style.top    = offsets[1] + 'px';
+    target.style.left   = offsets[0] + 'px';
+    target.style.width  = source.offsetWidth + 'px';
+    target.style.height = source.offsetHeight + 'px';
+  },
+
+  page: function(forElement) {
+    var valueT = 0, valueL = 0;
+
+    var element = forElement;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+
+      // Safari fix
+      if (element.offsetParent==document.body)
+        if (Element.getStyle(element,'position')=='absolute') break;
+
+    } while (element = element.offsetParent);
+
+    element = forElement;
+    do {
+      valueT -= element.scrollTop  || 0;
+      valueL -= element.scrollLeft || 0;
+    } while (element = element.parentNode);
+
+    return [valueL, valueT];
+  },
+
+  clone: function(source, target) {
+    var options = Object.extend({
+      setLeft:    true,
+      setTop:     true,
+      setWidth:   true,
+      setHeight:  true,
+      offsetTop:  0,
+      offsetLeft: 0
+    }, arguments[2] || {})
+
+    // find page position of source
+    source = $(source);
+    var p = Position.page(source);
+
+    // find coordinate system to use
+    target = $(target);
+    var delta = [0, 0];
+    var parent = null;
+    // delta [0,0] will do fine with position: fixed elements,
+    // position:absolute needs offsetParent deltas
+    if (Element.getStyle(target,'position') == 'absolute') {
+      parent = Position.offsetParent(target);
+      delta = Position.page(parent);
+    }
+
+    // correct by body offsets (fixes Safari)
+    if (parent == document.body) {
+      delta[0] -= document.body.offsetLeft;
+      delta[1] -= document.body.offsetTop;
+    }
+
+    // set position
+    if(options.setLeft)   target.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';
+    if(options.setTop)    target.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';
+    if(options.setWidth)  target.style.width = source.offsetWidth + 'px';
+    if(options.setHeight) target.style.height = source.offsetHeight + 'px';
+  },
+
+  absolutize: function(element) {
+    element = $(element);
+    if (element.style.position == 'absolute') return;
+    Position.prepare();
+
+    var offsets = Position.positionedOffset(element);
+    var top     = offsets[1];
+    var left    = offsets[0];
+    var width   = element.clientWidth;
+    var height  = element.clientHeight;
+
+    element._originalLeft   = left - parseFloat(element.style.left  || 0);
+    element._originalTop    = top  - parseFloat(element.style.top || 0);
+    element._originalWidth  = element.style.width;
+    element._originalHeight = element.style.height;
+
+    element.style.position = 'absolute';
+    element.style.top    = top + 'px';;
+    element.style.left   = left + 'px';;
+    element.style.width  = width + 'px';;
+    element.style.height = height + 'px';;
+  },
+
+  relativize: function(element) {
+    element = $(element);
+    if (element.style.position == 'relative') return;
+    Position.prepare();
+
+    element.style.position = 'relative';
+    var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);
+    var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
+
+    element.style.top    = top + 'px';
+    element.style.left   = left + 'px';
+    element.style.height = element._originalHeight;
+    element.style.width  = element._originalWidth;
+  }
+}
+
+// Safari returns margins on body which is incorrect if the child is absolutely
+// positioned.  For performance reasons, redefine Position.cumulativeOffset for
+// KHTML/WebKit only.
+if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
+  Position.cumulativeOffset = function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      if (element.offsetParent == document.body)
+        if (Element.getStyle(element, 'position') == 'absolute') break;
+
+      element = element.offsetParent;
+    } while (element);
+
+    return [valueL, valueT];
+  }
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/mh/BirtBaseResponseHandler.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/mh/BirtBaseResponseHandler.js
new file mode 100644
index 0000000..2cd26a9
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/mh/BirtBaseResponseHandler.js
@@ -0,0 +1,52 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	BirtBaseResponseHandler
+ *	...
+ */
+BirtBaseResponseHandler = function(){}; 
+
+BirtBaseResponseHandler.prototype =
+{
+	
+	associations: {}, //map of response types, handlers
+	
+	/**
+	* Add handler for response target types
+	* Holds one handlerObject per targetType with newer handlerObject overwriting existing handlerObject
+	* @param targetType String name of target, length 5 
+	* @param handlerObject 
+	*/
+	addAssociation: function(targetType, handlerObject)
+	{
+		this.associations[targetType] = handlerObject;			
+	},
+	
+
+	/**
+	 *	Process update response message. Trigger necessary UI updates.
+	 *	See response schema for details.
+	 *
+	 *	@message, update response DOM.
+	 *	@return, void
+	 */
+	__process: function( message )
+	{
+		this.__process( message );
+	}
+	
+	////////////////////////////////////////////////////////////////////////////
+	//	Local methods
+	///////////////////////////////////////////////////////////////////////////
+	
+
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/mh/BirtGetUpdatedObjectsResponseHandler.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/mh/BirtGetUpdatedObjectsResponseHandler.js
new file mode 100644
index 0000000..868b4c0
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/mh/BirtGetUpdatedObjectsResponseHandler.js
@@ -0,0 +1,177 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	birtGetUpdatedObjectsResponseHandler
+ *	...
+ */
+BirtGetUpdatedObjectsResponseHandler = function( ){ };
+
+BirtGetUpdatedObjectsResponseHandler.prototype = Object.extend( new BirtBaseResponseHandler( ),
+{
+	/**
+	 *	Process update response message. Trigger necessary UI updates.
+	 *	See response schema for details.
+	 *
+	 *	@message, update response DOM.
+	 *	@return, void
+	 */
+	__process: function( message )
+	{
+		if ( !message ) return;
+		this.__processUpdateContent( message.getElementsByTagName( 'UpdateContent' ) );
+		this.__processUpdateData( message.getElementsByTagName( 'UpdateData' ) );
+	},
+	
+	/**
+	 *	Process update response message. Trigger necessary UI updates.
+	 *	See response schema for details.
+	 *
+	 *	@message, update response DOM.
+	 *	@return, void
+	 */
+	__processUpdateContent: function( updates )
+	{
+		if ( !updates ) return;
+		
+		for ( var i = 0; i < updates.length; i++ )
+		{
+			try
+			{
+				var target = updates[i].getElementsByTagName( 'Target' )[0]; //assumes only 1 target per UpdateContent
+				var targetData = target.firstChild.data				
+				var targetType = targetData.substring( 0, 5 );
+				var handler = this.associations[targetType];
+				
+				if ( !handler ) 
+				{
+					var error = { name : "CustomError",
+								  message : ( "__processUpdateContent no handler registered for type: " + targetType ) };
+					throw error;
+				}
+								
+				var content = updates[i].getElementsByTagName( 'Content' )[0]; //assumes only 1 context per UpdateContent	
+				if ( !content ) 
+				{
+					var error = { name : "CustomError",
+								  message : ( " __processUpdateContent empty contents" ) };
+					throw error;	
+				}
+				
+				/**************************************************************
+				 * Data is too large, seems firefox will wrap the content into
+				 * several children nodes of text type. Need more verification.
+				 **************************************************************/
+				
+				// firefox can use textContent to retrieve the complete node content,
+				// check this property first to avoid string concatation which is very
+				// slow for large node.  
+				var contentData = content.textContent;
+				
+				if (!contentData)
+				{
+					// for non-fireforx browser, we still use string concatation 
+					// to retrieve the complete content.
+					
+					contentData = "";
+					
+					if ( content.hasChildNodes )
+					{
+						for( var j = 0; j < content.childNodes.length; j++ )
+						{
+							if( content.childNodes[j].nodeType == 3 ) //Text type
+							{
+								contentData += content.childNodes[j].data;
+							}
+						}		
+					}
+				}
+				
+				if ( contentData )
+				{
+					handler.__cb_disposeEventHandlers( targetData );
+					handler.__cb_render( targetData, contentData );
+					var inits = updates[i].getElementsByTagName( 'InitializationId' );
+					var bookmarks = updates[i].getElementsByTagName( 'Bookmark' );
+					if ( bookmarks.length > 0 )
+					{
+						handler.__cb_installEventHandlers( targetData, inits, bookmarks[0].firstChild.data );
+					}
+					else
+					{
+						handler.__cb_installEventHandlers( targetData, inits );
+					}
+				}
+			}
+			catch( error )
+			{
+				debug( "ERROR in birtGetUpdatedObjectsResponseHandler" );
+				
+				for( var i in error )
+				{
+					debug( "ERROR " + i + " : " + error[i] );
+				}
+			}			
+		}
+	},
+
+	/**
+	 *	Process update response message. Trigger necessary UI updates.
+	 *	See response schema for details.
+	 *
+	 *	@message, update response DOM.
+	 *	@return, void
+	 */
+	__processUpdateData: function( updates )
+	{
+		if ( !updates ) return;
+		
+		for ( var i = 0; i < updates.length; i++ )
+		{
+			var targets = updates[i].getElementsByTagName( 'Target' );
+			if ( !targets || targets.length <= 0 ) continue;
+			
+			var datas = updates[i].getElementsByTagName( 'Data' );
+			if ( !datas || datas.length <= 0 ) continue;
+
+			var handler = null;
+			try
+			{
+				handler = eval( targets[0].firstChild.data );
+			}
+			catch ( e )
+			{
+			}
+			if ( !handler || !handler.__cb_bind ) continue;
+			
+			handler.__cb_bind( datas[0] );
+		}
+	},
+	
+	/**
+	 *	Helper function to handle "Init" type
+	 *	@param init "Init" element
+	 */
+	initList: function( init )
+	{
+		var initData = init.firstChild.data;
+		var targetType = init.firstChild.data.substring( 0, 5 );
+		var handler = this.associations[targetType];	
+		if ( !handler ) 
+		{
+			var error = {name:"CustomError", message: ("initList invalid Init")};
+			throw error;					
+		}
+		handler.__cb_installEventHandlers( initData );
+	}
+} );
+
+var birtGetUpdatedObjectsResponseHandler = new BirtGetUpdatedObjectsResponseHandler( );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/CascadingParameter.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/CascadingParameter.js
new file mode 100644
index 0000000..1f41579
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/CascadingParameter.js
@@ -0,0 +1,193 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ * Utility functions for BIRT JSP Cascading parameter tag.
+ */
+
+CascadingParameter = Class.create( );
+
+CascadingParameter.prototype =
+{
+	__active : false,
+	__requesterId : '',
+	__parameter : null,
+	__paramNames : null,
+	__group : null,
+	__data : null,
+	__targetId : '',
+	__action : null,
+		 
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	@return, void
+	 */
+	initialize : function( id, parameter, names, group )
+	{
+		this.__requesterId = id;
+		this.__parameter = parameter;
+		this.__paramNames = names;
+		this.__group = group;
+		this.__data = new Array( );
+		
+		this.__initialize( );
+	},
+		
+	/**
+	* Initialize cascading parameter
+	*
+	* @return, void
+	*/
+	__initialize : function( )
+	{		
+		var oDiv = $( this.__requesterId );
+		if( !oDiv ) return;
+		
+		var forms = oDiv.getElementsByTagName( "FORM" );
+		if( !forms || forms.length <= 0 ) return;
+		this.__action = forms[0].action;	
+	},
+	
+	/**
+	*  Insert a option into select
+	*  
+	*  @param, list
+	*  @param, index
+	*  @param, text
+	*  @param, value
+	*  @return, void
+	*/
+	__insertOption : function( list, index, text, value )
+	{
+		var i = 0; 
+		for ( i = list.options.length; i > index; i-- ) 
+		{ 
+			list.options[i] = new Option( list.options[i-1].text, list.options[i-1].value ); 
+		} 
+
+		list.options[index] = new Option( text, value );			
+	},
+	
+	/**
+	 * return action string
+	 * 
+	 * @return, action
+	 */
+	getAction : function( )
+	{
+		return this.__action;
+	},
+	
+	/**
+	 *	process to get cascading parameter
+	 *  @return, void
+	 */
+	process : function( )
+	{			
+		if( !this.__group || !this.__paramNames ) return;				
+				
+		// If target select doesn't exist, return
+		var targetName = this.__paramNames[ this.__paramNames.length -1 ];
+		this.__targetId = this.__group.getParameterIdByName( targetName );		
+		var target = $( this.__targetId );
+		if( !target ) return;
+		
+		for( var i=0; i<this.__paramNames.length - 1; i++ )
+		{
+			this.__data[i] = {};			
+			
+			var id = this.__group.getParameterIdByName( this.__paramNames[i] );
+			var radioSelectId = id + "_radio_select";
+			if( !$( radioSelectId ) || $( radioSelectId ).checked )
+			{
+				var label = $( id ).text;
+				if( label == Constants.nullValue )
+				{
+					this.__data[i].name = Constants.PARAM_ISNULL;
+					this.__data[i].value = this.__paramNames[i];	
+				}
+				else
+				{
+					this.__data[i].name = this.__paramNames[i];
+					this.__data[i].value = $( id ).value;
+				}				
+			}
+			else
+			{
+				var inputTextId = id + "_input";
+				if( $( inputTextId ) )
+				{
+					this.__data[i].name = this.__paramNames[i];
+					this.__data[i].value = $( inputTextId ).value;
+				}				
+			} 			
+		}
+		
+		// Set task id
+		var taskid = birtUtility.setTaskId( );
+		birtSoapRequest.addOperation( Constants.documentId, Constants.Document,'GetCascadingParameter',null,
+									this.__data,{ name : Constants.PARAM_TASKID, value : taskid } );
+		birtSoapRequest.setURL( this.__action );
+			
+		if ( !birtSoapRequest.getURL( ) ) return;
+				
+		this.__active = true;
+		progressBar.__start( );
+		
+		// Set cascading parameter group
+		soapResponseHelper.setParameterGroup( this.__group );
+		
+		//workaround for Bugzilla Bug 144598. Add request header "Connection" as "keep-alive"
+		var myAjax = new Ajax.Request( birtSoapRequest.getURL( ), { method: 'post', postBody: birtSoapRequest.__xml_document,
+			onSuccess: this.responseHandler, onFailure: this.invalidResponseHandler,
+			requestHeaders: ['Content-type', 'text/xml; charset=utf-8', 'SOAPAction', '""', 'request-type', 'SOAP', 'Connection', 'keep-alive' ] } );
+
+		birtSoapRequest.reset( );		
+	},
+	
+	/**
+	 *	Callback function triggered when reponse is ready, status is 200.
+	 *
+	 *	@request, httpXmlRequest instance
+	 *	@return, void
+	 */
+	responseHandler: function( request )
+	{		
+		if ( request.responseXML && request.responseXML.documentElement )
+		{
+			soapResponseHelper.processCascadingParameter( request.responseXML.documentElement );
+		}
+		
+		progressBar.__stop( );
+	    this.__active = false;
+	},
+	
+	/**
+	 *	Callback function triggered when reponse is ready status is not 200.
+	 *	Process any http (non-200) errors. Note this is not exception from
+	 *	server side.
+	 *
+	 *	@request, httpXmlRequest instance
+	 *	@return, void
+	 */
+	invalidResponseHandler: function( request )
+	{			
+		if ( request.responseXML && request.responseXML.documentElement )
+		{
+			soapResponseHelper.processCascadingParameter( request.responseXML.documentElement );
+		}		
+			
+		progressBar.__stop( );
+	    this.__active = false;
+	},
+			
+	noComma : "" //just to avoid javascript syntax errors
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/ParameterDefinition.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/ParameterDefinition.js
new file mode 100644
index 0000000..ccef71c
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/ParameterDefinition.js
@@ -0,0 +1,120 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ * Parameter definition.
+ */
+
+ParameterDefinition = Class.create( );
+
+ParameterDefinition.prototype =
+{
+	__id : null,
+	__name : null,
+	__isRequired : null,
+	__value : null,
+	__displayText : null,
+		
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	@return, void
+	 */
+	initialize : function( id, name )
+	{
+		this.__id = id;
+		this.__name = name;
+	},
+
+	/**
+	 *	get parameter id
+	 *  
+	 *	@return, id
+	 */
+	getId : function( )
+	{
+		return this.__id;
+	},
+
+	/**
+	 *	get parameter name
+	 *  
+	 *	@return, name
+	 */
+	getName : function( )
+	{
+		return this.__name;
+	},
+
+	/**
+	 *	get parameter value
+	 *  
+	 *	@return, value
+	 */
+	getValue : function( )
+	{
+		return this.__value;
+	},
+
+	/**
+	 *	get parameter display text
+	 *  
+	 *	@return, displayText
+	 */
+	getDisplayText : function( )
+	{
+		return this.__displayText;
+	},
+		
+	/**
+	 *	set value
+	 *  
+	 *  @param, value
+	 *	@return, void
+	 */
+	setValue : function( value )
+	{
+		this.__value = value;
+	},
+
+	/**
+	 *	set display Text
+	 *
+	 *  @param, displayText
+	 *	@return, void
+	 */
+	setValue : function( displayText )
+	{
+		this.__displayText = displayText;
+	},
+
+	/**
+	 *	set isRequired
+	 *
+	 *  @param, isRequired
+	 *	@return, void
+	 */
+	setRequired : function( isRequired )
+	{
+		this.__isRequired = isRequired;
+	},
+					
+	/**
+	 *	get isRequired
+	 *
+	 *	@return, isRequired
+	 */
+	isRequired : function( )
+	{
+		return this.__isRequired;
+	},
+						
+	noComma : "" //just to avoid javascript syntax errors
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/ParameterGroup.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/ParameterGroup.js
new file mode 100644
index 0000000..f2f6e9d
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/ParameterGroup.js
@@ -0,0 +1,75 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ * Utility functions for Parameter Group.
+ */
+ParameterGroup = Class.create( );
+
+ParameterGroup.prototype =
+{
+	__group : null,
+	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	@return, void
+	 */
+	initialize : function( )
+	{
+		this.__group = new Array( );
+	},
+
+	/**
+	 *	Add parameter into group
+	 *  
+	 *  @param, parameter
+	 *	@return, void
+	 */
+	addParameter : function( parameter )
+	{
+		var len = this.__group.length;
+		this.__group[len] = {};
+		this.__group[len].name = parameter.getName( );
+		this.__group[len].value = parameter;
+	},
+
+	/**
+	 *	Get paramter id by name
+	 *  
+	 *  @param, parameter
+	 *	@return, void
+	 */
+	getParameterIdByName : function( name )
+	{
+		for( var i = 0; i < this.__group.length; i++ )
+		{
+			if( this.__group[i].name == name )
+			{
+				if( this.__group[i].value )
+					return this.__group[i].value.getId( );
+			}
+		}
+		
+		return null;
+	},
+	
+	/**
+	 *	empty parameter group
+	 *
+	 *	@return, void
+	 */
+	empty : function( )
+	{
+		this.__group = new Array( );
+	},
+				
+	noComma : "" //just to avoid javascript syntax errors
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/ProgressBar.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/ProgressBar.js
new file mode 100644
index 0000000..3f0b653
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/ProgressBar.js
@@ -0,0 +1,307 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ *	Progress bar for JSP tag
+ */
+ProgressBar = Class.create( );
+ProgressBar.prototype = 
+{
+	/**
+	 *	UI component html instance.
+	 */
+	__instance : null,
+	
+	/**
+	 *  SOAP action handler  
+	 */
+	__handler : null,
+	
+	/**
+	 *	Latency that will trigger the progress bar.
+	 */
+	__interval : 300,
+	
+	/**
+	 *	Timer instance.
+	 */
+	__timer : null,
+	
+	/**
+	 *	mask instance.
+	 */
+	__mask : null,
+	
+	/**
+	 *	Closures
+	 */
+	__cb_bind_closure : null,
+	
+	/**
+	 *	Event handler for click 'cancel' button
+	 */
+	__neh_click_closure : null,	
+	
+	/**
+	 *	'Cancel' button container
+	 */
+	__cancel_button : 'cancelTaskButton',
+	 
+	/**
+	 * The input control to save 'taskid'
+	 */
+	__task_id : 'taskid',
+			 	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	@return, void
+	 */
+	initialize : function( id, maskId )
+	{
+		this.__instance = $( id );
+		this.__mask = this.__create_mask( maskId );		
+		this.__cb_bind_closure = this.__cb_bind.bindAsEventListener( this );
+		this.__neh_click_closure = this.__neh_click.bindAsEventListener( this );
+				
+		this.__installEventHandlers( id );
+	},
+
+	/**
+	 *	Set action handler
+	 *
+	 *	@return, void
+	 */
+	setHandler : function( handler )
+	{
+		this.__handler = handler;
+	},
+
+	/**
+	 *	Binding data to the dialog UI. Data includes zoom scaling factor.
+	 *
+	 *	@return, void
+	 */
+	__cb_bind : function( )
+	{
+		if( !this.__handler ) return;
+		
+		if( this.__handler.__active )
+		{
+			this.__timer = window.setTimeout( this.__cb_bind_closure, this.__interval );
+			this.__l_show( );
+		}
+		else
+	  	{
+			window.clearTimeout( this.__timer );
+			this.__l_hide( );
+	  	}
+	},
+	
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, response id 
+	 *	@return, void
+	 */
+	__installEventHandlers : function( id )
+	{
+		var oCancel = this.__loc_cancel_button( );
+		if( oCancel )
+			Event.observe( oCancel, 'click', this.__neh_click_closure, false );
+	},
+
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, response id 
+	 *	@return, void
+	 */
+	__start : function( )
+	{	
+		// check taskid
+		var taskid = birtUtility.getTaskId( );
+		if( taskid.length > 0 )
+		{
+			// if taskid existed, show 'Cancel' button
+			this.__l_show_cancel_button( );
+			
+			// enable 'cancel' button
+			var oCancel = this.__loc_cancel_button( );
+			if( oCancel )
+				oCancel.disabled = false;
+		}
+		else
+		{
+			// hide 'Cancel' button
+			this.__l_hide_cancel_button( );
+		}
+					
+		this.__timer = window.setTimeout( this.__cb_bind_closure, this.__interval );
+	},
+	
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, response id 
+	 *	@return, void
+	 */
+	__stop : function( )
+	{
+		window.clearTimeout( this.__timer );
+		this.__l_hide( );
+		
+		// clear taskid
+		birtUtility.clearTaskId( );
+	},
+	
+	/**
+	 *	Create progress bar mask.
+	 *	
+	 *	@return, __mask
+	 */
+	__create_mask : function( maskId )
+	{
+		var oMask = $( maskId );
+		if( !oMask ) return null;
+		
+		oMask.style.position = 'absolute';
+		oMask.style.top = '0px';
+		oMask.style.left = '0px';
+		oMask.style.width = '50%';
+		var height = BirtPosition.viewportHeight( );
+		oMask.style.height = height + 'px';
+		oMask.style.backgroundColor = '#dbe4ee';
+		oMask.style.filter = 'alpha( opacity = 0.0 )';
+		oMask.style.opacity = '.0';		
+		oMask.scrolling = 'no';
+		oMask.marginHeight = '0px';
+		oMask.marginWidth = '0px';
+		oMask.style.display = 'none';
+		oMask.style.MozOpacity = 0;					
+		
+		return oMask;		
+	},
+
+	/**
+	 *	Show progress bar.
+	 */
+	__l_show : function( )
+	{
+		Element.show( this.__mask, this.__instance );		
+		BirtPosition.center( this.__instance );
+	},
+	
+	/**
+	 *	Hide progress bar.
+	 */
+	__l_hide : function( )
+	{
+		Element.hide( this.__instance, this.__mask );
+	},
+
+	/**
+	 *  Returns 'cancel' button
+	 * 	@return, INPUT
+	 */
+	__loc_cancel_button: function( )
+	{
+		var oIEC = this.__instance.getElementsByTagName( "input" );
+		var oCancel;
+		if( oIEC && oIEC.length > 0 )
+		{
+			for( var i = 0 ; i < oIEC.length; i++ )
+			{
+				if( oIEC[i].type == 'button' )
+				{
+					oCancel = oIEC[i];
+					break;
+				}
+			}
+		}
+		
+		return oCancel;
+	},
+
+	/**
+	 *	Handle click "Cancel" button.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_click: function( event )
+	{
+		var oTaskId = document.getElementById( this.__task_id );
+		if( oTaskId && window.confirm( "Do you want to cancel current task?" ) )
+		{
+			Event.element( event ).disabled = true;
+			
+			// cancel task
+			birtSoapRequest.addOperation( Constants.documentId, Constants.Document, "CancelTask", null, { name : Constants.PARAM_TASKID, value : oTaskId.value } );
+			birtSoapRequest.setURL( this.__handler.getAction( ) );
+			
+			if ( !birtSoapRequest.getURL( ) ) return;
+			
+			var myAjax = new Ajax.Request( birtSoapRequest.getURL( ), { method: 'post', postBody: birtSoapRequest.__xml_document,
+			onSuccess: this.responseHandler, onFailure: this.invalidResponseHandler,
+			requestHeaders: ['Content-type', 'text/xml; charset=utf-8', 'SOAPAction', '""', 'request-type', 'SOAP', 'Connection', 'keep-alive' ] } );
+
+			birtSoapRequest.reset( );												
+		}
+	},
+
+	/**
+	 *	Callback function triggered when reponse is ready, status is 200.
+	 *
+	 *	@request, httpXmlRequest instance
+	 *	@return, void
+	 */
+	responseHandler: function( request )
+	{				
+		progressBar.__stop( );
+	},
+	
+	/**
+	 *	Callback function triggered when reponse is ready status is not 200.
+	 *	Process any http (non-200) errors. Note this is not exception from
+	 *	server side.
+	 *
+	 *	@request, httpXmlRequest instance
+	 *	@return, void
+	 */
+	invalidResponseHandler: function( request )
+	{					
+		progressBar.__stop( );
+	},
+	
+	/**
+	 *	Show "Cancel" button.
+	 *
+	 *	@return, void
+	 */	
+	__l_show_cancel_button: function( )
+	{
+		var container = document.getElementById( this.__cancel_button );
+		if( container )
+			container.style.display = 'block';
+	},
+
+	/**
+	 *	Hide "Cancel" button.
+	 *
+	 *	@return, void
+	 */		
+	__l_hide_cancel_button: function( )
+	{
+		var container = document.getElementById( this.__cancel_button );
+		if( container )
+			container.style.display = 'none';
+	}
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/SoapResponseHelper.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/SoapResponseHelper.js
new file mode 100644
index 0000000..f86a9e5
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/taglib/SoapResponseHelper.js
@@ -0,0 +1,155 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ *	Helper to handle soap response
+ */
+SoapResponseHelper = Class.create( );
+
+SoapResponseHelper.prototype =
+{
+	__parameterGroup : null,
+	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *
+	 *	@return, void
+	 */
+	initialize: function( )
+	{
+	},
+	
+	/**
+	*  Set current parameter group object 
+	*  
+	*  @param, group cascading parameter group
+	*  @return, void
+	*/
+	setParameterGroup : function( group )
+	{
+		this.__parameterGroup = group;
+	},
+	
+	/**
+	 *	Process the soap response, dispatcher message content to designated
+	 *	message handlers.
+	 *
+	 *	@message, incoming soap message DOM
+	 *	@return, void
+	 */
+	processCascadingParameter : function( message )
+	{
+		if( !message || !this.__parameterGroup ) return;
+		
+		//alert( birtSoapRequest.prettyPrintXML( message ) );
+		var soapBody = message.getElementsByTagName( 'soapenv:Body' )[ 0 ];
+		if ( !soapBody )
+		{
+			soapBody = message.getElementsByTagName( 'Body' )[ 0 ];
+		}
+		
+		if ( soapBody )
+		{
+			for ( var i = 0; i < soapBody.childNodes.length; i++ )
+			{
+				if ( soapBody.childNodes[i].nodeType == 1 ) // Need to use NodeType definition.
+				{
+					if ( soapBody.childNodes[i].tagName == 'soapenv:Fault' )
+					{
+						// error message
+						this.__handleErrorMessage( soapBody.childNodes[i] );
+					}
+					else
+					{
+						var datas = soapBody.childNodes[i].getElementsByTagName( 'Data' );
+						if( !datas || datas.length<=0 ) return;
+						
+						var data = datas[0];//assume there is only one data
+						var cascade_param = data.getElementsByTagName( 'CascadeParameter' )[0];//assume there is only one cascadeparameter
+						var selectionLists = data.getElementsByTagName( 'SelectionList' );
+						if ( !selectionLists )
+						{
+							return;
+						}
+						
+						for ( var k = 0; k < selectionLists.length; k++ )
+						{
+							var paramName = selectionLists[k].getElementsByTagName( 'Name' )[0].firstChild.data;
+							var selections = selectionLists[k].getElementsByTagName( 'Selections' );
+							
+							var paramId = this.__parameterGroup.getParameterIdByName( paramName );
+							var append_selection = document.getElementById( paramId );
+							var len = append_selection.options.length;
+														
+							// Clear our selection list.
+							for( var i = 0, index = 0; i < len; i++ )
+							{
+								append_selection.remove( index );
+							}
+							
+							// Add new options based on server response.
+							for( var i = 0; i < selections.length; i++ )
+							{
+								if ( !selections[i].firstChild )
+								{
+									continue;
+								}
+				
+								var oOption = document.createElement( "OPTION" );
+								var oLabel = selections[i].getElementsByTagName( 'Label' )[0].firstChild;
+								if( oLabel )
+									oOption.text = oLabel.data;
+								else
+									oOption.text = "";
+			
+								var oValue = selections[i].getElementsByTagName( 'Value' )[0].firstChild;
+								if( oValue )
+									oOption.value = oValue.data;
+								else
+									oOption.value = "";
+								append_selection.options[append_selection.options.length] = oOption;
+							}
+						}						
+					}				
+				}
+			}
+		}
+		
+		// reset parameter group
+		this.__parameterGroup = null;
+	},
+	
+	/**
+	* handle error message
+	*
+	* @param, data incoming soap error message DOM
+	* @return, void
+	*/
+	__handleErrorMessage : function( data )
+	{
+		if( !data ) return;
+
+		// Prepare fault string (reason)
+	 	var faultStrings = data.getElementsByTagName( 'faultstring' );
+	 	if ( faultStrings[0] && faultStrings[0].firstChild )
+	 	{
+			alert( faultStrings[0].firstChild.data );
+		}
+		else
+		{
+			alert( Constants.error.unknownError );
+		}	
+	},
+	
+	noComma : "" //just to avoid javascript syntax errors
+}
+
+var soapResponseHelper = new SoapResponseHelper( );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/AbstractBaseToc.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/AbstractBaseToc.js
new file mode 100644
index 0000000..a332e50
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/AbstractBaseToc.js
@@ -0,0 +1,471 @@
+/******************************************************************************
+ *	Copyright (c) 2004-2008 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	AbstractBaseToc
+ *	...
+ */
+AbstractBaseToc = function( ) { };
+
+AbstractBaseToc.prototype = Object.extend( new AbstractUIComponent( ),
+{
+	__neh_click_closure : null,
+	__neh_resize_closure : null,
+	__beh_toc_closure : null,
+	__beh_toc_image_closure : null,
+	__neh_img_click_closure : null,
+	
+	__nodeid : '0',
+	__neh_item_mouse_over : null,
+	__neh_item_mouse_out  : null,
+	__neh_item_click : null,
+	
+	__clickcount : 0,
+	
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, TOC id (optional since there is only one nav bar)
+	 *	@return, void
+	 */
+	__cb_installEventHandlers : function( )
+	{
+		var oImgs = this.__instance.getElementsByTagName( "img" );
+		if ( oImgs )
+		{
+			for ( var i = 0; i < oImgs.length; i++ )
+			{
+				Event.observe( oImgs[i], 'click', this.__neh_click_closure, false );
+			}
+		}
+		// Birt event handler
+		Event.observe( window, 'resize', this.__neh_resize_closure, false );
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_TOC, this.__instance.id, this.__beh_toc_closure );				
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_TOC_IMAGE_CLICK, this.__instance.id, this.__beh_toc_image_closure );
+	},
+	
+	/**
+	 *	Handle mouse over.
+	 */
+	__neh_mousemove : function ( event )
+	{
+		var obj = Event.element( event );
+		obj.style.filter = 'alpha( opacity=80)';
+		obj.style.opacity = 0.8;
+		obj.style.MozOpacity = 0.8;
+	},
+	
+	/**
+	 *	Handle mouse out.
+	 */
+	__neh_mouseout  : function ( event )
+	{
+		var obj = Event.element( event );
+		obj.style.filter = 'alpha( opacity=100)';
+		obj.style.opacity = 1;
+		obj.style.MozOpacity = 1;		
+	},
+	
+	/**
+	 *	Binding data to the TOC UI. Data includes a TOC tree.
+	 *
+	 *	@data, data DOM tree (Schema TBD)
+	 *	@return, void
+	 */
+	__cb_bind : function( data )
+	{		
+		var datas = data.getElementsByTagName( 'Child' );
+		var len = datas.length;
+		if( len == 0 )
+		{
+			return ;
+		}
+		
+		var tableEle = document.createElement( "table" );
+		tableEle.border = '0';
+		tableEle.cellspacing = '0';
+		tableEle.cellpadding = '0';
+		var tbody = document.createElement( "tbody" );
+		for( i = 0; i < len; i++ )
+		{
+			var imgid = this.__nodeid + '_' + i ;
+			var tr1 = document.createElement( "tr" );
+			var td11 = document.createElement( "td" );
+			td11.valign = "top";
+			td11.id = "td" + imgid;
+
+			var tmp = datas[i];
+
+			var displaynames = tmp.getElementsByTagName( 'DisplayName' );
+			var displayname = displaynames[0].firstChild;
+			var s_displayname = "";
+			if( displayname )
+				s_displayname = displayname.data;			
+			
+			var isLeafs = tmp.getElementsByTagName( 'IsLeaf' );
+			var img = document.createElement( "input" );
+			img.type = "image";
+			img.style.backgroundRepeat = 'no-repeat';
+			img.style.paddingLeft = '0px';
+			img.style.width = '8px';
+			img.style.height = '8px';
+			img.plusMinus = '+';	//default it is collapsed
+			img.id = imgid;
+			img.query = '0';		//default it needs to communicate with the server.
+			img.title = birtUtility.htmlDecode( s_displayname );
+			
+			if ( isLeafs[0].firstChild.data == "false" )
+			{
+				img.src = "birt/images/Expand.gif" ;
+				img.style.cursor = 'pointer';			
+				Event.observe( img, 'click', this.__neh_img_click_closure, false );				
+			}
+			else
+			{
+				img.src = "birt/images/Leaf.gif" ;
+				img.style.cursor = 'default';
+				Event.observe( img, 'click', this.__neh_item_click, false );				
+			}
+			
+			Event.observe( img, 'keydown', this.__neh_item_click, false );
+
+			td11.width = "10px";
+			td11.appendChild( img );
+			
+			var td12 = document.createElement( "td" );
+			td12.valign = "top";
+			
+			var nodeIds = tmp.getElementsByTagName( 'Id' );
+			img.nodeId = nodeIds[0].firstChild.data;
+			
+			var bookmarks = tmp.getElementsByTagName( 'Bookmark' );
+			img.bookmark = bookmarks[0].firstChild.data;			
+
+			var tocitem = document.createElement( "div" );			
+			tocitem.title = birtUtility.htmlDecode( s_displayname );
+			tocitem.id =  'span_' + imgid;
+			tocitem.innerHTML = s_displayname ? s_displayname : "&nbsp;";
+						
+			var cssText = "cursor:pointer;border:0px;font-family:Verdana;font-size:9pt;background-color:#FFFFFF;overflow:visible;";			
+			var styles = tmp.getElementsByTagName( 'Style' );
+			if( styles && styles.length > 0 )
+			{
+				if( styles[0].firstChild )
+					tocitem.style.cssText = cssText + styles[0].firstChild.data;
+				else
+					tocitem.style.cssText = cssText;							
+			}
+							
+			td12.appendChild( tocitem );
+			td12.noWrap = true;
+			
+			tr1.appendChild( td11 );
+			tr1.appendChild( td12 );
+			
+			var tr2 = document.createElement( "tr" );
+			var td2 = document.createElement( "td" );
+			td2.id = 'display' + imgid;
+			td2.style.paddingLeft = '16px';
+			td2.style.display = 'none';
+			td2.colSpan = 2;
+			tr2.appendChild( td2 );
+			
+			tbody.appendChild( tr1 );
+			tbody.appendChild( tr2 );
+			
+			//observe the text so that when click the text ,we can expand or collapse the toc
+			Event.observe( tocitem, 'mouseover', this.__neh_item_mouse_over, false );
+			Event.observe( tocitem, 'mouseout', this.__neh_item_mouse_out, false );	
+			Event.observe( tocitem, 'click', this.__neh_item_click, false );
+			Event.observe( tocitem, 'keydown', this.__neh_item_click, false );
+		}
+		tableEle.appendChild( tbody );
+		var displayid = 'display' + this.__nodeid;
+		var ele= $( displayid );
+		var childLength = ele.childNodes.length;
+		if ( childLength == 0 )
+		{
+			ele.appendChild( tableEle );
+		}
+		else
+		{
+			ele.replaceChild( tableEle, ele.childNodes[0] );
+		}
+		
+		this.__neh_resize( ); // hack
+	},
+		
+	/**
+	 *	when click the text ,also need to collapse or expand the toc
+	 */
+	__neh_text_click : function ( event )
+	{
+		var clickElement = Event.element( event );
+		var clickId = clickElement.id;
+		var imgid;
+		
+		if( clickElement.type == "image" )
+		{
+			//get the img id
+			imgid = clickId;
+			
+			if( clickElement.src.indexOf( "Expand" ) > -1 )
+			{
+				// keydown on Expand img
+				if( event.type == 'keydown' )
+				{
+					if( event.keyCode == 39 )
+						this.__neh_img_click( event );
+				}		
+			}
+			else if( clickElement.src.indexOf( "Collapse" ) > -1 )
+			{
+				// keydown on Collapse img
+				if( event.type == 'keydown' )
+				{
+					if( event.keyCode == 37 )
+						this.__neh_img_click( event );
+				}
+			}			
+		}
+		else
+		{
+			//as the clicktextid is 'span_' + id, so we need to substr to get the imgid
+			var len = "span_".length;
+			imgid = clickId.substr( len );
+		}
+		
+		if( event.type == 'keydown' )
+		{
+			// Press "Enter" and "Space"
+			if( event.keyCode != 13 && event.keyCode != 32)
+				return;									
+		}
+			
+		var clickImg = $( imgid );
+		var query = clickImg.query;
+		var plusMinus = clickImg.plusMinus;
+		var bookmark = clickImg.bookmark;
+		
+		var params = new Array( );
+		params[0] = { };
+		params[0].name = Constants.PARAM_BOOKMARK;
+		params[0].value = bookmark;
+		
+		// passed bookmark name is not a TOC name.
+		params[1] = { };
+		params[1].name = Constants.PARAM_ISTOC;
+		params[1].value = "false";
+		
+		birtEventDispatcher.broadcastEvent( birtEvent.__E_GETPAGE, params );
+		Event.stop(event);
+	},
+	
+	/**
+	 *	when click the img , collpase or expand the toc 
+	 */
+	__neh_img_click : function( event )
+	{
+		var clickImg = Event.element( event );
+		var query = clickImg.query;
+		var nodeId = clickImg.nodeId;
+		var clickId = this.__neh_click_process( clickImg, 0 );
+		this.__neh_click_broadcast( query, nodeId );
+	},
+	
+	/**
+	 *	Process click.
+	 */
+	__neh_click_process : function ( clickImg, textClick )
+	{
+		var clickId = clickImg.id;
+		this.__nodeid = clickId;
+		var plusMinus = clickImg.plusMinus;
+		var query = clickImg.query;
+		if( textClick == 1 && plusMinus != '+' )
+		{
+		}
+		else
+		{
+			clickImg.src = this.__icon_change( plusMinus );
+		}
+		
+		clickImg.plusMinus = this.__state_change( plusMinus );
+		var displayid = 'display' + clickId;
+		var elem = $( displayid );
+		if( ( textClick == 1 && plusMinus == '+' ) || textClick == 0 )
+		{
+			if( clickImg.plusMinus == '+' )
+			{
+				//collapse
+				elem.style.display = 'none';
+			}
+			else
+			{
+				//expand
+				elem.style.display = '';
+			}
+		}
+		
+		if( query == '0' )
+		{
+			clickImg.query = '1';
+		}
+		
+		return clickId;
+	},
+	
+	/**
+	 *	Broadcast event.
+	 */
+	__neh_click_broadcast : function( query, realId )
+	{
+		birtSoapRequest.setURL( soapURL );
+		if( query == '0' )
+		{
+			birtSoapRequest.addOperation( Constants.documentId, Constants.Document,
+										  "GetToc", null,
+										  { name : "realId", value : realId } );
+			birtEventDispatcher.broadcastEvent( birtEvent.__E_TOC_IMAGE_CLICK );
+		}
+	},
+	
+	/*
+	 *	change the img plusMinus
+	 *	+ to -
+	 *	- to +
+	 *	0 to 0
+	*/
+	__state_change : function ( plusMinus )
+	{
+		var stat = '+';
+		if( plusMinus == '+' )
+		{
+			stat = '-';
+		}
+		else if( plusMinus == '-' )
+		{
+			stat = '+';
+		}
+		else if( plusMinus == '0' )
+		{
+			stat = '0';
+		}
+		return stat;
+	},
+	
+	/**
+	 *	change the img icon
+	 */
+	__icon_change : function ( plusMinus )
+	{
+		var srcLoc = "birt/images/Expand.gif";
+		if( plusMinus == '+' )
+		{
+			srcLoc = "birt/images/Collapse.gif";
+		}
+		else if( plusMinus == '-' )
+		{
+			srcLoc = "birt/images/Expand.gif";
+		}
+		
+		return srcLoc;
+	},
+	
+	/**
+	 *	Handle native event 'click'.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_resize : function( event )
+	{		
+		//var width = BirtPosition.viewportWidth( ) -  ( this.__instance.offsetLeft >= 250 ? 250 : 0 ) - 3;
+		//this.__instance.style.width = width + "px";
+		var height = BirtPosition.viewportHeight( ) - this.__instance.offsetTop - 2;
+		this.__instance.style.height = height + "px";
+		if ( rtl && 
+				( BrowserUtility.isIE6 || BrowserUtility.isIE7 || 
+						BrowserUtility.isOpera || BrowserUtility.isKHTML ||
+						BrowserUtility.isSafari
+				) )
+		{
+			this.__instance.style.position = "absolute";
+			if ( birtReportDocument && birtReportDocument.__rtl )
+			{
+				this.__instance.style.left = BirtPosition.viewportWidth( ) - this.getWidth();
+			}
+			else
+			{
+				this.__instance.style.left = "0px";
+			}
+		}
+	},
+
+	/**
+	 *	what is this?
+	 */
+	__beh_toc_image : function (  )
+	{
+		return true;
+	},
+	
+	/**
+	 *	Handle native event 'click'.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_click: function( event )
+	{
+		var clickId = Event.element( event ).id;
+		var clickName = Event.element( event ).name;
+		
+		if ( Event.element( event ).name == 'close' )
+		{
+			birtEventDispatcher.broadcastEvent( birtEvent.__E_TOC );
+		}
+		
+	},
+
+	/**
+	 *	Handle native event 'click'.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__beh_toc: function( id )
+	{
+		Element.toggle( this.__instance );
+
+		this.__nodeid = '0';
+		this.__clickcount = 0;
+		var displayid = 'display' + this.__nodeid;
+		
+		var root = $( displayid );
+		if( root.query != 1 )
+		{
+			root.query = '1';
+			birtSoapRequest.setURL( soapURL );
+			birtSoapRequest.addOperation( Constants.documentId,  Constants.Document, "GetToc", null );
+			return true;
+		}
+		else
+		{
+			root.query = '0';
+		}
+	},
+	
+	getWidth : function()
+	{
+		return this.__instance.offsetWidth;
+	}
+} );
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/AbstractBaseToolbar.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/AbstractBaseToolbar.js
new file mode 100644
index 0000000..f5f877b
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/AbstractBaseToolbar.js
@@ -0,0 +1,93 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	AbstractBaseToolbar.
+ *	...
+ */
+AbstractBaseToolbar = function( ) { };
+
+AbstractBaseToolbar.prototype = Object.extend( new AbstractUIComponent( ),
+{
+	/**
+	 *	Closure for native click event.
+	 */
+	__neh_click_closure : null,
+	
+	/**
+	 *	instance variable for preloading images
+	 */
+	toolbarImagesOff : null,
+
+	/**
+	 *	instance variable for preloading images
+	 */
+	toolbarImagesOn : null,
+	
+	/**
+	 *
+	 */
+	toolbarImageState : null,
+	
+	/**
+	 *	Loads image in off state and stores on and off src strings 
+	 *	@param source
+	 */
+	preloadImages : function( source )
+	{
+		var image;
+		var strFront;
+		var strExtension;
+
+		image = new Image( );
+		strFront = source.substring( 0, source.lastIndexOf( '.' ) );
+		strExtension = source.substring( source.lastIndexOf( '.' ), source.length );
+		image.src = strFront + "Off" + strExtension;
+		this.toolbarImagesOff.push( image.src );
+		this.toolbarImagesOn.push( source );
+	},
+	
+	/** 
+	 *	Determines if an image is in disabled state by examining name for "Off."
+	 *	@param name
+	 */
+	isEnabled : function( name )
+	{
+		var i = name.indexOf( 'Off.' );
+		if( i > -1 )
+		{
+			return false;
+		}
+		return true;
+	},
+	
+	/**
+	 *	Changes state from enabled to disabled
+	 *	@param button IMG
+	 *	@param enable true to enable, false to disable
+	 */
+	toggleButton : function( button, enable )
+	{
+		if( enable )
+		{
+			this.toolbarImageState[button.name] = true;
+			button.parentNode.className = "toolbarButton";
+			Event.observe( button, 'click', this.__neh_click_closure, false );
+		}
+		else
+		{
+			this.toolbarImageState[button.name] = false;
+			button.parentNode.className = "toolbarButtonOff";
+			Event.stopObserving( button, 'click', this.__neh_click_closure, false );
+		}
+	}
+}
+);
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/AbstractUIComponent.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/AbstractUIComponent.js
new file mode 100644
index 0000000..d6770a3
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/AbstractUIComponent.js
@@ -0,0 +1,34 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	AbstractUIComponentBase.
+ *		Base class for all UI components.
+ */
+AbstractUIComponent = function( ) { };
+
+AbstractUIComponent.prototype =
+{
+	/**
+	 *	UI component html instance.
+	 */
+	__instance : null,
+	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *
+	 *	@return, void
+	 */
+	__initBase : function( id )
+	{
+		this.__instance = $( id );
+	}
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/BirtNavigationBar.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/BirtNavigationBar.js
new file mode 100644
index 0000000..b7bb98d
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/BirtNavigationBar.js
@@ -0,0 +1,252 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	BirtNavigationBar
+ *	...
+ */
+BirtNavigationBar = Class.create( );
+BirtNavigationBar.prototype = Object.extend( new AbstractUIComponent( ),
+{
+	_IMAGE_PATH : "birt/images/",
+	_IMAGE_EXTENSION : ".gif",
+	_IMAGE_FIRST_PAGE : !rtl?"FirstPage":"LastPage",
+	_IMAGE_LAST_PAGE : !rtl?"LastPage":"FirstPage",
+	_IMAGE_PREVIOUS_PAGE : !rtl?"PreviousPage":"NextPage",
+	_IMAGE_NEXT_PAGE : !rtl?"NextPage":"PreviousPage",
+	_IMAGE_DISABLED_SUFFIX : "_disabled",
+	
+	/**
+	 *	Total number of pages.
+	 */
+	__oTotalPage : null,
+	
+	/**
+	 *	Current page number.
+	 */
+	__oPageNumber : null,
+	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	@return, void
+	 */
+	initialize : function( id )
+	{
+		this.__initBase( id );
+		this.__oPageNumber = $( 'pageNumber' );
+		this.__oTotalPage = $( 'totalPage' );
+		this.__cb_installEventHandlers( );
+	},
+
+	/**
+	 *	Binding data to the navigation bar UI. Data includes page number, total
+	 *	page number (optional).
+	 *
+	 *	@data, data DOM tree (Schema TBD)
+	 *	@return, void
+	 */
+	__cb_bind : function( data )
+	{
+		if ( !data )
+		{
+			return;
+		}
+		
+		var oPageNumbers = data.getElementsByTagName( 'PageNumber' );
+		if ( !oPageNumbers && !oPageNumbers[0] )
+		{
+			return;
+		}
+		
+		this.__oPageNumber.innerHTML = oPageNumbers[0].firstChild.data;
+		
+		var oTotalPages = data.getElementsByTagName( 'TotalPage' );
+		this.__oTotalPage.innerHTML = ( oTotalPages && oTotalPages[0] )? oTotalPages[0].firstChild.data : '+';
+		
+		var pageNumber = parseInt( this.__oPageNumber.firstChild.data );
+		var totalPage = ( this.__oTotalPage.firstChild.data == '+' )? '+' : parseInt( this.__oTotalPage.firstChild.data );
+
+		var oImgs = this.__instance.getElementsByTagName( "INPUT" );
+		
+		var isFirstPage = !( pageNumber > 1 );
+		var isLastPage = !( totalPage == '+' || pageNumber < totalPage );
+		
+		oImgs[0].style.cursor = (!isFirstPage)? "pointer" : "default";
+		oImgs[1].style.cursor = (!isFirstPage)? "pointer" : "default";
+		oImgs[2].style.cursor = (!isLastPage)? "pointer" : "default";
+		oImgs[3].style.cursor = (!isLastPage)? "pointer" : "default";
+		
+		oImgs[0].src = this._getImageFileName( this._IMAGE_FIRST_PAGE, isFirstPage );
+		oImgs[1].src = this._getImageFileName( this._IMAGE_PREVIOUS_PAGE, isFirstPage );
+		oImgs[2].src = this._getImageFileName( this._IMAGE_NEXT_PAGE, isLastPage );
+		oImgs[3].src = this._getImageFileName( this._IMAGE_LAST_PAGE, isLastPage );		
+	},
+	
+	_getImageFileName : function( base, disabled )
+	{
+		return this._IMAGE_PATH + base + ( disabled?this._IMAGE_DISABLED_SUFFIX:"" ) + this._IMAGE_EXTENSION;
+	},
+	
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, navigation bar id (optional since there is only one nav bar)
+	 *	@return, void
+	 */
+	__cb_installEventHandlers : function( )
+	{
+		var oImgs = this.__instance.getElementsByTagName( 'INPUT' );
+		
+		if ( oImgs )
+		{
+			for ( var i = 0; i < oImgs.length; i++ )
+			{
+				if ( oImgs[i].type == 'image' )
+				{
+					Event.observe( oImgs[i], 'click', this.__neh_click.bindAsEventListener( this ), false );
+				}
+			}
+		}
+		
+		// Observe "keydown" event
+		this.keydown_closure = this.__neh_keydown.bindAsEventListener(this);
+		Event.observe($('gotoPage'), 'keydown', this.keydown_closure, false);
+	},
+
+	/**
+	 *	Handle press "Enter" key.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_keydown: function( event )
+	{
+		// If press 'Enter' key
+		if( event.keyCode == 13 )
+		{
+			this.__gotoGage( );
+			Event.stop( event );
+		}
+	},	
+
+	/**
+	 *	Handle clicking 'Goto' event.
+	 *
+	 *	@return, void
+	 */	
+	__gotoGage : function( )
+	{
+		var iPageNo = -1;
+		var totalPage = ( this.__oTotalPage.firstChild.data == '+' )? '+' : parseInt( this.__oTotalPage.firstChild.data );
+		
+		var oGotoPage = $( 'gotoPage' );
+		var pageNo = oGotoPage.value;
+		if ( pageNo != null && birtUtility.trim( pageNo ).length > 0 )
+		{
+			iPageNo = parseInt( pageNo );
+		}
+		if ( iPageNo > 0 && iPageNo <= totalPage )
+		{
+			birtEventDispatcher.broadcastEvent( birtEvent.__E_GETPAGE, { name : Constants.PARAM_PAGE, value : oGotoPage.value } );
+		}
+		else
+		{			
+			alert( Constants.error.invalidPageNumber );
+			oGotoPage.focus( );
+		}
+	},
+	
+	/**
+	 *	Handle native event 'click'.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_click : function( event )
+	{
+		var pageNumber = parseInt( this.__oPageNumber.firstChild.data );
+		var totalPage = ( this.__oTotalPage.firstChild.data == '+' )? '+' : parseInt( this.__oTotalPage.firstChild.data );
+		
+		var oBtn = Event.element( event );
+		if ( oBtn )
+		{
+			switch ( oBtn.name )
+			{
+   				case 'first':
+ 				{
+ 					if ( pageNumber > 1 )
+ 					{
+						birtEventDispatcher.broadcastEvent( birtEvent.__E_GETPAGE, { name : Constants.PARAM_PAGE, value : 1 } );
+					}
+ 					break;
+ 				}
+   				case 'previous':
+ 				{
+ 					if ( pageNumber > 1 )
+ 					{
+						birtEventDispatcher.broadcastEvent( birtEvent.__E_GETPAGE, { name : Constants.PARAM_PAGE, value : pageNumber - 1 } );
+					}
+ 					break;
+ 				}
+   				case 'next':
+ 				{
+ 					if ( totalPage == '+' || pageNumber < totalPage )
+ 					{
+	 					birtEventDispatcher.broadcastEvent( birtEvent.__E_GETPAGE, { name : Constants.PARAM_PAGE, value : pageNumber + 1 } );
+ 					}
+ 					break;
+ 				}
+   				case 'last':
+ 				{
+ 					if ( totalPage == '+' || pageNumber < totalPage )
+ 					{
+ 						birtEventDispatcher.broadcastEvent( birtEvent.__E_GETPAGE, { name : Constants.PARAM_PAGE, value : totalPage } );
+ 					}
+ 					break;
+ 				}
+   				case 'goto':
+   				{
+   					this.__gotoGage( );
+   					break;
+   				}
+				default:
+				{
+					break;
+				}	
+			}
+		}
+	},
+	
+	__get_current_page : function( )
+	{
+		return this.__oPageNumber.innerHTML;
+	},
+	
+	/**
+	 * Load current page. Triggered by init.
+	 */
+	__init_page : function( )
+	{
+		if( birtParameterDialog.collect_parameter( ) )
+		{			
+			if ( this.__oPageNumber.firstChild )
+			{
+				var pageNumber = parseInt( this.__oPageNumber.firstChild.data );
+				birtEventDispatcher.broadcastEvent( birtEvent.__E_GETPAGE_INIT, { name : Constants.PARAM_PAGE, value : pageNumber } );
+			}
+			else
+			{
+				birtEventDispatcher.broadcastEvent( birtEvent.__E_GETPAGE_INIT );
+			}
+		}
+	}
+}
+);
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/BirtProgressBar.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/BirtProgressBar.js
new file mode 100644
index 0000000..3888584
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/BirtProgressBar.js
@@ -0,0 +1,314 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ *	BirtProgressBar
+ *	...
+ */
+BirtProgressBar = Class.create( );
+BirtProgressBar.prototype = Object.extend( new AbstractUIComponent( ),
+{
+	/**
+	 *	Latency that will trigger the progress bar.
+	 */
+	__interval : 300,
+	
+	/**
+	 *	Timer instance.
+	 */
+	__timer : null,
+	
+	/**
+	 *	mask instance.
+	 */
+	__mask : null,
+	
+	/**
+	 *	Closures
+	 */
+	__cb_bind_closure : null,
+	
+	/**
+	 *	Event handler for click 'cancel' button
+	 */
+	__neh_click_closure : null,	
+	
+	/**
+	 *	'Cancel' button container
+	 */
+	__cancel_button : 'cancelTaskButton',	
+
+	/**
+	 * The input control to save 'taskid'
+	 */
+	__task_id : 'taskid',
+		
+	/**
+	 * When click cancel button, indicate whether redirect a cancel page
+	 */
+	__redirect : false,
+	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	@return, void
+	 */
+	initialize : function( id )
+	{
+		this.__initBase( id );
+		this.__mask = this.__create_mask( );
+		this.__cb_bind_closure = this.__cb_bind.bindAsEventListener( this );
+		this.__neh_click_closure = this.__neh_click.bindAsEventListener( this );
+		
+		this.__installEventHandlers( id );
+	},
+
+	/**
+	 *	Binding data to the dialog UI. Data includes zoom scaling factor.
+	 *
+	 *	@return, void
+	 */
+	__cb_bind : function( )
+	{
+		if( birtCommunicationManager.__active )
+		{
+			this.__timer = window.setTimeout( this.__cb_bind_closure, this.__interval );
+			this.__l_show( );
+		}
+		else
+	  	{
+			window.clearTimeout( this.__timer );
+			this.__l_hide( );
+	  	}
+	},
+	
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, response id 
+	 *	@return, void
+	 */
+	__installEventHandlers : function( id )
+	{
+		var oCancel = this.__loc_cancel_button( );
+		if( oCancel )
+			Event.observe( oCancel, 'click', this.__neh_click_closure, false );
+	},
+
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, response id 
+	 *	@return, void
+	 */
+	__start : function( )
+	{
+		// check taskid
+		var taskid = birtUtility.getTaskId( );
+		if( taskid.length > 0 )
+		{
+			// if taskid existed, show 'Cancel' button
+			this.__l_show_cancel_button( );
+			
+			// enable 'cancel' button
+			var oCancel = this.__loc_cancel_button( );
+			if( oCancel )
+				oCancel.disabled = false;
+		}
+		else
+		{
+			// hide 'Cancel' button
+			this.__l_hide_cancel_button( );
+		}
+					
+		this.__timer = window.setTimeout( this.__cb_bind_closure, this.__interval );
+	},
+	
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, response id 
+	 *	@return, void
+	 */
+	__stop : function( )
+	{
+		window.clearTimeout( this.__timer );
+		this.__l_hide( );
+		
+		// clear taskid
+		birtUtility.clearTaskId( );
+	},
+
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, response id 
+	 *	@return, void
+	 */
+	__create_mask : function( )
+	{
+		var oMask = document.createElement( 'iframe' );
+		// Workaround for IE https secure warning
+		oMask.src = "birt/pages/common/blank.html";
+		oMask.style.position = 'absolute';
+		oMask.style.top = '0px';
+		oMask.style.left = '0px';
+		oMask.style.width = '100%';
+		var height = BirtPosition.viewportHeight( );
+		oMask.style.height = height + 'px';
+		oMask.style.zIndex = '300';
+		oMask.style.backgroundColor = '#dbe4ee';
+		oMask.style.filter = 'alpha( opacity = 0.0 )';
+		oMask.style.opacity = '.0';
+		oMask.scrolling = 'no';
+		oMask.marginHeight = '0px';
+		oMask.marginWidth = '0px';
+		oMask.style.display = 'none';
+		document.body.appendChild( oMask );
+		
+		return oMask;		
+	},
+
+	/**
+	 *	Show progress bar.
+	 */
+	__l_show : function( )
+	{
+		Element.show( this.__mask, this.__instance );
+		BirtPosition.center( this.__instance );
+	},
+	
+	/**
+	 *	Hide progress bar.
+	 */
+	__l_hide : function( )
+	{
+		Element.hide( this.__instance, this.__mask );
+	},
+
+	/**
+	 *  Returns 'cancel' button
+	 * 	@return, INPUT
+	 */
+	__loc_cancel_button: function( )
+	{
+		var oIEC = this.__instance.getElementsByTagName( "input" );
+		var oCancel;
+		if( oIEC && oIEC.length > 0 )
+		{
+			for( var i = 0 ; i < oIEC.length; i++ )
+			{
+				if( oIEC[i].type == 'button' )
+				{
+					oCancel = oIEC[i];
+					break;
+				}
+			}
+		}
+		
+		return oCancel;
+	},
+
+	/**
+	 *	Handle click "Cancel" button.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_click: function( event )
+	{
+		var oTaskId = document.getElementById( this.__task_id );
+		if( oTaskId && window.confirm( Constants.error.confirmCancelTask ) )
+		{	
+			if( this.__redirect )
+			{
+				this.cancel( oTaskId.value );	
+			}
+			else
+			{
+				birtEventDispatcher.broadcastEvent( birtEvent.__E_CANCEL_TASK, { name : Constants.PARAM_TASKID, value : oTaskId.value } );
+				Event.element( event ).disabled = true;
+			}			
+		}	
+	},
+	
+	/**
+	 *	Try to cancel the process.
+	 *
+	 *	@return, void
+	 */
+	cancel: function( taskid )
+	{
+		if( !taskid )
+		{
+			var oTaskId = document.getElementById( this.__task_id );
+			if( oTaskId )
+				taskid = oTaskId.value;
+		}
+						 
+		if( !taskid || taskid.length <= 0 )
+			return;
+						 
+		var hiddenForm = document.createElement( 'form' );
+		hiddenForm.method = 'post';
+		hiddenForm.target = '_self';
+		var url = soapURL;
+		url = url.replace( /[\/][a-zA-Z]+[?]/, '/CancelTask.jsp?' );
+		hiddenForm.action = url;
+	
+		var taskidInput = document.createElement( 'input' );
+		taskidInput.type = 'hidden';
+		taskidInput.name = Constants.PARAM_TASKID;
+		taskidInput.value = taskid;
+		hiddenForm.appendChild( taskidInput );
+		
+		var divObj = document.createElement( "DIV" );
+		document.body.appendChild( divObj );
+		divObj.style.display = "none";
+		divObj.appendChild( hiddenForm );
+		
+		hiddenForm.submit( );		
+	},
+
+	/**
+	 *	Show "Cancel" button.
+	 *
+	 *	@return, void
+	 */	
+	__l_show_cancel_button: function( )
+	{
+		var container = document.getElementById( this.__cancel_button );
+		if( container )
+			container.style.display = 'block';
+	},
+
+	/**
+	 *	Hide "Cancel" button.
+	 *
+	 *	@return, void
+	 */		
+	__l_hide_cancel_button: function( )
+	{
+		var container = document.getElementById( this.__cancel_button );
+		if( container )
+			container.style.display = 'none';
+	},
+	
+	/**
+	 * Set redirect flag
+	 * 
+	 * @param, flag
+	 * @return, void
+	 */
+	setRedirect : function( flag )
+	{
+		this.__redirect = flag;		
+	}
+} );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/BirtToc.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/BirtToc.js
new file mode 100644
index 0000000..61a60c6
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/BirtToc.js
@@ -0,0 +1,41 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	BirtToc
+ *	...
+ */
+BirtToc = Class.create( );
+
+BirtToc.prototype = Object.extend( new AbstractBaseToc( ),
+{
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	@return, void
+	 */
+	initialize : function( id )
+	{
+		this.__initBase( id );
+		
+		this.__neh_click_closure = this.__neh_click.bindAsEventListener( this );
+		this.__beh_toc_closure =  this.__beh_toc.bindAsEventListener( this );
+		
+		this.__beh_toc_image_closure = this.__beh_toc_image.bindAsEventListener( this );
+		this.__neh_img_click_closure = this.__neh_img_click.bindAsEventListener( this );
+		this.__neh_resize_closure = this.__neh_resize.bindAsEventListener( this );
+		
+		this.__neh_item_mouse_over = this.__neh_mousemove.bindAsEventListener( this );
+		this.__neh_item_mouse_out  = this.__neh_mouseout.bindAsEventListener( this );
+		this.__neh_item_click = this.__neh_text_click.bindAsEventListener( this );
+		
+		this.__cb_installEventHandlers( );
+	}
+} );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/BirtToolbar.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/BirtToolbar.js
new file mode 100644
index 0000000..8e9eb1e
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/app/BirtToolbar.js
@@ -0,0 +1,115 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	BirtToolbar
+ *	...
+ */
+BirtToolbar = Class.create( );
+
+BirtToolbar.prototype = Object.extend( new AbstractBaseToolbar( ),
+{
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	@return, void
+	 */
+	initialize : function( id )
+	{
+		this.__initBase( id );
+		this.__neh_click_closure = this.__neh_click.bindAsEventListener( this );
+		this.__cb_installEventHandlers( );
+	},
+
+	/**
+	 *	Binding data to the toolbar UI. Data includes zoom scaling factor.
+	 *
+	 *	@data, data DOM tree (schema TBD)
+	 *	@return, void
+	 */
+	__cb_bind : function( data )
+	{
+	},
+
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, toolbar id (optional since there is only one toolbar)
+	 *	@return, void
+	 */
+	__cb_installEventHandlers : function( )
+	{
+		var oImgs = this.__instance.getElementsByTagName( 'INPUT' );
+		if ( oImgs )
+		{
+			for ( var i = 0; i < oImgs.length; i++ )
+			{
+				if ( oImgs[i].type == 'image' )
+				{
+					Event.observe( oImgs[i], 'click', this.__neh_click_closure, false );
+				}
+			}
+		}
+	},
+	
+	/**
+	 *	Handle native event 'click'.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_click : function( event )
+	{
+		var oBtn = Event.element( event );
+		
+		if ( oBtn )
+		{
+			switch ( oBtn.name )
+			{
+				case 'print':
+				{
+					birtEventDispatcher.broadcastEvent( birtEvent.__E_PRINT );
+					break;
+				}				
+				case 'printServer':
+				{
+					birtEventDispatcher.broadcastEvent( birtEvent.__E_PRINT_SERVER );
+					break;
+				}
+				case 'exportReport':
+				{
+					birtEventDispatcher.broadcastEvent( birtEvent.__E_EXPORT_REPORT );
+					break;
+				}
+				case 'export':
+				{
+					birtEventDispatcher.fireEvent( birtEvent.__E_QUERY_EXPORT );
+					break;
+				}
+				case 'toc':
+				{
+					birtEventDispatcher.broadcastEvent( birtEvent.__E_TOC );
+					break;
+				}
+				case 'parameter':
+				{
+					birtEventDispatcher.broadcastEvent( birtEvent.__E_PARAMETER );
+					break;
+				}
+				default:
+				{
+					alert( oBtn.name );
+					break;
+				}	
+			}
+		}
+	}
+}
+);
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/AbstractBaseDialog.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/AbstractBaseDialog.js
new file mode 100644
index 0000000..453156c
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/AbstractBaseDialog.js
@@ -0,0 +1,482 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	Dialog base class
+ */
+AbstractBaseDialog = function(){};
+
+AbstractBaseDialog.prototype =
+{		
+	contentHolderWidth: 500, //TODO - move to display constants? Default width in pixels
+	visible: null, //Is the dialog currently visible		
+	__operationCancelled: false,
+	__allowSelection: false,
+	 
+	/**
+	 Initialize dialog base
+	 */
+	__initBase: function(htmlId, contentWidth)
+	{
+		this.__instance = $(htmlId);
+		this.htmlId = htmlId;
+		this.visible = false;
+		
+		//references will be set for okay button so it can be enabled/disabled
+		this.okButton = null;
+		this.okButtonLeft = null;
+		this.okButtonRight = null;
+		
+		//Instance is given a location within screen to avoid
+		//extra scroll bar creation
+		this.__instance.style.top = '0px';
+		this.__instance.style.left = '0px';
+		
+		//Sizing
+		this.contentHolderName = htmlId + "dialogContentContainer";
+		if(contentWidth)
+		{
+			this.contentHolderWidth = parseInt(contentWidth);
+		}	
+		
+		this.__neh_resize_closure = this.__neh_resize.bindAsEventListener( this );
+		
+		// Initialize event handler closures	
+		this.__neh_okay_closure = this.__neh_okay.bind(this);
+		this.__neh_cancel_closure = this.__neh_cancel.bind(this);
+		this.mousedown_closure = this.__neh_mousedown.bindAsEventListener(this);
+		this.mouseup_closure = this.__neh_mouseup.bindAsEventListener(this);
+		this.drag_closure = this.__neh_drag.bindAsEventListener(this);
+		this.disposeSelection_closure = this.__neh_disposeSelection.bindAsEventListener(this);
+		this.enableSelection_closure = this.__neh_enableSelection.bindAsEventListener(this);
+		
+	    this.__beh_cancelOperation_closure = this.__beh_cancelOperation.bindAsEventListener( this );
+		
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_CANCEL_TASK, this.htmlId, this.__beh_cancelOperation_closure );
+		
+		this.__operationCancelled = false;
+		
+		// Initialize shared events	
+		this.__base_installEventHandlers(htmlId);	
+	},
+	
+	/**
+	Install event handlers shared across all dialogs.
+	Buttons (close, cancel, ok), move dialog (drag and drop), screen resize.
+	*/
+	__base_installEventHandlers : function( id )
+	{
+		//Initialize iframe
+		this.__iframe = $(id + "iframe");
+		
+		// Close button
+		var closeBtn = $(id + "dialogCloseBtn");
+		Event.observe( closeBtn, 'click', this.__neh_cancel_closure, false );
+		Event.observe( closeBtn, 'mousedown', this.__neh_stopEvent.bindAsEventListener(this), false );
+		
+		// OK and Cancel buttons		
+		this.okBtn = $(id + "okButton");
+		var cancelBtn = $(id + "cancelButton");
+		
+		this.okBtnLeft = $(id + "okButtonLeft"); //left part of background image
+		this.okBtnRight = $(id + "okButtonRight"); //right part of background image
+		
+		//set OK button to enabled as default
+		this.okBtn.className = "dialogBtnBarButtonEnabled";
+		if ( this.okBtnLeft )
+		{
+			this.okBtnLeft.className = "dialogBtnBarButtonLeftBackgroundEnabled";
+		}
+		if ( this.okBtnRight )
+		{
+			this.okBtnRight.className = "dialogBtnBarButtonRightBackgroundEnabled";
+		}
+		
+		Event.observe( this.okBtn, 'click', this.__neh_okay_closure , false );
+		//Cancel		
+		Event.observe( cancelBtn, 'click', this.__neh_cancel_closure , false );
+			
+		//Drag and Drop
+		this.dragBarName = id + "dialogTitleBar";
+		var dragArea = $(this.dragBarName);	
+		Event.observe(dragArea, 'mousedown', this.mousedown_closure, false);
+		
+		//work around for IE, enable selection for dialog text controls
+		var oInputs = this.__instance.getElementsByTagName( 'INPUT' );
+		for ( var i = 0; i < oInputs.length ; i++ )
+		{
+			if(oInputs[i].type != 'button')
+			{
+				this.__enableSelection( oInputs[i] );
+			}
+		}
+		
+		var oTextAreas = this.__instance.getElementsByTagName( 'TEXTAREA' );
+		for ( var i = 0; i < oTextAreas.length ; i++ )
+		{
+			this.__enableSelection( oTextAreas[i] );
+		}		
+	},	
+	
+	/**
+	 *	Binding data to the dialog UI.
+	 *
+	 *	@data, data DOM tree (schema TBD)
+	 *	@return, void
+	 */
+	__cb_bind : function( data )
+	{
+		this.__bind( data );
+			
+		this.__l_show( );
+	},
+	
+	/**
+	ABSTRACT - must be implemented by extending class
+	Gets xml data before dialog is shown
+	*/
+	__bind: function(data)
+	{
+	
+	},
+	
+	/**
+	Trigger dialog from client (bypasses bind step)
+	*/
+	showDialog: function()
+	{
+		this.__l_show( );
+	},
+	
+	/**
+	 *	
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__l_show : function( )
+	{
+		// reset cancelled flag
+		this.__operationCancelled = false;
+		this.__preShow();
+			
+				//check if the dialog is already shown
+		if(!this.visible)
+		{
+			var zIndex = Mask.show(); 
+			debug("showing at zIndex " + zIndex);
+			this.__instance.style.zIndex = zIndex;
+					
+			Element.show( this.__instance );
+			this.visible = true;
+			
+			//workaround for Mozilla bug https://bugzilla.mozilla.org/show_bug.cgi?id=167801
+			if(BrowserUtility.useIFrame())
+			{
+				//show iframe under dialog
+				Element.show( this.__iframe );
+			}
+			
+			this.__setWidth();
+				
+			BirtPosition.center( this.__instance );
+			
+			// workaround for IE7 in rtl mode
+			if ( BrowserUtility.isIE7 && rtl )
+			{
+				// force refreshing the DIV elements,
+				// else their positioning might become brokem after opening
+				// the same dialog box twice...
+				var titleContainer = $(this.htmlId + "dialogTitleBar"); 
+				if ( titleContainer )
+				{
+					titleContainer.style.direction = "rtl";
+					var elements = titleContainer.getElementsByTagName("div");
+					for ( var i = 0; i < elements.length; i++ )
+					{
+						var el = elements[i];
+						el.style.display = "none";
+						el.style.display = "block";
+					}
+				}
+			}
+			
+			Event.observe( window, 'resize', this.__neh_resize_closure, false );
+			Event.observe( document, 'mouseup', this.disposeSelection_closure, false );			
+		}
+		
+		this.__postShow();	
+	},
+	
+
+	/**
+	Called right before element is shown
+	*/
+	__preShow: function()
+	{
+		//implementation is left to extending class
+	},
+	
+	/**
+	Called after element is shown
+	*/
+	__postShow: function()
+	{
+		//implementation is left to extending class
+	},
+	
+	/**
+	 *	Handle native event 'click'.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__l_hide : function( )
+	{
+		this.__preHide();
+		Event.stopObserving( window, 'resize', this.__neh_resize_closure, false );
+		Event.stopObserving( document, 'mouseup', this.disposeSelection_closure, false );
+		Element.hide( this.__instance, this.__iframe );
+		this.visible = false;
+		Mask.hide();
+	},
+		
+	/**
+	Called before element is hidden
+	*/
+	__preHide: function()
+	{
+		//implementation is left to extending class
+	},
+	
+	/**
+	Enables/disabled OK button
+	@param boolean enabled
+	*/
+	__setOKButtonState: function(enabled)
+	{
+		if(enabled)
+		{
+			if(this.okBtn.className == "dialogBtnBarButtonDisabled")
+			{
+				this.okBtn.className = "dialogBtnBarButtonEnabled";
+				if ( this.okBtnLeft )
+				{
+					this.okBtnLeft.className = "dialogBtnBarButtonLeftBackgroundEnabled";
+				}
+				if ( this.okBtnRight )
+				{
+					this.okBtnRight.className = "dialogBtnBarButtonRightBackgroundEnabled";
+				}
+				Event.observe( this.okBtn, 'click', this.__neh_okay_closure , false );
+			}
+		}
+		else
+		{
+			this.okBtn.className = "dialogBtnBarButtonDisabled";
+			if ( this.okBtnLeft )
+			{
+				this.okBtnLeft.className = "dialogBtnBarButtonLeftBackgroundDisabled";
+			}
+			if ( this.okBtnRight )
+			{
+				this.okBtnRight.className = "dialogBtnBarButtonRightBackgroundDisabled";
+			}
+			Event.stopObserving( this.okBtn, 'click', this.__neh_okay_closure , false );
+		}
+	},
+	
+	/**
+	Stop event
+	*/
+	__neh_stopEvent: function(event)
+	{
+		Event.stop(event);
+	},
+	
+	/**
+	Handle mouse down
+	*/
+	__neh_mousedown: function(event)
+	{
+		debug("AbstractBaseDialog __neh_mousedown");
+		
+		//Event.stop(event);
+		var target = Event.element( event );
+		
+		Event.observe( target, 'mouseup', this.mouseup_closure , false );
+		Event.observe( target, 'mousemove', this.drag_closure , false );
+	},
+	
+	/**
+	Handle mouse up
+	*/
+	__neh_mouseup: function(event)
+	{
+		var target = Event.element( event );
+
+		Event.stopObserving( target, 'mouseup',  this.mouseup_closure , false );
+		Event.stopObserving( target, 'mousemove', this.drag_closure , false );
+	},
+	
+	/**
+	Handle mousemove 
+	*/
+	__neh_drag: function(event)
+	{
+		debug("Mouse move");
+		Event.stop( event );
+
+		var target = Event.element( event );
+		Event.stopObserving( target, 'mouseup',  this.mouseup_closure , false );
+		Event.stopObserving( target, 'mousemove', this.drag_closure , false );
+					
+		DragDrop.startDrag(this.__instance, event, null);
+	},
+	
+	/**
+	* Handle cancel selection
+	*/
+	__neh_disposeSelection: function(event)
+	{
+		if ( !this.__allowSelection )
+		{
+			if(document.selection)
+			{
+				document.selection.empty();
+			}
+			else if(window.getSelection)
+			{
+				var selection = window.getSelection();
+				if(selection)
+				{
+					selection.removeAllRanges();
+				}
+			}
+		}
+	},
+
+	/**
+	 *	Handle enable selection for dialog controls.
+	 *
+	 *	@obj, incoming target object
+	 *	@return, void
+	 */	
+	__enableSelection: function( obj )
+	{
+		Event.observe( obj, 'select', this.enableSelection_closure , false );
+		Event.observe( obj, 'selectstart', this.enableSelection_closure , false );
+		Event.observe( obj, 'mouseup', this.enableSelection_closure , false );
+	},
+
+	/**
+	 *	Handle enable selection event.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */	
+	__neh_enableSelection: function( event )
+	{
+		event.cancelBubble = true;
+	},
+		
+	/**
+	 *	Handle native event 'resize'.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_resize : function( event )
+	{
+		BirtPosition.center( this.__instance );
+	},
+	
+	__neh_cancel: function()
+	{
+		this.__l_hide( );
+	},
+	
+	__neh_okay: function()
+	{
+		this.__okPress( );
+	},
+
+	/**
+	 ABSTRACT - Handle clicking on ok.
+	*/
+	__okPress: function( )
+	{
+		//ABSTRACT - needs to be implemented by extending class
+	},
+
+	//TODO change so called once
+	__setWidth: function()
+	{	
+		// In Mozilla 1.4 or lower version, if don't set overflow as "auto",then
+		// clientWidth/clientHeight always return zero. The display is incorrect.
+		// So add the following section.
+		if ( this.__instance.clientWidth <= 0)
+		{
+			this.__instance.style.overflow = "auto";
+		}
+		
+		var contentHolder = $(this.contentHolderName);
+		var innerWidth = contentHolder.offsetWidth;
+		var outerWidth = this.__instance.clientWidth;
+		var difference = outerWidth - innerWidth;			
+		contentHolder.style.width = this.contentHolderWidth + 'px';
+		var newOuterWidth = contentHolder.offsetWidth + difference;
+		this.__instance.style.width = newOuterWidth + 'px';
+			
+		this.__iframe.style.width = this.__instance.offsetWidth + 'px';
+		this.__iframe.style.height = this.__instance.offsetHeight + 'px';
+		
+		//move iframe to true top, left
+		//assumes that top/bottom left/right borders are same width
+		if(this.__iframe.clientWidth > 0)
+		{
+			this.__iframe.style.top = (this.__instance.clientHeight - this.__instance.offsetHeight)/2 + 'px';
+			this.__iframe.style.left = (this.__instance.clientWidth - this.__instance.offsetWidth)/2 + 'px';
+		}
+	},
+	
+	/**
+	 * Shows or hide the title bar.
+	 * @param visible visibility flag
+	 */
+	__setTitleBarVisibile : function(visible)
+	{
+		// Hide dialog title bar if embedded in designer.
+		var titleBar = $( this.htmlId + 'dialogTitleBar' );
+		titleBar.style.display = visible?'inline':'none';			
+	},
+	
+	/**
+	@returns html id attribute of associated html element for this dialog
+	*/
+	getHtmlId: function()
+	{
+		return this.htmlId;
+	},
+	
+	/**
+	 * This event handler is called whenever an operation has been cancelled.
+	 * If the dialog box is visible, sets the cancelled flag to true.
+	 */
+	__beh_cancelOperation : function()
+	{
+		if ( this.visible )
+		{
+			this.__operationCancelled = true;
+		}
+	}
+	
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/AbstractExceptionDialog.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/AbstractExceptionDialog.js
new file mode 100644
index 0000000..4ba6be8
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/AbstractExceptionDialog.js
@@ -0,0 +1,126 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ *	Birt error dialog.
+ */
+AbstractExceptionDialog = function( ) { };
+
+AbstractExceptionDialog.prototype = Object.extend( new AbstractBaseDialog( ),
+{
+	__faultCode : "",
+
+	__setFaultContainersWidth: function( width )
+	{		
+		document.getElementById("faultStringContainer").style.width = width;
+		document.getElementById("exceptionTraceContainer").style.width = width;
+	},
+
+	
+	/**
+	 * Formats the given stack trace for HTML output.
+	 * @param data stack trace
+	 * @return formatted HTML data
+	 */
+	__formatStackTrace : function( data )	
+	{
+		if ( !data )
+		{
+			return "";
+		}
+		return data.replace(/\r?\n/g,"<br/>").replace(/[\s]{1}at/g,"&nbsp;&nbsp;&nbsp;at");		
+	},
+	
+	/**
+	 *	Binding data to the dialog UI. Data includes zoom scaling factor.
+	 *
+	 *	@data, data DOM tree (schema TBD)
+	 *	@return, void
+	 */
+	__bind: function( data )
+	{
+	 	if( !data )
+	 	{
+	 		return;
+	 	}
+		
+	 	var oSpans = this.__instance.getElementsByTagName( 'SPAN' );
+		
+	 	// Prepare fault string (reason)
+	 	var faultStrings = data.getElementsByTagName( 'faultstring' );
+	 	if ( faultStrings[0] && faultStrings[0].firstChild )
+	 	{
+			oSpans[0].innerHTML = faultStrings[0].firstChild.data;
+		}
+		else
+		{
+			oSpans[0].innerHTML = "";
+		}
+
+	 	// Prepare fault detail (Stack traces)
+	 	var faultDetail = data.getElementsByTagName( 'string' );
+	 	if ( faultDetail && faultDetail.length > 0 )
+	 	{
+	 		var detailSpan = oSpans[1];
+	 		for ( var detailIndex = 0; detailIndex < faultDetail.length; detailIndex++ )
+	 		{
+	 			if ( faultDetail[detailIndex].hasChildNodes() )
+	 			{
+	 				var detailNodes = faultDetail[detailIndex].childNodes;
+	 				if ( detailIndex > 0 )
+	 				{
+	 					detailSpan.appendChild( document.createElement("hr") );
+	 				}
+	 				var detailElement = document.createElement("div");	 				
+ 					detailElement.style.whiteSpace = "nowrap";
+ 					if ( detailIndex > 0 )
+ 					{
+ 						detailElement.style.borderTopStyle = "solid";
+ 						detailElement.style.borderTopWidth = "1px";
+ 					}
+	 				
+	 				for ( var textIndex = 0; textIndex < detailNodes.length; textIndex++ )
+	 				{
+		 				var stackTrace = detailNodes[textIndex].data;
+		 				stackTrace = this.__formatStackTrace( stackTrace )
+		 				var stackTraceElement = document.createElement("span");
+		 				stackTraceElement.innerHTML = stackTrace;
+		 				detailElement.appendChild( stackTraceElement );		 				
+		 				detailSpan.appendChild(detailElement);
+	 				}
+	 			}
+	 		}
+		}
+		else
+		{
+			oSpans[1].innerHTML = "";
+		}
+
+		var faultCodeElement = data.getElementsByTagName( 'faultcode' );
+	 	if ( faultCodeElement[0] && faultCodeElement[0].firstChild )
+	 	{
+			this.__faultCode = faultCodeElement[0].firstChild.data;
+		}
+		else
+		{
+			this.__faultCode = "";
+		}
+	
+		if ( this.__faultCode == "DocumentProcessor.getPageNumber( )" )
+		{
+			birtEventDispatcher.broadcastEvent( 
+				birtEvent.__E_GETPAGE_INIT, 
+				{ name : Constants.PARAM_PAGE, value : 1 } 
+				);
+		}				
+	
+	}
+} );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/AbstractParameterDialog.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/AbstractParameterDialog.js
new file mode 100644
index 0000000..3314cfa
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/AbstractParameterDialog.js
@@ -0,0 +1,278 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	BirtParameterDialog
+ *	...
+ */
+AbstractParameterDialog = function( ) { };
+
+AbstractParameterDialog.prototype = Object.extend( new AbstractBaseDialog( ),
+{
+    /**
+     *__parameter to store "name" and "value" pairs 
+     */
+     __parameter : [],
+         
+    /**
+     *__cascadingParameter to store "name" and "value" pairs
+     */
+     __cascadingParameter : [],
+
+    /**
+	 *	Event handler closures.
+	 */
+	 __neh_click_radio_closure : null,
+	 __neh_change_select_closure : null,
+	 
+	/**
+	 *	Initialize dialog base.
+	 *	@return, void
+	 */
+	initializeBase : function( id )
+	{
+		this.__initBase( id, '500px' );
+		this.__z_index = 200;
+		
+	    this.__neh_click_radio_closure = this.__neh_click_radio.bindAsEventListener( this );
+	    this.__neh_change_select_closure = this.__neh_change_select.bindAsEventListener( this );
+
+	    this.__local_installEventHandlers(id);
+	},
+	
+	/**
+	 *	Binding data to the dialog UI. Data includes zoom scaling factor.
+	 *	@data, data DOM tree (schema TBD)
+	 *	@return, void
+	 */
+	__bind : function( data )
+	{
+		this.__propogateCascadeParameter( data );
+	},
+
+	/**
+	 *	Binding data to the dialog UI. Data includes zoom scaling factor.
+	 *	@data, data DOM tree (schema TBD)
+	 *	@return, void
+	 */
+	__propogateCascadeParameter : function( data )
+	{
+		if ( this.__operationCancelled )
+		{
+			return;
+		}
+		
+		if( data )
+		{
+			var cascade_param = data.getElementsByTagName( 'CascadeParameter' )[0];//assume there is only one cascadeparameter
+			var selectionLists = data.getElementsByTagName( 'SelectionList' );
+			if ( !selectionLists )
+			{
+				return;
+			}
+			
+			for ( var k = 0; k < selectionLists.length; k++ )
+			{
+				var param_name = selectionLists[k].getElementsByTagName( 'Name' )[0].firstChild.data;
+				var selections = selectionLists[k].getElementsByTagName( 'Selections' );
+				
+				var append_selection = document.getElementById( param_name + "_selection" );
+				append_selection.title = "";
+				var len = append_selection.options.length;
+								
+				// Clear our selection list.
+				for( var i = 0, index = 0; i < len; i++ )
+				{
+					/*
+					if ( append_selection.options[index].value == "" )
+					{
+						index++;
+						continue;
+					}
+					*/
+					append_selection.remove( index );
+				}
+				
+				// Add new options based on server response.
+				for( var i = 0; i < selections.length; i++ )
+				{
+					if ( !selections[i].firstChild )
+					{
+						continue;
+					}
+	
+					var oOption = document.createElement( "OPTION" );
+					var oLabel = selections[i].getElementsByTagName( 'Label' )
+					if ( oLabel && oLabel.length > 0 )
+					{
+						oLabel = oLabel[0].firstChild;
+					}
+					if( oLabel )
+						oOption.text = oLabel.data;
+					else
+						oOption.text = "";
+
+					var oValue = selections[i].getElementsByTagName( 'Value' );
+					if ( oValue && oValue.length > 0 )
+					{
+						oValue = oValue[0].firstChild;
+					}
+					if( oValue )
+						oOption.value = oValue.data;
+					else
+						oOption.value = "";
+					append_selection.options[append_selection.options.length] = oOption;
+				}
+			}
+		}
+	},
+
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, toolbar id (optional since there is only one toolbar)
+	 *	@return, void
+	 */
+	__local_installEventHandlers : function( id )
+	{
+		//install UIComponent native handler
+		var oTBC = document.getElementById("parameter_table").getElementsByTagName( 'TABLE' );
+		for( var k = 0, counter = 0; k < oTBC.length; k++ )
+		{
+		    var temp = oTBC[k].getElementsByTagName( 'TABLE' );
+		    if( !temp.length )
+		    {
+		        //install select event handler in cascade parameters
+		        this.__install_cascade_parameter_event_handler( oTBC[k], counter++ );
+		    }
+		}
+		
+		var oTRC = document.getElementById( "parameter_table" ).getElementsByTagName( "TR" );
+		for( var i = 0; i < oTRC.length; i++ )
+		{
+			var oInput = oTRC[i].getElementsByTagName( "input" );
+			var oTable = oTRC[i].getElementsByTagName( "table" );
+			if( oTable.length > 0 )
+			{
+				continue;
+			}
+			//find radio with textbox or select items to install event listener.
+			var flag = false;
+			for( var j = 0; j < oInput.length; j++ )
+			{
+				if( oInput[j].type == "radio" && !flag )
+				{
+					var tempRadio = oInput[j];
+					flag = true;
+					continue;
+				}
+	  
+				if( oInput[j].type == "radio" && tempRadio != {} && oInput[j].id != tempRadio.id )
+				{
+					Event.observe( tempRadio, 'click', this.__neh_click_radio_closure, false );
+					Event.observe( oInput[j], 'click', this.__neh_click_radio_closure, false );
+				}
+			}
+		}
+	},
+	
+	/**
+	 *	Handle clicking on ok.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__okPress : function( )
+	{
+		if( birtParameterDialog.collect_parameter( ) )
+		{
+			birtEventDispatcher.broadcastEvent( birtEvent.__E_CHANGE_PARAMETER );
+			this.__l_hide( );
+		}
+	},
+
+	/**
+	 *	Handle clicking on radio.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */	
+	__neh_click_radio : function( event )
+	{
+		var temp = Event.element( event );
+		var oInput = temp.parentNode.getElementsByTagName( "input" );
+		var oSelect = temp.parentNode.getElementsByTagName( "select" );
+					
+		for( var i = 0; i < oInput.length; i++ )
+		{
+			if( oInput[i].id == temp.id )
+			{
+				//enable the next component
+				oInput[i].checked = true;
+				if( oInput[i+1] && ( oInput[i+1].type == "text" || oInput[i+1].type == "password" ) )
+				{
+					oInput[i+1].disabled = false;
+					oInput[i+1].focus( );
+				}
+				else if( oSelect[0] )
+				{
+					oSelect[0].disabled = false;
+					oSelect[0].focus( );
+				}
+			}
+			else if( oInput[i].type == "radio" && oInput[i].id != temp.id )
+			{
+				//disable the next component and clear the radio
+				oInput[i].checked = false;
+				if( oInput[i+1] && ( oInput[i+1].type == "text" || oInput[i+1].type == "password" ) )
+				{
+					oInput[i+1].disabled = true;
+				}
+				else if( oSelect[0] )
+				{
+					oSelect[0].disabled = true;
+				}
+		    }
+		}
+	},
+	
+	/**
+	 *	Handle change event when clicking on select.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_change_select : function( event )
+	{
+	    var matrix = new Array( );
+	    var m = 0;
+        for( var i = 0; i < this.__cascadingParameter.length; i++ )
+        {
+            for( var j = 0; j < this.__cascadingParameter[i].length; j++ )
+            {
+                if( this.__cascadingParameter[i][j].name == Event.element( event ).id.substr( 0, Event.element( event ).id.length - 10 ) )
+                {
+                    this.__cascadingParameter[i][j].value = Event.element( event ).options[Event.element( event ).selectedIndex].value;
+                    for( var m = 0; m <= j; m++ )
+                    {
+					    if( !matrix[m] )
+				        {
+				            matrix[m] = {};
+				        }
+				        matrix[m].name = this.__cascadingParameter[i][m].name;
+				        matrix[m].value = this.__cascadingParameter[i][m].value;
+				    }                    
+                    birtEventDispatcher.broadcastEvent( birtEvent.__E_CASCADING_PARAMETER, matrix );
+                }
+            }
+        }
+	}
+} );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtConfirmationDialog.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtConfirmationDialog.js
new file mode 100644
index 0000000..c8183d6
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtConfirmationDialog.js
@@ -0,0 +1,63 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	Birt confirmation dialog.
+ */
+BirtConfirmationDialog = Class.create( );
+
+BirtConfirmationDialog.prototype = Object.extend( new AbstractBaseDialog( ),
+{
+	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	@return, void
+	 */
+	initialize : function( id )
+	{
+		this.__initBase( id );
+		this.__z_index = 200;		
+	},
+	
+	/**
+	 *	Handle clicking on ok.
+	 *
+	 *	@return, void
+	 */
+	__okPress : function( )
+	{		
+		this.__l_hide( );
+	},
+		 
+	/**
+	Called right before element is shown
+	*/
+	__preShow: function()
+	{
+		// disable the toolbar buttons
+		birtUtility.setButtonsDisabled ( "toolbar", true );
+		
+		// disable the Navigation Bar buttons
+		birtUtility.setButtonsDisabled ( "navigationBar", true );
+	},
+	
+	/**
+	Called before element is hidden
+	*/
+	__preHide: function()
+	{
+		// enable the toolbar buttons
+		birtUtility.setButtonsDisabled ( "toolbar", false );
+		
+		// enable the Navigation Bar buttons
+		birtUtility.setButtonsDisabled ( "navigationBar", false );		
+	}	
+} );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtExceptionDialog.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtExceptionDialog.js
new file mode 100644
index 0000000..cd90044
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtExceptionDialog.js
@@ -0,0 +1,202 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ *	Birt error dialog.
+ */
+BirtExceptionDialog = Class.create( );
+
+BirtExceptionDialog.prototype = Object.extend( new AbstractExceptionDialog( ),
+{
+	/**
+	 * indicate whether exception detail is show or not.
+	 */
+	__isShow: false,
+	
+	/**
+	 * control id definitions
+	 */
+	__TRACE_CONTAINER: 'exceptionTraceContainer',
+	__LABEL_SHOW_TRACE: 'showTraceLabel',
+	__LABEL_HIDE_TRACE: 'hideTraceLabel',
+	
+	_showTraceLabel : null,
+	_hideTraceLabel : null,
+	
+	/**
+	 * Event handler closures.
+	 */
+	__neh_click_input_closurre : null,
+	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *
+	 *	@return, void
+	 */
+	initialize : function( id )
+	{
+		var dialogWidth = (Constants.request.servletPath == Constants.SERVLET_PARAMETER)?500:600;
+		if ( BrowserUtility.isIE && !BrowserUtility.isIE7 )
+		{
+			dialogWidth -= 55;
+		}
+		
+		this.__initBase( id, dialogWidth + "px" );
+		this.__allowSelection = true; // allow selecting text with the mouse
+		
+		// it looks like IE 6 handles the width differently
+		var faultDetailContainer = $( "faultdetail" ); 
+		var faultStringContainer = $("faultStringContainer");
+		if ( BrowserUtility.isIE && !BrowserUtility.isIE7 )
+		{
+			this.__setFaultContainersWidth( ( dialogWidth - 20 ) + "px" );
+			faultStringContainer.style.overflowX = "auto";
+			faultStringContainer.style.paddingBottom = "20px";
+			faultDetailContainer.parentNode.style.width = ( dialogWidth - 30 ) + "px";
+			faultDetailContainer.style.width = "100%";
+		}
+		else
+		{
+			this.__setFaultContainersWidth( ( dialogWidth - 80 ) + "px" );
+			faultStringContainer.style.overflow = "auto";
+		}
+
+		// Bugzilla 225924: Fix overflow issue in the stack trace container
+		if ( BrowserUtility.isSafari || BrowserUtility.isIE7 || ( BrowserUtility.isGecko && !BrowserUtility.isFirefox2 ) )
+		{
+			faultDetailContainer.parentNode.style.width = (dialogWidth - 90 ) + "px";
+		}
+	
+		if ( Constants.request.servletPath == Constants.SERVLET_PARAMETER )
+		{
+			// Hide dialog title bar if embedded in designer.
+			this.__setTitleBarVisibile(false);
+			// expand the dialog's height 
+			var contentContainer = $( id + "dialogContentContainer");
+			contentContainer.style.height = "355px";
+		}
+		
+		this.__z_index = 300;
+		
+		// click event on input control
+		this._showTraceLabel = $( this.__LABEL_SHOW_TRACE );
+		this._showTraceLabel.tabIndex = 0;
+		this._hideTraceLabel = $( this.__LABEL_HIDE_TRACE );
+		this._hideTraceLabel.tabIndex = 0;
+		
+		this.__neh_click_input_closure = this.__neh_click_input.bindAsEventListener( this );
+		this.__neh_key_input_closure = this.__neh_key_input.bindAsEventListener( this );
+		Event.observe( this._showTraceLabel, 'click', this.__neh_click_input_closure, false );				
+		Event.observe( this._showTraceLabel, 'keyup', this.__neh_key_input_closure, false );				
+		Event.observe( $( this._hideTraceLabel ), 'click', this.__neh_click_input_closure, false );
+		Event.observe( this._hideTraceLabel, 'keyup', this.__neh_key_input_closure, false );				
+	},	
+
+	__neh_key_input: function( event )
+	{
+		if ( event.keyCode == 13 || event.keyCode == 32 )
+		{
+			this.__neh_click_input();
+		}
+	},
+	
+	/**
+	*	Handle clicking on input control.
+	* 
+	* 	@return, void
+	*/
+	__neh_click_input: function( event )
+	{
+		if( !this.__isShow )
+		{
+			$( this.__TRACE_CONTAINER ).style.display = "block";
+			$( this.__LABEL_SHOW_TRACE ).style.display = "none";
+			$( this.__LABEL_HIDE_TRACE ).style.display = "block";
+			var that = this;
+			window.setTimeout( function() { that._hideTraceLabel.focus(); }, 0 );
+		}
+		else
+		{
+			$( this.__TRACE_CONTAINER ).style.display = "none";
+			$( this.__LABEL_SHOW_TRACE ).style.display = "block";
+			$( this.__LABEL_HIDE_TRACE ).style.display = "none";			
+			var that = this;
+			window.setTimeout( function() { that._showTraceLabel.focus(); }, 0 );
+		}
+		
+		this.__isShow = !this.__isShow;
+		
+		// refresh the dialog size (Mozilla/Firefox element resize bug)
+		birtUtility.refreshElement(this.__instance);
+		
+		if ( Constants.request.servletPath == Constants.SERVLET_PARAMETER )
+		{
+			// in designer mode, recenter the dialog
+			BirtPosition.center( this.__instance );
+		}
+	},
+		
+	__bind : function( data )
+	{
+		// call to super
+		AbstractExceptionDialog.prototype.__bind.apply( this, arguments );
+		
+		var label = this._showTraceLabel;
+		// defer
+		setTimeout(function(){
+			// cause any focussed element to lose focus
+			// (ex: opened drop-down lists)
+			label.focus();
+			label.blur();
+		},50);
+	},
+	
+	/**
+	*	Handle clicking on ok.
+	* 
+	* 	@return, void
+	*/
+	__okPress: function( )
+	{
+		this.__l_hide( );
+	},
+	
+	/**
+	Called right before element is shown
+	*/
+	__preShow: function()
+	{
+		// disable the toolbar buttons
+		birtUtility.setButtonsDisabled ( "toolbar", true );
+		
+		// disable the Navigation Bar buttons
+		birtUtility.setButtonsDisabled ( "navigationBar", true );
+		
+		// close the exception stack trace
+		$( this.__TRACE_CONTAINER ).style.display = 'none';
+		$( this.__LABEL_SHOW_TRACE ).style.display = "block";
+		$( this.__LABEL_HIDE_TRACE ).style.display = "none";			
+		
+		this.__isShow = false;
+	},
+	
+	/**
+	Called before element is hidden
+	*/
+	__preHide: function()
+	{
+		// enable the toolbar buttons
+		birtUtility.setButtonsDisabled ( "toolbar", false );
+		
+		// enable the Navigation Bar buttons
+		birtUtility.setButtonsDisabled ( "navigationBar", false );		
+	}	
+} );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtExportReportDialog.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtExportReportDialog.js
new file mode 100644
index 0000000..4d64341
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtExportReportDialog.js
@@ -0,0 +1,314 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	Birt export report dialog.
+ */
+BirtExportReportDialog = Class.create( );
+
+BirtExportReportDialog.prototype = Object.extend( new AbstractBaseDialog( ),
+{
+	__neh_select_change_closure : null,
+	__neh_radio_click_closure : null,
+	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	@return, void
+	 */
+	initialize : function( id )
+	{
+		this.__initBase( id );
+		this.__z_index = 200;
+		
+		this.__enableExtSection( );
+		
+		// Binding
+		this.__neh_select_change_closure = this.__neh_select_change.bindAsEventListener( this );
+		this.__neh_radio_click_closure = this.__neh_radio_click.bindAsEventListener( this );
+			
+		this.__installEventHandlers( id );
+	},
+	
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, toolbar id (optional since there is only one toolbar)
+	 *	@return, void
+	 */
+	__installEventHandlers : function( id )
+	{
+		var oSelects = this.__instance.getElementsByTagName( 'select' );
+		Event.observe( oSelects[0], 'change', this.__neh_select_change_closure, false );
+		
+		var oInputs = $( 'exportPageSetting' ).getElementsByTagName( 'input' );
+		for( var i=0; i<oInputs.length; i++ )
+		{
+			if( oInputs[i].type == 'radio' )			
+				Event.observe( oInputs[i], 'click', this.__neh_radio_click_closure,false );
+		}		
+	},
+
+	/**
+	 *	Handle clicking on ok.
+	 *
+	 *	@return, void
+	 */
+	__okPress : function( )
+	{
+		var oSelect = $( 'exportFormat' );
+		if( oSelect.value == '' )
+			return;
+		
+		if ( this.__exportAction( ) )
+		{
+			this.__l_hide( );
+		}
+	},
+	
+	/**
+	 * Handle export report action
+	 * 
+	 * @return, void
+	 */
+	__exportAction : function( )
+	{
+		var format = $( 'exportFormat' ).value.toLowerCase( );
+		
+		var docObj = document.getElementById( "Document" );
+		if ( !docObj || birtUtility.trim( docObj.innerHTML ).length <= 0)
+		{
+			alert ( Constants.error.generateReportFirst );	
+			return false;
+		}	
+		else
+		{	
+			var divObj = document.createElement( "DIV" );
+			document.body.appendChild( divObj );
+			divObj.style.display = "none";
+		
+			var formObj = document.createElement( "FORM" );
+			divObj.appendChild( formObj );
+
+			// Set selected output format
+			var action = soapURL;
+			var reg = new RegExp( "([&|?]{1}" + Constants.PARAM_FORMAT + "\s*)=([^&|^#]*)", "gi" );
+			if( action.search( reg ) < 0 )
+			{
+				action = action + "&" + Constants.PARAM_FORMAT + "=" + format;
+			}
+			else
+			{
+				action = action.replace( reg, "$1=" + format );
+			}
+
+			// Delete page, pagerange and parameterpage settings in url if existed
+			action = birtUtility.deleteURLParameter( action, Constants.PARAM_PAGE );
+			action = birtUtility.deleteURLParameter( action, Constants.PARAM_PAGERANGE );
+			action = birtUtility.deleteURLParameter( action, Constants.PARAM_PARAMETERPAGE );
+			action = birtUtility.deleteURLParameter( action, Constants.PARAM_EMITTER_ID );
+			
+			if( $( 'exportPageCurrent' ).checked )
+			{
+				// Set page setting
+				var currentPage = birtUtility.trim( $( 'pageNumber' ).innerHTML );
+				action = action + "&" + Constants.PARAM_PAGE + "=" + currentPage;				
+			}
+			else if( $( 'exportPageRange' ).checked )
+			{
+				// Set page range setting
+				var pageRange = birtUtility.trim( $( 'exportPageRange_input' ).value );
+				if ( !birtUtility.checkPageRange( pageRange ) )
+				{
+					alert( Constants.error.invalidPageRange );
+					return false;
+				}
+				action = action + "&" + Constants.PARAM_PAGERANGE + "=" + pageRange;
+			}			
+			
+			// If output format is pdf/ppt/postscript, set some options
+			if( this.__isPDFLayout( format ) )
+			{
+				// auto fit
+				var pageOverflow = 0;
+				//var pagebreakonly = "true";
+				
+				// actual size
+				if( $( 'exportFitToActual' ).checked )
+				{
+					pageOverflow = 1;
+				}
+				else if( $( 'exportFitToWhole' ).checked )
+				{
+					pageOverflow = 2;
+				}
+
+				reg = new RegExp( "([&|?]{1}" + Constants.PARAM_PAGE_OVERFLOW + "\s*)=([^&|^#]*)", "gi" );
+				if( action.search( reg ) < 0 )
+				{
+					action = action + "&" + Constants.PARAM_PAGE_OVERFLOW + "=" + pageOverflow;
+				}
+				else
+				{
+					action = action.replace( reg, "$1=" + pageOverflow );
+				}
+				
+				/*
+				reg = new RegExp( "([&|?]{1}" + Constants.PARAM_PAGEBREAKONLY + "\s*)=([^&|^#]*)", "gi" );
+				if( action.search( reg ) < 0 )
+				{
+					action = action + "&" + Constants.PARAM_PAGEBREAKONLY + "=" + pagebreakonly;
+				}
+				else
+				{
+					action = action.replace( reg, "$1=" + pagebreakonly );
+				}
+				*/							
+			}
+			
+			// Force "__asattachment" as true
+			reg = new RegExp( "([&|?]{1}" + Constants.PARAM_ASATTACHMENT + "\s*)=([^&|^#]*)", "gi" );
+			if( action.search( reg ) < 0 )
+			{
+				action = action + "&" + Constants.PARAM_ASATTACHMENT + "=true";
+			}
+			else
+			{
+				action = action.replace( reg, "$1=true" );
+			}			
+			
+			// Force "__overwrite" as false
+			reg = new RegExp( "([&|?]{1}" + Constants.PARAM_OVERWRITE + "\s*)=([^&|^#]*)", "gi" );
+			if( action.search( reg ) < 0 )
+			{
+				action = action + "&" + Constants.PARAM_OVERWRITE + "=false";
+			}
+			else
+			{
+				action = action.replace( reg, "$1=false" );
+			}
+						
+			formObj.action = action;
+			formObj.method = "post";			
+			formObj.submit( );
+			
+			return true;
+		}		
+	},
+	
+	/**
+	 *	Native event handler for radio control.
+	 */
+	__neh_radio_click : function( event )
+	{
+		var oSC = Event.element( event );		
+		if( oSC.type == 'radio' )
+		{
+			var oInput = $( 'exportPageRange_input' );
+			if( oSC.id == 'exportPageRange' )
+			{
+				oInput.disabled = false;
+				oInput.focus( );
+			}
+			else
+			{
+				oInput.disabled = true;
+				oInput.value = "";
+			}
+		}		
+	},
+	
+	/**
+	 *	Native event handler for select control.
+	 */
+	__neh_select_change : function( event )
+	{
+		this.__enableExtSection( );		
+	},
+	
+	/**
+	 * Enable the extended setting controls according to current selected output format.
+	 */
+	__enableExtSection : function( )
+	{		
+		var format = $( 'exportFormat' ).value.toLowerCase( );
+		if( this.__isPDFLayout( format ) )
+		{
+			this.__setDisabled( 'exportFitSetting', false );
+		}
+		else
+		{
+			this.__setDisabled( 'exportFitSetting', true );
+		}
+	},
+	
+	/**
+	 * Set disabled flag for all the controls in the container
+	 * 
+	 * @param id, html container id. ( DIV/TABLE....)
+	 * @param flag, true or false
+	 * @return, void
+	 */
+	__setDisabled: function( id, flag )
+	{
+		var container = $( id );
+		if( container )
+		{
+			var oInputs = container.getElementsByTagName( 'input' );
+			for( var i=0; i<oInputs.length; i++ )
+				oInputs[i].disabled = flag;
+		}
+	},
+	
+	/**
+	 * Check whether this format uses the PDF layout
+	 *
+	 * @param format, the output format 
+	 * @return true or false
+	 */	 
+	__isPDFLayout : function( format )
+	{
+		if( !format )
+			return false;
+		
+		if( format == Constants.FORMAT_PDF 
+		    || format == Constants.FORMAT_POSTSCRIPT
+		    || format == Constants.FORMAT_PPT )
+		{
+			return true;
+		}    
+		
+		return false;
+	},
+		 
+	/**
+	Called right before element is shown
+	*/
+	__preShow: function()
+	{
+		// disable the toolbar buttons
+		birtUtility.setButtonsDisabled ( "toolbar", true );
+		
+		// disable the Navigation Bar buttons
+		birtUtility.setButtonsDisabled ( "navigationBar", true );
+	},
+	
+	/**
+	Called before element is hidden
+	*/
+	__preHide: function()
+	{
+		// enable the toolbar buttons
+		birtUtility.setButtonsDisabled ( "toolbar", false );
+		
+		// enable the Navigation Bar buttons
+		birtUtility.setButtonsDisabled ( "navigationBar", false );		
+	}	
+} );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtParameterDialog.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtParameterDialog.js
new file mode 100644
index 0000000..ae5b4c1
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtParameterDialog.js
@@ -0,0 +1,1767 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	BirtParameterDialog
+ *	...
+ */
+BirtParameterDialog = Class.create( );
+
+BirtParameterDialog.prototype = Object.extend( new AbstractParameterDialog( ),
+{
+	/**
+	 *	Parameter dialog working state. Whether embedded inside
+	 *	designer dialog.
+	 */
+	__mode : Constants.SERVLET_FRAMESET,
+
+	/**
+	 *	Identify the parameter is null.
+	 */
+	__isnull : '__isnull',
+
+	/**
+	 *	Prefix that identify the parameter is to set Display Text for "select" parameter
+	 */
+	__isdisplay : '__isdisplay__',
+	
+	/**
+	 * identify the parameter value is a locale string
+	 */
+	__islocale : '__islocale',
+
+	/**
+	 * Prefix that identify the parameter value is a locale string
+	 */	
+	__prefix_islocale : '__islocale__',
+	
+    /**
+	 *	Event handler closures.
+	 */
+	 __neh_change_cascade_text_closure : null,
+	 __neh_mouseover_select_closure : null,
+	 __neh_mouseout_select_closurre : null,
+
+    /**
+	 *	Check if parameter is required or not.
+	 */
+	__is_parameter_required : null,
+	
+	/**
+	 *	Check if allow parameter blank or not.
+	 */
+	__is_parameter_allowblank : null,
+	
+	/*
+	* Clear the sub cascading parameters
+	*/
+	__clearSubCascadingParameter : null,
+	
+	/**
+	 * Mutex: counts the pending calls to __E_CASCADING_PARAMETER
+	 *   
+	 * >0 if a cascading value has just been changed.
+	 * Used to defer the ok button clicks until
+	 * a response has been received.
+	 */
+	__pendingCascadingCalls : 0,
+	
+	/**
+	 * Function to call after the dialog data has been updated.
+	 * Use to defer the click to ok whenever
+	 * an onchange event is still pending.
+	 */
+	__onDataChanged : null,
+	
+	/**
+	 * Cancels the next onchange event.
+	 * Used for an IE select box behaviour workaround where pressing
+	 * a key fires onchange events. It makes the select box
+	 * behaviour similar to the one of FireFox. 
+	 */
+	__cancelOnChange : false,
+	
+	/**
+	 * Cancels the show operation.
+	 * This flag is	used when the user clicked the cancel button and
+	 * wants to close the dialog box, and there are pending server requests.
+	 * The bind() method of the base class will call the __l_show() method
+	 * after receiving the response, which would popup the dialog again.
+	 * This flag will prevent this to happen.
+	 */
+	__cancelShow : false,
+	
+	/**
+	 * Stores the selected index from the focused select box. (IE only)
+	 */
+	__currentSelectedIndex : null,
+	
+	
+	MIN_MULTILINES : 5,
+	MAX_MULTLIINES : 10,
+	
+    /**
+	 *	if previous is visible.
+	 */	 
+	 preVisible: null, 
+	 
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	@return, void
+	 */
+	initialize : function( id, mode )
+	{
+		this.__mode = mode || Constants.request.servletPath;
+		this.preVisible = false;
+
+		this._hint = document.getElementById( "birt_hint" );
+		
+		// Change event for parameter text field
+		this.__neh_change_cascade_text_closure = this.__neh_change_cascade_text.bindAsEventListener( this );
+		this.__neh_change_select_closure = this.__neh_change_select.bindAsEventListener( this );
+		this.__neh_change_cascade_select_closure = this.__neh_change_cascade_select.bindAsEventListener( this );
+				
+		if ( BrowserUtility.isIE6 )
+		{
+			// Mouse over event for Select field
+			this.__neh_mouseover_select_closure = this.__neh_mouseover_select.bindAsEventListener( this );
+			this.__neh_mouseout_select_closure = this.__neh_mouseout_select.bindAsEventListener( this );
+		}
+		
+		if ( BrowserUtility.isIE )
+		{
+			// Focus events
+			this.__neh_focus_select_closure = this.__neh_focus_select.bindAsEventListener( this );
+			this.__neh_blur_select_closure = this.__neh_blur_select.bindAsEventListener( this );
+		}
+			    
+	    this.initializeBase( id );
+	    
+		if ( this.__mode == Constants.SERVLET_PARAMETER )
+		{
+			// Hide dialog title bar if embedded in designer.
+			this.__setTitleBarVisibile(false);
+		}
+	    
+	    this.__local_installEventHandlers_extend( id );
+	},
+
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, toolbar id (optional since there is only one toolbar)
+	 *	@return, void
+	 */
+	__local_installEventHandlers_extend : function( id )
+	{
+		// Observe "keydown" event
+		this.keydown_closure = this.__neh_keydown.bindAsEventListener( this );
+		Event.observe( $(id), 'keydown', this.keydown_closure, false );
+		
+		var oSC = document.getElementById( "parameter_table" ).getElementsByTagName( "select" );
+		for( var i = 0; i < oSC.length; i++ )
+		{
+			var element = oSC[i];
+			Event.observe( element, 'change', this.__neh_change_select_closure, false );
+			
+			if ( BrowserUtility.isIE6 )
+			{
+				Event.observe( element, 'mouseover', this.__neh_mouseover_select_closure, false );
+				Event.observe( element, 'mouseout', this.__neh_mouseout_select_closure, false );
+			}
+			if ( BrowserUtility.isIE )
+			{
+				Event.observe( element, 'focus', this.__neh_focus_select_closure, false );
+				Event.observe( element, 'blur', this.__neh_blur_select_closure, false );
+			}
+
+			// Set initial hint
+			if ( element.selectedIndex >= 0 )
+			{
+				element.title = element.options[element.selectedIndex].text;
+			}
+			
+			// Set size for multi-value parameter
+			if( element.multiple )
+			{				
+				var len = oSC[i].options.length;				
+				if( len < this.MIN_MULTILINES )
+				{
+					len = this.MIN_MULTILINES;
+				}
+				else if( len > this.MAX_MULTLIINES )
+				{
+					len = this.MAX_MULTLIINES;
+				}
+				
+				element.size = len;
+			}
+		}
+	},
+	
+	/**
+	 *	Binding data to the dialog UI. Data includes zoom scaling factor.
+	 *	@data, data DOM tree (schema TBD)
+	 *	@return, void
+	 */
+	__bind : function( data )
+	{
+		if ( !data )
+		{
+			return;
+		}
+		
+		var cascadeParamObj = data.getElementsByTagName( 'CascadeParameter' );
+		var confirmObj = data.getElementsByTagName( 'Confirmation' );
+		if ( cascadeParamObj.length > 0 )
+		{
+			this.__propogateCascadeParameter( data );
+		}
+		else if ( confirmObj.length > 0 )
+		{
+			this.__close( );
+		}
+		
+		// call the internal onDataChanged event handler
+		if ( this.__pendingCascadingCalls > 0 )
+		{
+			this.__pendingCascadingCalls--;
+		}
+		
+		if ( this.__pendingCascadingCalls == 0 && this.__onDataChanged )
+		{
+			this.__pendingCascadingCalls = 0;
+			var callback = this.__onDataChanged; 
+			this.__onDataChanged = null;
+			// add the handler in the browser's event queue
+			window.setTimeout( callback, 0 );
+		}
+	},
+
+	/**
+	 *	Install the event handlers for cascade parameter.
+	 *
+	 *	@table_param, container table object.
+	 *	@counter, index of possible cascade parameter.
+	 *	@return, void
+	 */
+	__install_cascade_parameter_event_handler : function( table_param, counter )
+	{
+		var oSC = table_param.getElementsByTagName( "select" );
+		var matrix = new Array( );
+		var m = 0;
+		
+		var oTRC = table_param.getElementsByTagName( "TR" );
+		for( var i = 0; i < oTRC.length; i++ )
+		{
+			var oSelect = oTRC[i].getElementsByTagName( "select" );
+			var oInput = oTRC[i].getElementsByTagName( "input" );
+			var oCascadeFlag = "";
+			
+			if ( oInput && oInput.length > 0 )
+			{
+				var oLastInput = oInput[oInput.length - 1];
+				if ( oLastInput.id == "isCascade" )
+					oCascadeFlag = oLastInput.value;
+			}
+						
+			// find select items to install event listener
+			if( oSelect.length > 0 && oCascadeFlag == "true" )
+			{
+				if ( i < oTRC.length - 1 )
+				{
+					Event.observe( oSelect[0], 'change', this.__neh_change_cascade_select_closure, false );
+					
+					// find text item to install event listener
+					var oText;
+					for( var j = 0; j < oInput.length; j++ )
+					{
+						if( oInput[j].type == "text" )
+						{
+							oText = oInput[j];
+							break;
+						}
+					}
+					if( oText )
+					{
+						Event.observe( oText, 'change', this.__neh_change_cascade_text_closure, false );
+					}
+				}
+				
+				if( !matrix[m] )
+				{
+					matrix[m] = {};
+				}
+				
+				var name = oSelect[0].id.substr( 0, oSelect[0].id.length - 10 )
+				var value = oSelect[0].value;
+				if ( value == Constants.nullValue )
+				{
+					matrix[m].name = this.__isnull;
+					matrix[m++].value = name;
+				}
+				else
+				{
+					matrix[m].name = name;
+					matrix[m++].value = oSelect[0].value;
+				}
+			}
+		}
+		
+		this.__cascadingParameter[counter] = matrix;
+	},
+	
+	/**
+	 *	Collect parameters, Support ComboBox/Listbox,Hidden,Radio,TextBox,Checkbox.
+	 *
+	 *	@return, void
+	 */
+	collect_parameter : function( )
+	{
+		// Clear parameter array
+		this.__parameter = new Array( );		
+				
+		var k = 0;
+		//oTRC[i] is <tr></tr> section
+		var oTRC = document.getElementById( "parameter_table" ).getElementsByTagName( "TR" );
+		for( var i = 0; i < oTRC.length; i++ )
+		{
+			if( !this.__parameter[k] )
+			{
+				this.__parameter[k] = { };
+			}
+			
+			//input element collection
+			var oIEC = oTRC[i].getElementsByTagName( "input" );
+			//select element collection
+			var oSEC = oTRC[i].getElementsByTagName( "select" );
+			//avoid group parameter
+			var oTable = oTRC[i].getElementsByTagName( "table" );
+			if( oTable.length > 0 || ( oSEC.length == 0 && oIEC.length == 0 ) || ( oIEC.length == 1 && oIEC[0].type == 'submit' ) )
+			{
+				continue;
+			}
+			
+			// control type
+			var oType = oIEC[0].value;
+
+			// deal with "hidden" parameter
+			if( oType == 'hidden' )
+			{
+				var temp = oIEC[1];
+				this.__parameter[k].name = temp.name;
+				this.__parameter[k].value = temp.value;
+				k++;
+				
+				// set display text
+				if( !this.__parameter[k] )
+				{
+					this.__parameter[k] = { };
+				}
+				this.__parameter[k].name = this.__isdisplay + this.__parameter[k-1].name;
+				this.__parameter[k].value = oIEC[2].value;
+				k++;		
+				
+				continue;
+			}
+			
+			// deal with "checkbox" parameter
+			if( oType == 'checkbox' )
+			{
+				var temp = oIEC[2];
+				this.__parameter[k].name = temp.value;
+				temp.checked?this.__parameter[k].value = 'true':this.__parameter[k].value = 'false';  
+				k++;
+				continue;
+			}
+						
+			// deal with "text" parameter
+			if( oType == 'text' )
+			{
+				// data type of current parameter
+				var dataType = oIEC[1].value;
+				
+				// allow null
+				if( oIEC[2] && oIEC[2].type == 'radio' )
+				{
+					if( oIEC[2].checked )
+					{
+						var paramName = oIEC[3].name;
+						var paramValue = oIEC[4].value;
+						var displayText = oIEC[5].value;
+
+						if( displayText != oIEC[3].value )
+						{
+							// change the text field value,regard as a locale string
+							paramValue = oIEC[3].value;
+							
+							// set isLocale flag							
+							this.__parameter[k].name = this.__islocale;
+							this.__parameter[k].value = paramName;
+							k++;	
+						}
+																		
+						// check if required
+						if( this.__is_parameter_required( oIEC ) 
+							&& birtUtility.trim( paramValue ) == '' && this.visible )
+						{
+							oIEC[3].focus( );
+							alert( birtUtility.formatMessage( Constants.error.parameterRequired, paramName ) );
+							return false;
+						}
+						
+						// check if allow blank
+						if( !this.__is_parameter_allowblank( dataType )
+							&& birtUtility.trim( paramValue ) == '' && this.visible )
+						{
+							oIEC[3].focus( );
+							alert( birtUtility.formatMessage( Constants.error.parameterNotAllowBlank, paramName ) );
+							return false;							
+						}	
+													
+						// set parameter value
+						if( !this.__parameter[k] )
+						{
+							this.__parameter[k] = { };
+						}
+						this.__parameter[k].name = paramName;
+						this.__parameter[k].value = paramValue;
+						k++;
+						
+						// set display text
+						if( !this.__parameter[k] )
+						{
+							this.__parameter[k] = { };
+						}
+						this.__parameter[k].name = this.__isdisplay + this.__parameter[k-1].name;
+						this.__parameter[k].value = oIEC[3].value;
+						k++;						
+					}
+					else
+					{
+						// select null value
+						this.__parameter[k].name = this.__isnull;
+						this.__parameter[k].value = oIEC[2].value;
+						k++;
+					}										
+				}
+				// not allow null
+				else
+				{
+					var paramName = oIEC[2].name;
+					var fieldValue = oIEC[2].value;
+					var paramValue = oIEC[3].value;
+					var displayText = oIEC[4].value;
+
+					// convert spaces to non-breakable spaces if data type is a number					
+					if ( this.__is_parameter_number( dataType ) )
+					{
+						fieldValue = this.__convert_spaces_to_nbsp( fieldValue );
+					}
+					
+					if( displayText != fieldValue )
+					{
+						// change the text field value,regard as a locale string
+						paramValue = fieldValue;
+						
+						// set isLocale flag							
+						this.__parameter[k].name = this.__islocale;
+						this.__parameter[k].value = paramName;
+						k++;	
+					}
+															
+					// check if required
+					if( this.__is_parameter_required( oIEC ) 
+						&& birtUtility.trim( paramValue ) == '' && this.visible )
+					{
+						oIEC[2].focus( );
+						alert( birtUtility.formatMessage( Constants.error.parameterRequired, paramName ) );
+						return false;
+					}
+
+					// check if allow blank
+					if( !this.__is_parameter_allowblank( dataType )
+						&& birtUtility.trim( paramValue ) == '' && this.visible )
+					{
+						oIEC[2].focus( );
+						alert( birtUtility.formatMessage( Constants.error.parameterNotAllowBlank, paramName ) );
+						return false;							
+					}	
+												
+					// set parameter value
+					if( !this.__parameter[k] )
+					{
+						this.__parameter[k] = { };
+					}
+					this.__parameter[k].name = paramName;
+					this.__parameter[k].value = paramValue;
+					k++;
+						
+					// set display text
+					if( !this.__parameter[k] )
+					{
+						this.__parameter[k] = { };
+					}
+					this.__parameter[k].name = this.__isdisplay + this.__parameter[k-1].name;
+					this.__parameter[k].value = fieldValue;
+					k++;					
+				}
+				
+				continue;
+			}
+			
+			// deal with "radio" parameter
+			if( oType == 'radio' )
+			{
+				var dataType = oIEC[1].value;
+				
+				if( oIEC.length > 2 )
+				{
+					for( var j = 2; j < oIEC.length; j++ )
+					{
+						// deal with radio
+						if( oIEC[j].type == 'radio' && oIEC[j].checked )
+						{
+							// null value
+							if( oIEC[j].id == oIEC[j].name + "_null" )
+							{
+								this.__parameter[k].name = this.__isnull;
+								this.__parameter[k].value = oIEC[j].name;
+								k++;
+							}
+							else
+							{
+								// check if allow blank
+								if( !this.__is_parameter_allowblank( dataType )
+									&& birtUtility.trim( oIEC[j].value ) == '' && this.visible )
+								{
+									oIEC[j].focus( );
+									alert( birtUtility.formatMessage( Constants.error.parameterNotAllowBlank, oIEC[j].name ) );
+									return false;							
+								}	
+							
+								// common radio value
+								this.__parameter[k].name = oIEC[j].name;
+								this.__parameter[k].value = oIEC[j].value;	
+								k++;
+								
+								// set display text for the "radio" parameter
+								var displayLabel = document.getElementById( oIEC[j].id + "_label" );
+								if( displayLabel )
+								{							
+									if( !this.__parameter[k] )
+									{
+										this.__parameter[k] = { };
+									}
+									this.__parameter[k].name = this.__isdisplay + this.__parameter[k-1].name;
+									this.__parameter[k].value = displayLabel.title;
+									k++;			
+								}
+							}	
+							
+							break;								
+						}	
+					}
+				}
+								
+				continue;		
+			}
+			
+			// deal with "select" parameter
+			if( oType == 'select' && oSEC.length == 1 )
+			{
+				var dataType = oIEC[1].value;
+				var paramName = oIEC[2].name;
+				
+				var flag = true;
+				if( oIEC[3] && oIEC[3].type == 'radio' && !oIEC[3].checked )
+				{
+					flag = false;
+				}
+				
+				// check select
+				if( flag )
+				{
+					if ( oSEC[0].selectedIndex < 0 && this.visible )
+					{
+						oSEC[0].focus( );
+						alert( birtUtility.formatMessage( Constants.error.parameterNotSelected, paramName ) );
+						return false;
+					}
+																									
+					if( oSEC[0].multiple )
+					{
+						var options = oSEC[0].options;
+						for( var l = 0; l < options.length; l++ )
+						{
+							if( !options[l].selected )
+								continue;
+							
+							var tempText = options[l].text;
+							var tempValue = options[l].value;
+															
+							// check if isRequired
+							if( this.__is_parameter_required( oIEC ) 
+								&& birtUtility.trim( tempValue ) == '' && this.visible )
+							{
+								oSEC[0].focus( );
+								alert( birtUtility.formatMessage( Constants.error.parameterRequired, paramName ) );
+								return false;									
+							}
+							
+							if( tempValue == Constants.nullValue )
+								continue;
+								
+							// check if allow blank
+							if( !this.__is_parameter_allowblank( dataType )
+								&& birtUtility.trim( tempValue ) == '' && this.visible )
+							{
+								oSEC[0].focus( );
+								alert( birtUtility.formatMessage( Constants.error.parameterNotAllowBlank, paramName ) );
+								return false;							
+							}									
+						}
+					}
+					else
+					{
+						var tempText = oSEC[0].options[oSEC[0].selectedIndex].text;
+						var tempValue = oSEC[0].options[oSEC[0].selectedIndex].value;
+											
+						// check if isRequired
+						if ( this.__is_parameter_required( oIEC )
+							 && birtUtility.trim( tempValue ) == '' && this.visible )
+						{
+							oSEC[0].focus( );
+							alert( birtUtility.formatMessage( Constants.error.parameterRequired, paramName ) );
+							return false;
+						}
+
+						// Check if select 'Null Value' option for single parameter
+						if( tempValue == Constants.nullValue )
+						{
+							this.__parameter[k].name = this.__isnull;
+							this.__parameter[k].value = paramName;
+							k++;	
+							continue;
+						}
+							
+						// check if allow blank
+						if( !this.__is_parameter_allowblank( dataType )
+							&& birtUtility.trim( tempValue ) == '' && this.visible )
+						{
+							oSEC[0].focus( );
+							alert( birtUtility.formatMessage( Constants.error.parameterNotAllowBlank, paramName ) );
+							return false;							
+						}							
+					}					
+				}
+				
+				// allow new value
+				if( oIEC[3] && oIEC[3].type == 'radio' )
+				{					
+					if( oIEC[3].checked )
+					{
+						// select value
+						var tempText = oSEC[0].options[oSEC[0].selectedIndex].text;
+						var tempValue = oSEC[0].options[oSEC[0].selectedIndex].value;
+											
+						// set value
+						this.__parameter[k].name = paramName;
+						this.__parameter[k].value = tempValue;
+						k++;
+						
+						// set display text
+						if( !this.__parameter[k] )
+						{
+							this.__parameter[k] = { };
+						}
+						this.__parameter[k].name = this.__isdisplay + this.__parameter[k-1].name;
+						this.__parameter[k].value = tempText;
+						k++;						
+					}
+					else
+					{
+						var inputValue = oIEC[5].value;
+						var paramValue = oIEC[2].value;
+						var displayText = oIEC[6].value;
+						
+						// if change the text field value or input text field isn't focus default,regard as a locale string 
+						if( displayText != inputValue || oIEC[5].name.length <= 0 )
+						{							
+							paramValue = inputValue;
+							
+							// set isLocale flag							
+							this.__parameter[k].name = this.__islocale;
+							this.__parameter[k].value = paramName;
+							k++;	
+						}
+						
+						// check if isRequired
+						if ( this.__is_parameter_required( oIEC ) 
+							 && birtUtility.trim( paramValue ) == '' && this.visible )
+						{
+							oIEC[5].focus( );
+							alert( birtUtility.formatMessage( Constants.error.parameterRequired, paramName ) );
+							return false;
+						}						
+
+						// check if allow blank
+						if( !this.__is_parameter_allowblank( dataType )
+							&& birtUtility.trim( paramValue ) == '' && this.visible )
+						{
+							oIEC[5].focus( );
+							alert( birtUtility.formatMessage( Constants.error.parameterNotAllowBlank, paramName ) );
+							return false;							
+						}	
+						
+						// set value
+						if( !this.__parameter[k] )
+						{
+							this.__parameter[k] = { };
+						}
+						this.__parameter[k].name = paramName;
+						this.__parameter[k].value = paramValue;
+						k++;
+											
+						// set display text
+						if( !this.__parameter[k] )
+						{
+							this.__parameter[k] = { };
+						}
+						this.__parameter[k].name = this.__isdisplay + this.__parameter[k-1].name;
+						this.__parameter[k].value = inputValue;
+						k++;						
+					}
+				}
+				else
+				{
+					// don't allow new value
+					if( oSEC[0].multiple )
+					{
+						// allow multi value
+						var options = oSEC[0].options;
+						for( var l = 0; l < options.length; l++ )
+						{
+							if( !options[l].selected )
+								continue;
+							
+							var tempText = options[l].text;
+							var tempValue = options[l].value;
+							
+							// Check if select 'Null Value' option
+							if( tempValue == Constants.nullValue )
+							{
+								if( !this.__parameter[k] )
+								{
+									this.__parameter[k] = { };
+								}
+							
+								this.__parameter[k].name = this.__isnull;
+								this.__parameter[k].value = paramName;
+								k++;	
+								continue;
+							}		
+
+							// set value
+							if( !this.__parameter[k] )
+							{
+								this.__parameter[k] = { };
+							}
+							this.__parameter[k].name = paramName;
+							this.__parameter[k].value = tempValue;
+							k++;
+						
+							// set display text
+							if( !this.__parameter[k] )
+							{
+								this.__parameter[k] = { };
+							}
+							this.__parameter[k].name = this.__isdisplay + this.__parameter[k-1].name;
+							this.__parameter[k].value = tempText;
+							k++;
+						}
+					}
+					else
+					{
+						// allow single value
+						var tempText = oSEC[0].options[oSEC[0].selectedIndex].text;
+						var tempValue = oSEC[0].options[oSEC[0].selectedIndex].value;
+													
+						// set value
+						this.__parameter[k].name = paramName;
+						this.__parameter[k].value = tempValue;
+						k++;
+						
+						// set display text
+						if( !this.__parameter[k] )
+						{
+							this.__parameter[k] = { };
+						}
+						this.__parameter[k].name = this.__isdisplay + this.__parameter[k-1].name;
+						this.__parameter[k].value = tempText;
+						k++;
+					}					
+				}
+				
+				continue;
+			}			
+		}
+		
+		return true;
+	},
+
+	/**
+	 *	Check if current parameter is required or not.
+	 *
+	 *	@oInputs, Input control collection 
+	 *	@return, true or false
+	 */
+	__is_parameter_required : function( oInputs )
+	{
+		if( !oInputs || oInputs.length <= 0 )
+			return false;
+		
+		var flag = false;		
+		for( var i = 0; i< oInputs.length; i++ )
+		{
+			// if find defined input control
+			if( oInputs[i].id == 'isRequired' && oInputs[i].value == 'true' )
+			{
+				flag = true;
+				break;		
+			}
+		}
+		
+		return flag;
+	},
+
+	/**
+	 *	Check if current parameter allows blank value.
+	 *  Currently, only any and string data type parameter can allow blank value.
+	 *
+	 *	@dataType, data type for parameter 
+	 *	@return, true or false
+	 */
+	__is_parameter_allowblank : function( dataType )
+	{
+		if( !dataType )
+			return false;
+		
+		if( dataType == Constants.TYPE_ANY )
+			return true;
+		
+		if( dataType == Constants.TYPE_STRING )
+			return true;
+
+		return false;		
+	},
+	
+	/**
+	 *	Check if current parameter is a number.
+	 *
+	 *	@dataType data type for parameter 
+	 *	@return true or false
+	 */
+	__is_parameter_number : function( dataType )
+	{
+		if( !dataType )
+			return false;
+		
+		return ( dataType == Constants.TYPE_FLOAT				
+				|| dataType == Constants.TYPE_DECIMAL
+				|| dataType == Constants.TYPE_INTEGER );		
+	},
+	
+	/**
+	 * Converts the spaces to non-breakable spaces (unicode 0x00a0).
+	 * This is mandatory for numbers which use a space separator,
+	 * because the server-side parser expects it.
+	 * @param value formatted string to process
+	 * @return processed string
+	 */
+	__convert_spaces_to_nbsp : function( aValue )
+	{
+		var value = aValue;
+		var startIndex = value.search(/\d/);
+		if ( startIndex < 0 )
+		{
+			return value;
+		}
+		
+		var endIndex = value.search(/\d\D*$/);
+		if ( endIndex < 0 )
+		{
+			endIndex = value.length;
+		}
+		
+		var prefix = value.substring(0, startIndex);
+		var suffix = value.substr(endIndex + 1);
+		var number = value.substring(startIndex, endIndex + 1).replace(/ /g,"\u00a0");
+		
+		
+		return prefix + number + suffix;
+	},	
+	
+	/**
+	 *	Handle mouseover event on select.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_mouseover_select : function( event )
+	{	
+		var oSC = Event.element( event );
+		var tempText;
+		if( oSC.selectedIndex >=0 )
+			tempText = oSC.options[oSC.selectedIndex].text;
+		
+		if( tempText && this._hint )
+		{
+			this._hint.innerHTML = tempText;
+			this._hint.style.display = "block";
+			this._hint.style.left = ( event.clientX - parseInt( this.__instance.style.left ) ) + "px";
+			this._hint.style.top = ( 15 + event.clientY - parseInt( this.__instance.style.top ) ) + "px";
+		}			
+	},
+
+	/**
+	 *	Handle mouseout event on select.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_mouseout_select : function( event )
+	{
+		if( this._hint )
+		{
+			this._hint.style.display = "none"; 
+		}			
+	},
+
+	/**
+	 *	Handle focus event on select elements.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+
+	__neh_focus_select : function( event )
+	{
+		var el = Event.element( event );
+		if ( el )
+		{
+			this.__currentSelectedIndex = el.selectedIndex;
+		}
+		else
+		{
+			this.__currentSelectedIndex = -2;
+		}
+	},
+	
+	/**
+	 *	Handle blur event on select elements.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */	
+	__neh_blur_select : function( event )
+	{	
+		var el = Event.element( event );
+
+		// prevents firing onchange twice, if the previous onchange has 
+		// already updated the current selected index
+		if ( el && el.selectedIndex != this.__currentSelectedIndex)
+		{
+			this.__neh_change_cascade_select( event );
+		}
+		this.__currentSelectedIndex = -2;
+	},
+	
+	/**
+	 *	Handle change event when clicking on select.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */	
+	__neh_change_select : function( event )
+	{
+		var element = Event.element( event );
+		if ( element.selectedIndex >= 0 )
+		{
+			element.title = element.options[element.selectedIndex].text;
+		}
+		else
+		{
+			element.title = "";
+		}
+	},
+
+	
+	/**
+	 *	Handle change event when clicking on cascading select.
+	 *
+	 *	@event incoming browser native event
+	 *	@return
+	 */
+	__neh_change_cascade_select : function( event )
+	{
+		if ( this.__cancelOnChange )
+		{
+			/**
+			 * Cancel event because of keyboard selection.
+			 * Event will be fired later when the element loses focus (like in Firefox)
+			 */
+			this.__cancelOnChange = false;
+			return;
+		}
+
+		var element = Event.element( event );		
+		this.__currentSelectedIndex = element.selectedIndex;
+		this.__refresh_cascade_select(element);
+	},
+	
+	/**
+	 *	Refreshes the cascading elements following the given element.
+	 */
+	__refresh_cascade_select : function( element )
+	{
+	    var matrix = new Array( );
+	    var m = 0;
+        for( var i = 0; i < this.__cascadingParameter.length; i++ )
+        {
+            for( var j = 0; j < this.__cascadingParameter[i].length; j++ )
+            {
+            	var paramName = this.__cascadingParameter[i][j].name;
+            	if( paramName == this.__isnull )
+            		paramName = this.__cascadingParameter[i][j].value;
+            		
+                if( paramName == element.id.substr( 0, element.id.length - 10 ) )
+                {
+                	var tempText = element.options[element.selectedIndex].text;
+					var tempValue = element.options[element.selectedIndex].value;
+					 
+            		// Null Value Parameter
+					if ( tempValue == Constants.nullValue )
+					{
+            			this.__cascadingParameter[i][j].name = this.__isnull;
+            			this.__cascadingParameter[i][j].value = paramName;
+					}					
+					else if( tempValue == '' )
+                	{
+                		if( tempText == "" )
+                		{
+                			var target = element;
+							target = target.parentNode;
+							var oInputs = target.getElementsByTagName( "input" );
+							if( oInputs.length >0 && oInputs[1].value != Constants.TYPE_STRING )
+							{
+								// Only String parameter allows blank value
+								alert( birtUtility.formatMessage( Constants.error.parameterNotAllowBlank, paramName ) );
+								this.__clearSubCascadingParameter( this.__cascadingParameter[i], j );
+								return;
+							}
+							else
+							{
+	                			// Blank Value
+	                			this.__cascadingParameter[i][j].name = paramName;
+	                	    	this.__cascadingParameter[i][j].value = tempValue;								
+							}
+                		}
+                		else
+                		{
+                			// Blank Value
+                			this.__cascadingParameter[i][j].name = paramName;
+                	    	this.__cascadingParameter[i][j].value = tempValue;
+                		}						
+                	}
+                	else
+                	{
+                		this.__cascadingParameter[i][j].name = paramName;
+                	    this.__cascadingParameter[i][j].value = tempValue;
+                	}
+                	
+                    for( var m = 0; m <= j; m++ )
+                    {
+					    if( !matrix[m] )
+				        {
+				            matrix[m] = {};
+				        }
+				        matrix[m].name = this.__cascadingParameter[i][m].name;
+				        matrix[m].value = this.__cascadingParameter[i][m].value;
+				    }
+				    this.__pendingCascadingCalls++;
+                    birtEventDispatcher.broadcastEvent( birtEvent.__E_CASCADING_PARAMETER, matrix );
+                }
+            }
+        }
+	},
+
+	/**
+	 * Clear the sub cascading parameter for the elements
+	 * following the given element
+	 * @param element element
+	 */
+	__clearSubCascadingParameterByName: function(parameterName)
+	{
+        for( var i = 0; i < this.__cascadingParameter.length; i++ )
+        {
+            for( var j = 0; j < this.__cascadingParameter[i].length; j++ )
+            {
+            	var paramName = this.__cascadingParameter[i][j].name;
+                if( paramName == parameterName )
+                {
+    				this.__clearSubCascadingParameter( this.__cascadingParameter[i], j );                	
+                }
+            }
+        }
+	},
+	
+	/**
+	 *	Clear the sub cascading parameter.
+	 *
+	 *  @cascadingParameterGroup
+	 *  @index
+	 *	@return, void
+	 */	
+	__clearSubCascadingParameter : function( cascadingParameterGroup, index )
+	{
+		for( var i = index + 1; i < cascadingParameterGroup.length; i++ )
+		{
+			var param_name = cascadingParameterGroup[i].name;
+			if( param_name == this.__isnull )
+				param_name = cascadingParameterGroup[i].value;
+				
+			var selection = document.getElementById( param_name + "_selection" );
+			var len = selection.options.length;
+			
+			// Clear our selection list.
+			for( var j = 0; j < len; j++ )
+			{
+				selection.remove( 0 );
+			}
+		}	
+	},
+	
+	/**
+	 *	Handle clicking on radio.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */	
+	__neh_click_radio : function( event )
+	{
+		var temp = Event.element( event );
+		var oInput = temp.parentNode.getElementsByTagName( "input" );
+		var oSelect = temp.parentNode.getElementsByTagName( "select" );
+		
+		// check if current parameter is cascading parameter
+		var oCascadeFlag = false;
+		if ( oInput && oInput.length > 0 )
+		{
+			var oLastInput = oInput[oInput.length - 1];
+			if ( oLastInput.id == "isCascade" )
+				oCascadeFlag = ( oLastInput.value == "true" );
+		}
+		
+		var oSelectElement = oSelect[0];
+		
+		for( var i = 0; i < oInput.length; i++ )
+		{
+			if( oInput[i].id == temp.id )
+			{
+				var element = oInput[i+1]; 
+				//enable the next component
+				oInput[i].checked = true;
+				if( element && ( element.type == "text" || element.type == "password" ) )
+				{
+					element.disabled = false;
+					element.focus( );
+					if ( oCascadeFlag )
+					{
+						// refresh cascading elements (remove the "_input" suffix)
+						this.__clearSubCascadingParameterByName(element.id.substr(0, element.id.length - 6));
+					}
+				}
+				else if( oSelectElement )
+				{
+					oSelectElement.selectedIndex = 0;
+					oSelectElement.disabled = false;
+					oSelectElement.focus( );
+					if ( oCascadeFlag )
+					{
+						// refresh cascading elements (remove the "_selection" suffix)
+						this.__clearSubCascadingParameterByName(oSelectElement.id.substr(0, oSelectElement.id.length - 10));
+					}
+				}
+			}
+			// if i points to the element that must be disabled
+			else if( oInput[i].type == "radio" && oInput[i].id != temp.id )			
+			{				
+				var element = oInput[i+1];
+				//disable the next component and clear the radio
+				oInput[i].checked = false;
+				if( element && ( element.type == "text" || element.type == "password" ) )
+				{
+					element.disabled = true;
+					// if cascading parameter, clear value 
+					if ( oCascadeFlag )
+					{
+						element.value = "";
+					}
+				}
+				else if( oSelectElement )
+				{
+					oSelectElement.disabled = true;
+					// if cascading parameter, clear value
+					if ( oCascadeFlag )
+					{
+						oSelectElement.selectedIndex = -1;
+						oSelectElement.title = "";
+					}
+				}
+		    }
+		}
+	},
+	
+	/**
+	 * Check whether obj is the last select control
+	 */
+	__ifLastSelect : function( obj )
+	{
+		if( obj )
+		{
+			var oTABLE = obj.parentNode.parentNode.parentNode;
+			if( oTABLE )
+			{
+				var oSelect = oTABLE.getElementsByTagName( "select" );
+				if( oSelect && oSelect.length > 0 && oSelect[oSelect.length - 1].id == obj.id )
+				{
+					return true;	
+				}
+			}
+		}
+		return false;
+	},
+
+	/**
+	 *	Handle changing on cascading parameter text field.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_change_cascade_text : function( event )
+	{	
+		var temp = Event.element( event );
+		this.__refresh_cascade_text(temp);
+	},
+	
+	/**
+	 * Refresh cascade elements from a text box.
+	 */
+	__refresh_cascade_text : function( element )
+	{		
+		// trim the "_text" suffix from the parameter name
+		var paramName = element.id.substr( 0, element.id.length - 6 );
+	    var matrix = new Array( );
+	    var m = 0;
+        for( var i = 0; i < this.__cascadingParameter.length; i++ )
+        {
+            for( var j = 0; j < this.__cascadingParameter[i].length; j++ )
+            {
+                if( this.__cascadingParameter[i][j].name == paramName )
+                {
+                    this.__cascadingParameter[i][j].value = element.value;
+                    for( var m = 0; m <= j; m++ )
+                    {
+					    if( !matrix[m] )
+				        {
+				            matrix[m] = {};
+				        }
+				        matrix[m].name = this.__prefix_islocale + this.__cascadingParameter[i][m].name;
+				        matrix[m].value = this.__cascadingParameter[i][m].value;			
+				    }
+				    this.__pendingCascadingCalls++;
+                    birtEventDispatcher.broadcastEvent( birtEvent.__E_CASCADING_PARAMETER, matrix );
+                }
+            }
+        }	
+	},
+		
+	/**
+	 *	Handle press "Enter" key.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_keydown: function( event )
+	{
+		// If press 'Enter' key
+		if( event.keyCode == 13 )
+		{			
+			var target = Event.element( event );
+						
+			// Focus on INPUT and SELECT controls
+			if ( target.tagName == "INPUT" || target.tagName == "SELECT" )
+			{			
+				// (exclude 'button' type for non-Safari browsers)
+				if ( target.type != "button" )
+				{
+					// blur the focus to force the onchange/onselect events
+					target.blur();
+					// defer okPress to let those events run first
+					window.setTimeout( this.__okPress.bindAsEventListener(this), 0 );				
+				}
+				// Safari needs explicit click
+				else if ( BrowserUtility.isSafari || BrowserUtility.isKHTML )
+				{
+					target.click();
+					// prevent browser "beep"
+					Event.stop( event );					
+				}
+			}
+
+		}
+		// in IE, when a key is pressed on a select box, cancel the onchange event 
+		else if ( BrowserUtility.isIE && event.keyCode != 9 && Event.element( event ).tagName == "SELECT" )
+		{
+			this.__cancelOnChange = true;
+		}
+	},	
+		
+	/**
+	 *	Handle clicking on okRun.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__okPress : function( )
+	{
+		// if a cascading parameter just changed
+		if ( this.__pendingCascadingCalls > 0 )
+		{
+			debug("defer okPress call");
+			// defer the call to the okPress function until the data has been updated
+			this.__onDataChanged = this.__okPress.bindAsEventListener(this);
+			return; 
+		}		
+
+		if( birtParameterDialog.collect_parameter( ) )
+		{
+			// workaround for Bugzilla Bug 146566. 
+			// If change parameter and re-generate docuemnt file, close TOC panel.
+			if ( this.__mode == Constants.SERVLET_FRAMESET )
+			{
+				var oToc = $( 'display0' );
+				var oDoc = $( 'Document' );
+				if( oToc && oDoc )
+				{ 		
+					oDoc.style.width = BirtPosition.viewportWidth( ) + "px";
+					oToc.style.display="none";
+					oToc.query = '0';
+				}
+			}
+		
+			var action = soapURL.toLowerCase( );
+			
+			if ( this.__mode == Constants.SERVLET_PARAMETER )
+			{
+				// check whether set __nocache setting in URL
+				if ( this.__ifCache( action ) )
+					birtEventDispatcher.broadcastEvent( birtEvent.__E_CACHE_PARAMETER );
+				else
+					this.__doSubmitWithPattern( );
+			}
+			else if ( this.__ifSubmit( this.__mode, action ) )
+			{
+				this.__doSubmit( );
+			}
+			else
+			{
+				if( this.__mode == Constants.SERVLET_FRAMESET )
+				{
+					var targetPage = "1";					
+					var bookmark = birtUtility.getURLParameter(soapURL, "bookmark");
+					// if a bookmark is defined, reset the target page
+					// to force the server-side to use it
+					if ( bookmark && bookmark.length > 0 )
+					{
+						targetPage = "";
+					}
+					
+					var oPageNumber = $( 'pageNumber' );
+					if ( oPageNumber )
+					{
+						oPageNumber.innerHTML = targetPage;						
+					}
+					
+					birtEventDispatcher.broadcastEvent( birtEvent.__E_CHANGE_PARAMETER );
+				}
+				else
+				{
+					// if 'run' mode, fire GetPageAll event
+					this.__init_page_all( );
+				}
+				
+				this.__l_hide( );
+			}
+		}
+	},
+
+	/**
+	 *	Override cancel button click.
+	 */
+	__neh_cancel : function( )
+	{
+		// if cascading parameter calls are pending
+		if ( this.__pendingCascadingCalls > 0 )
+		{
+			// prevent the response to popup the dialog again
+			this.__cancelShow = true;
+			
+			// reset the counter for the next time the dialog is needed
+			this.__pendingCascadingCalls = 0;			
+		}
+		
+		if ( this.__mode == Constants.SERVLET_PARAMETER )
+		{
+			this.__cancel();
+		}
+		else
+		{
+			this.__l_hide( );
+		}
+	},
+
+	/**
+	 *	Handle submit form with defined servlet pattern and current parameters.
+	 *
+	 *	@return, void
+	 */
+	__doSubmitWithPattern : function( )
+	{
+		var url = soapURL;
+		
+		// parse pattern
+		var reg = new RegExp( "[&|?]{1}__pattern\s*=([^&|^#]*)", "gi" );
+		var arr = url.match( reg );
+		var pattern;
+		if( arr && arr.length > 0 )		
+			pattern = RegExp.$1;
+		else
+			pattern = "frameset";
+						
+		// parse target
+		reg = new RegExp( "[&|?]{1}__target\s*=([^&|^#]*)", "gi" );
+		arr = url.match( reg );			
+		var target;
+		if( arr && arr.length > 0 )
+			target = RegExp.$1;
+		
+		reg = new RegExp( "[^/|^?]*[?]{1}", "gi" );
+		if( url.search( reg ) > -1 )
+			url = url.replace( reg, pattern + "?" );
+		
+		this.__doSubmit( url, target );
+	},
+	
+	/**
+	 *	Handle submit form with current parameters.
+	 *
+	 *  @param, url
+	 *  @param, target
+	 *	@return, void
+	 */
+	__doSubmit : function( url, target )
+	{
+		var action = url;
+		if( !action )
+			action = soapURL;
+		
+		var divObj = document.createElement( "DIV" );
+		document.body.appendChild( divObj );
+		divObj.style.display = "none";
+		
+		var formObj = document.createElement( "FORM" );
+		divObj.appendChild( formObj );
+		
+		if ( this.__parameter != null )
+		{
+			for( var i = 0; i < this.__parameter.length; i++ )	
+			{
+				var param = document.createElement( "INPUT" );
+				formObj.appendChild( param );
+				param.TYPE = "HIDDEN";
+				param.name = this.__parameter[i].name;
+				param.value = this.__parameter[i].value;
+				
+				//replace the URL parameter			
+				var reg = new RegExp( "&" + param.name + "[^&]*&*", "g" );
+				action = action.replace( reg, "&" );
+			}
+		}
+		
+		if ( Constants.viewingSessionId )
+		{
+			// append sub session in the POST part
+			birtUtility.addHiddenFormField(formObj, Constants.PARAM_SESSION_ID, Constants.viewingSessionId);
+			action = birtUtility.deleteURLParameter(action, Constants.PARAM_SESSION_ID);
+		}
+		
+		// replace __parameterpage setting
+		var reg = new RegExp( "([&|?]{1})(__parameterpage\s*=[^&|^#]*)","gi" );
+		if ( action.search( reg ) > -1 )
+		{
+			action = action.replace( reg, "$1" );
+		}	
+		
+		// set target window
+		if( target )
+			formObj.target = target;
+			
+		formObj.action = action;
+		formObj.method = "post";
+		
+		// if don't set target, hide the parameter dialog
+		if( !target )		
+			this.__l_hide( );
+						
+		formObj.submit( );		
+	},
+
+	/**
+	 *	Caching parameters success, close window.
+	 *
+	 *	@return, void
+	 */	
+	__close : function( )
+	{
+		if ( BrowserUtility.__isIE( ) )
+		{
+			window.opener = null;
+			window.close( );
+		}
+		else
+		{
+			window.status = "close";
+		}
+	},
+	
+	/**
+	 *	Click 'Cancel', close window.
+	 *
+	 *	@return, void
+	 */	
+	__cancel : function( )
+	{
+		window.status = "cancel";
+	},
+
+	/**
+	Called right before element is shown
+	*/
+	__preShow: function()
+	{
+		// disable the toolbar buttons
+		birtUtility.setButtonsDisabled ( "toolbar", true );
+		
+		// disable the Navigation Bar buttons
+		birtUtility.setButtonsDisabled ( "navigationBar", true );
+		
+		// set preVisible
+		this.preVisible = this.visible;
+	},
+
+	/**
+	 * Override the dialog's show method. 
+	 */
+	__l_show: function()
+	{
+		if ( !this.__cancelShow )
+		{
+			// call to superclass method
+			AbstractParameterDialog.prototype.__l_show.call( this );
+		}
+		this.__cancelShow = false;
+	},
+
+	/**
+	Called after element is shown
+	*/
+	__postShow: function()
+	{	
+		// if previous is visible, return directly
+		if( this.preVisible )	
+			return;
+				
+		// focus on the first input text/password or select or button control
+		this.__init_focus( );
+	},
+	
+	/**
+	 * Try to focus on the first control.
+	 * Input text/password, select and button.
+	 */
+	__init_focus: function( )
+	{
+		var oFirstITC;
+		var oFirstIBT;
+		var oFirstST;
+		
+		var oITCs = this.__instance.getElementsByTagName( "input" );
+		for( var i = 0; i < oITCs.length; i++ )
+		{
+			// get the first input text/password control
+			if( oITCs[i].type == "text" 
+			    || oITCs[i].type == "password"  )
+			{
+				if( !oITCs[i].disabled && !oFirstITC )
+				{
+					oFirstITC = oITCs[i];
+				}
+				continue;
+			}
+			
+			// get the first input button control
+			if( !oFirstIBT && oITCs[i].type == "button" && !oITCs[i].disabled )
+			{
+				oFirstIBT = oITCs[i];
+			}
+		}
+		
+		// get the first select control
+		var oSTs = this.__instance.getElementsByTagName( "select" );
+		for( var i = 0; i < oSTs.length; i++ )
+		{
+			if( !oSTs[i].disabled )
+			{
+				oFirstST = oSTs[i];
+				break;
+			}
+		}
+				
+		if( oFirstITC && !oFirstST )
+		{
+			// if exist input text/password, no select control
+			oFirstITC.focus( );
+		}
+		else if( !oFirstITC && oFirstST )
+		{
+			// if exist select control, no input text/password
+			oFirstST.focus( );
+		}
+		else if( oFirstITC && oFirstST )
+		{
+			// exist select control and input text/password
+			// compare the parent div offsetTop
+			if( oFirstITC.parentNode && oFirstST.parentNode )
+			{
+				// Bugzilla 265615: need to use cumulative offset for special cases
+				// where one element is inside a group container
+				var offsetITC = Position.cumulativeOffset( oFirstITC );
+				var offsetST = Position.cumulativeOffset( oFirstST );
+				
+				if( offsetITC > offsetST )
+				{
+					oFirstST.focus( );				
+				}
+				else
+				{
+					oFirstITC.focus( );
+				}
+			}
+			else
+			{
+				// default to focus on input control
+				oFirstITC.focus( );
+			}
+		}
+		else
+		{
+			// focus on button control
+			oFirstIBT.focus( );
+		}		
+	},
+		
+	/**
+	Called before element is hidden
+	*/
+	__preHide: function( )
+	{
+		// enable the toolbar buttons
+		birtUtility.setButtonsDisabled ( "toolbar", false );
+		
+		// enable the Navigation Bar buttons
+		birtUtility.setButtonsDisabled ( "navigationBar", false );		
+	},
+	
+	/**
+	 * Retrieve all pages
+	 */
+	__init_page_all: function( )
+	{
+		if( birtParameterDialog.collect_parameter( ) )
+		{
+			birtEventDispatcher.broadcastEvent( birtEvent.__E_GETPAGE_ALL );
+		}
+	},
+
+	/**
+	 * Check if cache parameter, default to true
+	 * 
+	 * @param url
+	 * @return, true or false
+	 */
+	__ifCache: function( url )
+	{		
+		if( url )
+			url = url.toLowerCase( );
+		else
+			url = "";
+			
+		// if don't set __nocache, default is true
+		var reg = new RegExp( "[&|?]{1}__nocache[^&|^#]*", "gi" );
+		if( url.search( reg ) < 0 )
+			return true;
+		else
+			return false;			
+					
+		return true;
+	},
+		
+	/**
+	 * Check if submit request
+	 * @param mode
+	 * @param url
+	 * @return, true or false
+	 */
+	__ifSubmit: function( mode, url )
+	{
+		// if use '/preview' pattern, submit anyway
+		if( mode == 'preview' )
+			return true;
+		
+		if( url )
+			url = url.toLowerCase( );
+		else
+			url = "";
+			
+		// if use '/frameset' or '/run', check format.
+		// if format is not HTML, submit request.	
+		if( mode == 'run' || mode == 'frameset' )
+		{
+			var format = Constants.request.format;
+			return !( format == "htm" || format == "html" );
+		}
+		
+		return false;
+	}
+}
+);
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtPrintReportDialog.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtPrintReportDialog.js
new file mode 100644
index 0000000..bea99c3
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtPrintReportDialog.js
@@ -0,0 +1,402 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	Birt print report dialog.
+ */
+BirtPrintReportDialog = Class.create( );
+
+BirtPrintReportDialog.prototype = Object.extend( new AbstractBaseDialog( ),
+{
+	/**
+	 * Print window instance.
+	 */
+	__printWindow : null,
+
+	/**
+	 * Timer instance control the popup print dialog.
+	 */
+	__timer : null,
+		
+	__printFormat : 'html',
+	__neh_formatradio_click_closure : null,
+	__neh_pageradio_click_closure : null,
+	
+	/**
+	* PDF page fit setting
+	*/
+	FIT_TO_ACTUAL : '0',
+	FIT_TO_WHOLE  : '1',
+	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	@return, void
+	 */
+	initialize : function( id )
+	{
+		this.__initBase( id );
+		this.__z_index = 200;
+		
+		this.__initLayout( );		
+		
+		// Binding
+		this.__neh_formatradio_click_closure = this.__neh_formatradio_click.bindAsEventListener( this );
+		this.__neh_pageradio_click_closure = this.__neh_pageradio_click.bindAsEventListener( this );
+			
+		this.__installEventHandlers( id );		
+	},
+	
+	/**
+	 * Initilize dialog layout
+	 * 
+	 * @return, void
+	 */
+	__initLayout : function( )
+	{
+	
+	},
+	
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, toolbar id (optional since there is only one toolbar)
+	 *	@return, void
+	 */
+	__installEventHandlers : function( id )
+	{	
+		// switch print format
+		var oInputs = $( 'printFormatSetting' ).getElementsByTagName( 'input' );
+		for( var i=0; i<oInputs.length; i++ )
+		{
+			if( oInputs[i].type == 'radio' )			
+				Event.observe( oInputs[i], 'click', this.__neh_formatradio_click_closure,false );
+		}
+
+		// page setting
+		var oInputs = $( 'printPageSetting' ).getElementsByTagName( 'input' );
+		for( var i=0; i<oInputs.length; i++ )
+		{
+			if( oInputs[i].type == 'radio' )			
+				Event.observe( oInputs[i], 'click', this.__neh_pageradio_click_closure,false );
+		}					
+	},
+
+	/**
+	 *	Handle clicking on ok.
+	 *
+	 *	@return, void
+	 */
+	__okPress : function( )
+	{
+		if ( this.__printAction( ) )
+		{
+			this.__l_hide( );
+		}
+	},
+		
+	/**
+	 * Handle print report action
+	 * 
+	 * @return, true or false
+	 */
+	__printAction : function( )
+	{
+		var docObj = document.getElementById( "Document" );
+		if ( !docObj || birtUtility.trim( docObj.innerHTML ).length <= 0)
+		{
+			alert ( Constants.error.generateReportFirst );
+			return false;
+		}	
+		else
+		{	
+			var divObj = document.createElement( "DIV" );
+			document.body.appendChild( divObj );
+			divObj.style.display = "none";
+		
+			var formObj = document.createElement( "FORM" );
+			divObj.appendChild( formObj );
+
+			// Replace format in URL with selected print format
+			var action = soapURL;
+			var reg = new RegExp( "([&|?]{1}" + Constants.PARAM_FORMAT + "\s*)=([^&|^#]*)", "gi" );
+			if( action.search( reg ) < 0 )
+			{
+				action = action + "&" + Constants.PARAM_FORMAT + "=" + this.__printFormat;
+			}
+			else
+			{
+				action = action.replace( reg, "$1=" + this.__printFormat );
+			}
+			
+			// Delete page, pagerange and parameterpage settings in url if existed
+			action = birtUtility.deleteURLParameter( action, Constants.PARAM_PAGE );
+			action = birtUtility.deleteURLParameter( action, Constants.PARAM_PAGERANGE );
+			action = birtUtility.deleteURLParameter( action, Constants.PARAM_PARAMETERPAGE );
+			action = birtUtility.deleteURLParameter( action, Constants.PARAM_EMITTER_ID );
+			
+			if( $( 'printPageCurrent' ).checked )
+			{
+				// Set page setting
+				var currentPage = birtUtility.trim( $( 'pageNumber' ).innerHTML );
+				action = action + "&" + Constants.PARAM_PAGE + "=" + currentPage;				
+			}
+			else if( $( 'printPageRange' ).checked )
+			{
+				// Set page range setting
+				var pageRange = birtUtility.trim( $( 'printPageRange_input' ).value );
+				if ( !birtUtility.checkPageRange( pageRange ) )
+				{
+					alert( Constants.error.invalidPageRange );
+					return false;
+				}
+				action = action + "&" + Constants.PARAM_PAGERANGE + "=" + pageRange;
+			}			
+
+			var oSelect = this.__instance.getElementsByTagName( 'select' )[0];
+			var pageOverflow = 0;
+			//var pagebreakonly = "false";
+			
+			// 
+			if( oSelect.selectedIndex >=0 )
+				pageOverflow = oSelect.value;
+
+			reg = new RegExp( "([&|?]{1}" + Constants.PARAM_PAGE_OVERFLOW + "\s*)=([^&|^#]*)", "gi" );
+			if( action.search( reg ) < 0 )
+			{
+				action = action + "&" + Constants.PARAM_PAGE_OVERFLOW + "=" + pageOverflow;
+			}
+			else
+			{
+				action = action.replace( reg, "$1=" + pageOverflow );
+			}
+			
+			/*
+			reg = new RegExp( "([&|?]{1}" + Constants.PARAM_PAGEBREAKONLY + "\s*)=([^&|^#]*)", "gi" );
+			if( action.search( reg ) < 0 )
+			{
+				action = action + "&" + Constants.PARAM_PAGEBREAKONLY + "=" + pagebreakonly;
+			}
+			else
+			{
+				action = action.replace( reg, "$1=" + pagebreakonly );
+			}				
+			*/
+
+			if ( Constants.viewingSessionId )
+			{
+				// append sub session in the POST part
+				birtUtility.addHiddenFormField(formObj, Constants.PARAM_SESSION_ID, Constants.viewingSessionId);
+				action = birtUtility.deleteURLParameter(action, Constants.PARAM_SESSION_ID);
+			}
+			
+			// Force "__overwrite" as false
+			reg = new RegExp( "([&|?]{1}" + Constants.PARAM_OVERWRITE + "\s*)=([^&|^#]*)", "gi" );
+			if( action.search( reg ) < 0 )
+			{
+				action = action + "&" + Constants.PARAM_OVERWRITE + "=false";
+			}
+			else
+			{
+				action = action.replace( reg, "$1=false" );
+			}
+
+			// Replace servlet pattern as output
+			action = action.replace( /[\/][a-zA-Z]+[?]/, "/"+Constants.SERVLET_OUTPUT+"?" );
+
+			var previewExists = false;
+			// retrieve previous window instance
+			var previousPrintWindow = window.open( '', Constants.WINDOW_PRINT_PREVIEW, 'location=no,scrollbars=yes,dependent=yes' );
+			try
+			{
+				// if the window didn't exist, then window.open() has opened an empty window
+				var previousBodyElement = previousPrintWindow.document.getElementsByTagName("body")[0];				
+				if ( previousBodyElement && birtUtility.trim( previousBodyElement.innerHTML ).length > 0 )
+				{
+					previewExists = true;
+				}
+			}
+			catch ( e )
+			{
+				// access denied is thrown if the previous preview window contains a PDF content
+				previewExists = true;
+			}
+
+			if ( previewExists )
+			{
+				// workaround for Bugzilla Bug 227937
+				window.setTimeout( function () { alert( Constants.error.printPreviewAlreadyOpen ) }, 0 );
+				return false;
+			}
+			else
+			{
+				// use the created window as current window
+				this.__printWindow = previousPrintWindow;
+			}
+
+			if ( !BrowserUtility.__isIE() )
+			{
+				// use onload event for the callback when page is loaded
+				Event.observe( this.__printWindow, 'load', this.__cb_print.bindAsEventListener( this ), false );
+			}
+			
+			formObj.action = action;
+			formObj.method = "post";
+			formObj.target = Constants.WINDOW_PRINT_PREVIEW;			
+			formObj.submit( );
+			
+			// Launch the browser's print dialog (IE/Safari workaround)
+			// Note: calling the print dialog for PDF in IE doesn't work (permission denied)
+			if ( ( BrowserUtility.__isIE() && this.__printFormat != 'pdf' ) || BrowserUtility.__isSafari() )
+			{
+				this.__timer = window.setTimeout( this.__cb_waitPreviewLoaded.bindAsEventListener( this ), 1000 );
+			}			
+		}
+		
+		return true;		
+	},
+
+	/**
+	 * Waits until the print preview is loaded (IE only)
+	 */
+	__cb_waitPreviewLoaded : function( )
+	{
+		window.clearTimeout( this.__timer );
+	
+		try
+		{		
+			if ( !this.__printWindow || this.__printWindow.closed )
+			{
+				return;
+			}
+		
+			if ( !this.__printWindow.document || this.__printWindow.document.readyState != "complete" )
+			{
+				// wait a little longer
+				this.__timer = window.setTimeout( this.__cb_waitPreviewLoaded.bindAsEventListener( this ), 1000 );
+			}
+			else
+		  	{
+				this.__cb_print();
+		  	}
+		}
+		catch ( error )
+		{
+			// IE throws a permission denied exception if the user closes
+			// the window too early. In this case ignore the exception.
+		}
+	},
+
+	/**
+	 * Control the browser's popup print dialog.
+	 *
+	 * Below are the implemented functions for the given browsers and output formats.
+	 * Function              IE       Mozilla/Safari
+	 * window.print()       HTML       HTML,PDF(delay)
+	 *
+	 */
+	__cb_print : function( )
+	{
+		try
+		{	
+			if ( !this.__printWindow || this.__printWindow.closed )			
+			{
+				return;
+			}
+
+			var err = this.__printWindow.document.getElementById( "birt_errorPage" );
+			if( err && err.innerHTML != '' )
+			{
+				return;
+			}
+			
+			// Call the browser's print dialog (async)
+			if ( this.__printFormat == 'pdf' ) // Mozilla only
+			{
+				// Mozilla needs some delay after loading PDF
+				this.__printWindow.setTimeout( "window.print();", 1000 );
+			}
+			else
+			{
+				// defer call to let the window draw its content
+				// (Firefox Bugzilla bug 213666)				
+				this.__printWindow.setTimeout( "window.print();", 0 );
+			}
+		}
+		catch ( error )
+		{
+			// IE throws a permission denied exception if the user closes
+			// the window too early. In this case ignore the exception.
+		}
+	},
+	
+	/**
+	 *	Native event handler for print format radio control.
+	 */
+	__neh_formatradio_click : function( event )
+	{
+		var oSC = Event.element( event );
+		var oSelect = this.__instance.getElementsByTagName( 'select' )[0];
+		if( oSC.checked && oSC.id == 'printAsPDF' )
+		{
+			this.__printFormat = 'pdf';
+			oSelect.disabled = false;
+			oSelect.focus();
+		}
+		else
+		{
+			this.__printFormat = 'html';
+			oSelect.disabled = true;
+		}
+	},
+
+	/**
+	 *	Native event handler for page radio control.
+	 */
+	__neh_pageradio_click : function( event )
+	{
+		var oSC = Event.element( event );	
+		var oInput = $( 'printPageRange_input' );
+		if( oSC.checked && oSC.id == 'printPageRange' )
+		{
+			oInput.disabled = false;
+			oInput.focus( );
+		}
+		else
+		{
+			oInput.disabled = true;
+			oInput.value = "";
+		}
+	},				
+				 
+	/**
+	Called right before element is shown
+	*/
+	__preShow: function()
+	{
+		// disable the toolbar buttons
+		birtUtility.setButtonsDisabled ( "toolbar", true );
+		
+		// disable the Navigation Bar buttons
+		birtUtility.setButtonsDisabled ( "navigationBar", true );
+	},
+	
+	/**
+	Called before element is hidden
+	*/
+	__preHide: function()
+	{
+		// enable the toolbar buttons
+		birtUtility.setButtonsDisabled ( "toolbar", false );
+		
+		// enable the Navigation Bar buttons
+		birtUtility.setButtonsDisabled ( "navigationBar", false );		
+	}	
+} );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtPrintReportServerDialog.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtPrintReportServerDialog.js
new file mode 100644
index 0000000..366e2a3
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtPrintReportServerDialog.js
@@ -0,0 +1,662 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	Birt print report on the server dialog.
+ */
+BirtPrintReportServerDialog = Class.create( );
+
+BirtPrintReportServerDialog.prototype = Object.extend( new AbstractBaseDialog( ),
+{
+	__neh_select_change_closure : null,
+	__neh_printserver_click_closure : null,
+	__neh_pageradio_click_closure : null,
+		
+	__enable : false,
+	__printer : null,	
+	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	@return, void
+	 */
+	initialize : function( id )
+	{
+		this.__initBase( id );
+		this.__z_index = 200;
+		
+		this.__initLayout( );		
+		
+		// Binding
+		this.__neh_select_change_closure = this.__neh_select_change.bindAsEventListener( this );
+		this.__neh_printserver_click_closure = this.__neh_printserver_click.bindAsEventListener( this );
+		this.__neh_pageradio_click_closure = this.__neh_pageradio_click.bindAsEventListener( this );
+			
+		this.__installEventHandlers( id );		
+	},
+	
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, toolbar id (optional since there is only one toolbar)
+	 *	@return, void
+	 */
+	__installEventHandlers : function( id )
+	{
+		var oSelects = this.__instance.getElementsByTagName( 'select' );
+		Event.observe( oSelects[0], 'change', this.__neh_select_change_closure, false );
+		
+		var oInputs = this.__instance.getElementsByTagName( 'input' );
+		Event.observe( oInputs[0], 'click', this.__neh_printserver_click_closure, false );	
+		
+		var oInputs = $( 'printServerPageSetting' ).getElementsByTagName( 'input' );
+		for( var i=0; i<oInputs.length; i++ )
+		{
+			if( oInputs[i].type == 'radio' )			
+				Event.observe( oInputs[i], 'click', this.__neh_pageradio_click_closure,false );
+		}	
+	},
+
+	/**
+	 *	Handle clicking on ok.
+	 *
+	 *	@return, void
+	 */
+	__okPress : function( )
+	{
+		var flag = false;
+		if( this.__enable )
+		{
+			this.__collectPrinter( );
+			flag = this.__printAction( );
+			
+			if ( flag )
+			{
+				birtConfirmationDialog.__cb_bind( );
+			}			
+		}
+
+		// don't hide if there was an error
+		if ( !( this.__enable && !flag ) )
+		{
+			this.__l_hide( );
+		}
+		
+	},
+	
+	/**
+	 * Collect printer information
+	 * 
+	 * @return, void
+	 * 
+	 */
+	__collectPrinter : function( )
+	{
+		if( !this.__printer )
+			return;
+		
+		var oCopies = $( 'printer_copies' );
+		if( !oCopies.disabled )
+			this.__printer.setCopies( oCopies.value );
+		
+		var oCollate = $( 'printer_collate' );
+		if( !oCollate.disabled )
+		{
+			if( oCollate.checked )
+				this.__printer.setCollate( true );
+			else
+				this.__printer.setCollate( false );
+		}
+		
+		var oDuplex = $( 'printer_duplexSimplex' );
+		if( !oDuplex.disabled && oDuplex.checked )
+		{
+			this.__printer.setDuplex( this.__printer.DUPLEX_SIMPLEX );	
+		}		
+		oDuplex = $( 'printer_duplexHorz' );
+		if( !oDuplex.disabled && oDuplex.checked )
+		{
+			this.__printer.setDuplex( this.__printer.DUPLEX_HORIZONTAL );	
+		}
+		oDuplex = $( 'printer_duplexVert' );
+		if( !oDuplex.disabled && oDuplex.checked )
+		{
+			this.__printer.setDuplex( this.__printer.DUPLEX_VERTICAL );	
+		}		
+		
+		var oMode = $( 'printer_modeBW' );
+		if( !oMode.disabled && oMode.checked )
+		{
+			this.__printer.setMode( this.__printer.MODE_MONOCHROME );	
+		}
+		oMode = $( 'printer_modeColor' );
+		if( !oMode.disabled && oMode.checked )
+		{
+			this.__printer.setMode( this.__printer.MODE_COLOR );	
+		}
+		
+		var oMediaSize = $( 'printer_mediasize' );
+		if( !oMediaSize.disabled )
+			this.__printer.setMediaSize( oMediaSize.value );
+				
+	},
+	
+	/**
+	 * Handle print report action
+	 * 
+	 * @return, true or false
+	 */
+	__printAction : function( )
+	{	
+		if( !this.__printer )
+			return false;
+				
+		var docObj = document.getElementById( "Document" );
+		if ( !docObj || birtUtility.trim( docObj.innerHTML ).length <= 0)
+		{
+			alert ( Constants.error.generateReportFirst );	
+			return false;
+		}	
+		else
+		{	
+			var divObj = document.createElement( "DIV" );
+			document.body.appendChild( divObj );
+			divObj.style.display = "none";
+		
+			var formObj = document.createElement( "FORM" );
+			divObj.appendChild( formObj );
+
+			// Replace "html" to selected output format
+			var action = soapURL;
+			var reg = new RegExp( "([&|?]{1}" + Constants.PARAM_FORMAT + "\s*)=([^&|^#]*)", "gi" );
+			if( action.search( reg ) < 0 )
+			{
+				action = action + "&" + Constants.PARAM_FORMAT + "=" + Constants.FORMAT_POSTSCRIPT;
+			}
+			else
+			{
+				action = action.replace( reg, "$1=" + Constants.FORMAT_POSTSCRIPT );
+			}
+			
+			// Delete page, pagerange and parameterpage settings in url if existed
+			action = birtUtility.deleteURLParameter( action, Constants.PARAM_PAGE );
+			action = birtUtility.deleteURLParameter( action, Constants.PARAM_PAGERANGE );
+			action = birtUtility.deleteURLParameter( action, Constants.PARAM_PARAMETERPAGE );
+			action = birtUtility.deleteURLParameter( action, Constants.PARAM_EMITTER_ID );
+			
+			if( $( 'printServerPageCurrent' ).checked )
+			{
+				// Set page setting
+				var currentPage = birtUtility.trim( $( 'pageNumber' ).innerHTML );
+				action = action + "&" + Constants.PARAM_PAGE + "=" + currentPage;				
+			}
+			else if( $( 'printServerPageRange' ).checked )
+			{
+				// Set page range setting
+				var pageRange = birtUtility.trim( $( 'printServerPageRange_input' ).value );
+				if ( !birtUtility.checkPageRange( pageRange ) )
+				{
+					alert( Constants.error.invalidPageRange );
+					return false;
+				}
+				action = action + "&" + Constants.PARAM_PAGERANGE + "=" + pageRange;
+			}			
+
+			// auto
+			var pageOverflow = 0;
+			//var pagebreakonly = "true";
+			
+			// fit to actual size
+			if( $( 'printServerFitToActual' ).checked )
+			{
+				pageOverflow = 1;
+			}
+			//fit to whole page
+			else if( $( 'printServerFitToWhole' ).checked )
+			{
+				pageOverflow = 2;
+			}
+
+			reg = new RegExp( "([&|?]{1}" + Constants.PARAM_PAGE_OVERFLOW + "\s*)=([^&|^#]*)", "gi" );
+			if( action.search( reg ) < 0 )
+			{
+				action = action + "&" + Constants.PARAM_PAGE_OVERFLOW + "=" + pageOverflow;
+			}
+			else
+			{
+				action = action.replace( reg, "$1=" + pageOverflow );
+			}
+			
+			/*
+			reg = new RegExp( "([&|?]{1}" + Constants.PARAM_PAGEBREAKONLY + "\s*)=([^&|^#]*)", "gi" );
+			if( action.search( reg ) < 0 )
+			{
+				action = action + "&" + Constants.PARAM_PAGEBREAKONLY + "=" + pagebreakonly;
+			}
+			else
+			{
+				action = action.replace( reg, "$1=" + pagebreakonly );
+			}				
+			*/
+			
+			// Force "__overwrite" as false
+			reg = new RegExp( "([&|?]{1}" + Constants.PARAM_OVERWRITE + "\s*)=([^&|^#]*)", "gi" );
+			if( action.search( reg ) < 0 )
+			{
+				action = action + "&" + Constants.PARAM_OVERWRITE + "=false";
+			}
+			else
+			{
+				action = action.replace( reg, "$1=false" );
+			}
+			
+			// Set action as print
+			reg = new RegExp( "([&|?]{1}" + Constants.PARAM_ACTION + "\s*)=([^&|^#]*)", "gi" );
+			if( action.search( reg ) < 0 )
+			{
+				action = action + "&" + Constants.PARAM_ACTION + "=" + Constants.ACTION_PRINT;
+			}
+			else
+			{
+				action = action.replace( reg, "$1=" + Constants.ACTION_PRINT );
+			}			
+			
+			// Post printer settings
+			var curPrinter = this.__findPrinter( this.__printer.getName( ) );
+			if( curPrinter )
+			{
+				var param = document.createElement( "INPUT" );
+				formObj.appendChild( param );
+				param.TYPE = "HIDDEN";
+				param.name = Constants.PARAM_PRINTER_NAME;
+				param.value = this.__printer.getName( );
+					
+				if( curPrinter.isCopiesSupported( ) )
+				{				
+					param = document.createElement( "INPUT" );
+					formObj.appendChild( param );
+					param.TYPE = "HIDDEN";
+					param.name = Constants.PARAM_PRINTER_COPIES;
+					param.value = this.__printer.getCopies( );
+				}
+				
+				if( curPrinter.isCollateSupported( ) )
+				{				
+					param = document.createElement( "INPUT" );
+					formObj.appendChild( param );
+					param.TYPE = "HIDDEN";
+					param.name = Constants.PARAM_PRINTER_COLLATE;
+					param.value = new String( this.__printer.isCollate( ) );
+				}
+				
+				if( curPrinter.isDuplexSupported( ) )
+				{				
+					param = document.createElement( "INPUT" );
+					formObj.appendChild( param );
+					param.TYPE = "HIDDEN";
+					param.name = Constants.PARAM_PRINTER_DUPLEX;
+					param.value = this.__printer.getDuplex( );
+				}
+
+				if( curPrinter.isModeSupported( ) )
+				{				
+					param = document.createElement( "INPUT" );
+					formObj.appendChild( param );
+					param.TYPE = "HIDDEN";
+					param.name = Constants.PARAM_PRINTER_MODE;
+					param.value = this.__printer.getMode( );
+				}	
+				
+				if( curPrinter.isMediaSupported( ) )
+				{				
+					param = document.createElement( "INPUT" );
+					formObj.appendChild( param );
+					param.TYPE = "HIDDEN";
+					param.name = Constants.PARAM_PRINTER_MEDIASIZE;
+					param.value = this.__printer.getMediaSize( );
+				}
+			}
+						
+			formObj.action = action;
+			formObj.method = "post";
+			formObj.target = "birt_confirmation_iframe";			
+			formObj.submit( );
+		}
+		
+		return true;		
+	},
+	
+	/**
+	 *	Native event handler for select control.
+	 * 
+	 * @param event
+	 * @return, void
+	 */
+	__neh_select_change : function( event )
+	{
+		this.__updateInfo( );
+	},
+	
+	/**
+	 * Native event handler for click 'Print On Server' control.
+	 * 
+	 * @param event
+	 * @return, void
+	 */
+	__neh_printserver_click : function( event )
+	{
+		var oCtl = Event.element( event );
+		
+		if( oCtl.checked )
+		{
+			this.__enable = true;
+			$( 'printer' ).disabled = false;						
+		}
+		else
+		{
+			this.__enable = false;
+			$( 'printer' ).disabled = true;			
+		}
+		
+		// Update info
+		this.__updateInfo( );
+	},
+
+	/**
+	 * Check whether focus on input control
+	 * 
+	 * @param oSC
+	 * @return, void
+	 */
+	__checkPageRadio : function( oSC )
+	{
+		if( !oSC || oSC.type != 'radio' )
+			return;
+			
+		var oInput = $( 'printServerPageRange_input' );
+		if( oSC.checked && oSC.id == 'printServerPageRange' )
+		{
+			oInput.disabled = false;
+			oInput.focus( );
+		}
+		else
+		{
+			oInput.disabled = true;
+			oInput.value = "";
+		}
+	},
+	
+	/**
+	 *	Native event handler for page radio control.
+	 */
+	__neh_pageradio_click : function( event )
+	{
+		var oSC = Event.element( event );		
+		this.__checkPageRadio( oSC );
+	},
+			
+	/**
+	 * Initilize dialog layout
+	 * 
+	 * @return, void
+	 */
+	__initLayout : function( )
+	{
+		var oSelect = $( 'printer' );
+		if( !oSelect )
+			return;
+		
+		oSelect.disabled = true;
+		for( var i=0; i<printers.length; i++ )
+		{		
+			var oOption = document.createElement( "OPTION" );
+			oOption.text = printers[i].name;
+			oOption.value = printers[i].value.getName( );
+			oSelect.options[oSelect.options.length] = oOption;
+		}
+		
+		// Update info		
+		this.__updateInfo( );		
+	},
+			
+	/**
+	 * Insert HTML in a control
+	 * 
+	 * @param id
+	 * @param text
+	 * @return, void
+	 */
+	__insertHTML : function( id,text )
+	{
+		var oControl = $( id );
+		if( oControl )
+		{
+			oControl.innerHTML = text;
+		} 	
+	},
+	
+	/**
+	 * Set disabled status for all controls in container 
+	 * 
+	 * @param id
+	 * @param flag
+	 * @return, void
+	 */
+	__setDisabled : function( id, flag )
+	{
+		var oContainer = $( id );
+		if( !oContainer )
+			return;
+		
+		var oSelects = oContainer.getElementsByTagName( "select" );
+		if( oSelects )
+		{
+			for( var i=0; i<oSelects.length; i++ )
+				oSelects[i].disabled = flag;
+		}
+		
+		var oInputs = oContainer.getElementsByTagName( "input" );
+		if( oInputs )
+		{
+			for( var i=0; i<oInputs.length; i++ )
+				oInputs[i].disabled = flag;
+		}		
+	},
+	
+	/**
+	 * Find certain printer object by name
+	 * 
+	 * @param name
+	 * @return, void
+	 */
+	__findPrinter : function( name )
+	{
+		var curPrinter;
+		for( var i=0; i<printers.length; i++ )
+		{
+			if( name == printers[i].name )
+			{
+				curPrinter = printers[i].value;
+				break;
+			}
+		}
+		
+		return curPrinter;
+	},
+	
+	/**
+	 * Update generate information
+	 * 
+	 * @return, void
+	 */
+	__updateInfo : function( )
+	{
+		var printerName = $( 'printer' ).value;
+		var curPrinter = this.__findPrinter( printerName );		
+		if( !curPrinter )
+		{
+			this.__enable = false;			
+			this.__setDisabled( 'printer_config',true );
+			this.__setDisabled( 'printServerPageSetting',true );
+			this.__setDisabled( 'printServerFitSetting',true );
+			return;
+		}
+			
+		this.__printer = curPrinter;	
+		
+		// Generate info	
+		this.__insertHTML( 'printer_status', curPrinter.getStatus( ) );
+		this.__insertHTML( 'printer_model', curPrinter.getModel( ) );
+		this.__insertHTML( 'printer_info', curPrinter.getInfo( ) );
+		
+		// Print settings
+		if( this.__enable )
+		{			
+			this.__setDisabled( 'printer_config',false );
+			this.__setDisabled( 'printServerPageSetting',false );
+			this.__setDisabled( 'printServerFitSetting',false );
+			var oInputs = $( 'printServerPageSetting' ).getElementsByTagName( 'input' );
+			for( var i=0; i<oInputs.length; i++ )
+				this.__checkPageRadio( oInputs[i] );
+		}
+		else
+		{			
+			this.__setDisabled( 'printer_config',true );
+			this.__setDisabled( 'printServerPageSetting',true );
+			this.__setDisabled( 'printServerFitSetting',true );			
+		}
+		
+		if( curPrinter.isCopiesSupported( ) )
+		{			
+			$( 'printer_copies' ).value = curPrinter.getCopies( );
+		}
+		else
+		{
+			$( 'printer_copies' ).disabled = true;
+		}
+		
+		if( curPrinter.isCollateSupported( ) )
+		{
+			if( curPrinter.isCollate( ) )
+				$( 'printer_collate' ).checked = true;
+			else
+				$( 'printer_collate' ).checked = false;
+		}
+		else
+		{
+			$( 'printer_collate' ).disabled = true;
+			$( 'printer_collate' ).checked = false;
+		}
+		
+		if( curPrinter.isDuplexSupported( ) )
+		{
+			var duplex = curPrinter.getDuplex( );
+			switch( duplex )
+			{
+				case curPrinter.DUPLEX_SIMPLEX:
+					$( 'printer_duplexSimplex' ).checked = true;
+					break;
+				case curPrinter.DUPLEX_HORIZONTAL:
+					$( 'printer_duplexHorz' ).checked = true;
+					break;					
+				case curPrinter.DUPLEX_VERTICAL:
+					$( 'printer_duplexVert' ).checked = true;
+					break;
+				default:
+					$( 'printer_duplexSimplex' ).checked = true;	
+			}			
+		}
+		else
+		{
+			$( 'printer_duplexSimplex' ).disabled = true;
+			$( 'printer_duplexSimplex' ).checked = false;
+			
+			$( 'printer_duplexHorz' ).disabled = true;
+			$( 'printer_duplexHorz' ).checked = false;
+			
+			$( 'printer_duplexVert' ).disabled = true;
+			$( 'printer_duplexVert' ).checked = false;
+		}
+		
+		if( curPrinter.isModeSupported( ) )
+		{
+			var mode = curPrinter.getMode( );
+			switch( mode )
+			{
+				case curPrinter.MODE_MONOCHROME:
+					$( 'printer_modeBW' ).checked = true;
+					break;
+				case curPrinter.MODE_COLOR:
+					$( 'printer_modeColor' ).checked = true;
+					break;
+				default:
+					$( 'printer_modeBW' ).checked = true;	
+			}
+		}
+		else
+		{
+			$( 'printer_modeBW' ).disabled = true;
+			$( 'printer_modeBW' ).checked = false;
+			
+			$( 'printer_modeColor' ).disabled = true;
+			$( 'printer_modeColor' ).checked = false;
+		}
+		
+		if( curPrinter.isMediaSupported( ) )
+		{
+			var mediaSize = curPrinter.getMediaSize( );
+			var mediaSizeNames = curPrinter.getMediaSizeNames( );
+			var oSize = $( 'printer_mediasize' );
+			oSize.length = 0;
+			for( var i=0; i<mediaSizeNames.length; i++ )
+			{
+				var oOption = document.createElement( "OPTION" );
+				var oLabel = document.createElement( "LABEL" );
+				oLabel.innerHTML = mediaSizeNames[i].name;
+				oOption.text = oLabel.innerHTML;				
+				oOption.value = mediaSizeNames[i].value;
+				
+				if( mediaSizeNames[i].value == mediaSize )
+					oOption.selected = true;
+				
+				oSize.options[oSize.options.length] = oOption;
+			}	
+		}
+		else
+		{
+			$( 'printer_mediasize' ).length = 0;
+			$( 'printer_mediasize' ).disabled = true;
+		}		
+	},
+		 
+	/**
+	Called right before element is shown
+	*/
+	__preShow: function()
+	{
+		// disable the toolbar buttons
+		birtUtility.setButtonsDisabled ( "toolbar", true );
+		
+		// disable the Navigation Bar buttons
+		birtUtility.setButtonsDisabled ( "navigationBar", true );
+	},
+	
+	/**
+	Called before element is hidden
+	*/
+	__preHide: function()
+	{
+		// enable the toolbar buttons
+		birtUtility.setButtonsDisabled ( "toolbar", false );
+		
+		// enable the Navigation Bar buttons
+		birtUtility.setButtonsDisabled ( "navigationBar", false );		
+	}	
+} );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtSimpleExportDataDialog.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtSimpleExportDataDialog.js
new file mode 100644
index 0000000..005bb94
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtSimpleExportDataDialog.js
@@ -0,0 +1,573 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	Birt export data dialog.
+ */
+BirtSimpleExportDataDialog = Class.create( );
+
+BirtSimpleExportDataDialog.prototype = Object.extend( new AbstractBaseDialog( ),
+{
+	__neh_select_change_closure : null,
+	__neh_switchResultSet_closure : null,
+		
+	availableResultSets : [],
+	selectedColumns : [],
+
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *	@return, void
+	 */
+	initialize : function( id )
+	{
+		this.__initBase( id );
+		this.__z_index = 200;
+		
+		// Closures
+		this.__neh_switchResultSet_closure = this.__neh_switchResultSet.bindAsEventListener( this );
+		this.__neh_click_exchange_closure = this.__neh_click_exchange.bindAsEventListener( this );
+		this.__neh_dblclick_src_closure = this.__neh_dblclick_src.bindAsEventListener( this );
+		this.__neh_dblclick_dest_closure = this.__neh_dblclick_dest.bindAsEventListener( this );
+		this.__neh_click_src_closure = this.__neh_click_src.bindAsEventListener( this );
+		this.__neh_click_dest_closure = this.__neh_click_dest.bindAsEventListener( this );
+		
+		this.__installEventHandlers( id );
+	},
+	
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, toolbar id (optional since there is only one toolbar)
+	 *	@return, void
+	 */
+	__installEventHandlers : function( id )
+	{
+		var oSelects = this.__instance.getElementsByTagName( 'select' );
+		Event.observe( oSelects[0], 'change', this.__neh_switchResultSet_closure, false );
+		
+		// Initialize exchange buttons
+		var oInputs = this.__instance.getElementsByTagName( 'input' );
+		for ( var i = 0; i < oInputs.length ; i++ )
+		{
+			Event.observe( oInputs[i], 'click', this.__neh_click_exchange_closure, false );
+		}
+		
+		// Initialize exchange selects
+		var oSelects = this.__instance.getElementsByTagName( 'select' );
+		if( oSelects.length > 2 )
+		{
+			Event.observe( oSelects[1], 'dblclick', this.__neh_dblclick_src_closure, false );
+			Event.observe( oSelects[2], 'dblclick', this.__neh_dblclick_dest_closure, false );
+			Event.observe( oSelects[1], 'change', this.__neh_click_src_closure, false );
+			Event.observe( oSelects[2], 'change', this.__neh_click_dest_closure, false );
+		}
+	},
+	
+	/**
+	 *	Native event handler for selection item movement.
+	 */
+	__neh_click_exchange : function( event )
+	{	
+		var oSC = Event.element( event );
+		if( oSC.id == 'exportDataEncoding_other' )
+		{
+			this.__updateButtons( );
+			$( 'exportDataOtherEncoding_input' ).focus( );
+		}
+		else
+		{	
+			var oInputs = this.__instance.getElementsByTagName( 'input' );
+			var oSelects = this.__instance.getElementsByTagName( 'select' );
+			
+			switch ( Event.element( event ).name )
+			{
+				case 'Addall':
+				{
+					if ( oSelects[1].options.length  > 0 )
+					{
+						this.moveAllItems( oSelects[1], oSelects[2] );
+					}
+					break;
+				}
+				case 'Add':
+				{
+					if ( oSelects[1].options.length  > 0 )
+					{
+						this.moveSingleItem( oSelects[1], oSelects[2] );
+					}
+					break;
+				}
+				case 'Remove':
+				{
+					if ( oSelects[2].options.length  > 0 )
+					{
+						this.moveSingleItem( oSelects[2], oSelects[1] );
+					}
+					break;
+				}
+				case 'Removeall':
+				{
+					if ( oSelects[2].options.length  > 0 )
+					{
+						this.moveAllItems( oSelects[2], oSelects[1] );
+					}
+					break;
+				}
+				case 'Up':
+				{
+					birtUtility.moveSelectedItemsUp( oSelects[2] );
+					break;
+				}
+				case 'Down':
+				{
+					birtUtility.moveSelectedItemsDown( oSelects[2] );
+					break;
+				}
+			}
+			
+			this.__updateButtons( );
+		}				
+	},
+
+	/**
+	 *	Native event handler for double click source select element.
+	 */
+	__neh_dblclick_src : function( event )
+	{
+		var oSelects = this.__instance.getElementsByTagName( 'select' );
+		
+		if ( oSelects[1].options.length  > 0 )
+		{
+			this.moveSingleItem( oSelects[1], oSelects[2] );
+		}
+		
+		this.__updateButtons( );
+	},
+
+	/**
+	 *	Native event handler for double click dest select element.
+	 */
+	__neh_dblclick_dest : function( event )
+	{
+		var oSelects = this.__instance.getElementsByTagName( 'select' );
+		
+		if ( oSelects[2].options.length  > 0 )
+		{
+			this.moveSingleItem( oSelects[2], oSelects[1] );
+		}
+		
+		this.__updateButtons( );
+	},
+	
+	/**
+	 *	Native event handler for click source select element.
+	 */
+	__neh_click_src : function( event )
+	{
+		this.__updateButtons( );
+	},
+
+	/**
+	 *	Native event handler for click dest select element.
+	 */
+	__neh_click_dest : function( event )
+	{
+		this.__updateButtons( );
+	},
+		
+	/**
+	 *	Update button status.
+	 */
+	__updateButtons : function( )
+	{
+		var oSelects = this.__instance.getElementsByTagName( 'select' );
+		var canExport = oSelects[0].options.length > 0;
+		var canAdd = oSelects[1].options.length > 0;
+		var canRemove = oSelects[2].options.length  > 0;
+		var srcSelectedIndex = oSelects[1].selectedIndex;
+		var destSelectedIndex = oSelects[2].selectedIndex;
+
+		var oInputs = this.__instance.getElementsByTagName( 'input' );
+		
+		if( !rtl )
+		{
+			oInputs[0].src = canAdd ? "birt/images/AddAll.gif" : "birt/images/AddAll_disabled.gif";
+		}
+		else
+		{
+			oInputs[0].src = canAdd ? "birt/images/AddAll_rtl.gif" : "birt/images/AddAll_disabled_rtl.gif";
+		}
+		oInputs[0].style.cursor = canAdd ? "pointer" : "default";
+		
+		if( !rtl )
+		{
+			oInputs[1].src = canAdd && srcSelectedIndex >= 0 ? "birt/images/Add.gif" : "birt/images/Add_disabled.gif";
+		}
+		else
+		{
+			oInputs[1].src = canAdd && srcSelectedIndex >= 0 ? "birt/images/Add_rtl.gif" : "birt/images/Add_disabled_rtl.gif";
+		}	
+		oInputs[1].style.cursor = canAdd ? "pointer" : "default";
+		
+		if( !rtl )
+		{ 
+			oInputs[2].src = canRemove && destSelectedIndex >= 0 ? "birt/images/Remove.gif" : "birt/images/Remove_disabled.gif";
+		}
+		else
+		{
+			oInputs[2].src = canRemove && destSelectedIndex >= 0 ? "birt/images/Remove_rtl.gif" : "birt/images/Remove_disabled_rtl.gif";
+		}	
+		oInputs[2].style.cursor = canRemove ? "pointer" : "default";
+
+		if( !rtl )
+		{
+			oInputs[3].src = canRemove ? "birt/images/RemoveAll.gif" : "birt/images/RemoveAll_disabled.gif";
+		}
+		else
+		{
+			oInputs[3].src = canRemove ? "birt/images/RemoveAll_rtl.gif" : "birt/images/RemoveAll_disabled_rtl.gif";
+		}
+		oInputs[3].style.cursor = canRemove ? "pointer" : "default";
+
+		oInputs[4].src = canRemove && destSelectedIndex >= 0 ? "birt/images/Up.gif" : "birt/images/Up_disabled.gif";
+		oInputs[4].style.cursor = canRemove ? "pointer" : "default";
+
+		oInputs[5].src = canRemove && destSelectedIndex >= 0 ? "birt/images/Down.gif" : "birt/images/Down_disabled.gif";
+		oInputs[5].style.cursor = canRemove ? "pointer" : "default";
+		
+		if( canExport )
+		{
+			this.__setDisabled( 'exportDataEncodingSetting', false );
+			$( 'exportDataCSVSeparator' ).disabled = false;
+			
+			var oEnc = $( 'exportDataEncoding_other' );
+			var oEncInput = $( 'exportDataOtherEncoding_input' );
+			if( oEnc && oEnc.checked )
+			{				
+				oEncInput.disabled = false;
+			}
+			else
+			{
+				oEncInput.disabled = true;
+			}
+		}
+		else
+		{
+			this.__setDisabled( 'exportDataEncodingSetting', true );
+			$( 'exportDataCSVSeparator' ).disabled = true;
+		}
+	},
+
+	/**
+	 * Set disabled status for all controls in container 
+	 * 
+	 * @param id
+	 * @param flag
+	 * @return, void
+	 */
+	__setDisabled : function( id, flag )
+	{
+		var oContainer = $( id );
+		if( !oContainer )
+			return;
+		
+		var oSelects = oContainer.getElementsByTagName( "select" );
+		if( oSelects )
+		{
+			for( var i=0; i<oSelects.length; i++ )
+				oSelects[i].disabled = flag;
+		}
+		
+		var oInputs = oContainer.getElementsByTagName( "input" );
+		if( oInputs )
+		{
+			for( var i=0; i<oInputs.length; i++ )
+				oInputs[i].disabled = flag;
+		}		
+	},
+		
+	/**
+	 *	Move single selection item.
+	 */
+	moveSingleItem : function( sel_source, sel_dest )
+	{
+		if ( sel_source.selectedIndex == -1 )
+		{
+			return;
+		}
+		
+		for ( var i=0; i<sel_source.options.length; i++ )
+		{
+			if ( sel_source.options[i].selected )
+			{
+				var selectedItem = sel_source.options[i];
+				sel_dest.options[sel_dest.options.length] = new Option( selectedItem.text, selectedItem.value );
+				sel_source.remove( i );
+				i = i - 1;
+			}							
+		}
+		
+		sel_source.selectedIndex = 0;
+	},
+	
+	/**
+	 *	Move all selection items.
+	 */
+	moveAllItems : function( sel_source, sel_dest )
+	{
+   		for ( var i = 0; i < sel_source.length; i++ )
+   		{
+     		var SelectedText = sel_source.options[i].text;
+     		var SelectedValue = sel_source.options[i].value;
+	   		var newOption = new Option( SelectedText );
+			newOption.value = SelectedValue;
+     		sel_dest.options[sel_dest.options.length] = newOption;
+   		}
+   		
+   		sel_dest.selectedIndex = 0;
+   		sel_source.length = 0;
+	},	
+
+	/**
+	 *	Binding data to the dialog UI. Data includes zoom scaling factor.
+	 *
+	 *	@data, data DOM tree (schema TBD)
+	 *	@return, void
+	 */
+	 __bind : function( data )
+	 {
+	 	if ( !data )
+	 	{
+	 		return;
+	 	}
+	 	
+	 	var oSelects = this.__instance.getElementsByTagName( 'select' );
+		oSelects[0].options.length = 0;
+		oSelects[1].options.length = 0;
+		oSelects[2].options.length = 0;
+		
+		this.availableResultSets = [];
+	 	
+	 	var resultSets = data.getElementsByTagName( 'ResultSet' );
+	 	for ( var k = 0; k < resultSets.length; k++ )
+	 	{
+	 		var resultSet = resultSets[k];
+	 		
+		 	var queryNames = resultSet.getElementsByTagName( 'QueryName' );
+			oSelects[0].options[oSelects[0].options.length] = new Option(queryNames[0].firstChild.data);
+				 	
+			this.availableResultSets[k] = {};
+			
+		 	var columns = resultSet.getElementsByTagName( 'Column' );
+		 	for( var i = 0; i < columns.length; i++ )
+		 	{
+		 		var column = columns[i];
+		 		
+		 		var columnName = column.getElementsByTagName( 'Name' );
+		 		var label = column.getElementsByTagName( 'Label' );
+				this.availableResultSets[k][label[0].firstChild.data] = columnName[0].firstChild.data;
+		 	}
+		}
+		
+		this.__neh_switchResultSet( );
+	 },
+	 
+	 /**
+	  *	switch result set.
+	  */
+	 __neh_switchResultSet : function( )
+	 {
+	 	var oSelects = this.__instance.getElementsByTagName( 'select' );
+		oSelects[1].options.length = 0;
+		oSelects[2].options.length = 0;	
+	 	
+	 	var columns = this.availableResultSets[oSelects[0].selectedIndex];
+	 	for( var label in columns )
+	 	{
+	 		var colName = columns[label];
+			var option = new Option( label );
+			option.value = colName;
+			oSelects[1].options[oSelects[1].options.length] = option;
+	 	}
+	 	
+		this.__updateButtons( );
+	 },
+
+	/**
+	 *	Handle clicking on ok.
+	 *
+	 *	@return, void
+	 */
+	__okPress : function( )
+	{
+		var oSelects = this.__instance.getElementsByTagName( 'select' );
+		this.__l_hide( );
+		if ( oSelects[2].options.length > 0 )
+		{
+			for( var i = 0; i < oSelects[2].options.length; i++ )
+			{
+				this.selectedColumns[i] = oSelects[2].options[i].value;
+			}
+			
+			this.__constructForm( );
+		}
+	},
+	
+	/**
+	 *	Construct extract data form. Post it to server.
+	 */
+	__constructForm : function( )
+	{
+		var dialogContent = $( 'simpleExportDialogBody' );
+		var hiddenDiv = document.createElement( 'div' );
+		hiddenDiv.style.display = 'none';
+
+		var hiddenForm = document.createElement( 'form' );
+		hiddenForm.method = 'post';
+		hiddenForm.target = '_self';
+		var url = soapURL;
+		url = url.replace( /[\/][a-zA-Z]+[?]/, '/' + Constants.SERVLET_EXTRACT + '?' );
+		
+		// delete some URL parameters
+		url = birtUtility.deleteURLParameter( url, Constants.PARAM_BOOKMARK );
+		url = birtUtility.deleteURLParameter( url, Constants.PARAM_INSTANCE_ID );
+		hiddenForm.action = url;
+		
+		// Pass over current element's iid.
+		var queryNameInput = document.createElement( 'input' );
+		queryNameInput.type = 'hidden';
+		queryNameInput.name = Constants.PARAM_RESULTSETNAME;
+		var oSelects = this.__instance.getElementsByTagName( 'select' );
+		queryNameInput.value = oSelects[0].options[oSelects[0].selectedIndex].text;
+		hiddenForm.appendChild( queryNameInput );
+
+		// Total # of selected columns.
+		if ( this.selectedColumns.length > 0 )
+		{
+			var hiddenSelectedColumnNumber = document.createElement( 'input' );
+			hiddenSelectedColumnNumber.type = 'hidden';
+			hiddenSelectedColumnNumber.name = Constants.PARAM_SELECTEDCOLUMNNUMBER;
+			hiddenSelectedColumnNumber.value = this.selectedColumns.length;
+			hiddenForm.appendChild( hiddenSelectedColumnNumber );
+
+			// data of selected columns.
+			for( var i = 0; i < this.selectedColumns.length; i++ )
+			{
+				var hiddenSelectedColumns = document.createElement( 'input' );
+				hiddenSelectedColumns.type = 'hidden';
+				hiddenSelectedColumns.name = Constants.PARAM_SELECTEDCOLUMN + i;
+				hiddenSelectedColumns.value = this.selectedColumns[i];
+				hiddenForm.appendChild( hiddenSelectedColumns );
+			}
+		}
+		
+		this.selectedColumns = [];
+		
+		// CSV separator
+		var oExtension = $( 'exportDataExtension' );
+		if( oExtension && oExtension.value != '' )
+		{
+			var hiddenExtension = document.createElement( 'input' );
+			hiddenExtension.type = 'hidden';
+			hiddenExtension.name = Constants.PARAM_DATA_EXTRACT_EXTENSION;
+			hiddenExtension.value = oExtension.value;
+			hiddenForm.appendChild( hiddenExtension );			
+		}
+		
+		// Pass the export data encoding		
+		var oUTF8 = $( 'exportDataEncoding_UTF8' );
+		var hiddenEnc = document.createElement( 'input' );
+		hiddenEnc.type = 'hidden';
+		hiddenEnc.name = Constants.PARAM_EXPORT_ENCODING;
+		if( oUTF8 && oUTF8.checked )
+		{
+			hiddenEnc.value = oUTF8.value;
+		}
+		else
+		{
+			hiddenEnc.value = $('exportDataOtherEncoding_input').value;
+		}
+		hiddenForm.appendChild( hiddenEnc );
+		
+		// CSV separator
+		var oSep = $( 'exportDataCSVSeparator' );
+		if( oSep && oSep.value != '' )
+		{
+			var hiddenSep = document.createElement( 'input' );
+			hiddenSep.type = 'hidden';
+			hiddenSep.name = Constants.PARAM_SEP;
+			hiddenSep.value = oSep.value;
+			hiddenForm.appendChild( hiddenSep );			
+		}
+
+		var hiddenAsAttachment = document.createElement( 'input' );
+		hiddenAsAttachment.type = 'hidden';
+		hiddenAsAttachment.name = Constants.PARAM_ASATTACHMENT;
+		hiddenAsAttachment.value = "true";
+		hiddenForm.appendChild( hiddenAsAttachment );			
+		
+		// Whether exports column's data type
+		var oType = $( 'exportColumnDataType' );
+		var hiddenType = document.createElement( 'input' );
+		hiddenType.type = 'hidden';
+		hiddenType.name = Constants.PARAM_EXPORT_DATATYPE;
+		if( oType && oType.checked )
+			hiddenType.value = "true";
+		else
+			hiddenType.value = "false";
+		hiddenForm.appendChild( hiddenType );
+		
+		// Whether exports column as locale neutral
+		var oLocaleNeutral = $( 'exportColumnLocaleNeutral' );
+		var hiddenLocaleNeutral = document.createElement( 'input' );
+		hiddenLocaleNeutral.type = 'hidden';
+		hiddenLocaleNeutral.name = Constants.PARAM_LOCALENEUTRAL;
+		if( oLocaleNeutral && oLocaleNeutral.checked )
+			hiddenLocaleNeutral.value = "true";
+		else
+			hiddenLocaleNeutral.value = "false";
+		hiddenForm.appendChild( hiddenLocaleNeutral );		
+		
+		var tmpSubmit = document.createElement( 'input' );
+		tmpSubmit.type = 'submit';
+		tmpSubmit.value = 'TmpSubmit';
+		hiddenForm.appendChild( tmpSubmit );
+		
+		hiddenDiv.appendChild( hiddenForm );
+		dialogContent.appendChild( hiddenDiv );
+		tmpSubmit.click( );
+		dialogContent.removeChild( hiddenDiv );
+	},
+
+	/**
+	Called right before element is shown
+	*/
+	__preShow: function()
+	{
+		// disable the toolbar buttons
+		birtUtility.setButtonsDisabled ( "toolbar", true );
+		
+		// disable the Navigation Bar buttons
+		birtUtility.setButtonsDisabled ( "navigationBar", true );
+	},
+	
+	/**
+	Called before element is hidden
+	*/
+	__preHide: function()
+	{
+		// enable the toolbar buttons
+		birtUtility.setButtonsDisabled ( "toolbar", false );
+		
+		// enable the Navigation Bar buttons
+		birtUtility.setButtonsDisabled ( "navigationBar", false );		
+	}	
+} );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtTabedDialogBase.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtTabedDialogBase.js
new file mode 100644
index 0000000..3e8401a
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/dialog/BirtTabedDialogBase.js
@@ -0,0 +1,135 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	BirtTabedDialogBase
+ *	...
+ */
+BirtTabedDialogBase = Class.create( );
+
+BirtTabedDialogBase.prototype = Object.extend( new AbstractBaseDialog( ),
+{
+	/**
+	 *	Current tabs
+	 */
+	__tabs_caption : { },
+	
+	/**
+	 *	Current sections
+	 */
+	__tabs_content : { },
+	
+	/**
+	 *	Current tabs
+	 */
+	__current_tab : null,
+	
+	__neh_switchTab_closure : null,
+	__neh_hoverTab_closure : null,
+	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *
+	 *	@return, void
+	 */
+	initialize : function( id )
+	{
+		this.__initBase(id);
+		this.__z_index = 300;
+		
+		// TODO: need a better way to identify the dialog layout.
+		var oTabs = $( 'tabs' );
+		var oDivs = $( 'aaacontent' );
+		if ( oTabs && oDivs )
+		{
+			var oCells = oTabs.getElementsByTagName( 'td' );
+			var oTables = oDivs.getElementsByTagName( 'div' );
+			
+			for ( var i = 0; i < oCells.length; i++ )
+			{
+				this.__tabs_caption[ oCells[i].firstChild.data ] = oCells[i];
+				this.__tabs_content[ oCells[i].firstChild.data ] = oTables[i];
+			}
+			
+			this.__current_tab = oCells[0].firstChild.data;
+		}
+
+		// Closures
+		this.__neh_switchTab_closure = this.__neh_switchTab.bindAsEventListener( this );
+		this.__neh_hoverTab_closure = this.__neh_hoverTab.bindAsEventListener( this );
+		
+		this.__initialize( id );
+	},
+
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, toolbar id (optional since there is only one toolbar)
+	 *	@return, void
+	 */
+	__tabBase_installEventHandlers : function( id )
+	{
+		// Tabs
+		if ( this.__tabs_caption )
+		{
+			for ( var i in this.__tabs_caption )
+			{
+				Event.observe( this.__tabs_caption[ i ], 'click', this.__neh_switchTab_closure, false );
+				Event.observe( this.__tabs_caption[ i ], 'mouseover', this.__neh_hoverTab_closure, false );
+				Event.observe( this.__tabs_caption[ i ], 'mouseout', this.__neh_hoverTab_closure, false );
+			}
+		}
+		
+		this.__installEventHandlers( id );
+	},
+	
+	/**
+	 *	Handle native event 'click'.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_hoverTab : function( event )
+	{
+		var oCell = Event.element( event );
+		if ( this.__current_tab != oCell.firstChild.data )
+		{
+			this.__tabs_caption[oCell.firstChild.data].style.backgroundColor = ( event.type == 'mouseover' )? "#4682b4" : "#dbe4ee";
+			this.__tabs_caption[oCell.firstChild.data].style.color = ( event.type == 'mouseover' )? "white" : "black";
+		}
+	},
+
+	/**
+	 *	Handle native event 'click'.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_switchTab : function( event )
+	{
+		var oCell = Event.element( event );
+		if ( this.__current_tab != oCell.firstChild.data )
+		{
+			this.__tabs_caption[this.__current_tab].style.borderStyle = "outset";
+			this.__tabs_caption[this.__current_tab].style.cursor = "hand";
+			
+			this.__tabs_caption[oCell.firstChild.data].style.borderStyle = "inset";
+			this.__tabs_caption[oCell.firstChild.data].style.cursor = "default";
+			this.__tabs_caption[oCell.firstChild.data].style.backgroundColor = "#dbe4ee";
+			this.__tabs_caption[oCell.firstChild.data].style.color = "black";
+			
+			this.__tabs_content[this.__current_tab].style.display = "none";
+			this.__tabs_content[oCell.firstChild.data].style.display = "block";
+	
+			this.__current_tab = oCell.firstChild.data;
+		}
+	}
+});
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/report/AbstractBaseReportDocument.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/report/AbstractBaseReportDocument.js
new file mode 100644
index 0000000..3ed1064
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/report/AbstractBaseReportDocument.js
@@ -0,0 +1,372 @@
+/******************************************************************************
+ *	Copyright (c) 2004-2008 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	AbstractBaseDocument
+ *	...
+ */
+AbstractBaseReportDocument = function( ) { };
+
+AbstractBaseReportDocument.prototype = Object.extend( new AbstractReportComponent( ),
+{
+	__instance : null,
+	__has_svg_support : false,
+	__tocElement : null,
+	
+	/**
+	 *	Event handler closures.
+	 */
+	__neh_resize_closure : null,
+	__neh_select_closure : null,
+	__beh_toc_closure : null,
+	__beh_getPage_closure : null,
+	__beh_changeParameter_closure : null,
+	__rtl : null,
+		
+	__cb_bind : function( data )
+	{
+		// set rtl only the first time
+		if ( this.__rtl == null )
+		{
+			this.__rtl = false;
+			var oRtlElement = data.getElementsByTagName( 'rtl' );
+			if ( oRtlElement && oRtlElement[0] && oRtlElement[0].firstChild )
+			{
+				this.__rtl = ( "true" == oRtlElement[0].firstChild.data );
+			}
+		}
+		
+		var documentViewElement = $("documentView");
+		documentViewElement.style.direction = this.__rtl?"rtl":"ltr";
+		var docObj = document.getElementById( "Document" );
+		if ( docObj && BrowserUtility.isMozilla && !BrowserUtility.isFirefox3 )
+		{
+			docObj.scrollLeft = this.__rtl?(docObj.offsetWidth + "px"):"0px";
+		}
+	},
+	
+	/**
+	 *	Local version of __cb_installEventHandlers.
+	 */
+	__local_installEventHandlers : function( id, children, bookmark )
+	{
+		// jump to bookmark.
+		if ( bookmark )
+		{
+			var obj = $( bookmark );
+			if ( obj && obj.scrollIntoView )
+			{
+				obj.scrollIntoView( true );
+			}
+		}
+	},
+	
+	/**
+	 *	Unregister any birt event handlers.
+	 *
+	 *	@id, object id
+	 *	@return, void
+	 */
+	__local_disposeEventHandlers : function( id )
+	{
+	},
+
+	/**
+	 *	Handle native event 'click'.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__neh_resize : function( event )
+	{
+		if ( !this.__updateContainerSize_closure )
+		{
+			this.__updateContainerSize_closure = this.__updateContainerSize.bind( this );
+		}
+		
+		if ( BrowserUtility.isIE6 || BrowserUtility.isIE7 )
+		{
+			// delay resizing operation to the event queue
+			// else IE might override our changes with its calculated ones
+			setTimeout( this.__updateContainerSize_closure, 0);
+		}
+		else
+		{
+			this.__updateContainerSize();
+		}
+	},
+	
+	/**
+	 * Updates the container size according to the window size.
+	 */
+	__updateContainerSize : function()
+	{
+		var tocWidth = 0;
+		if ( this.__tocElement && this.__tocElement.__instance )
+		{
+			tocWidth = this.__tocElement.getWidth();
+		}
+		
+		var width = BirtPosition.viewportWidth( ) - tocWidth - (BrowserUtility.isFirefox?6:4);
+
+		// in IE, the width contains the border, unlike in other browsers
+		if ( BrowserUtility.isIE6 || BrowserUtility.isIE7 || 
+				BrowserUtility.isOpera || BrowserUtility.isKHTML || BrowserUtility.isSafari )
+		{
+			var containerLeft = 0;
+			// if viewer in rtl mode
+			if ( Constants.request.rtl )
+			{
+				// if report in rtl mode
+				if ( birtReportDocument && birtReportDocument.__rtl )
+				{
+					if ( BrowserUtility.isKHTML || BrowserUtility.isSafari )
+					{
+						containerLeft = 0;
+					}
+					else
+					{
+						containerLeft = -tocWidth;
+					}
+				}
+				else
+				{
+					containerLeft = tocWidth;
+				}
+				
+				this.__instance.style.left = containerLeft + "px";
+			}
+			else
+			{
+				this.__instance.style.left = "0px";
+			}
+		}
+		if( width > 0 )
+			this.__instance.style.width = width + "px";
+			
+		var height = BirtPosition.viewportHeight( ) - this.__instance.offsetTop - 2;
+		if( height > 0 )
+			this.__instance.style.height = height + "px";		
+		
+		this.__instance.style.left = containerLeft + "px";
+
+		if (BrowserUtility.isIE) {
+			var reportContainer = this.__instance.firstChild;
+
+			if (reportContainer != null) {
+				var scrollBarWidth = BrowserUtility._getScrollBarWidth(reportContainer, width, height);
+				var containerWidth = "100%";
+
+				if (height < reportContainer.offsetHeight && width > scrollBarWidth) {
+					containerWidth = (width - scrollBarWidth) + "px";
+				}
+				reportContainer.style.overflowX = "visible";
+				reportContainer.style.overflowY = "visible";
+				reportContainer.style.position = "relative";
+				reportContainer.style.width = containerWidth;
+			}
+		}
+	},
+	
+	/**
+	 *	Birt event handler for "getpage" event.
+	 *
+	 *	@id, document id (optional since there's only one document instance)
+	 *	@return, true indicating server call
+	 */
+	__beh_parameter : function( id )
+	{
+		birtParameterDialog.__cb_bind( );
+	},
+
+	/**
+	 *	Birt event handler for "change parameter" event.
+	 *
+	 *	@id, document id (optional since there's only one document instance)
+	 *	@return, true indicating server call
+	 */
+	__beh_changeParameter : function( id )
+	{
+		// set task id
+		var taskid = birtUtility.setTaskId( );
+		
+		if ( birtParameterDialog.__parameter > 0 )
+		{
+	        birtParameterDialog.__parameter.length = birtParameterDialog.__parameter.length - 1;
+		}
+		
+		// Get current page number
+		var pageNum = birtUtility.getPageNumber( );
+		
+		if( pageNum > 0 )
+		{		
+	        birtSoapRequest.addOperation( Constants.documentId, Constants.Document,
+	        							  "ChangeParameter", null, birtParameterDialog.__parameter,
+										  { name : Constants.PARAM_SVG, value : this.__has_svg_support? "true" : "false" },
+										  { name : Constants.PARAM_PAGE, value : pageNum },
+										  { name : Constants.PARAM_TASKID, value : taskid } );
+		}
+		else
+		{
+	        birtSoapRequest.addOperation( Constants.documentId, Constants.Document,
+	        							  "ChangeParameter", null, birtParameterDialog.__parameter,
+										  { name : Constants.PARAM_SVG, value : this.__has_svg_support? "true" : "false" },
+										  { name : Constants.PARAM_TASKID, value : taskid } );			
+		}
+		birtSoapRequest.setURL( soapURL );
+		birtProgressBar.setRedirect( true );
+		birtEventDispatcher.setFocusId( null );	// Clear out current focusid.
+		return true;
+	},
+	
+	/**
+	 *	Handle change cascade parameter.
+	 */
+	__beh_cascadingParameter : function( id, object )
+	{
+		// set task id
+		var taskid = birtUtility.setTaskId( );
+		
+	    birtSoapRequest.addOperation( Constants.documentId, Constants.Document,
+	    							 "GetCascadingParameter", null, object,
+	    							 { name : Constants.PARAM_TASKID, value : taskid } );
+		birtSoapRequest.setURL( soapURL );
+		birtEventDispatcher.setFocusId( null );	// Clear out current focusid.
+		return true;
+	},
+
+	/**
+	 *	Handle native event 'click'.
+	 *
+	 *	@event, incoming browser native event
+	 *	@return, void
+	 */
+	__beh_toc : function( id )
+	{
+		// resize document window
+		this.__neh_resize();
+	},
+
+	/**
+	 *	Birt event handler for "getpage" event.
+	 *
+	 *	@param id, document id (optional since there's only one document instance)
+	 *  @param object, pass some settings, for example: page,bookmark...
+	 *	@return, true indicating server call
+	 */
+	__beh_getPage : function( id, object )
+	{
+		// set task id
+		var taskid = birtUtility.setTaskId( );
+		
+		var url = soapURL;
+		// if set bookmark, delete the bookmark parameter in URL
+		if( object && object.name && object.name == Constants.PARAM_BOOKMARK )
+		{
+			url = birtUtility.deleteURLParameter( url, Constants.PARAM_BOOKMARK );
+			url = birtUtility.deleteURLParameter( url, Constants.PARAM_ISTOC );
+		}
+		
+		birtSoapRequest.setURL( url );
+		if ( object )
+		{
+			birtSoapRequest.addOperation( Constants.documentId, Constants.Document,
+										  "GetPage", null,
+										  object,
+										  { name : Constants.PARAM_SVG, value : this.__has_svg_support? "true" : "false" },
+										  { name : Constants.PARAM_TASKID, value : taskid } );
+		}
+		else
+		{
+			birtSoapRequest.addOperation( Constants.documentId, Constants.Document,
+										  "GetPage", null,
+										  { name : Constants.PARAM_SVG, value : this.__has_svg_support? "true" : "false" },
+										  { name : Constants.PARAM_TASKID, value : taskid } );
+		}
+
+		birtEventDispatcher.setFocusId( null );	// Clear out current focusid.
+		birtProgressBar.setRedirect( true );
+		return true;
+	},
+
+	/**
+	 *	Birt event handler for "getpage" event with collected parameters.
+	 *
+	 *	@param id, document id (optional since there's only one document instance)
+	 *  @param object, pass some settings, for example: page...
+	 *	@return, true indicating server call
+	 */
+	__beh_getPageInit : function( id, object )
+	{
+		// set task id
+		var taskid = birtUtility.setTaskId( );
+		
+		// Get current page number
+		var pageNum = birtUtility.getPageNumber( );
+		
+		birtSoapRequest.setURL( soapURL );
+		if ( object )
+		{
+			if( pageNum > 0 )
+			{
+				birtSoapRequest.addOperation( Constants.documentId, Constants.Document,
+											  "GetPage", null, birtParameterDialog.__parameter,
+											  object,
+											  { name : Constants.PARAM_SVG, value : this.__has_svg_support? "true" : "false" },
+											  { name : Constants.PARAM_PAGE, value : pageNum },
+											  { name : Constants.PARAM_TASKID, value : taskid } );
+			}
+			else
+			{
+				birtSoapRequest.addOperation( Constants.documentId, Constants.Document,
+											  "GetPage", null, birtParameterDialog.__parameter,
+											  object,
+											  { name : Constants.PARAM_SVG, value : this.__has_svg_support? "true" : "false" },
+											  { name : Constants.PARAM_TASKID, value : taskid } );				
+			}
+		}
+		else
+		{
+			if( pageNum > 0 )
+			{
+				birtSoapRequest.addOperation( Constants.documentId, Constants.Document,
+											  "GetPage", null, birtParameterDialog.__parameter,
+											  { name : Constants.PARAM_SVG, value : this.__has_svg_support? "true" : "false" },
+											  { name : Constants.PARAM_PAGE, value : pageNum },
+											  { name : Constants.PARAM_TASKID, value : taskid } );				
+			}
+			else
+			{
+				birtSoapRequest.addOperation( Constants.documentId, Constants.Document,
+											  "GetPage", null, birtParameterDialog.__parameter,
+											  { name : Constants.PARAM_SVG, value : this.__has_svg_support? "true" : "false" },
+											  { name : Constants.PARAM_TASKID, value : taskid } );
+			}
+		}
+
+		birtEventDispatcher.setFocusId( null );	// Clear out current focusid.
+		birtProgressBar.setRedirect( true );
+		return true;
+	},
+	
+	/**
+	 *	Birt event handler for "print" event.
+	 *
+	 *	@id, document id (optional since there's only one document instance)
+	 *	@return, true indicating server call
+	 */
+	__beh_export : function( id )
+	{
+		birtSoapRequest.setURL( soapURL);
+		birtSoapRequest.addOperation( "Document", Constants.Document, "QueryExport", null );
+		return true;
+	}
+});
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/report/AbstractReportComponent.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/report/AbstractReportComponent.js
new file mode 100644
index 0000000..bdb3b4e
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/report/AbstractReportComponent.js
@@ -0,0 +1,200 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	AbstractReportComponent.
+ *		Base class for all UI components.
+ */
+AbstractReportComponent = function( ) { };
+
+AbstractReportComponent.prototype =
+{
+	/**
+	 *	UI component html instance.
+	 */
+	__instance : null,
+	
+	/**
+	 *	Re-render ui object with new content.
+	 *
+	 *	@id, ui object id
+	 *	@content, new html UI content
+	 *	@return, void
+	 */
+	__cb_render : function( id, content )
+	{
+		var oDiv = $( id );
+		
+		while( oDiv.childNodes.length > 0)
+		{
+			oDiv.removeChild(oDiv.firstChild);
+		}
+				
+		// workaround for IE. If content starts with script, 
+		// append a hidden line to avoid ignore these scripts.
+		// Delete script attribute "defer" to avoid exec javascript twice
+		if( BrowserUtility.__isIE( ) )
+		{
+			content = '<span style="display: none">&nbsp;</span>' + content;
+			content = content.replace(/<script(.*)defer([^\s|^>]*)([^>]*)>/gi,'<script$1$3>');
+		}
+				
+		var container = document.createElement( "div" );
+		
+		container.innerHTML = content;
+		
+		// FIXME: Mozilla 1.7.12 produces an exception on the following line
+		// because the "content" variable contains some unrecognized parts
+		// see Bugzilla Bug 199998
+		try
+		{
+			oDiv.appendChild( container );
+		}
+		catch ( error )
+		{
+			// ignore exception
+		}		
+		
+		var scripts = container.getElementsByTagName( "script" );
+		for( var i = 0; i < scripts.length; i++ )
+		{
+		    if( scripts[i].src )
+		    {		
+		    	// workaround for IE, need append these scripts in head    			    					
+				if( BrowserUtility.__isIE( ) )
+				{
+				   	var scriptObj = document.createElement( "script" );
+					scriptObj.setAttribute( "type", "text/javascript" );
+					scriptObj.setAttribute( "src", scripts[i].src );
+				
+					var head = document.getElementsByTagName( "head" )[0];	
+					if( head )
+						head.appendChild( scriptObj );
+				}	
+		    }
+		    else if ( scripts[i].innerHTML )
+		    {	    	
+			    //  Internet Explorer has a funky execScript method that makes this easy
+			    if ( window.execScript )
+			        window.execScript( scripts[i].innerHTML );
+		    }
+		}
+
+		if ( BrowserUtility.__isSafari() || BrowserUtility.__isKHTML() )
+		{
+			// add the styles explicitly into the head
+			var styles = container.getElementsByTagName("style");
+			for ( var i = 0; i < styles.length; i++ )
+			{
+				var style = styles[i];
+				var styleContent = style.innerHTML;
+				if ( styleContent )
+				{
+					birtUtility.addStyleSheet( styleContent );
+				}
+			}
+		}
+		
+		// workaround for bug 165750, overflow-x and overflow-y only used in IE
+		if( BrowserUtility.__isIE( ) )
+		{
+			container.style.overflowX = "visible";
+			container.style.overflowY = "visible";
+		}
+		
+		this.__postRender(id);
+	},
+	
+	/**
+	 *	Called after the component content is rendered.	 
+	 *
+	 *	@id, ui object id
+	 *	@return, void
+	 */	
+	__postRender : function( id )
+	{
+		//implementation is left to extending class
+	},
+		
+	/**
+	 *	Install native/birt event handlers.
+	 *
+	 *	@id, table object id
+	 *	@return, void
+	 */
+	__cb_installEventHandlers : function( id, children, bookmark, type )
+	{
+		if ( this.__local_installEventHandlers )
+		{
+			this.__local_installEventHandlers( id, children, bookmark, type );
+		}
+		
+		var container = $( id );
+
+		container[ Constants.reportBase ] = ( type != 'Group' && type != 'ColumnInfo');
+		container[ Constants.activeIds ] = [ ]; // Need to remember active children
+		container[ Constants.activeIdTypes ] = [ ]; // Need to remember active children types
+		
+		if ( !children )
+		{
+			return;
+		}
+
+		// Also need to take care the active children.
+		for( var i = 0; i < children.length; i++ )
+		{
+			var oElementIds = children[i].getElementsByTagName( 'Id' );
+			var oElementTypes = children[i].getElementsByTagName( 'Type' );
+
+			var birtObj = ReportComponentIdRegistry.getObjectForType( oElementTypes[0].firstChild.data );
+			
+			if ( !birtObj || !birtObj.__cb_installEventHandlers )
+			{
+				continue;
+			}
+			
+			container[ Constants.activeIds ].push( oElementIds[0].firstChild.data );
+			container[ Constants.activeIdTypes ].push( oElementTypes[0].firstChild.data );
+
+			birtObj.__cb_installEventHandlers( oElementIds[0].firstChild.data, null, null, oElementTypes[0].firstChild.data );
+		}
+	},
+	
+	/**
+	 *	Unregister any birt event handlers.
+	 *	Remove local event listeners
+	 *
+	 *	@id, object id
+	 *	@return, void
+	 */
+	__cb_disposeEventHandlers : function( id, type )
+	{
+		if ( this.__local_disposeEventHandlers )
+		{
+			this.__local_disposeEventHandlers( id, type );
+		}
+
+		var container = $( id );
+		
+		var id = null;
+		while( container[ Constants.activeIds ].length > 0 )
+		{
+			var id = container[ Constants.activeIds ].shift( )
+			var type = container[ Constants.activeIdTypes ].shift( );
+			var birtObj = ReportComponentIdRegistry.getObjectForType( type );
+			if ( !birtObj || !birtObj.__cb_disposeEventHandlers )
+			{
+				continue;
+			}
+			birtObj.__cb_disposeEventHandlers( id, type );
+		}
+	}
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/report/BirtReportDocument.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/report/BirtReportDocument.js
new file mode 100644
index 0000000..9ac4686
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/report/BirtReportDocument.js
@@ -0,0 +1,239 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	BirtReportDocument
+ *	...
+ */
+BirtReportDocument = Class.create( );
+
+BirtReportDocument.prototype = Object.extend( new AbstractBaseReportDocument( ),
+{
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *
+	 *	@return, void
+	 */
+	initialize : function( id, tocElement )
+	{
+		this.__instance = $( id );
+		this.__tocElement = tocElement;
+		this.__neh_resize( );
+		this.__has_svg_support = hasSVGSupport;
+		
+		//	Prepare closures.
+		this.__neh_resize_closure = this.__neh_resize.bindAsEventListener( this );
+		this.__beh_getPage_closure = this.__beh_getPage.bind( this );
+		this.__beh_getPageInit_closure = this.__beh_getPageInit.bind( this );
+		this.__beh_changeParameter_closure = this.__beh_changeParameter.bind( this );
+		this.__beh_toc_closure = this.__beh_toc.bindAsEventListener( this );
+		this.__beh_cacheParameter_closure = this.__beh_cacheParameter.bind( this );
+		this.__beh_printServer_closure = this.__beh_printServer.bind( this );
+		this.__beh_print_closure = this.__beh_print.bind( this );
+		this.__beh_pdf_closure = this.__beh_pdf.bind( this );
+		this.__beh_cancelTask_closure = this.__beh_cancelTask.bind( this );
+		this.__beh_getPageAll_closure = this.__beh_getPageAll.bind( this );
+		this.__beh_exportReport_closure = this.__beh_exportReport.bind( this );
+				
+		Event.observe( window, 'resize', this.__neh_resize_closure, false );
+		
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_GETPAGE, this.__instance.id, this.__beh_getPage_closure );
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_GETPAGE_INIT, this.__instance.id, this.__beh_getPageInit_closure );		
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_PARAMETER, this.__instance.id, this.__beh_parameter );
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_CHANGE_PARAMETER, this.__instance.id, this.__beh_changeParameter_closure );
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_CASCADING_PARAMETER, this.__instance.id, this.__beh_cascadingParameter );
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_TOC, this.__instance.id, this.__beh_toc_closure );
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_QUERY_EXPORT, this.__instance.id, this.__beh_export );
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_CACHE_PARAMETER, this.__instance.id, this.__beh_cacheParameter_closure );
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_PRINT, this.__instance.id, this.__beh_print_closure );
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_PRINT_SERVER, this.__instance.id, this.__beh_printServer_closure );
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_PDF, this.__instance.id, this.__beh_pdf_closure );
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_CANCEL_TASK, this.__instance.id, this.__beh_cancelTask_closure );
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_GETPAGE_ALL, this.__instance.id, this.__beh_getPageAll_closure );
+		birtEventDispatcher.registerEventHandler( birtEvent.__E_EXPORT_REPORT, this.__instance.id, this.__beh_exportReport_closure );
+						
+  		birtGetUpdatedObjectsResponseHandler.addAssociation( "Docum", this );
+  		
+		// TODO: rename it to birt event
+		this.__cb_installEventHandlers( id );
+	},
+
+	/**
+	 *	Birt event handler for "cache parameter" event.
+	 *
+	 *	@id, document id (optional since there's only one document instance)
+	 *	@return, true indicating server call
+	 */
+	__beh_cacheParameter : function( id )
+	{
+		if ( birtParameterDialog.__parameter > 0 )
+		{
+	        birtParameterDialog.__parameter.length = birtParameterDialog.__parameter.length - 1;
+		}
+        birtSoapRequest.addOperation( Constants.documentId, Constants.Document,
+        							  "CacheParameter", null, birtParameterDialog.__parameter );
+		birtSoapRequest.setURL( soapURL );
+		birtEventDispatcher.setFocusId( null );	// Clear out current focusid.
+		return true;
+	},
+
+	/**
+	 *	Birt event handler for "PrintServer" event.
+	 *
+	 *	@id, document id (optional since there's only one document instance)
+	 *	@return, true indicating server call
+	 */
+	__beh_printServer : function( id )
+	{
+		birtPrintReportServerDialog.__cb_bind( );
+	},
+
+	/**
+	 *	Birt event handler for "print" event.
+	 *
+	 *	@id, document id (optional since there's only one document instance)
+	 *	@return, true indicating server call
+	 */
+	__beh_print : function( id )
+	{
+		birtPrintReportDialog.__cb_bind( );
+	},
+	
+	/**
+	 *	Birt event handler for "pdf" event.
+	 *
+	 *	@id, document id (optional since there's only one document instance)
+	 *	@return, true indicating server call
+	 */
+	__beh_pdf : function( id )
+	{	
+		var docObj = document.getElementById( "Document" );
+		if ( !docObj || birtUtility.trim( docObj.innerHTML ).length <= 0)
+		{
+			alert ( Constants.error.generateReportFirst );	
+			return;
+		}	
+		else
+		{	
+			var divObj = document.createElement( "DIV" );
+			document.body.appendChild( divObj );
+			divObj.style.display = "none";
+		
+			var formObj = document.createElement( "FORM" );
+			divObj.appendChild( formObj );
+
+			// Replace "html" to "pdf"
+			var action = soapURL;
+			var reg = new RegExp( "([&|?]{1}__format\s*)=([^&|^#]*)", "gi" );
+			if( action.search( reg ) < 0 )
+			{
+				action = action + "&__format=pdf";
+			}
+			else
+			{
+				action = action.replace( reg, "$1=pdf" );
+			}
+			
+			// Force "__overwrite" as false
+			reg = new RegExp( "([&|?]{1}__overwrite\s*)=([^&|^#]*)", "gi" );
+			if( action.search( reg ) < 0 )
+			{
+				action = action + "&__overwrite=false";
+			}
+			else
+			{
+				action = action.replace( reg, "$1=false" );
+			}
+						
+			formObj.action = action;
+			formObj.method = "post";			
+			formObj.submit( );
+		}
+	},
+
+	/**
+	 *	Birt event handler for "CancelTask" event.
+	 *
+	 *	@id, document id (optional since there's only one document instance)
+	 *	@return, true indicating server call
+	 */
+	__beh_cancelTask : function( id, object )
+	{	
+        birtSoapRequest.addOperation( Constants.documentId, Constants.Document, "CancelTask", null, object );
+		birtSoapRequest.setURL( soapURL );
+		birtEventDispatcher.setFocusId( null );	// Clear out current focusid.
+		return true;
+	},
+	
+	/**
+	 *	Birt event handler for "GetPageAll" event.
+	 *
+	 *	@id, document id (optional since there's only one document instance)
+	 *	@return, true indicating server call
+	 */
+	__beh_getPageAll : function( id, object )
+	{	
+		// set task id
+		var taskid = birtUtility.setTaskId( );
+		
+		if( object )
+		{
+	        birtSoapRequest.addOperation( Constants.documentId, Constants.Document, "GetPageAll",
+	        							   null, birtParameterDialog.__parameter, object,
+	        							   { name : Constants.PARAM_SVG, value : this.__has_svg_support? "true" : "false" },
+	        							   { name : Constants.PARAM_TASKID, value : taskid } );
+		}
+		else
+		{
+	        birtSoapRequest.addOperation( Constants.documentId, Constants.Document, "GetPageAll",
+	        							   null, birtParameterDialog.__parameter,
+        							       { name : Constants.PARAM_SVG, value : this.__has_svg_support? "true" : "false" },
+	        							   { name : Constants.PARAM_TASKID, value : taskid } );			
+		}
+		birtSoapRequest.setURL( soapURL );
+		birtEventDispatcher.setFocusId( null );	// Clear out current focusid.
+		birtProgressBar.setRedirect( true );
+		return true;
+	},
+
+	/**
+	 *	Birt event handler for "ExportReport" event.
+	 *
+	 *	@id, document id (optional since there's only one document instance)
+	 *	@return, true indicating server call
+	 */
+	__beh_exportReport : function( id )
+	{
+		birtExportReportDialog.__cb_bind( );
+	},
+	
+	/**
+	 *	Called after the component content is rendered.	 
+	 *
+	 *	@id, ui object id
+	 *	@return, void
+	 */	
+	__postRender : function( id )
+	{
+		// ensures that the rendered component is the report document
+		if ( id == "Document" )
+		{
+			var docObj = document.getElementById( id );
+			if ( docObj )
+			{
+				// set document scrollbar position to the top
+				docObj.scrollTop = "0px";				
+				this.__neh_resize();
+			}
+		}
+	}
+	
+});
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/report/ReportComponentIdRegistry.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/report/ReportComponentIdRegistry.js
new file mode 100644
index 0000000..1260dc9
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/ui/report/ReportComponentIdRegistry.js
@@ -0,0 +1,128 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/** 
+ * Class ReportComponentIdRegistry 
+ */
+ReportComponentIdRegistry =
+{
+	types:
+	{
+		DOCUMENT : null,
+		TABLE : null,
+		LABEL : null,
+		CHART : null,
+		TABLE_T : null,
+		LABEL_T : null,
+		CHART_T : null
+	},
+	
+	ids: {},
+	
+	getDocumentType : function( )
+	{
+		return 'DOCUMENT';
+	},
+	
+	getTableType : function( )
+	{
+		return 'TABLE';
+	},
+	
+	getLabelType : function( )
+	{
+		return 'LABEL';
+	},
+	
+	getChartType : function( )
+	{
+		return 'CHART';
+	},
+	
+	getTemplateTableType : function( )
+	{
+		return 'TABLE_T';
+	},
+	
+	getTemplateLabelType : function( )
+	{
+		return 'LABEL_T';
+	},
+	
+	getTemplateChartType : function( )
+	{
+		return 'CHART_T';
+	},
+	
+	getTypeForId : function( id )
+	{
+		if ( this.ids[id] )
+		{
+			return this.ids[id];
+		}
+		return null;
+	},
+
+	setHandlerObjectForType : function( object, type )
+	{
+		for ( var i in this.types )
+		{
+			if ( i == type )
+			{
+				this.types[i] = object;
+				return;
+			}
+		}
+	},
+	
+	getObjectForId : function( id )
+	{
+		var type = this.getTypeForId( id );
+		if ( type )
+		{
+			return this.types[type];
+		}
+		return null;
+	},
+	
+	getObjectForType : function( type )
+	{
+		if ( type )
+		{
+			if ( type.toUpperCase( ) == 'Group'.toUpperCase( )
+					|| type.toUpperCase( ) == 'ColumnInfo'.toUpperCase( ) )
+			{
+				return this.types['TABLE'];
+			}
+			else
+			{
+				return this.types[type.toUpperCase( )];
+			}
+		}
+		
+		return null;
+		
+	},
+
+	addId : function( id, type )
+	{
+		this.ids[id] = type;
+	},
+	
+	removeId : function( id )
+	{
+		if ( this.ids[id] )
+		{
+			this.ids[id] = null;
+			delete this.ids[id];
+		}
+	}	
+};
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/BirtPosition.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/BirtPosition.js
new file mode 100644
index 0000000..3b8be11
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/BirtPosition.js
@@ -0,0 +1,56 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+/**
+ *	BirtPosition.
+ *	We could extend Position from Ruby.
+ */
+var BirtPosition =
+{
+	viewportHeight: function( )
+	{
+		if (window.innerHeight!=window.undefined) return window.innerHeight;
+		if (document.compatMode=='CSS1Compat') return document.documentElement.clientHeight;
+		if (document.body) return document.body.clientHeight; 
+		return window.undefined; 
+	},
+	
+	viewportWidth: function( )
+	{
+		if (window.innerWidth!=window.undefined) return window.innerWidth; 
+		if (document.compatMode=='CSS1Compat') return document.documentElement.clientWidth; 
+		if (document.body) return document.body.clientWidth; 
+		return window.undefined; 
+	},
+	
+	center: function( )
+	{
+      	var element = $( arguments[0] );
+      	if ( !element ) return;
+      	
+		var scTop = parseInt( document.documentElement.scrollTop, 10 );
+		var scLeft = parseInt( document.documentElement.scrollLeft, 10 );
+
+		element.style.top = ( scTop + ( ( this.viewportHeight( ) - element.offsetHeight ) / 2 ) ) + "px";
+		element.style.left =  ( scLeft + ( ( this.viewportWidth( ) - element.offsetWidth ) / 2 ) ) + "px";
+    },
+
+	move: function( element, x, y )
+	{
+      	if ( !element ) return;
+      	
+		var scTop = parseInt( document.documentElement.scrollTop, 10 );
+		var scLeft = parseInt( document.documentElement.scrollLeft, 10 );
+
+		element.style.top = scTop + y + "px";
+		element.style.left = scLeft + x + "px";
+    }
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/BirtUtility.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/BirtUtility.js
new file mode 100644
index 0000000..bdcbb7a
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/BirtUtility.js
@@ -0,0 +1,854 @@
+/******************************************************************************
+ *	Copyright (c) 2004-2008 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ * All shared utility functions should be put here.
+ */
+
+BirtUtility = function( ) { };
+
+BirtUtility.prototype =
+{
+	/**
+	 * The input control to save 'taskid'
+	 */
+	__task_id : 'taskid',
+	
+	/**
+	 * URL parameter to indicate the client DPI setting
+	 */
+	__PARAM_DPI : '__dpi',
+
+	/**
+	 * @returns true if left button was pressed
+	 */
+	isLeftButton : function( event )
+	{
+		return Event.isLeftClick( event ); //prototype library function	
+	},
+	
+	/**
+	 * Recursively removes all element child nodes
+	 * @param element DOM element
+	 */
+	removeChildren : function( element )
+	{
+		while( element.childNodes.length > 0 )
+		{
+			if( element.firstChild.childNodes.length > 0 )
+			{
+				this.removeChildren( element.firstChild );
+			}
+			element.removeChild( element.firstChild );
+		}
+	},
+
+	haveTagName : function( domTree, tag )
+	{
+		return ( ( domTree.getElementsByTagName( tag ).length == 0 ) ? false : true );
+	},
+
+	/**
+	 * It returns the data value of a single DOM leaf node
+	 */
+	getDataReponseLeaf : function( leaf )
+	{
+		return( leaf[0].firstChild.data );
+	},
+	
+	/**
+	 * It is constructor function for creating object based on the leaf node of SOAP response DOM tree 
+	 * The idea is from the Element function of WRScrollLayout.js
+	 * @param it - leaf node of SOAP response DOM tree
+	 * @returns object that consists of content of the input "item"
+	 */	
+	extractResponseLeaf : function( item, newObject )
+	{
+		var children = item.childNodes;
+		var size = children.length;
+		for( var i = 0; i < size; i++ )
+		{	
+			if( children[i].nodeType == "1" )
+			{
+				var childi = children[i];
+				var nName = children[i].nodeName;
+				var nData = null;
+				if( children[i].firstChild && children[i].firstChild.data )
+				{
+					nData = children[i].firstChild.data;					
+				}
+				newObject[ nName ] = nData;			
+			}	
+		}		
+	},
+
+	/**
+	 * It is recursive function to find all text contents under a DOM node.
+	 * @param node - root node of the DOM tree. We traverse recursively from here.
+	 * @param resultArray - The result are stored in this array during tree traversal.
+	 * @returns void
+	 */	
+	findAllTextchild : function( node, resultArray )
+	{
+		if ( node.nodeType == 3 )
+		{
+			// Text node
+			resultArray[ resultArray.length ] = node.data;
+		}
+		else
+		{
+			// Recursively traverse the tree
+			var kids = node.childNodes;
+			for ( var i = 0; i < node.childNodes.length; i++ )
+			{
+				this.findAllTextchild( kids[i], resultArray );
+			}
+		}
+	},
+	
+	setTextContent : function( node, textString )
+	{
+
+		if ( node.textContent != undefined )
+		{
+			// For example, Firefox.
+			node.textContent = textString;
+		}
+		else if ( node.innerText != undefined )
+		{
+			// For example, IE.
+			node.innerText = textString;
+		}
+	},
+	
+	/**
+	 * Fire a simulated mouse event on an html element
+	 * @param element html element to fire event on
+	 * @param eventName - name of mouse event such as 'click' or 'mousedown'
+	 * @param ctrlKey - optional,if present, event will be fired with control key pressed	
+	 */
+	fireMouseEvent : function( element, eventName, ctrlKey )
+	{
+		var evt;
+		var ctrl = ctrlKey || false;
+		if( element.fireEvent )
+		{
+			evt = document.createEventObject( );
+			evt.ctrlKey = ctrl;
+			evt.button = 1;
+			element.fireEvent( "on" + eventName, evt );
+		}
+		else if( element.dispatchEvent )
+		{
+			evt = document.createEvent( "MouseEvents" );
+			evt.initMouseEvent( eventName, false, 
+				true, undefined, undefined,
+				0, 0, 0, 0,
+				ctrl,
+				false,
+				false, false, 1,
+				undefined );
+			element.dispatchEvent( evt );
+		}
+		else
+		{
+			return null;
+		}
+		return evt;
+	},
+
+	/**
+	@returns boolean true if checked, false otherwise
+	*/
+	setCheckBoxChecked : function( checkbox, checked )
+	{
+		// Both IE and Firefox have defaultChecked property. But they use it differently.
+		// On Firefox, the GUI box is checked when checkbox.checked is true.
+		// It is not true for IE. On IE, we also need to set checkbox.defaultChecked.
+		// I guess when the checkbox is FIRST shown, IE uses checkbox.defaultChecked to determine the GUI.
+		checkbox.defaultChecked = checked;
+		checkbox.checked = checked;
+		return checked;
+	},
+
+	/**
+	 * Get a parameter specified in the URL. For example, if a URL is
+	 * http://localhost:8080/iportal/wr?__report=/16.webrptdesign&iPortalID=YPTDAGCNPOYSOS
+	 * getURLParameter(iPortalID) will return &iPortalID=YPTDAGCNPOYSOS
+	 */
+	getURLParameter: function ( url, parameterName )
+	{
+		var paramString = "";
+		var paramStartIndex = url.indexOf( parameterName );
+		var equalSign = url.charAt(paramStartIndex + parameterName.length);
+		
+		if ( paramStartIndex >= 0 && ( equalSign == "=" || equalSign == "&" ) )
+		{
+			var paramEndIndex = url.indexOf( "&", paramStartIndex );
+			if ( paramEndIndex >= 0 )
+			{
+				paramString = "&" + url.substring( paramStartIndex, paramEndIndex );
+			}
+			else
+			{
+				paramString = "&" + url.substring( paramStartIndex ); // get the substring till the end.					
+			}
+		}
+		return paramString;
+	},
+	
+	/**
+	 * Adds a parameter to a given URL.
+	 */
+	addURLParameter : function ( url, parameterName, parameterValue )
+	{
+		var paramPart = encodeURI(parameterName) + "=" + encodeURI(parameterValue)
+		var lastChar = url.charAt(url.length - 1); 
+		if ( lastChar != "&" && lastChar != "?" )
+		{
+			if ( url.indexOf("?") > 0 )
+			{
+				paramPart = "&" + paramPart;
+			}
+			else
+			{
+				paramPart += "?" + paramPart;
+			}		
+		}
+		
+		var anchorPos = url.lastIndexOf("#");
+		if ( anchorPos >= 0 )
+		{
+			// insert the param part before the anchor
+			url = url.substr(url, anchorPos - 1) + paramPart + url.substr(anchorPos);
+		}
+		else
+		{
+			url += paramPart;
+		}
+		return url;
+	},
+	
+	/**
+	 * Deletes a parameter specified in the given URL.
+	 * If for example the given URL is the following http://localhost/myUrl?param1=2&param2=3&param3=4
+	 * and the value of parameterName is "param2", the resulting URL will be:
+	 * http://localhost/myUrl?param1=2&param3=4
+	 * @param url url to process
+	 * @param parameterName parameter to remove
+	 * @return processed url
+	 */
+	deleteURLParameter : function(url, parameterName )
+	{
+		var reg = new RegExp( "([&|?]{1})" + escape(encodeURIComponent(parameterName)) + "\s*=[^&|^#]*", "gi" );
+		return url.replace( reg, "$1");		
+	},
+	
+	/**
+	 * Removes the URL anchor.
+	 */
+	deleteURLAnchor : function(url)
+	{
+		return url.replace( /#[a-zA-Z0-9\-_\$]*$/, "" );
+	},
+	
+	/**
+	 * Creates a hidden input form field.
+	 * @param formObj form object
+	 * @param paramName parameter name
+	 * @param paramValue parameter value
+	 * @return the newly created input element
+	 */
+	addHiddenFormField : function(formObj, paramName, paramValue)
+	{
+		var param = document.createElement( "INPUT" );
+		formObj.appendChild( param );
+		param.TYPE = "HIDDEN";
+		param.name = paramName;
+		param.value = paramValue;
+		return param;
+	},
+	
+	/**
+	 * Insert a string into the cursor position of a textarea.<b> 
+	 * textarea: DOM element of textarea to be inserted.
+	 * string: string to be inserted into the textarea.
+	 */	
+	insertStringCursorPosTextarea: function( textarea, string )
+	{
+		if ( textarea.selectionStart != undefined )
+		{
+			// Firefox
+			var startPos = textarea.selectionStart;
+			var endPos = textarea.selectionEnd;
+			textarea.value = textarea.value.substring( 0, startPos )+ string + textarea.value.substring( endPos, textarea.value.length );			
+		}
+		else
+		{
+			// IE
+			textarea.focus();
+			var range = document.selection.createRange();
+			range.text = string;
+		}
+	},
+
+	/**
+	 * Insert a string into the specified position of a textarea.<b> 
+	 * textarea: DOM element of textarea to be inserted.
+	 * pos: For Firefox, it is an integer. For IE, it is an TextRange object.
+	 * string: string to be inserted into the textarea.
+	 */	
+	insertStringTextarea: function( textarea, pos, string )
+	{
+		if ( textarea.selectionStart != undefined )
+		{
+			// Firefox
+			
+			if ( pos == undefined || pos == null )
+				pos = 0;
+				
+			textarea.value = textarea.value.substring( 0, pos )+ string + textarea.value.substring( pos, textarea.value.length );		
+		}
+		else
+		{
+			// IE
+			
+			textarea.focus( );
+			
+			if (pos == undefined || pos == null )
+				pos = document.selection.createRange();
+			
+			pos.text = string;	
+		}
+	},
+	
+	// get the cursor position of the textarea
+	getCursorPosTextarea: function( textarea )
+	{
+		if ( textarea.selectionStart != undefined )
+		{
+			// Firefox
+			return( textarea.selectionEnd );		
+		}
+		else
+		{
+			// IE
+			textarea.focus( );
+			return( document.selection.createRange( ) );
+		}
+	},	
+	
+	// IE and Firefox behave so differently to insert a string into cursor position of text area.
+	// So, we create this preferred method. This method subsequently call other methods of string insertion based on browser type.
+	preferredInsertStringTextarea: function( textarea, pos, string )
+	{
+		if ( textarea.selectionStart != undefined )
+		{
+			// Firefox
+			this.insertStringCursorPosTextarea( textarea, string );		
+		}
+		else
+		{
+			// IE
+			this.insertStringTextarea( textarea, pos, string );			
+		}		
+	},
+	
+	// id: tableId
+	getSelectedTableColumns: function( id )
+	{
+ 		var handlerObject = ReportComponentIdRegistry.getObjectForId(id);
+ 		var tableInstance = handlerObject.selectionManager.getTableInstanceById(id);
+ 		var table = $( id );
+ 		var iid = table.iid;
+ 		
+ 		//check that there is at least one column selected		
+ 		var selectedColumns = tableInstance.getRLOrderedSelectedColumns();
+ 		if( !selectedColumns )
+ 		{
+ 			// #IV TODO integrate with IV error handling
+ 			throw new WRError("WRReportTable", "Must have one or more columns to apply format");
+ 		}
+ 		
+ 		return selectedColumns;
+ 	},
+ 	
+	// trim left blanks
+	ltrim: function ( str )
+	{
+		return str.replace( /^\s*/, '');
+	},
+	
+	// trim right blanks
+	rtrim: function ( str )
+	{
+		return str.replace( /\s*$/, ''); 
+	},
+
+	// trim left and right blanks
+	trim: function ( str )
+	{
+		return this.rtrim( this.ltrim( str ) );
+	},
+	
+	// set button if disabled
+	setButtonsDisabled: function ( target, flag )
+	{
+		if ( !target )
+			return;
+			
+		var oTarget = $( target );
+		var oIEC;
+		
+		if ( oTarget )
+			oIEC = oTarget.getElementsByTagName( "INPUT" );
+			
+		if ( oIEC )
+		{
+			for( var i = 0; i < oIEC.length; i++ )
+			{
+				oIEC[i].disabled = flag;
+			}		
+		}
+	},
+	
+	// set current task id
+	setTaskId: function( id )
+	{
+		var taskid;
+		if( id )
+		{
+			// if pass id
+			taskid = id;
+		}
+		else
+		{
+			// use time stamp
+			var d = new Date( );
+			taskid = d.getFullYear( );
+			taskid += "-" + d.getMonth( );
+			taskid += "-" + d.getDate( );
+			taskid += "-" + d.getHours( );
+			taskid += "-" + d.getMinutes( );
+			taskid += "-" + d.getSeconds( );
+			taskid += "-" + d.getMilliseconds();
+		}
+		
+		// find taskid input control
+		var oTaskId = $( this.__task_id );
+		if( oTaskId )
+			oTaskId.value = taskid;
+		
+		return taskid;
+	},
+	
+	// get current task id
+	getTaskId: function( )
+	{
+		// find taskid input control
+		var oTaskId = $( this.__task_id );
+		if( oTaskId )
+			return this.trim( oTaskId.value );
+			
+		return "";	
+	},
+
+	// clear current task id
+	clearTaskId: function( )
+	{
+		// find taskid input control
+		var oTaskId = $( this.__task_id );
+		if( oTaskId )
+			oTaskId.value = '';			
+	},
+	
+	// get current page number
+	getPageNumber: function( )
+	{
+		var oPage = $( 'pageNumber' );
+		var pageNum = 0;
+		if( oPage )
+			pageNum = parseInt( this.trim( oPage.innerHTML ) );
+			
+		return pageNum;
+	},
+
+	// get total page number
+	getTotalPageNumber: function( )
+	{
+		var pageNum = 0;
+		var oPage = $( 'totalPage' );
+		if ( oPage )
+		{
+			pageNum = ( oPage.firstChild.data == '+' )? '+' : parseInt( oPage.firstChild.data );		
+		}
+			
+		return pageNum;
+	},
+	
+	/**
+	 * Checks the given page range syntax is valid, and if the page exist.
+	 * @param range in the format "1-4,6,7"
+	 * @return true if the range is correct 
+	 */
+	checkPageRange: function( range )
+	{
+		if ( !range )
+		{
+			return false;
+		}
+		var myRange = birtUtility.trim(range);
+
+		// check if the range format is correct
+		if ( !myRange.match( /^[0-9]+\s*(-\s*[0-9]+)?(\s*,\s*[0-9]+(-[0-9]+)?)*$/ ) )
+		{
+			return false;
+		}	
+		
+		var lastPage = this.getTotalPageNumber();
+		
+		// split the range parts
+		var parts = myRange.split(",");
+		for ( i = 0; i < parts.length; i++ )
+		{
+			var part = parts[i];			
+			var boundaries = part.split("-");
+
+			// page range
+			if ( boundaries.length == 2 )
+			{
+				var pageStart = parseInt( boundaries[0] );
+				var pageEnd = parseInt( boundaries[1] );
+				if ( isNaN( pageStart ) || isNaN( pageEnd ) 
+					|| pageEnd <= pageStart || pageStart < 1 || pageEnd < 1
+					|| pageStart > lastPage || pageEnd > lastPage )
+				{
+					return false;
+				}
+			}
+			// single page number
+			else if ( boundaries.length == 1 )
+			{
+				var pageNum = parseInt( boundaries[0] ); 
+				if ( isNaN( pageNum ) || pageNum < 1 || pageNum > lastPage )
+				{
+					return false;
+				}
+			}
+			// invalid format
+			else
+			{
+				return false;
+			}			
+		}
+		return true;
+	},
+	
+	/**
+	 * Adds the current session id to the given url and returns it.
+	 * If a session id already exists in the url, does nothing.
+	 * @return processed url
+	 */
+	initSessionId : function( url )
+	{
+		// remove existing session id from the URL
+		url = birtUtility.deleteURLParameter(url, Constants.PARAM_SESSION_ID);
+		
+		// add session id in SOAP URL
+		if ( Constants.viewingSessionId )
+		{
+			url = birtUtility.addURLParameter( url, Constants.PARAM_SESSION_ID, Constants.viewingSessionId);
+		}
+		return url;
+	},
+	
+	/**
+	 * Initialize the client DPI setting
+	 * 
+	 * @param, url
+	 * @return, string
+	 */
+	initDPI : function( url )
+	{
+		var href;
+		
+		try
+		{
+			if( url )
+			{
+				href = url;
+			}
+			else
+			{
+				href = document.location.href;
+			}
+			
+			var dpi;
+			if( screen.deviceXDPI )
+				dpi = screen.deviceXDPI;
+			
+			if( dpi )
+			{
+				var reg = new RegExp( "([&|?]{1}" + this.__PARAM_DPI + "\s*)=([^&|^#]*)", "gi" );
+				if( href.search( reg ) < 0 )
+					href = href + "&" + this.__PARAM_DPI + "=" + dpi;
+			}			
+		}
+		catch(e)
+		{}
+		
+		return href;		
+	},
+	
+	/**
+	 * Move selected items up
+	 */
+	moveSelectedItemsUp : function( list )
+	{
+		if( !list || list.selectedIndex < 0 )
+			return;
+		
+		var i = 0; 
+		var value = ""; 
+		var text = ""; 
+		for( i=0; i<(list.options.length-1); i++ ) 
+		{ 
+			if (!list.options[i].selected && list.options[i+1].selected) 
+			{ 
+				value = list.options[i].value; 
+				text = list.options[i].text; 
+				list.options[i] = new Option(list.options[i+1].text, list.options[i+1].value); 
+				list.options[i].selected = true; 
+				list.options[i+1] = new Option(text, value); 
+			} 
+		}			
+	},
+	
+	/**
+	 * Move selected items down
+	 */
+	moveSelectedItemsDown : function( list )
+	{
+		if( !list || list.selectedIndex < 0 )
+			return;
+		
+		var i = 0; 
+		var value = ""; 
+		var text = ""; 
+		for( i=list.options.length-1; i>0; i-- ) 
+		{
+			if (!list.options[i].selected && list.options[i-1].selected) 
+			{
+				value = list.options[i].value; 
+				text = list.options[i].text; 
+				list.options[i] = new Option(list.options[i-1].text, list.options[i-1].value); 
+				list.options[i].selected = true; 
+				list.options[i-1] = new Option(text, value); 
+			} 
+		} 	
+	},
+	
+	/**
+	 * Formats the given messages by putting the given values in
+	 * the placeholders. The placeholder format is {0}, {1}, ...
+	 * @param message template text containing placeholders
+	 * @param params an array of values to put into the placeholders, 
+	 * or a single string
+	 * @return formatted text 
+	 */
+	formatMessage : function( message, params )
+	{
+		if ( !message )
+		{
+			return;
+		}
+		
+		if ( !params )
+		{
+			return message;
+		}
+
+		if ( !(params.constructor == Array) )
+		{
+			params = new Array(params);
+		}		
+
+		for ( i = 0; i < params.length; i++ )
+		{
+			var pattern = new RegExp("\\\{" + i + "\\\}","g");
+			message = message.replace(pattern, params[i]);
+		}
+		return message;
+	},
+	
+	/**
+	 *  This method is a workaround for a Mozilla/Firefox bug which prevents some HTML 
+	 * elements to be resized properly when a contained element's "display" style has
+	 * been changed.
+	 * The refresh is done by moving the element back and forth one pixel.
+	 */
+	refreshElement : function( htmlElement )
+	{
+		var currentLeft = parseInt(htmlElement.style.left);
+		var currentTop = parseInt(htmlElement.style.top);
+		// shake it!
+		htmlElement.style.left = (currentLeft - 1) + "px";
+		htmlElement.style.top = (currentTop - 1) + "px";
+		htmlElement.style.left = currentLeft + "px";
+		htmlElement.style.top = currentTop + "px";
+	},
+	
+	/**
+	 * Do html decode for input string
+	 * 
+	 */
+	htmlDecode : function( str )
+	{
+		if( !str )
+			return null;
+		
+		// Replaces all HTML encoded string with original character. 
+		str = str.replace( /&#09;/g, "\t" );
+		str = str.replace( /<br>/g, "\n" );
+		str = str.replace( /&#13;/g, "\r" );
+		str = str.replace( /&#32;/g, " " );
+		str = str.replace( /&#34;/g, "\"" );
+		str = str.replace( /&#39;/g, "'" );
+		str = str.replace( /&#60;/g, "<" );
+		str = str.replace( /&#62;/g, ">" );
+		str = str.replace( /&#96;/g, "`" );
+		str = str.replace( /&#38;/g, "&" );
+		str = str.replace( /&#92;/g, "\\" );
+		str = str.replace( /&#47;/g, "/" );
+
+		return str;
+	},
+
+	_TABBABLE_TAGS : new Array("A","BUTTON","TEXTAREA","INPUT","IFRAME", "SELECT"),
+	
+	/**
+	 * Disables the tab indexs for all the tabbable elements
+	 * which are children of the given element.
+	 * @param element element
+	 */
+	disableTabIndexes : function(element)
+	{
+		for (var j = 0; j < this._TABBABLE_TAGS.length; j++)
+		{
+			var tagElements = element.getElementsByTagName(this._TABBABLE_TAGS[j]);
+			for (var k = 0 ; k < tagElements.length; k++)
+			{
+				var el = tagElements[k];
+				el._tabIndexSaved = el.tabIndex;
+				el.tabIndex="-1";
+			}
+		}
+	},
+
+	/**
+	 * Restores the tab indexs for all the tabbable elements
+	 * which are children of the given element.
+	 * @param element element
+	 */
+	restoreTabIndexes : function(element) {
+		for (var j = 0; j < this._TABBABLE_TAGS.length; j++)
+		{
+			var tagElements = element.getElementsByTagName(this._TABBABLE_TAGS[j]);
+			for (var k = 0 ; k < tagElements.length; k++)
+			{
+				var el = tagElements[k]; 
+				if ( el._tabIndexSaved )
+				{
+					el.tabIndex = el._tabIndexSaved;
+					delete el._tabIndexSaved;
+				}
+				else
+				{
+					el.tabIndex = null;
+				}
+			}
+		}
+	},
+
+
+	/**
+ 	 * Returns the HEAD element of the page.
+	 */
+	getHeadElement : function()
+	{
+		if ( !this._headElement )
+		{
+			this._headElement = document.getElementsByTagName("head")[0];
+		}
+		return this._headElement;
+	},
+
+	/**
+	* Adds a style sheet into the managed document.
+	* @param styleContent style sheet content
+	*/
+	addStyleSheet : function( styleContent )
+	{
+
+
+		var element = document.createElement("style");
+		element.type = "text/css";
+		if ( element.styleSheet )
+		{
+			element.styleSheet.cssText = styleContent;
+		}
+		else
+		{
+			element.appendChild( document.createTextNode( styleContent ) );
+		}			
+		this.getHeadElement().appendChild( element );
+	},
+	
+	noComma : "" //just to avoid javascript syntax errors
+}
+
+var birtUtility = new BirtUtility( );
+
+/**
+ *	Extend prototype's Event.
+ *	TODO: probably need a prototype extension.
+ */
+Event.prototype = Object.extend( Event,
+{
+	/**
+	 *	Extension to prototype 'Event' since Event.stop(event) isn't
+	 *	stopping in ie
+	 */
+	stop: function( event )
+	{
+		event.cancelBubble = true;
+		
+		if ( event.preventDefault )
+		{ 
+			event.preventDefault( );
+			event.stopPropagation( );
+	    }
+	    else
+	    {
+			event.returnValue = false;
+	    }
+	},
+	
+	/**
+	 *	Stops click from propigating without using .bindAsEventListener
+	 */
+	colClickStop: function( e )
+	{
+ 		if (!e) var e = $("Document").contentWindow.event;
+		debug( e.type);
+		Event.stop( e );
+	}
+});
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/BrowserUtility.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/BrowserUtility.js
new file mode 100644
index 0000000..d0adc53
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/BrowserUtility.js
@@ -0,0 +1,172 @@
+// Copyright 1994-2008, Actuate Software Corp., All rights reserved.
+
+BrowserUtility = Class.create();
+
+BrowserUtility.prototype = {
+	
+	initialize: function()
+	{
+		this.isIE = this.__isIE();
+		if ( this.isIE )
+		{
+			this.isIE6 = false;
+			this.isIE7 = false;
+			this.isIE8 = false;
+			if (document.documentMode) {
+				if (document.documentMode >= 8) {
+					this.isIE8 = true;
+				} else if (document.documentMode >= 7) {
+					this.isIE7 = true;
+				} else {
+					this.isIE6 = true;
+				}
+			}
+			else if ( window.XMLHttpRequest )
+			{
+				this.isIE7 = true;
+			}
+			else
+			{
+				this.isIE6 = true;
+			}
+		}
+
+		this.isMozilla = this.__isMozilla();
+		this.isFirefox = this.__isFirefox();
+		this.isGecko = this.__isGecko();
+		this.isSafari = this.__isSafari();
+		this.isKHTML = this.__isKHTML();
+		this.isOpera = this.__isOpera();
+		
+		if ( this.isFirefox )
+		{
+			var firefoxVersion = this._getAgentVersion("Firefox");
+			if ( firefoxVersion && firefoxVersion.length > 0 )
+			{
+				if ( firefoxVersion[0] == 2 )
+				{
+					this.isFirefox2 = true;
+				}
+				else if ( firefoxVersion[0] == 3 )
+				{
+					this.isFirefox3 = true;
+				}				
+			}
+		}
+	},
+	
+	_getAgentVersion : function( agentName )
+	{
+		var re = new RegExp(agentName + "\/([^\s])", "i");
+		var agentVersion = re.exec( navigator.userAgent );
+		if ( agentVersion && agentVersion[1] )
+		{
+			return this._getVersionComponents( agentVersion[1] );
+		}
+		else
+		{
+			return null;
+		}
+	},
+	
+	_getVersionComponents : function( versionString )
+	{
+		if ( !versionString )
+		{
+			return null;
+		}
+		return versionString.split(".");
+	},
+		
+	__isSafari: function()
+	{
+		return navigator.appVersion.match(/Safari/) != null;		
+	},
+
+	__isKHTML: function()
+	{
+		return navigator.appVersion.match(/KHTML/) != null;		
+	},
+
+	__isOpera: function()
+	{
+		return navigator.appName.match(/Opera/) != null;
+	},
+	
+	__isIE: function()
+	{
+		var userAgent = navigator.userAgent.toLowerCase();
+		var useIFrame;
+		if(userAgent.indexOf('msie') > -1)
+		{
+			//Internet Explorer
+			return true;
+			
+		}
+		else 
+		{
+			return false;
+		}
+	},
+	
+	__isMozilla : function()
+	{
+		var userAgent = navigator.userAgent.toLowerCase();
+		return (userAgent.indexOf('mozilla') > -1);
+	},
+	
+	__isFirefox : function()
+	{
+		var userAgent = navigator.userAgent.toLowerCase();
+		return (userAgent.indexOf('firefox') > -1);
+	},
+
+	__isGecko : function()
+	{
+		var userAgent = navigator.userAgent.toLowerCase();
+		return (userAgent.indexOf('gecko') > -1);
+	},
+	
+	useIFrame: function()
+	{
+		return this.isIE;
+	},
+	
+	_getScrollBarWidth : function(container, viewportWidth, viewportHeight)
+	{
+		var defaultWidth = 20;
+		
+		if (this.scrollBarWidth) {
+			return this.scrollBarWidth;
+		}
+		else if (container != null && viewportWidth > 0 && viewportHeight < container.offsetHeight)
+		{
+			var oldWidth = container.style.width;
+			var oldHeight = container.style.height;
+			var oldOverflowX = container.style.overflowX;
+			var oldOverflowY = container.style.overflowY;
+			var oldPosition = container.style.position;
+			
+			// Sets report container's styles to calculate scroll bar's width.
+			container.style.width = "";
+			container.style.height = "";
+			container.style.overflowX = "scroll";
+			container.style.overflowY = "hidden";
+			container.style.position = "relative";
+
+			this.scrollBarWidth = viewportWidth - container.offsetWidth;
+			if (this.scrollBarWidth <= 0){
+				this.scrollBarWidth = defaultWidth;
+			}
+
+			// Restors report container's old styles.
+			container.style.width = oldWidth;
+			container.style.height = oldHeight;
+			container.style.overflowX = oldOverflowX;
+			container.style.overflowY = oldOverflowY;
+			container.style.position = oldPosition;
+			return this.scrollBarWidth;
+		}
+		return defaultWidth;
+	}
+}
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/Constants.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/Constants.js
new file mode 100644
index 0000000..41232db
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/Constants.js
@@ -0,0 +1,129 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+ 
+var Constants = {
+
+	/** id of document managed BirtReportDocument*/
+	documentId: "Document",
+	
+	/** element is a UI component managed by BirtReportBase */
+	reportBase: "ReportBase",
+	
+	/** element is a table managed by BirtReportTable */
+	reportTable: "ReportTable",
+	
+	/** element is a chart managed by BirtReportChart */
+	reportChart: "ReportChart",
+	
+	/** element is a document managed BirtReportDocument */
+	isDocument: "isDocument",
+	
+	/** contains number of selected column if there is one */
+	selColNum: "SelColNum",
+
+	/** contains number of selected column if there is one */
+	activeIds: "activeIds",
+	activeIdTypes: "activeIdTypes",
+	
+	// Report object types.
+	Document : "Document",
+	Table : "Table",
+	Chart : "Chart",
+	Label : "Label",
+	Table_T : "Table_T",	// template of table type
+	Chart_T : "Chart_T",	// template of chart type
+	Label_T : "Label_T",	// template of label type
+	
+	// URL parameters name
+	PARAM_ACTION : '__action',
+	PARAM_FORMAT : '__format',
+	PARAM_ASATTACHMENT : '__asattachment',
+	PARAM_OVERWRITE : '__overwrite',
+	PARAM_PAGE : '__page',
+	PARAM_PAGERANGE : '__pagerange',
+	PARAM_PARAMETERPAGE : '__parameterpage',
+	PARAM_BOOKMARK : '__bookmark',
+	PARAM_INSTANCE_ID : '__instanceid',
+	PARAM_SVG : '__svg',
+	PARAM_TASKID : '__taskid',
+	PARAM_ISTOC : '__istoc',
+	PARAM_RESULTSETNAME : '__resultsetname',
+	PARAM_SELECTEDCOLUMNNUMBER : '__selectedcolumnnumber',
+	PARAM_SELECTEDCOLUMN : '__selectedcolumn',
+	PARAM_EXPORT_ENCODING : '__exportencoding',
+	PARAM_SEP : '__sep',
+	PARAM_EXPORT_DATATYPE : '__exportdatatype',
+	PARAM_LOCALENEUTRAL : '__localeneutral',
+	PARAM_DATA_EXTRACT_FORMAT : '__extractformat',
+	PARAM_DATA_EXTRACT_EXTENSION : '__extractextension',
+	PARAM_ISNULL : '__isnull',
+	PARAM_EMITTER_ID : '__emitterid',
+	
+	PARAM_PRINTER_NAME : '__printer',
+	PARAM_PRINTER_COPIES : '__printer_copies',
+	PARAM_PRINTER_COLLATE : '__printer_collate',
+	PARAM_PRINTER_DUPLEX : '__printer_duplex',
+	PARAM_PRINTER_MODE : '__printer_mode',
+	PARAM_PRINTER_MEDIASIZE : '__printer_pagesize',
+	
+	PARAM_PAGE_OVERFLOW : '__pageoverflow',	
+	PARAM_PAGEBREAKONLY : '__pagebreakonly',
+	
+	PARAM_SESSION_ID : '__sessionId',
+	
+	// Parameter Data Type
+	TYPE_ANY : '0',
+	TYPE_STRING : '1',
+	TYPE_FLOAT : '2',
+	TYPE_DECIMAL : '3',
+	TYPE_DATE_TIME : '4',
+	TYPE_BOOLEAN : '5',
+	TYPE_INTEGER : '6',
+	TYPE_DATE : '7',
+	TYPE_TIME : '8',
+	
+	// Servlet patterns
+	SERVLET_OUTPUT : 'output',
+	SERVLET_EXTRACT : 'extract',
+	SERVLET_FRAMESET : 'frameset',
+	SERVLET_PARAMETER : 'parameter',
+	SERVLET_PREVIEW : 'preview',
+	
+	// Output formats
+	FORMAT_POSTSCRIPT : 'postscript',
+	FORMAT_PDF : 'pdf',
+	FORMAT_HTML : 'html',
+	FORMAT_PPT : 'ppt',
+	
+	// Action names
+	ACTION_PRINT : 'print',
+	
+	// Window names
+	WINDOW_PRINT_PREVIEW : 'birtPrint',
+	
+	/** 
+	event.returnvalue indicating that event has already been handled
+	as a selection
+	*/
+	select: "select",
+	
+	/**
+	event.returnvalue indicated that contextmenu has already been handled
+	*/
+	context: "context",
+	
+	error : { },
+	
+	type: {UpdateRequest: "UpdateRequest"},
+	operation: "Operation",
+	target: "Target",
+	operator: {show: "Show", hide: "Hide", sort: "Sort"}
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/Debug.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/Debug.js
new file mode 100644
index 0000000..726db22
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/Debug.js
@@ -0,0 +1,251 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ * Show the debug window
+ */
+function showDebug(soapMessageDebug, regularDebug)
+{
+	if(soapMessageDebug == true)
+	{
+		var url = document.location.href;
+		var index = url.indexOf( "wr" );
+		url = url.substring( 0, index ) + "iportal/bizRD/test/DebugSoapMessage.jsp";
+		var oldWindow = window.open("", "DebugSoapMessage");
+		if(oldWindow)
+		{
+			oldWindow.close();
+		} 
+		window.top.debugWindow = window.open(url, "DebugSoapMessage", 
+						"left=300,top=300,width=450,height=300,scrollbars=yes,"
+	                  +"status=yes,resizable=yes");
+		window.top.debugWindow.soapMsgWindow = true;
+		window.top.debugWindow.opener = self;
+
+	}
+	else if(regularDebug == true)
+	{
+	  window.top.debugWindow =
+	      window.open("",
+	                  "Debug",
+	                  "left=0,top=0,width=200,height=300,scrollbars=yes,"
+	                  +"status=yes,resizable=yes");
+	  window.top.debugWindow.opener = self;
+	  // open the document for writing
+	  window.top.debugWindow.document.open();
+	  window.top.debugWindow.document.write(
+	      "<HTML><HEAD><TITLE>Debug Window</TITLE></HEAD><BODY><PRE>\n");
+	}
+     
+}
+
+/*
+ * Checks if debugging is currently enabled.
+ */
+function isDebugging( )
+{
+	try
+	{
+		return window.top.debugWindow && !window.top.debugWindow.closed;
+	}
+	catch(e)
+	{
+		return false; 
+	}
+}
+
+
+/*
+ * If the debug window exists, write debug messages to it.
+ * If isSoapMessage, write output to special soap message window
+ */
+function debug( text, isSoapMessage )
+{
+	//debug( birtSoapRequest.prettyPrintXML(request.responseXML.documentElement), true);
+	try
+	{
+		if ( isDebugging( ) )
+		{
+			if(window.top.debugWindow.soapMsgWindow)
+			{
+				var debugDiv;
+				if(isSoapMessage)
+				{
+				 	debugDiv = window.top.debugWindow.document.getElementById("soapMsgDebug");
+				 	var div = window.top.debugWindow.document.createElement("div");
+					div.innerHTML = "<pre>" + text;
+					//debugDiv.insertBefore(window.top.debugWindow.document.createTextNode("-------------END--------------"),debugDiv.firstChild);
+					debugDiv.insertBefore(div,debugDiv.firstChild);
+					div.style.display = "none";
+					var btn = addDebugButton(text);
+					debugDiv.insertBefore(btn, debugDiv.firstChild);
+					//debugDiv.insertBefore(window.top.debugWindow.document.createTextNode("-------------START----------------"),debugDiv.firstChild);			
+					debugDiv.insertBefore(window.top.debugWindow.document.createElement("br"),debugDiv.firstChild);
+				 	
+				 }
+				 else
+				 {
+				 	debugDiv = window.top.debugWindow.document.getElementById("regularDebug").firstChild;
+				 	var div = window.top.debugWindow.document.createElement("div");
+					div.innerHTML = "<pre>" + text;				
+					debugDiv.appendChild(div);				 	
+				}
+			}
+				 
+			else
+			{
+		    	window.top.debugWindow.document.write(text+"\n");	
+		   	}
+		}
+	}
+	catch(e){ }
+}
+
+g_debugButtonDivList = [];
+
+function addDebugButton(text)
+{
+	var numTargets = text.match(/Target&gt/g);
+	var txt = window.top.debugWindow.document.createTextNode((numTargets ? "XML" : " Text"));
+	var msgType = text.match(/(GetUpdatedObjectsResponse|GetUpdatedObjects)/);
+	if(msgType)
+	{
+		if(msgType[0] == "GetUpdatedObjectsResponse")
+		{
+			var msgTypeTxt = window.top.debugWindow.document.createTextNode("--Response--");
+		}
+		else if(msgType[0] == "GetUpdatedObjects")
+		{
+			var msgTypeTxt = window.top.debugWindow.document.createTextNode("--Request--");
+		}
+	}
+	else
+	{
+		var msgTypeTxt = window.top.debugWindow.document.createTextNode("no message type");
+	}		
+	var buttonDiv = window.top.debugWindow.document.createElement("div");	
+	buttonDiv.appendChild(msgTypeTxt);
+	buttonDiv.appendChild(txt);
+		
+	if(numTargets && msgTypeTxt.nodeValue == "testing--Response--")
+	{
+		var updateData = text.match(/UpdateData&gt[\w\s\.()"&]*&lt\/UpdateData/g);
+		if(updateData)
+		{
+			for(var i = 0; i < updateData.length; i++)
+			{
+				var dataType = updateData[i].match(/&ltData&gt\s*&lt[\w]*&gt/g);
+				dataType = dataType[0];
+				dataType = dataType.match(/&gt\s*&lt[\w]*&gt/g);
+				dataType = dataType[0];
+				dataType = dataType.replace(/\s*/, "");	
+				dataType = dataType.replace(/\n*/, "");
+				var targets = updateData[i].match(/Target&gt\s*[A-Za-z_]*\s*&lt\//g);
+				if(targets)
+				{
+					for(var j = 0; j < targets.length; j++)
+					{
+						var targTxt = targets[j].match(/\n\s*[A-Za-z_]*\n/);
+						if(targTxt)
+						{	
+							var targetDiv = window.top.debugWindow.document.createElement("div");
+							targTxt = targTxt[0];
+							targTxt = targTxt.replace(/\s*/, "");	
+							targTxt = targTxt.replace(/\n*/, "");
+							targetDiv.appendChild(window.top.debugWindow.document.createTextNode("Target: " + targTxt + " DataType: " + dataType));
+							buttonDiv.appendChild(targetDiv);
+						}
+					}
+				}
+			}
+		}
+	}
+	if(numTargets && msgTypeTxt.nodeValue == "--Response--")
+	{
+		var targets = text.match(/Target&gt\s*[A-Za-z_]*\s*&lt\//g);
+		if(targets)
+		{
+			for(var i = 0; i < targets.length; i++)
+			{
+				var targTxt = targets[i].match(/\n\s*[A-Za-z_]*\n/);
+				if(targTxt)
+				{	
+					var targetDiv = window.top.debugWindow.document.createElement("div");
+					targTxt = targTxt[0];
+					targTxt = targTxt.replace(/\s*/, "");	
+					targTxt = targTxt.replace(/\n*/, "");
+					targetDiv.appendChild(window.top.debugWindow.document.createTextNode("Target: " + targTxt));
+					buttonDiv.appendChild(targetDiv);
+				}
+			}
+		}
+	
+	}
+	else if(msgTypeTxt.nodeValue == "--Request--")
+	{
+		var targets = text.match(/Operator&gt\s*[A-Za-z_]*\s*&lt\//g);
+		if(targets)
+		{
+			for(var i = 0; i < targets.length; i++)
+			{
+				var targTxt = targets[i].match(/\n\s*[A-Za-z_]*\n/);
+				if(targTxt)
+				{	
+					var targetDiv = window.top.debugWindow.document.createElement("div");
+					targTxt = targTxt[0];
+					targTxt = targTxt.replace(/\s*/, "");	
+					targTxt = targTxt.replace(/\n*/, "");
+					targetDiv.appendChild(window.top.debugWindow.document.createTextNode(targTxt));
+					buttonDiv.appendChild(targetDiv);
+				}
+			}
+		}
+	}
+	buttonDiv.style.backgroundColor = "#ccffcc";
+	buttonDiv.onmousedown = pushDebugButton;
+	g_debugButtonDivList.push(buttonDiv);
+	buttonDiv.listIndex = g_debugButtonDivList.length -1;
+	return buttonDiv;
+}
+
+function pushDebugButton(e)
+{
+	if(!e) var e = window.top.debugWindow.event;
+	var targ = Event.element(e);
+	while(!targ.listIndex && targ.listIndex != 0)
+	{
+		targ = targ.parentNode;
+	}
+	var btn = g_debugButtonDivList[targ.listIndex];
+	if(btn.nextSibling.style.display == "block")
+	{
+		btn.style.backgroundColor = "#ccffcc";
+		btn.nextSibling.style.display = "none";
+	}
+	else
+	{
+		btn.style.backgroundColor = "#ff0000";
+		btn.nextSibling.style.display = "block";
+	}
+	
+}
+
+/**
+ * If the debug window exists, then close it
+ */
+function hideDebug()
+{
+	if (window.top.debugWindow && !window.top.debugWindow.closed)
+	{
+		window.top.debugWindow.close();
+		window.top.debugWindow = null;
+	}
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/Printer.js b/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/Printer.js
new file mode 100644
index 0000000..eb41a8a
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/ajax/utility/Printer.js
@@ -0,0 +1,223 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *		http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+/**
+ * Printer class.
+ */
+Printer = Class.create( );
+
+Printer.prototype =
+{
+	__name : null,
+	__status : null,
+	__model : null,
+	__info : null,
+	
+	__copiesSupported : null,
+	__copies : null,
+	
+	__collateSupported : null,
+	__collate : null,
+	
+	__modeSupported : null,
+	__mode : null,
+	
+	__duplexSupported : null,
+	__duplex : null,
+	
+	__mediaSupported : null,
+	__mediaSize : null,
+	__mediaSizeNames : null,
+	
+	/**
+	 * Constants
+	 */
+	MODE_MONOCHROME : "0",
+	MODE_COLOR : "1",
+	
+	DUPLEX_SIMPLEX : "0",
+	DUPLEX_HORIZONTAL : "1",
+	DUPLEX_VERTICAL : "2",
+	
+	/**
+	 *	Initialization routine required by "ProtoType" lib.
+	 *
+	 *	@return, void
+	 */
+	initialize: function( )
+	{
+		this.__copiesSupported = false;		
+		this.__collateSupported = false;
+		this.__collate = false;
+		this.__modeSupported = false;
+		this.__duplexSupported = false;
+		this.__mediaSupported = false;
+		
+		this.__mediaSizeNames = new Array( );
+	},
+		
+	setName : function( name )
+	{
+		this.__name = name;
+	},
+	
+	getName : function( )
+	{
+		return this.__name;
+	},
+	
+	setStatus : function( status )
+	{
+		this.__status = status;
+	},
+	
+	getStatus : function( )
+	{
+		return this.__status;
+	},
+
+	setModel : function( model )
+	{
+		this.__model = model;
+	},
+	
+	getModel : function( )
+	{
+		return this.__model;
+	},
+
+	setInfo : function( info )
+	{
+		this.__info = info;
+	},
+	
+	getInfo : function( )
+	{
+		return this.__info;
+	},
+	
+	setCopiesSupported : function( copiesSupported )
+	{
+		this.__copiesSupported = copiesSupported;
+	},
+	
+	isCopiesSupported : function( )
+	{
+		return this.__copiesSupported;
+	},
+	
+	setCopies : function( copies )
+	{
+		this.__copies = copies;
+	},
+	
+	getCopies : function( )
+	{
+		return this.__copies;
+	},
+	
+	setCollateSupported : function( collateSupported )
+	{
+		this.__collateSupported = collateSupported;
+	},
+	
+	isCollateSupported : function( )
+	{
+		return this.__collateSupported;
+	},
+	
+	setCollate : function( collate )
+	{
+		this.__collate = collate;
+	},
+	
+	isCollate : function( )
+	{
+		return this.__collate;
+	},
+	
+	setModeSupported : function( modeSupported )
+	{
+		this.__modeSupported = modeSupported;
+	},
+	
+	isModeSupported : function( )
+	{
+		return this.__modeSupported;
+	},
+	
+	setMode : function( mode )
+	{
+		this.__mode = mode;
+	},
+	
+	getMode : function( )
+	{
+		return this.__mode;
+	},
+
+	setDuplexSupported : function( duplexSupported )
+	{
+		this.__duplexSupported = duplexSupported;
+	},
+	
+	isDuplexSupported : function( )
+	{
+		return this.__duplexSupported;
+	},
+	
+	setDuplex : function( duplex )
+	{
+		this.__duplex = duplex;
+	},
+	
+	getDuplex : function( )
+	{
+		return this.__duplex;
+	},
+	
+	setMediaSupported : function( mediaSupported )
+	{
+		this.__mediaSupported = mediaSupported;
+	},
+	
+	isMediaSupported : function( )
+	{
+		return this.__mediaSupported;
+	},
+	
+	setMediaSize : function( mediaSize )
+	{
+		this.__mediaSize = mediaSize;
+	},
+	
+	getMediaSize : function( )
+	{
+		return this.__mediaSize;
+	},
+	
+	addMediaSizeName : function( mediaSize )
+	{
+		var index = this.__mediaSizeNames.length;
+		if( !this.__mediaSizeNames[index] )		
+			this.__mediaSizeNames[index] = { };
+					
+		this.__mediaSizeNames[index].name = mediaSize;
+		this.__mediaSizeNames[index].value = mediaSize;
+	},
+	
+	getMediaSizeNames : function( )
+	{
+		return this.__mediaSizeNames;
+	}
+}
+
+var printers = new Array( );
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/common/Attributes.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/common/Attributes.jsp
new file mode 100644
index 0000000..1861199
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/common/Attributes.jsp
@@ -0,0 +1,28 @@
+<%@ page import="org.eclipse.birt.report.utility.ParameterAccessor,
+				 org.eclipse.birt.report.IBirtConstants,
+				 org.eclipse.birt.report.session.*" %>
+
+<%-- Map Java attributes to Javascript constants --%>
+<script type="text/javascript">
+// <![CDATA[
+            
+    Constants.nullValue = '<%= IBirtConstants.NULL_VALUE %>';
+    
+	// Request attributes
+	if ( !Constants.request )
+	{
+		Constants.request = {};
+	}
+	Constants.request.format = '<%= ParameterAccessor.getFormat(request) %>';
+	Constants.request.rtl = <%= ParameterAccessor.isRtl( request ) %>;
+	Constants.request.isDesigner = <%= ParameterAccessor.isDesigner() %>;
+	Constants.request.servletPath = "<%= request.getAttribute( "ServletPath" ) %>".substr(1);
+	<%  IViewingSession viewingSession = ViewingSessionUtil.getSession(request);
+		String subSessionId = null;
+		if ( viewingSession != null )
+		{
+			subSessionId = viewingSession.getId();
+		}%>
+	Constants.viewingSessionId = <%= subSessionId!=null?"\"" + subSessionId + "\"":"null" %>;	
+// ]]>
+</script>
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/common/Error.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/common/Error.jsp
new file mode 100644
index 0000000..c7fcfb3
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/common/Error.jsp
@@ -0,0 +1,55 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.core.exception.BirtException,
+				 org.eclipse.birt.report.utility.ParameterAccessor,
+				 org.eclipse.birt.report.resource.BirtResources,
+				 java.io.PrintWriter" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="error" type="java.lang.Exception" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Error content
+-----------------------------------------------------------------------------%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+	<HEAD>
+		<TITLE>
+				<%= BirtResources.getMessage( "birt.viewer.title.error" )%>
+		</TITLE>
+		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+		<LINK REL="stylesheet" HREF="<%= request.getContextPath( ) + "/webcontent/birt/styles/style.css" %>" TYPE="text/css">
+	</HEAD>
+	<BODY>
+		<TABLE CLASS="BirtViewer_Highlight_Label">
+			<TR><TD NOWRAP>
+				<%
+					if ( error != null )
+					{
+						if ( error.getMessage( ) != null )
+						{
+							out.println( ParameterAccessor.htmlEncode( new String( error.getMessage( ).getBytes( "ISO-8859-1" ),"UTF-8" ) ) );
+						}
+						else
+						{
+							PrintWriter writer = new PrintWriter( out );									
+							error.printStackTrace( writer );				
+						}					
+					}
+				%>
+			</TD></TR>
+		</TABLE>
+	</BODY>
+</HTML>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/common/Locale.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/common/Locale.jsp
new file mode 100644
index 0000000..d5b9a4f
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/common/Locale.jsp
@@ -0,0 +1,17 @@
+<%@ page import="org.eclipse.birt.report.resource.BirtResources" %>
+
+<%-- Map Java resource messages to Javascript constants --%>
+<script type="text/javascript">
+// <![CDATA[	
+	// Error msgs
+	Constants.error.invalidPageRange = '<%= BirtResources.getJavaScriptMessage( "birt.viewer.dialog.page.error.invalidpagerange" )%>';
+	Constants.error.parameterRequired = '<%= BirtResources.getJavaScriptMessage( "birt.viewer.error.parameterrequired" )%>';
+	Constants.error.parameterNotAllowBlank = '<%= BirtResources.getJavaScriptMessage( "birt.viewer.error.parameternotallowblank" )%>';
+	Constants.error.parameterNotSelected = '<%= BirtResources.getJavaScriptMessage( "birt.viewer.error.parameternotselected" )%>';
+	Constants.error.invalidPageNumber = '<%= BirtResources.getJavaScriptMessage( "birt.viewer.navbar.error.blankpagenum" )%>';
+	Constants.error.unknownError = '<%= BirtResources.getJavaScriptMessage( "birt.viewer.error.unknownerror" )%>';
+	Constants.error.generateReportFirst = '<%= BirtResources.getJavaScriptMessage( "birt.viewer.error.generatereportfirst" )%>';
+	Constants.error.printPreviewAlreadyOpen = '<%= BirtResources.getJavaScriptMessage( "birt.viewer.dialog.print.printpreviewalreadyopen" )%>';
+	Constants.error.confirmCancelTask = '<%= BirtResources.getJavaScriptMessage( "birt.viewer.progressbar.confirmcanceltask" )%>';
+// ]]>
+</script>
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/common/processing.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/common/processing.jsp
new file mode 100644
index 0000000..bb51a25
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/common/processing.jsp
@@ -0,0 +1,50 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.resource.BirtResources" %>
+
+<%-----------------------------------------------------------------------------
+	Progress page
+-----------------------------------------------------------------------------%>
+<%
+	boolean rtl = false;
+	String rtlParam = request.getParameter("__rtl");
+	if ( rtlParam != null )
+	{
+		rtl = Boolean.getBoolean(rtlParam);
+	}
+%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+	<HEAD>
+		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+		<LINK REL="stylesheet" HREF="<%= request.getContextPath( ) + "/webcontent/birt/styles/style.css" %>" TYPE="text/css">
+	</HEAD>
+	<BODY STYLE="background-color: #ECE9D8;">
+		<DIV ID="progressBar" ALIGN="center">
+			<TABLE WIDTH="250px" CLASS="birtviewer_progresspage" CELLSPACING="10px">
+				<TR>
+					<TD ALIGN="center">
+						<B>
+							<%= BirtResources.getMessage( "birt.viewer.progressbar.prompt" )%>
+						</B>
+					</TD>
+				</TR>
+				<TR>
+					<TD ALIGN="center">
+						<IMG SRC="<%= request.getContextPath( ) + "/webcontent/birt/images/" + (rtl?"Loading_rtl":"Loading") + ".gif" %>" ALT="Progress Bar Image"/>
+					</TD>
+				</TR>
+			</TABLE>
+		</DIV>
+	</BODY>
+</HTML>		
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/control/NavigationbarFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/control/NavigationbarFragment.jsp
new file mode 100644
index 0000000..7cd958b
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/control/NavigationbarFragment.jsp
@@ -0,0 +1,118 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment,
+				 org.eclipse.birt.report.context.BaseAttributeBean,
+				 org.eclipse.birt.report.resource.BirtResources" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Navigation bar fragment
+-----------------------------------------------------------------------------%>
+<TR 
+	<%	
+		String imagesPath = "birt/images/";
+	
+		if( attributeBean.isShowNavigationbar( ) )
+		{
+	%>
+		HEIGHT="25px"
+	<%
+		}
+		else
+		{
+	%>
+		style="display:none"
+	<%
+		}
+	%>	
+>
+	<TD>
+		<DIV id="navigationBar">
+			<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%" HEIGHT="25px" CLASS="birtviewer_navbar">
+				<TR><TD></TD></TR>
+				<TR>
+					<TD WIDTH="6px">&nbsp;</TD>
+					<TD WIDTH="100%" NOWRAP>
+						<B>
+						<%
+							if ( attributeBean.getBookmark( ) != null )
+							{
+						%>
+							<%= 
+								BirtResources.getMessage( "birt.viewer.navbar.prompt.one" )
+							%>&nbsp;
+							<SPAN ID='pageNumber'></SPAN>&nbsp;
+							<%= BirtResources.getMessage( "birt.viewer.navbar.prompt.two" )%>&nbsp;
+							<SPAN ID='totalPage'></SPAN>
+						<%
+							}
+							else
+							{
+						%>
+							<%= BirtResources.getMessage( "birt.viewer.navbar.prompt.one" )%>&nbsp;
+							<SPAN ID='pageNumber'><%= ""+attributeBean.getReportPage( ) %></SPAN>&nbsp;
+							<%= BirtResources.getMessage( "birt.viewer.navbar.prompt.two" )%>&nbsp;
+							<SPAN ID='totalPage'></SPAN>
+						<%
+							}
+						%>
+						</B>
+					</TD>
+					<TD WIDTH="15px">
+						<INPUT TYPE="image" SRC="<%= imagesPath + (attributeBean.isRtl()?"LastPage":"FirstPage") + "_disabled.gif" %>" NAME='first'
+							ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.navbar.first" )%>" 
+							TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.navbar.first" )%>" CLASS="birtviewer_clickable">
+					</TD>
+					<TD WIDTH="2px">&nbsp;</TD>
+					<TD WIDTH="15px">
+						<INPUT TYPE="image" SRC="<%= imagesPath + (attributeBean.isRtl()?"NextPage":"PreviousPage") + "_disabled.gif" %>" NAME='previous' 
+							ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.navbar.previous" )%>" 
+							TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.navbar.previous" )%>" CLASS="birtviewer_clickable">
+					</TD>
+					<TD WIDTH="2px">&nbsp;</TD>
+					<TD WIDTH="15px">
+						<INPUT TYPE="image" SRC="<%= imagesPath + (attributeBean.isRtl()?"PreviousPage":"NextPage") + "_disabled.gif" %>" NAME='next'
+						    ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.navbar.next" )%>" 
+							TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.navbar.next" )%>" CLASS="birtviewer_clickable">
+					</TD>
+					<TD WIDTH="2px">&nbsp;</TD>
+					<TD WIDTH="15px">
+						<INPUT TYPE="image" SRC="<%= imagesPath + (attributeBean.isRtl()?"FirstPage":"LastPage") + "_disabled.gif" %>" NAME='last'
+						    ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.navbar.last" )%>"
+							TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.navbar.last" )%>" CLASS="birtviewer_clickable">
+					</TD>
+					
+					<TD WIDTH="8px">&nbsp;&nbsp;</TD>
+					
+					<TD ALIGN="right" NOWRAP><LABEL for="gotoPage"><b><%= BirtResources.getMessage( "birt.viewer.navbar.lable.goto" )%></b></LABEL></TD>
+					<TD WIDTH="2px">&nbsp;</TD>
+					<TD ALIGN="right" WIDTH="50px">
+						<INPUT ID='gotoPage' TYPE='text' VALUE='' MAXLENGTH="8" SIZE='5' CLASS="birtviewer_navbar_input">
+					</TD>
+					<TD WIDTH="4px">&nbsp;</TD>
+					<TD ALIGN="right" WIDTH="10px">
+						<INPUT TYPE="image" SRC="<%= imagesPath + (attributeBean.isRtl()?"Go_rtl.gif":"Go.gif") %>" NAME='goto'
+						    ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.navbar.goto" )%>" 
+							TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.navbar.goto" )%>" CLASS="birtviewer_clickable">
+					</TD>
+					<TD WIDTH="6px">&nbsp;</TD>
+				</TR>
+			</TABLE>
+		</DIV>
+	</TD>
+</TR>
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/control/ProgressBarFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/control/ProgressBarFragment.jsp
new file mode 100644
index 0000000..64de864
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/control/ProgressBarFragment.jsp
@@ -0,0 +1,55 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment,
+				 org.eclipse.birt.report.resource.BirtResources" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+<%-----------------------------------------------------------------------------
+	Progress bar fragment
+-----------------------------------------------------------------------------%>
+<DIV ID="progressBar" STYLE="display:none;position:absolute;z-index:310">
+	<TABLE WIDTH="250px" CLASS="birtviewer_progressbar" CELLSPACING="10px">
+		<TR>
+			<TD ALIGN="center">
+				<B>
+					<%= BirtResources.getMessage( "birt.viewer.progressbar.prompt" )%>
+				</B>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="center">
+				<IMG SRC="<%= "birt/images/" + (attributeBean.isRtl()?"Loading_rtl":"Loading") + ".gif" %>" ALT="Progress Bar Image"/>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="center">
+				<DIV ID="cancelTaskButton" STYLE="display:none">
+					<TABLE WIDTH="100%">
+						<TR>
+							<TD ALIGN="center">
+								<INPUT TYPE="BUTTON" VALUE="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.cancel" )%>" 					   
+									   TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.cancel" )%>"
+									   CLASS="birtviewer_progressbar_button"/>
+							</TD>
+						</TR>
+					</TABLE>
+				</DIV>
+			</TD>
+		</TR>	
+		<INPUT TYPE="HIDDEN" ID="taskid" VALUE=""/>
+	</TABLE>
+</DIV>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/control/TocFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/control/TocFragment.jsp
new file mode 100644
index 0000000..798c9a5
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/control/TocFragment.jsp
@@ -0,0 +1,24 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	TOC fragment
+-----------------------------------------------------------------------------%>
+<DIV ID="display0" STYLE="display:none;width:250px;position:relative;overflow:auto">
+</DIV>
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/control/ToolbarFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/control/ToolbarFragment.jsp
new file mode 100644
index 0000000..c45cb6e
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/control/ToolbarFragment.jsp
@@ -0,0 +1,98 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment,
+				 org.eclipse.birt.report.resource.BirtResources,
+				 org.eclipse.birt.report.utility.ParameterAccessor,
+				 org.eclipse.birt.report.servlet.ViewerServlet" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Toolbar fragment
+-----------------------------------------------------------------------------%>
+<TR 
+	<%
+		if( attributeBean.isShowToolbar( ) )
+		{
+	%>
+		HEIGHT="20px"
+	<%
+		}
+		else
+		{
+	%>
+		style="display:none"
+	<%
+		}
+	%>	
+>
+	<TD COLSPAN='2'>
+		<DIV ID="toolbar">
+			<TABLE CELLSPACING="1px" CELLPADDING="1px" WIDTH="100%" CLASS="birtviewer_toolbar">
+				<TR><TD></TD></TR>
+				<TR>
+					<TD WIDTH="6px"/>
+					<TD WIDTH="15px">
+					   <INPUT TYPE="image" NAME='toc' SRC="birt/images/Toc.gif"
+					   		TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.toolbar.toc" )%>"
+					   		ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.toolbar.toc" )%>" CLASS="birtviewer_clickable">
+					</TD>
+					<TD WIDTH="6px"/>
+					<TD WIDTH="15px">
+					   <INPUT TYPE="image" NAME='parameter' SRC="birt/images/Report_parameters.gif"
+					   		TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.toolbar.parameter" )%>"	
+					   		ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.toolbar.parameter" )%>" CLASS="birtviewer_clickable">
+					</TD>
+					<TD WIDTH="6px"/>
+					<TD WIDTH="15px">
+					   <INPUT TYPE="image" NAME='export' SRC="birt/images/Export.gif"
+					   		TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.toolbar.export" )%>"
+					   		ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.toolbar.export" )%>" CLASS="birtviewer_clickable">
+					</TD>
+					<TD WIDTH="6px"/>
+					<TD WIDTH="15px">
+					   <INPUT TYPE="image" NAME='exportReport' SRC="birt/images/ExportReport.gif"
+					   		TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.toolbar.exportreport" )%>"
+					   		ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.toolbar.exportreport" )%>" CLASS="birtviewer_clickable">
+					</TD>
+					<TD WIDTH="6px"/>
+					<TD WIDTH="15px">
+					   <INPUT TYPE="image" NAME='print' SRC="birt/images/Print.gif"
+					   		TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.toolbar.print" )%>"
+					   		ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.toolbar.print" )%>" CLASS="birtviewer_clickable">
+					</TD>
+					<%
+					if( ParameterAccessor.isSupportedPrintOnServer )
+					{
+					%>					
+					<TD WIDTH="6px"/>
+					<TD WIDTH="15px">
+					   <INPUT TYPE="image" NAME='printServer' SRC="birt/images/PrintServer.gif"
+					   		TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.toolbar.printserver" )%>"
+					   		ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.toolbar.printserver" )%>" CLASS="birtviewer_clickable">
+					</TD>
+					<%
+					}
+					%>										
+					<TD ALIGN='right'>
+					</TD>
+					<TD WIDTH="6px"/>
+				</TR>
+			</TABLE>
+		</DIV>
+	</TD>
+</TR>
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ConfirmationDialogFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ConfirmationDialogFragment.jsp
new file mode 100644
index 0000000..768eb92
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ConfirmationDialogFragment.jsp
@@ -0,0 +1,41 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment,
+				 org.eclipse.birt.report.resource.ResourceConstants,
+				 org.eclipse.birt.report.resource.BirtResources"  %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Confirmatin dialog fragment
+-----------------------------------------------------------------------------%>
+<TABLE CELLSPACING="2" CELLPADDING="2" CLASS="birtviewer_dialog_body">
+	<TR>
+		<TD VALIGN="bottom" ALIGN="center">
+			<TABLE CELLSPACING="2" CELLPADDING="2">
+				<TR>					
+					<TD>
+						<iframe name="birt_confirmation_iframe" 
+							class="birtviewer_confirmation_dialog_iframe" 
+							frameBorder="0" src="<%= "birt/pages/common/processing.jsp?__rtl=" + Boolean.toString( attributeBean.isRtl() )  %>">
+						</iframe>			
+					</TD>					
+				</TR>
+			</TABLE>
+		</TD>
+	</TR>
+</TABLE>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/DialogContainerFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/DialogContainerFragment.jsp
new file mode 100644
index 0000000..6e44a4d
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/DialogContainerFragment.jsp
@@ -0,0 +1,98 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment,
+				 org.eclipse.birt.report.context.BaseAttributeBean,
+				 org.eclipse.birt.report.IBirtConstants,
+				 org.eclipse.birt.report.utility.ParameterAccessor,
+				 org.eclipse.birt.report.resource.BirtResources" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Dialog container fragment, shared by all standard dialogs.
+-----------------------------------------------------------------------------%>
+<div id="<%= fragment.getClientId( ) %>" class="dialogBorder" style="display:none;position:absolute;z-index:220">
+	<iframe id="<%= fragment.getClientId( ) %>iframe"  name="<%= fragment.getClientId( ) %>iframe" style="z-index:-1; display: none; left:0px; top:0px;
+					 background-color: #ff0000; opacity: .0; filter: alpha(opacity = 0); position: absolute;" frameBorder="0" scrolling="no" src="birt/pages/common/blank.html">
+	</iframe>	
+	<div id="<%= fragment.getClientId( ) %>dialogTitleBar" class="dialogTitleBar dTitleBar">
+		<div class="dTitleTextContainer">
+			<table style="width: 100%; height: 100%;">
+				<tr>
+					<td class="dialogTitleText dTitleText">
+						<%= fragment.getTitle( ) %>
+					</td>
+				</tr>
+			</table>
+		</div>
+		<div class="dialogCloseBtnContainer dCloseBtnContainer">
+			<table style="width: 100%; height: 100%; border-collapse: collapse">
+				<tr>
+					<td>
+						<label class="birtviewer_hidden_label" for="<%= fragment.getClientId( ) %>dialogCloseBtn">
+							<%= 
+								BirtResources.getMessage( "birt.viewer.dialog.close" )
+							%>
+						</label>						
+						<div id="<%= fragment.getClientId( ) %>dialogCloseBtn" class="dialogCloseBtn dCloseBtn"/>
+					</td>
+				</tr>
+			</table>
+		</div>
+	</div>
+	<!-- overflow is set as workaround for Mozilla bug https://bugzilla.mozilla.org/show_bug.cgi?id=167801 -->		
+	<div  class="dialogBackground" style="overflow: auto;"> 
+		<div class="dBackground">
+			<div class="dialogContentContainer" id="<%= fragment.getClientId( ) %>dialogContentContainer">
+				<%
+					if ( fragment != null )
+					{
+						fragment.callBack( request, response );
+					}
+				%>
+			</div>
+			<div class="dialogBtnBarContainer">
+				<div>
+					<div class="dBtnBarDividerTop">
+					</div>
+					<div class="dBtnBarDividerBottom">
+					</div>
+				</div>
+				<div class="dialogBtnBar">
+					<div id="<%= fragment.getClientId( ) %>dialogCustomButtonContainer" class="dialogBtnBarButtonContainer">
+						<div id="<%= fragment.getClientId( ) %>okButton">
+							<div id="<%= fragment.getClientId( ) %>okButtonLeft" class="dialogBtnBarButtonLeftBackgroundEnabled"></div>
+							<div id="<%= fragment.getClientId( ) %>okButtonRight" class="dialogBtnBarButtonRightBackgroundEnabled"></div>
+							<input type="button" value="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.ok" ) %>" 
+								title="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.ok" ) %>"  
+								class="dialogBtnBarButtonText dialogBtnBarButtonEnabled"/>
+						</div>
+						<div class="dialogBtnBarDivider"></div>
+						<div id="<%= fragment.getClientId( ) %>cancelButton">
+							<div class="dialogBtnBarButtonLeftBackgroundEnabled"></div>
+							<div class="dialogBtnBarButtonRightBackgroundEnabled"></div>
+							<input type="button" value="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.cancel" )%>" 
+								title="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.cancel" )%>"  
+								class="dialogBtnBarButtonText dialogBtnBarButtonEnabled"/>
+						</div> 
+					</div>							
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ExceptionDialogFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ExceptionDialogFragment.jsp
new file mode 100644
index 0000000..02a8767
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ExceptionDialogFragment.jsp
@@ -0,0 +1,82 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment,
+				 org.eclipse.birt.report.resource.ResourceConstants,
+				 org.eclipse.birt.report.resource.BirtResources"  %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Exception dialog fragment
+-----------------------------------------------------------------------------%>
+<TABLE CELLSPACING="2" CELLPADDING="2" CLASS="birtviewer_dialog_body">
+	<TR>
+		<TD CLASS="birtviewer_exception_dialog">
+			<TABLE CELLSPACING="2" CELLPADDING="2">
+				<TR>
+					<TD VALIGN="top"><IMG SRC="birt/images/Error.gif" /></TD>
+					
+					<TD>
+					
+						<TABLE CELLSPACING="2" CELLPADDING="4" CLASS="birtviewer_exception_dialog_container" >
+							<TR>
+								<TD>
+								<DIV ID="faultStringContainer" CLASS="birtviewer_exception_dialog_message">
+									<B><SPAN ID='faultstring'></SPAN><B>
+								</DIV>
+								</TD>
+							</TR>
+							<TR>
+								<TD>
+									<DIV ID="showTraceLabel" CLASS="birtviewer_exception_dialog_label">
+										<%= BirtResources.getMessage( ResourceConstants.EXCEPTION_DIALOG_SHOW_STACK_TRACE ) %> 
+									</DIV>																				
+									<DIV ID="hideTraceLabel" CLASS="birtviewer_exception_dialog_label" STYLE="display:none">
+										<%= BirtResources.getMessage( ResourceConstants.EXCEPTION_DIALOG_HIDE_STACK_TRACE ) %> 
+									</DIV>									
+								</TD>
+							</TR>
+							<TR>
+								<TD>
+									<DIV ID="exceptionTraceContainer" STYLE="display:none">
+										<TABLE WIDTH="100%">
+											<TR>
+												<TD>
+													<%= 
+														BirtResources.getMessage( ResourceConstants.EXCEPTION_DIALOG_STACK_TRACE )
+													%><BR>
+												</TD>
+											</TR>
+											<TR>
+												<TD>
+													<DIV CLASS="birtviewer_exception_dialog_detail">
+														<SPAN ID='faultdetail'></SPAN>
+													</DIV>
+												</TD>
+											</TR>											
+										</TABLE>
+									</DIV>
+								</TD>
+							</TR>	
+						</TABLE>
+					
+					</TD>
+					
+				</TR>
+			</TABLE>
+		</TD>
+	</TR>
+</TABLE>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ExportDataDialogFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ExportDataDialogFragment.jsp
new file mode 100644
index 0000000..889d7cd
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ExportDataDialogFragment.jsp
@@ -0,0 +1,116 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment,
+				 org.eclipse.birt.report.resource.BirtResources" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Export data dialog fragment
+-----------------------------------------------------------------------------%>
+<DIV ID="dialog_content">
+	<TABLE CELLSPACING="0" CELLPADDING="0" STYLE="width:100%">
+		<TR>
+			<TD>
+				<TABLE ID="tabs" CELLSPACING="0" CELLPADDING="2">
+					<TR HEIGHT="20px">
+						<TD CLASS="birtviewer_dialog_tab_selected" NOWRAP>
+							<%= 
+								BirtResources.getMessage( "birt.viewer.dialog.exportdata.tab.field" )
+							%>
+						</TD>
+						<TD CLASS="birtviewer_dialog_tab_normal">
+							<%= BirtResources.getMessage( "birt.viewer.dialog.exportdata.tab.filter" )%>
+						</TD>
+					</TR>
+				</TABLE>
+			</TD>
+		</TR>
+		<TR>
+			<TD>
+				<DIV ID="aaacontent">
+					<DIV >
+						<TABLE CELLSPACING="2" CELLPADDING="2" CLASS="birtviewer_dialog_body">
+							<TR HEIGHT="5px"><TD></TD></TR>
+							<TR>
+								<TD>
+									<%= BirtResources.getMessage( "birt.viewer.dialog.exportdata.availablecolumn" )%>
+								</TD>
+								<TD></TD>
+								<TD>
+									<%= BirtResources.getMessage( "birt.viewer.dialog.exportdata.selectedcolumn" )%>
+								</TD>
+							</TR>
+							<TR>
+								<TD VALIGN="top">
+									<TABLE>
+										<TR><TD>
+											<SELECT ID="availableColumnSelect" SIZE="10" CLASS="birtviewer_exportdata_dialog_select">
+											</SELECT>
+										</TD></TR>
+									</TABLE>
+								</TD>
+								<TD VALIGN="top">
+									<TABLE HEIGHT="100%">
+										<TR><TD>&nbsp;</TD></TR>
+										<TR><TD>
+											<TABLE VALIGN="top">
+												<TR><TD>
+													<INPUT TYPE="button" VALUE=">>" CLASS="birtviewer_exportdata_dialog_button">
+												</TD></TR>
+												<TR><TD>
+													<INPUT TYPE="button" VALUE=">" CLASS="birtviewer_exportdata_dialog_button">
+												</TD></TR>
+												<TR><TD>
+													<INPUT TYPE="button" VALUE="<" CLASS="birtviewer_exportdata_dialog_button">
+												</TD></TR>
+												<TR><TD>
+													<INPUT TYPE="button" VALUE="<<" CLASS="birtviewer_exportdata_dialog_button">
+												</TD></TR>
+											</TABLE>
+										</TD></TR>
+									</TABLE>
+								</TD>
+								<TD>
+									<TABLE>
+										<TR><TD>
+											<SELECT ID="selectedColumnSelect" SIZE="10" CLASS="birtviewer_exportdata_dialog_select">
+											</SELECT>
+										</TD></TR>
+									</TABLE>
+								</TD>
+							</TR>
+							<TR HEIGHT="5px"><TD></TD></TR>
+							<TR>
+								<TD COLSPAN="3" STYLE="font-size:7pt">
+									<%= BirtResources.getMessage( "birt.viewer.dialog.exportdata.format" )%>
+								</TD>
+							</TR>
+							<TR HEIGHT="5px"><TD></TD></TR>
+						</TABLE>
+					</DIV>
+					<DIV STYLE="display:none">
+						<IMG NAME="add" SRC="birt/images/AddFilter.gif" TITLE="add" CLASS="birtviewer_clickable">
+						<TABLE ID="ExportCriteriaTable" CELLSPACING="2" CELLPADDING="2" CLASS="birtviewer_dialog_body">
+							<TBODY ID="ExportCriteriaTBODY">
+							</TBODY> 
+						</TABLE>
+					</DIV>
+				</DIV>
+			</TD>
+		</TR>
+	</TABLE>
+</DIV>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ExportReportDialogFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ExportReportDialogFragment.jsp
new file mode 100644
index 0000000..cf43811
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ExportReportDialogFragment.jsp
@@ -0,0 +1,93 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8"%>
+<%@ page session="false" buffer="none"%>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment,
+				 org.eclipse.birt.report.utility.ParameterAccessor,
+				 org.eclipse.birt.report.resource.BirtResources"%>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+
+<%
+	String[] supportedFormats = ParameterAccessor.supportedFormats;
+%>
+<%-----------------------------------------------------------------------------
+	Export report dialog fragment
+-----------------------------------------------------------------------------%>
+<TABLE CELLSPACING="2" CELLPADDING="2" CLASS="birtviewer_dialog_body">
+	<TR HEIGHT="5px"><TD></TD></TR>
+	<TR>
+		<TD>
+		<%=BirtResources.getMessage( "birt.viewer.dialog.export.format" )%>
+		<SELECT	ID="exportFormat" NAME="format" CLASS="birtviewer_exportreport_dialog_select">
+			<%
+				for ( int i = 0; i < supportedFormats.length; i++ )
+				{
+					if ( !ParameterAccessor.PARAM_FORMAT_HTML.equalsIgnoreCase( supportedFormats[i] ) )
+					{
+			%>
+						<OPTION VALUE="<%= supportedFormats[i] %>"><%= ParameterAccessor.getOutputFormatLabel( supportedFormats[i] ) %></OPTION>
+			<%
+					}
+				}
+			%>
+		</SELECT>
+		</TD>
+	</TR>
+	<TR HEIGHT="5px"><TD></TD></TR>
+	<TR>
+		<TD>
+			<DIV ID="exportPageSetting">
+				<TABLE>
+					<TR>
+						<TD>
+							<INPUT TYPE="radio" ID="exportPageAll" NAME="exportPages" CHECKED/><%=BirtResources.getHtmlMessage( "birt.viewer.dialog.page.all" )%>
+						</TD>
+						<TD STYLE="padding-left:5px">	
+							<INPUT TYPE="radio" ID="exportPageCurrent" NAME="exportPages"/><%=BirtResources.getHtmlMessage( "birt.viewer.dialog.page.current" )%>
+						</TD>	
+						<TD STYLE="padding-left:5px">
+							<INPUT TYPE="radio" ID="exportPageRange" NAME="exportPages"/><%=BirtResources.getHtmlMessage( "birt.viewer.dialog.page.range" )%>
+							<INPUT TYPE="text" CLASS="birtviewer_exportreport_dialog_input" ID="exportPageRange_input" DISABLED="true"/>
+						</TD>
+					</TR>		
+				</TABLE>
+			</DIV>
+		</TD>
+	</TR>
+	<TR>
+		<TD>&nbsp;&nbsp;<%=BirtResources.getHtmlMessage( "birt.viewer.dialog.page.range.description" )%></TD>
+	</TR>
+	<TR HEIGHT="5px"><TD><HR/></TD></TR>
+	<TR>
+		<TD>
+			<DIV ID="exportFitSetting">
+				<TABLE>
+					<TR>
+						<TD>
+							<INPUT TYPE="radio" ID="exportFitToAuto" NAME="exportFit" CHECKED/><%=BirtResources.getHtmlMessage( "birt.viewer.dialog.export.pdf.fittoauto" )%>
+						</TD>
+						<TD>
+							<INPUT TYPE="radio" ID="exportFitToActual" NAME="exportFit"/><%=BirtResources.getHtmlMessage( "birt.viewer.dialog.export.pdf.fittoactual" )%>
+						</TD>
+						<TD STYLE="padding-left:5px">	
+							<INPUT TYPE="radio" ID="exportFitToWhole" NAME="exportFit"/><%=BirtResources.getHtmlMessage( "birt.viewer.dialog.export.pdf.fittowhole" )%>
+						</TD>
+					</TR>
+				</TABLE>			
+			</DIV>			
+		</TD>
+	</TR>
+	<TR HEIGHT="5px"><TD></TD></TR>
+</TABLE>
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ParameterDialogFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ParameterDialogFragment.jsp
new file mode 100644
index 0000000..466502f
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/ParameterDialogFragment.jsp
@@ -0,0 +1,73 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="java.util.Iterator,
+				 java.util.Collection,
+ 				 org.eclipse.birt.report.resource.BirtResources,
+ 				 org.eclipse.birt.report.presentation.aggregation.IFragment" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragments" type="java.util.Collection" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Parameter dialog fragment
+-----------------------------------------------------------------------------%>
+<DIV CLASS="birtviewer_parameter_dialog">
+	<TABLE CELLSPACING="2" CELLPADDING="2" ID="parameter_table" CLASS="birtviewer_dialog_body">
+		<TR VALIGN="top">
+			<TD>
+				<TABLE STYLE="font-size:8pt">
+					<TR HEIGHT="5px"><TD></TD></TR>
+					<%
+					if ( fragments.size( ) <= 0 )
+					{
+					%>
+						<TR>
+							<TD><%= BirtResources.getMessage( "birt.viewer.error.noparameter" ) %>
+							</TD>
+						</TR>
+					<%
+					}
+					else
+					{
+					%>
+						<TR><TD COLSPAN="2"><%= BirtResources.getMessage( "birt.viewer.required" ) %></TD></TR>
+					<%
+						if ( fragments != null )
+						{
+							Iterator childIterator = fragments.iterator( );
+							while ( childIterator.hasNext( ) )
+							{
+							    IFragment subfragment = ( IFragment ) childIterator.next( );
+								if ( subfragment != null )
+								{
+									subfragment.service( request, response );
+								}
+							}
+						}
+					}
+					%>
+					<TR HEIGHT="5px"><TD></TD></TR>
+				</TABLE>
+			</TD>
+		</TR>
+		<TR>
+			<TD>
+				<DIV id="birt_hint" style="font-size:12px;color:#000000;display:none;position:absolute; z-index:300;background-color: #F7F7F7; layer-background-color: #0099FF; border: 1px #000000 solid;filter:Alpha(style=0,opacity=80,finishOpacity=100);">
+				</DIV>		
+			</TD>
+		</TR>
+		
+	</TABLE>	
+</DIV>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/PrintReportDialogFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/PrintReportDialogFragment.jsp
new file mode 100644
index 0000000..d65e72b
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/PrintReportDialogFragment.jsp
@@ -0,0 +1,71 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8"%>
+<%@ page session="false" buffer="none"%>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment,
+				 org.eclipse.birt.report.resource.BirtResources"%>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Print report dialog fragment
+-----------------------------------------------------------------------------%>
+<TABLE CELLSPACING="2" CELLPADDING="2" CLASS="birtviewer_dialog_body">
+	<TR HEIGHT="5px"><TD></TD></TR>
+	<TR>
+		<TD>
+			<DIV ID="printFormatSetting">
+				<DIV><%=BirtResources.getMessage( "birt.viewer.dialog.print.format" )%></DIV>
+				<br/>
+				<DIV>
+				<INPUT TYPE="radio" ID="printAsHTML" name="printFormat" CHECKED/><%=BirtResources.getMessage( "birt.viewer.dialog.print.format.html" )%>
+				</DIV>
+				<DIV>
+				<INPUT TYPE="radio" ID="printAsPDF" name="printFormat"/><%=BirtResources.getMessage( "birt.viewer.dialog.print.format.pdf" )%>
+				&nbsp;&nbsp;
+				<SELECT	ID="printFitSetting" CLASS="birtviewer_printreport_dialog_select" DISABLED="true">
+					<option value="0" selected><%=BirtResources.getMessage( "birt.viewer.dialog.export.pdf.fittoauto" )%></option>
+					<option value="1"><%=BirtResources.getMessage( "birt.viewer.dialog.export.pdf.fittoactual" )%></option>
+					<option value="2"><%=BirtResources.getMessage( "birt.viewer.dialog.export.pdf.fittowhole" )%></option>
+				</SELECT>
+				</DIV>
+			</DIV>
+		</TD>
+	</TR>
+	<TR HEIGHT="5px"><TD><HR/></TD></TR>
+	<TR>
+		<TD>
+			<DIV ID="printPageSetting">
+				<TABLE>
+					<TR>
+						<TD>
+							<INPUT TYPE="radio" ID="printPageAll" NAME="printPages" CHECKED/><%=BirtResources.getMessage( "birt.viewer.dialog.page.all" )%>
+						</TD>
+						<TD STYLE="padding-left:5px">	
+							<INPUT TYPE="radio" ID="printPageCurrent" NAME="printPages"/><%=BirtResources.getMessage( "birt.viewer.dialog.page.current" )%>
+						</TD>	
+						<TD STYLE="padding-left:5px">
+							<INPUT TYPE="radio" ID="printPageRange" NAME="printPages"/><%=BirtResources.getMessage( "birt.viewer.dialog.page.range" )%>
+							<INPUT TYPE="text" CLASS="birtviewer_printreport_dialog_input" ID="printPageRange_input" DISABLED="true"/>
+						</TD>
+					</TR>		
+				</TABLE>
+			</DIV>
+		</TD>
+	</TR>
+	<TR>
+		<TD>&nbsp;&nbsp;<%=BirtResources.getMessage( "birt.viewer.dialog.page.range.description" )%></TD>
+	</TR>
+	<TR HEIGHT="5px"><TD></TD></TR>
+</TABLE>
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/PrintReportServerDialogFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/PrintReportServerDialogFragment.jsp
new file mode 100644
index 0000000..1914a54
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/PrintReportServerDialogFragment.jsp
@@ -0,0 +1,324 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8"%>
+<%@ page session="false" buffer="none"%>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment,
+				 org.eclipse.birt.report.IBirtConstants,
+				 java.util.ArrayList,
+				 java.util.Map,
+				 org.eclipse.birt.report.utility.Printer,
+				 org.eclipse.birt.report.utility.DataUtil,
+				 org.eclipse.birt.report.utility.PrintUtility,
+				 org.eclipse.birt.report.utility.ParameterAccessor,
+				 org.eclipse.birt.report.resource.BirtResources"%>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+
+<SCRIPT LANGUAGE="javascript">var index = 0;</SCRIPT>
+<%
+	boolean enable = ParameterAccessor.isSupportedPrintOnServer;
+	if( enable )
+	{
+		String[] supportedFormats = ParameterAccessor.supportedFormats;
+		for( int i=0; i<supportedFormats.length; i++ )
+		{
+			if( IBirtConstants.POSTSCRIPT_RENDER_FORMAT.equalsIgnoreCase( supportedFormats[i] ) )
+			{
+				enable = true;
+				break;
+			}
+		}
+	}
+	
+	if( enable )
+	{
+		ArrayList printers = (ArrayList)PrintUtility.findPrinters();
+		for( int i=0; i<printers.size( ); i++ )
+		{
+			Printer bean = (Printer)printers.get( i );
+			String name = PrintUtility.handleSlash( bean.getName( ) );
+			String status = null; 
+				
+			if ( bean.getStatus() == Printer.STATUS_ACCEPTING_JOBS )
+			{
+				status = BirtResources.getMessage( "birt.viewer.dialog.printserver.status.acceptingjobs" ); // TODO: localized key
+			}
+			else 
+			{
+				status = BirtResources.getMessage( "birt.viewer.dialog.printserver.status.notacceptingjobs" ); // TODO: localized key
+			}
+			status = DataUtil.trimString( status );
+			
+			String model = DataUtil.trimString( bean.getModel( ) );
+			String info = DataUtil.trimString( bean.getInfo( ) );
+			String copies = "" + bean.getCopies( );
+			String mode = "" + bean.getMode( );
+			String duplex = "" + bean.getDuplex( );
+			String mediaSize = DataUtil.trimString( bean.getMediaSize( ) );
+			Map map = bean.getMediaSizeNames( );
+			Object[] mediaSizeNames = map.keySet( ).toArray( );
+%>
+			<SCRIPT LANGUAGE="javascript">
+				var printer = new Printer( );
+				printer.setName( "<%= name %>" );
+				printer.setStatus( "<%= status %>" );
+				printer.setModel( "<%= model %>" );
+				printer.setInfo( "<%= info %>" );
+				
+				// Copies attribute
+				<%
+				if( bean.isCopiesSupported() )
+				{
+				%>
+				printer.setCopiesSupported( true );
+				printer.setCopies( "<%= copies %>" );
+				<%
+				}
+				else
+				{
+				%>	
+				printer.setCopiesSupported( false );
+				<%
+				}
+				%>
+				
+				// Collate attribute
+				<%
+				if( bean.isCollateSupported() )
+				{
+				%>
+				printer.setCollateSupported( true );
+					<%
+					if( bean.isCollate( ) )
+					{
+					%>
+				printer.setCollate( true );
+					<%
+					}
+					else
+					{
+					%>
+				printer.setCollate( false );	
+				<%
+					}
+				}
+				else
+				{
+				%>	
+				printer.setCopiesSupported( false );
+				<%
+				}
+				%>
+				
+				// Mode attribute
+				<%
+				if( bean.isModeSupported( ) )
+				{
+				%>
+				printer.setModeSupported( true );
+				printer.setMode( "<%= mode %>" );
+				<%
+				}
+				else
+				{
+				%>	
+				printer.setModeSupported( false );
+				<%
+				}
+				%>				
+
+				// Duplex attribute
+				<%
+				if( bean.isDuplexSupported( ) )
+				{
+				%>
+				printer.setDuplexSupported( true );
+				printer.setDuplex( "<%= duplex %>" );
+				<%
+				}
+				else
+				{
+				%>	
+				printer.setDuplexSupported( false );
+				<%
+				}
+				%>	
+				
+				// Media attribute
+				<%
+				if( bean.isMediaSupported( ) )
+				{
+				%>
+				printer.setMediaSupported( true );
+				printer.setMediaSize( "<%= mediaSize %>" );
+					<%
+					for( int j=0; j<mediaSizeNames.length; j++ )
+					{
+						String mediaSizeName = DataUtil.trimString( (String)mediaSizeNames[j] );
+						mediaSizeName = ParameterAccessor.htmlEncode( mediaSizeName );
+					%>
+				printer.addMediaSizeName( "<%= mediaSizeName %>" );						
+				<%
+					}
+				}
+				else
+				{
+				%>	
+				printer.setMediaSupported( false );
+				<%
+				}
+				%>	
+				
+				if( !printers[index] )								
+					printers[index] = {};
+					
+				printers[index].name = printer.getName( );
+				printers[index].value = printer;
+				
+				index++;
+				
+			</SCRIPT>
+<%		
+		}
+	}	
+%>
+<%-----------------------------------------------------------------------------
+	Print report on the server dialog fragment
+-----------------------------------------------------------------------------%>
+<TABLE CELLSPACING="2" CELLPADDING="2" CLASS="birtviewer_dialog_body">
+	<TR HEIGHT="5px"><TD></TD></TR>
+	<TR>
+		<TD>
+			<INPUT TYPE="checkbox" ID="print_onserver" <%if( !enable ) { %>DISABLED="true"<%}%>/>
+			<%=BirtResources.getMessage( "birt.viewer.dialog.printserver.onserver" )%>
+		</TD>
+	</TR>
+	<TR HEIGHT="5px"><TD></TD></TR>
+	<TR>
+		<TD>
+			<TABLE WIDTH="100%" ID="printer_general">
+				<TR>
+					<TD WIDTH="80px"><%=BirtResources.getMessage( "birt.viewer.dialog.printserver.printer" )%></TD>
+					<TD>						
+						<SELECT ID="printer" CLASS="birtviewer_printreportserver_dialog_select"></SELECT>
+					</TD>
+				</TR>
+				<TR>
+					<TD><%=BirtResources.getMessage( "birt.viewer.dialog.printserver.status" )%></TD>
+					<TD><LABEL ID="printer_status"></LABEL></TD>
+				</TR>
+				<TR>
+					<TD><%=BirtResources.getMessage( "birt.viewer.dialog.printserver.model" )%></TD>
+					<TD><LABEL ID="printer_model"></LABEL></TD>
+				</TR>
+				<TR>
+					<TD><%=BirtResources.getMessage( "birt.viewer.dialog.printserver.description" )%></TD>
+					<TD><LABEL ID="printer_description"></LABEL></TD>
+				</TR>
+			</TABLE>
+		</TD>
+	</TR>			
+	<TR HEIGHT="5px"><TD><HR/></TD></TR>
+	<TR>
+		<TD><%=BirtResources.getMessage( "birt.viewer.dialog.printserver.settings" )%></TD>
+	</TR>	
+	<TR>
+		<TD>
+			<TABLE WIDTH="100%" ID="printer_config">
+				<TR>
+					<TD WIDTH="100px">
+						<%=BirtResources.getMessage( "birt.viewer.dialog.printserver.settings.copies" )%>
+					</TD>
+					<TD>
+						<INPUT TYPE="text" CLASS="birtviewer_printreportserver_dialog_input_short" ID="printer_copies"/>
+						&nbsp;&nbsp;<%=BirtResources.getMessage( "birt.viewer.dialog.printserver.settings.collate" )%>&nbsp;&nbsp;<INPUT TYPE="checkbox" ID="printer_collate"/>						
+					</TD>
+				</TR>	
+				<TR>
+					<TD>
+						<%=BirtResources.getMessage( "birt.viewer.dialog.printserver.settings.duplex" )%>
+					</TD>
+					<TD>						
+						<INPUT TYPE="radio" ID="printer_duplexSimplex" NAME="printerDuplex"/><%=BirtResources.getMessage( "birt.viewer.dialog.printserver.settings.duplex.simplex" )%>
+						&nbsp;&nbsp;<INPUT TYPE="radio" ID="printer_duplexHorz" NAME="printerDuplex"/><%=BirtResources.getMessage( "birt.viewer.dialog.printserver.settings.duplex.horizontal" )%>
+						&nbsp;&nbsp;<INPUT TYPE="radio" ID="printer_duplexVert" NAME="printerDuplex"/><%=BirtResources.getMessage( "birt.viewer.dialog.printserver.settings.duplex.vertical" )%>			
+					</TD>
+				</TR>
+				<TR>
+					<TD>
+						<%=BirtResources.getMessage( "birt.viewer.dialog.printserver.settings.mode" )%>
+					</TD>
+					<TD>						
+						<INPUT TYPE="radio" ID="printer_modeBW" NAME="printerMode"/><%=BirtResources.getMessage( "birt.viewer.dialog.printserver.settings.mode.bw" )%>
+						&nbsp;&nbsp;<INPUT TYPE="radio" ID="printer_modeColor" NAME="printerMode"/><%=BirtResources.getMessage( "birt.viewer.dialog.printserver.settings.mode.color" )%>			
+					</TD>
+				</TR>
+				<TR>
+					<TD>
+						<%=BirtResources.getMessage( "birt.viewer.dialog.printserver.settings.pagesize" )%>
+					</TD>				
+					<TD>						
+						<SELECT ID="printer_mediasize" CLASS="birtviewer_printreportserver_dialog_select"></SELECT>
+					</TD>
+				</TR>					
+			</TABLE>
+		</TD>
+	</TR>	
+	<TR HEIGHT="5px"><TD><HR/></TD></TR>
+	<TR>
+		<TD> 
+			<DIV ID="printServerPageSetting">
+				<TABLE>
+					<TR>
+						<TD><%=BirtResources.getMessage( "birt.viewer.dialog.printserver.settings.print" )%></TD>
+						<TD STYLE="padding-left:5px">
+							<INPUT TYPE="radio" ID="printServerPageAll" NAME="printServerPages" CHECKED/><%=BirtResources.getMessage( "birt.viewer.dialog.page.all" )%>
+						</TD>
+						<TD STYLE="padding-left:5px">	
+							<INPUT TYPE="radio" ID="printServerPageCurrent" NAME="printServerPages"/><%=BirtResources.getMessage( "birt.viewer.dialog.page.current" )%>
+						</TD>
+						<TD STYLE="padding-left:5px">	
+							<INPUT TYPE="radio" ID="printServerPageRange" NAME="printServerPages"/><%=BirtResources.getMessage( "birt.viewer.dialog.page.range" )%>
+							<INPUT TYPE="text" CLASS="birtviewer_printreportserver_dialog_input" ID="printServerPageRange_input"/>
+						</TD>
+					</TR>
+				</TABLE>			
+			</DIV>						
+		</TD>
+	</TR>	
+	<TR>
+		<TD>&nbsp;&nbsp;<%=BirtResources.getMessage( "birt.viewer.dialog.page.range.description" )%></TD>
+	</TR>	
+	<TR HEIGHT="5px"><TD><HR/></TD></TR>
+	<TR>
+		<TD>
+			<DIV ID="printServerFitSetting">
+				<TABLE>
+					<TR>
+						<TD>
+							<INPUT TYPE="radio" ID="printServerFitToAuto" NAME="printServerFit" CHECKED/><%=BirtResources.getHtmlMessage( "birt.viewer.dialog.export.pdf.fittoauto" )%>
+						</TD>
+						<TD>
+							<INPUT TYPE="radio" ID="printServerFitToActual" NAME="printServerFit"/><%=BirtResources.getMessage( "birt.viewer.dialog.export.pdf.fittoactual" )%>
+						</TD>
+						<TD STYLE="padding-left:5px">							
+							<INPUT TYPE="radio" ID="printServerFitToWhole" NAME="printServerFit"/><%=BirtResources.getMessage( "birt.viewer.dialog.export.pdf.fittowhole" )%>
+						</TD>
+					<TR>
+				</TABLE>			
+			</DIV>			
+		</TD>
+	</TR>
+	<TR HEIGHT="5px"><TD></TD></TR>	
+</TABLE>
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/SimpleExportDataDialogFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/SimpleExportDataDialogFragment.jsp
new file mode 100644
index 0000000..c5401c1
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/dialog/SimpleExportDataDialogFragment.jsp
@@ -0,0 +1,252 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment,
+				 org.eclipse.birt.report.utility.ParameterAccessor,
+				 org.eclipse.birt.report.context.BaseAttributeBean,
+				 org.eclipse.birt.report.engine.api.DataExtractionFormatInfo,
+				 org.eclipse.birt.report.resource.BirtResources" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+
+<%
+	DataExtractionFormatInfo[] dataExtractInfos = ParameterAccessor.supportedDataExtractions;
+%>
+<%-----------------------------------------------------------------------------
+	Export data dialog fragment
+-----------------------------------------------------------------------------%>
+<TABLE ID="simpleExportDialogBody" CELLSPACING="2" CELLPADDING="2" CLASS="birtviewer_dialog_body">
+	<TR HEIGHT="5px"><TD></TD></TR>
+	<TR>
+		<TD>
+			<LABEL FOR="resultsets"><%= BirtResources.getMessage( "birt.viewer.dialog.exportdata.resultsets" )%>
+			</LABEL>
+		</TD>
+	</TR>
+	<TR>
+		<TD COLSPAN="4">
+			<SELECT ID="resultsets" CLASS="birtviewer_exportdata_dialog_single_select">
+			</SELECT>
+		</TD>
+	</TR>
+	<TR HEIGHT="5px"><TD></TD></TR>
+	<TR>
+		<TD VALIGN="top">
+			<TABLE STYLE="font-size:8pt;">
+				<TR><TD>
+					<LABEL FOR="availableColumnSelect"><%= BirtResources.getMessage( "birt.viewer.dialog.exportdata.availablecolumn" )%></LABEL>
+				</TD></TR>
+				<TR><TD>
+					<SELECT ID="availableColumnSelect" MULTIPLE="true" SIZE="10" CLASS="birtviewer_exportdata_dialog_select">
+					</SELECT>
+				</TD></TR>
+			</TABLE>
+		</TD>
+		<TD VALIGN="middle">
+			<TABLE HEIGHT="100%">
+				<TR>
+					<TD>
+						<TABLE VALIGN="middle">
+							<TR><TD>
+								<INPUT TYPE="image" NAME="Addall" 
+									<%
+									if( !attributeBean.isRtl())
+									{
+									%>
+									SRC="birt/images/AddAll.gif"
+									<%
+									}
+									else
+									{
+									%>
+									SRC="birt/images/AddAll_rtl.gif"
+									<%
+									}
+									%>		
+									ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.exportdata.addall" )%>" 
+									TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.exportdata.addall" )%>" 
+									CLASS="birtviewer_exportdata_dialog_button">
+							</TD></TR>
+							<TR height="2px"><TD></TD></TR>
+							<TR><TD>
+								<INPUT TYPE="image" NAME="Add"
+									<%
+									if( !attributeBean.isRtl())
+									{
+									%>
+									SRC="birt/images/Add.gif"
+									<%
+									}
+									else
+									{
+									%>
+									SRC="birt/images/Add_rtl.gif"
+									<%
+									}
+									%>									 
+									ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.exportdata.add" )%>" 
+									TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.exportdata.add" )%>" 								
+									CLASS="birtviewer_exportdata_dialog_button">
+							</TD></TR>
+							<TR height="2px"><TD></TD></TR>
+							<TR><TD>
+								<INPUT TYPE="image" NAME="Remove"
+									<%
+									if( !attributeBean.isRtl())
+									{
+									%>
+									SRC="birt/images/Remove_disabled.gif"
+									<%
+									}
+									else
+									{
+									%>
+									SRC="birt/images/Remove_disabled_rtl.gif"
+									<%
+									}
+									%>									  
+									ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.exportdata.remove" )%>" 
+									TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.exportdata.remove" )%>" 								
+									CLASS="birtviewer_exportdata_dialog_button">
+							</TD></TR>
+							<TR height="2px"><TD></TD></TR>
+							<TR><TD>
+								<INPUT TYPE="image" NAME="Removeall" 
+									<%
+									if( !attributeBean.isRtl())
+									{
+									%>
+									SRC="birt/images/RemoveAll_disabled.gif"
+									<%
+									}
+									else
+									{
+									%>
+									SRC="birt/images/RemoveAll_disabled_rtl.gif"
+									<%
+									}
+									%>									  
+									ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.exportdata.removeall" )%>" 
+									TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.exportdata.removeall" )%>" 								
+									CLASS="birtviewer_exportdata_dialog_button">
+							</TD></TR>
+						</TABLE>
+					</TD>
+				</TR>
+			</TABLE>
+		</TD>
+		<TD VALIGN="middle">
+			<TABLE HEIGHT="100%">
+				<TR>
+					<TD>
+						<TABLE VALIGN="middle">
+							<TR><TD>
+								<INPUT TYPE="image" NAME="Up" SRC="birt/images/Up_disabled.gif" 
+									ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.exportdata.up" )%>" 
+									TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.exportdata.up" )%>" 
+									CLASS="birtviewer_exportdata_dialog_button">
+							</TD></TR>
+							<TR height="2px"><TD></TD></TR>
+							<TR><TD>
+								<INPUT TYPE="image" NAME="Down" SRC="birt/images/Down_disabled.gif" 
+									ALT="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.exportdata.down" )%>" 
+									TITLE="<%= BirtResources.getHtmlMessage( "birt.viewer.dialog.exportdata.down" )%>" 								
+									CLASS="birtviewer_exportdata_dialog_button">
+							</TD></TR>							
+						</TABLE>
+					</TD>
+				</TR>
+			</TABLE>
+		</TD>
+		<TD >
+			<TABLE STYLE="font-size:8pt;">
+				<TR><TD>
+					<LABEL FOR="selectedColumnSelect"><%= BirtResources.getMessage( "birt.viewer.dialog.exportdata.selectedcolumn" )%></LABEL>
+				</TD></TR>
+				<TR><TD>
+					<SELECT ID="selectedColumnSelect" MULTIPLE="true" SIZE="10" CLASS="birtviewer_exportdata_dialog_select">
+					</SELECT>
+				</TD></TR>
+			</TABLE>
+		</TD>
+	</TR>
+	<TR HEIGHT="5px"><TD></TD></TR>
+	<TR>
+		<TD COLSPAN="4">			
+			<DIV>
+				<%= BirtResources.getMessage( "birt.viewer.dialog.exportdata.extension" )%> 
+				<SELECT ID="exportDataExtension" CLASS="birtviewer_exportdata_dialog_select">
+				<%
+					for ( int i = 0; i < dataExtractInfos.length; i++ )
+					{
+						DataExtractionFormatInfo extensionInfo  = dataExtractInfos[i];
+						if( extensionInfo.getId() == null 
+							|| extensionInfo.getFormat() == null 
+							|| ( extensionInfo.isHidden() != null && extensionInfo.isHidden().booleanValue() ) )
+							continue;
+						
+						String extensionName = extensionInfo.getName( );
+						if( extensionName == null )
+							extensionName = "";
+				%>
+						<OPTION VALUE="<%= extensionInfo.getId() %>"><%= extensionName %>(*.<%= extensionInfo.getFormat() %>)</OPTION>
+				<%
+					}
+				%>
+				</SELECT>
+			</DIV>
+			<BR/>
+			<DIV ID="exportDataEncodingSetting">
+				<TABLE>
+					<TR>
+						<TD><%= BirtResources.getMessage( "birt.viewer.dialog.exportdata.encoding" )%></TD>
+						<TD><INPUT TYPE="radio" NAME="exportDataEncoding" ID="exportDataEncoding_UTF8" CHECKED value="UTF-8">UTF-8</TD>
+					</TR>
+					<TR>
+						<TD></TD>
+						<TD>
+							<INPUT TYPE="radio" NAME="exportDataEncoding" ID="exportDataEncoding_other"><%= BirtResources.getMessage( "birt.viewer.dialog.exportdata.encoding.other" )%>
+							<INPUT TYPE="text" NAME="exportDataOtherEncoding" ID="exportDataOtherEncoding_input" CLASS="birtviewer_exportdata_dialog_input" DISABLED="true"><%= BirtResources.getMessage( "birt.viewer.dialog.exportdata.encoding.comment" )%>
+						</TD>
+					</TR>
+				</TABLE>				
+			</DIV>
+			<BR/>
+			<DIV>
+				<%= BirtResources.getMessage( "birt.viewer.dialog.exportdata.separator" )%> 
+				<SELECT ID="exportDataCSVSeparator" CLASS="birtviewer_exportdata_dialog_select">
+					<OPTION VALUE="0" SELECTED><%= BirtResources.getMessage( "birt.viewer.sep.0" )%></OPTION>
+					<OPTION VALUE="1"><%= BirtResources.getMessage( "birt.viewer.sep.1" )%></OPTION>
+					<OPTION VALUE="2"><%= BirtResources.getMessage( "birt.viewer.sep.2" )%></OPTION>
+					<OPTION VALUE="3"><%= BirtResources.getMessage( "birt.viewer.sep.3" )%></OPTION>
+					<OPTION VALUE="4"><%= BirtResources.getMessage( "birt.viewer.sep.4" )%></OPTION>
+				</SELECT>
+			</DIV>
+			<BR/>
+			<DIV>
+				<TABLE cellpadding="0" cellspacing="0">
+					<TR valign="top">
+						<TD><INPUT TYPE="checkbox" ID="exportColumnDataType"></TD>
+						<TD style="padding-top:2px;" nowrap="nowrap"><%= BirtResources.getMessage( "birt.viewer.dialog.exportdata.datatype" )%></TD>
+						<TD style="padding-left:20px;" valign="top"><INPUT TYPE="checkbox" ID="exportColumnLocaleNeutral"></TD>
+						<TD style="padding-top:2px;" valign="top"><%= BirtResources.getMessage( "birt.viewer.dialog.exportdata.localeneutral" )%></TD>
+					</TR>
+				</TABLE>
+			</DIV>
+		</TD>
+	</TR>
+	<TR HEIGHT="5px"><TD></TD></TR>
+</TABLE>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/layout/DocumentFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/DocumentFragment.jsp
new file mode 100644
index 0000000..e72fe7c
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/DocumentFragment.jsp
@@ -0,0 +1,42 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+ 
+<%-----------------------------------------------------------------------------
+	Report content fragment
+-----------------------------------------------------------------------------%>
+<TR VALIGN='top'>
+	<TD id="documentView">
+		<TABLE cellpadding="0" cellspacing="0" border="0">
+		<TR>
+			<TD style="vertical-align: top;">
+				<%
+					if ( fragment != null )
+					{
+						fragment.callBack( request, response );
+					}
+				%>
+			</TD>
+			<TD style="vertical-align: top;">
+				<DIV ID="Document" CLASS="birtviewer_document_fragment">
+				</DIV>
+			</TD>
+		</TR>
+		</TABLE>
+	</TD>
+</TR>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/layout/FramesetFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/FramesetFragment.jsp
new file mode 100644
index 0000000..98e07cd
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/FramesetFragment.jsp
@@ -0,0 +1,260 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004-2008 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment,
+				 org.eclipse.birt.report.context.BaseAttributeBean,
+				 org.eclipse.birt.report.resource.ResourceConstants,
+				 org.eclipse.birt.report.resource.BirtResources,
+				 org.eclipse.birt.report.utility.ParameterAccessor" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+
+<%
+	// base href can be defined in config file for deployment.
+	String baseHref = request.getScheme( ) + "://" + request.getServerName( ) + ":" + request.getServerPort( );
+	if( !attributeBean.isDesigner( ) )
+	{
+		String baseURL = ParameterAccessor.getBaseURL( );
+		if( baseURL != null )
+			baseHref = baseURL;
+	}
+	baseHref += request.getContextPath( ) + fragment.getJSPRootPath( );
+%>
+
+<%-----------------------------------------------------------------------------
+	Viewer root fragment
+-----------------------------------------------------------------------------%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<HTML>
+	<HEAD>
+		<TITLE><%= attributeBean.getReportTitle( ) %></TITLE>
+		<BASE href="<%= baseHref %>" >
+		
+		<!-- Mimics Internet Explorer 7, it just works on IE8. -->
+		<META HTTP-EQUIV="X-UA-Compatible" CONTENT="IE=EmulateIE7">
+		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+		<LINK REL="stylesheet" HREF="birt/styles/style.css" TYPE="text/css">
+		<%
+		if( attributeBean.isRtl() )
+		{
+		%>
+		<LINK REL="stylesheet" HREF="birt/styles/dialogbase_rtl.css" MEDIA="screen" TYPE="text/css"/>
+		<%
+		}
+		else
+		{
+		%>
+		<LINK REL="stylesheet" HREF="birt/styles/dialogbase.css" MEDIA="screen" TYPE="text/css"/>	
+		<%
+		}
+		%>
+		<script type="text/javascript">			
+			<%
+			if( request.getAttribute("SoapURL") != null )
+			{
+			%>
+			var soapURL = "<%= (String)request.getAttribute("SoapURL")%>";
+			<%
+			}
+			else
+			{
+			%>
+			var soapURL = document.location.href;
+			<%
+			}
+			%>
+			var rtl = <%= attributeBean.isRtl( ) %>;
+		</script>
+		
+		<script src="birt/ajax/utility/Debug.js" type="text/javascript"></script>
+		<script src="birt/ajax/lib/prototype.js" type="text/javascript"></script>
+		
+		<!-- Mask -->
+		<script src="birt/ajax/core/Mask.js" type="text/javascript"></script>
+		<script src="birt/ajax/utility/BrowserUtility.js" type="text/javascript"></script>
+		
+		<!-- Drag and Drop -->
+		<script src="birt/ajax/core/BirtDndManager.js" type="text/javascript"></script>
+		
+		<script src="birt/ajax/utility/Constants.js" type="text/javascript"></script>
+		<script src="birt/ajax/utility/BirtUtility.js" type="text/javascript"></script>
+		
+		<script src="birt/ajax/core/BirtEventDispatcher.js" type="text/javascript"></script>
+		<script src="birt/ajax/core/BirtEvent.js" type="text/javascript"></script>
+		
+		<script src="birt/ajax/mh/BirtBaseResponseHandler.js" type="text/javascript"></script>
+		<script src="birt/ajax/mh/BirtGetUpdatedObjectsResponseHandler.js" type="text/javascript"></script>
+
+		<script src="birt/ajax/ui/app/AbstractUIComponent.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/app/AbstractBaseToolbar.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/app/BirtToolbar.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/app/BirtNavigationBar.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/app/AbstractBaseToc.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/app/BirtToc.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/app/BirtProgressBar.js" type="text/javascript"></script>
+
+ 		<script src="birt/ajax/ui/report/AbstractReportComponent.js" type="text/javascript"></script>
+ 		<script src="birt/ajax/ui/report/AbstractBaseReportDocument.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/report/BirtReportDocument.js" type="text/javascript"></script>
+
+		<script src="birt/ajax/ui/dialog/AbstractBaseDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/BirtTabedDialogBase.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/AbstractParameterDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/BirtParameterDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/BirtSimpleExportDataDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/BirtExportReportDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/BirtPrintReportDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/BirtPrintReportServerDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/AbstractExceptionDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/BirtExceptionDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/BirtConfirmationDialog.js" type="text/javascript"></script>
+		
+		<script src="birt/ajax/utility/BirtPosition.js" type="text/javascript"></script>
+		<script src="birt/ajax/utility/Printer.js" type="text/javascript"></script>
+
+		<script src="birt/ajax/core/BirtCommunicationManager.js" type="text/javascript"></script>
+		<script src="birt/ajax/core/BirtSoapRequest.js" type="text/javascript"></script>
+		<script src="birt/ajax/core/BirtSoapResponse.js" type="text/javascript"></script>
+		
+	</HEAD>
+	
+	<BODY 
+		CLASS="BirtViewer_Body"  
+		ONLOAD="javascript:init( );" 
+		SCROLL="no" 
+		LEFTMARGIN='0px' 
+		STYLE='overflow:hidden; direction: <%= attributeBean.isRtl()?"rtl":"ltr" %>'
+		>
+		<!-- Header section -->
+		<TABLE ID='layout' CELLSPACING='0' CELLPADDING='0' STYLE='width:100%;height:100%'>
+			<%
+				if( attributeBean.isShowTitle( ) )
+				{
+			%>
+			<TR CLASS='body_caption_top'>
+				<TD COLSPAN='2'></TD>
+			</TR>
+			<TR CLASS='body_caption' VALIGN='bottom'>
+				<TD COLSPAN='2'>
+					<TABLE BORDER=0 CELLSPACING="0" CELLPADDING="1px" WIDTH="100%">
+						<TR>
+							<TD WIDTH="3px"/>
+							<TD>
+								<B><%= attributeBean.getReportTitle( ) %>
+								</B>
+							</TD>
+							<TD ALIGN='right'>
+							</TD>
+							<TD WIDTH="3px"/>
+						</TR>
+					</TABLE>
+				</TD>
+			</TR>
+			<%
+				}
+			%>
+			
+			<%
+				if ( fragment != null )
+				{
+					fragment.callBack( request, response );
+				}
+			%>
+		</TABLE>
+	</BODY>
+
+	<%@include file="../common/Locale.jsp" %>	
+	<%@include file="../common/Attributes.jsp" %>	
+
+	<script type="text/javascript">
+	// <![CDATA[
+		var hasSVGSupport = false;
+		var useVBMethod = false;
+		if ( navigator.mimeTypes != null && navigator.mimeTypes.length > 0 )
+		{
+		    if ( navigator.mimeTypes["image/svg+xml"] != null )
+		    {
+		        hasSVGSupport = true;
+		    }
+		}
+		else
+		{
+		    useVBMethod = true;
+		}
+		
+	// ]]>
+	</script>
+	
+	<script type="text/vbscript">
+		On Error Resume Next
+		If useVBMethod = true Then
+		    hasSVGSupport = IsObject(CreateObject("Adobe.SVGCtl"))
+		End If
+	</script>
+
+	<script type="text/javascript">
+		var Mask =  new Mask(false); //create mask using "div"
+		var BrowserUtility = new BrowserUtility();
+		DragDrop = new BirtDndManager();
+
+		var birtToolbar = new BirtToolbar( 'toolbar' );
+		var navigationBar = new BirtNavigationBar( 'navigationBar' );
+		var birtToc = new BirtToc( 'display0' );
+		var birtProgressBar = new BirtProgressBar( 'progressBar' );
+		var birtReportDocument = new BirtReportDocument( "Document", birtToc );
+
+		var birtParameterDialog = new BirtParameterDialog( 'parameterDialog', 'frameset' );
+		var birtSimpleExportDataDialog = new BirtSimpleExportDataDialog( 'simpleExportDataDialog' );
+		var birtExportReportDialog = new BirtExportReportDialog( 'exportReportDialog' );
+		var birtPrintReportDialog = new BirtPrintReportDialog( 'printReportDialog' );
+		var birtPrintReportServerDialog = new BirtPrintReportServerDialog( 'printReportServerDialog' );
+		var birtExceptionDialog = new BirtExceptionDialog( 'exceptionDialog' );
+		var birtConfirmationDialog = new BirtConfirmationDialog( 'confirmationDialog' );
+
+		// register the base elements to the mask, so their input
+		// will be disabled when a dialog is popped up.
+		Mask.setBaseElements( new Array( birtToolbar.__instance, navigationBar.__instance, birtReportDocument.__instance) );
+		
+		function init()
+		{
+			soapURL = birtUtility.initSessionId( soapURL );
+			
+		<%
+		if ( attributeBean.isShowParameterPage( ) )
+		{
+		%>
+			birtParameterDialog.__cb_bind( );
+		<%
+		}
+		else
+		{
+		%>
+			soapURL = birtUtility.initDPI( soapURL );
+			navigationBar.__init_page( );
+		<%
+		}
+		%>
+		}
+		
+		// When link to internal bookmark, use javascript to fire an Ajax request
+		function catchBookmark( bookmark )
+		{	
+			birtEventDispatcher.broadcastEvent( birtEvent.__E_GETPAGE, { name : "__bookmark", value : bookmark } );		
+		}
+		
+	</script>
+</HTML>
+
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/layout/ParameterFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/ParameterFragment.jsp
new file mode 100644
index 0000000..0527427
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/ParameterFragment.jsp
@@ -0,0 +1,34 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+ 
+<%-----------------------------------------------------------------------------
+	Parameter Dialog fragment
+-----------------------------------------------------------------------------%>
+<TR VALIGN='top'>
+	<TD>
+		<DIV ID="Document" CLASS="birtviewer_document_fragment">
+		</DIV>		
+		<%
+			if ( fragment != null )
+			{
+				fragment.callBack( request, response );
+			}
+		%>
+	</TD>
+</TR>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/layout/ReportContentFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/ReportContentFragment.jsp
new file mode 100644
index 0000000..86e4397
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/ReportContentFragment.jsp
@@ -0,0 +1,32 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+ 
+<%-----------------------------------------------------------------------------
+	Report content fragment
+-----------------------------------------------------------------------------%>
+<TD ID='content' STYLE='width:100%;vertical-align:top'>
+	<TABLE CELLSPACING="0" CELLPADDING="0" STYLE="height:100%; width:100%">
+	<%
+		if ( fragment != null )
+		{
+			fragment.callBack( request, response );
+		}
+	%>
+	</TABLE>
+</TD>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/layout/ReportDialogFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/ReportDialogFragment.jsp
new file mode 100644
index 0000000..3053700
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/ReportDialogFragment.jsp
@@ -0,0 +1,32 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Report dialog fragment
+-----------------------------------------------------------------------------%>
+<TR VALIGN='top'>
+<TD ID='reportdialog' STYLE='width:0%;vertical-align:top'>
+<%
+	if ( fragment != null )
+	{
+		fragment.callBack( request, response );
+	}
+%>
+</TD>
+</TR>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/layout/ReportFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/ReportFragment.jsp
new file mode 100644
index 0000000..3ecc9c6
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/ReportFragment.jsp
@@ -0,0 +1,30 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Report fragment
+-----------------------------------------------------------------------------%>
+<TR>
+<%
+	if ( fragment != null )
+	{
+		fragment.callBack( request, response );
+	}
+%>
+</TR>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/layout/RequesterFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/RequesterFragment.jsp
new file mode 100644
index 0000000..4595ede
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/RequesterFragment.jsp
@@ -0,0 +1,205 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004-2008 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.resource.BirtResources,
+				 org.eclipse.birt.report.context.BaseAttributeBean,
+				 org.eclipse.birt.report.utility.ParameterAccessor,
+ 				 org.eclipse.birt.report.presentation.aggregation.IFragment" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+
+<%
+	// base href can be defined in config file for deployment.
+	String baseHref = request.getScheme( ) + "://" + request.getServerName( ) + ":" + request.getServerPort( );
+	if( !attributeBean.isDesigner( ) )
+	{
+		String baseURL = ParameterAccessor.getBaseURL( );
+		if( baseURL != null )
+			baseHref = baseURL;
+	}
+	baseHref += request.getContextPath( ) + fragment.getJSPRootPath( );
+%>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<HTML>
+	<HEAD>
+		<TITLE>PARAMETER SELECTION PAGE</TITLE>
+		<BASE href="<%= baseHref %>" >
+		
+		<!-- Mimics Internet Explorer 7, it just works on IE8. -->
+		<META HTTP-EQUIV="X-UA-Compatible" CONTENT="IE=EmulateIE7">
+		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+		<LINK REL="stylesheet" HREF="birt/styles/style.css" TYPE="text/css">
+		<%
+		if( attributeBean.isRtl() )
+		{
+		%>
+		<LINK REL="stylesheet" HREF="birt/styles/dialogbase_rtl.css" MEDIA="screen" TYPE="text/css"/>
+		<%
+		}
+		else
+		{
+		%>
+		<LINK REL="stylesheet" HREF="birt/styles/dialogbase.css" MEDIA="screen" TYPE="text/css"/>	
+		<%
+		}
+		%>			
+
+		<script type="text/javascript">
+			<%
+			if( request.getAttribute("SoapURL") != null )
+			{
+			%>
+			var soapURL = "<%= (String)request.getAttribute("SoapURL")%>";
+			<%
+			}
+			else
+			{
+			%>
+			var soapURL = document.location.href;
+			<%
+			}
+			%>
+			var rtl = <%= attributeBean.isRtl( ) %>;
+		</script>
+		
+		<SCRIPT SRC="birt/ajax/utility/Debug.js" type="text/javascript"></script>
+		<script src="birt/ajax/lib/prototype.js" type="text/javascript"></script>
+		
+		<!-- Mask -->
+		<script src="birt/ajax/core/Mask.js" type="text/javascript"></script>
+		<script src="birt/ajax/utility/BrowserUtility.js" type="text/javascript"></script>
+		
+		<!-- Drag and Drop -->
+		<script src="birt/ajax/core/BirtDndManager.js" type="text/javascript"></script>
+		
+		<script src="birt/ajax/utility/Constants.js" type="text/javascript"></script>
+		<script src="birt/ajax/utility/BirtUtility.js" type="text/javascript"></script>
+		
+		<script src="birt/ajax/core/BirtEventDispatcher.js" type="text/javascript"></script>
+		<script src="birt/ajax/core/BirtEvent.js" type="text/javascript"></script>
+		
+		<script src="birt/ajax/mh/BirtBaseResponseHandler.js" type="text/javascript"></script>
+		<script src="birt/ajax/mh/BirtGetUpdatedObjectsResponseHandler.js" type="text/javascript"></script>
+
+		<script src="birt/ajax/ui/app/AbstractUIComponent.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/app/BirtProgressBar.js" type="text/javascript"></script>
+
+ 		<script src="birt/ajax/ui/report/AbstractReportComponent.js" type="text/javascript"></script>
+ 		<script src="birt/ajax/ui/report/AbstractBaseReportDocument.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/report/BirtReportDocument.js" type="text/javascript"></script>
+
+		<script src="birt/ajax/ui/dialog/AbstractBaseDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/AbstractParameterDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/BirtParameterDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/AbstractExceptionDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/BirtExceptionDialog.js" type="text/javascript"></script>
+		
+		<SCRIPT SRC="birt/ajax/utility/BirtPosition.js" type="text/javascript"></script>
+
+		<SCRIPT SRC="birt/ajax/core/BirtCommunicationManager.js" type="text/javascript"></script>
+		<SCRIPT SRC="birt/ajax/core/BirtSoapRequest.js" type="text/javascript"></script>
+		<SCRIPT SRC="birt/ajax/core/BirtSoapResponse.js" type="text/javascript"></script>
+				
+	</HEAD>
+
+	<BODY CLASS="BirtViewer_Body" onload="Javascript:init()" SCROLL="no" LEFTMARGIN='0px' STYLE='overflow:hidden'>
+		<%
+		if( attributeBean.isRtl() )
+		{
+		%>
+		<DIV DIR="rtl">
+		<%
+		}
+		%>
+		<!-- Header section -->
+		<TABLE ID='layout' CELLSPACING='0' CELLPADDING='0' STYLE='width:100%;height:100%'>
+		<%
+			if ( fragment != null )
+			{
+				fragment.callBack( request, response );
+			}
+		%>
+		</TABLE>
+		<%
+		if( attributeBean.isRtl() )
+		{
+		%>
+		</DIV>
+		<%
+		}
+		%>
+	</BODY>
+	
+	<%@include file="../common/Locale.jsp" %>	
+	<%@include file="../common/Attributes.jsp" %>	
+	
+	<script type="text/javascript">
+	// <![CDATA[
+		var hasSVGSupport = false;
+		var useVBMethod = false;
+		if ( navigator.mimeTypes != null && navigator.mimeTypes.length > 0 )
+		{
+		    if ( navigator.mimeTypes["image/svg+xml"] != null )
+		    {
+		        hasSVGSupport = true;
+		    }
+		}
+		else
+		{
+		    useVBMethod = true;
+		}
+		
+	// ]]>
+	</script>
+	
+	<SCRIPT TYPE="text/vbscript">
+		On Error Resume Next
+		If useVBMethod = true Then
+		    hasSVGSupport = IsObject(CreateObject("Adobe.SVGCtl"))
+		End If
+	</SCRIPT>
+
+	<SCRIPT TYPE="text/javascript">		
+		var Mask =  new Mask( false );
+		var BrowserUtility = new BrowserUtility( );
+		var DragDrop = new BirtDndManager( );
+
+		var birtProgressBar = new BirtProgressBar( 'progressBar' );
+		var birtReportDocument = new BirtReportDocument( "Document" );
+
+		var parameterMode;
+		if ( Constants.request.servletPath == Constants.SERVLET_PARAMETER )
+		{
+			parameterMode = Constants.SERVLET_PARAMETER;
+		}
+		else
+		{
+			parameterMode = Constants.SERVLET_PREVIEW;
+		}
+		
+		var birtParameterDialog = new BirtParameterDialog( 'parameterDialog', parameterMode );
+		var birtExceptionDialog = new BirtExceptionDialog( 'exceptionDialog' );
+		
+		function init( )
+		{					
+			soapURL = birtUtility.initSessionId( soapURL );
+			birtParameterDialog.__cb_bind( );
+		}
+		
+	</SCRIPT>
+</HTML>
+
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/layout/RunFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/RunFragment.jsp
new file mode 100644
index 0000000..c24bfd4
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/RunFragment.jsp
@@ -0,0 +1,212 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004-2008 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment,
+				 org.eclipse.birt.report.context.BaseAttributeBean,
+				 org.eclipse.birt.report.resource.ResourceConstants,
+				 org.eclipse.birt.report.resource.BirtResources,
+				 org.eclipse.birt.report.utility.ParameterAccessor" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+
+<%
+	// base href can be defined in config file for deployment.
+	String baseHref = request.getScheme( ) + "://" + request.getServerName( ) + ":" + request.getServerPort( );
+	if( !attributeBean.isDesigner( ) )
+	{
+		String baseURL = ParameterAccessor.getBaseURL( );
+		if( baseURL != null )
+			baseHref = baseURL;
+	}
+	baseHref += request.getContextPath( ) + fragment.getJSPRootPath( );
+%>
+
+<%-----------------------------------------------------------------------------
+	Viewer run fragment
+-----------------------------------------------------------------------------%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+<HTML>
+	<HEAD>
+		<TITLE><%= attributeBean.getReportTitle( ) %></TITLE>
+		<BASE href="<%= baseHref %>" >
+		
+		<!-- Mimics Internet Explorer 7, it just works on IE8. -->
+		<META HTTP-EQUIV="X-UA-Compatible" CONTENT="IE=EmulateIE7">
+		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
+		<LINK REL="stylesheet" HREF="birt/styles/style.css" TYPE="text/css">
+		<%
+		if( attributeBean.isRtl() )
+		{
+		%>
+		<LINK REL="stylesheet" HREF="birt/styles/dialogbase_rtl.css" MEDIA="screen" TYPE="text/css"/>
+		<%
+		}
+		else
+		{
+		%>
+		<LINK REL="stylesheet" HREF="birt/styles/dialogbase.css" MEDIA="screen" TYPE="text/css"/>	
+		<%
+		}
+		%>
+			
+		<script type="text/javascript">
+			<%
+			if( request.getAttribute("SoapURL") != null )
+			{
+			%>
+			var soapURL = "<%= (String)request.getAttribute("SoapURL")%>";
+			<%
+			}
+			else
+			{
+			%>
+			var soapURL = document.location.href;
+			<%
+			}
+			%>
+			var rtl = <%= attributeBean.isRtl( ) %>;
+		</script>
+		
+		<script src="birt/ajax/utility/Debug.js" type="text/javascript"></script>
+		<script src="birt/ajax/lib/prototype.js" type="text/javascript"></script>
+		
+		<!-- Mask -->
+		<script src="birt/ajax/core/Mask.js" type="text/javascript"></script>
+		<script src="birt/ajax/utility/BrowserUtility.js" type="text/javascript"></script>
+		
+		<!-- Drag and Drop -->
+		<script src="birt/ajax/core/BirtDndManager.js" type="text/javascript"></script>
+		
+		<script src="birt/ajax/utility/Constants.js" type="text/javascript"></script>
+		<script src="birt/ajax/utility/BirtUtility.js" type="text/javascript"></script>
+		
+		<script src="birt/ajax/core/BirtEventDispatcher.js" type="text/javascript"></script>
+		<script src="birt/ajax/core/BirtEvent.js" type="text/javascript"></script>
+		
+		<script src="birt/ajax/mh/BirtBaseResponseHandler.js" type="text/javascript"></script>
+		<script src="birt/ajax/mh/BirtGetUpdatedObjectsResponseHandler.js" type="text/javascript"></script>
+
+		<script src="birt/ajax/ui/app/AbstractUIComponent.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/app/BirtProgressBar.js" type="text/javascript"></script>
+
+ 		<script src="birt/ajax/ui/report/AbstractReportComponent.js" type="text/javascript"></script>
+ 		<script src="birt/ajax/ui/report/AbstractBaseReportDocument.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/report/BirtReportDocument.js" type="text/javascript"></script>
+
+		<script src="birt/ajax/ui/dialog/AbstractBaseDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/BirtTabedDialogBase.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/AbstractParameterDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/BirtParameterDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/AbstractExceptionDialog.js" type="text/javascript"></script>
+		<script src="birt/ajax/ui/dialog/BirtExceptionDialog.js" type="text/javascript"></script>
+		
+		<script src="birt/ajax/utility/BirtPosition.js" type="text/javascript"></script>
+
+		<script src="birt/ajax/core/BirtCommunicationManager.js" type="text/javascript"></script>
+		<script src="birt/ajax/core/BirtSoapRequest.js" type="text/javascript"></script>
+		<script src="birt/ajax/core/BirtSoapResponse.js" type="text/javascript"></script>
+		
+	</HEAD>
+	
+	<BODY CLASS="BirtViewer_Body"  ONLOAD="javascript:init( );" SCROLL="no" LEFTMARGIN='0px' 
+		STYLE='overflow:hidden; direction: <%= attributeBean.isRtl()?"rtl":"ltr" %>'>
+		<!-- Header section -->
+		<TABLE ID='layout' CELLSPACING='0' CELLPADDING='0' STYLE='width:100%;height:100%'>
+		<%
+			if ( fragment != null )
+			{
+				fragment.callBack( request, response );
+			}
+		%>
+		</TABLE>
+	</BODY>
+
+	<%@include file="../common/Locale.jsp" %>	
+	<%@include file="../common/Attributes.jsp" %>	
+
+	<script type="text/javascript">
+	// <![CDATA[
+		var hasSVGSupport = false;
+		var useVBMethod = false;
+		if ( navigator.mimeTypes != null && navigator.mimeTypes.length > 0 )
+		{
+		    if ( navigator.mimeTypes["image/svg+xml"] != null )
+		    {
+		        hasSVGSupport = true;
+		    }
+		}
+		else
+		{
+		    useVBMethod = true;
+		}
+		
+	// ]]>
+	</script>
+	
+	<script type="text/vbscript">
+		On Error Resume Next
+		If useVBMethod = true Then
+		    hasSVGSupport = IsObject(CreateObject("Adobe.SVGCtl"))
+		End If
+	</script>
+
+	<script type="text/javascript">
+		var Mask =  new Mask(false); //create mask using "div"
+		var BrowserUtility = new BrowserUtility();
+		DragDrop = new BirtDndManager();
+		
+		var birtReportDocument = new BirtReportDocument( "Document" );
+		var birtProgressBar = new BirtProgressBar( 'progressBar' );
+
+		var birtParameterDialog = new BirtParameterDialog( 'parameterDialog', 'run' );
+		var birtExceptionDialog = new BirtExceptionDialog( 'exceptionDialog' );
+		
+		function init()
+		{
+			soapURL = birtUtility.initSessionId( soapURL );
+		<%
+		if ( attributeBean.isShowParameterPage( ) )
+		{
+		%>
+			birtParameterDialog.__cb_bind( );
+		<%
+		}
+		else
+		{
+		%>
+			soapURL = birtUtility.initDPI( soapURL );
+			birtParameterDialog.__init_page_all( );
+		<%
+		}
+		%>
+		}
+		
+		// When link to internal bookmark, use javascript to fire an Ajax request
+		function catchBookmark( bookmark )
+		{	
+			var action = window.location.href;
+			var reg = new RegExp( "([^#]*)#.*", "gi" );
+			if( action.search( reg ) >= 0 )
+			{
+				action = action.replace( reg, "$1" );
+			}
+			
+			window.location.href = action + "#" + birtUtility.htmlDecode( bookmark );		
+		}
+		
+	</script>
+</HTML>
+
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/layout/SidebarFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/SidebarFragment.jsp
new file mode 100644
index 0000000..3119ef0
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/layout/SidebarFragment.jsp
@@ -0,0 +1,30 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.presentation.aggregation.IFragment" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragment" type="org.eclipse.birt.report.presentation.aggregation.IFragment" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Navigation fragment
+-----------------------------------------------------------------------------%>
+<TD ID='sidebar' STYLE='width:0%;vertical-align:top'>
+<%
+	if ( fragment != null )
+	{
+		fragment.callBack( request, response );
+	}
+%>
+</TD>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/CheckboxParameterFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/CheckboxParameterFragment.jsp
new file mode 100644
index 0000000..6083009
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/CheckboxParameterFragment.jsp
@@ -0,0 +1,62 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.context.ScalarParameterBean,
+				 org.eclipse.birt.report.context.BaseAttributeBean,
+				 org.eclipse.birt.report.utility.ParameterAccessor" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Checkbox parameter control
+-----------------------------------------------------------------------------%>
+<%
+	ScalarParameterBean parameterBean = ( ScalarParameterBean ) attributeBean.getParameterBean( );
+	String encodedParameterName = ParameterAccessor.htmlEncode( parameterBean.getName( ) );
+%>
+<TR>
+	<TD NOWRAP>
+		<IMG SRC="birt/images/parameter.gif" ALT="<%= parameterBean.getDisplayName( ) %>" TITLE="<%= parameterBean.getToolTip( ) %>"/>
+	</TD>
+	<TD NOWRAP>
+		<FONT TITLE="<%= parameterBean.getToolTip( ) %>"><LABEL FOR="<%= encodedParameterName %>"><%= parameterBean.getDisplayName( ) %>:</LABEL></FONT>
+		<%-- is required --%>
+		<%
+		if ( parameterBean.isRequired( ) )
+		{
+		%>
+			<FONT COLOR="red"><LABEL FOR="<%= encodedParameterName %>">*</LABEL></FONT>
+		<%
+		}
+		%>
+	</TD>
+</TR>
+<TR>
+	<TD NOWRAP></TD>
+	<TD NOWRAP WIDTH="100%">
+		<%-- Parameter control --%>
+		<INPUT TYPE="HIDDEN" ID="control_type" VALUE="checkbox">
+		<INPUT TYPE="HIDDEN"
+			ID="<%= encodedParameterName + "_hidden" %>"
+			NAME="<%= encodedParameterName %>"
+			VALUE="<%= parameterBean.getValue( ) %>">
+		<INPUT TYPE="CHECKBOX"
+			ID="<%= encodedParameterName %>"
+			TITLE="<%= parameterBean.getToolTip( ) %>"
+			VALUE="<%= encodedParameterName %>"
+			<%= "true".equalsIgnoreCase( parameterBean.getValue( ) ) ? "CHECKED" : "" %>
+			>
+	</TD>
+</TR>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/ComboBoxParameterFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/ComboBoxParameterFragment.jsp
new file mode 100644
index 0000000..74946c6
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/ComboBoxParameterFragment.jsp
@@ -0,0 +1,229 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.context.ScalarParameterBean,
+				 org.eclipse.birt.report.context.BaseAttributeBean,
+				 org.eclipse.birt.report.IBirtConstants,
+				 org.eclipse.birt.report.service.api.ParameterSelectionChoice,
+				 org.eclipse.birt.report.utility.ParameterAccessor,
+				 org.eclipse.birt.report.utility.DataUtil,
+				 java.util.List" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Combo box parameter control
+-----------------------------------------------------------------------------%>
+<%
+	ScalarParameterBean parameterBean = ( ScalarParameterBean ) attributeBean.getParameterBean( );
+	String encodedParameterName = ParameterAccessor.htmlEncode( parameterBean.getName( ) );
+	String paramValue = parameterBean.getValue( );
+	String displayText = parameterBean.getDisplayText( );
+	String defaultValue = parameterBean.getDefaultValue( );
+	String defaultDisplayText = parameterBean.getDefaultDisplayText( );
+	boolean isDisplayTextInList = parameterBean.isDisplayTextInList( );
+	boolean allowMultiValue = !parameterBean.allowNewValues( ) && parameterBean.getParameter( ).isMultiValue( );
+	List values = parameterBean.getValueList( );	
+%>
+<TR>
+	<TD NOWRAP>
+		<IMG SRC="birt/images/parameter.gif" ALT="<%= parameterBean.getDisplayName( ) %>" TITLE="<%= parameterBean.getToolTip( ) %>"/>
+	</TD>
+	<TD NOWRAP>
+		<FONT TITLE="<%= parameterBean.getToolTip( ) %>"><LABEL FOR="<%= encodedParameterName + "_selection"%>"><%= parameterBean.getDisplayName( ) %>:</LABEL></FONT>
+		<%-- is required --%>
+		<%
+		if ( parameterBean.isRequired( ) )
+		{
+		%>
+			<FONT COLOR="red"><LABEL FOR="<%= encodedParameterName + "_selection"%>">*</LABEL></FONT>
+		<%
+		}
+		%>
+	</TD>
+</TR>
+<TR>
+	<TD NOWRAP></TD>
+	<TD NOWRAP WIDTH="100%">
+		<INPUT TYPE="HIDDEN" ID="control_type" VALUE="select">
+		<INPUT TYPE="HIDDEN" ID="data_type" VALUE="<%="" + parameterBean.getParameter( ).getDataType( ) %>">
+		<INPUT TYPE="HIDDEN"
+			ID="<%= encodedParameterName + "_value" %>"
+			NAME="<%= encodedParameterName %>"
+			<%= paramValue != null ? " VALUE=\"" + ParameterAccessor.htmlEncode( paramValue ) + "\"": "" %>
+		>
+
+<%	
+	boolean CHECKED = true;
+		
+	if ( parameterBean.allowNewValues( ) ) // TODO: Editable
+	{
+		CHECKED = parameterBean.isValueInList( ) 
+				  || paramValue == null
+				  || ( !parameterBean.isValueInList( ) && defaultValue != null && defaultValue.equals( paramValue ) );		
+%>
+		<LABEL FOR="<%= encodedParameterName + "_radio_selection" %>" CLASS="birtviewer_hidden_label">Select</LABEL>
+		<INPUT TYPE="RADIO"
+			birtParameterType="combobox"
+			NAME="<%= encodedParameterName + "_radios" %>" 
+			ID="<%= encodedParameterName + "_radio_selection" %>" 
+			VALUE="<%= encodedParameterName %>"
+			<%= CHECKED ? "CHECKED" : "" %> >
+<%
+	}
+%>
+		<SELECT ID="<%= encodedParameterName + "_selection"%>"
+			TITLE="<%= parameterBean.getToolTip( ) %>"
+			CLASS="birtviewer_parameter_dialog_Select"
+			birtParameterType="combobox" 
+			<%= !CHECKED ? "DISABLED='true'" : "" %> 
+			<%=  allowMultiValue? "multiple='true'" : "" %> >
+<%
+	if ( parameterBean.getSelectionList( ) != null )
+	{
+		if( !parameterBean.isRequired( ) || ( parameterBean.isCascade( ) && DataUtil.trimString( defaultValue ).length( )<=0 ) )
+		{
+			if( allowMultiValue && DataUtil.contain( values, "", true ) )
+			{
+%>
+		<OPTION SELECTED></OPTION>
+<%				
+			}
+			else
+			{
+%>
+		<OPTION></OPTION>
+<%
+			}
+		}
+		
+		if ( DataUtil.trimString( defaultValue ).length( ) > 0 && !parameterBean.isDefaultValueInList( ) ) // Add default value in Combo Box
+		{
+			boolean flag = false;
+			if( allowMultiValue )
+			{
+				flag = DataUtil.contain( values, defaultValue, true );
+			}
+			else
+			{
+				flag = CHECKED && !parameterBean.isValueInList( );
+				// if displayText is in request, use it
+				if( flag && parameterBean.isDisplayTextInReq( ) )
+				{
+					defaultDisplayText = displayText;
+				}				
+			}
+%>
+			<OPTION VALUE="<%= ParameterAccessor.htmlEncode( defaultValue ) %>" 
+			        TITLE="<%= ParameterAccessor.htmlEncode( defaultDisplayText ) %>"
+				<%=  flag ? "SELECTED" : "" %> > <%= ParameterAccessor.htmlEncode( defaultDisplayText ) %></OPTION>
+<%	
+		}
+		
+		boolean isSelected = false;
+		for ( int i = 0; i < parameterBean.getSelectionList( ).size( ); i++ )
+		{
+			ParameterSelectionChoice selectionItem = ( ParameterSelectionChoice )parameterBean.getSelectionList( ).get( i );						
+			String label = selectionItem.getLabel( );
+			String value = ( String ) selectionItem.getValue( );
+			String outputValue = ParameterAccessor.htmlEncode(( value == null)?IBirtConstants.NULL_VALUE:value);
+			String outputLabel = ParameterAccessor.htmlEncode(( label == null)?IBirtConstants.NULL_VALUE_DISPLAY:label);
+
+			if( allowMultiValue )
+			{
+				if( DataUtil.contain( values, value, true ) )
+				{
+%>
+			<OPTION VALUE="<%= outputValue %>"
+			        TITLE="<%= outputLabel %>"
+			        SELECTED><%= outputLabel %></OPTION>
+<%
+					
+				}
+				else
+				{
+%>
+			<OPTION VALUE="<%= outputValue %>"
+			        TITLE="<%= outputLabel %>"><%= outputLabel %></OPTION>
+<%					
+				}
+			}
+			else
+			{
+				if ( !isSelected && DataUtil.equals( paramValue, value ) 
+					 && ( !isDisplayTextInList || ( isDisplayTextInList && DataUtil.equals(label, displayText ) )))
+				{
+					isSelected = true;				
+%>
+			<OPTION VALUE="<%= outputValue %>" 
+			        TITLE="<%= outputLabel %>"
+			        SELECTED><%= outputLabel %></OPTION>
+<%
+				}
+				else
+				{
+%>
+			<OPTION VALUE="<%= outputValue %>"
+			        TITLE="<%= outputLabel %>"><%= outputLabel %></OPTION>
+<%
+				}
+			}
+		}
+	}
+%>
+		</SELECT>
+<%
+	if ( parameterBean.allowNewValues( ) ) // TODO: editable.
+	{
+%>
+		<BR>
+		<LABEL FOR="<%= encodedParameterName + "_radio_input" %>" CLASS="birtviewer_hidden_label">Input</LABEL>
+		<INPUT TYPE="RADIO"
+			birtParameterType="combobox"
+			NAME="<%= encodedParameterName + "_radios" %>" 
+			ID="<%= encodedParameterName + "_radio_input"%>" 
+			VALUE="<%= encodedParameterName %>"
+			<%= !CHECKED ? "CHECKED" : "" %> >
+			
+		<LABEL FOR="<%= encodedParameterName + "_input" %>" CLASS="birtviewer_hidden_label">Input text</LABEL>
+		<INPUT CLASS="BirtViewer_parameter_dialog_Input"
+			birtParameterType="combobox"
+			TYPE="<%= parameterBean.isValueConcealed( )? "PASSWORD" : "TEXT" %>"
+			TITLE="<%= parameterBean.getToolTip( ) %>"
+			<%= !CHECKED ? "NAME=\"" + encodedParameterName + "_default\"": "" %> 
+			ID="<%= encodedParameterName + "_input"%>"
+			<%= !CHECKED && displayText != null ? "VALUE=\"" + ParameterAccessor.htmlEncode( displayText ) + "\"": "" %> 
+			<%= CHECKED ? "DISABLED='true'" : "" %>	>
+		
+		<INPUT TYPE="HIDDEN"
+			ID="<%= encodedParameterName + "_displayText" %>"
+			<%= !CHECKED && displayText != null ? "VALUE=\"" + ParameterAccessor.htmlEncode( displayText ) + "\"": "" %> 
+			>		
+	<%
+	  }
+	%>
+		<INPUT TYPE="HIDDEN" ID="isRequired" 
+			VALUE = "<%= parameterBean.isRequired( )? "true": "false" %>">
+			
+	<%
+	if ( parameterBean.isCascade( ) )
+	{
+	%>
+		<INPUT TYPE="HIDDEN" ID="<%=IBirtConstants.IS_CASCADE%>" VALUE="true"/>
+	<%
+	}
+	%>
+	</TD>
+</TR>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/HiddenParameterFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/HiddenParameterFragment.jsp
new file mode 100644
index 0000000..cc8c73c
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/HiddenParameterFragment.jsp
@@ -0,0 +1,48 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.utility.ParameterAccessor,
+				 org.eclipse.birt.report.context.BaseAttributeBean,
+				 org.eclipse.birt.report.context.ScalarParameterBean" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Hidden parameter control
+-----------------------------------------------------------------------------%>
+<%
+	ScalarParameterBean parameterBean = ( ScalarParameterBean ) attributeBean.getParameterBean( );
+	String encodedParameterName = ParameterAccessor.htmlEncode( parameterBean.getName( ) );
+	String value = parameterBean.getValue( );
+	if( value != null )
+	{
+%>
+
+<TR>
+	<TD NOWRAP></TD>
+	<TD NOWRAP WIDTH="100%">
+		<INPUT TYPE="HIDDEN" ID="control_type" VALUE="hidden">
+		<INPUT TYPE="HIDDEN"
+			NAME="<%= encodedParameterName %>"
+			VALUE="<%= value %>"/>
+		<INPUT TYPE="HIDDEN"
+			ID="<%= encodedParameterName + "_displayText" %>"
+			VALUE="<%= ParameterAccessor.htmlEncode( ( parameterBean.getDisplayText( ) == null )? "" : parameterBean.getDisplayText( ) ) %>" />				
+	</TD>
+</TR>
+
+<%
+	}
+%>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/ParameterGroupFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/ParameterGroupFragment.jsp
new file mode 100644
index 0000000..65efa35
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/ParameterGroupFragment.jsp
@@ -0,0 +1,81 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="java.util.Iterator,
+				 java.util.Collection,
+ 				 org.eclipse.birt.report.utility.ParameterAccessor,
+ 				 org.eclipse.birt.report.context.ParameterGroupBean,
+				 org.eclipse.birt.report.context.BaseAttributeBean,
+ 				 org.eclipse.birt.report.presentation.aggregation.IFragment" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="fragments" type="java.util.Collection" scope="request" />
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Content fragment
+-----------------------------------------------------------------------------%>
+<%
+	ParameterGroupBean parameterGroupBean = ( ParameterGroupBean ) attributeBean.getParameterBean( );
+%>
+<TR><TD HEIGHT="16px" COLSPAN="2"></TD></TR>
+<%
+	if ( parameterGroupBean.getDisplayName( ) != null )
+	{
+%>
+<TR>
+	<TD NOWRAP>
+		<IMG SRC="birt/images/parameter_group.gif" ALT="<%= parameterGroupBean.getDisplayName( ) %>" TITLE="<%= parameterGroupBean.getToolTip( ) %>"/>
+	</TD>
+	<TD NOWRAP>
+		<FONT TITLE="<%= parameterGroupBean.getToolTip( ) %>"><B><%= parameterGroupBean.getDisplayName( ) %></B></FONT>
+	</TD>
+</TR>
+<%
+	}
+%>
+<TR>
+<%
+	if ( parameterGroupBean.getDisplayName( ) != null )
+	{
+%>	
+	<TD NOWRAP></TD>
+	<TD NOWRAP>
+<%
+	}
+	else
+	{
+%>	
+	<TD COLSPAN="2" NOWRAP>
+<%
+	}
+%>	
+		<TABLE CLASS="birtviewer_parameter_dialog_Label">
+		<%
+			if ( fragments != null )
+			{
+				Iterator childIterator = fragments.iterator( );
+				while ( childIterator.hasNext( ) )
+				{
+				    IFragment subfragment = ( IFragment ) childIterator.next( );
+					if ( subfragment != null )
+					{
+						subfragment.service( request, response );
+					}
+				}
+			}
+		%>
+		</TABLE>
+	</TD>
+</TR>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/RadioButtonParameterFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/RadioButtonParameterFragment.jsp
new file mode 100644
index 0000000..17564d0
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/RadioButtonParameterFragment.jsp
@@ -0,0 +1,90 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.context.ScalarParameterBean,
+				 org.eclipse.birt.report.context.BaseAttributeBean,
+				 org.eclipse.birt.report.service.api.ParameterSelectionChoice,
+				 org.eclipse.birt.report.utility.ParameterAccessor,
+				 org.eclipse.birt.report.utility.DataUtil,
+				 org.eclipse.birt.report.IBirtConstants" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Radio button parameter control
+-----------------------------------------------------------------------------%>
+<%
+	ScalarParameterBean parameterBean = ( ScalarParameterBean ) attributeBean.getParameterBean( );
+	String encodedParameterName = ParameterAccessor.htmlEncode( parameterBean.getName( ) );
+	boolean isDisplayTextInList = parameterBean.isDisplayTextInList( );
+%>
+<TR>
+	<TD NOWRAP>
+		<IMG SRC="birt/images/parameter.gif" ALT="<%= parameterBean.getDisplayName( ) %>" TITLE="<%= parameterBean.getToolTip( ) %>"/>
+	</TD>
+	<TD NOWRAP>
+		<FONT TITLE="<%= parameterBean.getToolTip( ) %>"><%= parameterBean.getDisplayName( ) %>:</FONT>
+		<%-- is required --%>
+		<%
+		if ( parameterBean.isRequired( ) )
+		{
+		%>
+			<FONT COLOR="red">*</FONT>
+		<%
+		}
+		%>
+	</TD>
+</TR>
+<TR>
+	<TD NOWRAP></TD>
+	<TD NOWRAP WIDTH="100%">
+	<INPUT TYPE="HIDDEN" ID="control_type" VALUE="radio">
+	<INPUT TYPE="HIDDEN" ID="data_type" VALUE="<%="" + parameterBean.getParameter( ).getDataType( ) %>">
+	<%-- Parameter control --%>
+<%
+	if (parameterBean.getSelectionList( ) != null)
+	{
+		boolean CHECKED = false;
+		boolean isSelected = false;
+		for ( int i = 0; i < parameterBean.getSelectionList( ).size( ); i++ )
+		{
+			ParameterSelectionChoice selectionItem = ( ParameterSelectionChoice )parameterBean.getSelectionList( ).get( i );						
+			String label = selectionItem.getLabel( );
+			String value = ( String ) selectionItem.getValue( );
+			String encodedValue = ParameterAccessor.htmlEncode(( value == null )?IBirtConstants.NULL_VALUE:value);
+			
+			CHECKED = ( DataUtil.equals( parameterBean.getValue( ), value )
+						&& ( !isDisplayTextInList || ( isDisplayTextInList && label.equals( parameterBean.getDisplayText( ) ) ) ) );						
+%>
+	<INPUT TYPE="RADIO"
+		NAME="<%= encodedParameterName %>"
+		ID="<%= encodedParameterName + i %>" 
+		TITLE="<%= parameterBean.getToolTip( ) %>"
+		VALUE="<%= encodedValue %>"
+		<%= !isSelected && CHECKED ? "CHECKED" : "" %>>
+		<LABEL ID="<%= (encodedParameterName + i) + "_label" %>" 
+		   TITLE="<%= ParameterAccessor.htmlEncode( label ) %>" 
+		   FOR="<%= encodedParameterName + i %>"><%= ParameterAccessor.htmlEncode( label ) %></LABEL>
+	</INPUT>
+	<BR>
+<%
+			if( CHECKED )
+				isSelected = true;
+		}
+	}	
+
+%>
+	</TD>
+</TR>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/TextBoxParameterFragment.jsp b/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/TextBoxParameterFragment.jsp
new file mode 100644
index 0000000..acfa52e
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/pages/parameter/TextBoxParameterFragment.jsp
@@ -0,0 +1,98 @@
+<%-----------------------------------------------------------------------------
+	Copyright (c) 2004 Actuate Corporation and others.
+	All rights reserved. This program and the accompanying materials 
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+		Actuate Corporation - Initial implementation.
+-----------------------------------------------------------------------------%>
+<%@ page contentType="text/html; charset=utf-8" %>
+<%@ page session="false" buffer="none" %>
+<%@ page import="org.eclipse.birt.report.utility.ParameterAccessor,
+				 org.eclipse.birt.report.context.BaseAttributeBean,
+				 org.eclipse.birt.report.context.ScalarParameterBean" %>
+
+<%-----------------------------------------------------------------------------
+	Expected java beans
+-----------------------------------------------------------------------------%>
+<jsp:useBean id="attributeBean" type="org.eclipse.birt.report.context.BaseAttributeBean" scope="request" />
+
+<%-----------------------------------------------------------------------------
+	Text box parameter control
+-----------------------------------------------------------------------------%>
+<%
+	ScalarParameterBean parameterBean = ( ScalarParameterBean ) attributeBean.getParameterBean( );
+	String encodedParameterName = ParameterAccessor.htmlEncode( parameterBean.getName( ) );
+%>
+<TR>
+	<TD NOWRAP>
+		<IMG SRC="birt/images/parameter.gif" ALT="<%= parameterBean.getDisplayName( ) %>" TITLE="<%= parameterBean.getToolTip( ) %>"/>
+	</TD>
+	<TD NOWRAP>
+		<FONT TITLE="<%= parameterBean.getToolTip( ) %>"><LABEL FOR="<%= encodedParameterName %>"><%= parameterBean.getDisplayName( ) %>:</LABEL></FONT>
+		<%-- is required --%>
+		<%
+		if ( parameterBean.isRequired( ) )
+		{
+		%>
+			<FONT COLOR="red"><LABEL FOR="<%= encodedParameterName %>">*</LABEL></FONT>
+		<%
+		}
+		%>
+	</TD>
+</TR>
+<TR>
+	<TD NOWRAP></TD>
+	<TD NOWRAP WIDTH="100%">
+	<INPUT TYPE="HIDDEN" ID="control_type" VALUE="text">
+	<INPUT TYPE="HIDDEN" ID="data_type" VALUE="<%="" + parameterBean.getParameter( ).getDataType( ) %>">
+<%
+	if ( !parameterBean.isRequired( ) )
+	{
+%>	
+		<LABEL FOR="<%= encodedParameterName + "_radio_notnull" %>" CLASS="birtviewer_hidden_label">Input text</LABEL>	
+		<INPUT TYPE="RADIO"
+			ID="<%= encodedParameterName + "_radio_notnull" %>"
+			VALUE="<%= encodedParameterName %>"
+			<%= (parameterBean.getValue( ) != null)? "CHECKED" : "" %>>
+<%
+	}
+%>	
+		<INPUT CLASS="BirtViewer_parameter_dialog_Input"
+			TYPE="<%= parameterBean.isValueConcealed( )? "PASSWORD" : "TEXT" %>"
+			NAME="<%= encodedParameterName %>"
+			ID="<%= encodedParameterName %>" 
+			TITLE="<%= parameterBean.getToolTip( ) %>"
+			VALUE="<%= ParameterAccessor.htmlEncode( ( parameterBean.getDisplayText( ) == null )? "" : parameterBean.getDisplayText( ) ) %>" 
+			<%= ( !parameterBean.isRequired( ) && parameterBean.getValue( ) == null )? "DISABLED='true'" : "" %>
+            >
+
+		<INPUT TYPE="HIDDEN"
+			ID="<%= encodedParameterName + "_value" %>"
+			VALUE="<%= ParameterAccessor.htmlEncode( ( parameterBean.getValue( ) == null )? "" : parameterBean.getValue( ) ) %>"
+			>
+		
+		<INPUT TYPE="HIDDEN"
+			ID="<%= encodedParameterName + "_displayText" %>"
+			VALUE="<%= ParameterAccessor.htmlEncode( ( parameterBean.getDisplayText( ) == null )? "" : parameterBean.getDisplayText( ) ) %>"
+			>
+<%
+	if ( !parameterBean.isRequired( ) )
+	{
+%>
+		<BR>
+		<LABEL FOR="<%= encodedParameterName + "_radio_null" %>" CLASS="birtviewer_hidden_label">Null Value</LABEL>	
+		<INPUT TYPE="RADIO"
+			ID="<%= encodedParameterName + "_radio_null"%>"
+			VALUE="<%= encodedParameterName %>"
+			<%= ( parameterBean.getValue( ) == null )? "CHECKED" : "" %>> Null Value
+<%
+	}
+%>
+
+		<INPUT TYPE="HIDDEN" ID="isRequired" 
+			VALUE = "<%= parameterBean.isRequired( )? "true": "false" %>">
+	</TD>
+</TR>
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/styles/dialogbase.css b/framework/webtools/webapp/birt/webcontent/birt/styles/dialogbase.css
new file mode 100644
index 0000000..fb71c55
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/styles/dialogbase.css
@@ -0,0 +1,237 @@
+/* Copyright 1994-2006, Actuate Software Corp., All rights reserved. */
+
+@CHARSET "ISO-8859-1";
+
+/* Border around dialog */
+.dialogBorder
+{
+	border-style: outset;
+	border-width: 1px;
+	border-color: #CCCCCC;
+	background-color: gray;
+}
+
+/* Title bar background area */
+.dialogTitleBar
+{
+	height: 20px;
+	background-color: #4E6DA4;
+	cursor: move;	
+}
+
+.dTitleBar
+{
+	padding-left: 7px;
+	padding-right: 7px;
+	padding-top: 2px;
+	padding-bottom: 2px;
+	position: relative;
+}
+
+/* Title text */
+.dialogTitleText
+{
+	font-size: 11px; 
+	font-weight: bold; 
+	font-family: tahoma, verdana, arial, sans-serif;
+	color: white;
+}
+
+.dTitleText
+{
+	vertical-align: middle; 
+	white-space: nowrap;
+	cursor: move;
+}
+
+.dTitleTextContainer
+{
+	float: left; 
+	position: relative;
+	height: 100%;	
+	width: 1px;
+}
+
+/* Close button - width should match those of .dialogCloseBtnContainer */
+.dialogCloseBtn
+{
+	background-image: url("../images/Close.gif");
+	width: 14px;
+	height: 14px;
+	background-color: gray;
+	cursor: pointer;	 
+}
+
+.dCloseBtn
+{
+	vertical-align: middle; 
+	background-repeat: no-repeat;
+	background-position: center right; 
+}
+
+/* Close button container - width should match those of .dialogCloseBtn */
+.dialogCloseBtnContainer
+{		
+	width: 14px;
+}
+
+.dCloseBtnContainer
+{
+	height: 100%;
+	float: right;
+	position: relative;
+}
+
+/* Background of dialog below title bar */
+.dialogBackground
+{
+	background-color: #ECE9D8;
+	margin-bottom: 1px;
+}
+
+.dBackground
+{
+	margin-left: 10px;
+	margin-right: 10px;
+	padding-top: 4px;
+}
+
+/* Border style of content area for individual dialog content */
+.dialogContentContainer
+{
+}
+
+/* Area from bottom of dialog content container to bottom border */
+.dialogBtnBarContainer
+{
+	position: relative;
+	text-align: center;
+	padding-top: 4px; /* distance from bottom of content area to top of divider bar*/
+}
+
+/* Top divider line between dialog content area and button area */
+.dBtnBarDividerTop
+{
+	height: 1px;
+	background-color: gray;
+	overflow: hidden;
+}
+
+/* Bottom divider line between dialog content area and button area */
+.dBtnBarDividerBottom
+{
+	height: 1px;
+	background-color: #fefefe;
+	overflow: hidden;	
+}
+
+
+/* Area that contains OK and CANCEL buttons - from bottom of divider bar to top of outer border */
+.dialogBtnBar
+{	
+	height: 36px;
+	text-align: right;
+}
+
+/* Area holding both OK and CANCEL buttons */
+.dialogBtnBarButtonContainer
+{
+	margin-left: auto; 
+	margin-right: 0px; 
+	margin-top: 6px; 
+	margin-bottom: 7px;
+	width: 166px; 
+	height:24px;
+}
+
+/* Space between OK and CANCEL */
+.dialogBtnBarDivider
+{
+	width: 6px;
+	height: 1px;
+	float: left;
+}
+
+.dialogBtnBarButtonEnabled
+{
+	float: left;
+	cursor: pointer;
+	height: 24px;
+	width: 80px;
+	overflow: hidden;
+	color: black; /* Font color */ 
+	/*background-color: #9C9C9C;
+	background-repeat: repeat-x;
+	background-position: top left;*/
+}
+
+.dialogBtnBarButtonDisabled
+{
+	float: left;
+	cursor: default;
+	height: 24px;
+	width: 80px;
+	overflow: hidden;
+	color: #999999; /* Font color */
+	/*background-color: #9C9C9C;
+	background-repeat: repeat-x;
+	background-position: top left;*/
+}
+
+/* Left background image for OK and CANCEL buttons */
+.dialogBtnBarButtonLeftBackgroundEnabled
+{
+	background-color: #9C9C9C;
+	background-repeat: no-repeat;
+	background-position: top left;
+	position: relative;
+	width: 0px;
+	height: 24px;
+	float: left;
+}
+
+/* Left background image for OK and CANCEL buttons */
+.dialogBtnBarButtonLeftBackgroundDisabled
+{
+	background-color: #9C9C9C;
+	background-repeat: no-repeat;
+	background-position: top left;
+	position: relative;
+	width: 0px;
+	height: 24px;
+	float: left;
+}
+
+/* Right background image for OK and CANCEL buttons */
+.dialogBtnBarButtonRightBackgroundEnabled
+{
+	background-color: #9C9C9C;
+	background-repeat: no-repeat;
+	background-position: top right;
+	position: relative;
+	width: 0px;
+	height: 24px;
+	float: right;
+}
+
+/* Right background image for OK and CANCEL buttons */
+.dialogBtnBarButtonRightBackgroundDisabled
+{
+	background-color: #9C9C9C;
+	background-repeat: no-repeat;
+	background-position: top right;
+	position: relative;
+	width: 0px;
+	height: 24px;
+	float: right;
+}
+
+/* Text for OK and CANCEL buttons */
+.dialogBtnBarButtonText
+{	
+	font-family: tahoma, verdana, arial, sans-serif;
+	font-size: 11px;
+	font-weight: 400;
+	text-align: center;
+	vertical-align: middle;
+}
diff --git a/framework/webtools/webapp/birt/webcontent/birt/styles/dialogbase_rtl.css b/framework/webtools/webapp/birt/webcontent/birt/styles/dialogbase_rtl.css
new file mode 100644
index 0000000..6f6f06b
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/styles/dialogbase_rtl.css
@@ -0,0 +1,245 @@
+/* Copyright 1994-2006, Actuate Software Corp., All rights reserved. */
+
+@CHARSET "ISO-8859-1";
+
+/* Border around dialog */
+.dialogBorder
+{
+	border-style: outset;
+	border-width: 1px;
+	border-color: #CCCCCC;
+	background-color: gray;
+	direction: ltr;
+}
+
+/* Title bar background area */
+.dialogTitleBar
+{
+	height: 20px;
+	background-color: #4E6DA4;
+	cursor: move;	
+	direction: rtl;
+}
+
+.dTitleBar
+{
+	padding-left: 7px;
+	padding-right: 7px;
+	padding-top: 2px;
+	padding-bottom: 2px;
+	position: relative;
+}
+
+/* Title text */
+.dialogTitleText
+{
+	font-size: 11px; 
+	font-weight: bold; 
+	font-family: tahoma, verdana, arial, sans-serif;
+	color: white;
+}
+
+.dTitleText
+{
+	vertical-align: middle; 
+	white-space: nowrap;
+	cursor: move;
+}
+
+.dTitleTextContainer
+{
+	float: right; 
+	position: relative;
+	height: 100%;	
+	width: 250px;
+}
+
+/* Close button - width should match those of .dialogCloseBtnContainer */
+.dialogCloseBtn
+{
+	background-image: url("../images/Close.gif");
+	width: 14px;
+	height: 14px;
+	background-color: gray;
+	cursor: pointer;	 
+}
+
+.dCloseBtn
+{
+	vertical-align: middle; 
+	background-repeat: no-repeat;
+	background-position: center right; 
+}
+
+/* Close button container - width should match those of .dialogCloseBtn */
+.dialogCloseBtnContainer
+{		
+	width: 14px;
+}
+
+.dCloseBtnContainer
+{
+	height: 100%;
+	float: left;
+	position: relative;
+}
+
+/* Background of dialog below title bar */
+.dialogBackground
+{
+	background-color: #ECE9D8;
+	margin-bottom: 1px;
+}
+
+.dBackground
+{
+	margin-left: 10px;
+	margin-right: 10px;
+	padding-top: 4px;
+}
+
+/* Border style of content area for individual dialog content */
+.dialogContentContainer
+{
+	direction: rtl;
+}
+
+/* Area from bottom of dialog content container to bottom border */
+.dialogBtnBarContainer
+{
+	position: relative;
+	text-align: center;
+	padding-top: 4px; /* distance from bottom of content area to top of divider bar*/
+}
+
+/* Top divider line between dialog content area and button area */
+.dBtnBarDividerTop
+{
+	height: 1px;
+	background-color: gray;
+	overflow: hidden;
+}
+
+/* Bottom divider line between dialog content area and button area */
+.dBtnBarDividerBottom
+{
+	height: 1px;
+	background-color: #fefefe;
+	overflow: hidden;	
+}
+
+
+/* Area that contains OK and CANCEL buttons - from bottom of divider bar to top of outer border */
+.dialogBtnBar
+{	
+	height: 36px;
+	text-align: right;
+}
+
+/* Area holding both OK and CANCEL buttons */
+.dialogBtnBarButtonContainer
+{
+	margin-left: 0px; 
+	margin-right: auto; 
+	margin-top: 6px; 
+	margin-bottom: 7px;
+	width: 166px; 
+	height:24px;
+}
+
+/* Space between OK and CANCEL */
+.dialogBtnBarDivider
+{
+	width: 6px;
+	height: 1px;
+	float: left;
+}
+
+.dialogBtnBarButtonEnabled
+{
+	float: right;
+	cursor: pointer;
+	height: 24px;
+	width: 80px;
+	overflow: hidden;
+	color: black; /* Font color */ 
+	/*background-color: #9C9C9C;
+	background-repeat: repeat-x;
+	background-position: top left;*/
+}
+
+.dialogBtnBarButtonDisabled
+{
+	float: right;
+	cursor: default;
+	height: 24px;
+	width: 80px;
+	overflow: hidden;
+	color: #999999; /* Font color */
+	/*background-color: #9C9C9C;
+	background-repeat: repeat-x;
+	background-position: top left;*/
+}
+
+/* Left background image for OK and CANCEL buttons */
+.dialogBtnBarButtonLeftBackgroundEnabled
+{
+	background-color: #9C9C9C;
+	background-repeat: no-repeat;
+	background-position: top right;
+	position: relative;
+	width: 0px;
+	height: 24px;
+	float: right;
+}
+
+/* Left background image for OK and CANCEL buttons */
+.dialogBtnBarButtonLeftBackgroundDisabled
+{
+	background-color: #9C9C9C;
+	background-repeat: no-repeat;
+	background-position: top right;
+	position: relative;
+	width: 0px;
+	height: 24px;
+	float: right;
+}
+
+/* Right background image for OK and CANCEL buttons */
+.dialogBtnBarButtonRightBackgroundEnabled
+{
+	background-color: #9C9C9C;
+	background-repeat: no-repeat;
+	background-position: top left;
+	position: relative;
+	width: 0px;
+	height: 24px;
+	float: left;
+}
+
+/* Right background image for OK and CANCEL buttons */
+.dialogBtnBarButtonRightBackgroundDisabled
+{
+	background-color: #9C9C9C;
+	background-repeat: no-repeat;
+	background-position: top left;
+	position: relative;
+	width: 0px;
+	height: 24px;
+	float: left;
+}
+
+/* Text for OK and CANCEL buttons */
+.dialogBtnBarButtonText
+{	
+	font-family: tahoma, verdana, arial, sans-serif;
+	font-size: 11px;
+	font-weight: 400;
+	text-align: center;
+	vertical-align: middle;
+}
+
+input[type=radio], input[type=checkbox]
+{
+	width: 22px;	
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/birt/webcontent/birt/styles/index.css b/framework/webtools/webapp/birt/webcontent/birt/styles/index.css
new file mode 100644
index 0000000..7d1ed43
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/styles/index.css
@@ -0,0 +1,153 @@
+A.nav:link {
+	COLOR: black; TEXT-DECORATION: none
+}
+A.nav:visited {
+	COLOR: black; TEXT-DECORATION: none
+}
+A.nav:hover {
+	COLOR: black; TEXT-DECORATION: underline
+}
+A.birt:link {
+	COLOR: white; TEXT-DECORATION: none
+}
+A.birt:visited {
+	COLOR: white; TEXT-DECORATION: none
+}
+A.birt:hover {
+	COLOR: white; TEXT-DECORATION: underline
+}
+BODY {
+	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 10pt; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: black; PADDING-TOP: 0px; FONT-FAMILY: arial, helvetica, geneva; BACKGROUND-COLOR: white
+}
+TABLE {
+	FONT-SIZE: 10pt
+}
+.bullet {
+	FONT-SIZE: 9pt
+}
+UL {
+	PADDING-LEFT: 20pt
+}
+LI {
+	PADDING-BOTTOM: 3pt
+}
+.caution {
+	PADDING-RIGHT: 2pt; PADDING-LEFT: 4pt; PADDING-BOTTOM: 4pt; MARGIN-LEFT: 4pt; COLOR: #000040; MARGIN-RIGHT: 4pt; PADDING-TOP: 4pt; BACKGROUND-COLOR: #e0e0e0
+}
+.caution-head {
+	FONT-WEIGHT: bold
+}
+UNKNOWN {
+	MARGIN-LEFT: 4pt; MARGIN-RIGHT: 4pt
+}
+.navhead {
+	FONT-WEIGHT: bold; FONT-SIZE: xx-small; COLOR: white; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
+}
+A.navhead:link {
+	COLOR: white; TEXT-DECORATION: none
+}
+A.navhead:visited {
+	COLOR: white; TEXT-DECORATION: none
+}
+A.navhead:hover {
+	COLOR: white; TEXT-DECORATION: underline
+}
+.menu-table {
+	FONT-SIZE: 10pt; BACKGROUND-COLOR: #90c8ff
+}
+.menu-table TD {
+	PADDING-LEFT: 7px; PADDING-BOTTOM: 2px; PADDING-TOP: 3px; BORDER-BOTTOM: #cfffff 1px solid
+}
+.top-menu-cell {
+	PADDING-BOTTOM: 4px; PADDING-TOP: 3px; BORDER-BOTTOM: #cfffff 1px solid; BACKGROUND-COLOR: #0080c0
+}
+.menu-area {
+	COLOR: black; BACKGROUND-COLOR: #6699cc
+}
+.banner-area {
+	BACKGROUND-COLOR: #006699
+}
+PRE {
+	FONT-SIZE: 10pt; FONT-FAMILY: "Courier New", Courier, mono
+}
+CODE {
+	FONT-SIZE: 10pt; FONT-FAMILY: "Courier New", Courier, mono
+}
+.code-block {
+	PADDING-RIGHT: 2pt; PADDING-LEFT: 2pt; FONT-SIZE: 10pt; PADDING-BOTTOM: 4pt; MARGIN-RIGHT: 0.5in; PADDING-TOP: 4pt; FONT-FAMILY: "Courier New", Courier, mono; BACKGROUND-COLOR: #e0e0e0
+}
+H1 {
+	MARGIN-TOP: 12pt; PADDING-LEFT: 2px; FONT-WEIGHT: bold; FONT-SIZE: 10pt; PADDING-BOTTOM: 2px; COLOR: white; PADDING-TOP: 3px; BACKGROUND-COLOR: #0080c0
+}
+H2 {
+	FONT-WEIGHT: bold; FONT-SIZE: 9pt; COLOR: #0080c0
+}
+H3 {
+	FONT-SIZE: 9pt; COLOR: #0080c0
+}
+DT {
+	PADDING-BOTTOM: 6pt
+}
+DD {
+	PADDING-BOTTOM: 10pt
+}
+.indextop {
+	FONT-WEIGHT: bold; FONT-SIZE: x-large; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
+}
+.indexsub {
+	FONT-SIZE: large; COLOR: #8080ff; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
+}
+A.bar {
+	COLOR: white
+}
+A.bar:link {
+	COLOR: white; TEXT-DECORATION: none
+}
+A.bar:visited {
+	COLOR: white; TEXT-DECORATION: none
+}
+A.bar:hover {
+	COLOR: white; TEXT-DECORATION: underline
+}
+.jump {
+	FONT-SIZE: smaller; COLOR: #8080ff; TEXT-DECORATION: none
+}
+A.jump:visited {
+	COLOR: #8080ff; TEXT-DECORATION: none
+}
+A.jump:link {
+	COLOR: #8080ff; TEXT-DECORATION: none
+}
+A.jump:hover {
+	COLOR: blue; TEXT-DECORATION: underline
+}
+.toc {
+	FONT-SIZE: small; COLOR: #8080ff; TEXT-DECORATION: none
+}
+A.toc:visited {
+	COLOR: #8080ff; TEXT-DECORATION: none
+}
+A.toc:link {
+	COLOR: #8080ff; TEXT-DECORATION: none
+}
+A.toc:hover {
+	COLOR: blue; TEXT-DECORATION: underline
+}
+.q {
+	FONT-WEIGHT: bold; PADDING-BOTTOM: 6pt; MARGIN-LEFT: 4pt; MARGIN-RIGHT: 4pt
+}
+.ans {
+	PADDING-LEFT: 24pt; PADDING-BOTTOM: 12pt; MARGIN-RIGHT: 4pt
+}
+.simple-table {
+	BORDER-RIGHT: silver 1pt ridge; BORDER-TOP: silver 1pt ridge; MARGIN: 10pt; BORDER-LEFT: silver 1pt ridge; BORDER-BOTTOM: silver 1pt ridge; BORDER-COLLAPSE: collapse
+}
+.simple-table TD {
+	BORDER-RIGHT: silver 1pt ridge; PADDING-RIGHT: 5pt; BORDER-TOP: silver 1pt ridge; PADDING-LEFT: 5pt; PADDING-BOTTOM: 5pt; BORDER-LEFT: silver 1pt ridge; PADDING-TOP: 5pt; BORDER-BOTTOM: silver 1pt ridge
+}
+.simple-table TH {
+	BORDER-RIGHT: silver 1pt ridge; PADDING-RIGHT: 5pt; BORDER-TOP: silver 1pt ridge; PADDING-LEFT: 5pt; PADDING-BOTTOM: 5pt; BORDER-LEFT: silver 1pt ridge; PADDING-TOP: 5pt; BORDER-BOTTOM: silver 1pt ridge
+}
+.simple-table THEAD {
+	FONT-WEIGHT: bold
+}
diff --git a/framework/webtools/webapp/birt/webcontent/birt/styles/style.css b/framework/webtools/webapp/birt/webcontent/birt/styles/style.css
new file mode 100644
index 0000000..fe73ada
--- /dev/null
+++ b/framework/webtools/webapp/birt/webcontent/birt/styles/style.css
@@ -0,0 +1,423 @@
+/******************************************************************************
+ *	Copyright (c) 2004 Actuate Corporation and others.
+ *	All rights reserved. This program and the accompanying materials 
+ *	are made available under the terms of the Eclipse Public License v1.0
+ *	which accompanies this distribution, and is available at
+ *	http://www.eclipse.org/legal/epl-v10.html
+ *	
+ *	Contributors:
+ *		Actuate Corporation - Initial implementation.
+ *****************************************************************************/
+
+.BirtViewer_Body
+{
+	margin:0px;
+}
+
+/******************************************************************************
+ * Birt error page.
+ *****************************************************************************/
+.BirtViewer_Highlight_Label
+{
+	font:Verdana;
+	color:red;
+}
+
+/******************************************************************************
+ * Birt parameter dialog.
+ *****************************************************************************/
+.birtviewer_parameter_dialog
+{
+	height:100%;
+	overflow:auto;
+	height:350px;
+}
+
+.BirtViewer_parameter_dialog_Input
+{
+	font:Verdana;
+	font-size:8pt;
+	border-style:inset;
+	border-width:2px;
+	width:250px;
+}
+
+.birtviewer_parameter_dialog_Select
+{
+	font:Verdana;
+	font-size:8pt;
+	width:250px;
+}
+
+.birtviewer_parameter_dialog_Label
+{
+	font:Verdana;
+	font-size:8pt;
+}
+
+/******************************************************************************
+ * Birt Exception dialog.
+ *****************************************************************************/
+.birtviewer_exception_dialog
+{
+	border-style:solid;
+	border-color:#cccccc;
+	background-color:#ffffef;
+	border-width:1px;
+} 
+
+.birtviewer_exception_dialog_container
+{
+	border-left-style:solid;
+	border-left-width:1px;
+	border-left-color:#cccccc;
+} 
+
+.birtviewer_exception_dialog_label
+{
+	cursor: pointer;
+	font-size: 8pt;
+	color: gray;
+	font-weight: bold;
+	text-decoration: underline;
+}
+
+.birtviewer_exception_dialog_message
+{	
+	padding: 2px;
+	font-size: 9pt;
+}
+
+.birtviewer_exception_dialog_detail
+{
+	padding:2px;
+	overflow:auto; 
+	height:150px;
+	border-top-color:#cccccc;
+	border-top-style:solid;
+	border-top-width:1px;
+	font-size:8pt;
+}
+
+/******************************************************************************
+ * Birt export data dialog.
+ *****************************************************************************/
+.birtviewer_exportdata_dialog_single_select
+{
+	width:250px;
+	font-size:8pt;
+}
+
+.birtviewer_exportdata_dialog_select
+{
+	width:180px;
+	font-size:8pt;
+}
+
+.birtviewer_exportdata_dialog_button
+{
+	width:16px;
+	height:16px;
+	cursor:pointer;
+}
+
+.birtviewer_exportdata_dialog_input
+{
+	width:80px;
+	font:Verdana;
+	font-size:8pt;
+	border-style:inset;
+	border-width:1px;	
+}
+
+/******************************************************************************
+ * Birt export report dialog.
+ *****************************************************************************/
+.birtviewer_exportreport_dialog_select
+{
+	width:120px;
+	font:Verdana;
+	font-size:8pt;
+} 
+ 
+.birtviewer_exportreport_dialog_input
+{
+	width:120px;
+	font:Verdana;
+	font-size:8pt;
+	border-style:inset;
+	border-width:1px;	
+} 
+
+/******************************************************************************
+ * Birt print report dialog.
+ *****************************************************************************/
+.birtviewer_printreport_dialog_select
+{
+	width:150px;
+	font:Verdana;
+	font-size:8pt;
+} 
+
+.birtviewer_printreport_dialog_input
+{
+	width:120px;
+	font:Verdana;
+	font-size:8pt;
+	border-style:inset;
+	border-width:1px;	
+}
+
+/******************************************************************************
+ * Birt print report on the server dialog.
+ *****************************************************************************/
+.birtviewer_printreportserver_dialog_select
+{
+	width:200px;
+	font:Verdana;
+	font-size:8pt;
+} 
+ 
+.birtviewer_printreportserver_dialog_input
+{
+	width:120px;
+	font:Verdana;
+	font-size:8pt;
+	border-style:inset;
+	border-width:1px;	
+} 
+
+.birtviewer_printreportserver_dialog_input_short
+{
+	width:60px;
+	font:Verdana;
+	font-size:8pt;
+	border-style:inset;
+	border-width:1px;	
+} 
+
+/******************************************************************************
+ * Birt confirmation dialog.
+ *****************************************************************************/
+.birtviewer_confirmation_dialog_iframe
+{
+	width:450px;
+	height:100px
+} 
+
+.birtviewer_progresspage
+{
+	font-family:Verdana;
+	font-size:8pt;
+	cursor:default;	
+}
+  
+/******************************************************************************
+ * Dialog related.
+ *****************************************************************************/
+.birtviewer_dialog
+{
+	font-family:Verdana;
+	background-color:#dbe4ee;
+	border-width:2px;
+	border-style:outset;
+	font-size:8pt;
+	cursor:default;
+}
+
+.birtviewer_dialog_caption
+{
+	width:100%;
+	font-size:12px;
+	color:white;
+	background-color:#4682b4;
+}
+
+.birtviewer_dialog_body
+{
+	/*background-color:#dbe4ee;*/
+	border-width:1px;
+	border-style:inset;
+	width:100%;
+	height:100%;
+	font-family:arial;
+	font-size:8pt;
+}
+
+.birtviewer_dialog_button
+{
+	width:100px;
+	font-family:verdana;
+	font-size:8pt;
+	background-color:white;
+	border-style:outset;
+	border-width:1px;
+	cursor:hand;
+	cursor:pointer;
+}
+
+.birtviewer_dialog_tab_selected
+{
+	border-color:#ffffff;
+	border-width:1px;
+	border-style:solid;
+	font-size:7pt;
+	font-weight:bold;
+}
+
+.birtviewer_dialog_tab_normal
+{
+	border-color:white;
+	border-width:1px;
+	border-style:solid;
+	cursor:hand;
+	cursor:pointer;
+	font-size:7pt;
+	font-weight:bold;
+}
+
+/******************************************************************************
+ * Body
+ *****************************************************************************/
+.body_caption_top
+{
+	height:4px;
+	background-color:#DDAA03;
+}
+
+.body_caption
+{
+	height:30px;
+	font-family:Verdana;
+	font-size:10pt;
+}
+
+/******************************************************************************
+ * Toolbar
+ ******************************************************************************/
+.birtviewer_toolbar
+{
+	height:26px;
+	background-color:#CBCB97;
+	font-family:Verdana;
+	font-size:8pt;
+	border-top-width:1px;
+	border-top-style:solid;
+	border-top-color:#808080;
+	border-bottom-width:1px;
+	border-bottom-style:solid;
+	border-bottom-color:#808080;
+}
+
+/******************************************************************************
+ * Navigation bar
+ ******************************************************************************/
+.birtviewer_navbar
+{
+	height:26px;
+	background-color:#E6E6C6;
+	font-family:Verdana;
+	font-size:8pt;
+	border-left-color:#808080;
+	border-left-style:solid;
+	border-left-width:1px;
+}
+
+.birtviewer_navbar_input
+{
+	font:icon;
+	border-style:inset;
+	border-width:2px;
+}
+
+/******************************************************************************
+ * Progress bar
+ ******************************************************************************/
+.birtviewer_progressbar
+{
+	font-family:Verdana;
+	font-size:8pt;
+	background:#FFFFFF;
+	border-width:2px;
+	border-style:solid;
+	border-color:#FF912F;
+	cursor:default;
+}
+
+.birtviewer_progressbar_button
+{
+	cursor: pointer;
+	height: 24px;
+	width: 100px;
+	overflow: hidden;
+	color: black; /* Font color */ 
+}
+/******************************************************************************
+ * Toc
+ ******************************************************************************/
+.birtviewer_toc
+{
+	width:100%;
+	height:100%;
+	background-color:#FFFFFF;
+	font-family:Verdana;
+	font-size:8pt;
+	border-width:1px;
+	border-style:none;
+	border-color:gray;
+}
+
+/******************************************************************************
+ * Context menu
+ ******************************************************************************/
+.birtviewer_contextmenu
+{
+	width:150px;
+	background-color:#d0d0d0;
+	border-style:outset;
+	border-color:#cccccc;
+	cursor:default;
+	border-width:2px;
+}
+
+/******************************************************************************
+ * Birt document.
+ *****************************************************************************/
+.birtviewer_document_fragment
+{
+	overflow:auto;
+	position:relative;
+	border-style: solid;
+	border-width: 2px;
+	border-top-color: #404040;
+	border-left-color: #404040;
+	border-right-color: #D0D0D0;
+	border-bottom-color: #D0D0D0;
+}
+
+/******************************************************************************
+ * General controls
+ ******************************************************************************/
+.birtviewer_clickable
+{
+	border-style:none;
+	cursor:hand;
+	cursor:pointer;
+}
+
+.birtviewer_hidden_label 
+{
+	position:absolute;
+	left:0px
+	top:-100px;
+	width:1px; 
+	height:1px; 
+	overflow:hidden;
+}
+
+.birtviewer_exception_dialog_detail #faultdetail
+{
+	font-family: monospace;
+	direction: ltr;
+	text-align: left;
+}
\ No newline at end of file
diff --git a/framework/webtools/webapp/webtools/WEB-INF/birt.tld b/framework/webtools/webapp/webtools/WEB-INF/birt.tld
new file mode 100644
index 0000000..1893d6b
--- /dev/null
+++ b/framework/webtools/webapp/webtools/WEB-INF/birt.tld
@@ -0,0 +1,1157 @@
+<?xml version='1.0' encoding='ISO-8859-1' ?>
+<!DOCTYPE taglib
+    PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
+    "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+<taglib>
+	<tlib-version>1.0</tlib-version>
+	<jsp-version>1.2</jsp-version>
+	<short-name>BIRT Tag Library</short-name>
+	<uri>http://www.eclipse.org/birt/taglibs/birt.tld</uri>
+	<description>
+		This Tag Library makes user develope JSP with BIRT Viewer component easily.
+	</description>
+	
+    <!--**********************************************-->
+    <!--             Viewer Tag                       -->
+    <!--**********************************************-->
+	<tag>
+		<name>viewer</name>
+		<tag-class>org.eclipse.birt.report.taglib.ViewerTag</tag-class>
+		<body-content>JSP</body-content>
+		<description>
+			The viewer tag is to specify how to import and control BIRT Report Viewer into JSP page.
+			This tag will use Ajax framework to retrieve report content.
+		</description>
+
+		<attribute>
+			<name>id</name>
+			<required>true</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the current viewer id. It should be unique.
+				It can contain number,letter or underline.
+			</description>			
+		</attribute>	
+
+        <attribute>
+            <name>pattern</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies which servlet pattern to be used to preview report.
+            	Default value is frameset.
+            	( frameset or run )
+            </description>
+        </attribute>
+        		        
+        <attribute>
+            <name>baseURL</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies base URL of BIRT viewer.
+            	Default to the current context.
+            </description>
+        </attribute>
+        
+        <attribute>
+            <name>title</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report title displayed at the top.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>isHostPage</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies whether the viewer occupies the whole page.
+            	Default to false.
+            </description>
+        </attribute>
+
+       <attribute>
+            <name>scrolling </name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the IFrame style "scrolling ".
+            	If isHostPage is true, ignore this attribute.
+            	( auto | yes | no )
+            </description>
+        </attribute>
+
+       <attribute>
+            <name>position</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the style "position" of report container.
+            	If isHostPage is true, ignore this attribute.
+            	( static | absolute | fixed | relative )
+            </description>
+        </attribute>
+
+       <attribute>
+            <name>style</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the style of report container.
+            	If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+                        
+        <attribute>
+            <name>height</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the height of report container in pixels.
+            	If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>width</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+	            Sets the width of report container in pixels.
+	            If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>top</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the top of report container in pixels.
+            	If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>left</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+ 				Sets the left of report container in pixels.
+ 				If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>frameborder</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+ 				Specifies whether displays the iframe border.
+				Default to no. 
+				If isHostPage is true, ignore this attribute.
+				( Yes | No )
+            </description>
+        </attribute>
+                        
+		<attribute>
+			<name>reportDesign</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the report design file name.
+				( Absolute path, relative path or URL )
+			</description>	
+		</attribute>		
+
+		<attribute>
+			<name>reportDocument</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the report document file name. 
+				Noted: only support "file:" URL format.
+				( Absolute path, relative path or URL ) 
+			</description>	
+		</attribute>		
+
+		<attribute>
+			<name>reportletId</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the instance id of reportlet.
+				The "reportDocument" attribute should be required.
+				Noted: frameset pattern doesn't support reportlet.
+			</description>	
+		</attribute>
+				
+		<attribute>
+			<name>bookmark</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the targeted bookmark name.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>locale</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the Locale information.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>timeZone</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies a time zone id. For example: "America/Los_Angeles" or "GMT+1" or "GMT+01:00".
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>svg</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether supports the SVG output format or not.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>format</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the output format of report.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>emitterId</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the emitter id for the report output.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>pageOverflow</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the page overflow setting for the PDF format.
+				One of the following values:
+				0 for "auto", 1 for "actual size", 2 for "fit to page". 
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>rtl</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether supports rtl page or not.
+			</description>			
+		</attribute>
+				
+		<attribute>
+			<name>pageNum</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies output page number when render document file.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>pageRange</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies page range when render document file.
+			</description>			
+		</attribute>
+								
+		<attribute>
+			<name>resourceFolder</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the referenced resource folder.
+				Default value is defined in web.xml.
+			</description>			
+		</attribute>
+											
+		<attribute>
+			<name>forceOverwriteDocument</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether forces to overwrite the generated document.
+				If allowPageBreak is false,ignore this attribute.
+				Default value is defined in web.xml.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>showTitle</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether shows the report title.
+				Default to true.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>showToolBar</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether shows the toolbar.
+				Default to true.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>showNavigationBar</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether shows the Navigation Bar.
+				If allowPageBreak is false,ignore this attribute.
+				Default to true.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>showParameterPage</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether show the parameter dialog or not.
+				Default to true.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>isReportlet</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether render reportlet by bookmark.
+				Default to false.
+			</description>			
+		</attribute>
+		
+	</tag>
+
+ 	<!--**********************************************-->
+    <!--             Report Tag                       -->
+    <!--**********************************************-->
+    <tag>
+        <name>report</name>
+        <tag-class>org.eclipse.birt.report.taglib.ReportTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+        	The report tag can provide fast report preview without Ajax framework. 
+			The report content can be output to web browser directly.
+        </description>
+
+		<attribute>
+			<name>id</name>
+			<required>true</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the current viewer id. It should be unique.
+				It can contain number,letter or underline.
+			</description>			
+		</attribute>	
+		        
+        <attribute>
+            <name>baseURL</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies base URL of BIRT viewer.
+            	Default to the current context.
+				If report container is DIV, ignore this attribute.
+            </description>
+        </attribute>
+        
+        <attribute>
+            <name>isHostPage</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies whether the viewer occupies the whole page.
+            	Default to false.
+            </description>
+        </attribute>
+
+       <attribute>
+            <name>scrolling </name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the DIV/IFrame style "scrolling ".
+            	If isHostPage is true, ignore this attribute.
+            	( auto | yes | no )
+            </description>
+        </attribute>
+
+       <attribute>
+            <name>position</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the style "position" of report container.
+            	If isHostPage is true, ignore this attribute.
+            	( static | absolute | fixed | relative )
+            </description>
+        </attribute>
+
+       <attribute>
+            <name>style</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the style of report container.
+            	If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+                        
+        <attribute>
+            <name>height</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the height of report container in pixels.
+            	If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>width</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+	            Sets the width of report container in pixels.
+	            If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>top</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the top of report container in pixels.
+            	If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>left</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+ 				Sets the left of report container in pixels.
+ 				If isHostPage is true, ignore this attribute.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>frameborder</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+ 				Specifies whether displays the iframe border.
+ 				Available when user IFrame.
+				Default to no.
+				( Yes | No )
+            </description>
+        </attribute>
+
+		<attribute>
+			<name>reportDesign</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the report design file name.
+				( Absolute path, relative path or URL )
+			</description>	
+		</attribute>		
+
+		<attribute>
+			<name>reportDocument</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the report document file name. 
+				Noted: only support "file:" URL format.
+				( Absolute path, relative path or URL ) 
+			</description>	
+		</attribute>
+
+		<attribute>
+			<name>reportletId</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the instance id of reportlet.
+				The "reportDocument" attribute should be required.
+			</description>	
+		</attribute>
+                        	
+		<attribute>
+			<name>bookmark</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the targeted bookmark name.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>locale</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the Locale information.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>timeZone</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies a time zone id. For example: "America/Los_Angeles" or "GMT+1" or "GMT+01:00".
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>svg</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether supports the SVG output format or not.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>format</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the output format of report.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>emitterId</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the emitter id for the report output.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>pageOverflow</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the page overflow setting for the PDF format.
+				One of the following values:
+				0 for "auto", 1 for "actual size", 2 for "fit to page". 
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>rtl</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether supports rtl page or not.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>showParameterPage</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether show the parameter dialog or not.
+				Default to true.
+				If report container is DIV, ignore this attribute.
+			</description>			
+		</attribute>
+												
+		<attribute>
+			<name>resourceFolder</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the referenced resource folder.
+				Default value is defined in web.xml.
+			</description>			
+		</attribute>			
+									
+		<attribute>
+			<name>reportContainer</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies iframe or div as report container.
+				Default to iframe.
+				( iframe | div )
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>pageNum</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies output page number when render document file.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>pageRange</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies page range when render document file.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>isReportlet</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether render reportlet by bookmark.
+				Default to false.
+			</description>			
+		</attribute>
+		        
+    </tag>	
+    
+    <!--**********************************************-->
+    <!--             Report Parameter Tag             -->
+    <!--**********************************************-->
+     <tag>
+        <name>param</name>
+        <tag-class>org.eclipse.birt.report.taglib.ParamTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+        	The param tag specifies the parameters defined in report design file.
+        </description>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter name.
+            </description>
+        </attribute>
+        <attribute>
+            <name>pattern</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter pattern format.
+            </description>
+        </attribute>     
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter value. If doesn't set, value is null.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayText</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter display text.
+            </description>
+        </attribute>
+        <attribute>
+            <name>delim</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the delimiter for multiple values.
+            	Defaults to pipe "|".
+            </description>
+        </attribute>
+        <attribute>
+            <name>isLocale</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies whether the report parameter value is a locale/format related string.
+            </description>
+        </attribute>
+     </tag>   
+
+    <!--**********************************************-->
+    <!--             Report Parameter Value Tag       -->
+    <!--**********************************************-->
+     <tag>
+        <name>value</name>
+        <tag-class>org.eclipse.birt.report.taglib.ParamValueTag</tag-class>        
+        <body-content>JSP</body-content>
+        <description>
+        	The param value tag specifies multiple values for a given param tag.
+        </description>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter value. If doesn't set, value is null.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayText</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter display text.
+            </description>
+        </attribute>
+     </tag>   
+     
+    <!--**********************************************-->
+    <!--             ParameterPage Tag                -->
+    <!--**********************************************-->
+    <tag>
+        <name>parameterPage</name>
+        <tag-class>org.eclipse.birt.report.taglib.RequesterTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+        	The parameterPage tag can help developers to display BIRT parameter page or create a user-defined parameter page.
+			This tag can collect these parameters and submit to BIRT servlet to handle request.
+        </description>
+        
+        <attribute>
+			<name>id</name>
+			<required>true</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the parameter page id.It should be unique.
+				It can contain number,letter or underline.				
+			</description>			
+		</attribute>	
+        
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the parameter page name. 
+            	If attribute 'isCustom' is true, this name should be required and unique.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>isCustom</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies whether uses the user-defined parameter page.
+            	If false, use the BIRT parameter dialog.
+            	Default to false.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>title</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report title displayed at the top.
+            </description>
+        </attribute>
+                        
+      	<attribute>
+            <name>baseURL</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies base URL of BIRT viewer. 
+            	Default to the current context.
+            </description>
+        </attribute>
+		
+		<attribute>
+            <name>scrolling </name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the DIV/IFrame style "scrolling ".
+            	( auto | yes | no )
+            </description>
+        </attribute>
+        
+       <attribute>
+            <name>position</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the style "position" of parameter page.
+            	( static | absolute | fixed | relative )
+            </description>
+        </attribute>
+
+       <attribute>
+            <name>style</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the style of parameter page.
+            </description>
+        </attribute>
+                        
+        <attribute>
+            <name>height</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the height of parameter page in pixels.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>width</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+	            Sets the width of parameter page in pixels.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>top</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Sets the top of parameter page in pixels.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>left</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+ 				Sets the left of parameter page in pixels.
+            </description>
+        </attribute>
+
+        <attribute>
+            <name>frameborder</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+ 				Specifies whether displays the iframe border.
+				Default to no.
+				If set "isCustom" to true, ignore this attribute.
+				( Yes | No )
+            </description>
+        </attribute>
+                        
+		<attribute>
+			<name>reportDesign</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the report design file name.
+				( Absolute path, relative path or URL )
+			</description>	
+		</attribute>		
+
+		<attribute>
+			<name>reportDocument</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the report document file name. 
+				Noted: only support "file:" URL format.
+				( Absolute path, relative path or URL ) 
+			</description>	
+		</attribute>		
+
+		<attribute>
+			<name>reportletId</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the instance id of reportlet.
+				The "reportDocument" attribute should be required.
+				Noted: frameset pattern doesn't support reportlet.
+			</description>	
+		</attribute>
+
+		<attribute>
+			<name>pattern</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the servlet pattern for request submit. 
+				BIRT supports three patterns: frameset, run and preview. 
+				Can refer to the user-defined servlet pattern.
+				Default to frameset.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>target</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the target window for request submit.
+			</description>			
+		</attribute>
+						
+		<attribute>
+			<name>bookmark</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the targeted bookmark name.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>locale</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the Locale information.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>timeZone</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies a time zone id. For example: "America/Los_Angeles" or "GMT+1" or "GMT+01:00".
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>svg</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether supports the SVG output format or not.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>format</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the output format of report.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>emitterId</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the emitter id for the report output.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>pageOverflow</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the page overflow setting for the PDF format.
+				One of the following values:
+				0 for "auto", 1 for "actual size", 2 for "fit to page". 
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>rtl</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether supports rtl page or not.
+			</description>			
+		</attribute>
+							
+		<attribute>
+			<name>resourceFolder</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies the referenced resource folder.
+				Default value is defined in web.xml.
+			</description>			
+		</attribute>			
+								
+		<attribute>
+			<name>forceOverwriteDocument</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether forces to overwrite the generated document.
+				If allowPageBreak is false,ignore this attribute.
+				Default value is defined in web.xml.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>showTitle</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether shows the report title.
+				Default to true.
+			</description>			
+		</attribute>
+		
+		<attribute>
+			<name>showToolBar</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether shows the toolbar.
+				Default to true.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>showNavigationBar</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether shows the Navigation Bar.
+				If allowPageBreak is false,ignore this attribute.
+				Default to true.
+			</description>			
+		</attribute>
+
+		<attribute>
+			<name>isReportlet</name>
+			<required>false</required>
+			<rtexprvalue>true</rtexprvalue>
+			<description>
+				Specifies whether render reportlet by bookmark.
+				Default to false.
+			</description>			
+		</attribute>
+				        
+    </tag>
+
+    <!--**********************************************-->
+    <!--      Report Parameter Definition Tag         -->
+    <!--**********************************************-->
+     <tag>
+        <name>paramDef</name>
+        <tag-class>org.eclipse.birt.report.taglib.ParamDefTag</tag-class>
+        <body-content>JSP</body-content>
+        <description>
+        	The param tag is used to generate html code for defined parameter in ParameterPage tag.
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the id of parameter control.It should be unique.
+				It can contain number,letter or underline.
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter name.
+            </description>
+        </attribute>
+        <attribute>
+            <name>pattern</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter pattern format.
+            	It is used to parse defined parameter value string.
+            </description>
+        </attribute>     
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter value. If doesn't set, use default value.
+            </description>
+        </attribute>
+        <attribute>
+            <name>displayText</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the report parameter display text.
+            </description>
+        </attribute>
+        <attribute>
+            <name>isLocale</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies whether the report parameter value is a locale/format related string.
+            	It is used to parse defined parameter value string.
+            </description>
+        </attribute>
+        <attribute>
+            <name>title</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the title attribute of parameter control.
+            </description>
+        </attribute>        
+        <attribute>
+            <name>cssClass</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the css class attribute of parameter control.
+            </description>
+        </attribute>
+        <attribute>
+            <name>style</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+            	Specifies the parameter control style.
+            </description>
+        </attribute>        
+     </tag>        		
+</taglib>
\ No newline at end of file
diff --git a/framework/webtools/webapp/webtools/WEB-INF/controller.xml b/framework/webtools/webapp/webtools/WEB-INF/controller.xml
index e362948..c5d6cf4 100644
--- a/framework/webtools/webapp/webtools/WEB-INF/controller.xml
+++ b/framework/webtools/webapp/webtools/WEB-INF/controller.xml
@@ -24,6 +24,7 @@
     <include location="component://commonext/webapp/WEB-INF/controller.xml"/>
     <include location="component://common/webcommon/WEB-INF/tempexpr-controller.xml"/>
     <include location="component://testtools/webapp/testtools/WEB-INF/controller.xml"/>
+    <include location="component://webtools/webapp/birt/WEB-INF/controller.xml"/>
     <description>WebTools Site Configuration File</description>
     <owner>Copyright 2001-2009 The Apache Software Foundation</owner>
 
diff --git a/framework/webtools/widget/BirtForms.xml b/framework/webtools/widget/BirtForms.xml
new file mode 100644
index 0000000..5956c9f
--- /dev/null
+++ b/framework/webtools/widget/BirtForms.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<forms xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-form.xsd">
+
+    <form name="EditMail" type="single" target="sendBirtMail">
+        <field name="sendFrom"><text/></field>
+        <field name="sendTo"><text/></field>
+        <field name="subject"><text/></field>
+        <field name="birtReportLocation" tooltip="Example is component://webtools/webapp/birt/report/product.rptdesign"><text/></field>
+        <field name="birtContentType">
+            <drop-down>
+                <option key="text/html" description="text/html"/>
+                <option key="application/pdf" description="application/pdf"/>
+                <option key="application/vnd.ms-excel" description="application/vnd.ms-excel"/>
+                <option key="application/vnd.ms-word" description="application/vnd.ms-word"/>
+                <option key="application/vnd.ms-powerpoint" description="application/vnd.ms-powerpoint"/>
+            </drop-down>
+        </field>
+        <field name="attachmentName"><text/></field>
+        <field name="sendButton" widget-style="smallSubmit"><submit button-type="button"/></field>
+    </form>
+</forms>
diff --git a/framework/webtools/widget/BirtScreens.xml b/framework/webtools/widget/BirtScreens.xml
new file mode 100644
index 0000000..58b48be
--- /dev/null
+++ b/framework/webtools/widget/BirtScreens.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-screen.xsd">
+        
+    <screen name="main">
+        <section>
+            <actions>
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonBirtDecorator" location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <section>
+                            <widgets>
+                                <label text="BIRT is an open source Eclipse-based reporting system that integrates with your Java/J2EE application to produce compelling reports."/>
+                            </widgets>
+                        </section>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+    
+    <screen name="Viewer">
+        <section>
+            <actions>
+                <set field="tabButtonItem" value="Viewer"/>
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonBirtDecorator" location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <section>
+                            <widgets>
+                                <screenlet title="Using viewer tag">
+                                    <platform-specific>
+                                        <html>
+                                            <html-template location="component://webtools/webapp/birt/WEB-INF/birt/viewer.ftl"/>
+                                        </html>
+                                    </platform-specific>
+                                </screenlet>
+                            </widgets>
+                        </section>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+    
+    <screen name="Report">
+        <section>
+            <actions>
+                <set field="tabButtonItem" value="Report"/>
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonBirtDecorator" location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <section>
+                            <widgets>
+                                <screenlet title="Using report tag">
+                                    <platform-specific>
+                                        <html>
+                                            <html-template location="component://webtools/webapp/birt/WEB-INF/birt/report.ftl"/>
+                                        </html>
+                                    </platform-specific>
+                                </screenlet>
+                            </widgets>
+                        </section>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+    
+    <screen name="EditMail">
+        <section>
+            <actions>
+                <set field="tabButtonItem" value="Mail"/>
+            </actions>
+            <widgets>
+                <decorator-screen name="CommonBirtDecorator" location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <section>
+                            <widgets>
+                                <screenlet title="Send BIRT report by mail">
+                                    <include-form location="component://webtools/widget/BirtForms.xml" name="EditMail"/>
+                                </screenlet>
+                            </widgets>
+                        </section>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
+</screens>
\ No newline at end of file
diff --git a/framework/webtools/widget/CommonScreens.xml b/framework/webtools/widget/CommonScreens.xml
index a508872..9dbf6a1 100644
--- a/framework/webtools/widget/CommonScreens.xml
+++ b/framework/webtools/widget/CommonScreens.xml
@@ -226,4 +226,32 @@
             </widgets>
         </section>
     </screen>
+    
+    <screen name="CommonBirtDecorator">
+        <section>
+            <actions>
+                <set field="headerItem" value="birt"/>
+                <property-map resource="BirtUiLabels" map-name="uiLabelMap" global="true"/>
+            </actions>
+            <widgets>
+                <decorator-screen name="main-decorator" location="${parameters.mainDecoratorLocation}">
+                    <decorator-section name="body">
+                        <section>
+                            <!-- do check for WEBTOOLS, _VIEW permission -->
+                            <condition>
+                                <if-has-permission permission="ENTITY_MAINT"/>
+                            </condition>
+                            <widgets>
+                                <include-menu name="birtTabBar" location="component://webtools/widget/Menus.xml"/>
+                                <decorator-section-include name="body"/>
+                            </widgets>
+                            <fail-widgets>
+                                <label style="h3">${uiLabelMap.WebtoolsPermissionError}</label>
+                            </fail-widgets>
+                        </section>
+                    </decorator-section>
+                </decorator-screen>
+            </widgets>
+        </section>
+    </screen>
 </screens>
diff --git a/framework/webtools/widget/Menus.xml b/framework/webtools/widget/Menus.xml
index 30f9c08..87b47ce 100644
--- a/framework/webtools/widget/Menus.xml
+++ b/framework/webtools/widget/Menus.xml
@@ -48,6 +48,9 @@
         <menu-item name="tests" title="Tests">

             <link target="selenium"/>

         </menu-item>

+        <menu-item name="birt" title="Birt">

+            <link target="birt"/>

+        </menu-item>

     </menu>

 

     <menu name="configurationTabBar" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml"

@@ -184,4 +187,10 @@
         </menu-item>

     </menu>

 

+    <menu name="birtTabBar" extends="CommonTabBarMenu" extends-resource="component://common/widget/CommonMenus.xml">

+        <menu-item name="Viewer" title="${uiLabelMap.BirtViewer}"><link target="BirtViewer"/></menu-item>

+        <menu-item name="Report" title="${uiLabelMap.BirtReport}"><link target="BirtReport"/></menu-item>

+        <menu-item name="Mail" title="${uiLabelMap.BirtMail}"><link target="BirtMail"/></menu-item>

+        <menu-item name="Export" title="${uiLabelMap.BirtViewHandler}"><link target="BirtViewHandler"/></menu-item>

+    </menu>

 </menus>

diff --git a/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java b/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java
index ccd8a06..035db8a 100644
--- a/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java
+++ b/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java
@@ -62,6 +62,7 @@
 import freemarker.ext.jsp.TaglibFactory;
 import freemarker.ext.servlet.HttpRequestHashModel;
 import freemarker.ext.servlet.HttpSessionHashModel;
+import freemarker.ext.servlet.ServletContextHashModel;
 
 /**
  * Widget Library - Screen model class
@@ -242,6 +243,10 @@
         TaglibFactory JspTaglibs = new TaglibFactory(servletContext);
         context.put("JspTaglibs", JspTaglibs);
         context.put("requestParameters",  UtilHttp.getParameterMap(request));
+        
+        ServletContextHashModel ftlServletContext = (ServletContextHashModel) request.getAttribute("ftlServletContext");
+        context.put("Application", ftlServletContext);
+        context.put("Request", context.get("requestAttributes"));
 
         // this is a dummy object to stand-in for the JPublish page object for backward compatibility
         context.put("page", FastMap.newInstance());